天泣記

2005-09-01 (Thu)

#1

BeOS では、ウインドウに対応するスレッドがあって、イベントはそこに届くらしい。

Approaching Be(Japanese Translated Version)

アプリケーションが複数のスレッドを持つことになるのは、アプリケーションが複数のウインドウを持つ場合?

2005-09-02 (Fri)

#1 /proc/loadavg とかと select

/proc/loadavg とかが select に反応しないのは Linux 2.6.13 で直っているようだ

<URL:http://kernel.org/pub/linux/kernel/v2.6/ChangeLog-2.6.13>

author Luke Kosewski <lkosewsk@nit.ca> Wed, 01 Jun 2005 12:39:28 -0500
Input: do not corrupt system-wide procfs fops.

entry->proc_fops is a pointer to struct file_operations. When we
call create_proc_entry(...), it pointis to proc_file_operations,
deep in fs/proc/generic.c. By adding a 'poll' member to this struct
we effectively force the 'poll' member on every file in /proc,
which is wrong (they all fail select(...) calls).

This patch changes a copy of entry->proc_fops and reassigns it rather
than changing the original member.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>

8月頭に報告したときにはすでに直していた人がいた模様。

2005-09-04 (Sun)

#1

日記をいじくる

#2

へー、XHTML では document.write って使えないんだ。

<URL:http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite>

#3

XHTML Considered Harmful

#4

HTree が出力を script 要素 (と style 要素) も含めて全部エスケープするのは XHTML として出力することを選択したからだが、document.write はどのくらい生き残っているのだろう?

#5

まぁ、なんだ。死滅しそうな感じはしないな。

2005-09-05 (Mon)

#1

HTree で、テンプレートが HTML だったら (XML 宣言がなくてルート要素が HTML っぽかったら) 展開結果も HTML にするようにしてみる。

#2

しかし、XML ベースの他のテンプレートライブラリでは問題にならんのかな

2005-09-06 (Tue)

#1

<URL:http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Gauche%3aWishList>

お、Gauche で nonblocking write かぁ。

やはりどこでも single thread で (おそらく event driven で) やりたがる人はいるものだ。

call/cc でやれば綺麗というのはまさに Scheme 的感覚だと思うが、それはそれとして、興味を持ったのは procedual port と conversion port における問題である。

そういえばそういう I/O モドキにおける nonblocking I/O については真面目に考えたことがない。考えてみると、たしかに zlib とかで、partial write や EAGAIN を実現するのは難しそうである。

また、event driven で書くなら、zlib の出力側で起きた partial write と EAGAIN は、zlib の入力側に何とかして戻すよりも、むしろともかく受け取ってしまってバッファリングしておき、書けるようになった (ことに event loop が気づいた) ら、書くように作業を登録しておけば良い。

とすると、zlib では nonblocking I/O は困難な上に不要っぽいわけで、そういうことは提供しないことになりそうである。そして、そうなると、zlib と普通の IO で nonblocking I/O の部分が多態ではないことになる。

ここで blocking と nonblocking がひとつのメソッドで提供されているとその多態性を Duck Type で表現できなくて悲しい。やはりひとつのメソッドに blocking I/O と nonblocking I/O を同居させるのはよろしくないと思う。

#2

XML 宣言と document.write を両方含んでいるページを手元のアンテナからいくつか探してみる。

どれも Content-Type: text/html なので、少なくとも mozilla では HTML として解釈され、document.write は問題なく動くのであろう。

#3

ところで、HTML の script 要素のいやなところは、</ が書けないところである。

ところで、JavaScript で </ はどこに現われ得るだろうか?

<URL:http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/>

まず、< という演算子の後に、/* や // というコメントが続くことはありそうである。その場合は間に空白をいれれば良い。

また、文字列にも含まれそうである。その場合はどちらかをエスケープすれば良い。

あと、コメントにも含まれそうである。その場合は間に空白をいれるとかすれば良い。

ふむ。JavaScript の字句解析を行えば、</ を自動的に除去することも出来そうではある。

#4

では、CSS はどうか?

2005-09-07 (Wed)

#1

うぅむ。DOM で木じゃない構造を表現するとは。

2005-09-08 (Thu)

#1

珍しく、日本語を扱うコードを書く。

require 'htree'
def strip_newline_in_japanese(tree)
  h = {}
  tree.make_loc.traverse_text {|t|
    next if t.loc_list.any? {|l| l.elem? && l.name == '{http://www.w3.org/1999/xhtml}pre' }
    h[t] = t.to_s.gsub(/([^\n])\n(?=([^\n]))/) {
      a, b = $1, $2
      a +
      if /[ぁ-んァ-ヶ亜-熙]/ =~ a && /[ぁ-んァ-ヶ亜-熙]/ =~ b
        ""
      elsif /[・:;(〔[{〈《「『【]/ =~ b
        ""
      elsif /[、。,.・:;)〕]}〉》」』】]/ =~ a
        ""
      elsif /[?!]/ =~ a
        " " # xxx: should be zenkaku space?
      else
        "\n"
      end
    }
  }
  tree.subst(h)
end

HTML 中のブラウザに渡されて欲しくない改行を削除する。

まぁ、この件については以前いろいろ考えたのだが、とりあえずはこの程度で。

2005-09-09 (Fri)

#1

AS/400 の (OS/400 の?) ポインタはなかなか。

#2

そういえば Cray もなかなかだったと聞いたことがあるので調べてみる。

Cray C/C++ Reference Manual: 9.1.2.2. Types

#3

あるマシンに Linux 2.6.13 を install する。

最初 make O=... として別ディレクトリで build したら NVIDIA の driver がコンパイルできなかった。

2005-09-10 (Sat)

#1

どうも DSP は word addressing が多いらしい?

2005-09-14 (Wed)

#1

郵便局に不在届を出すことが役に立つケースもあるらしい

#2

void * と char * が他のポインタよりも大きいマシンがあるという話を聞いたことがあるが、具体的にどのマシンがそうだという話は聞いたことがない。

ふと、もしそんなマシンがあったとすると、printf の %p がうまく動かないのではないかという疑問を思いついたが、しらべてみると仕様としては void * でないといけないのであった。

2005-09-16 (Fri)

#1

ちょっと切傷を負ってしまったので、キズパワーパッドを買って試してみる。

とりあえず、白くふくらむのは確認できた。

新しい創傷治療

2005-09-17 (Sat)

#1

おぉ、<URL:http://tools.ietf.org/inventory/verif-tools> から <URL:http://cvs.m17n.org/~akr/abnf/> へリンクされている。

2005-09-19 (Mon)

#1
% google-count {身,実,味,美,見,未,三,観,御,巳,魅,己,視,看,診,深,壬,箕,み,ミ}も{蓋,二,ふた,フタ}も{無い,亡い,内,ナイ,ない} |sort -n
...
1       見もフタもナイ
1       三も二も無い
1       身も蓋も内
1       身も二もない
1       身も二も無い
1       未もふたも無い
1       未もフタもない
1       巳も蓋もない
2       みもふたもナイ
2       見もふたもナイ
2       実もフタもナイ
2       実も二も無い
2       味もふたもない
2       巳も蓋も無い
2       箕もふたもない
3       味もフタもない
3       未もふたもない
4       味も蓋も無い
5       身もふたもナイ
5       箕も蓋もない
7       箕も蓋も無い
8       観も蓋も無い
9       味も蓋もない
11      実も蓋もナイ
15      ミもふたも無い
15      見も蓋もナイ
22      みもフタも無い
23      美も蓋もない
27      観も蓋もない
31      ミも蓋も無い
34      みも蓋も無い
38      身もフタもナイ
51      ミもフタもナイ
56      見もフタも無い
61      ミも蓋もない
76      未も蓋も無い
132     未も蓋もない
140     身も蓋もナイ
222     見もフタもない
257     見もふたもない
275     みも蓋もない
287     見もふたも無い
347     身もフタも無い
372     実もフタもない
448     実もふたもない
480     ミもふたもない
485     見も蓋も無い
507     実もふたも無い
510     みもふたも無い
573     実もフタも無い
761     みもフタもない
865     実も蓋も無い
949     身もふたも無い
991     実も蓋もない
1040    見も蓋もない
1230    ミもフタも無い
10700   みもふたもない
11400   身もフタもない
17200   身も蓋も無い
17900   身もふたもない
27200   ミもフタもない
97700   身も蓋もない

2005-09-20 (Tue)

#1

昨日の夜から boron の chkbuild が動いていないので調べたら、chkbuild 自体が終っていなかった。

なんか、finalize_list が無限ループになっている。

(gdb) 
Run till exit from #0  rb_gc_mark_frame (frame=0x30) at gc.c:1249
garbage_collect () at gc.c:1316
1316            if (frame->tmp) {
(gdb) 
Run till exit from #0  garbage_collect () at gc.c:1316
0x080717e5 in rb_newobj () at gc.c:393
393     }
(gdb) 
Run till exit from #0  0x080717e5 in rb_newobj () at gc.c:393
ary_alloc (klass=1076875924) at array.c:107
107         OBJSETUP(ary, klass, T_ARRAY);
Value returned is $19 = 1076875924
(gdb) 
Run till exit from #0  ary_alloc (klass=1076875924) at array.c:107
0x080d0484 in ary_new (klass=1076875924, len=1) at array.c:131
131         ary = ary_alloc(klass);
Value returned is $20 = 1076875924
(gdb) 
Run till exit from #0  0x080d0484 in ary_new (klass=1076875924, len=1) at array.c:131
rb_ary_new2 (len=1076875924) at array.c:143
143     }
Value returned is $21 = 1076875924
(gdb) 
Run till exit from #0  rb_ary_new2 (len=1076875924) at array.c:143
rb_ary_new3 (n=1) at array.c:176
176         for (i=0; i<n; i++) {
Value returned is $22 = 1076875924
(gdb) 
Run till exit from #0  rb_ary_new3 (n=1) at array.c:176
0x08073368 in run_final (obj=1075674300) at gc.c:1785
1785        args[1] = rb_ary_new3(1, rb_obj_id(obj)); /* make obj into id */
Value returned is $23 = 1076875924
(gdb) 
Run till exit from #0  0x08073368 in run_final (obj=1075674300) at gc.c:1785
finalize_list (p=0x401d7cbc) at gc.c:1002
1002            if (!FL_TEST(p, FL_SINGLETON)) { /* not freeing page */
(gdb) l
997         RVALUE *p;
998     {
999         while (p) {
1000            RVALUE *tmp = p->as.free.next;
1001            run_final((VALUE)p);
1002            if (!FL_TEST(p, FL_SINGLETON)) { /* not freeing page */
1003                p->as.free.flags = 0;
1004                p->as.free.next = freelist;
1005                freelist = p;
1006            }
(gdb) n
1007            p = tmp;
(gdb) 
1000            RVALUE *tmp = p->as.free.next;
(gdb) 
1001            run_final((VALUE)p);
(gdb) p p
$24 = (RVALUE *) 0x401d7cbc
(gdb) p p->as.free
$25 = {flags = 2051, next = 0x401d7cbc}
(gdb) p p->as.free.next
$26 = (struct RVALUE *) 0x401d7cbc

サイクルになってるなぁ。

% ruby -v
ruby 1.9.0 (2005-06-04) [i686-linux]

とりあえず Ruby が古いのはなんなので、新しくしてみた。

2005-09-21 (Wed)

#1

手元のお手製 rss2html で、各 item の dc:creator を表示するようにしてみる。

2005-09-22 (Thu)

#1
% google-count --quote PD{盤,板}
346     PD盤
343     PD板

ファイバをひくときには PD盤をつけていくが、撤去するときには外さない。

外させるには別に頼まなければならない。

2005-09-24 (Sat)

#1
% google-count {一,二,三,四,五,六,七,八,九}文字言葉
343000  一文字言葉
129000  二文字言葉
44600   三文字言葉
76700   四文字言葉
13200   五文字言葉
1250    六文字言葉
527     七文字言葉
870     八文字言葉
427     九文字言葉

2005-09-25 (Sun)

#1
% google-count ててて てててて ててててて あわててて あいててて いてててて
63500   ててて
36200   てててて
10500   ててててて
690     あわててて
1230    あいててて
18000   いてててて
#2

austin-group-l で Ruby をネタにして sizeof(FILE) の話が出ているのでちょっとメールを書いてみる。

#3

<URL:http://www.rubyist.net/~akr/chkbuild/netbsd-2.0.1/ruby-trunk/log/20050922T140801.txt.gz> の、test_scanf.rb の失敗を調べてみる。

おや、ruby_strtod に同じ引数を与えているのに返って来る値が違う?

FPU のモードが Process.spawn のあたりで Double Precision (53-bits) から Extended Precision (64-bits) に変化している?

うぅむ。根拠はないが xen のせいな気がする。

2005-09-26 (Mon)

#1
% google-count 人並みに奢れや ひとなみに{おご,ぐぐ}れや 
273     人並みに奢れや
411     ひとなみにおごれや
0       ひとなみにぐぐれや

2005-09-29 (Thu)

#1

cvs-1.12.12 が __fpending を使っていることに気がつく。

これは (ドキュメント通り) 出力バッファの検査に使っているようだ。


[latest]


田中哲