あおきにっき

ふるきあおきにっき


2/1 (金)

ソースの HTML 化その後

結局 global はやめて自作でいくことにした。そうと決めたら あっさり一日でできてしまった。Ruby ってすばらしい。じきに Hacking Guide と連動させます。

2/3 (日)

RuBBS

そろそろウェブに掲示板でもつけるかなあ、という気になったので とりあえずローカルで RuBSS を 実験してみた。簡単だ。こんなに簡単だとは思わなかった。

でもいまんとこは棚上げ先送り。だってさー、面倒なんだもん。 掲示板作るのじゃなくて、メンテが。

yacc と GC

[ruby-dev:15821] Ruby がコンパイル中は NODE を GC しないのはやっぱり alloca を使わない yacc のためなんだそうな。ということは alloca を使う yacc (これは bison と同義) で生成したコードを使えば NODE はいつ GC し てもよいということだ。ためしに #if 0 で外してみた。……問題なさそうだ。 とりあえずローカルではこれを使ってみよう。

ついでに load_file() の rb_gc() も外したら TMail のロードが けっこう速くなった。

$ time ./ruby -rtmail -e0
0.10user 0.00system 0:00.10elapsed 94%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (260major+348minor)pagefaults 0swaps
$ time ruby-1.7 -rtmail -e0
0.18user 0.01system 0:00.19elapsed 95%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (251major+331minor)pagefaults 0swaps

Bison 1.32

Bison がいつから alloca を使うようになったのか調べようと思って ChangeLog を見てみたのだが、あんまり古いほうは載ってなかった。 古いバージョンを持ってきたらあるかなーと思って Ring サーバ に行ってみたが古いのはないようだ。

が、そのとき Bison 1.32 が出ているのを発見したのでついでに入れる。 ここんとこバージョンアップ多いね。

クオート

「バカが征く」より。「’」にするか「”」にするか。うむ、たしかに おれも '\n' というのはやったことがあるな。しかし同時に

Regexp.new("\..*\z")
str = 'parse error at line #{lineno}'
module_eval <<'End'
    def #{name}( arg )
      # ...
    end
End

なんてのもやったことがあるのでこれだけでは説得されないのだ。 それに '\n' はこれまでに死ぬほどやってきたのですぐ見付けられる。

こういうのって、最初は puts してたのを後から printf に変えたり するとハマるんだよねー。ついでに、後のクオートだけ " に変えて パースエラー作ったりすることもあるよ。さらに、文字列を二つ同時に 変えて両方でそれやったりするともう……

2/8 (金)

Alpha

すでに火曜日の話ですが、中古の Alpha マシンを衝動買いしてしま いました。秋葉原で 4 万円でした。

ちなみに、アルファ社製のヒートシンクを積んだマシン、とかいうつ まんないオチではありません (でも Yahoo オークションで検索した らそっちのほうが多かったんだよねー)。今は亡き DEC の Alpha XL366、かのフル 64bit CPU Alpha 21164 を載せたマシンであります。

当然ながら手でお持ち帰りです。ところが普通のパソコンなんぞとは 格も重さも桁違いです。重かったです。つらかったです。今日は筋肉 痛です。でも Alpha のためなら耐えます。ええ。ていうか言いたい ことはひとつだけです。

ぬおおお〜、Alpha 萌え〜!!!

2/10 (日)

免許

自動車免許の最終試験を火曜日に受けにいくことを決意。 最初に教習所に行ったのが一昨年の七月だから 一年半くらいになるのかあ。

2/12 (火)

続 Alpha

そもそもなんでいまさら Alpha マシンを買うかというと、 Racc が FreeBSD,NetBSD/Alpha で落ちるという報告があったのが きっかけ。[ruby-talk:31735] から始まって [ruby-list:33547] へと飛び火し、そのあと NetBSD 関係のかたに手伝っていただい たりしつつ大騒ぎしたわけである。が、そこまでやったのに、 どうもいまだに原因が明確でない。じゃあいっそのことおれも Alpha 買ってデバッグに参戦しちゃおうかなー、と思ったのね。

最初はあくまでデバッグ用のつもりだったので「まあ 1 万くらいで 買えれば安くてもボロくても……」みたいな感じだったのだが、 あーもう、店で現物見たらだめですな。なんて言うんですか、情が 移るって言うんですかね、「マシンがおれを呼んでいるぜ!」状態で 理性が飛ぶままに購入したのであった。

いやそれでも最後の理性のカケラを拾い集めて我慢したんですよ これでも。40000 円と 58000 円と並んでたから耐えに耐えて 40000 円のを買ったんですよ。と、ここまでが 2/8 までのいきさつ なのだが……

続続 Alpha

やっちまいました。おもいきり裏目に出てしまいました。 Alpha には、パソコンで言えば BIOS にあたる「モニタプログラム」 というのがあって、それには二種類あるんだそうな。メニュー形式で NT 用の ARC と、コマンドライン形式の SRM。んで、FreeBSD にしても NetBSD にしても、SRM じゃないと起動すらできないというんですねー。

えー。まあ、だいたい予想はつくと思うんですが。40000 円のマシン Alpha XL366 には ARC しか入ってないんですね。58000 円のマシン AlphaStation 600 には当然のごとく SRM が入ってるらしいんですね。 つーことは XL では NetBSD は動かないっつーことですね。Linux は ちゃんと動くそうですが。

……返品……だめですね。保証無しでした。……交換……もだめだよね、 やっぱ。ははは……。まいったなー、やっぱフリー OS を扱うからには ちゃんと情報集めないとねー。いやいやいや。

……ぬあー、もう生活費なんて知るかっ!

真 Alpha

ということで 58000 円のマシン AlphaStation 600 5/333 です。
AlphaStation 600 5/333

くー、インストールしてえー。だが、免許をとるまでは我慢……。

2/15 (金)

サーバの IP アドレス移行

うちでは EditNet というプロバイダを 使ってるのですが、今度ここで増速をやることになりました。 それに伴い、もらってる固定 IP アドレスが変更になります。 が、ここでちょっと事情がありまして、いきなり DNS をプチッと 切りかえます。そんなわけで、来週中に一時 *.loveruby.net が 不通になるかもしれません。あらかじめ御了承ください〜。

免許

ようやく取得。三年がかり (笑)

……全然笑えないよー。

2/17 (日)

AlphaStation 600 (1) 「Alpha は PC ぢゃないんだ!」編

インストール、苦戦してます。

まずハマったのは、ARC にするとモニタが映らなく なること。ビデオカードとモニタの相性があるのか、あるいは 64 ビット PCI であることがいけないのか、理由はよくわからない。パソコン用の ビデオカードを挿すと見えるようになる。ちなみに XL366 からミレニアムを はぎとって使った。こんなところで役に立つとは!

次に、AlphaStation は匡体のフタを開けたままだと起動しない。 と書いとくとあっさりしてるのだが、上記のビデオカード交換の 途中でこれにハマったため、現実には一時間くらいのたうちまわった。

AlphaStation 600 (2) 「フロッピーの罠」編

フロッピーにカーネルイメージを入れてブート。 フロッピーの SRM デバイス名は dva0 だ。

>>>boot dva0
(boot dva0.0.0.0.1 -flags A)
failed to open dva0.0.0.0.1

……はい? いや落ち着け落ち着け。「フロッピーはよく壊れるから メディアは何枚か試せ」ってどこかに書いてあったぞ。別のメディア でもう一度。えい!

>>>boot dva0
(boot dva0.0.0.0.1 -flags A)
failed to open dva0.0.0.0.1

はァァァァー! くそー、じゃあドライブか? ドライブが壊れてるんか? とりあえず換えてみよう。ちょうど、フロントベゼルが壊れてたんで中古屋 さんがフロッピーをつけてくれたのであった。……ていうか、こうなって みるとむしろこれを知ってたからくれたという可能性もあるなあ。うう。

ドライブ交換。いくらドライブが普通だと言ってもドライブを収める箱は 根本的にサーバなつくりであるのでちょっとめんどい。がー、気合いと勘で 交換してもう一回。

>>>boot dva0
(boot dva0.0.0.0.1 -flags A)
block 0 of dva0.0.0.0.1 is a valid boot block
reading 15 blocks from dva0.0.0.0.1
failed to read dva0.0.0.0.1
bootstrap failure

おお! なんか進んだ。open できなかったのが read error になったぞ。 これはさっきの読み込みでフロッピーのほうが壊れてるせいかもしれん。 新しいディスクでやってみる。

>>>boot dva0
(boot dva0.0.0.0.1 -flags A)
block 0 of dva0.0.0.0.1 is a valid boot block
reading 15 blocks from dva0.0.0.0.1
bootstrap code read in
base = 142000, image_start = 0, image_bytes = 1e00
initializing HWRPB at 2000
initializing page table at 134000
initializing machine state
setting affinity to the primary CPU
jumping to bootstrap code
loading /boot/loader
Console: SRM firmware cosole
VMS PAL rev: 0x1000000010114
OSF PAL rev: 0x1000000020116
Switch to OSF PAL code succeeded.

FreeBSD/Alpha SRM disk boot, Revision 1.0
(jkh@jkh234.osd.bsdi.com, Wed Sep 19 18:48:30 GMT 2001)
Memory: 524288 k
/kernel data=0x31afd8+0x261b8 -

Please insert MFS root floppy and press enter:

来たぁー!

……うっ、しかしまたもや異常発生。フロッピードライブの LED が 消えねえ。これは単に LED を操れてないだけか? いいのか? 本当に 抜いていいのか?

抜いちゃった。……いきなりクラッシュとかいうことはなさそうだ。 スラッシュがクルクル回転している。し、しかし AlphaStation、 恐すぎるぜ。

AlphaStation 600 (4) FreeBSD インストール編

おっ、見慣れた UNIX のブート画面が登場したぞ。うーん、なにやら SCSI の検出に失敗しているようだ。"cable problem?" とか言われている。 これはあれだな。HARDWARE.txt にあった AlphaStation 600 固有の 問題というやつに違いない。あとで直すことにする。

しばし、インストールメニューに従って進む……。Alpha 用のバイナリが 入ってる CD を入手できなかったので、インストールメディアは FTP だ。 ネットワークを設定しましてと。このへんは手慣れたもんだ。

しまった、イーサネットケーブル挿すのを忘れてた! 途中で挿しても だめだろうねえ。……ん? 進んでるよ……。恐るべしイーサネット、 いーかげんだよイーサネット。

ファイルシステム作ってますな。なーんだ、何事もなく動いてるじゃん。 けっ、簡単じゃねーか! (これまでの苦労をサックリ忘れてるやつ)

おー、51KB/sec、速いぞ速いぞ (EditNet にしては)! がんばれー。 Minimum 構成なのでトータル 40 MB くらいだ。20 分でいくかな?

インストール完了。SRM に戻ってくるので、今度は boot dka0 で HDD からブート。

$ uname -a
FreeBSD alpha.loveruby.net 4.4-RELEASE FreeBSD 4.4-RELEASE #0: Thu Sep 20 07:48:51 GMT 2001     jkh@jkh234.osd.bsdi.com:/usr/src/sys/compile/GENERIC  alpha
$

完璧っ。

2/19 (火)

今日の作業

net/* を地道にリファクタリングしたあと、Alpha へ FreeBSD を インストールする方法に関する情報をまとめた。ただし XL のほうは まだインストールしてないので基礎情報のみ。

早くいろいろ試したいんだけど、AlphaStation はすんごくファンが うるさいので夜は動かせない。悲。

IP アドレス移行

明日か明後日あたり、サーバの IP アドレスが変わるのに伴い、 *.loveruby.net が不通になります。

2/21 (木)

今日の作業

2/22 (金)

今日の……

趣味のプログラムなのに今日の「作業」というのは義務みたいで嫌。 でも適切な代替単語を思いつかない。

net/http

net/http に URI を直接渡すインターフェイスを考える。簡単な ようで、あとのことも考えるとけっこう大変だ。その途中で 「やっぱりドキュメントが中途半端なのがすべての元凶さ!」 と悟り、書き足しはじめる。まだ途中。

1.7 の Marshal のバグ?

その途中で refe が動かなくなっていることに気付く。Marshal で ファイルに書き出してそれを読んでるだけのはずだが、 「unlinked object」と言われる。とりあえず今日は追ってる余裕が ないので 1.6 に切り換えてしのいだ。

2/23 (土)

ファミマ

新しいパンのシリーズが入荷。神戸屋なら期待できるな。 とりあえずメロンなんたらバターというのを買ってみた。

……こ、これは! うまいじゃねえか! よし、B+ をあげよう。 ヤ○ザキなど不要だ、全部こっちに入れかえなさい。

2/26 (火)

冒頭

突然 Ruby プログラムの入門書が書きたいという衝動にかられ 書きはじめた。しかしなぜか第一章の冒頭で

コンピュータの中の世界はこの世界とはかなり違う。

とやってしまったために第一章全部が機械語の解説になって しまった。失敗。

記述量 28 KB。

2/27 (水)

ほむら

最近はラーメンブームらしくカップラーメンがいろいろ出る。

少し前に「ほむら」というカップラーメンが出たのだが、これが うまい。生麺は当然として、スープが三層になっていて食べていくと 味が変わる。

しかし発売日には平積みで出ていたのに、最近フェイスが なくなってしまった。「かまど」も「青葉」も残ってるのに! やはり値段が高すぎたのだろうか (なんと 300 円近い)。

全然関係ないけど「たんたんめん」って漢字でどう書くんだっけ。

IP アドレス移行

移行終了。

そして増速!

ついさっき工事が完了した模様。めちゃ速くなった。 というかいままでが遅すぎたのだ。

to do

2/28 (木)

ファミマの新しいパンたち

このまえ買ったのは「メロンペストリーバター」だった。しっとりな メロンパンの皮の中に重厚なデニッシュ、表面に砂糖粒がふってあり、 ざっくりした触感。うまい。B+

そのまえに買ったのは「バターブレッド」。バターねりこみのしっとりパン。 うまい。B-

そして今日買ったのはブラックシュガーショコラ。黒糖パンにチョコ チップ。ややくどい感もあるが全体的に甘さが抑えぎみなので可。B-

FreeBSD on Alpha

はじめての ports。bash bison ruby gdb と一気に連発。増速の効果は抜群。

うーん……。ruby は gcc -g でコンパイルしたし、ruby と libruby.so に シンボルがあることは file/nm で確認したし、コアは取れてる。なのに スタックトレースがちゃんと出ない。なぜだー

Copyright (c) 2000-2002 Minero Aoki <aamine@loveruby.net>
This site is link free.