<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/iceskysl_1sters" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/iceskysl_1sters" type="application/rss+xml"></fs:self_link><lastBuildDate>Fri, 05 Sep 2008 18:20:00 GMT</lastBuildDate><title>IceskYsl@1sters!</title><description>我只是个懂点安全对于互联网充满期待的程序员…</description><image><url>http://www.feedsky.com/feed/iceskysl_1sters/sc/gif</url><title>IceskYsl@1sters!</title><link>http://iceskysl.1sters.com/</link></image><link>http://iceskysl.1sters.com/</link><copyright>Copyright (C) 2004 Security Angel Team [S4T] All Rights Reserved.</copyright><pubDate>Sat, 06 Sep 2008 06:33:51 GMT</pubDate><item><title>NEVERBLOCK支持Ruby1.8,性能对比测试,提升非常显著</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/111529743/4135566/1/item.html</link><description>&lt;p&gt;前面有篇文章介绍了NeverBlock，其一篇是&lt;a href=&quot;../../../?action=show&amp;amp;id=369&quot;&gt;关于NeverBlock 原理介绍&lt;/a&gt;的，另外一篇是&lt;a href=&quot;../../../?action=show&amp;amp;id=380&quot;&gt;在ruby1.9下做的对比测&lt;/a&gt;试，当时我们说：接下来，，需要等待Ruby1.9和Rails2.2的到来，加上如上的测试对比，可以想象得到，Rails的性能会上很大一个台阶的。现在有个好消息是，NeverBlock支持了Ruby1.8（通过一些手法），这次看到其更新的特性如下：&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&amp;nbsp;&amp;nbsp; NeverBlock now supports Ruby1.8.&lt;/li&gt;
    &lt;li&gt;&amp;nbsp;&amp;nbsp; NeverBlock support for Thin and Mongrel servers.&lt;/li&gt;
    &lt;li&gt;&amp;nbsp;&amp;nbsp; NeverBlock now supports Ruby on Rails.on&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;也就是说，现在NeverBlock支持Ruby1.8，支持Thin和mongrel服务器，另外支持Rails，测试方法很简单：&lt;br /&gt;
&lt;strong&gt;1、安装需要的额外的系统类库&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;Shell代码&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-rb&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;apt-get&amp;nbsp;install&amp;nbsp;libmysql++-dev&amp;nbsp; &lt;br /&gt;
    &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;2、安装需要的gems&lt;/strong&gt;&lt;br /&gt;
下载这几个包，&lt;font color=&quot;#ff0000&quot;&gt;&lt;span style=&quot;border-collapse: separate; color: rgb(255, 255, 255); font-family: Arial; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot; class=&quot;Apple-style-span&quot;&gt;&lt;font color=&quot;#339966&quot;&gt;NeverBlock (&lt;a style=&quot;outline-width: 0px; cursor: pointer; color: rgb(255, 255, 255);&quot; href=&quot;http://github.com/espace/neverblock/zipball/master&quot;&gt;zip&lt;/a&gt;|&lt;a style=&quot;outline-width: 0px; cursor: pointer; color: rgb(255, 255, 255);&quot; href=&quot;http://github.com/espace/neverblock/tarball/master&quot;&gt;tar.gz&lt;/a&gt;), Mysqlplus (&lt;a style=&quot;outline-width: 0px; cursor: pointer; color: rgb(255, 255, 255);&quot; href=&quot;http://github.com/espace/mysqlplus/zipball/master&quot;&gt;zip&lt;/a&gt;|&lt;a style=&quot;outline-width: 0px; cursor: pointer; color: rgb(255, 255, 255);&quot; href=&quot;http://github.com/espace/mysqlplus/tarball/master&quot;&gt;tar.gz&lt;/a&gt;), EventMachine (&lt;a style=&quot;outline-width: 0px; cursor: pointer; color: rgb(255, 255, 255);&quot; href=&quot;http://github.com/espace/eventmachine/zipball/master&quot;&gt;zip&lt;/a&gt;|&lt;a style=&quot;outline-width: 0px; cursor: pointer; color: rgb(255, 255, 255);&quot; href=&quot;http://github.com/espace/eventmachine/tarball/master&quot;&gt;tar.gz&lt;/a&gt;&lt;/font&gt;)&lt;/span&gt;&lt;/font&gt;，&lt;br /&gt;
然后解压各自包；tar -zxvf (respective file name).tar.gz&lt;br /&gt;
然后CD到各自目录中build成gem；gem build (respective file name).gemspec&lt;br /&gt;
最后gen install；gem install (generated file name).gem&lt;br /&gt;
&lt;strong&gt;3、修改environment.rb&lt;/strong&gt;&lt;br /&gt;
require 'never_block/frameworks/rails' &lt;br /&gt;
require 'never_block/servers/thin'（如果是mongrel，则require 'never_block/servers/mongrel'）&lt;br /&gt;
&lt;strong&gt;4、修改database.yml&lt;/strong&gt;&lt;br /&gt;
adapter: neverblock_mysql （如果是postgresql，则为 adapter: neverblock_postgresql ）&lt;br /&gt;
connections: 12 # will spawn 12 connections instead of the defualt 4 #连接数&lt;br /&gt;
&lt;strong&gt;5、重启thin（mongrel即可）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;以上步骤没有问题，我已经测试过了。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;下面附几个别人做的对比测试：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;测试环境如下：&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-xml&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;Rails&amp;nbsp;2.1&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;Thin&amp;nbsp;0.82&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;Ruby&amp;nbsp;1.8.6&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;MySQL&amp;nbsp;5.0&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;A&amp;nbsp;special&amp;nbsp;build&amp;nbsp;of&amp;nbsp;EventMachine&amp;nbsp;0.12&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;系统负载构造：&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-xml&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;1&amp;nbsp;-&amp;nbsp;Moderate&amp;nbsp;work&amp;nbsp;load,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;one&amp;nbsp;slow&amp;nbsp;request&amp;nbsp;for&amp;nbsp;every&amp;nbsp;050&amp;nbsp;requests&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;2&amp;nbsp;-&amp;nbsp;Heavy&amp;nbsp;work&amp;nbsp;load,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;one&amp;nbsp;slow&amp;nbsp;request&amp;nbsp;for&amp;nbsp;every&amp;nbsp;020&amp;nbsp;requests&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;3&amp;nbsp;-&amp;nbsp;Very&amp;nbsp;heavy&amp;nbsp;work&amp;nbsp;load,&amp;nbsp;&amp;nbsp;one&amp;nbsp;slow&amp;nbsp;request&amp;nbsp;for&amp;nbsp;every&amp;nbsp;010&amp;nbsp;requests&amp;nbsp; &lt;br /&gt;
    &lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;结果如下：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Rails Performance (Thin Vs.NeverBlock::Thin)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.espace.com.eg/assets/neverblock/images/charts/8.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;NeverBlock::Thin scaling&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.espace.com.eg/assets/neverblock/images/charts/10.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Memory Consumption (Thin Vs. NeverBlock::Thin)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.espace.com.eg/assets/neverblock/images/charts/11.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;PS：刚刚发布的时候存在一个find_by_sql的bug，现在已经修复了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;参考文档：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.espace.com.eg/neverblock/blog/2008/09/04/neverblock-instant-scaling-for-your-rails-apps/&quot;&gt;http://www.espace.com.eg/neverblock/blog/2008/09/04/neverblock-instant-scaling-for-your-rails-apps/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://chinaonrails.com/topic/view/2123.html&quot;&gt;http://chinaonrails.com/topic/view/2123.html&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=383&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=e9bafacd3a6813a0fe41720eda377e23&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=e9bafacd3a6813a0fe41720eda377e23&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=63d002a6553a74764b17dc6d3618ba16&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=63d002a6553a74764b17dc6d3618ba16&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=3">技术归总 | Technic</category><pubDate>Sat, 06 Sep 2008 02:20:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=383</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=383</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/111529743/4135566</fs:itemid></item><item><title>[Rails]Rails 2.1.1发布，包括众多更新</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/111513190/4135566/1/item.html</link><description>&lt;p&gt;Rails2.1.1版本发布，修复了前面说到的&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=362&quot;&gt;REXML的漏洞&lt;/a&gt;，其他都是一些小修小补，不值一提，但是令人期待的是后续的Rails2.2版本，按照DHH的说法：&lt;em&gt;&lt;span style=&quot;border-collapse: separate; color: rgb(51, 51, 51); font-family: georgia; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot; class=&quot;Apple-style-span&quot;&gt;Next upcoming release will be Rails 2.2 beta which is quite close.&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;border-collapse: separate; color: rgb(51, 51, 51); font-family: georgia; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot; class=&quot;Apple-style-span&quot;&gt;Rails2.2的一些特性，比如&lt;a href=&quot;../../../?action=show&amp;amp;id=370&quot;&gt;全球化支持&lt;/a&gt;，增加&lt;a href=&quot;../../../?action=show&amp;amp;id=371&quot;&gt;线程安全&lt;/a&gt;等几个是我们已经知道的，其他还会有哪些改进呢，非常值得期待。&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=382&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=8050320f79c6a792840c4f9deab40818&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=8050320f79c6a792840c4f9deab40818&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=4ca8ff3c7c2659e03ccae58b8e31e19c&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=4ca8ff3c7c2659e03ccae58b8e31e19c&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=1">烽火云烟 | News</category><pubDate>Sat, 06 Sep 2008 01:50:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=382</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=382</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/111513190/4135566</fs:itemid></item><item><title>Xsstc: 通过CSS跨站运行script</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804001/4135566/1/item.html</link><description>&lt;p&gt;Xsstc: &lt;em&gt;Cross-site scripting through CSS data&lt;/em&gt;，看名字就看出来了，通过CSS跨站运行script，使用方法:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;导入&lt;a target=&quot;_blank&quot; href=&quot;http://www.tralfamadore.com/xsstcx.js&quot; onclick=&quot;javascript:pageTracker._trackPageview('/outgoing/www.tralfamadore.com/xsstcx.js');&quot;&gt;xsstcx.js&lt;/a&gt;(未压缩版&lt;a target=&quot;_blank&quot; href=&quot;http://www.tralfamadore.com/xsstc.js&quot; onclick=&quot;javascript:pageTracker._trackPageview('/outgoing/www.tralfamadore.com/xsstc.js');&quot;&gt;xsstc.js&lt;/a&gt;)&lt;/li&gt;
    &lt;li&gt;添加一个id=&amp;rdquo;Xsstc&amp;rdquo;的空DIV。&lt;/li&gt;
    &lt;li&gt;在JS中调用Xsstc.exec(functionURL, callback)，使用的内容作为callback的参数传入callback中&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中CSS的定义也有要求，下面是Hello World中CSS的定义&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;CSS代码&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-css&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;Xsstc&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;background-image&lt;/span&gt;&lt;span&gt;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;url&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'about:blank#Hello%20World'&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;JavaScript代码&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-c&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;Xsstc.exec(&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'http://lbs.tralfamadore.com/test.css'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;showResponse)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;参考文档：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;原文说明: http://ajaxian.com/archives/xsstc-cross-site-scripting-through-css-data&lt;/p&gt;
&lt;p&gt;测试页面:http://www.tralfamadore.com/test-xsstc.html&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=381&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=d25cb85f4bdc0b1977768a4d65e068fa&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=d25cb85f4bdc0b1977768a4d65e068fa&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=eb81887bb4cc70466027d443d579c1cd&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=eb81887bb4cc70466027d443d579c1cd&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=6">安全相关 | Security</category><pubDate>Thu, 04 Sep 2008 10:50:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=381</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=381</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804001/4135566</fs:itemid></item><item><title>NeverBlock到底有多快,对比测试说明问题</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804002/4135566/1/item.html</link><description>&lt;p&gt;前面写过一篇《&lt;a href=&quot;../../../?action=show&amp;amp;id=369&amp;amp;page=1#cm409&quot;&gt;NeverBlock: 非常值得期待的一组类库&lt;/a&gt;》，其中说到了采用NeverBlock的non-blocking, concurrent机制，可以很大程度上提高mysql或者PostgreSQL的使用率，很多限度的提高性能。&lt;br /&gt;
但是没有给出具体的对比测试数据，今天看到有个哥们已经使用Thin，Rails和PostgreSQL做了一次对比测试，相关环境如下：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;服务器配置&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-xml&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;1&amp;nbsp;-&amp;nbsp;1&amp;nbsp;Thin&amp;nbsp;server,&amp;nbsp;normal&amp;nbsp;postgreSQL&amp;nbsp;Adapter&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;2&amp;nbsp;-&amp;nbsp;2&amp;nbsp;Thin&amp;nbsp;servers&amp;nbsp;(behind&amp;nbsp;nginx),&amp;nbsp;normal&amp;nbsp;postgreSQL&amp;nbsp;Adapter&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;3&amp;nbsp;-&amp;nbsp;4&amp;nbsp;Thin&amp;nbsp;servers&amp;nbsp;(behind&amp;nbsp;nginx),&amp;nbsp;normal&amp;nbsp;postgreSQL&amp;nbsp;Adapter&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;4&amp;nbsp;-&amp;nbsp;1&amp;nbsp;Thin&amp;nbsp;server,&amp;nbsp;neverblock&amp;nbsp;postgreSQL&amp;nbsp;Adapter&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;压力配置&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-xml&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;1&amp;nbsp;-&amp;nbsp;Very&amp;nbsp;light&amp;nbsp;&amp;nbsp;work&amp;nbsp;load,&amp;nbsp;&amp;nbsp;every&amp;nbsp;200&amp;nbsp;requests,&amp;nbsp;one&amp;nbsp;&amp;quot;select&amp;nbsp;sleep(1)&amp;quot;&amp;nbsp;would&amp;nbsp;be&amp;nbsp;issued&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;2&amp;nbsp;-&amp;nbsp;Light&amp;nbsp;work&amp;nbsp;load,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;every&amp;nbsp;100&amp;nbsp;requests,&amp;nbsp;one&amp;nbsp;&amp;quot;select&amp;nbsp;sleep(1)&amp;quot;&amp;nbsp;would&amp;nbsp;be&amp;nbsp;issued&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;3&amp;nbsp;-&amp;nbsp;Moderate&amp;nbsp;work&amp;nbsp;load,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;every&amp;nbsp;50&amp;nbsp;&amp;nbsp;requests,&amp;nbsp;one&amp;nbsp;&amp;quot;select&amp;nbsp;sleep(1)&amp;quot;&amp;nbsp;would&amp;nbsp;be&amp;nbsp;issued&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;4&amp;nbsp;-&amp;nbsp;Heavy&amp;nbsp;work&amp;nbsp;load,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;every&amp;nbsp;20&amp;nbsp;&amp;nbsp;requests,&amp;nbsp;one&amp;nbsp;&amp;quot;select&amp;nbsp;sleep(1)&amp;quot;&amp;nbsp;would&amp;nbsp;be&amp;nbsp;issued&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;5&amp;nbsp;-&amp;nbsp;Very&amp;nbsp;heavy&amp;nbsp;work&amp;nbsp;load,&amp;nbsp;&amp;nbsp;&amp;nbsp;every&amp;nbsp;10&amp;nbsp;&amp;nbsp;requests,&amp;nbsp;one&amp;nbsp;&amp;quot;select&amp;nbsp;sleep(1)&amp;quot;&amp;nbsp;would&amp;nbsp;be&amp;nbsp;issued&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;其结果对比如下：&lt;br /&gt;
&lt;img src=&quot;http://www.espace.com.eg/assets/neverblock/images/charts/1.gif&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
再来一张并发量的对比测试：&lt;br /&gt;
&lt;img src=&quot;http://www.espace.com.eg/assets/neverblock/images/charts/2.gif&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
接下来，，需要等待Ruby1.9和Rails2.2的到来，加上如上的测试对比，可以想象得到，Rails的性能会上很大一个台阶的。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;参考文档：&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://oldmoe.blogspot.com/2008/09/building-never-blocking-rails-making.html&quot;&gt;http://oldmoe.blogspot.com/2008/09/building-never-blocking-rails-making.html&lt;/a&gt;&lt;br /&gt;
http://chinaonrails.com/topic/view/1974.html&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=380&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=7bd5a28e8b9d411599f56940d8f9131d&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=7bd5a28e8b9d411599f56940d8f9131d&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=bbde771d978ad69dab347fbd789dfce4&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=bbde771d978ad69dab347fbd789dfce4&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=3">技术归总 | Technic</category><pubDate>Thu, 04 Sep 2008 10:18:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=380</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=380</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804002/4135566</fs:itemid></item><item><title>喔唷,崩溃啦! Chrome启动异常解决方法</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804003/4135566/1/item.html</link><description>&lt;p&gt;前面说到了，&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=378&quot;&gt;Google的浏览器&lt;/a&gt;Chrome在我工作环境下启动不成功，一启动就报告说XXX初始化失败，然后就显示&amp;ldquo;喔唷,崩溃啦!&amp;rdquo;，导致不可用。&lt;br /&gt;
查了下原因，有如下几个可能：&lt;br /&gt;
1、我是内网 ；&lt;br /&gt;
2、我使用了一个安全软件SPA； &lt;br /&gt;
3、我是windows xp sp3  &lt;br /&gt;
分析了下原因，很多人的XP SP3可以跑，说明3不是问题，有人是内网可以使用，说明1一哦不是问题，那么就剩下2这个原因了。 &lt;br /&gt;
经过多方查找，找到原因： &lt;br /&gt;
&lt;em&gt;由于采用了sandbox技术，被spa无情的干掉了，即使在SPA被干掉的情况下，chrome也无法正常启动。  &lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;解决方法：&lt;/strong&gt;&lt;br /&gt;
手工在command界面里面执行 &lt;strong&gt;chrome.exe -no-sandbox &lt;/strong&gt;&lt;br /&gt;
或者在你的快捷方式-右键-属性，在&amp;ldquo;目标&amp;rdquo;里面最后加上-no-sandbox 类似这样&lt;br /&gt;
&amp;quot;C:\Documents and Settings\iceskysl\Local Settings\Application Data\Google\Chrome\Application\chrome.exe&amp;quot; -no-sandbox&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=379&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=566968463a8d94da85ca6ddd7440cdcc&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=566968463a8d94da85ca6ddd7440cdcc&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=823bf1e9100a4f3964cd524ecfcfaf28&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=823bf1e9100a4f3964cd524ecfcfaf28&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=3">技术归总 | Technic</category><pubDate>Thu, 04 Sep 2008 09:32:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=379</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=379</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804003/4135566</fs:itemid></item><item><title>Download Chrome: 可以开始下载chrome</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804004/4135566/1/item.html</link><description>&lt;p&gt;充满期待的&lt;a href=&quot;../../../?action=show&amp;amp;id=377&quot;&gt;chrome&lt;/a&gt;，希望不要让大家失望，仔细的看了他的那本连环画，觉得还不错，最主要功能看点将是其如何整合已有的Google应用。&lt;/p&gt;
&lt;p&gt;按照其发布说法，将在美国时间，周二开始提供下载，也就是中国的9.3号了，现在已经凌晨1点啦啦，貌似2点可以下载，偶是不等了，明天起来再试试。&lt;/p&gt;
&lt;p&gt;推测下载地址：&lt;a href=&quot;http://gears.google.com/chrome/?hl=en&quot;&gt;http://gears.google.com/chrome/?hl=en&lt;/a&gt;&amp;nbsp; 或者是 &lt;a href=&quot;http://www.google.com/chrome&quot;&gt;http://www.google.com/chrome&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ps:&lt;/strong&gt;&lt;em&gt;网上很多钓鱼的网站已经出来了，冒充chrome的下载，有的是恶作剧，有的是木马，请大家耐心等下下，一定记得从上面这个主页上下，切记！&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=378&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=d9a1b240816053350a190a707cc66ce6&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=d9a1b240816053350a190a707cc66ce6&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=956aa2b8a724e7e251ee70ead5837d2d&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=956aa2b8a724e7e251ee70ead5837d2d&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=5">视觉观察 | Observe</category><pubDate>Wed, 03 Sep 2008 00:58:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=378</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=378</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804004/4135566</fs:itemid></item><item><title>Chrome: Google推浏览器正面迎战IE8</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804005/4135566/1/item.html</link><description>&lt;p&gt;昨天说到&amp;ldquo;&lt;a href=&quot;../../../?action=show&amp;amp;id=375&quot;&gt;Google手机现身: 值得期待&lt;/a&gt;&amp;rdquo;，然而今天又看到另外一个更让你期待的东西&amp;mdash;&amp;mdash;&lt;strong&gt;Chrome&lt;/strong&gt;，Google推出的浏览器。&lt;br /&gt;
&lt;img src=&quot;http://lh3.ggpht.com/webleon/SLwapYIl7WI/AAAAAAAABhg/_t6wAvmMKfw/s400/google-chrome.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
相比&lt;strong&gt;GooglePhone&lt;/strong&gt;，Chrome或许更让人们期待，因为它是免费的，也无需等待，只有发布就可以下载使用的，同样，是整合了大量google应用的。&lt;br /&gt;
Chrome的诞生肯定不是偶然，按照google的实力，别说搞个浏览器，搞个操作系统出来也不是不可能。相传N年前就流传Google要推出自己的浏 览器，但是一直没有下文，按照现在的说法，Chrome已经开发了差不多两年时间，也就是说这么段时间内，Chrome都是在进行中的。&lt;br /&gt;
为何选择现在放出来，偶自己认为&lt;strong&gt;IE8&lt;/strong&gt;的发布刺疼了Google的神经，虽然说Google的商业价值并不是IE8中那些伎俩可以打倒的，但是IE8表达的是微软的一个态度，微软使出杀手锏，可见其无奈和无助。&lt;br /&gt;
另外一个原因，近几年，firefox的成功让google有足够的信心推出自己的浏览器，firefox靠google的赞助和一些广告点击支付，占到 了firefox每年85%的收入，如果google推出自己的浏览器，在性能和界面上可以匹敌firefox的话，在google强大的占用率上，推广 肯定不是难事。近年来，马桶或者其他基于IE浏览器的成功都说明一个问题：浏览器只有做好浏览器的本职工作，又足够快速即可，如果google能加强对其 浏览器安全性的推广，将其做为一个卖点的话，相信不少深受IE8安全问题的用户会转投其怀抱。&lt;br /&gt;
另外一个就是firefox可能会受到影响，因为firefox的用户相对高端，讲求速度和简洁，google的风格肯定是这个方向，肯定会吸引众多firefox的用户前来试水，如果满意的话，也有不少人会转投google怀抱。&lt;br /&gt;
至于消息是否准确，应该是差不多了，看其他地方的一些报道：&lt;br /&gt;
http://googleblog.blogspot.com/2008/09/fresh-take-on-browser.html&lt;br /&gt;
http://it.sohu.com/20080902/n259325162.shtml&lt;br /&gt;
http://webleon.org/2008/09/googlechrome.html&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=377&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=8fb8de7aa7661ab3c8c8cb1e4a2f983f&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=8fb8de7aa7661ab3c8c8cb1e4a2f983f&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=061f5520041368865a2d1ffe8cef2b40&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=061f5520041368865a2d1ffe8cef2b40&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=5">视觉观察 | Observe</category><pubDate>Tue, 02 Sep 2008 09:45:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=377</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=377</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804005/4135566</fs:itemid></item><item><title>开发Rails插件的方法和步骤</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804006/4135566/1/item.html</link><description>&lt;p&gt;Rails丰富的插件真是强大，幻想着把各个功能都做出插件，以后开发系统就像搭积木一样堆积就好啦，呵呵。&lt;br /&gt;
开发个Rails插件其实不难，或者说很简单，流程基本如下：&lt;br /&gt;
&lt;strong&gt;1、生成骨架&lt;/strong&gt;&lt;br /&gt;
在Rails的script下有个generate，可以直接生成骨架，执行：&lt;br /&gt;
# ruby script/generate plugin foo&lt;br /&gt;
就会在$RAILS_ROOT/vendor/plugins下生成一个foo目录，如下：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;Ruby代码&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-rb&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;/1stlog&lt;/span&gt;&lt;span class=&quot;variable&quot;&gt;$ruby&lt;/span&gt;&lt;span&gt;&amp;nbsp;script/generate&amp;nbsp;plugin&amp;nbsp;foo&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create&amp;nbsp;&amp;nbsp;vendor/plugins/foo/lib&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create&amp;nbsp;&amp;nbsp;vendor/plugins/foo/tasks&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create&amp;nbsp;&amp;nbsp;vendor/plugins/foo/test&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create&amp;nbsp;&amp;nbsp;vendor/plugins/foo/README&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create&amp;nbsp;&amp;nbsp;vendor/plugins/foo/MIT-LICENSE&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create&amp;nbsp;&amp;nbsp;vendor/plugins/foo/Rakefile&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create&amp;nbsp;&amp;nbsp;vendor/plugins/foo/init.rb&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create&amp;nbsp;&amp;nbsp;vendor/plugins/foo/install.rb&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create&amp;nbsp;&amp;nbsp;vendor/plugins/foo/uninstall.rb&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create&amp;nbsp;&amp;nbsp;vendor/plugins/foo/lib/foo.rb&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create&amp;nbsp;&amp;nbsp;vendor/plugins/foo/tasks/foo_tasks.rake&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;create&amp;nbsp;&amp;nbsp;vendor/plugins/foo/test/foo_test.rb&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;2、编写相关代码&lt;/strong&gt;&lt;br /&gt;
在lib/foo.rb 下编写你的插件代码即可。&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;Ruby代码&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-rb&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;module&lt;/span&gt;&lt;span&gt;&amp;nbsp;Foo&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;def&lt;/span&gt;&lt;span&gt;&amp;nbsp;say_hello&amp;nbsp;name&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;hello&amp;nbsp;#{name}&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;3、混入到core中去&lt;/strong&gt;&lt;br /&gt;
在init.rb中编写混入代码即可。&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;Ruby代码&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-rb&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;require&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'foo'&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;ActionController::Base.send&amp;nbsp;&lt;span class=&quot;symbol&quot;&gt;:include&lt;/span&gt;&lt;span&gt;,&amp;nbsp;Foo&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
    &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;参考文档：&lt;/strong&gt;&lt;br /&gt;
http://blog.ericsk.org/archives/769&lt;br /&gt;
http://blog.railschina.com/637/viewspace-236&lt;br /&gt;
http://kyoleelqh.javaeye.com/blog/215090&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=376&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=f8d1c7bd800c9068dd2a255f5d8ee7a3&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=f8d1c7bd800c9068dd2a255f5d8ee7a3&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=a1d68d5e9405208c47389e8ec7ce6fec&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=a1d68d5e9405208c47389e8ec7ce6fec&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=3">技术归总 | Technic</category><pubDate>Mon, 01 Sep 2008 16:56:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=376</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=376</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804006/4135566</fs:itemid></item><item><title>Google手机现身: 值得期待</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804007/4135566/1/item.html</link><description>&lt;p&gt;今天在Donews上终于看到GooglePhone出现了，样式如下：&lt;br /&gt;
&lt;img alt=&quot;&quot; src=&quot;http://img.hexun.com/2008-09-01/108501397.jpg&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;在发售时间上，这款采用Android系统的HTC Dream手机将于9月17日面向T-Mobile用户进行预售，而手机型号则会被命名为G1，并提供白色、棕色和黑色等三种色彩款式选择，而正式面向其他地区的发售时间则在今年10月。&lt;/em&gt;&lt;br /&gt;
&lt;br /&gt;
说句实在话，我不是很喜欢iphone，虽然也试了下，但是我还是不是很喜欢，因为我生活中用到的Mac的东西太少了，与之相比，我认为在iphone和 blackberry之间选择的话，我会选择BB，虽然我的第一款BB8100寿命不长，但是我非常喜欢，近期已经在联系入手一款升级版的BB8110。&lt;br /&gt;
相比BB和iphone，我更加期待GooglePhone的上市，虽然Iphone在大陆上市一波三折，可能Gphone会吸取教训，更迅速的打开国内市场。&lt;br /&gt;
为什么更加期待Google Phone，应该归于与生活中使用到Google的东西太多了，GoogleReader，GoogleDoc，Gmail，Google日历等等，都是 必不可少的东西，若干Google手机上可以很好的把这些东西都整合进来，又能保证不会太笨重的话，我会买一部。&lt;br /&gt;
期待赶快来吧，详细介绍请移步&amp;ldquo;&lt;a href=&quot;http://www.donews.com/Content/200809/faf4ef50-7ae6-4110-945c-f79765a685e7.shtm&quot;&gt;iPhone也得低头 万众期待超炫Google手机现身&lt;/a&gt;&amp;rdquo;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=375&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=eb4b694e7e27f2f11cdfbf9362c2bccd&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=eb4b694e7e27f2f11cdfbf9362c2bccd&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=a06115a602d667692e9235c8adda8fa9&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=a06115a602d667692e9235c8adda8fa9&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=1">烽火云烟 | News</category><pubDate>Mon, 01 Sep 2008 12:58:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=375</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=375</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804007/4135566</fs:itemid></item><item><title>[Gem|plugin]Flash Message Conductor :在Rails中整合各类消息提示</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804008/4135566/1/item.html</link><description>&lt;p&gt;Rails中特有的falsh消息提示机制非常好用，其三种消息（error，message，notice）针对不同的应用场景提示用户，非常方便。&lt;br /&gt;
但是由于其三种消息提示的含义不一样，UI制作人员经常会使用不同的CSS来展示（比如error的就用红色，notice就用黄色等等），这样就存在一个问题，当在一个共用页面上需要展示几种可能的消息时，就不是很好处理，这个时候，对通用型的UI是个挑战。&lt;/p&gt;
&lt;p&gt;如果能把三种消息自动区分，使用各种的样式表，该多方便！确实，已经有人这么做了， &lt;a href=&quot;http://www.robbyonrails.com/articles/2008/08/29/flash-message-conductor&quot;&gt;Robby&lt;/a&gt;给出了一个plugin，&amp;ldquo;&lt;a href=&quot;http://github.com/planetargon/flash-message-conductor/tree/master&quot;&gt;Flash Message Conductor&lt;/a&gt;&amp;rdquo;，看其介绍：&lt;/p&gt;
&lt;pre&gt;A simple pattern for managing flash messages in your Ruby on Rails application.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1、安装&lt;/strong&gt;&lt;br /&gt;script/plugin install git://github.com/planetargon/flash-message-conductor.git&lt;br /&gt;&lt;strong&gt;2、使用&lt;/strong&gt;&lt;br /&gt;&lt;div class=&quot;codeText&quot;&gt;&lt;div class=&quot;codeHead&quot;&gt;Ruby代码&lt;/div&gt;&lt;ol start=&quot;1&quot; class=&quot;dp-rb&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;comment&quot;&gt;#&amp;nbsp;Controller&amp;nbsp;helpers&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;&quot;&gt;&lt;span&gt;add_message(&amp;nbsp;&lt;span class=&quot;string&quot;&gt;'foo'&lt;/span&gt;&lt;span&gt;&amp;nbsp;)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;&quot;&gt;&lt;span&gt;is&amp;nbsp;the&amp;nbsp;equivalent&amp;nbsp;of&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;flash[&lt;span class=&quot;symbol&quot;&gt;:message&lt;/span&gt;&lt;span&gt;]&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'foo'&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;Controller&amp;nbsp;helpers&amp;nbsp;included:&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;&quot;&gt;&lt;span&gt;add_message(&amp;nbsp;message&amp;nbsp;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;add_notice(&amp;nbsp;message&amp;nbsp;)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;&quot;&gt;&lt;span&gt;add_error(&amp;nbsp;message&amp;nbsp;)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;comment&quot;&gt;#&amp;nbsp;View&amp;nbsp;helpers&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;lt;%=&amp;nbsp;render_flash_messages&amp;nbsp;%&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;produces:&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;lt;div&amp;nbsp;id=&lt;span class=&quot;string&quot;&gt;&amp;quot;flash_messages&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;message&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;You&amp;nbsp;have&amp;nbsp;successfully&amp;nbsp;done&amp;nbsp;XYZ...&amp;lt;/p&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;comment&quot;&gt;#&amp;nbsp;or...&amp;nbsp;if&amp;nbsp;you&amp;nbsp;set&amp;nbsp;an&amp;nbsp;error&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;lt;div&amp;nbsp;id=&lt;span class=&quot;string&quot;&gt;&amp;quot;flash_messages&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;error&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;Oops!&amp;nbsp;Something&amp;nbsp;went&amp;nbsp;bonkers!&amp;lt;/p&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;lt;/div&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;详细信息，参考上面给出的Github上的地址查看，谢谢！&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=374&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=558fccdb68aed36576b9fde82ffede97&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=558fccdb68aed36576b9fde82ffede97&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=ae6aea89fe4dc0e2dc5e3526bf4875aa&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=ae6aea89fe4dc0e2dc5e3526bf4875aa&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=3">技术归总 | Technic</category><pubDate>Mon, 01 Sep 2008 11:09:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=374</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=374</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804008/4135566</fs:itemid></item><item><title>[Gem|plugin]log4r&amp;Logging: 替代Rails中logger的日志记录库</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804009/4135566/1/item.html</link><description>&lt;p&gt;Rail本身自带的&lt;strong&gt;logger&lt;/strong&gt;虽然好用，但是还是有点太简易了，针对一些特殊的业务需求（比如需要记录一些业务日志供后续的报表系统分析、解析等）就显得有点力不从心了。这个时候可以找找其他的替代品。&lt;br /&gt;
&lt;strong&gt;1、log4r&lt;/strong&gt;&lt;br /&gt;
做java的应该对这样的名字相当熟悉，大名鼎鼎的log4j在java的世界里非常流行和实用，看这个log4r的名字就可以感受到其强大的功能。&lt;/p&gt;
&lt;blockquote&gt;&lt;a href=&quot;http://log4r.sourceforge.net/index.html&quot;&gt;Log4r&lt;/a&gt; is a comprehensive and flexible logging library written in Ruby for use in Ruby programs. It features a hierarchical logging system of any number of levels, custom level names, logger inheritance, multiple output destinations, execution tracing, custom formatting, thread safteyness, XML and YAML configuration, and more.   &lt;br /&gt;
&lt;/blockquote&gt;
&lt;p&gt;但是截至到目前为止的其log4r-1.0.5版本中和Rails2的版本还存在一个冲突，详细的可以参考&amp;ldquo;&lt;a href=&quot;http://dev.rubyonrails.org/ticket/3512&quot;&gt;Ticket #3512&lt;/a&gt;&amp;rdquo; (reopened defect)。&lt;/p&gt;
&lt;blockquote&gt;ActionView::TemplateError (Expected kind of Outputter, got NilClass) c:/ruby/lib/ruby/gems/1.8/gems/log4r-1.0.5/src/log4r/logger.rb:115:in `each' c:/ruby/lib/ruby/gems/1.8/gems/log4r-1.0.5/src/log4r/logger.rb:115:in `add' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/benchmarking.rb:30:in `benchmark' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_view/partials.rb:57:in `render_partial' c:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_view/base.rb:230:in `render'   &lt;br /&gt;
&lt;/blockquote&gt;
&lt;p&gt;但是其从March 2004开始到现在都没人有维护和更新，看来需要寻找新的解决方案了。&lt;br /&gt;
&lt;strong&gt;2、Logging&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://logging.rubyforge.org/classes/Logging.html&quot;&gt;Logging&lt;/a&gt; is a flexible logging library for use in Ruby programs based on the design of Java&amp;lsquo;s log4j library. It features a hierarchical logging system, custom level names, multiple output destinations per log event, custom formatting, and more. &lt;br /&gt;
关于Logging的详细API可以参考其doc文档，其详细的用法和注意事项，可以参考&amp;ldquo;&lt;a href=&quot;http://wiki.rubyonrails.org/rails/pages/HowtoConfigureLogging&quot;&gt;HowtoConfigureLogging&lt;/a&gt;&amp;rdquo;，下面看个例子：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;Ruby代码&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-rb&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;require&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'logging'&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;logger&amp;nbsp;=&amp;nbsp;Logging::Logger[&lt;span class=&quot;string&quot;&gt;'example_logger'&lt;/span&gt;&lt;span&gt;]&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;logger.add_appenders(&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Logging::Appender.stdout,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Logging::Appenders::&lt;span class=&quot;builtin&quot;&gt;File&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'example.log'&lt;/span&gt;&lt;span&gt;)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;logger.level&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;symbol&quot;&gt;:info&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;logger.debug&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;this&amp;nbsp;debug&amp;nbsp;message&amp;nbsp;will&amp;nbsp;not&amp;nbsp;be&amp;nbsp;output&amp;nbsp;by&amp;nbsp;the&amp;nbsp;logger&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;logger.info&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;just&amp;nbsp;some&amp;nbsp;friendly&amp;nbsp;advice&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;参考文章：&lt;/strong&gt;&lt;br /&gt;
http://wiki.rubyonrails.org/rails/pages/HowtoConfigureLogging&lt;br /&gt;
http://logging.rubyforge.org/&lt;br /&gt;
http://log4r.sourceforge.net/index.html&lt;br /&gt;
http://007surfing.com/index.php?hl=f5&amp;amp;q=uggc%3A%2F%2Fapupenvyf.oybtfcbg.pbz%2F2007%2F04%2Fybt.ugzy&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=373&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=bb5a666ab6befffa067821981eb75373&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=bb5a666ab6befffa067821981eb75373&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=1a5edbdbb0cced5fdddf074d085e90d4&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=1a5edbdbb0cced5fdddf074d085e90d4&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=3">技术归总 | Technic</category><pubDate>Sun, 31 Aug 2008 12:59:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=373</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=373</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804009/4135566</fs:itemid></item><item><title>[Gem|plugin]Configatron&amp;SimpleConfig: 在Rails中添加需要的配置</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804010/4135566/1/item.html</link><description>&lt;p&gt;搞Java的人应该很习惯把一些配置（数据库连接、个性化配置等）写到配置文件中，一般会使用XML或者TXT文件中，在启动的时候读取配置，初始化等等。&lt;br /&gt;
Rails中也可以实现类似的功能，虽然Rails提倡&amp;ldquo;&lt;strong&gt;零配置&lt;/strong&gt;&amp;rdquo;，但有的时候开发一个系统，比如Blog系统等还是需要一些个性化的配置，我们原来的实现方式是：增加一个配置文件，启动的时候读取，并保存为全局变量，用的时候直接使用。也很方便。&lt;br /&gt;
其实还可以使用插件或者gem来做，&lt;a href=&quot;http://www.rubyinside.com/configatron-ruby-app-configuration-library-1130.html&quot;&gt;Configatron&lt;/a&gt;就是这么一个gem，另外还有一个插件版的&lt;a href=&quot;http://github.com/lukeredpath/simpleconfig/tree/master&quot;&gt;SimpleConfig&lt;/a&gt;，两者还是有些不同的，按照&lt;a href=&quot;http://www.rubyinside.com/configatron-ruby-app-configuration-library-1130.html&quot;&gt;Configatron&lt;/a&gt; 作者的说法，其不同点在于：&lt;/p&gt;
&lt;blockquote&gt;SimpleConfig looks nice, but it definitely has a few differences from Configatron. The first big difference is that SimpleConfig is limited to use with Rails. Configatron can be used with any framework, any application, and any script. Configatron also seems a bit easier to use. There are no mixins needed to use it. The configatron method lives in Kernel, which means it&amp;rsquo;s available everywhere, no &amp;lsquo;configuration&amp;rsquo; needed. &lt;img class=&quot;wp-smiley&quot; alt=&quot;:)&quot; src=&quot;http://www.mackframework.com/wp-includes/images/smilies/icon_smile.gif&quot; /&gt; Different strokes, eh? There are a few other configuration systems out there, I always encourage people to check out the options before they decide on a piece of software to use.&lt;br /&gt;
&lt;/blockquote&gt;
&lt;p&gt;其实我们自己也可以写，只是没有必要再搞一套，功能上来说，上述这两个足够了，下面简单的看看&lt;a href=&quot;http://www.rubyinside.com/configatron-ruby-app-configuration-library-1130.html&quot;&gt;Configatron&lt;/a&gt; 的用法：&lt;br /&gt;
&lt;strong&gt;1、安装&lt;/strong&gt;&lt;br /&gt;
$ sudo gem install configatron&lt;br /&gt;
&lt;strong&gt;2、定义（支持namespace）&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;Ruby代码&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-rb&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;configatron&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|config|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;config.website_url&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;http://www.1sters.com&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;config.namespace(&lt;span class=&quot;symbol&quot;&gt;:mems&lt;/span&gt;&lt;span&gt;)&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|mem|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;email.namespace(&lt;span class=&quot;symbol&quot;&gt;:iceskysl&lt;/span&gt;&lt;span&gt;)&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|iceskysl|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iceskysl.email&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;iceskysl@1sters.com&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop.blog_url&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;http://iceskysl.1sters.com&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;#&amp;nbsp;etc&amp;nbsp;...&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;email.namespace(&lt;span class=&quot;symbol&quot;&gt;:shine&lt;/span&gt;&lt;span&gt;)&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|shine|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;smtp.email&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;shine@1sters.com&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;smtp.blog_url&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;http://shine.1sters.com&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;#&amp;nbsp;etc&amp;nbsp;...&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;#&amp;nbsp;etc...&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;3、使用&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;Ruby代码&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-rb&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;configatron.mems.iceskysl.email&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;comment&quot;&gt;#&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;quot;iceskysl@1sters.com&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;configatron.mems.shine.blog_url&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;#&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;quot;http://shine.1sters.com&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;configatron.website_url&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;#&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;quot;http://www.1sters.com&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;4、重写&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;Ruby代码&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-rb&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;configatron&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|config|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;config.website_url&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;http://www.1sters.com/index&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;PS：&lt;/strong&gt;&lt;br /&gt;
如果你是在自己的Rails里使用，可能&lt;strong&gt;&lt;a href=&quot;http://github.com/lukeredpath/simpleconfig/tree&quot;&gt;simpleconfig&lt;/a&gt;&lt;/strong&gt;会更加适合你，请参考其链接上的Readme。&lt;strong&gt;&lt;br /&gt;
&lt;br /&gt;
参考文档：&lt;/strong&gt;&lt;br /&gt;
http://www.mackframework.com/2008/08/29/configatron-100-released/&lt;br /&gt;
http://www.rubyinside.com/configatron-ruby-app-configuration-library-1130.html&lt;br /&gt;
http://github.com/lukeredpath/simpleconfig/tree/master&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=372&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=e8831c376fb5913460a4791159141a2c&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=e8831c376fb5913460a4791159141a2c&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=e87d5afcd061ab26f088255313572541&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=e87d5afcd061ab26f088255313572541&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=3">技术归总 | Technic</category><pubDate>Sun, 31 Aug 2008 11:45:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=372</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=372</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804010/4135566</fs:itemid></item><item><title>[Rails2.2] Josh Peek,thread safety?</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804011/4135566/1/item.html</link><description>&lt;p&gt;&lt;a href=&quot;http://weblog.rubyonrails.org/&quot;&gt;Rails&lt;/a&gt;上说有个叫做&lt;a href=&quot;http://weblog.rubyonrails.org/2008/8/16/josh-peek-officially-joins-the-rails-core&quot;&gt;Josh Peek&lt;/a&gt;的家伙加入core，将带来thread safety，这无疑是个重磅炸弹，因为才Rails0.6到现在的Rails2.1都是非线程安全的，以至于其一些无法解决的问题，性能也一直被人诟病，其实也不能怪Rails，Ruby本身这个方面做的也不是很好。&lt;/p&gt;
&lt;p&gt;随着&lt;strong&gt;Ruby1.9&lt;/strong&gt;的逐步推广，Rails2.2应该会对Ruby1.9广泛支持了吧，这个时候将会有很多新的东西加进来的吧，除了这里说的&amp;ldquo;&lt;a href=&quot;../../../?action=show&amp;amp;id=371&quot;&gt;线程安全&lt;/a&gt;&amp;rdquo;，还有前面说到的&amp;ldquo;&lt;a href=&quot;../../../?action=show&amp;amp;id=370&quot;&gt;国际化&lt;/a&gt;&amp;rdquo;，以及&lt;a href=&quot;../../../?action=show&amp;amp;id=369&quot;&gt;NeverBlock&lt;/a&gt;实现的一组同步组件包，其性能将会得到大幅的提高。&lt;/p&gt;
&lt;p&gt;另外，还有值得期待的就是Ruby的&lt;strong&gt;VM&lt;/strong&gt;是否有改善？目前的&lt;strong&gt;GC&lt;/strong&gt;还是问题大大的有，内存泄露也并不稀罕，希望有新的VM出来；另外，其Ruby的一些app服务器最近好像停止不前了，自从Zed A. Shaw闹脾气后，&lt;a href=&quot;http://mongrel.rubyforge.org/&quot;&gt;mongrel&lt;/a&gt;就很少有啥更新了，其maillist也冷冷清清的。&lt;a href=&quot;http://code.macournoyer.com/thin/&quot;&gt;thin&lt;/a&gt;还好，有些小的更新，这些server要针对Rails2.2和Ruby1.9做些大动作了。&lt;/p&gt;
&lt;p&gt;Ruby的世界，前途无量。&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=371&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=1451c661c3e0bcfa7a4ac337c7b7f612&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=1451c661c3e0bcfa7a4ac337c7b7f612&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=cb2417ef7f5f90e5e908ddc0376d812a&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=cb2417ef7f5f90e5e908ddc0376d812a&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=5">视觉观察 | Observe</category><pubDate>Sun, 31 Aug 2008 01:29:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=371</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=371</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804011/4135566</fs:itemid></item><item><title>[Rails2.2] 值得期待的internationalization</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804012/4135566/1/item.html</link><description>&lt;p&gt;&lt;strong&gt;Rails2.2&lt;/strong&gt;的脚步越来越近了，虽然Rails2.1才放出来没多久，不可否认的是Rails2.2的脚本也越来越近了，近期可以看到一些在Rails2.2中可能会包含的功能，值得期待和预先了解下。&lt;/p&gt;
&lt;p&gt;除了上次说到的Rails2.2中会实现&lt;a href=&quot;http://weblog.rubyonrails.org/2008/8/16/josh-peek-officially-joins-the-rails-core&quot;&gt;线程安全&lt;/a&gt;外，今天在其weblog上看到，将包含另外一个很值得期待的功能：&lt;strong&gt;internationalization&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;Rails2.2中将提供&lt;a href=&quot;http://weblog.rubyonrails.org/2008/8/27/demo-of-rails-2-2-internationalization&quot;&gt;internationalization&lt;/a&gt;这个功能，有了这个功能，就可以更加方便的制作国际化的网站了，非常棒。以前我们都是使用插件的方式解决这个问题，可以选择的插件也挺多，各有优缺点，有的也有些bug，需要自己hack下，以后rails2.2中包含了i18n后，该有多方便呀。&lt;/p&gt;
&lt;p&gt;Clemens Kofler&amp;rsquo;s已经做了个&lt;a href=&quot;http://i18n-demo.phusion.nl/pages/setup&quot;&gt;demo的演示&lt;/a&gt;，也提供了其&lt;a href=&quot;http://github.com/karmi/rails_i18n_demo_app/tree/master&quot;&gt;代码&lt;/a&gt;，感兴趣的可以体检熟悉下。&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=370&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=1154e95872ea01cc92f54df925e56f64&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=1154e95872ea01cc92f54df925e56f64&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=1cd81d8a492998a79eb3e87ea0be1a24&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=1cd81d8a492998a79eb3e87ea0be1a24&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=5">视觉观察 | Observe</category><pubDate>Sun, 31 Aug 2008 01:10:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=370</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=370</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804012/4135566</fs:itemid></item><item><title>NeverBlock: 非常值得期待的一组类库</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804013/4135566/1/item.html</link><description>&lt;p&gt;&lt;img src=&quot;http://bp0.blogger.com/_XFDHsTWrvBY/SJTYtPOmWBI/AAAAAAAAACE/HisrXjBz3dQ/s400/http_serving_performance.png&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.espace.com.eg/neverblock&quot;&gt;NeverBlock&lt;/a&gt; is a Ruby library that allows developers to write non-blocking, concurrent code in a transparent manner. Meaning that you will keep coding in your traditional ways while you get the benefit of non-blocking IO operations.&lt;/p&gt;
&lt;p&gt;Ruby的伪线程，Rails的非线程安全性导致其性能始终上不去，前端时间发布的ruby1.9有多处修改，后面的Rails2.2也号称要做线程安全了，如果以上两个条件都满足，Rails的性能将得到大幅的提高。&lt;/p&gt;
&lt;p&gt;由于Rails的AR是非线程安全的，导致其IO性能不是很好，其Mysql驱动一直是单线，不能很好的提高性能，做个Oracle的应该很怀念Oracle，weblogic中的线程池，java5中的concurrent包用来写同步等处理非常方便和高效。&lt;/p&gt;
&lt;p&gt;很高兴看到Ruby世界也有类似的东西出现了，他就是NeverBlock，在其放出PostgreSQL的适配驱动后，近日有发布了&lt;a href=&quot;http://www.espace.com.eg/neverblock/blog/2008/08/28/neverblock-mysql-support/&quot;&gt;针对MYSQL的版本&lt;/a&gt;，名字为&lt;a href=&quot;http://github.com/espace/mysqlplus/tree/master&quot;&gt;mysqlplus&lt;/a&gt;，非常值得期待。&lt;/p&gt;
&lt;p&gt;另外，关于&amp;ldquo;&lt;a href=&quot;http://zhanjun.net/?q=node/7&quot;&gt;同步、异步、阻塞和非阻塞的概念&lt;/a&gt;&amp;rdquo;，请参考其链接上的文章。&lt;/p&gt;
&lt;p&gt;参考文章：&lt;/p&gt;
&lt;p&gt;http://chinaonrails.com/topic/view/1974.html&lt;/p&gt;
&lt;p&gt;http://www.espace.com.eg/neverblock/blog/2008/08/28/neverblock-mysql-support/&lt;/p&gt;
&lt;p&gt;http://github.com/espace/mysqlplus/tree/master&lt;/p&gt;
&lt;p&gt;http://zhanjun.net/?q=node/7&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=369&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=09bc40fca8bc36ac85153ee842728f8a&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=09bc40fca8bc36ac85153ee842728f8a&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=c1f356bc5fbc28ceae040bcea37f731a&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=c1f356bc5fbc28ceae040bcea37f731a&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=3">技术归总 | Technic</category><pubDate>Sat, 30 Aug 2008 19:16:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=369</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=369</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804013/4135566</fs:itemid></item><item><title>使用Merb处理Rails中大文件上传难题</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804014/4135566/1/item.html</link><description>&lt;p&gt;做Rails的应该知道，在Rails中处理大文件上传是很头疼的事情，比如你允许用户上传图片，那么其有的时候分辨率高的文件有1-2M的大小，这个时候rails的上传处理是很慢的，也不难理解，看段经典的上传代码：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;Rails代码&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-rb&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;def&lt;/span&gt;&lt;span&gt;&amp;nbsp;upload&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;builtin&quot;&gt;File&lt;/span&gt;&lt;span&gt;.open(RAILS_ROOT+&amp;quot;/uploads/&lt;/span&gt;&lt;span class=&quot;comment&quot;&gt;#{params[:file].original_filename}.#{next_count}&amp;rdquo;,&amp;nbsp;&amp;ldquo;w&amp;rdquo;)&amp;nbsp;{&amp;nbsp;|f|&amp;nbsp;f.write(params[:file].read)&amp;nbsp;}&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;render&amp;nbsp;&lt;span class=&quot;symbol&quot;&gt;:action&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;lsquo;index&amp;rsquo;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;加 上Rails是单线程的，这个时候处理大的IO非常慢，慢的后果是什么？拖死你的服务器，比如你使用mongrel，开了10个进程在跑，这个时候，用户 上传一个文件要花2分钟，就会占着这个进程不放，导致其他的请求无法响应（好怀念weblogic的队列机制），所以你的系统抛给用户的可能就是 503，504之类的错误。&lt;br /&gt;
有人推荐，这个情况下可以使用&lt;a href=&quot;http://merbivore.com/index.html&quot;&gt;merb&lt;/a&gt;，这东西也不会很陌生，从rails大红大紫后，其一直在后面追赶，其基本特性就是线程安全的，所以对一个请求可以多线程处理，会加快处理速度，看段类似处理上传的代码：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;Merb代码&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-rb&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;def&lt;/span&gt;&lt;span&gt;&amp;nbsp;upload&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;FileUtils.mv&amp;nbsp;params[&lt;span class=&quot;symbol&quot;&gt;:file&lt;/span&gt;&lt;span&gt;][&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:tempfile&lt;/span&gt;&lt;span&gt;].path,&amp;nbsp;MERB_ROOT+&amp;rdquo;/uploads/&lt;/span&gt;&lt;span class=&quot;comment&quot;&gt;#{params[:file][:filename]}.#{next_count}&amp;rdquo;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;render&amp;nbsp;&lt;span class=&quot;symbol&quot;&gt;:action&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;gt;&amp;nbsp;&amp;lsquo;index&amp;rsquo;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;详细的测试比较，请参考&amp;ldquo;&lt;a href=&quot;http://www.mikeperham.com/2007/10/02/file-uploads-in-merb-versus-rails/&quot;&gt;File Uploads in Merb versus Rails&lt;/a&gt;&amp;rdquo;这里文章，其结论差不多是这样的&amp;ldquo;&lt;em&gt;Merb&amp;rsquo;s average response time is 16 ms while Rails&amp;rsquo;s average is 205 ms (over 10x faster), yet the throughput is 3000 vs 2000 req/min (only 50% greater).&lt;/em&gt;&amp;rdquo;，针对其throughput提高不多的情况，merb的人给出的方案是add&amp;quot;:use_mutex: false&amp;quot;in merb.yml，其原因说因为AR是非线程安全的才需要这个选项，设置成fasle后可以大大的提高性能。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;参考文章：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.mikeperham.com/2007/10/02/file-uploads-in-merb-versus-rails/&quot;&gt;File Uploads in Merb versus Rails&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://rubyforge.org/pipermail/mongrel-users/2006-November/002265.html&quot;&gt;[Mongrel] Uploading Large (100mb+) files&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://depixelate.com/2007/5/31/taking-merb-for-a-spin&quot;&gt;Taking Merb for a Spin&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://devblog.rorcraft.com/2008/8/25/uploading-large-files-to-rails-with-merb&quot;&gt;Uploading large files to Rails with Merb&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=368&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=50099c2725f4718e168cad68c8289337&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=50099c2725f4718e168cad68c8289337&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=a168d3c3bb47955694c858b33e337408&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=a168d3c3bb47955694c858b33e337408&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=3">技术归总 | Technic</category><pubDate>Fri, 29 Aug 2008 10:13:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=368</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=368</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804014/4135566</fs:itemid></item><item><title>Thin: A fast and very simple Ruby web server</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804015/4135566/1/item.html</link><description>&lt;p&gt;知道&lt;a href=&quot;http://code.macournoyer.com/thin/&quot;&gt;Thin&lt;/a&gt;这个东西很久了，记忆中的还是下面这张和mongrel的性能比较图片，但是一直没深入进去了解其到底如何。&lt;br /&gt;
&lt;img alt=&quot;&quot; src=&quot;http://chart.apis.google.com/chart?cht=bvg&amp;amp;chd=t:14.98,54.8723076923077,48.9184615384615,79.9276923076923|14.8692307692308,65.0615384615385,70.4446153846154,89.5553846153846|14.9476923076923,35.1123076923077,70.18,88.6769230769231&amp;amp;chbh=16&amp;amp;chs=350x150&amp;amp;chl=WEBrick|Mongrel|Evented%20M.|Thin&amp;amp;chco=000000,666666,cccccc&amp;amp;chdl=1%20c%20req.|10%20c%20req.|100%20c%20req.&quot; /&gt;&lt;br /&gt;
从图上可以看到，除了&lt;strong&gt;总体性能&lt;/strong&gt;好于mongrel以外，最大的区别在于其在&lt;strong&gt;&lt;font color=&quot;#ff0000&quot;&gt;100个并发&lt;/font&gt;&lt;/strong&gt;的时候还能保证高性能，而100个并发的时候mongrel的性能非常差（且消耗很多的资源，经常由此导致请求无法处理，而出现503）。&lt;br /&gt;
今天花了点时间，把Thin从头到尾的看了一遍，然后连到一个服务器上试验了下，总体感觉如下：&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;安装方便，和mongrel差不多，一条命令就搞定；如果你需要还可以install到init下；&lt;/li&gt;
    &lt;li&gt;使用方便，嫌麻烦的直接thin start就OK了；&lt;/li&gt;
    &lt;li&gt;配置丰富，提供了很多可以配置的东西，比如max-conns，max-persistent-conns等;&lt;/li&gt;
    &lt;li&gt;可以集群，也非常方便，指定开始端口和实例的个数；&lt;/li&gt;
    &lt;li&gt;支持写配置文件，配置文件可以修改，重载。&lt;/li&gt;
    &lt;li&gt;支持做backend，前置nginx，配置和mongrel差不多。&lt;/li&gt;
    &lt;li&gt;可以走UNIX domain sockets；&lt;/li&gt;
    &lt;li&gt;节省资源，提供性能&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;使用过程大概如下，详细的参考资料：&lt;br /&gt;
1、安装&lt;br /&gt;
sudo gem install thin&lt;br /&gt;
2、启动测试&lt;br /&gt;
cd to/your/rails/app&lt;br /&gt;
thin start&lt;br /&gt;
3、配置集群&lt;br /&gt;
thin config -C 1sters.yml -s2 -p 7000 &lt;br /&gt;
4、启动&lt;br /&gt;
thin start -C 1sters.yml&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;参考资料：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;http://code.macournoyer.com/thin/&lt;/li&gt;
    &lt;li&gt;http://articles.slicehost.com/2008/5/27/ubuntu-hardy-nginx-rails-and-thin&lt;/li&gt;
    &lt;li&gt;http://articles.slicehost.com/2008/5/6/ubuntu-hardy-thin-web-server-for-ruby&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=367&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=59cb4c49dc227c626f2cd136275798ff&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=59cb4c49dc227c626f2cd136275798ff&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=c6bfbf33c8d3421de8c16bab38ce008d&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=c6bfbf33c8d3421de8c16bab38ce008d&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=3">技术归总 | Technic</category><pubDate>Thu, 28 Aug 2008 16:21:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=367</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=367</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804015/4135566</fs:itemid></item><item><title>基于CookieStore的session存储机制的安全话题</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804016/4135566/1/item.html</link><description>&lt;p&gt;最近在看一本《&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=359&quot;&gt;The Rails way&lt;/a&gt;》的书，其中关于session存贮机制一章中，对基于CookieStore的session存储机制持否定态度，认为其存在被破解和&lt;a href=&quot;http://en.wikipedia.org/wiki/Replay_attack&quot;&gt;Replay attack&lt;/a&gt;的可能。就我了解的信息来看，这个观点是不妥的。&lt;br /&gt;
最详细的一篇文章是写的laigongli写的这篇&amp;ldquo;&lt;a href=&quot;http://izumi.plan99.net/blog/index.php/2007/11/25/rails-20-cookie-session-store-and-security/#comments&quot;&gt;Rails 2.0, cookie session store and security&lt;/a&gt;&amp;rdquo;，文章比较长，说的很详细，感兴趣的可以过去看看。其中主要观点为：&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;The problems with PStore are significant enough to warrant a replacement &lt;em&gt;default&lt;/em&gt; implementation.&lt;/li&gt;
    &lt;li&gt;It&amp;rsquo;s a bad idea anyway to store sensitive information (like passwords) in the session. It doesn&amp;rsquo;t matter whether the session data can be seen by the client or not, it&amp;rsquo;s something nobody should ever do.&lt;/li&gt;
    &lt;li&gt;Forging session data is only possible if cracking the secret is feasible.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;文中，其针对Rails的采用CookieStore机制时，其针对&amp;ldquo;449fe2e7daee471bffae2fd8dc02313d&amp;rdquo;这样一个密码是，按照其机型：&lt;br /&gt;
&amp;ldquo;&lt;em&gt;My machine, an Intel Core 2 Duo T5300, can try 285840.1 passwords per second with 2 threads.&lt;/em&gt;&amp;rdquo;&lt;br /&gt;
破解下来需要的时间是：&lt;/p&gt;
&lt;pre&gt;16^32/2 / 285840.1&lt;br /&gt;= 5.952*10^32 seconds&lt;br /&gt;= 1.886*10^25 years&lt;/pre&gt;
&lt;p&gt;这是个什么概念？&lt;br /&gt;
&lt;br /&gt;
但是其也提到了由于Rails采用的&lt;span style=&quot;color: red;&quot;&gt; Ruby&amp;rsquo;s CGI::Session的session Id生成器中&lt;/span&gt;存在一个缺陷，导致其算法是可以被破解的，不过&amp;ldquo;&lt;font color=&quot;#ff0000&quot;&gt;Update November 28: The key generation security problem has been fixed.&lt;/font&gt;&amp;rdquo;已经修复了。所以，我也认为基于CookieStore的session存储机制是安全可靠的。&lt;br /&gt;
&lt;br /&gt;
参考：&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://izumi.plan99.net/blog/index.php/2007/11/25/rails-20-cookie-session-store-and-security/#comments&quot;&gt;Rails 2.0, cookie session store and security&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://blog.phishme.com/wp-content/uploads/BustRailsCookie.rb&quot;&gt;BustRailsCookie.rb &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=366&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=346ff8f892a066a5a695d166ba3f54a2&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=346ff8f892a066a5a695d166ba3f54a2&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=aa7a5be155c8b5ac27e1b4a213bab6ab&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=aa7a5be155c8b5ac27e1b4a213bab6ab&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=6">安全相关 | Security</category><pubDate>Thu, 28 Aug 2008 10:42:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=366</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=366</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804016/4135566</fs:itemid></item><item><title>MySQL存储引擎选择和比较</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804017/4135566/1/item.html</link><description>&lt;p&gt;大家都知道MYSQL有很多的存储引擎机制，有人曾说过&amp;ldquo;多个引擎说明这是MYSQL的软肋，它不能像oracle那样搞出一个通用的&amp;rdquo;，这句话的具体意思自己揣摩，我就不瞎解读了。&lt;/p&gt;
&lt;p&gt;今天看到一篇文章，是关于其存储引擎的，虽然不长，但是写的很不错，里面有些tips值得学习，不再翻译，其原文地址为《&lt;a href=&quot;http://www.softwareprojects.com/resources/programming/t-mysql-storage-engines-1470.html&quot;&gt;MySQL Storage Engines&lt;/a&gt;》。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.softwareprojects.com/blogimages/4w8SqRsqldiagram.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;TextMedium&quot;&gt;Tip: &lt;em&gt;A well designed MySQL-powered application will use different storage engines for different tables. If you're still stuck with all MyISAM tables, now may be a good time to revisit.&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=365&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=9e64fae6059a8cdc0c1626e2ff399803&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=9e64fae6059a8cdc0c1626e2ff399803&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=5143d1e5312c6ab4857e2f3f27266241&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=5143d1e5312c6ab4857e2f3f27266241&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=3">技术归总 | Technic</category><pubDate>Wed, 27 Aug 2008 14:36:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=365</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=365</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804017/4135566</fs:itemid></item><item><title>God: 比Monit更好用的monitoring</title><link>http://item.feedsky.com/~feedsky/iceskysl_1sters/~7028473/110804018/4135566/1/item.html</link><description>&lt;p&gt;&lt;a href=&quot;http://god.rubyforge.org/&quot;&gt;God&lt;/a&gt;是一个使用Ruby写成的用于监视任务运行状态的可扩展框架，它的配置脚本采用Ruby来编写。因此，比起它的前辈&lt;a href=&quot;http://www.tildeslash.com/monit/&quot;&gt;Monit&lt;/a&gt;，God更为简单，灵活且易于扩展（尤其对于Ruby使用者），你可以很轻易的添加一些自定义规则。&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;Ruby代码&lt;/div&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-rb&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;MINIONS&amp;nbsp;=&amp;nbsp;[&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;span class=&quot;symbol&quot;&gt;:rails_root&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;/home/mycoolapp/staging/current&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;symbol&quot;&gt;:mongrel_ports&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;gt;&amp;nbsp;[4001,4002,4003,4004,4005],&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;symbol&quot;&gt;:uid&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'mycoolapp'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;symbol&quot;&gt;:gid&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'mycoolapp'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;symbol&quot;&gt;:pid_path&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'/home/mycoolapp/staging/shared/tmp/pids'&lt;/span&gt;&lt;span&gt;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;]&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;MINIONS.&lt;span class=&quot;keyword&quot;&gt;each&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|minion|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;minion[&lt;span class=&quot;symbol&quot;&gt;:mongrel_ports&lt;/span&gt;&lt;span&gt;].&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;each&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|port|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;God.watch&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|w|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w.name&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;mongrel-#{port}&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w.uid&amp;nbsp;=&amp;nbsp;minion[&lt;span class=&quot;symbol&quot;&gt;:uid&lt;/span&gt;&lt;span&gt;]&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w.gid&amp;nbsp;=&amp;nbsp;minion[&lt;span class=&quot;symbol&quot;&gt;:gid&lt;/span&gt;&lt;span&gt;]&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w.interval&amp;nbsp;=&amp;nbsp;30.seconds&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;#&amp;nbsp;default&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w.start&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;mongrel_rails&amp;nbsp;start&amp;nbsp;-c&amp;nbsp;#{minion[:rails_root]}&amp;nbsp;-p&amp;nbsp;#{port}&amp;nbsp;\&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;string&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;-P&amp;nbsp;#{minion[:pid_path]}/mongrel.#{port}.pid&amp;nbsp;-e&amp;nbsp;production&amp;nbsp;-d&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w.stop&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;mongrel_rails&amp;nbsp;stop&amp;nbsp;-P&amp;nbsp;#{minion[:pid_path]}/mongrel.#{port}.pid&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w.restart&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;mongrel_rails&amp;nbsp;restart&amp;nbsp;-P&amp;nbsp;#{minion[:pid_path]}/mongrel.#{port}.pid&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w.start_grace&amp;nbsp;=&amp;nbsp;10.seconds&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w.restart_grace&amp;nbsp;=&amp;nbsp;10.seconds&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w.pid_file&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;#{minion[:pid_path]}/mongrel.#{port}.pid&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w.behavior(&lt;span class=&quot;symbol&quot;&gt;:clean_pid_file&lt;/span&gt;&lt;span&gt;)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w.start_if&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|start|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;start.condition(&lt;span class=&quot;symbol&quot;&gt;:process_running&lt;/span&gt;&lt;span&gt;)&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|c|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.interval&amp;nbsp;=&amp;nbsp;5.seconds&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.running&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;false&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w.restart_if&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|restart|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;restart.condition(&lt;span class=&quot;symbol&quot;&gt;:memory_usage&lt;/span&gt;&lt;span&gt;)&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|c|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.above&amp;nbsp;=&amp;nbsp;150.megabytes&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.times&amp;nbsp;=&amp;nbsp;[3,&amp;nbsp;5]&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;#&amp;nbsp;3&amp;nbsp;out&amp;nbsp;of&amp;nbsp;5&amp;nbsp;intervals&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;restart.condition(&lt;span class=&quot;symbol&quot;&gt;:cpu_usage&lt;/span&gt;&lt;span&gt;)&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|c|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.above&amp;nbsp;=&amp;nbsp;50.percent&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.times&amp;nbsp;=&amp;nbsp;5&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;#&amp;nbsp;lifecycle&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w.lifecycle&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|on|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;on.condition(&lt;span class=&quot;symbol&quot;&gt;:flapping&lt;/span&gt;&lt;span&gt;)&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;do&lt;/span&gt;&lt;span&gt;&amp;nbsp;|c|&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.to_state&amp;nbsp;=&amp;nbsp;[&lt;span class=&quot;symbol&quot;&gt;:start&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;symbol&quot;&gt;:restart&lt;/span&gt;&lt;span&gt;]&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.times&amp;nbsp;=&amp;nbsp;5&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.within&amp;nbsp;=&amp;nbsp;5.minute&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.transition&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;symbol&quot;&gt;:unmonitored&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.retry_in&amp;nbsp;=&amp;nbsp;10.minutes&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.retry_times&amp;nbsp;=&amp;nbsp;5&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.retry_within&amp;nbsp;=&amp;nbsp;2.hours&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;end&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;要了解更多资料，请参考如下文档:&lt;br /&gt;
http://god.rubyforge.org/&lt;br /&gt;
http://ihower.idv.tw/blog/archives/1762&lt;br /&gt;
http://ezinearticles.com/?Why-Rails-Developers-Need-God&amp;amp;id=845672&lt;br /&gt;
http://www.letrails.cn/archives/46&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://iceskysl.1sters.com/?action=show&amp;amp;id=364&quot; target=&quot;_blank&quot;&gt;阅读全文&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;!-- Feedsky flare --&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=c9818a650834bb48c42dd2614ad47d97&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=c9818a650834bb48c42dd2614ad47d97&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?a=ea4e73e01ced46e87eb9b00288587588&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~flare/iceskysl_1sters?i=ea4e73e01ced46e87eb9b00288587588&quot; border=&quot;0&quot;&gt;&lt;/a&gt;&lt;!-- /Feedsky flare --&gt;</description><category domain="http://iceskysl.1sters.com/?cid=3">技术归总 | Technic</category><pubDate>Tue, 26 Aug 2008 15:50:00 +0800</pubDate><author>iceskysl</author><guid isPermaLink="false">http://iceskysl.1sters.com/?action=show&amp;id=364</guid><dc:creator>iceskysl</dc:creator><fs:srclink>http://iceskysl.1sters.com/?action=show&amp;id=364</fs:srclink><fs:srcfeed>http://iceskysl.1sters.com/rss.php</fs:srcfeed><fs:itemid>feedsky/iceskysl_1sters/~7028473/110804018/4135566</fs:itemid></item></channel></rss>