タグ

ブックマーク / rakuto.blogspot.com (6)

  • World Wide Living とHardware Mashupの世界

    こんな世界を想像してほしい。 自宅のリビングにあるテレビが「FULL HDのディスプレイを持ち、5.1chサラウンドシステムのスピーカーに接続され、外部のネットワークに接続しておりWWWにアクセス可能である。」とブロードキャストする。5.1chサラウンドシステムのスピーカーは、「各スピーカの場所と映画やスポーツの再生に特化している」とブロードキャストする。デジタルカメラは、「700万画素のカメラを持ち、高速で精度の高い顔検出機能を持つ」とブロードキャストする。炊飯器は、「炭釜を持ち、低機能な液晶ディスプレイを持っている。」とブロードキャストする。自宅の自慢のスピーカーは「フルレンジスピーカーであり、低音から高音まで豊かな再生が可能で、特にJazzやClassicの再生に優れている」とブロードキャストする。 私は全ての機器がブロードキャストし急速に発展する無線技術によってプライベートなネッ

  • [rails] 実践RSpec on Rails - コントローラとモデルのBehaviourを書く

    先日RSpec on Rails0.7(0.7.1も)が出ました。 まだまだ枯れていないので実際のプロジェクトで採用するのは難しい面もありますが、isoration from Databaseを支えるmock/stub frameworkや、isoration from viewsは強力なので、それほど影響の無い作成済みの社内アプリにRSpec on Railsを適用してみました。 maihaさんがやっておられるように、自作で作るのもすごく楽しそうなのですがとりあえずは使ってみます。mock/stub frameworkの実装の詳細をあとでみる。 BBDでは、Behaviourを書いてからコードの実装を行うのですが、今回は以前にうみがめで作った社内用情報共有ツールBasecamp(某signalsのパクリ)にBehaviourを書いていくことになります。 BasecampのSpec 社内で

  • [Rails] ActiveRecord::QueryCacheを実装した。CacheStoreにはmemcachedを使用。

    ActiveRecord::QueryCache ActiveRecordの富豪っぷりに困っている。キャッシュの仕組みが用意されているみたいだが過去の遺物となり使用されていない様子。(See Class::ActiveRecord::QueryCache) だから作った。 ActiveRecordの富豪っぷり ActiveRecord#findではフレーム関数を大量に呼び出し深いスタックを生成する。毎度引数+同じ値で呼び出されるのに毎度SQLの生成を行う。 そこでキャッシュ戦略でも比較的基的な、クエリ単位でのキャッシュをおこなうクエリキャッシュとしてActiveRecord::QueryCacheを実装した。引数をキーにしてキャッシュを保存するため、SQLの生成も行わず高速に結果をフェッチすることができる。今後は、エンタープライズでのO/R Mapplerのキャッシュ戦略などを調べてもう

  • Young risk taker.: [Rails] Unit::TestかRSpecのSpecファイルを実行しボトルネックとなるクエリを書き出すSlowQueryLoggerを作った

    久々に面白いモノを作った。 SlowQueryLogger RailsではActiveRecordを利用してガンガン富豪プログラムを書きがちなため、適切にインデクスを張っていないとすぐに重たくなるので、Rails中で発行された遅いクエリをロギングするプログラムを作った。 ActiveRecordの参照系クエリを発行するメソッドをEXPLAINにより実行解析情報を取得しロギングしてから通常の参照クエリを発行するように拡張し、Rails付属のUnit::TestのfunctionalテストまたはRSpecのコントローラーのSpecファイルを実行する。最終的には、filesortか一時テーブルを使用しているクエリがログファイルに書き出される。 つまり、functional testを定義したファイルかRSpecのcontrollerのスペックファイルがあれば特に何も用意する必要はない。 現在My

  • [EffectiveRails] Vary(多様)なキャッシュに対応するcache_on_rails.rbを作った。

    昨日買ったBeauty Flowを聞いているとカッコよくて気分がのってきたので、イマイチ使いづらいRailsのキャッシュ周りをEffectiveにしてみた。 cache_on_rails.rb cache_on_rails API 使用方法 上記のスクリプトを#{RAILS_ROOT}/lib以下に設置してconfig/enviroment.rbの下のほうに次の一行を追加するだけ。 require 'cache_on_rails' 詳しくはソース中のコメント参照。 次の二点を拡張した。 HTTPリクエストヘッダの値を用いてキャッシュするコンテンツを切り替える。ブロックを評価した値をキャッシュのキーとして利用する。返り値が同じ場合は同一のキャッシュされたコンテンツが利用される。 一つ目はHTTPリクエストヘッダの値をキャッシュを生成する際のキーとして利用する。例えばユーザエージェント毎に異な

  • [Rails] RSpec on Railsを始めてみた - インストールと実行

    RSpec on Railsのさわりだけ。 おそばせながら今頃、BDD(Behaviour Driven Development)を知りました。。。 これからはきちんとBDD or TDDで開発を進めます。 BDDはテスト駆動開発と言葉の言い回しが大きく異なっている。 「ベヒイビアを書いて仕様を設計する。」これが大きなポリシー。 BDDでは必ず仕様コード(spec)を書いてから実際のコーディングを行う。 Rubyには、RSpecというツールがありこれを利用する。 gemパッケージが用意されているので簡単。 $ gem install rspec 次にRSpec on Railsプラグインをインストール。 REL_X_Y_Zの部分をrspecのバージョンとあわせる必要がある。 $ cd RAILS_ROOT $ ruby script/plugin install svn://rubyfor

  • 1