erlang

ZeroMQ Erlang Binding(NIF) の inproc と Erlang の素のメッセージ送信の速度を比較してみた

コードと結果は下記の通り https://gist.github.com/3193117Erlang で作ったサーバに LL で作ったワーカーをぶら下げようと考えており、どうせならナウでヤングな ZeroMQ を間に入れてみようと思い立ちました。 ズボラな私は、ZeroMQ にワーカーのロードバラ…

続:gen_server のコールバックモジュール内で badarith が発生すると supervisor ごと落とされる

二年半前に gen_server のコールバックモジュール内で badarith が発生すると supervisor ごと落とされる というメモを残したにも関わらず、すっかり内容を忘れてしまい、変な Process Design の poolboy*1 の poolboy_sup が安全か検証をするのに時間が掛か…

RabbitMQ のクラスタリング機能にキューのミラーリングが追加されたので RabbitFoot (AnyEvent::RabbitMQ) から試してみる

クラスタリングやキューのミラーリングの詳細は、下記参照の事。 RabbitMQ - Clustering Guide RabbitMQ - Highly Available Queues RabbitMQ をクラスタリングする 今回はサーバを複数用意できなかったので、一つのサーバ上で RabbitMQ を二つ起動する。 % …

他のプロセスから送られてきたメッセージを誤受信しないよう制限する

刺身☆ブーメランのはてなダイアリー 2011/01/12(Wed) への返信です。 元コードの wait_server:client/3 は、receive で From を束縛しているので、この状態だとメッセージの選択受信になりません。From を Server_Pid に変更すると、ただしく動作すると思い…

第五回 Erlang 分散処理勉強会 無事終了

第五回 Erlang 分散処理勉強会ですが、皆さんにご助力頂き、無事終了いたしました。 発表者の皆様、運営にご協力頂いた皆様、会場をご提供頂いた日本オラクルの皆様、本当にありがとうございました。 懇談会について 今回は、開始時間が遅かったので懇談会を…

第二回 Erlang 基礎勉強会まとめ

以前、告知した通り 2010年7月28日(水) にジェミナイ・モバイル・テクノロジーズ株式会社様の会議室をお借りして Erlang 基礎勉強会の第二回目を行う事ができました。快く会場をご提供して頂いたジェミナイ・モバイル・テクノロジーズ株式会社様、また、ジェ…

第五回 Erlang 分散処理勉強会を 8/27(金) に開催します

詳細と参加のお申し込みは下記の URL からお願いします。 第五回 Erlang 分散システム勉強会 : ATND今回は、Erlang をご活用されている企業である Gemini Mobile Technologies 様をお招きし、分散 KVS である Hibari の発表を行って頂く予定です。 また、他…

第二回 Erlang 基礎勉強会

去年末に第一回を行った Erlang 基礎勉強会ですが、7/28 にジェミナイ・モバイル・テクノロジーズ 株式会社様の会議室をお借りして第二回を行おうと思います。 今回は、手続き型言語に慣れ親しんだ方向けに、Erlang の軽量プロセスや、そのプロセスを用いた…

vim-ref が Erlang に対応した!

Vim から各種リファレンスを参照できる @thinca 氏作のvim-ref が Erlang に対応したので試してみました。 「:Ref erlang [検索したい単語]」と入力するか、検索したい単語の上で 'K' を押下すると「erl -man」の結果をバッファに表示してくれます。 それだ…

Erlang + ManPageView(Vim) で関数を検索

以前、ManPageView を修正し erl -man 対応を行ったのですが、Man がモジュール単位であるため関数名で検索できませんでした。 そこで Man を開いた後に関数名で検索するように無理矢理修正してみました。 http://github.com/cooldaemon/myhome/blob/master/…

Erlang + Lua = erluna

第四回 Erlang 分散処理勉強会から早や3ヶ月…、学ぼう・試そうと思っていた事が思うようにできない日々を悶々と過ごしておりましたが、何とか時間を作って Erlang linkd-in driver を試すために Lua を組み込んでみました。 Source Code cooldaemon's erluna…

第四回 Erlang 分散処理勉強会 まとめ

第四回 Erlang 分散処理勉強会は、皆様のご協力のもと、無事に終了する事ができました。 発表者の皆様、運営にご協力頂いた皆様、会場をご提供頂いたオラクルの皆様、本当にありがとうございました。 運営について 会場 今回、日本オラクル様に会場をご提供…

第四回 Erlang 分散処理勉強会と懇談会について

明日(2010/2/26)に行われる第四回 Erlang 分散処理勉強会ですが、下記の通り、お願い申し上げます。 キャンセルについて 参加を断念される方は、他のキャンセル待ちの方の為に、下記の URL にて、忘れずキャンセル処理を行って下さい。 http://atnd.org/even…

RabbitMQ でお手軽 Client-Server モデルを実現する

Erlang のコードは一行も出てきません。 以前作った RabbitFoot を使うので、Perl のコードしか出てきませんが、RabbitMQ(AMQP) を理解する助けになると思います。 事前準備 Client から Server へ Request を送るための Queue を用意します。 % /path/to/ra…

Vimshell で erl コマンドを実行する

Erlang 基礎勉強会で、Emacs 使いの方々が少し羨ましかったので、真似して MacVim 上で Vimshell から erl コマンドを実行してみました。ちなみに、今回使用したのは MacVim-KaoriYa の 20090802 版です。 Vimshell の準備 MacVim-KaoriYa 20090802 版は、テ…

RabbitMQ を Perl から利用するため、AMQP Client と管理用のコマンドラインツールを作りました

素直な書き方をしている*1ので、コードを読んでもらえれば AMQP が何か解ります。*2 cooldaemon's RabbitFoot at master - GitHub AMQP Client の概要 RabbitFoot という名前です。内部で Net::AMQP を利用しています。 RabbitMQ 1.7.0 が対応している AMQP …

第一回 Erlang 基礎勉強会について

下記の通り、2009/12/28 19:00 から、第一回 Erlang 基礎勉強会を開きます。 第一回 Erlang 基礎勉強会 : ATND 第一回は、簡単な ErlangVM の使い方*1や、リストの話*2を実際に手を動かしながら、一緒に考えて行く予定です。時間があれば、プロセス間通信の…

第四回 Erlang 分散システム勉強会を行ないます

詳細内容の確認と参加のお申し込みは、下記をご利用ください。 第四回 Erlang 分散システム勉強会 : ATNDご意見・ご要望などは、Erlang-users.jp の ML にポストして頂くか、Twitter で ハッシュタグ #TEW4 を付けてつぶやいて頂けると助かります。

第3回 Erlang 分散システム勉強会 LT のスライドを公開します

7月3日に開催される第3回 Erlang 分散システム勉強会のスライドを公開します。 Starting an Erlang Project 今回の LT では、Erlang でアプリケーションを書く際に、多分、必要となるだろう知識をさらっと説明する予定です。

「分散Key/Valueストア,Kaiを使ってみよう!」第4回が公開されました

公開日の朝まで修正依頼を出し続けてしまい、技術評論社の方に多大なるご迷惑をお掛けしてしまいましたが、何とか 6/24 に公開されました。今回は、Quorum 以外の設定について書きました。 既に Kai の trunk では、設定の項目名が変更になっているので、tru…

「分散Key/Valueストア,Kaiを使ってみよう!」第3回が公開されました

今回は、クラスタについて、少し詳しく書いてみました。 「Kai を使うなら絶対にクラスタ構成にして欲しい!」と考え、力んで書いたα版が訳の分からない文章になってしまい、id:teahut さんに沢山添削して頂きました。多謝!分散Key/Valueストア,Kaiを使っ…

「分散Key/Valueストア,Kaiを使ってみよう!」第2回が公開されました

第2回は下準備がメインですが、第3回は Kai の要であるクラスタを、第4回は設定値による影響について説明する予定です。 不備などありましたら、ご指摘をお願い致します。分散Key/Valueストア,Kaiを使ってみよう!:第2回 Kai の基礎 ─Kaiのインストールと…

Supervisor 配下のプロセスが停止した際に State を Dump し、再起動した際に State を Restore するには?

サンプルコードを書きました。gist: 91309 - GitHubつい最近、kai_tcp_server に、現在の接続クライアント数を記録する為の Monitor プロセスを追加したのですが、現在の仕様では、何かの拍子に Monitor が落ちると接続数がリセットされてしまいます。(その…

私が Erlang で Package を使わない、ただ一つの理由

結論 Common Test と相性が悪いから。 補足 kai の tcp_server をファイル分割しようと思い、試しに Package を使ってみたのですが、Common Test で下記のようなエラーが出てしまいました。 === ERROR! init_per_testcase crashed! Line: {kai_tcp_server_SU…

gen_server のコールバックモジュール内で badarith が発生すると supervisor ごと落とされる

検証コード -module(test_sup). -author('cooldaemon@gmail.com'). -behaviour(supervisor). -export([start_link/0]). -export([init/1]). start_link() -> supervisor:start_link({local, ?MODULE}, ?MODULE, []). init(_Args) -> Flags = {one_for_one, 1…

常駐している Erlang プロセスのコードを入れ替える事ができる条件

常駐している Erlang プロセスのコードを無停止で動的に入れ替えるには、設計の段階で、入れ替えが発生すると思われる箇所を、プロセスとは異なる別モジュールに切り離しておく必要がある。 常駐している Erlang プロセスのコードの入れ替えに失敗する例 ま…

kai_tcp_server: a simple module for implementing concurrent TCP servers

Last July, Kai developer team made a simple module named "kai_tcp_server", which has the following features: Makes it easy to implement concurrent TCP servers, Provides typical TCP server behaviours, listen, accept, and so forth, Handles m…

第二回 Erlang 分散システム勉強会の感想

感想 Process Design and Polymorphism: Lessons Learnt from Development of Kai 並列性を確保する為、何をプロセス化し、何をプロセス化しないのか?の指標を提示されていたのが、一番興味深かったです。 質疑応答の中で、設定値を保持する箇所をプロセス…

久しぶりに どう書く?.org に投稿

疑似並行処理 どう書く?org どう見ても Erlang 向けのお題だったので解いてみました。 どう書く?org 8013 cooldaemon: Erlang のプレーンな例は、他の方が...(疑似並行処理) - 投稿の詳細 lists を多用しているので、下記のように import した方がスッキリ…

第2回 Erlang 分散システム勉強会が開催されます

詳細は・・・ たけまる / 第2回 Erlang 分散システム勉強会 上限30名の所に、既に10名ほど予約が入っているので、参加希望の方は早めに参加予約した方が良いと思います。 ちなみに、スピーカーも募集中です。個人的には erlang の話だけではなく、p2p、DHT …