2008-07-07 [長年日記]
_ 熱狂小町 - 発言小町リーダー作りました
じわじわとブックマークされつつあるみたいなんで、こっちにも書いておきます。Google Codeを使ってみる実験でもあるんで、何かありましたらあちらにどうぞ。

2008-04-25 [長年日記]
_ obsoleteフラグ
blogとかの古い記事に、簡単にobsoleteフラグを付ける機能があるといいね。消しはしないけど、すでに現状に即していない記事ですよ、というのをわかりやすくするために。obsoleteフラグがついた記事は、古文書風にぼろぼろに表示される(CSSがあたる)といいのかな。
第三者からの評価として行う場合は、ソーシャルブックマークなんかでobsoleteタグを付けておいて、そのタグの数で識別する、なんてのもいいかもね。
あと、記事の掲載日時を表示するときには、単に「○○年×月△日」とだけ書くんじゃなくて、ある程度古くなったら自動的に「○○年×月△日(掲載から□年経過)」とか、その記事が古いことをわかりやすく表示するといいかもね。
っつーか、自分のところもそうだし何か調べていてググった場合もそうだけど、古い技術系の記事のobsolete度合いを簡単に識別する手段があると便利だよね。obsolete度評価専門のソーシャルブックマークとか誰かつくんね?
2008-03-12 [長年日記]
_ Zend_Db_Select::where()メソッドの$type
trunkでは、
* @param string $cond The WHERE condition.
* @param string $value OPTIONAL A single value to quote into the condition.
* @param constant $type OPTIONAL The type of the given value
* @return Zend_Db_Select This Zend_Db_Select object.
*/
public function where($cond, $value = null, $type = null)
{
if ((func_num_args() > 3) or (($type !== null) and ($type !== 0) and ($type !== 1) and ($type !== 2))) {
$value = func_get_args();
array_shift($value);
$type = null;
}
$this->_parts[self::WHERE][] = $this->_where($cond, $value, $type, true);
return $this;
}
なんて感じになっているんだけど、この「(($type !== null) and ($type !== 0) and ($type !== 1) and ($type !== 2))」ってのはどこから現れたんだ?
where()メソッドでは、
* @param constant $type OPTIONAL The type of the given value
になっているけど、ここから呼ばれている_where()メソッドでは、
* @param string $type optional
になっているし、実際PDO_MYSQLを使ったZend_Db_Tableのinfo()では、DATA_TYPEはstringで返ってくる("varchar"とか"int"とか)。
0、1、2という数値から、Zend_Db::INT_TYPE = 0、Zend_Db::BIGINT_TYPE = 1、Zend_Db::FLOAT_TYPE = 2あたりが怪しそうな気がするけど、この値ってZend_Db_Adapter_Abstract内で$_numericDataTypesとして定義されて以降、まったく使われていないし、意味的にも$typeが数値ではなかった場合に$valueを配列扱いするっていう意味がわからない。
これのせいで、trunkにしたらZend_Db_Tableのリレーション周り(findParentRow()とか)が動かなくなっちゃったんだよなー(Zend_Db_Table_Row_Abstract::findParentRow()内でZend_Db_Table_Abstract::info()で取得したDATA_TYPEをそのまま渡しているため)。自前で直そうにも、コードの意味がわからなくて直せないし。
3/13追記
昨日更新されたrevision 8783で、上記の怪しげな条件文はばっさり削除された。なんだったんだ……。
2008-03-11 [長年日記]
_ Zend_Controller_Dispatcher_Standardのtrunk 247行目
if (!$this->getParam('useDefaultControllerAlways') && !empty($controller)) {
は
if (!$this->getParam('useDefaultControllerAlways') && empty($controller)) {
のような気がするんだけど、いい花粉が飛んでいて頭がぼーっとするせいで、いまいち自分の判断が信用できない。ここは、useDefaultControllerAlwaysが無効な場合は、コントローラ名が解決できない→例外を発生させる処理だよな。
2008-02-04 [長年日記]
_ Zend Framework 1.5対応作業
久しぶりにtrunk(Zend Framework 1.5相当)にupしてみたら、ViewRenderer連動時にアクションからビュースクリプト名に変換する際に、自動的にCamelCaseを小文字ハイフン区切りに変換するようになっていた(デフォルトのままのInflectorを利用した場合)。
「FooController::CamelCaseAction」が「foo/camel-case.phtml」になる。従来は単に小文字変換される(foo/camelcase.phtml)だけだったんで、その頃に作ったビュースクリプトファイル名を全部リネームしないと。
新しい仕様の方がわかりやすくていいけど、さらに古いバージョンの頃はfoo/CamelCase.phtmlでいけたから、これで3度目の仕様変更(リネーム作業)だなー。そろそろフィックスしてほしい。
そういえばZend_Layoutが追加されていたんで、自前の(ActionController::postDispatch()を利用した)レイアウト実装から、Zend_Layoutを使ったレイアウト実装への切り替えも行った。こちらは単純なレイアウト以上の高機能なものになっているっぽいけど、ひとまずは最低限のレイアウト機能のみを利用。
それ以外は特に変更しなくても、だいたい動いているっぽいかな。
2007-12-25 [長年日記]
_ Zend_Mailで日本語ヘッダ要素を登録
mb_encode_mimeheader()してから、setSubject()とかしただけだと、"\r"とか"\n"とかが"?"に変換されてしまうんで、
function encode_mimeheader_for_zendmail($str)
{
return strtr(mb_encode_mimeheader($str, 'iso-2022-jp'), array("\r" => '', "\n" => '');
}
みたいなものをかましておくのが正解か*1。
っつーか"?"がZend_Mail内で変換されていたことになかなか気づかなかったよ。てっきりメールサーバーの問題だと思ってしまっていた。
*1 strtr($str, "\r\n", "")だとうまく動かなかったんでstrtr($str, array("\r" => "", "\n" => ""))に変更
2007-12-20 [長年日記]
_ TOSHIBA HD DVD VARDIA 地上・BS・110度CSデジタルチューナー搭載HD DVDレコーダー HDD600GB RD-A600買った
RD-X7まで待つつもりだったけど、価格.comで85000円まで下がっていたんで、試しにビックカメラで聞いたら96600円の15%ポイントと言われ、その値段を言って地元のケーズデンキで(ビックカメラよりもちょっと高い値段で)買った。5年保証付きで10万円以下で買えるなら十分だ。
本当はソニーのブルーレイレコーダー今冬モデルを買うつもりだったんだけど、X90のでき(特に2チューナー利用時の制限)があまりにもひどかったし、どうせ俺はほとんど光学メディアは使わないから、だったらHDDレコーダーとしては(旧来からのRDユーザーにとっては特に)使い勝手がよく、お買い得価格のRD-A600でいいかなーと思って。スターターパック(HD DVDビデオとHDMIケーブルとHD DVD-R1層メディア1枚)とトランスフォーマーキャンペーン(トランスフォーマーHD DVD版とHD DVD-R1層メディア5枚)がおまけでついてくるんで、さらにお買い得度は増すし。
それに、ブルーレイレコーダーだったら数年待ったらもっといいのが買えるようになるだろうけど、HD DVDレコーダー(というか東芝のRDシリーズ)の場合は、今RD-A600を買うよりもいいものが将来買えるとは限らないからなー。RD-X7くらいまでは発売されるだろうし、それ自体はRD-A600よりはいいものだろうけど、値段の方も結構しそうだし。
ちなみに接続したところ、地デジだけが映らない状態だったんだけど、下調べの甲斐あって、アッテネータの設定を変えた(リモコンの停止ボタン+本体の停止ボタン)ら、無事地デジも映るようになった。RD-X5からの置き換えだと、テレビとの接続をD端子+RCAコンポジットケーブルからHDMIケーブルに変更した以外は、スカパー!連動も含めてそのままケーブルを差し替えるだけでOKだった。スカパー!連動周りの設定も、RD-X5の頃と比べるとずいぶんわかりやすくなったもんだのぉ。



_ w [熱狂小町、使わせていただいてます。 とても便利です! 以下、もしバグフィックスの参考になれば・・・。 投稿者の名前..]
_ ishinao [>w様 Revision 9で修正しておきました。アーカイブにはそのうち反映させます。]
_ w [早速のお返事、ありがとうございます!]