2013-01-01から1年間の記事一覧
タイトル通りの話です。 次のようにすればできますが、効率は悪いような気がします。 engine = Slim::Engine.new eval engine.call('a href="http://www.google.com" Google') #=> <a href="http://www.google.com">Google</a>
少々炎上しそうな表題ですが、色々と調べたので覚書。まず、前提条件として、CRubyはGIL(Global Interpreter Lock)という仕組みがあります。 細かい説明は グローバルインタプリタロック - Wikipedia を参照いただくとして、Rubyインタプリタは必ずGILを取得…
C#は.net framework 3.5より、LINQ用のEnumerableメソッドが追加されています。Select,Where,OrderByなどです。 これらのメソッドは、LINQでの使用はもちろん、ラムダ式を渡して、利用することができます。これは、Rubyのmapやfilterに当たるものになります…
Rubyのeach_with_indexって便利ですよね。 C#には、each=ForEach、map=Select、select=WhereとRubyのEnumeratorのメソッドに相当するものが有りますが、私の大好きなeach_with_index相当がありません。 ということで、拡張メソッドを使ってサクッとモンキー…
ActiveRecordでレコードを取得する場合、以下の様なコードを書いたとする。 Article.where(cond).map{|record| #condは検索条件 record.attributes.each{|name,value| #hoge } } この処理はレコード数が多い場合に非常に遅い。その理由は、record.attributes…
皆さんご存知の通り、RubyはnilはNilClassのオブジェクトである。 NilClass.instance_methods(false).sortとしてみると、結構な関数が定義されている。 => [:&, :^, :inspect, :nil?, :rationalize, :to_a, :to_c, :to_f, :to_h, :to_i, :to_r, :to_s, :|] #…
ActiveRecordでor検索をしようと思うと、意外と簡単にはできない。 Table.where(id: 1).or(id: 2) とかでできそうなものだができない。 真面目にやるには、Arelを使ってやるのが一番のようだ。 http://techracho.bpsinc.jp/tsunekawa/2013_05_24/8502 非常に…
表題どおり。 arr = [nil,"hoge","fuga"]という配列があり、nilではない最初の要素を取得したい場合、私は以下のようにしていた。 arr.compact.first #=>"hoge" コードゴルフ的に言えば18byteなので、あまりいただけない。(firstではなく、[0]でアクセスする…
処理対象がEnumerableな要素かそうでないかわからない時ってよくありますよね。 ActiveRecordなんかもそうですが、1要素の時は単体のオブジェクトがきて、複数要素の時はEnumerableが来るapiってわりとあります。(scanとかもそう。) で、tapを使えばそれを…
ActiveRecordではjoinsメソッドを利用して、inner joinすることができる。 例: Blog.joins(:article) #=> SELECT "blogs".* FROM "blogs" INNER JOIN "articles" ON "articles"."blog_id" = "blogs"."id" ここで、問題になるのは"blogs".*である。articles…
リファクタリングRubyエディションを読んでいたら、def_eachというイカしたメソッドがあった。まとめて、似たようなメソッド定義をするものだ。 ここで、まとめて似たようなクラス定義をする関数もあったらいいなと思ったので作ってみた。役立つか微妙だが*…
JRuby製テキストエディタRedcarというのがある。 https://github.com/redcar/redcar 便利なのだが、個人的に以下の不満があった。 (1) Ruby1.8系でしか動かない。Evalする時にRuby1.9系のHashの構文とか使えない (2) 日本語ファイル名がNG。日本語ファイル(U…
手抜きプログラムシリーズ。 Excel VBAが吐き出したコードをRubyのWin32ole対応のコードに変換するスクリプトを作成した。やっぱ、ExcelやるならRubyでしょ的な。 https://www.dropbox.com/s/jw51apxtrgjle3k/vba2ruby.rb 基本的な文法(SubとかWithとかForと…
http://www.enterprisedb.com/products-services-training/pgdevdownload に行く。 Linuxの場合、Linux版のをダウンロードする。 chmod 755 postgresql-9.3.0-rc1-linux.run で権限を付けて、 ./ postgresql-9.3.0-rc1-linux.run すれば、Windowsのインスト…