2009年9月29日 (火)
[Ruby] ASR
1.8.7.12(exp) が公開されました(ruby-list:46420)。
あくまでも実験版で、1.8 select 問題が解消された win32.c を使用して作成したパッケージだとのことです。
2009年9月26日 (土)
[本] 40年ぶりのシリーズ第ニ作の翻訳
暗殺のジャムセッション (ロス・トーマス)
懐しいと思わず手にとってしまった冷戦交換ゲームに続くシリーズ第ニ作。
200ページ余りという短い作品だけど、内容はかなり濃密。 謀略と裏切りが渦巻き、人物は複雑に入り乱れ、プロットは錯綜している。 さすが、いかにもロス・トーマスといえる仕上がり具合。
2009年9月25日 (金)
[英語] リンカーン・ライムシリーズからのスピン・オフ作品
The Sleeping Doll (Jeffery Deaver)
言葉を武器にして、相手の言葉使い、声の調子、表情、仕草などから嘘を見破る尋問の天才 Kathryn Dance が脱走した凶悪犯 Daiel Pell を追う。
同じJeffery Deaver のリンカーン・ライムシリーズ『Cold Moon』に登場した Kathryn Dance が主役として登場。
『Cold Moon』と比べるとちょっと物足りなかった。
一見、事件が解決したように見えても、Jeffery Deaver の場合、
残りページからどんでん返しがまだあるなと簡単に想像できてしまう。
ここまでは、いい(というかJeffery Deaverにハンデがあると思う)のだが、
今回は、そのどんでん返しが予想できてしまい、その予想が当たっていたこと。
XX が YY することによってすっきりとした解決を期待していたのだけど、そうはならず、消化不良な感じの幕切れであったこと。
こういったところがマイナス要因となり、評価は辛くなってしまった。
時系列的には、『Cold Moon』の後のできごとで、
リンカーン・ライムとアメリア・サックスもちょっぴり登場します。
言葉に拘る Kathryn Dance が主役だからかどうかわからないけど、リンカーン・ライムシリーズより英語は難しく感じた。
翻訳は、『スリーピング・ドール』。
No weapons - except words, and her intuition.
2009年9月18日 (金)
2009年9月17日 (木)
2009年9月15日 (火)
[Ruby] rubyforge
1.0.5 が公開されました(ruby-talk:346471)。
rubyforge の操作の一部を自動化するスクリプト。
リリース名称を使ってRubyforge のトラッカーを同期するスクリプト(テスト版)が追加された他3つの改訂。
[Ruby] rspec と rspec-rails
1.2.9.rc1 が公開されました(ruby-talk:346436)。
Ruby や Rails で BDD するためのライブラリ。
1.2.9.rc1 をインストールする前に、rubygems を 1.3.5 にバージョンアップすることを推奨しています。
rubygems-1.3.5にしておくことで、1.2.9.rc1 は、1.2.8より新しく1.2.9より古いバージョンとして扱うことができるそうです。
1.2.9.rc1 をインストールするには、gem コマンドで --prerelease オプションを指定すればよいようです。
Spec::Runner.configure を使って backtrace の情報から無視したいパターンを管理できるようになった他いくつかの改訂がされている模様。
2009年9月14日 (月)
[Ruby] rdoc_chm
2.4.1 が公開されました(ruby-talk:346389)。
RDoc ファイルから Microsoft HTML ヘルプファイルを生成するツール。
メソッドは、インデックスページから削除され、CHM TOC(って何?) にリストアップされるようになった他1点の改訂。
[Ruby] tyrantmanager
1.2.0 が公開されました(ruby-talk:346369)。
Tokyo Tyrant のインスタンスを管理するコマンドラインツール。
(Tokyo Tyrant も tyrantmanager も全く知らないので内容はわかりませんが)
TyrantInstance が コネクションの代わりに TyrantTable か Tyrant を使うようになった(という解釈で合っている?)他2点の改訂。
[Ruby] pr-win32ole その4
ruby-talk:346323 で、pr-win32ole を改訂したとのメール。
pr-win32ole の最新版を入手してソースを眺めてみた。
if pvarResult
varResult = 0.chr * 16
WIN32OLE.ole_val2variant(result, varResult)
memcpy(pvarResult, varResult, 16)
end
うーん。これって C で書くと
if (pvarResult) {
Variant varResult;
WIN32OLE.ole_val2variant(result, &varResult);
pvarResult = &varResult;
}
みたいなこと?
そうだとすると、
OLEサーバ側(呼出し元)で確保したメモリ領域を指しているpvarResultを
Win32OLE側(呼出し先)で確保したメモリ領域を指すように変更している
ように見えるんだけど、まずくないかな。
私の認識
(と
この前 arton さんからいただいたコメント
を元に判断すると)
だと、そういうことをしてはいけないと思ってるんだけど...。
2009年9月13日 (日)
[本] 第1作が翻訳されてから40年経ってようやく翻訳されたんだからこれはもう読むしかないと思って借りてきた本
暗殺のジャムセッション (ロス・トーマス)
今頃になって、ロス・トーマスのデビュー作『冷戦交換ゲーム』の続編の翻訳が出版されるとは思わなかった。
ちなみに冷戦交換ゲームは読んだことがあるはずですが、覚えていません。
他に読んだことがあるのは、『八番目の小人』、『モルディダ・マン』、
『女刑事の死』、『五百万ドルの迷宮』、『黄昏にマックの店で』ぐらい。
どれもストーリーは覚えていないのだけど『女刑事の死』のラストだけは鮮明に覚えています。
あれをラストに持ってくるとは、ロス・トーマスはなんて卑怯な作家なんだと思ってしまった記憶があります。
読む時間を取れるかな。
[Ruby] Win32OLE の WIN32OLE_TYPELIB のバグ
先日見つけた WIN32OLE_TYPELIB のバグを修正できたのでコミット。 もうちょっとリファクタリングした方がいいかな。
2009年9月12日 (土)
[Ruby] Win32OLE
この前の、WIN32OLE_EVENT.message_loop でクラッシュするという話、もう少し詳しい情報が欲しいと
お願いしたんだけど何の音沙汰もない。
VariantInit だけでも追加しておいた方がいいと思うので、後で追加しておこう。
2009年9月11日 (金)
2009年9月10日 (木)
[Ruby] Joker
最初のリリース?が公開されました(ruby-talk:346058)。
Regexpのようなライブラリ。
Regexpに馴染みのない人のためのワイルドカード検索ができるようにするためのライブラリ。
正規表現を知らない人には、正規表現を教えてあげる方がいいんじゃないだろうか?
Ruby以外でも役に立つし。
2009年9月 9日 (水)
[Ruby] ASR(ActiveScriptRuby)
1.8.7.11 が公開されました(ruby-list:46371)。
Ruby-1.8.7-p174 ベースになった他、ASRに同梱されている Exerb で enumerator の LoadError が出るバグがフィックスされています。
[Ruby] Rabbit
0.5.9 が公開されてました(ruby-list:45863)。
Rabbit をコマンドラインから制御するrabbit-commandが追加された他、いくつかの改訂。
残念ながら、Ruby-GNOME2 が 1.9.1未対応のため、Ruby-GNOME2 に依存している Rabbit は1.9.1には未対応だそうです。
ruby-talk のメールの数と ruby-list のメールの数は1桁違うということに、今、初めて気づきました。
[Ruby] Caty
0.0.1 が公開されました(ruby-talk:345972)。
コマンドラインオプションをインスタンスメソッドにダイレクトにマッピングするコマンドラインパーザ。
optparse.rb なんかと競合するライブラリ。
試してみた。
$ sudo gem install caty
$ cat catyt.rb
require 'caty'
class Foo < Caty
def cmd1
puts "this is cmd1"
end
def cmd2
puts "this is cmd2"
end
end
Foo.start!
$ ruby catyt.rb cmd1
There is no task named `cmd1'
うーん。期待通りに 1.9.2dev では動作しませんでした。
本当は、Foo#cmd1 が実行されるはずなんだけど...。
[Ruby] Clogger
0.0.6 が公開されました(ruby-talk:345951)。
HTTP リクエストをロギングするRack対応のミドルウェア。 ログフォーマットをカスタマイズすることができます。
clogger_ext が clogger gem にマージされた他、いくつかの改訂。
2009年9月 7日 (月)
[Ruby] Inochi
1.1.0 が公開されました(ruby-talk:345867)。
gems 対応のアプリケーションのドキュメンテーション生成やタスクの自動化などに使用できるツール。
ユーザーマニュアルの改善、MicrosoftのWebブラウザのサポートの改善などがされているそうです。
[Ruby] ERBook
7.1.1 が公開されました(ruby-talk:345856)。
eRuby テンプレートからドキュメントを生成する拡張可能なプロセッサツール。
XHTML フォーマットの MS, Opera, Webkit の Web ブラウザのサポートが改善されているそうです。
2009年9月 6日 (日)
[日記] QC検定
QC検定 の4級と3級を受けてきた。 せめて、どっちか受かっているといいなあ。
3級受験に備えて買った電卓が、ルート計算のできない電卓だったことに後から気づいたけど、そのまま受験した。 ルート計算できないとちょっと厄介な問題が1問だけあったけど、適当にごまかしてきた。
それはさておき、試験会場に到着してから、どの建物が自分の受験場所かわからず、まごついた。 もうちょっと目立つ案内とか地図とかを出してくれてもいいんじゃないかと思った。 あと、廊下にも受験票と受験場所を記載した看板を出してたけど、確認するために大勢の人が立ち止まって、 通り抜けできなくなるので、あれはやめてほしかった。
[Ruby] Ruby Q.E.D.
1.1.0が公開されました(ruby-talk:345814)。
Q.E.D. は Quality Enhanced Demos の略。
Ruby 開発者のための品質保証とドキュメントシステムとして使うことができるそうです。
Q.E.D. は、Test Unit と Cucumber の中間に位置するようなライブラリらしいです。
2009年9月 5日 (土)
[Ruby] pr-win32ole その3
arton さんから更にコメントをいただいた。 いろいろありがとうございます。
ということで、私がさほど勘違いをしていないことがわかりました。 安心しました。
pr-win32ole はこんな感じにするのが正しそう。
if pvarResult
VariantInit(pvarResult)
WIN32OLE.ole_val2variant(result,pvarResult)
end
なんだけど、現状だと
if pvarResult
WIN32OLE.ole_val2variant(result,pvarResult)
end
となっているので
VariantInit(pvarResult)
を追加するのがいいのだろうけど、 その前に、やっぱり、どんなOLEサーバーでどんなイベントを起こしてクラッシュしているのかそれが知りたい。
ということで、相手から回答のメールがruby-talkに投稿されるのを待つことにします。
なるほど。 こういうとき、Win32OLEよりも、pr-win32ole の方が Cコンパイラを持ってない人にも、手軽にいろいろ試してもらえるので便利だな。
ところで、前から気になっているのだが、新たにRuby界にやってきた人が、 mswin32 版の開発に参加したいと思った場合 VC++ 6.0 をどうやって入手すればいいんだろうか?
[Ruby] pr-win32ole その2
期待してよいのはポインタの4バイトだけと artonさんからコメントをいただいた。
ということは、私は完璧にずっと勘違いしていたということになります。 で、「困ったときのPerl」の格言(←嘘)に従い、Perlはどうしているんだろうなと思って OLE.xs を調べたら、 pVarResult に対しては全く何もしてなかった。
ということは、私が勝手に勘違いして、勝手にpVarResultの処理を独自に追加したんだろうな。きっと。 pVarResult は、[out] なので、Win32OLE 側(呼び出し先)でメモリーを確保して返してあげればいいのか。 メモリーの解放は、OLEサーバ側(呼び出し元)でやってくれるので、気にすることはないのか。
念のため、pVarResultに値を設定しないことにしたら動きがどうなるか質問してみた(ruby-talk:345711)ら、 エラーは消えたけど、エラーメッセージも何も表示せずにクラッシュするようになったらしい(ruby-talk:345759)。
ということは、OLE.xs みたいに何もしないという訳にもいかんのか。
OLEサーバは、pVarResultにNULL以外を指定してWin32OLEを呼び出していて、 呼び出した後、OLEサーバは、何か値が設定されているだろうと期待して、pVarResultを参照したところクラッシュしたということか。
結局、どんなイベントを起こすとそうなるか知りたかったので、もう少しイベントの情報を教えてくれとお願いしてみた。
pr-win32ole はこんな感じにすれば動くのかな。
if pvarResult
v = 0.chr * 16
VariantInit(v)
WIN32OLE.ole_val2variant(result,v)
return VariantCopyInd(pvarResult, v)
end
| 固定リンク
| コメント (4)
| トラックバック (0)
[Ruby] unicorn
0.91.0が公開されました(ruby-talk:345748)。
Rackに対応した Unix 用の HTTPサーバ。
HttpParser#headers? メソッドが追加された他、いくつかのバグフィックスと改訂。
18年遅れになってしまいましたが、ようやく HTTP/0.9 がサポートされるようになったそうです!!!
[Ruby] gmail_contacts
1.7 が公開されました(ruby-talk:345655)。
GDataを使ってGmailにアクセスするライブラリ。
404を返すURLが #fetch_photoに渡されたときには、GData::Client::UnknownError 例外が raise されるようになったそうです。
2009年9月 3日 (木)
[Ruby] pr-win32ole
まだ公式にはリリースされていない pure Ruby で書かれた Win32OLE ライブラリ(ruby-talk:345507,
<URL:http://pure.rubyforge.org/svn/pr-win32ole>)。
すごいなあ。私には書けそうにない。
今のWin32OLEのコードは、難しくてメンテナンスしづらいので、
pure Ruby バージョンの Win32OLE によって、もっと Win32OLE をよりわかりやすく
メンテナンスしやすくしようというのが目的だそうです。
おっしゃる通りです。反論できません。
で、一連のスレッドの話だけど、Win32OLE のバグなのかなあ。
推測すると
OLEサーバ側が Win32OLE 側の EVENTSINK_Invoke(イベントハンドラ) を呼び出す。
Win32OLE側は、EVENTSINK_Invoke の引数 pvarResult が NULL でないからイベントハンドラの
実行結果(戻り値)を pvarResult に設定して OLEサーバ側に返そうとする。
で、pvarResult に値を設定しようとしているところでハングアップしている。
っぽい。
pvarResult が指すメモリは、EVENTSINK_Invoke を呼び出すOLEサーバ側が確保してくれ(て、後始末もOLEサーバ側でやってくれ)るものと
Win32OLEは期待している。
もし、OLEサーバ側でpvarResultが指すメモリを確保してなくてしかも NULL でない pvarResult が渡されてくるとしたらクラッシュしそう。
で、Win32OLEは、OLEサーバが あらかじめ pvarResult のメモリ確保をしてくれていることを期待してもいいんだよね?
[Ruby] ruby-debug19
0.11.6 が公開されました(ruby-talk:345563)。
Ruby 1.9.x の拡張ライブラリとして実装されたデバッガ。
標準のデバッガ debug.rb よりも高速に動作するとのことです。
次に実行するステートメントを変更することができる jump コマンドが追加されました。
[Ruby] Sequel
3.4.0 が公開されました(ruby-talk:345497)。
O/R マッパーを含んだ Ruby 用のデータベースツールキット。
ActiveRecord の Nested Attributes に相当する nested_attributes プラグインが追加された他、いくつかの機能が追加されました。
また、timestamp のデフォルトのフォーマットの日付と時刻の区切りが「T」から半角スペースに変わっているなど
いくつかの非互換な改訂も入っています。
[Ruby] Clogger
0.0.5 が公開されました(ruby-talk:345566)。
HTTP リクエストをロギングする Rack に対応したミドルウェア。ログのフォーマットをカスタマイズすることができる。
$request_method、$content_length、$content_type 変数が提供されるようになって書き替えることができるようになった(のかな)。
2009年9月 2日 (水)
[Ruby] Clogger
0.0.4 が公開されました(ruby-talk:345437)。
HTTP リクエストをロギングする Rack に対応したミドルウェア。 ログのフォーマットをカスタマイズすることができる。
行儀の悪いRackアプリケーションに対してチェックをしてログ(500 errors)を残すようになったようです。 あと、私は、nginx を全く知らないため、"escapes with uppercase A-F characters" の意味がよくわからなかったのですが、 nginx のログ形式に合う出力ができるように修正されたみたいです。
[Ruby] rvm その3
noplansさんからコメントをいただいたので 試すことにした。
ていうかいつの間に、0.0.28になったんだ?
$ sudo gem install rvm
$ rvm-install
$ rvm list
ruby:
jruby:
ree:
system:
- (ruby 1.9.1p281 (2009-08-09 revision 24476) [i686-linux])
おおっ。なんか動くっぽいですよ。
$ rvm info
ruby:
interpreter: "ruby"
version: "1.9.2dev"
date: "2009-08-22"
platform: "i686-linux"
patchlevel: "2009-08-22 trunk 24625"
full_version: "ruby 1.9.2dev (2009-08-22 trunk 24625) [i686-linux]"
homes:
gem: "not set"
ruby: "not set"
binaries:
ruby: "/usr/local/trunk/bin/ruby"
irb: "/usr/local/trunk/bin/irb"
gem: "/usr/local/trunk/bin/gem"
$ rvm -v
rvm 0.0.24 (2009.08.25) [http://rvm.beginrescueend.com/]
うん? 0.0.24なのか?
$ gem list
...
rvm (0.0.28, 0.0.24)
では試しに
$ rvm use ruby 1.8.7
おおっ。Ruby のソースをダウンロードして configure して、compile し始めました。
....
Switching to ruby 1.8.7 ...
$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-linux]
おおっ。すげえ。
$ rvm -v
rvm 0.0.28 (2009.09.01) [http://rvm.beginrescueend.com/]
あれっ? いつの間に? もしかしてバージョンアップの手順をなんか間違えたかな?
$ rvm system
$ ruby -v
ruby 1.9.1p281 (2009-08-09 revision 24476) [i686-linux]
うん? 1.9.2dev じゃない? ...そうか。一時的に
export PATH=/usr/local/trunk/bin:$PATH
しても、rvm system はデフォルトで PATH が通っているところの Ruby に切り替えるのね。
$ rvm reset
$ rvm use ruby trunk
Unrecognized command line argument(s): 'trunk ' ( see: rvm usage )
さすがに trunk なんて無理か...。
でも、複数のバージョンのRubyで動作確認したいときには、これは便利そう。
2009年9月 1日 (火)
[英語] リスニングに進歩がない
英語のリスニングがこのところ全く聴き取れないような感じである。 そこで、読んだことがある本の朗読を聴いてみることにした。 あらかじめ、ストーリーを知っている本の朗読なら、なんとかなるかも知れないと思ったのである。 選んだ題材は、読みたてホヤホヤの『Cold Moon』。 長いけど、Jeffery Deaver の英語は、比較的易し目の単語の割合が多いのでなんとかなるのではないかと考えた次第。
なんだけど、どうもうまく聴き取れてる気がしない。
自分の実力がダメダメなのは置いといて、 結局、通勤途中に聴こうとするから無理があるのかもと思うようになった。 通勤中だと、車とか周囲の音が大きいところだと音声そのものが聞こえない。 比較的周囲の音が少ないところを歩いているときには音声は聞こえるけど、途切れ途切れになってしまう。 これは、本を読むときに、2、3ページずつ飛ばしながら読んでいるようなもので、 さすがにそれじゃストーリーを知っていても厳しいかと考え込んでしまった。
かと言って、静かに家で聴くだけというのは時間が勿体ない気がする。 元々、自分は普段から、音楽を聴かないためか、 本を読むのは抵抗ない癖に、音声を聴くだけというのには馴染めない。
まだ『Cold Moon』を最後まで聴いてないので、とりあえず、一通り最後まで聴くつもりではいるんだけど、なんかよい方法はないもんかな。
[Ruby] mms2r
2.3.0が公開されました(ruby-talk:345338)。
MMS message をデコードするためのライブラリ。
smartphone のステータスやタイプの情報を jpeg や tiff の exif データから取得できるようになった(という解釈であってるのか?)
他4つの改訂と4つのバグフィックス。
最近のコメント