トップ «前10日分 追記
2005|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|

新雪見酒日記


2009-01-30 [長年日記]

_ error of DDNS update

Rubyで書いたDDNSアップデータがエラーを吐くようになった。

原因はniftyのSSLハンドシェークプロトコルが変更されたせいらしいのだが、検証して修正してる暇がない。

で、時々つながらなくなることがありますので、お許しを。>各位


2009-01-25 [長年日記]

_ install package of Ruby-1.9.1-RC2 MSwin32

artonさんがswin/vrubyを同梱してくださっている。おいらはちょっと遊べる状態じゃないのがつらいなぁ。


2009-01-21 [長年日記]

_ Swin_WinAPI_CALL

artonさんとにゃすさんからメールを頂いた。要旨は表題の関数がRuby1.9.1 rc1で動かないのでartonさんがパッチを書いてくださったというもの。

去年の7月から放っておいたのがついに発覚。

で、artonさんのとこでは更にSwitchで引数の数を調べなくても良い大変巧妙な方法を書いてくださっている。やっぱすごいな。

で、メールの返信にはインラインアセンブリ使うとx64では大変とか書いたが、そもそもx64ではWin32APIの呼び出し規約は__cdeclになっているので、引数の個数について悩む必要がない。従って32bit版に限って、考えればよいことだったのだ。

ということで、私はアセンブリ言語はほとんど分かりませんから、お二方、よろしくお願いします。x64の方はそのうちやるかもしれません。


2008-12-31 [長年日記]

_ The New Year's Eve

とりあえず生きてました。

今年は後半急減速。

来年は・・・

年が明けてから。


2008-11-21 [長年日記]

_ Excel VBA

またしても格闘中。

#ああ、つらい


2008-10-06 [長年日記]

_ consuming CPU load of dokan-ruby

結局ResetEventしたりタイムアウト設定したりしなくても、CreateEvent()のbManualResetフラグをfalseにするだけで良いみたい。

_ building Dokan for Windows2000

インストーラはW2Kに対応していないが、WDKさえ動けば、W2K用のバイナリは簡単に作成、インストールできる。XPかVistaにWDKをインストールして、それのWindows2000のビルド環境から、淺川さんとこのHow to build Dokan libraryの手順に従ってビルド、それをW2Kにコピー、インストールするだけだった。


2008-09-23 [長年日記]

_ consuming CPU load of dokan-ruby

単にResetEventを追加しただけだと、Windowsが勝手にスケジューリングしてしまい、長時間待たされることがある。WaitForSingleObjectのタイムアウト設定が必要みたい。

        WaitForSingleObject(g_DispatchEvent, 100);

0.1秒くらいだとCPU負荷もほぼ0%で具合が良いみたい。


2008-09-19 [長年日記]

_ ErrorPage VisualuRuby Wiki

Wikiが死んでしまってる。。

本日のツッコミ(全2件) [ツッコミを入れる]

_ nyasu3w [しかもsshも繋がりません]

_ 雪見酒 [ありゃ、ほんとだ。]


2008-09-16 [長年日記]

_ consuming CPU load of dokan-ruby

きのうWaitForSingleObject(g_DispatchMutex, INFINITE);をコメントアウトしてしまったが、これはいけない。複数スレッドが同時にアクセスしたら、やばいことになる。で、単に

ResetEvent(g_DispatchEvent);

の追加だけで良いだろう。


2008-09-15 [長年日記]

_ consuming CPU load of dokan-ruby

わかった。CPU負荷の件はDR_DispatchAndWaitでSetEvent(g_DispatchEvent)したのをDR_Dispatch()でRestEventしていなかったせいだった。

$ diff -u dokan_lib.c.org dokan_lib.c
--- dokan_lib.c.org     Tue Sep 16 00:49:13 2008
+++ dokan_lib.c Tue Sep 16 00:39:37 2008
@@ -1787,7 +1787,7 @@
 {
        while(TRUE) {
                WaitForSingleObject(g_DispatchEvent, INFINITE);
-               WaitForSingleObject(g_DispatchMutex, INFINITE);
+//             WaitForSingleObject(g_DispatchMutex, INFINITE);
                fprintf(stderr, "eventloop ");
                while(!IsListEmpty(&g_EventQueue)) {
                        PLIST_ENTRY     listEntry = RemoveHeadList(&g_EventQueue);
@@ -1815,6 +1815,7 @@
                                }
                        }
                }
+               ResetEvent(g_DispatchEvent);
                ReleaseMutex(g_DispatchMutex);
        }
 }

多分これで良いだろう。しばらく様子見て淺川さんにレポートしよう。

swin対応は、ネイティブスレッドを使っているため、イベントループを根本的にいじらなくてはいけないので、そう簡単にはいきそうもない。でも結構用途がありそうなのでやってみたいなぁ。