自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。
Ruby言語やLinuxのネタが多いです。
June 17, 2003 [おもひで]
■ [Ruby-GNOME2] Sokoban
あまりの反響の無さに寂しかったのでruby-list/talkでアナウンスしてみた(^^;)。
■ [Ruby] ProcとBlock
うーむ、ややこしい(T_T)
* Proc.newおよびブロック引数で与えられるProcは、引数チェッ
クがゆるい。breakやnextが例外になる
* lambdaおよびprocが返すProcは、引数チェックが厳しい。
breakやnextは実行の中断
という説明にしましょう。
|・今まで、rb_f_lambda() だったものは代わりに rb_block_proc() を使うべき?
はい。
結局のトコロ、Ruby-GNOME2的にはrb_f_lambda()はrb_block_proc()に変えるべきなのかしらん。ちと量が多くて大変だの(T_T)。
■ [Ruby-GNOME2] ライセンス診断
RWikiのRuby/Tk版, nyasuさんのvruby版。せっかくなのでRuby/GTK2版を作ってみよう。
#!/usr/bin/env ruby
require "gtk2"
QTITLE = "フリーソフトウェアライセンス診断"
GONEXT = nil
Gtk.init
class Question < Gtk::MessageDialog
def initialize(question, yes, no)
super(nil, MODAL, QUESTION, BUTTONS_YES_NO, question)
set_title(QTITLE)
@yes, @no = yes, no
end
def run
(super == RESPONSE_YES) ? @yes : @no
end
end
QUESTIONS = [
Question.new(
"あなたのコードを商用ソフトウェアに組み込まれて販売されてもかまわないか?",
GONEXT, "GPL"),
Question.new(
"あなたはストールマンのフリーソフトウェア運動に心から賛同しているか?",
"GPL", GONEXT),
Question.new(
"あなたはそのソフトウェアを将来Rubyの一部として配布したいか?",
"Rubyライセンス","BSDライセンスまたはMITライセンス" ),
]
QUESTIONS.each do |q|
if (lic = q.run)
dialog = Gtk::MessageDialog.new(nil, Gtk::Dialog::MODAL,
Gtk::MessageDialog::INFO,
Gtk::MessageDialog::BUTTONS_OK,
lic + " がおすすめ")
dialog.set_title(QTITLE + "結果").run
exit
end
end
■ QuestionクラスをGtk::MessageDialogのサブクラスにしてみた。
■ そうそう、Ruby/GTK2では文字列をUTF-8にしないといけないので、上記を保存した後、UTF-8に変換してから実行する必要があるのがちと面倒かな。
以下は上記のコードをjudge.rbとして保存した時の例。iconvを使ってる。
iconv -f euc-jp -t utf-8 judge.rb |ruby -

そうそう.UTF-8にしないとダメなんですよねぇ.
実はこないだそれが分からなくて10分くらい思考錯誤してました…
結局,Uconv使うことにしました.