1999年12月のエントリ

修正追加。内部コードを EUC に変更したので,ismbblead,ismbbtrail(自作)を EUC にした。

VC++ + SQL Server で作っていたクラス群を Linux + Postgres へ移植。Turbo Linux 4.0 の gcc とかなり違っていて大変だが,今回修正が必要だった部分を書いておく。以下,gcc と書いたら Turbo Linux 4.0 付属のものとする(多分現時点で最新だと思う)。

  1. VC では ios_base があるが,gcc では古い ios しかない。
  2. ソースファイルは EUC にしないと変なエラーが出ることがある。
  3. stringstream がない。代わりに古い(?)strstream がある。ちなみに istrstream のコンストラクタは string ではなく char * をとる。
  4. basic_string::compare(size_type, size_type, const string &) がない。これは const string & が最初の引数になっていた。
  5. VC では <cxxx> が std 名前空間になっていないが,gcc ではちゃんと std 名前空間になっている。
  6. stream の ! 演算子がない(* もかな?)。good() などで代用。
  7. VC の stricmp は gcc では strcasecmp になっている。
  8. VC の itoa がない(と思う)。
  9. <iostream> がなく,<iostream.h>。

全体的には,コンパイラは gcc の方が標準に準拠しているが,標準 C++ ライブラリ,STL は VC++ の方が新しいという感じ。てことは STL だけ Linux でコンパイルすれば最高の環境になるのか,な。どうだろ。

失敗。

class a
{
    a{f()};

    virtual f() = 0;
};

class b
{
    b{};

    virtual f(){};
};

とかやって b::f() が呼ばれなくて悩んだ。原因はコンストラクタからは派生クラスの仮想関数が呼ばれないから。っていうか前もこんなことやったような気がする。

ワケあって NT を再びインストール。HD を換装した際に 3GB の方が余ったのでそれにインストール。

で,今回はサービスパックを入れる前にディスプレイドライバを入れたが,うまくいった。ちゃんと 800×600 24bpp になった。でその後サービスパック 4 を入れると起動しなくなる。結局サービスパックとは相性が悪いのかな。

環境移行終了。3GB の内蔵 HD から 4GB の内蔵 HD に移行した,って地味に聞こえますが。2GB-2GB に分けて Win98 と Linux を入れたのだ。以前は FIPS で分割できなかったパーティションもさすがに入れたばっかりの Win98 は分割でき,快適インストール。

Turbo Linux のウィンドウマネージャ(だっけ)は KDE にしてみる。今まで Gnome + Enlightenment だったが,KDE は何か日本語でいい。さらにエクスプローラみたいのとかいろんなところがウィンドウズっぽくて割と使いやすい。これからはこれにしよう。その内 Java + Swing でエディタを作りたい。

今回初めて LILO を使う。LILO は Linux とウィンドウズとかを起動時に切り替えるものだが,最初はデフォルトで Turbo Linux になっていた。で,/etc/lilo.conf の中身をデフォルトウィンドウズに書き換えるが,変更されない。結局 Linux 上で lilo と打ち込んで LILO を書き込むことで変更できた。考えてみればそりゃそうな気がするが,できればマニュアルに書いて欲しかった。

今回の移行でウィンドウズ環境を大きく変える。内蔵 2GB は OS のみにし,外付けにユーザーデータと開発環境その他ツールを思う存分入れる。本当はユーザーデータとツールを内蔵に入れたいが,さすがに 2GB では不安なので。その内 8GB が出回ったら乗り換えを考えたい。


ついでにオフィス 2000 をインストール。メニューが「普段使うもの」と「あんまり使わないもの」に分かれているのがなかなか面白いと思う。

PostgreSQL。今までどうしてもホスト名を指定するとできなかったが,PostMaster の起動時に,-i オプションを付けると,ネットワーク経由でアクセスできるようになる。

/etc/rc.d/init.d/postgresql
su -l postgres -c '/usr/bin/postmaster -S -i -D/var/lib/pgsql'

でも localhost ではいいんだけど Lelie じゃダメ。何故?


PostgreSQL を使用する C++ プログラムのコンパイル。

gcc pgtest.cpp -o pgtest -I/usr/include/pgsql -lpq -lcrypt -ftemplate-depth-30 -lstdc++

ちなみに -ftemplate-depth-30 -lstdc++ はいらなければ必要ない。

総統から電話。「ウィンドウズが起動しない」とか。グラフィックアクセラレータの設定をいじったということなので,Safe Mode で起動。

  • DOS モードでなんとか起動させる
  • ATTRIB -s -h msdos.sys で msdos.sys を DOS から見えるようにする
  • EDIT で msdos.sys の [options] に以下を追加

    BootMenu=1
    BootMenuDefault=1
    BootMenuDelay=10
  • ATTRIB +s +h msdos.sys で属性を元に戻す
  • Safe Mode で起動し,設定を元に戻す

で完了。ていうか Win95 だと起動時に F8 でメニューが出てきたハズなんだけど出てこなかったので上のようにした。また Win98 だと起動時に Help らしいけどうちのメビウスには Help キーがありません。

内蔵 HD を換装。I・O データの HDNV-N4.3 を買ってくる。6GB とか 8GB とかが欲しいんだけど見あたらないし高そうなのでこれ。で WindowsNT と Linux を入れようとしたんだけど,うまくいかない。

まず HD を入れ替える。ウチの内蔵 HD はリムーバブルなので,スコンと取ってパチンと付けられると思ってたが,結局ネジはいるのね。気軽にってワケにはいかないのか。まあ普通のよりは入れ替えやすいけど。ちなみに外し方は,HD のカバーを開けて中の爪を上げたまま思いっきりカバーを引く。なかなか外れないが,輪っか状になっている金具とかで引っかかりに引っかけるとまあ楽。

NT インストール。インストール自体はすぐできた。途中ネットワークカードのインストールもまあうまくいく。で間髪入れずサービスパック 5 を入れる。

次に Sharp の Web ページからダウンロードしたドライバを 1 コ 1 コ試す。だいたいうまくいったが,ディスプレイドライバだけ起動時にエラーになって,どうしてもうまくいかない。ウチの機種用って書いてあって NT も入れたばっかりなのにダメとはどういうことなのだろう。さすがに 16 色では開発も何もできないので中断。

Linux。前までは外付けの HD に入れて PCMCIA カード経由で無理矢理起動していたが,内蔵に移そうかという感じでインストール。インストール自体は何度もやってるので問題ない。で,起動すると何にもでてこない。下のメニューとかはどうやって起動するんでしょうか。前の時は自動で出てきたんだけどな。とりあえずそのまま。

#後で分かったが,これはウィンドウマネージャの選択で Enlightenment を選択していたからで,Gnome(+ Enlightenment?)にすれば前のになった。

てとこで忙しくなってきたので,とりあえず元に戻して封印しておく。

Turbo Linux で X 使用のプログラムをコンパイル。

gcc -lm -L /usr/X11R6/lib -lX11

Turbo Linux に PostgreSQL のインストールをする。postgresql,postgresql-client,postgresql-devel をインストールし,手元の本(石井 達夫「PC UNIX ユーザのための PostgreSQL 完全攻略ガイド」(技術評論社,1999))のような設定を行っただけで使えるようになった。日本語もちゃんと使えるし起動時に postmaster を起動してくれるし。便利。


今まで ls を白黒(?)で使っていたが,色で表示するようにする。.bashrc にあるコメントどうりにコメントを外したりするだけでできた。

メビウス購入以来ずーっと悩んでたことだが,エクスプローラの動作が異常に重いというのがある。とにかくフォルダの中身を表示するの
に時間がかかるのだ。最初は普通だが,使っていくうちに遅くなり,最終的にはフォルダ開くのに 10 秒とかかかるのだ。ハードが原因とは思えないので,OS か IE の問題っぽい。でも他にこんな症例は聞いたことがない。とりあえず Win98 を捨てて NT にでもしてみようかと思っていた。

しかし,今ふとハードディスクを全共有(もちろんパスワード付きだが)して,ネットワーク越しにアクセスしてみた。するとみちがえるように早く! なったのかはしばらく使ってみないと分からないんだが,感覚的には早いような気がする。ネットワークで使うのでパスが UNC になるのが心配だが,まあ問題ないだろう。これで解決すればこれでいこうと思う。

実はこの問題は今までメビウス使ってて最大最高の問題であり,これが解決したら私のメビウスは完全無欠仕事効率も 150% アップ,世界が変わる! ってくらいの非常に重要な問題なワケで。

# でも NT 計画は実行するかも。唯一の問題 DirectX は Windows2000 で解決するらしいし。

おっきなファイルを送る。が,何故か途中でサーバーからの応答がなくなる。まあこれは仕方がないとして,途中で強制切断されてしまう。で,もう一回やってみて原因が判明。接続後 20 分たつと自動的に「切断しますか?」と聞かれ,答えないと切断されるらしい。ウーン。確かにそれでいいんだけど,20 分もつないでるってことは何かしてるわけで,その間本読んでて気付かないかもしれないのに。って警告音とか全て OFF にしてるのがまずいのか。実は。


プログラムではないが。エクセルの行を固定する方法。固定したい行の次の行を選択し,[ウィンドウ]-[ウィンドウ枠の固定] を選択。