青木日記

<前月 | 最新 | 次月>

2002-12-01

季節外れの

祭りの予感。本当に御苦労様です。

(00:36)

ほん

明日は本を買いに行こうっと。

そういえば明日は RHG の見本誌が出る日だっけ。

(01:22)

大阪オフ、行きたいけど金と時間が無理っぽい。 12 月か 1 月にあるかもしれない福岡オフなら乱入できるかもしれない。

(01:35)

本日のツッコミ (全4件)

たむら [自サーバだと、その手があるか!!
本当に福岡来れるのなら、うれしいな。
# たぶん1月でしょう。]

(う) [福岡行くなら、途中下車して大阪にも寄って下さい〜 ^^;]

あおき [どこだろうと殴り込みますよー。]

あづみ [おお、お待ちしております〜〜]


2002-12-02

GHC リベンジ

せっかく glibc 2.2 になったことだし、 やはり GHC を試さねば。 バイナリを取ってきてブートストラップする。 バイナリのインストールは ./configure; make install で何事もなく終了。 しかし…。

~/s/src/tmp/ghc-5.04.1 % ghc --help
/usr/lib/ghc-5.04.1/ghc-5.04.1: error while loading shared libraries: libreadline.so.4: cannot open shared object file: No such file or directory

むむ。

~/s/src % ls /usr/lib/libreadline.*
/usr/lib/libreadline.a   /usr/lib/libreadline.so.3
/usr/lib/libreadline.so  /usr/lib/libreadline.so.3.0

readline が古い。 これはいつも通り ring サーバから取る。 これのインストールは簡単だからどうでもいいとしよう。 他にはなんか足りないものはないだろうね。

~/s/src % ldd /usr/lib/ghc-5.04.1/ghc-5.04.1
        libdl.so.2 => /lib/libdl.so.2 (0x40019000)
        libreadline.so.4 => not found
        libncurses.so.5 => /usr/lib/libncurses.so.5 (0x4001d000)
        libm.so.6 => /lib/libm.so.6 (0x4005d000)
        libc.so.6 => /lib/libc.so.6 (0x4007e000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

readline だけのようだ。

そういえば libreadline ってどのくらい使われてるんだろ。 ついでなので依存チェックをしてみよう。 EPERM が出たりもしたけど邪魔なので消してある。

~/s/src % for i in /bin/* /usr/bin/* /usr/local/bin/* ~/bin/*
for> do
for>     (ldd $i | grep -q libreadline) && echo $i
for> done
/usr/bin/ftp
/usr/bin/gofc
/usr/bin/gofer
/usr/bin/pl
~/s/src %

ftp なんて入ってたんだ (ヲイ)。 pl ってなんだっけ。SWI-Prolog だった。 gofer はあれだな、Haskell の親戚だ。 gofc はそのコンパイラ。

readline は何も考えずにサクッと入った。

やっと GHC がコンパイルできる。 しかし欲を出して autoconf かけなおしてみたりして失敗した。 configure がなんかわけのわからんエラーになって止まる。 しかたがないのでアーカイブから展開しなおしてコンパイル。

~/s/src/ghc-5.04.1 % CC='gcc -pipe' CFLAGS=-O2 ./configure --prefix &> log.conf && make &> log.make && echo OK

コンパイルするのは ghc なのに、ついいつものクセで CC と CFLAGS を指定してしまう罠。 意味ないじゃん。

それにしても make にやたらと時間がかかる。 こんなに遅いのは最近めったにないなあ。 かつて 486 のマシンで libc をコンパイルしたときと 同じくらい遅いのではなかろうか。

ぐわっ! ar が! 最後の ar がめちゃくちゃ重い! なんかプロセスサイズが 300MB になってます (物理メモリ 256MB)。

今度は gcc が動き始めた。いったい何をやってるんだ。

また ar か。

二時間たってもまだ終わらない。

(07:20)

GHC リベンジ (2)

やっとコンパイル終わった。

~/s/src/ghc-5.04.1 % sudo make install &> log.inst && echo OK
OK
~/s/src/ghc-5.04.1 % rehash
~/s/src/ghc-5.04.1 % ghc --version
The Glorious Glasgow Haskell Compilation System, version 5.04.1

うーん、本当に自分でコンパイルしたやつなのか、 見ためにはわかんないのが残念だ。

というか、もうバイナリがあるのにわざわざコンパイルして どうするのか 30 分ほど問い詰めなければならないかもしれない。

(07:41)


2002-12-03

RHG

Ruby Hacking Guide 見本誌キタ―――――――――――――――!

ありゃ? 522 ページにしては意外と小さくて薄くて軽いな。 Ruby 本のときはすんげえプレッシャーを受けたものだが。 同じくらいのサイズの本を探すと、

  • UMLユーザガイド
  • Apacheハンドブック (第二版)
  • リファクタリング

てなとこかな。 でもって『UNIXネットワークプログラミング』vol.2 よりはちょっと薄い。

(13:20)


2002-12-04

堕落な生活再び

起きたら 8 時だった。

……夜の。

(00:06)


2002-12-07

あぼーん

あぼーん

(05:00)


2002-12-08

RHG

げっ。 もう届きはじめてる?!

実は RHG の中身はウェブで公開する予定なんですが、 まだ準備ができてないんです〜。紙だけでやっちゃった校正を とりこまなきゃいけないし、HTML 化も完全自動までは行かないし (特にテーブルが問題)。 うーん、うーん。とりあえず文面だけ修正してごまかすか。

RHG 読書会って……。 ぼくも行っていいですか? (^^;;;;

でもその場でボロボロ間違いが出てきたりしたら泣くに泣けない罠。

(13:03)

ruby-dev summary

しまった! 夕方出すとか言っておいてまた忘れてた! 急いでやんなきゃ。

(13:12)

EPS → ビットマップ

RHG の図は EPS で書いてあるのでなんとかして jpeg か png にしないといけない。 convert (ImageMagick) で変換できるけど、できあがりが小さすぎる。 いろいろやった結果、

convert -density 144 ch_yacc_yaccvars.eps tmp.jpeg

とすると縦横二倍の jpeg ができるようだ。 -density は解像度を変えるオプションで、 デフォルトの解像度は 72dpi なので 144dpi にすれば倍になるという仕組み。

ぐは、FAQ に載ってるし。マジですか……。

むむ、どうやら

convert -density 288 -geometry 50% ch_yacc_yaccvars.eps tmp.jpeg

とすると高解像度でマップしてからアンチエイリアス付きで 圧縮するのでもっとキレイになるみたい。 つーか最初から AA オンでマップすればいいような気がするけど。

(19:20)

がーん

牛丼の吉野家はイエなのか?!

(19:54)

本日のツッコミ (全3件)

すぎむし@家 [まさか本に!? > 屋
summary校正でっζあげまιた。]

あおき [なんで RHG に吉野家が出てくるんですかっ (笑)]

なかだ [YBBOP拡張ライブラリとか。]


2002-12-09

RHG

早くも買ってくださっているかたが何人かいらっしゃいますね。 どうもありがとうございます。期待に沿えるとよいのですが。

近いうちに掲示板も作りますけど、とりあえず何かあったらここにでも 書いちゃってください。

さて……

ひとこと言いたい。

なんでおれが出かける日だけ雪が積もってるんですか!!

もう三週間くらい 1km 圏内で生活してんのに! どうして今日だけ! 今日だけ!

(07:12)

けんぽん

今日はインプレス行って RHG の献本を発送してきました。 27 冊もあるとさすがに大変です。 しかも帰りは自分の分 3 冊を合わせて 7 冊お持ち帰りです。 重いったらありゃしない。

あ、そうだ。サインつきの方、ごめんなさい。 わたし、メチャクチャ字が下手なんです。

(18:44)

本日のツッコミ (全6件)

Yuya@東京 [なんで東京はこんなに寒いのでしょう・・・。早く福岡に帰りたい。きっとRHGがオレを待っている。:-)]

たむら [どんな字体なのか、楽しみ :)
なぐり書いたような漢字4文字なのか、逆にさらりと流暢なのか。]

kjana [あれで「下手な字」といわれると,私の手書きなんて読めません.
....っていうことで,届きました.ありがとうございます.

build test のと謝辞とで表記が違うのは何でだろ,とか言って
みたり :-) 別に構いませんけど.]

rcn [http://diary.oyt.jp/~draft/rd/20021210b.rd に、目次を見たときの感想を書いてみました。本当は、読んでから書きたかったんだけど、あまりに、つぼにはまってたので、勢いで書いてしまった。
もしよろしければ、覗いてみてください。]

Yuya [MLにも流しましたが、私も先ほど届きました。ビルドテスト環境と謝辞で名前が違うのは、私だけではなかったんですね。安心。]

Yuya [第2章85ページ「true false nil」:trueは真、falseは偽の代表的な値。とありますが、代表的な値なのはtrueでは?]


2002-12-10

Ruby

この日記って本当に Ruby ネタ少ないっすね。

というわけでたまには Ruby プログラムでも書いてみようかと思いました。 お題は笹田さんの日記 ( http://www.namikilab.tuat.ac.jp/~sasada/diary/200212.html#d10 ) に載ってた「ハッシュの中身を値で降順にソートして出力」。 キーは文字列、値は整数限定で。

# require: ruby 1.7
table.to_a.sort_by {|k,v| -v }.each do |k,v|
  printf "%-40s: %d\n", k, v
end

キーを軸にソートするなら table.keys.sort とするかもしれない。 値を軸にするならいったん配列化するのは避けられないかな……。

sort_by は「1.7 のいい感じな機能」の一つですね。 1.7 のメソッドで注目したいのは Array#sort_by, Enumerable#inject/reject/select, String#slice(re,n)、 てなとこでしょうか。こいつらは実に便利です。

ちなみに 1.6 ではどうするか。1.6 にないメソッドは使わない、 というのでは損です。文法レベルの機能欠落ならどうにもなりませんが、 メソッドの一つ二つ程度ならよいほうに合わせてしまうのがいいと思います。

unless [].respond_to?(:sort_by)
class Array
  def sort_by
    list = []
    each_with_index do |i,idx|
      list.push [yield(i),idx,i]
    end
    list.sort.map {|tmp,idx,i| i }
  end
end
end

こういうことをやるときは map_with_index (あるいは Iterator) が欲しくなる。

(11:49)

飲み会上等

3 日連続だろーが 4 日連続だろーが。

(11:49)

RHG

はつばいびー! いえーい。

HTML 版はまだ準備できてないよー! いえーい。

(11:51)

lib

library じゃなくて libretto L1 ですけど。 ちゃんとシャットダウンしたはずなんですが、 起動したらいきなりスキャンディスクが始まりました。 これはなんかの前兆でしょうか。

つーか今年はどうしてこんなにハードディスクに苦しむのでしょうか。 通算三台もクラッシュしてるんですけど。 Alpha の二台目も今にも飛びそうだし、CDR 焼きマシンの HDD も挙動不審。 これで libretto まで飛んだら洒落にならない。

(12:16)

Windows Update

少し前に Slashdot jp で「Windows Update を強制に」 ていうトピックがありましたけど、あれって Me でもそうなんですね。 数日前に Windows Update を (手動で) かけたんですが、 その後、タスクトレイに変なアイコンが入ってて、 重要パッチを自動であてるようになってました。 いや、ダウンロードだけして、パッチあてる前に確認だったかな? 方法は三種類くらいから選べるようになってたと思います。

つーわけで速攻でオフ。あんなもん勝手にやられてたまるかよ。 なにより気にくわないのは、アップデートされることよりも、 こっちの動作と非同期だってこと。こっちが文章書いてようが ビデオ見てようが、いきなり最前面にポップアップしてきやがる。 そういうことされると集中力が切れるんだ。

でもまあ、強制アップデート自体はいいと思うんです。 手動でオフにできるんなら別に構いません。 「ちゃんと動いてくれるのならば」、 セキュリティパッチなんかは勝手にあててくれるほうが 楽でいいんじゃないですか。

(12:29)

本日のツッコミ (全7件)

なかだ [あ、先に書かれてた…。
Enumerable#sort_byなのでto_aは不要では。]

あおき [ぐお、sort_by って Enumerable でしたっけ。
やはり一発 refe すべきだった。]

あおき [つーか、Enumerable#rejectとかselectは1.6にもあるじゃん。
だめすぎ。]

ささだ [はじめまして。読んでたらお茶を吹いてしまいました。RHG早く欲しいけど、買うと卒業できないのです。多分。]

なかだ [届きました。ありがとうございます。

p.482, /これが排他ロックになってなっているわけだ。/s/(なって)+/\1/]

あおき [ありがとうございます。ぼくも今もう二個みつけました。がーん。]

matz [s/ナーバス/ナイーブ/ってミスがありましたよ。]


2002-12-12

RHG / サポートサイト

第一部を公開しました。

http://i.loveruby.net/ja/rhg/

ページにも書きましたけど、初校をそのまま使ってるので間違いがいっぱいです。 なにしろ初校では 1000 個所くらい直しましたから。

RHG / 間違い探し

再掲します。

> ■ Yuya『第2章85ページ「true false nil」:trueは真、 falseは偽の代表的な値。とありますが、代表的な値なのはtrueでは?』

うぅっ、これはですね、 「それぞれtrueは真の、falseは偽の代表的な値」 のつもりだったようです。バグリストに追加しておきます。

> ■ matz『s/ナーバス/ナイーブ/ってミスがありましたよ。』

第 4 章「クラスとモジュール」p.128 後半 「しかしこの表現はあまりにナーバスにすぎる」 → 「しかしこの表現はあまりにナイーブにすぎる」

ですね。追加します。

個人宛でも一ついただきました。ありがとうございます。

しっかしハイペースですね。 あと一週間くらい校正に専念すべきだったかなあ……。

(05:57)

RHG / 掲示板

RuBBS で専用掲示板を立てました。

http://i.loveruby.net/bbs/rhg.html

(07:22)

本日のツッコミ (全2件)

こさこ [RHG掲示板に書いたけど表示されない。ここに書きます。
p74, 図1.11ですが、探索順序が違います。最も外側のObjectクラスは、一番最後(7番目)に検索します。]

あおき [ありがとうございます。リストに追加しました。
まさかこんな初歩的なミスが残ってるとは……。]


2002-12-13

あ、

13 日の金曜日だ。 だ……だからどうした。 た……たまたまそうだったんだよ。 よ……よかったね。 ね……ねこいらず食わせるぞ。 ぞ……ぞっとしないなあ。 あ……あほんだら。 ら……来週に続いちゃう。

う……うっそーん。(完)

(10:52)

本日のツッコミ (全3件)

Yuya [13日の金曜日か・・・よっしゃ。RHGの誤字を沢山みつけたる!(笑)]

rcn [仕事中に RHG を読んでいて、ついうとうととして、同僚に怒られた。
やっぱり 13日の金曜日だ。]

あおき [ま、まだいっぱいありますね……>誤字]


2002-12-14

やばい

寝すぎた。

(20:12)

RHG 打ち上げ

内輪の打ち上げに行ってきました。参加者は席順に

  • artonさん
  • sakazuki さん (RDEの)
  • 新井さん
  • 堀川さん
  • 青木
  • 某氏

の 6 名でした。

記憶に残っている話題。

  • 青木は渋谷で一時間迷った (高校のときは渋谷で遊んでたんですけどねえ)
  • 他の人も迷いかけたらしい。
  • るびきちさんは結局来なかった。迷ったか
  • 本買ってる?
  • 月に 2 万くらい
  • RHG は Amazon の瞬間風速で 80 位を切ったらしい (そのわりに総合順位は低いね)
  • 誰が買うんだろう
  • 大学生協に置いてくれんだろか
  • この前に出た言語処理系の解説本は Pascal? (SICP 第二版を別に考えるなら Scheme か)
  • 英語ならたくさんあるのに。どうして?
  • RHG は Ruby を知らない人にとってはつまづきそうなところがかなりある
  • 題名は C を前面に出したほうが末長く売れたかも
  • あと 30 ページと、一週間あればなあ。
  • そうしたらきっと「あと 20 ページと二週間」だろう
  • ソースコードの読みかたに関する話では細かいことを書きすぎた。現実にはもっと大雑把にアーキテクチャをつかむ能力が重要。
  • じゃあそれでもう一冊 (笑)
  • しかし字が細かいね
  • 通常サイズで組むと余裕で 600 ページ超えるので……
  • もうちょっと組版を工夫してくれてもいいのになあ
  • 図は青木が EPS で書いたのがほとんどそのまま出てます
  • ちなみに tgif で書きました
  • しかしRuby本はたくさん出たな
  • こないだ出たeRubyの本って誰が書いてるの?
  • 今度はもうちょっと厚いのが書きたい (堀川さん談)
  • じゃあ RHG ができなかった 600 ページ越えを是非。
  • 文庫サイズで 600 ページ? (立方体型)
  • リスト読みづらそう〜
  • リストは横にすればなんとかなるかも
  • そういえば Ruby de CGI はなぜ「編著」なんだろう
  • 正誤表に載っています
  • 食いものがどれも辛い
  • Windows で ruby を使おうとして迷った (インストールまでがよくわからない)
  • 当然コンパイルするもんだと思ってれば迷わないよー
  • ウェブサイトの一覧性がイマイチなんでないか (裏で改造が進んでるらしいよ!)
  • ついでにもっとカッコいいと嬉しい
  • ああいうのは誰かが力まかせにやんないとだめだろう
  • トップページはテキストなのに「skip」をクリックするとテキストをスキップして Flash のロゴが出てくるってのはどうよ
  • Ruby は日常作業でよく使ってる
  • Rubyist にはプログラマが少ない? そんなことはないようだ。
  • Rubyist は煙草を吸わない? 信憑性がなくなってきた。
  • Rubyist は若い? それはないな。
  • 今日は年齢 20 代から 30 代、40 代まで幅広い。10 代がいないのが残念
  • 1 の桁を切り捨てればみんな同じさ……
  • Yuya さんはニュータイプっぽい
  • コーヒー粉末沈殿トラップ
  • すにふぁ
  • Windows でカーネルモードドライバをダイナミックロードすると〜〜〜
  • 雑誌買う? 今日買いました。
  • PostScript 萌え (青木)
  • 手書きはちょっとな
  • おハガキ.com
  • フィオリーナ買おうかな (年賀状のためにインクジェットプリンタ買おうかな、の略)
  • なんで CEO の名前? 「ゲイツ OS」みたいなもんだろう
  • Prolog は謎だ!
  • 関数型 / 論理型言語の時代は来るのか
  • Java じゃない
  • Java いいじゃん
  • C# の仕様は言語処理系作る人間のことは考えてないな
  • 一番多いのはいまだに COBOL
  • 第 7 カラムの美学が
  • 80 桁パンチカード
  • 紙テープ
  • 円周率 1 兆桁
  • メモリ 4TB
  • メインフレーム?
  • 日立は 30 年計算し続けて今発表したのだ。日立ならやりかねん。

ドキュメント関係。

  • やっぱリファレンスは CVS に入れよう
  • 1.8 が始まったら「1.7 feature」みたいのはどうなるんだ
  • 新井さんはむしろ RD の限界に困っているらしい。
  • じゃあフォーマットはどうする
  • 放置されている「言語仕様」をどうにかしなさい。どうにかします。というかあれは「文法」にマージして、「文法」の題名を変えるだけにするのがいいと思う。
  • チュートリアルとユーザガイドを今風のコーディングスタイルに直したい
  • ruby-doc 読んでる? 読んでない。合議制は 99% 失敗する。そんな暇があったらなんか書け。

以下はドキュメントに関して個人的な意見。

  • まずセントラルレポジトリは CVS で決まりだろう
  • RD で出版品質にもってくのは不可能
  • RWiki に入れてると一括操作がしづらいため、品質を落とす間接的な原因になっている。
  • ログっぽい脚注はやめて CVS のログにしたほうがいい
  • テレタイプや変数の指定は邪魔。書式に制約を付けて自動検出させたほうがいい。
  • XML は嫌。RD のインラインエレメント以上に可読性が低い。

「そういう情報は ML に流せよー」ってのもありますが、 ちょっといま立てこんでるもんで勘弁してください。 落ち着いたら関係 ML に流していきます。

(20:16)

『プログラミングRuby』の牙城がついに崩れる

いま Amazon で ruby を検索すると RHG が 1 位だよ〜

(20:17)

KISS

http://japanese.joins.com/html/2002/1209/20021209223203100.html

KISS 原則ってマクドナルドの戦略用語だったの?

(20:27)

RHG

akr さんから 60 点以上もの間違いの報告が。 マジですか。そんなにあるんですか。 特に LEXPOP と RVarmap の間違いがヤバすぎる。 泣きそうです。

(01:11)

本日のツッコミ (全7件)

akr [まぁ、間違い以外も混ざってますから。

とはいえ、気になるけれど書かなかったことがまだあるのも事実ではあります。
コピーGC でメモリが倍「以上」必要になるのはどんな場合かとか、
Ruby には ++ はないんだから「あまり使わない」のが理由なのは変だろうというかそもそも使うことがあるのかとか、
T_infix のようにまとめると優先順位が扱えなくなるから shift/reduce conflict が解決できないだろうとか...

思ったことは本に書き込んであるし、読書会での質問のネタに困らないかも知れない。]

なかだ [RHG読んでてmemory leakに気づきました。]

rcn [RD で印刷品質まで、上げるのは、無理そうですか。
なるほど。
私は、自分のサイトで、直接 RD を表示するようにしました。
その用途には、必要十分と、思っています。
Ruby/SVG 本の原稿は RD を使う予定です。
P.S. 知り合いから「無道編」をもらいました。gcc のソースと格闘していた頃を思い出します。]

たかはし [「たのしいRuby」でも原稿はRDでしたよ〜。
版下は専門の方にお願いする場合、RDでもなんでもいいような気がします(本気で出版品質を考えるなら、執筆者(組版の素人)は版下に手を出さない方が無難)。]

Yuya [なぜ私の名前が話題に・・・。ニュータイプってなんじゃらほい。]

arton [ニュータイプ->竹内さんの「新人類」発言をひっぱてるんです。]

arton [って言うか、ららぁとか知らない?]


2002-12-16

RHG

RHG の 16 章に致命的な間違いがありました。 詳細と訂正は今日か明日にはサポートページに掲載します。 読者の方々には深くお侘びいたします。申し訳ありませんでした。

RD

『たのしいRuby』は RD ですか。 インライン指定とかもそのまま使いました? RD の範囲を超える指定はたぶん手作業 (で伝達) ですよね。 索引は編集の方に頼むことになるのかな。

(14:21)

黒い本

あああ、そうか、RHG も黒いんだった。いや、なんかもうここまで悲惨な 間違いがあると手放しでは勧められないけどさ……。 なんかもう、書かないほうがよかったのかなあ、と悩んでるところです。 こんな間違い入りで出版してるんじゃ、もう他の本に関してなんだかんだ言えません。

(14:49)

間違いの少ない本を書くには

鬱になってるだけでは意味がないので再発防止策を考えることにした。 ただしここで考えるのはコンピュータ関係の専門書に限定する。

RHG に足りなかったものは二つある。

  • 時間
  • レビュア

まず時間。とにかく時間が足りなかった。 明らかに執筆時間の短いところに間違いが多い。 それも致命的な間違いが多い。

今回、執筆期間は約半年であったが、恐らく、あと一ヶ月使うべきだった。 進行が遅れていることを早めに察知して早めに締切をのばしてもらえば十分に可能だ。 だが今回は遅れていることを理解するのが遅すぎた。

ついでに言うと筆者の金と精神力が尽きかけていたのも締切が延ばせなかった原因である。 金はなんとかなったと思うが精神力が尽きたらどうにもならない。これを補充するには、 読んでもらって感想をもらうのが最もよい。とにかく「書いてばっかり」はよくない。 特に他に何もしないで書き続けるのは最悪である。徹夜や休日を無視するのもよくない。

次にレビュア。たとえばの話、出版前に akr さんにレビューしてもらえば 致命的な間違いはほとんど潰せたであろうことは明らかである。プログラムと同じで、 本も一人で書くのは無理がある。 できればその範囲に関して筆者を超える能力を持つ人間複数に査読して もらうのがよい。そのためにもやはり全体を書き終わってから一ヶ月は 余裕をとる必要がある。

また、レビューをしてもらうときはボランティアではなく、きっちり金を出すべきだ。 でないと確実に読まれていることを保証できなくなるし、双方に遠慮が出る。

最後に、間違いが多くなった RHG 独特の理由として、 ruby のソースコードにリアルタイムで追従していたという点が挙げられる。 書きはじめたのが 4 月であるのに対し、対象ソースコードは 9/12 バージョンだ。 普通に書いたのではこういうことはできない。 最初は 4 月のソースコードを見ながら書いて、 9 月に入ってから一気に全体をアップデートしたわけだ。 そのために原稿のフォーマットを工夫し、 ソースコード引用だけをインクリメンタルアップデートできるようにしてあった。

だが当然それでアップデートできるのはソースコードだけで、 解説は手動で直さなければならない。文章中で前後を参照しているときは そちらも直さなければならない。つまりバージョンフリーズの 9/12 から 締切までの短期間に相当な負荷がかかることになる。 事実、この時点で間違いが数点混入している。 たとえば mvalue_to_svalue() のあたりの間違いはこれが原因である。

この問題の対策はあまり考えられない。早めにバージョンを固定するしかないと思われる。 だが RHG の性格を考えると 1.6 を使うことはできない。 つまりこの点もやはり時間をもう少し使うしか解決法はなかっただろう。

結論。まずなによりあと一ヶ月締切をのばすこと。 そしてその間に再度のセルフチェックと有料のレビューを行うべきであった。

ちなみにこの方法でできるのは間違いの少ない本であって、良い本とは限らない。

(18:01)

補足

この内容ではまるでレビューをしてもらったかたが悪いように読めますね。 申し訳ありませんでした。決して読んでもらったかたに責任を転嫁するつもりではないんです。 実際のところ、全くレビューしていただけなかったら結果はより悪くなっていたでしょう。 ボランティアにも関らず原稿を読んでいただいた RubyBook ML の皆さんには本当に感謝しています。

それでも、有料の (責任を取れる) レビュアが必要だったということも やはり事実だと思います。プログラムをテストプログラムでテストするように、 本は人間によってテストされる「べき」と考えます。

図版のチェックですが、これは単純に、仕上げるのが遅すぎたのが原因だと 思います。執筆末期には dvi で出してましたから、これに EPS で 図版を入れていれば普通にチェックできるわけです。あと一ヶ月あれば そういうことができたと思います。

(19:05)

補足 2

それともちろん、執筆において筆者の責任が軽くなるわけではありません。 特に今回のミスは、明らかに自分で気付いてしかるべきでした。 この点に関して言い逃れをする意図は一切ありません。

(21:18)

処理落ち

RHG 掲示板のバグ報告と ruby-dev の net/http の話と rubyist のドキュメント話は 無視してるわけでも忘れてるわけでもなく、単に処理が追いついてないだけです。 少々お待ちください。

(22:00)

本日のツッコミ (全11件)

たむら [う〜ん、間違えも含めてあれは青木さんだと思います>RHG
人間には、もちろん間違えも含まれてる訳だし。少なくとも「書かないほうが」てのは、「生まれてきて済みません」になっちゃうので、そこまで卑下しなくても。
ついでに、3倍速いのに決まってるじゃないか>ニュータイプ]

Yuya [シャア専用?(笑)]

たむら [英訳出版までに修正しませう>http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/59182]

arton [図表をどうレビューに含めるかというのも入れてください。(全然お役に立てなくてすみません)]

akr [個人的には(勤務先の手続きがよくわかんないので)有料でやるというのは気がのらないなぁ。]

あおき [まあ、例えですから。]

なひ [rubyもそうですが、正式リリースしないとバグ見つからない、ってのもありませんかね。というわけで細かくリリース(それじゃ青木さん食えないって]

akr [でも、適切なレビュアが見つかるかどうかというのは難しい問題だと思う。]

なひ [net/httpは暇なときにやりましょう。明示的には誰も困ってないし。]

のりつぐ [黒い本(2) 出る前から予想できた(^^; (まだ見ていないけど…)]

のりつぐ [結城さんはレビューアへの報酬なし派みたい http://www.hyuki.com/diary/dia0211.html#i13_12]


2002-12-17

バグ処理

まだ終わらないよ……。 なんか異様に情報処理能力が落ちてます。ざっと見て 1/3 の速度。

れびゅー

内容チェックになるとレビューでなくて校正なんですか。 なんか校正って言うと字が抜けてるのとか漢字の違いとかを 見付けたり、というのをイメージしてしまうなあ。

考えなおした。

考えなおしました。

やっぱり RHG に関しては筆者の見通しの甘さが最大の要因だと思います。 時間がなくなったのはそもそも自分で切った締切見積もりが甘かったからで、 早めにのばせばよかったんです。報告されている誤りをできるだけ客観的に 評価してみましたが、全く意識になかった誤りは結局ありませんでした。 恐らくあと二回通読していれば 2/3 は潰せたはずです。

特にクラス名の間違いなどは時間さえあれば (原稿から分離して自動テストできるので) 確実に潰せたでしょう。ほとんどのプログラム片は既にそうなっているのですが、 あせって原稿埋め込みにしたところに限って (埋め込みにしたからこそ?) 間違いがありました。 プログラムの分離にあと 1 分使える精神的な余裕さえあれば問題は起きなかったはずです。

(23:49)

本日のツッコミ (全6件)

ksaito [職業柄、近日の話は非常に建設的な、次に活かせる反省だと感じました。反省は否定だけでなく「次は...する」という肯定文で書いてはいかがでしょう。くだらないかもしれませんが、受ける気持ちは大分違うと思いますよ。...だけどね、本音を言うと、あれだけいい本を書いておいて、いつまでも些細なことにへこんでんじゃねえよ、ってのが言いたいです。あれだけの(あのジャンルの)事を本に書けるのは他に誰もいなかったのは事実で、青木さんはやりとげたし、後の間違いはおまえらが直せ、で十分な出来だし、不満があるならオンラインで修正patchを出せばいい話。お金も、たかがデイトでつまんねえ映画観にいった値段じゃん。その後コーヒー飲んで、じゃさよなら程度の。
#どうもCMがうまくいってないようですがね。お手伝いしましょうか?:-)
#紙原稿からの打ち込み& cvs import & diff くらいならしますよ。

件のご著書は即日購入していて、前の256本もそうですが、面倒な話をここまで平易に書けるか、と感心(なんて失礼ですが)してます。日本人の普通の文章の癖に(誉めてます)、否定的な筋を使わずに論理的にあそこまで書けるのは実力の証です。リリース直後にナーバス(禁句(笑)?)になるのはクリエータの常だし、青木さんに今そこまで求めるのはあんまりだけど、「間違い指摘は適宜宜しく、各自マジックで消えないよう書き直しとけな〜」くらい(笑)言っていい成果だと思ってま
すよ。]

rcn [RHG は、楽しく読ませてもらってます。
とても、分かりやすくて、すばらしいです。
間違いは、分かった時点で、オンラインで情報を流してもらえれば、良いです。
私にとっては、それで、十分です。多分、他の多くの方もそうだと思います。
これからの読者の方には第二版で修正すれば良いと思います。

青木さんの、次の本に期待してます。]

たむら [ksaito はいいこと言った!!(敬称略)]

ただただし [つまり、デートの映画代は、彼女の分まで出せ、と。]

Yuya [何はともあれ、RHGは素晴らしい本です。]

ksaito [読み返すと偉そうで、くどいな俺。すみません。ちょっとダークサイド(笑)に引きずられてそうなので、引っ張りあげたかっただけなんですけどね。割り勘は相手と事情に依存します:-)。]


2002-12-18

RHG

ksaito さん、みなさん、ありがとうございます。確かにあまりに後ろ向きでした。 ここでウダウダ言ってても印刷されて世の中に出回ってしまった本が直るわけでなし、 (反省は大切ですが) 今日からは前向きに対処したいと思います。

(20:18)

RHG / 英語

そういえばチラホラと「RHG 英訳しろ〜」って声が見えますね。 結論から言うと、出版前提では無理です。 ウェブ公開で、おもいきり縮小した版ならなんとかなるかもしれません。 (という条件でインプレスの了解はとってあるんですよ、いちおう)

(21:29)

でも

とりあえず、三ヶ月くらいたってから考えます。

(21:33)

to do リスト駆動

何から手を付ければいいのかわからないときは まず to do リストを書き出すといいようだ。 そのあと優先順位を決定し消費時間を予測して書き込む。 仕事をやり終えたらリストから消す。 だいたいの項目が消えたらリストを作りなおす。

まああたりまえの手法だと思うんですけど、 あたりまえができてないので意識しないとできないのです。

(21:46)

そのときの媒体

やっぱ紙じゃない。

(21:46)

ま、

そんなこと言いつつも、使用時間の予測なんてしてませんが! こないだ何かの記事に「決めたほうがいいよ」って書いてあったんです。

(21:49)

レビュー

結城さんは無料レビューかあ。RubyBookML みたいなものかな。 こっちはわりと (いや、かなり) Ruby 界に偏ってるけど……。 今度なにか書くときは募集してみようかなあ。

(21:54)

todo リスト駆動

重要なことを忘れていた。

  • 途中で項目を追加しない。重要なことならそれを追加してリストを作りなおす。

だめなんだよー、どうしても途中でメール見たり スラドのヘッドライン眺めたくなるんだよー。 特に嫌なことをしてるときに。

(21:56)

to do リスト駆動

to do リストは複数作らない。(ポケット一つ原則)

(22:02)

to do リスト駆動

しかしリストを分けたほうがいいこともある。 短期のリストは一つにすべきだが 長期のリストは分野ごとに別々に書いたほうがよさそうだ。

(22:24)

to do list driven

役に立たない to do list の例

  • RHG バグ処理
  • 原稿書く
  • 掲示板にリプライ
  • メール
  • http
  • cvs

(22:28)

to do list driven

メールボックスを to do list にするというのはどうだろう。

Outlook Express にそんな機能があったような気もする。

でもやっぱ紙がいいなあ。画面だとすぐ隱れちゃって嫌。 紙ならモニタの横に広げられる。

# 今日の日記はほとんどメモ用紙だよなー。

(22:46)

間違いの少ない文章を書くには

短くまとめようと思ったのに、 いつのまにか自作ツールのマニュアルになりかけていた。危なかった。

重要度順。

  • 時間的な余裕を十分にとる。

時間に追われて書くと必ずなにか失敗する。 できることならまず全部書き終えて、それから一定の期間校正する。

が、実際には無理なことも多い。特に雑誌とか。

  • 徹夜しない。休みなしで書かない。

徹夜して書くと進んだような感じがするが その次の日に結局寝てしまったりしてだいたいチャラになる。 また夜ばかり活動していると非常に強い疎外感に呵まれるのでよくない。

ようするに、精神状態を良好に保つようにする。

  • 自動テストできるところは例外なく全て自動テストする。

例えば埋め込んだプログラムなどは別ファイルに書き出しておき、 Ruby プログラムなら実行してみてテストする。もちろんそれを手でコピーして いるのでは意味がないので、自動インクルードする。 他に「禁止用語」なども自動チェックできる。

さらに、章をまたいだ内容の参照などは『第○章で述べたように……』などと 定型で書いておくとあとから自動検出できる。

  • 文章は人がテストする。

プログラムはプログラムでテストする。文章は人が読んでテストする。 当然筆者も死ぬほど読むが、どうしても無意識の前提や先入観が邪魔をするので できるだけたくさんの人の目にさらしたほうがよい。

  • レビューには完全な形の原稿を使う

レビュアには図版まで含めたものを提示する。 フォーマットは、dvi や PostScript が見られるならそれでもいいが、 レビュアにその環境がない場合を考えると HTML あたりが適当だろうか。

(23:08)


2002-12-19

RHG バグ処理

EXPR_CMDARG 問題以外は全部リストアップするか返信しました。

しかし最後に残ったこの EXPR_CMDARG 問題ばっかりは、 どう修正したものか全く思い付かない。

RDで原稿

http://www.rubycolor.org/maki/d/200212b.html#18_t1

著者二人 + 編集の三人でペア……じゃなくてトリオ執筆ですか。 その環境はとてもうらやましいです。

うーむ、しかし RHG でそれをやれたかと言うと、それもまた難しそうですね。 でも、

  • 複数の人間が細部まで含めて全体に目を通す
  • 精神的に良い状態を保って書き続けられるようにする

ということが必要だということは確信できました。 貴重な情報ありがとうございました。

(18:49)

RHG / バグ処理

あ、しまった。もう akr さんからの次の返信が入ってたのか。 とりあえず一個はリプライ書いたけど、 もう一個のほうに入ってる状態付きスキャナの章の指摘が難しい……。

(22:28)

原稿チェック

どうも不用意な書きかたが多いな。

  • 複数の人間が細部まで含めて全体に目を通す

ってありますけど、今回は新井さんや arton さんがかなり 入念に読んでくださったんですよね。ただ、やはり時間不足ゆえ、 その意見を吸収しきれませんでした。あと、読んでもらったのが 本当の最終稿ではなかったのは大きいですね。それで図につまらない 間違いが残ってしまったわけですし。

つまりレビューは

  • 早めに
  • しかし最終稿を使って
  • さらに修正後も見られる環境で

やるべきだと言えると思います。ますます理想的すぎて、 果たしてこんな環境が存在できるのか心配になってきました。

(22:41)

効率のよい本文チェック

  • 重要なことから順番に確認する。

(00:26)

本日のツッコミ (全1件)

rcn [筆者二人と編集のトリオで著作は、なかなか良さそうです。
ここでの話は、非常に参考になりました。
校正は、難しいものなのですね。

私の方は、まだ、雛形すらできていないので、とても、人に見せられる状態ではないです。
正直言えば、まだまだ SVG の仕様が掴みきれず、アプリの構築の目処も立たずの状態です。]


2002-12-20

yacc

http://www.ruby-lang.org/~eban/diary/200212b.html#200212192

Plamo 2.0 でも yacc はシェルスクリプトになってました。

~ % cat =yacc
#!/bin/sh
# emulate yacc
bison -y $*

そんなの微妙すぎ〜。

ていうか普通こうだろ。

#!/bin/sh
bison -y "$@"

何か「"$@"」を使わない理由があるのだろうか。yacc だけに約物不足、とかな。

※ 印刷用語で各種記号のことを「約物」と言うそうです

 

 

 

ほぅ――らつっこんでみなー

と言わんばかりのこの所業。あなたは何行耐えることができますか!?

バーチャルじゃないネットじゃないアイドルじゃない 青木 18 歳 (自称) は Plamo Linux を応援しています。

はあ。

今日もイイ感じに錯乱気味です。角度とか。

(11:00)

久しぶりに

鯵ですよ。鯵。え、鯵がどうしたって? あんた新入りだね。 鯵っていえばあれよ、賞味期限切れだよ。

おおっとにいさん待ちねえ、そんじょそこらの賞味期限切れじゃないよ。 今日の鯵は 1、2、3、4 の 5 日ものだ。今日が 20 日ってぇからにはなんだ、 こいつは 15 日に期限が切れてやがるって寸法だ。

なにぃ? そんなもの食べられるかって? そりゃああんた、普通の人は食べんわな。

……普通の人ならね。

(11:06)

#!

#!/usr/bin/bison -y では /usr/bin/yacc 自体が引数として 渡ってしまうよね? ……と思ったけど待てよ、 こういうときは現物で確かめるべきだな。

~ % ls -l yacc
-rwxr-xr-x    1 aamine   users          20 12月 20 18:45 yacc
 
~ % cat yacc
#!/usr/bin/bison -y
 
~ % ./yacc
./yacc:1: unknown character: `#'
./yacc:1:    Skipping to next %
./yacc:1: unexpected `/' found and ignored
./yacc:1: unexpected `/' found and ignored
./yacc:1: unexpected `/' found and ignored
./yacc:2: fatal error: no input grammar
 
~ % ./yacc s/ruby/parse.y
bison: extra arguments ignored after `./yacc'
./yacc:1: unknown character: `#'
./yacc:1:    Skipping to next %
./yacc:1: unexpected `/' found and ignored
./yacc:1: unexpected `/' found and ignored
./yacc:1: unexpected `/' found and ignored
./yacc:2: fatal error: no input grammar
 
~ % ls s/ruby/parse.c
ls: s/ruby/parse.c: No such file or directory

うむ。確認終了。 ついでに #!/usr/bin/bison -y "$@" としてみると「invalid option」であった。

そういえば ls の出力に「日」がないのはなんでだろう。 同じ症状がわたなべさんのちょっと前の日記にあったな。 実害ないから無視でいいや。

(19:37)

本日のツッコミ (全5件)

たむら [だいぶ調子が出て来たらしい
# やっぱあおきさんは賞味期限切れ挑戦ネタだよね]

なかだ [execはつけないんですか]

あおき [おお、なるほど! execも付けることにします。]

あおき [賞味期限切れが「らしい」というのもなんかアレですね。
生活を食い……じゃなかった、悔い改めるべきでしょうか。]

woods [#!/usr/bin/bison -y じゃダメなんでしたっけ?]


2002-12-22

潜行ー

48 時間ばかし IP unreachable になってました。メールチェックのみでまたすぐ潜ります。

2ch

風の谷のプログラマ

http://pc.2ch.net/test/read.cgi/prog/1040392132/l50

笑い死ぬかと思た。

本日のツッコミ (全1件)

ksaito [私には151が(笑)>2ch。よく溶け出し(笑)ますよね、骨とか出て。特に客先で。]


2002-12-23

RHG / 掲示板

ようやく全部レス付けられました。

これで追い付いたかな?

(08:12)

ここ

げっ、もう次の日になってしまったか。まずった。 05:00 が境目だから不規則な生活をしてるとこういうことになってしまうのだ。

そんなわけで、これから潜行します。

潜行と言えば『沈黙の艦 (長くなりそうなんで以下略)

(08:22)


2002-12-24

賞味期限

さすがにって言うか当然って言うかいくらなんでもって言うか、 賞味期限切れから 10 日たった鯵を食う勇気はなかった。 ごめんなさい鯵さん、南〜無〜。

(09:01)

本日のツッコミ (全3件)

arton [軽い質問。racc-1.4.3の/packages/strsca/ext/cscan/extconf.rbが
require 'mkmf'
create_makefile 'strscan'
となっているため、Init_strscanをexportしようとしてリンクエラーになります。
(実際に存在するのは、Init_cscanのため)
racc-1.6.2では、create_makefile 'cscan'となっているのですが、
なぜでしょう?
(MSWin32固有の問題か、それともextconf.rbの間違いか、それとも
僕が何か見落としているかが、わからないので質問。
現時点では、create_makefile 'cscan'として遠そうと考えていますが)]

ken_u [そりゃ、やばいでしょう。もっと早く食べましょう > あじ
RHG 読みはじめました。第一印象は、ぶ厚い、重い、黒い(?)でした。通勤かばんが重くなりました。]

あおき [やっぱりそうですよねえ……。死臭がしましたから。]


2002-12-26

昨日

アメリカから遠い親戚が来たので接待してきました。 英語でしゃべるのは疲れます。ふー。

今日

これから打ち合わせに行きます。

strscan のバグですけど、原因はすぐわかったんで、帰ったら対処します。

あ、あと RHG 正誤表のバグか……。何重に間違えれば気が済むんだ俺は。

TMail と setup.rb は後回しと。

(13:05)


2002-12-27

ruby

fileutils の話が出てるのを見逃してた。 うーん、これは悩むな。

(11:52)

patch / glibc 2.2

fileutils のパッチあてようと思ったら patch が落ちた。 いまさら glibc 入れ換えの余波だろうか。 diffutils 再インストール go。

あれ? patchって diffutils じゃないのか。 どこだったかなー、おろおろ。

なーんだ、単独パッケージか。 ring サーバからげっとしてインストール。

(11:54)

ああ、

貧乏暇なし。

(15:35)


2002-12-28

ruby-list

ちょっとしたことは日記に書いちゃうので ruby-list に出さない、 っていうのはあるかもしんない。

ただ元々この日記は Ruby ネタが極度に少ないのであまり違いがなかったりする。 今年は RHG にかかりっきりだったから特にそうだった。 来年はいったい何が起きるのだろう。

(12:20)

ruby-dev

でも ruby-dev は衰えない。というかむしろ増えてる?

……今週は要約の当番じゃないかー! (どーん)

(12:21)

言語

@IT の Linux Tips に 「使用言語を切り替えるには」 という項目があったのですが、

「言語を切り替え? C のライブラリを C++ にしたり Ruby とか Scheme にもできるってこと? それともログインシェルを zsh にしたりできるってことか?」

と 3 分ばかり本気で悩んでしまいました。

もちろん記事はロケール切り替えの話です。

(12:57)


2002-12-31

今年終わり?!

今年は特に Ruby Hacking Guide に関して、 いろいろな人にお世話になりました。 あの本に見るべきところがあったとすれば、 それは全て応援してくださった皆さんのおかげです。 本当にありがとうございました。

体内時計は30日

しっかしねー。今日は大晦日だったのか。信じられないな。

つーかね、今日は徹夜なので気分が 30 日なのですよ。 まだ 28 日くらいだったらとても嬉しいのですが。 date の出力が 12 月 30 日に見えるのは 徹夜で目がまわってるせいだということにしてもいいでしょうか?

すみません。素で 31 日と 30 日を typo してしまいますた。

(22:56)


<前月 | 最新 | 次月>
2002|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|04|05|06|09|10|
2009|07|
2010|09|