/ 最近 .rdf 追記 設定 本棚

脳log[2009-09-12~]



2009年09月12日 (土) ブラウザとエディタで確認した。Ctrl+BackSpace、Ctrl+Deleteで単語単位の削除。

最終更新: 2011-03-25T01:34+0900

[SakuraEditor] シンボリックリンクを開いたとき、更新通知の無限ループ

そして素朴な疑問。選択肢が 4つあるんだけど

  • 再読込(&R)
  • 閉じる(&C)
  • 以後通知メッセージのみ(&M)
  • 以後更新を監視しない(&N)

閉じるをクリックしても予想に反してエディタは閉じられないのと、(延々と表示され続けてもおかしくない)通知メッセージはどこに出ているのか?


 @2010-07-08 補足。

シンボリックリンクを開くと、ショートカットファイルを開いたときと同じようにターゲットファイルの内容がエディタに表示される。そして他で何もせずとも、最初に必ず更新通知ダイアログが表示される。だから「再読込」を選ぶと読み込み後にまた更新通知ダイアログが表示されることになって無限ループ。「閉じる」(=ダイアログを閉じる=更新を無視する)を選ぶと今度はターゲットファイルが本当に更新されたときも察知できなくて永遠に黙る。

対策は、シンボリックリンクを開いていることを意識して、常に(ファイルの読み込みと更新監視で共通して)ターゲットファイルの更新時刻を調べるようにすること。

っていうほど単純でもない。更新日時だけ特別扱いしたらファイルの属性に一貫性がなくなる。更新監視部分でだけターゲットファイルの更新日時を比較するのが影響範囲が最小だけど更新日時を保存するメモリ領域をどこかの管理下に用意しないといけない(だれが管理する?もちろん CEditDocのメンバの CAutoReloadAgent)。一番面倒がないのはシンボリックリンクのターゲットをたぐってそのファイルを開いたことにすること(ショートカットと同じ)。なんとなくこれが嫌なのはカレントディレクトリが変わってしまうこと。他にもいろいろあると思う。ショートカットでなくシンボリックリンクを使うのは、ターゲットファイルがそこにあるようにアプリケーションをだましたいときだから、サクラエディタも(今はタイムスタンプ取得方法の一貫性のなさからかおかしなことになっているうえ、だまされているせいで更新の監視ができていないが)上手にだまされてほしい。

 @2010-07-08 更新通知ダイアログがわかりにくい

  • 「閉じる」って何を閉じるの?
  • 「以後通知メッセージのみ」「以後更新を監視しない」って結局再読み込みするの?しないの?

ので、こうした(improve_fileupdatequery_dialog.patch)。

わかりにくいと感じてるのは俺だけじゃなくて、sakura-dev:3014で wmlhq氏が書いている。

なお、更新通知ダイアログはわかりづらいようなので、次のようにしてください。

----------------------------------------
<!> このファイルは別のプログラムによって変更されました。

読み直しますか?
----------------------------------------
 [ ]今後、ステータスバーに通知する 
 [ ]今後、通知しない 
----------------------------------------
[はい] [いいえ]
----------------------------------------

日記を書く段になって見直したんだけど wmlhq氏のメッセージのほうが良い。

  • 「更新の監視をやめる」という俺のメッセージは不正確だから。(タイマーは常に動いていて、タイムスタンプの比較をしなくなるだけ)
  • 通知メッセージがステータスバーに表示されることがわかる。
  • サルでも答えられる Yes/Noクエスチョン。

2009年09月10日 (木) [Vista] ごみ箱の詳細ペイン(ステータスバーの上の部分)は、名前が同じファイルを区別できていない。表示される情報が一種類だけ。

最終更新: 2011-04-09T17:30+0900

[LS-WSGL][VGF-WA1][Songbird] LinkStation Miniにプレイリストを置いて、VGF-WA1で再生。

プレイリストの書き方がわからなかったので実験した。MediaLibraryという共有フォルダをつくって、これをメディアサーバーの公開フォルダに設定している。これがフォルダ階層。

MediaLibrary
├Genre
│└Artist
│ └Album
│  └Title.mp3
├Playlists
│└pl1.m3u
└pl2.m3u

メディアサーバーのデータベースを Webインターフェイスから更新しただけでは VGF-WA1のメニューに素直に反映されなくて、VGF-WA1でブラウズしてるうちに項目が増えていって、いつのまにか「プレイリスト」メニューの下に pl1と pl2が表れていた(だから早々に駄目だと判断してはいけない)。

pl1.m3u に書いた中で再生可能だったのがこれら。

../Genre/Dido/no angel/06.THANK YOU.mp3
Genre/Dido/no angel/01.HERE WITH ME.mp3
MediaLibrary/Genre/Dido/no angel/05.ALL YOU WANT.mp3
/MediaLibrary/Genre/Dido/no angel/02.HUNTER.mp3

pl2.m3u で有効だったのはこれ。

Genre/Dido/no angel/01.HERE WITH ME.mp3
/MediaLibrary/Genre/Dido/no angel/02.HUNTER.mp3

実際のところ、引用符で囲ったもの以外は全て認識された。

試してないけど

../../../../../Dido/no angel/01.HERE WITH ME.mp3

とか

Dido/no angel/01.HERE WITH ME.mp3

とか書いても認識されそうな気が今はしてる。


VGF-WA1はプレイリストもシャッフル再生してくれる。リストの曲を全て再生すると、次のリストに移動する。良い。


 Songbirdでエクスポートしたプレイリストを LinkStation Miniに認識させるために。

 プレイリストの文字化け

Songbirdの Playlist Export Tool (ver.0.1.1.14)でプレイリストをエクスポートしたら文字が化けている。「KMKM :: Firefoxのjavascriptでローカルファイルにアクセスする方法まとめ」のやり方を丸コピしたら Shift_JISでも UTF-8でも化けずに書き出すことができた。試したのだが、LinkStation Miniの PVConnectは UTF-8の日本語パスを理解する。

 曲のパスの形式の違い

Songbirdでエクスポートしたままではリスト内の曲のパスが \\server\で始まるネットワークパスだが、このプレイリストはそのサーバー(NAS)に置くものなので相対パスに置換する。

 Case Sensitivity

Media Player Classicはプレイリスト内の曲を、エンコーディングの違い(Shift_JIS、Unicode)、パスの形式(ネットワークパスと(厳密な)相対パス)の違い関係なく再生してくれるが、LinkStation Miniは Songbirdがエクスポートしたプレイリストを一度も再生してくれていない。

最後の壁は Songbirdでエクスポートしたプレイリストに含まれるファイルパスの英字が全て小文字になってしまっていること。LinkStation Miniのメディアサーバーは大文字小文字を区別する。

Playlist Export Toolは特別な処理は行っていなくて、関連するのはこれだけ。itemLocというのが曲のパス。

var aaa1;
var itemLoc;
	aaa1=theMediaView.getItemByIndex(i).QueryInterface(Components.interfaces.sbILibraryResource);
	itemLoc=aaa1.getProperty(dataSource+"contentURL");
	if(nsIIOService.extractScheme(itemLoc)=="file"){
		itemLoc=nsIFileProtocolHandler.getFileFromURLSpec(itemLoc).path;
	}

どこで大文字小文字の情報が失われてしまったんだ……。(プロパティ:"http://songbirdnest.com/data/1.0#contentURL"の時点でもう失われているのだろう)


  • Playlist Export Toolのソースは LFと CRLFが混在している。
  • どういうわけかエクスポートするプレイリストを選ぶ画面で、すべてのプレイリストが二重化している。エクスポートされる内容は全く同じ。

Songbird (under Windows) saves filenames in the internal database as lower-case」なんて書いてる人もいるなあ。Windows限定でどうして情報を捨てるようなことをするのか。ネットワーク越しに、ディレクトリエントリを読むことで(二重苦)、スクリプトが反応してないよダイアログを出しつつも元のファイル名を復元することはできたけど、パスも復元しないと……。無駄だなあ。


でもやった > Songbird_PlaylistExportTool_0_1_1_14_utf8_encode_and_exact_path

サーバー名とその下の共有名は復元できなかった。それらは親ディレクトリがないから列挙するには別の方法が必要。どうせ相対パスにするときに置換されてしまう部分なのでこれ以上は知らない。


なぜ?なぜ VGF-WA1のプレイリストメニューに表れない? 数曲分、手書きしたときはうまくいったのに。

プレイリストのファイル名から日本語部分を削ったら見えた。でもこれは曲数を 6曲まで絞り込んだファイル。Songbirdからエクスポートした完全なプレイリストは再生できてない。曲数に上限があったり、NGワードがあったりするのか。


ファイルパスの 1つ前の行を削ったらその曲は見えるようになった。表示用のデータの扱いに問題でも?

#EXTINF:205,MAHO堂 - おジャ魔女でBAN^2 << この行
../Anime/[おジャ魔女どれみ] おジャ魔女でBAN^2 (MAHO堂).mp3

無効なファイルパスは無視してくれるから、あってもなくてもいい情報のために曲が見えなくなってるとは思わなかった。


長かった……。

 こうしておけば無難だということのリスト

  • プレイリストのファイル名に日本語を使わない。
  • 日本語を含むプレイリストは UTF-8で保存する。
  • プレイリストには音楽ファイルのパスしか書かない。
  • パスはプレイリストファイルからの相対パスにする。
  • パスの大文字小文字は忠実に守る。
本日のツッコミ(全3件) ツッコミを入れる

charlieはじめまして。 ちゃありいと申します。 用件だけ述べさせて頂きます。 Songbirdの Playlist Exp..

ds14050自分も HTMLや JavaScriptがわかるだけで XULはさっぱりですが、わかることなら。 Songbird..

charlieお忙しい中、お返事有難う御座いました。 メールで頂けるかと思ってこちらのチェックはしておりませんでした。 自己解決..


2009年09月09日 (水) [SakuraEditor] いま配布されてる sakuraW.exeはアイコンの色がとにかく汚い。この一点だけで他人に勧められない。


2009年09月07日 (月) アマゾンからのメールを携帯電話に転送するのに失敗した。なんでだろうとソースを見たら Shift_JISがエンコードされてた。(どうして UTF-8に行っちゃわなかったんだ)


2009年09月06日 (日) 以前、Songbird Timerが新しい Songbirdに対応してないとか書いたが、sleepTimerという、まさしく目的に適ったアドオンが登場してる。GUIがあるし、フェードアウトできるし、PCのシャットダウン(任意のファイルの実行)もできるし、曲が終わるまで待つこともしてくれるし、申し分ない。


2009年09月04日 (金) 4Gamer.net ― どうしてこんな“罪作り”なゲームを作ってしまったんですか? 「ラブプラス」開発スタッフに聞く(ラブプラス)」 全然知らなかったけど、皆口さんというだけで買い。

最終更新: 2009-09-05T04:50+0900

実行中のコンピュータに PS/2 キーボード/マウスを装着すると認識されない

そりゃあそうでしょ、PS/2なんだもの、と思ったんだけど

この問題を解決するためのモジュールは、Windows 2000 日本語版サービスパック 3 以降に含まれております。

ええー。