PHPのStrict Sessionパッチ
3月 28th, 2012のんびりしていた訳ではありませんが、PHP 5.4.1のブランチが作られたので慌ててStrict Sessionパッチを改訂しました。
master
https://gist.github.com/1379668
5.4
https://gist.github.com/2224196
5.3
https://gist.github.com/2224360
以前、Gistに入れていたパッチとの違いは、
- PSモジュール(セッションセーブハンドラ)のAPIを変更しないように修正
(これにより使っているハンドラが対策済みかどうかは見て分かるようには出来なくなりました。その代りにmemcacheなどのサードパーティのセーブハンドラのコンパイル済みバイナリとの互換性を維持しています。) - セッションIDのコリージョン(衝突)を検出
(三回リトライしてもコリージョンする場合はエラー。通常、三回もコリージョンすることはまずあり得ません。)
となります。
PSモジュールを書く方(ユーザセーブハンドラ含む)はセッションをOPENする場合にセッションIDが初期化済みか、チェックする必要があります。
と、ここまで書いてパッチに多少問題がある事に気が付きました。自動生成する場合はコリージョンを検出していますが、session_regenerate_id()で生成する場合はコリージョンをチェックしていません。session_regenerate_id()を呼んだ時もチェックしないと片手落ちなので近いうちに修正します。
パッチを書いていてsession_write_close()してsession_start()をした場合、おかしくなることに気が付きました。困っている人が居るか、バグDBを検索するとやはり数人からバグレポートされていました。この件は別途に対応する事にします。
パッチを使ってみてくださる方、大募集です。ZTS、Non-ZTSの両方でUNITテストは実行していますが、Webサーバでテストしていません。動いたら、Twiterなどで良いので教えてください。よろしくお願いします。
このパッチについては、こちらをご覧ください。これは私が書いているのでおかしな英語があった場合、教えて頂けると助かります。
「PHP徹底構築」を頂きました
3月 25th, 2012廣川類さんが執筆された「PHP徹底構築」を頂きました。3/29日発売らしくアマゾンでも予約受付中の出来たてホヤホヤの本です。書籍イメージも無かったので自分の携帯で撮った写真を載せておきます。
最新版のPHP 5.4にも対応しています。先程届いたばかりなので読むのはこれからですが、内容を簡単に紹介します。
OSC愛媛2012の資料 - PHP5.4とはどんなPHPなのか?
3月 25th, 2012OSC愛媛2012の「PHP5.4とはどんなPHPなのか?」の資料を公開します。ポイントは以下の通り。
- PHP 5.4は基本的にはベターPHP5.3
- 互換性問題もあるが、一般に致命的な問題はない
- 全般にPHP5.4は速い
- 移行を考えている方は早い方が良い(使える期間が長くなる)
- ディストリビューションのPHPを使う、という選択もある(RHEL6 PHP5.3, Ubuntu LTS PHP5.4?)
プラットフォームの選択には様々な事情がありますが、Traitsはコードを効率良く再利用するには便利な機能です。さっと移行してしまうのも良いでしょう。
ところで、Traitsの例としてアクセサの実装例を紹介しています。
https://gist.github.com/1379592
しかし、次のPHPではC#風のアクセサ文法がサポートされる可能性があります。
https://wiki.php.net/rfc/propertygetsetsyntax
こちらの方が色々便利です。利用する場合は、このような文法が実装される可能性があることを理解した上で使うと良いと思います。
PHP: comma vs. dot #2
3月 10th, 2012少し前にPHPのechoはカンマとドット、どちらの方が速い?というエントリを書きました。
http://blog.ohgaki.net/echo-comma-vs-dot
この時は長めの細切れな文字列を連結しています。カンマの方が2割ほど速い結果でした。古いPHPでは短く単純な文字列の場合もで速かった、と記憶していました。手元のPHP5.3の性能が気になったのでabで簡単に試してみました。
Git Hubの脆弱性とMass Asssignment
3月 6th, 2012Git HubがMass Assignment脆弱性に脆弱で他のレポジトリが見れる状態だったらしい。問題は既に修正されています。
この脆弱性はRailsに限った事ではないし、古くからPHPを使っているユーザにとってはある意味懐かしい脆弱性でもあると思ったのでエントリを書いてみました。
PHP 5.4 リリース!!
3月 2nd, 2012リンク: http://www.php.net/archive/2012.php#id2012-03-01-1
PHP 5.4がリリースされました。
詳細はソースに添付されているUPGRADINGとNEWS、マニュアルのマイグレーションガイドから参照できます。
echo:comma vs dot
2月 21st, 2012昨日、echo 'abc','xyz' (カンマ) と echo 'abc'.'xyz' (ドット) とどちらが速い?と言う話になったので簡単な実験をしてみました。
PHPのソースコードを見るとどちらも有利な点と不利な点があります。随分前に試した時も一般にカンマの方が速いと思える結果でしたがPHP5.3ではどうなのか試してみました。
Apple KeyboardをLinuxとWindowsで使用する
2月 8th, 2012HHKが壊れてしばらく普通のJIS配列キーボードを使っていたのですが、我慢ができなくなりLinux PC用にJIS配列Apple KeyboardのUSB版(フルサイズのApple Keyboard)を購入しました。
Macbookと同じ配列のワイヤレスの場合、長時間の入力には向かない、とAppleサイトの製品レビューにはあったのでUSB版を購入しました。




