• ブログ
  • 写真
  • キーワード
  • ブックマーク
  • ログイン

Title

« 2008年05月 | 2008年07月 »
  • iMacとMacbookとどちらを買うべきか 2008-06-01 00:36:22

    iMacがカッコよくていいですね。すごく欲しい。でもMacbookの利便性もいいんだよね。持ち運べるのは大きい。
    外で使うことが絶対にないならiMacだけど、勉強会とかに行くならMacbookだよ。でも外で使う機会って実際のところほとんどない。
    さて、どちらを買うべきか……。まあ、ubuntuでもけっこう満足してるんですけどね。

    Commentコメント(4) Pageリンク元(43) Append
  • 無意識の証人
    作者/アーティスト: Gianrico Carofiglio,石橋 典子
    メディア: 文庫
    The F-Ups
    メディア: CD
  • プー太郎終わり 2008-06-01 17:46:23

    今日でプー太郎生活も終わりです。明日から新しい会社で、またRubyをやっていくことになりました。楽しみ。

    Commentコメント(0) Pageリンク元(12) Append
  • ARのwhere区を簡単に扱えるようになる「Ez-Where2」に触れてみた 2008-06-02 22:04:14

    RailsのActiveRecordで、Where区が複雑になるのはよくあることです。特に検索機能などで、指定された条件によってwhere区を用意するときはコードが汚くなりがちです。
    そんなときに使えるのが「Ez-Where2」。超簡単にwhere区が構築できちゃいます。

    インストール。

    ./script/plugin install http://opensvn.csie.org/ezra/rails/ez_where_two/
    


    使い方。

    cond = Caboose::EZ::Condition.new
    cond += cc(:users) {name == params[:user_name]}
    cond += cc(:mobile) {signature == params[:mobile_id]}
    

    ccというメソッドがwhere区を構築する。このわかりにくいメソッド名だけはいただけないけど。includeやjoinを使っていてテーブル名の指定が必要なときは最初にそのテーブル名をシンボルで指定してあげて、続くブロックでwhere区の条件を書く。+ でつなげればAND条件になり、| でつなげればORになります。詳しくはREADMEを参照。他にもいろいろ便利そうなメソッドが用意されています。

    Commentコメント(0) Pageリンク元(13) Append
  • Rails2.1の新機能、named_scopeを試してみた 2008-06-03 23:41:03

    okyuuにコメントしてくれた人に教えてもらったのだけど、Rails2.1のARにはnamed_scopeという機能が追加されたらしい。
    というわけでさっそくRails2.1にアップデートしてどこでもお気に入りで試してみた。

    class Category < ActiveRecord::Base
      DEFAULT_NAME = "無分類"
      named_scope :default, :conditions => {:title => DEFAULT_NAME}
    end
    

    とモデルに書いておけば、

      @category = @user.categories.default.first
    

    こう書けます。これは、

      @category = @user.categories.find(:first, :conditions => ["title = ?", Category::DEFAULT_NAME])
    

    と同じ意味です。これはコードがすっきりしていいですね。
    ブロックを使えば、値を動的に変化させることもできます。

      named_scope :title_select, lambda {|t| {:conditions => ["title = ?", t]}}
    

    こうしておけば、

      @category = @user.categories.title_select(Category::DEFAULT_NAME).first
    

    こう書けるのです。
    named_scopeはfind(:all)として働くようなので、配列が返ってくる点に注意しなければなりません。
    ちなみに、上のコードだとSQL文には「limit 1」が付与されていた。firstまで見てSQL文を構築しているのか。Railsは頭がいいなあ。

    Commentコメント(0) Pageリンク元(157) Append
  • デュアルディスプレイなしでは生きられない 2008-06-06 01:09:51

    新しい会社はディスプレイが小さくて一枚しかないのだけど、コードを読みながらイライラしていることに気づいてびっくりする。
    もはやデュアルディスプレイが当たり前になっていてその利便性も忘れかけていたけど、それがどんなに幸せなことかを再認識したりしている今日この頃。ちょっと大きな会社なので、ディスプレイ一枚増やすのも何かと大変そうなのです。
    家にある15インチのやつでも持っていこうかな。でもそうすると、家で開発するときに不便だしなあ。

    Commentコメント(0) Pageリンク元(7) Append
  • こわい 2008-06-07 18:58:54

    144
    ユルさんと化粧品屋さんにいます。こういう怖い人の写真があったりします。身の引き締まる思いです。

    Commentコメント(1) Pageリンク元(5) Append
  • will_paginateがちょっと変わっていた 2008-06-08 01:39:44

    will_paginateのインストール方法が変わっていた - idesaku blog

    これは知らなかった。

    Commentコメント(0) Pageリンク元(18) Append
  • RSpecで"You called render with invalid options"というメッセージが返されたら 2008-06-08 08:24:38

    RSpecでテスト中にcontroller内でrenderメソッドを使ったら、

    You called render with invalid options
    

    と怒られた。
    調べてみるとRspecのバグらしい。Rails2.1のせいでもあるのか。trunkでは直っているみたいなので、

    ./script/plugin install http://rspec.rubyforge.org/svn/trunk/rspec
    ./script/plugin install http://rspec.rubyforge.org/svn/trunk/rspec_on_rails
    ./script/gemnerate rspec
    

    で対処したらうまく動きました。

    Commentコメント(0) Pageリンク元(62) Append
  • Railsレシピブック 183の技: 高橋 征義, 諸橋 恭介: 本 2008-06-08 23:12:53

    • Railsレシピブック 183の技
    • 出版社/メーカー: ソフトバンククリエイティブ
    • メディア: 単行本
    • 発売日: 2008-05-31

    「Railsレシピブック 183の技」を買いました。

    Commentコメント(0) Pageリンク元(9) Append
  • prototype.jsとscript.aculo.usによるリッチWebアプリケーション開発: 大澤 文孝: 本 2008-06-08 23:14:17

    • prototype.jsとscript.aculo.usによるリッチWebアプリケーション開発
    • 出版社/メーカー: 翔泳社
    • メディア: 大型本
    • 発売日: 2008-05-29

    「prototype.jsとscript.aculo.usによるリッチWebアプリケーション開発」を買いました。

    Commentコメント(0) Pageリンク元(29) Append
  • いま飲み会 2008-06-11 19:52:01

    145
    に来ています。

    Commentコメント(2) Pageリンク元(11) Append
  • 今週の休日の楽しみ 2008-06-12 10:18:28

    Nome do Jogo » Artigo » New Free Book: “Ruby on Rails 2.1 - What’s new”

    これ読もうっと。

    Commentコメント(0) Pageリンク元(2) Append
  • restful_authenticationを使ってみた 2008-06-13 23:52:48

    Railsでユーザ認証といえばacts_as_authenticatedだと思っていたのですが、今はもうrestful_authenticationというやつが出てきているようです。けっこう前から? アンテナ低いのはなんとかしなければ。とりあえず、今開発中のかえるキーワードで使ってみることにした。
    まずはインストール。

    ./script/plugin source http://svn.techno-weenie.net/projects/plugins
    ./script/plugin install restful_authentication
    

    restful_authenticationは、acts_as_state_machineというやつを使うのでこいつもインストール。

    ./script/plugin install http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk/
    

    それからacts_as_authenticatedみたいにモデルやらコントローラを作ります。

    ./script/generate authenticated user sessions \
                  --include-activation \
                  --stateful
    

    これでuser, user_mailer, user_observerモデルと、user, sessionコントローラが作られます。
    モデルのほうはacts_as_authenticatedでおなじみのやつらと一緒。オブサーバを使うので、config/environment.rbのInitializerブロックの中で

    config.active_record.observers = :user_observer
    

    と指定しておきます。
    acts_as_authenticatedではaccountコントローラひとつだったけど、アカウント管理関係はuserコントローラに、ログイン処理関係はsessionコントローラにわかれています。
    上記で--include-activationと定義しているけど、これだけでメールを使ったユーザ登録処理が実装される。これは便利ですね。acts_as_authenticatedでは自分で書いていたから。
    --statefulはacts_as_state_machineを使ってユーザの管理をするよ、という宣言。acts_as_state_machineなんてはじめてきいたけど、userモデルを読むとなんとなくわかる。

      acts_as_state_machine :initial => :pending
      state :passive
      state :pending, :enter => :make_activation_code
      state :active,  :enter => :do_activate
      state :suspended
      state :deleted, :enter => :do_delete
    

    こんな感じで状態が宣言されている。initialが初期状態で、enterキーでその状態になったときに実行するメソッドを示しているみたいだ。
    さらに、

      event :register do
        transitions :from => :passive, :to => :pending, :guard => Proc.new {|u| !(u.crypted_password.blank? && u.password.blank?) }
      end
    

    こんな感じで状態が変化するイベントを定義する。イベントは

    current_user.activate!
    

    といったようにUserインスタンスのメソッドとして「!」つきでコールすればいいみたい。なかなかおもしろい。
    で、あとは rake db:migrate を実行すればOK。ログイン時にメールアドレスを使用したかったらちょっと書き直さなければいけないのはacts_as_authenticatedと同様。あと、reset_sessionを要所要所に追加したほうがよさそうです。
    本登録の認証のため、avtivateはactivate_codeパラメータを受け取れるようにmap.connectで別に書くか、デフォルトのルーティングを生かして、activateコードをidで受け取るように書き換える必要があります。
    これでとりあえず動きますが、ユーザの状態管理をするならconfig/routesの設定もしておきます。

      map.resources :users, :member => {:suspend => :put, :unsuspend => :put, :purge => :delete}
      map.resource :session
    

    ユーザ状態の変更アクションはusers_pathへリダイレクトするので、indexアクションを用意しておきましょう。

    Commentコメント(0) Pageリンク元(295) Append
  • acts_as_state_machineのfind_in_stateを複数状態指定可能にする 2008-06-14 08:58:44

    acts_as_state_machineのfind_in_stateは便利ですが、stateはひとつしか指定できません。たとえば、登録ユーザと管理者ユーザの両方でログイン可能なときなどはちょっとメンドくさいです。
    なので、find_in_stateで複数のstate指定をできるようにしてみました。
    config/initializers/acts_as_state_machine.rbを新規作成して以下のコードを書きます。

    module ScottBarron
      module Acts
        module StateMachine
          module ClassMethods
            protected
            def with_state_scope(target_states)
              target_states = [target_states] unless target_states.is_a?(Array)
              raise InvalidState unless target_states.all? {|s| states.include?(s)}
    
              cond = []
              cond_param = []
              target_states.each do |st|
                cond << "#{table_name}.#{state_column} = ?"
                cond_param << st.to_s
              end
    
              with_scope :find => {:conditions => [cond.join(" OR "), cond_param].flatten} do
                yield if block_given?
              end
            end
          end
        end
      end
    end
    

    これで、複数の指定をarrayで指定できるようになります。

    u = find_in_state :first, [:active, :admin], :conditions => {:email => email}
    

    count_in_stateもcalculate_in_stateも複数指定可になります。ちょっと便利になりました。

    Commentコメント(0) Pageリンク元(71) Append
  • ちょっと調べ物中 2008-06-15 22:10:38

    かえるキーワードを今作っています。このkaeruspoonで実装されていたキーワード自動リンク機能(今は停止しています)を、独立したアプリにしたものです。誰でも自分のブログでかえるキーワードの機能が使えるようにしようと考えていたのですが、ちょっと考える必要が出てきました。
    クロスドメインになるからJSONPでも使おうかと思ったのですが、JSONPでは送信データをURLクエリとして送るので、ブログ記事みたいな大きなデータでは使えないことに気づきました。POSTを使えればいいんだけど、いい方法はないのかな。それともJSONPで数回にわけて処理を行うか……。もうちょっと調べてみようと思います。

    Commentコメント(0) Pageリンク元(2) Append
  • TRPGをはじめました 2008-06-15 22:12:50

    オンライン上で友達とTRPGをはじめてみました。GMの経験はあるのですがプレイヤーをするのは実ははじめてだったりします。
    まだキャラクターを作っただけだけど楽しみ。ちなみにぼくのキャラクターは魔法使いにしてみました。

    Commentコメント(0) Pageリンク元(2) Append
  • ふるふるシェーカー 2008-06-21 13:51:12

    146
    すげーうまくてびっくりした。

    Commentコメント(0) Pageリンク元(4) Append
  • Passenger(mod_rails)の速度を計ってみた 2008-06-22 00:48:47

    ウワサのPassenger(mod_rails)を試してみました。
    インストールのやり方はあちらこちらのサイトに書かれているし、すごく簡単(しかも親切)なので問題はないと思います。
    ぼくとしては速度が一番気になっていたのでabで計測テストをやってみました。

    ab -n 500 -c 2 http://milook.kaeruspoon.net/ 
    

    テスト対象はmilookを使います。同時接続数が2と少ないのは、サーバ上でThinのプロセスが2個しかないからです。
    kaeruspoon系のwebアプリはすべてThinで動いているので、まずはThinで計測してみました。

    1. Apache2 + proxy_balancer + Thin(0.8.1)

    Requests per second:    1.03 [#/sec]
    


    2. Apache2 + proxy_balancer + mongrel(1.1.5)
    つづいて、たぶん今一番一般的な構成のmongrelを試してみます。

    Requests per second:    1.00 [#/sec]
    

    やっぱりThinのほうがちょっと速いね。

    3. Apache2 + Passenger(1.0.5)
    いよいよPassengerです。

    Requests per second:    1.04 [#/sec]
    

    お、Thinよりもさらに速い!(微妙だけど)

    この結果を踏まえて、kaeruspoon系のwebアプリはすべてPassengerで動かすことに決めました(もうPassengerで動いています)。
    PassengerのためにGCを改良したRuby Enterprise Editionを使うとさらにメモリ消費量も抑えられるとか。今後試していこうと思います。
    今回のテストではメモリ消費まではチェックしていません。こちらの方の記事を読むかぎりでは、けっこうよさそうです。

    ちなみに、PassengerではApacheのプロセスのほかにSpawnサーバ(スポーンと読むみたい)のプロセスも立ち上がります。
    これはRailsフレームワークのコードをキャッシュしてくれるやつだそうです。それから、webアプリのコードをキャッシュしてくれるやつも別に存在します。Railsのバージョンが同じなら、複数のアプリがひとつのキャッシュを共有してくれるようにできているみたい。

    Passengerを試していて一番気に入ったのが、mongrelやThinみたいに別個にwebサーバを立ち上げる必要がないところ。proxy_balancerも使わなくていいし。Apacheを頼りにできるのが精神的にかなり楽です。

    追記:かえるイメージだけはPassengerでうまく動かなかったのでThinに戻しました。どこが悪いのかよくわからないな。まあ、そういうこともあるということで、シビアなサービスで使うにはまだまだ様子見なのかもしれません。

    さらに追記:うまく動かなかった理由がわかりました。「ImageScienceを使っているRailsアプリをPassengerで動かすとエラーになるときの対処」を参照。

    Commentコメント(0) Pageリンク元(147) Append
  • ImageScienceを使っているRailsアプリをPassengerで動かすとエラーになるときの対処 2008-06-22 12:27:44

    かえるイメージがちゃんと動かなかった原因がやっとわかりました。
    かえるイメージの中ではImageScienceを使っているのだけど、こいつが".ruby_inline"というようなファイルを、環境変数HOMEかINLINEDIRで指定されたディレクトリ下に作ります。
    ところがPassengerで動かすと、環境変数のHOME、INLINEDIRともに何もわたってこないため、ImageScienceのinlline.rbの処理の中でエラーとなってしまいます。
    というわけで、RAILS_ROOT/tmp下に適当にディレクトリを作って、config/environment.rbの中で環境変数INLINEDIRをそのディレクトリへのPATHに指定してあげると、ちゃんと動きました。
    よかったよかった。これでPassengerを心置きなく使えるぞ。

    Commentコメント(0) Pageリンク元(12) Append
  • 確認画面はクライアントサイドで 2008-06-22 22:07:25

    RubyKaigiの山本陽平さんのセッションで、「確認画面はREST的にはどういう位置づけになるのか」という質問があったけど、「確認画面というのはサーバサイドで考えるものではない」みたいな回答があった。確認画面はリソースではない、つまりURIで表現する必要がないということだと思うのだけど、これはちょっと目からウロコ的なお話だった。そうだよね。確認画面なんてクライアントサイドで全部実現できるもんね。言われれば当たり前のことだけど、ちょっとはっとさせられた。

    Commentコメント(0) Pageリンク元(20) Append
  • サーバをcentOSにしようかな 2008-06-22 23:56:54

    kaeruspoonが動いているサーバのOSはdebianです(debian大好き)。でも仕事で使っているのがRedHatなので、kaeruspoonのOSをcentOSにしようかなと思ったりしている今日この頃です。

    Commentコメント(0) Pageリンク元(4) Append
  • 今日やっていたこと 2008-06-23 00:19:23

    ・AmazonResoucesの開発(generatorプラグインを作ってみる)
    ・かえるキーワードの開発(JSONP諦め→WebAPIにするかも)
    ・Passengerの適用
    ・Apacheの勉強
    ・RubyKaigiのustをみる
    ・FiveRunsでkaeruspoonのパフォーマンスチェック
    ・memcachedの適用
    ・MySQLのQueryCacheを使おうとしたらデフォで使われていた
    ・ユルさんのお出迎え
    ・オムライ
    ス

    Commentコメント(0) Pageリンク元(4) Append
  • 江ノ島にきました 2008-06-28 09:27:23

    147
    自転車で江ノ島にきました。片道40キロです。

    Commentコメント(0) Pageリンク元(2) Append
  • tokyobikeで江ノ島にいってきた 2008-06-28 14:42:23

    ひさしぶりにtokyobike(自転車です)に乗ってサイクリングにいきました。前の記事にあるように江ノ島までいってかえってきたのです。
    今までで最長の距離でした。シーザーみたいな気分になって帰ってきました。とりあえず、tokyobikeと今の装備では限界を越えている距離であることが判明した今日この頃。次にこの距離を走るときは、ちゃんとロードバイクを買って装備もちゃんとしてからにしよう。

    【最高速度】42.5km/h
    【平均速度】15.2km/h
    【走行距離】79.11k
    m 【走行時間】5時間12分48秒
    【総走行距離】409.9k

    m
    Commentコメント(1) Pageリンク元(72) Append
  • Amazonの商品を手軽に扱えるプラグイン、AmazonResourcesをつくりました 2008-06-29 13:06:03

    Amazon商品を手軽に扱えるRailsのプラグイン、AmazonResourcesを作ってみました。

    product = Amazon.find_by_asin(4274066967)
    

    こんな感じに使います。テーブルに対象の商品がないときはAmazonのWebAPIで情報を取得して、自動でテーブルに保存してからインスタンスを返してくれます。また、テーブルに保存してから一週間以上経過すると、Amazonに問い合わせて最新情報を取得します。
    これを使えばWebAPIのことを意識することなくAmazonの商品を手軽に扱えるようになります。もともとkaeruspoonで使っていたものをプラグインにしたものだったりします。
    ISBN13にも対応しています。

    product = Amazon.find_by_isbn13("978-4274066962")
    


    AmazonResourcesはgithubで公開しているので、誰でもインストールして使えます。

    1.Hpricotのインストール
    AmazonResourcesはHpricotを使用しているので、gemに入っていないときはインストールしておきます。

    sudo gem install hpricot
    


    2.AmazonResourcesのインストール

    ./script/plugin install git://github.com/tsukasaoishi/amazonresources.git
    


    3.Amazon商品を管理するモデルを作成する

    ./script/generate amazon_resources (モデル名) (AmazonWebサービスのアクセスキーID) (アソシエーションタグ)
    

    こんな感じで作成することができます。
    例えば、

    ./script/generate amazon_resources amazon XXXXYYYZZZ AAAAA-22
    

    とすれば、amazonsテーブルのためのmigrationファイルとamazonモデルが作成されます。

    4.Amazon商品を保存するテーブルを作成する

    rake db:migrate
    


    これでOKです。
    ちなみに取得できる情報は、ぼくが個人的に必要だと思う最低限の項目だけにしていますので、他の項目も取得したい方はモデルを改良して自由につかってください。

    Commentコメント(0) Pageリンク元(237) Append
  • WEB+DB PRESS Vol.45: WEB+DB PRESS編集部: 本 2008-06-29 18:17:00

    • WEB+DB PRESS Vol.45
    • 作者/アーティスト: WEB+DB PRESS編集部
    • 出版社/メーカー: 技術評論社
    • メディア: 大型本
    • 発売日: 2008-06-24

    「WEB+DB PRESS Vol.45」を買いました。

    Commentコメント(0) Pageリンク元(5) Append
  • ビューティフルコード: Brian Kernighan, Jon Bentley, まつもとゆきひろ, Andy Oram, Greg Wilson, 久野 禎子, 久野 靖: 本 2008-06-29 18:17:55

    • ビューティフルコード
    • 作者/アーティスト: Andy Oram,Greg Wilson,久野 禎子,久野 靖
    • 出版社/メーカー: オライリージャパン
    • メディア: 大型本
    • 発売日: 2008-04-23

    「ビューティフルコード」を買いました。

    Commentコメント(0) Pageリンク元(21) Append
« 2008年05月 | 2008年07月 »

Twitterでのひとりごと

  • コードギアスはもうなんだかどうでもいい感じのお話になっている(09/07 22:37)
  • ターミナルを見た。いまいちかな。(09/06 23:58)
  • アップルから帰ってきました(09/05 23:00)
  • パナップを食べた。会社のパナップのほとんどをぼくが食べている気がする。(09/05 12:54)
  • photohito 見てたらカメラがほしくなってきた。http://photohito.com/(09/04 22:49)
  • 交通警察24時をやっているらしい。見たいなあ(09/04 20:42)
  • 超不毛な作業をしたので、自分へのご褒美にパナップを食べている(09/04 20:14)

プロフィール

おおいしつかさ

Amazon商品の一覧

人気の記事ベスト10

  • 1.apache+mod_proxy_balancer+mongrelでRailsを動かす方法
  • 2.Perlでevalを使ってみる
  • 3.バージョン管理をsubversionからgitに移行してみた
  • 4.tokyobikeのドロップハンドル化
  • 5.URLなど、長い英字を折り返して表示する方法
  • 6.ubuntu8.04でデュアルディスプレイを使う
  • 7.restful_authenticationを使ってみた
  • 8.Rspecでコントローラのspecファイルを書く
  • 9.Amazonの商品を手軽に扱えるプラグイン、AmazonResourcesをつくりました
  • 10.RailsとPostfixで受信メールを処理する方法

コメント

  • 武石(人に喜ばれること)
  • おおいしつかさ(googleからの本当のメール)
  • 武石(googleからの本当のメール)
  • ユル(日本酒と魚があれば何もいらない)
  • おおいしつかさ(日本酒と魚があれば何もいらない)
  • 武石(しつこい)(日本酒と魚があれば何もいらない)
  • 武石(日本酒と魚があれば何もいらない)

過去の記事

2006年
12月
2007年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2008年
1月 2月 3月 4月 5月 6月 7月 8月 9月

キーワード一覧

ActionScript AmazonResources git javascript kaeruspoon milook NSR Objective-C Rails Ruby Ruby on Rails subversion Thin tokyobike ubuntu VAIO VAIO typeZ Waves Xen ぐりぐり カンタロー スノボー ドトール ドライブ バイク プログラミング ユルさん 執筆 日本酒 模型 真中洋嗣 自転車

Youtube

ニコニコ動画