Home

日記
定数で指定したクラス名でnewできない (21:50)Edit

define('DEFINED_CLASS_NAME', 'FooClass');
$foo = new DEFINED_CLASS_NAME;

とかしても、FooClassが生成されないんでおかしいなーと思ったら、上記の文脈ではDEFINED_CLASS_NAMEが定数なのかクラス名なのかが判断つかないんだね。というか、この文脈ではクラス名であるとして評価されるんだね。

で、PHPでは未定義の定数は、その定数名の文字列として評価されるから、DEFINED_CLASS_NAMEというクラスを探しにいって、見つからないから、未定義のクラスを生成しようとしたエラーが出る、と。

回避策としては、

define('DEFINED_CLASS_NAME', 'FooClass');
$className = DEFINED_CLASS_NAME;
$foo = new $className;

とかするのが無難かな。

Published At2005-06-16 00:00Updated At2005-06-16 00:00

日記
あほらしいレースでした (05:39)Edit

ミシュラン勢の判断は適切だったとは思うけど。

Published At2005-06-20 00:00Updated At2005-06-20 00:00

日記
タイトル変更 (14:37)Edit

Published At2005-06-22 00:00Updated At2005-06-22 00:00

日記
DB_sqlrelayのprepareで「?」が使えない (14:13)Edit

SQL Relayを試してみようと、インストールして、PEAR DBの接続先をmysqlからsqlrelayに書き換えてみたところ、単純なqueryは動くんだけど、prepared sqlでエラーが出る。ググってみたら、「bind pear php module」なんてのを見つけた。なるほど、現在のDB_sqlrelayはplaceholderとして「?」は使えない(:1、:2という形式のみサポート)のね。そのうち「?」にも対応するみたいだけど、ひとまずどうしようかなー。

Published At2005-06-24 00:00Updated At2005-06-24 00:00

日記
受信確認付きメールをMLに流すと (18:40)Edit

受信確認自動応答に設定した人がたくさん釣れるんだなー。とセキュリティホールmemo MLを見ながら思った。これってメールアドレス収集に使えるんじゃないか。MLレベルでDisposition-Notification-Toフィールドは除去するように設定しておいた方がいいのか。

Published At2005-06-24 00:00Updated At2005-06-24 00:00

日記
MyApp? (11:58)Edit

さっき1470.netのネットワーク帯域がバカみたいな数値になっているのを発見して調べてみたら、今朝の4時からMyAppとかいうUAで、blogmapのとある1ページを分間20回くらいずつGETし続けている人がいたよ。それだけで3.2Gバイトの転送量かよ。従量制の契約だったら怖いことになってたかも。

@homeのネットワークで何かのプログラムを動かしているあなた、多分それ、巡回ロジックか何かが腐ってますよ!

Published At2005-06-27 00:00Updated At2005-06-27 00:00

日記
XML-RPCサーバーが腐っていた (16:49)Edit

6/24にPEAR XML-RPCライブラリをアップデート(というかpear upgrade-all)したところ、それ以来1470.netのpingサーバーが腐っていた模様です。XML-RPC 1.3.0からXML-RPC 1.2.2に戻したところ、きちんと受信できるようになりました。PEARの中身まではまだ追いかけてないけど、

require_once 'XML/RPC/Server.php';
function weblogUpdates($msg) {
$value_maps = array(
0 => 'title',
1 => 'url',
2 => 'change_url',
3 => 'category'
);
$params = array();
foreach ($value_maps as $index => $key) {
$param = $msg->getParam($index);
if (!$param) {break;}
$params[$key] = $param->getval();
}
if (updateWebsiteLastModified($params)/* 情報更新 */) {
$error = FALSE;
$error_msg = 'success to recieve your ping!';
} else {
$error = TRUE;
$error_msg = 'fail to recieve your ping!';
}
$value = new XML_RPC_Value(
array(
'flerror' => new XML_RPC_Value($error, 'boolean'),
'message' => new XML_RPC_Value($error_msg)
),
'struct'
);
return new XML_RPC_Response($value);
}
$map = array('weblogUpdates.ping' => array('function' => 'weblogUpdates'));
$server =& new XML_RPC_Server($map);

みたいな感じの、ほとんどPEAR XML-RPCに依存した内容だから、こっちのコードの問題じゃないと思うんだけど。XML-RPC関連はテストがめんどいんだよなー。

Published At2005-06-27 00:00Updated At2005-06-27 00:00