Elixir
はいコンバンハ。 Gettextっていうモジュールがあるんですが、POTとかPOファイルとか、なんかよくわかんなかったので書いておきます。 できること いわゆるi18n、アプリケーションの国際化ができます。Phoenixアプリ前提にしてしまいますが、例えばHTMLに <h1><%</h1>…
github.com 1週間ほど前にこんなコミットがあり、exrmは御役御免になるそうです。代わりに今後はdistilleryを使うように書かれています。読み方はディスティラリーかな。 作者はexrmと同じ人で、exrmを開発していくよりも一度ゼロから書き直したほうがよいと…
hexのv0.13.0出たよアップデートしてね、というメッセージが出たので、v0.13.0に上げてみたところ、mixタスクを実行するとこんなエラーを吐いて止まるようになってしまった。 Could not start Hex. Try fetching a new version with "mix local.hex" or unin…
んですよ。 GenStage.Flowのドキュメントには、 alias Experimental.GenStage.Flow File.stream!("path/to/some/file") |> Flow.from_enumerable() |> Flow.flat_map(&String.split(&1, " ")) |> Flow.reduce(fn -> %{} end, fn word, acc -> Map.update(acc…
前回のエントリで、ExUnitには色々と便利なタグがあるということを書きました。 今日は、そのうちの1つcapture_logについて書きます。 使い所 例えばJWTを扱うためのライブラリjokenは、不正なトークンを与えると以下の様なログを吐きます。 21:17:51.385 [w…
特定のテストだけ実行する ファイル単位で指定して実行する mix testに引数を渡すことで、そのファイルだけテストを実行できます。 $ mix test test/my_test.exs 行番号を指定して実行する ファイル単位の指定に加えて、:5のように行番号を指定できます。 $ …
直近の3エントリでは醜態を晒し、もう晒しきったと思いきや別のところで勘違いをしていたことがわかったので書いておきます。 Elixirでテストを書くときはExUnitを使うのが定石となっていまして、以下のような書き方をします。 defmodule App1Test do use Ex…
昨日は遅いと思ったからといってすぐspawnするのはダメとか言っていたけど、もう少し前にやることがあるだろうがオイ、という話。 前々回のエントリで、 こんな遅かったっけ?と思いながらおもむろにspawn と書いた。「こんな遅かったっけ?」と思ったのにそ…
昨日は遅いと思ったらとりあえずspawnとか言っていたのが、そうもいかなくなりましたという話。 昨日書いたやつがこれ。Rails Tutorialに沿って書いている。 ## priv/repo/seeds.exs alias PhMicroblog.{User, Repo} defmodule Helper do def insert_user!(n…
以前にも書いたように、Rails Tutorialをphoenixでやってたやつをまたちょいちょい書いている。 その中で、seedでダミーのユーザを100人つくるというのがあった。かなり前にseedつくる用のパッケージ書いたなと思い出してメンテしてねぇやべぇとおもったけど…
今から3、4時間前に、Elixir v1.2.6がリリースされていました。 github.com バグ修正はとりあえず置いといて、機能追加として以下があったようです。 Erlang 19のサポート RC 2まで来ているErlang/OTP 19をサポートするようになりました。 quote generated: …
さっきのエントリを書いているときに気づいたのだけれど、Elixirのコードにちゃんと色がつくようになっていた。これまでは文法やキーワードが似ているrubyを指定してお茶を濁していたのだけれど、今後はelixirと書けそう。いつからなんだろ。 比べてみるとこ…
Elixir 1.3から時間に関する構造体がいくつか定義されました。そのうちの3つ、Date, Time, NaiveDateTimeをつくるsigilが追加されています。それぞれ~D, ~T, ~Nです。 iexで~D(2016-06-04)と打っても、そのまま表示されてしまい何が作られているのかよくわか…
今日の昼に書いたエントリはとても雑だったので、もう少し丁寧に書きます。 describe describe/2マクロを使うことで、複数のテストケースをまとめることができます。 defmodule MyAppTest do use ExUnit.Case, async: true describe "addition" do test "1 +…
昨日は小言を並べました。 ついさっきElixir 1.3.0-rc.0がリリースされていることを発見しました。 github.com 変更点を眺めていると、気になる一文が!! [ExUnit] Support for bundling tests together with describe/2 なんと!! 試す こんな風に使いま…
前回はvalidate_confirmationという関数のことを書きました。 今日はhexパッケージの名前はどうあるべきかについて思うトコロを書いていきます。 なんでこんなことを書こうと思ったかというと、hex.pmに"Naming your package"というセクションが設けられたか…
一通り実装してから、Ecto.Changeset.validate_confirmation/3があったことを思い出してしまった。 model |> cast(...) |> validate_confirmation(:password) ってすると、passwordとpassword_confirmationの値が一致してるかチェックしてくれる。
昨日は途中で寝ながらエントリを書きました。 さて、このプルリクで入った機能について書きます。 github.com mix testに--staleというオプションが追加されたよ、というものです。 --stale --staleオプションを付けると、前回のテスト以降に変更されたコー…
昨日はAccessモジュールに入った便利関数についてのエントリを書きました。 今日はそれがどうやって実現されているのか読みます。今の時点での最新版はd24a263です。 Access.all/0 まずそもそもAccess.all()は何を返すのでしょうか。 def all() do &all/3 en…
社内のElixir勉強会で↓のtalkを観た。 GenRouter, GenStageという新たなアイデアを検証中で、elixir-lang/gen_brokerにコードがあるとのこと。 github.com 見どころはたくさんあるけれど、今日はGenRouter。 GenRouterのmoduledocの最初の方 読んでく。 複数…
昨日はPhoenixアプリをちょっと書いたエントリを書きました。 そのプロジェクトは私物のPCでphoenix newして生成したものなのですが、会社のPCでgit cloneしてmix testとやったら何かエラー。 ** (Mix) Could not find migrations directory "priv/repo/migr…
昨日は老いを感じるエントリを書きました。 懲りずにまた作り直しをちょこちょこと始めたのですが、やっぱりElixir楽しいですね、はい。 Rails Tutorialはこれで3回目くらいですが、昔やってたゲームを引っ張り出してきたような懐かしさが少しあります。 www…
昨日 Vector ClockとCRDTsについて調べてるけどまだ上手く説明できない と泣き言を言った後、調べてなんとか書きました。actorの気持ちにはあんまりなってません。 言葉や概念の正確さが不安なので、詳しい方にぜひご教授頂きたいです。 Phoenix.Presence Ch…
社内のElixir勉強会で↓のtalkを観た。 Phoenix Presenceを実装するためのベースになっているVector ClockとCRDTsについて調べたり議論したのだけれど、混乱して「よくわからんね」となったので宿題として調べている。色々わかってきて「こういうことかな〜」…
できないことはPortで外注 from Joe_noh www.slideshare.net なんかkeynoteからPDFにしてslideshareに上げたら日本語消滅しました。 なのでpptxにしてから上げたので、フォントが意図したものじゃないのですがご勘弁ください。 自分が話したのは、Portモジュ…
今回はEcto.Multiです。 なにそれ Ecto.Multiとはそもそも何かというと、1つのトランザクション内で行われるべき複数のRepo操作をまとめるデータ構造です。DBを操作する前にどのような変更がなされるのか覗き見することができます。これの導入に伴い、before…
第2弾です。 今回はリレーションです。以前からあるhas_one, has_manyを復習し、新たに入ったmany_to_manyを試してみます。 TL;DR これ書いてる時点のコードはこちら。 github.com has_one User has_one Profile を作っていきます。Userは前回つくったので割…
はい。 Ectoはしばらく触っていなかったのですが、v2.0がもうすぐということで触ってみました第1弾。 まずはプロジェクトをセットアップして単純なinsertのテストを通すところまで。 TL;DR こちらに今日時点のコードがあるので、細かいとこは飛ばしていきま…
社内勉強会でpoolboyで遊んでみて、いろいろ調べたのでこっちにも貼ります。 poolboyとは プロセスプールを管理してくれるErlangのライブラリ。poolboyはワーカープロセスをいくつか予め起動しておく。それらを利用したいクライアントは、poolboyに「どのプ…
やったこと 年末に宴会芸みたいなものをやることになり色々と何をやろうかと話し合っていたのですが、どうにもオモシロな方向に振り切れなさそうだね〜となり、エンタメ方向なことをやりました。具体的には、 数名が舞台で踊る 観客には、あるサイトにスマホ…