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

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

駄目だ、今日はDataのテストケース終わらない。

一応何点か覚え書きを。

名前は、バージョン管理はしない。(最初バージョン情報に含ませてしまっていた)
何でかというと、名前検索の場合がやや複雑に過ぎる気がするし、そもそも名前を変更した場合バージョンはどうなるのだ?
名前は属性として一括した方が簡潔だと思う。それで困る人が出るとは思えないし。
あと、それに伴い、属性値の変更日付を持つ。数時間前までは持ってなかった。バージョン情報の方にあるから良いと思っていたのだけれど・・・。でも、現実問題として「データはそのまま(バージョンは不動)で、属性値(ACLとか名前とか)だけ変えたい」という場合が多いはず。となると、まぁ、持っていてまっとうだろうと思う。あぁ、あと、だれに変更されたのか、もか。

あとは・・・チェックサムMD5SHA1の二種類を提供することにする。やっぱり。で、該当する物理ファイル(oid.vid.dat)が存在しない場合、空文字列とする。

あと、分かりづらくなったけどDataクラスの段階での「名前」は抽象的な扱い。例えばWiki系のモジュールであれば「ページ名」として扱われ、imageやfile系では純粋にアップロードファイル名(**.xlsとか**.jpgとか)として扱われるだろう。多分。ひょっとしたらファイル名はDataTypeの拡張属性になり、こちらは日本語などで自由に表記できる名前になるかもしれないが。

もう一点。属性の更新と、本体データのバージョンアップは特にメソッドは分けない。Daoのレベルでは、更新データ中にフィールドが設定されているモノについて更新することにしておく。もし本体データが入ってくれば、そのとき本体データをバージョンアップする。
また、本体データのバージョンアップの時、「バージョンカウンタをアップ」するかしないか選べる。バージョンを変えずに、中身だけ差し替えたい場合などに使用する。というか殆どの場合そちらだろう。
これを応用すれば、current_versionエントリだけを設定した更新データを渡すことで、カレントバージョンを切り替える動作も簡単に実現できるだろう。

うにゃ。今日は朝の9時からアパートの用事があった為、あんまり寝てないので眠いのにゃ。おおよそ固まったし、これ以上迷ったら後回しにすることにして、続きと実装は明日にするにょだ。