大量のHashをRubyのselectメソッドから探すのとMongoDBから探すの、どっちが速いか

Pocket

普通に考えるとインメモリに大量のHashを保持した状態でRubyのselectメソッドを使った方が速い気もしつつ、「大量の」という条件付きだともしかしてMongoDBの方が速くなるのかしら?などと思って検証してみました。

Continue reading…

Rubyで大きな配列から特定の要素を抜き出すとき、普通のselect使うのとLazyのselect使うのどっちが速いの?

Pocket

多分Lazy使ったほうが速いんじゃないかと思ってベンチマークしてみました。

Continue reading…

インスタンスメソッドとクラスメソッドはどのようにして使い分けるべきか?(Rubyの場合)

Pocket

Rubyといったオブジェクト指向言語を学ぶと、メソッドの定義方法としてインスタンスメソッドとクラスメソッドという2通りの定義方法があることを学ぶと思います。しかし、言語自体のガイドブックには「定義方法にインスタンスメソッドとクラスメソッドがある」と書いてあるだけで、大抵その使い分けについては書かれていません。

そういう訳で、このエントリではその使い分けについて少し考えてみたいと思います。理論的に厳密な使い分けを目指すというよりは、そもそも使い分けの検討が全くつかない!という方に向けて、その指針の一助となることを目指します。

Continue reading…

勝手にRubyのオープンソースプロジェクトのソースをチェックする「REFACTORCOP」

Pocket

勝手にオープンソースプロジェクトのコードをRuboCopにかけてみよう、という粋な試み。

Continue reading…

Writing Fast Rubyというスライドが良い

Pocket

ちょっとしたコードの書き方でパフォーマンスが変わることがあります。リーダビリティを重視する向きからすれば小手先のテクニックに映るかも知れないのですが、リーダビリティを維持しながらちゃんとしたパフォーマンスを出すためにも、テクニックを知ることは大事なことだと思うのです。

Continue reading…

ruby2.2から使えるslice_afterが便利そうだなと思ったら、既にslice_beforeがあった件

Pocket

「要素をn個ごとに区切って配列にする」という処理ではEnumerable#each_sliceが便利ですが、これを「n個」とかではなく、パターンマッチで区切りたいなーと思うことがあると思います。で、Ruby 2.2.0-preview1 Releasedで「へー、Enumerable#slice_afterってのが追加されるんだ」とRuby2.2からやっとパターンマッチで区切れるようなメソッドが追加されるのかと思ったら、既にEnumerable#slice_beforeがあったよ、という話。

Continue reading…

Ruby使いだけどUNIXのことよくわからん、という人は「なるほどUNIXプロセス」を読むと良い

Pocket

Ruby使いだけど

  • ぶっちゃけUNIXのことよく分からないんだよね
  • プロセスとかシグナルとかパイプとか名前は知っているけど、雰囲気だけ分かるよ

という人で「いやー、もっとUNIXのことを知りたいのはやまやまなんだけどね」と思っている人は間違いなくRails使いだと思います。そしてこの本、なるほどUNIXプロセスはまさに、そういうRails使いの人向けに書かれた本です。先日読了したのでご紹介したいと思います。

Continue reading…

「つくって学ぶプログラミング言語 RubyによるScheme処理系の実装」がかなり良い

Pocket

達人出版会から出ているつくって学ぶプログラミング言語 RubyによるScheme処理系の実装のタイトルがかなり気になったので、読んでみました。

Continue reading…

dotenv gemのコードリーディング動画

Pocket

Ruby Weeklyでdotenv gemのコードリーディング動画が紹介されていて、それなりのレベルの人がコードリーディングしながらディスカッションしている動画というのは、それなりにコンテンツになるものだなーと感じたのでした。

Continue reading…

全件取得したら重すぎて死んでしまうようなAPIの返り値を絞り込んで取得したい(Lazy Enumratorの話)

Pocket

※ Ruby2.0以上の話です。

ときにActiveRecord::Relationが便利なのは、実際にto_aされるまでSQLが発行されないことですよね。SQLが発行されるまではいろいろな条件をインスタンス内に保持しておいてくれます。全件取得してインスタンス化してから絞り込む、なんてしていたら死んでしまいますからね。これ、無限に要素がある配列から特定条件の要素のみ10個取り出したい、というときでも似たようなことできませんかね?

Continue reading…