/ 最近 .rdf 追記 設定 本棚

脳log[2010-07-09~]



2010年07月09日 (金) Windows Confidential: The Third Rail of Keyboard Shortcuts | TechNet Magazine」を読んでの違和感。レイモンド チェンは Win+Eがどこを開くかの話をしている。おれは Win+Eがどこを開くかなんて確かめたことがなく、Windows Explorer――フォルダを表示するときに利用される簡易表示ではなくフォルダツリーが付いた正式版――を起動するためのショートカットだと思っていた。そんで、だから、使ってない。

最終更新: 2014-01-02T18:04+0900

[SakuraEditor][正規表現] 「鬼車と bregonigに hitEnd(20100531p01)機能が搭載されることを願う他力本願日記」

なんてことをこの日記の冒頭に掲げたもんだから自分でやってみた(どういうこと?)。

 更新履歴

rev3 (2010-09-05, そのうち書く)
(サクラエディタ) 複数行検索を利用した複数行置換を実装。(複数行全置換はまだ。似たようなコードだし必要なのは手間だけだけど)
rev2.1 (2011-01-29)
(サクラエディタ) バグ修正。複数行検索モードでマッチ位置をバッファ内インデックスから(行,桁)に変換する際にミス。誤った検索結果が表示されることがあった。
rev2 (2010-08-27)
(サクラエディタ) 複数行検索モード実装。(正規表現を使った下検索のみ。50MiB制限あり。制限による探索打ち切り・マッチ範囲切り上げの通知なし)
テストバイナリ+変更点(test_multiine_search.zip)
rev1
(鬼車) 普通のマッチなしと、入力次第でマッチする可能性のあるマッチなしに異なる戻り値を割り当てた。
(bregonig) 入力不足のときに BMatchの戻り値を 0(正常終了,マッチなし)にして、エラーメッセージで入力延長によるマッチ成功の可能性を伝えている。
(サクラエディタ) 下検索での入力不足によるマッチ失敗をステータスバーで通知。

 bregonig

既存アプリに影響があるので良くないけど、bregonigへの暫定的な変更はこう。

 regexec_onig(bregonig.cpp)
	} else {
		/* ERROR */
		onig_err_to_bregexp_msg(err_code, NULL, msg);
-		return -1;
+		return err_code == ONIG_MISMATCH_INPUTSHORTAGE ? 0 : -1;
	}

入力が足りなくてマッチしなかったときは、エラーメッセージをセットするけど戻り値は負数(エラー)ではなく 0(マッチなし)。

 鬼車

鬼車(5.9.2)に「K.Takata's software : bregonig.dll」で手に入る onig-5.9.2-mod.diffを適用したものをさらに変更。マッチに失敗したときのエラーの種類で hitendしたかどうかを伝える。ちゃんと動くのか非常にあやしい代物。TODOもいっぱいある。

  • 特定のパターンのパターンに向けた最適化を無効にしている。(そこまで手が回らない)
  • backward searchに対していつ hitendフラグを立てていいのかわからない。(ので未対応)
  • "aaaaa\n" という文字列から [a\r\n]+a というパターンを検索したときにバックトラックにより "aaaaa" がマッチするわけだが、その次の行にも "aaaa.." という文字が続いていた場合は……。一応マッチは見つかっているが hitendフラグも立てたい。
  • [\w\W\s\S] というようなパターンで、メタ文字の登場順([\W\S\w\s]とか)に 依存しておかしな結果になる。(もちろん俺のミス。原因は解らない)

やっぱり鬼車は手に負えないかも。

 サクラエディタ

なんのことはない、影響を受ける既存アプリにはサクラエディタが含まれている。正規表現のコンパイルエラーと入力不足によるマッチなしを区別するためにちょっと変更した。

 複数行検索モード

一行検索(従来動作)してみて、マッチが行末まで続いていたり次の行の内容次第でマッチが成功に変わりそうなときはとりあえず二行ぶん検索してみる。それでも状況が同じなら 50MiBのバッファを埋めてから三度目の検索を行う。50MiBって大きすぎるだろうか。大きさの問題だろうか。かかか。

実装は CSearchAgent::SearchWord()に。これって単語検索専用のメソッドではなかったのですよ。CGrepAgentもこれを利用したらよかった。

バッファの実体は std::wstringで。文字列を比較するにも wmemcmpなりを使おうとして結局 std::wstring("hoge") == L"hoge" を使ったへたれなので、str系のライブラリ関数は恐ろしくて毎回すぐに投げ出します。(あれを使いこなせる人は VBや PHPも使いこなせると思うんですよ)

 TODO
  • 上検索。
  • 検索語ハイライトの処理がたぶん一行ごとに行われている。一行ずつ進みながら複数行を対象に検索を行ってるってわけ。無駄だし目に見えて遅い。
  • バッファ長の制限により、マッチ範囲が途中で切られたりマッチの探索が打ち切られたりしても何も言わないのをなんとか。(制限をなくすかメッセージでも)
  • SourceForge.net: Sakura Editor: Detail: 2309002 - 正規表現による複数行検索対応(簡易版)」のコメントを見ると、検索語ハイライトのほかに「すべて置換」にもパッチが必要そう。パッチを流し読みしてたら BookmarkManager(::MarkSearchWord)までが GrepAgentが持ってたような検索の勝手実装を持ってるらし。SearchAgentを使ってよね。(あ、いや、SearchAgentは当時なかったんだっけ)
  • (複数行)検索にマッチしたなかでも、最初の行がマッチに含まれているか含まれていないかというのは区別する価値がある。サクラエディタの既存の実装は行指向が強いだろうから、「マッチした(ただし先のほうの行で)」ということを勘違いしかねない。(SearchAgentや選択範囲にはそういう指向がないから運良く複数行検索が自然に実装できただけ)
  • (@2011-08-01) [\s\S]*$ というパターン。最後の行の末尾までマッチして欲しいのに一行目の改行直前で止まってしまう。マッチに成功したときの hitEndフラグの扱い。

 @2010-07-12 「鬼車 for Java

hitEnd()の実装の参考になるか?と思ったけどそうもいかなそう。

Revision  74 hitEnd()の実装(但し仕様は満たしていない)。
Revision  85 useAnchoringBounds()及びuseTransparentBounds()に対応。→hitEnd()の実装を修正。
Revision 103 hitEnd()に@Deprecatedを追加。
    /**
     * This method is experimentation phase, and implementation has not been completed yet.
     * @return
     * @deprecated
     */
    @Deprecated
    public boolean hitEnd() {
        return (hasAnchoringBounds ? (range == region.end(0)) : (input.length() == end()));
    }

hasAnchoringBoundsが設定されてる場合は無視するとして、そうでないときは入力の長さとマッチの末尾(end())が一致してることをテストしてるだけに見える。それって hitEnd()とは違うよね。5月31日の日記文字列 aa に対してパターン aa を適用したときに hitEnd()が falseになった事例を引用した。

そうそう。これこそが hitEnd()の使い道 >Check if string is a prefix of a Javascript RegExp - Stack Overflow コメントの最後に見たことのある名前が☺


 @2010-07-12 PCRE

PCRE(現在 ver. 8.10)は戻り読みも再帰も(パターンのコンパイル時の)改行指定オプションもスキャナー的に使うための hitEnd()のような機能(read pcrepartial)も、およそ欲しいものをすべて備えている。悪名高いスタックオーバーフローにも、1.スタック使用量を減らす。2.代替メモリ確保関数を使う(汎用ゆえに遅いmalloc/freeか自作)。3.pcre_exec()の代わりに pcre_dfa_exec()を使う。みたいな各種対策があるらしい。


2010年07月08日 (木) apple-touch-icon.pngとか apple-touch-icon-precomposed.pngとか。favicon.icoや robots.txtと同じようにサイズ 0のファイルを置いた。満足していただけました?


2010年07月06日 (火) [SakuraEditor] 煩雑な変換メニュー。「半角英数→全角英数」「半角+全カタ→全角・ひらがな」「半角カタカナ→全角ひらがな」みたいな。1.カタひら変換と全半変換をわける。2.変換元の情報はいらない。それと、0.表記を統一する。これだけでずっと見つけやすくなるのに。「英字・数字を半角にする」「ひらがな・カタカナを全角にする」「カタカナをひらがなにする」でもきっと約物で紛糾するな。


2010年07月05日 (月)

最終更新: 2010-08-08T15:03+0900

[W53S] auから料金プランで不当な差別を受けている。

基本料金の安いシンプルコース用プランにのりかえたいができない。

「シンプルコース」開始 (2007年11月12日) 前より現在の携帯電話機をご利用いただいている方は、「シンプルコース」で携帯電話機のご購入 (機種変更) が必要です。

シンプルコース用のプランを選択するには、シンプルコースを契約して補助なしで端末を一括か分割払いで買うか、フルサポートコースを二年以上続ける必要がある。

フルサポートコースってのは、端末購入補助があるかわりに端末を二年以上使用しなければいけない縛りがある(補助を毎月の高めの基本料金で返してる実態があるから、即解約(端末は手もとに残る)で補助金丸儲けはできない道理)。二年たつとシンプルコースに移れる。

さて、2007年11月12日より前からだから最低でも二年半以上、今の端末をフルサポートコースなみの基本料金で使用してきた俺がシンプルコースを選択できない理由はなんだろう。

この差別の不当な実態がこれ。

格安端末にシンプルコースで機種変更して、SIMを新端末から旧端末に差し替えるんだと。「また一度他社にMNPで移動し、再度auに戻ってきても新規料金が適用されるので安くなります。」なんて返答も。バカなの?(auが)で済まされることではない。馬鹿にしてる。2007年に総務省の要請を承けて?、今より優遇されてたフルサポートコースと、今とは正反対にやる気のないシンプルコースとをもちだしてきたときも感じたが(⇒20071004p01)、端末の――SIMロックされてたり SIMなんかなかったんだからそれは「回線の」と同じ意味だ――長期利用者を蔑ろにしすぎ。過去には長期利用者にメリットのないフルサポートコースと誰にもメリットのないシンプルコースの二択を迫り、今は料金プラン変更のために新端末を買えとか。いらんものはタダでもいらんから格安端末のために 1円だって出さない。でも高い基本料金を払い続けるのもしゃくだ。auが悪いんじゃなくて(腹は立つし捨てたいが)、代わりの選択肢がドコモとソフトバンクなのが悪い。

最初にキャリアに本体代金として高額を上納して、代わりに月々の利用料を多少安くしてもらう仕組みができただけ。

携帯本体という名の「上納金」を、月々ちょっとずつ払うか(auのフルサポートコース)、最初に一括で払うか(auのシンプルコース)、上納金の払い方が 2種類になっただけです。

でも、最後にもう一度だけ申し上げますが、07年11月以前よりauを継続利用中の方はくれぐれもご注意ください。あなた様が支払い続けている高い月額使用料、それは上納金としては一切カウントされておりません。上納金にすらならない無駄金を今日も明日も明後日も、あなたがそれに気づくまで延々と支払い続けているこの事実を、auは決して教えてはくれません。

うまくすれば上納金はなくせるみたいだし、今はシンプル=一括、フルサポ=分割という対応もなりたたないが、シンプルコースに移れない理由を説明しようとするとこれが答えなんでしょうね。自分の実感を自分より上手に代弁してくれてる。auに(自分の口から発せられた)建て前*をのませることはできないのかな。過去にさかのぼって、不当な制限により支払いを余儀なくされた基本料金の差額も取り返したい。

* 「携帯電話ご購入代金をお客様に全額ご負担いただくかわりに、月々の基本料金を安く設定した料金プランがご利用いただけます。」


2010年07月04日 (日) SyntaxHighlighter-3.0.83。メジャーアップデート。1.ソースコピーのために Flashを使わない。2.行番号とソースがいっしょくたにコピーされない。3.タイトル付けと折りたたみ表示。4.その他。1<誰もダブルクリックなんかしないでコピーすると思うけど、ダブルクリックする/しないで見た目以外の違いがでたりするの? 2<行番号の表示はやっぱり(⇒20090313p01)一行二列の <table>だった。これが現在の答えだよねー。Webpage<"What's new in 3.0?"という ver.3の詳細な解説を、/SyntaxHighlighter/whatsnew.htmlというコンテクストに依存した URLで行うことは(リンクがはれないので)おすすめしない。


2010年07月03日 (土) 『遅刻してしまった原因は、電車が遅れたからではない。遅れる電車に乗ったからだ』:永井孝尚のMM21:ITmedia オルタナティブ・ブログ」極端な例を持ち出して反論してるコメントがあるけど、基本的にタイトルが正しい(というか、言い訳無用なのは遅刻の結果に責任をもてるかどうかにかかっているからだといえる)。病欠で喜べるのは中学生まで(高校生は授業に追いつくのが大変)。遅刻を電車のせいにできるのは高校生まで(本心ではこれにも反対)。鉄道会社もしょうもない券(延着証明?)を発行したりしないで、払い戻しか何もしないかにしたらいいよ。雨雪で電車は簡単に遅れるしそれはチャリ通も同じ。それなのにあの差別!


2010年07月02日 (金) 紅の豚はラピュタやナウシカとは違っていてどれも一番好きだ。


2010年07月01日 (木) あの「二千円札」はすでに製造中止、ほとんど流通せず在庫の山に - GIGAZINE」俺は二千円札好きだよ。金額がイレギュラーなところとピンクのキラキラが。これまでに何枚か(笑)まわってきたけどできるだけ財布に残してた。


2010年06月30日 (水) らばQ:エンジニアって実はこんなこと考えてるんだね…と理解できるジョークいろいろ」ここに出てくるエンジニアは友人の選択を間違えてないか。(話がつまらん)


2010年06月29日 (火) 自転車だと少し手前で信号待ちする件」あるある。青になった瞬間に交差点に飛び出すのは常識(もちろん左右からくる車は念入りに確認して、ぎりぎりかすらないように減速する)。信号の青になる順番は覚えるし、全部の信号が赤になってから青に切り替わるまでの時間が例外的に長い交差点や黄色が例外的に短いところも覚える。自転車だと走行速度がほとんど一定で信号の周期から外れるのが難しいから信号間のペースもそれぞれ決めていてむだにとばさない。

最終更新: 2010-07-05T02:41+0900

gdippを 0.7.6から 0.8.1へアップデート。

0.8.0の変更点にこんなんがある。

Support DirectWrite. Since the minimum system requirement of DirectWrite is Windows Vista, gdipp is no longer available in Windows XP.

サクラエディタで文字が表示されるまでの時間が二呼吸は遅くなるけど、文字がつるっつるのえろえろになるんだから仕方がない。つぶつぶがたがた文字よさようなら。

Firefox3.6.6に使うと文字が選択範囲に入ったときに位置がずれる。文字として存在しない空白が表示されたりもしてる。0.7.6では違ったはずだが。Firefoxに gdippを適用して嬉しいことのひとつは日本語の oblique表示が美しい(というか、まともである)こと。

DirectWriteを rendererに選ぶと文字を太らせられないのだろうか。ちょっと線が頼りないのだけど。


gdipp_loader_32.exeが、引数として与えられたプロセスが終了するまで終了しなくなってる。WaitForSingleObject(pi.hProcess, INFINITE);してるんだから必要なことなんだろうけど残念。


gdipp_loader_32.exeは第一引数(任意の exeファイル名)のディレクトリをカレントにして exeを起動するけど、そのせいで exeに渡される二番目以降の引数が相対パスだったときにファイルを見つけられない。例えば次のようなのが失敗する。

Desktop>"C:\Program Files\gdipp\gdipp_loader_32.exe" C:\Windows\System32\notepad.exe file_on_desktop.txt
# Notepad can't find file_on_desktop.txt

こちら(↓)が成功することを考えると、上は期待はずれの結果。

Desktop>C:\Windows\System32\notepad.exe file_on_desktop.txt
# O.K. Notepad opens file_on_desktop.txt

2010年06月28日 (月) 湿気がすごい。むしむしする。今日のスピーカーから聞こえてくるエクリップスが妙に好みの音。不快な振動低音嫌い、くっきりヴォーカル好き、のはずなんだけど。


2010年06月27日 (日) 一人だけ異なる作戦をとり、最後の数周、温存していたタイヤでアロンソとブエミの二台を抜いてみせたカムイに拍手。でも「クラッシュ覚悟で……」というコメントは評価しない。非力なマシンでオーバーテイクするために一割二割そういう要素があったとしても、「いけると思ったからいった」とコメントして欲しい。そんで判断の正しさをこれからも証明し続けて欲しい。


2010年06月26日 (土) メタンは CH4。分子量は 16。アンモニアは NH3。分子量は 17。たぶんね。だのにどうしてアンモニアの方が軽いなんて答えちゃったんだろう(それはね、スイヘーリーベ……より先に H<O<N<C。価電子の数の大小が頭に浮かんだからorz)。お部屋でのファッションショーが 2着で終わってしまった……。