Home

技術日記
Zend Framework 1.5対応作業Edit

久しぶりに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を使ったレイアウト実装への切り替えも行った。こちらは単純なレイアウト以上の高機能なものになっているっぽいけど、ひとまずは最低限のレイアウト機能のみを利用。

それ以外は特に変更しなくても、だいたい動いているっぽいかな。

Published At2008-02-04 00:00Updated At2019-12-30 23:56

技術日記
Zend_Mailで日本語ヘッダ要素を登録Edit

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" => ""))に変更

Published At2007-12-25 00:00Updated At2019-12-30 23:56

日記
買ったEdit

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の頃と比べるとずいぶんわかりやすくなったもんだのぉ。

Published At2007-12-20 00:00Updated At2007-12-20 00:00

技術日記
Zend_DateのW3C形式対応Edit

現状では、タイムゾーンでZを指定したパターンと、小数秒には対応していないんだね。例外になるんで注意。

Published At2007-12-06 00:00Updated At2019-12-30 23:56

技術日記
YUIのRich Text EditorEdit

いつの間にかYUIにもRich Text Editorってのが増えていたんだね(て、もしかして存在に気づいていなかっただけだったりして)。

JavaScript HTMLエディタも最近ではたくさんあって、何を使うのが一番いいのか選ぶのが難しい状態だったら、YUIにあるならそれが一番いいかなと思って使ってみたんだけど、まだベータ版だからなのか、あるいは根本的な方向性が俺が求めているものとは違うのか、ちょっと試してみたけれども現状では(今作っているアプリには)うまく使えなかった。しばらく様子を見ることにしよう。

ところで、YUIのRich Text Editorを試してみて思ったんだけど、これって、Editorで編集した内容をポストする時に、textareaに自動反映させようと、handleSubmitオプションをtrueにしておくと、form.onSubmit時にイベントハンドラ内でEvent.stopしてから、JavaScriptコードでsubmitし直しているせいで、input type="submit"な値をチェックして、どのsubmitボタンが押されたかを識別している(サーバーサイドの)コードが動かなくなるんだけど、こういう仕様って困る人多くないのかなー。

Published At2007-12-03 00:00Updated At2019-12-30 23:56

日記
近況Edit

  • 2週間くらい前にアキレス腱を痛めて、ずっとびっこを引いている。なかなか治らなくて、テニスがまともにできない
  • Xbox360バリューパックとGear of Warを買った。Virtua Tennis 3は注文済み。初めて買う次世代ゲーム機がXbox360になるとは
  • 最近ようやくちゃんとした(HTMLのおまけレベルではない)JavaScriptコード書きを始めたけど、まだ基本知識が不足すぎて、bindAsEventListenerとかで詰まったりしている
  • ソニーのブルーレイレコーダーBDZ-X90を買いかけたけど、ぎりぎりで踏みとどまった。東芝のRD-X7が出るまで待ってみることにする
  • 最近仕事と趣味が重なり合ったところで、仕様を考えたりコードを書いたりしているせいで、Webにアウトプットするネタを取捨選択する余裕がない

Published At2007-11-12 00:00Updated At2007-11-12 00:00

日記
雨が多いな、チキショーEdit

なんか最近雨が多くて、テニスも野球もできないし、子供の運動会の日程もぐだぐだになるし、アアモウコンチクショウって感じですよ。

ところで明日はAIGオープンに行こうと思っているんだけど、この日本人の全滅っぷりはナニゴトデスカ。

Published At2007-10-02 00:00Updated At2007-10-02 00:00

日記
AIGオープン明日のスケジュールEdit

公式サイトが重くてなかなかつながらないんで、念のためこっちにも貼り付けておこう。

COURT C

1WS2RDELLACQUA Casey [AUS] MIRZA Sania [IND]
2WS2RWILLIAMS Venus [USA] KING Vania [USA]
3MS2RFERRER David [ESP] MOODIE Wesley [RUS]
4MS2RHEWITT Lleyton [AUS] GREGORC Luka [SLO]
5MS2RFLEISHMAN Zack [USA] GASQUET Richard [FRA]
6MS2RVANEK Jiri [CZE] BERDYCH Tomas [CZE]

センターコートはなかなか豪華だなー。基本はここにいっぱなしで良さそうだ。

COURT 1

1MS2RGIMELSTOB Justin [USA] JOHANSSON Thomas [SWE]
2MS2RCAPDEVILLE Paul [CHI] TURSUNOV Dmitry [RUS]
3MS2RBECKER Benjamin [GER] KARLOVIC Ivo [CRO]
4MS2RVERDASCO Fernando [ESP] ZVEREV Mischa [GER]
6(NB 18:30)MD1RBECKER Benjamin [GER] SUZUKI Takao [JPN] NISHIKORI Kei [JPN] SOEDA Go [JPN]

カルロビッチと錦織添田鈴木をちょっとみたいなー。

COURT 2

1WS2RRADWANSKA Urszula [POR] ZAKOPALOVA Klara [CZE]
2WS2RPENNETTA Flavia [ITA] SPEARS Abigail [USA]
3WS2RWOZNIAK Aleksandra [CAN] MOLIK Alicia [AUS]
4WD1RCHUANG Chia-Jung [TPE] KING Vania [USA] MORITA Ayumi [JPN] SUGIYAMA Ai [JPN]
5WD1RFUJIWARA Rika [JPN] NAMIGATA Junri [JPN] SUN Tiantian [CHN] YAN Zi [CHN]

杉山森田ペアのできはちょっとだけ見たいけど、まあいいか。

COURT 3

1MS2RLOPEZ Feliciano [ESP] KENDRICK Robert [USA]
2MS2RDANCEVIC Frank [CAN] SCHUETTLER Rainer [GER]
3MS2RNIEMINEN Jarkko [FIN] PASHANSKI Boris [SCG]
4MS2RSELA Dudi [ISR] DEL POTRO Juan Martin [ARG]

デルポトロをちょっと見てみたいな。

COURT 4

1WS2RYUAN Meng [CHN] WOZNIACKI Caroline [DEN]
2WS2RKOSTANIC TOSIC Jelena [CRO] PIN Camille [FRA]
3WS2RRAZZANO Virginie [FRA] BALTACHA Elena [GBR]
4MDQFDANCEVIC Frank [CAN] HUSS Stephen [AUS] GABASHVILI Teimuraz [RUS] SPADEA Vincent [USA]

COURT 8

1MS2RRUSSELL Michael [USA] CILIC Marin [CRO]
2MS2RSPADEA Vincent [USA] ROITMAN Sergio [ARG]
3MD1RDELIC Amer [USA] GIMELSTOB Justin [USA] KERR Jordan [AUS] LINDSTEDT Robert [SWE]
4(NB 14:30)MD1RCAPDEVILLE Paul [CHN] SCHUETTLER Rainer [GER] KENDRICK Robert [USA] RUSSELL Michael [USA]

COURT 9

3(NB 13:00)WD1RARAI Maki [JPN] YONEMURA Tomoko [JPN] NAKAMURA Aiko [JPN] TANASUGARN Tamarine [THA]
4(NB 14:30)WD1RCASTANO Catalina [COL] SPEARS Abigail [USA] DOMINGUEZ LINO Lourdes [ESP] PARRA SANTONJA Arantxa [ESP]

Published At2007-10-02 00:00Updated At2007-10-02 00:00

日記
いまいち意図がわからんEdit

この間の「無効なルーティングでIndex/Indexを呼ばせない」で書いたZend_Controller_Dispatcher_Standard::isDispachable()の件は1.0.2で修正されたみたいだけど、その修正と同時にdispatch()周りにいろいろ手が入れられた結果、dispatch()周りの挙動が相変わらずおかしい。どういう挙動が正しいつもりなのかいまいちつかめないんだけど、Zend_Controller_Dispatcher_Standard::dispatch()の中の、

       /**
* Get controller class
*/
if (!$this->isDispatchable($request)) {
$controller = $request->getControllerName();
if (!$this->getParam('useDefaultControllerAlways') && !empty($controller)) {
require_once 'Zend/Controller/Dispatcher/Exception.php';
throw new Zend_Controller_Dispatcher_Exception('Invalid controller specified (' . $request->getControllerName() . ')');
}
$className = $this->getDefaultControllerClass($request);
} else {
$className = $this->getControllerClass($request);
if (!$className) {
$className = $this->getDefaultControllerClass($request);
}
}

のあたり、!$this->getParam('useDefaultControllerAlways') かつempty($controller)の場合(=ルーティングが解決されなかった場合に、例外を投げてほしい)が考慮に入れられてない。!empty()がempty()の間違いなだけなのかもしれないと思いつつも、だったら

throw new Zend_Controller_Dispatcher_Exception('Invalid controller specified (' . $request->getControllerName() . ')');

ってのがおかしくなる。Invalid controllerなのは!empty()な場合だから、例外の内容は現状の条件であっているように思えるし。よくわからんなー。

Published At2007-09-26 00:00Updated At2007-09-26 00:00

日記
複数サービスをまとめるのではなく、1ツールで複数サービスを管理するアプローチEdit

今時複数のオンラインサービスを用途に応じて使い分けるのは普通だし、複数のサービスにまたがった自分(特定の個人)の情報(コンテンツ)を、フィード経由でミックスして扱える(あるいは単に一覧できる)ようにしている人も珍しくないと思う。

けど、現状におけるフィード経由でミックスして扱うアプローチは、できないことはないけれども、いまいち使い勝手が良くない状態にとどまっている気がする。というのは、あくまでも独立した個性をもつオンラインサービスを、たまたま互換性が高いフィード(RSS/ATOM)というデータフォーマットを使ってフィードの表現力の範囲内でまとめているだけで、フルスペックのコンテンツを意図通りにミックスできている訳ではないから。

そこで、「そういう異種オンラインサービスの情報を今よりもうまくミックスする仕組みを考えよう」というアプローチは、たぶんやっている人が山ほどいる気がするんだけど、逆に「自分のコンテンツをうまく複数のオンラインサービスにホスティングさせよう」ってアプローチを考えている人はいないんだろうか。

サーバーもしくはクライアントインストール型ツールで、コンテンツ集積、パーマリンク&フィード生成、リダイレクタ、複数オンラインサービスへのプロキシ、って感じの役割を担うもの。そのツールにいろいろなコンテンツを登録すると、自動的に妥当なオンラインサービスに更新をかけてくれて、それらのパーマリンクをまとめて、必要なフィード情報を生成してくれるやつ。

具体的には……って、技術的な課題とか細かい説明を書きかけてみたんだけど、なんか話が長くて技術的に細かい話が多くなってしまうんで、上記のようなまとめからどんなものをイメージしているのか適当に想像してみてください。

Published At2007-09-25 00:00Updated At2007-09-25 00:00