2001年10月のエントリ

ある課題を Ruby でやってみる。慣れないので難しいのだが,書いててなかなかいい感じ。Hi-HO が Ruby を許してくれれば掲示板を Ruby で書き換えたいのだが。やっぱり denasu.to サーバに移行するしか。

ちなみに denasu.to はパジャ氏と私で運営しているドメイン & サーバだが,なにぶん ISDN 環境なので本格的に Denasu System を移行するには頼りない。ま,そんなにアクセスないですけど。とりあえずミラーになってるので,Hi-HO が落ちたり私のアカウントが消されたりしたらこちらをどうぞ。

Denasu System サイト全体を検索するため,Namazu を設置。今まで,某所で日記だけ検索できるようにしていたが,denasu.to に移行し,Denasu System 全体を検索できるようにした。とはいえ掲示板はまだ検索できない。

最初検索結果が文字化けしていたが,export LANG=ja,export LANGUAGE=ja(bash)とすることで解決。

Norton AntiVirus2002 を買ってみる。元々ウイルスバスターを使っていたのだが,ユーザー登録やウイルス定義ファイルのアップデートでいろいろと問題があったので,乗り換えた。Norton にしたのは,DELL の新マシンに元々体験版(?)が入っていたため。今のところ快適。

DELL の Inspiron8100 だが,キー入力直後,タッチパッド,ポインティングスティックが効かなくなる,らしい。私の環境は,買って即 BIOS で機能を外してしまったので,全く問題ないのだが。

現役引退した SHARP Mebius に Microsoft Visual Studio.NET をインストールしてみる。こっちのマシンなら不安定になっても問題ない。

まず Windows2000 をクリーンインストール。LAN ドライバを入れ,グラフィックドライバを入れる。DVD ROM ドライブのある DELL マシンからインストールを実行。

IIS + FrontPage をインストール。W2KSP2 や IE6 を入れる。.NET をインストール。念のため IIS のパッチをインストール。結局 3 時間ぐらいかかった。

とりあえず VC++ と VC# のプロジェクトを作ってみた。やはり旧ノートでやると少々重い & 画面が狭い。

ILS2 以来やっていなかった 3D に再び手を出す。とりあえず 3D 関係の本を読みつつ DirectGraphics を試す。

最初 Z バッファの初期化を忘れて,実行するたびにオブジェクトが見えたり見えなかったりして困ったが,なんとか裸眼立体視 X File Viewer ができた。


そういえば書いていなかったが,IE6.0 を入れた。全体的には IE5.5 からそれ程違いはない。但し

  • ウィンドウズ終了時,エクスプローラを開いていても次回ログイン時に自動で開かない
  • エクスプローラで,フォルダ部分以外の横の列をクリックすると,フォルダをクリックしたことになる
  • IE のスムーズスクロールがデフォルトオフ(オプションで有効にできる)

という違いがあった。上 2 つはバグなのか仕様変更なのか分からないが,せめて動作を選べるようにオプションを用意して欲しかった。(実はあるのか?)

諸事情でクレジットカードの番号が変更になる。で,新しいクレジットカードが届いた 29 日に Hi-HO にメールを出したのだが,2 日に「届きました」というメールが届いた。クレジットカード番号変更は月末締切なのだが,これって間に合ったのだろうか。間に合ってない場合,最悪来月一ヶ月ネット接続不能 & アカウント消えてデナス消滅というのもあり得るわけで。どうしよう。

ウェザタイ,実行ファイルの削減について。STL を使っていた部分

map.insert(a)
map.insert(b)
map.insert(c)
…

MapInsert(a)
MapInsert(b)
MapInsert(c)
…

のようにラッピングし,インライン展開を抑制することで約 500KB 削減することができた。テーブルのコンパイルだも 30 分から 10 秒程度に減少。STL は使い方次第でコード量をかなり抑えることができるようだ。

ウェザタイの入力方式としてNICOLA 配列,50 音配列,dvorak 配列をサポートしてみる。

NICOLA 配列では,ウェザタイではデータ送信量を削減するために扱っていない「キーリリース」を扱わなければならないので,今までの構造では対応できず,入力部分を作り直す。この副作用で今までのリプレイデータが使えなくなってしまったが,対応要求があれば多分コンバータを作る予定。ちなみにリプレイデータはこの際なので圧縮をかけて出力するように変更した。

SHIFT キーの扱いについては,最も厳密に判断するようにした。即ちローマ字表示が a であれば SHIFT なし,ローマ字表示が A であれば SHIFT を押さなければならない。それに伴ってかなをローマ字に変換したとき,大文字になっていたのを小文字にするようにした。

「ヴ」をカタカナで出すように変更。「ヴ」には SJIS で 1 文字となるひらがなが存在しないため,今まで「う゛」と出していたが,親指シフトでは 1 ストローク,JIS かなでは 2 ストロークというのがめんどうだったのでこのようにした。


掲示板に少し書いたが,「新たなキー配列をサポートするたびにどんどん実行ファイルの大きさが巨大になるという問題」についてここでは少し技術的な話を。

入力方式のサポートについては,基本的に 1 対複数のテーブルを使っている。(例えば「し->SI」,「し->SHI」など)これを手っ取り早くサポートするために STL を使っているのだが,容赦なくサイズが大きくなる。テーブルの多いローマ字入力で obj は 500KB に達し,かな入力でも 300KB である。さらにコンパイル時間が,テーブルのコンパイルだけで数十分はかかるようになってしまった。これではどうしようもないので対策を考え中。

対策として,そもそも multimap::insert がコードサイズを大きくする要因な気がするのでその辺のコードを inline を使わずに自分で書く,または,ソースコードにテーブルを書かずに,リソースファイルみたいな形式で持たせる,というのを今のところ考え中。