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

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

Perl で作成した RabbitMQ 専用クライアントライブラリを AnyEvent と Coro で非同期化しました

以前、AMQP と RabbitMQ を学ぶために RabbitFoot という名前の Perl 版のクライアントライブラリを作成したのですが、非同期化して欲しいと要望を頂いたので、AnyEvent と Coro を利用してみました。 AnyEvent と Coro は、今回、初めての利用となるため、…

SimpleHttpClient を用いた iPhone アプリのサンプルを公開します

http://github.com/cooldaemon/TestSimpleHttpClient とても適当ですが、雰囲気は伝わるかと。 リクエスト送信、レスポンス受信と解析は、スレッドが異なるので、表示に干渉する場合は performSelectorOnMainThread:withObject:waitUntilDone: を利用する必…

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を実際に手を動かしながら、一緒に考えて行く予定です。時間があれば、プロセス間通信の…

zsh 用の rabbitmqctl の補完関数を書きました

と言っても、やっつけ仕事ですが。 #compdef rabbitmqctl typeset -A opt_args local context state line _arguments : \ "*:argument:(stop stop_app start_app reset force_reset cluster status rotate_logs add_user delete_user change_password list_u…

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

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

Erlang に興味ある方が増えている気がするので、Erlang-users.jp に記事を追加してみようかな

と言う事を、病の床*1で考えたので、整理のため、ここに内容を記載します。熱のおかげでコードを書けず、本も読めずで、それくらいしかする事が無かったのです。 Erlang-users.jp 上で書きたい記事 Web サービス開発で利用すると便利な Erlang VM 上で動作す…

Ruby Enterprise Edition + Webistrano

諸事情によりシステム標準の ruby と Ruby Enterprise Edition で入れた ruby を同居させていたのですが、Webistrano は、models/deployment.rb の deploy_in_background! というメソッドの中で直接 ruby コマンドを実行しているので、システム標準の ruby …

NSURLConnection + NSOperation が 10.6(Snow Leopard) で動作しない?実は、コードの書き方が悪いだけ

OSX を Leopard から Snow Leopard にアップデートしたところ、SimpleHttpClient の SimpleHttpClientOperation というクラスが動作しなくなりました。そこで、NSURLConnection と NSOperation の利用方法を再度調べ直し、Snow Leopard でも動作するよう修正…

SimpleHttpClient に HTML のフィルタを追加しました(HTML Document に対して XPath が使えます)

SimpleHttpClient に KissXML+HTML を組み込んで HTML フィルタを作成しました。下記のように、SimpleHttpClient のオブジェクトを作成し・・・ SimpleHttpClient *client = [[SimpleHttpClient alloc] initWithDelegate:self]; HTML 用のフィルタを設定し・…

KissXML で HTML を扱えるように、KissXML+HTML を作りました

この話ですが、よくよく考えたら Objective-C にはカテゴリがあるので、Patch を作る必要はありませんでした。 Source Code と使い方は、こちら。 HTML 対応とは全く無関係ですが、こっそり、xmlParseMemory を xmlReadMemory に入れ替えてます。 ついでに、…

KissXML で HTML を無理矢理使う方法

KissXML で HTML を扱えるように、KissXML+HTML を作りました そんなに KissXML に思い入れがあるわけではないのですが、HTML でも XPath を使いたいのと、XPathQuery と KissXML を一つのアプリで併用するのも嫌だったので、少しだけ KissXML の Source を…

SimpleHttpClient に JSON と XML のフィルタを追加しました

以前作った SimpleHttpClient ですが、ダウロード後のデータを BSJSONAdditions や KissXML に引き渡し、適宜オブジェクトを作成して返すようにしました。WSSE に対応した際と同じくドメイン毎にフィルタを設定できるので、reader.livedoor.com から取得した…

iPhone アプリ開発時、JSON ライブラリは BSJSONAdditions、json-framework、TouchJSON のうち、どれを使うべきか?

使い勝手や速度を論じる以前の問題で、BSJSONAdditions のみ下記の JSON を Parse 可能という残念な状態でした。 下記 JSON は、LDR の /api/subs の結果です。 [ { "icon":"http://image.reader.livedoor.com/img/icon/default.gif", "link":"http://clip.l…

NSOperation + NSURLConnection で、はてなブックマーク API や Livedoor Reader API を叩くデモを公開

先日、作ったライブラリに WSSE 認証の機能を追加し、はてブ API を叩くテストを追加しました。 また、ついでに LDR を叩くテストも追加しました。 はてなブックマーク API テストコード処理は、runTest メソッドから始まります。 WSSE 認証の機能を利用して…

手軽に別スレッドで HTTP 通信を行う Objective-C のライブラリを作りました

iPhone アプリ開発の手始めに、NSURLConnection と NSOperation を組み合わせた Simple Http Client というモジュールを作りました。 使い方は、付属のテストコードを読んで頂けると、簡単に理解できると思います。 とても行数が少ないので、作る価値があっ…

Vim で使う Objective-C 用の辞書ファイルを作成した

objc.dict 適当なので抜けも多々ありますが、無いよりはあった方が良いので。ちなみに、この辞書ファイルは、下記の Perl Script で生成しています。 objc_dict_maker.pl コードを見て頂ければ、適当さ加減が解ります。 Any::Moose などに依存しているため、…

neocomplcache + snipMate の接着剤 snipMate_complete を試してみる

vim

neocomplcache + snipMate 環境に乗り換える為に準備中 - cooldaemonの備忘録で neocomplcache と snipMate の連携を模索していたのですが、neocomplcache の作者様(id:ShougoMatsu 氏)に neocomplcache のプラグインである id:thinca 氏作の snipMate_compl…

neocomplcache + snipMate 環境に乗り換える為に準備中

vim

徹夜作業時、あまりにも暇で前々から興味のあった neocomplcache を試してみました。 重いという噂があったので少し敬遠していたのですが、iMac 5G 環境でサクサク動いた為、一週間だけお試し期間を延長しました。 その後、いろいろ解らない所があり挫折しか…

Objective-C で作ったモデルの非同期処理をコマンドラインからテストする

iPhone アプリも可能な限り Vim で開発する OCUnit は面倒そう。NSAssert で必要十分 非同期処理のテストはイベントループで待てば良い って事で試しに作ってみました。gist: 145264 - GitHub 将来的に既存のテストフレームワークを使う事になるのかもしれな…

第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のインストールと…

libxml2 の SAX インターフェースを試してみた

Source はこちら。iPhone アプリの開発中に XML をパースしたくなったのだけれど、サンプルコードの XML Performance をコンパイルして実行してみると、libxml2 の SAX インターフェースを使った方が、NSXMLParser を使うより三倍以上早かったので、libxml2 …

vim でファイル名のパターンによって選択されたスケルトンを自動挿入する

vim

スケルトンの自動挿入 - 檜山正幸のErlang未確認情報 - はてなグループ: erlang OPTのオフィシャルアプリケーションを構成するモジュールのネーミングはほぼ習慣化している。(「ネーミング」参照。)であるなら、ファイル名が *_server.erl ならgen_server…

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

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