/ 最近 .rdf 追記 設定 本棚

脳log[2018-06-01~]



2018年06月01日 (金) アセンブリもバイナリもさっぱりなんだけど、ちょっと目についたコマンドラインオプション /Fa"アセンブリファイル名"/Fm"マップファイル名" をちょっとしたプログラムのコンパイル時に付けてみた。■アセンブリファイルは .obj と内容的に一致するものかな。ファイル名とか行数とか関数名がコメントとして付加されてるので、まずは関数のサイズが行数として把握できる。処理の内容はまあだいたいがスタックの上げ下げ、比較、ジャンプ、call, ret. こういう目立つ定型部分が高級言語の構成要素になるのでしょう。■マップファイルは .dll に対応するものだと思う。オプションを何もつけずにコンパイルしていたら一切の最適化がオフで(これをアセンブリファイル内のコメントで知った)、inline 指定していた関数の名前がすべてマップファイルの中に現れていてぎょっとした。そういうことがわかる。関数を単位とした .obj やアセンブリ(リスティング)ファイルの中身から、何が関数としてそのまま抜き出されたか、何がインライン化され無名のコードとして埋め込まれたかがわかる。インライン化はリンカの標準的な仕事とは違う気もするけどリンク時コード生成が有効だったのかも。並びとアドレスの差から関数のサイズもだいたいわかる。サイズ優先の最適化フラグを付けると、小さい関数間に最低限確保されていた間隔が短く詰められたんだけど、配置の間隔とその他の都合にどういう関係があるのか。■サイズ優先でコンパイルすると POD構造体のゼロ初期化(= {};)に memset が使われるようになって、/NODEFAULTLIB を指定していたもんだからリンクエラーになる。自分が Cランタイムライブラリを使わないように気をつけていても、コンパイラが使ってしまう(ことがある)。どないせーと? 初期化しないでメンバのひとつひとつに代入したら memset を使わせないで済んだけど、なんだかなあ。memset だけ自作してリンクしたらよかったんか。自作せずにコンパイラの実装から memset だけ抜き出したりはできないのか。■@2018-10-29 GCC のドキュメントからそのものズバリ「The compiler may generate calls to memcmp, memset, memcpy and memmove. These entries are usually resolved by entries in libc. These entry points should be supplied through some other mechanism when this option is specified.


2018年05月31日 (木) グーグルでは、問題にぶつかったとき必ず「○○」という言葉が出てくる | 破壊――新旧激突時代を生き抜く生存戦略 | ダイヤモンド・オンライン」■「それはユーザーのためになるのか?」だっていうんだけど、広告で収入を得ているグーグルがユーザーの方を向いてるのは、当たり前のようでそうでなく忘れられがちなことじゃないだろうか。(TVと億万長者を念頭に置いて)


2018年05月30日 (水) 炎上すると思ったら炎上したな、本来はこういう意味だから勘違いだぞ、という文脈でこう続くのだけど。「ですから、上記日大のコメントは「厳しいご批判はやむを得ないものとしてお受けいたします」という意味な訳です。」■しかしですね、やむを得ないから、しかたないから、そうするより他にないから、批判を受け入れるというのは、反省の弁ですか? スピード違反をしておいて、警察に捕まったから、捕まったものはしかたない、反則金は払う、というのが正々堂々たる態度として誉められるものだとでも言うのですか? そんなの当たり前だぞ。■リンクした先の人が混同してるみたいなのでつっこめる方につっこんだんだけど、「甘受する」の本当に本来的な意味は「現状に満足して快く受け入れる」ことと辞書の引用からは読み取れるので、その意味を踏まえれば日大のコメントに「辞書を引け」などとつっこむのが間違いであるどころかブーメランであるというのには同意する。■「本来は」という注釈が辞書に付けられている時点でその後の展開はお察しだったのにそれをやってしまうというのが、このところ明らかになった日大(広報)クオリティそのままで、そこに何か言うのは(言えるのは)内部の人の仕事でしょう。


2018年05月29日 (火) [SakuraEditor] cmake にはたいへん興味がある。なんせ常用してるのが VS2008EE で、インストールだけしてある、そしてインストールできる最新が VS2010EE だから、うっかりすると .sln が開けなくなりそうだ。そこを乗り越えても C++11 を使われるとどうにもならんのだけども、でも一度使うと手放せないでしょうね、あまりに真っ当で不可欠で、遅すぎたくらいにあって当たり前の機能が目白押しだもの。


2018年05月28日 (月) [SakuraEditor] 某所に突如さらされた URL により存在を知るところとなったサクラエディタの旧掲示板。興味深く読んでたらこれ>「返信の返信 BC++ならCBar:本人の書き込みがないので分かりませんが、もしBC++ Compilerを使っているなら、前にも書いたKENCH氏作CBarがいいですよ。BC++のみならず色々なCで統合環境を作れます。それになにしろKENCH氏自身がエディタにサクラエディタを使っているんですから。(ここにも時々登場(^o^)) CBarの設定でタグジャンプもOK。KENCH氏HP http://member.nifty.ne.jp/KENCH/index.htm 窓の杜紹介 http://www.forest.impress.co.jp/article/2000/07/12/sundayprog2.html じぇぷろ 2001/01/22月00:45 [347]」■CBar! そしてその作者! ライブラリを除外した商用コンパイラ無料化のはしりが bcc32 だったと思う。もちろんインストールした。PATH の通し方も知らなかったくらいなのでコマンドラインツールを直に使うのはつらい。CBar を含めいろいろインストールした。最終的な落ち着き先が CBar だったと思ったんだけどもうよく覚えてない。編集して1ボタンで再コンパイルできてエラーメッセージをダブルクリックすると好きなエディタでエラー行を表示できるものだったはず。■この旧掲示板でじぇぷろ氏がたびたび言及する「故[新掲示板]」。旧掲示板より古い「新掲示板」があったってこと? 旧掲示板のログも設定ミスでだいぶ失われてしまったって書かれてるんよなあ。


2018年05月25日 (金) SUBWAYヘビーユーザーのこの俺が貴様らにSUBWAYの使い方を伝授してやる: 不倒城」■そうはいってもミスドもバーキンもサブウェイも近くにないじゃん、と店舗検索をしたらフォレオにあった。失礼。帰りに本屋に寄ったら人生2回目の注文をしよう。最近アマゾンが離れていくから本屋には月に1回くらい行ってる、先月から。


2018年05月21日 (月) 高木浩光@自宅の日記 - 緊急周知 Coinhive使用を不正指令電磁的記録供用の罪にしてはいけない」■これ面白いね。JavaScript 第3の時代が来るか。うまくいけば NoScript 以外の選択肢がブラウザ標準で出てきたり。Coinhive には精々悪名を広めていただきたい。自分は Coinhive に限らずスクリプト全般に対してこういう態度>「実行されないコードに優るコードはない。クライアントサイドスクリプトとはそういうものだ。実行の主体も主導権もこちらにある。」 Enhancement であって、依存するのは下策なんだよ。スクリプトに対しても Web サービスに対しても。■@2018-06-12 面白いとか言ってられない事態だった>「仮想通貨マイニング(Coinhive)で家宅捜索を受けた話を楽しもう「ドークツ」」 警察のやり口ってこうよね。実際にやられると足がすくんで何も言えなくなるわ。最も身近な暴力組織で、多数派のための秩序を法によらず空気によって押しつける。そして続報も出ていた>「高木浩光@自宅の日記懸念されていた濫用がついに始まった刑法19章の2「不正指令電磁的記録に関する罪」


2018年05月20日 (日) [SakuraEditor] 不思議な順番で知った。1.「四九六々(縦書き用)(@496_)さん | Twitter」 2.「めておさんのツイート: "“サクラエディタ GitHub 移行 - clock-up-blog” https://t.co/rJ1yj9SDYT"」 3.「サクラエディタ GitHub 移行 - clock-up-blog」 blog あったんですね。ダウンロードしたっきりで不足も感じず使っていたサクラエディタのアップデートを追いかけるようになったきっかけが、Unicode 版の活発な開発だったんだよね。だから自分は ANSI 版のコードは知らない。■掲示板はやっぱり場所を移してでも設置するべきだと思うんだけど、現状にも問題があるんだよね。投稿したはいいが修正は禁止ワードに引っかかってできないとか、でもやっぱりできるとか。INCM ってよく知らないけど、ツールで掲示板が読めるみたいな、でも修正は追いかけられないから発言の訂正は控えてほしいみたいなことがログに残ってた。自分の考え方が去る者追わずだから、読めなくなったらきっかけがあるまで追いかけなくなっちゃうんだよね。それを基準にして URL の変更、掲示板の変更、あらゆる変更に抵抗を感じてしまう。■自分にとってニコニコと YouTube を分けた決定的な違いが、視聴にアカウント作成とログインが必要かどうかだった。GitHub で発言するためにはアカウントが必要で、自分はサクラエディタと並ぶくらい馴染んだ道具である tDiary で、自分の間違いを訂正するという避けようのない機会を待つまでアカウントを作成しなかった(「脳log[20161111p02] サクラインターネットに index.rbの実行を止められたよ。(その節はご迷惑をおかけしました)」)。ただの偏屈者ですかね。管理しきれないアカウントとかパスワードとかみなさんうんざりしてないんだろうか。おまけに最近は携帯端末の情報までパスワードに加えて求められるなんてまっぴらごめんなんだけど、みなさん抵抗はないんだろうか。■そして管理者。明らかに管理者と開発者は別物なんですね。管理者はマネージャーであり奉仕者であると。比企谷八幡みたいなぼっちには部活動という強制力をもってしなければ他人への奉仕なんて期待できないんだよなあ。自分には能力も行動力もないとしても、良くないところは同じ。これはコードレビューを含めての話だけど、レビューって他人のコードのために時間を使うってことなんだよね。■@2018-06-02 GitHub の方の他の方々の活動の流れの早さに目を白黒させている毎日なんだけど、今日久しぶりに sourceforge.net の方を見たら「A free Japanese text editor for Windows Brought to you by: aroka, ds14050, gentaro, kench-jp, and 5 others」と表示されていた。これ辞書順らしいけど(そんで先頭の人にはメールが飛んで来やすいらしいけど)、ちょっと前まで自分の名前はここにカウントされていなかった。いつからか「権限がなくてできないよー」と都合のいい言い訳ができないようになっていたらしい。


2018年05月19日 (土) mineoの「通信の最適化」、2018年9月末に解除が可能に プレミアムコースの返金も - ITmedia Mobile」■遅いよね。それに TV と同じように動画を垂れ流すことにしか使えない、それで十分だと、そういう認識のうすらとんかちが運営する通信サービスだと知らしめるには十分だった。■化物語か偽物語のオーディオコメンタリにあった。泥の入った樽にワインを~、ワインの入った樽に泥を~。結果はどちらも泥の樽であって、ワインは失われてしまう。■混雑してるから、画像だから、動画だから、音声だから、どんな理由を付けても恣意的(※被害データの選別)、偶発的(※回線状況)にデータが化けるなら、一片の信用も残らんでしょう。俺は自分の書いた文章が改竄されて読者の目に触れると感じた。テキストは対象外だとか圧縮するにしても可逆だとかの言い訳が聞きたいわけじゃないのはわかるな。将来にわたってそうだと信じられる理由がもうないんだから、できるなら、やると想定せざるをえん。そして契約してるのは俺じゃないんだよなあ。村八分にしたい。


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」■最近「へー」と感心したのは、子育ての負担が女性に偏っていると、子育て世代の女性を採用する際に、子供が熱を出したとかですぐ休むんだろうなというバイアスがかかってしまうとかいう話。押しつけられた負担が不利に働くと。育児休暇の一部を男親限定にしたという記事を読んで。