<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>@masuidrive blog &#187; Ruby on Rails</title>
	<atom:link href="http://blog.masuidrive.jp/index.php/category/ruby-on-rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.masuidrive.jp</link>
	<description>life with open sources.</description>
	<lastBuildDate>Thu, 02 Sep 2010 20:54:32 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>DataMapper 0.10.1をmerbで使う為のパッチ</title>
		<link>http://blog.masuidrive.jp/index.php/2009/10/10/pactch-for-datamapper-0-10-1-on-merb/</link>
		<comments>http://blog.masuidrive.jp/index.php/2009/10/10/pactch-for-datamapper-0-10-1-on-merb/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 04:57:15 +0000</pubDate>
		<dc:creator>masuidrive</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.masuidrive.jp/?p=163</guid>
		<description><![CDATA[先日、DataMapper 0.10.1がリリースされました。 DataMapperを使う上で致命的だった、count問題も直っているようです。 しかし、そのままだとmerb 1.0.12ではエラーが出て動きません。 そのときは、下記のコードを適当な所で実行してください。 class Merb::Orms::DataMapper::Associations &#60; Merb::BootLoader def self.run DataMapper::Model.descendants.each do &#124;model&#124; include DataMapper::Resource touch_child_keys(model) end end def self.touch_child_keys(model) model.relationships.each_value { &#124;relationship&#124; relationship.child_key } end end 引用元]]></description>
			<content:encoded><![CDATA[				<p>先日、<a href="http://datamapper.org/">DataMapper 0.10.1</a>がリリースされました。<br />
				DataMapperを使う上で致命的だった、<a href="http://blog.masuidrive.jp/index.php/2009/08/10/dm-core-0-10-0-rc1/">count問題</a>も直っているようです。</p>
				<p>しかし、そのままだとmerb 1.0.12ではエラーが出て動きません。<br />
				そのときは、下記のコードを適当な所で実行してください。</p>
				<pre>
class Merb::Orms::DataMapper::Associations &lt; Merb::BootLoader
   def self.run
     DataMapper::Model.descendants.each do |model|
       include DataMapper::Resource
       touch_child_keys(model)
     end
   end

   def self.touch_child_keys(model)
     model.relationships.each_value { |relationship| relationship.child_key }
   end
end
</pre>
				<p><a href="http://aviewfromafar.net/2009/9/22/using-datamapper-0-10-with-merb-1-0-12">引用元</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.masuidrive.jp/index.php/2009/10/10/pactch-for-datamapper-0-10-1-on-merb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Webでの非同期処理を考えてみる [長い記事だけどコメント求む!]</title>
		<link>http://blog.masuidrive.jp/index.php/2008/09/23/concurrency-on-the-web/</link>
		<comments>http://blog.masuidrive.jp/index.php/2008/09/23/concurrency-on-the-web/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 09:55:28 +0000</pubDate>
		<dc:creator>masuidrive</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[photoshare]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://blog.masuidrive.jp/?p=132</guid>
		<description><![CDATA[Photo by harry harris 　いまPhotoShareのサーバの実装を大きく変えようとして悩んでいます。 (参考: Life is beautiful: マルチスレッド・プログラミングの落とし穴、その２) 　Rails 2.2でThread safeになるとか、NeverBlockで12倍速くなるっていう話もあるんだけど、負荷が上がればレスポンスが悪くなるのは、どうしようもない。マシンを増やせば解決できる部分もあるけど、マシンを増やせばコストは上がる。 　Life is beautifulで書かれていますが、確かに全部の処理を同期的に行う必要はないんですよね。 　PhotoShareでも、既にいくつかのページは非同期にerbを生成して、それをRailsとerubisで読み込んで実行しています。 　しかし、Railsだけではこういった非同期の処理やviewの一部を事前に生成するという処理ができないので、この処理は別途プラグインを作って実現しています。 高速化の為にはキャッシュを使おう 　Railsで高速化を考えていくと、特にキャッシュが重要になります。たとえばブログエンジンで、RSS Feedを生成するアクションがあったとします。 　通常Railsで組むと、Feedを生成するアクションでページキャッシュを行なうようにします。こうする事で、Feedを生成する処理は一度だけ行い、あとはApacheがキャッシュファイルを返すようになり、Rails側の負荷が下がります。 　この時、ブログを更新する処理を行なうと、Sweeperによって先ほどのキャッシュが破棄され、次回Feedのアクションにページにアクセスしたときに、再度Feedが生成されるようになります。 　これでは、更新の度にキャッシュが破棄/生成され、処理待ちが発生してしまうことが考えられます。 　そこで、更新の時にキャッシュを破棄するのではなく、投稿の処理の自体を非同期にして、更新処理を行った後、Feedなど関係するページを事前に生成します。 　そして、Feedは常に事前に生成したファイルを返すようにします。こうすることで、投稿があった直後にFeedへアクセスした場合でも、キャッシュの破棄は行われずに、キャッシュ(というか非同期に生成したページ)を返します。 　この非同期処理をキューで管理するようにすれば、ページの更新が沢山あってもFeedへの反映が遅くなるだけで、Feedそのもののレスポンスは悪化しません。 Webだってアクションごとに優先順位があるよね 　重要なのは、RailsではFeedのアクションも普通のページも同じプロセス群で同じ優先度で処理されることです。 　ほとんどのFeedは人間ではなくロボットからのアクセスです。人間と違ってレスポンスが悪かったり反映が遅くても問題になりません。 　そのため、Feedアクションのレスポンスが悪化しても、それ自体は問題ないのですが、Railsが同時に処理できるのは、Feedや普通のページを含めて一定数です。(mongrelの起動数など) 　その為、Feedのアクションが重いと、処理待ちが増え、普通のページのレスポンスも悪化します。 　コントローラごとに実行するmongrelを振り分けるようなルールをリバースプロキシに書けばある程度回避できますが、どのように振り分けるのか決定するのは困難です。(Feedなら簡単だけどもっと難しいケースもあるよね) 　このように実はアクションごとに優先順位があります。Feedやランキングと言った部分は、反映が遅くてもほとんど問題になりませんが、自分の写真リストや写真そのものはすぐにアクセスできるようにしたいのです。 　現在のRailsはコントローラごとに優先順位を付けるような処理は苦手なので、これを行うには、なんらかの仕組みが必要になると思います。 でも全部を非同期にする訳にはいかないし 　もちろん、処理のうち非同期にできる部分とできない部分があります。特に問題になるのは、エラー処理です。 　ブラウザでは、一度レスポンスを返してしまうと、サーバからブラウザにメッセージを送る方法がありません。 その為、非同期処理の中でエラーがおこった場合、それをどのようにユーザに伝えるかが問題になります。 　ブログの記事を書く処理では、タイトルの有無や、添付している画像のチェックなど、処理が正しく行えるかのチェックは非同期処理にまわす前にチェックします。事前にチェックできないものについては、何らかの方法であとで通知する仕組みが必要です。 　投稿ボタンを押した後、処理中画面を出して、Ajaxを使って数秒おきにサーバへ確認にいくか、別のページに遷移したときに通知する方法で行けるかなと思ってます。 　また事前に生成しにくいページもあります。PhotoShareの「すべての共有写真」では、100人フォローしている場合、100人分の写真リストがマージされてきます。 　逆に、100人にフォローされている人がいる場合には、その人が写真をアップするたびに100人分の「すべての共有写真」を更新する必要があります。 　これでは、写真をアップすることに100人分のXMLを生成する事になります。 しかし、ほとんどのユーザは誰かがアップする度に写真を見るわけではありません。このようなケースの場合は、いままでと同じように同期で処理をした方がよいでしょう。 　このような処理の場合は、通常のキャッシュやDBのチューニングなどが有効だと思います。 Rails捨てちゃおうか 　こんな風に非同期処理を行う為のRails向けのライブラリはいくつかリリースされていて、BackgroundFuやAP4Rなんかがメジャーです。 Photo by robotgirl 　非同期処理をさせるためにRailsとこれらのソフトを使う方法もあるのですが、キャッシュの事前生成などを考えると、Railsのメリットがないので、メッセージキューとviewの事前生成を中心にしたフレームワークっぽいものを自作しようかなと思っています。 　ユーザ登録、管理画面などRailsを残したい部分もあるので、データベースはActiveRecordのままで、ActionPackに相当する部分をRackの上で自作しようかと考えています。 　実際の構造についてはなるべく早く次のエントリで書く予定です。 　まだ漠然とした話なんですが、もし、お知恵がありましたら、コメントをもらえると幸いです。]]></description>
			<content:encoded><![CDATA[				<p class="eyecatch_photo"><img src="http://farm1.static.flickr.com/124/414124784_2ddd9e2e05_m.jpg"/><span class="photo_by">Photo by <a href="http://www.flickr.com/photos/harryharris/" title="Link to harry harris' photostream"><b>harry harris</b></a></span></p>
				<p>　いまPhotoShareのサーバの実装を大きく変えようとして悩んでいます。 (参考: <a href="http://satoshi.blogs.com/life/2008/09/post-1.html">Life is beautiful: マルチスレッド・プログラミングの落とし穴、その２</a>)</p>
				<p>　<a href="http://www.hyuki.com/yukiwiki/wiki.cgi?WhatThreadsafeRailsMeans">Rails 2.2でThread safeになる</a>とか、<a href="http://www.waicrew.com/2008/09/08/ruby-on-rails%E3%82%9212%E5%80%8D%E9%80%9F%E3%81%8F%E3%81%99%E3%82%8Bneverblock%E3%81%8Cruby-18%E3%81%AB%E5%AF%BE%E5%BF%9C/">NeverBlockで12倍速くなる</a>っていう話もあるんだけど、負荷が上がればレスポンスが悪くなるのは、どうしようもない。マシンを増やせば解決できる部分もあるけど、マシンを増やせばコストは上がる。</p>
				<p>　<a href="http://satoshi.blogs.com/life/2008/09/post-1.html">Life is beautifulで書かれて</a>いますが、確かに全部の処理を同期的に行う必要はないんですよね。</p>
				<p>　PhotoShareでも、既にいくつかのページは非同期にerbを生成して、それをRailsとerubisで読み込んで実行しています。<br />
				　しかし、Railsだけではこういった非同期の処理やviewの一部を事前に生成するという処理ができないので、この処理は別途プラグインを作って実現しています。</p>
				<h2>高速化の為にはキャッシュを使おう</h2>
				<p>　Railsで高速化を考えていくと、特にキャッシュが重要になります。たとえばブログエンジンで、RSS Feedを生成するアクションがあったとします。<br />
				<span id="more-132"></span><br />
				　通常Railsで組むと、Feedを生成するアクションでページキャッシュを行なうようにします。こうする事で、Feedを生成する処理は一度だけ行い、あとはApacheがキャッシュファイルを返すようになり、Rails側の負荷が下がります。</p>
				<p>　この時、ブログを更新する処理を行なうと、Sweeperによって先ほどのキャッシュが破棄され、次回Feedのアクションにページにアクセスしたときに、再度Feedが生成されるようになります。</p>
				<p>　これでは、更新の度にキャッシュが破棄/生成され、処理待ちが発生してしまうことが考えられます。</p>
				<p>　そこで、更新の時にキャッシュを破棄するのではなく、投稿の処理の自体を非同期にして、更新処理を行った後、Feedなど関係するページを事前に生成します。<br />
				　そして、Feedは常に事前に生成したファイルを返すようにします。こうすることで、投稿があった直後にFeedへアクセスした場合でも、キャッシュの破棄は行われずに、キャッシュ(というか非同期に生成したページ)を返します。</p>
				<p>　この非同期処理をキューで管理するようにすれば、ページの更新が沢山あってもFeedへの反映が遅くなるだけで、Feedそのもののレスポンスは悪化しません。</p>
				<h2>Webだってアクションごとに優先順位があるよね</h2>
				<p>　重要なのは、RailsではFeedのアクションも普通のページも同じプロセス群で同じ優先度で処理されることです。</p>
				<p>　ほとんどのFeedは人間ではなくロボットからのアクセスです。人間と違ってレスポンスが悪かったり反映が遅くても問題になりません。<br />
				　そのため、Feedアクションのレスポンスが悪化しても、それ自体は問題ないのですが、Railsが同時に処理できるのは、Feedや普通のページを含めて一定数です。(mongrelの起動数など)</p>
				<p>　その為、Feedのアクションが重いと、処理待ちが増え、普通のページのレスポンスも悪化します。</p>
				<p>　コントローラごとに実行するmongrelを振り分けるようなルールをリバースプロキシに書けばある程度回避できますが、どのように振り分けるのか決定するのは困難です。(Feedなら簡単だけどもっと難しいケースもあるよね)</p>
				<p>　このように実はアクションごとに優先順位があります。Feedやランキングと言った部分は、反映が遅くてもほとんど問題になりませんが、自分の写真リストや写真そのものはすぐにアクセスできるようにしたいのです。<br />
				　現在のRailsはコントローラごとに優先順位を付けるような処理は苦手なので、これを行うには、なんらかの仕組みが必要になると思います。</p>
				<h2>でも全部を非同期にする訳にはいかないし</h2>
				<p>　もちろん、処理のうち非同期にできる部分とできない部分があります。特に問題になるのは、エラー処理です。</p>
				<p>　ブラウザでは、一度レスポンスを返してしまうと、サーバからブラウザにメッセージを送る方法がありません。<br />
				その為、非同期処理の中でエラーがおこった場合、それをどのようにユーザに伝えるかが問題になります。</p>
				<p>　ブログの記事を書く処理では、タイトルの有無や、添付している画像のチェックなど、処理が正しく行えるかのチェックは非同期処理にまわす前にチェックします。事前にチェックできないものについては、何らかの方法であとで通知する仕組みが必要です。</p>
				<p>　投稿ボタンを押した後、処理中画面を出して、Ajaxを使って数秒おきにサーバへ確認にいくか、別のページに遷移したときに通知する方法で行けるかなと思ってます。</p>
				<p>　また事前に生成しにくいページもあります。PhotoShareの「すべての共有写真」では、100人フォローしている場合、100人分の写真リストがマージされてきます。<br />
				　逆に、100人にフォローされている人がいる場合には、その人が写真をアップするたびに100人分の「すべての共有写真」を更新する必要があります。<br />
				　これでは、写真をアップすることに100人分のXMLを生成する事になります。<br />
				しかし、ほとんどのユーザは誰かがアップする度に写真を見るわけではありません。このようなケースの場合は、いままでと同じように同期で処理をした方がよいでしょう。</p>
				<p>　このような処理の場合は、通常のキャッシュやDBのチューニングなどが有効だと思います。</p>
				<h2>Rails捨てちゃおうか</h2>
				<p>　こんな風に非同期処理を行う為のRails向けのライブラリはいくつかリリースされていて、<a href="http://trix.pl/blog/running-long-background-tasks-in-ruby-on-rails-made-dead-simple.html">BackgroundFu</a>や<a href="http://rubyforge.org/projects/ap4r/">AP4R</a>なんかがメジャーです。
				<p class="eyecatch_photo"><img src="http://farm1.static.flickr.com/1/129235_e57feb942b_m.jpg"/><span class="photo_by">Photo by <a href="http://www.flickr.com/photos/robotgirl/" title="Link to robotgirl's photostream"><b>robotgirl</b></a></span></p>
				<p>　非同期処理をさせるためにRailsとこれらのソフトを使う方法もあるのですが、キャッシュの事前生成などを考えると、Railsのメリットがないので、メッセージキューとviewの事前生成を中心にしたフレームワークっぽいものを自作しようかなと思っています。</p>
				<p>　ユーザ登録、管理画面などRailsを残したい部分もあるので、データベースはActiveRecordのままで、ActionPackに相当する部分を<a href="http://rack.rubyforge.org/">Rack</a>の上で自作しようかと考えています。</p>
				<p>　実際の構造についてはなるべく早く次のエントリで書く予定です。</p>
				<p>　まだ漠然とした話なんですが、もし、お知恵がありましたら、コメントをもらえると幸いです。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.masuidrive.jp/index.php/2008/09/23/concurrency-on-the-web/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>EventMachineを使ったクローラの書き方の足がかり</title>
		<link>http://blog.masuidrive.jp/index.php/2008/08/07/how-to-write-spider-using-eventmachine/</link>
		<comments>http://blog.masuidrive.jp/index.php/2008/08/07/how-to-write-spider-using-eventmachine/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 21:14:01 +0000</pubDate>
		<dc:creator>masuidrive</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.masuidrive.jp/?p=126</guid>
		<description><![CDATA[Photo by pnoeric 　いま、PhotoShareで使うために、高速なEvent Driven方式のネットワークライブラリ、EventMachineを調べています。 　このEventMachine、ほとんどの場合はサーバを作るときに使われていますが、HTTPクライアントの機能も実装されており、実はクローラの様な物を作るときにも利用することができます。 　今回はこっちを使いたかったのですが、ググってもほとんど情報が出てこなかったので、Seattle.rbで相談したところ、Aaronさん(RubyKaigi 2008でプレゼンしているのをustで見てコンタクトしました)からサンプルが貰えたので、それを元に、同時接続する様にしてみました。 　このコードだけだと役には立ちませんが、情報が少なかったので参考に上げておきます。 require 'rubygems' require 'eventmachine' CONCURRENCY = 2 TARGET_URL = 'http://localhost:3000/' def create_connection puts "&#62;&#62;&#62;&#62; create" uri = URI.parse(TARGET_URL) request = Net::HTTP::Get.new(uri.request_uri) client = EventMachine::Protocols::HttpClient.send(:request, :host => uri.host, :port => uri.port, :request_obj => request) client.callback do &#124;result&#124; $queue.delete client $queue &#60;&#60; create_connection if $queue.size &#60; CONCURRENCY puts [...]]]></description>
			<content:encoded><![CDATA[				<p class="eyecatch_photo"><img src="http://farm2.static.flickr.com/1150/677653313_909bbe5392_m.jpg"/><span class="photo_by">Photo by <a href="http://www.flickr.com/photos/pnoeric/" title="Link to pnoeric's photostream"><b>pnoeric</b></a></span></p>
				<p>　いま、<a href="http://bcphotoshare.com/">PhotoShare</a>で使うために、高速なEvent Driven方式のネットワークライブラリ、<a href="http://rubyeventmachine.com/">EventMachine</a>を調べています。</p>
				<p>　このEventMachine、ほとんどの場合はサーバを作るときに使われていますが、HTTPクライアントの機能も実装されており、実は<a href="http://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%A9">クローラ</a>の様な物を作るときにも利用することができます。</p>
				<p>　今回はこっちを使いたかったのですが、ググってもほとんど情報が出てこなかったので、<a href="http://www.zenspider.com/Languages/Ruby/Seattle/">Seattle.rb</a>で相談したところ、<a href="http://tenderlovemaking.com/">Aaronさん</a>(<a href="http://jp.rubyist.net/RubyKaigi2008/?SubSession">RubyKaigi 2008</a>でプレゼンしているのをustで見てコンタクトしました)からサンプルが貰えたので、それを元に、同時接続する様にしてみました。</p>
				<p>　このコードだけだと役には立ちませんが、情報が少なかったので参考に上げておきます。</p>
				<p><span id="more-126"></span></p>
				<pre>
require 'rubygems'
require 'eventmachine'

CONCURRENCY = 2
TARGET_URL = 'http://localhost:3000/'

def create_connection
  puts "&gt;&gt;&gt;&gt; create"
  uri = URI.parse(TARGET_URL)
  request = Net::HTTP::Get.new(uri.request_uri)
  client = EventMachine::Protocols::HttpClient.send(:request,
                                                    :host        => uri.host,
                                                    :port        => uri.port,
                                                    :request_obj => request)
  client.callback do |result|
    $queue.delete client
    $queue &lt;&lt; create_connection if $queue.size &lt; CONCURRENCY

    puts "&gt;&gt;&gt;&gt; callback"
    p result
  end

  client.errback do
    # TODO
  end
  client
end

$queue = []
EventMachine.run do
  CONCURRENCY.times do
    $queue &lt;&lt; create_connection
  end
end
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.masuidrive.jp/index.php/2008/08/07/how-to-write-spider-using-eventmachine/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>RailsでMemcachedが落ちていてもエラーにならない方法</title>
		<link>http://blog.masuidrive.jp/index.php/2008/08/05/stop_to_raise_errors_using_memcache-client/</link>
		<comments>http://blog.masuidrive.jp/index.php/2008/08/05/stop_to_raise_errors_using_memcache-client/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 05:33:49 +0000</pubDate>
		<dc:creator>masuidrive</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blog.masuidrive.jp/?p=125</guid>
		<description><![CDATA[Photo by masuidrive76 　Railsで高速化するためには、Memcachedによるキャッシュが欠かせないですが、もしmemcachedが落ちてしまうと、サービス全体でエラーが発生してしまうのが、気になるところでした。 　Takiuchiさんと話をしていて、fiveruns-memcache-clientを使うことで、memcachedを再起動さえすれば自動で再接続されることはわかったのですが、やはりmemcachedが落ちている時はエラーになってしまうのが問題でした。 　どうせ、キャッシュはキャッシュなのだから、memcachedが落ちている間はキャッシュを使わない様にするパッチをmemcache-clientに組み込もうと思って作業をしていたら、実はcache_fuにその機能があるのを発見しました。 　config/memcached.ymlで、「raise_errors: false」を指定するだけで、memcachedでエラーが起こった場合には、キャッシュを無視するようになるようです。 　ちょっと気になるのは、memcachedが落ちたのではなく、ネットワークなどの障害で一時的に接続されなかった場合、キャッシュの不整合が起こることです。これは、自動再接続したときにflush_allするなどのパッチを別に作る必要があるかもしれません。]]></description>
			<content:encoded><![CDATA[				<p class="eyecatch_photo"><img src="http://farm3.static.flickr.com/2072/2090408121_6512aacd1d_m.jpg"/><span class="photo_by">Photo by <a href="http://www.flickr.com/photos/masuidrive/" title="Link to masuidrive76's photostream"><b>masuidrive76</b></a></span></p>
				<p>　Railsで高速化するためには、Memcachedによるキャッシュが欠かせないですが、もしmemcachedが落ちてしまうと、サービス全体でエラーが発生してしまうのが、気になるところでした。</p>
				<p>　<a href="http://blog.s21g.com/articles/678">Takiuchiさんと話をしていて</a>、<a href="http://github.com/fiveruns/memcache-client/tree/master">fiveruns-memcache-client</a>を使うことで、memcachedを再起動さえすれば自動で再接続されることはわかったのですが、やはりmemcachedが落ちている時はエラーになってしまうのが問題でした。</p>
				<p>　どうせ、キャッシュはキャッシュなのだから、memcachedが落ちている間はキャッシュを使わない様にするパッチをmemcache-clientに組み込もうと思って作業をしていたら、実は<a href="http://www.google.com/search?q=cache_fu">cache_fu</a>にその機能があるのを発見しました。</p>
				<p>　config/memcached.ymlで、「<strong>raise_errors: false</strong>」を指定するだけで、memcachedでエラーが起こった場合には、キャッシュを無視するようになるようです。<br />
				　ちょっと気になるのは、memcachedが落ちたのではなく、ネットワークなどの障害で一時的に接続されなかった場合、キャッシュの不整合が起こることです。これは、自動再接続したときにflush_allするなどのパッチを別に作る必要があるかもしれません。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.masuidrive.jp/index.php/2008/08/05/stop_to_raise_errors_using_memcache-client/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>RailsアプリをチューニングするならNew Relic RPM</title>
		<link>http://blog.masuidrive.jp/index.php/2008/07/19/new-relic/</link>
		<comments>http://blog.masuidrive.jp/index.php/2008/07/19/new-relic/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 11:10:59 +0000</pubDate>
		<dc:creator>masuidrive</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[new relic]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[photoshare]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.masuidrive.jp/?p=120</guid>
		<description><![CDATA[Photo by Riverman72 　あとで自分メモを書こうと思うけど、先に一言。 　37signalsも使っているといううたい文句に惹かれて試してみた、Railsのパフォーマンス記録ツール/サービスNew Relic RPM(Rails Performance Management)が、すばらしい。 　RPMは開発時用のDeveloperと、実機用のProductionのが二つあり、まだ開発時用のDeveloperモードしか試してはいないんだけど、専用の管理画面で、アクションを実行時のメソッド単位の実行時間、生成されるSQL、SQLの実行時間やインデックスの利用状況などが非常に簡単に把握できます。 　Railsで開発している人なら、下のムービーを見れば、そのすごさが分かるはず。 　RPM developerのデモ動画 &#124; RPM production のデモ動画 　いまこれを使って、PhotoShareのチューニングをしていますが、非常に快適。これは超おすすめです。 　ひととおりチューニングが終わったら、RPM Productionのagentをインストールして実際に稼働しているRailsのデータを元にさらにチューニングを進められるって言うところがまたすごいなぁ。いい連携だ。 　しかしこのソフトもすごいけど、Railsもこういった周辺マーケットが育ってきている事実も見逃せないなぁ。 　同種のサービスでは、FiveRunsもあるし、単なるホスティングではないサービスを提供する会社が増えてきていることは、Railsが本格的にビジネスに結びついているって事なんだろうな。]]></description>
			<content:encoded><![CDATA[				<p class="eyecatch_photo"><img src="http://farm1.static.flickr.com/183/446535076_51501b492e_m.jpg"/><span class="photo_by">Photo by <a href="http://www.flickr.com/photos/riverman72/" title="Link to Riverman72's photostream"><b>Riverman72</b></a></span></p>
				<p>　あとで自分メモを書こうと思うけど、先に一言。</p>
				<p>　37signalsも使っているといううたい文句に惹かれて試してみた、Railsのパフォーマンス記録ツール/サービス<a href="http://www.newrelic.com/">New Relic RPM</a>(Rails Performance Management)が、すばらしい。</p>
				<p>　RPMは開発時用のDeveloperと、実機用のProductionのが二つあり、まだ開発時用のDeveloperモードしか試してはいないんだけど、専用の管理画面で、アクションを実行時のメソッド単位の実行時間、生成されるSQL、SQLの実行時間やインデックスの利用状況などが非常に簡単に把握できます。</p>
				<p>　Railsで開発している人なら、下のムービーを見れば、そのすごさが分かるはず。</p>
				<p>　<a href="http://www.newrelic.com/RPM-developer-demo/index.html">RPM developerのデモ動画</a> | <a href="http://www.newrelic.com/RPM-production-demo/index.html">RPM production のデモ動画</a></p>
				<p>　いまこれを使って、<a href="http://blog.masuidrive.jp/index.php/2008/07/10/bigcanvas-photoshare%e3%83%aa%e3%83%aa%e3%83%bc%e3%82%b9/">PhotoShare</a>のチューニングをしていますが、非常に快適。これは超おすすめです。</p>
				<p>　ひととおりチューニングが終わったら、RPM Productionのagentをインストールして実際に稼働しているRailsのデータを元にさらにチューニングを進められるって言うところがまたすごいなぁ。いい連携だ。</p>
				<p>　しかしこのソフトもすごいけど、Railsもこういった周辺マーケットが育ってきている事実も見逃せないなぁ。</p>
				<p>　同種のサービスでは、<a href="http://www.fiveruns.com/">FiveRuns</a>もあるし、単なるホスティングではないサービスを提供する会社が増えてきていることは、Railsが本格的にビジネスに結びついているって事なんだろうな。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.masuidrive.jp/index.php/2008/07/19/new-relic/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>近況報告&amp;アイディア募集</title>
		<link>http://blog.masuidrive.jp/index.php/2008/06/29/i-am-building-iphone-apps/</link>
		<comments>http://blog.masuidrive.jp/index.php/2008/06/29/i-am-building-iphone-apps/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 06:16:43 +0000</pubDate>
		<dc:creator>masuidrive</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[bigcanvas]]></category>

		<guid isPermaLink="false">http://blog.masuidrive.jp/?p=118</guid>
		<description><![CDATA[　アメリカに来て約3か月がたち、やっと生活も落ち着いてきました。 　現在、BigCanvasでは、7月のAppStoreオープンに向けてiPhone向けのアプリを中島さんと作っています。 　本当は、私もCocoaで遊ぶつもりだったのですが、このプロジェクトを始めたのが4月で時間が無いため、アメリカでも引きこもりの様にRailsのコードを書いています。早くもっとCocoaでアプリを書けるようになりたいなぁ。 　ネットへの依存度が高いので、日本に居てもアメリカに居ても生活全般、あまり違いがない気がします。 　ただ、デザイナやPR会社との打ち合わせなどが英語なので、そこが違うかな。 　これが一段落したら、自分でも書きたいiPhoneアプリがあるので、自分でも色々書いてみようと思っています。 　自分のアイディア以外でも色々作ってみたいと思っていますので、ぜひ「こんなiPhoneアプリ欲しい！」とかありましたら、メール: masuiあっとmasuidrive.jp、チャットでは、MSN:masui@hisec.co.jp、skype:masuidrive76まで呼びかけていただけると、うれしく思います。]]></description>
			<content:encoded><![CDATA[				<p class="eyecatch_photo"><a href="http://www.flickr.com/photos/masuidrive/2623971836/"><img src="http://farm4.static.flickr.com/3089/2623971836_410ab2d703_m.jpg"/></a></p>
				<p>　アメリカに来て約3か月がたち、やっと生活も落ち着いてきました。</p>
				<p>　現在、<a href="http://bigcanvasinc.com/">BigCanvas</a>では、7月のAppStoreオープンに向けてiPhone向けのアプリを<a href="http://satoshi.blogs.com/">中島さん</a>と作っています。</p>
				<p>　本当は、私もCocoaで遊ぶつもりだったのですが、このプロジェクトを始めたのが4月で時間が無いため、アメリカでも引きこもりの様にRailsのコードを書いています。早くもっとCocoaでアプリを書けるようになりたいなぁ。</p>
				<p>　ネットへの依存度が高いので、日本に居てもアメリカに居ても生活全般、あまり違いがない気がします。<br />
				　ただ、デザイナやPR会社との打ち合わせなどが英語なので、そこが違うかな。</p>
				<p>　これが一段落したら、自分でも書きたいiPhoneアプリがあるので、自分でも色々書いてみようと思っています。</p>
				<p>　自分のアイディア以外でも色々作ってみたいと思っていますので、ぜひ「こんなiPhoneアプリ欲しい！」とかありましたら、メール: masuiあっとmasuidrive.jp、チャットでは、MSN:masui@hisec.co.jp、skype:masuidrive76まで呼びかけていただけると、うれしく思います。</p>
				<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?o=9&amp;p=8&amp;l=as1&amp;asins=4861004438&amp;t=masuidriveblo-22&amp;IS1=1&amp;fc1=666666&amp;lc1=6666FF&amp;bg1=FFFFFF&amp;lt1=_blank&amp;bc1=FFFFFF&amp;npa=1&amp;f=ifr" style="width: 120px; height: 240px;" marginwidth="0" marginheight="0" frameborder="0" scrolling="no"></iframe><iframe src="http://rcm-jp.amazon.co.jp/e/cm?o=9&amp;p=8&amp;l=as1&amp;asins=4797346809&amp;t=masuidriveblo-22&amp;IS1=1&amp;fc1=666666&amp;lc1=6666FF&amp;bg1=FFFFFF&amp;lt1=_blank&amp;bc1=FFFFFF&amp;npa=1&amp;f=ifr" style="width: 120px; height: 240px;" marginwidth="0" marginheight="0" frameborder="0" scrolling="no"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.masuidrive.jp/index.php/2008/06/29/i-am-building-iphone-apps/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Capistranoでmigrationsする前に自動でバックアップ</title>
		<link>http://blog.masuidrive.jp/index.php/2008/05/24/automaticall-backup-before-migrations-on-capistrano/</link>
		<comments>http://blog.masuidrive.jp/index.php/2008/05/24/automaticall-backup-before-migrations-on-capistrano/#comments</comments>
		<pubDate>Sat, 24 May 2008 22:46:38 +0000</pubDate>
		<dc:creator>masuidrive</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[Capistrano]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://blog.masuidrive.jp/?p=115</guid>
		<description><![CDATA[Photo by mondopiccolo 　Capistranoではdeployしても、前のソースが残っているために、すぐに前のバージョンに戻せますが、データベースはそうはいきません。 　そこで、deploy:migrationsを実行する前に自動でDBのバックアップを取るようなタスクを探してみました。 MySQL専用ですが、これでローカルのbackupsというディレクトリに、migration実行前のダンプがダウンロードされます。 require 'yaml' desc "Backup the remote production database" task :backup, :roles => :db, :only => { :primary => true } do filename = "#{application}.dump.#{Time.now.to_i}.sql.bz2" file = "/tmp/#{filename}" on_rollback { delete file } db = YAML::load(ERB.new(IO.read(File.join(File.dirname(__FILE__), 'database.yml'))).result)['production'] run "mysqldump -u #{db['username']} --password=#{db['password']} #{db['database']} &#124; bzip2 -c > #{file}" do &#124;ch, [...]]]></description>
			<content:encoded><![CDATA[				<p class="eyecatch_photo"><img src="http://farm1.static.flickr.com/162/381993996_27124544a4_m.jpg"/><span class="photo_by">Photo by <a href="http://www.flickr.com/photos/travalicando/" title="Link to mondopiccolo's photostream"><b>mondopiccolo</b></a></span></p>
				<p>　Capistranoではdeployしても、前のソースが残っているために、すぐに前のバージョンに戻せますが、データベースはそうはいきません。</p>
				<p>　そこで、deploy:migrationsを実行する前に自動でDBのバックアップを取るようなタスクを探してみました。<br />
				MySQL専用ですが、これでローカルのbackupsというディレクトリに、migration実行前のダンプがダウンロードされます。<br />
				<span id="more-115"></span></p>
				<pre>
require 'yaml'

desc "Backup the remote production database"
task :backup, :roles => :db, :only => { :primary => true } do
  filename = "#{application}.dump.#{Time.now.to_i}.sql.bz2"
  file = "/tmp/#{filename}"
  on_rollback { delete file }
  db = YAML::load(ERB.new(IO.read(File.join(File.dirname(__FILE__), 'database.yml'))).result)['production']
  run "mysqldump -u #{db['username']} --password=#{db['password']} #{db['database']} | bzip2 -c > #{file}"  do |ch, stream, data|
    puts data
  end
  backup_dir = File.dirname(__FILE__) + "/../backups/"
  `mkdir -p #{backup_dir}` unless File.exists?(backup_dir)
  get file, "#{backup_dir}/#{filename}"
  run "rm #{file}"
end

desc "Backup the database before running migrations"
task :before_migrate do
  backup
end
</pre>
				<p><a href="http://opensoul.org/2007/2/9/automatically-backing-up-your-remote-database-on-deploy">元ネタ</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.masuidrive.jp/index.php/2008/05/24/automaticall-backup-before-migrations-on-capistrano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[メモ] AmazonS3とEC2を使う時にはX-REPROXY-URL</title>
		<link>http://blog.masuidrive.jp/index.php/2008/05/15/x-reproxy-url/</link>
		<comments>http://blog.masuidrive.jp/index.php/2008/05/15/x-reproxy-url/#comments</comments>
		<pubDate>Thu, 15 May 2008 13:30:11 +0000</pubDate>
		<dc:creator>masuidrive</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[memo]]></category>
		<category><![CDATA[perlbal]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[s3]]></category>
		<category><![CDATA[scalability]]></category>
		<category><![CDATA[x-reproxy-url]]></category>

		<guid isPermaLink="false">http://blog.masuidrive.jp/?p=110</guid>
		<description><![CDATA[　S3+EC2を使っていると、S3に保存したムービーや画像と言った大きなデータを、クライアントに返したい場合があります。 そのときにリバースプロキシを使う方法もあるけど、権限やユーザによって振り分けたい場合などは、単純なリバースプロキシではうまくいきません。 　Rails側でNet::HTTPなどを使ってS3からデータを取ってくる方法もあるのですが、それだとパフォーマンスが悪すぎです。 　負荷分散することを考えると、これはApacheモジュールか、リバースプロキシ側でやって欲しい作業です。自分で書こうと思ったけど、調べてみたらやっぱり同じようなのがありました。 　リバースプロキシなどの中には、X-REPROXY-URLというヘッダをサポートしているものがあり、これを戻すとリバースプロキシが代わりにこのURLにアクセスしてデータを返してくれます。 　Perlbalが始めにサポートしたらしいですが、lightlyやapacheもパッチが出ているようです。Perlbalはリバースプロキシとしても、性能が高いらしいので、これを評価してみようと思います。 メモリンク X-SendFile, X-REPROXY-FILE, X-REPROXY-URLを試してみる &#8211; Yet Another Hackadelic X-REPROXY-CACHE-CLEAR もあわせて使いたい人向けショート BK]]></description>
			<content:encoded><![CDATA[				<p>　S3+EC2を使っていると、S3に保存したムービーや画像と言った大きなデータを、クライアントに返したい場合があります。<br />
				そのときにリバースプロキシを使う方法もあるけど、権限やユーザによって振り分けたい場合などは、単純なリバースプロキシではうまくいきません。</p>
				<p>　Rails側でNet::HTTPなどを使ってS3からデータを取ってくる方法もあるのですが、それだとパフォーマンスが悪すぎです。<br />
				　負荷分散することを考えると、これはApacheモジュールか、リバースプロキシ側でやって欲しい作業です。自分で書こうと思ったけど、調べてみたらやっぱり同じようなのがありました。</p>
				<p>　リバースプロキシなどの中には、<a href="http://www.google.co.jp/search?q=X-REPROXY-URL">X-REPROXY-URL</a>というヘッダをサポートしているものがあり、これを戻すとリバースプロキシが代わりにこのURLにアクセスしてデータを返してくれます。</p>
				<p>　<a href="http://www.danga.com/perlbal/">Perlbal</a>が始めにサポートしたらしいですが、lightlyやapacheもパッチが出ているようです。Perlbalはリバースプロキシとしても、性能が高いらしいので、これを評価してみようと思います。</p>
				<p>メモリンク</p>
				<ul>
				<li><a href="http://d.hatena.ne.jp/ZIGOROu/20061208/1165545633">X-SendFile, X-REPROXY-FILE, X-REPROXY-URLを試してみる &#8211; Yet Another Hackadelic</a></li>
				<li><a href="http://anond.hatelabo.jp/20070821143842">X-REPROXY-CACHE-CLEAR もあわせて使いたい人向けショート BK</a></li>
				</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.masuidrive.jp/index.php/2008/05/15/x-reproxy-url/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CarbonEmacsを全画面で使おう</title>
		<link>http://blog.masuidrive.jp/index.php/2008/04/30/fullscreen-carbon-emacs/</link>
		<comments>http://blog.masuidrive.jp/index.php/2008/04/30/fullscreen-carbon-emacs/#comments</comments>
		<pubDate>Thu, 01 May 2008 01:07:26 +0000</pubDate>
		<dc:creator>masuidrive</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[environments]]></category>

		<guid isPermaLink="false">http://blog.masuidrive.jp/?p=108</guid>
		<description><![CDATA[Carbon Emacsをフルスクリーンで使う &#8211; Sooeyで、2008年春版のCarbon Emacsが、フルスクリーンに対応したことを知ったので、早速、ダウンロードしてインストール。 (mac-toggle-max-window)を.emacsで指定するだけのはずなんだけど、なぜか下に1,2行隙間が出たので適当にheightを指定。 (mac-toggle-max-window) (setq default-frame-alist (append (list '(height . 63) ))) いつの間にかemacs-w3mが、標準添付されなくなっていたので、自分でインストールした。]]></description>
			<content:encoded><![CDATA[				<p class="eyecatch_photo"><a href="http://www.flickr.com/photos/masuidrive/2455010807/"><img src="http://farm3.static.flickr.com/2335/2455010807_5fde079208_m.jpg"/></a></p>
				<p><a href="http://www.sooey.com/journal/2008/04/29/721/">Carbon Emacsをフルスクリーンで使う &#8211; Sooey</a>で、2008年春版の<a href="http://homepage.mac.com/zenitani/emacs-j.html">Carbon Emacs</a>が、フルスクリーンに対応したことを知ったので、早速、ダウンロードしてインストール。</p>
				<p><strong>(mac-toggle-max-window)</strong>を.emacsで指定するだけのはずなんだけど、なぜか下に1,2行隙間が出たので適当にheightを指定。</p>
				<pre>
(mac-toggle-max-window)
(setq default-frame-alist
      (append (list
		    '(height . 63)
)))
</pre>
				<p>いつの間にかemacs-w3mが、標準添付されなくなっていたので、自分でインストールした。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.masuidrive.jp/index.php/2008/04/30/fullscreen-carbon-emacs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>RESTはWebAPIの代わりにはならない</title>
		<link>http://blog.masuidrive.jp/index.php/2008/04/15/rest-not-equal-ap/</link>
		<comments>http://blog.masuidrive.jp/index.php/2008/04/15/rest-not-equal-ap/#comments</comments>
		<pubDate>Wed, 16 Apr 2008 06:15:05 +0000</pubDate>
		<dc:creator>masuidrive</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[webapi]]></category>

		<guid isPermaLink="false">http://blog.masuidrive.jp/?p=100</guid>
		<description><![CDATA[Photo by Pulpolux !!! 　bobchinさんの日記から「やっぱRESTは厳しいのかな？」。 　RESTでは、リソースに対して一意のURLに、これって結局データストレージとして使えるっていうだけなんだと思います。MVCでいうmodelの部分。 　これは、これでとても大切な部分なのですが、モデルを検索したり、いろいろ機能をRESTで提供するのは、うまくいかないと思います。 　Railsだと、create, show, update, destroyメソッドはいいのですが、index(list)メソッドをXMLで返すようにしても、あまりうまくいかないケースが多いと思います。１画面に出る情報が多岐にわたるので、きれいに表現できないんですよね。 　１つのコントローラでHTMLとXMLを返す上での最大の問題は、メソッド名の変更が出来なくなることだと思います。APIとして外部に公開してしまうと、メソッドの変更も気軽にできません。 　しかし、RESTfulにすることで、URLやコントローラの設計がきれいになる、Javascriptなど密結合な環境に限定されますが、外部からデータ参照できるなど、利点は多々あります。 　RESTの最大の利点は、デザインパターンと同じで、「このシステムはRESTfulになってるから」っていうと、詳しく話さなくても、全体の把握をしやすくなります。 　なので、システムをRESTfulにすることはいいことだと思います。RESTfulにして考えると、１つのコントローラにアクションを詰め込むのを止めようとか気がつきますし。 　ただ、外部へサイトの機能を公開するためには、別途WebAPIを作る必要があり、それぞれは補完関係にあると思います。]]></description>
			<content:encoded><![CDATA[				<p class="eyecatch_photo"><img src="http://farm1.static.flickr.com/87/278814297_78e1e12ed9_m.jpg"/><span class="photo_by">Photo by <a href="http://www.flickr.com/photos/pulpolux/" title="Link to Pulpolux !!!'s photostream"><b>Pulpolux !!!</b></a></span></p>
				<p>　bobchinさんの日記から「<a href="http://d.hatena.ne.jp/bobchin/20080416/1208303939">やっぱRESTは厳しいのかな？</a>」。</p>
				<p>　RESTでは、リソースに対して一意のURLに、これって結局データストレージとして使えるっていうだけなんだと思います。MVCでいうmodelの部分。<br />
				　これは、これでとても大切な部分なのですが、モデルを検索したり、いろいろ機能をRESTで提供するのは、うまくいかないと思います。</p>
				<p>　Railsだと、create, show, update, destroyメソッドはいいのですが、index(list)メソッドをXMLで返すようにしても、あまりうまくいかないケースが多いと思います。１画面に出る情報が多岐にわたるので、きれいに表現できないんですよね。<br />
				<span id="more-100"></span><br />
				　１つのコントローラでHTMLとXMLを返す上での最大の問題は、メソッド名の変更が出来なくなることだと思います。APIとして外部に公開してしまうと、メソッドの変更も気軽にできません。</p>
				<p>　しかし、RESTfulにすることで、URLやコントローラの設計がきれいになる、Javascriptなど密結合な環境に限定されますが、外部からデータ参照できるなど、利点は多々あります。</p>
				<p>　RESTの最大の利点は、デザインパターンと同じで、「このシステムはRESTfulになってるから」っていうと、詳しく話さなくても、全体の把握をしやすくなります。</p>
				<p>　なので、システムをRESTfulにすることはいいことだと思います。RESTfulにして考えると、１つのコントローラにアクションを詰め込むのを止めようとか気がつきますし。</p>
				<p>　ただ、外部へサイトの機能を公開するためには、別途WebAPIを作る必要があり、それぞれは補完関係にあると思います。</p>
				<p><iframe src="http://rcm-jp.amazon.co.jp/e/cm?o=9&amp;p=8&amp;l=as1&amp;asins=4873113539&amp;t=masuidriveblo-22&amp;IS1=1&amp;fc1=666666&amp;lc1=6666FF&amp;bg1=FFFFFF&amp;lt1=_blank&amp;bc1=FFFFFF&amp;npa=1&amp;f=ifr" style="width: 120px; height: 240px;" marginwidth="0" marginheight="0" frameborder="0" scrolling="no"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.masuidrive.jp/index.php/2008/04/15/rest-not-equal-ap/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
