トップ «前の日(02-19) 最新 次の日(02-21)» 追記

日々の流転


2002-02-20

λ. Gimp-Rubyのembedモジュール

お遊びで作ってるやつ。結局ffcallのtrampolineを使うのは面倒そうなので止めた。代わりに、Ruby/DL方式でコールバック関数をあらかじめ用意しておくことにした。で、サクっと実装。ColorDisplayはdepricatedみたいだし速度的にもRubyじゃきついので、実際に使うとしたらColorSelectorくらいだろう。

インターフェースはまだ固まっていないけど、とりあえず~/.gimp-1.2/ruby/modules/にある.rbファイルをファイル毎に匿名のモジュールでmodule_evelして、それをモジュールとして扱うことにした。例えば、以下のようなファイルを~/.gimp-1.2/ruby/modules/hoge.rbとして置くと、Gimpに標準で入っているカラーセレクターとほぼ同じものになる。う〜む、callbackはダサイな。observer.rbを使うか?

require 'gtk'

class TestColorSelection < Gtk::ColorSelection
  def initialize(r, g, b, callback)
    super()
    setcolor(r, g, b)
    signal_connect('color_changed'){
      c = self.get_color
      callback.call(c[0] * 255, c[1] * 255, c[2] * 255)
    }
  end

  def setcolor(r, g, b, set_current = true)
    self.set_color([r/255.0, g/255.0, b/255.0])
  end  
end

def init
  @@handle = Gimp::Mod::ColorSelector.register("Gimp-Ruby Test", nil,
                                               TestColorSelection)
end

def unload
  Gimp::Mod::ColorSelector.unregister(@@handle) if @@handle
end

module_function :init, :unload
Tags: ruby gimp

λ. Ruby/GTKのアプリケーションへの組み込み

gtk+のメインループ内でRubyのスレッドを回してあげるために、Ruby/Gtkではg_main_set_poll_func()又はgtk_idle_add()を使ってハンドラーを登録している。

だけど、アプリケーションへの組み込みを考えるならば、Rubyインタプリタが終了したあともgtk+は動き続けている可能性もあるわけで、rb_set_end_proc()を使ってgtk_idle_removes()等を呼ぶ必要がありそうだ。

でも、g_main_set_poll_func()の方を使っている場合はどうしたら良いのだろう?

Tags: ruby

λ. NFS4 requires UTF-8

いつのまにか、そんな事になってたのね。

λ. 関手の圏

はぅあ。関手(functor)をやっと理解したと思ったら、関手の圏(functor category)なんてのもあるのね。

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

ψ むとう [ども。g_main_remove_poll()を使えば良いのですかね。使ったこともないですが。]

ψ さかい [ う〜ん。g_main_remove_poll()はg_main_add_poll()で追加したのを削除する関数っぽ..]

ψ むとう [うーむ。確かに。]


2003-02-20

λ. 新PC

新しいPCが届いた。一昨日の夜注文して、昨日お金を振り込んで、今日届いたのだから、早いものだなぁ。で、早速東方紅魔郷と東方妖々夢を試してみたら、紅魔境はちゃんと動いたけど、妖々夢はステージ表示やスペルカード名その他の文字がぼやけて表示されてしまう。ま、何にしても自宅で遊べるようになったのは嬉しい。早速、近くの電気屋に行って、ジョイパッド(とハブとネットワークケーブル)を買ってくる。それから、普段使うソフトウェアは大体インストールしたし、あとはノートの方の死にそうなHDDからデータを持ってくるか……

λ. non-regular datatypes

現在のCDTでは「data GRose f a = GBranch a (f (GRose f a))」のようなデータ型を取り扱えない。これを取り扱うには functor category を導入して Funct(C,C) × C -> C といった functor を許せば良いのだろうけど、functor category を無制限に導入してしまって大丈夫だろうか……

Tags: CPL

2007-02-20

λ. スキー初日

千歳空港で札幌ラーメンを食べる。
[窓からの景色] [札幌ラーメン]

スキー場に到着。30分くらいエッジの使い方や歩き方を教わった後、ゴンドラで一番上まであがり、ボーゲンというのを教わりながら、初心者用のメルヘンコースを2時間くらいかけて降りた。ボーゲンである程度滑れるようにはなったが、何かのきっかけでスピードが上がってしまうと、自分では減速できず、ひたすら加速する一方で、非常に怖かった。加速しまくった後は、派手にこけて転がりまわる。

転びまくったが、スキー楽しい。

あろはさん企画あろはさんとsumimさんと合流し、たじま屋で食事。その後katsumushiさんとも合流し、いのこ家へ。

  • Genesisでニューロンの活動をシミュレート
  • 正しい敬語→目上の人にお願いしてはいけない
    • NG: 首相、塩をとっていただけないでしょうか?
    • OK: 首相、塩を……
  • パスモ = パスネット・モア

北海道にもメイド喫茶はあった。
[メイドカフェ ありす★かふぇ]

[観覧車]

あと、すすきのの泡の出るお風呂屋さんに連れて行かれそうになりますた(笑


2008-02-20

λ. メール増殖

Thunderbirdでメールを整理*1していたら、どうもThunderbirdかサーバーかの調子が悪くて、いつの間にかメールが色々複製されまくってしまった。結果、5万通のspamが15万通のspamになるなど、色々面倒くさいことに。結局、Remove Duplicate Messages (Alternate)で重複メールを削除。Remove Duplicate Messagesよりもこっちの方が高速なようだ。

*1 普段はMewでメールを読んでいるのだけど、Mewだとフォルダの整理とかはしにくいので