ユユユユユ

webエンジニアです

Elixir

phx.gen.auth

Phoenix アプリの認証基盤ジェネレータを使ってみていた。 https://hexdocs.pm/phoenix/mix_phx_gen_auth.html 動かしてみておもしろいことはもとより、パブリシティや設計文書を読むのがおもしろい。 というのも、 Elixir の父たる José は、それに先立つプ…

Elixir in Action, 2nd Ed

Saša Jurić の Elixir in Action, 2nd Ed を読んだ。 https://www.manning.com/books/elixir-in-action-second-edition この本は前々からいつか読んでみようと思いながら、いやいまはもっと他にやりたいことがあるから止めておこう、と躊躇していた。そして…

phoenix がマスアサインメントを防御するやりかた

コントローラで受け取ったユーザー入力のパラメータを、コンテクストを通してそのままレポジトリに渡すコードはわりと普通に書くものらしい。チュートリアルでも、ビューヘルパーが組み立てたこんな強烈なパラメータをほとんど検証せずにデータベースの近く…

Keyword で適当な引数を受け取るプラクティス

長ったらしい日記を昨日書いて、それをさっそく修正する気になった。 https://jnsato.hateblo.jp/entry/2022/10/30/010000 オプショナルなパラメータを Keyword で受け取るときに、パラメータごとにパターンマッチして正規化して...という手続きを大量の場合…

scrivener_ecto

ActiveRecord には心強い kaminari gem があるけど、 Ecto ではどうかな? と hex.pm で検索してみて、 scrivener というライブラリをみつけた。 scrivener_ecto とセットでよく流通しているらしい。これで遊んでみていた。ごくありふれたページネーションで…

Elixir がおもしろくて寝不足

今週は仕事の外で Elixir をいじっていて、妙にたのしくなっていた。あれもこれも試してみたいとソワソワしてしまって、寝ようにも頭が冴えてしまって寝不足がちだった。 1年前くらい前からセコセコとチュートリアルをやったり exercism.org でクイズを問い…

"Docker and OTP Friends or Foes" by Daniel Azuma

データの永続化層を持たないサーバーサイドアプリケーションをコンテナでデプロイする、という主題の講演。4年も昔のアーカイブだけれど、楽しく視聴した。 https://www.youtube.com/watch?v=nLApFANtkHs CRDT という固有名詞が出てきた。 Conflict-free Rep…

Mix and OTP に再入門

OTP に関する公式のイントロダクションが elixir-lang.org にある1。今年の1月にいちど、これに取り組んでいる2。うまく飲み込めず不完全燃焼と感想を残していて、そのままになっていた。これをあらためて 5. Dynamic Supervisor の章までやりなおした。 こ…

LiveView JP#6

このまえの火曜日のこと、 Elixir のコミュニティイベントに初参加した。 https://liveviewjp.connpass.com/event/245701/ 題目は「モブプロで一緒にAI・ML開発入門 & Livebook+NxでLT会」。 elixir-nx/nx を Livebook で動かして、全員でひとつのノートブ…

Prime

フェルマーの小定理とミラーラビン素数判定法の Elixir による実装をライブラリにして公開した。 https://github.com/sato11/prime もとは SICP を読んで Scheme で実装していたものを、 Elixir でも書いてみたいなとおもって遊びでやってみただけだった。枯…

近況: Elixir に入門

チュートリアルをやっていると11月に書いた。 https://jnsato.hateblo.jp/entry/2021/11/28/230000 Getting Started を終えて、 Advanced に着手したところで、しばらく止まっていた。放送大学の期末試験の準備をしていたためである。期末試験がおわり、いま…

Elixir: bitstring を再帰で作るパターン

bitstring を accumulate する手続きには癖がある、という話。 ACGT を2ビットで表すとして、対応表をこうおく。 nucleotide bits A 00 C 01 G 10 T 11 で、引数として渡される charlist を bitstring に変換する関数 DNA.encode を定義する。先に動くコード…

Elixir のイントロダクションをスローに読んでいる

世の中では Rust への熱が日に日に高まっている様子であるが、僕はというとなにか本能的に惹かれるものがあったのだろうか、 Elixir のイントロダクションをちまちまと読んでいる。 elixir-lang.org パターンマッチングだとかアクターモデルだとか、 Ruby 3.…