タグ

erlangに関するhirose31のブックマーク (30)

  • Home · moonpolysoft/dynomite Wiki · GitHub

    About Dynomite Dynomite is an eventually consistent distributed key value store written in Erlang. The design is based off of Amazon’s Dynamo paper. Dynomite currently implements the following features described in the Dynamo paper, plus some stuff not covered by the paper. Vector clocks Merkle trees Consistent hashing Tunable quorum Gossiping of membership Gossiped synchronization of partitions P

    Home · moonpolysoft/dynomite Wiki · GitHub
    hirose31
    hirose31 2009/07/07
    Erlangで実装されたDynamoクローン
  • The Top Ten Erlang News Stories of 2008 – Erlang Inside

    It goes without saying that 2008 was a difficult year for many with 2009 looking to be more of the same. But for the Erlang community, it was probably the best year since Joe Armstrong released Programming Erlang. OK, that was 2007… still, it’s a great time to use Erlang. Here are the top ten Erlang related ‘events’ of 2008, from ’smallest’ to ‘biggest’. This is my subjective ranking with a focus

  • Erlang で分散ハッシュテーブル(kademlia)を使った Key-Value Store 作ってみたよ - cooldaemonの備忘録

    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 で分散ハッシュテーブル(kademlia)を使った Key-Value Store 作ってみたよ - cooldaemonの備忘録
  • MapReduce framework Disco - High Scalability -

    Disco is an open-source implementation of the MapReduce framework for distributed computing.  It was started at Nokia Research Center as a lightweight framework for rapid scripting of distributed data processing tasks.   The Disco core is written in Erlang. The MapReduce jobs in Disco are natively described as Python programs, which makes it possible to express complex algorithmic and data process

    MapReduce framework Disco - High Scalability -
  • lists モジュール、自前の関数、リスト内包表記の速度比較 - cooldaemonの備忘録

    検証コード gist: 6312 ― GitHub 感想 foreach 末尾再帰できなくても自前の関数の方が早い・・・コードの書き方が悪いのかな? lists:foreach/2 を使ったからといって、可読性が劇的に上がるわけでもないので、lists:foreach/2 は使うの止めよう。 foreach に関しては、lists:foreach、 関数渡し - いたわさににほんしゅ こちらを参考に。 reverse 検証コードを繰り返し実行した所、lists:reverse/1 の方が、自前の関数より早い事の方が多かった。 今後、lists:reverse/1 は積極的に使って行く。 map 関数呼び出しが存在しないなら、リスト内包表記が、速度と可読性のバランスが取れていると思う。 これみたいに関数を使うなら、素直に lists:map/2 を使った方が良い。 ただ、lists:reve

    lists モジュール、自前の関数、リスト内包表記の速度比較 - cooldaemonの備忘録
  • Process Dictionary、dict、ets、gb_trees の速度比較 - cooldaemonの備忘録

    それぞれの用途が異なるので、速度比較に意味があるのか疑問だけれど・・・単純なキー・値のペアを保持する場合の速度比較を行なってみた。 何度か試した結果、保存・取得共に process dictionary、ets、dict、gb_trees の順に早い。 gb_trees 比べて dict の速度が優秀で意外だった。 検証コードは下記の通り。 -module(benchmark). -author('cooldaemon@gmail.com'). -export([run/1]). run(Count) -> Keys = lists:seq(1, Count), lists:foreach( fun ({F, TargetName}) -> {[SetRunTime, SetWallClock], [GetRunTime, GetWallClock]} = F(Keys), io:fwri

    Process Dictionary、dict、ets、gb_trees の速度比較 - cooldaemonの備忘録
  • マルチコア危機:ScalaとErlangの対立

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

    マルチコア危機:ScalaとErlangの対立
  • たけまる / Programming Rules and Conventions

    _ Programming Rules and Conventions [erlang] Kai-devel-ja でコーディング規約について話題になりました.Erlang に 一般的な規約があるのか知らないのですが,下記の文章がそれっぽいので 紹介します. Program Development Using Erlang - Programming Rules and Conventions コーディング規約というより,「モジュール間の依存性を減らす (特に循 環)」などの設計ルールも含めたお作法一覧です.参考になる部分が多いの で,粗っぽい日語メモを公開します. # Kai はなるべくこの文書に準拠する予定です pure function とは,副作用のない関数である.副作用は,send (!), receive, exit, get/put などプロセス環境を変更する BIF によ

  • たけまる / Erlang で Apache worker MPM っぽいこと

    _ Erlang で Apache worker MPM っぽいこと [erlang] Kai-devel-ja [2008-05-23-1] で,プロセスプールについて話題になった のですが,よくよく考えてみると複数の課題をごちゃ混ぜにして考えてい たので,整理しておきます. # cooldaemon さん混乱させてすみません m(_ _)m ここで紹介するのは,同時接続数を制限する並列サーバです.そのような サーバにおいて,ポイントは 2 つあります. - プロセスの起動,終了監視 - 同時に起動しているプロセス数の制限 ここでは後者について詳しくみていきます. # 詳しく書いてくれてるページがありそうだけど,見つけられなかった… 初歩的な Erlang TCP サーバでは,gen_tcp:accept/1 が返るたびに新し いプロセスを spawn し,クライアントの相手をします.

  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

    hirose31
    hirose31 2008/06/18
    Mochi*一派のプロダクト
  • EmacsベースのErlang開発環境DistelをWindowsで使う - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Distelは、EmacsとErlangノード(分散ERTS)の通信を可能にするEmacs Lispライブラリです。Emacs LispとErlangを使った分散プログラミングの基盤となります。また、このライブラリを使って作られたErlang開発ツールセットも提供されているので、Distelは“EmacsベースのErlang開発環境”と捉えることもできます。 現状のDistel配布は、Unix系OSをターゲットにしていますが、Windows(Thinkpad X31 + Windows XP)とMeadow(Windows上で動作するEmacs変種)に対してインストールしてみました。問題点は、場当たり的な対処で済ましているので、もっといい方法がありそうですが、とりあえず現状報告(書き留めておかないとスッパリ忘れそうだから)。 内容: 参考リンク集 Erlang/OTPとMeadowのインス

    EmacsベースのErlang開発環境DistelをWindowsで使う - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • たけまる / Kai - Amazon's Dynamo communicating with memcache protocol

    _ Kai - Amazon's Dynamo communicating with memcache protocol [kai][dynamo][erlang] だいぶ前 [2008-02-25-1] に,Perl (POE) で Amazon Dynamo っぽいもの を作りかけて放置していました. Erlang で書き直して,それなりに動くことを確認したので公開します.名 前は Kai といいます.今回は,memcache プロトコルでデータをやり取り できるようにしました. Dynamo とは,Amazon で使われているスケーラブルなハッシュテーブルで す.詳しくは [2008-01-31-1] に書きましたが,次のような特徴を持って おり,Amazon の巨大なサービスを支えています. - 簡単にスケールアウトできる - 障害に強い (マシン障害どころかラック障害にも耐える)

    hirose31
    hirose31 2008/05/13
    Kai:ErlangでDynamo的なものを実装
  • Tsung

    Tsung 1.7.0 is now available ! This version includes many fixes and small enhancements to Tsung. It should work with newer recent of Erlang (R20); please note that the minimum version of Erlang needed by Tsung is now R16B. Thanks to all the contributors ! You can find source code (and soon binaries for Debian, Ubuntu, Fedora) on the community website: http://tsung.erlang-projects.org/dist/ http://

    Tsung
    hirose31
    hirose31 2008/01/11
    erlangで書かれた負荷テストツール/いくつかのプロトコルに対応してるらしい/>HTTP, SOAP, PostgreSQL and Jabber/XMPP
  • RDBMSでは不十分

    リレーショナルデータベースはクライアント/サーバモデルに適合するものの、サービスの世界では新しいソリューションが必要である(source)。RDBMSはスケーラビリティの問題に陥りやすい。冗長性や並列性をどのようにして実現すればいいのか(source)? (リレーショナルデータベースは)単一故障点となります。特に複製はささいな事ではありません。疑問に思うのであれば、全く同じデータを必要とする2つのデータベースサーバがあることによって起こる問題を考えて見てください。データを読んだり書いたりするために両方のサーバがあると、同時に変更するのが困難になります。マスターサーバとスレーブサーバがあっても、良くありません。なぜなら、マスターはユーザが情報を書き込む際、沢山の熱を帯びるからです。 また、Assaf Arkin氏も整合性を書くこと(source)はRDBMSが自身の重さで内破してしまう理由で

    RDBMSでは不十分
  • Matzにっき(2007-09-24) ongoing ・ WF II: Erlang Blues

    << 2007/09/ 1 1. U20プロコン最終審査会 2. 死なないために 3. [Ruby] davidflanagan.com: Nifty Ruby Unicode codepoints utility 2 1. [教会] 第一日曜日 3 1. [Ruby] RubyアソシエーションがRuby言語公式ロゴのデザイン募集:ITpro 2. [OSS] Open Tech Press | GNU GPLv3 日語訳 3. [言語] retlang - Google Code 4 1. Full Disclosure: World's most powerful supercomputer goes online (fwd) 2. [知財] 元麻布春男の週刊PCホットライン - DRMどころかEPNも嫌いだ 3. 取材 5 1. 取材 2. [Ruby] Ruby needs a

    hirose31
    hirose31 2007/10/06
    >分散がうまくはまればErlangは驚異的な性能を発揮するが、 (スクリプト言語としては基本的な)ファイルI/Oや正規表現マッチなどは驚異的に遅いということを認識する必要がある。まだ、汎用言語になるには改善が必要かも
  • Erlang(Mnesia) で memcached (互換なし)を作ってみました - cooldaemonの備忘録

    DSAS開発者の部屋:Erlang で memcached を作ってみました。 触発されました。で、家族サービスを一日サボって作りました。嫁と子供達に感謝! http://labs.miu.vc/svn/cooldaemon/erl/yamd/trunk/ memcached との違い プロトコル(w; validation が抜けまくりなので、虐めると速攻で落ちる 急いで作ったので、いろいろイケてませんが、そのうち直して、自分の所のプロダクト環境で使う予定です。 将来的には、ssl 通信、ユーザ・ホスト認証、バックアップ、監視、他の erlang node を勝手に memcached にする機能なんかも加える予定です。 気が向けば、memcached 互換も検討します。 DSAS の中の人が作ったのとの違い memcached 互換じゃない ベンチマークを調べていない Mnesia を

    Erlang(Mnesia) で memcached (互換なし)を作ってみました - cooldaemonの備忘録
  • ErlangなWebサーバyawsを速くする方法 - みかログ

    Erlangで書かれたyawsがある. 一般的なWebサーバの機能の他,HTMLにErlangで書かれたコードを埋め込んで動的に処理させることが出来るようになっている.(JSPやPHPのように) このWebサーバは,サーバのコードがほぼすべてErlangで書かれているのだけども,十分な処理速度を持っている. Erlangベースということで,接続数に対しても十分スケールするので,動的コンテンツの環境としてはなかなか優秀. しかし,デフォルトでは Erlang VM をそのままの状態で利用するため,最近のSMP・マルチコア環境では性能を十分発揮できない. 以下の2つのことをすれば,それだけでかなり性能を上げることが出来る. 1.SMP・マルチコア環境では,yaws を実行する Erlang 環境に,-smp オプションを渡す(-erlarg '-smp') 2.yaws体を,HiPEでコンパ

    ErlangなWebサーバyawsを速くする方法 - みかログ
  • Erlangの世界ではmemcachedとか要らない - みかログ

    Erlangを始めてから感じたことは,今までPerlでやっていた時に比べて,いろいろなやり方が出来るようになる,ということ. Webアプリに限らず,いろいろなアプリケーションで,より柔軟な設計が出来るようになると思う. Perl(や同種のスクリプト言語では)基的に1プロセス1スレッドの範囲内に縛られていて,コストを考えるとコードの一部の処理だけ並列処理することは出来なかったし,複数のプロセスでデータを共有しようと思うと基的にはDBに入れるしかなかった. たとえば,Perlで作られている大規模なサイトでは,DBの負荷を軽減するためにmemcachedが使われていることが多い. もしErlangでサイトを作っていれば,memcachedなどをわざわざ使うまでもなく,同様のことが簡単に書けてしまう. 単にmemcachedと同じ事をするだけであれば大きなメリットは無いけれども,自前で書いた場

    Erlangの世界ではmemcachedとか要らない - みかログ
  • 第11回 クロージャによる超軽量並行プロセスの簡単実装法

    最近,ネットの一部で「Erlang」(発音はアーランまたはエアラン)というプログラミング言語が流行している(参考リンク)。Erlangはスウェーデンの通信機器メーカーであるエリクソンにて開発された言語で,エリクソン内部や通信業界はもちろん,Twitter(関連記事)などのオンライン・サービスでも採用されているという。 Erlangの特徴は,複数のプロセスが通信をしながら計算をする「並行プログラミング」を,言語の機能として強力にサポートしていることだ。C言語などの逐次プログラミング言語は,プロセスや通信の機能を内蔵しておらず,こうした機能をオペレーティング・システムに「外注」している。しかし,そのような外付けの仕組みは,メモリー消費量や速度,開発効率などの点でオーバーへッドが大きい。Erlangのような並行プログラミング言語では,プロセスや通信といった機能をプリミティブとして実装することによ

    第11回 クロージャによる超軽量並行プロセスの簡単実装法
  • Erlang Tips

    Erlang に関する情報を,自分用メモを兼ねて作成しました. 間違い等見つけた方はブログのエントリまで連絡いただけるとうれしいです. 最終更新:2007/07/04 23:56 目次 Erlangの特性 Erlangは以下のような特徴があります. 簡単に言うと,ネットワークサーバを書くのに向いています. 得意なこと ・大量の並列処理 ・複数サーバでの分散処理(ただしEthernet経由で通信するので専用インターコネクトほどは速くないと思います) 苦手なこと ・純粋な計算処理(C言語の10倍程度遅いようです) ・GUIアプリケーション(WingsというErlangでかかれたGUIアプリはあるが,GUI周りの情報は少ないです) ありそうな勘違い ・マルチコア・SMP環境にすれば,コア数に比例して性能が向上する. →もちろん条件によるので,必ず比例するわけではありません. SMPサポートは条件

    hirose31
    hirose31 2007/06/16
    ステキなまとめ