/ 最近 .rdf 追記 設定 本棚

脳log[2009-09-18~]



2009年09月18日 (金) [C++] C/C++の文法を調べたのは 2000年頃の一時期だけだったり。テンプレートはあったけどメンバ関数テンプレートは使えないよ(うろ覚え)というような頃。= default; なんて見たことのない記述を見ておさらいをしたくなったのだった。でも、Boostのあるなしで全然別の言語になってしまうので Boostの本こそ読みたいなあ、とか。<追記> = default; とか = delete; はコンパイラの作成するデフォルトコンストラクタの類を制御するために C++0x で標準化される新文法だから知らなくて当然だった。


2009年09月17日 (木) 御の字の意味を「おおいにありがたい」ではなく「とりあえず納得、妥協できるレベルだ」というふうに思っている人の割合がけっこうあるらしい。建て前が通用しないのは構わないけど、本当に感謝してる人には迷惑な話。


2009年09月14日 (月) 高級すぎる Wiki記法は HTMLに近づいていくだけ。まして装飾タグだなんて。タグ構造とクラスをセレクタにして CSSでなんとかすべき、と思う。最初に追加するのは <code>だよー。


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 以降に含まれております。

ええー。


2009年09月03日 (木) 不用意に出すと払われたりすくわれたりします。「社交辞令というものを知らず、飲み会などに誘っても絶対来ない」 誘いが本当に社交辞令だったのなら、断るのが正解では?(上司の社交辞令) それとも誘いに乗るふりでその場を収めて、あとで理由を付けて断るの?(部下の社交辞令) どちらも発言者の意図ではないだろうけど。

最終更新: 2009-09-04T06:13+0900

[][COSMOS]["ダイヤテック マジェスタッチNキーロールオーバー カナなし 黒軸 FKBN108ML/NB"]

5日遅れて衝動買いした Excellioに遅れること 3日、Majestouch(黒軸=Linear) が到着。

20090830p01で書いたように、Excellioを USB->PS/2変換コネクタ経由で繋いでみてから M/Bがおかしくなって PS/2ポート(マウス用=緑色)に繋いだトラックボールが使えなくなっていた。そしてこのキーボードも……。ところが、BIOSセットアップでのことをふまえてマウスとキーボードを入れ替えて繋いでみたら、どちらも使えた。色の組み合わせが違っていて気持ち悪いけど、それだけなので使えて幸い。問題が起こったついでだからと BIOSをアップデートしてたんだけど、それでは解決しなかった。

出尽くしていて目新しい感想もないので箇条書きで

  • 4mmのストロークは驚くほどは深くない。むしろこれが普通。
  • キータッチは重い。努力の必要なく底付きが避けられるほど。Realforceみたいなのをバチバチ叩かないための打ち方矯正キーボードではないか。
  • Home、End、Insertキーの配置をローテートしたらキートップが凸凹に。ステップスカルプチャに困った。
  • 今見たら 10万円 PCだった VALUESTAR付属のキーボードもステップスカルプチャになってた。キーの角を斜めに押しても擦れて引っかかったりしない。3000円ちょっとで買った単体キーボード(マウスとのセット品)よりいいものだったのだ。(代わりのキーボードは最初から手元に……)
  • カサカサシャコシャコと軸が擦れる感じは、パンタグラフ+ラバードームに劣る手触り。
  • スタビライザがチャリチャリうるさい。(6つのキー)
  • ゴム付きで重たいので分厚い本も押さえられる。
  • タイプしていて前よりうるさいとは思わない。むしろ静か。キートップが安っぽい音を響かせたりせず、抑制された音。

Excellioと甲乙付けがたいけど、コストパフォーマンスは Excellioの方が 3倍良い。パンタグラフに違和感がなければ、箱つぶれ Excellioおすすめ。


資料 > スイッチ・キートップガイド構造

最終更新: 2010-06-22T11:46+0900

[C++] 型。var。

初歩の初歩ですよ。

vector<int> v(99);
for(int i = 0; i != (int)v.size(); ++i) {
}

みたいなのがあって(俺が書いたんじゃないよ)、ひょっとしたらキャストがなくても問題ないのかもしれないし、それがないと警告(符号付きと符号なしの比較がうんたらかんたら)が出るのかもしれないけど、(int)って書きたくないよね。static_cast<int>()にしろっていう問題でもなくて。iの型を unsignedにするのも若干のアドホック感がある(なんのための typedef)。かといって v.size()の戻り値の型(vector<int>::size_type?)をコピってくるのも嫌だね。たとえば(そんなキーワードはないけど) varを使って

vector<int> v(99);
for(var end = v.size(), i = 0; i != end; ++i) {
}

みたいに書きたいし、コンテナの型を何度も書く代わりにそこにある、型付けされた変数を使ってこう書きたい

list<int> l(99);
for(type(l)::iterator it = l.begin(); it != l.end(); ++it) {
}

C++のことだし方法はあるはずだけど……。(typedef list<int> hoge; はコンテナの型(hoge)を見つけてこないといけないのは同じだし、俺俺タイプをいちいち命名したくもないし)


 @2009-09-08 varではなく auto

■_ をち

2chにはせいぜいautoマンセーと0b論争がお似合い

  1. auto! まさか……この響きは……(C++0xの文脈で自動変数のわけはないし)。
  2. 検索で最初に見つかった > C++0x - auto - Faith and Brave - C++で遊ぼう
  3. 日付が 2007年。そんなに前から。全然 C++のこと知らないね。

 @2010-05-12 type(l)::iteratorの方も……

N2971: Core issue 743: decltype(...) name qualifiers

delctypeをnested-name-specifierで使えるようにする変更。簡単に言うと、delctype(T)::typeということができるようになる。
これは、日本から送った意見だ。だからどうということはないのだが。何を隠そう、信仰と勇気で有名なあの人が発見した問題だったはずだ。

「信仰と勇気で有名なあの人」って、すぐ上で autoに関してリンクしたとこの中の人でしょう。decltypeが、varに対する autoのように自分の希望をかなえてくれる本物のキーワードだってことは C++0xに関する記述を断片的に目にするにつれ知っていたけど、最初から名前を修飾する目的に使用できたわけではないとは知らなかった。行動を起こした人がいるのだ。これはもう足を向けて寝られない。


2009年09月02日 (水)

最終更新: 2009-09-02T23:44+0900

[SakuraEditor] http://coderepos.org/share/browser/platform/sakura-editor/

キーワードファイルなんかはみんなでいじくって改善するのにちょうどいいものだと思ったら、やはり、CodeReposにあった。ただし PHPのみ。

キーワードの羅列には興味がないけど(php-mkkwd.phpは別)、正規表現キーワードは共有して他人のも見てみたいなあ(楽ができるから)。javascript_re_keywords.rkwRuby_re_keywords.rkw


2009年09月01日 (火) [C++] 1994年に原著が出版されて 2005年に日本語版がでた D&Eを読んでいる。日本語版には前書きが追加されていて、「私たちはどこに向かうのか―2005-2014」という節がある。そこにはコンセプトと一般初期設定子という小節がある。でも、でも、コンセプトが規格からこぼれ落ちてる > 本の虫: Bjarne Stroustrup、Conceptと未来を語る。無情なり。


2009年08月31日 (月) >祇園精舎の…。海部さんの言葉。朝日新聞では「生者必滅」だった。読売は勝手にバリエーションを増やさないで欲しい。盛者必滅(じょうしゃひつめつ)。生者必衰(しょうじゃひっすい)。喧々諤々(けんけんがくがく)。全部間違い。でも侃々囂々(かんかんごうごう)とは間違えない。それで喧々諤々が混用だと判断できている。■「しょう‐じゃ【盛者】 シヤウ‥ (正しくはジョウシャ。「生者」と混同した誤読か)」「じょう‐しゃ【盛者】 ジヤウ‥ (ショウシャ・ショウジャとも)勢いの盛んな者。ときめく者。」(広辞苑 第6版) なにこのミスリーディング。

最終更新: 2009-08-31T09:35+0900

[Vista] やっぱりありました。Vistaで Aero Snap > AeroSnap BETA | News

今のバージョンは 0.61。とりあえず気付いた点。

  • Win+↓を何度か押してるうちに AeroSnap.exeが落ちる。
  • (起動した後、マウスで一度も snapしないうちは) Win+←や Win+→で落ちる。
  • (Aero Snapには含まれないのかもしれないけど) 下フレームをダブルクリックしたときに上下方向に最大化したい。
  • こんなエラーも出た。

    Just-In-Time (JIT) デバッグを呼び出すための詳細については、
    ダイアログ ボックスではなく、このメッセージの最後を参照してください。
    
    ************** 例外テキスト **************
    System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
       場所 AeroSnap.Application.SnapManager.SnapController.SnapTimer_Tick(Object sender, EventArgs e)
       場所 System.Windows.Forms.Timer.OnTick(EventArgs e)
       場所 System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
       場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    
    
    ************** 読み込まれたアセンブリ **************
    mscorlib
        アセンブリ バージョン: 2.0.0.0
        Win32 バージョン: 2.0.50727.4016 (NetFxQFE.050727-4000)
        コードベース: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
    ----------------------------------------
    AeroSnapApp
        アセンブリ バージョン: 0.6.1.0
        Win32 バージョン: 0.6.1.0
        コードベース: file:///C:/Program%20Files%20(x86)/AeroSnap/AeroSnap.exe
    ----------------------------------------
    System.Windows.Forms
        アセンブリ バージョン: 2.0.0.0
        Win32 バージョン: 2.0.50727.4016 (NetFxQFE.050727-4000)
        コードベース: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System
        アセンブリ バージョン: 2.0.0.0
        Win32 バージョン: 2.0.50727.4016 (NetFxQFE.050727-4000)
        コードベース: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Drawing
        アセンブリ バージョン: 2.0.0.0
        Win32 バージョン: 2.0.50727.4016 (NetFxQFE.050727-4000)
        コードベース: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    System.Configuration
        アセンブリ バージョン: 2.0.0.0
        Win32 バージョン: 2.0.50727.4016 (NetFxQFE.050727-4000)
        コードベース: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    System.Xml
        アセンブリ バージョン: 2.0.0.0
        Win32 バージョン: 2.0.50727.4016 (NetFxQFE.050727-4000)
        コードベース: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    mscorlib.resources
        アセンブリ バージョン: 2.0.0.0
        Win32 バージョン: 2.0.50727.4016 (NetFxQFE.050727-4000)
        コードベース: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
    ----------------------------------------
    AeroSnap.Application
        アセンブリ バージョン: 0.6.1.0
        Win32 バージョン: 0.6.1.0
        コードベース: file:///C:/Program%20Files%20(x86)/AeroSnap/AeroSnap.Application.DLL
    ----------------------------------------
    System.Windows.Forms.resources
        アセンブリ バージョン: 2.0.0.0
        Win32 バージョン: 2.0.50727.4016 (NetFxQFE.050727-4000)
        コードベース: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ja_b77a5c561934e089/System.Windows.Forms.resources.dll
    ----------------------------------------
    
    ************** JIT デバッグ **************
    Just-In-Time (JIT) デバッグを有効にするには、このアプリケーション、
    またはコンピュータ (machine.config) の構成ファイルの jitDebugging
    値を system.windows.forms セクションで設定しなければなりません。
    アプリケーションはまた、デバッグを有効にしてコンパイルされなければ
    なりません。
    
    例:
    
    <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>
    
    JIT デバッグが有効なときは、このダイアログ ボックスで処理するよりも、
    ハンドルされていない例外はすべてコンピュータに登録された
    JIT デバッガに設定されなければなりません。