LAST MODIFIED: 2002/02/03 07:36:04 UTC
不定期更新の日記です。ディスクスペースの関係上、 あまりに古くなったものは順次消していきます。 この日記の更新は、今野さんの *BSD Diary Links から取得することが可能です。
うーん、SED の使い方を覚えようと思って起動設定スクリプト用に
whereis $COMMAND_NAME | sed '/^[a-z]*:/{ s/ /¥ /g s/^[^¥n]*¥n// ' :start #p /^[-¥/.A-Za-z0-9_]*¥/ucb¥/[-¥/.A-Za-z0-9_]*/b print /^[^¥n]*$/b end s/^[^¥n]*¥n// b start :print P :end s/^.*$// N }'
というの(whereis の出力から ucb を含むものだけ切り出すやつ)をつくったけど、 FreeBSD ではちゃんと動くのに、Solaris では動かないみたい‥‥。 単に行分割して grep | head ってのは fork が増えるので、 なんとか sed だけでできないものか...
ゼミの準備。なんか中途半端になってるけど、 時間がないので仕方がないとあきらめる。
行ってません。 総理が直々寝てて良いと言われたので寝てました。 というか、そんな余裕がないくらい忙しいだけなんですけど。
アルファルファはいまいちかなぁ。 陣内は面白い‥‥けど、 一人芸は一歩間違うとふかわりょうの世界なので、どこまで続くか楽しみ。
少ないファイルにまとめる形は、後から見直すと扱いづらいと感じたので、 archdepend と hostdepend を独立したディレクトリに分離。
もう一つ、alias の扱いがプラットフォームで結構違っているという問題。 Solaris の sh は /bin/alias 依存、HP-UX も一緒。 機能的には無くしてしまっても良いのだけど、 .alias ファイルを独自フォーマットにして read で読むことにする。 あとは、ユーザのカスタマイズがまだめんどうなので、そこらへんを改良しなければ。
doc-jp で指摘された FAQ の直し + 1.45 から 1.51 の merge を行ないました。
今週はほとんど寝る暇なし。眠くてしかたがないぞ。
ここ二・三日、CVSup サーバが limit exceeded でつながらない。 混んでいるのかなぁ。リリース時期はまだのはずなんだけど‥‥
翻訳の査読をぼちぼち。 handbook の merge from the English version と www/ja/conspectus を追加。
Berkeley の SPICE3f5 と mosis の MOS モデルパラメータを組み合わせてシミュレーション自体はできる。 cad/cider は SPICE3 + ディジタル? マニュアル読んでないので良くわからないけど‥‥
まあ、Star HSPICE や PSpice に比べて解析命令に制限があるのがちょっときついけど、 出力結果を二次的に処理すれば FFT みたいなものは同等の機能が実現できるのではないかなぁと思う。 ただ、MOS モデルパラメータが LEVEL 6 までという解析エンジンの制限はどうしようもない。
Gnuplot と Perl, Emacs-lisp で統合環境を書いてみるのも面白いかも知れない。 あとは、ネットリストがきちんと出力できる回路図エディタが必要か。
お勉強のため、IVR2000 を見に行く。 午前中はごろごろしていて出発が遅れたものの、12:30 頃会場に到着。
PHANTOM という 6 軸制御のフォースフィードバックインターフェイスを体験してみる。 画面上のオブジェクトをつつくと、感触が伝わってくるというデモだったけど、 さすが業界標準と呼ばれるくらいで、なかなか良くできていると思った。 ただ、装置の可動範囲が狭いので、それが気になる。
サミーという企業が出している三次元立体映像装置に感動。 構造は、単なる穴の中にものを入れると、 穴の開口部にその物体の映像が浮かび上がるというもので、 聞くところによると、光学系だけで実現しているとのこと。
東工大の佐藤研が出しているブースでは、マウスの代わりになるような、 弦張力を使った三次元入力インターフェイスを展示していた。
積和型ニューロンをカレントミラー主体で構成するための電流モードのしきい値回路を考える。 CVC の出力を差動段に入れて電流差として出力する回路が良く使われるらしいので、 それの縦積み構成をなんとか少なくできないかと思い中。 シミュレーション結果はかなり良好。
有明に行ってこようかと思いつつ、 天候と疲れていることを理由に中止。 ひさびさにゆっくりする。
前回のやつは、Solaris の sh で動かないことが判明。原因は、シェルに組み込み alias コマンドがなく、 /bin/alias の一覧表示と FreeBSD の ash の一覧表示に食い違いがあったため。
alias の一覧表示ルーチンを以下のように変更。
IFS=' '; alias | while read IN; do IFS='= '; set $IN; IFS=' '; ### for Solaris's /bin/alias if [ "x$1" = "xalias" ]; then shift; fi key=`echo $1 | sed -e "y/'/ /" `; shift; value=`echo $* | sed -e "s/'//g" `; echo "alias $key=¥"$value¥";" >> $CACHE done
また、local 宣言が使えないようなので、これも修正する必要アリ。
PC につないでいる小さいアクティブスピーカを買い替える。 GATEWAY2000 のやつ(製造元は ALTEC LANSING MULTIMEDIA)を 使っていたのだけど、ちょっと前から AC アダプタから異音が出るようになったので、どうにかしたい と思っていたところ、オーディオテクニカの定価 15,000yen のやつが 3000yen で投げ売りされていたので衝動買い。妙に高いなぁ、スピーカって。
うーん、サテライトスピーカも良いんだよなーとか思っているけど、 お金ないので今のところはパス。 オーディオ周りがごちゃごちゃしてきているので、 それよりもマトリクススイッチが欲しいかな。
うーむ、日付が変わってしまった。 ゼミ資料の最終チェックを行なう。
結局、シミュレータをメインにする。 回路はきちんと検証していないのでボツ。
Solaris7 に gnuplot を入れる。 ./configure すると、 -lpng や -lgd でファイルが見つからないと(ファイルはあるのに)怒られたので、 --with-png=no --with-gd=no とする。どうせ使わないし。 原因究明している暇もないので、とにかく動けば良し。
なに〜。“ ってわざとやっていたんじゃないの? ぐー、日本語版は全部 quote タグに直せばよかった。こういうのは早めに言ってくれないとねぇ。 翻訳チームは、みんな英語の書式が正しいと思っているのよ。
ゼミが近いので研究の続き。n-layer perceptron のシミュレータを実装する。五月の連休につくったものを改良して、 訓練係数とモーメントパラメータを追加し、学習データを標準入力からとるようにした。
非線形関数はシグモイドロジスティックで、ユニットのバイアスは省略。 学習法はバックプロパゲーションで、訓練係数とモーメントパラメータを使っている。 三層でユニット数が 1 2 1 の密結合ニューラルネットワークに線形な関数 y=x を学習させると、二乗誤差が約 0.25 となった。 学習データは 0.1, 0.2, ..., 0.9 という 0.1 きざみの点列。 妙な勘違いからコーディングミスしていて、なかなか収束しなかったけど、 一点のときに任意の精度で収束しているので、アルゴリズム的には OK のもよう。
ニューロン MOS トランジスタで実装することを考えると、 負の重み行列をどうするかという深刻な問題がある。 うーむ、どうしよう。
ホスト、OS でキャッシュを分離して、きちんと更新されるように修正。 さらに、ユーザカスタマイズ用に .setenv.mine と .xinitrc.mine を増設。
これで、ユーザが書き換えるのは *.mine だけになったはず。 実際には $PREFIX/homerc あたりにおいて、 ユーザの $HOME には、それを呼び出すスケルトンと *.mine をおいてもらう。 管理者が $PREFIX/homerc をきっちり面倒を見てやれば、 アーキテクチャ混在のネットワーク環境でも、 一貫性のある設定ができる‥‥と思う。
うーむ、考えてみれば OS とアーキテクチャの分離はできてないので、 .archdepend というのは用語的に変だったり。 でも、同一 OS、異なるアーキテクチャの構成を共有するとして、 環境変数レベルで設定に差をつくることはあんまり考えられないと思う。
まあ、とりあえず気にしないでおく。真面目にサポートすると キャッシュの切り分けも、もう一段階しなくちゃならない。 今は .setenv.cache.$OSTYPE.$OSVERSION.$HOST.$SHELL という分け方なので、alph というホストで FreeBSD 4.0-STABLE を使っていれば .setenv.cache.FreeBSD.4.alph.sh というキャッシュに保存される。
アーキテクチャを追加すると、 .setenv.cache.FreeBSD.4.i386.alph.sh あたりになるかな‥‥。判断基準は uname -m か -p。 んー、あとは .osdepend と .archdepend に分離すれば実現できそう。 でも、同一 OS で異なるプラットフォームって、 環境変数レベルで設定が変わったりしないような気がする。 プラットフォーム依存の path ってなくはないけど、 明示的に指定しなければならないようなものでもないだろうし。
とりあえず、この構成で使い続ける予定。
メインマシンの CVSup が 16.0 のままだったので、 16.1 に更新。まともに build するのは大変そうなので FreeBSD の package から。 C 版があれば、幸せになれる人がもっと多いんじゃないかと思うのだけれど‥‥。
cvs book を買おうかなと思った矢先に発見したので購入。 既存 repository の操作はだいたいできるけど、 新規の立ち上げとか、 タグやブランチのあたりは良くわかっていないのでお勉強。
CM が耳につく‥‥。連続で流すなよ > 某民放
むー、録画予約しておいたらハリガネロックしか録れていないし。 ドランクドラゴンが観られなかったのはつらい(いや、つらいほどでは)。
前につくったスクリプトを改良。 まず、名前を $HOME/.sh/.setenv にして、 .setenv + .setenv.inc + .archdepend + .hostdepend + .aliases の五つに分離。 .archdepend では、アーキテクチャ依存の変数、 .hostdepend では、ホストマシン依存の変数を定義する。
全部 .setenv から include するので、 $HOME/.cshrc や $HOME/.profile からの呼び出しは前のものと同じです。
ファイル数を増やしたことと、 重複チェックなどの処理に負担がかかることを考えて、 キャッシュファイルを作成するようにしてあります。 設定ファイルに変更がなければ、キャッシュの内容を cat するだけなので、速度的にも問題はないでしょう。
実際の構成ファイルは以下のとおりです。 まだ FreeBSD でしか試していないので、 他のアーキテクチャの設定は適当なままです。
流れとしては、まず .setenv の呼び出し、 次にキャッシュ $CACHE_* をチェックして、 古ければ .setenv.inc にある create_cache 関数を実行。 create_cache では .archdepend, .hostdepend. .aliases を読み込んで、 各種環境変数の定義をキャッシュファイルに記録する。 最後に、このキャッシュファイルを cat しておしまい。 使う場合は、.cshrc, .profile の先頭で実行し、 結果を eval すれば OK。
まだキャッシュが手抜きなので、ホストやアーキテクチャが異なっていて、 ホームディレクトリが共有されているような環境では、 キャッシュ情報がうまく反映されない。 とりあえず、これをきちんとしようと考え中。
研究室の gateway マシンに ipfilter を入れて NAPT box をつくる。いくつかのマシンの /etc/defaultrouter 設定も終了。 やっとシームレスに外へ出られるようになったぞ。
LAST MODIFIED: 2002/02/03 07:36:04 UTC