erlangに関するkazoo_tmのブックマーク (7)

  • Elixir のプロセスを使ってフェイルセーフなアプリケーションを作る ─ 失敗は恐れず泥水にダイブ - Qiita

    [翻訳] Elixirのプロセスアーキテクチャ または私は如何にして心配するのを止めてクラッシュを愛するようになったか にもあるように Elixir においては例外処理は、それを頑張ってなんとかしようとするのではなく、軽量プロセスのコンテキストでむしろすすんでクラッシュさせてしまえ、というのが良い作法である。 クイズ番組で ○ か × か答えを選んで壁に突っ込んだ先に、正解ならクッションが、不正解なら泥水があるという企画があるが、それに喩えるなら 泥水だろうが何だろうが躊躇せずダイブしろ! というのが Elixir 流 (俺調べ) である。 もとい、クラッシュさせてどうするのかというと Supevisor を使って、別プロセスから該当プロセスを監視しておいて、クラッシュしてもアプリケーション全体としては間違いなく動いている状態を保証するのが正しい。 カッとなってちょっとそのための例を書いて

    Elixir のプロセスを使ってフェイルセーフなアプリケーションを作る ─ 失敗は恐れず泥水にダイブ - Qiita
  • 『Programming Elixir』より "Think Different(ly)" - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? あの Dave Thomas が書いた『Programming Elixir』を買ったのでぼちぼち読んでいる。 Chapter 1. に Elixir の特徴を巧みに表現した文章があってカッとなったので、引用しておきたい。 Think Different(ly) Object orientation is not the only way to design code Functional Programming need not be complex or mathematical. The foundations of progra

    『Programming Elixir』より "Think Different(ly)" - Qiita
  • Elixir のパターンマッチを攻略しよう - Qiita

    Elixir にあって RubyJavaScript のような言語にない特徴といえば 軽量プロセス (+ OTP周り) パターンマッチ の2点が大きく、その他の部分というのはだいたい「あの言語のこれだな」という風に対応させて理解できる(パターンマッチを実装した他の関数型言語になれてる人にとっては別かもしれないが)。 特に後者のパターンマッチの方は Elixir の文法の多くの部分の基礎になっている。従って、主観的にはパターンマッチさえ理解できれば Elixir の半分以上は理解できたと思っていいんじゃないかと思っていたりする。 というわけでカッとなってパターンマッチについて書いてみる。 パターンマッチとは パターンマッチの例で、いきなり {x, y} = {1, 5} とかいう例を見せられても「変数扱うのに便利な記法か何かですかね? (ES6 の Destructuring assi

    Elixir のパターンマッチを攻略しよう - Qiita
  • [翻訳] ElixirにおけるOTPの紹介 - Qiita

    前回に引き続き、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)モジュールがあります。アプリケ

    [翻訳] ElixirにおけるOTPの紹介 - Qiita
  • マルチコア危機:ScalaとErlangの対立

    ブロゴスフィアでは最近Scala対Erlangの議論がややヒートし続けている。マルチコアの世界(参考記事)が訪れようとしている今、いかにマルチコア危機を解決するかが問題になっている。ScalaとErlangはその解決法たらんとしている言語だが、少し違いがある。それぞれのアプローチの長所短所はなんだろうか? 問題 ムーアの法則はもう通用しない。かつてのようなクロック周波数の向上(リンク)は見込めず、かわりにコアの数を増やそうとしている。今の時代、あなたのノートPCでさえも2つコアを搭載していることだろう。 2つ以上のコアを有効に使うには、アプリケーションが並列処理を意識してないといけない。もしあなたの顧客が8コアのマシンを買ったとしたら、たとえそれをあるアプリケーションの専用マシンにしたとしても、そのアプリケーションがCPU性能の12%しか使えなくてもおかしくない、とあなたは顧客にどうにかし

    マルチコア危機:ScalaとErlangの対立
  • Elixir v1.0でのMessage Passing入門 - Qiita

    Elixir Advent Calendar 2014 6日目。 この記事は、Elixir Advent Calendar 2013 に寄稿したものを、現時点で最新バージョンのElixir向けに書き換えたものです。(一部仕様が変わっています。) ElixirといえばErlang/OTP、Erlang/OTPといえばActor Model、Actor ModelといえばMessage Passing。Actor Modelについてちょっと興味を持った人は「どうやって実装するのだろう」という疑問を持つと思います。ここではElixirにおけるMessage Passingのお作法を整理したいと思いま す。 前提 実際はErlang/OTPの経験があって初めてピンと来ることもElixirには多いのですが、稿ではErlang/OTPについて知識が無い方でもElixirのMessage Passin

    Elixir v1.0でのMessage Passing入門 - Qiita
  • Erlang VM(BEAM) スレッド構成

    Erlang の実行環境である BEAM の動作を理解するため、BEAM のスレッド構成を調査しました。 BEAM は SMP(マルチコア) 環境と非 SMP 環境では動作が大きくことなります。SMP環境と非SMP環境に分けてスレッド構成を記載します。 調査対象の OTP のバージョンは R16B03-1です。 非SMP環境 Erlang Interactive Shell を起動する際に、オプションとして '-smp disable' を付与すると、CPUはSMPでも、BEAMとしては非SMPモードで起動できます。 'erl -smp disable' で起動すると、11個のスレッドが見つかりました。11スレッドの内訳は以下のようになります。 スレッド名関数名個数 Main Threadprocess_main1 Async Threadasync_main10 Main Thread

  • 1