/ 最近 .rdf 追記 設定 本棚

脳log[2018-05-18~]



2018年05月18日 (金)

最終更新: 2018-06-06T13:48+0900

MeryRelay2

テキストエディタ Mery はシングルプロセス型のタブエディタだから、svn や git のコミットメッセージを編集するためには工夫が必要らしい。工夫でなんとかなるということである。

別プロセスで編集 - MeryWiki

このプラグインは C# で書かれてる。秘訣がこれ>「.NETプラグイン開発キット - MeryWiki」 DotNetLib.dll のソースが読みたいよね、ていうかこれもユーザー投稿なの?

で、プラグインを Mery2.6 の 64ビット版で試してみたんだけど、動かないのはここに書かれていた通り>「【要望】Gitの編集

再コンパイルするだけで動くんじゃないかという気もするんだけど C# はさっぱりなので、思いつきで名前付きパイプを使った方法を試してみた(プラグインもパイプも初めて!)。「プラグインソフトウェア開発キット」の C/Basic プラグインを骨組みにして必要なところだけ書き換える感じ。

.NET プラグインの方のヘルプには OnEvent を上書きするとアイドルイベントまで捕まえてしまうからできるだけ個別のイベントハンドラを実装するようにって書いてあるんだけど、C プラグインのスケルトンには OnEvent ハンドラしかなかった……。

こうなりました>MeryRelay2.zip(あとの方に新しいのがある)。64ビットコンパイラってただで手に入るのかな。Vista 時代の SDK には付属していて、それしか手元にないんだけど。

ポイントはただひとつ。PIPE_NOWAIT は罠であるということ。PIPE_WAITFILE_FLAG_OVERLAPPED を指定すれば非同期に待てる。雰囲気で PIPE_NOWAIT を指定すると待てども返ってこない。

あ、パスの区切り文字の置き換えを忘れてる(でも試したら Mery2.6は / 区切りに対応してるぽい)。それとタスクマネージャーでコマンドライン列を表示するとわかることだけど、Mery.exe のコマンドラインなのにその内容が「"MeryRelay2Exe.exe" "file.path"」みたいになってるはず。少なくとも Vista ではそう。Mery.exe が気にしてないみたいだからいいかなって、最大限に手を抜いた。そんなわけでコマンドラインは一切操作も解釈もしていないので複数ファイルのドロップもできるんだけど、どのファイルがひとつだけ選ばれて監視されるかは運です。最後にもうひとつ。短い時間で連続してリレイ経由でファイルを開くと監視が漏れるかもしれない。ていうかたぶん漏れる。バックアップ中とかウィルススキャン中だと短時間でなくても漏れるかもしれない。

結局ロックファイルでシリアライズしつつ中身で情報をやりとりするのが一石二鳥なのか? くやしいので Mutex にする。zip を差し替えておいた。これで次のようなバッチファイルにも対応する。

start "" "MeryRelay2Exe.exe" a.txt
start "" "MeryRelay2Exe.exe" b.txt
start "" "MeryRelay2Exe.exe" c.txt
start "" "MeryRelay2Exe.exe" d.txt
start "" "MeryRelay2Exe.exe" e.txt
start "" "MeryRelay2Exe.exe" f.txt
start "" "MeryRelay2Exe.exe" g.txt

無駄にクラス化するなど>MeryRelay2_class.zip<不細工な車輪を再発明してでもDLLサイズを縮めるなど。


依然こういうバッチファイルには対応しないはずだ。

start "" "Mery.exe" a.txt
start "" "Mery.exe" b.txt
start "" "Mery.exe" c.txt
start "" "MeryRelay2Exe.exe" d.txt
start "" "Mery.exe" e.txt
start "" "Mery.exe" f.txt
start "" "Mery.exe" g.txt

正しく d.txt を開いていたタブが閉じられるのを検知できるかは運次第。ここにはトレードオフがあって、これに対応しようとするとコマンドラインを解釈せざるをえないが、Mery が解釈するコマンドラインに対していかなる前提も置きたくないというのがある。それで今のように、最初に応答したタブと無差別に関係を結ぶようになってる。

ところで本家 MeryRelay.exe は最初のバッチには対応しないけど次のバッチには対応している。自分のと逆である。

 Why are HANDLE return values so inconsistent? – The Old New Thing

最初に INVALID_HANDLE_VALUE があり、その次に NULL があったと。INVALID_HANDLE_VALUE が 0 でないから、0 が有効なハンドルになることがあるのかと疑っていたが、実際のところどうなのだろう。INVALID_HANDLE_VALUE を使う関数の方が古いらしいから、ないとは言えないよね。ハンドルクラスのデフォルト値・無効値の扱いに困るんだよ。ないと言って。

INVALID_HANDLE_VALUE and NULL - Google グループ

同じ疑問を持つ人が。そして、CloseHandle を実装する側から考えてみると値が NULL で有効なハンドルはありえないでしょって答える人と、これまでの経験で問題がなかったとしてもドキュメントに沿った慎重な振る舞いを勧める人と。

俺はもちろん、問題が生じるまで単純な対処法を選ぶ>20180308

 .NET プラグインが Mery から呼ばれる方法

従来.netのDLLをアンマネージから呼び出すためにはCOMとしてレジストリ登録して、COM経由で呼び出すのが一般的ですが、当然Meryからはこのような呼ばれ方はしません。

これを解決するために、アンマネージのブリッジ用DLL(C++で書いてるみたいです)があって、これがMeryから呼ばれる。

ブリッジDLLにはMeryから呼ばれるインターフェイスがすべて実装されていて、呼ばれたらマネージDLLに転送して、そちらで目的の処理を実行。 という手順をとっているようです。

「再コンパイルするだけで動くんじゃないかという気もする」とは書いたけど .Net には CPU を限定しない AnyCPU ビルドというのがあるらしく、ks さん本人のものと思われるブログでもそれが言及されていた。なのにどうして 32ビット版限定プラグインになってしまうのかな、と。その種明かし。

MeryRelay プラグインには MeryRelay.dll (160 KB) と MeryRelay/MeryRelay.dll (6 KB) という2つの同名の DLL ファイルが含まれていて、たぶん大きい方がアンマネージドのブリッジであり、32 ビット版 Mery からプラグインとして見えるもの。

svn 連携、git 連携にしろプラグイン作成にしろ、いろいろ方法があるもんですね。


2018年05月17日 (木) ついていた夕方のTV番組をちらっと見た。事実には興味がなく感情に基づいて特定の印象を持たせようとするばかりで見ていられない。炎上案件に正義漢ぶって油を注ぐ野次馬と一緒やぞ。肩書きのあるコメンテーターに自分が望む通りのコメントをさせようとするのがひどい。憶測に基づいてテキトーなことをしゃべらせようとしてるってわかってんの? しかも内容のほとんどをお前がしゃべってんじゃんよ。いかなる人間であれ意図や内心を語っていいのは自分自身についてだけだって理解せーよ。それだって他人にしてみればどうでもいいことで、観察され、批判の対象になるのは行動だけだ。よくもまああんだけ実のない感想・感情・印象操作に時間を浪費できるものだ。全部どーでもいい。馬鹿に迎合して馬鹿を出すからもろとも見捨てられんだよ。■@2018-05-23 つまりこういうこと>「怒りや憎しみを引き出そうとするメディア」■@2018-05-28 さらに。「現役プレイヤーから見た日大アメフト部「タックル」事件 - WETな備忘録」 人が呼べるテレビで、なんで門外漢の感想以上のものが聞こえてこないのか(答えはすでに書きました)。


2018年05月16日 (水) 動きのとろいドライバーがえてして判断も鈍いように感じられるのは、他車に対して想定するスピードが自分を基準にしてしまうからではないかと考えてる。自分だって住宅地で時速80kmで近づいてくる車を想定して事故を避けることができるとは言えないが、幹線道路で時速60kmを想定できなければ追突されてもしかたなかろうよ。ああいう、他人に甘えて自分の安全を差し出す運転が信じられない。■これを書いてるのは15日だけど、外出はしていない。日頃思ってることを書いただけ。


2018年05月15日 (火) なぜ男女の間で賃金格差が生じてしまうのか? - GIGAZINE」■最近「へー」と感心したのは、子育ての負担が女性に偏っていると、子育て世代の女性を採用する際に、子供が熱を出したとかですぐ休むんだろうなというバイアスがかかってしまうとかいう話。押しつけられた負担が不利に働くと。育児休暇の一部を男親限定にしたという記事を読んで。


2018年05月11日 (金) 数日前の新聞を読んでいた。大阪府警の3人が夜間の防犯カメラに映る車の特徴から車種を絞り込むための4300件以上のデータベースを作成して検挙率向上に役立てたとかで表彰されたとか、そんな内容の記事(※ここに書くまでに忘れないようにがんばって要約しました)。■こういう、成果の約束されない非定型の仕事に時間と報酬を与える仕組みってどういうものかなって考えた。プロジェクトチーム? 20%ルール? すきま時間? 寝る前? (違う新聞のネット記事によると)こういう感じだったらしいけど>「ソフト開発を外注すると数千万円の費用がかかるため、主に交通捜査課の若手2人が数カ月かけて独学でソフト作成を研究。」 もうちょっと経緯を知りたい。


2018年05月07日 (月) 最近の話ではないけど、ファブリーズのボトルが変わった。詰め替え詰め替え使っているうちに、真ん丸いのから楕円底のスリムな形になっていた。■さて、使い勝手である。まず、トリガーの剛性が低くなっていて、液をきっちり霧状にして押し出す力がない。次に、ヘッドの部分から液が抜けやすいのか知らないけど、最後の使用から18時間か24時間後という普段の使用パターンにおいて、必ず最初のふた吹きは霧にならずに液滴が飛ぶ。■カスである。ぐんにょりした握り応え、かすかすでレバーの引き代の最後でやっと飛ぶ液、それも霧になり損ねたしずくがぼっとり。18時間空くとこうなのだからいつでもこうだ。馬鹿じゃねーの。なんで、変えて、悪くなるのか。馬鹿なんだろ。■言葉が悪くなるのはね、スプレーを握った感触が、その反応が、本当にカスだからだ。役目を果たせない道具に存在価値などない。存在が悪だ。そんなものにお金を出して存在せしめる手助けをしたことを後悔してるんである。新ボトルは消えて。


2018年05月05日 (土) 命に関わるコードを書く時の10個のルール - GIGAZINE」の2「暴走を阻止するため、全てのループに回数上限を設定する」■これは自然と意識してる。タイムアウトを設定せず無限に待つとか、条件が成立するまで無限ループするとか、ループの終了条件が32ビットなり64ビットなりの表現のうちのひとつだけであるとかは、書いていて不安になる。


2018年04月30日 (月) [C++] Wikipedia(ja)から。「グローバル変数やメンバー変数を表す接頭辞は、変数の型ではなくスコープを区別するためのものであるので、システムハンガリアンとは区別する見方もある。」■「見方もある」じゃあないんだよなあ。それこそが有用・無用を分けるキーなんだから。■あと sz (zero-terminated string) も、型からはわからない情報を伝えているので有用。文字配列を使わないに越したことはないけども。


2018年04月27日 (金)

最終更新: 2018-04-28T11:31+0900

[SakuraEditor] Admin 不在で死に体のサクラエディタ

2年前>[8163] OSDNへの移行の検討

sourceforge.net の変節は耳にしてる。当時は、そのうち osdn.net へ移行するんだろう、そうしたら自分のアカウントは無効になるからパッチ投稿だけ継続しようか、音沙汰のない人間にリポジトリの鍵を預けっぱなしにしておくなんてリスクだからちょうどいいんじゃないの、って気楽に考えていた。せめて支持は表明すべきだった。正当性をもった移行だと認められて人が付いてこなければ、結果的に個人フォークや不成功に終わった乗っ取りと同じことになるのだから。

移行先は名前が挙がってる GitHub より osdn.net の方がずっといいだろう。GitHub は開発者にはおなじみだろうが、掲示板が動かないことにはバグ報告も質問も途絶えてしまう。ただの利用者に英語の画面を使わせたり発言するのにアカウント登録を求めたりするのは、門前払いに等しい行為だよ。

いくつか問題が挙げられてるが、移行してからなんとでもなることを無視すると、究極的には人の問題が残る。開発者の問題が。すでに活動していない人であっても、かつて主要な貢献をしたその名前がリストされていることが、プロジェクトの正統性を裏付けるという側面があるだろう。2年前は誤解していたけど、今こうしてほとんど人が去ったプロジェクトの現状を目の当たりにすると、お願いして名前を掲載させてもらいたい立場であることがわかる。この現状で過去を清算するような移行は、プロジェクトにとって致命傷になりかねない、と思う。

開発の活発化を企図するなら、個人個人でリポジトリを持って自由にコミットできる Git の採用が必要だと思う。登録された開発メンバーという意味ではなく開発ができる利用者個人という意味ね。git svn コマンドのおかげでプロジェクトのリポジトリが Subversion であっても自分の Git リポジトリを持てることを考えると、よりカジュアルにフォークできる GitHub 上の Git リポジトリが本当に必要なものだという気もする。GitHub にプッシュされた私家版パッチは見えるし、Pull Request もあって本家取り込みもやりやすいだろう。

こうなると osdn.net への移行がわからなくなる。けどたぶん考える前に行動することが必要なんだと思う。sourceforge.net に留まり続けるプロジェクトは見捨てられたプロジェクトなんだと、俺はもう受け取るようになっている。移行してしまえば、少なくともそう決めてしまえば自分はついて行くし(「こっち来んな」って?)、チケットの移行など手を動かすこともするんだけど、問題は自分が「ついて行く」人間であって引っ張っていく人間ではないことなんだな。sourceforge.net のサクラエディタプロジェクトに対して自分ができることって svn commit だけだというのもあるし。


2018年04月26日 (木) Amazonの音声認識アシスタント「Alexa」が子どもに丁寧な言葉遣いを教えられるように - GIGAZINE」■なんかこういう話聞いたことがあるな。話題からすると攻殻機動隊のアニメかな。人間は汚い言葉を使うからね。お手本になれない人が多いからね。■■■@2020-03-27 思い出した。ターミネーター2のサラ・コナーの独白だった。


2018年04月25日 (水) 中学生の数学理解の実態【数と式】編 - 中高数学教育序説-はじめの0.5歩-」■正解の選択肢が「この方程式の解は3である。」なんだけど、問題文が示したことから言えるのは「3はこの方程式の解である。」だと思うんだ。複素数によって解の範囲が広がったりすることを考えると、解が3だけだと言ってしまうことには慎重になってしまう。もちろん(一元)一次方程式の解は1つだけなのかもしれないけど、そんなこと知らないし説明できませんよ。■それはそれとして、方程式の操作はできるけど論理は理解しない、っていうのは普通にあるでしょう。大学入試で必要十分であることの証明を求められて片方だけしか示さないなんてことがあるのだから。(赤本を解いていた自分の話)■自然数の問題は踏み絵だね。


2018年04月24日 (火) イース8。面白いけど、女の子かわいいけど、グラフィックが PS2 クオリティなんだよね。そのくせ PS4 で FPS が下がる場面がある。美術スタッフが足りないんかな。板に貼った絵の陰影だけで凹凸や質感を表現するのには限界がありますよ。■芝居は、まあ、うーん……。サハドが特に耐えられなかった。子持ちであのキャラは寒い。しばきたい。「大人」がいない、もっといえば「人間」がいない、役割・偏見・属性で凝り固まったキャラクター達の中で、設定だけ大人であること(そして6人いるバトルメンバーのひとりであること)が不幸だった。


2018年04月23日 (月) いかなる学習でも、初めて習う人には脳内での「仮説と検証」が必要なんです。でも、その過程をすっ飛ばそうとするのが問題だと考えます。で、傑作なことに、「参考書云々」さえ言わなければ「ほほー、なるほど~」と感に入った顔で聞く。「あのなー、高校の先生をなめるなよ」と内心思ってました。」■ちょっとだけ似ていて違う話。高校の先生に「ここテストに出るかならなー」という言葉で重要性を示そうとする人がいた。こういう風にテストに向き合ってきたんだなと思わせる、試験対策ノートさながらにきれいにまとめられた板書をする人もいた。全然興味なかった。テストに出よーが出なかろーが興味のあるなしには影響しないし、目の前に差し出される知識に混じったノイズでしかなかった(※文字通りふきだし付きで板書に混じっていた)。先生の学生時代が窺われるようで、かわいいなって侮っちゃうよね。教育実習生の記憶だった可能性もあるな。定期テストが外部のテストと違うのは、教える人と出題する人が同じだということで、習ったことしか出ない。授業を全部取りこぼさなければいいんでしょっていうだけのシンプルな話なんである(※できるとは言っていない)。■地理は全く興味が持てなくて平均点をとれなかった(笑) センター試験では現代社会とかいう常識問題に救われた。■授業の何が面白いって、本に書いてない話が聞けるところが面白いんだよ。発展的内容でも雑談でも、あるいは言葉に込められたちょっとしたニュアンスでも。教科書をなぞるだけなら先生はいらんってね。そういう先生の授業は聞く方も楽なんですよ、教科書に書き加えることがほとんどないから(※そういうノートの取り方(笑))。タブレット端末やら米国式のレンタル教科書では無理な、贅沢な方法だったよね。