2008.03.01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

MHI 5.0

この「にっき」には暴力シーンやグロテスクな表現が含まれています。

(2008.03.17)

$ [wifky] リファクタリング

wifky の場合、I/O アクセスを極力必要最小限にするよう、 一度読んだ情報は変数で引き回すようにしているんだけれども、 それが原因で関数のパラメータが複雑になり、 結果ソースが読みにくくなってしまっている。

そういう引き回す情報は、ほとんどページに関するものであるため:

  • ソースそのもの(ユーザが入力した)
  • サニタイズ済みテキスト
  • ページ名
  • ファイル名
  • 最終更新日時
  • サイズ情報

など「ページオブジェクト」の「属性」として持たせるのがよいと思われる。 これらは

package wifky::Page;
sub fname{
    my ($self)=@_;
    $self->{fname} ||= unpack('h*',$self->{title});
}

てな感じでアクセサを実装すると

  • 要求されたタイミングで、1回だけ計算やI/O 処理が動く
  • 2回目以降のアクセスでは、1回目の結果が使い回され、 余計なコストが消費されない。
  • 使う場所では、見かけ上そういった裏のキャッシング処理が見えず、美しい

など、いろいろ美しい (今までやってなかったのは、これまで Perl の OO な機能を真面目に使ったことがなかったから)。

ということで、Mercurial でブランチさせて、 ページオブジェクト(wifky::Page)、添付ファイルオジェクト(wifky::Attach)を実装、 それを使うよう、wifky.pl 全体を改造してみた。結果:

  • コード量が 100行増えた(1796行→1894行)
  • プラグイン互換性が失なわれた

これはあれですな。非公開の 1.5 系列として、別途開発を進めた方がよさそうだなぁ。

$ 技術指向のプログラマをカテゴライズしてみた

二等兵 (新人)
まずは報連相。話はそれからだ
上等兵 (脱新人の若手)
ある程度、自動稼働しつつ、必要と思われるポイントで 相談したり、 適当な選択肢を提案してくれる。 上の人間は、悩まずに済むので楽だぜ。
軍曹
技術指向で、出世を面倒くさがる傾向がある。 後輩から人望があるが、上からの評価はまだ微妙。 うっかりすると主任にさせられることもあるが、 それ以上の「技術的存在」になるには「+αの何か」が必要。 さもなければ、10年後には戦場の屍になりかねない。
妖術使い
多数のスクリプト言語を自在に使いこなし、 わずかなコードで「さくっ」と問題を解決する姿は、 傍からは妖術を使ってるかのように見える。 実のところは、別に妖しくない普通の技術なのだが、 修得者が案外少ないことからそう見えてしまうらしい。
古代魔道師
最近の若いもんはサーバのファイルを編集するのに、いちいち FTP を使う始末。 昔は /bin/vi は、サーバサイドプログラマのたしなみだったのだが。 要するに、そんな「失なわれつつある技術」を保持している人。 端末が腐ってても /bin/ed なんかを使ってしまう場合、 その人は「永遠の戦士」(エターナルチャンピオン)の疑いがある。 奴等は、たとえ bash がなくて、ごく普通に ksh や csh を使う。 だって、UNIX は bash 標準装備じゃないんだもん。
シャア
専らマネージメントに携わる立場にありながら、趣味でコード書いたり、 隙あらば自分で新技術を開拓してゆく機動管理職。知合いに二人いる。 ひとつ言わせてもらえば、艦長自らモビルスーツで出撃してはいけません。
魔界参謀ホシュバーン
保守ばっかりやってて、仕事で最新技術に触れられないので、 趣味でいろいろやっているうちに、器用貧乏な妖術使いになってしまった。 修羅場に強いが、ネガティブな存在なので、シャアに弱い。
独立愚連隊
やさぐれた奴ばっかりの集団ではあるが、 各人自分の役割をしっかりと認識しており、とても頼もしい。 だが、劇中では、客先・オフショア先・病院とバラバラにされ、 最後は各個撃破→全滅してしまう運命にある。 彼らの戦場は、ジャングル(小規模で、どちらかというと品質より コストが優先されるような産業系案件)であることが多い。

また、つまらぬことを書いてしまった。

.net(3) C++(3) Cygwin(12) GAME(3) Groovy(1) Linux(2) Lua(39) Mercurial(13) NYAOS(92) OS/2(7) Oracle(3) Perl(4) Python(22) SKK(4) Windows8(1) album(68) ckw(10) coLinux(1) vim(6) wifky(27) 書評(21) (9)

zetamattaのたいじゅー