Just another Ruby porter,

〜2003年12月上旬〜


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

2003-12-01 (Mon)

[Ruby] one-liner

ruby-talkでone-linerのためにPerlスタイル変数を残すべきという意見があったけど、 実際Rubyでone-linerを書いてみると、そんなに使うわけでもない。 method chainを使えばそもそも変数は要らないし、暗黙の$_を考える必要もない。

[Ruby] RDoc

なんだかんだで入った。

[Ruby] class Foo end

[ruby-talk:86901]を見て、あれと思った。 class Foo endはエラーになるから、moduleも同じだと思っていたからだ。

% ruby -e 'module Foo FOO = 1 end; p Foo::FOO'
1

そうか。moduleだといけるのか。 classはスーパクラスの指定とかあるからなあ。


2003-12-02 (Tue)

11月のspam

2311通。軽く2000を越えた。12月は3000か?

[Soft] GNU gettext 0.13

いろいろ対応言語が増えている。

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 で動いています.

2003-12-03 (Wed)

[Soft] Bogofilter 0.15.9

更新。

[Soft] My Own Building System (MOBS) 1.0

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ってのはすごいんだよなあ。

[Ruby] JARH

print :"Just another Ruby hacker,"

2003-12-04 (Thu)

[Soft] rsync 2.5.7

・ 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だけの問題じゃない気がするんだけどどうだろう?


2003-12-05 (Fri)

[Worm] Swen

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

2003-12-06 (Sat)

[Ruby] Ruby 1.8.1 preview3

なんか知らないうちに出ていたようで。

[Mail] fmlでtext/htmlをstrip

[ruby-talk:87279][ruby-talk:87336]のようなmultipartなtext/htmlはなぜかstripされないようだ。 それに以前に前者はvirusなんだから別の対策が必要だよね。 なんで通ってしまったかというと、 肝心の中身は空だったからヒットしないのと、 32KB以下になってしまったからか?

[Ruby] flush before seek

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を全プラットフォームで有効にした。


2003-12-07 (Sun)

[Soft] groff 1.18.1

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のままなんだ?


2003-12-08 (Mon)

[Soft] Rsync heap overflow

つまりかなり極端な例を示すと

% 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以降に何か書けばバッファオーバーフローってわけだ。

[Music] 12月のLove song

Gacktはこの曲をむりやり「クリスマス・イヴ」にしたいんだろうか?


2003-12-09 (Tue)

[Soft] zlib 1.2.1

・ inflate is about 20% faster and minimizes memory allocation
・ crc32 is about 50% faster

という謡い文句はいいとして、 DLL FAQというのがなんか曲者だ。

[OpenBSD] OpenBSD 3.4

なんとなくインストール。Xだのgameだのは要らないので10分ぐらいで終了。 慣れてきたようだ。


2003-12-10 (Wed)

[Mail] spam

10日で1000通。やはり今月は3000通ペースか。

[Mail] SpamAssassin 2.61

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.

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