今度は "TeX capacity exceeded" って言われて \tableofcontents が動かない……。 \tableofcontents だけのファイルでもだめだから これは絶対にこっちの間違いじゃないぞ。
文字コードかとか改行コードとか疑って全部確認してみたけどまだだめだ。途 中に変な文字があるのかと思って怪しげな半角文字 (?) みたいのを全部消し てみたけどまだだめだ。
もうやだ。本当にもう嫌だ。リスト前後の横線の上下の空白がどーやっても 消えないし……。こんなに苦労するくらいなら最初から PostScript に 落とすほうがまだ楽なんじゃないのかって気がするな。はあ……。
……あ! 適当にコメントにしたら動いた!
\newcommand{\tableofcontents}{% % \if@twocolumn % \@restonecoltrue\onecolumn % \else % \@restonecolfalse % \fi % \chapter*{\contentsname % \@mkboth{\contentsname}{\contentsname}}% \@starttoc{toc}% \if@restonecol\twocolumn\fi }
なーぜーだぁぁぁぁぁ!
ああ……なんでこう LaTeX って達成感がないんだろうな。 苦労しても徒労感しか残らねえ。 世界から一刻も早く TeX が絶滅してくれることを祈ります。
ううむ、stack_size を上げろということですが…… 実はこの前、既にやったのです。「こんなチマチマしい値にしてんぢゃねえよ!」 つうことで 300 → 100000 に上げてやりました。でもやっぱり exceeded と 言われるんですね。
大きすぎたのかなあと思って控えめに 500 にしてみたり、 とりあえず jsbook.cls を最新にしてみたり、 他の値も片端から三十倍くらいにしてみたりと、 安易な手段はほとんどやったんですが、まだ直らないんですね。
Google で検索すると、どうも Mac の LaTeX 2.1 で同じような 問題が出ていて、2.2 にすると直るということなんですが、 家の LaTeX は既に ptex 3.0.1 なんすよ。だから、もしかして そのへんのバグが再発してるのかなあ、と疑ってます。
あと三日だというのに報告して直してもらってインストールしなおす 余裕もないし、最終的に出版社で印刷できればいいやー、と思うことに しました (適当)。
大丈夫そうだ。/usr/local/bin/ruby から /usr/bin/ruby に シンボリックリンク張っただけだけというお手軽な解決法。
やっぱねえ、仕事するなら自宅以外でやるほうがいいっすね。 と、今回 RHG を書いてて思いました。切り替えができなくなるんだな。 相当に自分に厳しい人でないとうまくいかないと思います。 ぼくは自分に思いきり甘い人間なので無理です (でした)。
それでもいくつか身に付けた時間管理のコツを挙げるなら こんなところではないかと。
……つーか、こんなんだからだめなんだな。はぁ〜。
あの…… jsbook で検索すると七番目にココが来るのは どうかと思う。まじで。そんなわけで罪滅ぼしにリンク 張りまくっておきますよ。
jsbook.cls と言うのは奥村晴彦さんという方が作ってらっしゃる 「pLaTeX2e 新ドキュメントクラス」です。場所はここ。
http://www.matsusaka-u.ac.jp/~okumura/jsclasses/
奥村さんは『LaTeX2e美文書作成入門』という本の著者でもありますね。 こっちのほうが有名かもしれません。つーかこれはいい本です。 (本当は TeX なんか消えてなくなれと思っていても他に選択肢がないのでやむを得ず) LaTeX を使うならこの本を買うしかないでしょう。
ぼくが最初に買ったのは『日本語 LaTeX2eブック』というやつなんですが、 あれはイマイチでした。日本語 ptex を開発した方の著書だそうですが、 自分で開発したもんだと「ここは苦労したから……」とかいろいろ邪念が 入るんでしょうね。というか入ります。よほど注意しないと絶対に入ります。 無道編では入りまくりました。気を付けましょう (誰がだ)。
おお、柳川さんありがとうございます。 改めてリンクしとこう。
「日本語 TeX 情報」 http://www.matsusaka-u.ac.jp/~okumura/texfaq/
でも Google ロボットって月末にまわるんだっけ?
絵を描く。
そういえば小学校のときに「ひろめ」「ふかめ」という自由研究みたいな 時間があったんです。好きなことを調査して最後に新聞形式でまとめるんですが、 その新聞がこないだ出てきたんです。んでその題名が
IE。
ちなみに内容は建築に関することでした (基礎設計とか)。
十二年たっても思考パターンが同じってことですかね?
えー、締切までー、あと -4 時間となりましたー。
だというのになんで今ごろ索引つけてるんでしょうねこのバカは。 しかも超重要な図が書いてないのに気付いたらしいよ。 しかも文章の辻褄が合ってないところを五個所くらい見付けたらしいよ。 しかもリファレンスを書いただけでフォーマット変換してないことを忘れてたらしいよ。 しかも後書きを書いてないことを今思い出したよ。
……なぁぁぁぁに、出版社が開くまでにはあと五時間もあるじゃないですか! しかも打ち合わせは午後二時じゃないですか! まだまだ粘るぜ。
索引は 14 章『評価器の構造』まで完了。 ここを過ぎればあと少しだ。 つうか第二部 (パーサ) の章はどれもこれも長すぎなのじゃ。 だってこんな感じだぜっ?! (数字は行)
0 intro.rd 215 | 0 1 導入 abstract.rd 936 | 0 2 Ruby言語ミニマム minimum.rd 1238 | 17 第一部 3 オブジェクト object.rd 1011 | 0 4 名前と名前表 name.rd 547 | 0 5 クラスとモジュール class.rd 1401 | 1 6 ガ−ベージコレクション gc.rd 1496 | 0 7 変数と定数 variable.rd 557 | 0 8 セキュリティ security.rd 147 | 0 9 Ruby言語の詳細 spec.rd 1498 | 7 10 速習^yacc^ yacc.rd 857 | 0 第二部 11 パーサ parser.rd 1771 | 0 12 状態付きスキャナ contextual.rd 1716 | 0 13 構文木の構築 syntree.rd 1450 | 0 第三部 14 評価器の構造 evaluator.rd 1157 | 0 15 コンテキスト module.rd 1443 | 4 16 メソッド method.rd 794 | 1 17 ブロック iterator.rd 948 | 0 18 動的評価 anyeval.rd 605 | 0 第四部 19 ロード load.rd 861 | 0 20 スレッド thread.rd 999 | 0 21 Rubyの未来 fin.rd 305 | 0
どー見ても変でしょ? 変でしょ?! なんで第二部だけ全部 1500 行クラスなの? 評価器 (eval.c) より長いんだよ?
まあねえ。原因は明らかに状態付きスキャナなんだけどな。 あの結末をやりたいがため (だけ) にいったい何ページ増えてることか (30 ページくらいかな?)。普通の人ならあの章は削って 11 章の「パーサ」を「パーサ」と「スキャナ」に分けるだろうな。 でも普通の人じゃないから分けてあげない。
■ たむら [泣いても笑っても本当に、あと少しですね。]
いま最終版を送りました……。 メールを出した瞬間、参考書籍を書いてないことに気付いて慌てて書きました。 すんげえ不安です。これは絶対なんかあります。 でも眠すぎて頭が働かないので打ち合わせまでとりあえず寝ます。
あ。後書きをすげえ適当に終わらせてしまったのを思い出した。 やだなあ。直したい。
応援してくださったみなさん、本当にありがとうございました。 みなさんが応援してくださったからこそ最後まで書き終えることが できました。
そういえば、そもそも書き始めたのも たむらさんや小林さんが プッシュしてくれたからなんですよねえ。ぼくはどっちかというと 「えー、そんなマイナーネタで? マジ? 本当?」という感じでしたから。 最初にインプレス行ったときにも、もう、思いきり聞きましたよ。 「どうしてこの本出そうと思ったんですか?」と。 それは著者が言うことじゃないだろう (笑)
しかし本当に終わったのかなあ。なんか心配になってきた。
……つーか、CD-ROM イメージ作ってないじゃん! やばっ! 全然終わってねえよ!
あー、図は外注になるみたいなんですがー。 なんかねえ、不安なんだよねえ。おれの図ってちょっと特殊だしさ。 できれば自分で書きたいとこですね。でもあれなんですよ、 いまだに日本語が出ないんですよ。
つうわけで tgif で日本語を出すためにいろいろやりました。 と言ってもうちに入ってるのは tgif 4.1.16 なのですでに マルチバイト対応なのですね。ゆえに X リソースだけ直せば OK です。
しかし X リソースは相変らず面倒だね。 書き換えても xrdb ~/.Xdefaults するのをよく忘れるんだな (このコマンド名自体もよく忘れる)。 書き換えたら勝手に読み直してくれるくらいの甲斐性はないのか。 せめて X アプリケーション起動時にチェックするくらいのことは してくれてもよかないか。実に貧乏症だよなあ。せこいよ。
まあそれはいいとして、tgif のリソースはウェブから拾ってコピペ。 こんな感じで。
!!!! for tgif 4.0 Tgif.InitialFont: Ryumin Tgif.Foreground: Black Tgif.Background: White Tgif.BorderColor: DarkGray Tgif.ReverseVideo: off Tgif.RubberBandColor: DarkGreen ! DoubleByte related ! Tgif.DefaultSingleByteFont: Helvetica Tgif.SquareDoubleByteFonts: \n\ -*-fixed-medium-r-normal--%d-*-*-*-*-*-jisx0208.1983-*,H,Ryumin-Light-EUC-H\n\ -*-fixed-medium-r-normal--%d-*-*-*-*-*-jisx0208.1983-*,H,Ryumin-Light-EUC-H\n\ -*-fixed-medium-r-normal--%d-*-*-*-*-*-jisx0208.1983-*,H,Ryumin-Light-EUC-H\n\ -*-fixed-medium-r-normal--%d-*-*-*-*-*-jisx0208.1983-*,H,Ryumin-Light-EUC-H\n\ \n\ -*-gothic-medium-r-normal--%d-*-*-*-*-*-jisx0208.1983-*,H,GothicBBB-Medium-EUC-H\n\ -*-gothic-medium-r-normal--%d-*-*-*-*-*-jisx0208.1983-*,H,GothicBBB-Medium-EUC-H\n\ -*-gothic-medium-r-normal--%d-*-*-*-*-*-jisx0208.1983-*,H,GothicBBB-Medium-EUC-H\n\ -*-gothic-medium-r-normal--%d-*-*-*-*-*-jisx0208.1983-*,H,GothicBBB-Medium-EUC-H Tgif.HKUShowFontChar: \244\244 Tgif.GBShowFontChar: \271\372 Tgif.RyuminShowFontChar: \244\242 Tgif.GothicBBBShowFontChar: \244\316 Tgif.NISPOPShowFontChar: \244\321 Tgif.NISZ10ShowFontChar: \244\323 Tgif.HKSGYOShowFontChar: \244\327 Tgif.HKSKAIShowFontChar: \244\331 Tgif.HKSKOINShowFontChar: \244\333 Tgif.HKSREIShowFontChar: \244\335 Tgif.HKSTENShowFontChar: \244\337 Tgif.WatanabeShowFontChar: \244\244 Tgif.WadalabShowFontChar: \244\325 Tgif.DoubleByteInputMethod: kinput2 ! Tgif.DoubleByteInputMethod: skkinput ! Tgif.DoubleByteInputMethod: xim Tgif.UseNKF: true Tgif.CopyAndPasteJIS: true !Tgif.PreeditType: root Tgif.PreeditType: overthespot Tgif.Lang: ja_JP.EUC ! Tgif.Lang: ja_JP.ujis ! Tgif.Modifiers: false Tgif.Modifiers: "@im=kinput2" Tgif.ConvSelection: _JAPANESE_CONVERSION Tgif.FontSizes: 4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,65,70,75,80,85,90,100,110,120,130,140,150 Tgif.MenuFontSet: a14,k14,r14 Tgif.LocaleDir: /usr/share/ Tgif*InitialPaperSize: 21cm x 29.7cm Tgif*GridSystem: Metric
いちいちチェックするのも面倒なんでまさにそのままっす。 input method を (skkinput なのに) kinput2 で揃えないといけない というところでちょっとハマった。
入力開始は Ctrl + Space、終了は Shift + Space でとても気持ち悪い。
LaTeX に張り込むとなると EPS に出すわけですね。 それ自体は tgif の「印刷」ボタンをポチッと押せば終了。 「印刷」のくせにファイルに書き出すところがなんか嫌だけどな。
……おかしい……gv でちゃんと出ない。 日本語を書いたところがカットされて下半分だけ表示されてしまう。 なんでだろう。
む、ゴシックだと出力された。しかしやはり表示位置が下にずれている。 これはいったいなんだろう。(続く)
どうやらフォント設定の間違いとかそういうことではなく、 単に上が切れているようだ。日本語が入っていてもいなくても 上が切れる。リソースの指定で何かヘマったのだろうか。
■
新井 [Xdefaults は、xrdb -load しなければ、.Xdefaults の書き換えだけで済む
んではなかったかな?
試しに xrdb -remove して、.Xdefaults 書き換えて X クライアント実行すると、
.Xdefaults の変更が反映されました。
その代わり、xrdb -load しなければ、X クライアントが実行されるホストの
.Xdefault が参照されるから複数のホスト上でXクライアント動かすときに不
便だった覚えあり。xrdb -load してればXサーバ側の .Xdefaults で集中管理
できる(ちょっとうろ覚え)]
Hacking Guide は出版されてないけど復活してみた。 そもそも、日記まるごと止める必要はなかったのだ。
図 120 枚、一気描き終了。tgif に関しては この一週間で既に半生分以上は学んだのではなかろうか。
ちなみに LaTeX は一生涯分の 1/100 も覚えた気がしません。 もう当分 LaTeX は勘弁してください。次は EWB がいいです。
そっかあ。.Xdefaults はリロードしなくていいんですか。
X……すまんかった。おれが悪かった。 見ためが「バツ」でも、 フォントまわりの API がダメダメでも、 描画が遅くても、 リソースファイルの書式が不自由極まりなくても、 「X 入れたら安定性は Linux より NT のが上」とか言われてても、 リソースデータベースのリロードは必要ないんだね! わーい!
update.rb の #! が消してあったりして手間取ってしまった。 chmod 644 すれば済むことなのに、 なんでそんなことをしたのだろう。 謎だ。
締切一時間前に突貫工事でやったから忘れてたけど、 参考文献を入れようと思って \thebibliography を使ったら またも謎の tex capacity exceeded. に襲われたのだった。
しかし今度は慣れたものだ。どうやら \chapter* があると ヤバそうなので、適当に jsbook.cls の定義部をコメントアウトしてみる。 とりあえずこんな感じで。
\newenvironment{thebibliography}[1]{% % \global\let\@secapp\relax % \chapter*{\bibname\@mkboth{\bibname}{\bibname}}% \list{\@biblabel{\@arabic\c@enumiv}}% {\settowidth\labelwidth{\@biblabel{#1}}% \leftmargin\labelwidth \advance\leftmargin\labelsep \@openbib@code \usecounter{enumiv}% \let\p@enumiv\@empty \renewcommand\theenumiv{\@arabic\c@enumiv}}%
動いた。……なんでだー! やっぱどこかでコンパイルに失敗してるのかなあ。うーん。
rb_protect 書いたっけ。
~/t/rhg % grep rb_protect *.rd ~/t/rhg %
ないらしい。
まあ、超強力 rescue みたいなもんですね。というのはいくらなんでも酷いので もうちょいとだけ正確に言うと、ruby の評価器が内部で使ってるタグジャンプ (その実体は setjmp/longjmp) を停止させる関数ですね (だから protect)。 わたしの記憶が確かならば ruby 1.3 のとき前田(修)さんの提案で追加された はずだ。調査だ。はっけん。[ruby-dev:4064] Re: I want to catch all jump
今日、なんとなしに df したら、
~ % df -h Filesystem Size Used Avail Capacity Mounted on /dev/hda1 486M 19M 441M 4% / /dev/hda5 7.5G 1.0G 6.1G 15% /usr /dev/hda6 10G 5.1G 4.7G 52% /home
知らないうちに /home パーティションが使用率 50% になっていた。 いったい何に 5GB も使ったのか、調査してみよう。
Mail/ 500MB メール (メールは全部とっとく主義) bin/ 3MB バイナリ (実体はほとんど r/bin にある) cvs/ 406MB CVSレポジトリ (rubyのとか、FreeBSDカーネルも入ってる) d/ 163MB どこからか取ってきたドキュメント i/ 37MB 画像など lib/ 1MB ライブラリ (やはり実体はほとんど r/ 以下にある) r/ 73MB プログラム (自分で書いたもののみ) t/ 531MB テキスト (各種原稿を含む) w/ 38MB ウェブサイトの実体
うーむ、ここまで全部足しても 2GB 行かないな。 ということは残りの 3.5GB くらいは全部ソースコードと オブジェクトファイル (~/s) ですか?
今度マシンを替えるときはソースコード専用にパーティションを作るべきだな。 いやそれともいっそディスクごと……(マテ)
そうですねえ。11 月と言わず早く出版されないかなあ。 表紙がどうなるのかまだ聞いてないんですが、インプレスは 数を売る気はバッチリあるようなのできっとカッコよくしてくれるでしょう。
ちなみにこちらの計算では 550 ページでしたが、そこはさすが出版社のこと、 アレを 450 ページに圧縮する技があるそうです。そんなわけでうまく行くと 4000 円は切れるかもしれません。
あ、そういえば、題名は変わるみたいですね。抵抗したんですが ダメでした。とは言えさすがに Ruby の文字は残りますし、 Ruby Hacking Guide の文字は表紙には出るはずです。 つまり副題みたいな扱いになるのかな。 あとは「Rubyソースコード完全解析」みたいなクソな 題名にされないことを祈るだけっす。
なんとなく、[d|i|g|i|t|a|l] 。
cvs.ruby-lang.org のレポジトリに app/raa てのができている。 the RAA next generation らしいよ?
"RAA the 2nd generation" だった。
fileutils.rb でも blksize 問題に対処。 ついでにフォーマットも最近使ってるのに直そう。
ヤフオクで dPW600au が出てるよ! 誰か買おうぜ!
http://page4.auctions.yahoo.co.jp/jp/auction/d22378776
ちなみに型番を説明すると、 dPW は digital Personal Workstation の略。 600 が周波数 600MHz、a が Alpha、u が UNIX。 よーするに UNIX 入れるのに適した Alpha マシンということです。 NetBSD FreeBSD Linux あたりは軽く動くんじゃないでしょうか。 CPU は 21164 ですが 600MHz なんでそれなりに動くはず。 これで 16500 円はマジ安いよ?! 買うしかないでしょ!
くそー、金さえあれば速攻買うのにー!
余計なお世話じゃ。ruby 1.2 のころはローカル変数はメソッドの初めに nil 代入するのが推奨だったのにゃ。そんなにコロコロとスタイルを変えるなんて 面倒でやってらんないのにゅ。そういうことは実際にブロックローカル変数が 導入されてから言ってほしいにょ。
原稿のオリジナルを CD-ROM に入れておいて TeX 版と HTML 版を make できるようにするのはどうだろう。 と考えたが……
だめだろうなあ、さすがに。別の手を考えよう。
突然エプソンコーワから 「エプソンコーワ(株) LinuxDriverについてのご報告」というメールが 来た。例の GPL 違反問題の謝罪メールだ。しかしエプソンコーワのものを 買ったりした覚えはないのだが、どうして家に来るんだろう。 Received: を見る限りでは s1.epkowa.co.jp というところから来ているようだが。
うーむ。PDF で送られてきた図に「PDF のまま」赤を入れねばならないらしい。 困ったなあ。印刷に使うような品質の PDF を直接編集できるような方法なんて Linux にあったっけなあ。Windows はこの前潰したばっかりだし。
つうか、もしかして Windows にしても Illustrator 使わないとダメ? いくらすると思ってるんだよ〜。8 まんえんだよ〜。一袋 30 円のもやしを 買ってる人間にどうしろと言うんだ。
そんな酷いタイムテーブルになったのも昨日買ってきた 『魍魎の匣』(文庫版) を全部読んでしまったせいだ。あれは厚すぎるのだ。 最後のほうは持つ手が痙攣してたぞ (重さで)。
[ruby-dev:18440] をすっかり忘れていた。 これどうしようかなあ。追ってみます、とか言っても、 発生条件がよくわかんないうえに、 真面目に追うと FreeBSD の深部に入らなければいけないような 予感がするんだが……
情報の整理だけして投げておこっかなー。
5 時だよ 5 時。あぁ。
最近、「調子のいいときは (紙の) 日記を毎日書いている」という法則を発見した。
しかし逆は成立しない。
金がない。早く入金してくれインプレス。いつだったっけな。
髪を切ったら激しく短かすぎた。
いつのまにか秋になってしまったのがいけないんだ。
明日、図ができるらしい。早い。さすがプロだ。っても四日くらいか。 それならおれと変わんないじゃん (あたりまえです)
そんなわけで、あせって CD-ROM の準備ですよ。 プログラムはこんなのを入れる予定。
ActiveScriptRuby-167-5.msi Gauche-0.6.4.tar.gz SmallEiffel-20020507.tar.gz antlr-2.7.0.tar.gz autoconf-2.54.tar.gz automake-1.7.tar.gz binutils-2.13.tar.gz bison-1.35.tar.gz boehm-gc-6.0.tar.gz byacc.1.9.tar.Z cederqvist-1.11.2.html.tar.gz cflow-2.0.tar.gz cscope-15.3.tar.gz cvs-1.11.2.tar.gz cvsutils-0.2.tar.gz cvsup-snap-16.1f.tar.gz cxref-1.5d.tar.gz doxygen-1.2.18.src.tar.gz ezm3-1.0-FreeBSD4-boot.tar.bz2 ezm3-1.0-LINUXLIBC6-boot.tar.bz2 ezm3-1.0-src.tar.bz2 gawk-3.1.1.tar.gz gcc-2.95.3.tar.gz gcc-3.2.tar.gz gdb-5.2.1.tar.gz generational-gc-1.7.1.diff generational-gc-thesis.ps.gz global-4.5.tar.gz gperf-2.7.2.tar.gz grep-2.5.tar.gz guile-1.6.0.tar.gz hugs98-Dec2001.tar.gz indent-2.2.8.tar.gz jruby-bin-0.5.2.tar.gz jruby-src-0.5.2.tar.gz ksm-0.3.2.tar.gz libtool-1.4.2.tar.gz m4-1.4.tar.gz make-3.80.tar.gz mod_ruby-1.0.0.tar.gz ocaml-3.06.tar.gz perl-5.8.0.tar.gz python-2.2.0.tar.gz r5rs.pdf racc-1.4.2-all.tar.gz refe-0.5.0.tar.gz scheme-7.7.1-doc-html.tar.gz scheme-7.7.1-src.tar.gz scm.pdf scm5d6.zip sed-3.02.tar.gz slib.pdf slib2d4.zip strace_4.4-1.tar.gz subversion-r3200.tar.gz
OCaml だの Eiffel だの Haskell だのと、実に濃い。 Scheme 処理系ばっかし五個もあるのもアレな感じ。
ちなみに ruby はもちろん死ぬほど入りますよ。 公式リリース全バージョンは当然として、 CVS レポジトリもまるごと収録します。
さてここで問題です。Scheme 処理系五個はどれでしょうか!
Eiffel、OCaml、Haskell じゃ全然濃くないか……
■ ただただし [Rubyの本に入ってる時点で充分濃いと思う……]
Hacking Guide は Ruby の本ではなく言語処理系の本なので Haskell が付いてようと OCaml が付いてようと Scheme 処理系が 五個入ってようとオッケーですよ。
そういえば一昨日の問題の答えは
Gauche-0.6.4.tar.gz guile-1.6.0.tar.gz ksm-0.3.2.tar.gz scheme-7.7.1-src.tar.gz (MIT-Scheme) scm5d6.zip
でした。KSM が難易度高し。 ちなみに slib2d4.zip は Scheme の標準ライブラリで r5rs.pdf が Scheme の規格書 (Revised^5 Report on the Algorithmic Language Scheme)。 カンペキに趣味の世界だよねっ!
arton さんに「Common Lisp がない」と指摘されたので GNU Common Lisp を追加。 (チェックしたら、CLOS の大部分は既に入ってるそうです)
突然 C コンパイラが書きたくなった。
diffutils も忘れていた。diff は重要だ。
差分をとるアルゴリズムにはちょっと興味がある。 『Perl 書法』に簡単なものが出てて「ふーんこうやるんだ」 と思った覚えはあるのだけど、それだけで忘れた。
前に、Ruby で diff を書こうと思って展開したまま、 何か別のことをやり始めて忘れてたことがあったなあ。 そのときは、主だったところを眺めてみて、 コアになるアルゴリズム以外の部分のほうが圧倒的に多かったので 「これだったらコアのコードだけ見て書き直したほうが早そうだ」 と思ったところで終了したのだった。
そういえば誰か書いてたような気がするな、Ruby な diff。
ぐお、RAA が既に 300KB 近い。確かにリライトしたくもなるなあ。
まんま diff.rb というのがあった。こんなに短かくていいんだな。パッチも当てられるようだ。
いまさら Fortran はいらないよな。
elisp は必要だ、という名目のもとに Emacs を入れるのはいかがなものか。
いかん、関数リファレンスを RWiki に入れるの忘れてた。 これは真っ先にやろう。
「だ・である」口調で書いてるうえに マークアップタグが入っていなくて鬱。 がんばって直したよ。
flex はアリっすね。
Squeak は入れようと思ったんですけど、ライセンスが独自なのが不安なんです。 読んだ感じでは大丈夫そうではありますけど、 どうしても商業出版となると「危うきに近寄らず」になってしまいます。 だいたい Apple だよ。信用できないよ。
graphviz も同じくライセンスが不安。 特に「ライセンスに従いたくない場合はソースアーカイブにアクセスするな」 というところが気になります。CD-ROM に入れた場合はそれを受け取った 時点でライセンスに同意したことになってしまいそうじゃないですか。 だいたい AT&T だよ。信用できないよ。
m3 は……デカすぎ。既に 200MB に迫ってるうえに まだこの他に Cygwin と MinGW と MSYS を入れないといけないので、 m3 に 300MB 占領されるのは痛すぎです。
forth……いいんじゃないですかね。別に。入れない理由はないかと。
うーむ。その理屈からすると GhostScript を入れてもいいのではなかろうか (やめとけ)
akr さんのツッコミにあったリンク、 もったいないので本体にも載せときます。
http://arika.org/memo.cgi?cmd=view;name=UNIX+USER+2002.02
これは凄いー。
(22:12)
わたしはお腹が減りました。
あなたはラーメンを作りますか?
はい、わたしは生協の生ラーメンを作ります。
あなたはラーメンにネギを入れますか?
はい、わたしはラーメンにネギと卵を入れます。
それはいいですね。卵の賞味期限は切れていませんか?
もちろん大丈夫です。 ただ、ネギがかなり成長していました。
ああ、それは残念ですね。ところで、 あなたは夕食に一人でラーメンを食べていて悲しくないのですか?
なんということを言うのですか。 いったい、悲しくないということがあるでしょうか (いやない)。
(22:38)
■
たむら [なぜに Scheme処理系全問正解したのかしら<わたし。
common-lisp 処理系としては、xyzzyも入れて欲しかったり。
# 壊れたって…
UNIXUSER(2002-2)で、ごとけんさんが解説してましたね。>diff.rb]
■
会社員 [| そういえば誰か書いてたような気がするな、Ruby な diff。
Lars Christensenさんのdiff.rb以外では、次のソフトウェアにも含まれているようですよ。
* AkrさんのRuby/CVS
http://cvs.m17n.org/~akr/ruby-cvs/
* MoonWolfさんのdailydoc.rb
http://www.moonwolf.com/ruby/log.html]
■
kjana [bison 入ってるんだから flex をいれようというのは有りかも?
Smalltalk 系から squeak,Prolog の処理系を何か一つ,とか
Forth とかいうのはやりすぎか.... せっかくだから ezm3 と言
わず Modula-3 の全システム+ライブラリ収録とか.何か違う需
要が喚起されそうだ :-P]
■
akr [diff については以前 Unix User の記事に対するコメントとして蘊蓄を垂れました。
http://arika.org/memo.cgi?cmd=view;name=UNIX+USER+2002.02]
■
いけがみ [Haskell をいれるんだったらインタプリタ hugs だけじゃなくて、
Glasgow Haskell Compiler http://www.haskell.org/ghc/ も追加してもいいかも。]
■
たかはし [Ocamlが入っているなら、由緒正しいStandard MLもということで SML/NJ http://cm.bell-labs.com/cm/cs/what/smlnj/ とか。
prologならSWI-prolog http://www.swi-prolog.org/ とか、ICOTの遺産のcu-prolog http://www.icot.or.jp/ARCHIVE/Museum/IFS/abst/009-J.html とか。]
■
学生 [それではmosml(Moscow ML)も。
http://www.dina.dk/~sestoft/mosml.html]
世間にはいろいろな言語がありますねえ。
ライセンスがかなりヤバそうなのであきらめました。 だいたい AT&T (以下略)
一部に SML/NJ のライブラリを流用してるのでこれまたヤバい。
GPL と LGPL のコンビネーションなので全く問題なし。
こ、これって例の第五世代……? 初めて見た。 ライセンスは特に変な制限はないので問題なさそうだ。 少なくとも日本語で会話できるならなんとかなるだろう (笑)
Linux ではパッチが必要らしい。これも作って入れとくか。 それだけやったらコンパイルは無事に通った。
~/s/src/cu-prolog/src % ./cup3 ******* cu - Prolog III Ver. 3.94 (Jan.27, 1995) ******* [COPYRIGHT] Institute for New Generation Computer Technology (ICOT) Tokyo, Japan 1991-94 Type '%h' for help. [Heap=500K System_heap=1000K Env_stack=80K Cstr_heap=1000K Ustack=50K Name_heap=50K] _
プロンプトはアンダーラインか。変なの。
えーと……どうすればいいんですかね。 「Type '%h' for help.」と言ってるから打ってみよっと。
_%h ** Usage: cuprolog [-Hxxx][-Sxxx][-Exxx][-Cxxx][-Uxxx][-Nxxx][filename] ** % commands (ver.3.94 (Jan.27, 1995)) ** (prompt _:normal, $:trace, >:step) %h : help %Q : quit # <OS command>: OS command interpreter %d <predicate name>: list definition %d* %d/: list all %d?: list names %d-: user pred " <file name> ": consult file (no echo) " <file name> ?: consult file (with echo) %l <file name>: set log file ['no'] %w <file name>: save program %p <predicate name>: spy switch %p*:spy all %p.:nospy all %p?:list spyed preds. %t : normal trace switch [off] %s : step trace switch [off] %a : all modular mode <=now %o : M-Solvable mode %c <number>: max number of refutation node [10000] %n <name> : new predicate name ['c'] %L : list new predicate definitions %f : show the system heap size %C [Feature,type,... ]. : set cat() functor ==> [POS,1,FORM,1,AJA,2,AJN,2,SC,3,SEM,1] %G : Garbage Collection %D <number> : Max Depth of Printing, now is 32 %u : Undefined Predicate Handling Switch [FAIL] %M <number> : Max number of Variables in Transformation[50] %P <predicate name>: Preprocess Constraints %P*: preprocess all %P?: predicates with nonmodular %R : system Reset %S : show statistics of the previous question. _
Garbage Collection だの log file だの、馴染み深い言葉が見えますな。 OS Command Interpreter ってのはシェルのことか。 試しに #ls としてみるとちゃんと動くのでそうらしい。
Prolog なんてほとんど触ったことないゆえさっぱりわかりませんね。 『ソフトウェア考現学』を参考にして書いてみる。
_hage(x) :- kebukai(x) . _kebukai(sean_connery).
二行目がピリオドだけになっているのはもちろん忘れたからであった。 文はピリオドで終わるらしい。Ruby に汚染されていると自覚する瞬間である。
えーと、そんでなんだっけ。問うんだ。
_?-hage(sean_connery). no.
あれ? yes になるはずなのにな。うーんうーん。
あ、そうか、変数は大文字じゃないといけないんだな!
_hage(X) :- kebukai(X). _kebukai(sean_connery). _?-hage(sean_connery). true.
む、なんだ true って。なんで偽が no で真が true なんだ。 対称性ってもんを考えなさい。
いやそんなことより、またもや Ruby に汚染されていることが 露呈してしまった。小文字が定数で大文字が変数だなんて……。
うーん、これはあれか。パターンマッチなんだから、よーするに yacc の 文法みたいなもんだと思えばいいのかな。yacc なら変数 (終端記号) が 大文字になっててもおかしいとは思わないもんな。
(この項続く)
(16:03)
なんかこう……モニタを見たくないんですよね。 何の脈絡もなく Prolog で遊ぶのもそれはそれで面白いんですけど、 何やっても同じモニタの中で動いてることじゃないですか。 http だろーと https だろーと ftp だろーと知ったことじゃないです。
Set だろーと Array だろーと List だろーと知ったことじゃないです。
オブジェクト指向だろーと関数型だろーと論理型だろーと知ったことじゃないです。
LL だろーと LALR だろーと generalized LR だろーと……もういいや。
何の脈絡もなく無駄な p タグを連発してスペースを空けてみたぜー! しかも閉じタグがない! くー! (HTML 的に) ワル! カコイイ!
……というアホなネタをやってしまうくらい暇です。っはぁ〜。
ティッシュのクリネックスってあるじゃないですか。 いま箱がそこにあるんですけどね。綴りは Kleenex なんですねえ。 e が二つあるとどうしてもクリーネックスと読んでしまいますね。
……どうでもいいです。
Ruby で開発したからって、なんでも頭に R を付けるのはいかがなものか。
……自分も付けてました。すんません。
時計の短針とは言っても太針とは言わないのはなぜですか。 普通は太いじゃないですか。 「太ってる」は差別で「背が短い」は差別じゃないとでも言うのですか。
鉛筆を、短すぎて削れなくなくなるまで使ったことってありますか? 理論的に言えば鉛筆は全てが均等に短くなり、いずれは短い鉛筆が 大量に残るはずですが、チビた鉛筆を捨てた覚えがほとんどありません。 しかし使っている「のべ」鉛筆本数は明らかに 50 本以上はあるはずなのです。 ではいま現在鉛筆立てに残っている以外の鉛筆はどこへ消えたのでしょうか。 まるで、決して死体の見付からないカラスのようだと思いませんか。
16 ポートのスイッチングハブをガシガシと 16 段積み上げて、 カテゴリ 6 のストレートケーブルを端からギョシギョシと刺していきたいです。
昨日 akr さんに教えてもらった diff の論文を印刷してたらプリンタの インクがなくなりました。うちのプリンタはインクがなくなると赤いランプが 点くんですが、そのマークがスライムみたいなドリッピーみたいな形をしてます。 と考えたところで、そもそもドリッピーは油滴なんだからドリッピーに似てるのは あたりまえだということに気付きました。
どうして消しにくい消しゴムはなくなるのが遅いのでしょう。
えー、というわけで、 右から左まで、視界に入ったものについて一段落ずつ書いてみるテストでした。 まる。
(22:30)
TMail の質問メールが来た。マルチパートメールを作るには どーするかっていう話だ。このへんのユーティリティメソッドは 欲しいと思ってたので答えを書くついでにライブラリにも追加する。 んじゃテストしようと思ったら、
~/r/tmail % t .................................................. ...................F.............................. ............../home/aamine/lib/ruby/tmail/port.rb:161: [BUG] Segmentation fault ruby 1.7.3 (2002-09-13) [i686-linux] zsh: 1758 abort (core dumped) exectest
というわけでデバッグ中です。
(00:01)
一度はここに SEGV 追跡ドキュメンタリー 60 分 (嘘) を 書いていたのですが、あまりの長さに躊躇して場所を移しました。
です。
うちのサイトはメインマシンにミラーを作って 次のように rsync でアップデートしているのだけど、 最近、差分アップデートが効かない。
#!/bin/sh rsync --verbose --recursive --links --perms "$@" \ ~/w/Mirror/ sava:/var/www
アップデートして、少し待ってからもう一回やると 全く同じファイルを転送している。変だ。
いろいろオプションを変えてみた結果、--size-only を付けると正常になった。 ローカルマシンとサーバで時間がズレてたのがいけなかったらしい。
時間は合わせとくに越したことはないけど、 --size-only は付けといたほうが無難ってことかな。
(02:31)
人間が頭を使うときの方式には二種類あるらしい。画像で考えるタイプと、音 声で考えるタイプ。たいていの人は両方を同時に使うことはできるが、あくま で片方がメインで、もう一方では複雑なことは考えられない。また片方で二つ 同時に考えることもできない。
「らしい」と言うだけあってこの話には飲み屋での雑談程度の信憑性しかない のだが、自分はどっちかなー、なんて考えてみるとわりと面白い。
んで、自分はどちらかというと画像で考えるタイプだと思う。何かじっくり考 えるときはいつも頭の中で絵をいじくっている。また、複雑なことを考えなが らでも会話の受け応えはできるが、メモは絶対に取れない。画像側の脳が使わ れてしまっているから、音声側しか使えないのだと考えるとそれなりに理屈が 付く。
他には、クラス替えの後でどうしてもクラスメイトの名前が覚えられない、な んてのもうまくあてはまる例かもしれない。顔はすぐに覚えるのだけどどうし ても名前が出てこない。名前を名簿で見ておくとなんとか覚えられる。
それで結局何が言いたいかというとですね、プログラミングってものすごく画 像中心な感じがしませんか。いやそれどころじゃなくて、ぼくにはそれ以外の 考えかたが理解できないのですけど。と、図版の校正をしながら思ったわけです。
(19:03)
突如として Mac が欲しくなった!
突如として Alpha が欲しくなった!
突如として Sparc が欲しくなった!
コマンド?
> たたかう > にげる > じゅもん > どうぐ
魔法の使える奴を先頭にすると「ぼうぎょ」 できないのが困るんですよねー、昔のドラクエは。
(20:28)
あー、やっと Mingw と MSYS が終わった。
で……Cygwin を CD-ROM に収録するにはどうすればいいんだろう。
やっぱ Cygwin はあきらめようかなあ。
(02:06)
■
たむら [えー、止めるの>Cygwin
rsyncすれば、取ってくるのは楽だけど、tex* とか、squidとか開発に関係なさげなのは、外すべきでしょうね。CD収録時の許可とかは出版社の方に協力してもらえないのかな。
# わたなべさんの日記を読んでると、今の Cygwinはちょっと微妙みたいだが。]
お腹が減ってたまんなかったのでイレブンで 「カップ丼 厚切り肉のビーフカレー」550 円を買ってきた。高いよ。 ちなみにこの製品名を普通の人間の言葉に翻訳すると、
「カップ丼」→ ケースは筒型。四角より丸のほうが底面積が狭い = 内容量が少ない
「厚切り肉の」→ 普通の厚さの
「ビーフカレー」→ お情け程度に肉が入ったカレー
となる。さらにこの製品は御飯とカレーの間に間仕切り板がある…… 即ち「カレーと御飯が混ざってないぞ高級感」を演出しつつも 実はカレーと御飯の間に空間を作りさらに内容量を減らしているのである。 ふっ、素人なら騙せてもコンビニバイト歴 4 年の私は騙せないぞ!
と言いつつ買ってるわけですが。
仕方ないじゃないかぁ、 2ch の「ハァ?朝ご飯にカレーライス?」っていうスレッド読んでたら 無性にカレーが食べたくなっちゃったんだよぉぉぉ!
(06:31)
なっ! Cygwin は rsync で取れるんですかっ! 知らんかったあああああ!
いや、そゆことなら大丈夫っす。 もしかして setup.exe でチマチマ取らにゃいかんのかと思ってました。 助かりました。しかも昨日は setup.exe の「Install From Local Directory」 っていうのを見逃してましたよ。そっかあ、これでインストールすりゃいいのか……。
しかし長いなあ。確か 16:00 ごろに rsync 始めたのに、 まだ binutils までしか終わってない。
(18:26)
「rsync cygwin」で Google (ja) したら、 たむらさんの日記 が二番目にありますた……。 こうすればいいのかな。
#SITE=mirror.averse.net SITE=archive.progeny.com REMOTE=rsync://$SITE/cygwin LOCAL=/home/aamine/tmp/cygwin/ RSYNC=rsync OPT=-rlptzu #--modify-window=2 $RSYNC $OPT $REMOTE/release $LOCAL $RSYNC $OPT $REMOTE/setup.* $LOCAL
setup.exe を実行するとミラーの候補に rsync:// で始まってるサイトが あるので、そこから適当にサイトを選んで $SITE にセットする。 結局、一番上の archive.progeny.com が一番太いようだ。
--modify-windows=2 は Windows 用のオプションだろうか。 エラーになったんで、とりあえず外しといた。
(18:32)
やっとミラーリングが終わったよ〜。 根性なしなので結局全体ミラーはせずに選択して落としました。 つっても一番デカい (しかし必要ない) X を落としてしまった後では そんな節約はロクに意味がないのであった。
げっ。500MB 近くあるじゃん。どのくらい減らせるかなあ……。
(01:01)
絶賛ダメ人間生活実行中。
ダメダメなんです。
しかし CD-ROM を明日渡さないといけないのであった。 これから徹夜で、つうか今起きたところなのに徹夜と 呼ぶのかどうか知らないけど徹夜でやろう。
(20:58)
■ かねみつ [あぅ……
やっぱ、pLaTeX。使ってます? あれで、制作やってるGAROさん
紹介するじぇぇ]
■ いけがみ [texmf/web2c/texmf.cnf
のなかの
stack_size
を増やすのだだだ。]
■ いけがみ [同texmf.cnfの
buf_size
をおもいきり大きくしておくのも手(そちらのほうがよいかも)]