2009-01-01から1年間の記事一覧

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 が落ちると接続数がリセットされてしまいます。(その…

daemontools で dt-run を利用した監視サービスの追加方法

Google で検索しても、あまり解説を見かけなかったので、さらっとメモを残します。 前提条件 このあたりを、RPM でインストール済みであると仮定。(daemontools、functions、runlevelconf、dt-run がインストール済みで、svscan が /service 配下を監視中と…

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

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

Key-Value Store (Strage) 勉強会にお邪魔してきました

kvs

id:Voluntas さんのコネで潜り込んできました。当初の目当ては、id:teahut さんによる Kai の発表と、首藤さんによる Overlay Weaver の発表だったのですが、面白い発表が目白押しで非常に濃い 5 時間を過ごす事ができました。 感想 素晴らしいまとめが ここ…

quickfix で Template::Toolkit によるテンプレートファイルのシンタックスチェックを行う

flymakeでTemplate::Toolkitによるテンプレートファイルのシンタックスチェックを行う - antipop を見て良いなーと思ったので vim でやってみました。ありがたやー。 Source は、gist: 66796 - GitHub にあります。

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…