ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

バージョン一覧画面出来た。

バージョン一覧画面出来た。今回ので、

  • 現在バージョンの切り替え
  • バージョンの削除
  • バージョンの承認状態の切り替え

の3種類の機能をバージョン一覧画面で操作できるようになったのだけれど、結局トランザクションは作成しなかった。
単にテストケースを作るのが面倒くさかったというのもあるし、トランザクションで囲い込むほど処理が重い訳でも無い。

またバージョンの承認状態について yb_Finderのfind_by_id() が無視していたり、表示中のバージョンと現在バージョンの区別でバグっていた所も直した。土曜日一杯丸一日使ってfind_by_id()とfind_by_all()のテストケース作成して、表示中のバージョン番号/IDと現在のバージョン番号/IDをきちんと区別するようにした。伴い、viewモジュールなどちょこちょこ目に付いた箇所を修正した。もちろんapprovedにも対応した。

また、Wikiテキストで、キャッシュのクリアとかがぐちゃぐちゃになってて、バージョン指定で表示した時とかに直前の変更の影響で違うバージョンのがキャッシュから取得して表示してしまったりとか、食い違いが発生してしまった。
これについてはまずyb_Wiki::convert()に「Wikiデータキャッシュの使用有無」を指定する引数を一つ追加。(省略時のデフォルトはキャッシュ使用ON)
続いてdatatypeのview()で、表示用のバージョンIDと現在のバージョンIDが異なる場合はWikiデータキャッシュを使用しない設定でyb_Wiki::convert()を実装。
最後にバージョン一覧画面から現在バージョンを変更した時、Wikiキャッシュをクリアする処理を追記
これでどうにかいけた。

データ系残:

  • コメントとTrackBack
    • コメントは吹き出しアイコンが分かりやすいと思うのだけれど、TrackBackのアイコンって何が良いんだろう。足跡とか引用マークが良いんだろうか。
  • new_relatedモジュール
  • あとtemplateで、現在日時の置換機能を実装してなかった。

っつーかTrackBackってどうやって受ければ良いんだ?events.php.gr.jpのコードでも見てみるか・・・。

ここら辺が終われば、

  • 検索モジュールを作り直して、
  • HTMLやWikiプラグインで古いコードを直して、
  • protector.phpに文字エンコーディングのチェックを入れて、
  • あ・・・そうだ。「Googleで検索」ボックスを表示するWikiプラグインが欲しかったんだっけ。で、
  • 初期化時に入れるヘルプドキュメントとかを用意して(うー、これ、英語と日本語両方必要なんだよな)

・・・長い。年内で終わるかな。これでalpha-3になるわけだけれど。

ああ。もう一つ悩みどころがあった。
grainやyb_dao系列のFactoryは、実はfactoryメソッドの中で作成したオブジェクトをキャッシュさせてます。
このため、それぞれのテストケース、単体では動作しますが複数を一度に動かすと、最初に動かしたdaoなりgrainなりのディレクトリ設定で以降全部動いてしまいますので、二つめ以降が全部おかしくなります。
うー、これ、マジで失敗した・・・。結局factoryメソッド系ってちょっとしたDIコンテナっぽくなってるから、_YB()とかのフラグで常に新しいインスタンスを返すのか、キャッシュしたインスタンスを返すのか判別させるロジックを入れるか・・・。
そもそもパフォーマンス的にどうかというのが分からない時点で、キャッシュ使いまくってるというのも不味いのかも知れない。
・・・Cache_Lite使ってるのだけれど、一部にはさらにそれをstatic変数にキャッシュさせてるのがあったりする。これ、FastCGIで動作させた時やばくないかな?

TDDとキャッシュは相性が良くないかも・・・。特にインスタンスの生成を抑制する為にfactory周りでキャッシュさせると、個々のテストケース単体ではちゃんと動いても全部動かした時に・・・Mock使うしかないのか・・・ってかそれもめんどい。やっぱりDIコンテナが無いときついのかも・・・。

(追記) : diffモジュールも出来た。あと、TortoiseSVN1.4が最近たまにいきなりフリーズする。SF.netのSVNサーバって日本からだと少し遅いようなのだけれど、explorerも含めてデスクトップ画面全体が無反応、Ctrl+Alt+Delも反応しなくなる時が最近たまにある。1.5にUPったほうが良いのかな・・・。