某日記

(後期)

平成14年5月21日(火曜日)

/etc

それができるのはみんなわかってるけど、恐いからやらないんですって 。 Makefile 書くのが一番スマートだと思ってる私であった。

続 wakecode

あの時点のコードでも刺さってたわけではないみたい。 ICU もちゃんと再初期化されてた模様。ただ、 それ以外のあらゆるデバイスの再初期化が足りてないようで、 キーボードは死んでるし、rtk も死ぬ。あと、

while true; do echo XXX; sleep 1; done
というのを仕掛けておいてから S3 に落とすと、復帰後は XXX の 表示が 5 秒に 1 回になる。うひ。

焼肉

前回は自分と全く無関係なネタだから自粛したのだが (←それくらいの節操はある)、 今回のネタは無関係というわけでもない。 でも見てると何か空気が違うのでパス。

面白かったですよ

音を一つ思い浮かべ、それを弾くな

と言ったのはマイルスデイビスなのだが、割とこれは真理を突いてるのである。

そこで 最適化 。 「最適化を学んで、それを使うな」くらいの気持ちでいると、 今の世の中の 8 割のケースでは幸せになれます。 じゃあなんで最適化を学ぶのか、というと、残りの 2 割でドツボに はまらないためですね。

また、char を添え字に使う、 という無駄なことをしないで済むようになります。 char を添え字に使っても、 今のプロセッサでは速くもならないし、場合によっては遅くなるし、 省スペースにもならないし、 int より一文字多いし、 オーバーフローしやすいし、 文字なんだか整数なんだかわかんないし、 符号つきなんだか符号なしなんだかわかんないし、 符号拡張でハマるし、 まあ百害あって一利なしです。 局所的最適化というのは、もはやコンパイラのお仕事であって、 プログラマが口出しする余地はほとんどなかったりします。 世の中の 8 割の仕事は、なーんにも考えずに for ループでも 回しとけば小人さんが良きに計らってくれちゃうんですね。 ほー、ファンタスティーック(ピープホール最適化<マテ)。 ピオラさんの仕事を奪うな、ということ。 むしろ、可読性の高いプログラムのほうが仕事では重視されますな。

ところが、運悪く残りの 2 割の仕事をしないといけないはめになったら、 ご愁傷さま、というべきか。それはそれで楽しいんだけど。

まあ要するに、 「学んだことの 2 割を使えば 8 割の仕事が片づく程度には 自分のスキルの引き出しを増やしておかないとプロの世界ではお話にならん」 というのが、古典的 2-8 の法則というやつなのですな。 何か要領を得てない話ですまんが。

weak

私が何か勘違いしてるのかもですが、 weak 自体は 両方とも ELF なので同じだと思います。 ただ、NetBSD あたりでいうところの weak alias は、 glibc だと GNU ld の拡張機能で実現されています。 これは、もともと Solaris からの inspire らしいですが、 実装の詳細は異なるようです。 GNU ld の info の linker script の説明の VERSION Command というセクションに詳細が書いてあります。

wakecode

というわけで、APM と同様にインターバルタイマの再初期化と、 powerhook の実行、そして pckbc に powerhook を追加したら、うごいたよー。

平成14年5月22日(水曜日)

1.6

branch しました。予定では 4 週間でリリースなので、 つまりはあと半年くらいかかるでしょう(ぉ

わたし的には「release はすでに古い」という感覚しかないので、 むしろ、これでやっと SA やら devsw やらが main trunk に merge される、 という方がうれしいのだ。

最適化

まあ 、 多くのプログラマにとって、 アセンブラと同じく、最適化というのは一般教養みたいなもんで、 知らなくても大して困らない類いの話ではあるんですけどね。

ネタ発生

``I named it gUSA''

``We call him GUSA''

ふくらみ

禿同

本日は SBR DAY

ノーコメント。

なんなのぉー?

ワロタ

ふにゅ〜

妹化

wakecode

結局 identical mapping するように直した。 観賞用コード

平成14年5月23日(木曜日)

restrict

C99 は変だ。mbsrtowcs/wcsrtombs に restrict が足りてない。 規格では

size_t mbsrtowcs(wchar_t * restrict dst, const char ** restrict src,
                 size_t len, mbstate_t * restrict ps);
size_t wcsrtombs(char * restrict dst, const wchar_t ** restrict src,
                 size_t len, mbstate_t * restrict ps);
となってるけど、これは絶対
size_t mbsrtowcs(wchar_t * restrict dst, const char * restrict * restrict src,
                 size_t len, mbstate_t * restrict ps);
size_t wcsrtombs(char * restrict dst, const wchar_t * restrict * restrict src,
                 size_t len, mbstate_t * restrict ps);
の間違いだと思うぞ。 なんか規格を作った側が restrict を理解してないんじゃないかという 気がしなくもない。

この辺のことは、Citrus のコードを書いてる時にうすうす感づいていたのだが、 gcc-3.x でコンパイルが通らん、という形で発覚したにょ。 半分は適切に restrict を捨てるキャストをしてなかった私のミスだが。

49.7 日

なんで今さら、という気が。たとえば こんな感じ 。 これも原因は(以下略)。

平成14年5月24日(金曜日)

昨日

チャンピオン。エイケンはいつものように暴走気味。看板娘がおもろい。 ナナ完結で号泣。名作である。

エイケン(5) とナナ(2)を買って、しゃぶしゃぶ。

生まれて初めて、妹というものが出てくる夢を見た。

あまりちゃんと覚えてないが、5 歳くらい年下、小柄 (←この辺に謎の願望が入ってるっぽい)。 もちろんマンガ/エロゲ的妹とは正反対な雰囲気で、 本当に妹がいたら、こんな感じなんだろうな、というようなリアルな妹であった。

ところが、この娘、なぜか車いすに乗ってるのだ。 それを私が押して、いろんなところに連れていく。 ううむ、私の深層心理の何を暗示してるんだろう……

Romeo

とある方から新品の YM2151 を譲ってもらったのだが、やっぱり動かんやんけ。 これは YM2151 が壊れてるわけじゃないってことやね。

で、YM2151 の addr write と data write の間に delay(1); を 入れたら直ったよ…。 Romeo は YM2151 の write 時には専用の queue を持ってるから、 プログラマは YM2151 のリカバリタイムは (少なくとも単純に write するだけなら)考えなくていいはずなのである。 したがって、こんなところに wait が必要なわけもなく、 どうも Romeo 側になんらかの問題があるんではないか、 という気もしなくもないが、私が何か PCI まわりの取り回しで 勘違いしてるのかもしれない。あるいは、私が queue というものを勘違い してる可能性もなくはないが、こんなところで YM2151 のリカバリを 意識しなきゃいけないんだったら、queue の存在価値がない。 そもそも、YM2151 のアドレスライト→データライトで 1μ 程度待っても 焼け石に水だから、別の原因の可能性が高いやね。 x86 だと比較的珍しい memory mapped I/O だ、 というあたりも微妙に影響がありそうではある。

まあ、YM2151 write snoop 有効にして、 ちゃんと受け付けてるかチェックしてみるのかのう。 でも、1 μも待たなくても、 とりあえず addr write した直後にすぐに addr read して、 そうしておいてから data write すると直るみたいなので、とりあえずいいか。

つーわけで、私がテトリスから引っこ抜いた YM2151 1 セットも 多分動くんじゃないかと思われ。予備にとっておくか。

attach するだけのコード

夜中

ハヤシ某をやる。うはは、CM がおもろすぎ。 実際にいろんなメーカーから集めてきたムービーで玉石混交だけど。 ちよちゃんはなんで飛ぶのんいくたたかのん presents のが (CM になってなくて)おもろい。 育て方(というか主人公の浮気ぐあい)によってリーナちゃんが不良になるんだが、 不良の限度を超えてるぞ :D 。あと、ナレーションが良い。

つーわけで、軽く 3 周くらいしてみたり。 不良リーナちゃんがいいぞ。 不良ちかぼー初音ちゃんを髣髴とさせるが、もっとひどい :D あと、みんなえろいぞ。 一般的尺度からすると、良作といったところか。 一般人に積極的にお薦めするつもりはない。 名作とまでは行かないが、迷作というのは合ってるかもしれず。

平成14年5月26日(日曜日)

金曜

たん清にて、NetBSD developer 3 人 + FreeBSD committer 2 人 + 無職 1 人の 計 5 人で焼肉。ウマー。横でなんかやってたが気にせず。

土曜

やあ 3 に D16 貸したらお礼に 1 午。けんと様、五反田さん、かっしーさん合流。 緑を堪能。

日曜

狐の嫁入り。

アキバ。雨が降ってきたので、T-Zone DIY で雨宿りしてたのだが、 ポイントが 15000 くらい残ってるのを思い出したので買い物。 6000 円くらいの 8 ポートのスイッチと、8000 円くらいの無線 LAN カード。 意図せず両方とも Planex 。後者はどうも新製品らしくて、 この値段で 128bit WEP 対応。Intersil PRISM 3.0 搭載。 NetBSD だと、CIS 追加して wi の match に追加したら、up くらいはした。 動くかどうかは知らん。commit 済み。

夜中

無職+はかますきー組でフェイヨン地下に潜る。

ACPI

FIVA 20x だと、quick hack が若干必要なものの、 実用化が見えてきたぞ。

短信

こういうとアレだが、 適当にピックアップした開発者の個人的な活動記録を 短信として載せたほうが、よっぽどユーザグループ短信より 有意義なんでないかい。

平成14年5月27日(月曜日)

ねむいでふ。先週の日曜日に zr 出社したので、そろそろ zrysm したいです。

平成14年5月28日(火曜日)

配置 new

えーと 、 配列だからですね。ちなみに replacement new ではなくて placement new です。 デストラクタが存在するクラスの配列は、それが削除される時に デストラクタが要素数分呼ばれないといけないんですが、 new で配列を割り当てた時は要素数を動的に持たないといけないため、 gcc ではそれが配列の前に置かれるような実装になっていて、 よって size_t の 4 バイトの分ずれてるわけですね。

で、実際のサイズを取る方法は、たぶんありません。 sizeof(SampleData[n]) は常に sizeof(SampleData) の n 倍を返さないと 他のところで矛盾が出てしまいます。

void *operator new (size_t, void *) を引っかけて fixup する、 という手もありますが、 Exceptional C++ なんて本を読むと、 そもそも「配置 new はトラブルの元だから使うな」 とか書いてあったりするんで、苦労するくらいなら使わないのが正解かもしれず。 使うとしても POD (plain old data)だけに使うのが吉かと。 デストラクタを持つクラスは定義(c.f. Clause 9 of ISO C++ spec.)により POD ではありません。その理由は、まさにこの辺にあるんでしょう。

TBC

不正アクセスは不正アクセスであると見抜ける人でないと (個人情報の取り扱いは)難しい

うがー

Linux カーネル、やっぱり腐ってやがる。 よくこんな貧相で美学にかける API で、デバドラとか書けるよな……。 誰かこんなソースを仕事で触らなくていいように、この世から抹殺してくれ……。

はっきりいって、デバドラまわりに関しては WinNT のほうが数百倍マシだ。 ちなみに NetBSD は、devsw まわりが(いまのところ) Linux の比では 無いほど汚いし、なんといっても dynamic loading がないのが難点。 それ以外ははるかに Linux よりまとも。

平成14年5月29日(水曜日)

ふにゅ〜

ふにゅふにゅ〜

平成14年5月30日(木曜日)

12dot

ええな 。 かなのベースラインの揺れがちょっと気になるところではあるが、 12dot ではしゃあないのかも。

アレだ

創作を金銭的価値でしか判断できない方が、 違法コピーよりずっと社会的に有害だと思います。まる。

そもそも、金が目的で行われた創作に、創作的価値があった例しがない。 創作に対して「何本売れたからいくら」なんて価値判断をしてるようでは、 創作にたいするインセンティブは下がる一方ではないのかな。

validation

うむ(ぉ

平成14年5月31日(金曜日)

なんというか

あの時代でないと「名作」にならなかったものってあるよな。 痕しかり、ONE しかり。

痕は、ああいう絵でああいうシナリオがあったから名作になりえたのだが、 いまあれをあのまま出しても売れないのも事実だと思う。 一方で、今の売れ線商品の体裁に再構成しても駄作にしかならんよなぁ。

それがわからんから過去メーカーと呼ばれるんだが。

ううむ

「パルナルのうた」が脳内ぐるぐる…。「ぴぃんーく色した汁のひみつ」

「モスクワの味パルナスのエクレア」のパクリ。 鮎川ひなたの脱力歌で脱力中。

議論

どうも最近、某 irc の某 ch でいろいろと話題になってるのだが、 私自身は最近、議論というものをする気がない。特に日記上では。 というのは、議論のマナーを知らん手合いがうざいからだな。 最近は読む日記を絞ってるから、 日記ぐるぐるという日常生活でそういうアホ臭い議論を目にしたり、 自分がそれに巻き込まれることがないのがさいわいである。 それに、なんというか、たいがいの話は 「まあそういう考え方もあるよねー」 で終わっちゃう最近の俺。

どういうのがマナー違反か。 その 1 。論理的にちょっとした矛盾があった時に、 それをジクジクと針で突くように突いてくる手合い。 そういうことをすると議論が散逸するし、 もし本筋が間違ってるのならば、その本筋をばっさりとやるのが正しい。 こういう手合いは議論を収斂させることじゃなくて、 相手に痛みを与えるのが議論の目的になってるので、 相手にしても疲弊するだけで無意味だ。 当然、そういう人間を議論の相手にするべきではない。

その 2 。相手の人格を否定する手合い。相手の意見を尊重しない手合い。 つまり、相手を対等に見ていない。そういう人は、 人の意見に対して恥ずかしげもなく 「そういうことを言うと馬鹿にされますよ」などと言いはなつ。 相手を対等に見ない人間は議論などしてはいけない。 当然、そういう人間を議論の相手にするべきではない。

その 3 。なんでもかんでも白黒つけたがる手合い。 どうしても相手を打ち負かさないと気がすまない手合い。 こういうのは相手にしても無駄。 当然、そういう人間を議論の相手にするべきではない。

そういう手合いは fj だけに存在していてくれ、と切に願う。