Ruby
RubyKaigi2009 で「るりまを gem でインストールできたら便利じゃね?」という意見が出ていたけど、るりまのインストールってそんなに面倒か? スナップショットのダウンロード ここから http://www.ruby-lang.org/ja/man/archive/ こんなファイル名 ruby-refm…
常識的なタイプライブラリを使っていると必要ないが、設計のよろしくないタイプライブラリを使うと引数の型をいちいち指定してやらないと関数を呼べないことがある。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…
Emacs から「るりま」を引くときは anything を使うのが普通らしい。 Ruby リファレンスマニュアル (通称るりま) と ReFe2 をインストール・Emacs で参照する・anything.el との連携 - (rubikitch loves (Emacs Ruby CUI)) anything から refe.el を使えるよ…
mixi の Ruby コミュと ruby-list ML で同じような話題があったのでメモ。C 言語脳でプログラミングすると、文字を数値として扱いたくなる場面がある。Ruby 1.8 の頃は、文字列はバイトストリームだったので、C 言語っぽいコードが書けた。 RUBY_VERSION # =…
Microsoft Visual Studio から irb を起動したい。「プロジェクト」-「プロパティ」-「構成プロパティ」-「デバッグ」で設定する。 コマンド d:\Cygwin\usr\local\bin\ruby19.exe コマンド引数 -rwin32ole /usr/local/bin/irb19 Ruby は Cygwin 版 野良ビル…
内容は「Win32OLE ことはじめ」から、そのままパクッただけなんだけど。 class WIN32OLE_METHOD def help "#{name}(#{__help_params__.join(', ')}) As #{return_type}" end private def __help_params__ params.map do |p| "#{'[in]' if p.input?}"\ "#{'[o…
WIN32OLE を使って Excel のファイルを開いているときに、うっかり irb を終了すると Excel のプロセスが残ってしまう。そこで、このおまじない。 $ irb -rwin32ole irb(main):001:0> excel = WIN32OLE.new 'Excel.Application' => #<WIN32OLE:0x1014ecd0> irb(main):002:0> at_ex</win32ole:0x1014ecd0>…
演習問題のつづき。 バイナリサーチを再帰で実装してください。 class Array def bsearch(o, n = 0) return nil if empty? i = size/2 if self[i] == o i+n elsif self[i] > o self[0,i].bsearch(o, n) else self[i+1,i].bsearch(o, n+i+1) end end end a = …
演習問題 のつづき フィボナッチ数を計算するプログラムをループ版と再帰版の両方を書いてください。 再帰版 def fibonacci(n) case n when 0 0 when 1..2 1 else fibonacci(n-2)+fibonacci(n-1) end end (0..8).each do |i| fibonacci i # => 0, 1, 1, 2, 3…
第34回 Ruby/Rails 勉強会 の宿題。 疎な配列と同じデータを表現するハッシュを比較する。 以下のようにアクセスできるデータを作成して比較する。 a[0] # => 0 a[10] # => 10 a[90] # => 90 each すれば違いが分かる。 def dump(e) print e.class e.each{|i…
Ruby は暗黙の型変換をしてくれない気の利かない言語だと言われるが、なかなかどうして結構型変換してくれる。例えばこんな感じ。 "%d" % "0xff" # => "255" # 16進数を 10進数に変換して再文字列化 "%s" % 0 # => "0" # C 言語なら SEGV もの 試しにオレオ…
ややこしいのでメモ。 equal? ふたつの式が指すオブジェクトが同一か? == ふたつのオブジェクトの値が等しいか? eql? ハッシュキーが等しいかどうかチェックするために Hash クラスが使う。 === case 文の when で使われる。 =~ 正規表現のマッチ。 equal? a…
週末の第 34 回 Ruby/Rails 勉強会でこんな演習問題が出るんじゃないかと予想。Ruby 関西の ML で発言すると、またネタを潰してしまう可能性があるので、誰も見ていないであろう ここで ひっそりとやってみる。 適当にやると、こんな感じ。 class String def…
第33回 Ruby/Rails 勉強会 - 演習 2 - 修正 --- cat.rb 2009-05-11 18:28:58.552712500 +0900 +++ /cygdrive/g/cat.rb 2009-05-11 18:34:02.000000000 +0900 @@ -1,10 +1,7 @@ -#! /usr/local/bin/ruby19 +#! /usr/local/bin/ruby19 -EASCII-8BIT require 'o…
第33回 Ruby/Rails 勉強会 - 演習 2 no6v さんに指摘されたので修正。 --- cat.rb.org 2009-05-06 20:11:03.000000000 +0900 +++ cat.rb 2009-05-06 20:46:31.000000000 +0900 @@ -65,6 +65,7 @@ def squeeze_blank!(buf) buf.gsub!(/(\r?\n)\1+/, '\1\1') +…
第33回 Ruby/Rails 勉強会 演習 2 cat コマンドを実装してください。 see also cat(1) Mac は BSD cat なので、オプションはこれだけ。 でも usage の表示だけ GNU cat からパクってきた。#! /usr/local/bin/ruby19 require 'optparse' Encoding.default_int…
また O'Reilly から T シャツが届いた。るびま 0025 号 の読者プレゼント。うれしい。
第33回 Ruby/Rails 勉強会 宿題の添削はしてくれるんだろうか? 演習 1 CSV ファイルを分割します。分割数 n を指定できます。 読み込むファイル名を指定できます。 出力先ディレクトリを指定できます。 出力ファイル名のプレフィクスを指定できます。 なんだ…
久々の Ruby 勉強会。 今回は女子大生の参加も多かった。 今更はじめる Cucumber by Sixeight さん plain text でテストが書ける。 これはすごい。次回以降、実践編にも期待だ。 Ruby ではじめるハードウェア制御のアレコレ by keisuken さん パーツ購入方法…
refe.el とは Emacs から ReFe を使うためのインターフェイス。最新版は …… たぶん公式に配布してるとこはない。*1手元にあった最新版と思しき refe.el を動かしてみると、候補の補完ができない。本来なら複数のクラスに存在するメソッドを引くと、クラスの…
ReFe とは、Ruby の日本語リファレンスマニュアルを引くためのツール。昔は refe というコマンドがあったけど、現在はるりまの bitclust に取って代られた。詳しくは るりま Wiki を参照。 ところで refe コマンドは、どうなってるのが普通なんだろうか? コ…
普段使わないので、すぐ忘れる。リテラルを % 表記すると、任意の文字をリテラルの区切り文字に使える。 % 表記 式展開 例 ふつうのリテラル %q 不可 %q|foo| 'foo' %Q 可 %Q(foo) "foo" % 可 %[foo] "foo" %x 可 %x<echo foo> `echo foo` %w 不可 %w{foo bar} ['foo',</echo>…
最近 rcodetools に文句ばかり言ってて申し訳ないけど、やっぱり rct-complete-symbol が動いてないっぽい。マルチバイト文字を含む行で rct-complete-symbol すると、 # -*- coding: utf-8; -*- "こんにちは".enc # これは補完できる エンコーディングが ut…
anything とは はてなキーワードの anything を参照。 anything-rcodetools とは anything を使って Ruby スクリプトの入力を補完するもの。例えば [].len を補完して [].length にしてくれる。 必要なもの anything.el anything-rcodetools.el FastRI るり…
rct-complete とは Ruby コードの編集中にメソッド名などを補完してくれる機能。 rcodetools に含まれる。Emacs で以下のコードを書いて、 "hello".enc M-TAB すると、 "hello".encod メソッド名の途中まで補完される。もう一度 M-TAB すると、メソッドの候…
「プログラミング言語 Ruby」を読んでいます。今まで、このての本は html でメモをとりながら読んでいた。そうすれば後で検索できてお得。その代わり、気になるところを確認しながらなので、やたら読むのが遅くなる。この読み方だと疲れるので、メモは止めて…
elisp のコードも、Ruby のスクリプトも最新版にして、直ったと思ってたけど、直ってなかった。(;_;) cp932 でないと xmp が動かない 以下のコードは xmp できる。 # -*- coding: utf-8; -*- RUBY_VERSION # => "1.9.1" s = "\u20ac" s.encoding # => #<Encoding:UTF-8> 以下</encoding:utf-8>…
久しぶりに Ruby/Rails 勉強会@関西が開催されます。現在、発表者募集中。第33回 Ruby/Rails勉強会@関西のお題を募集します。日時: 2009 年 4 月 25 日 (土) 13:00〜17:00 場所: 京都女子大学 http://jp.rubyist.net/?KansaiWorkshop33募集締切りは 4 月 11 …
最近 rcodetools の設定で、いつも rubikichi さんに助けて頂いている。 本当にありがとうございます。前回やっとのことで xmpfilter が動いたのだが、今度は rct-complete-symbol による補完ができないことに気がついた。以下のコードで M-TAB すると、補完…