<?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:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/ruitao" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/ruitao" type="application/rss+xml"></fs:self_link><lastBuildDate>Sat, 16 Jan 2010 11:16:20 GMT</lastBuildDate><title>CodePy.Net</title><description>分享我的快乐</description><image><url>http://www.feedsky.com/feed/ruitao/sc/gif</url><title>CodePy.Net</title><link>http://codepy.net</link></image><link>http://codepy.net</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Sat, 16 Jan 2010 11:17:31 GMT</pubDate><item><title>Vimperator+Google工具栏最大化Firefox页面显示空间</title><link>http://item.feedsky.com/~feedsky/ruitao/~7151837/322441193/4176829/1/item.html</link><content:encoded>&lt;h3&gt;1.去掉Firefox默认菜单栏、工具栏、收藏栏&lt;/h3&gt;
&lt;p&gt;在&lt;a href=&quot;http://vimperator.org/&quot; target=&quot;_blank&quot;&gt;Vimperator&lt;/a&gt;未出世之前，就一直想扩大Firefox的页面显示空间，特别是到了宽屏时代，这种需求愈发强烈。Vimperator解决了我大多数需求，并且对于像我这种VIM控的人来说，这本身就是福音。但是Vimperator与某些扩展结合起来之后，用得不是很顺，特别一些辅助WEB开发的扩展，比如&lt;a href=&quot;https://addons.mozilla.org/addon/3829&quot; target=&quot;_blank&quot;&gt;Live Http Headers&lt;/a&gt;。或者&lt;a href=&quot;http://readitlaterlist.com/&quot; target=&quot;_blank&quot;&gt;Read it Later&lt;/a&gt;这种扩展。后来发现使用Google工具栏的Firefox版本作为载体，用来放相关扩展的按钮，是一个很不错的方案，这是效果图：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://codepy.net/wp-content/uploads/2010/01/2010-01-16-184927_1280x800_scrot.png&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-151&quot; title=&quot;Google工具栏+Vimperator截图&quot; src=&quot;http://codepy.net/wp-content/uploads/2010/01/2010-01-16-184927_1280x800_scrot-300x187.png&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;187&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;实现方法很简单，先用”set guioptions+=mT&amp;#8221;命令调出Firefox默认的标题栏和工具栏，右键点击工具栏的空白处，选择定制，再把你需要的按钮拖放到Google工具栏上面，最后隐藏掉标题栏和工具栏即可。&lt;/p&gt;
&lt;h3&gt;2.自动隐藏Vimperator命令输入框&lt;/h3&gt;
&lt;p&gt;在使用Vimperator的时候我们频繁地使用到Vimperator的命令输入框，这个可以通过Vimperator的一个插件来实现自动隐藏，等我们输入命令的时候它才会出现。这个需要&lt;a href=&quot;http://vimperator.kurinton.net/plugins/maine_coon.html&quot; target=&quot;_blank&quot;&gt;Maine Coon&lt;/a&gt;以及它依赖的库&lt;a href=&quot;http://vimperator.kurinton.net/plugins/_libly.html&quot; target=&quot;_blank&quot;&gt;_libly&lt;/a&gt;，根据Vimperator版本来选择相应的插件以及库版本，Linux用户放到.vimperator/plugin目录下面，WIndows用户放到用户目录下面的vimperator/plugin目录下，没有就创建相关目录。&lt;/p&gt;
&lt;h3&gt;3.自动隐藏Firefox状态栏&lt;/h3&gt;
&lt;p&gt;这个推荐使用&lt;a href=&quot;https://addons.mozilla.org/zh-CN/firefox/addon/1530/&quot; target=&quot;_blank&quot;&gt;autoHideStatusBar&lt;/a&gt;，让状态栏只在鼠标移到链接上面、载入页面的时候出现。大大地扩展了Firefox的页面显示空间。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/322441193/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441193/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441193/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441193/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://codepy.net/2010/01/16/use-vimperator-to-enlarge-your-firefox-page-area.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>1.去掉Firefox默认菜单栏、工具栏、收藏栏
在Vimperator未出世之前，就一直想扩大Firefox的页面显示空间，特别是到了宽屏时代，这种需求愈发强烈。Vimperator解决了我大多数需求，并且对于像我这种VIM控的人来说，这本身就是福音。但是Vimperator与某些扩展结合起来之后，用得不是很顺，特别一些辅助WEB开发的扩展，比如Live Http Headers。或者Read it Later这种扩展。后来发现使用Google工具栏的Firefox版本作为载体，用来放相关扩展的按钮，是一个很不错的方案，这是效果图：

实现方法很简单，先用”set guioptions+=mT&amp;#8221;命令调出Firefox默认的标题栏和工具栏，右键点击工具栏的空白处，选择定制，再把你需要的按钮拖放到Google工具栏上面，最后隐藏掉标题栏和工具栏即可。
2.自动隐藏Vimperator命令输入框
在使用Vimperator的时候我们频繁地使用到Vimperator的命令输入框，这个可以通过Vimperator的一个插件来实现自动隐藏，等我们输入命令的时候它才会出现。这个需要Maine Coon以及它依赖的库_libly，根据Vimperator版本来选择相应的插件以及库版本，Linux用户放到.vimperator/plugin目录下面，WIndows用户放到用户目录下面的vimperator/plugin目录下，没有就创建相关目录。
3.自动隐藏Firefox状态栏
这个推荐使用autoHideStatusBar，让状态栏只在鼠标移到链接上面、载入页面的时候出现。大大地扩展了Firefox的页面显示空间。&lt;img src=&quot;http://www1.feedsky.com/t1/322441193/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441193/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441193/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441193/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>Plugin</category><category>vimperator</category><category>autohidestatusbar</category><category>得力工具</category><category>Firefox</category><pubDate>Sat, 16 Jan 2010 19:16:20 +0800</pubDate><author>ruitao</author><comments>http://codepy.net/2010/01/16/use-vimperator-to-enlarge-your-firefox-page-area.html#comments</comments><guid isPermaLink="false">http://codepy.net/?p=150</guid><dc:creator>ruitao</dc:creator><fs:srclink>http://codepy.net/2010/01/16/use-vimperator-to-enlarge-your-firefox-page-area.html</fs:srclink><fs:srcfeed>http://codepy.net/feed/</fs:srcfeed><fs:itemid>feedsky/ruitao/~7151837/322441193/4176829</fs:itemid></item><item><title>迟到的2009总结</title><link>http://item.feedsky.com/~feedsky/ruitao/~7151837/322441194/4176829/1/item.html</link><content:encoded>&lt;p&gt;由于博客所在IDC的种种原因，这一篇本来应该在2009年12月31号的博文到现在才发。&lt;/p&gt;
&lt;p&gt;小结了一下，2009年那一年：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4月份：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;离开了百步梯，这是一个新的开始。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7月份~11月份：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;加入到某创业公司的主站研发，很惭愧，技术是我主导的，虽然最后网站做出来了，但是充斥着随心所欲更改需求的伤痕。最后，公司由于各种原因在2009年最后一天清算，看着自己几个月的心血就这样没了，我和我的同伴们都感到很伤感。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12月份:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;借着参加某国内高校开源创新大赛的契机（最后得了个二等奖，有点不服，呵呵^^，不过本来就不大重要），我们几个人利用了期末考试时间的晚上时间（3个星期的晚上），做了一个山寨Basecamp。当然，现在还是相当粗糙的，我们的本意是能够用脑图来辅助进行项目管理和规划，但是完全实现还是需要一定的时间。&lt;/p&gt;
&lt;p&gt;项目地址：&lt;a href=&quot;http://code.google.com/p/itaskit&quot; target=&quot;_blank&quot;&gt;http://code.google.com/p/itaskit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;关于这个项目的详细情况，另写博文介绍。&lt;/p&gt;
&lt;p&gt;另外，参加了一次广州技术沙龙，收获颇多，感谢开源的人们。借着上面的项目，我们也希望能够奉献点微博之力。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2010年，大概有这么几件事要做：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;1.把itaskit这个开源项目完善了&lt;/p&gt;
&lt;p&gt;2.利用空余时间做点小东西（具体保密^^）&lt;/p&gt;
&lt;p&gt;3.暑假找一份好的实习（大三下了，是该找实习了）&lt;/p&gt;
&lt;p&gt;4.最后，当然是在2010年找到自己喜欢的工作&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/322441194/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441194/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441194/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441194/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://codepy.net/2010/01/07/summary-2009.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>由于博客所在IDC的种种原因，这一篇本来应该在2009年12月31号的博文到现在才发。
小结了一下，2009年那一年：
4月份：
离开了百步梯，这是一个新的开始。
7月份~11月份：
加入到某创业公司的主站研发，很惭愧，技术是我主导的，虽然最后网站做出来了，但是充斥着随心所欲更改需求的伤痕。最后，公司由于各种原因在2009年最后一天清算，看着自己几个月的心血就这样没了，我和我的同伴们都感到很伤感。
12月份:
借着参加某国内高校开源创新大赛的契机（最后得了个二等奖，有点不服，呵呵^^，不过本来就不大重要），我们几个人利用了期末考试时间的晚上时间（3个星期的晚上），做了一个山寨Basecamp。当然，现在还是相当粗糙的，我们的本意是能够用脑图来辅助进行项目管理和规划，但是完全实现还是需要一定的时间。
项目地址：http://code.google.com/p/itaskit
关于这个项目的详细情况，另写博文介绍。
另外，参加了一次广州技术沙龙，收获颇多，感谢开源的人们。借着上面的项目，我们也希望能够奉献点微博之力。
2010年，大概有这么几件事要做：
1.把itaskit这个开源项目完善了
2.利用空余时间做点小东西（具体保密^^）
3.暑假找一份好的实习（大三下了，是该找实习了）
4.最后，当然是在2010年找到自己喜欢的工作&lt;img src=&quot;http://www1.feedsky.com/t1/322441194/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441194/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441194/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441194/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>2009</category><category>编程随想</category><category>2010</category><category>summary</category><pubDate>Thu, 07 Jan 2010 22:35:08 +0800</pubDate><author>ruitao</author><comments>http://codepy.net/2010/01/07/summary-2009.html#comments</comments><guid isPermaLink="false">http://codepy.net/?p=148</guid><dc:creator>ruitao</dc:creator><fs:srclink>http://codepy.net/2010/01/07/summary-2009.html</fs:srclink><fs:srcfeed>http://codepy.net/feed/</fs:srcfeed><fs:itemid>feedsky/ruitao/~7151837/322441194/4176829</fs:itemid></item><item><title>博客总算恢复正常了</title><link>http://item.feedsky.com/~feedsky/ruitao/~7151837/322441195/4176829/1/item.html</link><content:encoded>&lt;p&gt;不想说太多，经过一个多星期，博客总算能够恢复并且能够正常使用了，接下来，是应该好好珍惜了。。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/322441195/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441195/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441195/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441195/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://codepy.net/2010/01/06/restart-my-blog.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>不想说太多，经过一个多星期，博客总算能够恢复并且能够正常使用了，接下来，是应该好好珍惜了。。&lt;img src=&quot;http://www1.feedsky.com/t1/322441195/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441195/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441195/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441195/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>编程随想</category><category>blog</category><pubDate>Wed, 06 Jan 2010 14:53:33 +0800</pubDate><author>ruitao</author><comments>http://codepy.net/2010/01/06/restart-my-blog.html#comments</comments><guid isPermaLink="false">http://codepy.net/?p=147</guid><dc:creator>ruitao</dc:creator><fs:srclink>http://codepy.net/2010/01/06/restart-my-blog.html</fs:srclink><fs:srcfeed>http://codepy.net/feed/</fs:srcfeed><fs:itemid>feedsky/ruitao/~7151837/322441195/4176829</fs:itemid></item><item><title>Archlinux下面的ClearType</title><link>http://item.feedsky.com/~feedsky/ruitao/~7151837/322441196/4176829/1/item.html</link><content:encoded>&lt;p&gt;一直纳闷Archlinux下面的字体没有Ubuntu好看，于是乎翻了一下ArchWiki上面关于字体的文章，在“&lt;a href=&quot;http://wiki.archlinux.org/index.php/%E5%AD%97%E4%BD%93%E8%AE%BE%E7%BD%AE_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)&quot; target=&quot;_blank&quot;&gt;字体设置&lt;/a&gt;”这里看到了关于cairo的介绍：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;一个支持多种输出的向量图形库,也就是说，cairo是种画图的工具库，他可以向多种设备上画图.可以输出到pdf,ps，xlib，XCB，win32，svg。基于GTK(&amp;gt;=  2.8.0)的程序用cairo 画字而不再使用libXft 。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;也就是说，我们只需要找到打了ClearType补丁的cairo库替换掉系统原来的即可。&lt;span style=&quot;color: #ff6600;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;yaourt -Ss cairo&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;查询了一下跟cairo相关的aur包，果然发现了打了补丁的cairo库，有以下&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;http://aur.archlinux.org/packages.php?ID=8110&quot; target=&quot;_blank&quot;&gt;cairo-cleartype&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;http://aur.archlinux.org/packages.php?ID=17327&quot;&gt;cairo-ubuntu&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;http://aur.archlinux.org/packages.php?ID=16459&quot; target=&quot;_blank&quot;&gt;cairo-lcd&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;试用了cairo-cleartype和cairo-ubuntu两个，cairo-ubuntu打的是ubuntu的cleartype补丁，不过发现效果没有cairo-cleartype的好，所以最终选择了cairo-cleartype。这是打完补丁之后的系统截图：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/30488214@N08/4171860024/&quot;&gt;&lt;img class=&quot;alignnone&quot; title=&quot;ClearType之后的Google 搜索&quot; src=&quot;http://farm3.static.flickr.com/2503/4171860024_b4767b60cd.jpg&quot; alt=&quot;&quot; width=&quot;376&quot; height=&quot;401&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;另外还有一个配置好的fonts.conf文件：&lt;a href=&quot;http://codepy.net/wp-content/uploads/2009/12/fonts.txt&quot;&gt;fonts.txt &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载完之后重命名为.fonts.conf复制到自己的用户主目录（ 比如/home/username ）下面就行了。&lt;/p&gt;
&lt;p&gt;用到了“华文黑体”还有“Lucida Grande&amp;#8221;，这两个字体网上一大堆，我就不提供了。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/322441196/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441196/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441196/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441196/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://codepy.net/2009/12/09/cleartype-in-archlinux.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>一直纳闷Archlinux下面的字体没有Ubuntu好看，于是乎翻了一下ArchWiki上面关于字体的文章，在“字体设置”这里看到了关于cairo的介绍：
一个支持多种输出的向量图形库,也就是说，cairo是种画图的工具库，他可以向多种设备上画图.可以输出到pdf,ps，xlib，XCB，win32，svg。基于GTK(&amp;#62;=  2.8.0)的程序用cairo 画字而不再使用libXft 。
也就是说，我们只需要找到打了ClearType补丁的cairo库替换掉系统原来的即可。

yaourt -Ss cairo
查询了一下跟cairo相关的aur包，果然发现了打了补丁的cairo库，有以下

cairo-cleartype
cairo-ubuntu
cairo-lcd

试用了cairo-cleartype和cairo-ubuntu两个，cairo-ubuntu打的是ubuntu的cleartype补丁，不过发现效果没有cairo-cleartype的好，所以最终选择了cairo-cleartype。这是打完补丁之后的系统截图：

另外还有一个配置好的fonts.conf文件：fonts.txt 
下载完之后重命名为.fonts.conf复制到自己的用户主目录（ 比如/home/username ）下面就行了。
用到了“华文黑体”还有“Lucida Grande&amp;#8221;，这两个字体网上一大堆，我就不提供了。&lt;img src=&quot;http://www1.feedsky.com/t1/322441196/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441196/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441196/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441196/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>Linux</category><category>cleartype</category><category>archlinux</category><category>cairo</category><category>LINUX生活</category><pubDate>Wed, 09 Dec 2009 21:31:18 +0800</pubDate><author>ruitao</author><comments>http://codepy.net/2009/12/09/cleartype-in-archlinux.html#comments</comments><guid isPermaLink="false">http://codepy.net/?p=143</guid><dc:creator>ruitao</dc:creator><fs:srclink>http://codepy.net/2009/12/09/cleartype-in-archlinux.html</fs:srclink><fs:srcfeed>http://codepy.net/feed/</fs:srcfeed><fs:itemid>feedsky/ruitao/~7151837/322441196/4176829</fs:itemid></item><item><title>MySQL数据库建模利器 — MySQL Workbench</title><link>http://item.feedsky.com/~feedsky/ruitao/~7151837/322441197/4176829/1/item.html</link><content:encoded>&lt;p&gt;记得大一开始用PHP+MySQL进行开发的时候，涉及到数据库的设计基本上都是靠纸张+phpMyAdmin来解决问题，后来接触到了PowerDesigner，但是用起来并不是很顺手，并且生成的SQL脚本经常会出现错误。后来大部分时间都在Linux进行开发，也想找一款类似的数据库建模软件，于是乎，找到了&lt;a href=&quot;http://dev.mysql.com/downloads/select.php?id=8&quot; target=&quot;_blank&quot;&gt;MySQL Workbench&lt;/a&gt;，MySQL官方出的，前身是 FabForce 公司的 DB Designer 4。&lt;/p&gt;
&lt;p&gt;加上&lt;a href=&quot;http://schemaspy.sourceforge.net/&quot; target=&quot;_blank&quot;&gt;schemaSpy&lt;/a&gt;生成数据库文档，大大方便了我们进行数据库开发。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/322441197/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441197/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441197/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441197/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://codepy.net/2009/12/04/powerful-visual-database-design-tool-mysql-workbench.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>记得大一开始用PHP+MySQL进行开发的时候，涉及到数据库的设计基本上都是靠纸张+phpMyAdmin来解决问题，后来接触到了PowerDesigner，但是用起来并不是很顺手，并且生成的SQL脚本经常会出现错误。后来大部分时间都在Linux进行开发，也想找一款类似的数据库建模软件，于是乎，找到了MySQL Workbench，MySQL官方出的，前身是 FabForce 公司的 DB Designer 4。
加上schemaSpy生成数据库文档，大大方便了我们进行数据库开发。&lt;img src=&quot;http://www1.feedsky.com/t1/322441197/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441197/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441197/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441197/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>mysql-workbench</category><category>mysql</category><category>database</category><category>得力工具</category><category>schemaspy</category><pubDate>Fri, 04 Dec 2009 19:07:37 +0800</pubDate><author>ruitao</author><comments>http://codepy.net/2009/12/04/powerful-visual-database-design-tool-mysql-workbench.html#comments</comments><guid isPermaLink="false">http://codepy.net/?p=141</guid><dc:creator>ruitao</dc:creator><fs:srclink>http://codepy.net/2009/12/04/powerful-visual-database-design-tool-mysql-workbench.html</fs:srclink><fs:srcfeed>http://codepy.net/feed/</fs:srcfeed><fs:itemid>feedsky/ruitao/~7151837/322441197/4176829</fs:itemid></item><item><title>保存文件时VIM自动检查PHP语法错误</title><link>http://item.feedsky.com/~feedsky/ruitao/~7151837/322441198/4176829/1/item.html</link><content:encoded>&lt;p&gt;Google了一下，让VIM能够检查PHP的语法错误无外乎以下这段VIM配置：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;vim&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;&amp;quot;======================================================&lt;/span&gt;
&lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;&amp;quot;PHP语法检查&lt;/span&gt;
&lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;&amp;quot;======================================================&lt;/span&gt;
&amp;nbsp;
&lt;span style=&quot;color: #804040;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;!&lt;/span&gt; PhpCheckSyntax&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;
  &lt;span style=&quot;color: #C5A22D;&quot;&gt;&amp;quot; Check php syntax
  setlocal makeprg=&lt;span style=&quot;&quot;&gt;\p&lt;/span&gt;hp&lt;span style=&quot;&quot;&gt;\ &lt;/span&gt;-l&lt;span style=&quot;&quot;&gt;\ &lt;/span&gt;-n&lt;span style=&quot;&quot;&gt;\ &lt;/span&gt;-d&lt;span style=&quot;&quot;&gt;\ &lt;/span&gt;html_errors=off&lt;span style=&quot;&quot;&gt;\ &lt;/span&gt;%
&amp;nbsp;
  &amp;quot;&lt;/span&gt; Set shellpipe
  setlocal shellpipe=&lt;span style=&quot;color: #000000;&quot;&gt;&amp;gt;&lt;/span&gt;
&amp;nbsp;
  &lt;span style=&quot;color: #C5A22D;&quot;&gt;&amp;quot; Use error format for parsing PHP error output
  setlocal errorformat=%m&lt;span style=&quot;&quot;&gt;\ &lt;/span&gt;in&lt;span style=&quot;&quot;&gt;\ &lt;/span&gt;%f&lt;span style=&quot;&quot;&gt;\ &lt;/span&gt;on&lt;span style=&quot;&quot;&gt;\ &lt;/span&gt;line&lt;span style=&quot;&quot;&gt;\ &lt;/span&gt;%l
  make %
endfunction
&amp;nbsp;
&amp;quot;&lt;/span&gt; Perform &lt;span style=&quot;color: #000000;&quot;&gt;:&lt;/span&gt;PhpCheckSyntax&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;
&lt;span style=&quot;color: #25BB4D;&quot;&gt;map&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;&amp;lt;&lt;/span&gt;F6&lt;span style=&quot;color: #000000;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #000000;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #804040;&quot;&gt;call&lt;/span&gt; PhpCheckSyntax&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;lt;&lt;/span&gt;CR&lt;span style=&quot;color: #000000;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #adadad; font-style: italic;&quot;&gt;&amp;quot; imap &amp;lt;F6&amp;gt; &amp;lt;ESC&amp;gt;:call PhpCheckSyntax()&amp;lt;CR&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;不过我希望能够在保存的时候自动检查，所以加了这一句：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;vim&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #668080;&quot;&gt;autocmd&lt;/span&gt; BufWritePost &lt;span style=&quot;color: #000000;&quot;&gt;*.&lt;/span&gt;php &lt;span style=&quot;color: #000000;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #804040;&quot;&gt;call&lt;/span&gt; PhpCheckSyntax&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/322441198/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441198/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441198/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441198/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://codepy.net/2009/11/05/auto-check-php-syntax-errors-in-vim.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>Google了一下，让VIM能够检查PHP的语法错误无外乎以下这段VIM配置：

&amp;#34;======================================================
&amp;#34;PHP语法检查
&amp;#34;======================================================
&amp;#160;
function! PhpCheckSyntax&amp;#40;&amp;#41;
  &amp;#34; Check php syntax
  setlocal makeprg=\php\ -l\ -n\ -d\ html_errors=off\ %
&amp;#160;
  &amp;#34; Set shellpipe
  setlocal shellpipe=&amp;#62;
&amp;#160;
  &amp;#34; Use error format for parsing PHP error output
  setlocal errorformat=%m\ in\ %f\ on\ line\ %l
  make %
endfunction
&amp;#160;
&amp;#34; Perform :PhpCheckSyntax&amp;#40;&amp;#41;
map &amp;#60;F6&amp;#62; :call PhpCheckSyntax&amp;#40;&amp;#41;&amp;#60;CR&amp;#62;
&amp;#34; imap &amp;#60;F6&amp;#62; &amp;#60;ESC&amp;#62;:call PhpCheckSyntax()&amp;#60;CR&amp;#62;

不过我希望能够在保存的时候自动检查，所以加了这一句：

autocmd BufWritePost *.php :call [...]&lt;img src=&quot;http://www1.feedsky.com/t1/322441198/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441198/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441198/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441198/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>PHP</category><category>LINUX生活</category><pubDate>Thu, 05 Nov 2009 19:36:23 +0800</pubDate><author>ruitao</author><comments>http://codepy.net/2009/11/05/auto-check-php-syntax-errors-in-vim.html#comments</comments><guid isPermaLink="false">http://codepy.net/?p=139</guid><dc:creator>ruitao</dc:creator><fs:srclink>http://codepy.net/2009/11/05/auto-check-php-syntax-errors-in-vim.html</fs:srclink><fs:srcfeed>http://codepy.net/feed/</fs:srcfeed><fs:itemid>feedsky/ruitao/~7151837/322441198/4176829</fs:itemid></item><item><title>分享一下自己MOD的VIM ColorScheme（seaweed）</title><link>http://item.feedsky.com/~feedsky/ruitao/~7151837/322441199/4176829/1/item.html</link><content:encoded>&lt;p&gt;修改自wombat，更换了底色，微调了一下颜色，我把它命名为seaweed  &lt;img src='http://codepy.net/wp-includes/images/smilies/icon_cool.gif' alt=':cool:' class='wp-smiley' /&gt;   。下面是python的示例&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Seaweed&lt;/strong&gt;: [&lt;a href=&quot;http://codepy.net/wp-content/uploads/2009/11/seaweed.vim&quot;&gt;seaweed.vim&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-136&quot; title=&quot;2009-11-05-172508_418x252_scrot&quot; src=&quot;http://codepy.net/wp-content/uploads/2009/11/2009-11-05-172508_418x252_scrot.png&quot; alt=&quot;2009-11-05-172508_418x252_scrot&quot; width=&quot;418&quot; height=&quot;252&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wombat&lt;/strong&gt;: [&lt;a href=&quot;http://www.vim.org/scripts/script.php?script_id=1778&quot; target=&quot;_blank&quot;&gt;wombat.vim&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-137&quot; title=&quot;2009-11-05-172531_422x252_scrot&quot; src=&quot;http://codepy.net/wp-content/uploads/2009/11/2009-11-05-172531_422x252_scrot.png&quot; alt=&quot;2009-11-05-172531_422x252_scrot&quot; width=&quot;422&quot; height=&quot;252&quot; /&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/322441199/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441199/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441199/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441199/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://codepy.net/2009/11/05/share-my-vim-colorschema.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>修改自wombat，更换了底色，微调了一下颜色，我把它命名为seaweed     。下面是python的示例
Seaweed: [seaweed.vim]

Wombat: [wombat.vim]&lt;img src=&quot;http://www1.feedsky.com/t1/322441199/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441199/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441199/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441199/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>colorscheme</category><category>LINUX生活</category><category>gvim</category><pubDate>Thu, 05 Nov 2009 17:40:07 +0800</pubDate><author>ruitao</author><comments>http://codepy.net/2009/11/05/share-my-vim-colorschema.html#comments</comments><guid isPermaLink="false">http://codepy.net/?p=134</guid><dc:creator>ruitao</dc:creator><fs:srclink>http://codepy.net/2009/11/05/share-my-vim-colorschema.html</fs:srclink><fs:srcfeed>http://codepy.net/feed/</fs:srcfeed><fs:itemid>feedsky/ruitao/~7151837/322441199/4176829</fs:itemid></item><item><title>网站性能优化小结 – 前端优化</title><link>http://item.feedsky.com/~feedsky/ruitao/~7151837/322441200/4176829/1/item.html</link><content:encoded>&lt;p&gt;说到对前端的优化，不得不提到Yahoo 的 Exceptional Performance Team，他们的努力，为我们提供了34条&lt;a href=&quot;http://developer.yahoo.com/performance/&quot; target=&quot;_blank&quot;&gt;优化建议&lt;/a&gt;，并且提供了Firefox下面进行前端分析的扩展&lt;a href=&quot;https://addons.mozilla.org/zh-CN/firefox/addon/5369&quot; target=&quot;_blank&quot;&gt;YSlow&lt;/a&gt;，根据YSlow对网站的分析报告，逐条进行优化即可。下面只是总结一下我在优化我们网站时针对YSlow分析生成的报告中需要配置服务器端的部分：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.Add Expires headers&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在HTTP/1.1中，Expires headers出现在&lt;a href=&quot;http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html&quot; target=&quot;_blank&quot;&gt;Caching in HTTP&lt;/a&gt;中，用户通过浏览器第一次访问我们的网站时，会请求很多静态文件（css，js，图片等），我们可以通过添加Expires headers来缓存这些文件，以Apache为例：  先注释掉httpd.conf里面的&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;apache&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #00007f;&quot;&gt;LoadModule&lt;/span&gt; headers_module modules/mod_headers.so&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;在文件末尾添加上：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;apache&quot; style=&quot;font-family:monospace;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight:bold;&quot;&gt;FilesMatch&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;&amp;quot;&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\.&lt;/span&gt;(ico|pdf|flv|jpe?g|png|gif|js|css|swf)$&amp;quot;&lt;/span&gt;&amp;gt;
    &lt;span style=&quot;color: #00007f;&quot;&gt;ExpiresActive&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;On&lt;/span&gt;
    &lt;span style=&quot;color: #00007f;&quot;&gt;ExpiresDefault&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;&amp;quot;access plus 1 year&amp;quot;&lt;/span&gt;
&amp;lt;/&lt;span style=&quot;color: #000000; font-weight:bold;&quot;&gt;FilesMatch&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;这里我将文件的有效时间设置为1年。 关于Apache mod_headers的文档，查看&lt;a href=&quot;http://www.itlearner.com/code/apache2.2/mod/mod_headers.html&quot; target=&quot;_blank&quot;&gt;这里&lt;/a&gt; &lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.Compress components with gzip&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;用gzip压缩服务器端和浏览器端传输的数据，可以大大减少流量，按照YSlow中的说法：“Approximately 90% of today&amp;#8217;s Internet traffic travels through browsers that claim to support gzip”，所以我们大可启用gzip压缩来减少流量。也是以Apache为例：  注释掉http.conf里面的  LoadModule deflate_module modules/mod_deflate.so  添加&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;apache&quot; style=&quot;font-family:monospace;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight:bold;&quot;&gt;ifmodule&lt;/span&gt; mod_deflate.c&amp;gt;
DeflateCompressionLevel &lt;span style=&quot;color: #ff0000;&quot;&gt;6&lt;/span&gt;
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE js css
&amp;lt;/&lt;span style=&quot;color: #000000; font-weight:bold;&quot;&gt;ifmodule&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;到文件末尾，这里我们只对js和css进行压缩，不至于占用太多的CPU资源，jpg、png这些本身就是被压缩好的文件也没有必要进行二次压缩。DeflateCompressionLevel表示的是压缩程度，越高的压缩程度就会有越好的压缩效果，同时也意味着占用越多的CPU资源。取值范围在1~9之间，这里我们选择6，保证较好的压缩效果又不占用太多的CPU资源。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3.Configure entity tags (ETags)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;关闭last-modified和Etags可以减少服务器的带宽和负载，简单点说，这两个参数会比较本地缓存的资源对应的服务器资源是否被修改过，如果修改过，则重新下载。想更深入地了解，可以看一下InfoQ的《&lt;a href=&quot;http://www.infoq.com/cn/articles/etags&quot; target=&quot;_blank&quot;&gt;使用ETags减少Web应用带宽和负载&lt;/a&gt;》。同样，以Apache为例，我们通过添加以下规则来关闭last-modified和Etags：  # 关闭last-modified&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;apache&quot; style=&quot;font-family:monospace;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight:bold;&quot;&gt;FilesMatch&lt;/span&gt; &lt;span style=&quot;color: #7f007f;&quot;&gt;&amp;quot;&lt;span style=&quot;color: #000099; font-weight: bold;&quot;&gt;\.&lt;/span&gt;(ico|pdf|flv|jpe?g|png|gif|js|css|swf)$&amp;quot;&lt;/span&gt;&amp;gt;
&lt;span style=&quot;color: #00007f;&quot;&gt;Header&lt;/span&gt; unset Last-Modified
&amp;lt;/&lt;span style=&quot;color: #000000; font-weight:bold;&quot;&gt;FilesMatch&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;# 关闭etags&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;apache&quot; style=&quot;font-family:monospace;&quot;&gt;FileETag &lt;span style=&quot;color: #0000ff;&quot;&gt;none&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/322441200/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441200/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441200/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441200/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://codepy.net/2009/10/21/web-optimization-fron-end-optimization.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>说到对前端的优化，不得不提到Yahoo 的 Exceptional Performance Team，他们的努力，为我们提供了34条优化建议，并且提供了Firefox下面进行前端分析的扩展YSlow，根据YSlow对网站的分析报告，逐条进行优化即可。下面只是总结一下我在优化我们网站时针对YSlow分析生成的报告中需要配置服务器端的部分：
1.Add Expires headers
在HTTP/1.1中，Expires headers出现在Caching in HTTP中，用户通过浏览器第一次访问我们的网站时，会请求很多静态文件（css，js，图片等），我们可以通过添加Expires headers来缓存这些文件，以Apache为例：  先注释掉httpd.conf里面的

LoadModule headers_module modules/mod_headers.so

在文件末尾添加上：

&amp;#60;FilesMatch &amp;#34;\.(ico&amp;#124;pdf&amp;#124;flv&amp;#124;jpe?g&amp;#124;png&amp;#124;gif&amp;#124;js&amp;#124;css&amp;#124;swf)$&amp;#34;&amp;#62;
    ExpiresActive On
    ExpiresDefault &amp;#34;access plus 1 year&amp;#34;
&amp;#60;/FilesMatch&amp;#62;

这里我将文件的有效时间设置为1年。 关于Apache mod_headers的文档，查看这里 
2.Compress components with gzip
用gzip压缩服务器端和浏览器端传输的数据，可以大大减少流量，按照YSlow中的说法：“Approximately 90% of today&amp;#8217;s Internet traffic travels through browsers that claim to support gzip”，所以我们大可启用gzip压缩来减少流量。也是以Apache为例：  注释掉http.conf里面的  LoadModule deflate_module modules/mod_deflate.so  [...]&lt;img src=&quot;http://www1.feedsky.com/t1/322441200/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441200/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441200/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441200/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>WEB2.0生活</category><category>front-end optimization</category><category>前端优化</category><category>web optimization</category><category>Web</category><pubDate>Wed, 21 Oct 2009 17:42:58 +0800</pubDate><author>ruitao</author><comments>http://codepy.net/2009/10/21/web-optimization-fron-end-optimization.html#comments</comments><guid isPermaLink="false">http://codepy.net/?p=131</guid><dc:creator>ruitao</dc:creator><fs:srclink>http://codepy.net/2009/10/21/web-optimization-fron-end-optimization.html</fs:srclink><fs:srcfeed>http://codepy.net/feed/</fs:srcfeed><fs:itemid>feedsky/ruitao/~7151837/322441200/4176829</fs:itemid></item><item><title>PHP5.3和CakePHP1.2的兼容性问题</title><link>http://item.feedsky.com/~feedsky/ruitao/~7151837/322441201/4176829/1/item.html</link><content:encoded>&lt;p&gt;最近一次升级Archlinux，PHP升级到了5.3，遇到了两个问题：&lt;/p&gt;
&lt;p&gt;1.Arch里面PHP更换了打包的方式，PHP的Aapche模块被独立封装为php-apache模块，所以安装了php包之后还要安装php-apache包（如果你用Apache作为你的Web server ^^ ）。&lt;/p&gt;
&lt;p&gt;2.另外就是Cakephp1.2跟PHP5.3的兼容性问题了。安装PHP5.3之后，运行Cakephp应用遇到了错误：&lt;/p&gt;
&lt;p&gt;一个是提示strtotime()出错，最终修改php.ini的 &lt;strong&gt;date.timezone &lt;/strong&gt;解决，改为：&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;pre style=&quot;padding-left: 30px;&quot;&gt;date.timezone = Asia/Chongqing&lt;/pre&gt;
&lt;p&gt;时区的列表可以到这里查看：&lt;a href=&quot;http://us.php.net/manual/pt_BR/timezones.php&quot; target=&quot;_blank&quot;&gt;http://us.php.net/manual/pt_BR/timezones.php&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;另外就是报类似以下的错误：&lt;/p&gt;
&lt;p style=&quot;padding-left: 30px;&quot;&gt;Deprecated: Assigning the return value of new by reference is deprecated&amp;#8230;&lt;/p&gt;
&lt;p&gt;这个有两种解决方法，一是将Cakephp升级到最新的Cakephp1.3dev版本，但是现在1.3版本并不是稳定版本，如果想继续使用1.2版本的话，需要:&lt;/p&gt;
&lt;p&gt;1.修改cake运行库下面cake/console/cake.php文件。&lt;/p&gt;
&lt;p&gt;将141行的&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;138
139
140
141
142
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;php&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; __initConstants&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;function_exists&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'ini_set'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
       &lt;span style=&quot;color: #990000;&quot;&gt;ini_set&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'display_errors'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;'1'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
       &lt;span style=&quot;color: #990000;&quot;&gt;ini_set&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'error_reporting'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #009900; font-weight: bold;&quot;&gt;E_ALL&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;...&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;改为：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;138
139
140
141
142
143
144
145
146
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;php&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;function&lt;/span&gt; __initConstants&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
   &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;function_exists&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'ini_set'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
      &lt;span style=&quot;color: #990000;&quot;&gt;ini_set&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'display_errors'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;'1'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
      &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;defined&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'E_DEPRECATED'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #990000;&quot;&gt;ini_set&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'error_reporting'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #009900; font-weight: bold;&quot;&gt;E_ALL&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&lt;/span&gt; ~E_DEPRECATED&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
      &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #990000;&quot;&gt;ini_set&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'error_reporting'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #009900; font-weight: bold;&quot;&gt;E_ALL&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
      &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;...&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;2.修改cake/libs/configure.php&lt;br /&gt;
将292行的&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;292
293
294
295
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;php&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$config&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'debug'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$_this&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;debug&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #990000;&quot;&gt;error_reporting&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #009900; font-weight: bold;&quot;&gt;E_ALL&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;......&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;修改为：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;line_numbers&quot;&gt;&lt;pre&gt;292
293
294
295
296
297
298
299
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre class=&quot;php&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;isset&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$config&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'debug'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
    &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000088;&quot;&gt;$_this&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #004000;&quot;&gt;debug&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
        &lt;span style=&quot;color: #b1b100;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #990000;&quot;&gt;defined&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'E_DEPRECATED'&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
          &lt;span style=&quot;color: #990000;&quot;&gt;ini_set&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'error_reporting'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #009900; font-weight: bold;&quot;&gt;E_ALL&lt;/span&gt; &lt;span style=&quot;color: #339933;&quot;&gt;&amp;amp;&lt;/span&gt; ~E_DEPRECATED&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt; &lt;span style=&quot;color: #b1b100;&quot;&gt;else&lt;/span&gt; &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#123;&lt;/span&gt;
          &lt;span style=&quot;color: #990000;&quot;&gt;ini_set&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;'error_reporting'&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #009900; font-weight: bold;&quot;&gt;E_ALL&lt;/span&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #339933;&quot;&gt;;&lt;/span&gt;
        &lt;span style=&quot;color: #009900;&quot;&gt;&amp;#125;&lt;/span&gt;
&lt;span style=&quot;color: #339933;&quot;&gt;......&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/322441201/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441201/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441201/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441201/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://codepy.net/2009/09/30/cakephp-with-php5-3.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>最近一次升级Archlinux，PHP升级到了5.3，遇到了两个问题：
1.Arch里面PHP更换了打包的方式，PHP的Aapche模块被独立封装为php-apache模块，所以安装了php包之后还要安装php-apache包（如果你用Apache作为你的Web server ^^ ）。
2.另外就是Cakephp1.2跟PHP5.3的兼容性问题了。安装PHP5.3之后，运行Cakephp应用遇到了错误：
一个是提示strtotime()出错，最终修改php.ini的 date.timezone 解决，改为： 
date.timezone = Asia/Chongqing
时区的列表可以到这里查看：http://us.php.net/manual/pt_BR/timezones.php
另外就是报类似以下的错误：
Deprecated: Assigning the return value of new by reference is deprecated&amp;#8230;
这个有两种解决方法，一是将Cakephp升级到最新的Cakephp1.3dev版本，但是现在1.3版本并不是稳定版本，如果想继续使用1.2版本的话，需要:
1.修改cake运行库下面cake/console/cake.php文件。
将141行的

138
139
140
141
142
function __initConstants&amp;#40;&amp;#41; &amp;#123;
    if &amp;#40;function_exists&amp;#40;'ini_set'&amp;#41;&amp;#41; &amp;#123;
       ini_set&amp;#40;'display_errors', '1'&amp;#41;;
       ini_set&amp;#40;'error_reporting', E_ALL&amp;#41;;
...

改为：

138
139
140
141
142
143
144
145
146
function __initConstants&amp;#40;&amp;#41; &amp;#123;
   if &amp;#40;function_exists&amp;#40;'ini_set'&amp;#41;&amp;#41; &amp;#123;
      [...]&lt;img src=&quot;http://www1.feedsky.com/t1/322441201/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441201/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441201/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441201/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>编程语言</category><category>PHP</category><category>cakephp</category><pubDate>Wed, 30 Sep 2009 19:35:48 +0800</pubDate><author>ruitao</author><comments>http://codepy.net/2009/09/30/cakephp-with-php5-3.html#comments</comments><guid isPermaLink="false">http://codepy.net/?p=128</guid><dc:creator>ruitao</dc:creator><fs:srclink>http://codepy.net/2009/09/30/cakephp-with-php5-3.html</fs:srclink><fs:srcfeed>http://codepy.net/feed/</fs:srcfeed><fs:itemid>feedsky/ruitao/~7151837/322441201/4176829</fs:itemid></item><item><title>编程语言学习心得 – 让代码只做应该做的事情</title><link>http://item.feedsky.com/~feedsky/ruitao/~7151837/322441202/4176829/1/item.html</link><content:encoded>&lt;p&gt;平台进入了整合阶段，开始看之前做前端的同志们的成果，发现了不少问题，其中最严重的问题莫过于标签的滥用了。比如下面的标签滥用：&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;html4strict&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;h3&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;label&lt;/span&gt;&amp;gt;&lt;/span&gt;XXX&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;label&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;h3&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;而事实上我们完全可以用&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;html4strict&quot; style=&quot;font-family:monospace;&quot;&gt;&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;h3&lt;/span&gt;&amp;gt;&lt;/span&gt;XXX&lt;span style=&quot;color: #009900;&quot;&gt;&amp;lt;&lt;span style=&quot;color: #66cc66;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;h3&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;就可以达到目的。&lt;/p&gt;
&lt;p&gt;看似很简单的一句，两种方法达到的效果是一样的，但是显然第二种根据有可读性，也更符合HTML这种标记性语言的定义，在Wkipedia中，对于HTML的描述是这样的：&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;超文本置标语言（英文：HyperText Markup Language，简称为HTML）是为“网页创建和其它可在网页浏览器中看到的信息”设计的一种置标语言。HTML被用来结构化信息——例如标题、段落和列表等等，也可用来在一定程度上描述文档的外观和语义。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;我们编写代码，达到预定的功能是远远不够的，写出既达到预定功能，又遵循该语言的特性，规范，可读性高，优雅的代码才是最终目标。特别是多人合作进行项目开发的时候，显得尤为重要。&lt;/p&gt;
&lt;p&gt;什么才算是可读性高，优雅的代码。命名规范，代码规范，这一些在《代码大全》的第11章“变量名的力量”中有很详细的探讨。林锐博士的《&lt;a href=&quot;man.chinaunix.net/develop/c&amp;amp;c++/c/c.htm&quot;&gt;高质量C++/C编程指南&lt;/a&gt;》也是应该好好阅读的。&lt;/p&gt;
&lt;p&gt;另外一个我觉得很重要的就是要写出符合语言特性的代码，最简单的例子，把C当成面向对象的语言来对待，去构造一堆结构来满足自己“OO”的欲望，这是编程的大忌！&lt;/p&gt;
&lt;p&gt;根据语言的特性，以及类库是否能够满足我们要完成的功能目标来选择语言，而不是用语言来束缚自己，最终画地为牢，限制了自己的发展而已。譬如要用到面向对象的方法来设计，那么完全可以选择C++或者Java，完全没有必要抱着C的大腿不放，刻意用C去模拟面向对象方法，或许最终可以到达预想的功能，但是之间付出的代价却是比选择一门面向对象语言要多得多。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/322441202/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441202/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441202/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441202/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://codepy.net/2009/09/30/computer-language-experience.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>平台进入了整合阶段，开始看之前做前端的同志们的成果，发现了不少问题，其中最严重的问题莫过于标签的滥用了。比如下面的标签滥用：

&amp;#60;h3&amp;#62;&amp;#60;label&amp;#62;XXX&amp;#60;/label&amp;#62;&amp;#60;/h3&amp;#62;

而事实上我们完全可以用

&amp;#60;h3&amp;#62;XXX&amp;#60;/h3&amp;#62;

就可以达到目的。
看似很简单的一句，两种方法达到的效果是一样的，但是显然第二种根据有可读性，也更符合HTML这种标记性语言的定义，在Wkipedia中，对于HTML的描述是这样的：
超文本置标语言（英文：HyperText Markup Language，简称为HTML）是为“网页创建和其它可在网页浏览器中看到的信息”设计的一种置标语言。HTML被用来结构化信息——例如标题、段落和列表等等，也可用来在一定程度上描述文档的外观和语义。
我们编写代码，达到预定的功能是远远不够的，写出既达到预定功能，又遵循该语言的特性，规范，可读性高，优雅的代码才是最终目标。特别是多人合作进行项目开发的时候，显得尤为重要。
什么才算是可读性高，优雅的代码。命名规范，代码规范，这一些在《代码大全》的第11章“变量名的力量”中有很详细的探讨。林锐博士的《高质量C++/C编程指南》也是应该好好阅读的。
另外一个我觉得很重要的就是要写出符合语言特性的代码，最简单的例子，把C当成面向对象的语言来对待，去构造一堆结构来满足自己“OO”的欲望，这是编程的大忌！
根据语言的特性，以及类库是否能够满足我们要完成的功能目标来选择语言，而不是用语言来束缚自己，最终画地为牢，限制了自己的发展而已。譬如要用到面向对象的方法来设计，那么完全可以选择C++或者Java，完全没有必要抱着C的大腿不放，刻意用C去模拟面向对象方法，或许最终可以到达预想的功能，但是之间付出的代价却是比选择一门面向对象语言要多得多。&lt;img src=&quot;http://www1.feedsky.com/t1/322441202/ruitao/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/ruitao/~7151837/322441202/4176829/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/ruitao/322441202/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/ruitao/322441202/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>编程感想</category><category>编程随想</category><category>oo</category><category>html</category><category>language</category><pubDate>Wed, 30 Sep 2009 18:50:17 +0800</pubDate><author>ruitao</author><comments>http://codepy.net/2009/09/30/computer-language-experience.html#comments</comments><guid isPermaLink="false">http://codepy.net/?p=127</guid><dc:creator>ruitao</dc:creator><fs:srclink>http://codepy.net/2009/09/30/computer-language-experience.html</fs:srclink><fs:srcfeed>http://codepy.net/feed/</fs:srcfeed><fs:itemid>feedsky/ruitao/~7151837/322441202/4176829</fs:itemid></item></channel></rss>