随感録 (1999年2月)

 駄文。


1999.02.26(金)
 Q's Nicolatter for Linux Version 0.36(71,713バイト)

  • メモ帳:起動時にファイルを指定して,そのファイルを開けるようにした。
  • nicolatter: ローマ字変換部を書いた。文字入力,[Backspace]で削除,[Space]で変換できる。

 多バイト文字列よりワイド文字列の方が扱いが簡単なので,stringをwstringに書き換えたら,wstringの定義がコメントアウトされてる。疑問に思いつつ自前で定義したら(ってtypedefしただけ),エラーの嵐。egcs 1.0.3ってwstring使えないのね。

 明日から金沢辺りまで拉致されるらしいので,次の更新は月曜日以降になる予定。


1999.02.25(木)
 新しい漢字コード判定ルーチンが上がったので,C++クラスとしてどの辺に入れるか考えてみた。

[basic_streambuf {base}]┐          [ios_base {base}]
  △  △            └───────┐      △
  │  └────┐                  │   [basic_ios]
[basic_stringbuf] [basic_filebuf]       │    △ △
                                        │      │ └──────┐
                                        └─[basic_istream]  [basic_ostream]
                                             △ △     △   △
                                             │ └────┐│   │
               [basic_string]──────[basic_istringstream] ││[basic_ostringstream]
                                                    ││
                                                 [basic_iostream]
                                                     △
                                                 [basic_stringstream]

 何これ? 一応istreamを引数に取るようにしたが,ちょっとおかしい。漢字コードを変換してからXMLパーサーに渡すとき,

    ifstream ifs;
    ifs.open(path.c_str());

    KanjiFilter kanjiFilter(&ifs);
    char buf[1000];
    string dmystr;
    while (kanjiFilter.read(buf, sizeof(buf)) > 0)
        dmystr += buf;
    ifs.close();

    istringstream iss(dmystr);
    XmlLexer lexer;
    lexer.switch_streams(&iss, NULL);
って,繋ぎが多いな。

1999.02.24(水)
 追記。Linux版Q's Nicolatterのダウンロード件数を見るのにcgiを噛ましてみたが,うーん,どこかで告知しないといかんかなぁ。

--
 JIS X 0201ラテン文字集合とISO/IEC 646国際基準版(IRV)とで違うのは5/12だけかと思ってたら,7/14も違ったのね。こういう初歩的なところを見ると,Windowsで採用してるUnicodeは,非互換な変換をけっこうするから,Unicodeに似た何かというのも分かる。

1999.04.22追記:ユニコードへの変換は,文字集合だけでは一意にできず,エンコードの特定が必要。マイクロソフトのシフトJISはJIS X 0201ではなく,IRV + JIS X 0208なので,ビット組み合わせ5/12をU+005Cに変換してよい。

ISO/IEC 646 IRV JIS X 0201ラテン文字集合
5/12REVERSE SOLIDUS (U+005C, \) YEN SIGN (U+00A5, ¥)
7/14TILDE (U+007E, 〜) (注) OVERLINE (U+203E,  ̄)

注:この字はWAVE DASH (U+301C)。TILDEをJIS漢字で出すなら,補助漢字の2237。

follow-up(s): 2000.11.25 シフトJISとUnicodeとの変換表


1999.02.23(火)
 Q's Nicolatter for Linux Version 0.35(69,180バイト)

 Q's Nicolatter本体が動かなくて嫌になったので,カレンダーを書いてみた。これで書庫ファイルには次のプログラムが含まれることになった。

  • 日本語入力サーバーQ's Nicolatter 0.35(未完成)
  • 簡易テキストエディタmini notepad 0.92
  • 簡易カレンダーmini calendar 0.90

1999.02.22(月)
 Q's Nicolatter for Linux Version 0.34(68,396バイト)

 gtk+起動ルーチンが一応動作するようになった(コードとしては相当おかしい)。が,

Xlib: sequence lost (0x10000 > 0x8c) in reply type 0x4!
というメッセージを出して,(GtkEntry / GtkTextを使う?)gtk+アプリがフリーズする「ことがある」。再現しないのも気分悪いが,そもそも何でこんなに次から次へと問題がでてくるかなぁ。

1999.02.20(土)
 漢字コード判別ルーチンを補助漢字/新JISに対応するように書き直せないか検討してみた。

 半角カナとか最小限の考慮だと大したことなかったが,EUCとSJISで文字の区切りが異なる場合があると,結構大変。

 ふーむ,今まで場合分けで判定していたのを変更して,キューをエンコーディングの数だけ用意し,順次放り込んでいって有り得ないコードの時に脱落させるようにするのが良さそう。

エンコーディング文字集合 第1バイト 第2バイト 第3バイト
EUC ISO/IEC 646 IRV 20〜7e
JIS X 0201片仮名8e a1〜df
JIS X 0208 a1〜fe a1〜fe
JIS X 0212/新JIS8f a1〜fe a1〜fe
SJIS JIS X 0201ラテン20〜7e
JIS X 0201片仮名a1〜df
JIS X 0208 81〜9f, e0〜ef 40〜7e, 80〜fc
新JIS f0〜fc 40〜7e, 80〜fc

1999.02.19(金)
 QILMにへぼいバグがあったので修正した。

 Q's Nicolatter for Linux Version 0.33(67,109バイト)

 動かない原因は分かったんだが,対処方法がさっぱり分からん。


1999.02.18(木)
 gtk+ tips更新。


1999.02.17(水)
 Datula version 1.11.08がリリースされてる。Webの方からリンクを張ってないのは客を逃がしてる気がするんだが,いいのかなぁ。


1999.02.16(火)
 良さげなキーボードあれこれ。

MagicKey Ergonomic Keyboard:私が使ってるのはこれ(のバルクかも)。

エルゴフィットキーボード:キーの配置はいいんだが,M式専用?

SmartBoard:Erase-Easeでないかも。

Maxim data sheet:これもErase-Easeではないか。

 JISキーボードって,[Enter]と[Shift]が1キーずつ遠いから,なんか嫌。

USキーボード
   09    10    11    12    13
-------------------------------+
|     |     |     |     |      | E
|9   |0   |−   |=   |BS    |
-------------------------------+
 |     |     |     |     |     | D
 |O   |P   |[   |]   |\   |
-------------------------------+
  |     |     |     |          | C
  |L   |;   |’   |Enter     |
-------------------------------+
   |     |     |               | B
   |.   |/   |Shift          |
-------------------------------+
JISキーボード
   09    10    11    12    13    14
------------------------------------+
|     |     |     |     |     |     | E
|9   |0   |−   |^   |¥   |BS   |
------------------------------------+
 |     |     |     |     |          | D
 |O   |P   |@   |[   |          |
--------------------------+ Enter   |
  |     |     |     |     |         | C
  |L   |;   |:   |]   |         |
------------------------------------+
   |     |     |     |              | B
   |.   |/   |     |Shift         |
------------------------------------+

 USキーボードでも特にErase-Easeなのが好み。でもWebを見てるとErase-Easeなのって$39ぐらいからあるのに,なんでどの店も輸入してないんだろ。

Erase-Ease backspace bar
----------------------+      +--------------------------
  |S   |D   |F   |G   |        |H   |J   |K   |L   |
  |    |    |    |    |        |    |    |    |    |
------------------------+      +------------------------
    |X   |C   |V   |B   |        |N   |M   |<   |>   |
    |    |    |    |    |        |    |    |,   |.   |
-------------------------+    +-------------------------
|Win  |Alt  |BS          |    |Space      |Alt  |Win  |
|     |     |            |    |           |     |     |
-------------------------+    +-------------------------

1999.02.14(日)
 gtk+のC++ラッパーを試す。バージョン等は次の通り。

  • Red Hat Linux 5.2
  • glib 1.1.15
  • gtk+ 1.1.15
  • VDK 0.5.3
  • Gtk-- 0.11.1
  • gtkV 1.21.8

 ソースは,<calen.tar.gz>。gtkVはgtk+オブジェクトを直接扱う方法が分からず断念した。

 VDKとGtk--とはイベントの扱いの違いが特徴的と思う。VDKではMFCに似たマクロによる方法を使う。

class CalendarWindow: public VDKForm
{
    ...
    bool onCloseClicked(VDKObject*);
    DECLARE_SIGNAL_MAP(CalendarWindow);
};

DEFINE_SIGNAL_MAP(CalendarWindow, VDKForm)
    ON_SIGNAL(closeButton, clicked_signal, onCloseClicked)
END_SIGNAL_MAP

 Gtk--は組み込みイベントについては仮想関数,その他はグローバル関数で随時登録する方法を採る。

class CalendarWindow: public Gtk_Window
{
    ...
    void onCloseClicked(void* );
    virtual gint delete_event_impl(GdkEventAny* p1);
};

CalendarWindow::CalendarWindow()
{
    ...
    Gtk_Button* closeButton = new Gtk_Button("閉じる");
    vbox.pack_start(closeButton, false);
    connect_to_method(closeButton->clicked, this, &onCloseClicked, (void*) 0);

1999.02.13(土)
 Q's Nicolatter for Linux Version 0.32(63,159バイト)

 メモ帳(mini notepad 0.9)の実装が一通り終わった。

  • gtk+ 1.1.14ベース
  • メニュー,メッセージがすべて日本語
  • フォント,色を変更可能(まだ保存はできない)
  • フォントは漢字用,英数字用を別に指定できる
  • MDIもどきで「ウィンドウ」メニューから切り替え可能。

 素のgtk+を使うのは,コードの記述量が多くて,生産性が低い。出来が良くなくてもC++ラッパーを使った方がよさそう。今日現在使えそうと感じるのは,Gtk--とVDKぐらい。暇を作って試してみよう。

 今日は久々のBURST FRUITSのライブ。


1999.02.12(金)
 今日の買い物。

  • 『空想科学大戦』,柳田理科雄作,筆吉純一郎画
  • 『空想非科学大全』,柳田理科雄
  • バインダーとか文具いろいろ

 うーん,ウルトラマンとかでエネルギーを食物から得て,その変換効率が人間と同等では下ネタにならざるを得ないよなぁ。テレビ画面を見る限りそうなってないんだから,変換効率を90%ぐらいにして話をすればいいのに。重さとかも同様に,画面を尊重して,設定集の方が誤りまたは地球外の話ということにして,常識的な身体データを割り出し,それに基づいて他の話を組み立てれば,もっとまともになるのでは? という気がする。ウルトラマンがマッハ5で飛ぶ,とかいわれても,実際に飛んでないやん。

 コンピュータを使ってると,紙の文書が増えて増えてしょうがない。で,バインダーに綴じることにしたが,しまった,全然足らん。コンピュータ関連で5冊,学生の時分にコピーした論文とかで5冊,少なくても10冊ぐらいいるかなぁ。


1999.02.11(祝)
 Q's Nicolatter for Linux Version 0.31(60,440バイト)

 ようやくgtk+の起動ルーチンができた。次はメッセージキューを書き直さないと。


1999.02.10(水)
 追記。

 ZDNN: 組織再編控えるMicrosoftだが,OS開発の現場は荒れ模様が興味深い。ZDはいつも2つ以上の見方を載せているのに,これはそうじゃないのね。

--
 QILM 2.31公開。

 更新チェックした後,速攻でダウンロードできるようにしてほしい,という要望があったので,そのようにしてみた。

 2.30まで「プロパティ」ウィンドウで巡回深度を変更して,更新チェックのみかページ取得かを決めていたが,確かに煩雑だった。

 まず考えたのは,フォルダ,リンクの前にチェックボックスを1つ増やすこと。しかし,QILMでは更新チェックとダウンロードは独立ではないので(ダウンロードするとついでに更新チェックする),ユーザーインターフェイス的にちょっと美味くない。

 で,3状態チェックボックスにしてみた。フォルダのチェックボックスが,所有するリンクの状態の不一致が増えることでグレーになりやすいのが難点だが,この辺はダウンロード用リンク専用フォルダを作るとかで大丈夫と思う。QILMでは同じリンクを複数のフォルダに入れても同期するで,分類するのに悩ましいときでも両方のフォルダに放り込んでやればいいだろう。


1999.02.07(日)
 Q's Nicolatter for Linux Version 0.30(57,756バイト)

 遅々として進まないなぁ。

 今日は昼から本屋に行っていろいろ購入。その後,友人の確定申告書を書きつつ,旅行の計画を練る。結局,芦原温泉に行くことに決定。日程的に結構近いが,宿が取れるかな。


1999.02.06(土)
 友人がISPに加入してメールが使えるようになった。はて,メーラーに何を推そうか。私が今使ってるのはDatula version 1.11.05だが,そんなに流量多くなさそうだから,フリーで何か良さげなのはないかな?

 現状,次のソフトがインストールされてるらしい。

  • Microsoft Exchange
  • Justsystem Shuriken

 Microsoft Office 97, Internet Explorer 4.0が入っていれば,Outlook, Outlook Expressも入ってるな。

 Microsoftのメーラーは,さすが間抜け(M)な仕様(S)。Message-IDが不味い気がしてならないんだが,いいのかなぁ。

 Shurikenは,うちのPCにも入ってるが,異様に使いにくい。むしろわざと使いにくくしてる? ぐらい。

 あとはNetscape Communicatorとか? うーん。

 ちょっとメールボックスのX-Mailerを見てみると,

  • Windows
    • 'akira32Gold' v4.27i(3,000円)
    • AL-Mail32 Version 1.10 beta7(2,000円)
    • Becky! ver 1.24.16(4,000円)
    • Datula version 1.11.05 on Windows NT 4
    • Denshin 8 Go V321.1b7(電信八号,フリー)
    • Mail Explorer For Internet & Nifty V3.60
    • Microsoft Internet Mail 4.70.1161
    • Microsoft Outlook 8.5, Build 4.71.2173.0
    • Microsoft Outlook Express 5.00.0810.800
    • Mozilla 4.08 [en] (Win98; I)
    • QUALCOMM Windows Eudora Pro Version 4.0.1-J
    • Windows Eudora Pro Version 3.0-J (32)
    • MagicalMail Standard Edition Version 1.0.1 REL-1(Windows, 送信専用?)
  • UNIX
    • VM 6.49 under 20.4 "Emerald" XEmacs Lucid
    • Gnus v5.6.44/Emacs 19.34
    • Mew version 1.94b2 on Emacs 20.3 / Mule 4.0 (HANANOEN)
    • Semi-gnus 6.8.14 (based on Gnus 5.6.38; for SEMI 1.8, FLIM 1.8/1.9)
    • Vmail(VineLinux MailTool)
    • xcite1.27> Mew version 1.93 on Emacs 20.3 / Mule 4.0 (HANANOEN)
  • Macintosh
    • Macintosh Eudora Pro Version 4.0.1J
    • Musashi 3.0.4-jp(Macintosh, シェアウェア)
  • 不明
    • mnews [version 1.21PL4] 1998-06/01(Mon)
    • MHtool ver1.0b
    • Internet Mail Service (5.5.2524.0)
    • Beyond Email 2.1
    • exmh version 2.0.1 12/23/97
    • JsvMail 1.0
    • Smail Version 0.1
    • vega v0.00alpha (1998.02.01)
    • Mutt 0.91.1i-jp1
    • Netscape MailCaster 1.0

 うーん,Windows版だと,シェアウェアばっかし。どうしたものか。


1999.02.05(金)
 Pmacs 0.74,何となく使いにくい。画像の切り取り,貼り付けすら分からない。いや,きっと探し方が悪いんだろうけど。

 コウ,25-66, U+9AD8U+9AD9の区別について。深く考えているわけではないので,変かも。

 JIS X 0208:1997ではこの2つの文字は包摂されている。すなわち,同じコードを与えている。

 この2つの文字を区別せよ,という主張をしばしば見かける,すなわち,包摂規準を変更して,別のコードを与えよ,という話ね。

 はて,これは文字とコードとの対応関係を変更するので,異なる文字集合になるかも? Unicodeのようなダメダメな文字集合を除いて,1字の変更でも異なる文字集合になったはず。

 1978年版と1983年版は,ハツ,40-14, U+6E8C78年40-14, U+6F51ア, 16-02, U+551678年16-02, U+555Eなど,多くの非互換な変更があるため,違う文字集合として登録されている。

 で,これを非互換というのだから,1983年版では包摂されていないのよねぇ。(包摂されているなら,デザインの変更であり,別の文字集合にならなかったと思う。あ,文字の入れ換えの方で異なるから,そうともいえないのか。)

 1997年版では,1983年版で変更された字体を特別に包摂している。これは包摂規準の変更になると思うのだが,文字集合の変更にはなっていない。

 ということは包摂規準の変更は,非互換ではない,のかなぁ。

 ところで,ATOK12の文字情報で表示される文字コード,全然合ってないんだが,どうなってるの?


1999.02.03(水)
 この冬初めての雪。何か吹雪いてるし。傘がなかったので,家に帰るまでに私に積もってしまった。絵面的に面白かったので,よし。


1999.02.02(火)
 lv 4.40 <LV Homepage>をインストール。PAGERに指定したら,manの表示がおかしくなっていたのが直ったので吉。

 Justsystem Office 9の案内が届く。三四郎,花子は興味がない。花子は知らないが,Office 8のときの三四郎,五郎の機能の貧弱さが頭をよぎる。どうなんだろうか。

 『インターネットブーメラン』は面白そう。最近のWeb上の検索エンジンは,やたらヒットするか,全く当たらないかのどちらかのことが多い感じなので,出来によっては良いか。