Routing のお勉強

Rack に興味を持ったついでに以前からチェックだけしておいた

Horde/Routes: Elegant URL Handling

を最近読んでいた。この話を twitter と #openpear と #coderepos に振ったら反応があったのは coderepos だけだった。そこで

を知った。話はそのまま RouterCon 方面へ行って完全にネタとして昇華することができた。合唱。

ま、それはともかく、

  • PHP の世界はフレームワークに多少不満があっても我慢して使うし、Router に興味ある人はあんまりいないんじゃ?
  • なんだかんだでみんな routes.py を参考にしている

という話は参考になったし、なかなか興味深かった。いちばん共感を覚えたのは

11:08:15 <tokuhirom__> うわー
11:08:31 <tokuhirom__> せっかくの routes.py のカッコイイDSLが
11:08:35 <tokuhirom__> array() によって台無しだー

いやまったく :-) ホント PHP はキツいっす。array() のヒドさは犯罪級です。便利なのは分かったから、もう一つ踏み込んで array に分解してくれるレイヤーを挟まないと DSL としては機能しないよな。まぁ現実的には時間とかモロモロの兼ね合いで array() むき出しって自分でもよくやるんだけどさ。

あとこの辺

11:40:35 <kazuho> ルーターの定義ってなんすか?
11:41:14 <tokuhirom__> なんだろう
11:41:27 <kazuho> HTTP::Router あたり読めばわかります?
11:41:39 <tokuhirom__> Web Application において、コントローラー and/or
アクションと URL とのマッピングを定義するもの
11:41:41 <tokuhirom__> かな。
11:41:48 <kazuho> 双方向?
11:42:00 <tokuhirom__> URL => Controller/Action
11:42:05 <tokuhirom__> ですね。
11:42:12 <tokuhirom__> 逆方向は optional な要素ではないかと。
11:42:38 <kazuho> あざーす。じゃあ、それも論点ですかね。あまり需要ないのかなー

実際 View を書くときには誰かが逆方向の部分を担当しないと意図した Routing にマッチしない URL を簡単に生成できて、アプリケーションとして管理しきれなくなってしまう。Rails 的には Helper がこの部分を担当することにしてあるのかな? 少なくとも Rails 系の CakePHP では View の Helper で対応する方針になってるみたい。フルスタックのフレームワークではまぁどこで処理しても問題ないやね。

話は戻って Horde/Routes ともう一つ似たライブラリである Net_URL_Mapper では、Horde/Routes だけが逆方向の URL の組み立て機能も持っており、単体の routing ライブラリとして扱いやすいのではないかと思う。速度差とかは計ってないのでこれだけで一概に Horde/Routes の方が優秀とは言い切れないけど、単体の router, mapper は個人的には逆方向の変換も持っていてくれる方が安心感がある。

他に Zend Framework も見てみたけど、この routing は Rails 風のようで微妙に違う。また Zend Framework は疎結合を意識しており、Router と Dispatcher を別々に利用できそうに見えるんだけど、実際処理を追いかけて行くと PHP 5 から入ったタイプヒンティングが邪魔しており、duck type 的に別なライブラリを突っ込むのはちょっと難しそうな感じ。変なところで Java 的な考え方に振っちゃうのはちょっと勘弁してほしい。PHP って開発者の目指す方向とユーザーの目指す方向が合ってないんじゃないか。

nadoka pong 問題に一条の光明

X-Chat Aqua の設定ダイアログ

system のメッセージと channel メッセージを別タブに表示させる方法があることを #nadoka:*.jp で教えてもらった。たぶんこれ。

今のところ TwitterIRCGateway に繋がってまともに使える IRC クライアントが X-Chat くらいしかないっぽいので、この設定で逃げるしかなさそうだ。

タブが増えるのもうざいが PONG メッセージが垂れ流されるのもうざい。これでダメなら

  • nadoka をやめる
  • TwitterIRCGateway をやめる

のどっちかかなぁ。もうかなりイヤになってきた。

Pear の Text_Wiki のサブクラスが増えてる

PEAR :: Search: wiki

あまり気にしてなかったんだけど、これ複数の Wiki フォーマットに対応できるような作りになってるのね。(まぁそりゃそうするよな。)

ということはこれに登録されればいろいろ使いやすくなるのか。Creole も早速使える。面白いかも。

AVG 6 Free の VirusDB のサポートは 2005-01-31 まで

AVG 7 Free を試し始めてるんだけど、2ch とか解説サイトを読む限りは

  • 9x系でなんかおかしい(手元ではまだ確認できず)
  • NT系のログイン名に2バイト文字を使うとダメ
  • まだアップデートが結構頻繁

という感じらしい。

AVG 6 のようにアップデータをミラーに置いてそこにアクセスしにいくようにする方法はまだなんかなさげ。GUI から URL を追加できそうに見えるんだけど、まだその Add ボタンが動かない。

つーことで1月まで様子を見ることにした。

あぶねーあぶねー

情報セキュリティアドミニストレータに合格しました。

が。午後II の点数がギリギリ。油断したのかもう眠かったのか何か勘違いしたのかそもそも勉強不足か。午後I は比較的余裕だから勉強不足でもあるまい。あとで確認しようかな。

つーことでおめでとう > showchan

OKI MINI KEYBOARD と打圧

このキーボード、打圧の高い人には強い底付き感が跳ね返ってきてつらいかもしれぬ。まぁそういう人がこんなキーボードをわざわざ買うとも思えないけど。

ThinkPad を打って気づいたけど、このキーボード、ちょっとストロークが足りないな。打ってて若干気持ちよくないのはその辺にタッチの重さ軽さじゃなくてそこかな。

クラス図以前

クラス図をうまく描ければコーディングが楽できると思っていたんだけど、そもそもクラス図以前の、仕様決め段階の情報の整理の仕方がよく分からないというとんでもない事態が発覚。(今までこれに気づく以前の状態だったんだから痛すぎる話だ。)

で、結局 w3m + Emacs + Wiki でドガドガ箇条書きにするのが現段階ではいちばん効率がいいってことが分かったのでした。いやまいったな。こんなんでいいのか?

Perl と switch 文

Perl には switch 文がないそうな。(from PerlらしからぬPerl)どうも自分は switch 文を敬遠しているというか、書かないスタイルが身についているなぁと思ったらこれが理由らしい。(らくだ本を置いてきて以来、正しい Perl の文法に触れる機会がないのですっかり忘れていた。)

5.8 以降は標準で switch モジュールが入っているのでそれを利用するとよいらしい。まー正直、あんまり単純な if else が並ぶような場合分けってやらないように書いちゃうよなぁ。見やすいかもしれないけど、メンテしたくなくなるし。

About

例によって個人のなんちゃらです