優雅な生活の設計と実装

The Design and Implementation of the Gracious Days


LAST MODIFIED: 2002/02/03 07:36:05 UTC

新しい秩序の確立は、他の何にも増して難しく、
成功する可能性が低く、危険な事業である。
改革者は旧秩序から利益を得ている
全ての者を敵にまわし、
新秩序から利益を受けるはずの者からは
及び腰の支持しか集められない。
--- Niccolo Machiavelli, The Prince

この種の「保護」は初心者を保護するかも知れないが、
熟練ユーザを窮地に追い込むことになる。
というのは、何が親切であり、何が適切でないかかという
オペレーティングシステムの考え方の裏をかくことばかりに
かなりの労力を費やさなければならないからである。
--- A.S.Tannenbaum, Modern Operating Systems


不定期更新の日記です。ディスクスペースの関係上、 あまりに古くなったものは順次消していきます。 この日記の更新は、今野さんの *BSD Diary Links から取得することが可能です。

December 2000

November 2000

October 2000

Monday, October 30

* from FreeBSD-doc

同期システムの話

* from FreeBSD-doc-jp

books/handbook の install と advanced-network を commit しました。 book.sgml がちょいとまずいので修正。 これだけ長いとチェックも大変‥‥

Thursday, October 26

* fj.lang.c

ぐあ。なんつー投稿のしかたをするのだ。 まともに相手をしているとローカルのスプールが溢れてしまいかねないので、 急遽 leafnode に設定を追加。

maxlines=10000

sut.*

理科大学内ローカルの NewsGroup なんですが、 投稿者が少ないということが話題になっとります。 「最近の人は NetNews なんか知らないのでは」という意見で一致しそう。

Monday, October 23

.login

いろいろなアーキテクチャが混在する環境でログインスクリプトを統一するためのフレームワーク (長い) をずっと考えています。以前作成した試作版を使っているのですが、 そもそも sh-script の勉強のためにつくったもので ムダに細かく分割してあったりする部分があるだけでなく、 処理も重く保守しづらいので、もうすこし簡単な構成をとるように書き直し中です。

とりあえず FreeBSD の ash, Solaris の /bin/sh, HP-UX の /bin/sh, SunOS4 の /bin/sh で動かないとお話にならないという環境なのですが、 標準的な UNIX コマンドも細かい挙動が異なるので困ってます。 Solaris の sh は IFS を変更した時の set の挙動がおかしく、

IFS="e"; set -- "sometext"; echo $1

とするとエラーになります。どういうエラーが出るかは 試してみると分かります。 どうやらシェルの字句解析部にも IFS が使われているというのが真相のようです。 ちなみに、

IFS="e"; "set" "--" "sometext"; "echo" $1

こうすると動きます。実装がまずいんだと思うんですけどね。

他にも、

IFS="56"; set -- "123456789"; echo $#

あたりの挙動が 3 だったり 2 だったりと違う のを確認しています (3 になってくれると嬉しい)。

lbxproxy

古い sum4m/sum4c で X 端末をつくるにあたって、 使えそうなツールを探索中。 lbxproxy というのを使うとプロトコルのやりとりを圧縮してくれるらしい。 今は ssh の forwarding で何とかやっているけど、 xdm あたりでリモートの X サーバに接続できれば (加えて ssh の pass phrase 入力ができれば) ベスト。X は詳しく知らないから、ちょっとお勉強。 何か良い資料はないかなぁ。

Sunday, October 22

My Server

Flets ISDN で常時接続しているサーバ (ノート型 PC) が FreeBSD 3.2R + PAO のままなので、 OS のバージョンアップを計画中。 4.1.1R にするとして、PCCARD の NIC を認識してくれるかどうかがちょっと心配だったので、 スペアのノート PC に 4.1.1R を入れてみる。 なんか PCCARD の初期化がうまく行かないことが何度かあったけれど、 これに関連するんだろーか?

NIC の認識は特に問題なし。3.2R からの buildworld はこれみたいに うまく行かないという報告が多いけれど、Perl が build できないというのはこのメール(from -stable) を読んでいないのではないのでは、と思ってしまう。 developers@FreeBSD.org に流れた mktemps() で引っかかる例は佐藤も遭遇しました。 そのうち UPDATING に追加されると思いますが、 3-STABLE にあげてから 4-STABLE に持っていけば、素のままでも大丈夫です。

castle.jp.FreeBSD.org

死んでるもよう。メーリングリストのメールが朝方 07:00 頃からぴたりとなくなったので、 その頃に何かあったのかも‥‥。 12:00 現在 www.jp.FreeBSD.org は生きていますが、 home.jp.FreeBSD.org はアクセス不能になっています。

Friday, October 20

doc-jp NewsFlash

ごめんなさい。あんまり更新していません。 アクセスログをみていたら定期的に何人かアクセスしているのですが、 そもそも載せられるだけの情報がないのと、 このページをおいてあるディスクの容量的な問題、 さらに情報があっても実体をおかないとリンクがつくれない (実体は doc-jp ML に流れたり、CVS リポジトリに入ったりする) ため、いまのところ役に立ってません。 更新情報は FreeBSD announce-jp ML の方に流そうかと考えていますので、 気になる方はそちらをご注目ください。

Cadence EDA tools

Cadence の電子回路シミュレータの環境設定をする。 マニュアルには 24bit-plane モードでも動きますと書いてあるのに、 実際に起動してみると、どうやっても 8bit モードでしか動かない。 comp.cad.cadence には「バージョン 4.4.2 以降は 24bit で動くよん」 という記事がある (うちのはバージョン 4.4.5)。 Solaris 側が悪いのか、と Motif ライブラリと Xsun のパッチをあててもダメ。 しかたないので Ultra5 のグラフィック設定を 8bit に変更する羽目に‥‥。せっかくフルカラーで快適な環境なのにねぇ。

Thursday, October 19

WindowMaker on Solaris 2.6 (again)

原因判明。 /usr/openwin/lib/libtiff.so と /usr/local/lib/libtiff.so の衝突と /usr/ucblib/libucb.so が LD_LIBRARY_PATH に入ってなかったことによるみたい。 佐藤の環境は LD_LIBRARY_PATH の先頭が /usr/local/lib だったので正常に起動できていた一方、他の人は /usr/openwin/lib の方が先に書かれていて、互換性のない libtiff を呼び出してシンボルの未解決エラーで落ちる、 というのが真相。コンパイル時の指定に不備があったのか、 /usr/ucblib も解決できなくなったようなので、 それも含めて LD_LIBRARY_PATH を設定して正常になった。 うーん、隣においてある Solaris 7 では同じ設定で特に問題なく動いているんだけど‥‥

catalog

textproc/dtd-catalogs (FreeBSD Ports Collection) に SGML catalog の管理を行なうスクリプト mkcatalog が入ることになりました。 自分で catalog をカスタマイズしていても、 それを壊さずに ports/packages の追加・削除が行なえるようになります。

Wednesday, October 18

New FreeBSD Core Team Elected

選挙に関する press release が出ました。日本語訳をつくるつもりでいます。

WindowMaker on Solaris 2.6

sun4m + Solaris 2.6 にインストールしてあった WindowMaker 0.62.1 が急に起動しなくなり、ログインできない人が続出。 こりゃいかんと $HOME/.dt/startlog を見ると、 libPropList の読み込みで wmaker がコケている模様。

ソースから libPropList をコンパイルし直しても症状は直らず、 今度は WindowMaker も再コンパイルしようと思ったら、 libPropList が見つからないと configure にはじかれる。 /usr/local/lib にはあるのに、--with-libs-from を指定しても改善しない。

shared library でコケるのは ldconfig のせいかなと思ったりしたけど、良く考えてみれば Solaris には ldconfig がない。ふと思いついて ld -lPropList してみると、 シンボルが見つかりませんとエラーが出ることを発見。 問題は wmaker ではなく、libPropList の shared library にあるようだ。

未解決シンボルは yy_* なので、flex と bison を入れ直し (というか、そもそも入れていなかったような気もする)。 再構築すると ld -lPropList は OK。 WindowMaker の configure を無事とおって再構築完了。 どうして前に入れた時はうまく動いていたんだろう?

Sunday, October 15

情報処理技術者試験

終了。徹夜明けに加えて勉強していなかったので出来はいまいち。 午後 I が時間的に厳しかった。 PHS のシステムも覚えておかなきゃいかんのか‥‥。 32kbps の PIAFS で良かったのかな?

Friday, October 13

from developers@FreeBSD.org

Core election 結果発表。 当落結果は press release を出すそうです。 jkh, 浅見さん, imp, peter は順当かな?

M18

Mozilla M18 が出ました。(CPU パワーが余っている人は) おすすめ。 Netscape Navigator 4.75 と比べるとかなり重いです。

Thursday, October 12

MTU

Windows の IP パケットって MTU 1500 の インターフェイスに対しても mss 1484 で送ってくるみたい。 24 バイト分計算間違いしているんじゃないかなぁ。 IP フラグメントが起こるのがとても気になる。 レジストリか何かで変更できないものかしら‥‥。

RICORA の C 言語講座 #3

またまた追加分。 信頼できない参考書を使うと、 どれだけ歪んだ知識を持ってしまうのか実写版。 今度は「計算の表し方」だそうです。

型変換

何が当然なのか良く分かりませんが、整数でなくても可能です。

何を言いたいのかさっぱりです。 このように関数の引数にインクリメント演算子を使うと そもそも評価順序が保証されませんし、 x の値は変化します。 x 自体の値を変えずに、という原文の意味を忠実に反映するのは、 x+1 や x-1 という式でしょう。

例に示されている右辺の結果は必ず long になりますが、 x の型によって代入変換が行なわれるため、 全体の計算結果はどういう型になるか分かりません。 原文の記述は意味不明です。 型はサイズが同じであっても独立しています。

嘘です。このキャストは x のみを float とし、 次に二項変換によって型変換されます。 ですから、y が int だとすると変換で float になり演算は float で評価されますが、 y が double だったりすると演算は double となるため、 原文のような動作は期待できません。


あいかわらず「いい加減だなぁ」という感想しかないのですが、 作者にはコンタクトをとっていません (というか面識もない)。 外部の人もサポートするみたいですが、 公開するなら、もう少し勉強してからにすれば良いのではないかと思います。 こうやって誤解する人が増えていくんでしょうね。悲しいことに。

Tuesday, October 10

研究室環境

研究室にある sun4c や sun4m をどうしようか考え中。 回路シミュレータや IC 設計用の CAD が使えるようなクライアントとして設定したいので、 NetBSD/sparc を入れてディスクレス X クライアントにするのが良いかなぁ(10BASE 環境でどこまで満足に動作するか分からないけど)。

現時点で RS/6000 40P, HP9000/782, IPX, SP/10, Ultra5 などなど、ごちゃまぜのネットワークになっているので設定が大変。 HP-UX は使いにくいし、SunOS4 は現役だし、 さらにネットワーク用のサーバとクライアントをきっちり分けていないので マシンを止めることすら困難だったりする。

Monday, October 9

from FreeBSD doc-jp

FreeBSD-SA 00:52 の翻訳の草稿が完了。 IP spoofing の訳語はマヌケなものしか思いつかなかったのでそのまま。

そういえば FreeBSD doc-jp のお手伝いを初めてやった時から、 約一年と半年が過ぎました。 一番最初の時よりも慣れてきてはいるものの、 翻訳自体はいつまで経ってもやっぱり難しいです。

佐藤の翻訳スタイルは「日本語らしく」がモットーで、 逐語訳はほとんど意識していません。 本来の英文の構成を崩すという翻訳が許されるかどうかは 多分意見の分かれるところだと思うのですが、 がちがちに逐語訳された文章は、日本語だと呼びたくないのです。

それは文章をうまく構成できない人がつくる 「逐語訳しようとしたがために間違っている」翻訳文が目に付くからです。 もちろん、文章をうまく構成する人もいるのですが、 そういう人は崩し方というか、 逐語訳してはいけないパターンのようなものを良く知っているんだと思います。 翻訳ですから、元の英文と離れた日本語文をつくるというのは 確かに抵抗を感じる行為かも知れません。しかし、 「単語を日本語に訳して並べかえただけ」の翻訳は最低です。 翻訳は単語毎に区切って訳していけるほど単純な作業ではありません。

最近、翻訳の成果なのか、 翻訳文を読むと元の英文がおぼろげながら推測できるようになりました。 「あ、これは逐語訳してるな」っていうのは読めば分かります。 残念なことに、そういう邦訳本がたくさん出回っているんですね。 たとえば、佐藤の研究室にあった、あるソフトウェアの日本語版マニュアルなんですが、 "Click A to create new property." という文が、 「A をクリックして新しいプロパティをつくります」と訳されていました。 そのマニュアルを使って作業していた人は、A をクリックすれば 新しいプロパティができるものだと (当然) 思って、操作していたのですが、 どうもうまく行きません。 本当は「新しいプロパティをつくるために、まず A をクリックして‥」という意味で、クリックするだけでは プロパティは作成されない、ということだったのです。 彼はこれで数時間をムダにしてしまいました。

「いや、これでも意味は分かるし、誤解する方がおかしい」と 感じる人もいらっしゃるかと思いますが、 佐藤は、この例のような表現ははっきり誤訳であり、 翻訳者の責任だと考えます。 日本語化されたソフトウェアのマニュアルですから、 翻訳した人はそのソフトウェアを実際に使っていないのかも知れません。 確かに背景もコンテクストもわからない時は、 逐語訳とするのが最も無難ですから、 もしそうなら翻訳者を責めるのは可哀想です。 しかし、コンテクストが分からなければ翻訳なんかできっこありません。 プロなら、そういうことを蔑ろにして仕事をすべきではないでしょう。

また、逐語訳は英文の要素をすべて日本語文に 詰め込まなければならないので、変に窮屈で回りくどい、 一言で言えばわかりにくい日本語をつくりやすくなります。 翻訳した本人が「うまく対応が取れた」と満足したところで、 読む方は大変です。どんなに英文が簡潔に、 分かりやすく書かれていたとしても、日本語にした時に 難解なものになっていたら台無しになってしまいます。 そういう意味でも、逐語訳は「文の理解のしやすさ」を 大きく変えてしまう危険な表現でもあるのです。 翻訳は原文のニュアンスや雰囲気、原文の意味だけでなく、 原文にある「分かりやすさ」も伝えられるものであるべきです。 日本語と英語は一対一で対応しないのに、 単に英語の構造をそのまま日本語に持ってきたって うまく行きっこありません。 そこに生じる無理が、読み手に負担をかけるわけです。

日本語になっていると、文章の矛盾に気付かなかったりします。 翻訳文を読んで、何か分かったような、分からないような 文章に出会ったら、それはあなたの理解力が悪いのではなく、 翻訳が悪いんです。

‥‥と、ぐちぐち書いてますが、 最近、図書館から借りてきたニューラルネットワーク関係の 邦訳本がひどいもので、それを引きずっているせいでもあります。 偉い先生と留学生らしい人の共訳なのですが、 明らかに誤訳だらけで読めたものではなく、あとがきには 「日本語にも複数形を示す "s" があれば良いのではないかと思った」 なんて臆面もなく書いてあったのです。 能力不足を棚にあげて、日本語を侮辱するような物言いに、 正直、怒りを覚えました。

まあ、そんなわけで「翻訳は大変なんだよ話」はおしまい。 もちろん、佐藤の翻訳にも間違っている部分はたくさんあるでしょうから 人のことは言えないのですが、少しでも自分の信念に近付ければ良いなと 思って勉強しています。自分では、このままで良いのかどうか良く分からないので、 翻訳文についてのご意見・ご感想があれば 遠慮なく佐藤までメールください :-)

Sunday, October 8

/usr/ports/emulators/linux_base

今まで Linux 互換環境がどれくらい実用になるのか調べたことがなかったので、 ふと思い立ってインストールしようとしたら install-info が signal 11 で code dump してコケるもよう。 何が悪いのかさっぱり :-(。 linux 関連の package をすべて削除して、何度か make し直したらインストールに成功。 ブックマーク処理が遅い Mozilla M17 はとりあえずパスして Linux 版 Netscape6 PR3 を入れてみることに。

そのままだとインストーラが最後で core dump. ログを見るとファイルの転送はうまく行っているようなので、 regxpcom を手動で実行して起動。 速度は M17 よりちょっと速いような気がするけど、 動作はむしろ悪いような気がする。ブックマークの import は動かないし。

うーん、やっぱり M18 のソースを追っかけてみようかな。

mozilla M18

‥‥というわけで M18 の最新ソースをダウンロード。 いくつかのデバッグオプションをはずして build する。最初に ac_add_options --disable-build-xpfe を指定したら build に失敗。 ac_add_options --disable-mailnews, ac_add_options --enable-optimize, ac_add_options --disable-debug の指定なら OK。

Agent 表示は Mozilla/5.0 (X11; U; FreeBSD 4.1-STABLE i386; en-US; m18) Gecko/20001008. ブックマークまわりもそこそこの速度で動作するし、 ウィンドウの書き換えもおかしいところはなくなって とても快適。少し様子を見て、致命的な欠陥がなければ 真面目に Netscape 4.75 からの移行を考慮中。

Saturday, October 7

SSH + NFS

fj で xdm の認証を SSH の agent に渡すという方法について話題になってましたが、 そういえば、SSH の秘密鍵 ${HOME}/.ssh/identity って NFS 経由だと平文のままネットワーク上に流れるはずですよね。 複数のホストが存在するところでは /home は NFS マウントされることが多いはず。

RPC が secure でないとしたら、 これってまずいんではないかと思うんですが、 それについて触れているところは見つけられませんでした (それとも NFS で共有しているところになんか置かないというのが常識なのかしらん)。 情報募集。

Thursday, October 5

age++

お誕生日。

Tuesday, October 3

from FreeBSD doc-jp

revision check スクリプトの改変版が commit される。 もう少し整頓するべきところが残っているのでそれにも手を付けたい。

<7maecmea8n.wl@waterblue.imgsrc.co.jp>@FreeBSD doc

sgmlnorm がファイル出力をサポートしていれば良かったんですが、 そういう機能は付いていないもよう。 リダイレクトを使っている限り SGML の構文チェックを前段に入れるとかして 変換前にどうにかするしかないので、 現状のでベストな気がします。確かにスマートではないんですけど。

Monday, October 2

校歌

うははは。 巷で噂の福島県立清陵情報高等学校 校歌。宗 左近 作詞は「宇宙の果物」とか、 微妙に矛盾した感じのするタイトルが何とも :-)

RICORA の C 言語講座 #2

前回に引き続き、 あまりにひどい説明なので補足。 最近追加された定数についてです。 例によって ANSI C 規格に照らし合わせてみます。

文字定数

思いっきり嘘です。文字定数は int 型で、 接頭辞 L を付けると wchar_t 型となり、 マルチバイト文字も表現できます。

浮動小数点定数

嘘です。何も指定しなければ必ず double 型になります。 f/l の接尾辞を付けると float/long double 型を指定することも可能です。

ユーザー定義定数

なんだこりゃ。こんな用語(「ユーザ定義定数」)はありません。 #define を大きく誤解しているようですが、 #define は型を規定せずに単純な置換だけを行ないます。


厳密かどうかなんか関係なく、「C 言語」と称して 明らかな嘘を並べることの正当化にはならないと思いますけど‥‥

コンパイラの独自機能を使うなら別ですが、 「C 言語」のプログラムがコンパイラを通りきちんと動くには ANSI C 規格に準拠していることの方が重要です。 コンパイラを通れば良いなんていうのはかなり乱暴な考え方だと思うのですが、 たとえばコンパイラにバグがあったらどうするんでしょう?

Sunday, October 1

October

ついに 10 月。気温も下がって過ごしやすくなってきました。

www.openbsd.org の翻訳をお勉強も兼ねてやっていたのですが、 情報を集めてみると同じ作業をしている人が何人かいるようです (山形浩生さんもやっているみたい‥‥)。 BSD magazine のプロジェクト短信に jp のミラーサイトに関する記述があったのでメールしてみたのですが、 返信がないのでとりあえずここに置いています。 CVSup したソースツリーから持ってきた原稿は生 HTML なので SGML 化したくてしようがない ;-).

文書管理の点で *BSD を比較すると, やっぱり FreeBSD が一番進んでいると思います。 適当なプリプロセッサを使わず、 生 HTML を使って文書を管理するのは思ったより大変です。 佐藤は現在、FreeBSD Doc で使っている方法を自分風にアレンジ・改良して このサイトの文書を管理していますが、以前は生 HTML を手で書いて管理していました。 SGML や XML, PHP などを使うと文書再利用の点だけでなく、 定型部分の切り分けができ、 個々の文書に対する作業量がぐっと減らせるというメリットがあります。 生 HTML の管理は、特に文書量が多いとなると本当に悪夢です。 デザインに凝っている場合はなおさらでしょうね‥‥。

www.geocities.co.jp

geocities.co.jp が落ちたようです。この前のように DDoS なのか、単に機器が原因なのか不明ですが、 ここまで完全にストップされるとこっちが困るので、 メインのメイルアドレスを hrs@eos.ocn.ne.jp に切り替えました。

また、ついでに yi.org で取得したドメインを使って smtp サーバを設定し、hrs@hrslab.yi.org を使えるようにしました。 なかなか便利で良いです。 さすがにメインで使う気はありませんけど。

DocBook ML

日本語で情報交換するための DocBook ML ができたようなので subscribe。