Ruby
今年も個人スポンサーになりました。ロゴもできたようなので、右へ貼りつけてみました。 当日を楽しみにしております。行けるかどうか微妙な感じだけど。 ていうか来年どうしたいか、我々自身がかんがえないといけないんだろうなあ。今年は小学校のサマーキ…
20,000JPYという、お小遣いのサイズから見ても決して小さくはない金額に少し迷ったのだけど、RubyKaigi2010の個人スポンサーになった。 仕事で、プライベートで、いろいろと人生の幅を広げてくれたRubyに、でもこれまで何もしてあげられなかったので、せめて…
hsbtさんの発表と、Lightning Talkの最初のほうと、角谷さんの発表をリアルタイムで視聴した。LTは全部聴くつもりだったけどヤボ用で席を外して戻ってきたら終わってた。動くドラ娘ことid:objectclubをあまり見られなかったのが残念。 べ、別に初音ミクのコ…
特にJava方面の人に教えるときに気をつけるべきこと。今日実際に教えてみて少し分かったような気がするので。 オブジェクト指向の実装の仕方の違い publicとprivateの区分がJavaとはかなり違うということ 代入が実は代入ではないということ 2番目は「まるご…
影舞を入れる過程でRuby-DBIのパッケージを作った。しかしSQLiteに対応させるにはSQLite3/Rubyが必要そうなので、そっちを先に作らないと、putできないな。時間とやる気をどうやって確保するか悩みどころ。
スクリプト。 class Hoge def initialize @foo = "ruby" end def method_missing return self.instance_variable_get("@#{name.to_s}") end end hoge = Hoge.new p hoge.foo p hoge.methods.include?("foo") 実行結果。 "ruby" falseまあ当たり前だが、その…
そろそろ議論も落ち着いたのかruby-devへ移ったのか知らないが、ruby-listでは大体収束したみたいなので。 Hashへの生成順は保障されないのか?から始まる長い、長ーいスレッドで、1.9のHashは登録順が保存されるようになってしまった。 まあ喜ぶ人がいて、…
Rubyでは、returnが書かれていないとき最後に実行した文の値が戻り値になります。 def method "hello" if false end p method #=> nil 上で、表示されるのがfalseではなくnilなのは、ifの条件式が成り立っていないときのif文の値はnilだから、と理解しました…
または、String#to_iを使って整数に直します。 [ "314", "159", "265", "358" ].each do |s| puts s.to_i + 1 end というか、整数として処理したければ、オブジェクトがto_iという振る舞いを持っていることを期待してなんでもとにかくto_iしてしまうのがDuck…
1.upto(100){|i|s=((i%3==0)?"Fizz":"")+((i%5==0)?"Buzz":"");p((s=="")?i:s)} スペースがないのが自慢(をい 追記 ネタ元ははてなブックマーク - どうしてプログラマに・・・プログラムが書けないのか?を参照。 ところで、シンタックスハイライトが追いつ…
Test::Unitのassert_raiseメソッドを使おうとして落とし穴ににハマった。というか以前もハマったのだがまた同じ穴にorz…というわけでメモ。 assert_raiseにはブロックを与える。例: require "test/unit" require "class/hoge" def TestHoge < Test::Unit::T…
以下のようなコード*1を書いてDRY原則万歳とか思っていたのだが、 require 'logger' class Hogelog def initialize(file) @log = Logger.new(file) @log.level = Logger::INFO end def method_missing(name, message, error = RuntimeError) @log.send(name,…
今作っている数独解法ツールでは、入力ファイルの形式に出力するメソッドを用意して、それをTempfileに吐き出して、入力ファイルとして読み込む、という野蛮な方法でcloneしている。 > Smalltalk-80 には deepCopy メソッドがあるんですが、あれにはあれで >…
一晩考えたが結局、超難問を解くロジックは見つからなかったので、別のアプローチ。 総当りメソッド(w ボードスイープとエリアスイープを繰り返して、変化がなくなった時点で、空マスに入る候補の数字はかなり絞り込まれている。中には2つの数字のうちどち…
数独というパズルがあって、どんなものか説明するのは大変めんどくさいのでググってほしいのだが、そのパズルを解くツールをRubyで作ってみた。たぶんどこかに転がっているとおもうのだが、探すのが面倒なのと頭の体操代わりに自分で作ってみたくなったのだ…
今までブロックローカルにすることを意図していたコードは、Ruby 2.0では全部書き直しってことですね。ちょっとそこだけ面倒かなあ。機械的には書き換えられそうにないし。 通常の代入によって作られるローカル変数は(class,module,defが作る)スコープローカ…
影舞をhogeっていてうまく動かないのでなぜかと思ったら、Ruby 1.8.5からは、セーフモード1では汚染されたStringインスタンスに対してString#internするとSecurityErrorになるのだそうだ。Hashのキーを入力から取ってinternしようとしてSecurityError。 しか…
Rubyレシピブック(P290)で 比較する数値の差を Float::EPSILON と比較する方法がありますが、記事の例(比較する数値が1.0)はTrueとなってうまくいきますが、それ以外の数値ではFalseでうまくいきません。 比較したい数で割るのを忘れているとか: $ ruby -e '…
Rubyで簡単な計算プログラムを書きながら、DRY原則って大事だな、と思った。コードを書いて動かしてみながらいろいろ拡張していくときにも、DRY原則をなるべく守れるように考えて書いていくほうが、拡張性が圧倒的に高くなることを実感した。