2003年4月28日月曜日

最近、C++ の変な使い方を覚えた

C++ のコレクション・クラスを作っています。設計は STL よりも Java のコレクションに近いもので、 template を使わずに void* でデータを保持するようになっています。
大体の部分はオーソドックスな作りなんですが、イテレータ周りは、 List クラスから イテレータを作る時にポインタで返すのが嫌だった
開放しわすれが多くなりそうだし、イテレータのデリファレンスが p->Get() もしくは *(*p) と不格好になる..
ので、試行錯誤していたら結構トリッキーな物ができてしまいました。
日記に長々と書くのはあれですが、骨子だけ書くと、

class IteratorRaw {
virtual void*& Get() const = 0;
virtual void* Inc() const = 0;
};
class Iterator {
IteratorRaw *_body;
public:
Iterator(IteratorRaw* body) : _body(body) {}
void*& operator*() { return _body->Get(); }
Iterator& operator++() { _body->Inc(); return *this; }
};

見たいな感じで、ユーザーは Iterator を使い、 List クラス等で Iterator を作る時は、 List クラス内部に IteratorRaw を継承したクラスを作って、 Iterator 作成時にそれを new して Iterator のコンストラクタに渡すようになっています。
効率は、イテレータを使う時ならば、(template を使わずに)普通に継承をして、ポインタを経由で使うものと変わらないはずです。イテレータを作る時は... どうなんだろ。 Iterator を作る時にクラスの new/delete がいくつか発生するけど、書き方を工夫、もしくはコンパイラが頑張れば delete は無くせる気がするんだけど。

最近、一日が48時間です

昨日は、6:00に寝て、23:00に起きました。で、今日はそのまま起きていて、25:00に寝ました。
健康的、なんでしょうか。

2003年4月21日月曜日

今日、家にやってきた NTT Docomo の人との会話


NTT Docomo
「ちょっとお時間いただけますでしょうか」

「少しだけならいいですよ」

NTT Docomo
「現在、携帯を持っていらっしゃいますか?」

「いいえ」

NTT Docomo
「携帯をお使いになることを考えていっしゃいますか」

「いいえ」

NTT Docomo
「...ありがとうございました」


で、売り込みもなにもせずに、パンフレットとシャーペンを置いて帰っていきました。なんだったんだ?

2003年4月19日土曜日

最近のゲーム屋

これは又聞きだが、最近のコンシューマー系のゲーム屋の企画は、エンターテイメントの最高峰は映画。ゲームは映画を目指すべきと思っている人が多くて、FFの映画もその流れの一つということらしい。
... 阿呆か。小一時間くらい問いつめたくなりました。ゲームはゲーム、映画は映画だろうが。
ゲームは映画と明らかに違う所(インタラクティブ性)があるんだから、それを生かせば、(エンターテイメントとして)映画よりいいものが作れる可能性もあるだろうに。大体、映画がいいんだったら、初っぱなから映画作れよ。映画やってる所に入ったり、映画の会社建てろよ。安易に、映画 -> 賞とか取ると新聞に載ったり、文化人?が褒めたりする -> カッコいい(エンターテイメントの最高峰)て思ってんじゃないのか?映画だって、初めっから文化として認められていたわけじゃないんだぞ。ゲーム屋だったら、ゲームが文化財だと認められるように努力するべきだろ。
そもそも、ゲーム屋の人等って、映画好きなんか?ああいう、映画とか小説とか、もちろんゲームだって、本人が好きで好きで仕方が無い場合でないと、人様を満足させられる良い物は出来っこないと思うんだが。
作っているやつらがそんな考えだから、最近のゲームがつまらないはずですわ。

Dillo を使い始める

オリジナルではなくて、ボブ・トムソン氏の日本語版をコンパイルしてみました。時々文字化けしますが、動き自体はまあまあ速く、うちのメインマシン
Amiga 4000T。MPU は68060/60MHz。
でもストレスを感じません。
調子にのって、トムソン氏の patch を、最新版の 0.7.1.2 に無理矢理当てて見ましたがうまく動きません。少し追ってみます...

2003/04/20

0.7.1.2 + 日本語パッチ、動きました。今、いろいろ改良を加えています。

2003年4月11日金曜日

NetBSD との格闘の続き

NetBSD との格闘の続き

とりあえず、2003-04-01 のバージョンで動くようなり、最低限の環境はそろえました。しかし、bash2 を作ろうとするとカーネルが刺さる! U*IX を普通に使っていて、完全にハングアップしたのははじめてかも。デバイスドライバを作ろうとして、刺さりまくった事はあったけど...
また、emacs-21.3 が -nw でしか動かない。X を使おうとすると、 XtCreateWindow() あたりで SEGV を喰らいます。tgif とか、gv とかは普通に動くのに...
また、native の pthread を使う物はかなりだめっぽくて、 www/phoenix も audio/xmms もすぐにカーネルが刺さります。どうも、SMP と pthread の食い合わせが悪いらしい...
libc と libpthread だけを強引に最新にするという悪あがきを試そうと思います。

2003年4月6日日曜日

読了本 (2003/04/06)

ゲートキーパー <スターハンドラー 3> (下)
草上 仁 (朝日ソノラマ文庫)

And Now, For Something Completely Different!

というわけで、ようやく Monty Python's Flying Circus を見ました。1st Series の Part 1 だけだけど。
ブリティッシュコメディの源流と呼ばれるだけあって、非常にいい。少なくとも、昨今の日本の番組の数十倍は笑えます。
登場人物が、しごく真面目にとんでもないことをやらかしたり、無意味に高尚なセリフを吐いたりするのを見ると、 Red Dwarf とかとの共通性が見えたりして面白いです。もちろん、Red Dwarf が Monty Python の影響を受けているのですけど
あと、ようやくPythonの Mac 版のアイコンの意味がわかりました。! 爆発しなくても、ラズベリーは恐いですね。

NetBSD-current と格闘している。

最近の NetBSD-current は、まともに動かない。たぶん、UFS2 のコードが入ったせいだと思う。今もまだ駄目。ファイルが壊れたり、読みだせななくなったりするのは直ったんだけど、 /sbin/init とか /bin/sh の実行に失敗する。
何か、新しい機械に -current 入れようとするとこんな目にあうな...去年の秋、NetBSD/amiga を入れようとしたけど、カーネルが一月の間ブートできなかった。