〜2003年10月下旬〜
たまにSpamAssassinをすり抜けて来るspamがあるので、 ruby-talkで学習したデータベースをruby-bugs, ruby-bugs-jaで流用することにした。 さすがに共有は無理だよなあ。
Changes: Thread support is now fully working in ps. The H, -L, m, -m, and -T options all work now, with and without sorting. This feature requires an NPTL-capable glibc and a 2.6.0-test7 kernel; kernels as old as 2.2.xx still work without thread display. The "top" program display now works on a few more genuine serial terminals.
早く公開してくれないかなあ。
たまに遅く帰ってきたら、全然録れてないよ。 1時間も余裕見込んどいたのに、野球中継1時間50分延長だとぉ? 近々再放送が入ること祈ろう。
The current app management system is in bash, but there is talk of porting it to Ruby. Needless to say, I'm very much in favor of that. Some porting work has already been done by me and a couple of other developers.
configureすると
You can ignore any makedepend error messages: "/usr/include/assert.h":104: defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4) ^--- expecting :
と怒られるが、メッセージ通り無視してmake。
Changes: This release supports mailboxes in ANT format and MH maildirs, can use QDBM as a database backend, and will use GSL (the GNU Scientific Library) if it is available. A port to RISC-OS has been added, and many bugfixes and updates have been made.
うーむ。Bitkeeperねえ。
% bk clone bk://ftp.rubyx.org/rubyx BitKeeper/etc/SCCS/s.config BitKeeper/etc/SCCS/s.ignore BitKeeper/etc/SCCS/x.cmark SCCS/s.ChangeSet SCCS/s.init SCCS/s.rubyx SCCS/s.strfile.rb 260395 bytes uncompressed to 296151, 1.14X expansion Looking for, and removing, any uncommitted deltas... Removing any directories left empty ... Set parent to bk://ftp.rubyx.org/rubyx Running consistency check ... Clone completed successfully. % cd rubyx % bk co init 1.5: 1320 lines rubyx 1.125: 6467 lines strfile.rb 1.1: 192 lines % ls -l total 292 drwxrwxr-x 6 watanabe ruby 4096 Oct 25 01:34 BitKeeper drwxrwxr-x 2 watanabe ruby 4096 Oct 25 01:34 SCCS -r-xr-xr-- 1 watanabe ruby 41285 Oct 25 01:34 init -r-xr-xr-x 1 watanabe ruby 229829 Oct 25 01:34 rubyx -r--r--r-- 1 watanabe ruby 7072 Oct 25 01:34 strfile.rb % wc rubyx 6467 15314 229829 rubyx
このrubyxを見てて最初に気になったのは
#!/bin/ruby -w
だ。そこに置くのか。
なんかすごく見辛いインデントだと思ったら、ts=2だった。
このrubyx一つで全部やってしまうようで、たとえばapacheのはこんな感じだ。
class Pkg_Apache < Package def initialize() super('Apache HTTP server','2.0.47') @versions={ '2.0.47'=>[['http','www.oss.redundant.com', '/pub/apache/httpd','httpd-2.0.47.tar.gz']] } needs('expat') end ...
そういうデータは分離してよ。切に。
% ruby rubyx --help You must run rubyx as root
helpにroot権限は要らないでしょ。
どうもおいらとの相性はあまりよくないようだ。
難しい。MATRIXにストーリーなぞ望んでないのに。 明日もう一度見よう。
途中、対決/VERSUSというタイトルを見て、 ひょっとしてと思ったらやっぱり出てきたよ、新庄君(いや名前は全然違う)。 北村龍平はこの二人を余程気に入っているようで、使わないと気がすまないらしい。 「 あずみ」にも出てるようだ。
10年振りぐらいに浮田君を見る。ゴングショーが懐しい。
version.hが1.8.1になった。
1.6は1.6/へ移動させた。 それにともないsetup.iniも1.8を指すようになったので混乱を生じるかもしれない。
用意するもの:
djcrx203.zip, gcc332s2.zip, gcc-3.3.2.tar.bz2, binutils-2.14.tar.bz2
djgppのファイルはたとえば v2や v2gnuにある。 手順はdjcrx203.zipに付属するcross/howto.32を参考に。
% mkdir -p packages/cross % cd packages
ここに上記の*.zipと*.tar.bz2を置く。
% cd cross % unzip -a ../djcrx203.zip % unzip -a ../gcc32s2.zip % chmod +x unpack-gcc.sh % ./unpack-gcc.sh ../gcc-3.3.2.tar.gz
これでgccのパッチあては終了。
% cd gnu % tar xfv ../../binutils-2.14.tar.bz2 --bz
binutilsはそのままオリジナルが使える。 あとは普通にconfigureしてmakeすればいい。でも今日は時間切れ。
% mkdir -p /usr/local/djgpp/i586-pc-msdosdjgpp % cd cross % cp -av include lib /usr/local/djgpp/i586-pc-msdosdjgpp % gcc -Os -s -o /usr/local/djgpp/bin/stubify src/stub/stubify.c % cd gnu/binutils-2.14 % CFLAGS=-Os CXXFLAGS=-Os ./configure \ --target=i586-pc-msdosdjgpp --disable-nls \ --without-included-gettext --without-catgets \ --disable-dependency-tracking --prefix=/usr/local/djgpp % make all install % cd ../gcc-3.32 % CFLAGS=-Os CXXFLAGS=-Os ./configure \ --target=i586-pc-msdosdjgpp --enable-languages=c++ \ --disable-nls --without-included-gettext --without-catgets \ --prefix=/usr/local/djgpp % make <途中略> getpwd.c: In function `getpwd': getpwd.c:86: error: `PATH_MAX' undeclared (first use in this function) getpwd.c:86: error: (Each undeclared identifier is reported only once getpwd.c:86: error: for each function it appears in.)
うーむ。PATH_MAXは<limits.h>にあるんだけどな。 よくわからんが、-DPATH_MAX=512を追加してみる。 さらにlibstdc++-v3/testsuiteで_U, _L, _N等がないとエラーになる。 testsuiteはどうせ要らないから i586-pc-msdosdjgpp/libstdc++-v3/Makefileを直接いじって、 SUBDIRSからtestsuiteを外す。 あとはmake installで終了。
2.95.2, 2.95.3のときもlimits.hをいじってた。
% diff -u1 limits.h{.bak,} --- limits.h.bak 2000-01-28 01:15:24.000000000 +0900 +++ limits.h 2000-01-28 01:54:09.000000000 +0900 @@ -7,2 +7,9 @@ +#define LINK_MAX 1 +#define MAX_CANON 126 +#define MAX_INPUT 126 +#define NAME_MAX 12 /* 8.3 */ +#define PATH_MAX 512 /* for future expansion */ +#define PIPE_BUF 512 /* but there aren't any pipes */ + /* Number of bits in a `char'. */
昨日の話ではあるが、 フィルタルールの事例を参考にして、cfに
&ADD_CONTENT_HANDLER('multipart/.*', 'text/plain', 'allow'); &ADD_CONTENT_HANDLER('multipart/.*', 'text/html', 'strip+notice');
を追加した。
日本語訳。1/3ぐらい読んだが、いまいち物足りない。 英語でしか使えないような技だらけだからか?
出たけど、ext/syck/yamlbyte.hが入ってないのでmakeは失敗する。 やはりMANIFESTは自動で作らないとだめだな。 ま、それならMANIFEST自体必要ないわけだけど。
Hはハルコか。
ruby-talkで学習したデータベースを流用したせいで日本語メールがspamと判断されてしまった。 日本語hamを食わせねば。
VAR=`grep RUBY_VERSION version.h | head -1 | awk '{print $3}' | tr -d '"'`
RUBY_VERSION_CODEがあるから、head -1してるみたいだけど、
VAR=`grep 'RUBY_VERSION ' version.h | awk '{print $3}' | tr -d '"'`
とすればheadを減らせる。RUBY_VERSIONももっと短くてもいい。 さらにそれをawkにやらせれば
VAR=`awk '/VERSION /{print $3}' version.h | tr -d '"'`
のようにgrepも要らない。最終的には
VAR=`awk '/VERSION /{print substr($3,2,length($3)-2)}' version.h`
とすればawkだけでできるが、って長くなってるじゃん。
sedならこんな感じ。
VAR=`sed -n '/VERSION /s/.*"\(.*\)"/\1/p' version.h`
GNU grep 2.5の-Pと-oを使えば
VAR=`grep -P -o '\d+\.\d+\.\d+' version.h`
でいいが、それはまた別の話。
フィールドセパレータを指定すればもっと簡単になることに気づいた。
awk -F\" '/VERSION /{print $2}' version.h
exprを使うなら
expr "`head -1 version.h`" : '.*"\(.*\)"'
かなって、おお、awkと同じ長さだ。
awkをそのままPerlで書くと
perl -F\" -lane 'print $F[1] if /VERSION /' version.h
となり、Rubyだと
ruby -F\" -lane 'print $F[1] if /VERSION /' version.h
となる。全く同じ。
素直にPerlで書くなら
perl -lne 'print $1 if /VERSION "(.+)"/' version.h
かな。って、これもRubyでも同じだよ。
ruby -lne 'print $1 if /VERSION "(.+)"/' version.h
あとはputsを使うぐらいか。
ruby -ne 'puts $1 if /VERSION "(.+)"/' version.h
VAR=``の中で使うなら-lはなくてもいい。
Ada, C, C++, Fortran, Java, ObjC, Pascalとフル装備になった。