codepad.el も書いた
昨日つくった dan-perl.el なんだけど、
404 Blog Not Found:Ajax - perlを実行するAPI
きっかけは、Codepadへの不満。PerlのVersionが5.8.0と古すぎる上、HTMLベースだと再利用がちょっと大変。というわけで別の車輪を再発明したわけです。上のサンプルを見てのとおり、perlの範囲内であればcodepadより自由な環境が楽しめます。
ということなんだけど、実際のところはなんだか codepad よりも自由度が低いような気がします。。。 use できても実際に使おうとするとエラーになるモジュールが多いし。codepad だったら perl 以外もいけるし。
というわけで codepad でよくね!ということで emacs インタフェースを作ってみました。
M-x codepad-run-buffer
とかするとカレントバッファをcodepadに投げてその実行結果を表示します。codepadでの言語はメジャーモードから自動的に判別するようになっています。
ほか、選択したリージョンを実行する codepad-run-region や プロンプトでワンライナーを入れる codepad-run などの関数があります。
言語をメジャーモードから取得するより自分で指定できるようにした方が良いのかもとか、実行したあとブラウザで結果ページを表示したほうがいいかもとか、いろいろありますがとりあえずこんなもんで。
モダンPerl入門
読了!
第1章は今風のperlのオブジェクト指向について。最近の流れ知らない人にはいいですね。
第2章はその今風な書き方でのデザインパターン。ここが個人的にはすごく参考になった。やっぱりいつもかいてるようなコードで説明されるとわかりやすい。
3,4章でDBやWAFについて。Catalystのロジック分離のところは、自分の説明が下手でなかなか伝わらないことが多いので、今度からはここを読めと勧めることにする。
5章はシステム周り。デーモンの作成とか、そんなのdaemontoolsにまかせちゃうしなーとかおもっていたらちゃんとそこも説明されていた。さすがw
ジョブキュー関係まで扱っていてやっぱりモダンだなぁ、と感じたのだけど、ジョブキューをどうして使うかというところの説明はもう少しあってもいいのかもと思った。時間のかかる処理をmod_perlやfcgi内でやるとどういうことになるのかとか。
6章はテスト。テストの考え方と基本的な書き方。Apache::Test
とかまで書いてる割には、あまり突っ込んだ書き方を説明してないところは少し残念。テスト用のライブラリとかmockの作り方くらいはあるといいのかなー。
7章で最適化の話。qr//
の話は知らなかったなー。
8章はXS! いままで筆者が話してきたことの総括みたいな感じ。ここまでまとまってる本はないと思う。すばらしい!
9章はCPANとか基礎知識の説明。おまけ的な感じ。
というわけで、全体としてとてもよくまとまっていてすばらしいです。perl書く人すべてにおすすめ。
URLベースでのACLをkamaitachiにもつけた
Wowza Media ServerでSWFVerification(っぽいこと)をする方法 - blog.katsuma.tv
それなら kamaitachi でもできるよ。ってことで使いやすいようにサービス化。
AutoConnect の代わりに、AutoConnectACL というサービスを使うと URL ベースでのアクセスコントロールをつけることができるようにしてみた。
echo サンプルの例なら、
package Service::Echo;
use Moose;
extends 'Kamaitachi::Service';
with 'Kamaitachi::Service::AutoConnectACL';
sub allow_pages {
'http://www.unknownplace.org/*',
'http://unknownplace.org/*',
}
sub allow_swfs { 'http://unknownplace.org/*' }
sub on_invoke_echo {
my ($self, $session, $req) = @_;
$req->response(@{ $req->args });
}
のような感じで、AutoConnectACL
を with
して allow_pages
と allow_swfs
を定義すればそこに書かれたURLにマッチするアクセスだけを許可することが出来る。
いちおう Flash の流儀にあわせてなんか glob マッチ方式にしてるんだけど、使いにくいので正規表現でもいけるようにしてある。
sub allow_pages { qr{^https?://(www\.)?unknownplace\.org} }
とか Regexp リファレンスつかえばおk。
allow_pages
が swf の貼り付けてあるページの URL、allow_swfs
が swf 自体の URL にマッチする感じ。
kitasando.as #2 にいってきた
土曜に FMS 勉強会という名目で行われた kitasando.as で kamaitachi を紹介してきました。
スライド:
http://svn.coderepos.org/share/docs/typester/kitasandoas-2/start.html
本家 FMS の話と、Wowza の話がおもしろかった。Wowza完成度高杉だろ。
SWFVerification とか機能自体しらなかった。どうやるんだろうなぁ。connect時swfのURLは送られてくるけど、それだけじゃ無理だし。
"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 はまぁつかってるけど、実際のところ設定よくわからんし、下手に設定するとめっちゃ重くなるし、よくわかっていない。