« 2007年7月 | トップページ | 2007年9月 »

2007年8月28日 (火)

[Ruby] Win32OLE と MFCで作られたActiveX コントロール

Ruby 1.8系でもWIN32OLE_TYPE#progidのバグは対応しようと思って ちょっと作業中である。

それとは別件で、MFCで作られたActiveXコントロールへの対応機能を 1.8.6にも追加してくれないかという要望が来ている。

この機能だけは、既存のソースを書き変える必要がない(下位互換性は保証される)ので、 ruby_1_8 になら追加してもいいかもと考え始めている。

ruby_1_8系列には、 「1.9との前方互換性向上(機能先取りの積極的なbackport)」 という面もあることだし([ruby-dev:30560])。

それから、MFCで作られたActiveXコントロールへの対応はバグフィックスではなく、 あくまでも、新機能の追加という位置づけであることを強調しておきたい。

と、ここに日本語で書いても伝わらないのだろうな。きっと。

| | コメント (0) | トラックバック (1)

2007年8月27日 (月)

[Ruby] Win32OLEとVistaあるいはProgIDFromCLSID と SysFreeString


Vista でWin32OLEがSEGVしていた件。



OLECHAR *pbuf
ProgIDFromCLSID(clsid, &pbuf);
SysFreeString(pbuf);


と、pbufの結果をSysFreeStringしてはいけなかったらしい。
確かにProgIDFromCLSIDのヘルプを読んでもSysFreeStringしろとは
どこにも書いていない。
ずーっと思い違いをしていた。


| | コメント (2) | トラックバック (0)

2007年8月26日 (日)

[英語] ヘンリー・スレッサーあたりなら、オチをもう一捻りするんだろうなと思いながら読み終えたJigsaw Jonesシリーズの1冊


The Case of the Stinky Science Project



ただいま英語914772語。


| | コメント (0) | トラックバック (0)

[Soft] Mule-UCS


Emacsの起動が遅くなるのでMule-UCSを使わなかった。
最近、UTF-8のメールが混じるようになったので、
仕方なくcmailを使うときだけ、Mule-UCSを使うようにした。



(setq cmail-startup-hook
(function
(lambda ()
...
;;;; Mule-UCS
(require 'un-define)
(require 'jisx0213)
...

| | コメント (0) | トラックバック (0)

[英語] そう言えば今回父親は登場しなかったなと思いながら読み終えたNancyDrewシリーズ第5段


The Secret of Shadow Ranch



ただいま英語909109語。


| | コメント (0) | トラックバック (0)

2007年8月25日 (土)

[Ruby] WIN32OLE_EVENT


考えを突き詰めて、頭の中でこねくり回して、ちょっと変更してみた。
これで何かが良くなったのかどうかは、確信が持てないんだけど、
良い方向に向かっていると信じたい。
WIN32OLE_EVENTオブジェクトを途中でGCさせるのは、
まだできないし、難しい。


| | コメント (0) | トラックバック (0)

[本] 読んでいるこちらが少しだけ気恥ずかしい気分にさせられた日常の謎を解く連作短編集。

一人娘、ふうちゃんの結婚式当日に父親のハルさんが ふうちゃんの成長を回想する形式で、 ちょっとした日常の謎が描かれる。 謎は大したことは無いが読後感はほのぼのとして良かった。

| | コメント (0) | トラックバック (0)

2007年8月24日 (金)

[Ruby] WIN32OLE_EVENT


グローバル変数の配列に入れるのをやめて不要になったら
GCされるようにWIN32OLE_EVENT周りを修正したら
Rubyがたまに異常終了するようになってしまった。



なんかWIN32OLE_EVENTって根本的に設計を
間違えてしまったような気がしてきた...。


| | コメント (0) | トラックバック (0)

2007年8月23日 (木)

[英語] 妙に眠気に襲われてうとうとしながら読み終えた、語り口だけはNancyDrewよりも一人前のハードボイルドっぽいJigsaw Jonesシリーズの1冊の本


The Case of the Great Sled Race



話の中に登場するStone Fox のハッピーでしかも悲しい結末がどんな結末だったのか
すごく気になる。



ただいま英語875655語。


| | コメント (1) | トラックバック (0)

2007年8月22日 (水)

[英語] 今回もさくさく読めず、英語力の無さを痛感してしまったNancy Drewシリーズの第4段

Nancyの偽者が登場して、ちょっと見た目には区別がつかないほどらしいので、 これは何か高等なトリックがあるのかと思いきや、なんかオチは平凡。 Nancyが都合よくピンチに落ち入り、あまりにも都合良く助かってしまうのは ちょっとどうだろうと思ってしまうのが大人目線なんだろうなあ。

ただいま英語870083語。

| | コメント (0) | トラックバック (0)

[Ruby] Win32OLEとVista


Vistaに手を出すときはハードから買い替えなきゃ駄目だろうと
考えているので、Vistaには当分、手を出さないでおこう。
と決めていたんだけど、Win32OLEのサポートのためには、
Vistaな環境も用意しなきゃ駄目っすか?



Win32OLEみたいなもんが、Vistaでもまともに動くんかいな。
OLEとかCOMとか言っている時点で古いような気がするんだけど、
Vistaでもその辺のテクノロジは捨て切れないのか。


| | コメント (0) | トラックバック (0)

2007年8月21日 (火)

[Ruby] WIN32OLEとWIN32OLE_EVENT


Win32OLEのソースを変更する前にスクリプトを書きながら考えている。
WIN32OLEがGCされたら WIN32OLE_EVENTもGCされるという変更は、
考えていたよりも影響が大きいのではないかと思い始めた。
ソースを変更する前と変更した後では、
動作に違いの出るスクリプトがありそうな予感。
まだ、机上の空論だけど、今度は時間を取って、実際に
ソースを書き変えて調べてみるつもり。


| | コメント (0) | トラックバック (0)

2007年8月20日 (月)

[Ruby] WIN32OLEオブジェクトとWIN32OLE_EVENTオブジェクト


なんか自分で整理できていない気がするので、書きながら整理してみよう。



WIN32OLEオブジェクト1つとそのイベントに
反応するWIN32OLE_EVENTオブジェクトが1つあったとする。



GCされるときには、




  1. 先にWIN32OLEオブジェクトがGCされる。



  2. 先にWIN32OLE_EVENTオブジェクトがGCされる。




2.の場合には、WIN32OLE_EVENTオブジェクトがGCされると
それ以降、WIN32OLEオブジェクトのメソッドを呼び出しても
イベントを拾うことができない。
だから、WIN32OLEオブジェクトが存在し続ける限り、
WIN32OLE_EVENTも存在し続けた方が良い。
そこで、WIN32OLE_EVENTはGCされないように
win32ole内部のグローバルな配列に追加している。



だが、WIN32OLEオブジェクトが存在し続ける間だけ、
WIN32OLE_EVENTが存在し続ければ良いのだから、
WIN32OLEオブジェクトにWIN32OLE_EVENTオブジェクトの配列を
メンバーとして持たせれば良い。



...ような気がしてきた。



[ruby-dev]の問題は、このグローバルな配列の件とは別で、
次のような問題だったような気がしてきた。



WIN32OLE_EVENTオブジェクトがGCされるとき、
IConnectionPoint->Unadviseを実行して、OLEサーバーに
イベントを送ってこなくていいよと伝える。
OLEサーバーは参照カウントを1つ減らし、
OLEサーバーは、WIN32OLE_EVENT側のReleaseを呼び出す。
WIN32OLE_EVENT(がアロケートした領域)は、OLEサーバーからの
Releaseの呼び出されるまで存在し続けなければならない。
なので、GCのタイミングでWIN32OLE_EVENTの領域をfreeできないのである。



...というのが問題だったんじゃなかったかな。



つまり、WIN32OLE_EVENTのGCのタイミングでは領域をfreeしないで
Releaseが呼ばれたときに領域をfreeしてしまえば良い



...のかな。



いや、逆にWIN32OLE_EVENTオブジェクトがGCされる前にWIN32OLE_EVENT側の
Releaseが呼ばれる場合もあったような...。



ということで、試してみることは、




  1. WIN32OLE_EVENTオブジェクトを保持するグローバル配列を廃止する。



  2. WIN32OLEオブジェクトにWIN32OLE_EVENTオブジェクトを保持する配列のメ
    ンバを追加する。



  3. ole_event_free と EVENTSINK_Releaseのどちらが先に呼ばれるか
    再確認する。(1.と2.の修正がうまくいった上で)



  4. [ruby-dev]の問題の対策を考え直す。




とりあえず、1.と2.を片付けてから 3.と4.だな。


| | コメント (0) | トラックバック (0)

2007年8月19日 (日)

[本] 横溝正史をあまり読んだことがない私には何とも言えないが人によっては横溝正史風味だと評するかも知れない久々に読んだ骨太の本格ミステリ


神話の島 (久綱さざれ)



ちびちび読もうと思っていたが、続きが気になって一気読みしてしまった。


| | コメント (0) | トラックバック (0)

[Soft] そしてVineには、gtkpod と Rhythmboxが


今更ながら、試しに



apt-cache search iPod


としたら



gtkpod - アップルのiPod用GUIツール
libgpod - iPod にアクセスするためのライブラリ
rhythmbox - 音楽管理アプリケーション
sodipodi - A Vector Drawing Application


という結果が。
わざわざAmaroKをインストールしなくても良かったのかも...。
まあ、せっかくインストールしたんだから、AmaroKを使い続けよう。


| | コメント (0) | トラックバック (1)

[Soft] AmarokとRuby


amarok_daapserver.rbなんていうファイルを見つけたので、中身を見たら
Rubyスクリプトだった。
試しに、



find amarok-1.4.7/ -name "*.rb" | wc -l


としたら、結果は79だった。


| | コメント (0) | トラックバック (0)

[Soft] Amarok と iPod nano


Vine Linux のマシンに iPod nanoをUSBで接続。



mkdir /mnt/ipod
mount /dev/sda2 /mnt/ipod
ls -l /mnt/ipod


とするとファイルシステムが見えた。
一般ユーザーでもmountできるように/etc/fstabに



/dev/sda2 /mnt/ipod vfat rw,user,noauto


と追加。



amarokでメディアデバイスを設定画面で
接続前のコマンドに



mount /mnt/ipod


と設定しておく。



切断前のコマンドは



umount /mnt/ipod; sudo eject /dev/sda2


としておく。



(あらかじめ、visudoで eject /dev/sda2は、パスワードなしで実行できるようにしておく。)



また、設定画面のMedia Devicesでデバイスを1つ追加して
"Apple iPod Media Device" を選択しておく。



デバイスを表示して接続ボタンを押す。



最初にPlaylistsをクリックしたら、
「初期化されていないので、初期化するか?」と聞かれたので、
「はい」と答える。
あとは、適当にPC内のmp3ファイルを転送。



ということで、内心ドキドキしながらも、WindowsもMacも使わず、Linuxのみで
iPod nanoを扱えそうなことが確認できた。



あとは、audible.com なんだけど、これは、これで、専用ソフトじゃなきゃ
ダウンロードできないとすると厄介だな。


| | コメント (0) | トラックバック (0)

2007年8月18日 (土)

[Soft] Amarok 1.4.7


試しにインストールしてみた。



apt-get install task-kde
apt-get install libidn-devel
apt-get install fam-devel
apt-get install libgpod libgpod-devel


としておく。



tar jxvf amarok-1.4.7.tar.bz2
cd amarok-1.4.7
./configure --prefix=`kde-config --prefix`


すると他にもあれが足りない、これが見つからないと
エラーメッセージを出すので、その度に適当に
apt-get installして、configureを繰り返す。
configureが通ったらmakeです。



make
make install


すると、リンク時に足りないと言われるものがあれこれ出てくるので、
これまた適当に、apt-get installしては、makeを繰り返す。



amarok


で実行できる。
mp3ファイルを再生できることを確認した。


| | コメント (0) | トラックバック (0)

[英語] どちらかというとミステリというよりもドタバタスラプスティックコメディだなと思いながら読んだJigsaw Jonesシリーズ


The Case of the Mummy Mystery



ちょっとレベルを下げて読んでみた。
ぼーっとしながら読んだので、頭に入ってこないなあ。
日本語の本を読むよりもまだかなり集中力が必要な自分がここにいる。



ただいま英語834629語。


| | コメント (0) | トラックバック (0)

[Soft] Vim7.1


なぜかずっと7.0のままだったのに気づいたので、
Vim7.1にした。


| | コメント (0) | トラックバック (0)

[本] 読み終わってなんだか肩すかしを喰らったように感じた本


騙し絵の館 (倉阪鬼一郎)



作中作のトリックには呆然としてしまった。


| | コメント (0) | トラックバック (0)

[Soft] Amarok と audible.com


今のところ、英語は多読中心で、聴く方はやっていないのだが、
多読も100万語が近づいてきて、多聴とかシャドーイングとか
気になり始めている。



多聴の話題でaudible.comを取り上げているサイトをちらほらと見かけるのだが、
audible.comで扱われているファイルaaは、iPodなど特定の機種でしか再生できないらしい。



私のメインの環境は、Vine Linuxなので、iPodを扱えるのかとgoogleで調べてみたら
Amarokなど、
いくつかその手のソフトがあることがわかった。



ところが、探し方が悪いのか、audible.comのaaファイルを
扱えるのかどうかの情報を見つけることができない。
仕方なくAmarok 1.4.7の
ソースをダウンロードして調べてみたら、
ChangeLogに



Ability to read audible.com .aa file metadata and to transfer audiobooks
to iPod via file browser.


と書いてあった。
私の環境でもaudible.comのaaファイルを扱えるかも知れないと
期待を持ち始めたところである。



次回へ続く... かも知れない。


| | コメント (0) | トラックバック (0)

2007年8月17日 (金)

[Ruby] WIN32OLE_EVENTとダメダメな私

最近、めっきりWin32OLEやRubyのことを深く考えなくなっている。 Linuxのソフトをインストールしたりすることも無くなって どうにも不精になったというかチャレンジ精神が無くなったというか 守りの姿勢に入ってしまっているというか、 なんかダメダメである。

多分、英語100万語に気を取られているのも1つの要因だ。

そんな今日この頃なので、[ruby-talk:264885]の件も どうしてそういうことになってしまっているのか すぐには思い出せないのである。

確かややこしい込み入った事情があって、 [ruby-dev:27133]の問題を避けるための 苦肉の策だったことだけはかすかに覚えている。

WIN32OLE_EVENTオブジェクトが消えるときには IConnectionPointのUnadviseを実行するようになっていて、 WIN32OLE_EVENTオブジェクトはfreeされる。

COMサーバー側は、Unadviseを受けてEVENTSINK_Releaseを 呼び出すんだけど、そのときには、肝心のWIN32OLE_EVENTオブジェクトが freeされてしまっていてEVENTSINK_Releaseが呼ばれるときに Segmentation faultが発生する。

...というようなことだったような...。

で、結局、WIN32OLE_EVENTオブジェクトがうっかりfreeされないように GlobalなArrayにWIN32OLE_EVENTオブジェクトを追加しておくという 姑息な手段で逃げた。

...というような気がする...。

上手い方法がきっとあるに違いないと思ってはいるのだが、 その方法を思いつかないまま、 いつの間にか忘れてしまっていたのだった。

| | コメント (0) | トラックバック (0)

2007年8月15日 (水)

[英語] なんか急に難しくなったような気がしたけど、最後はみんな揃って大団円を向かえられて良かったなと思った本


Nancy Drewシリーズ第3段は、前2作よりも英語が難しかったよ。
語彙力の無さを痛感させられた。




ただいま英語828950語。


| | コメント (0) | トラックバック (0)

2007年8月12日 (日)

[本] 『竹馬男の犯罪』以来だと思いながら図書館で借りた本

ホラー風味のミステリ短編集。 合理的に謎が解かれるにも関わらず、 昭和30年代という猥雑でうさん臭い時代背景に、 どこか人智を超越した不気味な世界がひょっこりと顔を覗かせる。

| | コメント (0) | トラックバック (1)

[英語] レベルを下げるとさくさく読める自分を発見して少しは英語の基礎体力がついてきているかもと思った本

トリックはありふれているけど、子供向けとしてはよく考えられていると思う。

ただいま英語796129語。

| | コメント (0) | トラックバック (1)

[英語] 追記


ただいま英語791282語。


| | コメント (0) | トラックバック (0)

[英語] Hardy Boysシリーズの2作目も父親が誘拐される話だったように思い、これは偶然なんだろうかと考えながら読んだNancy Drewシリーズの2作目。

友人の婚約の話は事件の伏線かと思っていたら、全然そんなことは無かった。 Hardy BoysシリーズよりもNancy Drewシリーズの方が大人っぽい気がするのは何故だろう。

| | コメント (0) | トラックバック (0)

2007年8月11日 (土)

[本] ここのところずーっと100万語目指して英語の本ばかり目にしていて、このままでは、全く日本語の本を読まないままになってしまうかも知れないと危機感すら感じ始めたため、短編集なら英語の本を読む合間にも読みやすいだろうと思い、図書館で借りて読んだ本

書店ミステリシリーズ第3段の短篇集。 書店を巡る日常の謎解き。 「バイト金森くんの告白」「ヤギさんの忘れもの」が好み。 こういう話を読むとほっと和む。

| | コメント (0) | トラックバック (1)

2007年8月 8日 (水)

[英語] ちょっとレベルを下げてみた

レベルを下げて Cam Jansenシリーズを読んだ。

Nancy Drewに比べて、3分の1以下の長さのため、 ストーリーがシンプル過ぎるくらいにシンプルなことに 改めて気づかされてしまった。

ただいま、英語755410語。

| | コメント (0) | トラックバック (0)

[Comp] HTML編集


試しにHTMLの編集に某ソフトを使用した。



出力結果のHTMLが変なのと、
某ソフトによる編集時の見た目と
実際にIEで表示したときの見た目が食い違うのに
むかついた。
結局、普通のテキストエディタで、すっきりとしたHTMLに書き直してしまった。



某ソフトを使い慣れていないせいかも知れない。


| | コメント (0) | トラックバック (0)

2007年8月 7日 (火)

[英語] Nancy Drew シリーズ


アメリカで最も有名な少女探偵シリーズの1冊目。




Hardy Boysシリーズよりも英語が易しく感じたためか、
自分としては、テンポ良く読んでしまった。



ふとしたきっかけで、亡くなった大金持ちの老人の
遺書を捜すことになったNancyの冒険譚である。
素直なストーリー展開でヒネリもどんでん返しも無く
ある意味、期待を裏切らない予定調和的な結末。



Hardy Boysシリーズに比べると事件に現実味があった分だけ
抵抗なく読めた。



最後にちらっと次の事件を予告するところが
Hardy Boysシリーズと同じである。



ただいま英語749887語。


| | コメント (0) | トラックバック (0)

2007年8月 6日 (月)

[Ruby] Rabbit 0.5.3


MLが消えそうになるとバージョンアップのお知らせメールを投稿して
MLが消えるのを防ぐRabbitの作者の須藤さんは、なんか素敵だと思う。
Rabbitは、ML消滅防止駆動型という新しいタイプの
画期的なリリーススケジュールに従って、
バージョンアップして進化し続けているのだ。


| | コメント (0) | トラックバック (0)

[Ruby] Win32OLE のテストの修正

何かを修正するついでに修正しようと考えていたのだが、 ついでが見つからず、ほったらかしにしていた。 これじゃいつになっても修正できないと思ってテストスクリプトだけ修正してコミットした。

そして、ほったらかしにしていたために、 どう修正するべきなのかすっかり忘れていたり、 svnの使い方(コミットの仕方)を忘れていたりしている自分を再発見した。

| | コメント (0) | トラックバック (0)

2007年8月 5日 (日)

[英語] Nancy Drew Mystery シリーズ


という訳で、Hardy Boysシリーズに代わってNancy Drewシリーズを読み始めた。
まだ1冊目を58ページまでしか読んでいないのだけど、
今のところ、Hardey Boysシリーズより易しいように思う。
これで、Hardy Boys での行き詰まった感じが消えて
英語100万語に向けて勢いをつけられる。


| | コメント (0) | トラックバック (0)

2007年8月 4日 (土)

[英語] Hardy Boysシリーズ

集中力が無いせいか実力が伴わないせいかやたら難しく感じてしまった。 1ページ2分以内で読めない。 面白味もあまり感じられない。 どれも同じ話みたいに思えてきて、 クライブ・カッスラーのダーク・ピット・シリーズを連想してしまった。

次はNancy Drewに手を出すつもりなんだけど、 Hardy Boysが妙に難しく感じたので、Level3以下の本も混ぜながら 読むつもり。

ただいま英語715538語。

| | コメント (0) | トラックバック (0)

« 2007年7月 | トップページ | 2007年9月 »