Home

技術日記
無効なルーティングでIndex/Indexを呼ばせないEdit

Zend Framework(trunk)でRewriteRouterを使っていて、無効な(設定したルートいずれにもマッチしない)ルーティングの場合はエラーが出てほしいんだけど、なぜかIndex/Indexにルーティングされてしまう。

フロントコントローラ(もしくはディスパッチャ)のuseDefaultControllerAlways設定の問題かなーと思ったんだけど、それもデフォルトのままでOKのはずだし、おかしいなーと思いつつも、あまり重要度が高くない問題だったんでしばらく放置していた。

けど、やっぱり気色悪いなーとソースを追いかけてみたところ、なんだかZend_Controller_Dispatcher_Standard::isDispatchable()の、

         if (!$className) {
return true;
}

         if (!$className) {
return false;
}

なんじゃないかという気がしてきたんだけど、まさかバージョン1.0.0が発表されてずいぶん経つし(もう1.0.1も発表されてるし)、こんなところにこんなバグが残っているはずがない気もするし、Zend FrameworkのJIRA(バグ管理ツール)もまた落ちているみたいだし(っつーか、最近Zend FrameworkのWikiにつながったことないんだけど、その辺のサーバーって生きてるの?)、ひとまずここでさらしてみる。

直った

やっぱりバグだったのか。1.0.2(ZF-1727)で修正されていた。っつーか、1.0.2が出るまでずっとJIRAが死んでなかった? そんなにまめにチェックしていたわけじゃないけど、もしかしてZFの開発はすでに収束に向かっているのかと疑ってしまったよ。

Published At2007-09-20 00:00Updated At2019-12-30 23:57

日記
明日は野球だEdit

久しぶりに一回戦を突破したいし、今日は早めに帰ってバッティングセンターに行こう。最近テニスばっかりなんで、野球のボールがやたらと重く感じるんだよなー。

Published At2007-09-21 00:00Updated At2007-09-21 00:00

日記
久しぶりに勝ったEdit

1回戦突破って何年ぶりだっけ。フォアボールでランナーをためて、入れに行ったストレートで長打を食らった失投がとても悔やまれるんだけど、まあ最終的に勝てたからいいか。バッティングは全部ぼてぼてのゴロばかりだった。エラーで出塁はできたけど。

で、打ち上げで飲み過ぎて酒が残ったまま、今日は朝いちからテニス。昨日結構な球数を投げたんで、肘のところの筋肉をかなり痛めていたんだけど、テニスにはあまり影響がなく、普通にできた。さすがにサーブは半分くらいの力でしか打てなかったけど。やっぱりテニスと野球だと、野球の方が筋肉とか関節とかには厳しいなー。心肺系への負荷はテニスの方が高いけど。

Published At2007-09-23 00:00Updated At2007-09-23 00:00

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

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

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

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

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

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

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

日記
最近のテニスの課題Edit

フォアハンドはヘビースピンをあきらめて、軽いスピンを基本に変えたら、だいぶコントロールが良くなってきた。特に早めに打点に入って、ためてからのコースの打ち分けが、かなり使えるようになってきた。けれども、まだつまらないミスが多々発生しているんで、今のままでミスをもっと減らしていこう。そのためには、球ごとにどこまで攻められるのかの判断を早く正確にできるようにならないと。

バックハンドは、ダブルバックハンドでフラットに返すのは普通にできるようになったので、軽めのスピンで返す練習中。要は、フォアハンドと同じような球種を使えるようにして、フォア・バックどっちにきても、同じ選択肢で攻撃できるようにするつもり。ただ、バックはまだ芯に当て損なうショットが多発しすぎているんで、しばらくの間はスピンのスイングでミスヒットしない練習が必要。あと、バックハンドスライスはフレームショット連発しまくっているんで、どこかで集中して練習する必要がある。さほど重要度は高くないんで、後回しでいいけど。

ボレーは、全般的にだいぶ慣れてきた。特に、前に出たら何でもかんでも一発で決めようとしてミスするのはだいぶ減ってきた。それでもやっぱりチャンスボールほどボールから目が離れるのが早くて、ミスをする(がしゃる)ことが多い。決めるボレーを打ちたいときほど、相手の状況よりも目の前のボールに集中する必要がある。速い球に対するボレーは、あまりにも経験が足りないんだけど、現状では練習機会が少なすぎてうまくなれるあてがない。

スマッシュは、まあスライスロブを待ちきれずに空振りしないようにしたいもんだ。っつーか、実戦での機会が少なすぎて、うまくなっているのかどうか、よくわからん。

サーブは、膝を大きく曲げるように意識してから、だいぶ腕を振りつつ入れていけるようになった。ただ、セカンドサーブの確率がいつまで経っても上がらない。現状だとファーストよりもセカンドの方が確率が悪いくらい。できるだけ打ち方は変えずに、セカンドの方をほんの気持ちだけスピンが強くなるようにしているんだけど、ほとんどかけてないつもりなのにスピンがかかりすぎてネットになる。でもまあ、少しずつは進歩している感触はあるんで、そのうち何とかなるだろう。

スクールの方は、来月から今までの平日午前クラスから、いつの時間でも取れるフリークラスに変更した。やっぱり平日午前クラスだと、メンツ的に気を遣ってちゃんと打てないことが多いんで、男率が高いきつめのクラスを中心にとっていく予定。せっかくスクールに行ってるんだから、変に気を遣っているのはあほらしいもんな。初心者の頃は普通に返す練習も役になったけど、今となっては攻撃の練習を中心にしていきたいし。

Published At2007-09-25 00:00Updated At2007-09-25 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