2006年06月の雑感

更新日:2006-06-29
[トップページへ] [5月] [1月] [過去の雑感へ]

6月29日(木)

 『怪盗グリフィン、絶体絶命』 (法月綸太郎)

冒険小説の傑作。 先の読めないストーリー展開。 二転、三転する目まぐるしい終盤にはくらくらしてしまった。


6月27日(火)

 ASP.NET 2.0 あるいは VS 2005 について感じること

GridView なんぞを使うと、ほとんど、ぽとぺたでアプリができてしまうわけです。 ですが、そこから、ちょっとでも、はずれたことをしようとすると、途方にくれてしまいます。 更新処理をするときに、ロジックで生成した値で更新するスマートな方法もわかりません。 たとえば、更新者の列がテーブルにあるとしましょう。

ASP.NET初心者の私には、こんなことすら、どうすればいいのかわかりません。 その昔 Visual C++ 1.0なんかで、ダイアログアプリケーションを 作るのに苦労したときと同じような感じがしてならない今日この頃です。


6月25日()

 [Ruby] [Win32OLE] テスト

Ruby 1.9 で test_win32ole_event.rbがエラーで失敗する理由がわかった。 が、どう対処すべきか、ちょっと悩む。 いや、修正の方法は、わかっているんだけど、どういう仕様にすべきか迷っている。 もうちょっと考えてみよう。

あとわからないのは、単独でテストしてもエラーにならなかったこと。 今は単独でテストしてもしっかりエラーになるのだが、その方がつじつまが合っている。 単独でテストしてエラーにならなかったのは、気のせいだろうか。

 [Ruby] [Win32OLE] WIN32OLE_EVENT

次のようなスクリプトがある場合、Ruby 1.8 では動作しますが、 Ruby 1.9 ではエラーになります。

require 'win32ole'

def on_event
  STDERR.puts "Some Event Fired"
end

ie = WIN32OLE.new('InternetExplorer.Application')
ev = WIN32OLE_EVENT.new(ie, 'DWebBrowserEvents')
ev.on_event{ on_event }

ie.visible = true
ie.gohome

Ruby 1.9 では、

ev.rb:11: wrong number of arguments (3 for 0) (ArgumentError)
     from ev.rb:11

となります。

このエラーは非常にわかりにくいです。 エラーの意味は、

11行目で引数0のはずなのに3つの引数を渡しているよ。

というものです。

実際に11行目を見ると

ie.visible = true

となっています。 引数3つって何のことよ? と途方に暮れてしまうしかありません。

実は、これは、ie.visible = true が実行されたときに、DWebBrowserEventsのイベントが発生し、 ev.on_eventで定義されたブロックを、Win32OLEが呼び出します。 このときに、Win32OLEは発生したイベントに応じた引数を設定してからブロックを呼び出します。 ところが、ブロックの方は、引数を指定していない(0)ので、引数の数が合わなくてArgumentErrorになってしまうのです。

今は

ev.on_event{|*args| on_event}

と書けば、このエラーを回避することができます。

が、Win32OLE側ではどうすべきかというところで、悩んでいる訳です。

  1. 何もしないで現状のまま。

  2. arityを使って引数の数を調べて、数が一致しなければ、もう少しわかりやすいメッセージにして、ArgumentErrorを発生させる。

  3. arityを使って引数の数を調べて、数の分だけ引数を渡す。

選択肢は、こんなもんかなあと思う訳ですが...。 3はちょっとやり過ぎな気がするので、1か2かなあ...。


6月24日()

 『Write Great Code Vol.1』(Randall Hyde)

事情により、後半、ななめ読みになってしまったけど、一通り、読んだ。 へえ〜と思うところだとか、なるほどと思うところがあった。 今のところGreat Codeを書くための準備運動という感じ。 Vol 2では、もう少し実践的な話になってくるみたいなので期待。

 [Ruby] [Win32OLE] テスト

Ruby 1.9 で

make test-all TESTS=win32ole

がtest_win32ole_event.rbでエラーで失敗するのは、どうしてだろうか。 test_win32ole_event.rb単独でテストするとエラーにならない。


6月23日(金)

 ちょっとドキドキ

rubycoさんがWin32OLEを使ってくれてます。 ちょっとドキドキしてしまいました。


6月19日(月)

 [Ruby][Win32OLE] Wordのサポート

めちゃくちゃアドホックな修正により [ruby-Bugs#3237] の対応をした。 とりあえず、

wordAppl = WIN32OLE.new('Word.Application')
wordAppl.WordBasic.DisableAutoMacros(true)

でエラーが起きないようになった。 申し訳ないですが、こんなのWord前提でないとテストスクリプトは書けないです。


6月18日()

 『死神の精度』 (伊坂幸太郎)

人間を一週間観察してその人間が死んでもいいかどうか判断する死神の連作短編集。 死神「千葉」のクールでとぼけた(本人は大真面目だが)キャラクターがいい味を出している。 死神に負けず劣らず、いい味出しているキャラクターの老女が登場する「死神対老女」が好み。

 [Ruby][Win32OLE] 一気呵成

1.8では、2段階に分けてコミットした。 1.9でも同じ修正で大丈夫だろうということで、今回は一度にコミットした。

 T-Code

しばらく平仮名から遠ざかっていたら、平仮名の入力ができなくなってしまっている。 また、一から練習しなおし。


6月17日()

 ASP.NET in VS2005

なんかポトペタで作っていくと、いわゆるプログラミング能力とは違う能力を求められているような気がする。 生産性は確かに高いのであるが、あっちこっち視点を動かさねばいけないように感じてどうにも馴染めない。 テキストエディタでソースコードだけ眺めていればいい古い世界とは違う。 同じものをテキストエディタでごりごり作れと言われても、それはそれで大変だろうと思う。 逆に、ポトペタの範囲で済むようなものであればいいのだが、 その範囲を越えようとすると、コードが表に見えない(ように感じる)分、 余計にしんどいんじゃないかと思う。

 [Ruby][Win32OLE] ひさしぶり4

1.8系では、それなりに動くようになったと思う。 元々、動作しなかったSAPIを使うテストも追加しておいた。 XPでは、標準でインストールされるみたいだからテストも動くと思う。 2000だとSAPIをインストールする必要がある。 Speech SDK 5.1(SpeechSDK51.exe)をダウンロード してインストールすればテストできる。


6月15日(木)

 VS2005

どこをマウスでクリックして、どうすれば、欲しい結果が得られるのか、さっぱりわからない。 5分でできることに1日かかってしまいましたよ。 コードビハインドの世界は、難しい。 生産性が高いのは確かだけど、使い込なすには、バッド・ノウハウをいっぱい覚えなければならないような気がする。

 [Ruby][Win32OLE] ひさしぶり3

1.8系のWin32OLEでPROPERTYPUTREFを(私の気分で)30%ぐらいまともに扱うように修正した。 残り70%の修正がちょっと面倒なのだが...。 1.9でも同じ問題があるので、実質15%ぐらいの修正が完了というところだ。


6月14日(水)

 [Ruby][Win32OLE] ひさしぶり

Excelを扱う必要があったので、ひさびさにWin32OLEを使った。

 [Ruby][Win32OLE] ひさしぶり2

ひさしぶりに、1.8添付のWin32OLEのソースを眺める。 それにしても、Win32OLEがPROPERTYPUTREFをまともに扱っていない理由を思い出せない。 まずは、テストを書かないと。 テストには、Scripting.Dictionaryが使えそうだ。


6月11日()

 日本Rubyカンファレンス2006

2日分、まとめて。 参加されたみなさん、2日間おつかれ様でした。 感想など。

そして、最後にスタッフのみなさん、本当に本当にありがとうございました。

 モチベーション

最近、この手のイベントに参加しても、何かやりたいという風な気持ちにならないのは、何故だろうか。 もう少し正確に言うと何かやりたいなと漠然と思うのだけど、 全然、行動に移さないのはなぜだろう...。


6月09日(金)

 .NET

ただいま、ASP.NETプログラマ (レベル0)。 WMIを扱うクラスライブラリがあることを知った。 SNMPを扱うクラスライブラリって無いのかな。

 GHC Version 6.4.2

インストールした。 Vine Linuxなので、 GHC 6.4.2のダウンロードのページから Generic Linux with glibc 2.3 をダウンロードした。

tar jxvf ghc-6.4.2-i386-unknown-linux.tar.bz2 
cd ghc-6.4.2
./configure
make install

これで、『ふつうのHaskellプログラミング』をいつ手に入れても大丈夫。

 T-Code

ただいま、レッスン25。

インストールした。
Vine Linuxなので、
GHC 6.4.2のウンロードのージから
Generic Linux with glibc 2.3をウンロードした。

 tar jxvf ghc-6.4.2-i386-unknown-linux.tar.bz2 
 cd ghc-6.4.2
 ./configure
 make install

これで、ふつうのHaskellプログラングをいつてにいれてもだいじょう。

6月05日(月)

 [Ruby][Win32OLE] 起動しているIEをつかまえる

自分で、ruby-listで回答しておきながら、 忘れてしまってたので改めてメモ。

Excelだと

excel = WIN32OLE.connect('Excel.Application')

で起動しているExcelをつかまえられます。

でも、Internet Explorerは

ie = WIN32OLE.connect('InternetExplorer.Application')

でつかまりません。

つかまえるには、Shell.Applicationを使います。

app = WIN32OLE.new('Shell.Application')
ie = nil
app.windows.each do |w|
  # Ruby 1.9以降では、WIN32OLE#ole_obj_help よりも
  # WIN32OLE#ole_type を推奨します。
  # if w.document.ole_type.name == 'DispHTMLDocument'
  if w.document.ole_obj_help.name == 'DispHTMLDocument'
    ie = w
    break
  end
end
puts ie.locationURL if ie

ここで、

if w.document.ole_obj_help.name == 'DispHTMLDocument'

と条件をつけているのは、IEに限定するためです。 これがないと、Explorerも対象になってしまいます。 ちなみに、Explorerの場合、w.document.ole_obj_help.name の値は IShellFolderViewDual となります。

 日本Rubyカンファレンス2006

これまで、名前がプログラムに登場しなかったので、あえて触れなかったのですが、 名前がでたのでひとことだけ。 コメンテータという立場で参加させていただくことになりました。

 T-Codeの練習

レッスン24をかいし。

これまで、なまえがプロラムにとうじょうしなかったので、
あえてふれなかったのですが、なまえがでたので、ひとことだけ。
コンータというたちばでさんかさせていただくことになりました。

6月04日()

 『トーキョー・プリズン』 (柳広司)

終戦後のプリズン(戦犯収容所)内で起こった兵隊の中毒死事件。 フェアフィールドはプリズンの囚人貴島悟の協力を得て事件の謎を追う。

貴島の安楽椅子探偵ぶり、供述書に隠された真実、中毒死事件の真相など、ミステリマインドに溢れた小説。 戦争が無ければ、起こらなかった悲劇を描いているが、重苦しい雰囲気のない、読み応えのあるミステリに仕上がっている。

 T-Codeの練習

ただいま、レッスン23。

しゅうせんのリン(せんんしゅうようしょ)ないでおこったへいたいのちゅうどくしじけん。
フアフールドはリンのしゅうじんきじまさとるのきょうりょくをえてじけんのなをおう。
きじまのあんらくいすたんていり、きょうじゅつしょにかくされたしんじつ、
ちゅうどくしじけんのしんそうなど、スリマインドにあふれたしょうせつ。
せんそうがなければ、おこらなかったひげきをえがいているが、おもくるしいふんいきのない、
よみたえのあるスリにしあがっている。

6月03日()

 ストレスフリーの仕事術

前田さんの日記で知った本。 この本の著者が、『仕事を成し遂げる技術』の著者であることを知って気になっていた。 『仕事を成し遂げる技術』は、読みにくかったので、読もうかどうしようか迷っていた。 そんな今日この頃、やまだあきらさんの日記でも取り上げられているのを読んだ。 どうやら、この本の方が、読み易いみたい。 読む方に気持ちが傾いた。

 T-Codeの練習

ただいま、レっスン22。

まえださんの日きでしったほん。
このほんのちょしゃが、しとをなしとげるじゅつのちょしゃであることをしって気になっていた。
しとをなしとげるじゅつは、よみにくかったので、よもうかどうしようかまよっていた。
そんなきょうこのろ、やまだあきらさんの日きでもとりあげられているのをよんだ。
どうやら、このほんのほうが、よみやすいみたい。
よむほうにきもちがかたむいた。

にゅうりょくみスがあいかわらずおおい。
SKKでにゅうりょくしたほうがはるかにはやい。

 少年は探偵を夢見る (芦辺拓)

推理小説というより、探偵小説といった方がしっくりくる連作短編集。 森江春策ファンには一読をオススメします。

 1度に1冊

最近、「本を読むと他のことをする暇がない」という話を聞いた。 また、「普段何やってるんですか? 読書?」などと聞かれたりもした。 本を読んでいる分、他のことに時間を割けないことも事実。 そこで、図書館で借りるのは一度に一冊というルールを自分に課してみることにした。 近所の図書館は、貸出数に制限なしというとんでもない無法ルールを採用している。 この誘惑に勝つことができるかどうかが勝負の分れ目である。

 T-Codeの練習

さいきん、「ほんをよむとほかのことをするひまがない」というはなしをきいた。
また、「ふだんなにやってるんですかどくしょ」などときかれたりもした。
ほんをよんでいるん、ほかのことに時かんをさけないのもじじつ。
そこで、としょかんでかりるのはいちどにいっさつというルールをじんにかしてみることにした。
きんじょのとしょかんは、かしだしすうにせいげんなしというとんでもないむほうルールをさいようしている。
このゆうわくにかつことができるかどうかがしょうのわかれめである。

[トップページへ] [5月] [1月] [過去の雑感へ]