2008-07-05 (土)
■ PEAR と Zend Framework のコーディング規約の違い
この2つのコーディング規約で、微妙に違う箇所があるのに気付いたのでメモ。 (違いは他にもあるかもしれません。)
switch 文
字下げの位置が違う。 PEAR は Zend Framework 風のインデントも許しているようだが、 Zend Framework の方は厳密に定めている。
- PEAR の場合
<?php
switch (condition) {
case 1:
action1;
break;
case 2:
action2;
break;
default:
defaultaction;
break;
}
?>
- Zend Framework の場合
switch ($numPeople) {
case 1:
break;
case 2:
break;
default:
break;
}
PHP コードタグ
終了タグの扱いが違う。
- PEAR の場合
PHP コードを区分するためには、短縮型の <? ?> ではなく、かならず <?php ?> を使用してください。
- Zend Framework の場合
PHP コードのみからなるファイルでは、終了タグ ("?>") は決して含めてはいけません
2008-07-13 (日)
■ Google Chart API で漢字を含む日本語が通るようになった
論より証拠。
http://chart.apis.google.com/chart?cht=p3&chd=t:40,20,30&chl=%E3%81%B2%E3%82%89%E3%81%8C%E3%81%AA%7C%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A%7C%E6%BC%A2%E5%AD%97&chs=600x200&chtt=%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%81%AE%E3%83%86%E3%82%B9%E3%83%88&chco=ff7777,77ff77,7777ff&chf=bg,s,efefef&chts=000000,16
こういう URL にアクセスすると、
こう表示されました。 今までは漢字が表示できなかったはずですが、いつのまにか対応したようです。 普通に UTF-8 の文字を URL エンコードすればいいみたいです。
一応、Google Chart API の日本語と英語のページにリンクを張っておきます。
■ IE で SVG ファイルの直接表示を可能にする sie.php 0.3 を公開
JavaScript ライブラリの SIE と組み合わせることで、 Internet Explorer で SVG ファイルを直接表示できるようになります。
sie.php 0.2 からの変更点:
- ファイル名に空白文字が含まれていると表示できなかったのを修正
- URL に ? が含まれる場合は sie.php を経由しないように変更
- "This is an image converted by SIE." というメッセージを表示するようにした
- ダウンロード用のリンクを、画像と一緒に表示するようにした
なお、sie.php の解説ページを新たに作りました。 ファイルは以下のリンク先のページからダウンロードして下さい。
2008-07-15 (火)
■ ヌルバイト攻撃への対策
以下の記事に対するツッコミ。
で、これをPHPで対処するには下記のコードを使えとある。もちろん他のどのサイトをみてもそうしろと書いてある。
// 終端文字列を空に $v = str_replace( "\0", '', $v );ただし、このコード、自分が試したPHP4系ではまったくもってスルーされてしまい、例えば値が空の場合を期待するようなコード、
If($v == '' ){ echo 'hello'; }なんてのは格好の餌食。なぜなら\0が入ってるのでマッチしないから。。。正しく動くコードは下記の通り。
// 終端文字列を空に $v = str_replace( '\0', '', $v );なんてことはなく、"(ダブルクォーテーション)を'(シングルクォーテーション)に変えるだけなのだけど、PHP5系だと逆の動作になるところがまたややこしい。。。ちなみに、微妙だけどちゃんと空にしているかは下記のコマンドで検証できる。
wget --post-data="v=%00" http://foo.com/bar.php※ 08/04/28追記 php-5.2.6では'\0'や"\\0"じゃないとマッチしないことを確認。。。
そんなばかな、と思ったので確認してみる。
<?php
$str = "abc\0def";
echo bin2hex($str) . "\n";
echo bin2hex(str_replace("\0", '', $str)) . "\n";
これを実行すると、私のところでは、
61626300646566 616263646566
と表示されて、ちゃんと "\0" で NULL 文字を表せるんですけどねぇ。 (Debian の PHP 4.3.10 と PHP 5.2.6 で確認)
2008-07-20 (日)
■ Zend Framework 用コンポーネント Revulo_View_Phtmlc 0.5 を公開
Revulo_View_Phtmlc は、 Zend Framework のビュースクリプトの記述を楽にするコンポーネントです。
- $this->foo でなく $foo と書くことで変数の値を参照できます
- <?= ... ?> で囲まれた範囲は、自動的に HTML エスケープされます
- 複数のビュースクリプトを1つにまとめて高速化する機能もあります
バージョン 0.4 からの変更点:
- キャッシュファイルを保存するディレクトリを compilePath/:module に変更
- <?=...?> の中に改行が含まれている場合に対応していなかったのを修正
- ビュースクリプトを trim する処理を削除
compilePath を設定して複数のモジュールを用いると、 キャッシュのファイル名がバッティングしていたので、 モジュールごとに別々のディレクトリに保存されるようにしました。
2008-07-22 (火)
■ Zend Framework 1.6 RC1 がリリース
Zend Framework の Release Candidate 版が公開されました。 ZF 1.5.2 と比較して、以下の機能が追加されています。
- Dojo Integration
- JSON-RPC
- Dojo Data packing
- Dojo View Helper
- Dijit integration with Zend_Form & Zend_View
- Dojo Library Distribution
- SOAP
- SOAP Server
- SOAP Client
- Autodiscovery
- WSDL access
- WSDL Generation
- Preview of Tooling Project in Laborator (see /laboratory folder)
- Command Line Interface
- Project Asset Management
- Unit Testing Harness for Controllers
- Lucene 2.3 Index File Format Support
- Zend_Session save handler for Database Tables
- Paginator Component
- Text/Figlet Support
- ReCaptcha Service
- Zend_Config_Xml Attribute Support
- Character Set Option for DB Adapters
- Zend File Transfer Component
- New Media View Helpers (Flash, Quicktime, Object, and Page)
- Support in Zend_Translate for INI File Format
また、Issue Tracker を見てみると、(改良も含めて) 148 個の修正がなされています。
ただし、
のように、更新履歴には載っていないのに実は変更されている部分もあるので、 上の Release Notes はあくまでも目安と思った方がいいです。
2008-07-28 (月)
■ PukiWiki 用プラグイン treeview, ajaxtree 1.2 を公開
treeview.inc.php, ajaxtree.inc.php は、 PukiWiki にエクスプローラ風のツリーメニューを追加するプラグインです。 バージョン 1.1 (1, 2) からの変更点は以下の通りです。
- 子孫ページの数をカウントして表示する機能を追加
- PageReading の機能を利用してページを並び替える機能を追加 (BBS: 260)
- 指定したページを常に展開して表示する機能を追加 (BBS: 150)
- GS2 スキンとの組み合わせでも動くように対策 (BBS: 96)
- スタイルシートに overflow: hidden; の設定を追加 (Blog: 2008-02-08)
- マーカーをダブルクリックした時の動作を改善
- アイコンの大きさを 16×16 ドットに変更
- 不要な flock() を削除
- ライセンスについて明記
さらに、AjaxTree プラグインは以下の点も変更しています。
- 文字化け防止用の ajaxtree.php を同梱 (BBS: 239)
- JavaScript のコードがメモリリークを起こしていたのを修正 (Blog: 2008-06-15, Blog: 2008-06-20)
ダウンロードは以下のページからお願いします。
2008-07-30 (水)
■ Zend Framework 1.5.3 がリリース
Zend Framework 1.5 系列の最新版がリリースされました。 60 箇所の修正・変更がされているようです。
ところで、こちらは ZF 1.6 系列の話ですが、
ストリームラッパの機能って、まだデフォルトで有効に設定されていたのか…。 この機能、オプションとしてはあると便利ですが、デフォルトで有効にしちゃあダメでしょう。
■ Zend Framework 用 Piece_Flow, Piece_Right コンポーネント Ver.0.9 を公開
Piece Framework のバリデータや継続サーバの機能を、 Zend Framework から利用できるようにするコンポーネントです。
バージョン 0.8 からの変更点:
- Revulo_Controller_Dispatcher_Flow (Piece_Flow を用いた Dispatcher)
- Piece_Flow 1.16.0, Stagehand_FSM 1.10.0 でエラーハンドリングが変更されたのに対応
- Revulo_Validate_Right (Piece_Right を用いた Validator & Filter)
- Piece_Right 1.10.0 でエラーハンドリングが変更されたのに対応
今までのコードのままだと、disableCallback() メソッドが機能しなかったので、対応させました。
PEAR_ErrorStack::staticPushCallback($callback);
のようにしていたのを、
$errorStack = PEAR_ErrorStack::singleton('Piece_Right');
$errorStack->pushCallback($callback);
のように変更しただけです。 PEAR_ErrorStack の使い方をあまり理解できていないのですが、多分これで良いのではないかと思います。
