ようやく 7 章を送付。まだ 10 章もあるのか。 冬休みの間にせめて原稿を送ってしまいたかったんだけどなあ。 しかも今日からバイト 3 連発だ。
(16:20)
なんとか半分の 9 章まで送った。 修正後の 1〜3 章も送付。 今日 (今夜) のうちに 7 章までは直しを完了したい。
で、問題は 10 章「プロセスとメモリ」だが……。
(02:39)
おぷてろん欲しいなあ
……Hyper Transport がたくさんついてくる デュアル Opteron マシンが欲しいなあ。
最初はなぜか 1U サーバがいい感じがしたんだが、 よくよく考えると Opteron をメインマシンにして 今のメインマシンを Windows にまわすのがよさそうだ。 タワー型を狙うことにする。
しかしワークステーションになると、 ビデオカードのせいかメーカ製はバカみたいに高い。 そうなると組み立てしかない。
マザーボードは Tyan の K8W あたりか。 メモリは 2GB (512MB × 4) だと高いのでけちって 256MB × 4 にする。 Opteron はデュアルチャネルなので、 2way で最高性能にするなら DIMM は 4 本必要だ。 NIC はオンボードのを使い、 ビデオカードと HDD と光学ドライブは使いまわせばいいだろう。
げ。20 万……高い。
てか、そもそも金ないし。
(04:56)
ああ、また ruby-talk で 「Ruby のドキュメントは日本語ばっかりで読めねえんだよバカヤロー (意訳)」 とか言われてるよ。頼むからいいかげんにしてくれ。 もうドキュメントの分量で言や英語のほうが圧倒的に多いんだよ。 でもって ruby-list は要約して流すほど量もないし実もないでしょうが、 ruby-dev は ruby-dev summary やってるでしょうが。
(16:27)
すみません、 ruby-dev:125733 とかいう妙な番号を登録してしまいました。 ruby-talk の間違いです。 正しいほうで登録しなおして fix しました。
……というようなことは、どこに書けばよかったのだろう。
(03:28)
■ 桑島 [ちなみにメーラは何使ってるんですか?]
■ 青木 [古いMewです。スレッド表示も未読管理もできないやつ。]
■
桑島 [BSDユーザなんでしたっけ。
Linuxでしたっけ。
どちらにせよOSが最近のバージョンならSylpheed入れてとりあえずスレッドビューアとして使ってみるのもいいんじゃないでしょうか。]
■
makoto [多分 mew を新しくするだけでいいのだと思うけれど、
そこはやはり Wanderlust]
■ zunda(レビューはYahooのヘタレ) [muttに移ってviでメールを書くのだ!(なんちて]
■
青木 [真面目に乗り換える余裕がないので
とりあえず Sylpheed をコンパイルしてみました。
意外にもあっさり動いてくれて驚きです。
けっこういいですねえ Sylpheed。]
10 章、書きすぎた……。 いつのまにか 26KB になってる。
いやー、ちょっとね、 malloc の話の枕としてメモリの話を書いてたら、 知らないうちに仮想メモリの実装から mmap までいってた。
(04:25)
今日はプロセスの章と、できればシグナルの章も送ってしまいたい。 もしかしたらプロセスの章を二分割して三章同時に送るかもしんない。
このへんは直すところが少ないから楽だなあ……。 というか 10 章が多すぎだったのだ。 加筆訂正どころじゃないっての。
それにしても、やっぱりレビューしてもらうと書きやすい。 具体的な意見があると迷ってたところを決断するのが非常に楽だ。
(09:04)
昼は冷凍うなぎにしよう。 ついでに梅干しつけよっと。
あれ? うなぎと梅干しって食い合わせが悪いんだっけ。 調べてみると、そうでもないようだ。
「うなぎの梅しそ寿司」なんてレシピもあるな。
結論だけ言うと何も問題はないらしいので食おう。うなぎと梅干し。
そういえば、うなぎってどこでとれるんだろ。 川? 海? 湖?
海で生まれて川で育ってまた海に戻るらしい。
(14:28)
http://www.ipa.go.jp/jinzai/esp/2004mito2/gaiyou/6-6.html
CLIを実装する次世代オペレーティングシステムの開発
(笹田さんの日記より)
やられた。 まさに同じことを考えてたよ。こっちは Ruby だけど。 こないだから飲み会に出るたびに OODB とかスレッドとか言ってたのも、 Alpha のアドレス空間を調べてたのも実は全部それがらみ。 NetBSD と ruby をひっつけてストレージは全部 OODB、 プロセスなしで全部スレッド、という感じにしたかった。 見れば見るほどよく似てるなあ。
たぶんちょっと違うことを考えてたのは次のような点か。
前者は手軽に試せるようにするため。 後者は単に手間を減らすため。 もともとの動機は「Alpha で動く OS 書きたい」で、 そのときはスクラッチから書こうと思っていたので、 とにかく手数を減らしたかった。 それでもシリアルが入ってるのはもちろんシリアルコンソールのためだ。 本当は telnet のみってのも考えたんだけど。
ちなみに、最初はストレージすら使わず、 すべてオンメモリにしようかと思っていた。 必然的にメモリ容量がそれなりに必要になるから、 まともに使うには 64 ビット環境が必須だ。 しかし手軽に試せるようにするためには IA-32 は切れないので、 メンテの手間も考えた結果 IA-32, AMD64, Alpha にしぼった (それでもやっぱり Alpha は入る)。 Opteron 欲しいなーとか言いだしたのも実はそのせいだ。
あと最近考えてたのは、 どーせすぐに流行ったりしないんだから YARV とか M17N とかの不安定な部分をドカドカ放り込んで Ruby の仕様実験場みたいにしようかってこと。 もはや最初のアイデアからはどんどん離れる一方だな。
くそー、名前も決まったし、 テスト専用の Alpha と IA-32 も用意してたのに……。 俺は作ると言って作らなかったものが多すぎるので、 今年一年かけて形にしてから表に出そうと思ってたんだけど、 甘かったか。
まあ、こういうアイデア自体は昔っからあるけどさ、 Lisp machine とか Smalltalk machine とか。 GUI とファイルシステムを捨てて、 マシン全体を強制的にオブジェクトの塊に しちゃうっていうところがちょっと独特なところかな。
あ、まだ作るとは決まってないですからね。 Ruby OS キター! とか叫ばないでくださいね?
(00:11)
■ さかい [Ruby OS キター! (お約束)]
■ ささだ [メモリ管理誰がどうするつもりでした? 物理=仮想で突っ走るのかな。デバドラも ruby で書きますか。]
■
shiro [OSKit + PLT Schemeってのがありましたね。5時間で作れたそうです。ファイルシステムはオンメモリのみとか言ってますが。
http://lists.tunes.org/archives/lispos/1998-December/002514.html
OSのディテイルに時間をかけたくないのなら、こういう手もありなんじゃないでしょうか。]
■ ささだ [あー、いいっすねー>Scheme Machine の記事。私も OSKit 使ってほげほげしてみようと考えてました。]
■
青木 [5 時間は凄いですね。
これはお手軽そうでいいなあ。]
つっこみより。長くなったので本文で書きます。
> メモリ管理誰がどうするつもりでした? > 物理=仮想で突っ走るのかな。 > デバドラも ruby で書きますか。
そりゃ普通に C で。 Ruby でなんでもやる気はないんで、ドライバも C で書きます。 じゃないとドライバが再利用できないですから。 Ruby ではアプリケーションだけ書ければ十分でしょう。
仮想アドレスも使います。 というか Alpha だと仮想アドレス必須なので動かすしかありません。 それに OODB を実装するには仮想メモリ機構がないときっとやりにくいだろうし。 ユーザモードに移行せず、 全プロセスのアドレス空間が共有される UNIX、 と言ったらイメージが伝わるかなあ。 で、全プロセスでシングルスレッドの ruby が動いてる。
まあ、あるていどやってみないことには、 うまく融合できるかどうかはよくわかんないね。 とりあえず現状では実戦経験がゼロに近いので、 細かいところをつっこまれてもなんとも言えません。 この企画はもともとアーキテクチャの勉強をしようってところから 始まってるので、失敗してもいいです。うまく動いたらめっけもん。
まあでも、どうせなら実用になってくれるほうが嬉しいので、 実装コストはできるだけ下げて、 うんざりする前に version 0.1 が出せるように考えてます。
ただ、どっちかというと問題はカーネルよか ライブラリじゃないかと思うんですけどね……。 アプリケーションをまともに作るとしたら画像処理ライブラリなんかも必要だから、 libpng とか libjpeg とか、その他もろもろを全部移植しないとならない。 特にファイルシステムがないことで いろいろひっかかりそうな予感がします。
(05:09)
あー、ちなみに、「Ruby 言語仕様」を作ったのは俺です。 従ってあれが中途半端になってるのも俺の責任です。 それだけははっきりさせておこう。
放置されている理由はいくつかありますが、挙げておくとこんな感じかな。
が、他のどこにも行きようのないセキュリティレベルの話とかがあるので、 全部消すわけにもいかず放置されているというわけです。
今年はバッサリとドキュメント全部書き直すのが目標なので、 そのついでに「Ruby言語仕様」も変更されるでしょう。
(04:29)
しまった! 寝過ごした! 02:00 くらいに流す予定だったのに。
うーむ、httpd の章は確か微妙にコードが同期してないんだよな。 しかたない、流すのは午後にしよう。
つくづく思うんだが、 レビューやるなら全部完成してからにするか、 もっと時間に余裕のあるときにすべきだった。 この日程はあまりにレビュアーに申し訳ない。
(09:14)
賽の河原という単語を思い出した。
やはり Alpha はいいね。暖房には欠かせないよ。
Alpha と言えば、 メモリの空きを MB 単位で表示するコマンドを書いたんだが、
tunami:~ % free Total 1536.0 Managed 1480.0 Free 1248.2 Used 231.8 UBC 80.7 Wired 94.4
メモリ 1.5GB のうち 1.2GB は空いていることが明らかになったのであった。 無駄すぎ〜。
(12:22)
なんと手作りのハムをせしめたので貪り食う。 ちゃんと燻されたにおいがするし、 「はあ? 健康? なんですかそれ?」な感じの強烈な塩味がうみゃい。
原稿が追い込みにかかってるせいで 話題が食べ物ばっかりだな。 食ってるとき以外は原稿を見てるということか。
(20:47)
■ ただただし [期限切れになったものはすべて食べてみるんじゃないのか……]
■
青木 [明らかにカビてるとちょっとねー。
「目に見える変化がないけどこれはやばいかも……」
っていうドキドキ感が重要なんですよ!]
■ kjana [「何かこの大根、黒っぽくなってきたけど味は大して変わらないからいいや」とか「ちょっと毛が生えたこともあったし微妙にぬめぬめしてるけど、生姜なんて大量に食べるわけじゃないしね」とかで食べてしまうものではないんですか?]
■ はら [カビの生えた餅は、削って食べるものです。]
■ dan5 [うちも餅の青いカビは包丁で軽く削って食べてましたね]
■
青木 [未熟者ゆえいまだ期限切れ道を
極められていないようです。反省。]
みなさんのご支援のおかげをもちましてとりあえず脱稿できました。 ありがとうございました。
……ま、作業はまだまだ続くんですけど! なーんか忘れてるような気がするしな。 最後にあせっていろいろ追加したからきっとバグってるだろうし。 これまでの経験と勘がそう言っている。
(00:22)
■ 一読者 [おめでとうございます!お疲れ様です]
■ ささだ [お疲れ様です.]
■ ksaito [レビューアに立候補したくせに何もコメントしませんでしたが(ごめんなさい)、内容の濃さとそれを引っ張る文章に感服しつつ、とても勉強になりました。発売を楽しみにしています。]
■ 結城浩 [お疲れ様です(^_^)。]
■ 安達 [ご苦労様でした。今度はもう1本Rubyの本をお願いします。]
■
noritada [お疲れ様でした。
最後に色々と突っ込んでごめんなさい。]
■
makoto [参加して良かったです。予想通り、教わること多し。
お役に立てなかった分、本を買って埋め合せ :-)]
■
青木 [どうもありがとうございます。
おかげさまで、なかなか面白い本になりそうです。
レビューでは意外なところに対する意見も多くて、
こちらも勉強になりました。レビューについて
ノウハウとか意見もできたので、どこかでまとめて
いきたいと思ってます。]
■ noritada [あれ? 2005じゃないのでしょうか?]
■ 青木 [_| ̄|○]