エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

2022-01-01から1年間の記事一覧

LiveViewでTaskの結果はhandle_infoで受ければよいという話

LiveViewでTaskの結果はhandle_infoで受ければよいという話 ElixirWeekly の何号だったか失念してしまったのですが。 LiveView のプロセスで、非同期処理を Task.async/1 で実行したならば、Task.async/1 が終了時に送信するメッセージを受け取ればよい、と…

aws-sdkで取得できるタグを扱いやすくするための覚書

動機 AWS のリソースの多くは key-value の組みをタグとして設定できるようになっているのですが。 例えば EC2 インスタンスを取得する aws-sdk のメソッド Aws::EC2::Client#describe_instances のレスポンスは次のようになっています。 resp.reservations[…

Phoenix LiveView 0.18 の新しい構文の覚書とQRコード

Phoenix LiveView 0.18 の構文をいじっています。 具体的にはこれ。 hexdocs.pm :if and :for It is a syntax sugar for <%= if .. do %> and <%= for .. do %> that can be used in regular HTML, function components, and slots. For example in an HTML …

コンソールにQRコードを表示したい

Webアプリケーションを開発しているとき、携帯端末での表示を確認したくなるときがあります。 ブラウザのレスポンシブ・デザイン・モードを利用すれば、デスクトップでも見た目の確認はできますが、やはり手のひらの中でどのように表示されるかを知るには、…

Elixirのドキュメントでガードをグルーピングするときの覚書

ドキュメントを生成した時に、defguard で定義するガードをグルーピングするときの設定について、いつも忘れてしまい自分の以前のリポジトリを見返すことがたびたびなので、こちらの覚書として記録しておきます。 ガードと関数をモジュールに記述した場合、 …

Elixirでmutableなバイト列を扱う(Rustの力を借りて)

先日のブログに書いた通り、いつ以来かのセルラオートマトンに手を出しています。 そのときの記事の実装では、更新処理に Rust を利用してはいるものの、世代ごとにimmutableなバイト列を生成していました。 Erlang のアロケータを利用するので、確保したメ…

Rustlerでコンウェイの Game of Life を書く

かつてセルラオートマトンに魅了されていた時期がありまして。 熱を上げていた時期はそれほど長くはなかったのですが、その後も伴奏のように背景でずっと鳴り続けていました。 最近、セルラオートマトンの新しい本を手に入れて、再び熱が上がってきています…

自己の責任と能力を的確に把握し…

先日、仕事中で。よいプログラマであるために心に留めていることをプロジェクトのメンバに話す機会がありました。 よくあるためにと意識するものは多々ありますが、かつて伺ったこの話がいつもついて回っています。 自己の責任と能力を的確に認識し…個人とし…

省略されたテキストの全体をポップアップ表示する、CSSで

動機 表示領域に対して、表示したいテキストが長い場合に、はみ出す分を省略表示するスタイルを指定する方法が CSS にはあります。 こんな感じ。 これを、省略表示されたばあいに、マウスオーバーで全体をポップアップ表示しよう、という試みです。 動機 1. …

ETS (Erlang Term Storage)を利用する(今後は、たぶん)

ETS とは Ex2ms ETS を Ex2ms で使う いつか読むはずっと読まない:先入観 ETS とは Erlang/OTP には ETS というストレージライブラリが標準で用意されています。 当然 Elixir でも利用できます。 www.erlang.org elixirschool.com ただ、ETS の問い合わせに…

ExUnit で change matcher を使いたい、ので、書いてみた

change matcher とは 普段、しごとでは Ruby on Rails を使い、テストには RSpec を利用しています。 RSpec は matcher が充実していて、単純な一致や不一致だけでなく、いろいろなパタンの検証をすることができ重宝しています。 Elixir に標準装備の ExUnit…

HTML要素に適用するコードを再利用する、Alpine.jsで。

要素に適用するコードを再利用する、Alpine.jsで。 初期のリリースでは、HTML の中にデータやコードを埋め込むスタイルだった Alpine.js ですが、v3.0 以降はその分離と再利用のためのしくみが整備されてきているようです。 今月になって新しいしくみが提供…