● [Rails] Rails2.2 の ActiveSupport まとめ Rails2.2 RC1 が出たので、淡々と変更点を追って見る。
● [Scala] Webフレームワーク play scala 「play」という凄い Web フレームワークがある。何が凄いかと言うと、まずは名前だ。だって "play" だよ?検索し辛いにも程がある。この衝撃は、http load balancer の "pen" 以来だ。ググっても無駄に時間がかかるので公式サイトを載せておこう。 http://www.playframework.org/ 日常会話にも困る場合があるので、サイト名から「playframework」と呼ばれることが多い。管理者の tw 名も @playframeworkであり、hashtagも #playframework なので、play は単なるコマンド名で、こっちの方が正式名という認識でいいのかもしれない。(gem と rubygems の関係に近い) play scala で、本来 Java 用の play(fr
● [Scala] RubyからScalaに乗り換えた15くらいの理由 [注意] この文章を読むと、既存のRubyコードをScalaでrewriteしたくなる、 Rubyコードで型チェックをやるのが鬱になる、Ruby案件でやる気が出なくなる、 などの幻覚や異常行動が報告されています。 現在関わっているプロジェクトや家族のことを常に意識し、 気を強く持って冷静に読むとよいでしょう。 「Scalaプログラミング入門」を読みはじめて、いきなり大きく頷いてしまった。 "コーディング時間の半分をテスト作成に費やさなければならなかった"(p.3) "Railsによって得られた生産性の向上は、テスト作成の作業に失われてしまいました"(p.3) まさにここ数年私が抱いてた漠然としたストレスの正体が、的確に文章となっていたからだ。そしてほどなく、「あ、この機能がRubyに欲しかった!」という驚きと共に Sc
● DCIが面白い件 DCI凄い!ヤバイ! 「DCIアーキテクチャ - Trygve Reenskaug and James O. Coplien」(翻訳) http://d.hatena.ne.jp/digitalsoul/20100131/1264925022 前に読んだときは難しすぎて(長すぎて)途中で挫折したけど、今改めて読んだらDCIは凄いと気付いた。以下、まとめ。 今回、内容理解の決め手となったのは「前半部分を読まない」ことだった。 そんな無謀な読み方(読んでないのだけれど)をした私の理解なので、 もちろん間違いはあるはず。 という前提で、 ツッコミを入れる気満々なテンションでどうぞ。 古来からプログラムの中心は<データ>であった なぜなら、それが設計の中で一番変化しにくい要素(箇所)であるから そして、<データ構造>とそれに対する<処理>の2つで考えるようになった (手続き型
● キャッシュ機能(caching) Railsには Page, Action, Fragment という3段階のキャッシュ機能が備わっている。tDiaryを使っていても思うが、修正よりも参照の方が圧倒的に多いコンテンツで毎回cgiで同じコンテンツを吐くのは無駄だなぁ。でもキャッシュを自分で用意するのは面倒だし、フレームワークかWebサーバがやってくれたらなぁ。Railsはそんなかゆい所にも手が届く、Web開発界の万能戦艦ノーチラス号なんです。 Page: アクション(CGI)の出力を丸ごとHTMLファイルとして保存し、静的コンテンツとして利用 Action: Pageと同じく全体を保存するが、コンテンツを表示する前に ActionController で filter 操作可能 Fragment: アクション全体の出力でなく、テンプレート描画の一部分のみをキャッシュ可能 caching
● 序章 これは、かつて Ruby がまだ神話だった時代、天使達の間で流行った歌(天上界オリコン13位)である。 「autoload」と言うコトバに、なんかあこがれてたー。 実際何をするのか、いまだにわかんない・・・(ヨロシク)。 動的呼出されてうれしく思い(ヨロシク)。 module 非対応で涙が出たり。忙しいな。 ● [rails] LoadingModule (active_support) LoadingModule は動的なクラス参照を提供する機能です。通常、Rails を使っていると意識しないままその恩恵を受けていますが、モデルやビューのクラス定義ファイルなどが何の準備もなしに自動的に参照されるのはこの機能のお陰です。同様の機能である Ruby 組み込みの autoload よりも以下の点で優れています。 ネームスペースを考慮してくれる (Rubyスタイルなモジュールにも対応)
めも FGはdefineの仮引数周りが無駄 (blueprintで改善) FGはinstanceをフラットに管理しすぎ FGのsequence(next)はイケてる FGはAR前提 Machinistは定義がイケてるが、名前がダサイ(make_unsaved) Machinistはメソッド名が衝突しそう(makeはアカン) Machinistはinstanceをクラス毎に分類できるが、Shamレベルまで落ちるとフラットになる片手落ち感 Daddyの使えなさは異常 FGの継承はどうやるの?(-> :parent) FG.blueprint は :parent を理解してくれない 試行錯誤 Factory.sequence :login do |i| "login#{i}" end Factory.define(:user) do |user| user.login {Factory.next
● 複数のRails環境 えっと、複数のRails環境を用意する方法ですが、単に最新版の trunk を使うだけの場合は % rake freeze_edge とやるのだと思いますが、好みに応じて複数のバージョンを使い分けたかったり、trunk が手元にある場合にわざわざまた取得するのも冗長だったり、ということで、私は生々しく手作業でやっています。 ● Rails スクリプトの実行のメカニズム Rails スクリプトの実行のメカニズム的には、 % ruby script/XXX が実行されると、まずスクリプト(から呼ばれた config/boot.rb)内で、 "#{RAILS_ROOT}/vendor/rails" があるかどうかがチェックされます。存在すれば、その下の Rails パッケージ(activerecord, ...) が利用され、存在しなければ、システムにインストールされて
Member.find(:all, :joins=>"INNER JOIN groups ON groups.id = members.group_id INNER JOIN favorites ...") _, ,_ 从 ’w’) ∩ < ヤダヤダ、もう耐えられないのー!シンボル名でJOINしたいの〜! ⊂ ( ヽ∩ つ ジタバタ 〃〃 class ActiveRecord::Base class << self private def add_joins!(sql, options, scope = :auto) scope = scope(:find) if :auto == scope join = (scope && scope[:joins]) || options[:joins] sql << " #{expand_join_query(join)} " if j
● routes Rubyで書かれたRails用の mod_rewrite のようなURL書き換え機能です。定義ファイルは config/routes.rb です。Railsは1ページ(コンテンツ)を基本的に「コントローラ」と「アクション」という組で管理(表現)します。コントローラとアクションは1時間Railsと遊ぶと大体わかりますが、簡単に説明するとアクションが通常のCGI('foo.cgi')の 'foo' に当たる識別子で、コントローラはそれらのある程度の集まりだと思って構いません。この集まりも適当なものでなく、正しくはMVCという概念に基づいて決まるのですが(DBのあるテーブルに対する一連の操作(アクション)単位でまとまる)、自分の好きな粒度でまとめても実害はありません。ここでは、「その2つの組でページが指定される」という理解だけでOKです。例に漏れず、この route (URL書
● [Rails] Metal Rails edge に Metal という新しい機能が追加された。これは Rack を用いた高速な Controller であり、Rails の色んな機能は捨ててでも、兎に角、単純で速いレスポンスがどうしても必要だ!という局面ではもの凄い助けになるだろう。 http://github.com/rails/rails/commit/8c3a54366435eebc2c8aa63b63e1349ce74a7b38 作成 場所は app/metal。metal ジェネレータが用意されているので、controller と同じ感覚で使える。既存のコントローラ(top1)と速度比較をするので、こちらの名前はtop2にしてみる。 従来のコントローラ的思想でいけば top2_metal.rb が作成されそうなものだが、そうはなっていない。この辺あたりに Merb 臭が少し
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く