Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
目次 find_each とは素の find_eachorder付き find_eachlimit付き find_eachwhere付き find_eachまとめ参考Railsのfind_eachがどんな挙動をするか気になったので調べてみた。 find_each とはバッチ処理などにおいてActiveRecordで効率的に大量データを処理したいときに使うメソッド。大量データまるっと全部取ってきてメモリ展開して処理しちゃあアカンよねってことで、データを徐々に展開して処理したいときに使う。 Railsには find_each というメソッドが用意されています。通常の each メソッドを使用すると、全データをまとめてメモリに展開してから処理を開始します。そのため、十分にメモリに載るデータ量であれば何も問題ないですが、数百万、数千万というデータ量になってくるとメモリに載りきらずに溢れてしまって大
ThumbnailsDocument OutlineAttachmentsFind:PreviousNextHighlight allMatch casePresentation ModeOpenPrintDownloadCurrent ViewGo to First PageGo to Last PageRotate ClockwiseRotate CounterclockwiseEnable hand toolDocument Properties…Toggle SidebarFindPreviousNextPage: Presentation ModeOpenPrintDownloadCurrent ViewToolsZoom OutZoom In More Information Less Information Close Enter the password to open t
「Rubyのしくみ」を読んでいたら、「キーワード引数って遅いんじゃないか?」と思ったので調べてみました。 まずは結果から。 rubyの各バージョンで、キーワード引数がどのくらい遅いのかを調べてみました。 調査コードは以下です。 Makefile VERSIONS= \ 2.0.0-p0 \ 2.1.0 \ 2.2.0-preview1 \ 2.2.0-preview2 \ 2.2.0 \ 2.3.0 run: $(VERSIONS) $(VERSIONS): @rbenv global $@ @rbenv rehash @echo "" @echo "===============================================================" @ruby -v @echo "----------------------------------------
本記事はRubyについて書かれたものではありますが、Python、JavaScript、Javaなど、全ての言語コミュニティに当てはまる事実を述べたものです。依存関係が引き起こす負の連鎖は誰のためにもなりません。 上の図は、私がこれまでに使用した全てのRailsアプリの依存関係を可視化したものです。以下の例はいずれも、どこかで聞いたことのあるものではないでしょうか。 何百ものエントリを含むGemfile 本番環境で読み込まれるテスト用Gem 数百メガバイトもRAMを食うRailsのプロセス Rubygemsシステムは、それを再利用する誰もが容易にRubyのパッケージを作ることができるという点で、賞賛に値するものです。しかし、その便利さが意味するところは、そうしたGemと他のGemを非常に安易に結び付け、さらにそれが、「インターネットでダウンロード」され、数百もの依存関係を持つRailsアプ
こんにちは。卜部です。 ruby-coreというRuby本体の開発の議論がされているメーリングリストがあります。 新機能やバグ報告などがだいたいここに集約されてくるので購読しておくとRubyの動きが分かります。 最近興味深かったトピックを紹介します。 [#12039] Fixnum#infinite?/Bignum#infinite or Numeric#infinte, consistent with Float#infinite? and BigDecimal#infinite? Float と BigDecimal には #infinite? メソッドがあるのに Fixnum と Bignum には存在しないので困る/欲しい、という提案です。これはあると便利ですね。 [#12040][Win32] File.stat fails on a mounted volume Windows
最近、夜寝る前にRubyのベンチマークを眺めたり、仕事の障害時のログを眺めるっていう悪趣味極まりない習慣がついてしまった。まぁ、草木も眠る丑三つ時にこの世の真理を求めて何かを読みふけるって言うのは、この業界にいる人間なら誰しもがやることなんじゃ無いかと思う。それと同じで現場百遍とも言うとおり、何度もprofileやログを眺めれば何か気付くこともあるんじゃないかと思って読んでいる……というわけではなくて、ふと見たくなる衝動に従っているだけだけど。 さて、Rubyのprofileを取るときに便利なのがRubyKaigi 2015でこさきさんも紹介していたperf。あまりに便利なせいで、プライベートでLinuxを触る時間が何千倍にも増えたくらい。あの発表はもっぱらperf-topの紹介だったけど、perfの使い方とかを見ると他にも色々な機能があることがわかる。例えば、昨日話題になったひたすらbl
selenium と ruby を使ってブラウザ GUI 操作を自動化する。 selenium は、Web アプリケーションの自動テストのためのツール。 レグレッションテストによく使われているようだ。 selenium は、ブラウザ操作シナリオを事前に設定して、シナリオ通りに実行してくれる。 シナリオ設定といっても、Firefoxプラグインの Selenium IDE などを使うと操作を 記録してくれる機能があるのでそこまで大変ではない。 詳細は、Ruby アソシエーション – selenium の “1.2 テストの作成” あたりを参照してほしい selenium は、クロスブラウザのツールで、IE を使って IE限定みたいなサイトでも使える。 IE や Chrome で使うには各 Selenium WebDriver が必要となる。 テスト用と言いつつ、使い道はいろいろとある。 社内の
SQLをパースすることに迫られてPythonで自作していたが、rubyで書いたほうがより都合が良かったので書きなおしかーとなったところで見つけたいいもの。 ただし、READMEにどおりに使ってみても使えなかったのでメモ。 インストール このモジュールを使えばパースできる。 https://github.com/cryodex/sql-parser gemでのインストールは以下のようにする。 irb(main):001:0> require 'sql-parser' irb(main):002:0> parser = SQLParser::Parser.new irb(main):003:0> ast = parser.scan_str('SELECT * FROM users WHERE id = 1') irb(main):004:0> ast.select_list.to_sql No
このtipsは2.1時点のモノです。今後改訂された場合、この内容が参考にならない可能性があります。 なんで書いたの? 先日、Ruby技術者認定試験ver2.1 Silver試験を受け、82点で合格しました。 他言語プログラマがRuby技術者認定試験を受ける上で勉強方法やコツなどを書いていけば 俺もRubyをやってみようかな・・と思う他言語プログラマが増える!Rubyがますます活発になる!万歳! なんて理由です。 参考にさせていただいたもの Ruby技術者認定試験Silver version 2.1 必勝合格法 Ruby Association Certified Ruby Programmer Gold version 2.1合格体験記 初心者でもほぼ無料で楽しくRubyを学べるコンテンツ12選 自分のプログラミング経験について 経験言語はC/C++がメインで他にC#,VB.netを少々
昨日ですが、いつもお世話になってるCo-Edoで第1回クローラー開発勉強会を行いました。 クローラー開発というニッチなテーマのものをなぜ開催しようと思ったのかというと モバイラーズオアシスの中の人であるもぎゃさんから、モバイラーズオアシスで使っていたスクレイピングライブラリについてちょっと意見を聞かせて欲しいっていう話をメッセでもらった 実際にCo-Edoで会ってもぎゃさんと色々とクローラーの話をしてたら、互いにあるあるネタが結構満載で、きっと似たような経験ある人が他にもいるんじゃね?っていう感じになり、それなら何かイベントしましょう っていうのがきっかけでした。 発表資料など もぎゃさんの発表資料はこちら 昨日は時間の都合で技術的な深いところは触れなかったので、そちらについて深く知りたい方むけのスライドとして実践スクレイピングを紹介されてました 自分はこちら 昨日気づいたけどSlideS
チームで開発する際はコーディング規約を決めて行うことが多いと思います。 実際に書いたコードが規約に従っているかどうかを検査するため、筆者はRuboCopを使用しています。 コーディング規約そのものはWeb上に公開されているものを参考にして決めていますが、制限が厳しすぎる等の意見がチーム内であった場合は適宜規約を調整しています。 最近チーム内でABCSizeに基づく警告を出す閾値がもう少し高くても良いのではという意見が出たことをきっかけにいくつかのアプリケーションでの例を調べたので紹介します。 ABCSizeについて ABCSize(ABCMetrics)は次のように定義されます。(ABC Metricより) Assignment -- an explicit transfer of data into a variable, e.g. = = /= %= += <<= >>= &= |=
DateTime.now + 1.hour と DateTime.now +1.hour は異なる値を返します。 何を言ってるのかわからねーと思うがこの実行結果を見てくれ。こいつをどう思う? [10] pry(main)> DateTime.now + 1.hour Fri, 29 Jan 2016 11:38:52 +0900 # こっちだと 11:38 [11] pry(main)> DateTime.now +1.hour Fri, 29 Jan 2016 10:38:52 +0900 # こうすると 10:38。あれれ? すごく・・・バグりそうです・・・/// なんでか DateTime.now + 1.hour が DateTime.now() + 1.hour と解釈されるのに対し、 DateTime.now +1.hour は DateTime.now(+1.hour) と解
Passenger 3.x で複数のRubyバージョンを使い分けるには、とてもトリッキーな対応が必要でした。 ところがPassenger 4.0.0 より公式に複数のRubyバージョンに対応しました。つまり、同一筐体のApacheで動く他アプリケーションへ影響を与えることなく、気軽にアプリ毎に使うRubyバージョンを変更できるようになります。 これまでの手法 mod_proxyを用いて、必要なRubyバージョン毎に単体起動させたpassengerにTCP/Socketでプロキシするというものでした。なぜなら、読み込むモジュールだけでなく、グローバル値として指定するPassengerRootやPassengerRubyの設定が衝突するためです。 Phusion Passenger & running multiple Ruby versions – Phusion Corporate Blo
DataCenter とソフトウェア開発ワークショップというイベントで、Rubyによるデータ解析について発表しました。 発表資料 発表の背景 Pythonに対してこの分野でRubyが遅れを取っているということが最近よく言われていますが、まずは使ってみないと何がRubyに何が足りないのかわからないと思い、最近色々なツールを触ってみています。 スライドの24ページあたりにもあるように、主要なツールについてはRubyでも揃いつつあるのかなという印象で、実際Jupyter notebook上で色々触ってみて、結構Rubyだけでも色々できるなと感じました。 一方で、Python/R等に比べて、機能面、性能面、ドキュメント面など、まだまだ不足しているのも事実だと思います。 今回のデモ用に書いたコードも、細かいところで色々足りなくて自分で実装したりしました。 一つ一つは大したコード量ではなく、自分で実装
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く