青木日記

<前月 | 最新 | 次月>

2002-07-01

なにい!

Kondara 解散かよ! ちょっとびびった。Plamo は大丈夫かなあ。なんか「萌えプラットホーム化してる」という噂を聞いたんだが。

っても正直言って個人的にはディストリビューションはなんでもいいんだよな。どうせメインで使ってるものは全部自分でコンパイルするし。

時代は 1.7 です

tDiary人口がいくら増えたとは言え ruby 1.7 HEAD で動かしているのは家くらいでしょう。うふふ。

でも tDiary のバージョンが低かったりして。

ほん

今日の午前中は (親に借金して) 本を買いにいった。とりあえずは書いてる原稿に必要なもんを買わなきゃいけないのであまり無駄遣いはできない。

『オペレーティングシステム』Andrew S.Tanenbaum, Albert S.Woodhull 著、ピアソンエデュケーション。ソースコード解説を書く以上、ソースコードの解説本は一通り見ておきたかった。

『Java言語仕様 第二版』James Gosling, Bill Joy, Guy Steel, Gilad Bracha 著、ピアソンエデュケーション。重い。高い。ついでに仕様書だけあって面白くない。訳もイマイチだ。どうせなら原書にすべきだったかな。

『プログラミング言語C++ 第三版』Bjarne Stroustrup、ASCII。もっと重くて高い。なんだよ 1031 ページって。小さいほうが必ずしもいいってわけじゃないけど、ここまでデカいとさすがに考えちゃうでしょ。

『Interface 8月号』 今月の特集はBSDか。Interface最近おもしろいね。

『rootから/へのメッセージ』高野豊著、ASCII。いまは一人が一台まるごと使い放題だけど、昔のUNIXは大変だったのねえ。VAX一台二億円とは……。

今日は結局三万近い出費。でもまだまだ欲しい本がいっぱいあるんだよなー。Sed&Awkとか、Solaris インターナルとか。ハードウェア関係の本も欲しいし、あと SICP の原書も欲しい。PostScript と TeX 関係の本もほしい。Hacking Guide の原稿料が入ったらジュンク堂レジ係のおねえちゃんがビビるくらい積みあげてこよう。ていうか今日ですらけっこうギョッとしてた。


2002-07-02

Programming Ruby 問題の波紋

OPL で公開されてるのを翻訳してライセンス変えちゃった、という話です。もうちょっと正確な概要その他は Rubyist! からどうぞ。

Ruby Hacking Guide は出版後ウェブで公開したいと思っているのですが、出版社の人はかなり乗り気じゃないです (あたりまえだけど)。この本は値段も高いしページ数多いし専門書じゃないですか、ネタもマイナーじゃないですか、ちょっと試読させてあげて知名度高くするほうが売り上げのびますよ、って説得して「とりあえず第一部くらいなら」ってことになったんですけど。こっちとしても責任があるんでこういう事件のことを黙って公開させちゃうわけにはいきません。そんで、むこうが知れば当然「危うきに近寄らず」になる可能性もあります。気が重い……。

Java Specification

そうですか……Webで見られるんですか……。そりゃそうですよね、公開仕様なんだから、当然予想できることでした。まる (泣)

いやここは前向きに、紙でしかも日本語の文書なのだからより付加価値の高いものを買ったんだ、と思うことにしよう。

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

たかはし [こんなのもあります:

Java言語規定 第2版
http://www.y-adagio.com/public/standards/tr_javalang2/jTOC.doc.html

SICPも原書ならWebで読めますね。
http://mitpress.mit.edu/sicp/full-text/book/book.html]


2002-07-04

Java Specification (2)

ぐはぁ (致命傷) Java の仕様、日本語訳もウェブにあるんですか。そりゃそうだよなあ。あれだけ騒がれててウェブにリソースがないなんてことあるわけがない。だめだ、もう立ちなおれない。この金のないときに 5500 円の出費は痛すぎる。けっ、いいさいいさ、おれは金が無くたって紙が好きなんだー!

ちなみに日本銀行券って書いてある紙は特に好きです。

Programming Ruby 問題

ふーむ、OPL もオプションを付けると明示的に修正・配布を制限できるのですね。なるほど。

でもねえ。こういうのって起こった時点でけっこうダメージでかいですよね。「こういう条項があるから大丈夫」といくら言ったところで、配布する人達 (出版社も含む) がそのライセンスを信用できなければそれまでです。今回はライセンスの解釈で揉めてましたけど、そもそも解釈によって結果がこれほど大きく変わってしまうようでは、いくらオプションを付けたところで「なんか抜け穴があるような気がする」と言われたら反論できません。

オープンソースソフトウェアを公開してる人達ってのは、そもそもオープンなライセンスに積極的、または寛容、言ってみりゃ「甘い」です。でも最終的に結論を下すのは、そういう人間ではなくクローズな世界でやってきた人達ですから。

RHG はどうなるかなあ。

Alpha

Alpha はもとから流通量が少ないですが、Yahoo! オークションが有料化してからというものさらに出品される Alpha の数が減ったような感じがします。いまは偶然 dPW500a が出てますね (dPW = digital Personal Workstation)。ちなみに dPW シリーズは a がついてるのが Alpha、i が 86 マシンです。いま 200i も出てますが、これは秘かに PPro200 のデュアルのうえ I/O が SCSI なのがよさげ。おうちサーバにどぅ?

そうそう、dPW a シリーズには a と au があり、基本的に au が UNIX 用ですので注意しましょう。


2002-07-05

世代別GC

だめだ……。こんなんマージしたうえに解説書いてたら締切に間にあわねえ。今回はあきらめよう……。あ、でもそうすると出版した瞬間に GC の章が通用しなくなるってことか? それもなんか腹立つな。

あー、どうしよどうしよ。オロオロオロ。

世代別GC (2)

キレた。もうあとのことなんて知りません。徹夜で速攻マージ GO!

五時間経過。なんとか miniruby は動いてるようだ。

ぐぁ、だめだ、落ちた。嫌だなあ、ファイル名が化けてる。この落ちかたはどう見ても GC で失敗してるよー。(続く)

ReFe

あ、パッチどもです。あてときます。

ReFeと言えば、Marshal使わないバージョンを書きたいなーとずっと思ってるんですよね。その方法はと言うと、まずRDをリファレンス部分だけにしておきます。各エントリにはクラスも含めた完全名を付けておきます。次に、コマンドライン引数を正規表現に変換します。たとえば s g! に対しては \As.*?#g.*?! (opt=i) を生成します。検索します。おしまい。きっととても速いと思うんですよー。

メソッド括弧の省略

括弧を省略したメソッド呼び出しがネストすると警告が出るようになったようだ。手元のパッケージをチェックしてみると、ポロポロと出てくる。が、あまりたくさんはない。これだけのためにリリースしなおすほどでもないな。

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

なかだ [そういや最近の1.7.2ではrefeでwarningが出ます。
diff -ru2p refe-0.5.0/bin/refe refe-0.5.0+/bin/refe
--- refe-0.5.0/bin/refe Fri Mar 22 20:21:23 2002
+++ refe-0.5.0+/bin/refe Fri Jul 5 05:39:14 2002
@@ -261,5 +261,5 @@ end
class OutputFunctionFromMethod < OutputMethod
def describe_method( name )
- print @table.function_definition @table.method_to_function(name)
+ print @table.function_definition(@table.method_to_function(name))
end
end]

木山 [調査する時間がないのと,すでにGCを忘れかかっているので
正確なことは言えませんが,実行時間に占めるGC処理時間の割合が
少ないので,GCを速くしても全体に与える効果は少ないと思います.]


2002-07-07

先回りして掃除?!

/.j で知ったネタ。フジテレビの 27 時間テレビの企画で、みんなで集まって湘南の浜辺を掃除しようとしてたのを、2 ちゃんねら〜達が先手をとって掃除してしまったらしい。カナーリ爆笑。なかなかおバカな企画でいいですね。こういうのは大好きです。27 時間テレビなんかよりこっちのほうが面白くない?


2002-07-08

する

「パソコンする」と「テレビ見る」はちょっと関係が似てる。

みー

Windows Me と言えば忘れられないのはあれだ、起動直後の宣伝ビデオ。何の前触れもなくいきなり「Windows Meのデジタル世界をご案内します。ビデオを再生しますか? Y/N」とか聞かれて、一回全部見るまで絶対に止まってくれないやつ。N にしても、一度見るまでは何度でも聞かれるというカスっぷり。これって Libretto L1 だけなんでしょうか。

しっかし、あれは本気で逆宣伝かと思いました。だって、その直前まではけっこうウキウキしてたんですよ。イマドキなスリムノートだし、わりとカッコいいし、薄くて小さくてカワイイじゃないですか。Windows でもまあいいかー、エヘヘー、なんて思ってたとこだったのに、アレをくらったせいで堪忍袋の緒が三本くらいブチ切れましたね。そりゃもう、ブチブチブチッて音が聞こえるくらいに。

壁紙

モニタの壁紙……。ぼくの場合どうせ 常時 kterm で画面が埋めつくされてるからルートウィンドウは 100 ドット分くらいしか見えません。だから最初から壁紙貼りません。壁紙が役に立つ人ってどういう画面構成になってるんですか? 起動直後だけ見えればいいのかなあ。(.xinitrc から必要なアプリ起動しちゃうとそれすらも見えない)

壁紙 (2)

おおなるほどっ、スケスケですか! それは考えてなかったー。そういや「時代は半透明を求めている」みたいな記事が昔の日経にあったような気がするな。たしか初代の iMac が流行ったころ。

emacs も透けるのかな。xemacs あたりは節操なく透けそうだな。どうでもいいことだが「透けそうだな」と「スケトウダラ」は似てる。

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

なかだ [mlterm --transbg=trueとか?]

きた [Etermやxchatはスケスケなのです.]

arton [ふと今思いついたのは、あの中で、「使用上のご注意……」とかのライセンス条項がしこたま出てくる仕組みとか(だから、一応、見るまでやろうとする)。見なかったけど。]

あおき [そういえば何回 accept 押しても次のライセンスが
出てくるソフトがあったような気がする。]


2002-07-09

YAML

[ruby-talk:43992] なんかよくわからないけど Racc を使ってくれているようだ。嬉しい。

略語

aref の由来を確認するためにかけずりまわる。

というところで思ったんだけども、こういうプログラミング特有の略語の辞典ってないのだろうか。たとえば簡単なのだと defun → define function、stmt → statement、idx → index、str → string というように。

コンピュータ一般だとたくさんあるな。でもプログラミング専門のはあまりないようだ。idx str が載ってるのは全然ない。ああでも、aref だったら aref で検索してみりゃいいのかな?

ちなみに aref は array reference で由来は Lisp。ref が refer か reference か、で迷ってました。

ruby-talk

ちょっとー、一日 100 通どころじゃないじゃん。6日 105通、7日 86通、8日 135通。つーか each か? String#each がいかんのか? てめえら本当に文字単位で each したいのか?

ま、こういうズレズレな意見はまつもとさんにあっさり却下されること間違いなしなので適当に眺めとくに限る。

vs.鯵

二日前に賞味期限の切れた鯵を食べてしまった。どきどきどき……

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

なかだ [eachと<<の組合せならStringだけじゃなくてIOでも有効なので、そっちのほうが便利じゃないかと思うんですがねぇ。
まぁEnumeratorやらparameterized moduleってのはいいんですけど。]

あおき [でも文字単位の繰り返しは重いですよ……。前にやって懲りました。
それに文字ってあんまり明らかな概念じゃないですから。]

なかだ [もちろん、行単位です。IO.eachはやはり行単位でしょう。]

あおき [あっ、だから行のほうがいいってことでしたか。それなら納得。]

なかだ [[ruby-talk:44082]なんて面白いかもとか思ったりするけど、こりゃ大きすぎるから無理だろうなぁ。
結構大変そうだし。]


2002-07-10

tDiary

@hour_offsetが効かない、おかしい…… とずっと思っていたのだが、 よく見たらフォームの日付を調節するって書いてあった。 メール経由なら効かないのは当然だ。

どうせ posttdiary.rb は原形を留めないほど改造されているので 定数決め打ちで調整した。ついでにプリプロセスをかまして念願の 行折り返しを実装。プリプロセッサは前の日記スクリプトから 切り貼りだ。

ちなみにこのメールがそのテストでもある。

失敗

くそー、ヘッドラインが本文になってしまった。一行目が空行だからだろうか。これでどうだ。


2002-07-11

今日のreferer

refererからアンテナを削って重要なrefererが見やすくなったのはいいけど、 今度は削りすぎてさびしくなってしまった……。ショボーン。

vs.福神漬

レトルトカレーであさごはん。そして冷蔵庫の奥にいつからあるのかわからない福神 漬を発見。当然食べるでしょ。

……うわっ、うわああああ! 福神漬クラスタの内側にカビが! 青いカビがふさふさしてるよ! いくらなんでもヤヴァいだろこれはっっ。

……ペニシリン……とかいうことはないだろうなあ。 ぐわっ、なんか腹痛い?!

シュークリーム

シュークリームって、

クリームの入ったシュー?

シューでくるんだクリーム?

……どっちでもないらしい。正式名称は shoe a la cream (フランス語)。 shoe はキャベツ、a la が〜風で「クリーム入りキャベツ」かあ。 参考: http://www.shokushoku.com/event/003/chou_a_la_creme.html

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

ただただし [どうも「VisualStudio .(ドット)福神漬け」と読んでしまう。]

kjana [NTT Millennium Edition みたいなものですか :-)]

ken_u [はじめまして、RHG楽しみにしてます。牛乳とか青みの魚とかチャレンヂ精神旺盛すぎでは(笑)?]


2002-07-12

シュークリーム (2)

あ、ちげえよ。「クリームの入ったシュー」でいいんだ。なーんだ。

VS.福神漬

や、やばっ、ツボにはまった……。 おもしろすぎ。

つうことはアレっすかね? .福神漬フレームワークってのがあるんですね。 高速な .福神漬バイトコードを生成する VC++.福神漬テクノロジ、とか インドカレーからボンカレーまであらゆるカレーライス環境に対応する .福神漬バーチャルマシンとか。

VisualStudio.福神漬

あっ、はじめまして。 そうですねえ、なんでチャレンヂしてしまうんでしょうね。 きっとそこに賞味期限切れの食べ物があるからじゃないでしょう。 ほら、主婦によくあるじゃないですか。もったいないからと言って 余り物を全部食べてしまって太るというパターンが。そういえば うちの母親も冷蔵庫に「わたしの胃袋はゴミ箱ではない!」という メモをはりつけています。食べてしまいそうになったときに冷静に なるためだそうです。(無駄だけど)

んで突然思ったんですが、あのフワフワ青カビクラスタはもったい なかったです。なにがもったいないって、あれだけ見事にカビてた のだから写真くらい撮るべきでした。それでここに貼ったら Visual じゃないですか。VisualStudio.福神漬じゃないですか。うわっ、 もったいなー!

tDiary on 1.7

なにいー。 ruby 1.7 な tDiary ユーザは他にもいるのか……。 やはりイマドキ ruby 1.7 程度ではインパクトがないのだな。 なにか次の手を考えなければ。たとえば tDiary まるごと 拡張モジュールにするとか! (意味無)

1.6→1.8

1.7 恐いですか……

1.6→1.8 への移行で大変そうなことと言えば、STR2CSTR が obsolete になったことでしょうか。(なくなったわけじゃないです) あとはマイナー API がなくなったり、新しい API ができたり してるだけなのでリコンパイルだけでだいたい通りそうです。

どっちかというと Ruby スクリプトレベルのほうが影響が大きいかも。 if /re/ が通らなくなったとか、$= が半分消滅しかかってるとか、 そのへんの Perl 経由のやつを多用してると苦労するかもしんない。 あと net/http のバージョンアップ。もしかしてほとんどおれが原因?

Rubyレベルの違いは新井さんがかなり詳細にまとめてくださってるので 助かりますね。http://www.ruby-lang.org/ja/man-1.6/ の 「1.7 feature」のとこを見ればすぐわかります。

C レベルのは、ruby-dev になにかあったような気がしないでもない。

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

なかだ [あとはAllocation Framework。]

ken_u [確かにもったいない(笑)。>VisualStudio.福神漬]

(う) [使用許諾契約書にありますように、VC++.福神漬を用いて生成された福神漬は、フリーなレシピのカレーと組み合わせることは出来ません。
ボンカレーなどのレトルトカレーであれば問題ありません。
# ところで、「高速な .福神漬バイトコードを生成」って、要するに傷みが早いってことですか? ^^;]

arton [下品で行くと、そりゃ、くだるのが早いってことでは。]

なひ [福神漬けに山椒を振り掛けることによって、食後に安全に回収することができるんですね。
unmanagedな福神漬けの山椒(版)を取り出すことをボクシングと。。。]


2002-07-14

逆転どころじゃない

昼に寝て夜に起きて真夜中に寝て朝に起きて夕方に寝てるとどうなるでしょうか。

答え: ダメ人間になります。

Bohem

ruby-core ML に Bohem GC の Bohem さん本人からメールが来てる! [ruby-core:00225]

1.6→1.8

そっか、allocate もありました。あれ結構面倒なんですよね。ただ、あれっ て対応してないからと言ってコンパイルが通らなくなるっていうものじゃない ですよね? allocate を使う Ruby プログラムでバグるっていうだけで、 いちおう動いちゃいませんか。

それと if /re/ が通らなくなったのは、こんなコードでぼくがハマって 文句言ったのが間接的なきっかけです。

class C
  def initialize( re = nil )
    @pattern = re || /default pattern/   ####ここが問題
  end
  attr_reader :pattern
end
 
c = C.new
p c.pattern   # nil

これは嫌でしょ、かなり。

対 納豆・卵戦

炊きたて御飯だった御飯をちょっと時間を置いてから卵と納豆で食べました。

べつにね、いいんですよ。賞味期限が切れてたっていいんですよ納豆なんか。 あんなもん最初から腐ってるんですから。使う菌がちょっと違うだけです。

卵も大丈夫です。固いカラで守られているのでそう簡単に腐ったりしないので す。卵がそんなに簡単に腐ってたらヒヨコが生まれる前に腐ってしまいまうで はないですか。

そもそも、賞味期限ってのは相当にマージンをとって設定されています。同じ 食べ物だろうと数がたくさんあれば必ず腐敗に強い個体と弱い個体があります から、ダメになる時間の平均値を使ったりすると弱いものは賞味期限前にダメ になってしまいます。だから普通は一番弱い個体の賞味期限からさらに少しマー ジンをとって設定されているのです。すなわち平均的な個体ならば賞味期限な んかよりも遥かに保つと言えます。よほど賞味期限の短かいもの以外ならば、 倍は保つと思ってよいでしょう。ええ、よほど短かいもの以外なら。たとえば 生魚みたいな生ものはヤヴァいですね。

さ、アジ焼こっと。

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

kjana [実際生卵は「常温でたてておく分には」一ヶ月ぐらいもつものらしい
ですね.冷蔵庫に入れたりなんかするとかえって早く痛むとか.

....なんか書いててちょっとうそかもと思った :-P 早く痛むってこと
はないか.生魚はだめそうならだめそうな味と匂いがするから大丈夫 :-P]


2002-07-15

今日のreferer

いったい何を思って「あお」とか「そうですねえ」を 検索したんでしょうか……。謎。

そういえばぼくも前に何気なく「じゃじゃ〜ん」を 検索したことがあります。そのとき見付けたのが これ。

……えー、あのー、

どうしたらいいんでしょう?

み、

味噌がない!

momonga

今回 MNU みたいのは付くのだろうか。大予想!

  • FNU (ふにゅう) ももんがの手触り
  • PNU (ぷにゅう) 同上
  • ONU (おにゅー) 新規出直しだから
  • PSU (ぴしゅっ) ももんがが樹々の間を飛び移るさま
  • PYU (ぴゅっ) 同上

二文字も変えちゃだめじゃん。

み、(2)

いやー、さすがに味噌は賞味期限切らしませんよ。 あれってそうとう持ちますからね。 と言いつつこの前のは切れそうになってあわてて食べたので なんとも言えないんですが……

それよりもね、それどころじゃないんですよ。 味噌ないと味噌汁作れなくて昼飯食えないので 急いで味噌を買いにいったんですよ。 ところが! ところが! と、ところが!

買い忘れたんです……味噌だけ……(泣)

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

ただただし [賞味期限の切れてない味噌はあるとか?]

ただただし [いやー、賞味期限が切れるまで待つ主義なのかと思っていたので。ちがうのね(笑)。]


2002-07-18

ヒトサン

にんじんをまるごとかじる。二本ほど。カロチン。

not Bohem but Boehm

Σ(°Д°) がーん!

if /re/ 総集編

ふーむ、まとめるとこういうことですね。

  • -e の中ではいままで通り。
  • if など明示的な条件式の中はいままで通り。
  • 条件式の中にある and や or は「条件式属性」を継承する。

なんにしても ruby -cw で自動チェックできるのでとりあえず 本物で確かめてみるのがベストかな。

lex_state

ruby のスキャナの状態遷移を追って朝があけました。


2002-07-19

i.loveruby.net アクセス傾向

ここ一ヶ月あたりの i.loveruby.net アクセスランキングトップは 『ソースコードを読む技術』 でした。アクセス数は約 7000 で二位の Racc 1.4.2 に 15 倍近くの差を つけています。こんなすごいことになってるのはどうやら カトゆー家断絶 というところがリンクしてくれた影響らしい。

うーん、この文書が人気出るということは、ここらへんはやっぱり 既存文書の「穴」なのかな。そういう意味では Ruby Hacking Guide も意外と 善戦しそうな気がしてきた。……なんて自分で言ってどうする。

まあ、ぼく自身は最初っから「メチャ売れるとは思わないでください」と 出版社の人に言ってます。出版社の人も口では「○万部売りますよー」と 言いつつ初刷○千部だし。さすがだよねっ!

いや、でも真面目な話、初刷で終わるのは避けたい。

RHG

やっと B5 変形 250 ページを越えました。書くの遅すぎだよ俺。

つうか、こんなとこで内情を書いてていいのかって気がしますが、 ruby-list に書かれてしまったくらいだからもうどこでなに書こうが 同じですな。それに少しは事前宣伝しとかないと本当に○千部で終わりかねない (泣)

今日のバグ

getopts で、 第一引数と第二引数の間のカンマを抜かしたために文字列が連結されてしまった。

一橋大学教授がセクハラ

誰だよそういうことするバカは。さっさと実名を出せ。 ……発見。 やはりこういうのは学生系に限るな。公式サイトには一言も出てねえし。

つうかさ、前に学生がセクハラしたときは速攻で退学にしなかったっけ? たしか一橋祭の打ち上げで全裸で池落ちしたときだ。 でも教授が抱きつくと減給&戒告か。ふーん。利口な判断だな石弘光。 さすがは学生投票で「不」人気第一位だよ。

RHG のフォロー

そうですね。まず、対象にするのは CVS HEAD 版なのであと二年くらいはもつだろうと思ってます。つまり現時点 でまだ最先端に追従してます。まあそれにしたって本と CVS HEAD ではタイム ラグが出ざるを得ないわけですが、それはしかたないです。完全に通用すると きなんてどうせ一瞬しかないわけですから。

それに、今回はどちらかと言うと「rubyの実装を知る」ことが主眼ではありま せん。もちろんそれも重要なテーマの一つであるわけですが、すべてではあり ません。

まず第一にはソースコードを読む実際的な方法を書くという目的があります。 つまり『ソースコードを読む技術』は実は RHG のまえふりにすぎません。あ るいは RHG はその「実装」です。その場合はモノがあればよくてバージョン はどうでもよいです。

第二に「本物の」言語処理系を読むという目的があります。言語処理系には何 が必要なのか、何を考え書く必要があるのか、それについて書きます。本物の 言語処理系の解説本は現在にいたるまで Scheme Pascal gcc くらいしかなく (gcc のは英語だけかも)、実は意外と数が少ないです。ですから ruby のバー ジョンが多少古いところでそれらよりは遥かに新しいわけで、なにも問題あり ません。特に最初から日本語で書かれたものはないはずです。

第三に C 言語の定石を読むという目的があります。たとえばハッシュテーブ ル、関数ポインタを使った継承の実装、マクロの使いかた、autoconf など。 この場合も ruby は単に実例にすぎません。

第四にプログラム言語 Ruby をヨリ深く理解するという目的があります。プロ グラム言語は自然言語とは違うものであり、完璧に理解するにはなんだかんだ 言って処理系それ自体の理解が必須です。Ruby の本質を知るには ruby を読 むのが一番でしょう。「本質」はそうそう変化するものではないので、これも バージョンには関係ありません。

それから前に書いたようにウェブで公開する予定なので、あまりにも変わるよ うならそれなりのフォローはそちらでできると思います。というか、ウェブ公 開はそれも念頭に置いて進めています。

またもちろん解説するバージョンのソースは CVS から取って CD に入れます し、rubyの CVS レポジトリおよび cvs、cvsup も収録予定です (cvsup はサ イズ的にキツいかも)。メーリングリストの過去ログと検索セット一式も入れ ます。cvs を使って変更を追跡する方法と、メーリングリスト・ChangeLog の 解析についても本文中でやります。さらに、ぼくが Ruby で書いたソースコー ド解析ツールを一式入れて、本編でもそれを使いながら進みます。つまり徹底 的にツールを使って知りたいことを半自動で得られるようにすることで読者が 勝手に最新版に追従できるようにしてしまう (アップデートが必要なくなる) のを理想とします。

うーむ、我ながら完璧に宣伝モード。 ここは話半分に読んどいてください (^^;;;;

RHG のフォロー (追記)

ソースコードの解析用ツールは出版前に全部まとめてLGPL でリリースする予 定です。本音を言うと先にテストしておきたいから、なんですが、まあ無料& フリーで公開するからそれくらいは許しもらおうということで。

あともちろん global などライセンスのはっきりしてる ソースコード読みツールは添付したいと思ってます。

Ruby 関連パッケージもガシガシつっこむし。 リファレンスは当然入れるし。 書き下ろしの Ruby コア関数リファレンスも入る予定だし。 ReFe も入って検索はバッチリ。

できれば原稿も HTML 化して CD に入れたいっす。 本文のリストの関数名から定義やリファレンスに飛べたらすごいじゃないすか。 章間リンクもハイパーリンクで楽ちん。

※ そうすると本のいいところはなにかって話になってしまいますが、 それはそれであるんですね。図がキレイとか (EPS だからね)、 目が疲れないとか、いろいろ書きこめるとか、 著者にサインを書いてもらえるとか。最後のはいらねえな。

あ、そうだ、言いたい放題書いちゃいましたが、 出版前のリンク・引用はできるだけご勘弁願います。

あぁしかしこんなに大口たたいてしまっていいのか俺……。 マゾか? つーかマゾなのか?

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

たかはし [>いや、でも真面目な話、初刷で終わるのは避けたい。

そして増刷される頃にはRubyのバージョンと実装が変わっているという罠。
……実際のところ、その辺の(アフター)フォローをどうするか、計画されてますか?]

ただただし [自分を追い込まないと仕事できないタイプなんだね……(笑)]

あおき [あたりです。甘やかしてるととことん堕落します。]

woods [食事も甘やかしてるとできないタイプ?(^^;;
で、チャレンジに走るとか?]

あおき [財布のヒモを甘やかせないという事情が一番でかいです。
だめになったからって捨ててたら生きのびられません。]

たかはし [なるほど、第二・第三が充実していればそれだけでOKというのは納得です。
あと、メーリングリストの過去ログは「たのしいRuby」でも収録しようという話があったのですが、許諾をどうしようというところで面倒になってやめてしまったのでした。]

あおき [MLログはRuby本にも入ってたし、そう気にすることもないのでは?]

たかはし [まあ気にする必要はないのかもしれませんけど(黙認でも事後承諾でも著作権的にはOKでしょうし)、うるさい人が入っていたりすると厄介だなあと。]

すぎむし%いやあ、やっぱりアノ人でしたか。 [MLログは、心情的には、Webからとるようにしてほしいっす。
とくにUSENETを絡ませると厄介が…]


2002-07-20

そして今日も

7/17 賞味期限のサバ。同じく 7/17 賞味期限の刺身。 そして 7/10 賞味期限の納豆。 どう考えても刺身はヤヴァすぎるのでとりあえず焼いてみる。

マズっ。

JPEG

ぐおっ。なんだとお。GIF に続き JPEG までも特許攻撃とは……。 本当にアメリカの特許制度ってどうかしてない? なんなんだよこれは。 自分が儲かればそれでいいのか?

Transmeta

Crusoe の次バージョン開発断念か……。いいのになあ、Crusoe。 もう速度速度言う時代じゃねえだろ。他の CPU で作ったノート なんて一時間程度しか保たないじゃん。画面もモノクロでいいし、 ウィンドウすらいらねえよ。どうせ画面小さいんだから。それで しっかりキーがのってて余分なキーはなくて十時間保つノートが 欲しい。

ああ、おれも修行がたりないな。あんなダメダメな提案が 採用されるわけないんだから放置すべきだった。激しく後悔。

SKK

SKK のかなモードで z + lkjh を押すと →↑↓← が出せるということにいま始めて気付いた。 ついでにいろいろ試してみたところ z. で「…」 z, で「‥」 z/ で「・」 z- で「〜」などなどいろいろあるということがわかった。ショックだ。 これまで一生懸命変換で出してきた苦労はいったい……

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

arton [やばめな刺身は、味噌汁の具にするとなかなかいけます。]

なかだ [まぁ、ツッコむことに意義があるとかいってみるテスト。]


2002-07-21

DMA

わたなべさんとこから。

ふっ、家はイマドキのマシンだしー、当然デフォルトで ON だよっ♪

と思ってたのだけど……

# hdparm /dev/hda
 
/dev/hda:
 multcount    =  0 (off)
 I/O support  =  0 (default 16-bit)
 unmaskirq    =  0 (off)
 using_dma    =  0 (off)
 keepsettings =  0 (off)
 nowerr       =  0 (off)
 readonly     =  0 (off)
 readahead    =  8 (on)
 geometry     = 3737/255/63, sectors = 60036480, start = 0

ぐはァッ

信じてたのに……。

そういうわけで DMA をオンにしてみよう。

# hdparm -t /dev/hda
/dev/hda:
 Timing buffered disk reads:  32 MB in  7.62 seconds = 4.20 MB/sec
 
# hdparm -d1 /dev/hda
/dev/hda:
 setting using_dma to 1 (on)
 using_dma    =  1 (on)
 
# hdparm -t /dev/hda
/dev/hda:
 Timing buffered disk reads:  32 MB in  0.90 seconds =35.56 MB/sec

なっ……いままで 1/8 のスピードで使ってたってことですか? ドラゴンボールの重し付き道着じゃねえぞちくしょー!

※ 二回目の天下一武闘会で悟空が天津飯と戦ったときに脱いだやつね。 「あ……あわせて 100 キロはある」(だっけ?)

NLS

% bison parse.y
parse.y の中身は4 シフト/還元衝突 および 13 還元/還元衝突.

って、あの……。 ボランティアで訳してくださってるのに一方的に文句言うのはあれですが、 「の中身は」ってなんだぁぁぁ (笑)

原文だと parse.y contains 4 shift/reduce conflicts, 13 reduce/reduce conflicts. これは当然 「parse.yにはシフト・還元衝突4個と還元・還元衝突13個が含まれています。」 と訳すべきでしょう。訳した人はパーサジェネレータには疎かったのかな。

もうちょっと意訳すると 「parse.yの文法は衝突しています (shift/reduce: 4, reduce/reduce: 13)」 だな。

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

なかだ [パーサジェネレータにというよりは…(以下略)]

あおき [日本語、ですかね。]

さく [きっと、contains -> contents とでも誤読したのでしょう。]


2002-07-22

お食事ネタ三発

ヤバめの刺身は味噌汁……。今度入れてみるです。でもできればヤヴァくなる 前に食べたいです。

ついにヤバめの魚すらなくなりました。たんぱく質が足りなそうなのでとりあ えず味噌汁に卵を落としてごまかします。アレを思いだしますね、あれ。ほら、 小学校の家庭科で習った、栄養素が六つに分かれてるやつ。たんぱく質、炭水 化物、脂肪、ビタミン C、カロチン、ミネラル。子供心にも「ミネラル」って くくりがあまりに適当すぎると感じられたものです。かわいそうじゃないですか 各種ミネラルたちが。

久しぶりに「ほむら」を食べました。ねばりにねばった公共料金の支払いを 期日ギリギリにしたんですが、コンビニで払うとなんとなく他のものも 買ってしまうのです。ああ、コンビニの「ついで買い」戦略にハマってるなあ、 自分でも散々ハンコ押したんだから公共料金だけでもいいじゃないか、と思うのですが、 ついつい買ってしまうのです。弱気だ……。

ついで買い

「ついで買い」で思いだしました。セブンイレブンのマニュアルには 「公共料金はついで買いが期待できます」……と書いてあります。 実にわかりやすいです。

ちなみにファミマのマニュアルには書いてませんでした。 そんなことだから万年三位なんですね。 実にわかりやすいです。

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

ただただし [でも、マニュアルにそんなこと書いてもあんまり意味ないような……]


2002-07-23

マニュアルに書く効果

アルバイト向けのマニュアルにまでそういう「内部向けの」話を書くってことは、 バイトだろうとなんだろうと確固とした戦力としてとらえてるということ じゃないでしょうか。また教育効果としても 「こういう効果があるからやっているのだ」と言うのと、 「とにかくこれ全部やるのが君らの仕事だから、やって」と言うのとでは 前者のほうが明らかに説得的だし、当然士気も上がるでしょう。

宣言

いまから 36 時間はイーサネットケーブルを抜いて外部との接触を断ち 死ぬ気で原稿を書きます。

2002-07-23 12:00:00 +0900

こんなどーでもいいときですら唯一性が気になって ISO フォーマットを使ってしまうのはプログラマの性だろうか。

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

ただただし [なるほど、たしかにそこまで考えて書いてあれば、7-11恐るべし、だなぁ]

たむら [ぐわんばれー、原稿書き。]


2002-07-24

復活

ケーブルつなぎました。今日は 30KB くらい書いたみたいです。 このペースで一週間書いたら目標の 700KB か……身体がもつかな (^^;;;

でもケーブル切るとかなり早く書けるってことはよくわかりました。

ruby-dev

ぐあっ、ケーブル抜いてる間に激増してる!

そして明日も

どうやらこれからしばらくは地獄の日々になりそうです。 メールその他そうとう反応が遅れると思います。

まあそうそう急ぐ用事も起きないだろ。

「夢」は夢想の一文字目

あい。全力でがんばらせていただきます。 そうですっ、夢の 10 万部に向かって書きます!

※ 無理です。

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

たむら [力入れ過ぎるのも何ですが、期待してる人達のためにもガンバレ〜]

ken_u [はい、期待してます。でも無理せずほどほどに。]


2002-07-25

strscan

昼御飯たべてるあいだにアイデアを思いついたんですが 実装する余裕がなっしんぐなのでここにメモ。

現実的なスキャナを書くためのクラス。

lex = StringScanner::Lex.new
 
# 状態付きスキャナの場合、状態を定義する
# 最初に全部定義しとかないとローカル変数スコープの罠にはまる
# けどこのくらいは問題ないか。状態集合の定義にもなっててよいことだ。
st_word = lex.new_state
st_space = lex.new_state
 
# lex 自体に定義したアクションは全状態で通用する
# (ただし各状態のパターンのほうが優先)
lex.on_match(/\w+/) {|s|   # s = マッチした文字列
    lex.goto st_word       # 状態遷移
    break :IDENTIFIER, s   # 記号とその値
}
# 読み飛ばされる
lex.skip(/\s+/)
lex.skip(/\#.*/)
 
# stateに定義すると状態固有アクション
st_word.on_match(re1, re2) {|s|
    # 二つ以上の正規表現を渡すと or になる
    # (アクションの共有)
}
st_space.on_match(/\(/) {|s|
    ....
}
 
# クライアント (バイト列から記号列を得る)
lex.foreach_pair(str) do |sym, tok|
  ....
end

StringScanner に正規表現を複数連続で試すメソッドを C で定義すれば Lex クラスを Ruby で書いてもネイティブ Ruby コード並に早くなるんでは なかろうか。

column

ls みたく出力を縦横に並べたくて tabulate ってコマンドを 書いたんですが、column というコマンドがあるのですね。くそう。 でも Ruby ライブラリとしても使えるし、 一緒に書いた untabulate (tabulate の逆) はなかったからいいとしよう。

ちなみに columns というコマンドも発見したんですが、 シンボリックリンクでも張ってあるのかと思ったら こっちはゲームのコラムスでした。 どうやら cvsup を入れるときに入れた Module-3 にくっついてた模様。 補完効かなくなるもん入れるんじゃないよ。うざいので抹殺。

VS....?!

不覚でした。

まさかそんなものの賞味期限が切れるなんて思わないじゃないですか。

ソース、賞味期限 2002 年 1 月 21 日。

冷蔵庫をさらったら 7/1 賞味期限のヨーグルトも発見しましたよ。 なんなんだこの家は……

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

なかだ [うむむ、よく分かんなかったんすけど、こういうもの?

class Lex
class State
def initialize
@rules = []
end
def on_match(pattern, action = proc)
@rules << [pattern, action]
end
def match(src)
pattern, action, m = nil
@rules.each do |pattern, action|
return action.call(m) if m = src.match(pattern)
end
nil
end
end

def initialize
@current = @default = new_state
@stack = []
end
def goto(state)
@current = state
end
def push(state)
@stack.push(@current)
goto state
end
def pop
goto @stack.pop
end
def new_state
State.new(self)
end
def on_match(pattern, action = proc)
@default.on_match(pattern, action)
end
def foreach_pair(str)
src = StringScanner.new(str)
while t = @current.match(src)
yield t
end
end
end]

さく [一瞬、sauceじゃなくてsourceかと思ってしまいました。]

ただただし [それを狙って書いたのではないかと思ったのだが]

arton [そう言えば、賞味期限3ヶ月じゃなかったけな?(とっくに切れてる)]

woods [まあ、賞味期限切れみたいなソースって銀行とかだとごろごろしてるみたいですけどね。]

arton [銀行といえば、1999年12月31日が賞味期限ってのを大量に抱えてたとこですね。]


2002-07-27

ソースの件

本当は sauce なのか source code だったのか、 本人はどっちのつもりで書いたんでしょうね。もはや今となっては闇の中です。

ところで、賞味期限を過ぎたソースコードはやっぱり食べるとくだすんでしょうね。 コンパイラさんたちもそんなものは食べたくないだろうなあ。

そういえば 2ch に「コンパイラになりたい」っていうスレがあったなあ。 「リストラされそうなのでコンパイラに転職を考えているのですが、 どうすればなれるでしょうか」というやつ。

StringScanner::Lex

素早い…… (^^;;;

そういうものです。それだけだと手で書いたほうが短かくなりそうですけど、 「速そう」というとこがポイントでして。正規表現を併合しちゃえば多少は 速くなると思うんですけどね。本当に速くなるかなあ。うーん。

ブロック呼び出しのオーバーヘッドのほうがデカいような気がしてきました。 もうちょっと考えよ。

再断

これから 34 時間 30 分イーサネット切ります。

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

kjana [そして流れるようにシリアル接続に逃れて network reachability 確保? :-)]

eban [お約束的には、そんなソースを食べたらコアを吐くとか。]


2002-07-28

end_request: I/O error, dev 03:07, sector 917599

メインマシンのハードディスクがクラッシュ

どうしたらいいんだ…どうしたらいいんだーーーーー

li 10 10 10 10 10 10 10 10 10lo........

レスキューフロッピーまでいかれてるよ!!!

unexpected EOF.

Debianのディスクも死んでいるー!

ブートできない!

どうにかして原稿のレポジトリだけは救出しないと…

いや…これはクラッシュじゃなくてセクタ不良か?!

/dev/hda7だけ死んでる! これなら原稿は救出できる可能性が…

よしゃ/home生きてる

レポジトリは救出。これから原稿かいてるディレクトリを丸ごとコピーします。コピー終了。

善後策

これをどこに持っていくかだよなー、問題は。当面Windows2000をつぶしてLinuxいれとくしかないだろうか。

22日にフルバックアップしたとこなのが不幸中の幸いだった。

ケーブルつなぎ換えてhdaをhdbにして、生きてる領域を丸ごとコピーして…

あー、なんで原稿がテンパってるときにこういうことが起きるんだああああ

BIOS

最近のBIOSってハードディスクチェックついてないの? 「不良クラスタの検出」とか言うのがあったような気がしたんだけどなあ…

移行中

とりあえず別のHDDで復活。

cp -a /old/home/aamine /home/aamine

で強引に環境を引き継いでみる。さすがに時間がかかる。

まだ終わらない。暇だ。

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

arton [うーむ、マーフィーの法則……]

たむら [最近同様に HD が死んだものとしては「まだバックアップがあって良かったね」くらいしか言えないナリ]


2002-07-30

復旧

ようやくほとんどの環境が完全復活。 /home と /etc が生きてたのが運が良かったすね。 ついでに mozilla を 1.0 に上げたらいままで表示が変だったサイトが 全部直ってかなり嬉しい。

しかし、まいった。あの HDD は確か買って一年くらいなので、寿命短かすぎ。 めちゃ弱いと噂の DTLA なのがヤバかったのだろうか。今度のは評判のいい新 型の IC シリーズなのでもうちょっとがんばってほしい。

つうか、もう IBM はやめて Seagate にしようかなあ……。 IBMって妙に高いし。

復活してなかった

なんと LaTeX が入っていないということにいまさら気付く。 信じられない。どうやって原稿書く気だあっ。


<前月 | 最新 | 次月>
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|