Just another Ruby porter,

〜2002年3月下旬〜


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

2002-03-21 (Thu)

erb 1.4.1

更新。

XMLParser 0.6.1

御要望にお応えして、

--with-perl-enc-map=/usr/local/doc/ruby/xmlparser-0.6.1-1/Encodings

をつけて作り直し。それだけじゃなんなのでexpatも1.95.2に上げた。 ついでに環境変数XML_ENC_PATHが設定されてたらそっちを優先するようにしたので、 よろしく > なひさん。その差分は同梱のxmlparser-0.6.1-1.diffに。

[Cygwin] new setup.exe

なんか文字がはみ出て見えるのは大きいフォントを選んでいるとそうなるらしい。


2002-03-22 (Fri)

Dnsmasq 1.4

Fix a bug with DHPC lease parsing which broke in non-UTC timezones.

ということらしいが、ISC DHCP 3.0だと

# All times in this file are in UTC (GMT), not your local timezone.

と/var/state/dhcp/dhcpd.leasesに書かれているとおりなのであまり関係ないか。

uClibc 0.9.10

pthreadsが追加されたようだ。

21 March 2002, uClibc 0.9.10 Released!
   CodePoet Consulting is pleased to announce the immediate
   availability of uClibc 0.9.10. This release adds pthreads support
   (including pthreads support for mmu-less systems!). Additionally,
   thanks to Manuel Novoa III, we now have a completely new stdio
   library, which is small, standards compliant, supports pthreads,
   wide/narrow streams, large files, and can even operate in a
   low-memory unbuffered mode. Many, many bugs have been fixed and a
   number of additional applications now compile and run perfectly.
   Even with all these changes, uClibc continues to be very small. On 
   x86, a default build of the uClibc C library is still just 168k.

[Ruby] VMS対応

1.7にVMS対応が入った。


2002-03-23 (Sat)

rubyzip 0.4.1

更新。

REXML 2.0.1

更新。

grep 2.5

grepのmultibyte対応はものすごく遅い。

% ls -l ruby-talk.0201
-rw-------    1 watanabe ruby      9967155 Feb  2 00:48 ruby-talk.0201
% time /usr/bin/grep hogehoge ruby-talk.0201
/usr/bin/grep hogehoge ruby-talk.0201  0.37s user 0.07s system 88% cpu 0.497 total
% time grep hogehoge ruby-talk.0201         
grep hogehoge ruby-talk.0201  24.60s user 0.53s system 98% cpu 25.405 total
% time LANG=C grep hogehoge ruby-talk.0201          
LANG=C grep hogehoge ruby-talk.0201  0.20s user 0.51s system 99% cpu 0.715 total

Rubyに負けてるじゃん。

% time ruby -Ke -ne 'print if /hogehoge/' ruby-talk.0201
ruby -Ke -ne 'print if /hogehoge/' ruby-talk.0201  17.11s user 0.68s system 97% cpu 18.245 total

あれ?でもRuby 1.7.2は遅くなってるなあ。

% time ruby-1.7.2 -Ke -ne 'print if /hogehoge/' ruby-talk.0201
ruby-1.7.2 -Ke -ne 'print if /hogehoge/' ruby-talk.0201  27.70s user 0.50s system 99% cpu 28.483 total

[Ruby] IO#gets, IO#read

結局のところRuby 1.7では読み込みが遅くなってるのか。

% TIMEFMT='%U user %S system %E total'
% time ruby-1.6.7 -Ke -ne '' ruby-talk.0201 
13.12s user 0.56s system 14.567 total
% time ruby-1.7.2 -Ke -ne '' ruby-talk.0201 
21.65s user 0.62s system 22.444 total

1.7でIOは速くなったんじゃなかったっけ?

% time ruby-1.2.6 -Ke -ne '' ruby-talk.0201
12.26s user 0.56s system 13.054 total
% time ruby-1.4.6 -Ke -ne '' ruby-talk.0201
11.87s user 0.72s system 12.655 total

やっぱ1.7は遅すぎる。

% time ruby-1.2.6 -Ke -e 'ARGF.read' ruby-talk.0201
0.08s user 0.76s system 0.816 total
% time ruby-1.4.6 -Ke -e 'ARGF.read' ruby-talk.0201
13.32s user 1.02s system 14.540 total
% time ruby-1.6.7 -Ke -e 'ARGF.read' ruby-talk.0201 
9.71s user 0.81s system 10.583 total
% time ruby-1.7.2 -Ke -e 'ARGF.read' ruby-talk.0201
0.85s user 0.89s system 1.776 total

と思ったらIO#readは速い。IO#getsが遅い?

WWWOFFLE 2.7a

2.7に上げた時から多発してたよくわからないエラーが、 2.7aにしたらピタっと治まったようだ。 そういうエラーになるとw3mはNo Lineになるんだけど、 昨日の雑感 がNo Lineになってまだ駄目なのかと思ったら、ほんとに0バイトのようだ。

買いもの

バカボンドと言う人が結構いるなあ。Vagabond(放浪者、ならず者)です。 やはりバカボンにつられるんだろうか。

Win32OLE 0.4.4

更新。


2002-03-24 (Sun)

diet libc 0.16

更新。

GNU readline 4.2a

bashをまだ2.05aに上げてないことに突然気づく。どうせなら

--with-installed-readline

としてインストールされてるreadlineを使おうと思ったら、

checking version of installed readline library... 2.2
configure: WARNING: installed readline library is too old to be linked with bash
configure: WARNING: using private bash version

と言われてしまった。しょうがないから上げる。

普通にmakeだけだとstatic libraryしか作らないので、 make sharedとかmake everythingする必要がある。 同様にインストール時はmake install install-sharedてな具合。

bash 2.05a

で、--with-installed-readlineつけてconfigureしてみると

test: 2a: bad number

と微妙にエラーメッセージがはみ出てる。aとかつけるからだよ。

elif test $RL_MAJOR -gt 4 || { test $RL_MAJOR = 4 && test $RL_MINOR -gt 2 ; } ;

これだと4.2より大きい場合になるが、4.2aはどっちなんだ? ま、いいや、このままで。

Ruby 日記

ツッコんでばかりで申し訳ない気もするけど、1週間ワープしてるようです。

XMLParser 0.6.2

更新。mswin32/mingw32のときはwsock32もリンクする必要があるので

--- extconf.rb.orig     Wed Jun 20 12:35:18 2001
+++ extconf.rb  Sun Mar 24 19:08:44 2002
@@ -49,2 +49,3 @@
     have_library("socket", "ntohl")
+    have_library("wsock32") if RUBY_PLATFORM =~ /mswin32|mingw/
     create_makefile("xmlparser")

とした(ntohl, ntohsのため)。

Mmap 0.1.7

更新。


2002-03-25 (Mon)

Win32OLE 0.4.5

更新。

REXML 2.0.2

更新。

NArray 0.5.6

narray.defにはまだna_touch_objectが残っているためエラーになる。 パッチも入れとこう。


2002-03-26 (Tue)

vim 6.1

出てたのか。

GNU diffutils 2.8

7年半振りのバージョンアップ。

% diff -u1 =(echo a) =(echo b)
--- /tmp/zshSsK8La      2002-03-26 22:53:59.000000000 +0900
+++ /tmp/zshMv1olc      2002-03-26 22:53:59.000000000 +0900
@@ -1 +1 @@
-a
+b

とタイムスタンプの表示がちとうるさい。 diffにそんなところの精度を期待してないんだけどなあ。 しかも、ほとんどの場合0だと思うんだけど。

time

zshはtimeが文法に組み込まれているようだ。

% time date                   
Tue Mar 26 22:58:10 JST 2002
date  0.06s user 0.05s system 101% cpu 0.108 total
% time LC_ALL=ja_JP.eucJP date
2002年 3月26日 (火) 22:58:12 JST
LC_ALL=ja_JP.eucJP date  0.09s user 0.03s system 99% cpu 0.120 total
% LC_ALL=ja_JP.eucJP time date
zsh: parse error near `time'

[Ruby] overlineとyenmark

おそらくVMS対応のpatchに紛れこんでいたんだと思われる。

% ruby -ne 'p [ARGF.filename,$_] if /\033/' *.c
["bignum.c", "\t    *buf = \e(J~\e(B*buf;\n"]
["dln.c", "\t    *p2 = '\e(J\\\e(B0';\n"]

なぜか、gccは文句言わなかった。


2002-03-27 (Wed)

erb 1.4.2

更新。

druby 1.3.6

更新。


2002-03-28 (Thu)

rpm 4.0.3

なんだかんだでrpmなパッケージをインストールしなきゃいけないこともあるので、 Red Hatからrpm本体を取ってきた。 てゆかこのソースもrpmなんだけど、どこかにtarballもあるんだろうか? Plamoにはrpm2targzがあるのでこれでtarballに変換して中を見ると rpm-4.0.3.tar.gzが入ってた。ぐはぁ。


2002-03-29 (Fri)

REXML 2.0.4

2.0.3はどうなったんだろう?

xmms 1.2.7

これ を見る限り日本語パッチをあてなくてもよさそう。 確かにいけてる。ただSJISなlocale環境は作ってないから、 ja_JP.eucJPでID3タグもEUC-JPにしてだけど。 Autoscroll songnameもできていいじゃん。 Windowsへ持ってくときにSJISに変換することにしよう。

Mp3Tag 1.0

ID3タグを扱うライブラリを RAA で探すとMp3Tagが見つかった。これを使ってみる。 commitすると書き込むわけか。ふむふむ。 songname, artist, album, commentあたりを変換してやればよさそうだ。 "r"とか"r+"でopenしてるので、Windowsではbinmodeする必要もあるだろう。

ところ"r+b"と"rb+"ってどっちかがエラーになる処理系もあったりするので、 "r+"に限ってはIO#binmodeを使ったほうが無難だ。これはそのままCのfopenに渡る。

icc

rpmを入れたのは実はiccのためだったりする。 installのi386をi586に書き換えただけでインストール可能。 あとは

% source /opt/intel/compiler50/ia32/bin/iccvars.sh

でok。

でもrpmはなぜか

% ldd =rpm

       not a dynamic executable

だったりするのがちと気になる。

DRY

Don't Repeat Yourself(同じことを繰り返すな)。 Andy&Daveのありがたいお言葉。 つまりext/mkmf.rb.inとlib/mkmf.rbのように同じようなものを作ってはいけない。 Shellwords::shellwordsの変更を片方忘れるやつが出てきたりするんだから(意訳:ごめん)。


2002-03-30 (Sat)

iconv 0.4.5

今ごろではあるが更新。

xmms

なぜか

% LC_ALL=japanese xmms &

だとmainもplaylistもSJISになる。 いろんなメニューも日本語になるが、みんな化ける。

% LC_ALL=japanese LANGUAGE=C xmms &

で英語になるので~/.icewm/toolbarは

prog XMMS button1a env LC_ALL=japanese LANGUAGE=C xmms

とした。ID3タグはSJISにする。 というかEUC-JPへの変換はまだ試験的に数曲しかしてないのが幸いしてる。

AspectR

これを使うとclass定義のほうを変更しないで、いろんなことができる。 たとえばあるメソッドが呼ばれるたびにlog messageを吐かせたいときは、 こんな感じだ。

% cat foo.rb
require 'aspectr'

class Foo
  def a() p "a" end
  def b() p "b" end
end

class MyAspect < AspectR::Aspect
  def preAdvice(method, object, exitstatus, *args)
    print "entering ", method, "\n"
  end
  def postAdvice(method, object, exitstatus, *args)
    print "leaving ", method, "\n"
  end
end

MyAspect.ma.wrap(Foo, :preAdvice, :postAdvice, :a, :b)
foo = Foo.new
foo.a
foo.b
% ruby foo.rb
entering a
"a"
leaving a
entering b
"b"
leaving b

PREとPOSTのうちどちらかが要らないときはnilを指定すればいい。 Aspect#wrapは正規表現でメソッドの指定もできるので

MyAspect.new.wrap(Foo, :preAdvice, :postAdvice, /\w+/)

てなことをすると、 respond_to?だのinstance_evalだのが呼ばれてる様子がわかって面白い。 いや欝陶しいだけなので、

MyAspect.new.wrap(Foo, :preAdvice, :postAdvice, /^[ab]$/)

と自分で定義したものだけにmatchする正規表現を与えよう。

残念ながらインスタンスメソッドにしか使えないようだ。


2002-03-31 (Sun)

erb 1.4.3

更新。

rubyzip 0.4.2

更新。

Test::Unit

RubyUnitの互換レイヤがあるということなので、 RubyUnitをuninstallしないと面倒なことになるのかなと思ったら、 RubyUnitがインストールされてたらスキップするようだ。

Preconfiguring...
Skipping the install of the runit compatibility layer because a
version of runit is already installed.

全ファイルがCR+LFだなあ。Nathaniel TalbottさんはWindowsな人なのか。

packages/testunit/lib/pre-install.rbがsrcdir対応してないようだ。 中を見てみると

Dir.chdir("../test/test/unit")

とある。ここはcurr_srcdir相対にすればいい。

Dir.chdir(File.join(curr_srcdir, "../test/test/unit"))

というわけでこんな感じでパッケージング。

% mkdir cygwin; cd cygwin
% i386-cygwin-ruby ../setup.rb config
% i386-cygwin-ruby ../setup.rb setup
% i386-cygwin-ruby ../setup.rb install
% cd ..
% cat >../testunit.contents
DOC=ChangeLog README TODO doc examples
CONTENTS=$(RUBYVER_DIR)/test
% make -f ../Makefile.pack P=testunit V=0.1.4 T=cyg
% make -f ../Makefile.pack P=testunit V=0.1.4 T=min sym
% make -f ../Makefile.pack P=testunit V=0.1.4 T=dj sym

rubytest.rbのようなものはないらしい。

date2 3

newdateがdate2になったようなのでパッケージング。

% mkdir cygwin; cd cygwin
% i386-cygwin-ruby ../install.rb config
% i386-cygwin-ruby ../install.rb setup
% i386-cygwin-ruby ../install.rb install
% cd ..
% cat >../date2.contents
DOC=MANUAL* README* sample
CONTENTS=$(RUBYVER_DIR)/date2
% make -f ../Makefile.pack P=date2 V=3 T=cyg
% make -f ../Makefile.pack P=date2 V=3 T=min sym
% make -f ../Makefile.pack P=date2 V=3 T=dj sym

ccache

ああ、またおれが好きそうなのが。と思ったら compilercache に触発されてCで書き直したものみたいだ。 Yendot から。

man ccacheすると

cp ccache /usr/local/bin/
ln -s /usr/local/bin/ccache /usr/local/bin/gcc
ln -s /usr/local/bin/ccache /usr/local/bin/cc

として使うようだ。 これはもちろん/usr/local/binにgccやccがあったら駄目なので

% mkdir ~/ccache; cd ~/ccache
% ln -s =ccache gcc
% ln -s =ccache cc
% ln -s =ccache i686-pc-cygwin-gcc
% ln -s =ccache i586-pc-msdosdjgpp-gcc

としてみた。使うときだけ~/ccacheにPATHを通そう。


<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!