Just another Ruby porter,

〜2003年2月下旬〜


<Prev(,) | Next(.)> | Recent(/)>> | RDF

2003-02-21 (Fri)

[Linux] diet libc 0.22

更新。

[Ruby] require "socket.so" with static linked socket extention (PR#398)

というわけでdjgppのバイナリはここ1ヶ月ほど実行できないものになってた。 が、誰も文句を言う人がいないというのもなんだな。


2003-02-22 (Sat)

[Ruby] xml-configfile 0.8.0

更新。

[Ruby] PragProgRuby用の拡張ライブラリをMinGWで作る

1.6は簡単だった。1.8で試そうとしたらPragProgRubyはまだ1.7.3だった。 で、同じようにrbconfig.rbをでっちあげて、win32oleで試してみるとリンクでこける。

Cannot export .idata$4: symbol not found
Cannot export .idata$5: symbol not found
Cannot export .idata$6: symbol not found
Cannot export .text: symbol not found
Cannot export msvcrt-ruby17_NULL_THUNK_DATA: symbol not found

どうもmsvcrt-ruby17.libをリンクするとこうなるようだ。 1.6だと大丈夫なのはdllwrapだからか。くー。 msvcrt-ruby17.libからlibmsvcrt-ruby17.dll.aを作るのは簡単だから、 別に用意するかな。

% printf 'NAME msvcrt-ruby17.dll\nEXPORTS\n' >x.def
% nm -g --defined msvcrt-ruby17.lib |\
  sed -n '/00000000 I __imp__/s///p' >>x.def
% dlltool --def=x.def --output-lib=libmsvcrt-ruby17.dll.a

てな感じで。これを$(libdir)へコピーすればokだ。 あとはインストーラ作って1.8で試してみよう。


2003-02-23 (Sun)

[Ruby][LD] --export-all-symbols

メッセージをよく見るべきだった。

Cannot export .idata$4: symbol not found

なんだからexportが関連してる。つまり--export-all-symbolsがいけないわけだ。 これを外せばちゃんとDLLを作ることができた。 というわけで、CONFIG["LDSHARED"]から削除。 問題はerubyがdefファイルを作らないからエラーになることぐらいかな。

--exclude-sym='.idata$4,.idata$5,.idata$6,.text,^?msvcrt-ruby17_NULL_THUNK_DATA'

をldへ渡せれば--export-all-symbolsのままでもいいが、 ^?は実はDELコードなのと、gccから,を含んだ引数をldへどうやって渡せばいいかわからん。 さすがにこんなところまでquoteできるようにはなってない。 あ、何がまずいかというと、たとえば

-Wl,--exclude-sym='.idata$4,.idata$5'

とgccの引数で指定するとldには

--exclude-sym=.idata$4 .idata$5

が渡ってしまう。やっぱ個々にばらすしかないか。

-Wl,--exclude-sym='.idata$4',--exclude-sym='.idata$5'

ならokだった。くー。美しくないがこれでいこう。

と思ったら$はmakeに食われてしまう。2個必要だ。 msvcrt-ruby17_NULL_THUNK_DATAもversionに合わせて変更しなきゃいけないな。

そうそう。msvcrt-ruby17.dllを直接リンクすると問題ないんだよね。 ってことは-L$(bindir)が最初に来るようにすればいいだけの話か? DLDFLAGSに追加しよう。なんだいけたじゃん。

1.6で試すとbindirがMakefileで定義されてない。 しょうがないから$(prefix)/binで代用。なかなかうまくいかないもんだな。 いやいや、1.6はdllwrapだから追加しなくてもいい。

[Music] 椎名林檎

NACK5を聞いていると椎名林檎の例のアルバムが今日発売らしい。 「茎」を中心にシンメトリになっているということなので、 曲目を調べてみる。

 1.宗教
 2.ドッペルゲンガー
 3.迷彩
 4.おだいじに
 5.やっつけ仕事
 6.茎
 7.とりこし苦労
 8.おこのみで
 9.意識
10.ポルターガイスト
11.葬列

なるほど。

漢字
カタカナ
漢字
ひらがな
ひらがな+漢字
漢字
ひらがな+漢字
ひらがな
漢字
カタカナ
漢字

でしかもちゃんと対応する文字数も同じだ。 CCCDだから買うことはないが。

気になって他のアルバムも調べたら「勝訴ストリップ」もシンメトリだ。 文字数を見てみると一部例外がある。ということは今回はそこも徹底したわけだ。

[Linux] SHFS 0.29-2

これは面白い。

SHFS is a simple and easy to use Linux kernel (2.4) module which
allows you to mount remote filesystems using plain shell (ssh/rsh)
connection. It supports some nice features like number of different
caches for access speedup, target system optimisations, etc.

インストールすれば

% mkdir ~/helium
% sudo shfsmount -u watanabe helium/home/eban ~/helium

でアクセスできるようになる。-oでuidとgidを指定すればファイルのownerも問題なし。 でも頻繁に

% ls             
ls: .: Stale NFS file handle

となってしまうなあ。

[Linux] LUFS Userland Filesystem

そういえばLUFSというのも freshmeatでよく見かける。READMEには

sshfs, ftpfs, localfs, locasefs, gnutellafs, gvfs, cardfs, cefs

とある。sshfsを試したがSEGVになってしまった。うーむ。

[Mail] 419事件

特命リサーチ200X-2を見てたらナイジェリアからのspamで騙される日本人が増えてるらしい。 というわけで今月のspamを調べてみた。

CMAIL_DELIMITER = "\C-_\C-L\n"

ARGV.each do |file|
  print File.basename(file), ':'
  total = 0
  nigeria = 0
  open(file) do |fh|
    while message = fh.gets(CMAIL_DELIMITER)
      total += 1
      nigeria += 1 if message =~ /nigeria/i
    end
  end
  print nigeria, '/', total, "\n"
end

を実行してみると

spam:40/368

と出た。1割強もあるのか。今月も相変わらずのペースで来てるねえ。

ruby-bugのSpamAssassinの結果をよく見ると

BODY: Nigerian scam key phrase

とあった。 SpamAssassinがspamかもしれないと判断したものは今のところ100%spamだ。 そろそろruby-bugsへ流さなくてもいいんじゃないかなあ。


2003-02-24 (Mon)

[w3m] ruby-ml.cgi

urimethodmapを使って w3m ruby-list:10000 と実行すると

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/10000

へ飛ぶlocal cgiを書いてみようと思い立つ。が、実質1行だった。

% cat ~/.w3m/cgi-bin/ruby-ml.cgi
#! /bin/sh

blade='http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby'
echo w3m-control: GOTO $blade/${QUERY_STRING/://}

$QUERY_STRINGには ruby-list:10000 が入っているので:を/に変換している。sedを使う必要もなし。 あとは~/.w3m/urimethodmapに

ruby-list: file:///cgi-bin/ruby-ml.cgi?%s
ruby-dev: file:///cgi-bin/ruby-ml.cgi?%s
ruby-ext: file:///cgi-bin/ruby-ml.cgi?%s
ruby-math: file:///cgi-bin/ruby-ml.cgi?%s
ruby-talk: file:///cgi-bin/ruby-ml.cgi?%s
ruby-core: file:///cgi-bin/ruby-ml.cgi?%s

を追加すればokだ。 ruby-ml.cgiは~/.w3m/configのcgi_binで指定したディレクトリに置く。

[w3m] raa.cgi

raaも同じように作れる。

#! /bin/sh

url='http://raa.ruby-lang.org'
name=${QUERY_STRING##*:}
echo w3m-control: GOTO $url/${name:+list.rhtml?name=$name}

これでw3m raa: なら http://raa.ruby-lang.org/ へ、w3m raa:fooなら http://raa.ruby-lang.org/list.rhtml?foo へ飛ぶようになる。

[Ruby] nkf192-ruby 0.1.0

更新。

[Ruby] REXML 2.4.7

更新。

[w3m] ruby-ml.cgi (2)

やっぱこっちも % w3m ruby-list: でアクセスしたくなった。

#! /bin/sh

blade='http://blade.nagaokaut.ac.jp'

ml=${QUERY_STRING/://}
case "$ml" in
  */) echo w3m-control: GOTO $blade/ruby/${ml}index.shtml;;
  *) echo w3m-control: GOTO $blade/cgi-bin/scat.rb/ruby/$ml;;
esac

ってなぜRubyで書かない?

[Linux] LUFS Userland Filesystem

カーネルをmakeしたときとは違うversionのGCC 3.2.2でmakeしたのがまずかった気がする。 GCC 2.95.3でmakeしなおそう。

/usr/lib/liblufs-sshfs.so: undefined symbol: cerr

なかなか上手くいかない。


2003-02-25 (Tue)

[Ruby] druby 2.0.1

更新。

[Ruby] 採用の基準

自分で使うもの。リクエストされたもの。RAAでよく見かけるもの。ぐらいかな。 他にライブラリが必要だと優先順位は下がります。あとサイズが大きいのも。 ADSLになったからサイズはもうどうでもいいけど。

Ruby/JSは明日にでも。

[Ruby] Ruby 1.8.0 preview2

来週の月曜日だから今週末にはprefix対応を入れないと。


2003-02-26 (Wed)

[Ruby] Ruby/JS 0.0.2

更新。

[Mail] Bayesian Filtering

今月も終わりに近づいてかなりspamもたまったので bsprocを使ってBayesian Filteringしてみよう。 とりあえず日本語とか考えずに今月手で整理したspamとruby-talkでindexを作る。

% bsproc -i -t ~/cmail/spam -c ~/cmail/ruby/ruby-talk.*

現在~/cmail/spamは417通。え?もう400越えてるの?それはそれとして、 このindexを使って~/cmail/spamをばらばらにして試すと365通がspamと認識された。 spamじゃないと認識されたのは、日本語、ドイツ語、何語だかわからないのと、 非常に短かいもの。なかなか大したもんだ。 不思議なことに韓国語とか中国語のspamは全部spamと認識されてる。


2003-02-27 (Thu)

[Mail][Ruby] bsproc

indexを作るときにやけに速かったなと感じたので、 コマンドラインを確認してみた。

% bsproc -i -t ~/cmail/spam -c ~/cmail/ruby/ruby-talk.*

うーむ。-cはこれだと最初にマッチしたものだけが有効になってしまう。 結局spam(417通)とruby-talk.0007(221通)だけを処理してたのか。 面倒なのでzshの機能を使い

% bsproc -i -t ~/cmail/spam -c =(cat ~/cmail/ruby/ruby-talk.*)

としてみたら、Out of Memoryになってしまった。 とりあえずここ半年ぐらいで手を打つことにしよう。

% bsproc -i -t ~/cmail/spam -c =(cat ~/cmail/ruby/ruby-talk.{021*,03*})

で作ったindexでspamの検査すると416/420になった。おぉ。 検出できなかったのは、 何語かわからないもの、生のSJIS、普通の日本語のspamが2通だった。

今月のruby-listで試すと7通がspamと認識された。 見た感じではjavascriptとかhtmlを含んだメールは高くなってるようだ。 verboseモードで確認してみると

List-Owner 0.05215419501133787
$$$ 0.99
List-Unsubscribe 0.07522123893805309
List-Id 0.05215419501133787
List-Software 0.05215419501133787
Posted 0.05215419501133787
$B$ 0.99
ISO-2022-JP 0.9114456709487061
iso-2022-jp 0.9475206289558674
$7$ 0.99
List-Post 0.06487695749440717
yahoo.co.jp 0.9703483010569625
unsubscribe 0.07522123893805309
List-Help 0.06487695749440717
$5$$ 0.99

と、日本語を構成してる要素がことごとく高くなってしまっている。 やはりなにも考えないのは無理がある。 当然といえば当然の結果ではあるが、 yahoo.co.jpが高くなっているのには笑った。

[Ruby] Ruby/JS 0.0.3

更新。


2003-02-28 (Fri)

[Ruby] Ruby/JS

rubyのprefixも/tmp/$USERということなら

% /tmp/$USER/bin/ruby extconf.rb --with-js-dir=/tmp/$USER

で、いけそうな気がします。


<Prev(,) | Next(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!