"kamaitachi" perl flash media server
IRCチャンネルできました。
#kamaitachi @ chat.freenode.net
kamaitachi に興味なくても RTMP のパケットが云々という話とか興味ある人は入るとおもしろいかも。
remedie & HE hackathon にいってきた
土曜にはじめてチェックアウトして翌日ハッカソンに挑むという無謀さでしたが、いやいやなかなか、おもしろかったです。
remedieはつかってみるとかなり面白いですね。対応しているURLを含んでいれば別にメディアRSSとかじゃなくても追加できるので、おもむろに自分の del.icio.us などのページを食わせてあげても、YouTubeやニコニコ動画などをブックマークしてたらそれがリストにでてくる。
気になる人のブックマークとかは突っ込んでおくだけですぐにその人がブクマったものをremedieで見られるという訳ですね。
で、ハッカソンでなにをしてたかっていうことがいいたいんですが、刺されたくないのでやめておきます。コミットログとかから察してください。
作ったもの、あとでコミっときます。
Yokohama Perl Mongersテクニカルトーク#3にいってきた。
ライブコーディングをしてきました。シンプルなwikiです。
ソースコードはこちら。
会場で書いたものに.gitignoreファイルを追加(coしたときにディレクトリがそろってないとうまく動かないので)しただけなものとなっています。
コード書くのに必死だったのであんまり解説ができなかったのですが、まず最初に Yiki.pm というところに wiki のページ編集の機能をモジュールとして作成し、それをあとから作った Yiki::Web という Catalyst アプリから使うというのがポイントでした。
単体モジュールとして wiki の機能を実装することでテストが書きやすいので安心だとか、ほかのアプリからも使えるだとかいろいろな利点が生まれます。
今回のコーディングの流れは
01_module.tに SYNOPSIS を書いてみる。(自分がどんなふうにアプリを使いたいかデザインする)- その SYNOPSIS をもとにテストをおこす
- Yiki.pmを実装
- テストを走らせ正しく動作しているか確認
- 3,4を繰り返す
- それを Yiki::Web から使用する
となっています。
Shibuya Perl Mongersテクニカルトーク#10にいってきた。
kamaitachi のデモをしてきました。
スライド:
デモ使ったサーバーサイドとクライアントサイドのソースコードはこの辺にアップしました:
動かし方は
git clone git://github.com/typester/kamaitachi.git
してきて、example/shibuya.pm で perl server.pl するとサーバーが立ち上がります。
そのあと、example/client 以下にある swf ファイルをブラウザで開けばローカルでデモが動かせます。
asソースをみてもらえばわかりますが、接続先が localhost 決めうちになっているため、それ以外のところで動かす場合は swf を作り直す必要があります。
フリーで公開されている flex sdk をつかえば一応誰でもコンパイルできます。
mxmlc chat.mxml
などとすればOK。
というか本当は swf の URL から接続先のホスト名を自動的に設定したかったのだけど、mxml内でインクルードしてるasで、Stageオブジェクトを取得する方法がわからなかったのであきらめた。もしこの方法がわかったらコードをアップグレードします。
というわけで、サーバー・クライアント両方のサンプルをやっと作れたので、これで一応誰でも試せるところまではきたかと。
使ってみて、いろいろフィードバックいただけたら幸いです。
HECon1にいってきた
カヤックサイトの裏側ではじつは HTTP::Engine が使われてるよ、っていう話をしてきました。
id:IMAKADO さんに会えた。今日は懇親会に参加しないのであんまりはなせなかったのが残念。
実は anything とか perl-completion とかいれてみたものの、あんまり使い方がわからなくて、第三期vimに移ろうかな期だったりしてた状況だったので、もう少しまじめに使ってみようかなと思ったりした。
anything はまぁつかってるけど、実際のところ設定よくわからんし、下手に設定するとめっちゃ重くなるし、よくわかっていない。
テスト
終了。
irssiからOutputzに文字数を投げる
を見て、早速インストールして使ってみたら激しくおもしろい!
irssiでもやりたくなったので、irssiで発言した文字数をOutputzに投げるプラグインを書いた。
http://github.com/typester/irssi-plugins/tree/master/outputz.pl
~/.irssi/scripts にファイルをおいて、irssi内で
/run outputz.pl
して
/set outputz_key あなたの復活の呪文
/set outputz_uri 適当なURI
すると設定完了で、あとは自動で発言数が投稿されます。
outputz_uri は URI::Template 形式で指定できるようにしました。
デフォルトは irc://{server}:{port}/{channel} です。
つかえる変数は
- server: サーバーアドレス
- port: サーバーポート番号
- channel: 発言したチャンネル名
- server_tag: irssiでのサーバーのユニークタグ
- nick: そのサーバーでのあなたのニックネーム
となっております。
こないだ作った PoCo::Client::HTTPDeferred つかってるのでそのサンプルとしてもいいとおもいます。
しかし、emacsよりirssiの方が文字数いってそうで集計を見るのが怖いです。。。
カヤック本、2冊目
2冊目が出たようです。興味がある人はぜひ。
ビジネス書ですよ。
代表のコメントはこちら:
ついでに1冊目もおいておきますね。
MochiKit的にPoCo::Client::HTTPをつかえるラッパーを書いてみた。
POE は結構好きなんだけど、使ってるにつれていろいろ不満が出てくる。
Client::HTTP もその一つで、レスポンスを受け取るコールバックに CodeRef を指定できないくていちいちステートを作らないといけないのが嫌なので、こんなのを作ってみました。
MochiKit のインタフェースを参考にしてます。
こんな感じで使う。
use POE qw/Component::Client::HTTPDeferred/;
use HTTP::Request::Common;
POE::Session->create(
inline_states => {
_start => sub {
my $ua = POE::Component::Client::HTTPDeferred->new;
my $d = $ua->request( GET 'http://unknownplace.org/memo/' );
$d->addBoth(sub {
my $res = shift;
if ($res->is_success) {
print $res->as_string;
}
else {
warn $res->status_line;
}
$ua->shutdown;
});
},
},
);
POE::Kernel->run;
js やってる人にはちょっと見慣れた感じじゃない?
これの Deferred 自体は全然機能足りてないけど、素で PoCo::C::HTTP つかうのと比べるとずいぶん楽になる。DeferredListもほしいな。
ぼーっとしてるな
- いい天気だなーってゆっくり歩いてたら遅刻しそうになってダッシュ
- キウイスムージー買いにいったらマンゴーとかナタデココとかのスムージーはあるのにキウイだけ自販機から消えている
- しょうがないので梅こんぶ茶でも飲むかとおもってシンクに行くも手が勝手に珈琲フィルターとかをセットしてしまったので珈琲つくらざるをえなくなる
- しょうがないので珈琲飲む (イマココ)

