Not only is the Internet dead, it's starting to smell really bad.:2008年07月分

2008/07/03(Thu)

[OpenBSD] Citrus patch

20080702版、まだテストちうなので正式版はもうちょい待ってちょ。
ちとリリースから時間経ち杉てHEADは既に4.4なので、4.3にはそのまま当たらないかも。
スマソ。

経ち杉っても4.3からまだ2ヶ月なのにlibcのmajorが43 -> 47になってやがる。
ホントOpenBSD-currentは地獄だぜーフゥハハー。
中華てっきりリリース番号とlibc majorを同期させるんことにしたんだと勝手に思ってた。

これが4.3を出す前だったら、50までmajor crunkさせといて
突然OpenBSD 5.0を出すんじゃないかと疑ったが。

なぜならoption COMPAT_43問題があるからな。
結局 COMPAT_O43にしたようだけども。

今日

本業焦げ気味、若い子が次々と潰[お察しください]

TODO: いろいろ飛んできてる直メール、忙しくて返事書けてなかったので今夜中に出すこと。

2008/07/06(Sun)

[OpenBSD] Citrus patch

make distrbutionまで通るか確認してる時間無いので そのままリリースしちゃいます。
不具合あったら教えて頂戴。

つかまだこのpatch使ってる人いるのだろうか。

週末

Minolta SRT101のファインダーが暗過ぎる事に腹を立て
ついカッとなって同X-700をポチってしまった、今は反省している。

SRT101はα-7700iのプリズムと交換すると明るくなるっちゅー2ch情報本当かにゃ。
7700iがOKなら8700iでも良さそうなもんで、それなら壊れたの1台持ってるから
試してみたい気ガス。

BlogsBooks are burningのギターソロが久しぶりに聴きたくなって
Nonsuch / XTC 買ってきた。
ジャケ印刷しょぼい、昔はこのお城の絵ってプラケースに金メッキだったよな。
あとついでに Oranges & LemonsSkylarkingとか。

2008/07/07(Mon)

[NetBSD] current-user

wcstoldの__strong_alias問題。
ありゃそもそもwcstol.cをコピってきてそのままなんだけど
wcstol.cは私が以前__weak_alias()不要じゃねってんで削った時
1時間もしないうちにchristos氏に__strong_alias()と__weak_alias()付きで
commit返しくらってショボーンだったので、まあそういうもんだろと放置してたんだけども。

まあ氏が使い方を勘違いしてたのでわないかと。
多分わざわざnamespace.hをincludeしなくても__strong_alias()使えばいいじゃんピコーン
というノリでやったのだと思う。
まあ実際binutils-2.18でない限りあれでもOKだったわけだし。

2008/07/08(Tue)

昨日~今日

朝から吐き気で目覚めてとても体調が悪い、1回休み。

駅前再開発地区のネコ難民キャンプが草刈の憂き目にあい消失してた、YOSAKOIサミット?
一昨日までぐだーっと幸せそうに昼寝してたやつらはどこへ行ったのやら、鬱だ。

ちゅうことで(どういうわけで)、P.I.Lのよりによって 9 なぞ
久々に聴きたくなったのだがどうやら廃盤っぽいな、困った。
disappointed聴きたかったのに。
再結成Sex Pistoles来日記念ちゅーことで再発しないもんだろか。

Ares-VはSaturn-V超だと、 ソレナンテ Nova
ちゅうか第一段は、液水の RS-68Bでなしにケロシンの F-1Aにしとけばピザ化しなかったんじゃね?

今の技術なら N1ロケット並の×30クラスタでも余裕で制御できるのだろーか。
RD-170×30とかならクレムリン宮殿でも浮きますな、同志設計主任。
お そ ロ シ ア

2008/07/09(Wed)

今日

ノウゼンカズラ(凌霄花)咲いとる。
そういやそろそろ睡蓮とか蓮が咲いてる頃だべ、フラワーセンターいってくっか。

アーケードのツバメの巣、もう動かない嘴だけがちょんと顔を出してる、カワイソス。

夜のぞいてみたら空き地にネコ全員集合してた、身の隠し場所なくてキョドってたけど。
心配させやがってくぬ。

うーん? sysinst壊れたってこれこないだ俺弄ったcursesのせいだ orz
なんか一度make cleanしないとだめみたい、ぐわーどういうこっちゃ。

再現しなくなった ...

2008/07/10(Thu)

昨日~今日

花屋、季節のユリはネコには中毒の元なのでヒマワリをアレンジで。

動かない嘴は死んだ子ツバメではなく抱卵中の母鳥ちゅーことが判明、なーんだ。
お隣さんはもう巣立ちが近い雛どもがギャースカ騒いでる時期なのに晩婚だったのね。
R35とかアラフォーってやつ?

Stanley KubrickのDVDがなんか特典付で再発してるのだけどお値段お高目。
どうせ買うならBlu-rayなんだが、画質イマイチちゅー評判ばっか耳に入るのと
そもそも俺がドライブ買うのはまだあと5年はかかるだろうちゅーことで無視。
でも 劇場上映は行きたいな。

えーっと TODOsで潰したのってCitrus patchだけか orz
まずpccのpatchを最新に追従する作業しなきゃだなぁ。
というかこれに追加してにnviとかcursesとかもやらんとならん orz

2008/07/11(Fri)

今日

pcc(1)の_Bool対策patchをtrunkに追従してみたら、PLUSEQ(+=)/MINUSEQ(-=)の場合に
integer promotionが有効にならない件のkludge(x += yを x = x + yにrewriteする)を
追加したとこが悪さしてるようでinternal compiler errorになる、とほほ。
やぱし本腰入れてソース読まんといけんのかのう。
original pccと比べてBSD styleのindentに直したせいで逆に可読性落ちとる希ガス。

tamoさんとこ、ragge氏は夏休みらしいw

というわけで先にnviのregex対策かにょ。

いや5.0枝前にlocaleioネタにケリつけないとならんか。
まぁyamtさんに現状報告してあるのでcoreから方針がでるまで放置。

つかmulti-locale(ry

決めたX61をセットアップしよう、まじで。今度こそ。

2008/07/12(Sat)

今日

Minolta MC W.ROKKOR-SI 1:2.5 f=28mm ポチってもうた。
さすがはアトムレンズ、パねぇ黄変でんな。
リバーサルならタングステンフィルム使うくらいで丁度いいかも。
あとMC TELE ROKKOR-PF 1:2.5 f=100mmもげと。

ついにL版プリント一枚37円か、同プリ0円なんて時代もあったのにな。

某板より。

427 :名無しさん@九周年:2008/07/12(土) 12:44:28 ID:t+CBsvAaO
    この先、良いことなんか一つもないが
    俺は一生Perlに付いて行く

号泣した。

2008/07/13(Sun)

今日

ねこ初盆、おかえりなさいませご主人様。

最後のKonica Minolta CENTURIA Super400使い切った、サクラカラーの末裔よさらば。
ちゅうことでネガは名前だけ継承(中身KodakのOEM)したDNP CENTURIAにスイッチ。
なぜなら安いから。

某家電量販店のカメラコーナーのジャンク箱に割と状態の良い
Minolta α-8700iがぶるぶる震えてたので見かねて保護してきた。

ロバート・キャパ最期の日を読んでて、ハノイは漢字で(かつてはベトナムも漢字圏)
河内と書くことを知った、そうするとハノイロックスって河内音頭(ry

tamoさんとこ、muttは--without-wc-funcsでbuildしてるでしたっけ? (Citrus patch使ってないですよね?)
それならmutt.hでちゃんとOSのMB_LEN_MAXをundefした上で
MB_LEN_MAX=16で再定義してるみたいですが(include順の問題で有効になってない?)。

んで

euc-jp から utf-8 への mutt_convert_string がバッファ不足になってた

のくだりで、コード変換なのにMB_LEN_MAX? ペロリこれは(ryと推理するに
要は この話の問題なんじゃないかなーと(いやちゃんとmuttのソース読んでないけど)。

xvmwareに同梱のiconv_wrapper.cが参考になるかも。

まぁiconv(3)はまともに使えてるコード見たことないしにゃ。
特にinputが'\0'終端されてなきゃoutputも'\0'終端されないなんて
あのプロトタイプ見りゃすぐ判るっしょと思うんだけど
ケアし忘れてオーバーラン系のバグの温床になってたりしまんな。

かといってstrl*みたい常に最期に'\0'を足すような過保護するのも
無理ではないけど、バッファリングしながらの変換には邪魔だし
それにstateful encodingの場合最後に'\0'を足すのには
stateを初期状態に戻すescape sequence吐かんとならんので
バッファ境界の度に冗長な変換が行われてしまうしなー。
それにiconv_tはmbstate_tと違ってsave/restore/duplicateできないし。

あ、あとどうでもいいですがxvmware時々コピペができなくなるバグがあって
おそらくXGetSelectionOwner -> XtOwnSelectionでraceってる予感、そのうち直します。

2008/07/14(Mon)

[OpenBSD] mutt-dev

--without-wc-funcs無しであれば素のOpenBSDを使う以上
動いてたのは運が良かったのかもちゅうことで。

iconv(cd, NULL, 0, ...)はstateless encodingの場合、あるいはstateful encodingでも
すでに'\0'まで変換が行われてた場合は何もoutbufには書き込みません。
それ以外の場合はシフト状態を初期化するためのエスケープを'\0'は含まず出力します。
あぁややこしい。

本当はmutt_iconv()の設計がいまいちで、mutt_convert_string()側ではoutbufをmalloc(2)せず
mutt_iconv()側でE2BIG返ってきたらreallocしながら変換を実行すべきなんでしょうけど。
それとmutt_iconv()自体を

  1. nul-terminateまでをone-shotで変換する関数。
  2. ↑を複数行まとめて実行する関数

にリファクタリングすべきなんでしょうね。
# そもそも1はiconvの機能として標準として用意しとけとも思う。

多分一番説明がめんどくさいのが、MB_LEN_MAX=1なんだからinput encodingのeucJP(MB_CUR_MAX=3)
が扱えなくて当然、よって問題なしとか判断されちゃうかもってとこですかね。
どっちみちiconv()ではM:N変換を扱わなければならないので、対策が必要であることを理解してもらえるかどうか。

しかしOpenBSDはlibcのnamespace.h + __weak_alias()の扱いについて
これ誰も気にしてないところが少し不思議、まぁFreeBSDも以下同文。

今日

蝉が地中より這い出て変態しながら奇声を上げる毎日も近いな、暑過ぎる。

sysinst(8)が死ぬのは src/distrib/utils/libhack/multibyte.cのせいで、dsl氏がすでに直してくれてた模様。

2008/07/16(Wed)

今日

明け方頃かすかな鈴の音で目が覚めた、本当にお盆で帰ってきてるのかもしれない。

コウナゴ、学名から差別語サニタイズでおなじみの日本魚類学会がアップしはじめました。
ヤマメにアマゴにアイナメ他、沢山ありそうだな。

2008/07/17(Thu)

mutt-dev

multibyte guru やぱし長髪で髭を生やしてリコーダー吹(ry
i18n paranoidsって21st century schizoid manの親戚でそか。

「お! FrippさんとLevinさん!奇遇ですね!」
「おお! そういう君は****(聞き取れず。何かBlueぽい名前)ではないか!Discipline!」
「Discipline!出た!(以下略

あー俺からはDisciplineって最も遠い言葉だなぁ、動きゃいーっすよwww
どっちかっつーと13th Discipleの方やなー、江頭 Five Thirty

話を戻すと、あの部分のコードはoutbufにどーんと1kくらいバッファ確保しといて
あとはE2BIGの度にreallocしてサイズニバーイニバーイのってのが一番頭使わずに済むと思うんだけどにゃ。
まぁそのへんは趣味の世界なので、私としてはMB_LEN_MAXはiconvとは無関係だよちゅーのが
判っていただければそれでいいのです。

2008/07/19(Sat)

続 mutt-dev

引き続き tamoさんとこ。

なにこの 1024 って!? それを倍々ってどういうこと!? 悔しい、キーッ

ちょwww 蟹飯先生曰く俺の本読んでないってどういうこと!? 悔しい、キーッ
mutt-devそんな感じですか、まぁバイバインも問題がないわけじゃないんですが。

derek氏のポストより

It would be nice if iconv() worked like the snprintf() family of
functions (more recently) where if the buffer used is too small, the
function returns the lenght of the string it *would* write into the
buffer, if it were large enough. :)

要するにこんなのが欲しいのかなーと。

SYNOPSIS
	size_t iconv_snprintf_alike(iconv_t cd,
	    char *out, size_t outlen, const char *in);
EXAMPLE
	iconv_t cd;
	size_t n;
	char *s;
	cd = iconv_open("Shift_JIS", "eucJP");
	n = iconv_snprintf_alike(cd, NULL, 0, "あいうえお");
	s = malloc(n);
	if (s == NULL)
		abort();
	(void)iconv_snprintf_alike(cd,  s, n, "あいうえお");

inはiconv_open(3)で指定した変換前の符号化手法における
初期シフト状態で開始しnul-terminateで終わる文字列ね。
んでoutには必ずnul-terminateされて書き込まれると。
こんなwrapperが欲しいと理解したわけですが。

しかしこれ実際に実装しようとすると、snprintf(3)の%lsの実装でもぶちあたるんだけど
stateful encodingのことを考えると結構めんどくさいし性能的に不利なのよね。

第一にoutの末尾をnul-terminateするには、初期シフト状態に戻すための
エスケープ分の長さが必要な上に、その長さは実際に変換してみないとわからん問題がある *1

ちゅーことはiconv(3)で変換が成功するたびに、inputにNULL喰わせて初期シフトに戻し
エスケープの長さでoutlenが溢れないか確認しないとならないのよね。しかーしiconv_tは
save/restoreペケなので毎回先頭に戻って変換しなおさなきゃならん、よって性能的に大きく不利。
更にはNULL食わせてもnul-terminateはしてくれないので、その分のサイズも知る必要がある。
nulは変換後の符号化手法がUTF-16/UTF-32なんかの場合単純に1byteではないからにゅ。

うーんめんどくせぇ。
というわけでiconv(3)のwrapper書くのに固定長に拘ると余計バグ仕込みかねないちゅうことで。

*1:ちなみに今のNetBSDの vfwprintf.cの実装は初期シフトに戻さず'\0'書き込んでるのでダメぽ、__wcsconv()参照。

2008/07/20(Sun)

今日

お盆明けて、ねこ3回目の月命日。

胃の不調が悪くて胃痛、ここ数ヶ月吐き気で目が覚める事が多いが
今日はわりとすっきり目が覚めた。

ぴまわりの切花はすぐに傷むね、今日も花屋いってくっか。

pkgsrc/x11/openmotif sonameがlibXm.so.3 -> libXm.so.0に退行しとる。
ガブルガブル、誰かUbikもってきてー。

vi vs nvi とかtech-userlevelではじまっとる。
某所ではイーダ・シッペ=ガヤレ(1623~1701)の法則で
regex問題ワシにアサインされとるので信玄餅噴いた(想定通りです)。

current-usersでASLR有効にしよーぜネタ。

and in the typical NetBSD style we did not document/advertise it

ワロス。

2008/07/21(Mon)

今日

たいへんたい!シ毎日の振替休日つーこと忘れてた!
午後から会議の予定を入れてたよ、きづけー俺もお客さんも。

花屋、桔梗+ミニバラ。

misc/39121、uwe氏の

pdp11 with a soviet "clone" of 2.9BSD

冷戦時代の~真ん中は~ '80マジパネェっす、ロッキー4とか洗脳ですから。
PDP-11の cloneとかはわりと有名だけど、2.9BSD cloneって DEMOSのことだろーか。

東側(死語)版 unix historyとか bsd-family-treeほしい。

文字符号の歴史、 アジア編欧米と日本編ときたら、お そ ロ シ ア 編マダー?といわざるを得ない。
ちゅうかまじでもう続き出ないのかね?

tech-userlevel、nvi-1.79に比べてnvi-1.81.6は大きいゆーなら Traditional viにするのが一番(以下略

しかしstrip(1)して304k vs 408kって我慢できんかぁ?
この増分はbuiltinのwide-character regexを捨てて
libcのmultibyte regex使えばすぐダイエットできそうだが。

まぁそうすると検索の度にいちいちwchar_t -> multibyteに戻す
オーバーヘッドがアレなのと、 NetBSDはそもそもmultibyte regex
実装してないので、どっちみちbuiltinしてもらわざるをえない。

2008/07/22(Tue)

今日

2chでは コレジャナiPhoneと命名されてて、ネスカフェ香味焙煎噴いた。

うーにゅSONY α、 キャッシュバックキャンペーンやってんのな。
某量販店の13%ポイント+下取マイナス7000円も併用するとα350ボディが5万切る鴨。
やぱしあのチルト可能な液晶ライブヴューはウエストレベルで使えるし買ってもいいかなぁ。

とかいいながらこの連休で銀塩ボディ2台とデジじゃ使えないレンズ3本増えてるStop me, oh, stop me ~
まぁ合計してもコンパクトデジ1台分にもならん金額ですが。

lib/39175うーん頭痛い、__cputwchar + __cursesi_putnspが悪さしてんのか。

2008/07/23(Wed)

debugging wcurses (reprise) その1

install/39193でumlautが表示されない件が再発したようなので
すわlibcursesのせいかとオモタら転記元のport-sparc/39177読むと
単にlibhackをリンクしてないちゅことげ、ちゃんと全文転記しよーよ。

ちゅーわけでlib/39175の続き。

  plod: cnt=7, in_refresh=1
  plod: returns 6
  plod: cnt=0, in_refresh=1
- __cputwchar: 0x20
- plod: (1,8)WCOL(1), putwchar(20)
+ __cputchar: ^[
+ __cputchar: [
+ __cputchar: C
  plod: returns 0
  makech: 1: wx = 9, ly= 1, lx = 8, newy = 1, newx = 9
  makech: have attr 00020000, need attr 00020000

うーむスペースの場合、refreshの部分でも単純にmove rightするじゃ駄目らしい。

			if (curscr->lines[outline]->line[outcol].attr
				    == curscr->wattr) {

の条件にマッチせずにgoto nondesしてるちゅーことか。

        nondes: if (__tc_nd)
                                tputs(__tc_nd, 0, plodput);
                        else
                                plodput(' ');

よく判らんのでwcwidth == 1の場合はこれまで通りの動作をするような
これはひどいパッチを書いたので後でcommitするする。
ちゅうかwcwidth > 1の場合でもmove rightでは駄目なのかもしれんが
とりあえずXXXちゅーことでいいや。

putwc(3)のラッパでしかない__cputwchar()呼んだだけでカーソル位置の計算が腐るふしぎ。
たぶんどっかで1で決めうちなのだろう、そのうちちゃんとcr_puts.c読む。

そいとcurses_private.hで勝手にMB_LEN_MAXを再定義(=8)してるんだが大丈夫かこれ。

2008/07/24(Thu)

今日

タダゴトジャナイ柳田、マッハとか2時間18分の頃は
今トレンディ(笑)な失敗学(笑)本なぞ足元にも及ばない
綿密な取材の良書だったんだけどな、昭和も遠くなったなぁ。

絶対帰還。ソユーズの表紙で買ってまった。

光文社で突然思い出したのだが、ワールドフォトプレス編集のゲームブック
オルフェウス作戦シャングリラ作戦が猛烈に読みたくなってきた。
あれはかなり考証凝ってたなー、ゲーテル教会とかサイバーパンクっすよ。
つかメカニックマガジンのバックナンバー読みてぇ、とっておけばよかった。

tech-userlevelの"vi vs nvi"(つかどっちもnviだから1.79 vs 1.81.6だな)賛否両論ですな。
そろそろ/usr/bin/emacsとかacmeいうネタを投下すべき時間帯(やめなさい

サイズだけならTraditional viお勧め。
なんてったってcloneじゃなしに美留上位のoriginal viだし。

ただし

とかまぁいろいろあるな。

2008/07/25(Fri)

昨日

現場の人たちとオサレ系中華料理屋。
お一人様\4500は全て凝った内装の償却に回るようで
出てきた料理は人生の中でワースト3に入るレベルの不味さ。

[NetBSD] i18n fold(1)

new developerのahoka氏からuserlandもがしがしi18nするぜーとメールもらた。
まずfold(1)を 書き直してたぜぃ! レビューおながいちゅーことなんだが
これwcwidth > 1の場合の動作が壊れまくりんぐ。

んなわけで他実装の挙動から。
coreutil-6.9-17.fc8のfold(1)はいまどき珍しいことにi18n化されとらんのな。
fold --cjkwidthとかアレなものが生えてないかwktkした俺の期待を返せwww

Solaris 8での動作。

$ cat test.txt
ハヒフヘホ
$ fold -w 2 < test.txt
ハ
ヒ
フ
ヘ
ホ
$ fold -w 3 < test.txt
ハ
ヒ
フ
ヘ
ホ
$ fold -w 4 < test.txt
ハヒ
フヘ
ホ
$ fold -w 5 < test.txt
ハヒ
フヘ
ホ

一方、ahoka氏のfold(1)。

$ cat test.txt
ハヒフヘホ
$ fold -w 2 < test.txt




ホ
$ fold -w 3 < test.txt
ハ
フ
ホ
$ fold -w 4 < test.txt
ハ
フ
ホ
$ fold -w 5 < test.txt
ハヒ
ヘホ

この出力結果見て

カップスタ~食べたその日か~ら~

と歌いだす香具師はオッサン。

軽くソース流し読み。
getchar(3) -> getwchar(3)への書換しとるが、これじゃ-bオプションだめぢゃん。
getchar(3)しつつmbrtowc(3)使わないと何バイト読んだか計算できないってば。
いきなりオワタ\(^o^)/ ぜんぶかきなおしです*1

そいとfwrite(3)代わりにwprintf(3)使うのはダメ。
理由はformat stringのparseコストで無駄に性能が落ちるのが一点。
それとwprintf(L"%.*ls")ちゅーのはL'\0'まで出力してるわけで
multibyte stateは必ず初期化されてしまう、つまりstateful encodingの場合
initial stateに戻す為のescape sequenceが冗長に出力されてしまうのよね。
まぁwprintf(L"%.*ls\n")のように改行を含んでる部分はすでに
initial stateに戻ってるので問題ないといえなくもないけど
ここはやっぱりパラノイアでいこうぜ。

あとどーでもいいけどfold-m10nって、i18nかm17nの間違いだよな。
まぁcoreでもi17nとかtypoすることあるのでこれはまぁしゃあねぇか。
つか既にjoerg氏が 指摘済み*2だったにゃ。

*1:OpenSolarisのfold.cもひどいね、getwc(=getwchar)しつつ-bオプションの場合は
wctomb(3)でmultibyteに戻してからbyte-size計算しちょる、これstateful encodingだめっす。

*2:what does m10n stand for, 実はかつてDEC社内ではmusterbationの略として(ここはuncyclopediaじゃありません

i18n fold(1) その2

fold(width)の中の

        while ((ch = getwchar()) != WEOF) {
            ...
        }

        size_t bytes, n, len, width;
        mbstate_t st;
        char buf[BUFSIZ], *s;
        wchar_t wc;

        bytes = 0;
        mbrtowc(NULL, NULL, 0, &st);
        while ((n = fread(&buf[0], 1, BUFSIZ, stdin)) > 0) {
                for (s = &buf[0]; n > 0; s += len, n -= len, bytes = 0) {
                        len = mbrtowc(&wc, s, n, &st);
                        if (len == (size_t)-2) {
                                bytes += n;
                                break;
                        } else if (len == (size_t)-1) {
                                abort();
                        } if (wc == L'\0') {
                                while (s[len++] != '\0');
                        }
                        bytes += len;
                        width = wcwidth(wc);
                        ...
                }
        }

ややこしいけど、こんな感じでぐるぐるする必要があるやね。

[NetBSD] i18n fold(1) その3

よく考えたら-bで80byteで折り返しするとゆーのは
input側を80byte数えるのではなくoutput側なのだよな。
ちゅうわけで入力に冗長なescape sequenceが合った場合
そいつはカウントしなくておkなはずだ、うぉぉぉ勘違い。

つまりSolarisのやり方でおk、ahoka氏のfold(1)の場合new_column_withd()で

    char dummy[MB_LEN_MAX];
    size_t n;

    if (!count_bytes) {
        ....
    } else {
        n = wctomb(&dummy[0], wc);
        _DIAGASSERT(n != (size_t)-1);
       col += n;
    }

ってな感じでいけるはず。
まぁでもstateful encodingの場合はL'\n'の直前の
escape sequenceの長さをカウントしなけりゃならんし
もうちょいゴニョゴニョせんとだめだけど。

2008/07/27(Sun)

よようび!よようび!

先日ポチったMC ROKKOR-PF 1:2.5 f=100mmの試写がてら、ぶらぶら。
薬科大の裏に住むネコどもにポーズ強要して36枚撮り1本消化。

春日神社で祭やってた、射的とかなつかちー。

ι(´Д`υ)夏バテ気味だったので薬代わりにお高い牛肉(まぁ半額シールだけどなw)
食ったのだけどタレの選択に失敗し痛恨のキワーミ。

[NetBSD] piixpcib(4)

kern/38623直ってるな、動けばおkなpatchでsend-prしたのだけど
ちゃんと この通りHAS-Aに書き直されてた、まぁ当然か。

2008/07/28(Mon)

にちようび!

時々emacs(PKG_OPTION.emacs=motif)が固まるのはxsrc/39209のせいと、めもめも。

install/39193 うーんlibhackリンクしてるのにwcwidth(0xE4)が0を返すんか。
ありえなーい、ちょっと調べる。

関係無いけどiswctype_sb.cのwcwidth()ちとひどいな。
常に1を返しよるのだけどこれcursesとか困ると思われ。
ちゅうかまだCITRUS=NOでbuildって通るのだろか。

[NetBSD] tech-repositoryとか

Mercurialは2年ほど前に小一時間くらい弄ってすぐ捨てたな。

ここで書いたように、NetBSDのように巨大なソースツリーを扱うには不向きだとゆーのが個人的な感想。
ツマミ喰いとか部分アップデートとかよくやるしなぁ、俺。

じゃレイアウト変更して細かく機能ごとに分割し、それぞれ別repositoryにすれば
とかいう人がいるかもしれないけど、repositoryを分割した時点で
MercurialのメリットとされるcommitのAtomicityは保証されない罠。
じ ゃ ぁ C V S で い い ぢ ゃ ん
という結論でてしまい以後弄る気ゼロという、最近はなんか変わったんだろか。

まぁCVSやSubversionでlocalにrepository切ってimportして
vendor branche管理するのめんどくさい=push/pull便利~ちゅうのは判らんでもないけど。

[NetBSD] i18n fold(1)

foldでググったら真っ先にScottish Foldがヒットし、ぬこ例外で落ちた。

結局

149                 if (col > width + 1) {
                                    ^^^

177                                 wprintf(L"%.*ls\n", indx - 1, buf);
                                                             ^^^

あたりが原因で折り返しが変になっとる。

それと

156                                         if (iswblank(buf[i]) &&
157                                             buf[i + 1] != L'\b' &&
158                                             buf[i + 1] != L'\r') {

i + 1ってこれout of index boundsだな。
'\b' or '\r'かのチェックはその前のnew_column_position()ですんどるから不要なはず。
でなきゃ今のfold(1)自体の実装がバグっとる、あとiswblank(buf[i])はL'\t'も含むのでダメ。

更にこいつ

186                         /* Increase buffer by 2048 to fit */
187                         if ((nbuf = realloc (buf, buf_max + 2048)) == NULL) {

sizeof(wchar_t)を忘れとるがな、まぁ無くてもいいけどrealloc呼ばれる頻度が増える罠。
ただこれなんかLINE_MAXで制限喰らうっけ?仕様よく読んでない。

ちゅうわけで書き直してみる、stateful encodingを無視すれば こんな感じかね。
stateful encodingの場合だと

168                                 wmemmove (buf, buf+last_space, indx-last_space);
169
170                                 indx -= last_space;
171                                 col = 0;
172                                 for (i = 0; i < indx; i++) {
173                                         col = new_column_position (col, buf[i]);
174                                 }

wmemmoveしてnew_column_position()をやり直す際に、mbstate_tを巻き戻さんとならんので
もうちょいゴニョゴニョしなければならん、ちゅーか元々のfoldの実装がイマイチ。

[NetBSD] systinst + umlaut

install/39193
char -> wchar_tのキャストでunsigned charにキャストするか & 0xFFしてな
といういつものパターンとみた、ありがち。
src/distrib/util/libhack/multibyte.cが犯人っぽいのだが、libhackをlinkしなくても発生?
これはそもそもsysinstがsetlocale(3)呼んでない罠。

2008/07/29(Tue)

げつようび!

百過日。

夕焼けきれい!

花屋でバラ。

stateful encodingを考慮したfold -b -w の実装ってけっこうめんどくさい。
例えばISO-2022-JPの場合、JIS X0208(ESC$B)の文字中で現在のバイト数がwidthを超える場合
そこで改行するにはISO646-USへ復帰する為にESC(Bちゅーescape sequenceを
吐かないとならんのだけど、たうぜんこの分も現在のバイト数に含まれるのよね。
なもんで常にmbstate_tをsaveしつつwcrtomb(L'\n')してこの分を計算しないとならんわけで。
なぜこんなまんどくさい処理が必要か、C初心者だと思われるahoka氏に英誤で説明する自信ないっす。

昨日のstateless encodingでしか動かない差分だけ渡して、レビュー完ちゅうことでcommitしてもらって
時間のある時にワシが全面的に書き直すとかかな。
そもそもLANG=ja_JP.ISO-2022-JPで生活(以下略

2008/07/30(Wed)

かかようび!

MC ROKKOR 1:1.7 f=85mm ポチった、ポトレの銘名玉扱いなので
結構しんどい値段(ってもSONY Planar T* 85mm F1.4 ZAの1/10www)
だったのだけど悲しいことに絞りに油が回って粘ってしまっとる。
まぁレンズがキレイなので我慢するとしよう、そのうち清掃出すか。

せっかくのポトレンズだけど、いつものモデルさんはLeft Bank(左岸)でおねんね中。
街撮りだと85mmの射程距離まで、ぬこーに近づかせてもらえない俺、あんまり出番無いかも。

しかしここ最近の帝国データバンクの倒産情報はマンション絡みの事案ばっかやね。
建設・住宅業界板的にエリア88を語るスレがあったなら
「あははっは...みんな逝ってしまった...」ってやつですか。

の上のグロマンションとか、タワー型マンション@工場跡地が
うごのたけのっこのっこのこさかなのこー状態、でも売れてないとか
止まるとしーぬーのーじゃーなのに改正建築基準法(以下略)ちゅーところか。

2008/07/31(Thu)

今日

もう7月おわり!

BBM時代のGary Mooreって、なんちゅーか 再結成DoorsのIan Astburyちゅうか
Coverdale/PageのDavid Coverdale並みのコレジャナイ感が漂ってくるよな。
あ、Queen + Paul Rodgers(以下略

なんで突然BBMかちゅーと Cream再再結成なんてヨタ話読んだので。
もうやめて!懐洋楽ヲタの財布は空よ!

Jimmy Pageといえば またかよ、ついこないだ(2002くらい?)リマスタ+紙ジャケ買わせてこりゃないわ。
SHM-CD化(最後に=ハッタリで=まきあげますの略?)とか、アボガド。