はじめに 実装したい機能の参考にectoのEcto.Schema周りを読みました。その備忘録的に書いていきたいと思います。 ちなみにバージョンは2.2.11になります(v3.0.0-devまで出てますが、今回は2.2.11に) 読んだところ
The Elixir Forum - for Elixir programming language enthusiasts!
Elixirのマクロ、便利ですよね。 使ってますか?使ってる?じゃあ今すぐ 使うのをやめろ。 マクロの良くない点 一言で言えば 何が起きるか想像できない という点に付きる。 defmodule HelloWorld.Router do use HelloWorld.Web, :router pipeline :browser do plug :accepts, ["html"] plug :fetch_session plug :fetch_flash plug :protect_from_forgery plug :put_secure_browser_headers end pipeline :api do plug :accepts, ["json"] end end こういう pipeline マクロと plug マクロの呼び出しがある時、これによって何が起きるか想像できるだろうか
== Compilation error on file lib/vercheckex.ex == ** (exit) exited in: :gen_server.call(:hackney_manager, {:new_request, #PID<0.420.0>, #Reference<0.0.1.8689>, {:client, :undefined, :hackney_dummy_metrics, :hackney_ssl_transport, 'github.com', 443, "github.com", [connect_timeout: 5000, recv_timeout: :infinity], nil, nil, nil, true, :hackney_pool, :infinity, false, 5, false, 5, nil, nil, nil, :unde
Elixir の勉強中 Phoenix アプリケーションのデプロイ方法 方法1. ソースコードをサーバに置いて、mix phoenix.server で起動 方法2. Exrm でビルドした結果をサーバに置いて、Exrm が自動生成したスクリプトで起動 しかし、自動化しようとするとうまくいかない(なんで??) ここまでのまとめ:結局どうしたらいいの? この記事の続き 参考ページ 参考書籍 Elixir の勉強中 最近、職場の飲み会で同僚に「Erlang VM はいいぞ」と熱弁されたのをきっかけに、「プログラミング Elixir」を買って Elixir を触りはじめました。Elixir でサンプルコードを動かすだけだと身に付かなそうなので、「Phoenix で API サーバを書く」というのを当面の目標にしています。 Phoenix というのは Web フレームワークの名前で、Elixir
ポイント exrmを使ってビルドします。 (公式のチュートリアル参照) ビルド後に一式がパッケージ化された <app name>.tar.gz ができます。 パッケージには erlang のランタイム環境も含まれています。 (ランライム環境が含まれているので)ビルドはデプロイ環境と同じプラットフォームで行ってください。 mac でビルドして linux で実行は❌ パッケージにランタイム環境が含まれているため、解凍して bin/<app> start を実行するだけでサーバーが起動できます。 upgrade (hot deploy) は releases/ ディレクトリにtar.gz を置いて、bin/<app> upgrade <ver> 。 ただし、ecto の create や migrate は実行されないため、別途行う必要があります。 手順 elixir / phoenix の勉
John Bohnさんのブログ記事 Elixir Process Architecture or: How I Learned to Stop Worrying and Love to Crashの翻訳です。 Elixir(とそのベースになっているErlang)のプロセスは生成のためのコストが小さいため「下手にエラー処理するコードを書いてプロセスを維持するよりはさっさとクラッシュさせて、それに続く処理の中で対策して再起動したほうがよい」という思想があります。それを実際に適用してみたという話です。なお説明を簡単にするために多少端折ってるとのこと。 ところでこのタイトルは某古典的スラップスティックSF映画のアレですね… "クラッシュさせちまえ" それは私が聞かされ続けてきたことだ。正直言ってそのセリフの意味するところを理解するまで少々時間が必要だった。その考え方がピーンと来るにはProcess
Elixir にあって Ruby や JavaScript のような言語にない特徴といえば 軽量プロセス (+ OTP周り) パターンマッチ の2点が大きく、その他の部分というのはだいたい「あの言語のこれだな」という風に対応させて理解できる(パターンマッチを実装した他の関数型言語になれてる人にとっては別かもしれないが)。 特に後者のパターンマッチの方は Elixir の文法の多くの部分の基礎になっている。従って、主観的にはパターンマッチさえ理解できれば Elixir の半分以上は理解できたと思っていいんじゃないかと思っていたりする。 というわけでカッとなってパターンマッチについて書いてみる。 パターンマッチとは パターンマッチの例で、いきなり {x, y} = {1, 5} とかいう例を見せられても「変数扱うのに便利な記法か何かですかね? (ES6 の Destructuring assi
最近話題の(?)Elixir + Phoenixを現在関わっているプロジェクトの検証・評価目的に使ってみます。 なお自分自身全くの初心者なので初心者向けの内容になる予定です。 Elixirとは Elixir公式サイトから引用します Elixir is a dynamic, functional language designed for building scalable and maintainable applications. Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded softwar
(Elixir 向けの内容ですが、Erlang で書かれた recon_trace を紹介しているので、Erlang タグも付けてます) トレース機能、使ってますか? みなさんは Elixir のプログラムをどのようにデバッグしてますか? IEx.pry? それとも、IO.inspect を使った、いわゆる printf デバッグでしょうか? また、もし本番環境で次のような問題が起こったら、どう調査しますか? 特定の条件(ユーザーからの入力)でエラーになるようだが、その条件自体がわからない どこかが性能上のボトルネックになっているようだ ログを追加して、アプリケーションをデプロイし直すのもひとつの方法ですよね。 もちろん、どれも有効な手段です。でも、こんな時、まずは Erlang VM のトレース機能を使うことをお勧めします。それだけで原因がわかるかもしれません。 「すごいE本1」の原著者
前回に引き続き、Michael Kohlさんの2015年2月13日付のブログ記事An intro to OTP in Elixirの翻訳です。 OTPとは何か? ドキュメントによればOTP-Open Telecom Platform-は「並行プログラミングのために完備された開発環境」で、Erlangコンパイラとインタプリタ、データベースサーバー(Mnesia)、解析ツール(Dyalizer)それに多数のライブラリを含んでいます。人々がOTPについて話をするときに引き合いに出すのはこの後半の部分です。 ビヘイビア(ふるまい) Erlang/OTPのデザイン原則の中心的なもののひとつはアプリケーションのパターン、OTP用語でいうところの「ビヘイビア」です。ビヘイビアは共通的なタスクに対する汎用的な実装を定義します。その一例として汎用サーバー(gen_server)モジュールがあります。アプリケ
cheat sheet elixir-lang.org v1.2 Updated 1/4/2016 Operators === !== and or not (strict) == != && || ! (relaxed) >, >=, <, <= +, -, *, / (float) div, rem (integer) binary1 <> binary2! (concat) list1 ++ list2 ! ! (concat) list1 -- list2 (set diff) a in enum ! (membership) ^term (no reassign) Command line elixir [options] file.ex/file.exs iex iex -S script (e.g., iex -S mix) iex --name local iex --snam
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く