自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。
Ruby言語やLinuxのネタが多いです。
November 17, 2003 [おもひで]
■ [Ruby-GNOME2] さっそくバグレポート
ってか、コンパイルエラーが3件。しくしく。
なるべく早いうちに0.8.1出しますんで他にもバグあったらレポートしてください。
GTK+-2.0の環境つぶしちゃったんだけど、また、どっかに用意しないとなー。
■ あー、はやくGTK+-2.0.xとRuby-1.6.x捨ててー。ってかライブラリありすぎ(T_T)。
■ [Ruby-GNOME2] ke-gtk2.rb
#!/usr/bin/env ruby
# http://www.meigaku.ac.jp/~watayan/prog/java/nanisource.html
# の「何もしない Java applet に毛のはえたやつ」をRuby/Tkに移植したもの
# http://znz.s1.xrea.com/t/?date=20031114#p01
# をRuby/GnomeCanvas2に移植したもの
require 'gnomecanvas2'
Gtk.init
c = Gnome::Canvas.new(true)
c.set_size_request(200, 200)
c.set_scroll_region(0, 0, 200, 200)
maxx, maxy = c.width, c.height
num = (ARGV.shift || 100).to_i
interval = (ARGV.shift || 0.5).to_f
num.times do
Thread.start do
x, y = rand(maxx), rand(maxy)
while true
dx = ((rand * 4.0 - 2.0) * 2).to_i
dy = ((rand * 4.0 - 2.0) * 2).to_i
dx = 0 if x + dx < 0 || x + dx > maxx
dy = 0 if y + dy < 0 || y + dy > maxy
Gnome::CanvasLine.new(c.root,
:points => [[x,y],[x+dx, y+dy]],
:fill_color => 'black',
:width_pixels => 1)
x += dx
y += dy
sleep interval
end
end
end
Gtk::Window.new.add(c).show_all
Gtk.main
■ わざとそのままThreadを使ってみたけど大丈夫のようだな。環境によっては再描画されないかも。
■ [Ruby-GNOME2] Ruby/GTK TreeView Tutorial
by Matthew Berg。まだ読んでないんですが複雑なGtk::TreeViewウィジェットの解説というだけあって期待大です。
元ネタのGTK+版を忠実に書き直したものではなく、Ruby版での使いやすさ・簡単さが表現されていると良いなー。

ウィンドウを閉じたときに終了せずに止まってしまいました。> ke<br>Ctrl-C押したらSEGV。<br><br>#8 <signal handler called><br>#9 0x40343f12 in g_type_check_instance_is_a () from /usr/lib/libgobject-2.0.so.0<br>#10 0x40e1f990 in gnome_canvas_request_redraw () from /usr/lib/libgnomecanvas-2.so.0<br>#11 0x40e1839c in gnome_canvas_item_construct () from /usr/lib/libgnomecanvas-2.so.0<br>#12 0x40e183fd in gnome_canvas_item_construct () from /usr/lib/libgnomecanvas-2.so.0<br>#13 0x4032b11f in g_object_class_list_properties () from /usr/lib/libgobject-2.0.so.0<br>#14 0x400c85a4 in rbgobj_free (holder=0x84b9808)<br> at /home/nobu/src/ruby/gnome2/glib/src/rbgobject.c:137<br>#15 0x400352a0 in ruby_finalize_1 () at /home/nobu/src/ruby/1.8/eval.c:1343<br>#16 0x400353dd in ruby_cleanup (ex=1) at /home/nobu/src/ruby/1.8/eval.c:1380<br>#17 0x40035523 in ruby_stop (ex=6) at /home/nobu/src/ruby/1.8/eval.c:1411<br>#18 0x40035570 in ruby_run () at /home/nobu/src/ruby/1.8/eval.c:1423<br>#19 0x080486a1 in main (argc=2, argv=0xbfffedf4, envp=0xbfffee00)<br> at /home/nobu/src/ruby/1.8/main.c:50
書き忘れ。<br><br>(gdb) up 14<br>#14 0x400c85a4 in rbgobj_free (holder=0x84b9808)<br> at /home/nobu/src/ruby/gnome2/glib/src/rbgobject.c:137<br>137 g_object_unref(holder->gobj);<br>(gdb) p holder<br>$1 = (gobj_holder *) 0x84b9808<br>(gdb) p *holder<br>$2 = {self = 136005480, gobj = 0x1, cinfo = 0x8282af0, destroyed = 128}