ブタさんとこのサンプルにあったようにMojavi + Smartyでcompileディレクトリを一個にしてると別モジュールの同名テンプレートを読み込んだ時にコンパイルされたファイル名がカブって動かない。(index.htmlとか)
Smartyのcompile_idにモジュール名を設定するさり気無い気配りを。

SmartyFilter.class.php:

<?php
require_once(RENDERER_DIR . "SmartyRenderer.class.php");

class SmartyFilter extends Filter {
    function execute (&$filterChain, &$controller, &$request, &$user) {
        // see if renderer is already loaded
        $loaded =& $request->getAttribute("SmartyRenderer");

        if ($loaded == NULL) {
            // smarty init params
            $params =  array(
                "cache_dir"      => SMARTY_CACHE_DIR,
                "caching"        => SMARTY_CACHING,
                "force_compile"  => SMARTY_FORCE_COMPILE,
                "compile_dir"    => SMARTY_COMPILE_DIR,
                "config_dir"     => $controller->getModuleDir()."config/",
                "app_name"       => $controller->getCurrentModule(),
                "debug_tpl"      => SMARTY_DEBUG_TPL,
                "debugging_ctrl" => SMARTY_DEBUGGING_CTRL,
                "debugging"      => SMARTY_DEBUGGING,
                <strong>"compile_id"     =&gt; $controller-&gt;currentModule</strong>
            );

            $renderer =& new SmartyRenderer($controller, $request, $user);
            $smarty = & $renderer-&gt;getEngine();

            foreach ( $params AS $key =&gt; $value ) {
                $smarty-&gt;$key = $value;
            }

            // set the renderer as a request attribute so we can retrieve it
            $request-&gt;setAttributeByRef("SmartyRenderer", $renderer);

            // execute chain
            $filterChain-&gt;execute($controller, $request, $user);

            // remove renderer
            $request-&gt;removeAttribute("SmartyRenderer");

        } else {
            $filterChain-&gt;execute($controller, $request, $user);
        }
    }
}
?&gt;

ref: Mojavi HTML_QuickForm Smarty + DB_DataObjectサンプル

PEAR :: Package :: File :: 1.2.0

Changelog:

* Fixed package.xml for PEAR 1.4 (dufuz)
added FILE_SORT_RANDOM mode (mike)
added File_Util::switchExt() (mike)

ファイルやディレクトリの読み書きなどが簡単にできるFileの1.2.0がリリース。

ChangelogにあるFILE_SORT_RANDOM modeを試してみました。

&lt;?php
require_once("File/Util.php");
foreach (File_Util::listDir("foo", FILE_LIST_FILES | FILE_LIST_DIRS, <strong>FILE_SORT_RANDOM</strong>) as $file) {
    echo $file-&gt;name."\n";
}
?&gt;

結果:

&gt;php FileListing.php
d.txt
b.txt
a.txt
c.txt

なるほど、ちょっとだけ嬉しい。

よくきたblog

xxxio : $_SESSION[‘foo’]の、fooの所に使える文字って、きまりありましたっけ?
xxxio : うーん。””|”“が入ってると上手く動かない気がする
xxxio : php5.0.3 / FC2 なんですけど、そもそも /tmp/sess_XXXXX の中って、
xxxio : セパレータとして ””|”” を使ってるんですよ

セッションの話。
そうそう、セパレータに””|”“を使ってるんですよね!

セッション変数名|中身をserializeしたやつ;セッション変数名|中身をserializeしたやつ;

ってなってるんですよね。これ簡単なパースのやり方無いかな。
このクラスができたら楽しいけどsafe modeじゃない共有レンタルサーバとかすっごい危険。

ref: PHPのセッション自力復元

PEAR :: PEPr :: Details :: Auth_TypeKey

The Auth_TypeKey package provides verification method using TypeKey Authentication. TypeKey is one of single sign-in service for weblog comments and others provided by Six Apart.

Blogネ申平田さんが以前公開されたPHPでTypeKeyを扱うクラスAuth-TypeKeyがPEARのProposaleに入っています。
認証で何気にTypeKey使ってたらおしゃれかもしれません。

PEAR好き野郎なのでPEAR Watchなどというカテゴリを作って見ました。

既存の便利クラスの紹介やバージョンアップ情報、リリース前のパッケージ、メンテナのなり方(おれが知りたいのでこれから勉強)などを書いていく予定です。

[を] 「ピーターの法則」のまとめ資料

平林氏による「ピーターの法則」のまとめ資料。スライド8枚。PDFもあり。 素晴らしい!

こういう要点シリーズ沢山見たい。
成果を出すと昇進してって最終的に成果が出せないポジション(無能レベル)で安定するってことかな?
何が利益を生む作業なのか(=待遇)がわからない。自分のSIerで考えると管理の方がホントにお金を生むのかどうか。

ethna_seminer.jpg

オープンソースカンファレンス2005行って来ました。

行ったのはPHPフレームワーク -Ethna-と懇親会。 Ethna(えすな)ではマシントラブルでデモが行えずスライドのみになりましたが、フレームワーク全般の話などためになりました。
Mapleのkunitさんもこられていて、DIContainer+AOPへの動きなど超気になったんですが、「おれみたいなもんが・・・」と話かけられませんでした。

懇親会でためになったのはPHP以外の人がPHPをどう思ってるかについて。

・ダサい
・Apacheモジュールで動く手っ取り早いスクリプト言語が他に無いから広まってるだけ
・PHP5の方向性はがっかり
・Zendの都合に左右されてる
・仕事の匂いがする
・Javaの匂いがする

などなど。自分自身でも”“なんでPHPが好きなのか”“きっぱり説明できないので情けない感じ・・・。
某出版社の方も「PHPの本は提案しずらい」とおっしゃっていました。PHP5の本が全然売れてないとか。そんな状況でPEAR本書きたいとか言っときました。(PEAR好き)

japan.linux.com | 新たな詐欺の手口、ファーミング

そのコンピュータ上のオペレーティング・システムが使うホストファイル(hostsファイルなど)を探し出し、そこに銀行やクレジットカード会社の正規サイトを模して作られた偽装WebサイトのIPアドレスを設定する。

新手の詐欺、ファーミング。
hostsにフィッシングサイトのIP書いちゃうのかよ!単純ながらこれは怖い・・・。

プログラミング言語C ANSI規格準拠
B.W. カーニハン D.M. リッチー 石田 晴久
共立出版 (1989/06)
売り上げランキング: 2,111
通常24時間以内に発送

色んな本を読む前に抑えておかなくちゃいけないと思って今頃K&R本を読みました。

プログラム上の定石・慣用句がさり気無く身に付いてくるようで良いです。特にUNIXのシステムコールや標準関数について基本的な事項を説明してくれていて、ためになると同時に面白かった。

オープンソースカンファレンス2005、明日のに行きます。
申し込んだのはPHPフレームワーク Ethna懇親会。懇親会も新宿と近くて嬉しい。