トップ «前の日記(2003-09-17) 最新 次の日記(2003-09-19)» 月表示 編集

日々の流転


2003-09-18 [長年日記]

λ. モーニング娘

どうでもいいけど、最近加護ちゃんかわいいですね。
あの辺の年齢はどんどん化けるので、将来が楽しみです
同様の理由で、辻ちゃんにも期待
新規加入した娘。は正直わからんし、どーでもよいです

そんな直江先生は、辻加護判別ゲームなど余裕に違いない。(とか書いてみる)

λ. signal_connect("destroy"){}

「ruby -rgtk2 -e 'Gtk.init; Gtk::Button.new.signal_connect("destroy"){} '」で落ちる問題、とりあえず解決。原因は前から分かっていて、

  1. Rubyの終了処理開始
  2. Ruby側のオブジェクトが開放される
  3. glib/gtk側のオブジェクトがunrefされる
  4. glib/gtk側のオブジェクトのリファレンスカウンタが0になる
  5. destroyシグナルが発生して、signal_connectのブロックを呼ぼうとする
  6. しかし、Ruby側はすでに通常の実行状態ではないので、正しく呼べない
  7. Segmentation Fault

という事が起こっていた。

Rubyが終了処理に入っていたらブロックを呼ばない事にすれば良いのだけど、「Rubyが終了処理に入っている」事をどうやって知れば良いかで数日悩んでいた。で、今日ふとrb_set_end_proc()で登録した関数内でフラグを立てればいいということに気が付いたので、解決。

この件についてはもっと対処が必要な気もするけど、落ちることだけはなくなるはずなので、残りは後回しでいいや。

Tags: ruby

λ. Relator

Functorの概念を使っているプログラミング言語は多いけど、Relatorの概念を使っている言語はあるか? (高階の論理型言語とか?)

本日のツッコミ(全3件) [ツッコミを入れる]
ψ あるふぁ (2003-09-20 00:34)

懐かしいなあ、ということで久しぶりにやってみたら 47 点でした。<辻加護判別ゲーム

ψ chiko (2003-09-20 02:05)

39点でした.

ψ さかい (2003-09-20 08:15)

わたしゃ17点でした。マジで区別付きません。