You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
![なぜ Erlang/OTP を使い続けるのか](https://cdn-ak-scissors.b.st-hatena.com/image/square/1ef26f6cb4349557952890dbe3e567f7f98dc151/height=288;version=1;width=512/https%3A%2F%2Fgithub.githubassets.com%2Fassets%2Fgist-og-image-54fd7dc0713e.png)
Erlangを半年ほど使った感想を書いていきます。 チョロい つまり言語機能がとても少ないと感じました。 例えば私が読んだErlangの本はすごいE本だけなのですが、全部で30章ある内の9章までで言語機能が大体出揃ってます。 実際、プロジェクトでコードを書き始めましたが、言語機能で困ったことはほぼありませんでした。 私は、言語機能は一番検索し難しい機能だと思っていて、少なくとも言語機能に関しては検索するのではなく、一通り何らかのドキュメントを読んでおかないと始まらないと思っています。 例えば Python で def f(a, b, *c, **d): と書いてあって「* と ** って何だ?」と疑問に思った時、[python * **][検索] とかしても多分まともな結果は出ないでしょう。 なので、最初にドキュメントを読む量が減るという点で、言語機能が少ないというのはとても良いと思ってい
Blog Posts 25 Feb 2017 » Ready to Golang 09 Oct 2016 » Observer ssh tunnel 07 May 2016 » Ets counters 11 Apr 2016 » Get and replace process state 08 Apr 2016 » Release with iex 04 Apr 2016 » Limited parallel map 13 Mar 2016 » Dialyzer Basics 03 Jan 2016 » Parallel file processing 11 Oct 2015 » Erlang/Elixir's remote files 03 Aug 2015 » Erlang's binaries 19 Jul 2015 » Redis with Elixir and Java 15
システム原則¶ Erlangのシステムを作って、インストールして、稼働させるまでの流れが書かれています。 なお、後半は systools を使って targetsystem というリリースツールを作るという話になっていますが、現在のErlangの方向性としては、 systools の代替として、 reltools を開発している(ただし、まだ万全ではない)という流れになっているとのこと(V談)。そのため、リリースの流れを知る、という意味あいで読むのが良いと思います。詳しくは reltools のドキュメントを参照してください。
José Valimさん1の2016年1月12日付のブログ記事"Comparing Elixir and Erlang variables"の翻訳です。 昔Erlangの変数について勉強したとき、再代入不可の変数って定数?、どうやって使うの?2と思ったものです。確かに一度代入したものが変更できないのであればプログラムの見通しはよくなります。一方でElixirの変数は一見すると再代入可能に見えます。再代入禁止の方がバグが混入しにくい?本当? この辺りについてジョゼ自ら説明します。 時々Erlangのプログラマは「Elixirの変数は隠れたバグの温床になるのでは」と心配するようです。この記事ではそういう心配についてと、Erlangでの変数も「隠れたバグ」を生み出しかねず、一方でElixirはそれらのうちのいくつかを除去するということについて議論します。 話を始める前に短い放棄声明を…: Eli
全体的なのは 私的な 2015 年技術的な振り返り - Qiita に書いた。 Erlang/OTP 18 系のリリース Erlang Programming Language Erlang/OTP 18.0 has been released ライセンスが APL 2.0 へ スケジューラー周りが整理されパフォーマンスが良くなった 18.0 がバイナリーメモリーリークを持っているというオチ。 ets:update_counter/4 、デフォルト値取れるようになったの本当に大きい 時間が整理された、これで時間がクソということもなくなった map が実験的リリースじゃなくなった rebar3 rebar3 色々頑張って出てきて、そろそろ移行できそうだなーという感じ。rebar お疲れ様。 DTLS 1.0/1.2 の実装 Erlang で 1 から DTLS 実装してみたけど、動いて良かっ
Help us understand the problem. What is going on with this article? 自分のことだけではなく会社的な話も一部含む Pocket のログを見てたら今年は結構狭い技術の中で生きていたことがわかった。 Erlang/OTP ほとんどの時間を Erlang を書くことで過ごしていた気がする。 WebRTC を主にやっていたことから様々なプロトコルを実装したし、たくさんのバグを踏んだ。 Erlang が 1 プロセスでできる処理性能が秒間 5 万リクエスト程度とそんなに高くない事から、ほかの言語への移動も色々検討していた。 CTO に Rust を試してもらったり、知り合いのミドル系の人に相談したりしても、結局は Erlang を頑張る方が良いと思う。という回答を多く頂いた年だった。 結果的に Erlang ばかり書いていた気がする。
社内勉強会でアクターによる並行処理アーキテクチャについて解説した時の資料です。しれっと公開してあった資料に思いの外ブクマがついていたのに気付いたので、せっかくなのでこちらにも掲載しておきます。 既存技術の解説なのでアクターについて知っている人にとって新しい情報はないと思います! 特に何ベントカレンダーでもないです。 今後Erlang使うの? Erlang VMの運用ノウハウなさすぎるので、すぐ使おうという機運はなさそう。ScalaのAkka Actorが十分実用的なアクターシステムらしいし、Scalaは導入済みなのでそちらのほうが有力な選択肢になるか。アクターシステムではないが、goでも近いことはできるのでさくっと並行処理システムを構築するには良いと思う。趣味ならElixirつかいたい。 参考文献 良い資料がいろいろあって、多分に参考にさせていただいています。ながめると理解が深まるかもしれ
Erlangを業務で書き始めて1年半ほど経ちましたが, その間に自分自身で嵌まったこと. そして, 身近な人が嵌まっていたポイントを纏めてご紹介します. (ついでによく見る誤りも...) バイナリ バイナリパターンマッチで済むものは正規表現を使うべきではない Url = <<"http://test.net/hoge">>, re:run(Url, <<"http://.*">>).
Elixirで、表題の通り5000万プロセスぐらい作ってみた。 Elixirで20万プロセスを作ったその後 Elixirはerlang VMをベースとした関数型の言語だ。Rubyっぽい文法も使えて便利である。erlangの特徴である、軽量のプロセスが使えるのが一つの売りである。 少し前に、Elixirでプロセス20万位作ってみた という投稿を行った。その時は、デフォルトのprocess_limitのサイズ約26万を超えて、プロセスを指定する方法がわからなかった。親切な方から、26万を超えるprocess_limitの指定方法を教えてもらったので、それならどれくらいまで行けるかと思い、5000万までプロセスを作ってみた。プロセスの単位がインフレしすぎて、実際何の単位なのかわからなくなった。 erlangのプロセス この場合のプロセスは、erlangで使われる軽量プロセスのことだ。プロセスはe
これは 2007 年頃の話です Erlang/OTP って何?という時期に Erlang/OTP で製品を作って利益を上げた日本人はあまりいないとおもう。 せっかくなので振り返りついでに、自分の昔話を書くことにする。 Erlang/OTP の導入まで仕事でネットワークサーバを触ることになったのだが、当時の製品はシングルスレッドだった。当時はもうマルチコアだという話がでており、ではマルチコアを有効に使えるネットワークサーバを書くにはどうしたらいいのだろうか?というところから入った。 Erlang/OTP をやる前は Python で Django というところに興味があったくらい普通のウェブアプリスキーだった。 そのため何を血迷ったか Python でとりあえずネットワークサーバーを書いてみることにした。 stackless python 使ったり Twisted 使ったり multipro
なぜDMMがweb3に参入したのか。Seamoon Protocolが目指す新たなエンタメ体験の未来とは
Qiitaにて、shibacowさんのElixirでプロセス20万くらい作ってみたという素晴らしいElixirの記事があり、そちらの記事にて最大プロセス数の変更はどのように行えば良いのか自分自身でも気になったため調べたところElixirからErlangVMで生成できるプロセス数を(たぶん)変更できる方法を発見したので記事にしたいと思います。 # 実行環境 OS:OS X Yosemite Erlang:Eshell V6.5, OTP-Version 18 Elixir:v1.0.4 # まずはErlangでプロセス数の変更を確認 Qittaの記事にも記載されておりますが、 erl(1)のドキュメントには OTP-R18より +P オプションにてプロセス数の上限の設定は無効化されていると記載されています。ドキュメントはこちら ただし、実行してみると、どうも動いているようにも見えました。 $
ここ最近、Elixirという言語がWebプログラマー界隈で話題になっています。 ElixirはErlangのVM上で動くRuby風味の関数型言語で、RailsコミッタのJose Valimさんが作ったプログラミング言語です。 この言語はErlangの並行性とRubyの開発生産性を持っています。 今回はこの言語が出てきた背景と文法の特徴について書こうと思います。 Elixirが注目されている理由 ここ数年、Webアプリケーションは以下の問題を抱えています。 C10K問題 10000以上のクライアントがサーバに同時接続すると、HWの性能は足りていてもOS、ソフトウェアの問題で処理が破綻する ムーアの法則の限界 CPUチップメーカーの製造するチップのクロックレートの成長に陰り。代わりにマルチコアアーキテクチャのCPUが開発されている リアルタイムWeb サーバ、クライアントが常時接続するアプリケ
Elixirでプロセス20万位作ってみた Elixirの下のErlang VMは軽量プロセスという仕組みを使って、並列プログラミングをサポートしている。ErlangのプロセスはOSのプロセスとは異なり、VM内でプロセスを切り替えている。 erlangやElixirではプロセスの使用を勧められる。 実際、どのくらいのプロセスが生成出来るか調べてみた。 process limitの引き上げ 20万プロセスまで生成出来た。それ以上はデフォルトのprocess limit に引っかかって起動出来なかった。erl +P 1000000 でprocess limit をあげられるそうだが、erlang r18からそのオプションは無効化されたそうで、何を指定すれば、process limitの上限をあげられるかわからなかった。 追記: erlang r18で+P オプションは無効化されてないそうです。
ルーティング Cowboyはデフォルトでは何もしません Cowboyを有効にするためには、リクエストを処理するErlangのモジュールにURLをマッピングする必要があります。 上記はルーティングと呼ばれています。 Cowboyはリクエストを受信するとディスパッチルールで定められたリソースにリクエストされたホストとパスが一致するかをチェックします。 もし一致したならば関連したErlangのコードが実行されます。 ルーティングルールはホストごとに決められています。 Cowboyは最初にホストと一致させて、それから一致するパスを見つけようとします。 Cowboyでルーティングを使用するためにはパスをコンパイルしておく必要があります。 構造 ルートの一般的な構造は以下のように定義されています。 Routes = [Host1, Host2, ... HostN]. 各ホストにはオプションの制約と一
3章 すごいErlangゆかいに学ぼう! 作者: Fred Hebert出版社/メーカー: オーム社発売日: 2014/08/11メディア: Kindle版この商品を含むブログ (1件) を見る 3.1 パターンマッチ defmodule Test do def greet(:male, name), do: IO.puts "Hello, Mr.#{name}!" def greet(:female, name), do: IO.puts "Hello, Mrs.#{name}!" def greet(_, name), do: IO.puts "Hello, #{name}!" end Test.greet :male, "Jack" Test.greet :female, "Betty" Test.greet :foo, "bar" http://play.elixirbyexamp
これまで ElixirですごいE本 1章 - bokuweb.me すごいErlangゆかいに学ぼう! 作者: Fred Hebert出版社/メーカー: オーム社発売日: 2014/08/11メディア: Kindle版この商品を含むブログ (1件) を見る 2章 2.2 モジュールを作る Elixirではdefmoduleでモジュールを定義する。 モジュール名となるailiasを第一引数として渡す、すると:module、モジュール名、モジュールのバイナリ、ブロックコンテンツを評価した結果がタプルとして返ってくる。 Kernel – Elixir v1.1.1 iex(13)> defmodule Foo do ...(13)> def bar, do: :baz ...(13)> end {:module, Foo, <<70, 79, 82, 49, 0, 0, 4, 64, 66, 6
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く