A framework for easily creating beautiful presentations using HTML
All Elixir code runs inside lightweight threads of execution (called processes) that are isolated and exchange information via messages: current_process = self() # Spawn an Elixir process (not an operating system one!) spawn_link(fn -> send(current_process, {:msg, "hello world"}) end) # Block until the message is received receive do {:msg, contents} -> IO.puts(contents) end Due to their lightweigh
絶対に落ちてはいけないサーバアプリの開発にも数多く利用されているプログラミング言語Erlang(あーらん)。その独特の構文から並行プログラミングの基礎、OTPと呼ばれる強力なツール群の使い方、分散処理、テスト、アプリケーションのリリース方法、型を用いた静的解析ツールDialyzerにいたるまで、Erlangのすべてをクセのあるイラストと親しみやすい例題を使って徹底的に解説した"Learn You Some Erlang for Great Good!"の翻訳です。 このような方におすすめ プログラマー Erlang入門者 Erlangを実用的に学びたい人 関数型言語に興味のある人 『すごいHaskellたのしく学ぼう!』の読者
文字列 文字列を数値に変換する list_to_integer("123"). % 123 list_to_integer("-10"). % -10 n進数の文字列を数値に変換する u は指定した基数で変換、# は文字列が表現している基数で変換します。 io_lib:fread("~16u", "100"). % {ok,[256],[]} io_lib:fread("~2u", "100abc"). % {ok,[4],[abc]} io_lib:fread("~36u", "100%%%"). % {ok,[1296],"%%%"} io_lib:fread("~#", "16#100"). % {ok,[256],[]} io_lib:fread("~#", "2#100abc"). % {ok,[4],[abc]} io_lib:fread("~#", "36#100%%%").
[1] http://haskell.g.hatena.ne.jp/jmk/20070509/1178703858 [2] http://d.hatena.ne.jp/sumim/20070513/p1 リングベンチマークというのを Erlang と他の言語で作って比べてみると Erlang の軽量プロセスのすごさがわかるよという話。Scala で書いてみた。Scala のアクターを使ってみるのは初めて。 import scala.actors._ import scala.actors.Actor._ import Console._ import scala.actors.Exit object Ring { def main(args: Array[String]) = { val begin = System.nanoTime() start(args(0).toInt, args
並行言語であるErlangでPeer-to-Peer Network技術の一つである分散ハッシュテーブルを実装してみたところ,わずか1000行程度で実現できました.ノードが頻繁に出たり入ったりする,いわゆるchurn下でもそれなりの性能が出せたので,SourceForge.netで公開してみます.興味のある方はどうぞ. http://sourceforge.net/projects/ermdia/ 内部アルゴリズムはKademliaと呼ばれるものを利用しています.BitTorrent等でおなじみのアルゴリズムですが,データのput/getなどの通常のメッセージの交換時にルーティングテーブルをアップデートするため,ルーティングテーブルの維持コストがChord等に比べて低いという特徴があります.実装もそれなりに簡単で,過去にSymphonyと呼ばれる分散ハッシュテーブルを実装したのですが,それ
Kai に kademlia の組み込みを提案する為、試しに作っていたのですが、README に書いた How to Use の項目が動くようになったので晒してみます。 cooldaemon's ermlia at master ― GitHub 設置方法なんかも README に書いてあるので、ご興味のある方は、そちらをご参考に。 まだ、いくつかの機能が未実装(定期的にデータを publish していない)だったり、不具合(Key のバージョン管理がされていない)があるけれど、そこそこに動きます。 おまえは kademlia を勘違いしている!等、突っ込み大歓迎。 参考 URI Erlangで分散ハッシュテーブルを実装してみた - NO!と言えるようになりたい id:ytakano 氏に多謝! Amazon.co.jp: P2P教科書 (インプレス標準教科書シリーズ): 江崎 浩: 本
Erlang に関する情報を,自分用メモを兼ねて作成しました. 間違い等見つけた方はブログのエントリまで連絡いただけるとうれしいです. 最終更新:2007/07/04 23:56 目次 Erlangの特性 Erlangは以下のような特徴があります. 簡単に言うと,ネットワークサーバを書くのに向いています. 得意なこと ・大量の並列処理 ・複数サーバでの分散処理(ただしEthernet経由で通信するので専用インターコネクトほどは速くないと思います) 苦手なこと ・純粋な計算処理(C言語の10倍程度遅いようです) ・GUIアプリケーション(WingsというErlangでかかれたGUIアプリはあるが,GUI周りの情報は少ないです) ありそうな勘違い ・マルチコア・SMP環境にすれば,コア数に比例して性能が向上する. →もちろん条件によるので,必ず比例するわけではありません. SMPサポートは条件
システム原則¶ Erlangのシステムを作って、インストールして、稼働させるまでの流れが書かれています。 なお、後半は systools を使って targetsystem というリリースツールを作るという話になっていますが、現在のErlangの方向性としては、 systools の代替として、 reltools を開発している(ただし、まだ万全ではない)という流れになっているとのこと(V談)。そのため、リリースの流れを知る、という意味あいで読むのが良いと思います。詳しくは reltools のドキュメントを参照してください。
随時加筆してます 追記 2011-06-18 rebar.config の erl_opts から fail_on_warning から warnings_as_errors へ変更した rebar.config の xref に fail_on_warning を追加した インストールする Erlang を R14B03 へ変更した ライブラリ紹介に webmachine 、folsom 、ibrowse 、Emysql 、 statebox を追加した 2011-04-02 rebar.config の erl_opts から debug_info を消した rebar.config の実際に使っているベースを公開 Makefile に make edoc を追加した configure の例を hipe を使わないようにしているので native-lib を外した EUnit につい
命令型言語の Java や Ruby がユーザスレッドからカーネルスレッドに移行したのとは対照的に、関数型言語の Erlang や Haskell では軽量なユーザスレッドを提供することに成功しています。僕は、この違いが何から生じているのか理解したいと思っています。この記事では、これまで調べたことをまとめます。 軽量なユーザスレッドは Erlang が有名ですが、Haskell (GHC)でも利用できることを重ねて強調しておきます。Haskell の方が Erlang よりも速いようです。追記:フェアな比較ではないようなので、話半分で参照して下さい。 Rubyの場合 Ruby 1.8 まで提供されていたユーザスレッドは、軽量とは言えませんでした。その理由は、ユーザスレッドをコンテキストスイッチさせる際にスタックをコピーしていたからです。Rubyソースコード完全解説の第19章 スレッドによれ
システム原則¶ Erlangのシステムを作って、インストールして、稼働させるまでの流れが書かれています。 なお、後半は systools を使って targetsystem というリリースツールを作るという話になっていますが、現在のErlangの方向性としては、 systools の代替として、 reltools を開発している(ただし、まだ万全ではない)という流れになっているとのこと(V談)。そのため、リリースの流れを知る、という意味あいで読むのが良いと思います。詳しくは reltools のドキュメントを参照してください。
ブロゴスフィアでは最近Scala対Erlangの議論がややヒートし続けている。マルチコアの世界(参考記事)が訪れようとしている今、いかにマルチコア危機を解決するかが問題になっている。ScalaとErlangはその解決法たらんとしている言語だが、少し違いがある。それぞれのアプローチの長所短所はなんだろうか? 問題 ムーアの法則はもう通用しない。かつてのようなクロック周波数の向上(リンク)は見込めず、かわりにコアの数を増やそうとしている。今の時代、あなたのノートPCでさえも2つコアを搭載していることだろう。 2つ以上のコアを有効に使うには、アプリケーションが並列処理を意識してないといけない。もしあなたの顧客が8コアのマシンを買ったとしたら、たとえそれをあるアプリケーションの専用マシンにしたとしても、そのアプリケーションがCPU性能の12%しか使えなくてもおかしくない、とあなたは顧客にどうにかし
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く