最終更新: 2011-03-25T01:34+0900
そして素朴な疑問。選択肢が 4つあるんだけど
閉じるをクリックしても予想に反してエディタは閉じられないのと、(延々と表示され続けてもおかしくない)通知メッセージはどこに出ているのか?
シンボリックリンクを開くと、ショートカットファイルを開いたときと同じようにターゲットファイルの内容がエディタに表示される。そして他で何もせずとも、最初に必ず更新通知ダイアログが表示される。だから「再読込」を選ぶと読み込み後にまた更新通知ダイアログが表示されることになって無限ループ。「閉じる」(=ダイアログを閉じる=更新を無視する)を選ぶと今度はターゲットファイルが本当に更新されたときも察知できなくて永遠に黙る。
対策は、シンボリックリンクを開いていることを意識して、常に(ファイルの読み込みと更新監視で共通して)ターゲットファイルの更新時刻を調べるようにすること。
っていうほど単純でもない。更新日時だけ特別扱いしたらファイルの属性に一貫性がなくなる。更新監視部分でだけターゲットファイルの更新日時を比較するのが影響範囲が最小だけど更新日時を保存するメモリ領域をどこかの管理下に用意しないといけない(だれが管理する?もちろん CEditDocのメンバの CAutoReloadAgent)。一番面倒がないのはシンボリックリンクのターゲットをたぐってそのファイルを開いたことにすること(ショートカットと同じ)。なんとなくこれが嫌なのはカレントディレクトリが変わってしまうこと。他にもいろいろあると思う。ショートカットでなくシンボリックリンクを使うのは、ターゲットファイルがそこにあるようにアプリケーションをだましたいときだから、サクラエディタも(今はタイムスタンプ取得方法の一貫性のなさからかおかしなことになっているうえ、だまされているせいで更新の監視ができていないが)上手にだまされてほしい。
ので、こうした(improve_fileupdatequery_dialog.patch)。
わかりにくいと感じてるのは俺だけじゃなくて、sakura-dev:3014で wmlhq氏が書いている。
なお、更新通知ダイアログはわかりづらいようなので、次のようにしてください。 ---------------------------------------- <!> このファイルは別のプログラムによって変更されました。 読み直しますか? ---------------------------------------- [ ]今後、ステータスバーに通知する [ ]今後、通知しない ---------------------------------------- [はい] [いいえ] ----------------------------------------
日記を書く段になって見直したんだけど wmlhq氏のメッセージのほうが良い。
最終更新: 2011-04-09T17:30+0900
プレイリストの書き方がわからなかったので実験した。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の Playlist Export Tool (ver.0.1.1.14)でプレイリストをエクスポートしたら文字が化けている。「KMKM :: Firefoxのjavascriptでローカルファイルにアクセスする方法まとめ」のやり方を丸コピしたら Shift_JISでも UTF-8でも化けずに書き出すことができた。試したのだが、LinkStation Miniの PVConnectは UTF-8の日本語パスを理解する。
Songbirdでエクスポートしたままではリスト内の曲のパスが \\server\で始まるネットワークパスだが、このプレイリストはそのサーバー(NAS)に置くものなので相対パスに置換する。
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"の時点でもう失われているのだろう)
「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
無効なファイルパスは無視してくれるから、あってもなくてもいい情報のために曲が見えなくなってるとは思わなかった。
長かった……。
最終更新: 2009-09-05T04:50+0900
そりゃあそうでしょ、PS/2なんだもの、と思ったんだけど
この問題を解決するためのモジュールは、Windows 2000 日本語版サービスパック 3 以降に含まれております。
ええー。
最終更新: 2009-09-04T06:13+0900
5日遅れて衝動買いした Excellioに遅れること 3日、Majestouch(黒軸=Linear) が到着。
20090830p01で書いたように、Excellioを USB->PS/2変換コネクタ経由で繋いでみてから M/Bがおかしくなって PS/2ポート(マウス用=緑色)に繋いだトラックボールが使えなくなっていた。そしてこのキーボードも……。ところが、BIOSセットアップでのことをふまえてマウスとキーボードを入れ替えて繋いでみたら、どちらも使えた。色の組み合わせが違っていて気持ち悪いけど、それだけなので使えて幸い。問題が起こったついでだからと BIOSをアップデートしてたんだけど、それでは解決しなかった。
出尽くしていて目新しい感想もないので箇条書きで
Excellioと甲乙付けがたいけど、コストパフォーマンスは Excellioの方が 3倍良い。パンタグラフに違和感がなければ、箱つぶれ Excellioおすすめ。
資料 > スイッチ・キートップガイド構造
最終更新: 2010-06-22T11:46+0900
初歩の初歩ですよ。
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)を見つけてこないといけないのは同じだし、俺俺タイプをいちいち命名したくもないし)
■_ をち
2chにはせいぜいautoマンセーと0b論争がお似合い
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-02T23:44+0900
キーワードファイルなんかはみんなでいじくって改善するのにちょうどいいものだと思ったら、やはり、CodeReposにあった。ただし PHPのみ。
キーワードの羅列には興味がないけど(php-mkkwd.phpは別)、正規表現キーワードは共有して他人のも見てみたいなあ(楽ができるから)。javascript_re_keywords.rkw。Ruby_re_keywords.rkw。
最終更新: 2009-08-31T09:35+0900
今のバージョンは 0.61。とりあえず気付いた点。
こんなエラーも出た。
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 デバッガに設定されなければなりません。
最終更新: 2009-11-15T05:11+0900
188 :不明なデバイスさん:2009/08/03(月) 17:58:15 ID:Q6o7dXxt 好みがあるだろうからハッキリ書いておくと。 往年のThinkPadやDynabookのキーボードが好きだったという人。 こういう人はエクセリオ買ったら幸せになれる。 192 :不明なデバイスさん:2009/08/03(月) 18:45:23 ID:Q6o7dXxt 逆に言うと。 往年のThinkPadやDynabookのキーボードが嫌いだったという人。 こういう人がエクセリオ買うと不幸せになる。 193 :不明なデバイスさん:2009/08/03(月) 21:26:29 ID:0MB6rQRJ ThinkPadって一緒くたで言ってるけどどのThinkPadだよ。 TP600か?iシリーズの1200か?X32か?S30か?全部違うのわかってるか? 往年のとかひとくくりにしてるからネタ臭が消えないんだよ。 194 :不明なデバイスさん:2009/08/03(月) 22:27:36 ID:Q6o7dXxt そんな細かい型番まで憶えてないから「往年の」としか言えんのよ… そうね、日本IBM社製といおうか。「90年代の」といえばいい? 俺が知ってる(使ってた)のは90年代後半~2000年代初頭の頃。 DynaBookの方は2000年代初頭。まだスティック・ポイント(だっけ?)の頃。 どっちもWinの95~98辺りだなあ。XPの入ったThinkPadやDynaBookは 使った覚えがない。
はっはっはー。今日のタイトルに書いた「うっかり指乗せミスタイプ(ノートPCでよくある)」のノートPCってのは Windows98で、スティック・ポイントアキュポイントで、どっちが右(左)ボタン?ってなマウスボタン配置の DynaBookのことだ。不幸せになんかならないよね?逆ではなくて裏だし、いずれにしても元の命題の真偽とは関連しないから大丈夫<うるさい
楽天の FILCOキーボードショップは 3000以上で送料無料だったんだけど、箱つぶれ Excellioは 2980円で 20円足りない。キートップリムーバー(315円)をセットにした。箱も説明書もなくビニール袋に入ってるだけだったので使い方に困ったが、針金部分が同じように見えて微妙に長さが違うので、長い方をキートップに引っかけて左右に広げてからキーの奥にもぐり込ませるみたい。パンタグラフ式の Excellioには使えないので Majestouch用です。
箱つぶれ特価品なのに箱をつぶす手間もかけていない。NTT-Xストアの箱汚れ品と同じあからさまな建前商法。全然悪くはないけど。
評判通りキーは重い。ストロークは普通のパンタグラフ並に浅いが、もう少し深い方がいい。深くすると押し下げ時の左右のずれが大きくなるらしいが。深ければキータッチは軽くてもミスタイプの原因にならないと思う(これは Realforceルート?)。裏を返せば、ストロークが浅いのだから今の重さはちょうどいい。
ぺちぺちにちゃにちゃ音がするものの、そこはパンタグラフ。Microsoft Wired Desktop 500(RT2300, SN25Pのために買った間に合わせ)よりずっと静か。指がキートップを叩く音が支配的。Tab、左Ctrl、左Alt、変換キーだけはキートップからチャラチャラした音が目立つ。
左Alt手前のフレームが浮いている。手前でなければ気付かなかったのに、手のひらを置いたときに気付いてしまった。残念。
前のキーボードの慣れがあるので、Home, Endの配置はこうなった。
Home | End | PageUp |
Delete | Delete | PageDown |
右Windowsキーは右Altになった。
以下にレジストリの設定。
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Keyboard Layout] "Scancode Map"=hex:00,00,00,00,00,00,00,00,05,00,00,00,47,e0,52,e0,4f,e0,47,e0,\ 53,e0,4f,e0,38,e0,5c,e0,00,00,00,00
バイナリの意味は以下の通り。
00 00 00 00 # バージョン。0固定。 00 00 00 00 # フラグ。0固定。 05 00 00 00 # ターミネータ込みで 00000005個のマップエントリが続く。 47 e0 52 e0 # Insert(e0 52) → Home(e0 47) 4f e0 47 e0 # Home(e0 47) → End(e0 4f) 53 e0 4f e0 # End(e0 4f) → Delete(e0 53) 38 e0 5c e0 # 右Win(e0 5c) → 右Alt(e0 38) 00 00 00 00 # 終了。ターミネータがあるのに個数を入力させたのは何故?
(使えるかもしれない)スキャンコード一覧 > Keyboard scancodes: Keyboard scancodes
明日は 25日に注文した FKBN108ML/NBが来るんだけど、二枚もどうすんだ。
PS/2キーボードじゃないから S3からホットキーでのレジュームができなくなった。「Resume from S3 by USB Device (Enable/Disable)」みたいな設定が BIOSにあるけど、キーに触っただけで復帰するのは勘弁してほしい―だからマウスによるレジュームも無効にしてる―からやはり PS/2キーボードだな。
箱の裏面の白い部分がものすごく黄ばんでる(ような色をしてる)。角のほうにわずかに白い部分があるから、もとは全部真っ白だったのかも。(このへんが「箱つぶれ」?)
Excellioをマウス用の USB->PS/2変換コネクタを通して接続してみたけど、やっぱり使えず、USB専用キーボードだった。ところで、確認を終えて元の通りに繋ぎ直しても、PS/2に接続していたトラックボールが使えなくなっていた。BIOSセットアップに入ってトラックボールをいじると、右移動=F5、右ボタン=F6みたいにキーボード扱い。くまった。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout にも設定してみて改善するか様子を見る。
CapsLockの位置に左Ctrlがあると、左Ctrlと組み合わせられるキーが増えるね。これは良い。
最終更新: 2013-09-14T00:17+0900
使えないのを知っていて以前から HikiDocフォーマットでタイトルを書いていた。>>20090823 >>20090403
これを HTML化するのは意外と簡単。プラグインでできる。
add_title_proc {|date, title| if title.index('<') title.sub(/<span class="title">([^<>]+)<\/span>/){ %/<div class="title">#{WikiSection.new(CGI.unescapeHTML $1).body_to_html}<\/div>/ } else WikiSection.new(CGI.unescapeHTML title).body_to_html end }
今日のタイトルに含まれる「==日記==ブログ」という部分があまりにわかりにくかったので、HTML化してみた次第。URL自動リンクも有効になって、うまうま。
勘違い発覚。Headingがブロック要素を包含できる気がしていたが、Heading自身がブロック要素だということの記憶違い。<div>を含めちゃだめだ。
修正。
add_title_proc {|date, title| inline_or_nil = lambda{|src| lines = src.split(/\r?\n/) return nil if 1 < lines.length html = WikiSection.new(lines.first).body_to_html return nil if html[0,3] != '<p>' or html[-4,4] != '</p>' return html } if title.index('<') title.sub(/<span class="title">([^<>]+)<\/span>/){|_0| html = inline_or_nil.call(CGI.unescapeHTML $1) html ? %/<span class="title">#{html}<\/span>/ : _0 } else inline_or_nil.call(CGI.unescapeHTML title) or title end rescue title }
それなりにチェックはしてるけど、ブロック要素を返すプラグインを呼んだりしたら(HTMLの文法的に)即アウト。
♭ charlieはじめまして。 ちゃありいと申します。 用件だけ述べさせて頂きます。 Songbirdの Playlist Exp..
♭ ds14050自分も HTMLや JavaScriptがわかるだけで XULはさっぱりですが、わかることなら。 Songbird..
♭ charlieお忙しい中、お返事有難う御座いました。 メールで頂けるかと思ってこちらのチェックはしておりませんでした。 自己解決..