<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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" version="2.0">

<channel>
	<title>red_world</title>
	
	<link>http://www.chenk85.com</link>
	<description>My world is red~, Linux, Ruby, D, Java, Agile, XP...</description>
	<pubDate>Tue, 28 Oct 2008 03:31:29 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/red_world" type="application/rss+xml" /><item>
		<title>config files</title>
		<link>http://www.chenk85.com/2008/10/config-files/</link>
		<comments>http://www.chenk85.com/2008/10/config-files/#comments</comments>
		<pubDate>Sat, 25 Oct 2008 06:23:50 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[shell]]></category>

		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.chenk85.com/?p=157</guid>
		<description><![CDATA[https://sites.google.com/site/kaionunix
]]></description>
			<content:encoded><![CDATA[<p><a href="https://sites.google.com/site/kaionunix">https://sites.google.com/site/kaionunix</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/10/config-files/feed/</wfw:commentRss>
		</item>
		<item>
		<title>晒历史</title>
		<link>http://www.chenk85.com/2008/10/command-line-histroy/</link>
		<comments>http://www.chenk85.com/2008/10/command-line-histroy/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 17:12:07 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<category><![CDATA[something]]></category>

		<category><![CDATA[shell]]></category>

		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.chenk85.com/?p=154</guid>
		<description><![CDATA[
[ ~ ]$ history &#124; awk {'print $2'} &#124; sort &#124; uniq -c &#124; sort -k1 -rn &#124; head
    140 v
    120 git
     61 ls
     55 y
     49 rake
     46 exit
   [...]]]></description>
			<content:encoded><![CDATA[<pre style="color: #FFF;background-color:#333;">
[ ~ ]$ history | awk {'print $2'} | sort | uniq -c | sort -k1 -rn | head
    140 v
    120 git
     61 ls
     55 y
     49 rake
     46 exit
     30 sudo
     30 p
     29 killall
     27 cat
</pre>
<p>PS. v=vim, y=yaourt, p=pacman.</p>
<p>这么多的包管理命令，看来我太无聊了&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/10/command-line-histroy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>database.yml &amp; capistrano2</title>
		<link>http://www.chenk85.com/2008/10/database-yml-and-capistrano2/</link>
		<comments>http://www.chenk85.com/2008/10/database-yml-and-capistrano2/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 18:15:35 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[Promgramming]]></category>

		<category><![CDATA[Deploy]]></category>

		<category><![CDATA[Rails]]></category>

		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.chenk85.com/?p=152</guid>
		<description><![CDATA[实验室的服务器配置好了apache2+passenger2的环境，就很开心试了capistrano2远程部署。
要使用capistrano2来作远程的deploy当然要把服务器配置好ssh，web server等，我的做法是创建一个deploy的user专门来干这档事，并把deploy加入到www-data组以便在服务器的空间有权限写入。不过在试用过程中发现如果是使用scm的话capistrano2是不管你database.yml（因为不可能把production server的db账户信息纳入版本控制），想想可能放在share目录下应该就可以解决（share目录专门放些不变的东西，如log，如一些如用户资源等静态数据），但具体怎样还是看看别人怎么做的，搜索一下看到这个POST。这位老兄加了个两个钩子，在setup和update_code时把事先准备的模板放到share目录中。但其实还有些问题，数据库的user并不一定就是server的user，最好还是在config/deploy.rb加上两个字段如db_user和db_passwd来设数据库。
看了下Capistrano2的文档，发现真是个好东东，简单又方便。
]]></description>
			<content:encoded><![CDATA[<p>实验室的服务器配置好了apache2+passenger2的环境，就很开心试了capistrano2远程部署。</p>
<p>要使用capistrano2来作远程的deploy当然要把服务器配置好ssh，web server等，我的做法是创建一个deploy的user专门来干这档事，并把deploy加入到www-data组以便在服务器的空间有权限写入。不过在试用过程中发现如果是使用scm的话capistrano2是不管你database.yml（因为不可能把production server的db账户信息纳入版本控制），想想可能放在share目录下应该就可以解决（share目录专门放些不变的东西，如log，如一些如用户资源等静态数据），但具体怎样还是看看别人怎么做的，搜索一下看到<a href="http://shanesbrain.net/2007/5/30/managing-database-yml-with-capistrano-2-0">这个POST</a>。这位老兄加了个两个钩子，在setup和update_code时把事先准备的模板放到share目录中。但其实还有些问题，数据库的user并不一定就是server的user，最好还是在<strong><em>config/deploy.rb</em></strong>加上两个字段如db_user和db_passwd来设数据库。</p>
<p>看了下Capistrano2的文档，发现真是个好东东，简单又方便。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/10/database-yml-and-capistrano2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>给自己放假</title>
		<link>http://www.chenk85.com/2008/10/have-two-days-holiday/</link>
		<comments>http://www.chenk85.com/2008/10/have-two-days-holiday/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 17:56:35 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[Thinking]]></category>

		<category><![CDATA[something]]></category>

		<category><![CDATA[假期]]></category>

		<category><![CDATA[大学]]></category>

		<guid isPermaLink="false">http://www.chenk85.com/?p=149</guid>
		<description><![CDATA[趁着国庆给自己放假两天。
那天踢了一下球之后那天晚上基本无法工作，太累，就简单地作一些翻译的文档的整理。第二天（亦就是昨天2号）也是很累，全身酸痛，从肩膀到腰到腿，好像才两个月没有踢球就这样了，看来身体越来越不行了。然后懵懵地就到了晚上，基本不知道自己在作什么，晚上有点精神，配置了一下实验室的服务器，把redmine从lighttpd迁移到apache2+passenger2的环境，并把svn库整理了一下。服务器上的所有软件包作更新，删除掉无用的包，再换个sever的内核（Ubuntu系统，原来用generic内核），还有更新rubygems。顺便把服务器的配置写份文档，并写了几个配置脚本，以后交给师弟来弄了。由于把服务器配置为a2+p2所以试了一下部署，结果发现capistrano一些问题，下篇post再谈。
今天早上起来又很困，结果就顺便把自己的电脑的环境清理一下。上个星期因为自己编译了gnome2.24结果把整个gnome搞坏了，所以最近一直用着KDEmod，其实很不爽。这次就趁火打劫地把gnome和kdemod整个完整删掉，换个轻量级的环境，一开始是openbox+rox+fbpanel+feh，配置挺烦一下，弄到最后换成openbox+rox+lxpanel。中间折腾了一下panel，又折腾了一下session，还要分配好rox和openbox的分工（有多种分工方法，最后选了rox负责桌面背景但不接管桌面，openbox接管桌面菜单）。因为有段时间看过openbox和rox的文档，所以用起来觉得还挺习惯，快捷键的操作很爽。下午再把firefox清理了一下，直接删了配置目录，自己再去下插件，网速有些问题，弄了一个钟。晚上学习如何查英文paper，大概摸出个门道。
在配置服务器的时候发现Ubuntu和其它发行版的目录结构差好多，比如apache的配置方法和在arch和贱兔的差好多，模块和站点的设置竟然是要在XX-available目录的文件link到XX-enable目录中，不是直接写个文件丢进去。本来还想配个git仓库的，后来觉得算了。在清理系统时，发现旧的rubygems竟然占了1G多，原来很多过时的gems还呆在里面。遂运行gem cleanup，过程很漫长，觉得那个依赖计算也是有问题，而且有内存泄漏问题，竟然有段时间把我的内存吃完了（2G），不知道是程序的问题还是GC的问题。
什么叫放假，不干活就是放假。
]]></description>
			<content:encoded><![CDATA[<p>趁着国庆给自己放假两天。</p>
<p>那天踢了一下球之后那天晚上基本无法工作，太累，就简单地作一些翻译的文档的整理。第二天（亦就是昨天2号）也是很累，全身酸痛，从肩膀到腰到腿，好像才两个月没有踢球就这样了，看来身体越来越不行了。然后懵懵地就到了晚上，基本不知道自己在作什么，晚上有点精神，配置了一下实验室的服务器，把redmine从lighttpd迁移到apache2+passenger2的环境，并把svn库整理了一下。服务器上的所有软件包作更新，删除掉无用的包，再换个sever的内核（Ubuntu系统，原来用generic内核），还有更新rubygems。顺便把服务器的配置写份文档，并写了几个配置脚本，以后交给师弟来弄了。由于把服务器配置为a2+p2所以试了一下部署，结果发现capistrano一些问题，下篇post再谈。</p>
<p>今天早上起来又很困，结果就顺便把自己的电脑的环境清理一下。上个星期因为自己编译了gnome2.24结果把整个gnome搞坏了，所以最近一直用着KDEmod，其实很不爽。这次就趁火打劫地把gnome和kdemod整个完整删掉，换个轻量级的环境，一开始是openbox+rox+fbpanel+feh，配置挺烦一下，弄到最后换成openbox+rox+lxpanel。中间折腾了一下panel，又折腾了一下session，还要分配好rox和openbox的分工（有多种分工方法，最后选了rox负责桌面背景但不接管桌面，openbox接管桌面菜单）。因为有段时间看过openbox和rox的文档，所以用起来觉得还挺习惯，快捷键的操作很爽。下午再把firefox清理了一下，直接删了配置目录，自己再去下插件，网速有些问题，弄了一个钟。晚上学习如何查英文paper，大概摸出个门道。</p>
<p>在配置服务器的时候发现Ubuntu和其它发行版的目录结构差好多，比如apache的配置方法和在arch和贱兔的差好多，模块和站点的设置竟然是要在XX-available目录的文件link到XX-enable目录中，不是直接写个文件丢进去。本来还想配个git仓库的，后来觉得算了。在清理系统时，发现旧的rubygems竟然占了1G多，原来很多过时的gems还呆在里面。遂运行gem cleanup，过程很漫长，觉得那个依赖计算也是有问题，而且有内存泄漏问题，竟然有段时间把我的内存吃完了（2G），不知道是程序的问题还是GC的问题。</p>
<p>什么叫放假，不干活就是放假。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/10/have-two-days-holiday/feed/</wfw:commentRss>
		</item>
		<item>
		<title>open source camp guangzhou小记</title>
		<link>http://www.chenk85.com/2008/09/open-source-camp-guangzhou-%e5%b0%8f%e8%ae%b0/</link>
		<comments>http://www.chenk85.com/2008/09/open-source-camp-guangzhou-%e5%b0%8f%e8%ae%b0/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 01:56:29 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[something]]></category>

		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://www.chenk85.com/?p=138</guid>
		<description><![CDATA[第一次参加开源活动，感觉不错，不过topic都是科普性质，有些失望。会议上其实cpug的大妈带了一帮人马来会课，还霸占了M1会议室+_+，而大部分topic都讲得比较科普。我去听的三个topic是老外讲agile，香港同胞讲香港活动，最后听了Pyer洗脑。petty chen和Pyer的前两个topic错过了。其中自己和老外有一些问答，感觉自己的英语至少有人能听得懂了，咔咔咔。和香港同胞有些讨论，会后想mail&#8217;他，可是发去的mail给弹回来了，他的msn，gtalk等都没有连上-_-
感觉这种活动是结交朋友为主的。看到很多传说中的大牛（其实很多不认识），如cpug的大妈（真人比相片年轻），petty chen，俞黎敏等等。和俞黎敏打了下招呼（他在blog post中提了下我^_^）。petty chen很有主持天赋。Pyer很拽。
PS：抽奖系统有点龊，不是随机序，是字母序循环，然后还不会自动去除已中奖的人，导致有人连拿两次奖。
会议相片在：
http://www.haokanbu.com/story/113420/
http://picasaweb.google.com/epaulin/OscampGuangzhou2008
]]></description>
			<content:encoded><![CDATA[<p>第一次参加开源活动，感觉不错，不过topic都是科普性质，有些失望。会议上其实cpug的大妈带了一帮人马来会课，还霸占了M1会议室+_+，而大部分topic都讲得比较科普。我去听的三个topic是老外讲agile，香港同胞讲香港活动，最后听了Pyer洗脑。petty chen和Pyer的前两个topic错过了。其中自己和老外有一些问答，感觉自己的英语至少有人能听得懂了，咔咔咔。和香港同胞有些讨论，会后想mail&#8217;他，可是发去的mail给弹回来了，他的msn，gtalk等都没有连上-_-</p>
<p>感觉这种活动是结交朋友为主的。看到很多传说中的大牛（其实很多不认识），如cpug的大妈（真人比相片年轻），petty chen，俞黎敏等等。和<a href="http://yulimin.javaeye.com/">俞黎敏</a>打了下招呼（他在<a href="http://yulimin.javaeye.com/blog/245167">blog post</a>中提了下我^_^）。petty chen很有主持天赋。Pyer很拽。</p>
<p>PS：抽奖系统有点龊，不是随机序，是字母序循环，然后还不会自动去除已中奖的人，导致有人连拿两次奖。</p>
<p>会议相片在：<br />
http://www.haokanbu.com/story/113420/<br />
http://picasaweb.google.com/epaulin/OscampGuangzhou2008</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/09/open-source-camp-guangzhou-%e5%b0%8f%e8%ae%b0/feed/</wfw:commentRss>
		</item>
		<item>
		<title>last year in hzu</title>
		<link>http://www.chenk85.com/2008/09/last-year-in-hzu/</link>
		<comments>http://www.chenk85.com/2008/09/last-year-in-hzu/#comments</comments>
		<pubDate>Thu, 18 Sep 2008 01:44:01 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[Thinking]]></category>

		<category><![CDATA[大学]]></category>

		<guid isPermaLink="false">http://www.chenk85.com/?p=136</guid>
		<description><![CDATA[这是在惠州学院的最后一年写下的。
一早起来就看到了pluskid的这篇post，看完后很想把自己的想法写下来。
从上学期末开始，我就一直泡在实验室，一边开发一边学习，和同学们也疏远了。到了大学的末期，和身边的人可以用分道扬镳这个词来形容，有的已经为了生活在外打拼，有的为了考研苦读，有的还是一直蹲在宿舍玩着游戏看着电影。每个人怀着不同的想法，正走在各人选择不同的路上。记得那时刚来到的时候，大家三五成群，一般都一个宿舍全体一起去吃饭，一起出去玩，或者是一个班的同学组织去什么活动。现在比较多时间是一个人骑着单车在去实验室的路上，或是搭着女友去上课。
现在每天都很忙，我是那种遇到了自己想做的事情就会接下来做的那样，不会考虑太多自己的时间精力等问题，所以现在身上事情挺多，同时要忙着3，4项事情，还要自己学习看书。但一旦答应了别人就要帮别人做完做好事情，不过以后我回把一段时间内要做的事情控制在2件左右，以我的精力并没用能力作那么多事情。
对于未来，经过一段时间的思考。大概已经有了答案。就是找份payment不错的remote work，这样就有很多时间学习。出国的梦想已经破灭，但是我还是想能有很多时间学习，但又不想考研不想在国内读研（另一方面国内考研难度也不低），所以基于这些考虑，这个选择是不错的，还可以留在惠州这里陪着女友。
最后一年，在搬出去外面住之前可能大部分时间都会在实验室里渡过。到了上学期末，托和索老师做项目的福，得到了这个实验室的资源。好像比较好的学校的话，都会有这种资源提供给学生的吧，而且是让学生自己以社团的形式参与并开发出一些东西，比如pluskid所在的浙大。希望这个实验室能够给更多的学生，带来好处，让他们能够在这里开发，学习，交流，这对于来到这间学校的学生来说，是莫大的好处。可是这仅仅是我个人的天真想法，这学期本来想吸纳一些07级的学生进来，可是经过考察和了解后，发现他们还是差远了，差远不是说技术人品等，而是觉悟想法，他们现在还没有那种老老实实呆在实验室学习的觉悟，也没有太多关于以后的想法。竟然还有一个因为想参与进来但不想带电脑来又不想没时间，一直在和我和老师做些原则上的无谓争论。最后只加进来了两个06级的师弟，结果还不错^_^真心地祝福后来的同学能够好好利用这个资源，提高自身的价值。
现在每天都很累，咖啡喝了不少，睡眠不足。不过前两天病了一下，在床上躺了两天，觉得很无聊，头又痛又晕基本不能工作。所以要好好保重好身体，要革命先得有革命的本钱。
要学习的东西还很多，人生才刚刚开始没多久，路还很长。
]]></description>
			<content:encoded><![CDATA[<p>这是在惠州学院的最后一年写下的。</p>
<p>一早起来就看到了pluskid的这篇<a href="http://pluskid.lifegoo.com/?p=455#comment-1608">post</a>，看完后很想把自己的想法写下来。</p>
<p>从上学期末开始，我就一直泡在实验室，一边开发一边学习，和同学们也疏远了。到了大学的末期，和身边的人可以用分道扬镳这个词来形容，有的已经为了生活在外打拼，有的为了考研苦读，有的还是一直蹲在宿舍玩着游戏看着电影。每个人怀着不同的想法，正走在各人选择不同的路上。记得那时刚来到的时候，大家三五成群，一般都一个宿舍全体一起去吃饭，一起出去玩，或者是一个班的同学组织去什么活动。现在比较多时间是一个人骑着单车在去实验室的路上，或是搭着女友去上课。</p>
<p>现在每天都很忙，我是那种遇到了自己想做的事情就会接下来做的那样，不会考虑太多自己的时间精力等问题，所以现在身上事情挺多，同时要忙着3，4项事情，还要自己学习看书。但一旦答应了别人就要帮别人做完做好事情，不过以后我回把一段时间内要做的事情控制在2件左右，以我的精力并没用能力作那么多事情。</p>
<p>对于未来，经过一段时间的思考。大概已经有了答案。就是找份payment不错的remote work，这样就有很多时间学习。出国的梦想已经破灭，但是我还是想能有很多时间学习，但又不想考研不想在国内读研（另一方面国内考研难度也不低），所以基于这些考虑，这个选择是不错的，还可以留在惠州这里陪着女友。</p>
<p>最后一年，在搬出去外面住之前可能大部分时间都会在实验室里渡过。到了上学期末，托和索老师做项目的福，得到了这个实验室的资源。好像比较好的学校的话，都会有这种资源提供给学生的吧，而且是让学生自己以社团的形式参与并开发出一些东西，比如pluskid所在的浙大。希望这个实验室能够给更多的学生，带来好处，让他们能够在这里开发，学习，交流，这对于来到这间学校的学生来说，是莫大的好处。可是这仅仅是我个人的天真想法，这学期本来想吸纳一些07级的学生进来，可是经过考察和了解后，发现他们还是差远了，差远不是说技术人品等，而是觉悟想法，他们现在还没有那种老老实实呆在实验室学习的觉悟，也没有太多关于以后的想法。竟然还有一个因为想参与进来但不想带电脑来又不想没时间，一直在和我和老师做些原则上的无谓争论。最后只加进来了两个06级的师弟，结果还不错^_^真心地祝福后来的同学能够好好利用这个资源，提高自身的价值。</p>
<p>现在每天都很累，咖啡喝了不少，睡眠不足。不过前两天病了一下，在床上躺了两天，觉得很无聊，头又痛又晕基本不能工作。所以要好好保重好身体，要革命先得有革命的本钱。</p>
<p>要学习的东西还很多，人生才刚刚开始没多久，路还很长。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/09/last-year-in-hzu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>rails i18n feature</title>
		<link>http://www.chenk85.com/2008/09/rails-i18n-feature/</link>
		<comments>http://www.chenk85.com/2008/09/rails-i18n-feature/#comments</comments>
		<pubDate>Thu, 11 Sep 2008 09:13:04 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[Promgramming]]></category>

		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.chenk85.com/?p=133</guid>
		<description><![CDATA[最近在其中一个项目中需要对Rails app进行i18n，时不时会查查Rails源码，昨日在insoshi的mailist中看到了这个link：
http://rails-i18n.org/wiki
建议对此有兴趣的人去看看，基本上把i18n都讲得比较清楚。其中还有个demo：
http://github.com/clemens/i18n_demo_app/tree/master
我clone下来看看后顺手就也加上了zh_CN的locale configure，我先fork了一个分支，花了一个钟，完工pull，不知什么时候才会被merge。大家如果想要了解Rails22的i18n可以看看我汉化过的Demo，enjoy：
http://github.com/maninred/i18n_demo_app
Rails越来越多功能，但也越来越臃肿了。还可以看到Ruby也有很多i18n资源。
]]></description>
			<content:encoded><![CDATA[<p>最近在其中一个项目中需要对Rails app进行i18n，时不时会查查Rails源码，昨日在insoshi的mailist中看到了这个link：</p>
<p><a href="http://rails-i18n.org/wiki">http://rails-i18n.org/wiki</a></p>
<p>建议对此有兴趣的人去看看，基本上把i18n都讲得比较清楚。其中还有个demo：</p>
<p><a href="http://github.com/clemens/i18n_demo_app/tree/master">http://github.com/clemens/i18n_demo_app/tree/master</a></p>
<p>我clone下来看看后顺手就也加上了zh_CN的locale configure，我先fork了一个分支，花了一个钟，完工pull，不知什么时候才会被merge。大家如果想要了解Rails22的i18n可以看看我汉化过的Demo，enjoy：</p>
<p><a href="http://github.com/maninred/i18n_demo_app">http://github.com/maninred/i18n_demo_app</a></p>
<p>Rails越来越多功能，但也越来越臃肿了。还可以看到Ruby也有很多i18n资源。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/09/rails-i18n-feature/feed/</wfw:commentRss>
		</item>
		<item>
		<title>check spelling on rails</title>
		<link>http://www.chenk85.com/2008/09/check-spelling-on-rails/</link>
		<comments>http://www.chenk85.com/2008/09/check-spelling-on-rails/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 17:38:21 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Promgramming]]></category>

		<category><![CDATA[Rails]]></category>

		<category><![CDATA[rails plugins]]></category>

		<guid isPermaLink="false">http://www.chenk85.com/?p=123</guid>
		<description><![CDATA[A few days ago I need to do spell checking for a rails project, but can&#8217;t find a ready-to-use plugin, so I implemented one.
I use the Aspell Lib to do the checking work, and ajax for editing.
First you need to install the Aspell and at lease one dictionary. 
Mac:
  sudo port install aspell aspell-dict-en
Ubuntu:
 [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago I need to do spell checking for a rails project, but can&#8217;t find a ready-to-use plugin, so I implemented one.</p>
<p>I use the<a href="http://aspell.net/"> Aspell </a>Lib to do the checking work, and ajax for editing.</p>
<p>First you need to install the Aspell and at lease one dictionary. </p>
<p>Mac:<br />
<strong>  sudo port install aspell aspell-dict-en</strong></p>
<p>Ubuntu:<br />
<strong>  sudo apt-get install aspell libaspell-dev aspell-en</strong></p>
<p>Arch:<br />
<strong>  sudo pacman -S aspell aspell-en </strong></p>
<p>And install the Aspell Ruby binding: <a href="http://github.com/fauna/raspell/tree/master">raspell</a></p>
<p><strong>    sudo gem install raspell</strong></p>
<p>Add a controller:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;"># app/controllers/spelling_controller.rb</span></li>
<li><span style="color: Green;">class</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">SpellingController</span><span style="color: Gray;"> &lt;&lt; </span><span style="color: Blue;">ApplicationController</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">def</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">check</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">render</span><span style="color: Gray;"> :</span><span style="color: Blue;">update</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">do</span><span style="color: Gray;"> |</span><span style="color: Blue;">page</span><span style="color: Gray;">|</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">page</span><span style="color: Gray;">.</span><span style="color: Blue;">replace_html</span><span style="color: Gray;">&nbsp;</span><span style="color: #8b0000;">'</span><span style="color: Red;">check-result</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Blue;">SpellingChecker</span><span style="color: Gray;">.</span><span style="color: Blue;">check_spell</span><span style="color: Olive;">(</span><span style="color: Blue;">params</span><span style="color: Olive;">[</span><span style="color: Gray;">:</span><span style="color: Blue;">text</span><span style="color: Olive;">])</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">end</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">end</span></li>
<li><span style="color: Green;">end</span></li></ol></div>
<p>Add a SpellingChecker Class to Lib</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;"># lib/spelling_checker.rb</span></li>
<li><span style="color: Green;">class</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">SpellingChecker</span></li>
<li><span style="color: Gray;">&nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">def</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">self</span><span style="color: Gray;">.</span><span style="color: Blue;">check_spell</span><span style="color: Gray;"> </span><span style="color: Blue;">text</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">speller</span><span style="color: Gray;"> = </span><span style="color: Blue;">Aspell</span><span style="color: Gray;">.</span><span style="color: Blue;">new</span><span style="color: Olive;">(</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">en_US</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">speller</span><span style="color: Gray;">.</span><span style="color: Blue;">suggestion_mode</span><span style="color: Gray;"> = </span><span style="color: Blue;">Aspell</span><span style="color: Gray;">::</span><span style="color: Blue;">NORMAL</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">wrongs</span><span style="color: Gray;"> = </span><span style="color: Olive;">[]</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">text</span><span style="color: Gray;">.</span><span style="color: Blue;">gsub</span><span style="color: Olive;">(</span><span style="color: #8b0000;">/</span><span style="color: Red;">[</span><span style="color: Navy;">\w\'</span><span style="color: Red;">]+</span><span style="color: #8b0000;">/</span><span style="color: Olive;">)</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">do</span><span style="color: Gray;"> |</span><span style="color: Blue;">word</span><span style="color: Gray;">|</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">wrongs</span><span style="color: Gray;"> &lt;&lt; </span><span style="color: Blue;">word</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">unless</span><span style="color: Gray;"> </span><span style="color: Blue;">speller</span><span style="color: Gray;">.</span><span style="color: Blue;">check</span><span style="color: Olive;">(</span><span style="color: Blue;">word</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">end</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Blue;">wrongs</span><span style="color: Gray;">.</span><span style="color: Blue;">uniq</span><span style="color: Gray;">.</span><span style="color: Blue;">each</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">do</span><span style="color: Gray;"> |</span><span style="color: Blue;">wrong</span><span style="color: Gray;">|</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">text</span><span style="color: Gray;">.</span><span style="color: Blue;">sub</span><span style="color: Gray;">!</span><span style="color: Olive;">(</span><span style="color: Blue;">wrong</span><span style="color: Gray;">, </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">&lt;span class='wrong'&gt;#{wrong}&lt;/span&gt;</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">end</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">text</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">end</span></li>
<li><span style="color: Gray;">&nbsp; </span></li>
<li><span style="color: Green;">end</span></li></ol></div>
<p>in the view:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">label</span><span style="color: Gray;"> </span><span style="color: #00008b;">for</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">description</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">Description: </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">label</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">check-desc</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">style</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">display:none;</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Gray;">%=</span><span style="color: #00008b;">link_to_function</span><span style="color: Gray;"> '</span><span style="color: #00008b;">Resume</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">editing</span><span style="color: Gray;">', </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">ttoggleChecking()</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> %</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">br</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">check-result</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">Checking...</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">edit-desc</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Gray;">%=</span><span style="color: #00008b;">link_to_function</span><span style="color: Gray;"> '</span><span style="color: #00008b;">Check</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">spelling</span><span style="color: Gray;">', </span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">new Ajax.Updater({ success:toggleChecking()}, </span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '/spelling/check', </span></li>
<li><span style="color: Red;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {method:'get', parameters:{text:$F('ticket_description')}});</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> %</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">br</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Gray;">%= </span><span style="color: #00008b;">f</span><span style="color: Gray;">.</span><span style="color: #00008b;">text_area</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">:description</span><span style="color: Gray;">, </span><span style="color: #00008b;">:cols</span><span style="color: Gray;"> =</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"> 84, :rows =&gt; 10 %&gt;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">='</span><span style="color: #00008b;">text</span><span style="color: Gray;">/</span><span style="color: Green;">javascript</span><span style="color: Gray;">'</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; function toggleChecking() {</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; $('edit-desc', 'check-desc').invoke('toggle');</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>This is what it looks like:</p>
<p><a href="http://www.chenk85.com/wp-content/uploads/2008/09/feedbackmine.png"><img src="http://www.chenk85.com/wp-content/uploads/2008/09/feedbackmine.png" alt="" title="check_spelling1" width="500" height="167" class="aligncenter size-full wp-image-128" /></a></p>
<p><a href="http://www.chenk85.com/wp-content/uploads/2008/09/feedbackmine2.png"><img src="http://www.chenk85.com/wp-content/uploads/2008/09/feedbackmine2.png" alt="" title="checkspelling2" width="500" height="168" class="aligncenter size-full wp-image-129" /></a></p>
<p><a href="http://www.chenk85.com/wp-content/uploads/2008/09/feedbackmine3.png"><img src="http://www.chenk85.com/wp-content/uploads/2008/09/feedbackmine3.png" alt="" title="checkspelling3" width="500" height="172" class="aligncenter size-full wp-image-130" /></a></p>
<p>That is it, quite sample, isn&#8217;t it? I would like to make a plugin for it, but no much time recently.</p>
<p>Thank yawl for pointing out my grammar misstake.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/09/check-spelling-on-rails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>原来有个GitHost</title>
		<link>http://www.chenk85.com/2008/09/%e5%8e%9f%e6%9d%a5%e6%9c%89%e4%b8%aagithost/</link>
		<comments>http://www.chenk85.com/2008/09/%e5%8e%9f%e6%9d%a5%e6%9c%89%e4%b8%aagithost/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 08:41:52 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[something]]></category>

		<category><![CDATA[git]]></category>

		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://www.chenk85.com/?p=120</guid>
		<description><![CDATA[今天本来想为项目组配置个Git Repos，因为在merge和branch问题上svn还是不如Git的。
于是Google一下git,host，结果就发现了一个中文的提供Git Hosting service的githost.cn。貌似参照gitorious.org做的，现在上面也才几个项目，都和MacOSX相关，看来作者是个Macer ^_^
好像国内没有比较出色的Repos Hosting Service提供商，也可能是我孤陋寡闻。可能国内的开源文化不够，国内的线上开发协作行为不多。反而国外的蛮多的，比如unfuddle（最近一直在用，不错的说），assembla.com，bitbucket.org，github.com（Ruby社区的新宠），Lighthouseapp。
一直觉得国内协作平台火不起来，其中的佼佼者，有mangbar，everydo（润普的Py web app，另润普的广州分公司正在招Pyer）。可是国内没有开发协作平台，或者我没有发现，貌似大家的开源项目都放在googlecode上，或sourceforge，或github。
祝愿GitHost.cn能越做越好，能填补国内这个方面的空白。其实我自己想做一个国内的中文的高质量的开发协作平台，毕竟有这种平台对推进国内的开源文化有好处。
]]></description>
			<content:encoded><![CDATA[<p>今天本来想为项目组配置个Git Repos，因为在merge和branch问题上svn还是不如Git的。</p>
<p>于是Google一下git,host，结果就发现了一个中文的提供Git Hosting service的githost.cn。貌似参照gitorious.org做的，现在上面也才几个项目，都和MacOSX相关，看来作者是个Macer ^_^</p>
<p>好像国内没有比较出色的Repos Hosting Service提供商，也可能是我孤陋寡闻。可能国内的开源文化不够，国内的线上开发协作行为不多。反而国外的蛮多的，比如unfuddle（最近一直在用，不错的说），assembla.com，bitbucket.org，github.com（Ruby社区的新宠），Lighthouseapp。</p>
<p>一直觉得国内协作平台火不起来，其中的佼佼者，有mangbar，everydo（润普的Py web app，另润普的广州分公司正在招Pyer）。可是国内没有开发协作平台，或者我没有发现，貌似大家的开源项目都放在googlecode上，或sourceforge，或github。</p>
<p>祝愿GitHost.cn能越做越好，能填补国内这个方面的空白。其实我自己想做一个国内的中文的高质量的开发协作平台，毕竟有这种平台对推进国内的开源文化有好处。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/09/%e5%8e%9f%e6%9d%a5%e6%9c%89%e4%b8%aagithost/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby也要解放IO</title>
		<link>http://www.chenk85.com/2008/08/ruby%e4%b9%9f%e8%a6%81%e8%a7%a3%e6%94%beio/</link>
		<comments>http://www.chenk85.com/2008/08/ruby%e4%b9%9f%e8%a6%81%e8%a7%a3%e6%94%beio/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 17:57:26 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[Promgramming]]></category>

		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.chenk85.com/?p=118</guid>
		<description><![CDATA[Ruby1.9的库，NerverBlock，非阻塞IO。
http://www.espace.com.eg/neverblock
看看它的官网上的benchmarks就知道真的是解放。
]]></description>
			<content:encoded><![CDATA[<p>Ruby1.9的库，NerverBlock，非阻塞IO。</p>
<p>http://www.espace.com.eg/neverblock</p>
<p>看看它的官网上的benchmarks就知道真的是解放。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/08/ruby%e4%b9%9f%e8%a6%81%e8%a7%a3%e6%94%beio/feed/</wfw:commentRss>
		</item>
		<item>
		<title>a rspec cheetsheet</title>
		<link>http://www.chenk85.com/2008/08/a-rspec-cheetsheet/</link>
		<comments>http://www.chenk85.com/2008/08/a-rspec-cheetsheet/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 15:41:11 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[Promgramming]]></category>

		<category><![CDATA[BDD]]></category>

		<category><![CDATA[rspec]]></category>

		<guid isPermaLink="false">http://www.chenk85.com/?p=111</guid>
		<description><![CDATA[from:http://coldfire.org.ua/blog/?p=26
a rspec cheetsheet, cool!

download: http://coldfire.org.ua/blog/wp-content/uploads/2007/04/rspec_cheetsheet.png
]]></description>
			<content:encoded><![CDATA[<p>from:<a href="http://coldfire.org.ua/blog/?p=26">http://coldfire.org.ua/blog/?p=26</a></p>
<p>a rspec cheetsheet, cool!</p>
<p><img src="http://coldfire.org.ua/blog/wp-content/uploads/2007/04/rspec_cheetsheet.thumbnail.png" alt="rspec cheetsheet thumbail" /></p>
<p>download: <a href="http://coldfire.org.ua/blog/wp-content/uploads/2007/04/rspec_cheetsheet.png">http://coldfire.org.ua/blog/wp-content/uploads/2007/04/rspec_cheetsheet.png</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/08/a-rspec-cheetsheet/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Move to here</title>
		<link>http://www.chenk85.com/2008/08/move-to-here/</link>
		<comments>http://www.chenk85.com/2008/08/move-to-here/#comments</comments>
		<pubDate>Fri, 22 Aug 2008 06:24:32 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[something]]></category>

		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://www.chenk85.com/?p=108</guid>
		<description><![CDATA[终于把Blog搬到这里了，感谢提供主机的Yi。
domain：chenk85.com
Feed: feeds.feedburner.com/red_world
本来想用mephisto的，结果发现太麻烦，算了。
]]></description>
			<content:encoded><![CDATA[<p>终于把Blog搬到这里了，感谢提供主机的Yi。</p>
<p>domain：<a href="http://chenk85.com">chenk85.com</a></p>
<p>Feed: <a href="http://feeds.feedburner.com/red_world">feeds.feedburner.com/red_world</a></p>
<p>本来想用mephisto的，结果发现太麻烦，算了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/08/move-to-here/feed/</wfw:commentRss>
		</item>
		<item>
		<title>a few interesting rails plugin</title>
		<link>http://www.chenk85.com/2008/08/a-few-interesting-rails-plugin/</link>
		<comments>http://www.chenk85.com/2008/08/a-few-interesting-rails-plugin/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 14:43:02 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[Promgramming]]></category>

		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://redworld.blog.ubuntu.org.cn/2008/08/06/a-few-rails-plugin-project/</guid>
		<description><![CDATA[最近开发中遇到一些有趣的rails pulgin，好像国内连介绍都没有，所以打算写写。
Rails Widgets
http://www.seesaw.it/en/toolbox/widgets/
一个DSLful的Page widgets plugin，让你简单地在页面上添加各种widgets，如tab，nav等，这些似乎是现在页面上不可或缺的页面元素。这个框架旨在减少手工维护这些widgets的代价，手工维护的话，so buggy！
具体看其演示文档可以看到它是干嘛的。

Bj
http://codeforpeople.rubyforge.org/svn/bj
一个让Rails参与管理Server上后台进程（background job）的plugin。这样有什么好处呢？如果你前台Rails app是使用了后台的某些服务的，那这个插件就非常有用了。
不过这个plugin非常少资料，只能从它的README中获得比较多的信息。
&#8230;&#8230;
]]></description>
			<content:encoded><![CDATA[<p>最近开发中遇到一些有趣的rails pulgin，好像国内连介绍都没有，所以打算写写。</p>
<p><strong>Rails Widgets</strong></p>
<p>http://www.seesaw.it/en/toolbox/widgets/</p>
<p>一个DSLful的Page widgets plugin，让你简单地在页面上添加各种widgets，如tab，nav等，这些似乎是现在页面上不可或缺的页面元素。这个框架旨在减少手工维护这些widgets的代价，手工维护的话，so buggy！</p>
<p>具体看<a href="http://www.slideshare.net/paolo.dona/rails-widgets-by-paolo-dona-at-railstoitaly">其演示文档</a>可以看到它是干嘛的。</p>
<hr />
<p><strong>Bj</strong></p>
<p>http://codeforpeople.rubyforge.org/svn/bj</p>
<p>一个让Rails参与管理Server上后台进程（background job）的plugin。这样有什么好处呢？如果你前台Rails app是使用了后台的某些服务的，那这个插件就非常有用了。</p>
<p>不过这个plugin非常少资料，只能从它的<a href="http://codeforpeople.rubyforge.org/svn/bj/trunk/README">README</a>中获得比较多的信息。</p>
<p>&#8230;&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/08/a-few-interesting-rails-plugin/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Get Start Java Network App Dev</title>
		<link>http://www.chenk85.com/2008/08/get-start-java-network-app-dev/</link>
		<comments>http://www.chenk85.com/2008/08/get-start-java-network-app-dev/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 14:26:10 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[Promgramming]]></category>

		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://redworld.blog.ubuntu.org.cn/2008/08/06/get-start-java-network-app-dev/</guid>
		<description><![CDATA[如果你要开发一个Java的network app，有很多不错的opensource project帮助你开始开发。
比较基础和底层的话可以试试HttpClient，hc.apache.org，按照它官方的教程，六步走。这个框架提供了Http访问的能力，加上Java的multithread能力，虽然效率不及noblocking io那么高但胜在文档资料多。这个一个初学者的好起点。
高级点的就是mina，mina.apache.org，一个高性能高扩展能力的network app框架。基于Java的nio，并发能力得以保证，并在比较高层次进行封装。不过这个东西文档不多是弱点。值得一提的是Logo，so Cool。
当你的network app需要大量的数据处理时，使用hadoop是个不错解决方案，hadoop.apache.org/。这个MapReduce实现，非常著名，不用我废话了:P Hbase是Hadoop的一个子项目，是Bigtable的实现。Hbase有Ruby的客户端，Hbase-ruby。
另hypertable也是一个值得注意的Bigtable实现，hypertable.org。
现在的Network app常常需要有搜索功能，这时就需要Lunece，Solr，Nutch啦。Lunece也是不用介绍的。Solr很多人也熟悉，一个企业级搜索服务器，是Lunece的的扩展，提供了web管理界面等。Netch，一个通用型的Web搜索引擎，其实就一大Crawler，他的存储基于hadoop，原dadoop是其子项目。
以上的项目好像基本上都是Apache的Project，现在的Apache项目都有Wiki了，以前貌似没有，进步了。
这就是我最近开发Crawler遇到的几个Java Framework。
]]></description>
			<content:encoded><![CDATA[<p>如果你要开发一个Java的network app，有很多不错的opensource project帮助你开始开发。</p>
<p>比较基础和底层的话可以试试HttpClient，<a href="http://hc.apache.org">hc.apache.org</a>，按照它官方的教程，六步走。这个框架提供了Http访问的能力，加上Java的multithread能力，虽然效率不及noblocking io那么高但胜在文档资料多。这个一个初学者的好起点。</p>
<p>高级点的就是mina，<a href="http://mina.apache.org">mina.apache.org</a>，一个高性能高扩展能力的network app框架。基于Java的nio，并发能力得以保证，并在比较高层次进行封装。不过这个东西文档不多是弱点。值得一提的是Logo，so Cool。</p>
<p>当你的network app需要大量的数据处理时，使用hadoop是个不错解决方案，<a href="http://hadoop.apache.org">hadoop.apache.org/</a>。这个MapReduce实现，非常著名，不用我废话了:P Hbase是Hadoop的一个子项目，是Bigtable的实现。Hbase有Ruby的客户端，Hbase-ruby。</p>
<p>另hypertable也是一个值得注意的Bigtable实现，<a href="http://www.hypertable.org/">hypertable.org</a>。</p>
<p>现在的Network app常常需要有搜索功能，这时就需要Lunece，Solr，Nutch啦。Lunece也是不用介绍的。Solr很多人也熟悉，一个企业级搜索服务器，是Lunece的的扩展，提供了web管理界面等。Netch，一个通用型的Web搜索引擎，其实就一大Crawler，他的存储基于hadoop，原dadoop是其子项目。</p>
<p>以上的项目好像基本上都是Apache的Project，现在的Apache项目都有Wiki了，以前貌似没有，进步了。</p>
<p>这就是我最近开发Crawler遇到的几个Java Framework。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/08/get-start-java-network-app-dev/feed/</wfw:commentRss>
		</item>
		<item>
		<title>思考着Blog搬家</title>
		<link>http://www.chenk85.com/2008/07/%e6%80%9d%e8%80%83%e7%9d%80blog%e6%90%ac%e5%ae%b6/</link>
		<comments>http://www.chenk85.com/2008/07/%e6%80%9d%e8%80%83%e7%9d%80blog%e6%90%ac%e5%ae%b6/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 17:20:50 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[Thinking]]></category>

		<category><![CDATA[something]]></category>

		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://redworld.blog.ubuntu.org.cn/2008/07/28/%e6%80%9d%e8%80%83%e7%9d%80blog%e6%90%ac%e5%ae%b6/</guid>
		<description><![CDATA[最近手头有点闲钱，想去注册一个域名和买个空间，放上自己的Blog，Wiki。等完成后就会结束自己的Blog搬家历史，从msn space，到csdn blog，到blogjava，再到ruby-lang.org.cn，现在到这里的blog.ubuntu.org.cn，如果自己没有资源，或者还会再搬。因为随着对Blog的使用时间增加，慢慢会清楚自己的对Blog的需求有什么。如果自己有资源，那很多需求就可以自己实现。
Blog可能会用typo，因为比较好折腾，如果用WP，自己想去改也会很麻烦。wiki，不知道会不会自己开发个，或者用instiki，再写些JavaScript，放在greasemonkey，然后就可以像Google Note那样，一选一点就可以把选中的资料加到wiki中。
不知道有什么比较好的Rails主机介绍。。。
最近真的很忙，每天大量的开发，还有学习着很多新的东西（从同事从网络从书本）。有两篇Blog想写，但是没有时间写，一篇是只写了一个开头的《Ruby GUI开发思考》还有一篇关于开发中的测试的心得和思考。本来还想着7月份，Weblog能过百篇，现在看来。。。
我太懒了:P
]]></description>
			<content:encoded><![CDATA[<p>最近手头有点闲钱，想去注册一个域名和买个空间，放上自己的Blog，Wiki。等完成后就会结束自己的Blog搬家历史，从msn space，到csdn blog，到blogjava，再到ruby-lang.org.cn，现在到这里的blog.ubuntu.org.cn，如果自己没有资源，或者还会再搬。因为随着对Blog的使用时间增加，慢慢会清楚自己的对Blog的需求有什么。如果自己有资源，那很多需求就可以自己实现。</p>
<p>Blog可能会用typo，因为比较好折腾，如果用WP，自己想去改也会很麻烦。wiki，不知道会不会自己开发个，或者用instiki，再写些JavaScript，放在greasemonkey，然后就可以像Google Note那样，一选一点就可以把选中的资料加到wiki中。</p>
<p>不知道有什么比较好的Rails主机介绍。。。</p>
<p>最近真的很忙，每天大量的开发，还有学习着很多新的东西（从同事从网络从书本）。有两篇Blog想写，但是没有时间写，一篇是只写了一个开头的《Ruby GUI开发思考》还有一篇关于开发中的测试的心得和思考。本来还想着7月份，Weblog能过百篇，现在看来。。。</p>
<p>我太懒了:P</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/07/%e6%80%9d%e8%80%83%e7%9d%80blog%e6%90%ac%e5%ae%b6/feed/</wfw:commentRss>
		</item>
		<item>
		<title>a bug in attachment_fu</title>
		<link>http://www.chenk85.com/2008/07/a-bug-in-attachment_fu/</link>
		<comments>http://www.chenk85.com/2008/07/a-bug-in-attachment_fu/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 17:04:42 +0000</pubDate>
		<dc:creator>chen kai</dc:creator>
		
		<category><![CDATA[Promgramming]]></category>

		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://redworld.blog.ubuntu.org.cn/2008/07/28/a-bug-in-attachment_fu/</guid>
		<description><![CDATA[attachment_fu ，一个Rails插件，帮助你轻松处理文件上传。
最近使用它时遇到一个bug，其中用到了它的s3存储管理，发现如果没有指定缩略的参数时更新会出错，看了一下原来是默认参数nil出的错，当在File#join路径时，会调用每个参数的to_s方法，这样nil.to_s当然就出错了。或许，大家使用s3存储，并使用了attachment_fu时都存的是缩略图，所以没有遇到这个bug吧。这个错误只出现在update时，报的错是type error。
# line 196
def&#160;full_filename(thumbnail = nil)
&#160; File.join(base_path, thumbnail_name_for(thumbnail))
end
我已经fix了这个bug，并ci到attachment_fu在github的repo。
fix s3 no thumbnail update error bug 
mark一篇文章，关于如何在github上ci path：
http://railsontherun.com/2008/3/3/how-to-use-github-and-submit-a-patch
这是我第一次向开源项目提交代码^_^
]]></description>
			<content:encoded><![CDATA[<p>attachment_fu ，一个Rails插件，帮助你轻松处理文件上传。</p>
<p>最近使用它时遇到一个bug，其中用到了它的s3存储管理，发现如果没有指定缩略的参数时更新会出错，看了一下原来是默认参数nil出的错，当在File#join路径时，会调用每个参数的to_s方法，这样nil.to_s当然就出错了。或许，大家使用s3存储，并使用了attachment_fu时都存的是缩略图，所以没有遇到这个bug吧。这个错误只出现在update时，报的错是type error。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: #ffa500;"># line 196</span></li>
<li><span style="color: Green;">def</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">full_filename</span><span style="color: Olive;">(</span><span style="color: Blue;">thumbnail</span><span style="color: Gray;"> = </span><span style="color: Green;">nil</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Blue;">File</span><span style="color: Gray;">.</span><span style="color: Blue;">join</span><span style="color: Olive;">(</span><span style="color: Blue;">base_path</span><span style="color: Gray;">, </span><span style="color: Blue;">thumbnail_name_for</span><span style="color: Olive;">(</span><span style="color: Blue;">thumbnail</span><span style="color: Olive;">))</span></li>
<li><span style="color: Green;">end</span></li></ol></div>
<p>我已经fix了这个bug，并ci到attachment_fu在github的repo。</p>
<p><a href="http://github.com/maninred/attachment_fu/commit/0b4a4b12760e3ba537b2eab468f4af49fb7ef5a0">fix s3 no thumbnail update error bug </a></p>
<p>mark一篇文章，关于如何在github上ci path：<br />
<a href="http://railsontherun.com/2008/3/3/how-to-use-github-and-submit-a-patch">http://railsontherun.com/2008/3/3/how-to-use-github-and-submit-a-patch</a></p>
<p>这是我第一次向开源项目提交代码^_^</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chenk85.com/2008/07/a-bug-in-attachment_fu/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
