C++/CLIのビルドでマネージリソースの埋込みに失敗して変なexeができる

おそらくアンチウィルスソフトが原因

リンカがビルドする

exeできる

アンチウイルスが検査のためにこのファイルを開く

mt.exeがこのexeにマネージリソースを埋め込もうとする。

開けなくて失敗する

実行したとたんエラーが出る変なexeができる。

対策:
幸いもう一回ビルドすると、正常にビルドできるのでビルドしたあとはもう一回ビルドしてみる。あるいはアンチウイルスを無効にする。

Visual Studioのビルド後のイベントのコマンドを調べる

ビルド後のイベントでは$(ProjectDir)とかのマクロを多用するので、エラーになったとき、実際に実行されているコマンドを知りたいときがある。

そのときは、そのコマンドの前にechoコマンドを一時的につければ、実行されるコマンドを出力するのでコマンドを確認できる。

WEBページからコピーしてるとダブルクオートが全角みたくなってたり、ハイフンがはてなマークに化けてたりすることがよくある。

svnのコミットが失敗する

svnのコミットが以下のようなエラーで失敗する。

原因はただ単にviが見つけられていないだけだった。viをインストールするか、環境変数SVN_EDITORに別のエディタを指定すればいい。

.NET Frameword2.0でフォームにあるテキストボックスがリードオンリーだとショートカットキーの一部が効かなくなる

仕方がないので、ReadOnlyプロパティはfalseにして、FormのLoadイベントで、コントロールを直接リードオンリーにする。

VMWareがアンインストールできない

インストールした後でアンインストールするためのファイルを削除してしまうと起こるようだ。

ちゃんとしたやりかたは、ここに書いてあるが、このページの一番下のVMware_Install_Cleaner.zipを実行すればレジストリは削除されるようなのでインストールされてないことになると思う。

javascriptで特定のタグを見つける

idから見つける

idは一意のはず。

ある一意な属性値から見つける。

getAttributeはそのエレメントにとって意味のある値の場合、ブラウザによって返す値が違う場合があるみたい。imgのsrcとかだと、書かれている値で返すかURIを返すかが異なったりする。

name属性がある場合にはHtmlCollectionのnamedItemを使ったほうが早いのかもしれない。

あとは順番で見つけたり親子関係で見つけたりする方法があると思う。

.NETのショートカットキーはメニューアイテムがenableでなと効かない

アプリケーションのメニューアイテムを選択できないようするためのコードをどこに記述するかという問題。もっとも直感的なのは、そういう状態になる場所に書くというもの。しかしこれだと、コードがあちこちに散らばって、いざメニューアイテムが無効になっているのはどうしてなのかといったとき調べるのが大変になるし、本来無効なのに有効になっているのはどうしてなのかといったときも大変になる。

MFCではCOMMAND_UPDATEのような機構が導入されて、メニューアイテムの無効などのコードはこのメニューが表示される直前に実行されていてここで一元管理されていた。ツールバーの場合などはアイドル処理のとき動かしていた。

.NET Frameworkにはこのような機構がないので、MFCと同じようにDropdownopeningハンドラでメニューアイテムの有効/無効を切り替えたくなるが、.NET2.0のToolStripMenuItemのショートカットキーはこのメニューアイテムが無効だと機能しないので、MFCのようにやろうとすると困ることになる。

とりあえず対策としては、Dropdownclosedの時に全部有効に戻して、表示されているとき意外は常に有効にしておくことが上げられると思う。

sambaの設定ファイルを確認

ファイルの場所

設定ファイルの場所は、一般的にはsambaのビルドに指定しているようで、以下のコマンドで確認できる。

設定ファイルのテスト

sambaにはtestparmという設定ファイルが有効かどうかを確認してくれるツールが付属しているのでこれを使う。文法的には問題なくても、論理的におかしいものなども指摘してくれるので便利。