トップ 最新 追記

日々の流転


2002-08-02 [長年日記]

λ. 最終発表

あらら……

発表向きのネタではないとは分かっていたのだけど、CPLの方は実装が間に合わなかったのだもの。しょうがないよね。……と思ったが、やっぱ成果物を作れなかったなりに、圏論ついて発表しておけば良かったなぁ。

まあ、これで明日から、真・夏休みって感じ。

λ. Ruby-GNOME2

えっと、GCとリファレンスカウンタの扱いで、またヤバイ点に気が付きました。とりあえず、見なかった事にしよう。

Tags: ruby

λ. さあ

寝よう

本日のツッコミ(全3件) [ツッコミを入れる]

ψ むとぽん [え?(^^;)]

ψ さかい [例えば以下のスクリプト。 新しく作られたGtk::TextBufferは解放されるでしょうか? def my_te..]

ψ むとぽん [うーむ...。]


2002-08-04 [長年日記]

λ. MIB見た。今度は2を映画館に見に行こう。


2002-08-07 [長年日記]

λ. 三浦の方へ家族で遊びにいった。お昼は三崎海楼というところでとって、それから、油壺マリンパークへ。

サメがキュート。ちっちゃくってすばしっこいのも可愛いし、やる気無さそうに口を開けたまま漂っているシロワニも素敵。でも、お土産店にはサメのマスコットとかは無くて残念。ドチザメ・ネコザメにも触ってきた。

深海に住んでる体長3mのカニとか、そらからフグの解説なんかも面白かった。

あと、イルカとアシカのショーも見たけど、これはありきたり。イルカが跳ねるのを見るのは楽しいものだけど。


2002-08-10 [長年日記]

λ. 今年サンダルはくの初めてかも。夏だねー

λ. MIB2見てきた。

λ. 読書

ドラゴンヘッド (10)
望月 峯太郎 [著]
Tags:

λ. Optimization Module

This optimization module aims to provide functionality to optimize methods and blocks by reconstructing NODE tree in the distant future.

おもしれー。こんな事まで拡張ライブラリから出来てしまうのかー

Tags: ruby

λ. Gtk::Plug/Gtk::SocketとDRb

Gtk::Plug/Gtk::SocketとDRbを組み合わせてみるのはどうか? Bonoboの代替にはならないだろうけど、ひょっとしたら割と遊べるんじゃないだろうか。

Tags: ruby
本日のツッコミ(全1件) [ツッコミを入れる]

ψ なかだ [あれを拡張ライブラリからやるのはかなり反則技に近いです。parse.yの内部構造に依存しまくってるという意味で。 結..]


2002-08-11 [長年日記]

λ. バスツアー旅行で家族で富士山の方へ。

λ. まずは富士山の五合目までいった。ここまで来るとさすがに涼しくて良いなぁ。まぁ日差しは強いけどね。雲が流れるのが間近に見えるのが何だか爽快。

ゆっけが少し前に登頂してたけど、僕も登ってみたくなった。

おみくじを買ったら、裏面には英語で書いてあって、こっちのほうが意味は分かりやすかったり。ちなみに「おみくじ」は「A Written Oracle」か。なるほど。

100円で2分間使える双眼鏡みたいなのがあったけど、2分越えても使えてた。

λ. 河口湖付近で食事。

λ. 次は鳴沢氷穴と青木ヶ原樹海散策。鳴沢氷穴は本当に寒かった。ただ、ブロック状に積んである氷が何となく胡散臭かったり。それから、「地獄の入り口」と呼ばれる穴があって、どこまで穴が続いているか分かっていないそうだ。一説によると江ノ島の洞窟に通じているとか。この現代にそんな穴があるというのは何だか素敵だと思った。

樹海は思いの外涼しくて、散策は快適だった。

それから、風穴だったか氷穴だったかの氷を使ったかき氷を食べた。

λ. 最後に桃食べ放題とブドウ狩りをして、帰ってきた。


2002-08-12 [長年日記]

λ. 一日ごろごろ。

λ. テレビで新宿鮫をやっていたので見た。鮫島ってこんなにオヤジだっけ?


2002-08-13 [長年日記]

λ. どうしても取れないバグがあって徹夜してしまったのだけど、実は一カ所INT2FIXを忘れていたのが原因だった。阿保らし。

λ. 「幻の大戦果 〜台湾沖航空戦の真相〜」というのをテレビでやっていたので見た。面白かった。

λ. 新宿鮫の続きを見た。


2002-08-14 [長年日記]

λ. 朝起きたら寒気がする。どうやら、風邪をひいてしまったようだ。最近少し無理してたからなぁ。多分、昨日窓を全開にして昼寝してたのがまずかったんだろう。まあ暖かくして安静にしていればすぐ直るだろうと思っていたら……夕方には39℃に。仕方ないので解熱剤を飲んだら多少下がったけど、すぐ切れてこんどは40℃に……

意識が朦朧とするのら。脳が茹だるのら……

しかも下痢でしんどい。


2002-08-15 [長年日記]

λ. 気が遠くなるような夜が明ける。廊下を歩いていたら立ちくらみで倒れて、頭を打ってしまった。痛い。でも、それ以上に気持悪いので痛さはあんまり気にならない。

当然今日は診察を受けに行くのだ。と思ったが近所のはみんなお盆休みだったり。仕方ないので、湘南記念病院へ。

やっぱり風邪はお腹に来ているらしい。点滴を受けながら、採血の結果を待つことに。

おぉ、最近は一回針を刺すだけで採血と点滴が出来るのか。すごいなぁ。

採血の結果を見ると白血球などがだいぶ多く、炎症が起っているらしい。先生が「これは相当辛いでしょう」 と言ってた。はい、かなり辛いです。

薬も色々処方してもらった。

λ. ……というわけで、しばらく何も出来そうにありません。

本日のツッコミ(全2件) [ツッコミを入れる]

ψ s99060mi [とりあえず治すことに専念してください。お大事にー。]

ψ むとぽん [お大事に。]


2002-08-16 [長年日記]

λ. 今日も点滴を受けに病院へ。


2002-08-17 [長年日記]

λ. 今日も点滴。 一時間半じっと寝てるのが辛い。

まだ少し気持悪かったりするけど、それ以外は特に辛いこともなく、だいぶ楽になった。


2002-08-18 [長年日記]

λ. 風邪

明日もう一度診察を受けに行きますが、多分もう大丈夫です。

お二人とも心配してくださって、どうもありがとうございました。m(_ _)m

λ. ブロークンアロー

を見た。

λ. コンパイル猿

cygwinでgtk2関係のライブラリのビルドに挑戦。Ruby-GNOME2の実験環境を作るのが目的の一つ。

それにしてもcygwinはやっぱ遅い。クロスコンパイル環境つくろっかなー

λ. glib-2.0.6

gimp共同掲示板でのsけいしさんの情報を元にlibtoolを置き換える。以下の他のライブラリのコンパイルでも同様にする。

それから、以下のように言われてしまうので、「-luser32 -lwsock32 -lkernel32」が付かないよう細工してコンパイルした。-luser32と-lkernel32については自信ないけど、-lwsock32だけは確実に不用なので報告しておこう(#91696)。

*** Warning: This library needs some functionality provided by -luser32.
*** I have the capability to make that library automatically link in when
*** you link to this library.  But I can only do this if you have a
*** shared version of the library, which you do not appear to have.

*** Warning: This library needs some functionality provided by -lwsock32.
*** I have the capability to make that library automatically link in when
*** you link to this library.  But I can only do this if you have a
*** shared version of the library, which you do not appear to have.

*** Warning: This library needs some functionality provided by -lkernel32.
*** I have the capability to make that library automatically link in when
*** you link to this library.  But I can only do this if you have a
*** shared version of the library, which you do not appear to have.
*** The inter-library dependencies that have been dropped here will be
*** automatically added whenever a program is linked with this library
*** or is declared to -dlopen it.

*** Since this library must not contain undefined symbols,
*** because either the platform does not support them or
*** it was explicitly requested with -no-undefined,
*** libtool will only create a static version of it.

こうして作ったglib用に、Ruby/GLibをコンパイルしようとしてtypoに気が付いた。後でこっそり直しとこ。

λ. atk-1..3

何故かimpgenが/usr/libを見に行くので、DLLを/usr/binからコピーして安易に対処。

λ. freetype-2.1.0

普通にビルドしたらDLLにならなかった。まあ、とりあえず作っているだけで、今回はgimpまでビルドするつもりではないので、気にしないことに。(gimpにはpangoft2が必要なんで)

λ. pango-1.0,4

どうせなので、pangowin32, pangox. pangoxft, pangoft2 全部作った。pangoのモジュールにはサフィックスが付くので、共存について特に考える必要はないはず。

fribidiとXftについて考えるのが面倒だったので、mini-fribidiとmini-xftを使う。

pango/pango-utils.cにミスを発見したので修正。この修正をしないとG_WIN32_DLLMAIN_FOR_DLL_NAMEのところでエラーになる。ひょっとして、CygwinでPangoをビルドしてるのって僕が初めて? (#91785)

--- pango/pango-utils.c.orig	2002-02-10 14:53:40.000000000 +0900
+++ pango/pango-utils.c	2002-08-18 10:57:36.000000000 +0900
@@ -38,7 +38,7 @@
 #  define getc_unlocked(f) getc(f)
 #endif /* !HAVE_FLOCKFILE */
 
-#ifdef G_OS_WIN32
+#ifdef G_PLATFORM_WIN32
 
 #include <sys/types.h>
 

pangowin32で、glibの時と同様のエラーでスタティックライブラリにされてしまう。こっちは実際に使われているライブラリなので、とりあえず「-Wl,-lgdi32」に置き換えて、リンカに直接渡すようにしたらうまく行ったようだ。 libtool良くわからん。

pangoxとpangoxftも、何故かスタティックライブラリにされてしまう。

が、とりあえず、pangowin32(とpangoft2)はうまく作れてるのだから、これを使ってGDK_WINDOWING_WIN32なgtk+をビルドすることに進もうかな。

λ. gtk+-2.0.6

最終的にはwin32用とx11用を両方作りたい。

/usr/lib/gtk-2.0/include/gdkconfig.h が衝突するのでここだけディレクトリを変更して、.pcファイルもそれに合わせて変更する必要があるかも。と思ったが、そもそも /usr/lib/gtk-2.0/2.0.6/modules以下のモジュールって共有できるんだろうか? とりあえず、今日はwin32版さえ出来れば良いので気にしない事にする。

gdk-pixbufのpixopsで、アセンブラで書かれた関係のシンボルがundefinedだと言われてしまう。オブジェクトファイルを見てみると、「_」が先頭についていないシンボルが代わりに定義されていた。.Sファイルを見ると「#ifndef __MINGW32__」で定義するシンボルを変えているようなので、試しに「#if !defined(__MINGW32__) && !defined(__CYGWIN__)」を使うように書き換えたら、うまく行ったようだ。#91597

以下のように言われる。 giochannel.hでG_OS_WIN32の時しかG_WIN32_MSG_HANDLEが定義されないのが原因。仕方ないので、G_PLATFORM_WIN32のときもG_WIN32_MSG_HANDLEだけ定義するように変更してみる。(追記: この修正は誤りなので注意)

../../../gtk+-2.0.6/gdk/win32/gdkevents-win32.c: In function `_gdk_events_init':
../../../gtk+-2.0.6/gdk/win32/gdkevents-win32.c:320: `G_WIN32_MSG_HANDLE' undeclared (first use in this function)

gdkwindow-win32.cで_MAX_PATHが宣言されてないと言われてしまう(#91681)。 仕方ないので、gdkwindow-win32.cの先頭辺りに、以下のように書いて対処。

#if defined(MAX_PATH) && !defined(_MAX_PATH)
#define _MAX_PATH MAX_PATH
#endif

リンク時に「.libs/libgdk-win32-2.0.lax/libgdk-win32.al/gdk-win32res.lo: file not recognized: File format not recognized」といわれてしまった。このファイルの中身を見ると、オブジェクトファイルではなく、以下のようなテキストだった。

# gdk-win32res.lo
# Generated by lt-compile-resource, compatible with libtool
pic_object=.libs/gdk-win32res.o
non_pic_object=none

試しにgdk/win32/rcでmakeすると、以下のように言われてしまった。 windresがVPATHに対応してない?
gtk.icoをこのディレクトリにコピーしたら、ビルドできた。

../../../../gtk+-2.0.6/build/win32/lt-compile-resource gdk.rc gdk-win32res.lo
Using zero as build number
windres: can't open icon file `gtk.ico': No such file or directory

次に引っかかったのはgtk/gtkfilesel.c。 unistd.hとwinsock.hのgethostnameの宣言が衝突する。 Cygwinの場合はwinsock.hをincludeしないことにする。 #91654

--- gtk+-2.0.6/gtk/gtkfilesel.c.orig	2002-06-16 13:02:28.000000000 +0900
+++ gtk+-2.0.6/gtk/gtkfilesel.c	2002-08-19 12:58:08.000000000 +0900
@@ -51,7 +51,7 @@
 #include <windows.h>
 #undef STRICT
 #endif /* G_OS_WIN32 || G_WITH_CYGWIN */
-#ifdef HAVE_WINSOCK_H
+#if defined(HAVE_WINSOCK_H) && !defined(G_WITH_CYGWIN)
 #include <winsock.h>		/* For gethostname */
 #endif
 

ところで、同じファイルのtranslate_win32_path()には以下のような説明があるけど、 「//x/somepath/file.jpg」という形式のパスは古くて もう使われていないんじゃなかったっけ?
後でcygwin_conv_to_posix_path()辺りを使うように書き換えよう。(#91843)

/*
 * Take the path currently in the file selection
 * entry field and translate as necessary from
 * a WIN32 style to CYGWIN32 style path.  For
 * instance translate:
 * x:\somepath\file.jpg
 * to:
 * //x/somepath/file.jpg
 *
 * Replace the path in the selection text field.
 * Return a boolean value concerning whether a
 * translation had to be made.
 */

とりあえず、gtkfilesel.cは他にも後で手を入れる必要がありそう。


2002-08-19 [長年日記]

λ. 午前中は湘南記念病院へ。雨がすごい。台風がくるん?

λ. バーコード

僕もやってみたり。(Asumi日記(2002-08-13)より)

λ. タイ料理

例のメンバでソンブンのタイ料理を食しに行った。

その後何故か舘野さんちに行くことに。みんなでTVのプロレス見た。


2002-08-21 [長年日記]

λ. コンパイル猿

日曜の続き。

λ. atk-1.0.4

atkがスタティックライブラリになってしまっているのに気がついた。理由はわからないが「libtool: link: warning: undefined symbols not allowed in i586-pc-cygwin shared libraries」というメッセージを見ると、何かシンボルが欠けているのかとも思う。しかし、直接dllwrapを使うと普通にDLLを作れるようなので、これをインストールしとこ。(8/31に追記あり)

ところで、dllwrapで--defを指定せずに作ったDLLには、impgenがうまく動作しないようだ。

λ. gtk+-2.0.6

cyggtk-win32-2.0-0.dllをビルドしようとしたら以下のようなエラーメッセージが出てしまった。auto-importは比較的新しい機能でよく知らないので使わないことを考える。gdktypes.hではG_OS_WIN32の時にしか「__declspec(dllimport)」が付かなくなっていたので、この条件をG_PLATFORM_WIN32に書き換えて試したら、うまくいった。

fu000001.o(.idata$3+0xc): undefined reference to `libimp_cyggdk_win32_2_0_0_a_iname'
fu000002.o(.idata$3+0xc): undefined reference to `libimp_cyggdk_win32_2_0_0_a_iname'
fu000003.o(.idata$3+0xc): undefined reference to `libimp_cyggdk_win32_2_0_0_a_iname'
fu000004.o(.idata$3+0xc): undefined reference to `libimp_cyggdk_win32_2_0_0_a_iname'
fu000005.o(.idata$3+0xc): undefined reference to `libimp_cyggdk_win32_2_0_0_a_iname'
fu000006.o(.idata$3+0xc): more undefined references to `libimp_cyggdk_win32_2_0_0_a_iname' follow
nmth000000.o(.idata$4+0x0): undefined reference to `_nm__gdk_threads_mutex'
Info: resolving _gdk_threads_mutex by linking to __imp__gdk_threads_mutex (auto-import)
collect2: ld returned 1 exit status

次に、適当なサンプルをビルドしようとすると、gtkをリンクする段階で「simple.o(.text+0xe5):simple.c: undefined reference to `gtk_init_abi_check'」等と言われてしまう。gtkmain.hでは「#ifdef G_PLATFORM_WIN32」を使ってるのに、gtkmain.cでは「#ifdef G_OS_WIN32」を使っているのが原因。#91649 アホらしくてやってられないね。gtkmain.cの方を直すのが筋なんだろうけど、gtkをリンクしなおすのが面倒なのでgtkmain.hの方を修正。

これでもう大丈夫だろうと思い、gtk+-2.0.6/examples/filesel辺りを試しにコンパイル実行してみると、以下のように言われてしまった。

bash-2.05b$ ./filesel.exe 

** (filesel:4063781): WARNING **: Couldn't load font "Sans 10" falling back to "Sans 10"

** (filesel:4063781): WARNING **: Couldn't load font "Sans 10" falling back to "Sans 10"

** (filesel:4063781): WARNING **: All font failbacks failed!!!!

このメッセージを出しているのはpango-fontmap.c。問題があるとしたらpangowin32-fontmap.cか? それともgtkrc-2.0ファイルに関する問題だろうか? gtk+側の問題かpangoの問題かを切り分けるうまい方法はないかな?

そろそろお手上げ気味かも……

λ. 個人向け国債を非課税に、財務省検討

せこいのう。

Tags: 時事

λ. return

そういえばHaskellのreturnって関数なんだよなぁ……

Tags: haskell

2002-08-22 [長年日記]

λ. 萩野先生に翻弄される夢を見ました。なにやら将来を暗示しているような。

λ. コンパイル猿

仕方ないのでpangoのソースを追いかける。

λ. pango-1.0.4

pangowin32.aliasファイルが読まれていないので、pangwin32-fontmap.cで_WE_WANT_GLOBAL_ALIASES_を#defineしてみるが、このコードはブロークンで使い物にならない

ふと思い立って、PangoWin32FontMapのメンバ変数familiesのハッシュをダンプしてみる。すると、なんだか妙なフォント名が……

  • @MS Pピプッハ
  • @MS ピプッハ
  • MS ピプッハ
  • @ms ui gothic
  • monospace
  • MS Pピプッハ
  • ms ui gothic

どうしてこうなってるかは後で考えるとして、試しにpango_font_map_real_load_fontset()のfallbackを「Sans」から「ms ui gothic」に変更してみる。すると今度は一瞬だけウィンドウが表示されて、segmentation fault する。gtk_main()にはたどり着いているようだ……

λ. バイナリ

今日はここまで。バックアップを兼ねて現在のバイナリを gtk2-cygwin-20020822.zip にしばらく置いておくので、地雷を踏んでみたい人はどうぞ。

あ、壊れてるファイルや足りないファイル等あったらスマソ。

λ. 借りた本

『星方遊撃隊 エンジェル・リンクス 帰還編』
伊吹秀明[著] 幡池裕行[イラスト]
『空が落ちる』上巻
シドニィ・シェルダン
『突破者の日本ウラ経済学』
宮崎学
『日本経済新聞の読み方』
日下公人
小説すばる 2002年3月号
-
Tags:

2002-08-23 [長年日記]

λ. コンパイル猿

gtk_main()にたどり着いているって事は、Windowsメッセージでマズイ事になってるという可能性がありそうだ。

探してみると、glib/gmain.cのg_poll()が、G_OS_WIN32が定義されているかどうかで二つに分かれていて、ここにG_WIN32_MSG_HANDLEを処理する部分がある。ただ、ここで悩ましいのはGPollFDの扱いだよなぁ。当然今はfile descriptorが入っているのだけど……

On Win32, the fd in a GPollFD should be Win32 HANDLE (*not* a file descriptor as provided by the C runtime) that can be used by MsgWaitForMultipleObjects. This does *not* include file handles from CreateFile, SOCKETs, nor pipe handles. (But you can use WSAEventSelect to signal events when a SOCKET is readable).

On Win32, fd can also be the special value G_WIN32_MSG_HANDLE to indicate polling for messages. These message queue GPollFDs should be added with the g_main_poll_win32_msg_add function.

But note that G_WIN32_MSG_HANDLE GPollFDs should not be used by GDK (GTK) programs, as GDK itself wants to read messages and convert them to GDK events.

So, unless you really know what you are doing, it's best not to try to use the main loop polling stuff for your own needs on Win32. It's really only written for the GIMP's needs so far.

さて、fdtab[fd]->get_handle() で Cygwin の file descriptor から Win32のHANDLEを得られると考えて良いとしたら、select()は使わないで、全部HANDLEに変換してMsgWaitForMultipleObjects()するのが良いかもしれない。しかし、fhandler_baseのget_handle(), get_io_handle(), get_output_handle() はどう使い分ければ良いのだろう。……と思ったら、これらはcygwin1.dll内部専用か。ちぇっ。

というか、そもそもCygwinは自前のpoll()を持っているので、glib/gmain.cのg_poll()は最初から使われていなかったのね。g_poll()をいじってどうこうしようとしてたのはそもそも筋が悪かったわけか。

gdk/win32/gdkevent-win32.cの方でGSourceをもっとちゃんと使えば、多少効率は落ちても、poll()の置き換えなしに出来るんじゃないかという気もする。この辺りのソースをきちんと読まないといかんかなぁ……

λ. PRIMES is in P

今更だけど印刷してみた。僕の周りでは概ね好意的な反応ばかりなので、あけてくれ日記 2002.08.17(土) の「真っ赤な嘘」という記述が気になっています。

2002-09-04の日記2002-09-25の日記も参照。やはり問題なかった。

Tags: 論文
本日のツッコミ(全1件) [ツッコミを入れる]

ψ さかい [HANDLEとfile descriptorを相互に変換するには、 get_osfhandle()やopen_osf..]


2002-08-24 [長年日記]

λ. 今日も起きたのはお昼頃。

λ. HAQ Board

が荒れてる。悲しい。

λ. コンパイル猿

というわけで、以下のようなパッチ(#91683)を当てることで、何とかそれっぽく動くようになりました。ウィンドウが表示されてから数秒で暴走するんですが、とりあえずスクリーンショット

--- gtk+-2.0.6/gdk/win32/gdkevents-win32.c~	2002-03-06 09:36:08.000000000 +0900
+++ gtk+-2.0.6/gdk/win32/gdkevents-win32.c	2002-08-24 00:38:16.000000000 +0900
@@ -126,7 +126,9 @@
   NULL
 };
 
+#ifdef G_OS_WIN32
 GPollFD event_poll_fd;
+#endif
 
 static GdkWindow *current_window = NULL;
 static gint current_x, current_y;
@@ -317,10 +319,12 @@
   source = g_source_new (&event_funcs, sizeof (GSource));
   g_source_set_priority (source, GDK_PRIORITY_EVENTS);
 
+#ifdef G_OS_WIN32
   event_poll_fd.fd = G_WIN32_MSG_HANDLE;
   event_poll_fd.events = G_IO_IN;
   
   g_source_add_poll (source, &event_poll_fd);
+#endif
   g_source_set_can_recurse (source, TRUE);
   g_source_attach (source, NULL);
 
@@ -3441,11 +3445,15 @@
   
   GDK_THREADS_ENTER ();
 
+#ifdef G_OS_WIN32
   if (event_poll_fd.revents & G_IO_IN)
+#endif
     retval = (_gdk_event_queue_find_first () != NULL)
 	      || PeekMessage (&msg, NULL, 0, 0, PM_NOREMOVE);
+#ifdef G_OS_WIN32
   else
     retval = FALSE;
+#endif
 
   GDK_THREADS_LEAVE ();
 

PeekMessage()で単純にポーリングするとすごい効率悪そう。Win32でメッセージって普通どうやって扱うんだっけなぁ…… Delphiしか使ったことないので、良く分からなかったり……


2002-08-25 [長年日記]

λ. 寒くならないうちに泳ぎに行こうと思い、近くのプールへ。やっぱ体力も筋力も落ちてるなぁ。水が重い。1kmほどでダウン。明日は筋肉痛に違いない。

λ. コンパイル猿

そろそろ飽きてきたし撤退開始……

λ. 輸出企業、ユーロの為替リスク増大

なるほど。

[追記]: 同じ記事へのtsさんの感想を読んで、通貨ネッティングなるものを初めて知った。

Tags: 時事

2002-08-26 [長年日記]

λ. 本田孝好 「FIREFLY (MOMENT ACT.3)」

一人で暮らすにはこの世界は広すぎる。広すぎる空間は、たった一人の存在の意味なんて、簡単に貶め、押し潰してしまう。そこに確かな痕跡を残すには、僕ら一人一人の力はあまりにか弱く、頼りない。

λ.

中国へツアー旅行で行く夢。何故かドブ川に飛込んで泳いだり。なんか、妙に疲れる夢だった。

λ. freemail

昔作ったfreemailのアカウントを削除。全然使ってなかったし。

λ. Bugzilla

gnome.orgのBugzillaで、Short Summaryに書いた「<」や「>」がエスケープされていない事に気が付いた。これっていわゆるXSS?


2002-08-27 [長年日記]

λ. 生保の予定利率下げ

保守党の野田党首が、生保の予定利率引き下げを容認すべきだと主張しているらしい。僕も基本的には賛成ですが、どういう形で実現しようとしているのかが気になります。これに関するリチャード・クーの提案は興味深いのですが、ちょっと現実的でないように思えます。

Tags: 時事

λ.

「クーデター未遂を利用して、腐敗した閣僚を一挙に粛清する大統領」の夢をみました。

λ. コンパイル猿

先日のパッチは「/dev/windowsを使うのはどう?」とのこと。そういえば、そんなのもあったなぁ。cygwin-1.3.12-4/winsup/cygwin/fhandler_windows.ccを見ると以下のように書いてあるので、確かに使えそうだ。内部でバッファリングもしていないようなので、gdk側でPeekMessage()/GetMessage()等が使われている部分もそのままで良いのかな?

The following unix-style calls are supported:
 
        open ("/dev/windows", flags, mode=0)
                - create a unix fd for message queue.
                  O_NONBLOCK flag controls the read() call behavior.
 
        read (fd, buf, len)
                - return next message from queue. buf must point to MSG
                  structure, len must be >= sizeof (MSG). If read is set to
                  non-blocking and the queue is empty, read call returns -1
                  immediately with errno set to EAGAIN, otherwise it blocks
                  untill the message will be received.
 
        write (fd, buf, len)
                - send a message pointed by buf. len argument ignored.
 
        ioctl (fd, command, *param)
                - control read()/write() behavior.
                ioctl (fd, WINDOWS_POST, NULL): write() will PostMessage();
                ioctl (fd, WINDOWS_SEND, NULL): write() will SendMessage();
                ioctl (fd, WINDOWS_HWND, &hWnd): read() messages for
                        hWnd window.
 
        select () call marks read fd when any message posted to queue.

撤退するはずが…… (苦笑)

試してみると、前のパッチよりも具合いが良いようだ。うーん、GSourceについての僕の理解が間違ってるのかなぁ。

Tags: gtk

λ. denotational semantics

ふむふむものすごく難解な数式には見えない気がするけど、Algebraic Specification や Categorical Specification Language も denotational semantics なのかなぁ……

【2006-04-14追記】 コメント欄を参照。Algebraic Specification や Categorical Specification Language 自体は denotational semantics ではない。

λ. 地産が更生法申請

そうか潰れちゃったのか。チサンホテルで合宿したことがあるので、少し懐かしい。

λ. 水泳

今日も近くのプールへ。先日よりはだいぶ気温も高く気持良かった。天気も良かったし、少し日焼けしたかな。

とりあえず1km。今日はまだまだ泳げそうだったけど、時間切れ。

本日のツッコミ(全5件) [ツッコミを入れる]

ψ kjana [スタックの奴はちょっと他のと記憶が混じったかも.十分に 意味が記述できてるんだか検証できなさそうに見えるし. 再帰..]

ψ さかい [少し調べてみました。 代数的仕様といっても、 Algebraic specification 的なものではなくて、..]

ψ 有野 [ちらっと調べてみましたが、形式的にやろう、と いうのとは反対な路線っぽい気がします。 λx.f(x) みたいな物の性..]

ψ さかい [知識処理論の講義資料を読み返してたら、 何となく分かってきたような気がします。 http://www.tom.sfc..]

ψ 有野 [なるほど。 シンタックスを数学的な要素にマッピングする事ですか。]


2002-08-28 [長年日記]

λ. 読書

『ギルティギアゼクス - 胡蝶と疾風』
海法紀光

国際警察機構長官!?。なにー、カイはそんなに偉かったのかぁー

Tags:

λ. DRb vs Gtk::Plug & Gtk::Socket

なかださんが「面白そう」と言ってくれたので、試しに簡単なものを作ってみる。細かなエラー処理などは省略。

# drbembed.rb
require 'drb'
require 'gtk2'
 
module DRbEmbed
  class Socket < Gtk::Socket
    def initialize
      super()
      @drbobj = nil
    end
 
    def add(arg)
      @drbobj = arg
      add_id(@drbobj.__drb_embed_plug_id__)
    end
  end
end
 
module Gtk
  class Widget
    def __drb_embed_plug_id__
      if parent
        unless parent.is_a? Gtk::Plug
          raise TypeError.new("parent isn't Gtk::Plug")
        end
      else
        Gtk::Plug.new.show.add(self)
      end
      parent.id
    end
  end
end

次に埋め込まれるWidgetの例。DRbを普通に使ってるだけ。

require 'drbembed'
server = DRb::DRbServer.new(nil, Gtk::Button.new('This is remote widget'))
puts server.uri
Gtk.main

で、このWidgetをリモートから使ってみる。コンテナとしてDRbEmbed::Socketを使う事以外、ほとんど何も気にしなくて良いはず。

require 'drbembed'
 
there = ARGV.shift || raise("usage: #{$0} <server_uri>")
DRb.start_service(nil, nil)
remote_widget = DRb::DRbObject.new(nil, there)
 
win = Gtk::Window.new
socket = DRbEmbed::Socket.new
win.add(socket)
win.show_all
 
socket.add(remote_widget)
remote_widget.show
 
remote_widget.signal_connect('clicked'){
  puts 'Hello DRb!'
}
 
Gtk.main

う〜ん。もう少し改良の余地があるかな。

Tags: ruby

2002-08-31 [長年日記]

λ. 「霞が関が震えた日」

読書をして一日過ごす。今読んでるのは塩田潮の「霞が関が震えた日」という本で、ニクソンショックを扱っているのだけど、僕はこういう事件を歴史の年表に出てくる名前としてしか知らなかったのだなぁ……と感じた。

金・ドルの交換停止—。日本経済が凍りつくようなニクソン・ショックが突如日本を襲った。大蔵省を筆頭に政府官庁・日本銀行をはじめ、都市銀行、証券、商社はいかなる対応をしたのか。戦後経済史最大のナゾとされる通貨戦争の内実を徹底取材によってはじめて明らかにした講談社ノンフィクション賞受賞作品。

Tags:

λ. EUC/SJIS/JIS/UTF-8の判断ルーチン

そういえば現在のNKF.guessはSS3をSHIFT_JISと誤認するので、それも直ると嬉しいです。とか書いてみる。

Tags: ruby

λ. GGX

全然関係ないけど、イノいーよね。

λ. Classクラス

RubyではClassクラスの継承は禁止されている。特定のクラス群を独自の方法でマーシャリングしたい場合にはどうしたら良いか?

Tags: ruby

λ. -no-undefined

こないだatkのDLLを作れなかったのは、libtoolに-no-undefinedオプションが指定されていなかったのが原因だった。configure.inとMakefile.amを見るとmingwの時は指定されるようになってるので、この辺をpangoやgtkに合わせてゴニョゴニョすれば良い。後でパッチを送ろう。

本日のツッコミ(全4件) [ツッコミを入れる]

ψ たむら [SS3 ってなぁに ? guessのテストのためにもサンプルファイルきぼん。]

ψ なかだ [イノはいーのー(脊髄反射)。 とかワケも分からず書いてみるテスト。]

ψ さかい [SS3はオクテットとしては0x8Fで、EUCでG3集合を呼び出すのに使う制御文字です。 なので、適当なJIS X02..]

ψ さかい [なかださん…… ちなみに、こんなキャラだったり。 http://www.guiltygearx.com/ggx/xx..]