LAST MODIFIED: 2002/02/03 07:36:04 UTC
不定期更新の日記です。ディスクスペースの関係上、 あまりに古くなったものは順次消していきます。 この日記の更新は、今野さんの *BSD Diary Links から取得することが可能です。
異なる OS の間で同じログインスクリプトを使うために、 環境変数の定義などを分割してみる。 環境変数自体は、別スクリプトにしてしまうと親プロセスに変更が伝わらないので、 eval を使って import できるように、次のようなものをつくってみる。
#!/bin/sh # # .sh_setenv - script for environment variables. # # written by Hiroki Sato # $Id$ # # usage: # # from tcsh: # if ( -f ${HOME}/.sh_setenv ) then # eval `${HOME}/.sh_setenv -c` # endif # # from sh: # if [ -f ${HOME}/.sh_setenv ]; then # eval `${HOME}/.sh_setenv -s` # fi ### -s for sh, -c for csh/tcsh getopts s,c OPT ### import arch-depend variables . ${HOME}/.sh_archdepend ### configurations of mandantory variables(set in .sh_archdepend) #PREFIX=/usr/local #XBASE=/usr/X11R6 #PASTE=/usr/bin/paste #SED=/usr/bin/sed #UNIQ=/usr/bin/uniq #GREP=/usr/bin/grep #SORT=/usr/bin/sort #PATH=/bin:/usr/bin ### system related variables LANG=ja_JP.EUC EDITOR=vi PAGER=jless TMPDIR=/tmp MAIL=/var/mail/${USER} BLOCKSIZE=K PRINTER=lbp JSERVER=localhost NNTPSERVER=news PERL_BADLANG=0 ### PATH PATH_A="/sbin /usr/sbin" PATH_B="$PREFIX/bin $PREFIX/libexec" PATH_C="$XBASE/bin" PATH_D="/usr/ucb /etc /etc/libexec /usr/local/jdk1.1.8/bin" PATH_E="${HOME}/bin ${HOME}/local/bin" ## concatnate PATH_* into PATH_Z IFS=': '; set $PATH_A $PATH_B $PATH_C $PATH_D $PATH_E; IFS=' '; PATH_Z=$*; ### MANPATH and LD_LIBRARY_PATH PATH_MAN="/usr/share/man /usr/X11R6/man /usr/local/man" PATH_LD="/usr/local/lib ${HOME}/local/lib" # If this var is defined, report odd errors. I wonder. #setenv SGML_CATALOG_FILES "/usr/local/share/sgml/catalog" #setenv SGML_CATALOG_FILES "${SGML_CATALOG_FILES}:/home/hrs/doc-jp/doc/share/sgml/catalog" ### list of export variables EXPORTS="${EXPORTS}¥ PATH MANPATH LD_LIBRARY_PATH LANG EDITOR PAGER ¥ TMPDIR BLOCKSIZE PRINTER JSERVER NNTPSERVER PERL_BADLANG" ### define a function to check for existence of the directory dircheck () { local key value; ### variable name to be set key=$1; ### remains are value to be set shift; IFS=': '; set $*; IFS=' '; ### check for existence of the directory for i in $* do if [ -d $i ]; then value=${value#:}:$i fi done echo "$key=$value"; } ### define a function to export a variable defenv () { local key value; key=$1; value=`eval echo ¥¥$$1`; if [ "X${OPT}" = "Xc" ]; then echo "setenv $key $value;" else echo "$key=$value; export $key;" fi } ### export routine ................................................... for EXPITEM in $EXPORTS do case $EXPITEM in PATH) ### check PATH multiplicity DOUBLLET=`echo $PATH $PATH_Z | $SED 'y/ :/¥n¥n/' | $SORT | $UNIQ -d | $PASTE -s -d '|' -` PATHLIST=`echo $PATH_Z | $GREP -v ¥($DOUBLLET¥)` eval `dircheck PATH $PATH $PATHLIST` ;; MANPATH) eval `dircheck MANPATH $PATH_MAN` ;; LD_LIBRARY_PATH) eval `dircheck LD_LIBRARY_PATH $PATH_LD` ;; esac defenv $EXPITEM done
使うときは、.profile や .cshrc から eval `${HOME}/.sh_setenv -s` すれば OK。 PATH は重複していると気持ち悪いので、チェックしておく。 重複チェックに時間がかかるのが難点。
とりあえず動いているけど、 時間がかかるし、処理が美しくない‥‥。 もっと勉強せねば。
やっとこさ WindowMaker を入れるまで終了。 メインで作業している SP/20 は全然安定していなくて、コンパイル中に原因不明の panic で良く落ちる‥‥。 スタンドアロンでの環境がほぼ整ったので、 ネットワークなどの設定に移る予定。
MOSFET の縦積みの解析をしているのだけど、 うまい方法が見つからない‥‥。 n 段とか積み重ねると飽和領域での動作条件がわかりづらいし、 そもそも大振幅で使う場合は解析そのものがものすごく難しいと思うのだけれど。
文書化しておかないと後で苦労しそうなので、 Solaris 環境のインストールメモをまとめることにする。
家の FreeBSD 環境では console から login していたのを、 xdm を使ったものに変更する。/usr/local/etc/rc.d に xdm.sh を入れて、 Xservers に -dpi 100 を追加、Xsession に ssh-agent の起動を追加。 chmod 700 ${HOME}/.xinitrc; ln -s ${HOME}/.xinitrc .xsession として終了。
まあ、console でも構わないし、 xdm を使う積極的な理由があったわけでもないけど、 なんとなく。
面接を受ける。
‥‥の一日目。佐藤は関係ありませんけど。
SP/20 で kinput2-v3 をコンパイルして入れる。 /usr/lib/locale/ja/wnn/demo/include/wnn と /usr/lib/locale/ja/wnn/demo/lib か。 なぜか JSERVER を localhost にすると落ちるので、 unsetenv JSERVER で対処。local ならうまく行くようだけど、原因は不明。
コンパイル中に panic が何度も。 この SP/20、触れないほど熱いんですけど‥‥ 空気穴を塞いでいるわけでもないし、この熱で落ちているんだろうか‥‥
WindowMaker を入れ終わったら、ネットワークの整備に移ろうっと。
OPamp + 抵抗 2 本の逆相増幅回路の入力端子を入れ換えて正帰還にしたらどうなるか、 という問題をカリカリ解く。
まず、代数方程式で伝達関数を求める方法はダメ。 これは安定点を暗に仮定してしまっているので、負帰還と符号が違うだけの答が出る。
次に、仮想的な時間遅れ要素を追加して、 正相入力端子と出力端子の電位に対する差分方程式を出し、∞の極限をとってみる。 この方法だと集積点の存在をうまく説明できるけど、正帰還の方は AH = 1 のときに集積点が存在しないことしか説明できない。 そもそも、時間遅れ要素を入れて良いのかという根本的な部分が厳密さを欠いているので、 これもパス。
最終的に、入力インピーダンスを∞とする場合の回路方程式から、 sgn(v_o) = sgn(v_+) の拘束条件を考えて安定点を求めるという方法で説明できそう。 結局のところ、v_+ = 0 が安定点である(A → ∞として)なので、 入力の微小変位に対して、それぞれの帰還が安定点からどのように偏位するか、 という問題に帰着できる。これを解くと、 正帰還はリレーと同じでヒステリシス特性を持ち、負帰還は線形になることが得られる。 めでたし、めでたし。
いろいろな本を調べてみたけど、きちんと議論しているものはないみたい。 制御系の本では、リレーを使った非線形フィードバック系を解いているところがあるけど、 積分要素は存在しないから、そのまま適用はできなさそう。 うーん、あんまりエレガントな方法じゃないなぁ。 もっときれいな(一般的な)手法ってないのかしら‥‥。
SA の翻訳(で、まだ提出していなかったもの)を一気に放出。 本当は、こんなに遅れてしまうとまずいものなんですが、 最近時間がありません‥‥。
Sylpheed という Gtk+ を使った mailer を試してみる。 うーん、見ためはきれいだし、初心者向けに良いかな。 研究室に入れてみようかと思い中。
これって FreeBSD Handbook と同じものなんだろうか‥‥ (だとしたら、一体いつの revision なんでしょ?)
品川までは高々 1 時間なので余裕を持って 15:00 頃 (あんまり気が進まないけど)出発。 ‥‥んで、16:15 頃到着。誰か来ないかな〜と待っていたら、 兵庫先生と M1 の面々と合流。M1 の集合時間は 16:30 だったそうな。 B4 はとりあえず、看板を持って立ち番を 1 時間ほどやりました。
祝賀会がはじまってからは特にすることもなし、 適当に食べて、ひたすらワインを飲む。 さすがにずーっと立っているのはつらい。 関根先生のお孫さんが元気に走り回っているし。 20:00 頃、終了。記念品を渡して、持ち帰るものを分担して解散。 ‥‥のはずだったけど、B4 だけで二次会へ。
二次会は上野。参加は以外と多くて 12 人。 居酒屋なので単に飲む・食べるだけ。 終了は 23:20 くらいかな。
日本語を使うための英文資料は、 やっぱり貴重だと思います。この湯原さんの文書を元に、目指すは books/handbook/l10n。
M2 の発表を聞く。むむ。exp(x) 近似は使えそうだぞ。 問題は、電流モード or 電圧モード回路の問題か。 νMOS を使えば入力は問答無用で電圧だよなー。 点列記憶 → 関数近似のアイディアって他にありそうなんだけど、 何か見当たらないのが不思議。
も め て る し。 品質に文句があるなら、自分でやれば良いのに。 T.F さんとは一度、メールのやりとりをしたことがありますが、 個人的にあんまり良い印象を持っていません。
「機械翻訳に手を加えた程度」ですか‥‥。 佐藤の翻訳だってレベルの高いものではありませんから、 こうやって思われているのかも知れませんね‥。 翻訳の専門家でもない、理系の学生ができる翻訳なんか、 たかが知れてます。理科大は英語ができない大学で有名ですし(← と開きなおってみる)。 :-P
「原文を読んだ方がよっぽどマシ」という翻訳は確かにたくさんありますが、 もし、自分のやっている作業に対して、 それなりに活躍されている方からそう言われたら、結構ショックです。
とりあえず、FreeBSD users-jp に出たスレッドをまとめて Q and A に提出しました。ずっと sym を使っていますが、 NVRAM 機能以外は好調です。ncr って残るんでしょうかね。 その点が一番心配なのですが‥‥
SA の翻訳続き。From がダブっているのはどうにかならんですか。 結構、翻訳が難しい部分がちらほら。
(続き)チェックが入ったので修正版を提出。 月曜日の夜には出せるかな?
www/ja/java と www/ja/security の更新。 SA 日本語訳のリンクを追加する。
http://www.unixmagic.org/ml/netbsd/199912/msg00141.html を参考に、CVSup で repository を更新する(元ネタは NetBSD-current)。 supfile は host を cvsup.de.freebsd.org にしてやれば良いようだ。
ところで、repository のディレクトリ配置/permission ってどうするのが適切なんでしょう? 佐藤は /home/ncvs に FreeBSD を, /home/cvs/{Net|Open}BSD にそれぞれの repository を置いています。owner/permission はそれぞれ ncvs:ncvs, cvs:cvs と 0775 です。repository を利用するユーザは cvs/ncvs group に参加させます。
もちろん、read-only な使い方しかしないので、最低限読めれば困りませんが、 CVSup で同期させるときに、一般ユーザでやってしまうと全部そのユーザが owner になってしまうのがちょっと気持ち悪いかな、と。
Security Advisory の翻訳をぼちぼち。 18 を提供してくれた人がいたので、それはパス。 ぶつからなくて良かった‥‥。
文書に画像を入れるって? 機能を盛り込む前に、できていないものを完全にしようよ。 考え自体は悪くないけど、いろいろなものに手を出しすぎ。 できること、求められていることをもう少し考えて欲しいな。
法事のため、田舎の山形へ行って帰ってくる。 そこで n 層 perceptron シミュレータを書く。 C++ を使ったのは久しぶりだけど、 小さいプログラムなら C より楽だなーとか思い中。 Pentium 100MHz のノートでは gcc295 のコンパイルが結構辛い。 原因不明のメモリ不足のエラーが出て困る。
とりあえず、学内選考で行こうかと決心する。 博士まで行くつもりだけど、いろいろ思うところあって、 学内では行かない方向で。
LAST MODIFIED: 2002/02/03 07:36:04 UTC