天泣記

2005/03/01

#1

出張 3日目

#2

mount 32回毎に fsck が起こる。

まぁ、これは安心のためなのでそれ自体はいいのだが、 それは暇なときに起こって欲しい。 つまり、カンファレンス中に起こって欲しくはない。

disable すればいいのかもしれないが、それはなんか気に入らない。

(カンファレンスの前に) 意図的に fsck を引き起こすにはどうしたらいいか?

2005/03/02

#1

出張 4日目

#2

CodeFest とはどんなものか?

とりあえずコードを書いてみる。

個人的には書かないで済ますことが多いのだが、 だが、コードを書かないとしたら、それは CodeFest だろうか? まぁ、それでもいいかという気もするけれど。

2005/03/03

#1

出張 5日目

#2

寝袋はけっこう暖かい。

2005/03/04

#1

出張 6日目

#2

ふと、IP アドレスが割り当てられている国のテーブルを探してみる。

APNIC では http://ftp.apnic.net/stats/apnic/delegated-apnic-latest にあるようだ。

2005/03/05

#1

西単で本屋に寄る

かなり広い。地上4階・地下1階

#2

帰還

#3

地元で本屋に寄る

文庫2冊・まんが2冊

文庫本のうち 1冊は出張中に発売を知って売り切れを危惧していたのだが、 売り切れていなくて良かった

#4

タイムゾーンを戻す。

GPS がついていれば、(原理的には) 自動的にタイムゾーンを変えることが可能だろうか?

2005/03/07

#1

出張 1日目

2005/03/08

#1

出張 2日目

2005/03/09

#1

出張 3日目

2005/03/10

#1

定期を買う

期間が終了した後 1日空いていたのだが継続で買えた

2005/03/12

#1

ぐぁ。予定をひとつ完全に忘却していた

2005/03/14

#1

IA-64 上で最適化した Ruby が core を吐くのは setcontext が r32 を復元しないのが原因な感じがしないでもない。

2005/03/15

#1
完璧とは、何も付け加えるものがなくなったときではなく、何も取り去るものがなくなったときに達成される

という言葉がある。 これはなかなか考えさせられるところがある言葉なのだが、この言葉をいった人物を知ってちょっと印象が変化した。

この言葉をいったのは「サン・テグジュペリ」という人で「星の王子さま」の著者なのだが、 このひとは飛行機のパイロットでもあったのである。

パイロットであったという知識を得た上で言葉を読み返してみると... なんか言葉の深みが減った気がする。

2005/03/16

#1

autobuild が止まっているのはおそらく必須な設定がないから。

なぜ必須な設定がないかというと、その設定は後から増えた (というか分離された) にもかかわらず設定を追随させていないから。

2005/03/17

#1

大岡山

2005/03/22

#1

System III や System IV に nonblocking I/O があったのかどうか調べるが、 どうも分からない。

2005/03/23

#1

4.4BSD の popen は r+ として双方向通信が出来る

が、読み込みバッファに貯っているデータが書き込み時に消える

netbsd20% cat t.c 
#include <stdio.h>

int main(int argc, char **argv)
{
  FILE *f;

  f = popen("echo -n abc; cat", "r+");
  if (f == NULL) {
    perror("popen");
    exit(1);
  }

  printf("%c\n", getc(f));
  putc('z', f);
  printf("%c\n", getc(f));

  return 0;
}
netbsd20% gcc t.c 
netbsd20% ./a.out 
a
z

2005/03/24

#1

Linux Programmer's Manual の select の項に、 readable になっても read が block する (race condition でない?) 例が載っていることに気がつく。

Under Linux, select may report a socket file descriptor as  "ready  for
reading",  while  nevertheless a subsequent read blocks. This could for
example happen when data has arrived but  upon  examination  has  wrong
checksum  and  is discarded. There may be other circumstances.  Thus it
may be safer to use O_NONBLOCK on sockets that should not block.

O_NONBLOCK を使っていない select ベースなサーバにそういうパケットを送りつけると、DoS ができてしまうのだろうか。

#2

Re: [PATCH] Re: UDP recvmsg blocks after select(), 2.6 bug? from Andries Brouwer on 2004-10-08 というのがその記述の元か?

UDP recvmsg blocks after select(), 2.6 bug? from Joris van Rantwijk on 2004-10-06 というのがきっかけか

ふむ。UDP の話なのか

2005/03/25

#1

スレッドを全部読んでみると、いくつか興味深い発言がある。

UDP でそういうことが起こるのは、 checksum の検査が user space へのコピー時に行われるからで、 select 時にはまだ行われていないから: David S. Miller on 2004-10-06

Java NIO では nonblocking I/O を使うことになっている: Dan Kegel on 2004-10-06

select は常に nonblocking I/O と組み合わせて使うべき: Alan Cox on 2004-10-06

この動作によって性能がほぼ倍になっている: Alan Cox on 2004-10-06

kernel は select が return した後、read が呼ばれる前にパケットを落せる: Adam Heath on 2004-10-07

TCP でもパケットを落せる。select の後で落されて、パケットが再送されて届くまで read はブロックするかも知れない: Adam Heath on 2004-10-07

この件に関しては NIC に検査させればだいたい済むんじゃないの: Ben Greear on 2004-10-07

DoS に使える: Chris Friesen on 2004-10-15

#2

nonblocking mode は他のプロセスと共有されるところが癌なのだが、 Linux では共有を避けられることがある。

% ruby -rio/nonblock -e '
r, w = IO.pipe
f = open("/dev/fd/#{r.fileno}")
f.nonblock = true
p f.nonblock?
p r.nonblock?
p f.sysread(10)
'
true
false
-e:7:in `sysread': Resource temporarily unavailable - /dev/fd/5 (Errno::EAGAIN)
        from -e:7

2005/03/27

#1

select には nonblocking I/O を使うべきだという主張は以前にも読んだことがある。

調べ直してみると comp.unix.programmer の <barmar-3A8CD3.13504123072004@comcast.dca.giganews.com> (Barry Margolin on 2004-07-23) だった。

このスレッドにはそれが起こる具体的な仕組みの話は出ていない。

#2

PostgreSQL には AUSTRALIAN_TIMEZONES というオプションがあって、 ACST, CST, EST, SAT の意味を変えられるらしい。

PostgreSQL 8.0.0 日付/時刻キーワード

2005/03/28

#1

「UNIX の 1/4 世紀」の p.47 に glob が global の略称であるという Ritchie の発言があることに気がつく。


[latest]


田中哲