2009-07-01から1ヶ月間の記事一覧

メモリ不足ではまった

WIN32OLE を使ってタイプライブラリからオブジェクトをもらうテストをしていた。オブジェクトをくれる関数には 8 個の引数があり、その組み合わせは全部で 7290 通り。 arg1 = [0, 1, 2] arg2 = [false, true, nil] ... arg1.product(arg2).product ... 引数…

xmp で Ruby 1.8 と 1.9 を切り替える

ある食事会で有名な Rubyist に質問された。 xmp を使うときに、Ruby 1.8 と 1.9 を切り替えられないか?その時は答えられなかったけど、こんな感じでどうだろうか? Ruby 1.8 と 1.9 がインストールされていること。 ruby と ruby19 普段使うのは ruby19 rcod…

Ruby のカプセル化は難しい

id:no6v さんに指摘されて気が付いた。 第 35 回 Ruby/Rails 勉強会@関西の宿題 Cook::Pan クラスはカプセル化できていない。asin:4894714515 にも、こう書いてあったのに。 オブジェクト内部のデータへの「ハンドル」を戻さないようにしようそんなつもりな…

第 35 回 Ruby/Rails 勉強会@関西の宿題

第 35 回 Ruby/Rails 勉強会@関西 の宿題。 クラスを定義してみよう 身のまわりのものをクラスとして定義してください。 まずは今日の例にあがっていたクラスを自分なりに実装して動かしてみてください。例がたい焼きだったので、みんなお好み焼きを作ってい…

protected メソッドって何?

Ruby/Rails 勉強会@関西 の初級者向けレッスンで、public メソッドと private メソッドが紹介されて「protected は使うべきでない」とだけ紹介された。グループワーク中に質問されたけど、時間がなくて答えられなかったのでメモ。 public レシーバを指定して…

タイプライブラリから配列を受け取る方法

WIN32OLE を使ってタイプライブラリから配列を受け取りたい。配列を retval で返してくれる関数なら、Ruby からそのまま Enumerable として扱える。 ole_object.func(arg1, arg2).each do |value| # func が返した配列を順番に処理 end ところが、関数に渡さ…

るりまを使おう

RubyKaigi2009 で「るりまを gem でインストールできたら便利じゃね?」という意見が出ていたけど、るりまのインストールってそんなに面倒か? スナップショットのダウンロード ここから http://www.ruby-lang.org/ja/man/archive/ こんなファイル名 ruby-refm…

WIN32OLE で使える VARIANT_NAME

常識的なタイプライブラリを使っていると必要ないが、設計のよろしくないタイプライブラリを使うと引数の型をいちいち指定してやらないと関数を呼べないことがある。optional な引数を飛ばして次の引数を指定する場合など。 require 'win32ole' include WIN3…

オブジェクトの順序

自作クラスのオブジェクトを Array に詰めて sort してみる。 class OreOre def initialize(val) @value = val end attr_accessor :value def inspect; "o:#{@value}" end end ary = 5.downto(1).inject([]){|a, i| a << OreOre.new(i)} # => [o:5, o:4, o:3…

anything から refe.el を使う

Emacs から「るりま」を引くときは anything を使うのが普通らしい。 Ruby リファレンスマニュアル (通称るりま) と ReFe2 をインストール・Emacs で参照する・anything.el との連携 - (rubikitch loves (Emacs Ruby CUI)) anything から refe.el を使えるよ…

STL の iterator って静的型のダックタイピングなの?

C++

iterator ってポインタのように使えるだけかと思ったら、ポインタを iterator のように使うこともできるのか。STL の sort とか find って、何であんな まどろっこしい引数なのかと思ったら、そういうことですか。 #include <iostream> #include <vector> #include <set> #include <algorithm> </algorithm></set></vector></iostream>…

文字コードと文字の変換

mixi の Ruby コミュと ruby-list ML で同じような話題があったのでメモ。C 言語脳でプログラミングすると、文字を数値として扱いたくなる場面がある。Ruby 1.8 の頃は、文字列はバイトストリームだったので、C 言語っぽいコードが書けた。 RUBY_VERSION # =…