history

青木日記 RSS

<前の日 | この月 | 次の日>

2004-02-08

>>284

「最後の一人はいただく」云々は「拡張モジュール」の話かな。 無道編 p.156 にのってる。素直に言ったほうがわかりやすいのに、 とか言われても、256 倍だから素直に書くわけにはいかないじゃん。

でも、RHG でさんざん「拡張ライブラリ」って書いたら もうどっちでもよくなった。ありがちだ。

Rubyクックブック

高橋さんのところにも出てますが、 初校 (?) が印刷されてきました。 出版時期ですが、春が売れ時なのでその前には出版されるでしょう。 というか、しないとまずいです。

お役立ち度。 既に tdiarygrep とか BitChannel を書くときに使いまくってるというか、 使ったのを端から載せたというか……。 少なくとも自分で使ってみて便利だったということは、 なにかしら役に立つでしょう。

あと、文字列処理の章 (担当青木) が特にそうなんですが、 容赦なく Ruby 1.8 (1.8.1) 仕様です。 1.8 の機能が使えるときは全て 1.8 仕様。

では 1.6 ではどうするか。 最後の章に「古いRubyでも新しいRubyの機能を使う」とか 「互換性を保ったままメソッド名を変更する」みたいな項目が一揃い書いてあるので、 それを使ってどうにかしろというスタンスです。卑劣だね。

マルチプラットフォームの恩恵

それにしても、RHG のときは Linux と Windows くらいしか持ってなかったので 動作確認にかなり苦労しましたが、今回は執筆陣だけで 重要プラットフォームをほとんどカバーできるので楽です。めちゃ楽。 やっぱり実際の動作をその場ですぐ確かめられるのはいいね。

あ、そういえば AlphaNT 入手したって言ったっけ?

(15:02)

test-all-ruby

家のメインマシンには test-all-ruby というコマンドがある。 読んで字の如く、ruby 1.4.6 から ruby 1.8.1 + CVS HEAD までの 全バージョンでコマンドを実行するという力技ツールだ。 こんな具合に使う。

~/c/cookbook % test-all-ruby -e 'p File.basename("a.rb", ".*")'
ruby-1.4.6:
"a"
ruby-1.6.0:
"a"
ruby-1.6.1:
"a"
ruby-1.6.2:
"a"
ruby-1.6.3:
"a"
ruby-1.6.4:
"a"
ruby-1.6.5:
"a"
ruby-1.6.6:
"a"
ruby-1.6.7:
"a"
ruby-1.6.8:
"a"
ruby-1.8.0:
"a"
ruby-1.8.1:
"a"
ruby:
"a"
 
~/c/cookbook % test-all-ruby -e 'p File.extname("a.rb")'
ruby-1.4.6:
/tmp/rbNqlet2:1: undefined method `extname' for File:Class (NameError)
ruby-1.6.0:
-e:1: undefined method `extname' for File:Class (NameError)
ruby-1.6.1:
-e:1: undefined method `extname' for File:Class (NameError)
ruby-1.6.2:
-e:1: undefined method `extname' for File:Class (NameError)
ruby-1.6.3:
-e:1: undefined method `extname' for File:Class (NameError)
ruby-1.6.4:
-e:1: undefined method `extname' for File:Class (NameError)
ruby-1.6.5:
-e:1: undefined method `extname' for File:Class (NameError)
ruby-1.6.6:
-e:1: undefined method `extname' for File:Class (NameError)
ruby-1.6.7:
-e:1: undefined method `extname' for File:Class (NameError)
ruby-1.6.8:
-e:1: undefined method `extname' for File:Class (NameError)
ruby-1.8.0:
".rb"
ruby-1.8.1:
".rb"
ruby:
".rb"

中身

~/c/cookbook % cat =test-all-ruby
#!/bin/sh
for r in ruby-1.4.6 \
         ruby-1.6.0 \
         ruby-1.6.1 \
         ruby-1.6.2 \
         ruby-1.6.3 \
         ruby-1.6.4 \
         ruby-1.6.5 \
         ruby-1.6.6 \
         ruby-1.6.7 \
         ruby-1.6.8 \
         ruby-1.8.0 \
         ruby-1.8.1 \
         ruby
do
    echo "$r: "
    $r "$@"
done

(21:43)

hier 自慢

ちなみに最近は stow を使ってる。 新しくコンパイルしたものから順番に stow 化してるので、 いまんとこはこの程度。

~/c/cookbook % ls /usr/pkg
autoconf-2.59        firebird-0.7    libpcap-0.8.1  ruby-1.6.7
automake-1.8         gawk-3.1.1      lua-5.0        ruby-1.6.8
blackbox-0.61.1      gd-2.0.15       man-1.5k       ruby-1.8.0
cdrtools-2.00.3      ghc-5.04.1      rcs-5.7        ruby-1.8.1
cdrtools-2.01alpha   ghc-5.04.3      ruby-1.4.6     squid-2.5.4
curl-7.10.8          ghc-6.0.1       ruby-1.6.0     subversion-0.33.1
cvsup-16.1f          graphviz-1.8.5  ruby-1.6.1     subversion-0.34.0
darcs-0.9.15         groff-1.18.0    ruby-1.6.2     sudo-1.6.7p5
electricfence-2.0.5  gs-5.10         ruby-1.6.3     tcpdump-3.8.1
ethtool-1.8          j2sdk1.4.0_01   ruby-1.6.4     tex-7.2
expat-1.95.7         j2sdk1.4.1_01   ruby-1.6.5
ezpm3-1.0            lavaps-2.4      ruby-1.6.6

/usr/pkg という名前は NetBSD から持ってきたのだが、意味は違う。

ちなみに /usr/local はこんなことになってる。

~/c/cookbook % ls -ld /usr/local
lrwxrwxrwx    1 root     root            1 Jan 18 17:46 /usr/local -> .

(21:57)

本日のツッコミ(全4件) [ツッコミを入れる]
なかだ (2004-02-09 10:02)

それは全部static link?

あおき (2004-02-10 18:53)

「それ」が ruby であれば、--disable-shared で --prefix も分けてます。
パッケージのほうは --prefix=/usr, DESTDIR=/usr/pkg/xxxx で入れてる
だけなので、基本的にバージョンごとの共存はできません。

あおき (2004-02-10 18:54)

libc その他は dynamic link です。

なかだ (2004-02-11 18:09)

あそうか、libもあるからprefixごと分けなきゃ無理か。

名前
メールアドレス

<前の日 | この月 | 次の日>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|

Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved. LIRS