Rails refactoring technique using ActiveSupport::Concern, talked on RubyKaigi 2013.
インフラストラクチャー部の成田です。 先日開催された RubyKaigi 2013 で、 "High Performance Rails" というタイトルの発表をしてきました。 スライドと動画 発表の様子は ustream の録画をご覧ください。 [ustream id=33559705 hwaccel=1 version=3 width=480 height=302] スライドは以下にアップロードしてあります。 High Performance Rails (long edition) // Speaker Deck なお、発表時間の都合上、当日はここから 40 枚ほどのスライドを削除してしまいました。発表に使った短いバージョンのスライドはこちらです。 発表の概要 クックパッドは 2008 年から Ruby on Rails を採用し、ずっと使い続けてきました。サービスが成長するとともに
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 Web屋さんはみんな大好きabコマンドは便利ですが、オプションは複雑で数も多く、複数のホストにそれぞれに対応するオプションを指定してテストしたりすると結構カオスになりがちです。 最近では、httperfやweighttp等のabに変わる次のHTTPベンチマークツールが出てきていますが、やっぱりまだまだ現役で良く使うのはabコマンドだと思います。 そこで、今回はabコマンドの複数のベンチマークオプションのパターンを1つのRubyスクリプトに定義しておいて、それをabコマンドで読み込む事で動的に任意のパターンでベンチマークを行うab-mrubyを作りました。外出しで書いたRubyスクリプトとabコマンドの連携は、ab-mrubyと見てわかるように
RubyKaigi2013のアクシデンタルスタッフ*1をした。2010,2011と当日スタッフをやらせてもらっていたけど今年は色々逸していて、前日までは普通の参加者のつもりだった。スクリーンのコンテンツ表示や自動起動などをするAndroidアプリを今回のスクリーン群の管理システムに合わせてつくって、前日に設営に会場に行ったが為にスタッフの仲間に入れてもらえて、気づけばスクリーン達の面倒をみながら見たい発表や、RubyKaigiならではの再会を楽しむことになった。 ホワイエの3台とホールAの前、会議室1の左側のスクリーンの計5つは全てAndroidで動かしていたことに来場者たちは気づいただろうか。 RubyKaigiのスクリーン達 だんだん当たり前の風景のようになってしまっているが、RubyKaigiの会場各所でTwitter、IRC、運営からのお知らせ、良い弁当などの情報が来場者達に向けて
38. ⑤失敗・教訓(充実してきた頃) カバレッジは万能じゃない -「レガシーコード=テストの無いコード」なので意 味はあるが・・・ -Reekを取るようにした(お手軽/ReekViewer) https://github.com/Shinya131/reekviewer FactoryGirlがパンクした -factory.rbに全てぶっ込むのではなく、 factoriesフォルダ以下にファイル分割配置 -リレーション指定やりすぎると破綻(メンテ不能)に
This document discusses using the RSpec testing framework for test-driven development. It provides an example RSpec test describing a class and array, explaining how the tests ensure the array is not nil and its last element is 'C'. The document also references resources on test-driven development, refactoring, and the bowling game kata coding exercise.Read less
毎年振り返りを行っていますが、2018年分も残しておきます。 過去分はこちら。 2017年 2016年 2015年 2014年 2013年は特に書いてない 2012年 2011年 仕事 夏までSET(Software Engineer in Test)をやっていたのですが、その後組織的な問題解決を横断的に行う部署に異動し、Microservices推進やいくつかの案件のプロジェクトマネージメントやファシリテーションを行っていました。 課題が見えにくい、または見えたとしても解決方法が見えないなかアクションをすることが増え、なかなかしんどかった一年でした。自分の考えを変えないといけないことも多く、失敗し軌道修正したり、うまく行けばそこをさらに伸ばしたりするなど、非常にエネルギーを使った一年でした。 とは言え、今のスピード感のなかで、成果が求められる職場はそうそうなく、非常に充実した生活を送って
JRubyでコード書いてるとrspecを起動するたびに永遠にも等しい待ち時間が苦痛で苦痛で苦痛で。 素のrspecで5.6秒、rspecを実行するようにRakefileを書いた rake test で9.4秒、bundle exec rake test に至っては19.7秒という永遠にも等しい時間を必要とする。こうなると生きるのがつらくなってくる。 で、調べてたらsporkなるものがあるらしいんだけど試してみてもなんかいまいちうまくいかない。(うまく動いた、末尾の追記参照) んでさらに調べてたら、そもそもjvmの起動コストについてはNailgunという仕組みをつかってパスできるっぽい。世の中のRailsアプリだとRailsまわりのライブラリのロードがさらに辛いらしいが、まあそこは今の自分には関係ないのでパス。jvm起動コストだけなんとかなればいいや。 ということで、簡単。以下のようにする。
人気の高いオープンソースのツール、RとRubyを使い、生データを処理し、シミュレーションし、仮説を立て、統計的手法を用いて検証する、というデータ解析の基本の理解を促します。基本が学べるだけでなく、自分のメールボックスや自分の心臓の鼓動など身近な題材を対象としており、データサイエンスの醍醐味を味わうことができる一冊です。日本語版ではさまざまな統計分析手法についての入門となる章を追加。この本で使っている統計の基礎も学べる構成になっています。プログラマ視点で書かれた本書は、ビッグデータを活用するためのスキルを身に付ける必要に迫られた多くの開発者にとっても貴重な情報源となるでしょう。 関連ファイル サンプルコード 正誤表 ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すで
If you see this page, the nginx web server is successfully installed and working. Further configuration is required. For online documentation and support please refer to nginx.org Please use the reportbug tool to report bugs in the nginx package with Debian. However, check existing bug reports before reporting a new bug. Thank you for using nginx.
技術部・開発基盤グループの中村です。 この度、クックパッドが開発し、オープンソースとして公開しているRuby on Rails向けプロトタイプ開発用のプラグイン「Chanko」を再設計し、Ruby 2.0.0 への移行に引き続き Chanko 2.0.0 をリリースしました。Chanko 2.0.0 では、これまでのバージョンと互換性を保ちながら、主に実行速度やコードの可読性について改善が加えられています。 http://cookpad.github.io/chanko/ Chankoとは Chankoは、素早く安全に新機能のプロトタイプを行うためのフレームワークです。クックパッドでは今現在でも、Chankoを使って多くの機能を独立して開発し、対象範囲を限定して公開することで新機能の検証サイクルを回しています。Chankoを利用して拡張した機能でエラーが起きた場合、拡張前の機能に自動的に切
Create a Redom connection class A Redom connection class is where you write the scripts to manipulate the browser-side objects from server. The Redom connection class must include module Redom::Connection. An instance of Redom connection class will be created when the connection between browser and Redom server is established. There are three methods in Redom::Connection that can be overridden to
# [:foo, :bar, :baz].map{|s| s.to_s }.map{|s| s.upcase } # [:foo, :bar, :baz].map(&:to_s).map(&:upcase) [:foo, :bar, :baz].map(&:to_s >> :upcase ) # => ["FOO", "BAR", "BAZ"] # [:foo, :hoge, :bar, :fuga].select{|s| s.to_s.length > 3} # => [:hoge, :fuga] [:foo, :hoge, :bar, :fuga].select(&:to_s >> :length >> 3._(:<)) # => [:hoge, :fuga] project page rubygems.org Build status Installation Add this li
本番環境にperlとかrubyとかnodeを入れるんだけど、もちろん system perl じゃやってられないので指定したバージョンのものを一般ユーザの管理下に突っ込みたい。 で、そういうのをこれまで perlbrew とか rvm とか rbenv とか nvm とか nodebrew とかでやってたんだけど、さすがに色々疑問が湧いてきた。バッチで単発実行するために eval "$(rbenv init -)" とかさすがにおかしくね? みたいな。 ということで tokuhirom method 的にインストール用の簡単コマンドを使って実行、あとはパスを通せばいいじゃん、ということにしようかと思う。 参考: サーバーのセットアップは perlbrew とかじゃなくてよくね? という時のライフハック - blog.64p.org これ、今朝までは Perl::Build をどうにかしてC
Puppet や Chef で構築したサーバを RSpec でテストする で書いた仕組みを使いやすくするために serverspec という名前で gem 化してみた。 rubygems.org にも登録してあるので、gem install でインストールできる。 $ gem install serverspec インストールしたら、適当なディレクトリで serverspec-init を実行。すると、雛形となるディレクトリやファイルを生成する。 $ serverspec-init + spec/ + spec/www.example.jp/ + spec/www.example.jp/httpd_spec.rb + spec/spec_helper.rb + Rakefile spec/www.example.jp/httpd_spec.rb がサンプルテストコードで、こんな感じになって
Emacsのメジャーモードとしてmotion-modeを作りました。 ainame/motion-mode · GitHub しかし、emacsでRubyMotionのコードを書くときに、各種メソッド名とかクラス名をシンボル補完したいという 思いがあっていろいろ調べてみて, (e|ctags)でやるとかyasnippet用のsnippetを作ってみるってのを試してみましたが 重いしイマイチ使い心地良くなかったです。 そこで、auto-completeの辞書補完使って補完をやってみたのですが、ヘッダーファイルから抜き出した4942個の単語を辞書に追加しても 補完自体はだいぶスムーズに行われて(候補が多いので結局絞り込むのが大変かもだけど)良い感じだったので、 最終的にRubyMotionのプロジェクトのディレクトリのファイルかどうかをチェックして、 RubyMotionのコードの時だけ、mo
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 ApacheCon NA 2013に参加し、早めにポートランド国際空港に到着しました。時間があるので、今日(2013年3月2日)からmrubyを始める人へ簡単なチュートリアルをしようと思います。 mrubyというプロジェクト mrubyとは、組み込み機器やアプリ組み込みに最適化された軽量スクリプト言語です。記述方法は既存のRubyのように書くことができます。C言語で書かれたホストアプリにmrubyを組み込むことで、ホストアプリをRubyの記述でコントロールすることができます。例えばmod_mrubyは、RubyでApache APIをつつけるようにmrubyをApacheに組み込むためのモジュールで、ApacheモジュールをRubyで記述する
miyagawa さんの podcast が毎回面白い、Web っ子ならあーそれそうだよね〜的な相づちを頭の中でうちつつにやにやと聴いてしまう。しかしそれだけだとなんか言い足りない気分、なんか言いたい!と言うわけで、今回の江島さんとの podcast の話題に勝手に乗っかかってみます試み。 http://podcast.bulknews.net/post/43535683799/podcast-ep2-2013-02-19-kenn-ejima マシン環境のセットアップの話し 開発環境をどう整えどう保つか。これはエンジニアそこそこいる会社だと必ず考える話で。マシンセットアップの初期化コストを減らし、その後どう継続するか。 miyagawa さんが言う、うちの会社というのは弊社(クックパッド)のことで、エンジニアの開発環境 OS は Mac。 Mac の上にとりわけ仮想環境の Linux な
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く