もやもやエンジニア

IT系のネタで思ったことや技術系のネタを備忘録的に綴っていきます。フロント率高め。

Mix

Elixir 入門 ~ MIX AND OTP ~ その9 - Distributed tasks and configuration

最後にroutingの機能をKVアプリケーションに追加する。routing table はこのようになる。 [{?a..?m, :"foo@computer-name"}, {?n..?z, :"bar@computer-name"}] Our first distributed code VMに名前をつけて開始する。iex --sname fooでREPLを起動する。 す…

Elixir 入門 ~ MIX AND OTP ~ その8 - Docs, tests and pipelines

TCP経由で受け取ったメッセージをパースしてKVアプリケーションに送る処理を実装する。 Doctests doctestを使ってパースする関数を実装する。これはドキュメントからテストを作成することができ、ドキュメント内の正確なサンプルコードの提供を助けてくれる…

Elixir 入門 ~ MIX AND OTP ~ その7 - Task and gen-tcp

Erlangの:gen_tcp モジュールについて学ぶ。 Echo server まずはEcho Serverを作成することから始める。TCP Serverは以下のStepを実行する 利用可能なPortを開いてListenする そのPortでクライアントからの接続を待ち、受け入れる クライアントからの要求を…

Elixir 入門 ~ MIX AND OTP ~ その6 - Dependencies and umbrella projects

KVアプリケーションは完成したので次にそれを実装するTCPサーバーを作成する。その前にMixのDependencyについて理解する。 External dependencies 外部依存はビジネスドメインに縛られない。例えば今のKVアプリケーションのためにHTTP APIが必要であれば外部…

Elixir 入門 ~ MIX AND OTP ~ その5 - ETS

キャッシュ機構であるErlang Term Storageについて学ぶ。 ETS as a cache ETSは etsモジュールを経由してメモリ上のETSテーブルにデータを保存できる仕組み iex(1)> table = :ets.new(:buckets_registry, [:set, :protected]) 8211 iex(2)> :ets.insert(tabl…

Elixir 入門 ~ MIX AND OTP ~ その4 - Supervisor and Application

この章ではElixirのポリシーである“fail fast” と “let it crash”を実現しているsupervisorについて学ぶ。 Our first supervisor Supervisor behaviour を使ってsupervisorを実装したモジュール lib/kv/supervisor.ex を作成する。 defmodule KV.Supervisor …

Elixir 入門 ~ MIX AND OTP ~ その4 - GenEvent

複数のhandlerにイベントをpublishできるGenEventについて学ぶ。 Event managers iex -S mix でセッションを新しく初め、GenEvent API を触ってみる。 iex> {:ok, manager} = GenEvent.start_link {:ok, #PID<0.83.0>} iex> GenEvent.sync_notify(manager, :…

Elixir 入門 ~ MIX AND OTP ~ その3 - GenServer

Bucketのプロセスを監視するプロセスをGenServerを使って作成する GenServerはElixirとOTPでサーバー機能を実装するための抽象化された仕組みである。 Our first GenServer GenServerは Client API と Server Callback の2つの部品が実装される。 ClientとSe…

Elixir 入門 ~ MIX AND OTP ~ その2 - Agent

この章では KV.Bucket というモジュールを作成する。このモジュールはkey-value形式でデータを保存でき、複数のプロセスからの読み書きをできるように実装する。 The trouble with state Elixirはshared nothingでimmutableな言語である。もし状態を持つ何か…

Elixir 入門 ~ MIX AND OTP ~ その1 - Introduction to Mix

実際にMixとOTPを使ったアプリケーションを作成していく。 ↓のようにKey-Valueなデータを扱うアプリを作る CREATE shopping OK PUT shopping milk 1 OK PUT shopping eggs 3 OK GET shopping milk 1 OK DELETE shopping eggs OK アプリケーションを作るため…