〜2001年8月下旬〜
また来たよ。こんどは"International Sales Enterprises"ってとこから
INVOIVE #1885.xls.pif
というファイル。実体は同じように実行ファイルだ。
前回の"tanakasi"という人のはMUAは
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
で、今回も
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
だ。全く同じ。というかこれが最新なんだろうか?
ISP側と家との間をPOP3じゃなくてscpするようになってからは、 メール取ってくるのが速くなって(圧縮が効くから)、 こういう変なメールが来てもあまり気にならなくなったんだけど、 頻繁に来るようだとやっぱ考えないとねえ。
ISP側のshell環境でmbox形式にするときにprocmailを通すようにしようかな。
--enable-version-specific-runtime-libsはなんか欝陶しいだけなので外すことにした。
% CFLAGS=-Os CXXFLAGS=-Os ../configure --enable-languages=c,c++ \ --enable-shared --with-system-zlib --enable-sjlj-exceptions \ --enable-c-mbchar --enable-threads
その'はいったいどこから出てくるんでしょう? なんか別の設定がからんでいて、そこが\で継続してないのかな。
それはそれとして
% ruby -e 'p $KCODE quote>
からBackSpaceでは戻れないけど、そこでC-cしてからC-pはできます。 このあたりはzshは気が効いてます。
リュックの声はミニストップのちっちゃい女の子(松本まりか)。
これ によると、 2ヶ月に1度のペースで出すらしい。次は10月か?
あ、そうそう。Rubyはもちろんgcc 3.0.1でもokだ。 今日は時間もあるのでmake bootstrapすることにした。
configureしなおすとgcc -vに(reconfigured)と追加されるんだけど、 それはやりすぎだよ。見辛くなるし。
"x,x,".split(",")
は
["x", "x"]
だが、
"x,,".split(",")
は
["x"]
になる。さらに
"x,,x".split(",")
は
["x", "", "x"]
だ。で"x,,"にはならないようにしたのが、一昨日のmkrbconfig.rbの変更内容。
バージョン間の違いが顕著になりつつあるautoconfだが、 2.13と2.50と2.52を共存させたくなった。 /usr/binには2.13があるのでこれはそのままにしとく。 2.50と2.52のprefixはdefaultの/usr/localとし、 --program-suffixでバージョンも追加することにする。 ただしPACKAGEはautoconfのままになり、 どちらも/usr/local/share/autoconfへインストールしてしまうので、 できあがったconfig.statusを書き換えて
% diff -u1 config.status{.bak,} --- config.status.bak Fri Aug 24 01:09:17 2001 +++ config.status Fri Aug 24 01:11:33 2001 @@ -256,3 +256,3 @@ s,@INSTALL_DATA@,${INSTALL} -m 644,;t t -s,@PACKAGE@,autoconf,;t t +s,@PACKAGE@,autoconf-2.52,;t t s,@VERSION@,2.52,;t t
のような小細工を施し、./config.statusしとく。 あとはmake installでおしまい。 これでautoconf-2.5{0,2}で呼び出せる。
って何かと思ったら「お疲れ」ってことらしい。
一番進んでるセーブデータを上書きしてしまった。20時間がパーに。 一度The Endも見てるわけだし、終わりにするか。
HTMLだけのメールはやめてと何度も言われてるのにねえ。
Get your FREE download of MSN Explorer at http://explorer.msn.com
と最後にあるが、MSN ExplorerってMS-IEとは違うんだろうか。 どーでもいいか。使わないし。
すでに4月に4.1は出ていた。 最初からNLSは使わないようにする。って LFS では最初からそうなってるね。
% CFAGS=-Os CC='gcc -static' ./configure --disable-nls \ --prefix=/usr --libexec=/bin --bindir=/bin
autoconf 2.49eで作られてるらしく、config.cacheは作らない。 作りたいときは--cache-file=config.cacheのよう明示的に指定する。
% make % sudo make install
ついでにupxで圧縮しておいた。
File size Ratio Format Name -------------------- ------ ----------- ----------- 394132 -> 170774 43.32% linux/386 chown 390836 -> 169662 43.41% linux/386 chgrp 463700 -> 201511 43.45% linux/386 cp 375892 -> 163148 43.40% linux/386 chmod 483124 -> 210079 43.48% linux/386 install 400276 -> 174885 43.69% linux/386 du 377492 -> 163576 43.33% linux/386 dircolors 384820 -> 167428 43.50% linux/386 dd 440084 -> 192398 43.71% linux/386 vdir 440084 -> 192398 43.71% linux/386 ls 447988 -> 194264 43.36% linux/386 ln 440084 -> 192398 43.71% linux/386 dir 471732 -> 206355 43.74% linux/386 mv 374068 -> 161918 43.28% linux/386 mknod 371828 -> 161185 43.34% linux/386 mkfifo 376148 -> 163295 43.41% linux/386 mkdir 368308 -> 159247 43.23% linux/386 sync 386580 -> 168576 43.60% linux/386 shred 369588 -> 159865 43.25% linux/386 rmdir 451764 -> 196866 43.57% linux/386 rm 381908 -> 166753 43.66% linux/386 touch 385652 -> 168399 43.66% linux/386 df -------------------- ------ ----------- ----------- 8976088 -> 3904980 43.50% [ 22 files ]
見事なまでに圧縮率が揃ってる。 staticにリンクしたから大部分がlibcだという証拠だな。
% cp -v foo bar `foo' -> `bar'
4.1からは`'で囲むようになったようだ。
ruby-talkと%Rubyで昨日、 なぜか同時多発的に複数のキーでソートしたいという話題が出た。 ま、これも一年に一度ぐらいは話題になってるかな。
freshmeat を見るとfcron 2.0.0が出てたので更新。
Plamoってstraceが入ってないんだっけ? これも freshmeat で新しいのが出たのを知る。
最近はltraceを使ってるからstraceでなくてもいいんだけど。
ruby-talk MLでWindows InstallShield version of Ruby が動かないとかなんとかいろいろ騒いでる。 まとめると
o InstallShield版ではCygwin 1.1.8-2を使ってる。 o setup.exeでCygwinをインストールすると最新のCygwin 1.3.2-1になる。 o Cygwin FAQにも書かれているが、複数のバージョンのCygwin DLLが同時に loadされると問題が起こる。 o じゃいっそのことmswin32とかmingw32にするのはどう? o POSIX機能が制限される(forkとか)。 o じゃ新しいCygwin DLLを使えばいいじゃん。 o Watanabe HirofumiというやつがCygwinの新しいバージョンは問題だらけ だと言ってる。 o Cygwinを静的にリンクするのはどう?
というこんな感じだ。おいらの名前まで出されちゃったねえ。 たぶんmemory mapped fileで情報を共有してるから、 バージョン間の違いに敏感なんだと思う。 それとCygwinは静的にリンクできないようなっている。
あ、Daveさんが
o 新しいCygwin DLLがあったらインストールしない。
という案を出してきた。 が、Cygwinのsetup.exeはcygwin.batを作るので、 PATHを変更しないから検出が難しそうだな。 でもレジストリを見れば一発か。
それはそれとしてもうCygwin 1.3.2-1でいいと思うよ。 問題だらけだと言ったのは1.3.1なんだから。 一応1.3.2を使おうよメールをruby-talkに出してみた。
ちなみに ここ にあるらしい。 らしいというのはおいらほどこのインストーラを必要としない人間はいないからだ。 あ、でもFXRubyは作ってないなあ。じゃダウンロードしてみるか。
Rubyだと"\M-8"で8ビット目が立った文字を表現できるが、 これを作るのって結構面倒 *1。 が、zsh(日本語対応してないやつ)があると簡単だ。
% 公務執行妨害 zsh: command not found: \M-8\M-x\M-L\M-3\M-<\M-9\M-9\M-T\M-K\M-8\M-3\M-2
一発で変換できる。変換とは言わないか。あとはマウスでcopy&pasteだ。
なぜ司会がみのもんた? 高橋か小川かと思ったが、まさか4人も増えるとは。 LOVE涙色のサビを覚えちゃったよ。歌唱指導つきだし。
小川真琴(13) 紺野あさ美(14) 高橋愛(14) 新垣里沙(12)
さぁ、次は誰が抜けるんだろう?
確かにmsdosdjgpp版rubyが動かない。こんな感じだ。
% d:/usr/local/bin/ruby -ve 'puts $"' ruby 1.6.4 (2001-08-26) [i386-msdosdjgpp] d:/usr/local/bin/ruby.exe: No such file to load -- digest (LoadError)
拡張ライブラリを静的にリンクしたときというか、 digestのような構造がまずいんだろうか? djgppの開発環境はLinux上のクロスしかないので、 まずはLinux上でext/Setupを
option nodynamic digest digest/md5 digest/rmd160 digest/sha1 digest/sha2 fcntl
として試す。fcntlはおまけ。
% ./ruby -ve 'puts $"' ruby 1.6.4 (2001-08-26) [i386-linux] fcntl.so digest.so digest/md5.so digest/sha1.so digest/sha2.so digest/rmd160.so
動いちゃったよ。まいったね。 いちいちdjgpp版をWindows上へ持っていかないとだめか?
あ、ひょっとして残ってる
/usr/local/lib/ruby/1.6/i386-linux/digest*
を消さないといけない?
% rm -rf /usr/local/lib/ruby/1.6/i386-linux/digest* % ./ruby -ve 'puts $"' ruby 1.6.4 (2001-08-26) [i386-linux] ./ruby: No such file to load -- digest (LoadError)
そういうことか。 つまりrb_provideしてるのにdigest.soを探しに行ってるのがまずい。 それがほんとなら適当にdigest.soを作ればいけちゃうのか?
% touch digest.so % ./ruby -ve 'puts $"' ruby 1.6.4 (2001-08-26) [i386-linux] fcntl.so digest.so digest/md5.so digest/sha1.so digest/sha2.so digest/rmd160.so
いけちゃったよ。ってことは静的にリンクしたときはrequire "foo"は全部失敗してたのか。まずいじゃん。いつから?
なんかよくわからんが、以前のより2倍速くなってるらしい。 以前のって1.6.3かな? gcc自体は2.95.3で変わってないし、最適化オプションは-Osのままだし、 じゃあRuby自体の1.6.3と1.6.4の違い?そんなに速くなってるんだっけ? あ、cygwin1.dllをrenameしてる書いてあるから、 Cygwin 1.1.8とCygwin 1.3.2との差か? だとしたら積極的に1.3.2を使う理由にもなるな。
2.0GHzを出すのでその下のシリーズが安くなるらしい。チャンスか?
100% fixed-point (integer) computationが特徴のMADだが、 xmms-mad pluginのCPU使用率は80%とあまりいただけない。 しかもPlaylist Editorを開くと死んでしまう。うーむ。 日本語があるとまずいのか?
[ruby-list:31079] を見て気づいたんだけど、
class FileName < String ... if defined?(casecmp) alias icasecmp casecmp else def icasecmp(name) upcase.casecmp(name.upcase) end end
String#casecmpがあるかもしれないって感じになってる。 1.7のChangeLogを見ると7/20に追加したようだ。
PR#61のthreadで(jitterbugだとthreadは切れてしまうが)、
case insensitiveな比較関数は以前から欲しいとは思ってたんです が、なかなか適切な名前が思いつかなくてそのままになってました。 これを機会にこちらも考えてみようと思います。
とまつもとさんが書いてる。早速用意したわけっすね。素早い。
あ、ちゃんとdoc/NEWSにも書いてあるじゃん。こまめにチェックせねば。
で、チェックしたらいきなりEnum#sort_byを発見。なぬー。8/20に追加してたのか。 つまり
map{|x| [x.key1, x.key2, x]}.sort.map{|x| x.last}
のようなSchwartzian Transformは
sort_by{|x| [x.key1, x.key2]}
で済むわけだ。
たとえば
a = [[0, 2], [0, 3], [0, 1]]
を[0], [1]でsortしたければ
p a.map{|x| [x[0], x[1], x]}.sort.map{|x| x.last} p a.sort_by{|x| [x[0], x[1]}
という感じになる。でも、ちょっと例が悪いね。この場合、
p a.sort
で済んじゃうから。
狙っているとしか思えない黄色。あ、買うの忘れてた。