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

2008年10月25日 (土)

[本] ノンシリーズの本格ミステリ短編集

どの作品も一定の水準を保っていて、安心して読める短編集。

表題作が都築道夫の『やぶにらみの時計』を連想させるように、 いくつかの作品が都築道夫の作品を意識している。 「トゥ・オブ・アス」は、法月親子のシリーズファン必読の作品。

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

2008年10月18日 (土)

[本] 複雑な人間関係と錯綜するプロットに酔わされる日常的な非日常ミステリ風小説

ひょんなことから、デパートの福袋を手に入れるために大晦日から行列に並ぶことになった定年間近の 宝福喜朗の周囲で巻き起こる大小様々な事件の顛末が語られるミステリ風小説。 (ミステリ風小説であってミステリ小説と言い切る自信がない。)

複雑な人間関係、錯綜するプロットが特徴のロス・トーマスの小説を 日常小説寄りにしてトボけたユーモアを眩してハードな部分をソフトにしたような小説。

「僕たちには分からない必然性があったと思うけどな。」

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

2008年10月14日 (火)

[Ruby] EUC-JP と Windows のコードページの対応づけ

Ruby に Encoding#names というのが導入されたらしいというのでちょっと下調べ。

$ ruby -EWindows-31J -e 'p Encoding.default_external.names'
["Windows-31J", "CP932", "csWindows31J"]
$ ruby -EEUC-JP -e 'p Encoding.default_external.names'
["EUC-JP", "eucJP"]
$ ruby -EEUCJP-ms -e 'p Encoding.default_external.names'
["eucJP-ms", "euc-jp-ms"]
$ ruby -ECP51932 -e 'p Encoding.default_external.names'
["CP51932"]

うーむ。 ソースを見たら、CP51932 って EUC-JP の replica になっていた。 そうか。eucJP-msとも違うのか。

Win32OLE内では、EUC-JP や、eucJP-ms は CP51932として扱うことにする??? でも IMultiLanguage2(IMultiLanguage)を使えないと CP51932は扱えないからなあ。 本当はおかしいけど、CP20932のままにする?

Windowsのコードページの対応づけは、 IMultiLanguage2(IMultiLanguage)が使えるのなら、 IMultiLanguage2(IMultiLanguage)::GetCodePageInfo() を利用するという手もありそうな気がする。

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

2008年10月13日 (月)

[英語] わからなくても聴いているだけで雰囲気が楽しいネズミの編集長の冒険物語

宝探しの旅に出ることになったり、お化け騒動に巻き込まれたり、大忙しな ネズミの編集長のGeronimo Stiltonの冒険物語。

BGMが軽快でナレーションも役になりきっているので、聴いているだけで楽しい。

このシリーズが気に入ったので、続けて他のも聴くつもり。

ただいま英語多聴 72時間 22分。

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

2008年10月12日 (日)

[Ruby] Win32OLEとCP51932

ちょっと行き詰まったので、IMultiLanguage2 インターフェースを利用して51932を扱ってみようと思い試してみた。

IMultiLanguage2 *pIMultiLanguage = NULL;
HRESULT hr = CoCreateInstance(&CLSID_CMultiLanguage,
                              NULL,
                              CLSCTX_INPROC_SERVER,
                              &IID_IMultiLanguage2,
                              (void**)&pIMultiLanguage);

テストで書いたCのプログラムでVC2005だとうまいこと変換できているっぽい。 それではと、Cygwinで試すと

undefined reference to `_IID_IMultiLanguage2'                

リンクエラーである。 IID_IMultiLanguage2ってあるのかと思って、nmで調べてみると

# nm /usr/lib/w32api/lib*.a | grep IID_IMulti
00001300 R _IID_IMultiMediaStream   

えー。ないのかあ。 mlang.hには

EXTERN_C const IID IID_IMultiLanguage2;   

とあるのに。さて、どうしたもんか。

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

[日記] クイニーアマン

なんとなく「クイニー」という言葉の響きから中国の菓子だと思い込んでいた。

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

2008年10月11日 (土)

[本] ちょっと看板に偽りありなんじゃないかと思ってしまった本

Visual Studio 2005 と .Net Frameworkを使って業務アプリケーションを開発するときの 一種のフレームワークとして使うためのサンプルアプリケーションの実装手順を解説した本。

副題に「Visual Studio と ASP.NETによる業務システム開発方法」と書いてあるのだが 「ASP.NETによる」というわりには、ASP.NETに関する解説は20ページほどしかなくて ちょっとがっかりした。 「ASP.NET」とあった方が多分売れるからなんだろうけど。

型付DataSetを使っているのだが、ADO.NETというか型付きDataSetそのものを 深く理解していない私には、あまりピンとこなかった。 ただ、もっと型付きDataSet(ADO.NET)を深く理解すれば、実は、使い手のある道具なのかも 知れないと思った。

私は、更新系の処理でメモリリソースの消費を押さえつつも型付DataSetをうまいこと 使ってコーディングレスで実現できないものかと日頃考えていた。

だから、型付DataSetをASP.NETの更新系の処理でどう使うのか期待して読み進んだのだけれども

ASP.NETのデータ バインディングは出力専用だと割りきってしまうのが現実的

とか

更新の場合は、楽観的同時実行制御のために検索時の型付DataSetを保持する
ことになって、結局はメモリリソースを倍消費することになる

とか書かれていて、残念だった。

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

[Ruby] Win32OLEとCP51932

CP51932に対応しようと思って、ConvertINetMultiByteToUnicode と ConvertINetUnicodeToMultiByte と格闘しているのだが、異常終了してしまってちゃんと動いてくれない。

Win32OLEとも、Rubyとも一切関係ない簡単なプログラムを 書いて試してみたら、やっぱり異常終了した。

解決には至っていないけど、異常終了してくれてほっとした。 Win32OLEともRubyとも関係無く、私のConvertINetMultiByteToUnicode と ConvertINetUnicodeToMultiByte の使い方の問題であるということが判明したから。

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

2008年10月 8日 (水)

[Ruby] Win32OLEとEUCと51932と20932

Win32OLEでEUCをサポートするにはどうすればいいのだろう? Encoding.default_internal が EUCのとき WIN32OLE.codepage は 20932を設定しているのだけど、本当は51932にすべきなのか?

でもって、51932のときは、Codepageの正当性をチェックしないで、 ConvertINetMultiByteToUnicode と ConvertINetUnicodeToMultiByte を使って変換すべき?

あと、Rubyの Encoding#name から Windows の Codepage への変換するときに使えそうなWindows の APIってあるんだろうか? つまり、"Windows-31J" という文字列が与えられたときに "932" を取得できるような API。

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

[Ruby] Win32OLEとEncoding.default_internal

Encoding.default_internalが trunkにコミットされた。

Win32OLE側も追随。

スクリプトの途中でEncoding.default_internalがころころ変更されることはないので、 とりあえず、WIN32OLE.codepageの初期設定値を決めるときにだけ、Encoding.default_internal を参照することにした。

W: ~>cat enct.rb
require 'win32ole'
utf8_A = [0x3042].pack("U*").force_encoding("UTF-8")
sjis_A = utf8_A.encode('Windows-31J')
dict = WIN32OLE.new('Scripting.Dictionary')
dict.add('A', utf8_A)
p WIN32OLE.codepage
p Encoding.default_internal
p Encoding.default_external
p dict['A']
p dict['A'].encoding
p dict['A'] == utf8_A
p dict['A'] == sjis_A
W: ~>/usr/local/ruby-trunk/bin/ruby -v -E :utf-8 enct.rb
ruby 1.9.0 (2008-10-08 revision 19619) [i386-cygwin]
65001
#<Encoding:UTF-8>
#<Encoding:US-ASCII>  
"あ"
#<Encoding:UTF-8>
true
false
W: ~>/usr/local/ruby-trunk/bin/ruby -v -E :windows-31J enct.rb
ruby 1.9.0 (2008-10-08 revision 19619) [i386-cygwin]
932
#<Encoding:Windows-31J>
#<Encoding:US-ASCII>
"あ"
#<Encoding:Windows-31J>
false
true
W: ~>/usr/local/ruby-trunk/bin/ruby -v -E utf-8:windows-31J enct.rb
ruby 1.9.0 (2008-10-08 revision 19619) [i386-cygwin]
932
#<Encoding:Windows-31J>
#<Encoding:UTF-8>
"あ"
#<Encoding:Windows-31J>
false
true
W: ~>/usr/local/ruby-trunk/bin/ruby -v -E windows-31J:utf-8 enct.rb
ruby 1.9.0 (2008-10-08 revision 19619) [i386-cygwin]
65001
#<Encoding:UTF-8>
#<Encoding:Windows-31J>
"あ"
#<Encoding:UTF-8>
true
false
W: ~>

それっぽく動いているみたい。

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

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