Just another Ruby porter,

〜2002年4月上旬〜


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

2002-04-01 (Mon)

sendmsg, recvmsg

Ruby 1.7をi686-pc-cygwinでmakeすると

socket.o(.text+0x23c9):socket.c: undefined reference to `sendmsg'
socket.o(.text+0x24f0):socket.c: undefined reference to `recvmsg'

となる。nativeのcygwinではいけてるので、 クロスの環境が古くなってしまったようだ。 そろそろ、新しくしないと。

ext/socket/extconf.rbを見ると、 headerを見てmemberがあるかどうかのcheckしかしてないので、 こういう手抜きheaderがあるとお手上げだ。

と書いてたら早速 指摘 された。 しかたなくwinsup/cygwin/ChangeLogを覗く。書いてあった。 その結果が これ だ。

Cygwin 1.3.10-1, mingw-runtime-1.2-1, w32api-1.2-1

というわけでクロスの環境を新しくした。

% tar xfv cygwin-1.3.10-1-src.tar.bz2 --us=bzip2
% patch -p0 </some/where/cygwin-1.3.5-3.diff

このパッチ は以前作ったもの。ちょっとoffsetはあるけどあたる。

% cd cygwin-1.3.10-1/winsup
% rmdir mingw
% tar xfvz ../../mingw-runtime-1.2-1-src.tar.gz
% ln -s mingw-runtime-1.2-1 mingw
% rmdir w32api
% tar xfv ../../w32api-1.2-2-src.tar.bz2 --us=bzip2
% ln -s w32api-1.2-1 w32api

mingwとw32apiは同梱されなくなった。cinstallもない。

% cd ..
% mkdir build; cd build
% CFLAGS=-Os CXXFLAGS=-Os \
  ../configure \
  --target=i686-pc-cygwin \
  --prefix=/usr/local/cygwin  
% make -e tooldir=/usr/local/cygwin
% make -e tooldir=/usr/local/cygwin install

探偵物語

あ、再放送してる。今日からか?


2002-04-02 (Tue)

3月のspam

125通。ってどんどん増えてるよ。

韓国からのspamによく

[韻壱]

てのがSubjectについてるけど、これは広告という意味らしい。 去年の夏にこれをつければよしとかいう法律を作って、それを日本が真似たわけだ。 全くもって困ったもんだ。

RIMのメール配送遅延

相変わらずメールの配送が遅れてるようだが、 どうも23時から1時ぐらいが一番遅れるようだ。 未だにテレホタイムが関係してるのか?って情けないぞ。

Cygwin setup.exe

100バイトあたりに境界があるようだ。

% tar tfz testunit-0.1.4-1.tar.gz | \
  awk '{print length($0),$0}' | \
  sort -n |tail -5
94 usr/local/doc/ruby/testunit-0.1.4/doc/classes/Test/Unit/UI/TestRunnerMediator.src/M000039.html
94 usr/local/doc/ruby/testunit-0.1.4/doc/classes/Test/Unit/UI/TestRunnerMediator.src/M000040.html
94 usr/local/doc/ruby/testunit-0.1.4/doc/classes/Test/Unit/UI/TestRunnerMediator.src/M000041.html
95 usr/local/doc/ruby/testunit-0.1.4/doc/classes/Test/Unit/UI/TestRunnerUtilities.src/M000030.html
103 usr/local/doc/ruby/testunit-0.1.4/doc/classes/Test/Unit/UI/Fox/TestRunner/from-@fault_detail_label.html

てゆか、100バイトを越えるファイル名が使えるのはGNU tarの拡張だっけ?


2002-04-03 (Wed)

Devel::Logger 1.0.0

更新。

http tunnelでrsync

Tokyo.pm MLで開発版Perlのソースは

% rsync -avz rsync://ftp.linux.activestate.com/perl-current/ .

とすれば取ってこれることを知る。なるほど。 でもrsync serverか。会社は壁の中だしどうすればいい? http proxy rysncをキーでgoogleしてみると このパッチ が見つかった。さっそくあててみるかとsocket.cを見るとCONNECTの文字が。 くー、すでに対応済みか。てゆか、まずman rsyncしろよ。

% RSYNC_PROXY=proxy:port rsync -avz rsync://ftp.linux.activestate.com/perl-current/ .

で解決だ。こりゃいいや。


2002-04-04 (Thu)

ltrace 0.3.26

freshmeatで知る。更新。

rsync 2.5.5

更新。zlib/README.rsyncを読んで、-lzはやめた。

Specific changes that have been made to zlib for rsync include:

- add Z_INSERT_ONLY to allow for efficient history updating without
  actually emitting any data. This is used to compress the matched
  blocks that don't cross the wire, which gives better compression
  ratios on the literal data.

- fixed a number of minor compilation issues. (redefinition of MAX and
  other such trivial things)

- include rsync.h to ensure that we get a consistent set of includes
  for all C code in rsync and to take advantage of autoconf

As a result of the first item, the streams from rsync's version of
zlib are *not compatible* with those produced by the upstream version
of rsync.  In other words, if you link rsync against your system's
copy, it will not be able to interoperate with any other version if
the -z option is used.  (Sorry.  Sometimes standard is better than
better.)

ccache 1.4

The latest release is ccache 1.4. This release adds:

 ・ 2 level cache hierarchy
 ・ added CCACHE_NOLINK environment variable
 ・ nicer statistics formatting
 ・ slight change to the hash function to raise cache hit rate

ということらしい。


2002-04-05 (Fri)

[Virus] W32.Klez.E@mm

最近流行っているのか、2日連続で来た。あ、両方共skk MLだな。

[Ruby] defined? block_given?

あ、これだとblock_given?という変数があったら困るなと思ったら、 ?は変数には使えなくなって随分経つんだということに気づいた。

?がつかない場合は、やっぱrespond_to?を使って、

Object.respond_to? :foo

のほうが無難か。

Kernel.private_methods.include? "foo"

はちょっと効率が悪そう。


2002-04-06 (Sat)

Threading still broken in Win Ruby?

この人はどうもWindowsでも完璧に動かないと気がすまないようだ。 これ とか以前もpipeが動かないと騒いでた。

Invalid base64 data

うーむ。cmailだと これ が Invalid base64 dataになってしまうなあ。 unpack("m")してみると読めるけど。

fetchmail 5.9.11

更新。

Apache 2.0正式版

どれをダウンロードするのかちょっと迷った。 httpd-2.0.35.tar.gzなんだね。ってなぜそんなありふれた名前に? 確かに実行ファイルは歴史的な理由によりずーっとhttpdだったが。 defaultは/usr/local/apache2へインストールされるので、 1.3も残しておける。

Win32OLE 0.4.7

更新。


2002-04-07 (Sun)

ccache 1.5

気づいてなかったけど、CC='ccache gcc'でいいらしい。

You can either prefix your compile commands with "ccache" or you can
create a symbolic link between ccache and the names of your compilers.

の前半部分を完璧に無視していた。 symlinkを置いている~/ccacheへはふだんPATHを通してないので、それでもいいな。

[Ruby] method_defined?

そうか。method_defined?を使えばいいんだ。

[Ruby] jcodeの無効化

jcodeがStringのtr!とかを置き換えてしまうのはいやだという話はよく聞く。 この際動的に切り替えられる仕組みを考えてみよう。

まずdefだけしてるtr!とかもalias original_tr! tr!として残しておく。 さらにdef tr!ではなくdef jtr!と全部jをprefixをつけて、 alias tr! jtr!としておく。あとは

String.class_eval do alias_method :tr!, :original_tr! end

で元に戻し

String.class_eval do alias_method :tr!, :jtr! end

でjcodeを活かすString::jcodeというクラスメソッドを用意し切り替えられるようにする。 つまり

require 'jcode'

だと今までのjcodeで、さらに

String::jcode = false

とすると、tr!(orignal_tr!)とjtr!が使えるようになるというわけ。

  def self.jcode=(mode)
    @@jcode = mode ? true : false
    prefix = {true=>'j', false=>'original_'}[@@jcode]
    class_eval do
      %w(tr delete squeeze tr_s chop).each do |method|
        alias_method method+'!', prefix+method+'!'
        alias_method method, prefix+method
      end
    end
  end

  def self.jcode
    @@jcode
  end

  self.jcode = true

てな感じ。そいうえばjlengthだけ日和ったのはなぜだっけかなあ。

def内でaliasするにはevalを使う方法もあるけど、 文字列を渡さなきゃいけないので面倒。 そういえばevalはなぜブロックを受けつけないんだろう?

iptables 1.2.6a

あれ?1.2.6はすっかり忘れていたようだ。先月出てたのか。

Plamo 2.2.5

Plamo 2.2.5にしようかなと思い見に行ってみると

kernel-2.2.19 + glibc-2.2.2 + XFree86 3.3.6

という構成だった。これではバージョンダウンになってしまう。

[Ruby] alias_method

alias_methodはModuleクラスのメソッドなのでclass_evalは要らない。 あとsuccも追加して、privateは外そう。

  def self::jcode=(mode)
    @@jcode = mode ? true : false
    prefix = {true=>'j', false=>'original_'}[@@jcode]
    %w(succ tr delete squeeze tr_s chop).each do |method|
      alias_method method+'!', prefix+method+'!'
      alias_method method, prefix+method
    end
  end

  def self::jcode
    @@jcode
  end

  self::jcode = true

[Ruby] jcodeのjlength

思い出した。jlengthは後から俺が追加したからだ。やっぱ置き換えるか。

[Perl] parrot

CVSでもいいけどrsyncでも同期可能。 parrot には

rsync -av --delete cvs.perl.org::parrot-HEAD parrot

と書かれてる。この::は

rsync -av --delete rsync://cvs.perl.org/parrot-HEAD parrot

と同じ意味。

makeは

% perl Configure.pl
% make

という感じ。Configure自体はPerlで書かれてるせいか速い。

% perl Configure.pl --defaults

とすればすべてdefaultで処理する。 最適化オプションは何もつかない。


2002-04-08 (Mon)

[Cygwin] new setup.exe

ふと気づとくと

http%3a%2f%2fwww.ruby-lang.org%2f%7eeban%2fruby%2fbinaries%2fcygwin

という長い名前のディレクトリができてる。 なるほど。new setup.exeは複数のミラーサイトを指定できるからね。

[Ruby] warning: method redefined; discarding old foo

jcode.rbの最初と最後には謎の

$vsave, $VERBOSE = $VERBOSE, false
$VERBOSE = $vsave

があるけど、これは

warning: method redefined; discarding old foo

というwarningを避けるためにある。 aliasで全部originalを残すようにすればこのwarningは消えるので小細工も必要なくなる。

探偵物語

今日の分を見終わって停止を押したら、 「天国への階段」で23年後の古尾谷雅人が出てきてびっくり。 あ、探偵物語の頃は「古老屋」雅人だったのか。 というか原田美枝子の美少女振りもびっくりだ。


2002-04-09 (Tue)

[Ruby] REXML 2.1.1

更新。

ccache 1.6

The latest release is ccache 1.6. This release adds:

 ・ avoid 2nd call to cpp on cache miss
 ・ added CCACHE_CPP2 option
 ・ added explicit handling of /dev/null as an output
 ・ added multiple source files statistic
 ・ minor documentation updates

cache missしたときに2回cppを起動しないようになったようだ。


2002-04-10 (Wed)

[Ruby] REXML 2.1.2

更新。bugfixらしい。

AxPoint

XMLで記述してPDFに変換するプレゼンテーションツール。 Perlで書かれている。 SVGをサポートしてるので円とか線とかも書ける。 サンプルを見て驚いたんだけど、Acrobat Readerってfull screen modeがあるんだね。 日本語が使えないのが残念。

小うるさいmake

makeの例のメッセージ「入ります」「出ます」をさまぁ〜ず三村調に

% LC_ALL=ja_JP.eucJP make
make -C tmp
make[1]: 入るのかよ! ディレクトリ `/home/watanabe/0204/tmp'
make[1]: `all' に対して行うべき事はありません。
make[1]: 出るのかよ! ディレクトリ `/home/watanabe/0204/tmp'

としてみるのはどうだろう? というかやってみたんだが、rubyのmakeが小うるさいどころかかなりうるさい。 流石三村だ。


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