〜2003年12月上旬〜
ruby-talkでone-linerのためにPerlスタイル変数を残すべきという意見があったけど、 実際Rubyでone-linerを書いてみると、そんなに使うわけでもない。 method chainを使えばそもそも変数は要らないし、暗黙の$_を考える必要もない。
なんだかんだで入った。
[ruby-talk:86901]を見て、あれと思った。 class Foo endはエラーになるから、moduleも同じだと思っていたからだ。
% ruby -e 'module Foo FOO = 1 end; p Foo::FOO' 1
そうか。moduleだといけるのか。 classはスーパクラスの指定とかあるからなあ。
2311通。軽く2000を越えた。12月は3000か?
いろいろ対応言語が増えている。
Changes: This release has support for shell scripts, Perl scripts, Qt programs, and Glade version 2 descriptions. Support for PHP and Objective C programs has been improved. Format string recognition and portability have been improved. There are more examples.
gawkで試してみた。
% cd gettext-tools/examples/hello-gawk % ./autogen.sh % ./configure --prefix=/tmp % make % make install % cat /tmp/bin/hello #!/usr/local/bin/gawk -f # Example for use of GNU gettext. # Copyright (C) 2003 Free Software Foundation, Inc. # This file is in the public domain. # # Source code of the GNU awk program. BEGIN { TEXTDOMAIN = "hello-gawk" bindtextdomain ("/tmp/share/locale") print _"Hello, world!" printf _"This program is running as process number %d.", PROCINFO["pid"] print } % /tmp/bin/hello Hello, world! This program is running as process number 21999. % LC_MESSAGES=ja /tmp/bin/hello 世界よ, こんにちは! このプログラムはプロセス番号 22000 で動いています.
About: MOBS is a building system a la autoconf, but a lot easier for both developers and users. It doesn't have detection (yet), but it's very easy to use and tune, even for small projects. If you want your project to be configurable and accept most './configure' options but without the hassle and burden autoconf and friends impose, this is for you. It has good documentation and a low steep learning curve, and even has a bit of application framework in order to ease development.
となんか期待させることがfreshmeatに書いてあった。 見てみるとGNU makeばりばり依存のMakefile.in相当が垣間見えたりで、 ちょっとがっかり。なんだかんだでautoconfってのはすごいんだよなあ。
print :"Just another Ruby hacker,"
・ rsync version 2.5.6 and earlier contains a heap overflow vulnerability that can be used to remotely run arbitrary code. ・ While this heap overflow vulnerability could not be used by itself to obtain root access on a rsync server, it could be used in combination with the recently announced brk vulnerability in the Linux kernel to produce a full remote compromise.
実際の 変更点を見てみるとmallocの代わりにnew_arrayを使っていて
+#define new_array(type, num) ((type *)_new_array(sizeof(type), (num)))
_new_arraryはどうなっているかというと、サイズを制限してる。
+#define MALLOC_MAX 0x40000000 + +void *_new_array(unsigned int size, unsigned long num) +{ + if (num >= MALLOC_MAX/size) + return NULL; + return malloc(size * num); +}
これで直るとしたらrsyncだけの問題じゃない気がするんだけどどうだろう?
11月のSwenはというとほぼ毎日。それにしても全然収まる気配なし。全部で179通。
% scan +swen |awk '/2003-11/{print $2}' |sort |uniq -c 3 2003-11-01 10 2003-11-02 7 2003-11-03 7 2003-11-04 5 2003-11-05 4 2003-11-06 2 2003-11-07 4 2003-11-08 6 2003-11-09 5 2003-11-11 2 2003-11-12 2 2003-11-13 3 2003-11-14 4 2003-11-15 3 2003-11-17 14 2003-11-19 19 2003-11-20 7 2003-11-21 17 2003-11-22 9 2003-11-23 8 2003-11-24 7 2003-11-25 6 2003-11-26 7 2003-11-27 6 2003-11-28 8 2003-11-29 4 2003-11-30
なんか知らないうちに出ていたようで。
[ruby-talk:87279]や [ruby-talk:87336]のようなmultipartなtext/htmlはなぜかstripされないようだ。 それに以前に前者はvirusなんだから別の対策が必要だよね。 なんで通ってしまったかというと、 肝心の中身は空だったからヒットしないのと、 32KB以下になってしまったからか?
open("0", "wb+") do |f| f.print "a" f.rewind p ["a", f.read(1)] p ["", f.read] p [nil, f.read(0)] end
の最後が[nil, nil]になればtest/ruby/test_file.rbは通るが、 Linux以外は[nil, ""]になってしまう。 rewindの前にflushを入れるとちゃんとnilになる。 というわけで、NEED_IO_FLUSH_BEFORE_SEEKが必要みたいだ。 今のところLinuxしかというかたぶんglibcしか通らないようなので、 NEED_IO_FLUSH_BEFORE_SEEKを全プラットフォームで有効にした。
man rubyと実行するとFEATURESの項目のインデントがどんどん深くなることに気づいた。 OpenBSDでも同じだ。IRCで聞いてみると他ではそんなことは起きないという。 確かにCygwinでは起きない。 今使ってるPlamo Linux 3.0はgroff 1.10の日本語パッチ版で、 OpenBSD 3.3はgroff 1.15だった。 ちゃんと動いてるCygwinのほうは1.18.1だった。なるほどバージョンが古いせいか。 というわけで、groff 1.18.1に上げて、ついでに ここにある日本語パッチをあてることにしよう。
groff 1.18.1はGNUのミラーサイトを見るとまだMISSING-FILESだが、 まあ、2002年にダウンロードしたものだし大丈夫でしょう。 というか、なぜまだMISSING-FILESのままなんだ?
つまりかなり極端な例を示すと
% cat x.c #include <stdio.h> #include <stdlib.h> main() { int *p; p = malloc(sizeof(int) * 0x40000001); printf("%p\n", p); printf("%d\n", sizeof(int) * 0x40000001); } % gcc x.c % ./a.out 0x80495c8 4
ということか。 p+1以降に何か書けばバッファオーバーフローってわけだ。
Gacktはこの曲をむりやり「クリスマス・イヴ」にしたいんだろうか?
・ inflate is about 20% faster and minimizes memory allocation ・ crc32 is about 50% faster
という謡い文句はいいとして、 DLL FAQというのがなんか曲者だ。
なんとなくインストール。Xだのgameだのは要らないので10分ぐらいで終了。 慣れてきたようだ。
10日で1000通。やはり今月は3000通ペースか。
Changes: This release adds dramatically reduced memory usage of the Bayes expiry, avoidance of false positives on Outlook 2003 messages, messages from Mac, Palm, and localized versions of Eudora, several AOL MUAs, and newer versions of The Bat!, a new set of French translations, an update to reflect a new Dynablock DNSBL location, a fix for a possible hole that was giving AWL bonuses to spammer forgeries on some networks, and miscellaneous bugfixes.