2011年 07月 26日

昨日の写真と全く同じ構図だ。ピントあわせてる位置も一緒ですごいクセがついててよくない気がする。花の写真結構頭使わないで撮ってしまって良くないなー……

おなかいたい

環境変数で設定を変える的なモジュール Config::ENV

なんかもっと簡単なのがあればいいなー と思ったのでつくりました。

package MyConfig;

use Config::ENV 'FOO_ENV';

common +{
	name => 'foobar',
};

config development => +{
	dsn_user => 'dbi:mysql:dbname=user;host=localhost',
};

config test => +{
	dsn_user => 'dbi:mysql:dbname=user;host=localhost',
};

config production => +{
	dsn_user => 'dbi:mysql:dbname=user;host=127.0.0.254',
};

config production_bot => +{
	parent('production'),
	bot => 1,
};

#

use MyConfig;

MyConfig->param('dsn_user');

みたいに書くと、$ENV{FOO_ENV} の値によって別の値をつかうようにするってだけです。

設定ファイルを別にわけたいみたいなのは適当に do したらいいだけだし、切替える機能だけほしいのです。

gerry++

2011年 07月 25日

gerry++

AnyEvent::setTimeout

AE::timer のインターフェイスが覚えられないなーと思うので、JS の setTimeout に似たものを書きました。

use AnyEvent::setTimeout;

setTimeout(sub {
  warn "1sec!";
}, 1000);

とか書けます。ちょっと細工をしていて、ファイルの最後に AnyEvent->condvar->recv とかおまじないを書かなくても、終了時に全てのタイマーの終了を待ちます (node.js 風にしたいけどできないのか的なことを言ってたら id:motemen:detail 先生ができそうなことを言ってくれたのでやってみた感じです)

ただ、このモジュールの管理下にあるタイマーしか終了時に待てないのがいまいち感あります……

とりあえず setTimeout さえあれば JSDeferred をそのまんま移植できるなーと思った感じなんですが、それやって意味があるのか謎なのでやめました。

まぁこういうの書いてるうちに AE::timer のインターフェイスとか覚えちゃうんですけど……

2011年 07月 23日