1999年11月の日記

1日 月曜日

それにしても、gimpは文字化けせずに表示できている。カタログファイルの問題でないなら、ソースを辿れってなわけで、gimpのソースを少しばかり覗いてみよう。app/main.cにmain関数があるのでここから辿ることにする。まず、気になるのは123行目のINIT_LOCALE("gimp");という呼び出し。大文字だからきっとマクロでしょう。定義を探してみると、libgimp/gimpintl.hで定義されているマクロでした。

#  define INIT_LOCALE( domain )			\
	gtk_set_locale ();			\
	setlocale (LC_NUMERIC, "C");		\
	bindtextdomain (domain, LOCALEDIR);	\
	textdomain (domain);

gtk_set_localeはお馴染みとして、他の三つの関数は何でしょう? このINIT_LOCALEから戻ったあと(マクロだからこの表現は変かな)、おなじみのgtk_init (&argc, &argv);を呼び出し、特に目だった処理もなくgtk_main ();に到達します。

一方、文字化けするアプリの代表としてgnome-coreに含まれるpanelを見て行こうと思う。これは読むのも楽でしょう。(^_^) さて、mainを見て行くと、

        bindtextdomain (PACKAGE, GNOMELOCALEDIR);
        textdomain (PACKAGE);

        CORBA_exception_init(&ev);
        orb = gnome_CORBA_init("panel", VERSION,
                               &argc, argv,
                               GNORBA_INIT_SERVER_FUNC, &ev);
        CORBA_exception_free(&ev);

というのがありました。bindtextdomainとtextdomainはさっきもありました。CORBA関係は良く分かりませんが、gnome_CORBA_initの内部でgtk_init等が呼ばれているのでしょうか。これは確かめておいた方が良いですね。コメントによると Almost the same as gnome_init, except it initializes ORBit for use with gtk+ too だそうです。gnome_initはgnome-libs-1.0.54/libgnomeui/gnome-init.cで定義されていて・・・

なんか、完全に自分向けメモになってしまった。日記っぽいことを書かねば・・・

まてよ、たとえカタログファイルがEUC的に壊れていたとしても、結局EUCを理解しないプログラムによって連結されるのだから(たぶんね)、関係ないのは当然か・・・ むぅ、阿呆らしいことで時間をくってしまったようだ。ただ、いずれにしても、そのうちにgettextのソースコードは読まなくちゃな・・・ ハッカーへの道はまだまだ遠い・・・

2日 火曜 曇

ふと思った。成長するってのは、自分を解体していくことのような気がします。ちょうど、ビルの屋上からクレーンを解体して降ろすように、少しだけ小さな人格を作って現在の人格を解体して、その人格ももう少し小さな人格を作って解体していきます・・・ きっと、そのうち自我なんて無くなっちゃうんでしょうね。残るのは形だけです。

そういえば、InpriseのLinux版のDelphi/C++BuilderはKylixというらしいです。プロジェクトの名前なのか、製品名なのかは知りません。

niftyは@niftyになってから、夜とかは随分つながりにくくなった気がします。そして、それに相当するようなユーザーへのメリットはあまりありませんね。まあ、これからに期待しましょうか。

そういえば、CGIが使えるようになったんですよね。PHPは使えないようなので残念ですが、Perlで遊べそうです。もっとも、遊ぶだけならlocalhostで動作させていれば十分なんですが・・・

3日 水曜

以前から興味のあったpthreadに手をつけてみました。思ってたよりはだいぶ簡単でした。コンパクトによくまとまっている良いAPIだと思います。ただ、悲しいことはスレッドを必要とするほど複雑なプログラムを書きそうにないこと・・・ スレッドと言えば、Windowsは根本的に遅いのをスレッド等で誤魔化していて、面白い。それに対して、Linuxでは根本的な部分では速いのに、スレッドなどを活用していなくて、意外にレスポンスが悪く感じる、といった傾向があると思う。

GNU readline をテストしてみた。何故かコンパイルエラーになってしまって、困っちゃいました。しかし、readlineを使用する他のアプリケーションのMakefileを見てみてncursedをリンクすることに気づき、解決。readlineもシンプルなインターフェースで好感が持てる。ただ、個人的には別モジュールであるreadline側で確保したメモリを、アプリケーション側で直接freeで解放するのにはかなり違和感を感じる。こういう設計だと、malloc/freeの実装変更などに対してバイナリの柔軟性が低い。しかし、典型的なUNIXにおいてはそのような問題は全く考慮されていないように思える。一方、WindowsDLLにおいては、アプリケーション側とライブラリ(DLL)側が、別の実装のmalloc/freeを使用しているというのはザラであった。そのため、割り当てメモリは同じモジュール側で解放するよう気をつける必要があった。しかし、逆にDLLは名前空間を共有しないし、もちろんそれを汚染することもない。アプリケーションとDLLが、排他的なライブラリにリンクされていたとしても問題はなかった。Linux的に言うならば、アプリケーションがlibc6にリンクされていて、DLLがlibc5にリンクされているという事態ですら問題は無いということだ。(Linuxでは2つのlibcがconflictしてまともに動作しないだろう。) UNIXにそのような発想があるだろうか。UNIXにおけるダイナミックリンクは単なるリンクの実行時への先延ばしであって、そこにモジュール化への発想はほとんど無いように思える。もちろん、UNIXのDLLは透過的でスマートに実装されている。それは評価できることだ。ただ、Windows型のDLLが必要な場面というのも少なからず存在するはずである。

ところで、現在のmalloc/freeはどのように実装されているのであろうか。私は全然知らないのだが、メモリの塊はいわばオブジェクトなので、それ自体がデストラクタ的なもの(へのポインタ)を保持して、freeはそれを間接に呼び出す・・・というような実装が良いのではないかと思う。この方式は、将来のmallocの実装方法の変更を容易にする。言うまでもありません。

C言語には、触れれば触れるほどに違和感がつのります。C++はまだましですが、なにかと嫌われているようですしね。言語的にはJAVAが一番うまく設計されていると思う。ただ、Linux版のjdk1.2が出ないとやる気が起こらないと言うのはある。それと、Unicodeに触りたくないというのもある。etc.. JAVAはイベントの処理に、アダプタとリスナという概念を導入している。これが少しばかりめんどくさい。イベントの処理にはDelphi/C++Builderで採用されていたメソッドポインタがもっとも優れていると思うんだけどな〜 何と言っても、お手軽です。そして、オブジェクト指向的に素直な解だと思います。

4日 木曜

久しぶりに、GNOME無しで Window Maker を使ってみたら、こんなに軽かったのか!! と感動しました。本当に軽いです。GNOMEでは前述したような問題が発生していることもあって、本当にGNOME使うのやめちゃおうかな・・・ でも、GNOME抜きのEnlightenmentなら、Window Makerの方が好みだし、かといってimlibの魅力は大きいし・・・ そもそも、フルカラー表示が可能ならば、imlibでのパレット共有なんてどうでも良いんですがね。ビデオカード(TGUI 9685)に X Server を対応させるだけの、情報と技術があればな〜

もちろん、Enlightenment + GNOME 環境も素晴らしい面はあるので。将来、高性能でかつLinuxがちゃんと使えるパソコンを入手したら、その時は使わせてもらいましょう。現状では、GNOME環境にはさほど魅力が無いとはいえ、GNOMEを使わないとなると Midnight Commander の代わりになるファイルマネージャーが欲しいところ。

Kondaraの「バグ宙太」によれば、
gtk+ 1.2.6 には、根本的にfont 関係のバグがあったようです。
との事なので、GNOMEの問題はそれが原因の可能性が大きいかな。GNOME側の問題もあるでしょうが。

5日 金曜 晴

Window Maker は軽快で良いですね。どのくらいメモリを使ってるのかと見てみると、1.6Mバイトしか使ってません。Enlightenmentは6Mバイトくらいだったでしょうか。もっとも、Enlightenmentの場合はテーマによって大きく変わりそうなので、この数字を簡単に比べてもしょうがないですが。ところで、これを調べるためにgtop(GNOME System Monitor)を起動したのですが、これが3.4Mバイトも使ってました・・・ WindowMakerに戻るにあたって、最大の問題はパレットです。だって、WindowMaker, asclock, wmppxp, wmmon, muleを起動しただけでカラーマップはこんなです。

gimpでHelp Blowserがコンパイルできない問題ですが、gtk-xmhtmlはgnome-libsに含まれていました。strtokはstring.hで宣言されてます。これってANSIの関数でしょうか? さて、strtok_rは何処で定義されているのでしょう。こう言うときって、関数の定義にサクッとジャンプ出来る機能があると便利ですね。きっとそういうツールはあると思うのですが、とりあえずgrepが頼りです。でも、こういう状況を見ていると、Cの「includeでヘッダファイルを取り込んで別モジュールを使用する」と言うのは色々な面で問題があるように思えます。それに比べて、Pascalのusesや、JAVAのimportは私の好みですね。

なんか、怒涛のような計算機の話ですね。それ以外の話もないことは無いのですが・・・ そうそう、知る人ぞ知る、謎の文章を「ゴミ箱」に捨てておきました。

6日 土曜

「さいもん」というフォントをインストールしてみた。確かに非常に見やすいです。fonts.dirは手で作るのはめんどくさいし、mkttfdirを使うと本当に基本的なものしか作ってくれないので、とりあえず渡辺明朝と和田ゴシックの時のやつをファイル名とフォント名を一括変換して使用することにする。・・・と思ったのだが、気に入らなかったので自分で書く。(とりあえずfonts.dirです。あ〜疲れた。)

そういえば、netscapeでは通常の文字で表示されるべき所が、勝手に太字の斜体にされてしまいました。(スクリーンショット) これはnetscapeのバグですね。つまり通常の文字(midium-r)でフォントを取得するべき所で、太さと傾きを指定しないでフォントを取得しているのでしょう。すると、アルファベット順で早いので太字や斜体のフォントが先に見つかっちゃいます。と思ったが、そんなに簡単では無いようだ。太字はboldなのでmediumより早く見つかるのでそれで説明できるが、こっち向きの斜体はroかriなのでrより先に見つかるってのはおかしいぞ。ひょっとして、netscapeのソースを見なければダメでしょうか・・・

とりあえず、fonts.dirをもう少し整理して・・・やっぱりうまくいかない。しょうがないから、ro,riのエントリを削除しよう。よし、うまくいった!! ただ、英数字と記号の部分が間延びしているな。たしか、これはxfs-xttのドキュメントにnetscapeの問題だと書いてあったと思う。iso-8859-1とJIS X 0201についてはfonts.aliasを使ってpsymonでエイリアスを作ることにする。ドキュメントにも書いてあったが本末転倒な解決法だな。

よしよし、うまくいったぞ。と思いきや、今度はどの文字についてもboldが効かない。それと、muleのメニューのフォントが「さいもん」に変わってしまいました。一体どうしたのでしょう。まあ、これはこれでカッコ良いからいいや。じゃあ、fonts.aliasを使わずに、fonts.dirにすべて書くとどうなるだろうか。やはり、boldが無視される。muleのメニューは元に戻った。むむむ、結局iso-8859-1とJIS X 0201については、プロポーショナルのみfonts.dirに書いて、等幅フォントはfonts.aliasでそれへのAliasとして定義することにする。これならばpsymon等という余計なフォントを定義する必要も無い。boldはやはり解決しない・・・とおもったら不思議なことに、スタイルシートで指定されたboldはちゃんとboldとして表示される。BエレメントやSTRONGエレメントでの指定は効かないのに・・・

少し調べてみると、スタイルシートでfont-weight: boldと指定されている部分はboldで表示されるが、font-weight: bolderと指定されている部分はboldとして表示されないようだ。これはnetscapeのバグか、もしくはWEIGHTがbold以外に指定されているのかな。bolderが指定されたエレメントの効果が多重にかかっている場合はどうか? 2重のbolderでboldと同じ表現になった。フォントが無いからかどうかは知らないが、3重以上は変化しなかった。ここまで来たのだから、もう少し調べてみよう。italicの斜体は表示できたが、obliqueの斜体はどうか? そうそう、italicってのは1501年にイタリアで初めて斜体を使用したことから来てるんですね。ああ、やっぱり、obliqueで指定した場合はダメでした。これはSLANTがoに指定されているんでしょう。これはfonts.aliasにSLANTがiになっているフォントへのAliasとしてあげれば十分でしょう。よしよし、ウマクいったぞ。

そういえば、fonts.aliasってワイルドカードで記述できないのかな。属性の数に対して、エントリが幾何級数的に増加するからなぁ〜 あとで、調べてみよう。

2重のbolderでbold相当になるってことは、単一のbolderの時はどのようなフォントが要求されているのだろうか。WEIGHTはどうなっているのだろう。demiboldか? oboldか? 手元にあるフォントでは、あとはregularだが、まさかこれは無いだろう。試してみると、oboldはハズレ・・・ demiboldもハズレ・・・ アリ?

それと、ISO-8859-1については、「さいもん」とは別のフォントを探した方がよさそうだ。それにしても、たかだか、ブラウザでTrueTypeフォントを使おうとするだけで、これほど苦労するとは・・・ 自分で言うのもアレですけど、ここまで頑張るヤツって、そうはいないんじゃないかと思う。Windowsの時はフォントのフォルダの中にコピーするだけで良かったからね〜 この辺は、そのうち「Linuxの実験室」にまとめておこう。とりあえず、今日のところのfonts.dirfonts.aliasを置いておこ〜っと。

7日 日曜

今日は、公文の高校基礎過程の認定テストを受けて来た。国語だけだけどね。基礎と言うだけあって、簡単だった・・・と思う。

emacsって、Xレベルのウィンドウを複数開けるのですね。知りませんでした。`C-x 5 C-f'や`C-x 5 b'などと実行すればOKです。もっとも、残念なことに私の640×480ドットな環境では複数開いても活用できませんけど。1024×768のハイカラーか、800×600のフルカラーで使いたいです。(T_T)

プログラミングの練習にpthreadのラッパークラスをつくって見ようと思う。こういうクラスを書くのは初めてなので、どのように実装すべきかは良くわからない。ただ、DelphiのTThreadクラスは使いやすかったので、これを参考にしようと思う。ということで、DelphiのTThreadクラスのインターフェースの定義を引用ちゃいましょう。(これぐらいなら問題ないですよね。> Inpriseさん)

  TThread = class
  protected
    procedure DoTerminate; virtual;
    procedure Execute; virtual; abstract;
    procedure Synchronize(Method: TThreadMethod);
    property ReturnValue: Integer;
    property Terminated: Boolean;
  public
    constructor Create(CreateSuspended: Boolean);
    destructor Destroy; override;
    procedure Resume;
    procedure Suspend;
    procedure Terminate;
    function WaitFor: Integer;
    property FreeOnTerminate: Boolean;
    property Handle: THandle;
    property Priority: TT;
    property Suspended: Boolean;
    property T;
    property OnTerminate: TNotifyEvent;
  end;

さて、スレッドでの実際の処理はExecuteメソッドをオーバーライドして定義するものとしちゃうと色々手軽ですね。C++にはメソッドポインタがないので、OnTerminateのイベントハンドラは、別の方法で実装しなくちゃいけません。なんだか、めんどくさくなって来たので、こっから先は明日以降・・・

そうそう、昨日は最終的なスクリーンショットを載せなかったので、とりあえず(昨日の段階での)最終的なスクリーンショット

8日 月曜

strtok_rですが、gnome-libsのsupportディレクトリ内のstrtok_r.cで定義されていました。同じディレクトリ内のgnomesupport.hにもありました。実体は同じでしょうか・・・ これだから、includeは嫌だ・・・

9日 火曜

僕等は生きているの?
存在するの?

不安定な存在の根拠
曖昧な境界
不明瞭な自我

どこまでが僕?
どこからが僕?

あなたがあなただとして、
どうしてそれが、あなたが私でないことになろうか

10日 水曜

今度は別の欧文のTrueTypeフォントを入れようとしたが、エラーになってしまった。どうにも原因が思いつかないが、ふとフォントのファイル名を小文字に変えてみたらうまくいった。??? xfontselのメニューが画面に収まりきらなくなってしまった。Athena Widgetにはメニューを画面外のメニューをスクロールさせて表示するような機能は無いようだ・・・ かといってgfontselは、多バイト文字のフォントを表示出来ないし・・・困ったものだ。早く、これぐらいの物は自作できるようになりたい。

そういえば、Linuxでは64Gバイトのメモリのサポートが現実の物となりつつあるようですね。他にも、ファイルシステムをマウントして使いながらリサイズしたり、(既存の)常識を越えた機能が次々と実装されていくのを見ていると、フリーソフトウェアって本当に素晴らしいと感じさせられます。

MotifベースのBDFフォントエディタのxmbdfedをインストールしました。

リカバーリーCDからWindowsを外付HDDにリストアしようと思ったのだが、この作業は思ったよりもずっと困難だった。そのためのFDを使ってbootすると、HDDが正常に接続されてないというようなことを言われてしまった。内蔵のHDDは外しているので、もともとの状態からすれば確かに異常なんだけど・・・この作業に内蔵HDDって必要なの? なんか、理不尽な制約だよな〜 しょうがないので、手作業でファイルをコピーすることにした。ところが、これに意外と手間取る。Linux側からコピーすればいいのだが、僕が現在試用しているバージョン2.1.57はJolietファイルシステム(CD-ROMのISO9660ファイルシステムへをMSが拡張したもの)に対応していない。かといって、DOSの使い方は良く解らない・・ でも、よくよく考えてみれば、DOSでコピーすればロングファイルネームの情報は失われるので、素直にLinuxでコピーすれば良かった。下手にDOSで作業しようとして、随分時間を無駄にした挙げ句にうまくいかなかった。不思議なことに、DOSでコピーしたファイルがLinux側で見えなかったり、その逆だったりといった事態が観測された。あと、DOSでコピーしたディレクトリが、Linuxでは単一のファイルに見えたりというのもありました。等としながらも、結局うまくいきませんでした。しょうがないので、バックアップCD-ROMからの復元は諦めて、Windows95を普通にインストールしようかな・・・ あー それにしても腹だたしー!!

11日 木曜

結局のところ、fonts.aliasを使ったときのXのフォントが変わっちゃう問題は根本的な解決法が見つからないので、とりあえずfonts.aliasを使わずに、ずべてfonts.dirで指定することにした。あと、FOUNDRYをlogixpressに変えてみた。で、そしたらこんなfonts.dirになった。固定幅の方は、名前だけで中身はプロポーショナルになっている。次は、ktermなどでも使えるように、真面目にTTCapのbw(フォントのバウンディングボックスの幅の倍率)とsw(フォントの文字幅の倍率)をちゃんと書いてみるか。とりあえずktermとgimpでまともに使えたら、購入を検討しよっと。あ、製品版にはちゃんと固定幅のもついてくるようです。ttcファイルかな。

13日 土曜

カオスは面白いね。

全国高等学校総合文化祭のポスター募集に応募するために、そろそろ描かなくちゃな、と思ってるんだけど、Windowsが復活しないときついんだよな〜 gimp, sketch, pov-rayなどソフトは充実してるけど、640x480の256色は絵を描ける環境じゃないね〜

gtk+を--with-included-gettextを付けて再構築した上で、gimpも--with-included-gettextをつけて再構築。Perlがらみは手に負えなそうだったので、さくっときり捨てちゃいました。でも、相変わらずヘルプブラウザはこれです。

gcc -g -O2 -Wall -o .libs/helpbrowser helpbrowser.o queue.o ../../libgimp/.libs/libgimp.so -L/usr/local/lib -lglib -lm -rdynamic -L/usr/local/lib -L/usr/X11R6/lib -lgtkxmhtml -lXpm -ljpeg -lpng -lz -lSM -lICE -lgtk -lgdk -lgmodule -lglib -ldl -lintl -lXext -lX11 -lm ../../intl/libintl.a -Wl,--rpath -Wl,/usr/local/lib
/usr/local/lib/libgtkxmhtml.so: undefined reference to `strtok_r'
collect2: ld returned 1 exit status

他の部分は、つつがなくコンパイルできました。わーい。gimpが復活だー!! 困った時の--with-included-gettextな〜んちゃって。

Free Pascal でgtkを使うサンプルをコンパイルしてみたら、

/usr/local/lib/libgtk.so: undefined reference to `dgettext'
/usr/local/lib/libgtk.so: undefined reference to `bindtextdomain'

ってメッセージがでてコンパイルできませんでした。しかも、gtkユニットをコンパイルしようとすると、
gtk.pp(27,4) Fatal: User defined: Can't compile GTK with 0.99.12
というしょーもないメッセージが・・・

14日 日曜

gimpがちゃんと構築できたので、Gtk--もちゃんとコンパイル出来るかと思い、コンパイルしてみた。ところが、

icon-list.gen_h: In method `Gnome_IconList::Gnome_IconList(struct GnomeIconList *)': icon-list.gen_h:165: `struct GnomeIconList' has no member named `icon_width' icon-list.gen_h:167: `struct GnomeIconList' has no member named `is_editable'

というエラーになってしまった。だが、とりあえずgtk--とgdk--はコンパイルできているようだ。問題はgnome--のみ・・・ ま、いっか。

Gtk for Free Pascal の方は、gtk.ppに、

{$ifdef VER0_99_12}
  {$fatal Can't compile GTK with 0.99.12}
{$endif}

と書かれていたのが原因だった。この部分をコメントアウトするとコンパイルできたが、なにか問題があるかも知れない。それと、READMEには

If you have this file on another place in your directory tree, just 
set the FPCDIR variable so it points to that directory.
  (e.g. FPCDIR=/usr/lib/fpc/0.99.13; export FPCDIR in bash, or
        SETENV FPCDIR /usr/lib/fpc/0.99.13 in csh)

とか、書いてあるんですけど、すでに0.99.13があるってことでしょうか? さっきの Can't compile GTK with 0.99.12 も気になるし・・・

18日 - NULLの話 -

pthreadのC++用ラッパーを書いていて気が付いたのだが、NULLをある型のポインタ変数に代入しようとすると、その型へのポインタにキャストしないとエラーになってしまう。NULLというのは、特定の型に属するのではなく、どこも指していない、すなわち無効であることを意味するので、すべてのポインタ変数にキャスト無しで代入できるべきであろう。これは腹だたしい。調べると、

#define NULL ((void *)0)

と、定義されていた。C++ではCよりも型チェックが厳しく、(void *)から他の型へのポインタへキャスト無しに代入することができない。よって、C++から使う場合のことを考えて、

#ifdef _cplusplus
  #define NULL 0
#else
  #define NULL ((void *)0)
#endif

と書けば、済む話であろう。実際に、最近ではこのように書かれているのが普通のようだ。((void *)0)と書きたい気持ちもわからなくはないが、利用には不便だ。一般的に「どのように実装するか」よりも「どのようなインターフェースを実装するか」の方が重要であろう。

21日

emacsのhexlモードと言うものを知った。16進で表示したいときには意外と便利です。ただし、編集するのにはいまいちです。私が方法を知らないだけかも知れませんが、入力がみんな上書きになってしまいます。挿入は出来ないのでしょうか。

00000000: 7f58 7f60 0010 4a46 4946 0001 0101 0048  .X.`..JFIF.....H
00000010: 0048 0000 7f7e 0017 4372 6561 7465 6420  .H...~..Created 
00000020: 7769 7468 2054 6865 2047 494d 507f 5b00  with The GIMP.[.
00000030: 4300 0806 0607 0605 0807 0707 0909 080a  C...............
00000040: 0c15 0e0c 0b0b 0c19 1213 0f15 1e1b 201f  .............. .
00000050: 1e1b 1d1d 2125 3029 2123 2d24 1d1d 2a39  ....!%0)!#-$..*9
00000060: 2a2d 3133 3636 3620 283b 3f3a 343e 3035  *-13666 (;?:4>05
00000070: 3633 7f5b 0043 0109 0909 0c0b 0c18 0e0e  63.[.C..........
00000080: 1833 221d 2233 3333 3333 3333 3333 3333  .3"."33333333333
00000090: 3333 3333 3333 3333 3333 3333 3333 3333  3333333333333333
000000a0: 3333 3333 3333 3333 3333 3333 3333 3333  3333333333333333
000000b0: 3333 3333 3333 337f 4000 1108 014e 0163  3333333.@....N.c
000000c0: 0301 2200 0211 0103 1101 7f44 001b 0001  .."........D....
000000d0: 0003 0101 0101 0000 0000 0000 0000 0000  ................
000000e0: 0102 0304 0506 087f 4400 3310 0002 0202  ........D.3.....
000000f0: 0104 0201 0304 0103 0403 0000 0001 0211  ................
00000100: 0321 3104 1241 5113 6122 0532 7114 421b  .!1..AQ.a".2q.B.
00000110: 2e41 1b4e 1b24 411b 2842 2123 5262 331b  .A.N.$A.(B!#Rb3.
00000120: 2e42 1b4e 1b24 421b 2842 3141 5161 7f44  .B.N.$B.(B1AQa.D
00000130: 0019 0101 0101 0101 0100 0000 0000 0000  ................
00000140: 0000 0000 0102 0304 057f 4400 2111 0101  ..........D.!...
00000150: 0101 0002 0301 0101 0101 0000 0000 0001  ................
00000160: 1102 1221 0331 4151 1361 2271 7f5a 000c  ...!.1AQ.a"q.Z..

また、emacs上で動くWebブラウザであるw3をインストールしようとしたら、うまくいかなかった。emacsをバージョンアップしたくなって来たが、ダウンロードしてくるのは辛いサイズだからな〜 どっかの雑誌にでも収録してくれないかな〜

22日

11月5日の「Burn All GIFs Day」を忘れていたのに気が付いて、すべてのGIFを駆除しようと思ったが、手元のネットスケープナビゲーターはαチャンネル付きのPNGに対応していないのですね〜 そのため透過GIFを使っていたトップページの「Graphics by gimp」と「HTML 4.0」のアイコンはとりあえず保留してある。近日中になんとかしたいところだ。ユニシスの新方針とやらが決まる前に・・・

23日

そういえば、アメリカでは会計年度は10月で変わるのだそうですね。だから、会計年度上はもう2000年なのだそうです。おおきな問題も起こっていないようで、なんとなく安心します。

Linuxネタは書いていてつかれて来たので、今日は無し。そう言えば、新聞(毎日新聞11月22日 月曜日 朝刊 27面)に『「国歌指導はオウムの洗脳と同じ」プリント配付の教諭を訓告』という記事がありました。

東京都八王子市の市立中学教諭(49)が日の丸・君が代問題をオウム真理教の洗脳になぞらえて授業して、同市教委から文書訓告の注意を受けていたことが21日分かった。

市教委によると、教師は今年2月中旬、3年生の家庭科の授業で、日の丸・君が代問題を取り上げたプリントを配付。洗脳を受けてサリン事件を起こしたことを、オウム真理教の信者が法廷で述べた新聞記事を示し、教育委員会からの指導を受けて日の丸掲揚・君が代斉唱を実施している全国の校長について「同じことだと思いませんか」と問いかけたという。

都教委は7月に処分を見送ったが、同市教委は「地方公務員法33条(信用失墜行為の禁止)に接触する」として8月30日付で文書訓告した。校長にも監督責任を問い、口頭で訓告した。同市の教委の和田信行・教育部付参事は「国旗掲揚・国歌斉唱は学習指導要領に明記されている。洗脳と同じだと教えることは認めれない」と話している。

という記事なのです。参考までに、地方公務員法(通称:地公)の33条は「職員は、その職の信用を傷つけ、又は職員の職全体の不名誉となるような行為をしてはならない」です。で、これが信用失墜行為なんでしょうかね〜 嫌な世の中になったものです。・・・ところで、学習指導要領に明記されていなければ、洗脳と同じだと教えてもいいんでしょうかね〜 そもそも「同じことだと思いませんか」って問いかける事はそんなに問題なんでしょうかね。そのうち、「自衛隊は軍隊と同じじゃないですか?」とか問いかけたら、クビになったりするようになるのでしょうか?

29日

生命と非生命の境界って何だろう? 生命の定義は? 生命の条件は? などと最近思う。エネルギーを変換すること? 排泄すること? 自己を複製すること? 進化すること? 少なくとも有機質であることが生命の条件ってのは誤り、そもそも生命を構成するものを有機質って定義したんだから。(現在の定義は知らないけどね。)

ライフゲームのパターンは生命か? コンピュータウィルスは生命か? 地球は生命か? あらゆるものが生命であって、同時に生命でない・・・ような気がする。最近、なんとなく、仏教の「すべての生命はつながっている」的な発想に大きな違和感を覚えるのだ。なんで、生命と非生命を区別するわけ? 生命と非生命を区別することに、はたして意味があるのだろうか? もっとも、意味があるかどうかってのは人間にとってさほど重要な要素ではないでしょうけどね。

30日 晴

ChangeLogでgimpの1.1.13が出ている事を知ったので、インストールしてみた。榎田幸仁氏のGimp on Debian のページに文字描画ツールで日本語を使う場合の問題を修正するパッチがあるので、このパッチもあてました。そんでもって、コンパイルです。ウチでは--disable-perlと--with-included-gettextをつけないとコンパイル出来ませんでしたが、多分、一般的には不要なんだと思います。

./configure --disable-perl --with-included-gettext
make
make install

さらに、同じページでgtk+のフォントダイアログの多バイト文字の表示時の問題を修正をするパッチが紹介されていたので、これを当ててgtk+-1.2.6を再構築しました。結果は良い感じです。Script-Fuでもちゃんと日本語の文字が通ります。どうせなので、サンプルです。誤字はジョークなので、気にしないように。


ただ、1.1.11の時もそうでしたが、起動時にメインウィンドウが表示されないことがあるのが気にかかります。gnomeのタスクリストには表示されているので、それで最小化して元に戻せばちゃんと表示されます。