2010-10-22 (金)
なぜ,今日が金曜日なのか?曜日を間違っていたせいでミーティングに遅刻してしまった.
phpDocumentorのカスタマイズ面倒なので,リフレクションを使ってドキュメントを生成するツールを作る.
リフレクションのためにrequireすると副作用がある可能性があるのが問題だよな.使い捨てのネームスペースとかに閉じ込める手段があれば良いのに.まぁ,今回はそのプロジェクト専用なのでその辺の汎用性は無視する.
*PHPのpreg_*系の正規表現
以下のコードをPHPで実行するととても時間がかかります.さらに,str_repeatの数を2000くらいにすると,PREG_RECURSION_LIMIT_ERRORになりnullが返ってきてしまいます(この時は一瞬).(PHP5.2.13と5.2.9で確認)
$str = str_repeat('abcdefghijklmnopqrstuvwxy',1000); print strlen($str); $str = preg_replace('/[a-y]+(z+)/','', $str); print "preg_end\n"; print $str;
PHPのバグなのか,PCREの仕様なのか….もしかして,PCREってあんまり賢くないのかなぁ.よっぽど愚直な実装でない限り,この正規表現は線形時間で済むはずだけど….
ちなみに,Perlで同様のことをしても一瞬で正しい結果が得られます(あたりまえですが).