http://i.loveruby.net/w/RipperTutorial.html
Ripper のチュートリアルを書いてみた。
いずれはしかるべきところにしかるべき形で移したいと思うが、 それがどこでどのような形になるのかは未定。 続きを書く時期も未定。 Ripper の実装が終わる時期も未定。
(22:14)
"Re: What is the Green Card Lottery?" という Subject の SPAM が来た。 なんか気になったのは、Green Card Lottery という単語が こないだの講義で出てきたからだ。 確か従軍するのとひきかえにアメリカの移民権がもらえるとか そういう話の中で出てきたような気がする。
調べてみると、従軍とひきかえにどーのこーのというのは Green Card Marines だった。 Green Card Lottery はより一般的な移民の話だな。 それだったら SPAM になるのも理解できる。
(22:57)
http://mput.dip.jp/mput/?date=20041130
> 自分のプロダクトでいかに「みんなが」幸せになれるか、 > を考えたときに、コンパイルさせるっていうのはそれだけで > 大きな disadvantage だと気付いたのです。
いやいや、自分が幸せになれるかどうかは重要ですよ。
俺は 6 つの OS と 5 つのアーキテクチャで Ruby と拡張ライブラリをコンパイルしまくった結果、 コンパイルさせるっていうのはそれだけで 「俺が」幸せになれないということに気付きました。
(23:40)
ちなみに上記の文は 「俺が、俺が幸せになれないと思った理由」は書いているが 「自分の幸せを考えたほうがよい理由」は書いていない。 それに気付きつつも理由を書かないのは、 「拡張ライブラリを作ると幸せになれない」 という結論が同じなら どうでもいいかなって思ったからである。
つまり、拡張ライブラリが人を幸せにするか (なかなか凄い命題だな)、 という問いに答えるにはコンパイルのコストだけを考えれば十分であり、 みんなのためを思う必要はないと言いたいのだ。
いや違うな。 問いは「拡張ライブラリが人を幸せにするか」であるべきで、 「拡張ライブラリが (自分以外の) みんなを幸せにするか」でも 「拡張ライブラリが俺を幸せにするか」でも不適切であると言いたいのだ。 また、その目的から考えると、 「自分の幸せを考えたほうがよい理由」 は書いても無駄になるばかりか、むしろ本来の目的を阻害する。
ではなぜそこを区別したいかというと、 ……うーむ、なんでだろうな。
(00:07)
AIX ではまだ ruby がコンパイルできてないので 6 つの OS と 5 つのアーキテクチャというのは嘘である。 が、数が大きいほうが面白そうなので嘘ついておいた。
(00:26)
うお、しまった。 まずメールサーバを新しいマシンに移さないとだめじゃん。 exim のビルドって面倒なんだよな、くそ……
ML ドライバはとりあえず tml を試してみることにした。
(22:29)
それにしても今日は getopts.rb の警告によくひっかかった。 stderr に出力があるといろんなアプリが止まってしまう。 POP サーバでひっかかり、tDiary ブリッジでひっかかり……。 そのたびに optparse に直してまわったのだが、実にアホくさい。
getopts.rb を使っていると getoptlong を使えと文句を言われるのだが、 はっきり言って getoptlong は失敗作だ。 あれは C 言語のインターフェイスよりもさらに悪化しているので救えない。 optparse にも文句がないこともないが、 getoptlong に比べれば百倍マシである。
問題は互換性だ。1.6 には optparse がないので、 1.6 から 1.9 まで警告フリーで通そうとすると getoptlong を使わざるをえない。苦痛だ。
ちなみに今の optparse のどこが嫌かと言うと、 --lines を定義していると -L が通ってしまうところだ。 あとから -L オプションが定義されたらどーすんの。
とか言ってるあいだに ruby-dev に投げるかな。 でもいま外への回線が切れてるみたいなんだよなあ。
(00:26)
http://www.mikihoshi.com/d/2004-12-08.html#200412080409310
おおっ! wema に矢印 (矢じり?) がついてる! ますます何がどうしてこうなってるのか気になる仕組みだ。 メニュー関係もえらく親切になったなあ。
それとは全然関係ないが「変なもの通」…… ぷよぷよですな。
(06:09)
http://www.sampou.org/cgi-bin/haskell.cgi?CategoryTheory%3a%b7%f7%cf%c0%ca%d9%b6%af%b2%f1&l=jp
そうか、11 日だったか……。 今週の土曜はバイトだから無理だなあ。
バイトじゃなくても無理か。
(06:15)
今度の Linux 本では読者のみなさんに 出版前レビューをしてもらおうかと思っています。 詳しい点については準備中ですが、 準備ができしだいここでアナウンスする予定です。
で、それを踏まえて先にお聞きしたいんですが、 本のレビューをしてみたいかた (特に初心者)っていますか? 内容は、Linux での C 言語プログラミング入門書です。 章目次は次のような感じ (仮)。
もしレビューをしてもいいというかたがいたら、 てきとーにツッコミを入れるなり、 リンクして言及してもらうなりしていただけると助かります。 正式な募集は数日中に出しますが、とりあえず傾向調査ってことで。
ただし、重要な条件として、対価は出ません。 人数によっては献本くらいはできるかもしれません。 利益は出版前に原稿を読んでケチつけられるってくらいです。
その逆に、何か言ったからと言って責任は一切発生しないので、 安心して文句をつけていただけます!
(06:40)
メールサーバを移動するのはやっぱりそれなりに影響あるなあ。 tDiary のツッコミメールとか mail コマンドが失敗していた。 そのおかげで 「あー全然反応ないよなーどこでレビュアー見付けたらいいんだろうシクシク」 と思ってたんだけど、日記見たらなんか大量にコメントがついてるし!
いんらいんあせんぶらを使えるよーな人は初心者とは言いません、 とか書いておくべきだったか。
などという話はどうでもいいとして、 予想外の盛況に驚いてます。 反応をくださった皆様ありがとうございます。
レビュー期間は 12 月いっぱいを予定していたんですが、 すでに 12/10 になっていることを考えると なんだかんだ言いつつ 1 月中旬あたりまで かかりそうな予感がしています。
対象読者は以下のような層を想定しています。
レビューの仕組みは結城さんの方法を参考にしましたが、 基本的には一対一ではなくてメーリングリスト上でやろうかと思ってます。 が、このへんは意見によっては変更します。
(02:54)
そーだ、zunda さんとこで出てた BitChannel のマージの話を忘れてた。 あれって確か CVS のバージョン依存なんですよね……。 昔 up -rREV + up -A でやってたのを up -jREV -jHEAD に直した経緯があるので、 単純に戻すわけにはいけないのは確かだと思うんです。 -ko にすれば全面的に解決するのかなーとも思うんですが、 何にしろ複数バージョンの CVS でチェックしないとどうにも言えなそう。
なんで -kb にしたのか思い出せないのも問題だ。
(03:12)
http://www.netbsd.org/Releases/formal-2.0/NetBSD-2.0.html
NetBSD がメジャーバージョンアップ。 この機会に AlphaStation 500 に NetBSD を入れ直そうかな。
とか言って、いつ作業するつもりなんですかねこの人。
(19:06)
TMail のバグレポートをもらった。 なかなか要領を得ないレポートだったが、 ようするに「Ruby のインストール先パスにスペースが入ってるので nmake が動かなくてインストールできないよ問題」らしい。
なんつーんですかね、シンクロニシティ? 同じ問題は集中して起きる法則? あるいは、同じ問題が同時に起きると印象に残るのでそういう事例ばかりが強調される法則? 統計的に言えば類似の問題はある程度集中するのが自然ですよの法則?
そんなメタな話は置いとくとして、 やっぱりこれは根本的に解決しないとまずいような気がする。 かと言って根本的な解決策なんてあまり思いつかない。
うーむ……。 根本的にはビルド機構 (make とシェルツール) を Ruby で書くのがベストかなあ。Windows を考慮に入れれば シェルとか make に可搬性がないのは明らかだ。 その一方、Ruby の拡張ライブラリを入れるからには Ruby が使えると仮定するのは自然である。 setup.rb もそういう前提のもとに作られている。 その setup.rb が仮定から外れた make という存在に関わるのはおかしい。
つまり extconf.rb は捨てて…… いや捨てなくてもいいな、create_makefile を置き換えれば十分だ。 make / Makefile を経由せずに直接情報をとりこみ、 自力でコンパイラその他を起動すればよい。
そういえば rake なんてのもあったなあ。 ruby-talk では setup.rb を rake に組み込めるようにしてくれって言われたけど、 上記の道筋では逆に、setup.rb に rake を組み込むほうがよいのかもしれん。
いや、そこまでいかなくてもいいかもしれないな。 どうせ setup.rb はインストールでは make を使ってないんだから、 あとはコンパイルだけ通せば十分じゃないだろうか。
さらに言えば困るのは Windows だけなんだから、 mswin32 なコンパイル環境だけごまかせれば十分だ。 これならなんとかなるかもしれないな。
(20:33)
CVS コマンドみたいなサブコマンドを OptionParser で実装する
~ % cat t require 'optparse' parser = OptionParser.new parser.on('-i') { puts "-i" } parser.on('-o') { puts '-o' } subparsers = Hash.new {|h,k| $stderr.puts "no such subcommand: #{k}" exit 1 } subparsers['add'] = OptionParser.new.on('-i') { puts "add -i" } subparsers['del'] = OptionParser.new.on('-i') { puts "del -i" } subparsers['list'] = OptionParser.new.on('-i') { puts "list -i" } parser.order!(ARGV) subparsers[ARGV.shift].parse!(ARGV) unless ARGV.empty? ~ % ruby t ~ % ruby t -i -i ~ % ruby t -i del -i -i del -i ~ % ruby t -o del -i -o del -i ~ % ruby t -i del -o -i /usr/lib/ruby/1.9/optparse.rb:1445:in `complete': invalid option: -o (OptionParser::InvalidOption) from /usr/lib/ruby/1.9/optparse.rb:1443:in `catch' from /usr/lib/ruby/1.9/optparse.rb:1443:in `complete' from /usr/lib/ruby/1.9/optparse.rb:1304:in `order!' from /usr/lib/ruby/1.9/optparse.rb:1273:in `catch' from /usr/lib/ruby/1.9/optparse.rb:1273:in `order!' from /usr/lib/ruby/1.9/optparse.rb:1353:in `permute!' from /usr/lib/ruby/1.9/optparse.rb:1380:in `parse!' from t:16
(23:34)
ML ドライバをインストールしようとしていたはずが ML ドライバを書きはじめてしまう罠、をなんとかくぐりぬけて、 FML が動いてくれました。やれやれ。
えーと次は CVS とウェブインターフェイスか。 これは稼働実績があるから簡単だろう。
(11:47)
http://www.networksorcery.com/enp/rfc/rfc2033.txt
exim の設定を探してるときに見付けたんだけど、 LMTP (Local Mail Transfer Protocol) ってのがあるのね。 SMTP の HELO/EHLO が LHLO になってるだけで、あとは SMTP と同じプロトコル。 通信路はソケットの代わりにパイプを使う。
(12:20)
ウェブインターフェイスも準備できた。
ここに来て困ったのが CVS レポジトリだ。 自作のレポジトリミラーツールは ローカル・ローカルのコピーしかできないのを忘れていた。
あ、そうか、古いほうには cvsup client があるから 新しいほうに cvsup server を入れれば cvsup で行けるかも。 試してみよう。
5 時からバイトだから、ちょっとは寝たいんだけどな。 それまでにできるだろうか。
というか火曜までのレポートが一本あるのを忘れていた。 やばい……
(12:22)
先日はたくさんの反応ありがとうございました。 現在執筆中の『やさしく書ける Linux プログラミング (仮)』の レビュアーを正式に募集します。 参加を希望するかたは以下のページの要項をお読みになり、 青木までメールでお知らせください。
前回も書いたとおり、 今回の本は Linux 上での C プログラミングの入門書です。 C 言語と Linux の簡単な操作については知っていることが 前提になっているので御注意ください。
なお、今回のレビューの要項を決定するにあたり、 結城浩さんの記事 「書籍執筆とオンラインレビュー」 がとても参考になりました。 有益な文書を提供してくださっている結城さんに感謝します。
(04:32)
http://www.hyuki.com/diary/200412#i20041214213636
ついに結城さんまで Haskell を!
Haskell 大流行ですな。
(02:56)
もの凄い勢いでレビュアの申し込みが来てます。 現在 24 名。どうもありがとうございます。
いまのところ、思っていたよりレベルの高いかたが多いですね。 Linux プログラミングという題名のせいか、 Linux 特有のかなりつっこんだ話を期待されているのかな。 実際にはかなり初歩の初歩って感じなので、 特に最初のほうはかなり退屈させてしまうかもしれません。 なにしろ第一章は「gcc をインストールしましょう〜」 「とりあえず Hello, World コンパイルしますよ〜」 「argv の構造」てなところから始まりますから。
あと複数のかたから原稿のフォーマットについて質問があったので ここでも答えておくと、原稿は RHG で使った独自フォーマットです。 基本的にはプレーンテキスト + α なので、 読むのに特にソフトが必要とかいうことはありません。 RHG の場合だとこんな感じです。
= オブジェクト == Rubyオブジェクトの構造 === 指針 この章からはいよいよ実際にrubyのソースコードを探索していく。 まずは当初の宣言通りオブジェクトの構造から始めるとしよう。 さて、オブジェクトがオブジェクトとして成立するにはどういう条件が必要だ ろうか。オブジェクトというものの説明は何通りもありうるが、本当に欠かせ ない条件は三つだ。即ち、 * 自分とその外を区別できる(アイデンティティを持つ) * 働きかけに反応することができる(メソッド) * 内部状態を持つ(インスタンス変数) である。本章ではこの三つの特徴をこの順番で確認していく。 対象となるファイルは主にruby.hであるが、 それに加えobject.c・class.c・variable.cなども 眺めながら進むことになる。 (略) === struct RHash struct RHashはRubyのハッシュテーブル、 Hashオブジェクトのための構造体である。 //list[struct_RHash][ruby.h / struct RHash]{ struct RHash { struct RBasic basic; struct st_table *tbl; int iter_lev; VALUE ifnone; }; //} struct st_tableのラッパーである。 st_tableについては@<chap>{name}で詳しく解説する。 ifnoneは対応付けられていなかったキーを検索したときの値で、 デフォルトはnil。iter_levはハッシュテーブル自体を リエントラント(マルチスレッドセーフ)にするための仕掛けである。 (略) //image[rdata][struct RDataのイメージ図]{ +VALUE+ +-struct RData-+ + struct XXXX + | ---------> | basic | | | +-----+ | data ---------------->| | | | | | +--------------+ +-------------- //}
(07:02)
事務手続きが滞っておりますが、 メールはちゃんと届いているので、 返事がこないかたはいましばらくお待ちください。 今日中には反応します。 いきなり今日レビューを始めたりすることはありませんので。
(07:39)
あせって返信しまくっているところですが、 半分くらいしか書かないうちに次の日になりそうです。 すみません……。どうも時間の見積もりが甘いんだよなあ。
(23:57)
徐々に直してはいるんですが、 あせったせいか最初のほうのメールが かなりぶっきらぼうになってしまいました。 不快に感じた方がいたらすみません。
さて、レビューへの参加はまだまだ受け付けているので、 我こそはと思うかたはご応募ください。 基本的には、レビューが終わるまでは (= 校了するまでは) 受け付けます。 要項は以下の URL にあります。
ちなみになぜメーリングリストを使うようにしたかと言うと、 一つは自分が慣れているから。 二つめは原稿配布の手間を減らすため。 三つめは、結城さんのレビュー後のアンケートを見ていると、 「他の人の意見も読んでみたい」という意見がけっこうあったからです。
メーリングリストを使うと議論が盛り上がりすぎる場合があるので P2P のほうがいいかとも思ったんですが、 こればかりはやってみないとわかりませんから。 ただ一つ心配なのは、特に初心者の場合、 メーリングリストで意見を述べるのが恐いと感じるかもしれないという点です。 この点を考慮して、レビューを出すのは青木個人宛でも ML でもいいということにしました。 ですが他人の意見を読むのは著者でなくとも面白いですから、 ぜひ怖がらずに ML に出してくれるといいなあと思います。
……というようなことこそ、レビュー用 ML で書くべきだよなあ。 あとで流そう。
ん、いや待てよ、ML に流すと自分のメールアドレスが知れるという問題があるな。 From は消したほうがいいだろうか。
(00:54)
12/18 04:00 までに届いたメールには返信しました。
人数はいまのところ 31 人。まだ増えるだろうか……。 全部に反応できるか、さすがに心配になってくる人数だな。
ところで、結城さんのレビューガイドだと、 参加するときのメールに書く項目として 「自己アピール」というのがある。 別になくてもいいかなーと思って省略したんだけど、 この項目がないと返事が書きにくいということがよくわかった。 次からはこれと「応募した理由」を入れよう。
えーと次は ML にテストメール投げて、 とりあえず第一章を流そうかな。
いやその前に (すでに締切が過ぎてる) レポート書こ。
とか言いつつメールを投げてみた。 ちゃんと動いてるかな?
(08:29)
CVS レポジトリの一部だけを 外から見えないようにしたいのだが、方法を思いつかない。 いまはとりあえず cvsup 直後に rm -rf してごまかしてるんだけど、 もうちょっとまともな解決方法が欲しいな。
ちなみに subversion では そういうこともできるのだろうか。
(08:49)
早くもたくさんの反応を受け取っています。 ありがとうございます。
レビュー 1 回目のの感想。
さて、バイトに行くまでにどれだけ直せるかな。
いや、今日は直すよりも先を出したほうがいいか。 せっかくレビューするなら読んでもらう時間を長く取ったほうがいいよな。
(12:32)
今日中に 2 章を出す! 出すんだよ!
ということは、17:00 からバイトなので 16:00 までには出さないといけない。いそげー
……あぁぁ、今日月曜か。 月曜のバイトはきついんだよなあ。 絶対に荷物が処理しきれないしさ。
(15:01)
かっこ 9 まで来るのは BitChannel の日本語ページ名を うだうだ考えてたとき以来ではなかろうか。
第 2 章は結構重要な章なので他の章より考えて 書かなければいかんという思いがある。 しかしそんなことばかり言ってると完成しない言い訳にもなるので、 まず見せてしまって恥をかくのも重要だろう。
レビューの副作用として、 著者のモチベーションが上がるという点がある。 著者と編集者くらいしか読まない場合と、 一般の人に見てもらう場合ではぜんぜん緊張感が違う。
こころもち速度も上がるようだ。
(15:38)
12 月 21 日正午賞味期限切れのおにぎりが 3 つある。
とりあえず割ってにおいをかいでみる。 問題なさそうだ。
食う。米の水分が抜けきってパサパサ。 まずい。食えたもんじゃない。
なんとなく腹痛がしたような気がするが気のせいだろう。
(12:14)
「ひのよーじん」やってきた。さみーよ。
しかし途中で思ったんだけど、 あれってなんで「火の用心」なんだろうね。 フツーに考えたら「火に用心」だろ? 「の」ってなんだよ「の」って。
で由来を調べた。
「火の用心」というフレーズが最初に使われたのは 慶安元年のお触れ書きらしい。
「町中の者は交代で夜番すべし。 月行事はときどき夜番を見回るべし。 店子たちは各々火の用心を厳重にすべし」
なるほどね。 この文脈なら「火の用心」でないとおかしい。 納得した。
(22:34)
レビュアーのみなさんから もらった意見に返信しつつ本文をグシグシ直す。
ょゎさんのメールに返信してるとちゅうで力尽きた。 いちど寝よう。
明日からはバイトない日は「一章流す + 返信」、 バイトある日は「一章流す」でいきたい。 後ろのほうが読みたい人もいそうだし、 とにかく原稿を耳揃えて出してしまおう。
(05:16)
Ruby 1.8 の drb のテストが通らない。いろいろやってみて、 なぜか ./drb/drb.rb を置いておくと問題が起こらないことがわかった。 しかし 1.8.2p4 のライブラリである /usr/local/pkg/ruby-1.8.2p4/lib/ruby/1.9/drb/drb.rb と ./drb/drb.rb は全く同じだ。
なーんか変だなあと思って ruby に -d を付けてみると、 こんなログが出てきた。
Exception `TypeError' at /usr/local/pkg/ruby-ccc/lib/ruby/1.9/drb/drb.rb:395 - can't dump
/usr/local/pkg/ruby-ccc というプリフィクスはどっから出てきたんだ? もしかして system で ruby を起動してるのか。 調べてみると、ruby のパスは test/ruby/envutils.rb で検出されているようだ。
def rubybin if ruby = ENV["RUBY"] return ruby end
あ。
tunami:~/src/ruby-1.8 % echo $RUBY ruby tunami:~/src/ruby-1.8 % ruby --version ruby 1.9.0 (2004-12-08) [alphaev6-osf5.1b]
ごめんなさいわたしが悪うございました。 unset RUBY したら全部 pass した。
(05:44)
Debian の cron は /etc/cron.d を自動的にチェックしてくれる。 ただしファイル名は [a-zA-Z_0-9\-]+ でなければならない。
んで /etc/cron.d/local.cvs とか作って、 動かないことに悩むのであった。
(09:52)
cvs.loveruby.net の実体サーバをすりかえた。 残るは DNS とウェブかー。 DNS はもう用意できてるからルータの設定を変えれば終わりだけど、 ウェブが……。 tDiary と BitChannel が難敵だ。
(10:24)
なんで急にサーバを移動しはじめたかというと、 もう管理コストが限界だから。 2 台あると面倒でしかたない。 ついでに、手の空いたマシンを Fedora Core のテストに使おうという目論見もある。
(15:53)
いまさら自分で言うのもアレだが、setup.rb て結構便利だな。 setup.rb に対応してないパッケージでも、 たいていファイルを並びかるだけで setup.rb が使えてしまう。 サーバで使ってる Ruby のライブラリがたくさんあるんだけど、 これも全部まとめて packages/ に展開しておけば あとは setup.rb インターフェイスで全部一気にビルド・インストールできる。 別ディレクトリでのビルドに対応してるのも便利だ。
(17:33)
1.9.0 2004-11-18 だと tdiarygrep がエラーになるよー ということで最新にアップデートしたら 今度は Ruby/GD がコンパイルに失敗した。 うわ、stdio 捨ての影響か。
意地でコンパイルだ → http://i.loveruby.net/archive/d/rubygd-nonstdio.txt
(19:08)
中田さんのパッチを当てたら parse error が出たので とりあえずコンパイル通してついでに -Wall もかけといた (条件式中の代入は除く) → http://i.loveruby.net/archive/d/GD.c-nobu.txt
tdiarytimes は問題なく動いているようだ。
(07:34)
急にこんなアクセスが増えた。何のアプリケーションを狙った攻撃だろ。
[Sun Dec 26 02:06:55 2004] [error] [client 209.120.238.130] (36)File name too long: access to /d/20040822.html&highlight=%27%2esystem(chr(99)%2echr(100)%2echr(32) %2echr(47)%2echr(116)%2echr(109)%2echr(112)%2echr(59)%2echr(119)%2echr(103) %2echr(101)%2echr(116)%2echr(32)%2echr(119)%2echr(119)%2echr(119)%2echr(46) %2echr(118....
(07:49)
散々混乱させてくれたサーバ分裂も ようやく片付けたことだし、原稿に戻ろう。 ずいぶん遅れちゃったなあ。 今日は 1 章分の返信を終わらせて 4 章を出そう。
というか、このままだと何日かかるんだ。 まず不可能なペースだが毎日 1 章出したとして、
6 日には大学が始まるから、 それまでに宿題もやんないといけないし。 そういえばレポートもあったような気がするな。 というかこれは流す日程であってレビューが終わる日程ではないんだから、 反応をもらってそれをとりこむのはもっと遅くなるわけだ。
2 章同時に出すしかないか。 まがりなりにも一回書き終わってるわけだから、 短い章なら出せそうな気もする。
とにかく今週が山場だということはよくわかった。
(08:16)
ウダウダ言ってるあいだに書けって話もあるが、 俺は日記ドリブンだからなあ (日記にウダウダ書きながらやることを考える)。 日記に何も書いてないときはだいたい活動力が落ちてると考えていい。
[ruby-talk:124368] Re: All I want to do is move a directory :(
FileUtils.mv が自分の思った通りに動かなくて怒ってるらしい。 知るか。その操作は mv じゃないってだけじゃん。
だいたい、移動先の .trash/ という名前からすると ゴミ箱を作ろうとしてるんだろ。 それなら上書きしちゃだめだと思うんだよな。 同名のディレクトリがあったら dir.1 とかにバックアップしなきゃ。
あとは rename(2) の挙動の話だけど、 rename 先に空のディレクトリがあった場合だけ 踏み潰されるってのは rename としては正しい挙動。 mv がどうするかは別問題だけど。
(09:00)
突然思い出したけど、ruby に rpath が 埋め込まれるようになったのは地味に便利だ。 prefix=/usr/pkg/ruby-20041226 とかしてても --enable-shared が動く。
(10:06)
昨日のサーバ移動の結果、レビュー関係のシステムは次のようになった。
/var/cvs/linuxintro /var/cvs/jail/linuxintro +-----------------+ mirror-repository.rb +-----------------+ | CVS repository | ----------------------> | CVS repository | ← remote CVS +-----------------+ (cron, 15") +-----------------+ → ↓(cron, 15") +-----------------+ | CVS working copy| +-----------------+ ↓↑ +-----------------+ | BitChannel | +-----------------+
昨日までは mirror-repository.rb のところで物理的にマシンをまたいでおり、 そのためだけに cvsup が動いてたりしてメチャクチャ面倒だった。 今はそれに比べればかなりマシ。
また、見せないでおきたいファイルがあるときは mirror-repository.rb の時点で除外してしまう。 これも昨日まではまず jail 内に cvsup してから rm していた。
それに加えてややこしかったのが NIS と DNS の干渉。 NIS と DNS で同じエントリを入れてあるんだけど、 nsswitch.conf で nis を先にしておいてもなぜか DNS が優先されてしまう。 他のマシンからだと問題ないんだけど。
(11:03)
しまったー! FileUtils.mv が Windows でファイル上書きしなくなってる。
1.8.1 からすでにそうなってるのか。 よく文句が来なかったなあ……。
(14:57)
いちおう書き終わったはずなのに、 なんでこんなに手直しに時間がかかるんだろう? 分量も増える一方だ。 ついにレシピブックの分量を越えちゃったよ……。
このツケはおそらく最後の httpd に まわってくるのだろうな。
(01:33)
FastCGI な BitChannel プロセスが 16 個も動いてる。 しかも SIGTERM に反応しない。
いったい何のせいだろう。 いろいろ条件が変わってるから疑える点はいくらでもある。
困った。まあ、たぶん UNIX ソケットがらみだと思うので、 BitChannel か、fcgi.rb か、最悪でも ruby レベルで済むとは思うんだが。
(07:01)
ついに最後のサーバになった。 DNS も移動。
DNS はしくじったときに気付くのが難しいんだよな。 いろんなところでキャッシュされるから時間もかかるし。
(07:30)
http://namazu.org/~satoru/blog/archives/000015.html
期待のソースコード検索エンジン gonzui のバージョン 0.2 がリリース。
Ruby のソースコードの解析には Ripper を使用。 うう、バグ出そう…… (弱気)
(15:47)
6 章「head コマンドを作る」を送付。
で、いまだに 2 章の直しを考え中。 半日悩んだ甲斐あって、わりといい修正を考えついた。 ような気がする。
(23:50)
よーやく前サーバ機を止めた。 そのとき、サーバといっしょに UPS を止めたら ハブがささってて大慌てさ! (笑)
笑ってる場合じゃありません。
しかし、ほぼ 3 年半も動いてたんだな。 Celeron な安サーバのくせに (しかもメインマシンからの転用のくせに) よく動いてくれたもんだ。HDD 容量と OS バージョンの問題さえなければ まだまだ使ってただろうし (なにしろ /var が 2GB しかなかった)。
(18:01)
今年もあと 2 時間か。 ちょっとだけ振り返ろう。
今年はレシピブックが出たのが一番かな? そしてLinux プログラミング本も出るはずだったが出なかった、と。
あれ、BitChannelって今年だったっけ。 もっと長くやってるような気がしてた。
あいかわらずマシンも増えた。 AlphaServer DS20 導入。AIX 導入。
うーむ、いまひとつインパクトに欠ける。 まあ今年は全体的にコンピュータ方面から 遠くなってたからしかたないか。
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.
Before...
■ dan5 [そろそろ自称初心者をやめようかなと思っているレベルなので対象としては合っているかもしれません。]
■ tokuhirom [C言語の文法はわかるのですが、実用的なプログラムを作ったことがないようなレベルなので、是非レビューさせて欲しいです。]
■ zunda [本のレビューの初心者です。C言語のほぼ初心者です。どれくらい素早くレビューできるかわかりませんが、少し時間に余裕をいただけるのだったらレビューしたいです。]
■ nobsun [早く読みたいという欲求おさえがたく。。。]
■ ささだ [りなっくすでしーげんごのしょしんしゃです]
■ まつもと [りなっくすでしーげんごのしょしんしゃです。]
■ yoko [desktopとしてだけLinuxを使っています。Cは完全に初心者です。
レビューだったら投げずに最後まで読めるような気がするので
やってみたいです。]
■ babie [それぞれ単体では使いますが、LinuxでC言語の組み合わせはやったことありません。
レビュー開始時はRLRも終わっているだろうし...orz]
■ noritada [Linux は日々愛用していますが C 言語は文法が分かる程度で、
既存のコードの簡単な部分だけ直すのならまだしも、
実用的な大きなプログラムを作るにはまだまだ知識が足りません。
レビューに興味があります。]
■ arton [LinuxでCの初心者です。というか、単純にファンです。]
■ bakkyo [教育現場にて Linux プログラミングのレクチャをしている者です。
初心者に教えるという視点で、あるいはそういった資料を作成してきた者として
有益なフィードバックが可能だと思います。]
■ imoya [本が出るの楽しみにしてました。
Cは文法がわかるくらい。
Linuxでの開発は経験ありません。
レビューやってみたいです。]
■ h12o [レビューは、関連分野を勉強するいいきっかけになるので好きです。レビューしてみたいなあ、と思っています。]
■ たかはし [ふだんはPHP使いで、Cはほんとに初心者なうちの後輩が興味を持ってるようです。本気で初心者なので、そーゆーひとの感想(説明がぜんぜん難しすぎでダメだとか)が求められているのならよいんじゃないかと。]
■ ksaito [普段はMacOSXですが、仕事では組み込みLinuxとかなので、べんきょうできるとうれしいです。れびゅうに、まぜてください(遊びに入りたい小学生風に)。]
■ ksaito [えーっとふざけすぎたかもしれませんが、基板上でも動作確認できますよ、って意味にとってくださいませ。]
■ hiro [ 正直、C言語の本は書店に溢れかえっていて、もう要らんよ。
と思っていましたが、
青木さんの「筆調」の大ファンなもんですから(切れ味鋭い
とこが好きです)、やっぱり女房に内緒で買ってしまうんだろ
なあ、と思っています。
どうせ買いますから、運が良ければ早く読みたいってだけ
です。]
■ いろいろしょしんしゃzunda [cvs-1.11.6 (SuSE 9.0)、1.11.17 (Momonga 1)、1.11.1p1 (SunOS 5.8?)でconflictするような編集を試してみましたが、どれでも、-koで、up -j#{rev} -jHEAD ではconflictしてくれずに後の編集が勝ってしまいました。ご報告まで。]
■ なな [はじめまして。結城さんサイトでこちらの話題を知りました。レビューに興味があります。実務でJavaを1年半書いてますが・・・C&Linuxは初心者です(涙) 家に環境はあります。]
■ kmiya [はじめまして。本のレビューにとても興味があります。是非やってみたいです。プログラミングはもう数年やってますが何せFortranなので、(JavaやCは趣味でやった程度です)是非是非レビューやってみたいです。]