2015-01-01から1年間の記事一覧
2015/11/18 時点で、ここを見る限りElixir のシンタックスハイライトは未対応。 でも、大丈夫 Elixir と Ruby は見た目が似ていると言われている。ruby を指定しておけばそれっぽくハイライトされる。 defmodule, defmacro などなど Elixir にしかないキーワ…
GETやPOSTなどのHTTPリクエストを受け取り、その処理の中でChannelにデータを送信したい場合、以下のように書くことでメッセージを送信できる。 HelloPhoenix.Endpoint.broadcast_from! self(), "rooms:lobby", "new_msg", %{uid: uid, body: body} http://h…
Elixirでコマンドラインのツールを書く方法が(自分の観測範囲内では)二通りある。 一つはスクリプトとして実行する方法。もう一つは、escript を使う方法(こっちの方法も名前からするとスクリプトとして実行されてるっぽいけど)。 スクリプトとして実行…
Elixir の正規表現は Regexモジュール を使う。 仕事ではPHPを書くことが多い。PHPの正規表現は PCRE関数 が標準的だろう。普段使うPCRE関数をElixirのRegex で置き換えるとしたらどうなるのか? 比較の対象は preg-match と preg_replace の二つにする。理由…
mix.ex の deps に ex_doc と earmark を追加する。バージョンは最新版で。 defp deps do [{:ex_doc, ">= 0.0.0", only: :docs}, {:earmark, ">= 0.0.0", only: :docs}] end パッケージのダウンロードとコンパイル $ mix deps.get $ mix deps.compile 環境変…
prefecture_jpというライブラリを作成した。Hexにも上げた。 機能 都道府県コードから都道府県名への変換、またはその逆。都道府県コードは JIS X 0401 に対応(0埋め2桁の数字)。 使い方 単体で 都道府県コードから都道府県名を検索 iex> PrefectureJp.fin…
v1.1.0 がリリースされていた (下書きしているときは、v1.1.0 だったけれど、現在の最新版は v1.1.1)。 機能追加で特記すべきことは、Enum, Dict, Task への関数の追加と、MapSet 型の追加、と書かれている。HashSet よりも速く、今後はSetの実装はMapSetが…
というのを初めて知った。 きっかけは、dialyxir を使おうと思ったから。 dialyxir をインストールする時の必ずエラーが発生しインストールに失敗する。 エラーの内容は以下の通り。 Creating PLT /home/ymmtmsys/.dialyxir_core_18_1.0.5.plt ... ** (Funct…
HTTPクライアントにHTTPoisonを利用してみた。 同時実行数を増やすと50コネクション以上のコネクションは作成されないことがわかった。コードを見てみると、内部ではhackneyが使われていることがわかった。 hackney のドキュメントをみると、何も指定がなけ…
Poolboy を使ってコネクションプーリングができるようにする。接続先は memcached。 memcached のクライアントにはmcdを使った。 サンプルのhello_phoenixを元にした。手を加えたファイルだけ以下に貼っておく (ちなみに Phoenix は v1.0.0)。 実行してみと…
Erlang (Elixir) の機能の中で気になっているのが、ホットデプロイだ。といっても、そういう機能があるからといって気軽にデプロイできるものでもないらしいけど。 デプロイに関するスライド。 http://sile.github.io/slide/kbkz_tech_05/#/ http://www.slid…
アプリケーション作成時のオプションに何があるか調べてみた(といっても、大して調べてないけれど)。 答えはここに。 --app アプリケーション名?よくわかってない。 --module モジュール名を指定する。phoenix.new したときのディレクトリ名とモジュール…
v0.17.0 がリリースされていたので更新してみる。フレームワーク(というか、Mixでインストールしたライブラリ)をアップデートするのは今回が初めて。 % mix archive.install https://github.com/phoenixframework/phoenix/releases/download/v0.17.0/phoen…
to_string/1 ではなくinspect/2 だった。 iex(1)> to_string %{a: 1, b: "hoyhoy"} ** (Protocol.UndefinedError) protocol String.Chars not implemented for %{a: 1, b: "hoyhoy"} (elixir) lib/string/chars.ex:3: String.Chars.impl_for!/1 (elixir) lib…
ここで デバッガみたいなのはある? と書いた。調べてみたところIEx.pryが使えることがわかった。 使い方 大雑把にいうとこんな感じ IEx モジュールを require する。 ブレイクポイントコードに仕込む。 iex でサーバを起動する リクエストを出す。 ブレイク…
とりあえず、アプリが起動する状態になった。 Phoenix・Elixir をちょっとさわって思ったのは、コード上に型が現れてれていないとなにかと調べにくい、ということ。馴染みのある言語なら、型が現れてなくてもなんとかなっちゃうんだけど、馴染みのない言語だ…
Phoenix が気になったので、さわり始めた。 Phoenix は Elixir で書かれていて、アプリを作る場合も Elixir で書く。Phoenix もElixir も今まで使ったことがなく、初めての言語、初めてのフレームワークで、いろいろとつまづくことが多そう。その反面、面白…
問題 R.drawable.ic_launcher と書くと Cannot resolve symbol ic_launcher というエラーが出る。 解決 drawable ではなく mipmap を使う。R.mipmap.ic_launcher。 アプリを Nexus 6 と Nexus 9 に備えましょうgoogledevjp.blogspot.jp 現在使用している And…
問題 Androidアプリ開発時以下のようなログが出力され、アプリが落ちることがあった。 Google Play services out of date. Requires xxxxxxx but found yyyyyyy xxxxxxx や yyyyyyy バージョン番号。 解決 「Google Play 開発者サービス」アプリをアップデー…
UNIXの哲学と関数型プログラミングは共通しているところがあるよね、というのを最近同僚と話した。 ここでいうUNIXの哲学とは スモール・イズ・ビューティフル 一つのプログラムには一つのことを うまくやらせる ソフトウェアの挺子を有効に活用する…
少数点以下の数が0の場合はコンパクトになる! 123.45, 'bar' => 658.00]) . PHP_EOL; # => {"foo":123.45,"bar":658} これが原因か...
リバースプロキシとしてアプリケーションの前にnginxを置いている. あるとき, アプリケーションにリクエストヘッダが渡らないんですけど, という問い合わせがきた. うーん, 自分が使っている分にはヘッダは渡ってきてるんだけどな... とりあえず, どんなリク…
optparse-applicative を使った。そのコードは ここ。 optparse-applicative は、コマンドラインのオプションを解析するライブラリ。使い方に関してはここをよく参考にした。 オプションの解析だけでなく、必須パラメータの解析も同時に行ってくれて便利。 P…