2005年10月の雑感

更新日:2005-10-15
[トップページへ] [9月] [11月] [過去の雑感へ]

10月15日()

 WebDAV

何も知らないので、ちょっとお勉強。 『WebDAVシステム構築ガイド』(宮本久仁男/山田泰資/渡邊剛)を斜め読み。 あくまでも「システム構築ガイド」なので、 WebDAVクライアントプログラミングについて知りたいという私のニーズとは若干ずれてます。 しかし、最初の一歩として参考になりました。

Windows だと、Microsoft.XMLHTTP というWebDAVクライアント用コンポーネントがあって、それを使えばいいらしい。


10月14日(金)

 『犬はどこだ』 (米澤穂信)

ずーっと高校生を主人公にしていた著者が、初めて20代を主人公に据えた私立探偵小説。

東京の会社を辞め、田舎に戻ってきた主人公、紺屋が始めた仕事は、犬捜し専門の調査事務所。 ところが、依頼された仕事は、失踪人捜しに、古文書の解読。(だから『犬はどこだ』なのです。)

前半、ペースはゆったりとした感じですが、失踪の理由が明らかになってくる5章あたりから、俄然ペースが上がってきます。 一見、何の関係も無い失踪人捜しと古文書の解読が絡んでくるあたりとか構成がうまい。 最後の一捻りで見せる反転は伏線もちゃんとあって上手いのですが、後味は、あまり良くないです。 ほのぼのとしたものやハッピーエンドを期待する人にはオススメできません。

犬捜しの探偵と言えば、稲見一良の『猟犬探偵』ですが、 あちらほどハードボイルドっぽくありません。 マイクル・Z・リューインのアルバート・サムスンのようなソフトボイルドな感じです。

紺屋をはじめ、ハンペーや紺屋の妹など魅力的なキャラクターが揃っているので、シリーズ化してもらいたいところ。 調査事務所という設定なので、主人公を事件に関わらせるのには苦労しないはず。

デビュー作を読んだときには、さほど、期待してなかったんだけど、今や、要チェックの作家になってしまいました。

(2005-10-15追記) 改めて表紙を見たら、

THE CASE-BOOK OF "KOYA SEARCH & RESCUE"

とあって、その下に「1」とあるので、今後「2」「3」とシリーズ化されるものと思われます。


10月11日(火)

 [Ruby] るびま 0010号

うーむ。やっぱり月刊ペースなのか。 一番最初にチェックしたこと。それは、ebanさんの写真があるかないか。 いつもどおり、次号が出るまでの間に、ちびちびとゆっくり読むことにします。


10月9日()

 [Ruby][Ruby-GNOME2] 文字のフォントを変更する

Labelを使わずに、直接書いた文字のフォントを変更するには、 Pango::Layout#font_description= メソッドを使います。 引数には、Pango::FontDescription オブジェクトを指定します。 下のサンプルのfont_clicked メソッドの

fd = Pango::FontDescription.new(font_name)
$l.font_description = fd

がそれです。

また、フォント選択ダイアログを表示するときに、選択状態にしたいフォントを指定するには、 Gtk::FontSelectionDialog.font_name= メソッドを使います。 引き数は、フォントを指定する文字列です。 下のサンプルのfont_clickedメソッドの

fontdlg.font_name = $font_name if $font_name

がそれです。

実は、もう1つポイントがあります。 フォントを設定しただけでは、画面の文字は変わりません。 画面を再描画する必要があります。 そこで、一旦画面の内容をクリアして、再描画させます。 再描画には、Gdk::Window::clear_area メソッドを使います。 引数は、再描画の範囲を示す四角形の領域の座標と、expose_eventを発生させるか否かです。 ここでは、強制的に描画させたいので、trueを指定します。 そうしておけば、expose_eventが発生し、文字が書き直されます。 下のサンプルの font_clicked メソッドの

win.window.clear_area(0, 0, 200, 150, true)

がそれです。

さらに、ここでは、文字の左に縦の線を描いて、 文字の大きさが変わるのと同時に、縦の線の長さも変えるようにしてみました。 expose_eventを処理しているところの

draw.draw_line(gc, 8, 50, 8, 50 + $l.pixel_size[1])

がそれです。 設定された文字のフォントからピクセルサイズを求めるには、 Pango::Layout#pixel_size メソッドを使います。 配列の1番目が、横方向のサイズ、2番目が縦方向のサイズになります。

require 'gtk2'

def font_clicked(win)
  fontdlg = Gtk::FontSelectionDialog.new
  fontdlg.font_name = $font_name if $font_name
  ret = fontdlg.run
  if ret == Gtk::Dialog::RESPONSE_OK
    font_name = fontdlg.font_name
    if font_name
      $font_name = font_name
      fd = Pango::FontDescription.new(font_name)
      $l.font_description = fd
      win.window.clear_area(0, 0, 200, 150, true)
    end
  end
  fontdlg.destroy
end

Gtk.init
win = Gtk::Window.new

menubar = Gtk::MenuBar.new
menuitem = Gtk::MenuItem.new("File")
menu = Gtk::Menu.new
mitem = Gtk::MenuItem.new("font...")
mitem.signal_connect("activate") do |w, evt|
  font_clicked(win)
end                             
menu.append mitem
menuitem.set_submenu menu
menubar.append menuitem   

box = Gtk::VBox.new(false, 0)
win.add(box)        
box.pack_start(menubar, false, true, 0)

win.set_app_paintable(true)
win.realize
draw = win.window
gc = Gdk::GC.new(draw)

$l = win.create_pango_layout
$l.set_text("18")

win.signal_connect("expose_event") do |win, evt|
  draw.draw_layout(gc, 10, 50, $l)
  draw.draw_line(gc, 8, 50, 8, 50 + $l.pixel_size[1])
end

win.signal_connect("destroy") do 
  Gtk.main_quit
end

win.set_default_size(200, 150)
win.show_all
Gtk.main

 [Ruby] これで準備は整った

多分。

 [Ruby][Win32OLE] テストの追加

Accessを使わずにテストできることがわかったので、1つテストスクリプトを追加した。 [ruby-talk:137054]に対応していることを確認するためのテスト。 Accessは不要だけど、ADOが必要。 MDACをインストールすれば、テストできるはず。

 [Ruby][Win32OLE] Excelからの脱却

Win32OLEのユニットテストのスクリプトは、Excelに依存している。 Excelのない環境ではテストできない。 Excelは無料じゃないので、お金がかかる。 これをどうにかした方がいいと前々から漠然と考えていた。

ユニットテストのスクリプトは、

にだけ依存するようにしたい。 そこで、使えそうなものを調べてみた。

このぐらいあれば、用が足りるだろうか。 必要とするものは、1つか2つに絞ってしまいたいが、 [ruby-talk:137054]や[ruby-list:40890]みたいな特殊なものがあるので、 そこのところを考える必要がある。


10月8日()

 % を検索

Google で % を検索したら、意外な結果になって戸惑った。

 [Ruby] Rails アプリケーションをexeにする

Distributing Rails Applications - A Tutorial from [ruby-talk:159331]


10月7日(金)

 [Linux] Vine Linux 3.2

遅まきながらアップグレードしました。

/etc/apt/sources.list の 3.1 を 3.2 に変更

# apt-get update
# apt-get dist-upgrade
# apt-get update
# apt-get dist-upgrade

/etc/lilo.confの編集
image=/boot/vmlinuz
    label=linux
image=/boot/vmlinuz.old
    label=linux-old

# /sbin/lilo
# shutdown -r now

例によって、カーネルをアップグレードしたため、vmwareがこけます。

# /usr/local/bin/vmware-config.pl

を実行して、vmware も使えるようになりました。


10月5日(水)

 『最後の願い』 (光原百合)

役者が一人一人仲間を集めて舞台の幕が上がるまでを描く連作ミステリ。 提示される謎は、どちらかというと日常の謎に分類される。

役者ならではの推理でネガとポジをひっくり返してみせる「花をちぎれないほど・・・」が好み。 「写真に写ったものは・・・」などは、もっと後味の悪い(ありがちな)悪人の登場する結末を想像したのだけど、そうはならなかった。 悪い人は登場しないのが、この作者のミステリなのかも知れない。 「・・・そして開幕」は、語り手の視点が落ちつかない感じがしたが、趣向は面白かった。

 年賀状

コンビニに行ったら年賀状印刷の貼り紙が。 もうそんな季節ですか。はやっ。

 [Ruby][Ruby-GNOME2] Label のフォントを変更する

Gtk::Labelの文字のフォントを変更するには、 Gtk::Label#modify_font を使います。 引数で指定するのは、Pango::FontDescriptionオブジェクトです。 次のスクリプトは、Gtk::Labelの文字列をフォント選択ダイアログで選択したフォントに変更します。

ポイントは、font_clocked メソッドの

fd = Pango::FontDescription.new(font_name)
$msgarea.modify_font(fd)

の部分。

require 'gtk2'

def font_clicked
  win = Gtk::FontSelectionDialog.new
  ret = win.run
  if ret == Gtk::Dialog::RESPONSE_OK
    font_name = win.font_name
    if font_name
      fd = Pango::FontDescription.new(font_name)
      $msgarea.modify_font(fd)
    end
  end
  win.destroy
end

Gtk.init
win = Gtk::Window.new

menubar = Gtk::MenuBar.new
menuitem = Gtk::MenuItem.new("File")
menu = Gtk::Menu.new
mitem = Gtk::MenuItem.new("font...")
mitem.signal_connect("activate") do |win, evt|
  font_clicked
end                             
menu.append mitem
menuitem.set_submenu menu
menubar.append menuitem   

box = Gtk::VBox.new(false, 0)
win.add(box)        
box.pack_start(menubar, false, true, 0)
$msgarea = Gtk::Label.new
box.pack_start($msgarea, false, true, 0)
$msgarea.text="message"

win.set_app_paintable(true)
win.realize

win.signal_connect("destroy") do 
  Gtk.main_quit
end

win.set_default_size(200, 150)

win.show_all

Gtk.main

 [Ruby] 1.8.3 と One Click Installer

1.8.3用 One Click Installerは見送って 1.8.4まで待つということらしい([ruby-talk:158922])。 個人的にはFXRubyのバージョンがどうなるか気になってたんですけどね。 といいつつも、クリスマスなんて、すぐに来ちゃうか。

 [Ruby] Ruby for Rose RealTime v0.2.0

Windowsでしか動かなくて、OLEとくれば、多分 Win32OLEが使われていると思われます。 自分じゃ試せないんですけどね([ruby-talk:159009])。

 [Ruby] 『Rubyで学ぶプログラミング』 (あるいは、『Rubyで始めるプログラミング』)

プログラミング経験のないレビューアを探してるらしい([ruby-talk:159011])。 応募はしないけど、内容がどんなのか気になる。

 [Ruby] メモリチェックツール

まだベータ版だし、Windows限定だけど(Windowsだからこそ)、気になる([ruby-talk:159114])。

 [Ruby] official GUI

nonoは、GUIをどれか一つに限定せずに、それなりに使われてそうなものという視点で、 Ruby-GNOME2(Gtk)、VisualuRuby、Tk、FXRubyに手をつけてきている訳です。 それにしても、Tkはそんなに嫌なのか([ruby-talk:158967])。 他のGUIとは、ちょっと違いがあるように感じるのは確かですが。 ちなみに、Qtに手を出してないのは、Windowsのサポートが怪しいというのをどっかで読んだような気がしたから。


10月1日()

 FOX in Windows

Fox 1.2 系の最新版 Fox 1.2.18 をWindows環境にインストール。 Msys環境を用意していないので、Mingw用のバイナリをCygwin環境で作ってみます。 D:ドライブの usr/local 配下にインストールします。

unzip fox-1.2.18.zip -d .
cd fox-1.2.18
./configure --host=i386-mingw32 --target=i386-mingw32 --disable-shared CC='gcc -mno-cygwin' CXX='g++ -mno-cygwin'
make 
make DESTDIR=d: install

Fox 1.4系の最新版 Fox 1.4.18 も同じようにインストール。

unzip fox-1.4.18.zip -d .
cd fox-1.4.18
./configure --host=i386-mingw32 --target=i386-mingw32 --disable-shared CC='gcc -mno-cygwin' CXX='g++ -mno-cygwin'
make 
make DESTDIR=d: install

 FXRuby in Windows

mingw 版 Ruby 用の FXRuby をインストール。

FOX 1.2系に対応した FXRuby 1.2.6 をインストール。

tar zxvf FXRuby-1.2.6.tar.gz
cd FXRuby-1.2.6
ruby install.rb config

ちょっと格好悪いですが、ext/fox12/Makefileを修正します。

CXX = g++ -mno-cygwin

を追加。

CPPFLAGSを

CPPFLAGS = -I. -I$(topdir) -I$(hdrdir) -I$(srcdir) -DHAVE_SYS_TIME_H -DHAVE_SIGNAL_H \
-I/usr/local/include/fxscintilla -Id:/usr/local/include/fox-1.2 

に変更。

あとは

ruby install.rb setup
ruby install.rb install

同じように、FOX 1.4系に対応した FXRuby 1.4.2 をインストール。

tar zxvf FXRuby-1.4.2.tar.gz
cd FXRuby-1.4.2
ruby install.rb config

同じように ext/fox14/Makefile を修正。

CXX = g++ -mno-cygwin

を追加。

CPPFLAGSを

CPPFLAGS = -I. -I$(topdir) -I$(hdrdir) -I$(srcdir) -DHAVE_SYS_TIME_H -DHAVE_SIGNAL_H \
-I/usr/local/include/fxscintilla -Id:/usr/local/include/fox-1.4

に変更。 このまま

ruby install.rb setup

するとlink時に何故かエラーになるので、適当にext/fox14/icons_wrap.cppを修正して逃げます(パッチ)。 多分、Mingw用のlibtiffとlibpngとlibjpegを用意して、FOXからインストールし直せば、このような小細工は不要だと思われます。

あとは

ruby install.rb setup
ruby install.rb install

すれば、機能に制限はつきますが、FXRubyが使えるようになります。

 fnono と FXRubyのバージョン

fnono 程度のスクリプトであれば、FXRuby 1.2.X でも、FXRuby 1.4.Xでも、そのまま動くみたいです。


[トップページへ] [9月] [11月] [過去の雑感へ]