D-7 <altijd in beweging>

Day to day life of a Perl/Go/C/C++/whatever hacker. May include anything from tech, food, and family.

2007年05月



http://d.hatena.ne.jp/nitsuji/20070511



修正しますた!ところでこういうものもこっそりセットアップしてます・・・



    このエントリーをはてなブックマークに追加 mixiチェック


ランチ後渋谷の町を歩いていたら、阿藤快が!阿藤快だ!阿藤快だ!・・・なんで俺はこんなに盛り上がってるんだろう・・・


でも彼の出てる時の「ぶらり途中下車の旅」は大好きです。



    このエントリーをはてなブックマークに追加 mixiチェック


ぐるなびWebサービス、さっそくモジュール化しました。先ほどうp。こんな事できちゃいます:



use strict;
use WebService::Gnavi;
use YAML;

my $gnavi = WebService::Gnavi->new(access_key => ...);
my $res = $gnavi->search({
category_l => 'CTG200', # 洋食
pref => 'PREF13', # 東京
});
print Dump $res->list;


これで東京の洋食が検索できます。検索結果に付随するカテゴリーのパースが面倒くさくてとりあえず後回しにしちゃった。誰かやってくれるなら大歓迎



    このエントリーをはてなブックマークに追加 mixiチェック


「有限会社」って入れると文字化けする。



    このエントリーをはてなブックマークに追加 mixiチェック



http://d.hatena.ne.jp/tokuhirom/20070509/1178672405



AddOtherFdsじゃなくても、



Danga::Socket->AddOtherFds(
fileno($ssock) => sub {
....
}
);


Danga::Socket::Callbackをここでも使い回すという手もあります。



Danga::Socket::Callback->new(
handle => $ssock,
on_read_ready => sub {
...
}
);


まぁどっちでもいいんですが、なんか細かい差とかありそうで怖いなぁw (そこまでちゃんとDanga::Socketを使いこなしてません) 



    このエントリーをはてなブックマークに追加 mixiチェック


"MyApp"というアプリケーションを作りたい場合、Catalystのドキュメントにもそう書いてあるから皆ついついこう始める:



catalyst.pl MyApp


libディレクトリ内で作成されるモジュール類はこんな感じ:



lib/MyApp.pm
lib/MyApp/Controller/Root.pm
lib/MyApp/Model
lib/MyApp/View


でもいくらWebアプリといってもバッチが走ったり、他のシステムとWeb以外のところで結合したりしてほぼ100% Webだけでは完結しない。そういう時にlib/MyApp直下にWeb用のモジュールを入れてしまうと段々おかしくなってきます。


例えばWebから入ってきたなんらかしらのデータをvalidateするコードを入れたいとして、lib/MyApp/Validate.pmに入れるとこれはWeb用なのかそれ以外用なのかがわからない。かといって例えばDBIx::Class経由でデータベースを使うプロジェクトの場合、Webコンポーネント以外のスクリプト等も当然のごとく同じデータベースコードを使うのでそういうのは共通の場所に置いておきたい。


こういう事を踏まえて、Catalystのコンポーネントは最初からMyApp::Webに格納するのが後々便利。



catalyst.pl MyApp::Web


こうするとMyApp::Webの名前空間以下にCatalystコンポーネントが作られる



lib/MyApp/Web.pm
lib/MyApp/Web/Controller/Root.pm
lib/MyApp/Web/Model
lib/MyApp/Web/View


これで共通コンポーネントであるBIx::Classスキーマを足す場合は



lib/MyApp/Schema.pm


に置けるし、先ほどのWeb専用のValidate.pmを置くのであれば



lib/MyApp/Web/Validate.pm


とできる。さらに、CLIインターフェースがあるようなアプリの場合は



lib/MyApp/CLI/Validate.pm


ともできるので便利便利。


# と、偉そうに書いているが、某プロジェクトでは今朝ようやくこう変えた。



    このエントリーをはてなブックマークに追加 mixiチェック


また勢いだけで・・・



    このエントリーをはてなブックマークに追加 mixiチェック


手が痛い。酷使してるからか。昨日今日と微妙に握力がないので今日は早めに8時くらいには帰宅。帰りにスーパーに寄ったら豚ロースが半額ですよ、奥さん。嬉しくてついついいっぱい買って、味噌漬けにしておいた。ニンニクと鷹の爪を一杯いれておいたぜ。むふふ。



    このエントリーをはてなブックマークに追加 mixiチェック


本日5回目のアップロード。Danga::Socket:Callbackを使ってDanga::Socketエンジンにも非同期DNSを足したのでそこまでをリリース。



    このエントリーをはてなブックマークに追加 mixiチェック


勢いで書いてCPANうp。Gunghoで使う予定。



    このエントリーをはてなブックマークに追加 mixiチェック


って事でrev86で非同期DNSを足した。やっぱり他のエンジンを二つばかり作ってた今の時点でやってよかった。大分簡単かつキレイにできたと思う。


追記:rev87でIO::Asyncエンジンも非同期DNS追加。Danga::Socketは面倒くさいので後回し。Danga::Socket::Callback作ろうかなぁ・・・



    このエントリーをはてなブックマークに追加 mixiチェック


はてブで言及されてたので。非同期DNSは(特にPOEに於いては)すでに何回か書いているので実はやり方は簡単なんだけど、なんで今までやってなかったかというと、コードがこんがらがるから。ステートダイアグラムにすると一回ループが入る事が分かるとおもう:



1. Send Request
2. Check DNS
2.1 If DNS resolution required, go to 3
2.2 else, go to 4
3. Resolve DNS
3.1 if DNS resolved, go back to 1
3.2 if DNS resolution failed, go to error
4. Send request through socket...
....


で、Gunghoはまず仕組みをキレイに作りたかったのでこの辺りはとりあえずpuntしておいたわけです。でもそろそろ作ってもいいかなぁ。



    このエントリーをはてなブックマークに追加 mixiチェック


しじみ汁が飲みたくてチャリで魚力まで行ったのに、10日まで休みだとー。しょうがないのでとってかえして八角へ。今日は縞ホッケ。魚はうまいのは当たり前だが、ここは副菜がとても充実していてよい。魚力ももちろんうまいんだけど、あそこの副菜はいつも一緒だからな。まぁそういうところで使い分けてます。両店とも大好きだ。



    このエントリーをはてなブックマークに追加 mixiチェック


Gungho 0.06でIO::Asyncベースのエンジンを足したみました。Danga::Socketより幾分かインターフェースはましかなぁ・・・でもところどころまだ疑問点があるモジュールかも。とりあえず動くよ!


一点ちょっと注意:



cpan[1]> install IO::Async


ではインストールされない。パッケージにAsync.podしか存在しないのでCPANにインデックスされてないから。あとchildmanager-spawn.tがこけてた。とりあえず強制インストールしたけど。



    このエントリーをはてなブックマークに追加 mixiチェック


Wikiをちょっと書いた。



http://code.google.com/p/gungho-crawler/wiki/Index



あとはHandlerでシンプルなFileWriter::Simpleってのを書いた。これはほとんどデモ用。



    このエントリーをはてなブックマークに追加 mixiチェック


z2h()とh2z()を実装した。



    このエントリーをはてなブックマークに追加 mixiチェック



http://www.kayuda.com/



JSを今度ちゃんと見てみよう。



    このエントリーをはてなブックマークに追加 mixiチェック


「くりぃむナントカ」を見てたらナントカ・ホーテに伊東美咲と今度「めぞん一刻」で五代君を演じる中林大樹が出演してた。


この人・・・物知らないなぁ・・・めぞん一刻、大丈夫なのかなぁ・・・



    このエントリーをはてなブックマークに追加 mixiチェック



daisuke@beefcake Gungho$ svk diff -r 71
Unknown target: gungho.
daisuke@beefcake Gungho$


あ、あれ・・・。svnだと大丈夫。



    このエントリーをはてなブックマークに追加 mixiチェック



http://search.cpan.org/src/HMBRAND/Text-CSV_XS-0.25/ChangeLog



6年ぶりのリリースw UNAUTHORIZED RELEASEって書いてあるけど、これは大丈夫だな。



    このエントリーをはてなブックマークに追加 mixiチェック

このページのトップヘ