せっかく 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)
やっとコンパイル終わった。
~/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)
Ruby Hacking Guide 見本誌キタ―――――――――――――――!
ありゃ? 522 ページにしては意外と小さくて薄くて軽いな。 Ruby 本のときはすんげえプレッシャーを受けたものだが。 同じくらいのサイズの本を探すと、
てなとこかな。 でもって『UNIXネットワークプログラミング』vol.2 よりはちょっと薄い。
(13:20)
げっ。 もう届きはじめてる?!
実は RHG の中身はウェブで公開する予定なんですが、 まだ準備ができてないんです〜。紙だけでやっちゃった校正を とりこまなきゃいけないし、HTML 化も完全自動までは行かないし (特にテーブルが問題)。 うーん、うーん。とりあえず文面だけ修正してごまかすか。
RHG 読書会って……。 ぼくも行っていいですか? (^^;;;;
でもその場でボロボロ間違いが出てきたりしたら泣くに泣けない罠。
(13:03)
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)
早くも買ってくださっているかたが何人かいらっしゃいますね。 どうもありがとうございます。期待に沿えるとよいのですが。
近いうちに掲示板も作りますけど、とりあえず何かあったらここにでも 書いちゃってください。
今日はインプレス行って RHG の献本を発送してきました。 27 冊もあるとさすがに大変です。 しかも帰りは自分の分 3 冊を合わせて 7 冊お持ち帰りです。 重いったらありゃしない。
あ、そうだ。サインつきの方、ごめんなさい。 わたし、メチャクチャ字が下手なんです。
(18:44)
■ 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では?]
この日記って本当に 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)
library じゃなくて libretto L1 ですけど。 ちゃんとシャットダウンしたはずなんですが、 起動したらいきなりスキャンディスクが始まりました。 これはなんかの前兆でしょうか。
つーか今年はどうしてこんなにハードディスクに苦しむのでしょうか。 通算三台もクラッシュしてるんですけど。 Alpha の二台目も今にも飛びそうだし、CDR 焼きマシンの HDD も挙動不審。 これで libretto まで飛んだら洒落にならない。
(12:16)
少し前に Slashdot jp で「Windows Update を強制に」 ていうトピックがありましたけど、あれって Me でもそうなんですね。 数日前に Windows Update を (手動で) かけたんですが、 その後、タスクトレイに変なアイコンが入ってて、 重要パッチを自動であてるようになってました。 いや、ダウンロードだけして、パッチあてる前に確認だったかな? 方法は三種類くらいから選べるようになってたと思います。
つーわけで速攻でオフ。あんなもん勝手にやられてたまるかよ。 なにより気にくわないのは、アップデートされることよりも、 こっちの動作と非同期だってこと。こっちが文章書いてようが ビデオ見てようが、いきなり最前面にポップアップしてきやがる。 そういうことされると集中力が切れるんだ。
でもまあ、強制アップデート自体はいいと思うんです。 手動でオフにできるんなら別に構いません。 「ちゃんと動いてくれるのならば」、 セキュリティパッチなんかは勝手にあててくれるほうが 楽でいいんじゃないですか。
(12:29)
■
なかだ [あ、先に書かれてた…。
Enumerable#sort_byなのでto_aは不要では。]
■
あおき [ぐお、sort_by って Enumerable でしたっけ。
やはり一発 refe すべきだった。]
■
あおき [つーか、Enumerable#rejectとかselectは1.6にもあるじゃん。
だめすぎ。]
■ ささだ [はじめまして。読んでたらお茶を吹いてしまいました。RHG早く欲しいけど、買うと卒業できないのです。多分。]
■
なかだ [届きました。ありがとうございます。
p.482, /これが排他ロックになってなっているわけだ。/s/(なって)+/\1/]
■ あおき [ありがとうございます。ぼくも今もう二個みつけました。がーん。]
■ matz [s/ナーバス/ナイーブ/ってミスがありましたよ。]
再掲します。
> ■ Yuya『第2章85ページ「true false nil」:trueは真、 falseは偽の代表的な値。とありますが、代表的な値なのはtrueでは?』
うぅっ、これはですね、 「それぞれtrueは真の、falseは偽の代表的な値」 のつもりだったようです。バグリストに追加しておきます。
> ■ matz『s/ナーバス/ナイーブ/ってミスがありましたよ。』
第 4 章「クラスとモジュール」p.128 後半 「しかしこの表現はあまりにナーバスにすぎる」 → 「しかしこの表現はあまりにナイーブにすぎる」
ですね。追加します。
個人宛でも一ついただきました。ありがとうございます。
しっかしハイペースですね。 あと一週間くらい校正に専念すべきだったかなあ……。
(05:57)
13 日の金曜日だ。 だ……だからどうした。 た……たまたまそうだったんだよ。 よ……よかったね。 ね……ねこいらず食わせるぞ。 ぞ……ぞっとしないなあ。 あ……あほんだら。 ら……来週に続いちゃう。
う……うっそーん。(完)
(10:52)
内輪の打ち上げに行ってきました。参加者は席順に
の 6 名でした。
記憶に残っている話題。
ドキュメント関係。
以下はドキュメントに関して個人的な意見。
「そういう情報は ML に流せよー」ってのもありますが、 ちょっといま立てこんでるもんで勘弁してください。 落ち着いたら関係 ML に流していきます。
(20:16)
http://japanese.joins.com/html/2002/1209/20021209223203100.html
KISS 原則ってマクドナルドの戦略用語だったの?
(20:27)
■
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 [って言うか、ららぁとか知らない?]
『たのしい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)
それともちろん、執筆において筆者の責任が軽くなるわけではありません。 特に今回のミスは、明らかに自分で気付いてしかるべきでした。 この点に関して言い逃れをする意図は一切ありません。
(21:18)
RHG 掲示板のバグ報告と ruby-dev の net/http の話と rubyist のドキュメント話は 無視してるわけでも忘れてるわけでもなく、単に処理が追いついてないだけです。 少々お待ちください。
(22:00)
■
たむら [う〜ん、間違えも含めてあれは青木さんだと思います>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]
まだ終わらないよ……。 なんか異様に情報処理能力が落ちてます。ざっと見て 1/3 の速度。
内容チェックになるとレビューでなくて校正なんですか。 なんか校正って言うと字が抜けてるのとか漢字の違いとかを 見付けたり、というのをイメージしてしまうなあ。
考えなおしました。
やっぱり RHG に関しては筆者の見通しの甘さが最大の要因だと思います。 時間がなくなったのはそもそも自分で切った締切見積もりが甘かったからで、 早めにのばせばよかったんです。報告されている誤りをできるだけ客観的に 評価してみましたが、全く意識になかった誤りは結局ありませんでした。 恐らくあと二回通読していれば 2/3 は潰せたはずです。
特にクラス名の間違いなどは時間さえあれば (原稿から分離して自動テストできるので) 確実に潰せたでしょう。ほとんどのプログラム片は既にそうなっているのですが、 あせって原稿埋め込みにしたところに限って (埋め込みにしたからこそ?) 間違いがありました。 プログラムの分離にあと 1 分使える精神的な余裕さえあれば問題は起きなかったはずです。
(23:49)
■
ksaito [職業柄、近日の話は非常に建設的な、次に活かせる反省だと感じました。反省は否定だけでなく「次は...する」という肯定文で書いてはいかがでしょう。くだらないかもしれませんが、受ける気持ちは大分違うと思いますよ。...だけどね、本音を言うと、あれだけいい本を書いておいて、いつまでも些細なことにへこんでんじゃねえよ、ってのが言いたいです。あれだけの(あのジャンルの)事を本に書けるのは他に誰もいなかったのは事実で、青木さんはやりとげたし、後の間違いはおまえらが直せ、で十分な出来だし、不満があるならオンラインで修正patchを出せばいい話。お金も、たかがデイトでつまんねえ映画観にいった値段じゃん。その後コーヒー飲んで、じゃさよなら程度の。
#どうもCMがうまくいってないようですがね。お手伝いしましょうか?:-)
#紙原稿からの打ち込み& cvs import & diff くらいならしますよ。
件のご著書は即日購入していて、前の256本もそうですが、面倒な話をここまで平易に書けるか、と感心(なんて失礼ですが)してます。日本人の普通の文章の癖に(誉めてます)、否定的な筋を使わずに論理的にあそこまで書けるのは実力の証です。リリース直後にナーバス(禁句(笑)?)になるのはクリエータの常だし、青木さんに今そこまで求めるのはあんまりだけど、「間違い指摘は適宜宜しく、各自マジックで消えないよう書き直しとけな〜」くらい(笑)言っていい成果だと思ってま
すよ。]
■
rcn [RHG は、楽しく読ませてもらってます。
とても、分かりやすくて、すばらしいです。
間違いは、分かった時点で、オンラインで情報を流してもらえれば、良いです。
私にとっては、それで、十分です。多分、他の多くの方もそうだと思います。
これからの読者の方には第二版で修正すれば良いと思います。
青木さんの、次の本に期待してます。]
■ たむら [ksaito はいいこと言った!!(敬称略)]
■ ただただし [つまり、デートの映画代は、彼女の分まで出せ、と。]
■ Yuya [何はともあれ、RHGは素晴らしい本です。]
■ ksaito [読み返すと偉そうで、くどいな俺。すみません。ちょっとダークサイド(笑)に引きずられてそうなので、引っ張りあげたかっただけなんですけどね。割り勘は相手と事情に依存します:-)。]
ksaito さん、みなさん、ありがとうございます。確かにあまりに後ろ向きでした。 ここでウダウダ言ってても印刷されて世の中に出回ってしまった本が直るわけでなし、 (反省は大切ですが) 今日からは前向きに対処したいと思います。
(20:18)
そういえばチラホラと「RHG 英訳しろ〜」って声が見えますね。 結論から言うと、出版前提では無理です。 ウェブ公開で、おもいきり縮小した版ならなんとかなるかもしれません。 (という条件でインプレスの了解はとってあるんですよ、いちおう)
(21:29)
何から手を付ければいいのかわからないときは まず to do リストを書き出すといいようだ。 そのあと優先順位を決定し消費時間を予測して書き込む。 仕事をやり終えたらリストから消す。 だいたいの項目が消えたらリストを作りなおす。
まああたりまえの手法だと思うんですけど、 あたりまえができてないので意識しないとできないのです。
(21:46)
結城さんは無料レビューかあ。RubyBookML みたいなものかな。 こっちはわりと (いや、かなり) Ruby 界に偏ってるけど……。 今度なにか書くときは募集してみようかなあ。
(21:54)
重要なことを忘れていた。
だめなんだよー、どうしても途中でメール見たり スラドのヘッドライン眺めたくなるんだよー。 特に嫌なことをしてるときに。
(21:56)
メールボックスを to do list にするというのはどうだろう。
Outlook Express にそんな機能があったような気もする。
でもやっぱ紙がいいなあ。画面だとすぐ隱れちゃって嫌。 紙ならモニタの横に広げられる。
# 今日の日記はほとんどメモ用紙だよなー。
(22:46)
短くまとめようと思ったのに、 いつのまにか自作ツールのマニュアルになりかけていた。危なかった。
重要度順。
時間に追われて書くと必ずなにか失敗する。 できることならまず全部書き終えて、それから一定の期間校正する。
が、実際には無理なことも多い。特に雑誌とか。
徹夜して書くと進んだような感じがするが その次の日に結局寝てしまったりしてだいたいチャラになる。 また夜ばかり活動していると非常に強い疎外感に呵まれるのでよくない。
ようするに、精神状態を良好に保つようにする。
例えば埋め込んだプログラムなどは別ファイルに書き出しておき、 Ruby プログラムなら実行してみてテストする。もちろんそれを手でコピーして いるのでは意味がないので、自動インクルードする。 他に「禁止用語」なども自動チェックできる。
さらに、章をまたいだ内容の参照などは『第○章で述べたように……』などと 定型で書いておくとあとから自動検出できる。
プログラムはプログラムでテストする。文章は人が読んでテストする。 当然筆者も死ぬほど読むが、どうしても無意識の前提や先入観が邪魔をするので できるだけたくさんの人の目にさらしたほうがよい。
レビュアには図版まで含めたものを提示する。 フォーマットは、dvi や PostScript が見られるならそれでもいいが、 レビュアにその環境がない場合を考えると HTML あたりが適当だろうか。
(23:08)
http://www.rubycolor.org/maki/d/200212b.html#18_t1
著者二人 + 編集の三人でペア……じゃなくてトリオ執筆ですか。 その環境はとてもうらやましいです。
うーむ、しかし RHG でそれをやれたかと言うと、それもまた難しそうですね。 でも、
ということが必要だということは確信できました。 貴重な情報ありがとうございました。
(18:49)
あ、しまった。もう akr さんからの次の返信が入ってたのか。 とりあえず一個はリプライ書いたけど、 もう一個のほうに入ってる状態付きスキャナの章の指摘が難しい……。
(22:28)
どうも不用意な書きかたが多いな。
ってありますけど、今回は新井さんや arton さんがかなり 入念に読んでくださったんですよね。ただ、やはり時間不足ゆえ、 その意見を吸収しきれませんでした。あと、読んでもらったのが 本当の最終稿ではなかったのは大きいですね。それで図につまらない 間違いが残ってしまったわけですし。
つまりレビューは
やるべきだと言えると思います。ますます理想的すぎて、 果たしてこんな環境が存在できるのか心配になってきました。
(22:41)
■
rcn [筆者二人と編集のトリオで著作は、なかなか良さそうです。
ここでの話は、非常に参考になりました。
校正は、難しいものなのですね。
私の方は、まだ、雛形すらできていないので、とても、人に見せられる状態ではないです。
正直言えば、まだまだ SVG の仕様が掴みきれず、アプリの構築の目処も立たずの状態です。]
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 を応援しています。
鯵ですよ。鯵。え、鯵がどうしたって? あんた新入りだね。 鯵っていえばあれよ、賞味期限切れだよ。
おおっとにいさん待ちねえ、そんじょそこらの賞味期限切れじゃないよ。 今日の鯵は 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)
48 時間ばかし IP unreachable になってました。メールチェックのみでまたすぐ潜ります。
■ ksaito [私には151が(笑)>2ch。よく溶け出し(笑)ますよね、骨とか出て。特に客先で。]
げっ、もう次の日になってしまったか。まずった。 05:00 が境目だから不規則な生活をしてるとこういうことになってしまうのだ。
そんなわけで、これから潜行します。
潜行と言えば『沈黙の艦 (長くなりそうなんで以下略)
(08:22)
■
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 読みはじめました。第一印象は、ぶ厚い、重い、黒い(?)でした。通勤かばんが重くなりました。]
■ あおき [やっぱりそうですよねえ……。死臭がしましたから。]
アメリカから遠い親戚が来たので接待してきました。 英語でしゃべるのは疲れます。ふー。
これから打ち合わせに行きます。
strscan のバグですけど、原因はすぐわかったんで、帰ったら対処します。
あ、あと RHG 正誤表のバグか……。何重に間違えれば気が済むんだ俺は。
TMail と setup.rb は後回しと。
(13:05)
fileutils のパッチあてようと思ったら patch が落ちた。 いまさら glibc 入れ換えの余波だろうか。 diffutils 再インストール go。
あれ? patchって diffutils じゃないのか。 どこだったかなー、おろおろ。
なーんだ、単独パッケージか。 ring サーバからげっとしてインストール。
(11:54)
ちょっとしたことは日記に書いちゃうので ruby-list に出さない、 っていうのはあるかもしんない。
ただ元々この日記は Ruby ネタが極度に少ないのであまり違いがなかったりする。 今年は RHG にかかりっきりだったから特にそうだった。 来年はいったい何が起きるのだろう。
(12:20)
@IT の Linux Tips に 「使用言語を切り替えるには」 という項目があったのですが、
「言語を切り替え? C のライブラリを C++ にしたり Ruby とか Scheme にもできるってこと? それともログインシェルを zsh にしたりできるってことか?」
と 3 分ばかり本気で悩んでしまいました。
もちろん記事はロケール切り替えの話です。
(12:57)
今年は特に Ruby Hacking Guide に関して、 いろいろな人にお世話になりました。 あの本に見るべきところがあったとすれば、 それは全て応援してくださった皆さんのおかげです。 本当にありがとうございました。
しっかしねー。今日は大晦日だったのか。信じられないな。
つーかね、今日は徹夜なので気分が 30 日なのですよ。 まだ 28 日くらいだったらとても嬉しいのですが。 date の出力が 12 月 30 日に見えるのは 徹夜で目がまわってるせいだということにしてもいいでしょうか?
すみません。素で 31 日と 30 日を typo してしまいますた。
(22:56)
■ たむら [自サーバだと、その手があるか!!
本当に福岡来れるのなら、うれしいな。
# たぶん1月でしょう。]
■ (う) [福岡行くなら、途中下車して大阪にも寄って下さい〜 ^^;]
■ あおき [どこだろうと殴り込みますよー。]
■ あづみ [おお、お待ちしております〜〜]