2021/12/21(水)の回です。
はじめに
Elixirを楽しんでいますか
Bandit Hexの話をします。
@zacky1972 先生に、Banditのことを教えてもらいました。
Bandit is an HTTP server for Plug apps.
Bandit is still a young project, and much work remains before it is ready for production use.
Bandit is written entirely in Elixir and is built atop Thousand Island.
Thousand Island is a modern, pure Elixir socket server, inspired heavily by ranch.
論よりRun
とにかくイゴかしてみます1。
YouTube動画を用意してみました。
まずはこちらをご覧ください。
動画では簡単なHTTP PostとHTTP Getを受け取っている様子を収めています。
ローカルではLINEのbotやslackのbotを作って動かすことができました。
その話はまた別の記事にまとめます。
LINEボットの作例 (基本のオウム返しボット)
動画で行っていること
以下、動画で行っていることをまとめておきます。
プロジェクトの作成
$ mix new hello_world --sup
$ cd hello_world
mix.exsにHexを追加
defp deps do
[
# {:dep_from_hexpm, "~> 0.3.0"},
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
+ {:bandit, "~> 0.4.5"}
]
end
end
mix deps.get
$ mix deps.get
Write
defmodule HelloWorld.MyPlug do
import Plug.Conn
def init(options) do
# initialize options
options
end
def call(conn, opts) do
IO.puts("== conn ==")
IO.inspect(conn)
{:ok, body, conn} = Plug.Conn.read_body(conn, opts)
IO.puts("== conn ==")
IO.inspect(body)
conn
|> put_resp_content_type("application/json")
|> send_resp(200, body)
end
end
children = [
# Starts a worker by calling: HelloWorld.Worker.start_link(arg)
# {HelloWorld.Worker, arg}
+ {Bandit, plug: HelloWorld.MyPlug, scheme: :http, options: [port: 4000]}
]
Run
$ iex -S mix
別のターミナルでcurlコマンド
# HTTP Post
$ curl -X POST -H "Content-Type: application/json" -d '{"name":"awesome", "age":42}' http://localhost:4000/api/v1/users
# HTTP Get
$ curl http://localhost:4000/api/v1/users
参考リンク
Wrapping up
Banditのイゴかし方を説明しました。
Bandit is still a young project
どこかで聞いたことありますよね
$\huge{young}$
$\huge{ヤング}$
そうです
『Nervesはナウでヤングなcoolなすごいやつ』
これで、#NervesJPアドベントカレンダーに居座ってもいい理由ができました。
Banditには、これからも注目していきます!!!
Enjoy Elixir
新しい試み
動画をつけてみました。
動画で説明をして、文章はコマンド例、ソースコード例だけにして特に説明はしませんでした3。
このフォーマットが好評であれば続けていきたいと思います。
以下、動画ってどうやって作ったの?、Qiitaに埋め込んだの? をご存じない方のための情報です。
ツールはmacOSに標準で入っているソフトを使いました。
- その他 > スクリーンショット: 動画撮影
- iMovie: 動画編集
説明のしゃべりを入れる場合には、Zoomのレコーディング機能を使えば比較的少ない機材で撮影ができます。
ただ言い間違えたりなんたりしたときの編集が面倒なので、今回はしゃべりを入れずに小粋な音楽だけにしてみました。
動画は8倍速(箇所によっては20倍速)にしてYouTubeに公開しています。
まだ遅いと感じる方は、YouTubeのほうで倍速にしてください。
Qiita記事の動画の埋め込みは、YouTubeの動画を表示している画面にて「右クリック > 埋め込みコードをコピー」にてコピーしたものをそのまま貼り付けました。
-
「動かしてみます」の意。おそらく西日本の方言、たぶん。NervesJPではおなじみ。少し古いオートレースの映像ですが、実況アナウンサーが「針2イゴきます」とはっきり言っています。https://autorace.jp/netstadium/SearchMovie/Movie/iizuka?date=2017-01-04&p=5&race_number=11&pg= ↩
-
大時計の針のこと。針がイゴいてある地点まで到達すると選手はスタートを切って良い発走の合図。針がイゴきはじめると(おそらく)選手は緊張するし、スタートはその後のレース展開に大きく影響するので、車券を握りしめている観客たちがもっとも緊張する瞬間であるため、先の尖った鋭いものを連想させる針は緊張の暗喩としても言い得て妙。 ↩
-
いつもろくに説明していないと言われそう…… ↩