喉に刺さった小骨のように気になっていた、NT系における、メインウィンドウのUNICODE化が終了(これで、UNICODEでしか表現できないファイル名を持つファイルも直接ドラッグ&ドロップ可能に)。ということで、v1.10リリース。
なお、単一バイナリで、UNICODE に対応した OS(NT系)では UNICODE モードで動作させ、そうでない OS(Win95系)では、ANSI モードで動作させるには、OS 種類によって、UNICODE/ANSI API を自動的に使い分ける必要がある。(正確には、Win95系は描画系の一部(と文字列操作)のみ UNICODE API 使用可、ファイル系API などは全滅)
だが、ソースコードのあちこちに、
などと書いていくのは、悪夢に近い。
そこで、FastCopy では、Win32API UNICODE/ANSI のうち、文字列を引数や構造体メンバにとっているものについて、WCHAR/CHAR * -> void * に置き換えた、関数ポインタ群を大量に作った上で、パス名は基本的に void * で管理することで凌ぐことに。イメージとしてはこんな感じ。
(詳細はソースコード参照のこと)
これはこれで、文字列に対する型チェックがややルーズになることと、文字列定数を作るのが少し面倒になるデメリットはあるのだが、ロジック部分の記述がスッキリするメリットに比べれば、まあ我慢できるレベルかな。
以前、神田さんの書かれていた、「のろいの bind9 (解決編)!! の巻」とまったく同じ現象が、自宅サーバ(bind-9.2.4)でも起きていたことに気づく。
ひさびさに bind を make(setenv CFLAGS -O2; ./configure --disable-ipv6 --sysconfdir=/etc/bind --localstatedir=/var/run/bind; make)する。
VIA Edenのため、やたらと時間が掛かったものの、とりあえず、無事解決した様子。
#setenv は、CFLAGSのデフォルトが -g -O2 だったため
Gbit Etherで繋がれた PC間で ipmsg のファイル転送テストをしてみる。
6000MB を 86秒で転送完了し、69MB/s という結果に。(なお、HDD がネックにならないよう、src/dstともに圧縮NTFSボリューム sparse file を使用。おおよそ、src:/dev/zero -> dst:/dev/null みたいなもの)
なお、Gbit ということで、ipmsg のファイル転送関係のレジストリを若干変更してみたり(IPMsgキー内のTcpbufMax, TransMax, ViewMax の3つの値を大きく)
Categories
Android |
CeSleep |
comp_misc |
comp_tips |
fastcopy |
ipmsg |
mailman |
misc |
npop |
ScheEdit |
sigsleep |
tdiary |
thinkpad