2002-02-11
λ. 外部からGimpの機能を利用する
kjanaさんのツッコミにある[ruby-talk 33423]ですが、実際のところ、外部からGimpの機能を利用することは考えてなかったからあまりスマートな方法がないんだよなぁ。(ちなみにGimp-Perlなんかはちゃんとその辺りを考えてあるっぽい)
やるとしたら、Gimp側でdRubyのサーバを起動しておいて、そいつを利用するくらいかなぁ。dRubyのサーバは、メニューの <Toolbox>/Xtns/Ruby-Fu/dRuby Server/Start... から起動できる。自動的に起動するなら、gimp --no-interface --batch '(ruby-fu-druby-server 1 "druby://:7950" "")' とかすれば良い。
それで、あとは以下のようなコードを実行すると。(あ、7950ってポート番号は適当ね。)
require 'gimp/base' require 'drb/drb' DRb.start_service(nil, nil) g = DRbObject.new(nil, 'druby://7950') width = 100 height = 100 old_fg = g.gimp_palette_get_foreground old_bg = g.gimp_palette_get_background img = g.gimp_image_new(width, height, Gimp::RGB) begin img.undo_disable d = g.gimp_layer_new(img, width, height, Gimp::RGBA_IMAGE, "Background", 100, Gimp::NORMAL_MODE) img.add_layer(d, -1) g.gimp_palette_set_background(Gimp::Color.new(255,255,255)) g.gimp_edit_fill(d, Gimp::BG_IMAGE_FILL) d = g.gimp_layer_new(img, width, height, Gimp::RGBA_IMAGE, "BoxLayer", 100, Gimp::NORMAL_MODE) img.add_layer(d, -1) g.gimp_drawable_fill(d, Gimp::TRANS_IMAGE_FILL) g.gimp_rect_select(img, width/4, height/4, width/2, height/2, Gimp::ADD, false, 0) g.gimp_palette_set_foreground(Gimp::Color.new(0,0,255)) g.gimp_bucket_fill(d, Gimp::FG_BUCKET_FILL, Gimp::NORMAL_MODE, 100, 0, false, 0, 0) g.gimp_selection_none(img) g.script_fu_drop_shadow(Gimp::RUN_NONINTERACTIVE, img, d, "8", "8", "5.0", Gimp::Color.new(0,0,0), "70", true) img.active_layer = d g.gimp_palette_set_foreground(Gimp::Color.new(255, 0, 0)) d = g.gimp_text_fontname(img, nil, width/4, height/4, "Ruby!", 0, true, 15, Gimp::PIXELS, "-adobe-utopia-medium-r-normal-*-*-*-*-*-p-*-*") img.flatten filename = '/foo/bar.bmp' g.file_bmp_save(Gimp::RUN_NONINTERACTIVE, img, img.active_drawable, filename, filename) ensure img.delete g.gimp_palette_set_background(old_bg) g.gimp_palette_set_foreground(old_fg) end
λ. drbでのid
で、久しぶりにGimp-Rubyを触っていて、drbのパッチを送るの忘れてた事を思い出した。Gimp-Rubyではidメソッドをオーバーライドしているので、このパッチを当てないと発狂するはず。
咳さんにメールしたら、速攻でCVSにcommitしてくれました。残念ながら次のリリースは未定との事ですが。
diff -urN drb-1.3.4.2.orig/lib/drb/drb.rb drb-1.3.4.2/lib/drb/drb.rb --- drb-1.3.4.2.orig/lib/drb/drb.rb Tue Dec 11 17:23:53 2001 +++ drb-1.3.4.2/lib/drb/drb.rb Mon Feb 11 12:56:37 2002 @@ -24,7 +24,7 @@ end def to_id(obj) - obj.nil? ? nil : obj.id + obj.nil? ? nil : obj.__id__ end end @@ -386,7 +386,7 @@ end def to_id(obj) - return nil if obj.id == front.id + return nil if obj.__id__ == front.__id__ @idconv.to_id(obj) end
λ. SF-ADJUSTMENT
上のコードで、script_fu_drop_shadowを呼び出して初めて気がついたのだけど、SF-ADJUSTMENTはGIMP_PDB_STRINGにマップされてるのね。(gimpのplug-ins/script-fu/script-fu-scripts.c参照) てっきりGIMP_PDB_FLOATだと思っていたぞー。(だから、Ruby-FuでもGIMP_PDB_FLOATにマップしてある) 信じられない!! つーかScript-Fu作った奴は誰だ? いったい何考えてるんだ?
う〜む。Gimp-Ruby側で、GIMP_PDB_STRINGが必要な場所に文字列以外も指定できるようにすべきだろうか? 欝だ。
λ. GIMP 1.3.3
む。
λ. 読書
- 『天国に涙はいらない 4 - 男色一代男』
- 『天国に涙はいらない 5 - 逝き女五枚羽子板』
- 佐藤ケイ[著] さがのあおい[イラスト]
λ. ツッコミメールのMessage-ID
あれ、Message-IDに@mail_headerが入るようになったのか。2002.02.07のtdiary.rb: correct message_id. thanks woods <sodium@da2.so-net.ne.jp>
で仕様が変更になったのかな。Message-IDに使えない文字を@mail_headerが含んでいたので焦った。
λ. 文法の誤解
文法について誤解していたことに気が付いて超ショック。具体的には以下のような記述をしまくっていた。
サブタイトル[改行] 以下のパッチを当ててちょ。[改行] <blockquote><pre>[改行] 〜パッチ〜[改行] </pre></blockquote>[改行]
λ. 直すの面倒だなぁ。上の例で、<blockquote><pre>の前に機械的に改行をもう一つ入れると、以降のセクション番号がずれてしまって、まずい事になるし。となると、「以下のパッチを当ててちょ。」の部分を含めて整形済みにするしかないか……
λ. もし以下のようになっていたらもっと早くに気が付いただろうに。くそぅ。悔しい。
--- tdiary/skel/diary.rhtml~ Thu Jan 24 23:51:29 2002 +++ tdiary/skel/diary.rhtml Mon Feb 11 16:42:38 2002 @@ -9,7 +9,7 @@ if paragraph.subtitle then %> <h3 class="subtitle"><a <% if opt['anchor'] then %>name="p<%= '%02d' % idx %>" <% end %>href="<%= opt['index'] %>?date=<%= @date.strftime( '%Y%m%d' ) %>#p<%= '%02d' % idx %>"><%= opt['paragraph_anchor'] %></a> <% if opt['multi_user'] and paragraph.author then %>[<%= paragraph.author %>]<% end %><%= paragraph.subtitle %></h3><% end - if /^</ =~ paragraph.body then %> + if /\A</ =~ paragraph.body then %> <%= paragraph.body %><% elsif paragraph.subtitle %> <p><%= paragraph.body.collect{|l|l.chomp}.join( "</p>\n<p>" ) %></p><%
λ. 天国に涙はいらない
「天国に涙はいらない」の路線がどこまで続くかは興味のあるところではあるけど、佐藤ケイは別のシリーズを書くつもりはないのかなぁ。
2007-02-11 紀元節
λ. ILとLTLのF
PTQで使われている内包論理 IL では、Fφ という論理式は「それ以降ずっとφが成り立つ」という意味。一方、LTL では Gφ が「それ以降ずっとφが成り立つ」という意味になり、Fφ は「それ以降いつかφが成り立つ」という意味になる。 ちょっと紛らわしいと思った。
λ. About Schmidt
λ. 早い話が:星くずのブーメラン=金子秀敏
「あれ? MDで撃墜した場合にデプリって発生したっけ? 仮にそうだとしても随分偏った主張だなぁ」と思っていたが、やはりデプリにはならないようだ。
しかし、軌道速度やら宇宙速度やら、もう「そんなものもあったなぁ」という感じなのが悔しいなぁ。物理の教養が欲しい。
2008-02-11
λ. MSN Messenger History Merger
デスクトップとラップトップとでメッセンジャの履歴が分かれてしまっていたので、Thinkpadに移行した機会に MSN Messenger History Merger でマージした。メッセンジャの履歴は単純なXMLファイルなので、手でマージするのも難しくはないと思うけど、これはお手軽でいいね。
λ. Tumblr
先日の最終発表の際に、Web系の研究室にいたのにtumblr使ったことないのはどうかと思い、アカウントをとってみた。
2010-02-11
λ. PLDIr #6
PLDIの論文を読む PLDIr の第六回に参加。 今回はPLDI2002の論文が対象で、私は以下の2本の論文を紹介した。
- Adoption and focus: practical linear types for imperative programming (著者版)
- MaJIC: compiling MATLAB for speed and responsiveness (著者版)
Adoption and focus: practical linear types for imperative programming は、型で状態をトラッキングする Type state のようなシステムに関するもの。 状態をトラッキングする型システムはエイリアシングと相性が悪い。 例えば、close(a); read(b) は a と b が同じものを指していたら不正となる。 そのため、エイリアシングを禁止して線形型的な取り扱いをするのだけど、線形型をフィールドに持つような型も線形型にしなくてはいけなくて、現実的ではなくなってしまう。 この問題を解決するために、adoption と focus という演算を持つ型システムを考えている。この型システムは面白かった。
MaJIC: Compiling MATLAB for Speed and Responsivenes は、MATLABのためのJITコンパイラとAOTコンパイラのシステム。MATLABは型なしの言語なので、型推論するのだけど、JITの場合と違ってAOTの場合には型を投機的に予想してコンパイルするというのが面白かった。
スライド(PDF):
ψ ただただし [うーん、いちおう悩んだ上での仕様なのです……]
ψ さかい [仕様を変更してくれなんて言うつもりはないので御心配無く。(^^;; 今の段落の文法には納得してるっす。]
ψ いっちー [何で GIMP_PDB_FLOAT じゃねーの?って developer-ML に聞いてみては? あ、話しはずれるけ..]
ψ さかい [訊いてみますね。 それから、リスト等のはそもそもScript-Fuから外に持ち出すことが出来ないっす。詳しくはsio..]
ψ いっちー [そーすは読んでもよくわからないけど (LIST がないということ?)、script-fu-grid-system が..]
ψ さかい [ Script-Fuのスクリプトからscript-fu-grid-systemのような関数を呼び出すときに、リストを..]