Takuro Ashie
ashie****@homa*****
2004年 1月 21日 (水) 17:25:02 JST
足永です。 On Wed, 21 Jan 2004 12:53:53 +0900 Hiroyuki Ikezoe <zoe****@ikezo*****> wrote: > bookmarkbar.xmlに登録したRSSが展開されて保存されることがある > <http://sourceforge.jp/tracker/index.php?func=detail&aid=3735&group_id=388&atid=1529> > > これはぼくが埋め込んだバグなのですが(ぉぃ、一回しか起きたことがなくしか > も気づいたらbookmarkbar.xmlが変になっていたので発現条件がわかってません。 > bookmarkbar.xmlが壊れると、風博士の起動時に > このブックマークはfolderじゃねえぞ(←正確に覚えてません > みたいな警告がどわーっと出ます。 > bookmarkbar.xmlがこのように壊れててもブックマークバーは今まで通り動作す > るので気づきにくいかと思います。 > > XBEL化初期の頃の潜在的なバグで今はもう直ってるような気もしますが、もし、 > この現象が出た方がいらっしゃいましたら、お知らせください。 > その際に、思い当たるふしでいいので、この動作がいけないんじゃないかという > のも教えてください。 足永です。 今ごろになってbookmarkbar.xmlまわりを確認したのですが、この設計は少しま ずいような気がします。そもそも私が自分の考えをきちんと伝えていなかったの がまずいんですが... まず、リモートブックマークの表現が <bookmark href="http://kazehakase.sourceforge.jp/an/index.rdf"> <title>風博士</title> <info> <metadata owner="http://kazehakase.sourceforege.jp/"> <update_interval>60</update_interval> </metadata> </info> </bookmark> となっていますが、私は kz_bookmark_is_folder() で TRUE が返るアイテムに ついては、全てfolderとして実装したいと考えています。また、ここでは KzBookmark の location プロパティを href として保存していますが(私もこう しようかと考えていた時期はあります)、こうすると link プロパティとの区別 が付かなくなってしまい、bookmarks.xml に RSSアイテムを追加した時などに混 乱の元になると思います(そういう事もできるようにしたいと私は考えています)。 現状では<update_interval>が保存されないリモートブックマークもありますの で、これでは本当に見分けが付かないと思います。 リモートブックマーク用に別途フラグ用の要素を追加するという手もあるかと思 いますが、一つのXBELファイル内で矛盾無く全てのタイプのブックマークを表現 できるよう、モデルに忠実に、KzBookmarkの全てのプロパティが1:1で各要素 or属性に対応するようにすれば、これは自然と解決できる問題だと思っています。 具体的には、リモートブックマークは次のような表現にしようと考えていました。 <folder> <title>風博士</title> <info> <metadata owner="http://kazehakase.sourceforege.jp/"> <href>http://kazehakase.sourceforge.jp/an/</href> <location>http://kazehakase.sourceforge.jp/an/index.rdf</location> <update_interval>60</update_interval> </metadata> </info> </folder> href要素は本当はfolder要素の属性にしたいのですが、XBELではそのような仕様 になっていないので、このような形になっています。また、初期登録時は空の状 態で、最初のロード時にセットされます。これを保存するかどうかについては、 どちらでも良いと思います。 このXBELファイルをロードする時、あるブックマークにlocation要素が存在する 場合は、直接kz_bookmark_file_new()を呼んでフォルダを生成する(別のブック マークファイルを「マウント」する)ようにしたいと思っています。 このXBELファイルを保存する時、あるブックマークにlocation要素が存在する場 合は、その子ブックマークファイルはlocationが指し示す先に保存されているは ずですので、このXBELファイルには保存されません。書き込み可能なリモートブ ックマークの場合は、このタイミングでkz_bookmark_file_save()とかなんとか いう関数が個々のリモートブックマークに対して呼ばれるようにしたいと思って います。 要素名が bookmark か folder かはどちらでも良いような気がするのですが(良 くないかも知れません)少なくとも link と location がごっちゃになるのはま ずいと思っています。 また、現状ではブックマークバーが複数の場合も考慮されていない気がします。 これはブックマークバーファイルを複数用意するという手もあるかもしれません。