某日記

(後期)

平成17年10月21日(金曜日)

昨日

鬼堂龍太郎・その生き様(2) / 田中 圭一」を読んで寝た。 なんか最近変な生物が活躍してないね。

ISO-2022(2)

DR#288 関連 。 いや、この fetch_wchar(仮)の使い方ではありえないんです。 do-while の中ですべての文字が処理されるようになっています。 len が 0 でも、文字が吐き出されている間は state が 1 になるのです。 do-while の後で特別扱いしなければいけないのが、 実質的に不完全な文字およびシフトシーケンスで 終了しているケースだけになるように、 fetch_wchar(仮) の仕様を作ったのです。

ちなみに、あのコードは、s が固定サイズの一時バッファを 指していることを仮定しているので、 「本当の終端」の処理は省いてあります。 「終端だから、吐き出せるなら吐き出せ」 ということを明示的に行うコードが必要になるんでしょうな。 fetch_wchar(仮) の pmb に NULL を渡して while() を回すんですかねぇ。 この方法論における、より完全なコードはたとえば

	while ((len = fread(buf, 1, BUFSIZE, fp)) != 0) {
		s = buf;
		do {
			if ((err=fetch_wchar(ce, &wc, &s, &len, ps, &status)))
				goto error;
			if (status)
				wcs[pos++] = wc;
		} while (len>0 || status);
	}
	if (ferror(fp))
		...
	do {
		if ((err=fetch_wchar(ce, &wc, NULL, NULL, ps, &status)))
			goto error;
		if (status)
			wcs[pos++] = wc;
	} while (status);
	if ((err=get_state(ce, ps, &status)) != 0)
		goto error;
	switch (status) {....}
ですかねぇ(ps を初期化するためには別の関数が必要ですな)。

もちろん、 get_state(仮)を既存の mbrtowc_priv() と組み合わせるならば、 「2 : 決定状態だが、まだ吐き出していないワイド文字がある」を (size_t)-3 の代わりとして使うことになるでしょう。

なお、mbrtocXX で (size_t)-3 が不要であるというのは確かにそうですが、 (size_t)-2 はあいかわらず必要なので、まあ毒を食らわば皿まで、 ってことかもしれません。

この辺の細かい話 については、まあ一度レビューなりリファクタリングなりをするべきでしょうね。

TODO は他にも、thread ごとの locale 機能のドラフトが austin-group で出てたりするので、そういうのも考えないと。それ以前に、 足りてないカテゴリ(LC_COLLATE とか)を実装しろ、という話もありますな。

追記。よくよく考えてみると、 終端した時に文字/シフトシーケンスの途中なら、 fetch_wchar(仮) は EILSEQ を返すのがリーズナブルだから、 上の定型的な使い方だと get_state(仮) って要らないような気もしてきた。 iconv(3) の中で使う場合には、 途中でステート判定しなきゃいけないから必要だけど。

それにしても、終端の扱いは難しい。(size_t)-3 が発生するようなコードは、 厳密に言うと終端が iconv(3) では扱えないんだよなぁ。 たとえば、 Unicode の decomposed な文字列を ISO-8859-1 な文字列に変換するコンバータを開いて、 これに長さ 1 バイトの文字列「A」を食わすと、

  1. 最初の iconv() の呼び出しでは A を食って何も吐かない(ウムラウトとかが来る可能性を待つ必要がある)
  2. iconv(cd, NULL, NULL, &dst, &dstlen) して初めて dst に A が吐かれる
というような動作になるはずなのだけど、POSIX の仕様書には 2 でシフトシーケンス以外のものを返していいとは書いてない。 iconv(3) も考えが足りてない部分がいくつかあるのが困りもの (EINVAL が返った時に invalid conversion の数が取れないとか)。

usb at pcmcia

pcmcia な USB カード は、CF でちと高いですが こんなの があります。 ScanLogic のチップだったような。りなざうの人がたまに使ってますね。

平成17年10月23日(日曜日)

昨日

最新の NetBSD-current のソースに この arch このパッチ を当ててビルド。

  • build.sh に gigalandisk を追加
  • swap まわりで怒られるので conf/std を追加
  • obio.c で locdesc_t なんて知らんと怒られるので int に
という感じ。

今日

床屋。

ハンダごてが見当たらないのでシリアルなし。 「ハンダセット」って箱を開けたらハンダ吸い取り器とスタンドしか入ってねぇんでやんの。

HDD 引っこ抜いて、 パーティションテーブルと、パーティション 0,1,4 のバックアップ。

netbsd.bin を zImage って名前で放り込んだ。

パーティション 0 を残して他は消して、 パーティション 1 を NetBSD パーティションに。 disklabel で /, swap, /usr, /var, /home を確保。

てきとーにマウントして、sets の展開。MAKEDEV して etc の設定。

戻して電源オン。動かねぇ。

カーネルは読み込まれてるっぽい。アクセスランプが消えた後、 二度くらい唸ってから止まる。 なんとなくルートパーティションを見つけられてないのかなという気配も。

明日こて買ってくるか……。

メインマシンからクロスケーブルが出てるので、 都合がいいのは DTE 結線の D-SUB 9pin オスコネクタ。 2:RxD, 3:TxD, 5:SG か。

もう少し探したらハンダごて出てきた。 でも、明日健診なので中断。

来週末

せっかくだから、暴走特急三昧でもしてくるか。 ホリデーパスは特急の運賃部分に使えるから、 これと組み合わせるのがいいかにゃ。 端っこのほうには使えないけど。

大道芸

公道 についても一概には言えなくて、 利用許可さえ取れればやってもいい。まず取れないけど。

そういえば、東京都の場合は、ヘブンアーティストに合格すると、 指定された都の施設で活動できますな。

違法であるというのと邪魔であるというのとは明確に違うので(人間心理って不思議で、違法だというだけで途端に邪魔に見えだしたりすることもあるけど、それはまあ置いといて)、 個人的には実害がなきゃどうでもいいや、と思う (別に違法行為を擁護するわけではないけれど、 「合法な邪魔もの」のほうがえてしてよっぽど質が悪かったりするし)。 もちろん、おまわりさんのお仕事となれば話は別で、 捕まる時は捕まるわけでして、ご利用は計画的に。自己責任で。

平成17年10月24日(月曜日)

今日

健診。

夜中

へこへことハンダづけ。

まずテスターで Vcc と GNU を確認して、 次に TxD だけを接続してデータが流れてくることを確認。 ビンアサインは正しかった。 ラッピングワイヤを挿し込める DIP ピッチのヘッダをスルーホールに挿したら、 いい具合にキツキツになったので、マザーにはハンダづけしてない。 IC はスミチューブで絶縁して電源の上の空きスペースに放りこんだ。

やっぱりルートパーティションを尋ねるところで止まってたので、 適当に入力したらあっさりマルチユーザまで上がった。 毎回打つのはめんどいので、

config          netbsd          root on wd0a type ffs dumps on wd0b
としたカーネルに差し替えておいた。

静かなのはいいけど、ディスクまわりが遅いかな。

平成17年10月25日(火曜日)

昨日

zsh の configure を仕掛けたところでイスに座ったまま寝てた。 気づいたので布団で寝直した。

this と打とうとすると、しばしば tshi (tshiozak の一部)と打ってる俺

熊谷さんからお手紙が:

テスターでVccは確認できても、GNUの確認はちと難しいと思います。
ダイヤルを「AC V」ってところに合わせると RMS の大きさが測定できるの!

面白いからそのままにしておこう。

平成17年10月31日(月曜日)

このところ

面倒くさくて更新怠けた。

iconv 直した。 _citrus_stdenc_get_state_desc() という関数で、 エンコーディングに依存しないステート情報を取れるようにした。 拡張できるようにしてあるけど、今のところ generic な情報ということで、 例の get_state(仮) 相当の情報が取れるようになってる。

不親切な NetBSD/gigalandisk インストールメモ 。 sets を作るあたりはもうちょい何とかしたいところ。

昨日

ドクター秩父山 / 田中 圭一」を読んで寝た。 復刻版。

消費税

これ 。 輸出分に対応する仕入高が課税仕入高の他に 2296 億円 * 105/5 = 4 兆 8216 億円(税込)あったというだけのことだよなぁ。

まあいずれにしても、 庶民の立場に立つならば、ツッコミどころは輸出戻し税ではあるまい。 財政破綻で増税が免れられない昨今、財界は税負担したくないから 増税分を消費者に押しつけることに賛成しとるわけです。 まあ結局ババを引くのが誰かというレベルの話でしかないのだけれども、 こういう発言に正面から異を唱えていくのが庶民の味方さんの役割だべな (今の庶民が適切な負担を背負っているかと言われると謎なのだが、 それは棚に上げておきましょう)。 どうもこんな下らないところで言いがかりをつけてるあたり、 庶民の味方さん方面ってのはろくな人材がいないらしい。

まあもはやイデオロギーの対立でもなかろうし、 経済的右翼が富の総和の上昇を目指してるところで、 いかにその足を引っ張らずに(あるいは引っ張って) 各個人のもつ富の中央値を引き上げるか、 というのが、庶民の味方たる経済的左翼に求められる役割だよなぁ。 これからの経済構造を予想してみるに、 ぶっちゃけ我々下々の者はどーせ頑張っても大したことはできやしないし 期待もされちゃいないので、 いっそ一億総ニート化して少数のお金持ちの人々に養ってもらうような構造を 確立するのが今の左翼の急務ではなかろうか、 などと冗談だか本気だか分からんことを言ってみるテスツ。

いやわたくし、中道左派を自任しておりますれば、 全く冗談でも何でもなく左方面にはもう少し頑張っていただきたい所存なれども、 已んぬるかな、左方面は相も変わらずアレなので以下略。 ちょっと夢見がちなアナタ、 もっと現実を直視しないと人民(カレ)からそっぽ向かれちゃうぞ、 みたいな。