Explorer++ patch for TortoiseSVN
Windows環境をx64に移行したら、TortoiseSVNのオーバーレイアイコンに対応したファイラーが見当たらず、やや不便。
幸いExplorer++というソースが公開されているものがあったので、アイコンを更新するようにしてみた。
diff -Naur org/Explorer++/ShellBrowser/DirectoryModificationHandler.cpp new/Explorer++/ShellBrowser/DirectoryModificationHandler.cpp --- org/Explorer++/ShellBrowser/DirectoryModificationHandler.cpp 2011-04-23 07:43:20 +0900 +++ new/Explorer++/ShellBrowser/DirectoryModificationHandler.cpp 2011-08-27 02:41:54 +0900 @@ -448,6 +452,10 @@ } FindClose(hFirstFile); + + if (!bFolder) { + RenameItem(iItemInternal, FileName); + } } else {
ついでに、ドラッグアンドドロップを禁止してみた。フォルダをクリックしようとして移動してしまうことがあるので。(というかそれを防ぐためにファイラーを使っている)
diff -Naur org/Explorer++/Explorer++/ListViewHandler.cpp new/Explorer++/Explorer++/ListViewHandler.cpp --- org/Explorer++/Explorer++/ListViewHandler.cpp 2011-08-15 00:19:54 +0900 +++ new/Explorer++/Explorer++/ListViewHandler.cpp 2011-08-27 01:20:05 +0900 @@ -1384,6 +1384,9 @@ HRESULT Explorerplusplus::OnListViewBeginDrag(LPARAM lParam,DragTypes_t DragType) { +#if 1 + HRESULT hr = DRAGDROP_S_CANCEL; +#else IDropSource *pDropSource = NULL; IDragSourceHelper *pDragSourceHelper = NULL; NMLISTVIEW *pnmlv = NULL; @@ -1491,6 +1494,7 @@ } CoTaskMemFree(pidlDirectory); +#endif return hr; } diff -Naur org/Explorer++/Explorer++/TreeViewHandler.cpp new/Explorer++/Explorer++/TreeViewHandler.cpp --- org/Explorer++/Explorer++/TreeViewHandler.cpp 2011-04-26 11:51:32 +0900 +++ new/Explorer++/Explorer++/TreeViewHandler.cpp 2011-08-27 01:21:19 +0900 @@ -635,10 +635,12 @@ return OnTreeViewKeyDown(lParam); break; +#if 0 case TVN_BEGINDRAG: /* Forward the message to the treeview for it to handle. */ SendMessage(m_hTreeView,WM_NOTIFY,0,lParam); break; +#endif case TVN_GETDISPINFO: SendMessage(m_hTreeView,WM_NOTIFY,0,lParam);
ThinkPad T420購入
Sandy Bridgeに期待して購入。スペック
- Core i5 2540M 2.6GHz
- video 1600x900 Intel HD Graphics 3000
- memory 8GB (追加)
- SSD Intel SSDSA2CW300G3 300GB (置換)
エクスペリエンス インデックスは 7.1/7.4/5.9/6.3/7.7
なんかキー入力がひっかかるなあと思っていたら、特定のキーが入力されたりしなかったりするという初期不良だった。サポートに電話したら、代わりのキーボード(部品)を送ってくれて翌日届いた。不良はさておき、部品単位で送ってくれるのは大変ありがたい。
元々の部品はChiconyの45N2172だったが、届いたのはNMBだった。ブログとか見ると評価は ALPS>NMB>Chicony の順らしい。正直違いはわからないが、とりあえずNMBはThinkPadらしい打ち心地で、良い。
唯一の問題は、上段のキー配列が変わってしまったので、F2を打とうとするとF1が入ってしまうこと。あとEscキーが無駄にでかい。
T420sではなくT420にしたのは
- 2.5kgくらいまでなら許容範囲
- 薄型はファンがうるさいのでは
という理由。T420は常にファンは回ってはいるが、低負荷では無音といっていいレベル。
ここ http://www.lenovo.com/psref/pdf/tabook.pdf 見るとT420はT410より軽いとなっているが、誤記かも。
ホイールスクロールすると少しノイズが出る。グラフィック由来と思われるのでたぶん回避策はないが、ブラウザとかでは出ないので、普段は気づかない。
タスクマネージャーで見たらSynTPEnh.exeとかいうのが150MBくらいメモリを消費していたので、削除してTrackPointのドライバに差し替えてみた。なんかメモリリークで修正済みたいだが、タッチパッドを使うことはないので古きよきt4p*.exeで十分だ。
その他
PHPのunserializeとjson_decodeの速度を比較してみた
serialize後の文字列には長さが格納されている。一方、jsonは終端文字の検出が必要である。
そのため文字列が入っていた場合はunserializeの方が速いはず、という予想を立てて比較してみた。
数値の場合
配列に数値を格納。
10/100は10個の配列に100までの数を格納。
関数 | 10/100 | 100/10000 | 1000/1000000 |
serialize | 0.002965 ms | 0.026016 ms | 0.175710 ms |
unserialize | 0.002285 ms | 0.019043 ms | 0.139641 ms |
json_encode | 0.001065 ms | 0.008745 ms | 0.045797 ms |
json_decode | 0.002701 ms | 0.018625 ms | 0.192634 ms |
文字列の場合
連想配列に文字列を格納。
10/10は10個の配列に長さ10の文字列を格納。
関数 | 10/10 | 100/100 | 1000/100 | 100/1000 |
serialize | 0.002051 ms | 0.023947 ms | 0.221336 ms | 0.078479 ms |
unserialize | 0.002071 ms | 0.022763 ms | 0.335602 ms | 0.038826 ms |
json_encode | 0.003094 ms | 0.112962 ms | 1.140379 ms | 0.961482 ms |
json_decode | 0.004587 ms | 0.136636 ms | 1.447683 ms | 1.014543 ms |
環境はPHP 5.3.3-7+squeeze1 / core2duo E8600
予想通り、文字列の長さが長くなるほど、json_decodeよりunserializeの方が速かった。
ソース: https://github.com/firewood/test/blob/master/serialize_bench.php
WinDiffを少しだけ改良してみた
WinDiffは10年くらい使っていて慣れているのだが
という問題があった。
WinMerge使えばよいという話ではあるのだが、
- 何文字目から変化しているのか、ぱっと見わかりづらい
- 左右分割なので、diffっぽくない&桁数が減る
- 常に外部エディタで編集したい(右クリックメニューが遠い)
とかいう理由で、WinDiffを改造したほうが、慣れたインターフェースにできそうだったのでチャレンジ。
古いWinDiffはVisual C++ 6.0に付属していたような気がするが、これはバグっていて、右クリックメニューもない。
新しいものがPlatform SDKのサンプルに、SDKDiffという名前で付属していたので、これを使うことにした。
ちなみに最新版ではない(Vista用のものにはもっと細かいメニューがある)が、個人的には困っていない。
ライセンスについては、MSDNに「サンプルコードのうち、特記のないものはMICROSOFT LIMITED PUBLIC LICENSEに従う」という記述があったので、公開しても良いと判断した。
著作権表記と、プログラム名はそのままにする必要があるという認識です。
変更点は以下のとおり。処理はてきとーそのものです。
福島第一原発の水素爆発についてのメモ
原子力安全・保安院の会見を見てもよくわからなかったので、以下を見て理解した気になってみた。
- 3/18「福島原発事故の現状について」@原子力情報資料室
- 福島第一原発で何が起きているのか
- 福島原発問題について(科学者の眼)
- MIT原子力理工学部による1、3号炉の水素爆発に関する解説
- 原発がどんなものか知ってほしい
- 福島第一原子力発電所 設備の概要
mingw版Groongaのビルド
Groongaをmingwでビルドしてみた。非公式ビルドが32bitだったので、64bit版にチャレンジ。※ Groongaは32bit OSをサポートしていません。
以下手順
MSys/MinGWインストール
- MinGWのインストーラをダウンロード
http://sourceforge.net/projects/mingw/files/ から mingw-get-inst-yyyymmdd.exe を取得する。 - インストーラを実行。オプションでMSysを追加しておく。
- http://sourceforge.net/projects/mingw-w64/files/ から Toolchains targetting Win64 / Personal Builds / sezero_20101003 を選択
- zipアーカイブをダウンロードして展開する。
ホストOSが32bitなら mingw-w64-bin_i686-mingw_20101003_sezero.zip
ホストOSが64bitなら mingw-w64-bin_x86_64-mingw_20101003_sezero.zip
※ 64bit版はネイティブコンパイラ(クロスコンパイラではない)なので、アーカイブ中のmingw64ディレクトリ以下をMinGWのルートディレクトリ(例えばC:\MinGW)に展開してもよい。 - MinGWのルートディレクトリに展開しなかった場合、mingw-w64-binを展開したフォルダをMSysのPATHに追加する。(下記参照)
MSysのPATHの追加方法
MSysのホームディレクトリに .profile というファイルを作成し、以下を記述。
※ アーカイブのmingw64ディレクトリを、MinGWのルートディレクトリに展開した場合
export PATH=/mingw/mingw64/bin:$PATH
Groongaビルド手順
- Groonga 1.1.0のpthread依存除去版 http://pub.cozmixng.org/~kou/archives/groonga-1.1.0.tar.gz を取得する。
※ 本来は http://groonga.org/download/ からダウンロードできます。次の肉の日(2011/3/29)以降。 - 64bitの場合、ltmain.shにパッチを当てる。(下記参照)
- MSysのコマンドプロンプトを開く。
- tar xf groonga-1.*.*.tar.gz によりGroongaを展開する。
- cd groonga-1.*.* で展開したディレクトリに移動する。
- 64bit OSの場合、引数なしで ./configure
- 32bit OSの場合、./configure --host=x86_64-w64-mingw32
- make
- make install
ltmain.shのパッチ
libtool 2.2に含まれるltmain.shはx86_64に未対応のため、2.4のものをバックポートする。
--- ltmain.sh.orig 2011-01-29 21:21:29 +0900 +++ ltmain.sh 2011-03-01 22:47:52 +0900 @@ -2560,7 +2560,7 @@ ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then win32_nmres=`eval $NM -f posix -A $1 | $SED -n -e ' 1,100{
動作確認
残念ながら、64bit版は正常動作していないようです。まだ調べられていません。
参考情報
- ongaeshiさんとktouさんのtwitterのやりとり(http://togetter.com/li/102678)
- http://www44.atwiki.jp/ongaeshi/pages/14.html
キーを入れ替える7つの方法
ちょっと前になりますがWindows Internals勉強会というので発表してきました。
これ → http://www.slideshare.net/firewood/lr-5346579
以前「Vista/Windows 7におけるキーボードカスタマイズ問題」というのを読んで、これにフィルタドライバのネタを加えてみました。
で、発表時にid:NyaRuRuさんがMSKLCの紹介&デモをしてくれたので、その部分を加筆しました。(こういうのがすぐ出てくるのがさすがだなあと思いました)