Ruby

範囲

ごそごそやってたらこんなことになるのを見つけた。 p [*"1".."10"] # ["1","2","3","4","5","6","7","8","9","10"] p [*"*1".."10"] # ["*1","*2","*3","*4","*5","*6","*7","*8","*9"] p [*"1*".."10"] # ["1*","2*","3*","4*","5*","6*","7*","8*","9*"] …

ワンライナー

http://shinh.skr.jp/m/?date=20070831#p05 http://jarp.does.notwork.org/diary/200708c.html#200708311 とか。ありがとうございます。$.なんて知りませんでした。てか、たくさんあるから覚えきれない。必要に迫られて一つ一つというのが確実なんだろうなぁ…

BEGIN

ワンライナーがちょっとマイブームなので、今更ながらiオプションとか知って便利さに感動したりしている。 rubyのコマンドラインで wc -l 相当のことをやろうとして ruby -ne 'BEGIN{i=0}; i+=1; END{puts i}'と書いたらエラーになった。リファレンスを読む…

RejectKaigi

Rejectされた方々、飛び入りの方々のセッション。同時開催 RubyKaigi2007撤収。 印象に残ったのを。 A Jail development with Rails 2nd edition 熟練の話芸。空前の脆弱性指摘ブーム。RubyOnJails。堅牢なWebアプリケーション。 MathMLライブラリのご紹介 t…

rubykaigi2007 2日目

行ってきた。 仕事で使うRuby 全力投入できないけどやらなきゃいけないっていうのはよくある。ワンライナーでやっつけられればかなり楽になる。ワンライナー力を上げたい。 JRuby on Rails どちらも縁がないのであまりよくわからない。 エンタープライズRuby…

rubykaigi2007 1日目

行ってきた。 安定版rubyとその今後 1.8.5ってなんで独立してるんだろう? あと、質問で出たモチベーションの部分は印象に残った。 リファレンスマニュアル メソッドの検索にrubyインタプリタを使ったらどうだろうとふと思った。 JRuby Sunが雇うってことは…

def s res = nil loop do if res print "s:> " res = gets.chomp end puts " "*30+(res ? "> #{res}" : "> start") req = yield res res = '' break if req == 'bye' end end s{|res| print "c:> " req = gets.chomp puts "#{req} <".rjust(60) req }

ruby-profとdiff

この2つのライブラリを試したってだけで。 ruby-profは、ライブラリ名がunprofになってる。プロファイルとらないんじゃないかと思ったが、どうもこれでいいらしい。 実行は、 ruby -runprof yours.rb とすればいい。ちょうど、runprofが完成する。こんなとこ…

exerb

exerbのメモ。いつもこんな感じにしている。 foo.rb require 'pp' # for exerb make exit if $LOADED_FEATURES.include?("exerb/mkexy.rb") pp "foo" Makefile all: foo.exe foo.exe: foo.exy @exerb foo.exy -o foo.exe @strip foo.exe foo.exy: foo.rb @ex…

切り上げ

自然数をキリの良い所まで切り上げるのを書いた。 n = 874591 (("%e"%n).sub(/\.\d+/,"").to_f+("1"+$').to_f).to_i # => 900000 文字列経由しちゃダメだろう。

良いかき方がわからない

整数の配列がある。 順番にアクセスしていって、データが3の倍数なら新しいランダムな整数で更新する。 またそのときは、次のデータをデクリメントして読み飛ばす。 例 [3,2,5,9,7,1,3,9,4,2,1,5,7,1,0,5,5]が、 [7,1,5,5,6,1,7,8,4,2,1,5,7,1,8,4,5] C++と…

for

ある処理をうまく書こうと調べてるときに見つけた。 for i in for j in (0..2) puts "foo" end puts "bar" end どう役に立つかはよくわからない。

Unlambda

シンタックスハイライトが出来るようになったということで。 require 'stringio' class Unlambda def initialize(src = '', option = {}) @src = StringIO.new(src) @option = { :input => $stdin, :verbose => true, :debug => :false }.merge!(option) @io…

フリップフロップ

正規表現の範囲を条件式にしたとき…、というのを見て、フリップフロップをまたやろうかと思ったけど、やってる人がいっぱいいるみたいなのでやめた。後で読む。

動的クラス生成

動的というか、構文要らずというか。 例外処理は構文使ってるけど。 classid = 1234567 eval("MyEx#{classid} = Class.new(Exception)").class_eval{ define_method(:initialize){|obj| @obj = obj } define_method(:obj){ @obj } } hash = {:a=>"A", :b=>"B…

method_missing magic

method_missing magic - emulating Groovy's "it" in Ruby。 people.select { |x| x.name.length > 10 }を people.select(&its.name.length > 10)と書けるよ、という話。すごい。 ブロックパラメータが冗長だなと感じることはたまにあるので、いいなと。 a =…

不動点演算子

昨日のYコンビネータを考えてるときに気がついたことをメモ。 準備として、不動点演算子とは、任意の関数fに対して Y(f) == f(Y(f))を満たすYのこと*1。 *1:たぶん

Yコンビネータ

id:sshiさんにブクマで「これってYコンビネータ?」とコメントを頂いたので、考えてみました。 とりあえず、 カリー化されてない 美しくない という理由で、Yコンビネータではないみたいです。 で、Yコンビネータに持っていけるかやってみました。 ほとんど…

===

p String === 'hoge' # true p 'hoge' === String # falseここに一回書いておけば覚えるだろう。 しかし、どうして非対称なんだろ。

無名再帰関数

再帰を無名のままやりたい。

Rails本

本屋に寄ったら、Rubyの本が無いのにRailsの本が並んでいた。 えらい時代になったもんだ。 思わず1冊買ってしまった。

継続

継続のことはよくわからないけど、Rubyにはあるみたい。 あまり解説してるところを見たことが無いので、後で探す。

キーワード引数

記憶があやふやだったのでメモ。 def f(x, y) p x # 1 p y # {:b => 7, :c => 9} p y[:b] # 7 p y[:c] # 9 end f(1, :b => 7, :c => 9)fのarityは2なことに注意。 しかし調べるのに手間取った。プログラミング言語 Ruby リファレンスマニュアルのハッシュの…

callすると自分自身を返すProcオブジェクト

ハマったので。出来たのも偶然。 やり方はこんな感じ。引数を1つ取るProcオブジェクトの場合。 f = Proc.new{ t = Proc.new{|x| t} }.callこれでこんな事になる。 f = Proc.new{ t = Proc.new{|x| t} }.call p f # <Proc:0x100f19c0@> 5.times do f = f.call(nil) p f # <Proc:0x100f19c0@> end f</proc:0x100f19c0@></proc:0x100f19c0@>…

Array#values_atがいい

2次元配列の並び替えをするのにぴったりはまった。3行で済む。 でも元のモデリングのまずさをカバーするためだからなぁ。 このメソッドを使わなきゃいけない状況って、そんなのばっかりだろうか。 メソッド自体は文句なくいいんだけど。

フリップフロップ

ウサギ本に、条件式の中の範囲式はフリップフロップのように動作するとある。 でも、サンプルどおりにやってもかいてあるような結果にならない。 仕様が変わったのか、CygwinのRubyではダメなのか。残念。

正規表現

難しい。色々拡張があるみたいだけど。 Perlの情報が多いけど、Rubyでも同じことができるのだろうか。

ファイル名

リダイレクトしているファイル名をスクリプト内から得られないかと質問されたが、分からなかった。 ファイルオブジェクトからファイル名を得る方法も分からない。 無理なのかな。

win32ole でリモートパワーポイント

http://d.hatena.ne.jp/fuji-jr/20060617/p1より。リファクタリングしてみた。自信の無いところはいっぱいあるけど、とりあえずクラスを作ってみた。

Ruby で仕事

仕事で、久しぶりに Ruby で書いた。 ロジック自体が結構ややこし目で悪戦苦闘しながら、結局 5 行で書けたり。 その 5 行を見直すと、頭の中にあったロジックを頭の中にあったときより明確に表現できてる。 いや、そのまま表現されてるわけじゃなく、ちょっ…