Lex
の細かいとこごちゃごちゃ.
soryu
にはネットワーク経由利用辞書がいろいろ入ってるんで
復旧させなくては,
とのこと.
というわけで,
朝からネジ回し仕事.
soryu
の CD-ROM Drive が壊れてるんで,
昨日こわれた私のもとデスクトップ機 BookPC を解体して
部品を取りだして
soryu
に移植.
LI
で止まるから)
……
CD-ROM 一枚起動 Linux たる
Knoppix-jp
(FAQ)
で起動する.
おお,
Knoppix-jp の KDE 画面かっこいい.
/
の入ってる
/dev/hda5
をまず /mnt/hda5/
に mount
/mnt/hda5/boot
に
/dev/hda1
(じっさいに /boot
として使っていて vmlinuz
などが入ってる)
を mount
sudo /sbin/lilo
-b /dev/hda
-r /mnt/hda5
-C /mnt/hda5/etc/lilo.conf
XF86_S3
の不備はまだ手動作業でなんとかなる程度なんで,
video card 入手はしばらく延期.
FakeRoot
づくりの続き
……
にせ地下の闇を支配し
(ここに計算機能の多くが集約してしまうから),
さらに PipeTree との連絡窓口となる
FakeEarth
を作っていく.
偽りの大地.
Lex
の中に再構築:
cvs init
cvs import -m "..."
リポジトリ名
作ったヒト
start
XF86_S3
がおかしくなる原因のひとつを実験的に特定.
Gecko
レンダリングエンジン??
Gecko
動かしたとたんにおかしくなるわけでなく,
何か「きっかけ」
があるような気がするんだけど,
それが何なのかわからない.
XFree86-4.3.99.8
先月 10 日リリースちょー最新版では
Trio64V2
サポートするようになったみたいだ
……
うーむ,4.3.99....
か.
また VineSeed いれてさらに X
関連をコンパイルするのはイヤだなあ.
と怠業することに.
FakeEarth
のインターフェイスだけ作って本日の作業おわり.
2000 研究室発.
今日から 2400 まで営業することになった
北 12 生協で買物.
2020 帰宅.
体重 71.8kg.
Lex
のカーネルを新しいものに作り直す.
Linux-2.4.21
.
Lex
のネットワークカードは
RealTek RTL-8029
(NE-2000
互換)
なんでこれに対応するドライヴァーは
ne2k-pci
.
ただしこれはなぜかしらカーネルモジュールにならづ,
したがって組み込みでコンパイルしないといけない.
accumulate
使うときは #include <algorithm>
じゃなくて #include <numeric>
か.
<algorithm>
な関数にメンバー関数わたすときは
mem_fun()
なる変換関数をつけねばならんのだけど,
これをつけてもコンパイラー g++ の型チェックを
突破できん
……
試行錯誤したけどうまくいかんので generic
ではない方法でかたづけることに.
無念
(後記:
翌日ぎょーむ日誌参照
……
上の問題の正解は
#include <functional>
して
bind1st
使えばよさそうだ).
mem_fun
問題なんだけど,
ここ
から始まるスレッド見てたら
<functional>
の bind1st
などを使えば良さそうだとわかった.
transform
で「関数の値渡し」の対象となってる
const Type Func(const Type x) { return x * x; } // これで transform…… 処理の中身はなんでもいいンだけど, 引数も値渡ししかできんところが (なんとなく) イヤだ. ここは本当に引数の値渡しやってるんだろうか? そもそも「関数の値渡し」とは …… ここ から始まるスレッドでも議論されてるな. なんとかして参照渡しする工夫をする, もしくはコンパイラーによる最適化を祈るしかないのかな? あるいは
Boost
使え,
とか.
Lex
が落ちてる
……
再起動して調べてみるに,
cron
と連動するファイルシステムがらみ,
という気がする
……
昨日カーネルをてきとーに作り直してしまったからなあ.
Quota
か HFS
か?
しばらく様子みるか.
mem_fun
だの bind1st
だのの事情が少しわかってきたような気がする.
C++ には 3 とーりもの関数よびだし方法がありやがるんだけど,
STL <algorithm>
の関数たちはそのうち最も簡単な構文 (元祖 C ふう)
にしか対応してない.
そのままではね.
で,
のこり 2 つのために
ptr_fun
だの mem_fun
だのあるわけだな.
すると
bind1st(mem_fun(&Aclass::Func), this) // !!! STL の呪い !!!かかるいでぃおむは STL の呪いというより C++ の原罪なのか? いつものことながら. ははは. C++ 標準化委員会もさすがに 「このへん,やばっちいかも」 と危惧してるそうだから, かの悪魔の教典 すとらうすとらっぷ本 4th ed. が出るころには何か変わってるのかなぁ.
operator <<
とか定義して,
試験運転コード書いて
……
ということになるわけだが,
その前に北大構内走に出ることにする.
雨もあがったようなんで.
おっとその前にバックアップ.
tgz_save.sh && rsync.sh
.
FakeRoot
:
にせ地下器官
(ほとんど計算機能ナシ)
GridMap
:
にせ地下器官格納構造
GridVector
:
二次元マス目
FakeEarth
の試験に着手できるわけだけど,
これはまたあとで.
Lex
で使えるんですか」
と威嚇される.
でいろいろ調べてみると,
AGP
8X (8 倍速) のカードというのは,
ふつーは 2X/4X でも使えるそうだ.
つまり Lex
のやや古めの motherboard でも問題なさそう.
nVidia.com
は
非常識に混んでいるから
……
ところで阿呆なカンちがいしてたんだけど
pre-compiled は「コンパイルする前」
ではなくて「コンパイルずみ」)
modprobe nvidia
(カーネルモジュールの組み込み)
/etc/X11/XF86Config-4
を手動で書き換える
……
これは README.txt
をよく読むこと
(今回は下のような指示に従った)
... then all you need to do is find the relevant Device section and replace the line: Driver "nv" (or Driver "vesa") with Driver "nvidia" In the Module section, make sure you have: Load "glx" You should also remove the following lines: Load "dri" Load "GLcore"
startx
できたのでした.
nVidia が Linux 用ドライヴァーを準備しているだけでなく,
どんどん新しくしていってくれてるのは
たいへん有難いことだ.
しかしながら
上の作業は Linux 初心者にはほぼ不可能だろう.
Lex
(Athlon 1.1GHz)
/usr/X11/bin/glxgears
で描画速度を測定すると 1200 FPS 超というような値を出す.
そのときは「ふーむ? これって速いのかしらん」
というかんぢだったけど,
あとで ThinkPad 240Z (Celeron 500MHz)
でやってみると 50 FPS
だったので違いに驚く.
Lex
の電源不調問題に直面する.
宣教師殿によると新ヴィデオカードの電力浪費による
電源の力不足
では,
というような.
XFree86-4.2
用ドライヴァーを作成してくださったので
(XFree86-4.2
の srpm に patch あてて
rpm --rebuild
したらうまくいった,とのこと),
それを使わせてもらう
……
おお,
XF86_S3
なんぞよりよほど良い画面だ.
Lex
が「落ちて」いるな
……
ということで,
原因はヴィデオカードではなく
電力供給ユニットそのものにあるらしい,
と特定できた.
いろいろといじってみる.
Lex
に組み込んで連続運転試験開始.
FakeEarth
の試験運転
……
やはりある程度以上の複雑さをもった「部品」
はこういう試験を丁寧にやらねばならんし,
xset -b
.
このあたり
参考にしました.
FakeEarth
まわりでぼろぼろと「読みおとし」が見つかる.
コードなおしていく
……
しかしこの資源配分がうまくいかん理由がよくわからん.
Lex
修繕.
故障の真の原因は電源でもなく motherboard でもなく
CPU でもなくメモリでもなくドライブ類でもカード類でもなく
……
匡体についてる
メインスイッチの不良接点だった.
これまたかとー先生の指摘によるもの.
私はもちろん気づかなかったし,
長谷川宣教師殿も PC 工房店員のにーちゃん・ねーちゃん
誰も指摘せぬポイントであった.
Lex
の部品をあらかた入れ換えた,
ということだ.
PC 工房に三往復して購入したもの
……
350W 電源ユニット静音ファン付き (約 8000 円),
Aopen AK77-400 motherboard (約 12000 円),
これに対応する DDR400 RAM 512MB (約 8000 円).
まぁ,
今年度の科研費で新しい計算機を買うことに
なってたからいいや.
RealTek 8100
なる LAN チップが付いている
……
これを Linux-2.4 系で使うには 8139too
(RealTek 8139
用)
というカーネルモジュールなドイラヴァー作って
/sbin/modprobe
すればよい.
FakeEarth
の試験運転再開
……
コード書きにおける失敗から,
けっこう抜本的な考えミスにいたるまでぼろぼろと出てくる.
FakeEarth
において座標を centralized する関数いれても
「ぶりっぢ」現象が解決せん
……
と思ってよく調べてみると,
じつはにせ地下計算の問題ではなく描画させてる
R
の関数 levelplot
の問題とわかった.
勝手によけーな「補間」しやがるんだよね,
こいつは
……
解除する方法はまだわからんけど,
とりあえず
FakeEarth
には問題ないと確認した.
しかし時刻はすでに 1840.
とほほ.
FakeEarth
の出力にまた手を加える
……
っていうかっ,
ostream& operator<<(ostream&, FakeEarth&)
というような演算子オーヴァーロードはガマンできるとして,
こいつが腐り腐れた friend
関数にしかなりえんってのがへっぽこ度 128% にまで強まった
へっぽこすとりーむの正真正銘へっぽこぴー正体そのものだっ!!
……
とキレたりしながら書き直すわけですよ.
すかっと書けないので楽しくない.
しかし <iostream>
使わざるをえない.
ええ,ええ
<cstdio>
の sprintf
つかいやす.
だれが setf(ios::scientific)
だの precision(3)
などという気色わるいもん使うか.
FakeEarth
試験運転プログラムはかなり直す.