/ 最近 .rdf 追記 設定 本棚

脳log[2010-09-15~]



2010年09月15日 (水)

最終更新: 2013-01-11T22:45+0900

[SakuraEditor] 拡張子のないファイルにもタイプ別設定を自動適用する。

どこかに書いた気がするのに見つからないのでもう一度。

サクラエディタは拡張子を見てファイルの種類を区別し、色分けルールやタブ幅、折り返しルールなどを使い分けるが、拡張子がない makefileや ChangeLogはみんな「基本」設定になってしまう。

 案1: 「拡張子」ではなくファイル名の末尾に対するマッチングでファイルタイプを区別する。

ファイル名の末尾が .rb だったら Ruby。.js だったら JavaScriptという具合。ファイル名の末尾(といいつつ全体)が makefileだったら makefile、.htaccessだったら Apache HTTPD設定ファイル。

ところがサクラエディタが設定として持ってる、判別のための拡張子リストが

c,cpp,cxx,cc,cp,c++,h,hpp,hxx,hh,hp,h++,rc,hm

という具合に、「ドット省略必須」「スペースorカンマorセミコロン区切り(ヘルプによればカンマ区切りらしいが、「,」と「.」が紛らわしいのでスペース区切りにするのがいいよ)」のリストなもんで、この案は没。広まってしまったドット省略拡張子リストに対処することができないので。

 案2(採用): 「拡張子」がないときはファイル名を拡張子として扱う。

makefileを .makefileだとみなしてファイルタイプを判別するということ。

パッチ> guess_filetype_of_extlessfile.rev2.patch (0.9KiB)

JSという名前のファイルが拡張子が .jsの JavaScriptファイルだとみなされることになるけど、気にしないよね。

 @2012-11-04 moca_skrさんによるパッチ。

>>SourceForge.net: Sakura Editor: Detail: 3581841 - タイプ別設定の拡張子を二重・なしにも対応

0 < _tcslen が使われてないところが好み。zero fill(""での初期化)するかしないかに強い意見はない。結局呼び出した関数が null-terminateするかギリギリまで書き込むかに依存するのだから。自分に影響がありそうな部分にコメントした(試してないので勘違いかも)。


杞憂だった。恥ずかし。GetDocumentTypeOfExtはパッチだけでは全体がわからないから元のファイルにあたってみて、その後でパッチの追加部分に戻ってくるのを忘れてた(という言い訳)。


GetDocumentTypeOfPathでごちゃごちゃせずに、引数として渡されたファイルパス(pszFilePath)をたどって最後のパスセパレータの次の位置を指すポインタを GetDocumentTypeOfExtに渡すだけにしたらすっきりするのに、と思った。a...............................................b.txtみたいなファイルでスタックオーバーフローを起こすだろうか。


@2012-11-06 ちょっと臆病になってここに書くけど、二重拡張子探索のためにファイル名からピリオドを探索するときに _tcschr を使ってるけど _tcsrchr ではないのかな。_tcschr を使ってるなら、すぐ上に書いたようにバッファの確保も _tsplitpathも省いて _tcsrchr(pszFilePath, TEXT('\\'))で得たポインタ+1を GetDocumentTypeOfExtに渡すのと似た結果になりそうだが。

_tcsrchrを使うには表(Shift_JISだと2バイト目が\と同じ)のような文字対策が必要で、_tsplitpathはそういうのも隠蔽してくれてるのかな。だとしたら似た結果にはならないか。

再度考え直し。_tcsrchr が _mbsrchr にマップされる可能性。_mbsrchr はうまくやってくれるのだろうか。

こんなんだからこそ JScriptでパスを扱うときは必ず

new ActiveXObject("Scripting.FileSystemObject").GetFileName
new ActiveXObject("Scripting.FileSystemObject").BuildPath

を使って、自分で文字列処理をしないのだけど、_tsplitpath が拡張子付きのファイル名を返してくれなかったりするから自前でやるはめに。Cだから固定長バッファが前提でその長さが問題になってくるからかもしれないが、ケチるんだったらポインタで返してくれたらいいのに。引数のここからここまでがファイル名ですって。正規化したいから無理だって?


 @2012-11-13

..............................................................................................................................................................................................................................................t

というファイル名を、trunk2@2457 + skr_imp_ext_ex.patchで、試してみたけれどスタックオーバーフローは起こせませんでした。ピリオドの数よりちょっと少ないくらい GetDocumentTypeOfExtが呼ばれる(二重拡張子でなく多重拡張子をテストしてる)のは確認できたけれど。

 @2013-01-11 コミットされています。

http://sourceforge.net/p/sakura-editor/code/2565/

そういう機能が欲しいと思ったから自分でも改造してたんだし喜ばしいことなんだけど、自分でビルドするサクラエディタに反映するとコンフリクト必至なのが憂鬱。

 RUNESOFTのインストーラが、ユーザーがインストール先を変更したときに、レジストリに記録するインストールフォルダ末尾に \ を付け忘れてしまい、おそらくファイル名を連結するときに \ を補わなかったのだろう、ゲームの起動に失敗するというポカをやらかしていた。


2010年09月07日 (火)

最終更新: 2010-09-15T20:40+0900

[SakuraEditor][正規表現] 検索。置換。

Command_REPLACE(置換)や Command_REPLACE_ALL(すべて置換)が Command_SEARCH_NEXT(下検索)を呼ぶのをやめたい。連携手段がレイアウト座標を基にした選択範囲しかなく、一文字で表現される CRLFの LFだけがマッチしたときに情報が欠落するし、Command_SEARCH_NEXTが持つ検索以外の事前・事後処理が無駄になるし、正規表現検索が BMatch(検索), BSubst(検索&置換)の計二回行われるのも無駄。

wchar_t単位で検索を行う CSearchAgent::SearchWordが、検索結果をレイアウト座標に変換する際の誤差(前述)を考慮してマッチ範囲を拡大し、結果を不正確なものにするのは誤りだと思う。それより、上の層でこれを呼び出している CLayoutMgr::SearchWordがその配慮を行うべきでは。

 あったらいい操作

Match
対象文字列の対象範囲全体がパターンに一致するか調べる。
Search
対象文字列の対象範囲からパターンに一致する部分を探す。
Replace
対象文字列の対象範囲からパターンに一致する部分を探し、与えられたフォーマットの文字列に置き換えた文字列を返す。(返るのは対象文字列の対象範囲に相当する文字列)
Expand
Matchや Searchの結果を用い、マッチ全体($0)を与えられたフォーマットの文字列に置き換えた文字列を返す。
パターン
BREGEXP.DLLは m/pattern/flags/pattern/replace/flag も同じ一つのパターンとして扱うので、検索用のパターンと置換用のパターンに互換性がない。そうではなく、Search(Compile("pattern", flag), "target", startindex), Replace(Compile("pattern", flag), "target", startIndex, "replace") だったら良かった。(※ "pattern" と "target" と "replace" は実際は二つの引数で表す)

bregonig.dllや bregexp.dllを使いながらパターンの共通化や Expandの不足に対処するにはどうするか。自分で Expandを実装し、dllが用意した置換機能(置換パターン)を使わないで済ませる。でもねえ、実装の数だけ仕様がある状態を避けたいから Expand機能をライブラリに用意して欲しいわけで。(置換文字列の $$ が $に展開されなかったり、\1 が展開されたり、$1が展開されなかったり、色々あるんよね)


 @2010-09-10 悪夢のような「クリップボードから貼り付ける」置換オプション。(本当は矩形選択が)

  • CRLFの CRだけや LFだけをクリップボードの内容で置き換えることができない。
  • 正規表現検索のとき検索始点(終点)挿入オプションがきかない。
  • クリップボードの形式が矩形テキストだったときに検索条件によっては無限ループ。

    例えばクリップボードに

    789
    456
    123

    という 3行9文字(改行文字はない)がおさめられているとき、マッチと置き換えられるのは 789 であり、456 123 はそれぞれ次行、次々行に挿入される。つまり、456 123 はこれから検索対象になるということだ。検索条件が \d{3} だったり ^ だったり、矩形テキストの二行目以降にマッチするものだったら無限ループ。

置換操作が二階層潜らないとロジック単位にならないというのも悩みの種。検索はロジック単位で行えてるのに、それをレイアウト単位に変換してそれがさらにロジック単位に変換されて、一対一対応じゃないからごにょごにょしないと思い通りに置換されなくて。

 @2010-09-15

どうして最上層のレイアウトを基準にして文字列処理を行わなければいけないか。文書(wchar_t列としておく)の変更を LayoutMgrに通知する仕組みを整備するのを怠って、LayoutMgrを通して文書の変更を行うことで通知を不要にしていることが背景にあるのでは? GUIを通しての文字列操作に限ってはそれで十分だからそうなるのも仕方ないし、必要に迫られた人間(俺とか)がより汎用的な手段を整備せずにダーティハック*に頼る方が罪は重いかも。

* 挿入位置・置換範囲を文字レイアウト境界まで拡大して、挿入・置換文字列も同じだけ拡張する。


2010年09月05日 (日) [Vista] Windows Explorerがバカでつらい。ファイルの移動が完了したときや「送る」メニューを使った zip圧縮が完了したときにフォーカスを操作してくれるんだけど、どちらも完了まで時間のかかる操作だからその間にファイル名の変更をしていたりする。Deleteキーで文字を削除している最中にフォーカスを奪われるとどうなるか。ファイルがごみ箱へ行ってしまう。そこがネットワークフォルダだとどうなるか。完全消滅。これにやられたのが Vistaにしてから 5回や 6回できかない。

最終更新: 2010-09-07T00:02+0900

 暑くて、パソコンの起動を、控えてしまうよ。

24型の液晶モニタもなにげに三大熱源のひとつ。

PS3はここ二か月電源を入れていない。こちらは主に本体の熱さが心配で。

 9月は夏。

10月は涼しい日が増えるも残暑は厳しく、調子に乗ってこぐと汗がふきだす。11月からが汗から解放されるチャリンコの季節。(去年の経験から)

 Songbird 1.8.0

にしたら、一曲リピートしてるあいだに曲が変わってる現象に改善が見られたんだけど、なにかのはずみで漏れる(やっぱり変わってる)。

  • パターン1 再生カウントの変化に伴う曲順の変化についていく。(正常)
  • パターン2 再生カウントが変化しても(ソート条件に逆らって)現在の位置を保つ。(新しく発見した現象)
  • パターン3 再生カウントが変化して曲の位置が変わると再生してる曲が変わる。(問題にしてる現象。再現が難しくなった気がするがまだある)

(余談) Help > About Songbird... > Credits ボタンをクリックすると文字サイズがリセットされる。

(余談2) ネットワーク上のファイルを再生中に PCをスタンバイにして、再開したときに再生が中断しなかった。毎回こうなんだろうか。だと嬉しい。


2010年09月02日 (木) ソニー、電子書籍リーダーの新モデル発表 日本でも発売へ - ITmedia News」とうとう予告していた国内販売が(11月に)。一番大きい Daily Editionを買いますよ。自炊が全く進んでないのが問題だけど。


2010年08月31日 (火) 今度の Google画像検索はかなり素敵。ただの縦スクロールでなくページ単位でスクロールするし、ちょっとずつスクロールも当たり前にできる。碁盤のようなマス目をとりはらって画面に隙間なく敷き詰められた画像が新鮮。見えてない画像を無駄に転送したりはしないけど、ひとつ次のページの画像は先読みして待たせない。ただ、画像を画面いっぱいに引き伸ばす方法が欲しいかな。(追記: Alt+←というキーボードショートカット(戻る)を知らないのは許せない。矢印キーをキャプチャするのは許容範囲だとして、モディファイアキーの状態を無視するのってない。入力をなんでもかんでも握りつぶすなら Flashと一緒)


2010年08月30日 (月)

最終更新: 2010-08-30T23:07+0900

[SakuraEditor] 2ch. 正規表現キーワード

規制で書き込めないのでここで。

583 :名無しさん@お腹いっぱい。:2010/08/25(水) 15:31:52 ID:wtW19SUb0
    頭に**がある行はコメント行として緑色にする
    という正規表現での色分けと
    ABCという言葉は赤色にする
    という正規表現の色分けを同時にする方法はありますか? 

    (省略)

587 :名無しさん@お腹いっぱい。:2010/08/30(月) 14:18:00 ID:yI6qoQsb0
    >>584
    正規表現キーワードって、設定の上下に優先度あるらしいけど(ヘルプ情報)、結局の所、先に検索で引っかかった方が優先されるらしいよ。
    wiki でバグじゃないかと報告されて、誰かが仕様じゃボケぇ、なんもおかしなことないわ! と切れてた。

    個人的には、キーワードに優先順位があるならそれに準拠して欲しいと思うんだけどね。
    なんていうか、二つの仕事を割り振られたA君が優先順位を決めて作業した結果、端から結果だけ見ると作業をひとつしか終えていないように見えるんだよね。
    言葉の意味をはき違えているように思えて、そこが気持ち悪い。 

言及されてるバグ報告ってのはこれ。>>BugReport/60 - SakuraEditorWiki

587の、自分の想定した動作モデル以外を認めない姿勢がなんだかなあ。いわく「優先順位があるならそれに準拠して欲しい」いわく「言葉の意味をはき違えているように思え(る)」。バグ報告者の方は単なる理解不足だし、あんなに噛みつかれたことに同情するけど。

優先順位は確かに存在してる。使われ方が 587の期待と違うだけで。たとえに沿って説明すると、仕事は最初から一つしかない。「正規表現キーワードの色分け」これひとつ。何をキーワードとみなすかの判断基準として複数の正規表現が存在してるだけ。複数の正規表現のマッチが重なったときに最も左から始まり最も上にあるパターンが優先される。最も左が優先されるのは正規表現キーワードを含む色分け要素(文字列、コメント、URLなど)間の順序付けにも利用されてる大原則なのでわざわざヘルプに書く必要を感じなかったんでしょうよ。上の方のパターンが優先されるというのは、コメントなど他の色分けより正規表現キーワードの色分けが優先される(これもヘルプに書いてある)と言うときと、全く同じ意味で使われている。不自然なことはない。

「先に検索で引っかかった方が優先されるらしいよ」というのは嘘。「先に」(時間的な前後)ではなく「前の方で」(空間的な前後)なら間違いではないが。

バグ報告した人(たぶん 587も)の希望する動作を強調キーワードに置き換えると、「『IN』『SELECT』『EXISTS』『JOIN』というのを強調キーワード1,2,3,4にしてそれぞれ別の色に色分けするようにしている。強調キーワード1は強調キーワード4より優先されるはずだから JOINの中の INが色分けされないのはおかしい。」という内容になる。Keywordの中に別の Keywordがあるなんて想定はない方が普通でしょう。

7195の System_UPJさんのように動作を理解した上で使いこなしてる人もいる。ヘルプには改善の余地があるとしても今の動作はバグではないし変更されると困る人が(正規表現キーワードの利用者の中では、たぶん)大多数。存在しない別の機能を要望していることに気付くべき。

583へのレスとして用意した、んで規制された、文章ものせとく。

Wikiでも似たような要望がバグとして報告されてたけど、よくある要望なんかね。
手持ちの案はこげな感じ。
1.キャブチャ部分に別の色を指定できるようにする。
2.従属的な正規表現キーワードを指定できるようにしてキーワード内キーワードを
  色分けできるようにする。
3.萌ディタのように色分けに状態を持たせる。
実装の難易度   1=2<3
設定の面倒さ   1=2<3
色分けの自由度 1<2<3

2010年08月28日 (土) [790FX-GD70] BIOS version 1.E (CPU AGESAコードってなんでしょうね。頻繁にアップデートされてるけど)

最終更新: 2010-08-28T23:16+0900

真夏のおでん

近所のスーパーにとまとラーメンを置いてるところがあって、これににんにくが入ってるので冬はたいそう体が温まる。でも夏は置いてないんよね。その場所はとんこつラーメン三種類とつけめん四種類に占拠されてる(ばっかじゃねーの。おれは塩野菜ラーメンが好きなんだっ)。エアコンや扇風機や冷たいシャワーで体の表面はよく冷えてるし、夜の間にお腹をこわすことも割とある。体の中ぐらいは温めたいと思ってるのに。

最終更新: 2010-08-28T23:16+0900

[Firefox] plugin-container.exe

(何種類かあるらしいがウチの場合は) Flashプラグインのためだけに plugin-container.exeが起動していると知って無効化した。もともと Flashblockで、クリックするまで読み込まないようにしてたんだけど、これでクリックしても表示されない。さようなら。


2010年08月27日 (金) HikiDoc 0.0.5がリリースされてる。google-code-prettifyでなく SHJS対応だったら要注目だったけど……。


2010年08月22日 (日) Excellio Lite 桃」登場。ステレオミニジャックと USBポートがなくなった、ってのが Liteの所以? 外形その他は全く同じに見える。ノートPCのようにサイズの制約があるわけでもないのに、パンタグラフ式キーボードはおかしな配列でないものが少なくて貴重。(旧 Excellioの(名ばかり)箱つぶれ品を一枚保護してあるので慌てて買いはしないけども)


2010年08月20日 (金) 銃夢の話。狂っている、精神に異常をきたしている、ということと暴力、犯罪とを(読者に)結びつけさせたくないんでしょうよ、集英社は。言葉狩りではなく。BJによろしくで読んだけど、犯罪が起こってその容疑者に精神病院への通院歴があった、という「事実」(事実は事実だけど因果関係は?痔の治療歴以上の意味があるの?)を報道することがもう偏見を助長している、という話にも通じる。偏見を拭うのは大変ですよ。入試結果に、人種をもとにして下駄をはかせるくらいの(逆)差別をしないと是正できないぐらい定着してしまってるから。


2010年08月19日 (木) GT5を予約した。ブックレット付き。車の動かし方を GT(1)の読み応えある説明書で覚えた経緯があるので期待している。


2010年08月11日 (水)

最終更新: 2010-08-17T19:05+0900

[TM-150][MX610] 久々の SetPointウォッチング。6.15, 6.10, 6.00

ダウンロードだけはしてるんだけど……

SetPoint 6.15 is available for download ..... 07/20/2010 (Mice)

07-21-2010 10:23 AM

SetPoint 6.15 is available for download ..... 07/20/2010 (Mice)

  • Fix: diNovo Edge, left - Right click issue
  • Fix: G5 default DPI settings

SetPoint 6.1 is available for download ..... 06/08/2010 (Mice)

06-11-2010 12:25 PM - last edited on 06-28-2010 09:32 AM

SetPoint 6.1 is available for download ..... 06/08/2010

Fixes:

  • diNovo Edge's Touch Disc H-Scrolling issues.
  • MX1100 H-Scrolling issues with Visio

SetPoint 6.00.68 is available for download ..... 02/25/2010

02-26-2010 09:13 AM - last edited on 02-26-2010 09:17 AM

 Title: SetPoint 6.00
 Software Version: 6.00.68
 Post Date: 02/25/2010
 File Size: Approximately 25 Mb

(長いのでこれ以降、読みながら適当に日本語化&コメント)

(SetPoint 6.00.68 is available for downloadの続き)

インストール前の注意。

  1. アプリケーションを全部閉じること。
  2. 古いバージョンが入ってるときはインストール前にアンインストールして PCを再起動するよ。
  3. Vistaでは 2のプロセスに特別時間がかかることがあるから手動でアンインストールしとくのがおすすめ。
  4. バージョン 4.xからのアップグレードでは設定が消えます。5.x(一部機種専用の SetPoint)からなら大丈夫。
  5. 使用してるデバイスの画像が表示されないときはインターネットに接続されているか確かめて。(ちょっと前のバージョンからセットアップファイルに画像(前は全機種分入ってたよね)が含まれなくなってるので)
  6. PS/2ドライバは SetPointを起動して自分でインストールしてね。インストールボタンが無効になってたらインストール済みです。

変更点。

  • 画像とコードを減らしてダウンロードサイズ減少。(どうでもいい)
  • SetPoint4系と 5系を一元化してコードの重複(インストールサイズ)を減らした。(どうでもいい)
  • 見た目が新しくなった。(どうでもいい)
  • 大量のバグ修正と安定性強化。(でも IE8でまだ Ctrlボタンが押しっぱなしになるってよ。カカクコム情報)

どうでもいい変更と、設定隠し&新しいバグの噂と、関係ない機種向けのバグ修正と。手を出す気にもならないのが幸い。ウチのは調教済みですからね。

実際のところ、書かれてない変更がいろいろあるらしいのと、アプリケーションごとの設定で新しくボタンに割り当てられる「アプリケーション固有のタスクはありません」という項目が「その他すべてのアプリケーション向けの割り当てに従います」という意味だったら、それは以前から欲しいと思っていた機能なので改善点として評価してもいい。


なんで適用ボタンを押したあともボタンが無効にならないんだ?

なんて書いている人がいますが、少なくとも ver.2.xの頃(それからいつまでか、今もそうなのかは知らない)はこういうことだったのですよ。 [OK][キャンセル][適用] → [OK][設定消えるよ][即時的用済み]キャンセルボタンを押しゃあ設定が消えた(変更分だけじゃなく既存の設定が)。適用ボタンを押さなくてもキー割り当てやスクロール速度はもう変更されていた。間違いのないように、ウチの SetPointにキャンセルボタンや適用ボタンはもうない。


2010年08月10日 (火) MORI LOG ACADEMYの新しいエントリが読めなくなって Webが少しつまらなくなった(あれこそが森博嗣の入門&著作ガイドだったし、最も影響を受けた文章だった)。最近は tabesugi.netを読んでる。※二つの文の関連は不明です。