« 2007年11月 | トップページ | 2008年1月 »

2007年12月30日 (日)

[Ruby] Ruby 1.9.0 が Ruby 1.8.6 に比べて速くなったことを実感してみる


Ruby 1.9.0 は、1.8系に比べて速くなっていると言われている。
話には、聞いているのだけど、実感したことが無かったので、実際に試してみた。
今回、nonoを使って試してみた。
nonoにののぐらむを解かせてみて、Ruby 1.8 系と Ruby 1.9とではどのくらい差が出るのか試すことにした。
使ったバージョンは以下の通り。



nono 0.1.7
ruby 1.8.6 (2007-12-27 patchlevel 5000) [i686-linux]
ruby 1.9.0 (2007-12-30 revision 0) [i686-linux]


解かせるののぐらむは、
ののぐらむ解法教室
の実践編の上級者コースの問題にした。



それぞれ、nono.rb を使って3回ずつ解かせて平均を取ってみた。
Ruby 1.8.6 では、平均 183.9 秒、Ruby 1.9.0 では、平均 49.7 秒という結果で、Ruby 1.9.0の勝利となった。
微妙に速い結果しか出なかったらどうしようかと思っていたのだが、
これだけ差が出れば、はっきりと1.9の方が速いと断言できる。
ほっとした。



これで、「1.9.0って速くなってるの?」と他人から聞かれたときに、
「なんか速くなってるみたいだよ。」という適当な言葉でお茶を濁さず、
「自分が作ったプログラムで試したことがあるんだけど、Ruby 1.8.6 だと 180秒ぐらいかかった処理が、
1.9.0 だと 50秒ぐらいで終わったよ。それぐらい速くなってるよ。」
とそれなりに説得力のある返事をすることができるようになった。


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

[英語] 謎解きがちょっとイージーすぎるコージー・ミステリ

なんか推理もなくて唐突に犯人が現れて事件の真相を語り出す展開で、あまり面白いとは思わなかった。

ただいま 英語 2057427 語

年内に200万語を突破。次は、レベル8の本。

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

2007年12月29日 (土)

[Ruby] Ruby 1.9.0 と VisualuRuby

Ruby 1.9.0 で VisualuRuby が動作するか試してみた。

RSTRING(XXX)->len
RSTRING(XXX)->ptr

がことごとくエラーになったので、間違っているかも知れないけど、 適当にRSTRING_LEN と StringValuePtrで全部置き変えた。(12/30追記:StringValuePtrじゃなくて本来は、RSTRING_PTRを使うべきかも知れない。)

スクリプト側は、インストーラが動かない。

attr :XXX,1

の1がことごとくエラーになるからだが、どうすればいいのかソースを追いかけて考えるのが面倒だったので、

attr :XXX

にことごとく変えてみたが、やっぱり駄目だった。

ということで、Simple OLE BrowserのRuby 1.9.0対応版は、 しばらく、おあずけ。

あれ、ひょっとして

attr :XXX, 1

attr_accessor :XXX

にすればいいのか?

ちょっと時間が無いので、また今度。

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

2007年12月27日 (木)

[Soft] Vine Linux 4.2(その2)

バージョンアップは、正月休みの間にでもやるか。

と思ったのだけど、何となく勢いだけでアップグレードしてしまった。

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

[Soft] Vine Linux 4.2


Ruby 1.9.0 の怒濤のリリース直前の大騒ぎを気にしていたために、
Vine Linux 4.2がリリースされていることに今日まで気づかなかった。
バージョンアップは、正月休みの間にでもやるか。


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

2007年12月23日 (日)

[本] 主婦ならではの推理が楽しいコージー・ミステリ

3人の子供を育てている未亡人Janeが主人公のコージー・ミステリシリーズの第1段。

Janeの隣のShelleyの家で家政婦の死体が発見される。 犯人が捕まらないことには安心して生活していくこともできないと JaneはShelleyと共に犯人探しを始める...。

話の途中でJaneとShelleyの会話の中で展開される推理は、 主婦ならではの視点が入っていて面白い。 それは、犯人特定の推理にも活かされている。 ただ、残念なことに手がかりの方を一部読み飛ばしてしまっていたために、 犯人が誰なのかというところは、なるほどとは思えなかった。 (その部分の英語が難しかったのではなく、ちゃんと読んで考えるのが面倒だったから。 多分、日本語で読んでいても面倒くさくて、読み飛ばしていた可能性が高い。)

本格ミステリに分類される類の作品なので、推理の部分が楽しめるかどうか 若干、不安があったんだけど、それなりに楽しめて良かった。

英語は、主婦の日常に登場する単語とか心理描写に関係する単語とかに見慣れないものが多くて 妙に難しく感じてしまった。

翻訳もあり、邦題は『ゴミと罰』。 実は翻訳を読んだことがあるような気がしないでもないのだが、すっかりストーリーを忘れていたために 新鮮な気分で楽しめた。

ただいま 英語 1989227 語。

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

2007年12月22日 (土)

[本] Rubyist Magazine 出張版 第2段の本


以前、Rubyist Magazineの方で協力させていただいたということで、cuzicさんより献本していただきました。




ざっくりどんな内容なのかと眺めた印象としては、
Rubyist Magazineの記事が半分、残り半分は新規書き下ろしという感じ。



iPodは持っているけど、残念ながら、私はLinux環境で使っているからiTunesじゃなくてamaroKだしなあとか、
nono
ExerbじゃなくてRubyScript2Exeを使っちゃったんだよなあとか、
RubyCLRがうまいことやってCOMも利用できるようになれば、
Win32OLEは引退かなあとか、
WMIとWin32OLEの解説は貴重かも知れないなあとか思ってしまった。



Win32OLEに関して踏み込んで解説した本は、邪道編とこの本ぐらいだと思う。
Windows環境ならではのRubyの使い道について知りたい人は読んでみよう。


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

[Ruby] 失敗に終わったWin32OLEの値渡しに関するある試み


ふと、間違ってうまく動いちゃったりすることもあったりしちゃうんじゃないかと思って試してみた。



irb(main):001:0> RUBY_VERSION
=> "1.9.0"
irb(main):002:0> RUBY_RELEASE_DATE
=> "2007-12-21"
irb(main):003:0> require 'win32ole'
=> true
irb(main):004:0> def ByVal(x)
irb(main):005:1> WIN32OLE_VARIANT.new(x)
irb(main):006:1> end
=> nil
irb(main):007:0> p(ByVal 1)
#<WIN32OLE_VARIANT:0x7ff05e04>
=> #<WIN32OLE_VARIANT:0x7ff05e04>
irb(main):008:0> p(ByVal 1, ByVal 2)
SyntaxError: (irb):8: syntax error, unexpected tINTEGER, expecting keyword_do or '{' or '('
p(ByVal 1, ByVal 2)


うんうん。そりゃそうだよねえ。やっぱり、VBっぽい値渡しは無理だよねえ。うんうん。


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

[英語] ゆったりとした雰囲気のあるコージー・ハードボイルド

34歳の離婚歴のある女性が開設した、ボツアナで唯一の女性探偵事務所の事件簿。 探偵事務所に持ち込まれるいくつかの事件を解決していくモジュラー型小説の体裁を取っている。 事件はボツワナならではのものであり、殺伐とした事件が発生しない。 日常の謎に近い類いの事件もあったりする。 また Ramotswe の解決方法も機知があって楽しい。

人名など一部に馴染みのない単語があるものの、英語はわりと易しい。 また、一つ一つの事件が短い分、短かい小説を読んでいるような感じで読み進められることができる。

翻訳は『No.1レディーズ探偵社、本日開業

ただいま 英語 1929927 語。

レベル 6 はここまで。次はレベル 7 の本に挑戦。

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

[本] 動機の設定と犯人の隠し方が上手い謎解きミステリ

私が読んだのは、2作品が合本になった

ミステリではじめる英語100万語には密室謎解きミステリと紹介されているが、 密室だとは読み取れなかった。

むしろ、暗号解読ミステリといった感じ。 招待状を受け取ってやってきた5人の客。 招待主が用意していた謎解きゲーム。 嵐で外部との連絡を断たれた孤島。 まるで古き良き時代の本格ミステリを読んでいるかのようだった。

犯人特定の謎解きはちょっと物足りなかったのが残念。 犯人の隠し方は上手いし、終盤の動機に関する考察はよくできていた。 最後の最後の詰めが物足りなかったけど、そこまでは十分に楽しめた。

暗号に関する解読は、英語の基礎知識が不足しているためピンとこなかった。

ただいま、英語1867927語。

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

2007年12月 2日 (日)

[Program] ActionScript 3.0

ActionScript 3.0なんてどうでもいいと考えていた。 ところが、無償でコンパイラが提供されているとか Tamarinというプロジェクトがあるというのを WEB+DB PRESS Vol.41で知ったので、ちょっとだけ気が変わった。

久々にソフトウェア関係(技術情報関係)の雑誌を読んだのだが、 最近の動向を把握するためにも、定期的に講読した方がいいかなとちょっと反省。

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

[本] ちょっと変わったネットワークの解説書

ネットワークの知識不足を痛感させられる今日この頃、少しでも知識を補うべく読んだ本。

ユニークなのは、WebブラウザでURLを入力してからページがブラウザに表示されるまでの間の動きに沿って ネットワークに関して解説しているところ。 URLの解析に始まり、HTTP、DNS、ソケット(クライアント)、TCP/IP、リピータ・ハブ、スイッチング・ハブ、 ルーター、ADSL、光ファイバ、プロバイダ、ファイアウォール、Webサーバの負荷分散、 ソケット(サーバー)、Webサーバと解説は続いていく。

構成上仕方のないことだとは思うが、系統立った解説になっていないために、 なんか整理されていないような雑然とした印象があることも否定できない。 (「詳しいことは後の章で解説する」というような表現が目立つ。) 逆に、系統立った解説書でそれぞれ別々に解説されているであろう技術が どのように関連しているのか全体像を把握できるところにこの本の存在価値がある。

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

2007年12月 1日 (土)

[英語] 巧妙にミスリードしながら真相を隠し、こちらの予想の斜め上をいく真相を見せるサスペンス小説

実際に私が読んだのは上の本ではなくて、2作が合本になったTwo Mysteriesの方。

拳銃で撃たれて昏睡状態になった少女が4年後にようやく目覚めるところから話が始まる。 少女は犯人の顔だけがどうしても思い出せない...。

XXが実は○○でしかも△△というのは、ちょっと反則で唐突過ぎる気がする。 そこが気になるけど、真相を隠すミスリードのテクニックは見事。 また、4年振りに目覚めて、13歳からいきなり17歳になってしまった少女の戸惑いの描き方も上手い。

英語はわかりやすくて、本当にこれでレベル6なのかちょっと疑問に思うほど。

ただいま 英語 1823652語。

さて、合本の2作目は密室殺人を扱っているみたいなのだが、 しょぼい英語力でちゃんとトリックが理解できるのかどうかかなり不安。

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

[Ruby] ruby-trunk in Vine Linux


なんか久し振りにRuby1.9(ruby-trunk)をLinuxでコンパイルしたらエラーが出たので、ruby-devで質問したruby-dev:32419
なかださんからbisonをバージョンアップしろとの回答があった。
ということで、Vine Linuxのbisonは2.1なので仕方なくソースからbisonをコンパイルすることにした。
ついでに(何のついでだかわからないが)物は試しということで、GCCもバージョンアップしてみることにした。



最初に、binutils。



tar jxvf binutils-2.18.tar.bz2
cd binutils-2.18
CFLAGS=-Os ./configure
make
make install
cd ..


次にGCC。



tar jxvf gcc-core-4.2.2.tar.bz2
tar jxvf gcc-g++-4.2.2.tar.bz2
cd gcc-4.2.2
CFLAGS=-Os CXXFLAGS=-Os CC=/usr/bin/gcc ./configure --enable-languages=c++ \
--with-system-zlib --enable-sjlj-exceptions --enable-threads \
--disable-version-specific-runtime-libs --disable-nls
make CFLAGS=-Os LIBCFLAGS=-Os LIBCXXFLAGS=-Os \
STAGE1_CFLAGS=-Os BOOT_CFLAGS=-Os bootstrap
make install
cd ..


bisonをバージョンアップする前に何かの間違いで、ruby-trunkをGCC4.2.2でコンパイルできちゃうんじゃないかと
思ってやってみたけど、やっぱり駄目だったので、素直に、bisonをバージョンアップした。



tar jxvf bison-2.3.tar.bz2
cd bison-2.3
./configure --disable-nls
make
make install


ということで、再度、ruby-trunkをコンパイルしてみたら、今度はちゃんとできた。



ということで、本日の結論。
Ruby 1.8 は今のところ大丈夫だけど、Ruby 1.9をコンパイルするときには、bison 2.1では駄目。
bison 2.3にバージョンアップしよう。
念のために断わっておくと、GCCをバージョンアップしたのは私の単なる気紛れ。
GCCのバージョンアップは必要ないはず。


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

[英語] audible.com と Vine Linux


audible.comから、Vine Linuxでダウンロードする方法がよくわからない。
Wineを使うという情報もあったんだけど、何となくWineを使うのは気が進まなかったので、
結局、VMwareのWindows XPからダウンロードした。


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

[Soft] Adobe Reader 8.1.1


手元に、




のPDF版があることに気づいた。
このPDFをVine Linux のxpdfで開くと



Error: PDF version 1.6 -- xpdf supports version 1.5 (continuing anyway)


となってしまう。



そこで、Adobe Readerをインストールすることにした。
参考にしたのは、Linux/acroreadのページ。
ちょっと違うのは、/usr/bin/acroreadを編集するのが嫌だったので、
編集するのはやめて、



env LD_PRELOAD=/usr/lib/libstdc++.so.6 /usr/bin/acroread $*


と書いたスクリプトを別に用意して、それを使うことにした。



そして、今更、gpdfならエラーが出ないことに気づくのであった。


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

« 2007年11月 | トップページ | 2008年1月 »