<?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>雪道屋 &#124; Snow on rails blog &#187; rails</title>
	<atom:link href="http://blog.snowonrails.com/tags/rails/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.snowonrails.com</link>
	<description>life.each{&#124;day&#124; day.live_well!}</description>
	<lastBuildDate>Thu, 11 Feb 2010 07:03:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9-rare</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>spring式的transaction管理</title>
		<link>http://blog.snowonrails.com/2008/09/08/spring%e5%bc%8f%e7%9a%84transaction%e7%ae%a1%e7%90%86/</link>
		<comments>http://blog.snowonrails.com/2008/09/08/spring%e5%bc%8f%e7%9a%84transaction%e7%ae%a1%e7%90%86/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 15:23:27 +0000</pubDate>
		<dc:creator>snow</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[transaction]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=74</guid>
		<description><![CDATA[在javaeye上边看到了一个帖子，一个哥们儿(http://liuqiang.javaeye.com/) 提出了：如何同时提交多个model并且“失败全不存，成功全存”，其实就是典型的transaction场景，并且给出了几个解决方案，最后作者给出了其认为最好的一个解决方法，其核心代码就是通过：unless [@user, @city, @order].map(&#38;:valid?).include?(false) 的语句判断三个模型是否都通过验证，没有的话返回。
怎么说呢，这个方法应该说还是不错的，看上去比较简洁。但是看到的第一眼就感觉有点不对劲：为什么不用transaction? 呵呵，跟帖中马上有人有同样的意见，不过他给出的解决方案确实和我所想想的不一样，是更优雅，看到的第一眼就想到了2年前使用spring的transaction方法，同时也让用了快两年rails的我知道了 around_filter原来是这么用的，呵呵，张见识。代码已经记录下来了，在这里。
]]></description>
			<content:encoded><![CDATA[<p>在javaeye上边看到了一个<a href="http://www.javaeye.com/topic/238160" target="_blank">帖子</a>，一个哥们儿(http://liuqiang.javaeye.com/) 提出了：如何同时提交多个model并且“失败全不存，成功全存”，其实就是典型的transaction场景，并且给出了几个解决方案，最后作者给出了其认为最好的一个解决方法，其核心代码就是通过：unless [@user, @city, @order].map(&amp;:valid?).include?(false) 的语句判断三个模型是否都通过验证，没有的话返回。</p>
<p>怎么说呢，这个方法应该说还是不错的，看上去比较简洁。但是看到的第一眼就感觉有点不对劲：为什么不用transaction? 呵呵，跟帖中马上<a href="http://gigix.javaeye.com/">有人</a>有同样的意见，不过他给出的解决方案确实和我所想想的不一样，是更优雅，看到的第一眼就想到了2年前使用spring的transaction方法，同时也让用了快两年rails的我知道了 around_filter原来是这么用的，呵呵，张见识。代码已经记录下来了，<a href="http://pastie.org/268176" target="_blank">在这里</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/2008/09/08/spring%e5%bc%8f%e7%9a%84transaction%e7%ae%a1%e7%90%86/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>原来是插件在作怪!</title>
		<link>http://blog.snowonrails.com/2008/09/08/%e5%8e%9f%e6%9d%a5%e6%98%af%e6%8f%92%e4%bb%b6%e5%9c%a8%e4%bd%9c%e6%80%aa/</link>
		<comments>http://blog.snowonrails.com/2008/09/08/%e5%8e%9f%e6%9d%a5%e6%98%af%e6%8f%92%e4%bb%b6%e5%9c%a8%e4%bd%9c%e6%80%aa/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 14:19:28 +0000</pubDate>
		<dc:creator>snow</dc:creator>
				<category><![CDATA[rails]]></category>
		<category><![CDATA[foreign_key_migrations]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=73</guid>
		<description><![CDATA[最近在和朋友共同做一个项目(当然是rails项目)，每个人分别负责几个功能模块。我们使用的是Rails2.1，项目的框架是那个哥们搭的，我加入之前简单看了一下整体的代码，由于还处在很初级的阶段所以代码比较简单，至于plugin，我就是打开vender/plugin简单的扫了一眼。随着项目的进行，发生了一些比较奇怪的事情，所有的**_id字段都被添加成为了foreign_key,我的第一直觉是:&#8221;难道rails新版本中添加了这个功能？但是没看到任何的地方提起啊！&#8221;于是乎又翻看了rails2.1的新功能 feature list,还是没有找到任何相关的信息。这个时候脑子不知怎么就这么死，不知道看看是不是plugin的问题，结果硬是分别测试了1.2.6，2.0.2 和2.1.0的migration，都没有发现自动添加fk的问题，这个时候才恍然大悟，打开了plugin目录，赫然看到了foreign_key_migrations。这个时候一切都明朗了：都是plugin搞得鬼。
]]></description>
			<content:encoded><![CDATA[<p>最近在和朋友共同做一个项目(当然是rails项目)，每个人分别负责几个功能模块。我们使用的是Rails2.1，项目的框架是那个哥们搭的，我加入之前简单看了一下整体的代码，由于还处在很初级的阶段所以代码比较简单，至于plugin，我就是打开vender/plugin简单的扫了一眼。随着项目的进行，发生了一些比较奇怪的事情，所有的**_id字段都被添加成为了foreign_key,我的第一直觉是:&#8221;难道rails新版本中添加了这个功能？但是没看到任何的地方提起啊！&#8221;于是乎又翻看了rails2.1的新功能 feature list,还是没有找到任何相关的信息。这个时候脑子不知怎么就这么死，不知道看看是不是plugin的问题，结果硬是分别测试了1.2.6，2.0.2 和2.1.0的migration，都没有发现自动添加fk的问题，这个时候才恍然大悟，打开了plugin目录，赫然看到了foreign_key_migrations。这个时候一切都明朗了：都是plugin搞得鬼。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/2008/09/08/%e5%8e%9f%e6%9d%a5%e6%98%af%e6%8f%92%e4%bb%b6%e5%9c%a8%e4%bd%9c%e6%80%aa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>what&#8217;s new in rails 2.1 chinese version 新鲜出炉</title>
		<link>http://blog.snowonrails.com/2008/06/17/whats-new-in-rails-21-chinese-version-%e6%96%b0%e9%b2%9c%e5%87%ba%e7%82%89/</link>
		<comments>http://blog.snowonrails.com/2008/06/17/whats-new-in-rails-21-chinese-version-%e6%96%b0%e9%b2%9c%e5%87%ba%e7%82%89/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 15:16:27 +0000</pubDate>
		<dc:creator>snow</dc:creator>
				<category><![CDATA[rails]]></category>
		<category><![CDATA[chinonrails]]></category>
		<category><![CDATA[rails2.1]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=54</guid>
		<description><![CDATA[吃东西得趁热，学rails也不例外，chinaonrails的一个帖子将大家的积极性调动了起来，我也献了自己的一份力量，翻译了第二章 ActiveRecord，基本完成，明天还要修改一些细节。国内rails的社区力量还是很强很可爱的。
]]></description>
			<content:encoded><![CDATA[<p>吃东西得趁热，学rails也不例外，chinaonrails的<a href="http://chinaonrails.com/topic/view/1713/1.html" target="_blank">一个帖子</a>将大家的积极性调动了起来，我也献了自己的一份力量，翻译了<a href="http://docs.google.com/Doc?id=dfknmfcs_7fjhxkj4b" target="_blank">第二章 ActiveRecord</a>，基本完成，明天还要修改一些细节。国内rails的社区力量还是很强很可爱的。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/2008/06/17/whats-new-in-rails-21-chinese-version-%e6%96%b0%e9%b2%9c%e5%87%ba%e7%82%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>说说我使用github的经历</title>
		<link>http://blog.snowonrails.com/2008/06/04/%e8%af%b4%e8%af%b4%e6%88%91%e5%af%b9git%e7%9a%84%e8%ae%a4%e8%af%86/</link>
		<comments>http://blog.snowonrails.com/2008/06/04/%e8%af%b4%e8%af%b4%e6%88%91%e5%af%b9git%e7%9a%84%e8%ae%a4%e8%af%86/#comments</comments>
		<pubDate>Wed, 04 Jun 2008 15:19:28 +0000</pubDate>
		<dc:creator>snow</dc:creator>
				<category><![CDATA[rails]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>

		<guid isPermaLink="false">http://blog.snowonrails.com/?p=45</guid>
		<description><![CDATA[最近获得了好多的关注，作为tech“潮人”咱自然不能落后，看了几天，学习了不少有用的知识, 简单的谈谈使用git的过程.注册github.com帐户之类的废话就不用说了.这里我以自己下载、学习 rails-openid-kit 为例, 总结一下我使用github,并且为开源软件贡献一点力量的过程(顺便提一句，如果你希望为你的网站添加openid支持，那么openid-rails-kit是一个很好的选择)
 

在github上边找到openid-rails-kit,然后 &#8220;fork&#8221;
这个时候网站会跳转到你自己的页面，然后在你自己的帐户中copy一份openid-rails-kit项目的源代码，所以“fork”说白了就是，copy一份项目的代码，你对这份代码拥有一切权利，当然，这份fork过来的代码也会保留一切之前的log/change history .这时候你会看到 public clone url , your clone url的字样，很明显，一个是给所有人的只有读权利的地址，一个是你自己用的可以提交更改的地址。当地点击 Your clone url时候一行命令会蹦出来，copy之。
这时回到我本地，打开iterm, paste
当然了再下一步就是打开textmate,一通改。这时候你也许在纳闷，我的这个版本和原作者的版本有什么区别，我改了会不会对原作者的版本产生任何的影响呢，如果我提交了我的更改那么别人是否能够看到我都改了什么呢？呵呵，会有影响也可能没有影响，不过如果你提交了你的更改，在git里边通过git push来提交，那么所有关注这个项目的人都可以看到你的更改，过一会我们会具体演示别人怎么看到你的更改，你怎么看到别人的更改。当然了如果你使用textmate,那么git tmbundle 以及 github tmbundle 都是使用git必备的。
在git当中branch的概念无处不在，同时branch的创建, switch, delete都是非常的cheap。 我们刚刚通过git clone 生成的project 其实就是一个叫&#8221;master&#8221;的branch,我们用&#8221;master&#8221;来引用这个存储在本地的branch. 这个branch对应着你在github上的master branch,不过对于那个remote master branch,我们习惯用 origin/master来表示，origin可以认为是我们给remote repository起的一个别名. 同时当我运行 git branch new-features 的时候，git 又以我现在所在branch(master)为基础，创建了一个新的名叫new-features的branch, 通过git checkout new-features,  我们很轻松的就由master转到了new-features这个branch. 接下来就是可以放心大胆的添加我们的新功能，而不用担心破坏了master的功能。
ok, 现在我们添加了新的功能，同时所有的新功能通过了测试，现在我们准备将新功能merge到master当中了。首先确认你已经提交了所有对于new-features branch的更改: (new-features branch) git commit -a -m &#8216;commit all my [...]]]></description>
			<content:encoded><![CDATA[<p>最近获得了好多的关注，作为tech“潮人”咱自然不能落后，看了几天，学习了不少有用的知识, 简单的谈谈使用git的过程.注册github.com帐户之类的废话就不用说了.这里我以自己下载、学习 <a href="http://railskits.com/openid/" target="_blank">rails-openid-kit</a> 为例, 总结一下我使用github,并且为开源软件贡献一点力量的过程(顺便提一句，如果你希望为你的网站添加openid支持，那么openid-rails-kit是一个很好的选择)</p>
<p> </p>
<ol>
<li>在github上边找到<a href="http://github.com/stympy/openid-rails-kit/tree/master" target="_blank">openid-rails-kit</a>,然后 &#8220;fork&#8221;<a href="http://blog.snowonrails.com/wp-content/uploads/2008/06/safariscreensnapz001.jpg"><img class="alignleft size-medium wp-image-46" title="github-fork" src="http://blog.snowonrails.com/wp-content/uploads/2008/06/safariscreensnapz001-300x136.jpg" alt="" width="300" height="136" /></a></li>
<li>这个时候网站会跳转到你自己的页面，然后在你自己的帐户中copy一份openid-rails-kit项目的源代码，所以“fork”说白了就是，copy一份项目的代码，你对这份代码拥有一切权利，当然，这份fork过来的代码也会保留一切之前的log/change history .这时候你会看到 public clone url , your clone url的字样，很明显，一个是给所有人的只有读权利的地址，一个是你自己用的可以提交更改的地址。当地点击 Your clone url时候一行命令会蹦出来，copy之。<a href="http://blog.snowonrails.com/wp-content/uploads/2008/06/safariscreensnapz002.jpg"><img class="alignnone size-full wp-image-47" title="github-forked" src="http://blog.snowonrails.com/wp-content/uploads/2008/06/safariscreensnapz002.jpg" alt="" width="500" height="241" /></a><a href="http://blog.snowonrails.com/wp-content/uploads/2008/06/safariscreensnapz003.jpg"><img class="alignnone size-full wp-image-48" title="git-clone-link" src="http://blog.snowonrails.com/wp-content/uploads/2008/06/safariscreensnapz003.jpg" alt="" width="500" height="179" /></a></li>
<li>这时回到我本地，打开iterm, paste<a href="http://blog.snowonrails.com/wp-content/uploads/2008/06/itermscreensnapz002.jpg"></a><a href="http://blog.snowonrails.com/wp-content/uploads/2008/06/itermscreensnapz002.jpg"><img class="alignnone size-full wp-image-50" title="iterm-git-clone" src="http://blog.snowonrails.com/wp-content/uploads/2008/06/itermscreensnapz002.jpg" alt="" width="500" height="179" /></a></li>
<li>当然了再下一步就是打开textmate,一通改。这时候你也许在纳闷，我的这个版本和原作者的版本有什么区别，我改了会不会对原作者的版本产生任何的影响呢，如果我提交了我的更改那么别人是否能够看到我都改了什么呢？呵呵，会有影响也可能没有影响，不过如果你提交了你的更改，在git里边通过git push来提交，那么所有关注这个项目的人都可以看到你的更改，过一会我们会具体演示别人怎么看到你的更改，你怎么看到别人的更改。当然了如果你使用textmate,那么<a href="http://gitorious.org/projects/git-tmbundle" target="_blank">git tmbundle</a> 以及 <a href="http://github.com/drnic/github-tmbundle/tree/master" target="_blank">github tmbundle</a> 都是使用git必备的。</li>
<li>在git当中branch的概念无处不在，同时branch的创建, switch, delete都是非常的cheap。 我们刚刚通过git clone 生成的project 其实就是一个叫&#8221;master&#8221;的branch,我们用&#8221;master&#8221;来引用这个存储在本地的branch. 这个branch对应着你在github上的master branch,不过对于那个remote master branch,我们习惯用 origin/master来表示，origin可以认为是我们给remote repository起的一个别名. 同时当我运行 git branch new-features 的时候，git 又以我现在所在branch(master)为基础，创建了一个新的名叫new-features的branch, 通过git checkout new-features,  我们很轻松的就由master转到了new-features这个branch. 接下来就是可以放心大胆的添加我们的新功能，而不用担心破坏了master的功能。<a href="http://blog.snowonrails.com/wp-content/uploads/2008/06/itermscreensnapz003.jpg"><img class="alignnone size-full wp-image-51" title="iterm-git-branch" src="http://blog.snowonrails.com/wp-content/uploads/2008/06/itermscreensnapz003.jpg" alt="" width="499" height="273" /></a></li>
<li>ok, 现在我们添加了新的功能，同时所有的新功能通过了测试，现在我们准备将新功能merge到master当中了。首先确认你已经提交了所有对于new-features branch的更改: (new-features branch) git commit -a -m &#8216;commit all my changes&#8217;; 返回到master branch当中：git checkout master . 然后 git merge new-features . 这个时候 就可以将 master push到remote:  git push 当然所有的这些命令行都可以轻松的在textmate中使用git tmbundle来完成<a href="http://blog.snowonrails.com/wp-content/uploads/2008/06/textmatescreensnapz001.jpg"><img class="alignnone size-full wp-image-52" title="git-tmbundle" src="http://blog.snowonrails.com/wp-content/uploads/2008/06/textmatescreensnapz001.jpg" alt="" width="370" height="509" /></a></li>
<li>ok, 最后回到我的github帐户，可以直观的看到我所做的更改。如果我想告诉这个项目的原作者，和所有关注这个项目的人：“我改了写东西，你们应该看看。”那么我就可以点击我帐户中这个项目旁边的 &#8220;pull request&#8221;, 注意，是我的帐户中的这个项目，因为我想让人家看我的更改。当然如果人家觉得我的更改有意义，就会merge 我的branch&#8230; <a href="http://blog.snowonrails.com/wp-content/uploads/2008/06/safariscreensnapz004.jpg"><img class="alignnone size-full wp-image-53" title="github-pull-request" src="http://blog.snowonrails.com/wp-content/uploads/2008/06/safariscreensnapz004.jpg" alt="" width="500" height="305" /></a></li>
</ol>
<p>ok,这篇文章已经足够长了，至于别人如何merge我的更改，我如何merge别人的更改，咱们下次再说。8-)</p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/2008/06/04/%e8%af%b4%e8%af%b4%e6%88%91%e5%af%b9git%e7%9a%84%e8%ae%a4%e8%af%86/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>&#25918;&#20986;&#31532;&#20108;&#27573;&#35270;&#39057;&#65292;&#20851;&#20110;rails layout</title>
		<link>http://blog.snowonrails.com/2007/06/20/rails-layout/</link>
		<comments>http://blog.snowonrails.com/2007/06/20/rails-layout/#comments</comments>
		<pubDate>Wed, 20 Jun 2007 01:09:00 +0000</pubDate>
		<dc:creator>snow</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[layout]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[Screencast]]></category>

		<guid isPermaLink="false">urn:uuid:4c2ee9da-e46f-4f56-9f3e-be345b516f85</guid>
		<description><![CDATA[本想于上周放出railshow中文播客网站，结果由于突然有一堆工作，所以不得不再次推迟，不过有一些screencast是已经录制好的，所以在这里提前放出。这段screencast主要和大家分享一个我平时经常使用的default layout模板，由于感觉这个模板还是比较不错的，对于初学rails的朋友有一定的学习价值，同时有经验的朋友也可以作为best practise 来分享。
Download here

]]></description>
			<content:encoded><![CDATA[<p>本想于上周放出railshow中文播客网站，结果由于突然有一堆工作，所以不得不再次推迟，不过有一些screencast是已经录制好的，所以在这里提前放出。这段screencast主要和大家分享一个我平时经常使用的default layout模板，由于感觉这个模板还是比较不错的，对于初学rails的朋友有一定的学习价值，同时有经验的朋友也可以作为best practise 来分享。</p>
<p><a href="http://blog.snowonrails.com/wp-content/uploads/2007/06/layout_tipsmov.zip">Download here<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/2007/06/20/rails-layout/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to build a mini youtube using activemessaging plugin and amazon s3</title>
		<link>http://blog.snowonrails.com/2007/05/31/how-to-build-a-mini-youtube-using-activemessaging-plugin-and-amazon-s3/</link>
		<comments>http://blog.snowonrails.com/2007/05/31/how-to-build-a-mini-youtube-using-activemessaging-plugin-and-amazon-s3/#comments</comments>
		<pubDate>Thu, 31 May 2007 11:53:00 +0000</pubDate>
		<dc:creator>snow</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[activemessaging]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[s3]]></category>
		<category><![CDATA[Screencast]]></category>

		<guid isPermaLink="false">urn:uuid:b3f9bb4f-2447-46ec-b0ea-e6ecb03d5490</guid>
		<description><![CDATA[After I release the chinese version screencast yesterday, many friends sent me advices. Today, I recorded it again with english so that more people can see and understand it.
The attached file is a screencast of how to build a youtube-like video sharing web application using activemessaging plugins and how to backup the files into amazon [...]]]></description>
			<content:encoded><![CDATA[<p>After I release the chinese version screencast yesterday, many friends sent me advices. Today, I recorded it again with english so that more people can see and understand it.</p>
<p>The attached file is a screencast of how to build a youtube-like video sharing web application using activemessaging plugins and how to backup the files into amazon s3 account. You can download the screencast and source code from <a href="http://blog.snowonrails.com/wp-content/uploads/2007/05/mini_youtube_english.zip">here</a></p>
<p>This is my first time recording a screencast in English, I know there are still a lot of things to improve. I hope everyone who saw it can leave me some comments. And I am so sorry that my phone rang at the end of the screencast. :-&gt;</p>
<p>Feel free to leave your comments.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/2007/05/31/how-to-build-a-mini-youtube-using-activemessaging-plugin-and-amazon-s3/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>&#24212;&#29992;Activemessaging &#20197;&#21450;Amazon S3&#21046;&#20316;video&#32593;&#31449;screencast</title>
		<link>http://blog.snowonrails.com/2007/05/30/activemessaging-amazon-s3videoscreencast/</link>
		<comments>http://blog.snowonrails.com/2007/05/30/activemessaging-amazon-s3videoscreencast/#comments</comments>
		<pubDate>Wed, 30 May 2007 03:58:00 +0000</pubDate>
		<dc:creator>snow</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[activemessaging]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[s3]]></category>

		<guid isPermaLink="false">urn:uuid:d175fea4-6147-483d-9179-9c5cf9073461</guid>
		<description><![CDATA[几个星期前就有录一段视频文件的想法了，但是由于懒惰总是给自己找借口，今天终于讲近期的一些项目经验加以总结然后做了一个demo,并且制作了一个screencast.附件中是demo的source code，简单来说就是一个接收用户上传的video文件，然后通过异步的方式交给后台processor 进行视频转换成flv格式，并且把该flv文件上传到 Amazon s3上。
你可以下载 screencast 和source code
欢迎大家多提意见
]]></description>
			<content:encoded><![CDATA[<p>几个星期前就有录一段视频文件的想法了，但是由于懒惰总是给自己找借口，今天终于讲近期的一些项目经验加以总结然后做了一个demo,并且制作了一个screencast.附件中是demo的source code，简单来说就是一个接收用户上传的video文件，然后通过异步的方式交给后台processor 进行视频转换成flv格式，并且把该flv文件上传到 Amazon s3上。</p>
<p>你可以下载 <a href="http://blog.snowonrails.com/wp-content/uploads/2007/05/video_convertermov.zip">screencast</a> 和<a href="http://blog.snowonrails.com/wp-content/uploads/2007/05/video_converter.tar">source code</a><br />
欢迎大家多提意见</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.snowonrails.com/2007/05/30/activemessaging-amazon-s3videoscreencast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
