/ 最近 .rdf 追記 設定 本棚

脳log[2009-09-06~]



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 デバッガに設定されなければなりません。

2009年08月30日 (日) 黒軸の Majestouchを買うにあたって英語配列にしようか迷った。不要な変換/無変換/カタひらキーが最初からないし、引用符の入力がしやすそうだから。でも右シフトとバックスペースキーは長すぎる。そのスペースで Enterキーを大きくして、IMEのオンオフを Altなしの 1キーで行えるようにしたい。結局、日本語フルキーボード。これの記号類の配列は、Shiftの状態によらず ASCIIコードの下位 4ビットが同じなのだそうな(はたしてそれに実用的な意味があるか)。PnPの必要がなく、M/Bも AMD系で徹底したレガシーフリーというわけでもないので、キーボードは妙な制限のある USBでなく PS/2で繋ぎたい。だが無線もいい。PS/2延長ケーブル(一緒に買った)を使うくらいなら無線がいい。Majestouch Wirelessという Bluetoothと黒軸採用のキーボードがほとんど同じ値段で売られている。だが Bluetoothは OSが起動するまで使えないのが普通。レシーバによっては BIOS操作のできるものもあるらしいが確実ではない。今回は見送り。非常に残念。……。ちょっと重めのパンタグラフ式だと、うっかり指乗せミスタイプ(ノートPCでよくある)を防ぎつつ、静かに打てるだろうか。パンタグラフ式って悪くないんだけど、むしろ良いんだけど、ノートPCのおまけ品質キーボードとの分かち難い連想が評価を不当に下げてるかも。十分なストロークがあって、隣接するキートップの間に十分な溝があって、黒軸茶軸みたいにハッタリのきいた高級パンタグラフ式の登場を待つ。……Excellio? 「登場を待つ」ではない。退場(生産終了)済みでした。……箱つぶれ特価品? ぽちっ。

最終更新: 2009-11-15T05:11+0900

[][COSMOS]["ダイヤテック Excellio(エクセリオ) 日本語 カナなし FKB109EXNB"]

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のことだ。不幸せになんかならないよね?逆ではなくて裏だし、いずれにしても元の命題の真偽とは関連しないから大丈夫<うるさい


 到着@2009-09-01

楽天の FILCOキーボードショップは 3000以上で送料無料だったんだけど、箱つぶれ Excellioは 2980円で 20円足りない。キートップリムーバー(315円)をセットにした。箱も説明書もなくビニール袋に入ってるだけだったので使い方に困ったが、針金部分が同じように見えて微妙に長さが違うので、長い方をキートップに引っかけて左右に広げてからキーの奥にもぐり込ませるみたい。パンタグラフ式の Excellioには使えないので Majestouch用です。

箱つぶれ特価品なのに箱をつぶす手間もかけていない。NTT-Xストアの箱汚れ品と同じあからさまな建前商法。全然悪くはないけど。

評判通りキーは重い。ストロークは普通のパンタグラフ並に浅いが、もう少し深い方がいい。深くすると押し下げ時の左右のずれが大きくなるらしいが。深ければキータッチは軽くてもミスタイプの原因にならないと思う(これは Realforceルート?)。裏を返せば、ストロークが浅いのだから今の重さはちょうどいい。

ぺちぺちにちゃにちゃ音がするものの、そこはパンタグラフ。Microsoft Wired Desktop 500(RT2300, SN25Pのために買った間に合わせ)よりずっと静か。指がキートップを叩く音が支配的。Tab、左Ctrl、左Alt、変換キーだけはキートップからチャラチャラした音が目立つ。

左Alt手前のフレームが浮いている。手前でなければ気付かなかったのに、手のひらを置いたときに気付いてしまった。残念。

前のキーボードの慣れがあるので、Home, Endの配置はこうなった。

HomeEndPageUp
DeleteDeletePageDown

右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みたいにキーボード扱い。くまった。


 追記@2009-09-06: S3から復帰後にキーマップが元に戻ってることがある(今日で 2回目)。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout にも設定してみて改善するか様子を見る。


 @2009-06-13

CapsLockの位置に左Ctrlがあると、左Ctrlと組み合わせられるキーが増えるね。これは良い。


2009年08月28日 (金) はてなの引用は元ページのタイトルを自動取得できるのねん。「404 Not Found」からの引用になってる日記(マジックリン!)を見て気付いた。日記ブログの書かれた当時は当然 404ではなかったはずで、どういうタイミングでページ取得を行ってるんだろう。■■■@2013-09-14「Hatena Pagetitle Agent/1.0」っていうのがそうかな?

最終更新: 2013-09-14T00:17+0900

[tDiary] 一日のタイトルを HikiDocフォーマットで HTML化。

使えないのを知っていて以前から 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の文法的に)即アウト。


2009年08月27日 (木)

最終更新: 2010-02-02T01:32+0900

[][BAD BOY] ["キャットアイ(CAT EYE) サイクルコンピューター CC-RD300W CC-RD300W"]

3台目は CATEYE CC-RD300W。無線。現在/平均/最高速度計測。ケイデンス非対応。

リセットを繰り返していた CC-MC100W が、とうとう電池を替えても画面が映らなくなったので買い換え。

平均・最高ケイデンスを記録できる CC-TR200DW V2C が第一候補だったが、ラップ機能が不要なのと、測定結果を 14まで保存できるがその記録の中に積算距離(オド)が含まれていないせいで役に立たない(オドだけがログのプライマリキーになれる)のと、5分で節電モードに入ったあとの計測再開が手動なのが不満。

CC-RD300Wより新しい CC-RD400DW というのもあるが、付加機能のケイデンス機能が現在ケイデンスの表示にしか対応していない。センサー部の電池寿命が他機種の多くの半分にあたる半年間しかない。より高機能な V2Cとの実勢価格差が¥2000というのも躊躇させる。ちなみに付加機能はケイデンスだけでなく無線の ID対応というのもある。

結局、壊れた CC-MC100Wより機能が絞られてるわりにお高い CC-RD300W にした。最低限必要な機能は揃ってるし、ちょくちょく落っことすので高級機はもったいない。走行中のモードの切り替えはやりやすくなっているが、ブラケットから外した状態ではむしろやりにくい。俺の使い方では、外してからの操作の方が実は多かったり。ブラケットからの取り外しも固くてやりにくい。ツメが削れて外しやすくなってきたときは、走行中に落っこちやすくなったとき。センサーは CC-MC100Wのが流用できた(どちらも無線 ID非対応だから)。


ダメ。ボタン長押しでリセットというのが、本体自体がボタンになってることと相まって、誤爆しまくり。HL-EL400 のバンドが走行中に開かないように(すぐに固定がゆるむへなちょこ)、CC-MC100Wでやっていたように、CC-RD300Wをバンドの上に重ねて取り付けたらシーソーみたいにボタンが押し下げ状態になってリセット。本体をブラケットから取り外すときも、もたもたしないでガッと外さないとリセット。リセットボタンを新設して、ブラケットとの脱着方法を考えなければ次はない。


2009年08月25日 (火) Emacsってイーマックスだったのねん。エマックスだとばかり……。VMAX(名前からの連想)みたいなデカブツは好みじゃないんだよね……って、どちらも重量級だからそれでいいのか。Emacsは(名前も含めて)好きにならないだろう。

最終更新: 2010-05-19T17:19+0900

[SakuraEditor] クォーテーション文字列の色分け。

 確かに変ですが、ここの部分をきっちりやろうとするとレイアウト処理性能にシビアに影響するみたいです。
 ざっと試したところでは、ファイル読み込みで1.5~3倍くらいの処理時間がかかるようになってしまいました。
 右端で折り返す設定で画面幅を変化させるときの応答にも同様に効いてきます。

さらりと、できなくはないと書かれているが、どうやるんだろう?

sakura_core\view\colors\CColorStrategy.cpp の後半(「色開始」部分)をこう書きかえてみても中途半端な結果。ファイルの内容は同じでも、文字の追加や削除、アンドゥなどの操作によって、意図通りの結果になったり現行通りだったり。処理速度に関しては、5MBのファイルを開いてファイルタイプをいろいろ切り替えてみたら、変更前よりプログレスバーの進みが明らかに遅い。1.5から 2倍というのは体感に一致している。

bool CColorStrategyPool::CheckColorMODE(
	CColorStrategy**	ppcColorStrategy,	//!< [in/out]
	int					nPos,
	const CStringRef&	cLineStr
)
{
	//色終了
	if(*ppcColorStrategy){
		if((*ppcColorStrategy)->EndColor(cLineStr,nPos)){
			*ppcColorStrategy = NULL;
			return true;
		}
	}

	//色開始
	if(!*ppcColorStrategy){
		for(int i = 0; i < (int)m_vStrategies.size(); ++i) {
			if(m_vStrategies[i]->BeginColor(cLineStr, nPos)) {
				*ppcColorStrategy = m_vStrategies[i];
				break;
			}
		}
	}
	return false;
}

違う。CheckColorMODE()のときに正規表現キーワードは働いてない。そもそも CheckColorMODE()の目的って? CLayoutMgr::Match_Quote()がとりあえず行末を返す( return cLineStr.GetLength(); )のって? それでどうやって行をまたげているんだろう。


白々しさ爆発だけど書く。下は sakura/trunk2/sakura_core/doc/CLayoutMgr_DoLayout.cpp から削除されたコード(の一部)。この部分が修正を加えられたうえで sakura_core/view/colors/CColorStrategy.cppに移動している。return falseを使わずに breakしているあたりがさらに嘘くささを増してるけど、別に、このときの変更をロールバックしたかったわけじゃない。知らなかったし、参考にしたのは SColorStrategyInfo::DoChangeColor()の方。

	if(!*ppcColorStrategy){ 		
		CColorStrategyPool* pool = CColorStrategyPool::Instance(); 		
		for(int i=0;i<pool->GetStrategyCount();i++){ 		
			CColorStrategy* pcSample = pool->GetStrategy(i); 		
			if(pcSample->BeginColor(cLineStr,nPos)){ 		
				*ppcColorStrategy = pcSample; 		
				//bRet = true; 		
				break; 		
			} 		
		} 		
	} 		

俺が感じたプログレスバーの進みの遅さはたぶん基底クラスからの仮想関数の呼び出しに伴うものだったんだろう。一歩戻って進んで、ふりだしに戻る。


CheckColorMODE()がないとクォーテーション文字列が行をまたげない。

レイアウト(禁則処理とか折り返しとか)とクォーテーション文字列(+コメント)の関係がわからない。癒着してるなら、ボトルネックにもなってるらしい CheckColorMODE()をなくして、正規表現キーワードが行をまたぐことでカバーしたい。


 @2010-05-19 関連ログ発見

http://sakura-editor.sourceforge.net/cgi-bin/cyclamen/cyclamen.cgi?log=dev&v=4079#4083

サクラエディタの色分け解析ルーチンは、全部で3つあって、

  • 行データの変更に、各レイアウト行の先頭色を決めるもの(CLayoutMgr)
  • 実際の作画時に各文字の色を決定しつつ作画するもの(CEditView::OnPaint)
  • 対括弧の色を戻すときに各文字の色を決定するもの(CEditView::GetColorIndex)

2009年08月24日 (月) [Vista] エクスプローラは痴呆気味だけど「>explorer .」でカレントディレクトリを開けるのがえらい。MDIEに乗り換えなかった理由の一つ。

最終更新: 2009-09-24T04:29+0900

[SakuraEditor] 最近使ったファイルを名前でソートしないで!

方法は sakura/trunk2/sakura_core/sakura_rc.rcから CBS_SORTを一か所削除するだけでした。CRecentImp.AppendItem()が名前に反してあえて「アイテムを先頭に追加」しているけど、俺もそれが自然だと思う。「開く...(ドロップダウン)」ツールバーボタンから出るポップアップメニューには CBS_SORTみたいなフラグがないのだろう。ソートはされていない。望み通り。でも Windowsはスタートメニューの最近使った項目をファイル名でソートしてる。そういう考え方もあるんだろう。好きにやります。

ダイアログつながりで、拡張子補完も完全に切った。お節介は不要。拡張子補完って主にエクスプローラで拡張子を隠したままにしてる人のためにあると思う。


2009年08月23日 (日) またしても LADY GREY欠乏の危機。(前回>>20080314, 20080617)。だだっ広い(体力と時間を浪費させる)ショッピングモールができたあおりなのだろう、電器屋が移り、本屋が撤退し、スーパー(+パン屋)がなくなった。レディグレイの他にも 1500円くらいするもの(缶の大きさは隣に並んでいた 500円のものと同じだった)を置いていたり、ちょっと変わった店だった。他のスーパーを 7、8件まわってみたけど全然駄目。徒歩 5分の FRESCOは唯一、点を稼いだがティーバッグに戻るつもりはない。400円/85gだったのを覚えていると片岡物産の Webサイト(525円/85g)で買うのもためらわれる。


2009年08月21日 (金) 悪意のあるコンパイラを見破るのは難しいよなあ > Delphi + Induc

最終更新: 2009-08-24T23:53+0900

[]ちうもん。

STAY~夜明けのSoul~(初回限定盤A)(DVD付) STAY~夜明けのSoul~(初回限定盤A)(DVD付)
GARNET CROW
GIZA
¥ 2,843
たまにアマゾンを検索して CDの発売を知る。