Ruby

ネストする正規表現

『メールアドレスはネストしたコメントを持つことができるので正規表現で表わすのは不可能である』 というのは本当だろうか。 正規表現のネストが可能かというのは、実際のところは正規表現の定義と実装による。 PerlやRubyだと、これは可能だ。 試しに『f(g…

eRubyとYAMLで簡単テンプレートシステム

『サーバごとにちょっと変えるだけ』、『似たような記述の繰り返し』、というようなコンフィグを作る時はできるだけテンプレート化するようにしてます。 ツールとしては使ってるのはeRubyとYAML、どちらもRubyいれればパーサがついてくるはず。 差分のある部…

Rubyの[]=演算子オーバーロード

Stringの部分文字列を返す[,]演算子は式の左辺におけます。 s = "abcde" s[1,3] = "XXX" puts s # => "aXXXe" これってなんか違和感ありますよね。s[1,3]は何を返してるんだろうと。 こういった書式、s[1,3]が返すオブジェクトに"XXX"を代入する、という感覚…

Rubyで電話番号データを整形

書いてみました。 http://code.nanigac.com/source/view/733 不正値渡されるとエラー終了してしまいますが、とりあえずデバッグより睡眠を優先。 def tel_format(str) ptns = [ /^(1\d\d)$/, /^(0\d\d0)(\d{3})(\d+)$/, /^(0\d0)(\d+)(\d{4})$/, /^(\d{4})(\…

irbでタブ補完

irb/completionを読み込んでやると、irbでシェルライクなタブ補完が使用できます。 irb(main):002:0> "hello".to .to_a .to_i .to_str .toeuc .tosjis .toutf8 .to_f .to_s .to_sym .tojis .toutf16 ライブラリの読込みは毎回指定してもいいですが、 $ irb -…

わからない

Ruby s = "abcde" s["bcd"] = "123" p s # => "a123e" p s["123"].class # => String s["bcd"] = "123"ってどう解釈すれば??? Rubyって左辺値返す演算子書けるんだっけ・・・ (そういえば昔、演算子のオーバーロードのないJavaでどうして"hello" + "worl…

Rubyでキーの配列と値の配列からハッシュを作る

こういう2つの配列から keys = %w(k1 k2 k3) vals = %w(v1 v2 v3) こういうハッシュを作るようなときです。 {"k1"=>"v1", "k2"=>"v2", "k3"=>"v3"} よく使われているのは1次元配列に展開してHash[]やHash.new()に渡す方法です。 a1 = keys.zip(vals) ## [key…

Perlのハッシュキーは文字列、Rubyはオブジェクト

Perlのハッシュキーは文字列として保持されます。 リファレンスをキーにしてもそこからデリファレンスはできないことがわかります。 $ref = \"abc"; $hash{$ref} = 123; $key = (keys %hash)[0]; print "$ref is the reference of '$$ref'\n"; print "$key i…

n以下の素数のリストを作る

http://code.nanigac.com/source/view/709 def primeList num return [] if num < 2 arr = (2..num).to_a primes = [] begin primes << (p = arr.shift) arr.reject!{|i| i%p == 0} end while p**2 < arr.last primes + arr end puts primeList(100) ほんと…

配列シャッフル

まずRubyで。 $ ruby -e 'puts (1..10).sort_by{rand}.join("\n")' 4 10 2 8 9 3 5 6 1 7 sort_by()かっこいいなー。 やっぱRubyちゃんと勉強しよう。時間ができ次第・・・ Perlにはこういうのないから明示的に乱数くっつけてやらないと。 こんな感じかな。 …

Rubyは遅い

実際遅いみたいですね。 http://www.atmarkit.co.jp/news/200809/11/ruby.html理由としてあがってるのはこんなとこ。 コンパイル時に型が決まらないことから最適化が効きづらいこと。 動的言語の難しいところですね。 関数がなく、すべてメソッドであること…

月間524万人が利用する食のインフラ、「クックパッド」のものづくり

というセミナーに行ってきた。 http://www.web-career.com/seminar/rails_2008_1120.html 「毎日の料理を楽しみにすることで、心からの笑顔を増やす。それだけしかやりません。」 「やりたいこと、できること(世界一になれること)、儲かること。その全てが…