[結] 2005年6月 – 結城浩の日記

ワインバーグがこんなことを書いていたと記憶している。 「よい問題解決者は、大きい問題をひとつ抱えていることはない。 いつも、中くらいの問題をたくさん抱えている」

なるほど、なるほど。

一人で勝手に掲げている「名著を読む」シリーズで次はワインバーグの本を読もうと思ってるんですが、ワインバーグの本の中ではどれがいいのかな?
お勧めあったら誰か教えてください。

mojavijapan.png

Mojavi Japanオープンしました!

http://mojavi.p0t.jp

「次の案件までにMojaviっていうのを覚えとけって言われたんだけど・・・」という人にはチュートリアルやサンプルを、使いこなしてる人には拡張クラスや関連ツールのアップロード/ダウンロードや情報交換場所として使ってもらえたらなあと思います。

php_study.jpg

第一回PHP勉強会 in Tokyo行って来ました。
PHPの濃い話がたくさん聞けてとってもためになりました!

内容はたくさんあって書ききれないですが、ためになったことメモ。(順不同)

  • DI/AOP
  • 配列と連想配列は同じ
  • 配列の添え字はintかchar*、値はzval
  • Maple, Dicon
  • Ethna info(早速パクッてMojavi info作りたい)
  • CatalystはRails似
  • Apache + FastCGI不安定
  • session_id()でホストアドレスとかくっつければ複数Webサーバセッション保存でもセッションIDかぶらない
  • PHP4限定、$this経由Factoryクラス(factoryメソッドじゃなくて)
  • QFのPasswordエレメント、Hiddenアスタリスク問題対応策
  • 外人はConfirm(確認画面)作らない
  • 日本では一時期の法律問題でConfirm作る文化がある可能性(Historical reason pattern)
  • SimpleXMLはアクセスしたときオブジェクトができる
  • SimpleXMLではあらかじめネームスペースを指定してから取る(=非実用的)
  • Railsでmixin前提設計
  • PEAR XML_Serializer不可逆シリアライズ
  • GooはPHPベースが多い
  • Popoon = PHP版Apache Cocoon
  • Maple, Dicon, QF, DBDO, FormBuilder
  • DreamWeaverDWTSmartyDWTプラグイン

おれの方ではMojaviでのパターンについて話させていただきました。

MSICC.pdf
msicc-1.4.zip

ある程度の規模で開発標準を決める場合、利便性よりも「共通の決まりを使用すること」や「繰り返し使うこと」の方が重要になってきてしまいます。
Mojaviでの開発標準やコーディング規約関連が落ち着いたらRailsやSeesaa、MapleやEthnaなど試したいです。

フォワードは

$controller->forward("modName", "actName");

で、いけるのにリダイレクトは面倒。
勝手な拡張は厭なので、ヘルパクラスを作ってみました。

<?php
class URIUtil {
    function redirect($modName, $actName, $opt = null) {
        $params = array(MODULE_ACCESSOR => $modName, ACTION_ACCESSOR => $actName);
        if (is_array($opt)) $params = array_merge($params, $opt);
        Controller::redirect(Controller::genURL($params));
    }
}
?>

使うほうはこんな感じで

URIUtil::redirect("modName", "actName");

URL_FORMATに依存しなくて気持ちいい!

PEAR好き野郎としてはMojaviのAPIリファレンスもPEARデザインで見たい。

作りました。

Mojavi 2.0.0 API Reference Manual

やば、見やす!

[結] 2005年6月 – 結城浩の日記

RSSフィードでさくさく文章を読んでいると、 ときどき「タイトルしかないサイト」がある。 そういうサイトはだんだん読まなくなっていく傾向にある。 逆に、RSSフィードで読んでいて(つまりそのサイトのデザインとは無関係にコンテンツだけ読んでいて)「面白いなあ」と感じるサイトは、 よく記憶しているように思う。 というわけで、みなさんRSSフィードにたくさん文章を入れましょう。

RSSでDescriptonが短かったりすると段々読まなくなっていくという話。

このサイトのもちょびっとしかDescriptionが無いことに気づいたので最新のMTのテンプレをもらって入れ替えました。

というか、Planet PHP Japanで全文出ないと悲しいからです!

Mojaviのロギングやエラーハンドリングを見ていて、普通のPHPでもエラーハンドリングについてよく解ってなかったことに気づきました。

PHP自体の機能を使ってシンプルなエラー処理の正解(宣言してしまえば反対意見が出るまで正解と言い張れる)を作ってみました。

seh-1.0.zip

<?php
include_once("getContents.php");

// 行数の取得
function getNumLines() {
    $contents = getContents();
    if ($contents === false) {
        trigger_error("getNumLines(): 行数の取得に失敗しました", E_USER_WARNING);
        return false;
    }
    return count($contents);
}
?>

seh.png

  • エラーメッセージはその関数(メソッド)を実行した奴から見た内容にする。
  • pg_connectの失敗だってE_WARNINGなのでJavaの(Exceptionじゃなく)Errorのようにスクリプトを実行し続けることができないような致命的なものだけE_USER_ERRORレベルのエラーを発生させる。(大体はE_USER_WARNING)
  • どのレベルからエラーを出すかは、error_reportingディレクティブで設定する。
  • ログはerror_logディレクティブで設定する。

これであってるのかどうか気になる!
すごい基本なのにわからないこと多過ぎです。

Mojaviのアレについてパッチを作ってみました。

ErrorLogger.class.php-0.1.patch.gz

もう一個のアレについても作ってみました。

mojavi-all-classes.php-0.1.patch.gz

独自に改造してくのは厭なので

バグじゃないことがわかる OR パッチが本家に採用される

ってとこまで行かないと気持ち悪いです。
(というか仕事でベースとして使う人にとって問題ある)

ref: 正常ってことは無いだろう
ref: Mojaviロギングに疑問

icc-12.png

謎のモチベーション!MSICCを更新しました。

msicc-1.2.zip

1.1からの変更点:

  • テキストエリアを追加。
  • 確認でフォームは一個。(via yoshuki)
  • XSS対策はhtmlspec~じゃなくescapeに変更。
  • 細かいとこを色々修正。

こういうの、おれが生まれた時に教えといてくれよぉ・・・。

ref: MSICC1.1

type_t.jpg

A4ノートからVAIO Type-Tに乗り換えてしまいました。
だいたいA4だとミニちゃぶ台にはでか過ぎるんだよ!

朝起きた時はパソコンなんぞ買う気はまったく無かったのに、実物を見た瞬間、

「2台買ったら安くしてくれないですか?」

などと店員に持ちかけるおれ。