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

<channel>
	<title>Nocoo.Weblog &#187; Web标准化研究</title>
	<atom:link href="http://www.nocoo.us/category/web-standards-research/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nocoo.us</link>
	<description>Professional, Passion and Patient</description>
	<lastBuildDate>Sun, 27 Jun 2010 09:55:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Just in Case</title>
		<link>http://www.nocoo.us/2010/01/just-in-case/</link>
		<comments>http://www.nocoo.us/2010/01/just-in-case/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 04:09:07 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[心情日记]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[腾讯]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=4140</guid>
		<description><![CDATA[难到我们真的要拿这种破玩意当作备份吗？]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.nocoo.us/wp-content/uploads/2010/01/qqmail.png" alt="" title="qqmail" width="610" height="400" class="alignnone size-full wp-image-4141" /></p>
<p>难到我们真的要拿这种破玩意当作备份吗？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2010/01/just-in-case/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google实时搜索</title>
		<link>http://www.nocoo.us/2009/12/google-realtime-search/</link>
		<comments>http://www.nocoo.us/2009/12/google-realtime-search/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 12:45:49 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=4115</guid>
		<description><![CDATA[早就听说Google要整合实时信息比如Twitter到搜索结果中，这次真的见识到了，而且信息是不断更新到搜索结果页面中的&#8230;]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nocoo.us/wp-content/uploads/2009/12/google-realtime.png"><img src="http://www.nocoo.us/wp-content/uploads/2009/12/google-realtime-610x419.png" alt="google-realtime" title="google-realtime" width="610" height="419" class="alignnone size-large wp-image-4116" /></a></p>
<p>早就听说Google要整合实时信息比如Twitter到搜索结果中，这次真的见识到了，而且信息是不断更新到搜索结果页面中的&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/12/google-realtime-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Wave on my iPhone</title>
		<link>http://www.nocoo.us/2009/10/google-wave-on-my-iphone/</link>
		<comments>http://www.nocoo.us/2009/10/google-wave-on-my-iphone/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 09:54:10 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[服务器和集群技术]]></category>
		<category><![CDATA[Google Wave]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=4088</guid>
		<description><![CDATA[Google Wave是不是一种迅速花掉全部流量的方式呢，呵呵。 速度是真的慢啊，输入速度更是不敢恭维，这种速度在with:public灌水是不太现实了，协同工作应该还行。 看好Google Wave加入Google Apps大家庭!!]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nocoo.us/wp-content/uploads/2009/10/wave-on-iphone.png"><img src="http://www.nocoo.us/wp-content/uploads/2009/10/wave-on-iphone.png" alt="wave-on-iphone" title="wave-on-iphone" width="320" height="480" class="alignnone size-full wp-image-4089" /></a></p>
<p>Google Wave是不是一种迅速花掉全部流量的方式呢，呵呵。<br />
速度是真的慢啊，输入速度更是不敢恭维，这种速度在with:public灌水是不太现实了，协同工作应该还行。<br />
看好Google Wave加入Google Apps大家庭!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/10/google-wave-on-my-iphone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Wave and Reader 2.0</title>
		<link>http://www.nocoo.us/2009/10/google-wave-and-reader-2-0/</link>
		<comments>http://www.nocoo.us/2009/10/google-wave-and-reader-2-0/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 09:42:53 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[服务器和集群技术]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Wave]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=4077</guid>
		<description><![CDATA[with:public真的是个好地方，什么是真正的地球村呢？我想这就是了。 Google Wave中的with:public是一个公共wave的大集合，真的是大杂烩的大杂烩，什么都有&#8230;而且中文的内容很多很多，当然比较低俗，贴美女的，啥都有，不禁令我为wave开放后在中国的未来捏把汗。对了，提到with:public，Twitter的public timeline也不错，不过明显不如Google Wave那么2.0。 以前总是习惯于在Google Reader中定向地获取新信息，就好像填鸭一样，人家写什么，喂给你你就接着就行了，不用挪窝，打开Google Reader就行。现在在Wave上，信息渠道更加广泛了，说白了就是一片大森林，你自己出去觅食吧&#8230; 大家都知道，野生的鸭子更好吃一些。 上图，今天在Google Wave上发现的好东东，在线听歌服务——亦歌，音质不错哦，在公司不能乱装东西同学可以试用一下。]]></description>
			<content:encoded><![CDATA[<p>with:public真的是个好地方，什么是真正的地球村呢？我想这就是了。<br />
Google Wave中的with:public是一个公共wave的大集合，真的是大杂烩的大杂烩，什么都有&#8230;而且中文的内容很多很多，当然比较低俗，贴美女的，啥都有，不禁令我为wave开放后在中国的未来捏把汗。对了，提到with:public，Twitter的public timeline也不错，不过明显不如Google Wave那么2.0。<br />
以前总是习惯于在Google Reader中定向地获取新信息，就好像填鸭一样，人家写什么，喂给你你就接着就行了，不用挪窝，打开Google Reader就行。现在在Wave上，信息渠道更加广泛了，说白了就是一片大森林，你自己出去觅食吧&#8230;</p>
<p>大家都知道，野生的鸭子更好吃一些。</p>
<p><a href="http://www.nocoo.us/wp-content/uploads/2009/10/yige-google-wave.png"><img src="http://www.nocoo.us/wp-content/uploads/2009/10/yige-google-wave-610x417.png" alt="yige-google-wave" title="yige-google-wave" width="610" height="417" class="alignnone size-large wp-image-4086" /></a></p>
<p>上图，今天在Google Wave上发现的好东东，在线听歌服务——<a href="http://www.1g1g.com">亦歌</a>，音质不错哦，在公司不能乱装东西同学可以试用一下。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/10/google-wave-and-reader-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Wave Performance Issue</title>
		<link>http://www.nocoo.us/2009/10/google-wave-performance-issue/</link>
		<comments>http://www.nocoo.us/2009/10/google-wave-performance-issue/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 02:38:48 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[服务器和集群技术]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Wave]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=4071</guid>
		<description><![CDATA[最近的Google Wave用下来的感觉，对这个方向和思路是很看好的，因为一直以来我在寻找一种能够同时拥有IM的即时性和Email的绝对时间轴、存档性的方式，Google Wave显然是这个问题的最优解，通过Google Wave可以协同工作，甚至可以取代BBS。 昨天提到Google Wave是HTML 5的应用，大量使用了Ajax技术，带来的问题是显然的——太慢了&#8230; 打开with:public之后我的CPU开始狂转。Firebug统统关掉也没有丝毫好转。 目前的Google Wave采取限量邀请政策，只有第一代用户每个人能邀请几个人，被邀请的二代不能继续邀请（穷二代）。这样的性能显然不能支撑持续的邀请&#8230; 我对Google的数据处理能力是不怀疑的，相信有Gmail的基础，再大的Ajax数据请求都是能够处理的。看起来前端性能是如此重要！]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nocoo.us/wp-content/uploads/2009/10/google-wave.png"><img src="http://www.nocoo.us/wp-content/uploads/2009/10/google-wave-610x417.png" alt="google-wave" title="google-wave" width="610" height="417" class="alignnone size-large wp-image-4072" /></a></p>
<p>最近的Google Wave用下来的感觉，对这个方向和思路是很看好的，因为一直以来我在寻找一种能够同时拥有IM的即时性和Email的绝对时间轴、存档性的方式，Google Wave显然是这个问题的最优解，通过Google Wave可以协同工作，甚至可以取代BBS。<br />
昨天提到Google Wave是HTML 5的应用，大量使用了Ajax技术，带来的问题是显然的——太慢了&#8230;<br />
打开with:public之后我的CPU开始狂转。Firebug统统关掉也没有丝毫好转。<br />
目前的Google Wave采取限量邀请政策，只有第一代用户每个人能邀请几个人，被邀请的二代不能继续邀请（穷二代）。这样的性能显然不能支撑持续的邀请&#8230;<br />
我对Google的数据处理能力是不怀疑的，相信有Gmail的基础，再大的Ajax数据请求都是能够处理的。看起来前端性能是如此重要！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/10/google-wave-performance-issue/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Firebug can make Gmail slow</title>
		<link>http://www.nocoo.us/2009/10/firebug-can-make-gmail-slow/</link>
		<comments>http://www.nocoo.us/2009/10/firebug-can-make-gmail-slow/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 07:52:33 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[服务器和集群技术]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=4066</guid>
		<description><![CDATA[“Firebug is known to make Gmail slow unless it is configured correctly.” For the best Gmail performance, we suggest disabling Firebug for www.google.com. Windows or Linux Users To disable Firebug: Open the Firebug pane in your Gmail tab by clicking the Firebug icon. Click the down arrow next to the Net tab, and select Disable [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nocoo.us/wp-content/uploads/2009/10/gmail-firebug.png"><img src="http://www.nocoo.us/wp-content/uploads/2009/10/gmail-firebug-610x444.png" alt="gmail-firebug" title="gmail-firebug" width="610" height="444" class="alignnone size-large wp-image-4067" /></a></p>
<blockquote><p>
“Firebug is known to make Gmail slow unless it is configured correctly.”</p>
<p>For the best Gmail performance, we suggest disabling Firebug for www.google.com.</p>
<p><strong>Windows or Linux Users</strong><br />
To disable Firebug:</p>
<ol>
<li>Open the Firebug pane in your Gmail tab by clicking the Firebug icon.</li>
<li>Click the down arrow next to the <strong>Net</strong> tab, and select Disable monitor for mail.google.com</li>
<li>Repeat Step 2 on the <strong>Console</strong> and <strong>Script</strong> tabs.</li>
</ol>
<p>If you&#8217;d like to keep Firebug running, you may improve Gmail performance by following these steps:</p>
<ol>
<li>Click the green or red icon in the bottom right corner of the browser window to open Firebug.</li>
<li>Click the <strong>Console</strong> tab.</li>
<li>Select Options.</li>
<li>Uncheck Show XMLHttpRequests.</li>
<li>Click the Net tab.</li>
<li>Select Options.</li>
<li>Check Disable Network Monitoring.</li>
</ol>
<p><strong>Mac Users</strong><br />
To disable Firebug:</p>
<ol>
<li>Click the green or red icon in the bottom right corner of the browser window to open Firebug.</li>
<li>Click the bug icon in the top left corner of Firebug and select &#8216;Disable Firebug for mail.google.com.&#8217;</li>
</ol>
<p>If disabling Firebug for Gmail doesn&#8217;t improve performance results, you may have to entirely disable Firebug.
</p></blockquote>
<p>看起来Firebug的监控功能对这种大量应用Ajax的网站还是影响很大的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/10/firebug-can-make-gmail-slow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Wave与HTML 5</title>
		<link>http://www.nocoo.us/2009/10/google-wave-html-5/</link>
		<comments>http://www.nocoo.us/2009/10/google-wave-html-5/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 07:26:12 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[服务器和集群技术]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Wave]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=4061</guid>
		<description><![CDATA[如果你在Microsoft Internet Explorer 8下访问Google Wave，登陆后会发现上图的提示。 Google Wave是一个HTML 5应用，看起来Google一直走在了技术的前端，当年Ajax的发明以及Web 2.0的火热正是由于Google提供的Gmail带来的。这一次，Google为我们推开了HTML 5的大门，当然，是用波浪冲开的。 当然，占据用户比例大头的Microsoft Internet Explorer 8如果不能访问Google Wave这显然是一种悲剧，然后Google就做了Google Chrome Frame&#8230; 看着Google一头扎进IE的波涛洪流，我无语啊。没事搅这滩浑水干什么。]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.nocoo.us/wp-content/uploads/2009/10/google-wave-ie8.png" alt="google-wave-ie8" title="google-wave-ie8" width="448" height="343" class="alignnone size-full wp-image-4062" /></p>
<p>如果你在Microsoft Internet Explorer 8下访问Google Wave，登陆后会发现上图的提示。<br />
Google Wave是一个HTML 5应用，看起来Google一直走在了技术的前端，当年Ajax的发明以及Web 2.0的火热正是由于Google提供的Gmail带来的。这一次，Google为我们推开了HTML 5的大门，当然，是用波浪冲开的。<br />
当然，占据用户比例大头的Microsoft Internet Explorer 8如果不能访问Google Wave这显然是一种悲剧，然后Google就做了<a href="http://code.google.com/chrome/chromeframe/">Google Chrome Frame</a>&#8230;<br />
看着Google一头扎进IE的波涛洪流，我无语啊。没事搅这滩浑水干什么。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/10/google-wave-html-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>如何用CSS让一个div全屏居中</title>
		<link>http://www.nocoo.us/2009/08/div-center-screen/</link>
		<comments>http://www.nocoo.us/2009/08/div-center-screen/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 11:22:35 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=3981</guid>
		<description><![CDATA[居中是一个能有效获取用户注意的排版方式。尤其是你有一个大大的提示想告诉用户的时候。 div居中有点难度，水平一般没问题，垂直，也就是全屏居中就有点技巧了。这里翻译了一篇办法： 展示的是旧版本的剧种方法，图示很清楚。稍微改进下代码如下： &#60;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#34;&#62; &#60;html xmlns=&#34;http://www.w3.org/1999/xhtml&#34;&#62; &#60;head&#62; &#60;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=iso-8859-1&#34; /&#62; &#60;title&#62;Centered DIV Test&#60;/title&#62; &#60;style type=&#34;text/css&#34;&#62; .centered_div{ width:500px; height:200px; position:absolute; top:50%; left:50%; margin-left:-250px; margin-top:-100px; background:red; } &#60;/style&#62; &#60;/head&#62; &#60;body&#62; &#60;div class=&#34;centered_div&#34;&#62;centered div content&#60;/div&#62; &#60;/body&#62; &#60;/html&#62; 在线例子可以看这里。 原文：The simplest way to horizontally and vertically center a DIV]]></description>
			<content:encoded><![CDATA[<p>居中是一个能有效获取用户注意的排版方式。尤其是你有一个大大的提示想告诉用户的时候。<br />
div居中有点难度，水平一般没问题，垂直，也就是全屏居中就有点技巧了。这里翻译了一篇办法：</p>
<p><img src="http://www.nocoo.us/wp-content/uploads/2009/08/centering_a_div.jpg" alt="centering_a_div" title="centering_a_div" width="600" height="400" class="alignnone size-full wp-image-3982" /></p>
<p>展示的是旧版本的剧种方法，图示很清楚。稍微改进下代码如下：</p>
<pre class="brush: html">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
    &lt;head&gt;
        &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot; /&gt;
        &lt;title&gt;Centered DIV Test&lt;/title&gt;
        &lt;style type=&quot;text/css&quot;&gt;
            .centered_div{
            width:500px;
            height:200px;
            position:absolute;
            top:50%; left:50%;
            margin-left:-250px;
            margin-top:-100px;
            background:red;
        }
        &lt;/style&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;div class=&quot;centered_div&quot;&gt;centered div content&lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>在线例子可以看<a href="http://www.dezinerfolio.com/wp-content/uploads/vertical_center.html">这里</a>。<br />
原文：<a href="http://www.dezinerfolio.com/2007/05/02/the-simplest-way-to-horizontally-and-vertically-center-a-div">The simplest way to horizontally and vertically center a DIV</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/08/div-center-screen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Reader Bug</title>
		<link>http://www.nocoo.us/2009/07/google-reader-bug/</link>
		<comments>http://www.nocoo.us/2009/07/google-reader-bug/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 04:57:02 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[Google Reader]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=3961</guid>
		<description><![CDATA[今天午休翻Google Reader的时候终于看到Google一个Bug。如上图所示。 请无视这个Bug的题目吧，我发现只有这篇文章才能重现这个Bug&#8230; 当然这也更可能是IE的问题。不过跨浏览器兼容应该是Google的事情。我的IE版本是8.0.6001.18783。 也有很小的可能是春哥的问题&#8230; Update: 确实还有不少，比如下图。我冤枉春哥了&#8230;]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.nocoo.us/wp-content/uploads/2009/07/google-reader-bug.png" alt="google-reader-bug" title="google-reader-bug" width="598" height="346" class="alignnone size-full wp-image-3962" /></p>
<p>今天午休翻Google Reader的时候终于看到Google一个Bug。如上图所示。<br />
请无视这个Bug的题目吧，我发现只有这篇文章才能重现这个Bug&#8230;<br />
当然这也更可能是IE的问题。不过跨浏览器兼容应该是Google的事情。我的IE版本是8.0.6001.18783。<br />
也有很小的可能是春哥的问题&#8230;</p>
<p><strong>Update:</strong><br />
确实还有不少，比如下图。我冤枉春哥了&#8230;</p>
<p><img src="http://www.nocoo.us/wp-content/uploads/2009/07/google-reader-bug2.png" alt="google-reader-bug2" title="google-reader-bug2" width="598" height="346" class="alignnone size-full wp-image-3965" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/07/google-reader-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>还是校内</title>
		<link>http://www.nocoo.us/2009/06/xiaonei-again/</link>
		<comments>http://www.nocoo.us/2009/06/xiaonei-again/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 06:42:48 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=3922</guid>
		<description><![CDATA[高亮背景挡住字了.唉,我就无语了,同样是中国软件公司,校内网前端团队和淘宝UED咋就差那么远呢? 真的希望校内网的人好好看看淘宝UED在研究什么,想想差距. 具体参见最近的淘宝UED文章:垂直栅格与渐进式行距]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.nocoo.us/wp-content/uploads/2009/06/xiaonei-again.png" alt="xiaonei-again" title="xiaonei-again" width="370" height="174" class="alignnone size-full wp-image-3923" /></p>
<p>高亮背景挡住字了.唉,我就无语了,同样是中国软件公司,校内网前端团队和淘宝UED咋就差那么远呢?<br />
真的希望校内网的人好好看看淘宝UED在研究什么,想想差距.</p>
<p><img src="http://www.nocoo.us/wp-content/uploads/2009/06/taobaoued-600x283.png" alt="taobaoued" title="taobaoued" width="600" height="283" class="alignnone size-large wp-image-3924" /></p>
<p>具体参见最近的淘宝UED文章:<a href="http://ued.taobao.com/blog/2009/06/29/vertical-rhythm-and-the-incremental-leading-2/">垂直栅格与渐进式行距</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/06/xiaonei-again/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>挑Google一个瑕疵</title>
		<link>http://www.nocoo.us/2009/06/google-flaw/</link>
		<comments>http://www.nocoo.us/2009/06/google-flaw/#comments</comments>
		<pubDate>Fri, 26 Jun 2009 00:51:37 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[服务器和集群技术]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=3906</guid>
		<description><![CDATA[本人是完美主义者,所以会注意到这种小&#8221;问题&#8221;&#8230; 在橙色条最左端弧线处,有条border-bottom漏出了那么若干pixalpixel.同样的右边也是对称的情况. 我是在Mac OS X下用Safari 4.0.1 (5530.18)看到的效果. Google Analytics已经不是beta啦,检查要注意些噢&#8230;]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.nocoo.us/wp-content/uploads/2009/06/google-analytics.png" alt="google-analytics" title="google-analytics" width="229" height="71" class="alignnone size-full wp-image-3907" /></p>
<p>本人是完美主义者,所以会注意到这种小&#8221;问题&#8221;&#8230;<br />
在橙色条最左端弧线处,有条border-bottom漏出了那么若干<del datetime="2009-10-08T09:03:13+00:00">pixal</del>pixel.同样的右边也是对称的情况.<br />
我是在Mac OS X下用Safari 4.0.1 (5530.18)看到的效果.<br />
Google Analytics已经不是beta啦,检查要注意些噢&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/06/google-flaw/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>如何让文本块右边界对齐</title>
		<link>http://www.nocoo.us/2009/04/text-align-justify/</link>
		<comments>http://www.nocoo.us/2009/04/text-align-justify/#comments</comments>
		<pubDate>Fri, 10 Apr 2009 16:01:37 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[服务器和集群技术]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=3734</guid>
		<description><![CDATA[1. 问题 前几日,一个网站客户提出,文本右边凹凸不齐,不好看,有没有办法让行尾对齐呢? 我的第一反映是不太可能吧,要计算字数和长度如何如何想得很复杂.其实无知很可怕&#8230; 2. 解决 问:你知道text-align属性可以取几个值吗? 答:left,right和center. 还漏下一个:justify.当text-align取了justify含义是分散对齐,会略微地对单词和字母之间的距离做调整. 3. 效果 不加text-align: justify;的效果 加了text-align: justify;的效果 4. 讨论 值justify可以使文本的两端都对齐。在两端对齐文本中，文本行的左右两端都放在父元素的内边界上。然后，调整单词和字母间的间隔，使各行的长度恰好相等。您也许已经注意到了，两端对齐文本在打印领域很常见。不过在CSS中，还需要多做些考虑。 要由用户代理（而不是CSS）来确定两端对齐文本如何拉伸，以填满父元素左右边界之间的空间。例如，有些浏览器可能只在单词之间增加额外的空间，而另外一些浏览器可能会平均分布字母间的额外空间（不过CSS规范特别指出，如果letter-spacing属性指定为一个长度值，“用户代理不能进一步增加或减少字符间的空间”）。还有一些用户代理可能会减少某些行的空间，使文本挤得更紧密。所有这些做法都会影响元素的外观，甚至改变其高度，这取决于用户代理的对齐选择影响了多少文本行。 CSS也没有指定应当如何处理连字符（注1）。大多数两端对齐文本都使用连字符将长单词分开放在两行上，从而缩小单词之间的间隔，改善文本行的外观。不过，由于CSS没有定义连字符行为，用户代理不太可能自动加连字符。因此，在CSS中，两端对齐文本看上去没有打印出来好看，特别是元素可能太窄，以至于每行只能放下几个单词。当然，使用窄设计元素是可以的，不过要当心相应的缺点。 注1：CSS中没有说明如何处理连字符，因为不同的语言有不同的连字符规则。规范没有尝试去调和这样一些很可能不完备的规则，而是干脆不提这个问题。 5. 参考资料 CSS text-align 属性]]></description>
			<content:encoded><![CDATA[<h3>1. 问题</h3>
<p>前几日,一个网站客户提出,文本右边凹凸不齐,不好看,有没有办法让行尾对齐呢?<br />
我的第一反映是不太可能吧,要计算字数和长度如何如何想得很复杂.其实无知很可怕&#8230;</p>
<h3>2. 解决</h3>
<blockquote><p>问:你知道text-align属性可以取几个值吗?<br />
答:left,right和center.</p></blockquote>
<p>还漏下一个:justify.当text-align取了justify含义是分散对齐,会略微地对单词和字母之间的距离做调整.</p>
<h3>3. 效果</h3>
<blockquote><p><img src="http://www.nocoo.us/wp-content/uploads/2009/04/2009-04-10_10421.png" alt="2009-04-10_10421" title="2009-04-10_10421" width="550" height="254" class="alignnone size-full wp-image-3743" /><br />
<strong>不加text-align: justify;的效果</strong></p></blockquote>
<blockquote><p><img src="http://www.nocoo.us/wp-content/uploads/2009/04/2009-04-10_10431.png" alt="2009-04-10_10431" title="2009-04-10_10431" width="550" height="254" class="alignnone size-full wp-image-3744" /><br />
<strong>加了text-align: justify;的效果</strong></p></blockquote>
<h3>4. 讨论</h3>
<blockquote><p>值justify可以使文本的两端都对齐。在两端对齐文本中，文本行的左右两端都放在父元素的内边界上。然后，调整单词和字母间的间隔，使各行的长度恰好相等。您也许已经注意到了，两端对齐文本在打印领域很常见。不过在CSS中，还需要多做些考虑。<br />
要由用户代理（而不是CSS）来确定两端对齐文本如何拉伸，以填满父元素左右边界之间的空间。例如，有些浏览器可能只在单词之间增加额外的空间，而另外一些浏览器可能会平均分布字母间的额外空间（不过CSS规范特别指出，如果letter-spacing属性指定为一个长度值，“用户代理不能进一步增加或减少字符间的空间”）。还有一些用户代理可能会减少某些行的空间，使文本挤得更紧密。所有这些做法都会影响元素的外观，甚至改变其高度，这取决于用户代理的对齐选择影响了多少文本行。<br />
CSS也没有指定应当如何处理连字符（注1）。大多数两端对齐文本都使用连字符将长单词分开放在两行上，从而缩小单词之间的间隔，改善文本行的外观。不过，由于CSS没有定义连字符行为，用户代理不太可能自动加连字符。因此，在CSS中，两端对齐文本看上去没有打印出来好看，特别是元素可能太窄，以至于每行只能放下几个单词。当然，使用窄设计元素是可以的，不过要当心相应的缺点。<br />
<strong>注1：</strong>CSS中没有说明如何处理连字符，因为不同的语言有不同的连字符规则。规范没有尝试去调和这样一些很可能不完备的规则，而是干脆不提这个问题。</p></blockquote>
<h3>5. 参考资料</h3>
<ol>
<li><a href="http://www.w3school.com.cn/css/pr_text_text-align.asp">CSS text-align 属性</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/04/text-align-justify/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>6个常见的IE渲染Bug及其修复方法</title>
		<link>http://www.nocoo.us/2009/04/ie-bugs/</link>
		<comments>http://www.nocoo.us/2009/04/ie-bugs/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 16:01:55 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[微软技术]]></category>
		<category><![CDATA[服务器和集群技术]]></category>
		<category><![CDATA[Microsoft]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=3721</guid>
		<description><![CDATA[1. size,padding和margin距离异常 在IE6中,各种size,padding和margin总是感觉怪怪的,有时候死活差那么几个像素.这时候可以使用单独为IE准备的CSS文件来纠正.只需要在页面头部加类似这样的CSS文件即可: &#60;!--[if IE 6]&#62; &#60;link rel=&#34;stylesheet&#34; href=&#34;css/ie6.css&#34; type=&#34;text/css&#34; media=&#34;screen&#34; /&#62; &#60;![EndIf]--&#62; 其中的ie.css是对主CSS文件中,那些在IE6下显示异常的元素,重新定义的CSS. 2. 块元素居中问题 在现代浏览器中,一个块元素,假设是一个p,设置了宽度,设置左右margin都是auto之后,渲染效果应该是居中.但是在IE中,必须对其父元素,假设是body,加text-align:center;才能看到居中效果: body { text-align: center; } 并且,你还要在子元素p里把继承的居中纠正回来: p { text-align: left; } 3. div最小高度不能低于12px的bug 如果你需要一个高度很小的div,假设说做一个分隔线之类,你会发现div最小高度不会低于12px.这时候要设置div的line-height: 0;才行. &#60;div style=&#34;line-height: 0px; height: 2px;&#34;&#62;&#60;/div&#62; 如果还是不行,你要在div里套一个p,并且指定这个p的line-height: 0;. &#60;div style=&#34;height: 2px;&#34;&#62;&#60;p style=&#34;line-height: 0px;&#34;&#62;&#60;/p&#62;&#60;/div&#62; 4. 浮动元素的双倍margin距离bug 这是一个非常严重的bug.你会发现你的侧边栏总会跑到第二行去显示,或者明明你计算好宽度,平分两半,还预留了些空隙,在Firefox显示正常,在屏幕左右分布的两个块元素,在IE下非换行不可.说起来应当是IE的float块元素,margin加倍渲染的bug. 这样的代码: .floatbox { float: left; width: 150px; height: [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.nocoo.us/wp-content/uploads/2009/04/ie-bug.jpg" alt="ie-bug" title="ie-bug" width="550" height="143" class="alignnone size-full wp-image-3722" /></p>
<h3>1. size,padding和margin距离异常</h3>
<p>在IE6中,各种size,padding和margin总是感觉怪怪的,有时候死活差那么几个像素.这时候可以使用单独为IE准备的CSS文件来纠正.只需要在页面头部加类似这样的CSS文件即可:</p>
<pre class="brush: html">
&lt;!--[if IE 6]&gt;
    &lt;link rel=&quot;stylesheet&quot; href=&quot;css/ie6.css&quot; type=&quot;text/css&quot; media=&quot;screen&quot; /&gt;
&lt;![EndIf]--&gt;
</pre>
<p>其中的ie.css是对主CSS文件中,那些在IE6下显示异常的元素,重新定义的CSS.</p>
<h3>2. 块元素居中问题</h3>
<p>在现代浏览器中,一个块元素,假设是一个p,设置了宽度,设置左右margin都是auto之后,渲染效果应该是居中.但是在IE中,必须对其父元素,假设是body,加text-align:center;才能看到居中效果:</p>
<pre class="brush: css">body { text-align: center; }</pre>
<p>并且,你还要在子元素p里把继承的居中纠正回来:</p>
<pre class="brush: css">p { text-align: left; }</pre>
<h3>3. div最小高度不能低于12px的bug</h3>
<p>如果你需要一个高度很小的div,假设说做一个分隔线之类,你会发现div最小高度不会低于12px.这时候要设置div的line-height: 0;才行.</p>
<pre class="brush: html">&lt;div style=&quot;line-height: 0px; height: 2px;&quot;&gt;&lt;/div&gt;</pre>
<p>如果还是不行,你要在div里套一个p,并且指定这个p的line-height: 0;.</p>
<pre class="brush: html">&lt;div style=&quot;height: 2px;&quot;&gt;&lt;p style=&quot;line-height: 0px;&quot;&gt;&lt;/p&gt;&lt;/div&gt;</pre>
<h3>4. 浮动元素的双倍margin距离bug</h3>
<p>这是一个非常严重的bug.你会发现你的侧边栏总会跑到第二行去显示,或者明明你计算好宽度,平分两半,还预留了些空隙,在Firefox显示正常,在屏幕左右分布的两个块元素,在IE下非换行不可.说起来应当是IE的float块元素,margin加倍渲染的bug.<br />
这样的代码:</p>
<pre class="brush: css">
.floatbox {
   float: left;
   width: 150px;
   height: 150px;
   margin: 5px 0 5px 100px;
   /*This last value applies the 100px left margin */
}
</pre>
<p>正确的渲染应该是这样:</p>
<p><img src="http://www.nocoo.us/wp-content/uploads/2009/04/marg-norm.gif" alt="marg-norm" title="marg-norm" width="504" height="166" class="alignnone size-full wp-image-3724" /></p>
<p>但是在IE5和IE6里,margin的100px被加倍,渲染成这个样子:</p>
<p><img src="http://www.nocoo.us/wp-content/uploads/2009/04/marg-doubled.gif" alt="marg-doubled" title="marg-doubled" width="504" height="166" class="alignnone size-full wp-image-3725" /></p>
<p>margin被加倍成了200px.<br />
浮动元素的双倍margin距离bug的出现条件和特点是:</p>
<ol>
<li>float块元素</li>
<li>margin方向与float方向相同,即float: left;的块只会加倍margin-left的值.</li>
<li>这个float块与其父容器的内边之间夹着这个margin的情况下,才会加倍.当前行的第二个float块,因为其左边不是父容器的内边,就不会出现这个bug.</li>
<li>浮动元素的双倍margin距离bug具备左右对称性.</li>
</ol>
<p>修复很简单,在所有float的元素的CSS中加入<strong>display: inline;</strong>即可.其实根据W3C对float的定义,当float具备left或者right时,display效果应当是<strong>不起作用的</strong>,除非是display: none;,但是指定了display: inline;确实让IE6正确显示了margin.</p>
<h3>5. 盒模型的bug</h3>
<p>看这样一段代码:</p>
<pre class="brush: css">
div#box {
   width: 100px;
   border: 2px solid black;
   padding: 10px;
}
</pre>
<p>根据盒模型定义,这个div的宽度应该是2+10+100+10+2=124px.大部分浏览器也是这样解析的,唯独IE6认为它是100px宽.<br />
这个bug会对布局带来严重影响.消除这个bug只需要在页首制定DTD即可.</p>
<pre class="brush: html">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</pre>
<p>此前的一篇文章这样解释:在页首制定了DTD,浏览器就认定Web开发者知道并理解DTD,于是就会使用兼容标准的方式来解析和渲染页面.</p>
<h3>6. PNG图片不能透明bug</h3>
<p>在IE6中,PNG图片原本透明的部分被渲染成不透明的颜色.可以使用<a href="http://css-tricks.com/the-different-techniques-for-applying-the-png-hack/">这篇文章</a>提到的办法修复之.<br />
其实这个bug只会出现在设置为alpha透明方式的png图片上,导引色透明方式在IE6中则不会出现不能透明的bug.</p>
<p>参考资料</p>
<ul>
<li><a href="http://www.positioniseverything.net/explorer/doubled-margin.html">The IE5/6 Doubled Float-Margin Bug</a></li>
<li><a href="http://www.wipeout44.com/brain_food/css_ie_bug_fixes.asp">Internet Explorer CSS bug fixes</a></li>
<li><a href="http://css-tricks.com/ie-css-bugs-thatll-get-you-every-time/">IE CSS Bugs That’ll Get You Every Time</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/04/ie-bugs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[译作]新白宫网站代码分析</title>
		<link>http://www.nocoo.us/2009/01/whitehousegov-website-code/</link>
		<comments>http://www.nocoo.us/2009/01/whitehousegov-website-code/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 08:01:55 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[影音娱乐]]></category>
		<category><![CDATA[微软技术]]></category>
		<category><![CDATA[服务器和集群技术]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[微软]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=3499</guid>
		<description><![CDATA[概述. 在美国第44任总统就职日这个历史性的日子，让我们来分析一下新的白宫网站（whitehouse.gov）代码结构吧。网站基于ASP.NET构建。 [singlepic=18466] whitehouse.gov网站使用IIS 6.0. 网站的HTTP头信息中包含键值对&#8221;Server: Microsoft-IIS/6.0&#8243;。网站并没有使用微软公司最新版本服务器软件，IIS/7。 whitehouse.gov网站使用ASP.NET 2.0. HTTP头中标识自己的程序版本为&#8221;X-Aspnet-Version: 2.0.50727&#8243;。这个信息可以去掉，这样可以为每次服务器响应节省30字节带宽。 whitehouse.gov网站使用JQuery 1.2.6. JQuery JavaScript库，使用了其最小集版本，位于/includes/文件夹下。很多开发者使用Google服务器托管的JQuery以便提升性能和减小下载脚本的延迟时间。这样做可以提升站点性能。 &#60;script type="text/javascript" src="/includes/eop/jquery-1.2.6.min.js"&#62;&#60;/script&#62; whitehouse.gov网站使用GZIP压缩. 所有网站文本都采用了GZIP压缩，显著地提升了性能。 未压缩大小: 48218 bytes 压缩后大小: 8370 bytes 节省带宽: ~80% whitehouse.gov网站使用Vary: Accept-Encoding. 在HTTP头中添加Vary: Accept-Encoding是一种强制代理不向不能解码GZIP的客户端发送GZIP内容的手段。 whitehouse.gov网站使用Cache-Control: private和max-age. 它使用了&#8221;max-age=85895&#8220;，大约1 天。这样，html页面应该只会在你的计算机中缓存1天。 whitehouse.gov网站使用Web Trends Live追踪技术. WebTrends声称是“领先的网页分析和客户为中心智能市场营销解决方案（leading provider of web analytics and consumer-centric marketing intelligence solutions）。” whitehouse.gov网站使用meta keywords标记. 这样做很奇怪，因为Internet上的访问者很少有不知道这里是干什么的。meta标记如下： &#60;meta name="keywords" content="President, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>概述.</strong> 在美国第44任总统就职日这个历史性的日子，让我们来分析一下新的白宫网站（<strong>whitehouse.gov</strong>）代码结构吧。网站基于ASP.NET构建。</p>
<p>[singlepic=18466]</p>
<p><strong>whitehouse.gov网站使用IIS 6.0.</strong> 网站的HTTP头信息中包含键值对&#8221;Server: Microsoft-IIS/6.0&#8243;。网站并没有使用微软公司最新版本服务器软件，IIS/7。</p>
<p><strong>whitehouse.gov网站使用ASP.NET 2.0.</strong> HTTP头中标识自己的程序版本为&#8221;X-Aspnet-Version: 2.0.50727&#8243;。这个信息可以去掉，这样可以为每次服务器响应节省30字节带宽。</p>
<p><strong>whitehouse.gov网站使用JQuery 1.2.6.</strong> JQuery JavaScript库，使用了其最小集版本，位于<em>/includes/</em>文件夹下。很多开发者使用Google服务器托管的JQuery以便提升性能和减小下载脚本的延迟时间。这样做可以提升站点性能。</p>
<pre>&lt;script type="text/javascript" src="/includes/eop/jquery-1.2.6.min.js"&gt;&lt;/script&gt;</pre>
<p><strong>whitehouse.gov网站使用GZIP压缩.</strong> 所有网站文本都采用了GZIP压缩，显著地提升了性能。</p>
<pre>未压缩大小:  48218 bytes
压缩后大小:   8370 bytes
节省带宽:           ~80%</pre>
<p><strong>whitehouse.gov</strong><strong>网站</strong><strong>使用<em>Vary: Accept-Encoding</em>.</strong> 在HTTP头中添加Vary: Accept-Encoding是一种强制代理不向不能解码GZIP的客户端发送GZIP内容的手段。</p>
<p><strong>whitehouse.gov</strong><strong>网站使用</strong><strong><em>Cache-Control: private</em>和<em>max-age</em>.</strong> 它使用了&#8221;<em>max-age=85895</em>&#8220;，大约<em>1</em> 天。这样，html页面应该只会在你的计算机中缓存1天。</p>
<p><strong>whitehouse.gov网站使用Web Trends Live追踪技术.</strong> WebTrends声称是“领先的网页分析和客户为中心智能市场营销解决方案（leading provider of web analytics and consumer-centric marketing intelligence solutions）。”</p>
<p><strong>whitehouse.gov网站使用<em>meta</em> keywords标记.</strong> 这样做很奇怪，因为Internet上的访问者很少有不知道这里是干什么的。meta标记如下：</p>
<pre>&lt;meta name="keywords" content="President, Barack Obama, White House,
United States of America, 44th President, White House history, President Obama,
Barck, Barek, Barak, Barrack, Barrak, Obma, Barack" /&gt;</pre>
<p><strong>这样并不会对提升</strong><strong>whitehouse.gov</strong><strong>网站的Google PageRank有多少贡献。</strong>我认为搜索Barack Obama的用户无论如何都会被导引到这个网站的。</p>
<p><strong>whitehouse.gov网站使用<em>ViewState</em>.</strong> 这是一个隐藏表单，允许网站在浏览器中存储服务器端数据。ASP.NET自动解析发送到浏览器的<em>ViewState</em>信息。浏览器不应该解析这个信息。</p>
<p><strong>whitehouse.gov网站使用<em>WebResource.axd</em>.</strong> 这是ASP.NET生成的一个脚本文件。通常它们不能被有效地缓存，并且我发现它们的确降低了性能。</p>
<p><strong>whitehouse.gov网站包含了很多空白字符.</strong> 如果你的浏览器启用了GZIP，这并不会带来性能影响，但是如果去掉这些空白字符，网站代码可以减小20%以上。</p>
<p><strong>whitehouse.gov网站包含注释标签.</strong> 网站使用了很多HTML注释分割页面代码区域。如果能将这些注释写在服务器端代码中，可以在编译页面时不将注释编译在最终页面代码中，从而提升效率。</p>
<pre><em>&lt;!-- Start --&gt;
&lt;!-- End --&gt;</em></pre>
<p><strong>whitehouse.gov网站包含很长很长的ASP.NET <em>ID</em>.</strong> 页面中的很多元素包含非常长的ID，是浪费带宽的主要因素之一。这些长ID可以很容易地在服务器端替换成短ID。</p>
<pre>&lt;a id="ctl09_rptNavigation_ctl00_rptNavigationItems_ctl01_hlSubNav"...</pre>
<p><strong>whitehouse.gov网站使用的GIF多于PNG.</strong> 网站使用的GIF图片多于PNG图片。PNG格式的图片可以更加优化，从而节省带宽和消耗。网站中使用了两个GIF动画。</p>
<p><strong>whitehouse.gov网站使用了<em>5</em>个层叠式样式表（stylesheets）文件和<em>12</em>个JavaScripts脚本文件.</strong> 如果能把这两类文件合并成两个文件，网站可以更快而且更轻量级。当然这是针对访问首页的访客而言。奇怪的是，用于修饰管理页面的层叠式样式表也被加载进了普通用户的访问中：</p>
<pre><em>/* admin styles */
/* cms */</em>
.adminNavigation {width:996px; position:relative; z-index:100;}</pre>
<p><strong>whitehouse.gov网站使用了高度压缩的JPG.</strong> 如果你距离屏幕较远，或者视力不是那么好，这些图片看起来还行。开发者对JPG图片采用了高度压缩。这里显示的图片被放大并且轻微地二次压缩过。</p>
<p>[singlepic=18465]</p>
<p><strong>whitehouse.gov网站使用了image sprites技术.</strong> 这项技术可以大幅提升站点性能，因为它将若干个小图片合并成了一张图片。这是一项先进的技术。采用了image sprites技术的图片是&#8221;<em>nav-sprite.png</em>&#8220;.</p>
<p><strong>whitehouse.gov网站使用了Packer.</strong> Dean Edward的Packer是一个用于压缩JavaScript文件的工具。JavaScript脚本将在被下载时自动解压缩，这是一项很差的优化手段， 因为往往JavaScript经过GZIP压缩之后，比经过YUI压缩器（YUI Compressor）压缩之后更小。<small>[参见 jquery-plugins.js]</small></p>
<pre>eval(function(p,a,c,k,e,d)...</pre>
<p><strong>使用Packer的决定</strong>不像是一个深入了解GZIP或者文本压缩技术的人做出的。压缩之前的文件确实变小了，然而这导致了最终需要被下载的文件变大了。<small>[http://dean.edwards.name/packer/]</small></p>
<p><strong>whitehouse.gov大小</strong><em>821 KB</em>， 在我的线路上（cable modem）使用了<em>1.58</em>秒完成加载。这个数字大约是新的、基于图片的网站的平均值。</p>
<pre>加载时间:  1.58 seconds
总计大小:  821 KB</pre>
<p><strong>whitehouse.gov网站包含了几个隐藏链接.</strong> 在源文件里，大部分是在JavaScript中，大约嵌入了<em>6</em>个链接。这样，这些幸运的人就得到了来自白宫网站的外链（译者注：PageRank 9啊！9！）。</p>
<pre>www.youngpup.net

http://sorgalla.com/jcarousel/

http://billwscott.com/carousel/

http://www.codylindley.com</pre>
<p><strong>whitehouse.gov网站使用了一个不透明的favicon.ico.</strong> 为了站点在加入书签后具有更好的视觉效果（译者注：对很多非IE浏览器而言，无论是否加入书签，favicon文件都会显示在标签栏），一个具有透明背景的favicon是更好的选择。这项改变对于一个知道怎么修改的人来说可以在10分钟内完成。</p>
<p><strong>结论是，</strong>whitehouse.gov网站还是很吸引人的。虽然它并不算是一个非常有效率的站点，并且过多地注意了视觉效果。一个网站优化专家可以在几天之内将它的加载速度提升到现在的两倍。<small></small></p>
<p><strong>最后，记住本届政府和奥巴马总统并不是写这些代码的人。</strong></p>
<p><strong>翻译自：</strong><a href="http://dotnetperls.com/Content/whitehouse-gov-Site.aspx">http://dotnetperls.com/Content/whitehouse-gov-Site.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/01/whitehousegov-website-code/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>符合标准的TreeView实现(Div+CSS+JS+ASP.NET)</title>
		<link>http://www.nocoo.us/2009/01/standard-treeview/</link>
		<comments>http://www.nocoo.us/2009/01/standard-treeview/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 01:02:46 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[作品发布]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[微软技术]]></category>
		<category><![CDATA[服务器和集群技术]]></category>
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=3428</guid>
		<description><![CDATA[这几天有点小活，要求是ASP.NET的，虽然我不怎么看好ASP.NET，但是人家要求了我也就照做吧。 最复杂的部分是一个TreeView。出于兼容性和简单性考虑没有用ASP.NET的TreeView控件，而是参考一篇文章自行写了一个出来。 [singlepic=18460] 技术指标如下： 实现：Div+CSS+JavaScript+ASP.NET(C#) 功能：可以实现无限级的TreeNode 标准：在IE 7和Firefox 3.1下显示效果相同，兼容XHTML 1.0 Strict最严格的网页标准 效果如左图所示。最后一个函数可能会因为超宽看不到全部，具体请参照文章附件中的源代码。 附件下载：http://download.nocoo.us/Download/Archive/TreeViewCode.rar TreeNode.cs /// &#60;summary&#62; /// TreeView结点类 /// &#60;/summary&#62; public class TreeNode { private string name; private string href; private List&#60;TreeNode&#62; subNodes = new List&#60;TreeNode&#62;(); /// &#60;summary&#62; /// 结点名 /// &#60;/summary&#62; public string Name { get { return name; } } /// &#60;summary&#62; /// [...]]]></description>
			<content:encoded><![CDATA[<p>这几天有点小活，要求是ASP.NET的，虽然我不怎么看好ASP.NET，但是人家要求了我也就照做吧。<br />
最复杂的部分是一个TreeView。出于兼容性和简单性考虑没有用ASP.NET的TreeView控件，而是参考<a href="http://www.cnblogs.com/FrankChen/archive/2008/03/26/1122936.html">一篇文章</a>自行写了一个出来。</p>
<p>[singlepic=18460]</p>
<p>技术指标如下：</p>
<ul>
<li><strong>实现：</strong>Div+CSS+JavaScript+ASP.NET(C#)</li>
<li><strong>功能：</strong>可以实现无限级的TreeNode</li>
<li><strong>标准：</strong>在IE 7和Firefox 3.1下显示效果相同，兼容XHTML 1.0 Strict最严格的网页标准</li>
</ul>
<p>效果如左图所示。<strong>最后一个函数可能会因为超宽看不到全部，具体请参照文章附件中的源代码。</strong><br />
<strong>附件下载：</strong><a href="http://download.nocoo.us/Download/Archive/TreeViewCode.rar">http://download.nocoo.us/Download/Archive/TreeViewCode.rar</a></p>
<h3>TreeNode.cs</h3>
<pre class="brush: c#">
/// &lt;summary&gt;
/// TreeView结点类
/// &lt;/summary&gt;
public class TreeNode
{
    private string name;
    private string href;
    private List&lt;TreeNode&gt; subNodes = new List&lt;TreeNode&gt;();

    /// &lt;summary&gt;
    /// 结点名
    /// &lt;/summary&gt;
    public string Name { get { return name; } }
    /// &lt;summary&gt;
    /// 结点链接
    /// &lt;/summary&gt;
    public string Href { get { return href; } }
    /// &lt;summary&gt;
    /// 下级结点个数
    /// &lt;/summary&gt;
    public int Count { get { return this.subNodes.Count; } }
    /// &lt;summary&gt;
    /// 获取或者设置下级结点
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;index&quot;&gt;序号&lt;/param&gt;
    /// &lt;returns&gt;下级结点&lt;/returns&gt;
    public TreeNode this[int index]
    {
        get { return subNodes[index]; }
        set { subNodes[index] = value; }
    }

    /// &lt;summary&gt;
    /// 构造函数
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;name&quot;&gt;结点名&lt;/param&gt;
    public TreeNode(string name)
    {
        this.name = name;
        this.href = null;
    }

    /// &lt;summary&gt;
    /// 构造函数
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;name&quot;&gt;结点名&lt;/param&gt;
    /// /// &lt;param name=&quot;href&quot;&gt;结点链接&lt;/param&gt;
    public TreeNode(string name, string href)
    {
        this.name = name;
        this.href = href;
    }

    /// &lt;summary&gt;
    /// 添加下级结点
    /// &lt;/summary&gt;
    /// &lt;param name=&quot;node&quot;&gt;新结点&lt;/param&gt;
    public void Add(TreeNode node)
    {
        subNodes.Add(node);
    }
}
</pre>
<h3>TreeView.cs</h3>
<pre class="brush: c#">
/// &lt;summary&gt;
/// TreeView
/// &lt;/summary&gt;
public class TreeView
{
    private List&lt;TreeNode&gt; nodes = new List&lt;TreeNode&gt;();

    /// &lt;summary&gt;
    /// 填充测试用数据
    /// &lt;/summary&gt;
    public void FillTestData()
    {
        TreeNode node1 = new TreeNode(&quot;中国&quot;, &quot;#&quot;);
        TreeNode node11 = new TreeNode(&quot;华北地区&quot;, &quot;#&quot;);
        TreeNode node111 = new TreeNode(&quot;河南省&quot;, &quot;#&quot;);
        TreeNode node112 = new TreeNode(&quot;河北省&quot;, &quot;#&quot;);
        TreeNode node113 = new TreeNode(&quot;山东省&quot;, &quot;#&quot;);
        TreeNode node1131 = new TreeNode(&quot;青岛市&quot;, &quot;#&quot;);
        TreeNode node1132 = new TreeNode(&quot;济南市&quot;, &quot;#&quot;);
        TreeNode node11321 = new TreeNode(&quot;市中区&quot;, &quot;#&quot;);
        TreeNode node11322 = new TreeNode(&quot;历下区&quot;, &quot;#&quot;);
        TreeNode node11323 = new TreeNode(&quot;槐荫区&quot;, &quot;#&quot;);
        TreeNode node11324 = new TreeNode(&quot;天桥区&quot;, &quot;#&quot;);
        TreeNode node11325 = new TreeNode(&quot;长清区&quot;, &quot;#&quot;);
        TreeNode node1133 = new TreeNode(&quot;菏泽市&quot;, &quot;#&quot;);
        TreeNode node1134 = new TreeNode(&quot;济宁市&quot;, &quot;#&quot;);
        TreeNode node1135 = new TreeNode(&quot;德州市&quot;, &quot;#&quot;);
        TreeNode node12 = new TreeNode(&quot;东北地区&quot;, &quot;#&quot;);
        TreeNode node13 = new TreeNode(&quot;西北地区&quot;, &quot;#&quot;);
        TreeNode node14 = new TreeNode(&quot;华东地区&quot;, &quot;#&quot;);
        TreeNode node15 = new TreeNode(&quot;西南地区&quot;, &quot;#&quot;);
        TreeNode node16 = new TreeNode(&quot;华南地区&quot;, &quot;#&quot;);
        TreeNode node17 = new TreeNode(&quot;华中地区&quot;, &quot;#&quot;);
        TreeNode node18 = new TreeNode(&quot;港澳台地区&quot;, &quot;#&quot;);

        node1132.Add(node11321);
        node1132.Add(node11322);
        node1132.Add(node11323);
        node1132.Add(node11324);
        node1132.Add(node11325);

        node113.Add(node1131);
        node113.Add(node1132);
        node113.Add(node1133);
        node113.Add(node1134);
        node113.Add(node1135);

        node11.Add(node111);
        node11.Add(node112);
        node11.Add(node113);

        node1.Add(node11);
        node1.Add(node12);
        node1.Add(node13);
        node1.Add(node14);
        node1.Add(node15);
        node1.Add(node16);
        node1.Add(node17);
        node1.Add(node18);

        nodes.Add(node1);
        nodes.Add(new TreeNode(&quot;俄罗斯&quot;, &quot;&quot;));
        nodes.Add(new TreeNode(&quot;美国&quot;));
        nodes.Add(new TreeNode(&quot;韩国&quot;));
        nodes.Add(new TreeNode(&quot;澳大利亚&quot;));
        nodes.Add(new TreeNode(&quot;印度&quot;, &quot;&quot;));
        nodes.Add(new TreeNode(&quot;加拿大&quot;, &quot;&quot;));
    }

    /// &lt;summary&gt;
    /// 获取TreeView的html代码
    /// &lt;/summary&gt;
    /// &lt;returns&gt;&lt;/returns&gt;
    public string GetHtmlString()
    {
        StringBuilder sb = new StringBuilder();
        sb.AppendLine(&quot;&lt;ul&gt;&quot;);
        for (int i = 0; i &lt; nodes.Count; i++)
        {
            sb.AppendLine(GetNodeHtml(nodes[i], 1, (i + 1).ToString()));
        }
        sb.AppendLine(&quot;&lt;/ul&gt;&quot;);
        return sb.ToString();
    }

    private string GetNodeHtml(TreeNode thisNode, int depth, string id)
    {
        StringBuilder sb = new StringBuilder();
        bool hasSub = (thisNode.Count &gt; 0) ? true : false;
        sb.AppendLine(string.Format(&quot;&lt;li id=\&quot;depth_{0}_item_{1}\&quot;&gt;&quot;, depth, id));
        sb.AppendLine(string.Format(
            &quot;&lt;div class=\&quot;{0}\&quot; id=\&quot;depth_{1}_item_{2}_ico\&quot; onclick=\&quot;controlNode(this,&#039;depth_{1}_item_{2}&#039;)\&quot;&gt;&lt;/div&gt;&lt;h1&gt;{3}&lt;/h1&gt;&quot;,
            hasSub ? &quot;closedir&quot; : &quot;nodir&quot;,
            depth,
            id,
            (thisNode.Href == null || thisNode.Href.Equals(&quot;&quot;)) ? thisNode.Name : string.Format(&quot;&lt;a href=\&quot;{0}\&quot;&gt;{1}&lt;/a&gt;&quot;, thisNode.Href, thisNode.Name)
            ));
        if (hasSub)
        {
            sb.AppendLine(string.Format(&quot;&lt;div id=\&quot;depth_{0}_item_{1}_layer\&quot; style=\&quot;display:block;\&quot;&gt;&quot;, depth, id));
            sb.AppendLine(&quot;&lt;ul&gt;&quot;);
            for (int i = 0; i &lt; thisNode.Count; i++)
            {
                sb.AppendLine(GetNodeHtml(thisNode[i], depth + 1, string.Format(&quot;{0}_{1}&quot;, id, i + 1)));
            }
            sb.AppendLine(&quot;&lt;/ul&gt;&quot;);
            sb.AppendLine(&quot;&lt;/div&gt;&quot;);
        }
        sb.AppendLine(&quot;&lt;/li&gt;&quot;);
        return sb.ToString();
    }
}
</pre>
<h3>ASP.NET页面调用：</h3>
<pre class="brush: c#">
&lt;%
    CMC.TreeView list = new CMC.TreeView();
    list.FillTestData();
    Response.Write(list.GetHtmlString());
%&gt;
</pre>
<h3>ASP.NET页面JavaScript：</h3>
<pre class="brush: js">
defaultNodeState();

function defaultNodeState()
{
	var nodeState = getCookie(&quot;nodeState&quot;);
	if(nodeState == null)
	{
	    nodeState = &quot;,|,|,&quot;;
		setCookie(&quot;nodeState&quot;,nodeState);
	}
	var layer = nodeState.split(&#039;|&#039;);
	for(var i=0;i&lt;layer.length;i++)
	{
		if(layer[i] != &quot;,&quot;)
		{
			var lItem = layer[i].split(&#039;,&#039;);
			var nodeIco = document.getElementById(lItem[0]+&quot;_ico&quot;);
			var nodeLayer = document.getElementById(lItem[0]+&quot;_layer&quot;);
			OpenNode(nodeIco);
			ShowDiv(nodeLayer);
		}
	}
}
function controlNode(obj,layerId)
{
	var className = obj.className.toLowerCase();
	var layer = document.getElementById(layerId + &quot;_layer&quot;);

	cookiesNode(layerId, className);
	if(className == &quot;opendir&quot;)
	{
		HideDiv(layer);
		obj.className = &quot;closedir&quot;;
	}
	else if (className == &quot;closedir&quot;)
	{
		ShowDiv(layer);
		obj.className = &quot;opendir&quot;;
	}
}

function cookiesNode(layerId,className)
{
    var nodeState = getCookie(&quot;nodeState&quot;);
	if(nodeState == null)
	{
	    nodeState = &quot;,|,|,&quot;;
		setCookie(&quot;nodeState&quot;,nodeState);
	}
	var layer = nodeState.split(&#039;|&#039;);
	var lDepth = getDepth(layerId);
	if(className == &quot;opendir&quot;)
	{

		layer[lDepth-1] = &quot;,&quot;
	}
	else
	{
		if(layer[lDepth-1] &amp;amp;&amp;amp;amp layer[lDepth-1] != &quot;,&quot;) {
                        var lItem = layer[lDepth - 1].split(&#039;,&#039;);
			var lIco = document.getElementById(lItem[0]+&quot;_ico&quot;);
			var lLayer = document.getElementById(lItem[0] + &quot;_layer&quot;);
			HideDiv(lLayer);
			CloseNode(lIco);
			    }
			    layer[lDepth - 1] = layerId + &quot;,&quot; + lDepth;
		    }
	var cValue = layer[0];
	for(var i=1;i&lt;layer.length;i++)
	{
		cValue += &quot;|&quot; + layer[i];
	}
	setCookie(&quot;nodeState&quot;,cValue);
}

function getDepth(layerId)
{
	var lItem = layerId.split(&#039;_&#039;);
	return lItem[1];
}

function OpenNode(obj)
{
	obj.className = &quot;opendir&quot;;
}
function CloseNode(obj)
{
	obj.className = &quot;closedir&quot;;
}
function HideDiv(obj)
{
    obj.style.display=&#039;none&#039;;

}
function ShowDiv(obj)
{
    obj.style.display=&#039;block&#039;;
}

//设置cookies
function setCookie(name,value)
{
    var Days = 30;
    var exp = new Date();
    exp.setTime(exp.getTime() + Days*24*60*60*1000);
    document.cookie = name + &quot;=&quot; + escape(value) +
      &quot;;expires=&quot; + exp.toGMTString();
}
//读取cookies
function getCookie(name)
{
    var arr,reg = new RegExp(&quot;(^| )&quot; + name + &quot;=([^;]*)(;|$)&quot;);
    if(arr = document.cookie.match(reg)) return unescape(arr[2]);
    else return null;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/01/standard-treeview/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>观察：Firefox Vs. Nvidia</title>
		<link>http://www.nocoo.us/2009/01/firefox-vs-nvidia/</link>
		<comments>http://www.nocoo.us/2009/01/firefox-vs-nvidia/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 06:26:17 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Nvidia]]></category>
		<category><![CDATA[观察]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=3420</guid>
		<description><![CDATA[火狐，你大概知道~ 英伟达呢？第一印象会是个沿海服装或者皮鞋厂吧&#8230; Anyway，英特尔之后大家都喜欢给自己起个中文名，尤其是在中国设立研发机构的公司都迫不及待地起个中文名以便与总部划清界限（没错，说的就是谷歌）。 Firefox和Nvidia看起来好像是完全不相干的两个公司嘛。其实不然，总感觉这两个公司的产品现在越来越有着相似的一面。 哗哗哗时间过去三五年当云计算成真，当我们的个人终端已经不需要所谓的主机而变成一个屏幕的时候，当网线和电线早就集成在一起，要上网只要插电源的时候，Google所谓网络操作系统（其实就是Google Chrome或者其他浏览器，比如Firefox）大行其道的时候，当我们的所有东西都运行在说不清楚在什么地方的服务器的时候，Firefox就取代了Nvidia，接下了为用户渲染呈现视觉效果的重任。 我们还是看看现在的JavaScript已经强大到了什么地步吧！ 2D [singlepic=18425] JavaScript Super Mario Bros. 没错，JavaScript版的马里奥兄弟。也许你还记得，天朝的JavaScript开发者早就推出了网页版仙剑。 [singlepic=18427,600,425] JSLab Plot Tool JavaScript版Matlab。 &#8220;3D&#8221; [singlepic=18424] http://processing.org/learning/3d/ 3D的JavaScript库 [singlepic=18426] 10款让你震撼的图片展示js代码 Apple Cover Flow效果的JavaScript实现，这似乎已经不算是什么了。 猜一下吧，以下的哪一个会成为几年之后的Nvidia？ InScript JavaScriptCore — a JavaScript interpreter that was originally derived from KJS. Used in the WebKit project and applications such as Safari. JScript — the engine [...]]]></description>
			<content:encoded><![CDATA[<p>火狐，你大概知道~<br />
英伟达呢？第一印象会是个沿海服装或者皮鞋厂吧&#8230;<br />
Anyway，英特尔之后大家都喜欢给自己起个中文名，尤其是在中国设立研发机构的公司都迫不及待地起个中文名以便与总部划清界限（没错，说的就是谷歌）。<br />
Firefox和Nvidia看起来好像是完全不相干的两个公司嘛。其实不然，总感觉这两个公司的产品现在越来越有着相似的一面。<br />
哗哗哗时间过去三五年当云计算成真，当我们的个人终端已经不需要所谓的主机而变成一个屏幕的时候，当网线和电线早就集成在一起，要上网只要插电源的时候，Google所谓网络操作系统（其实就是Google Chrome或者其他浏览器，比如Firefox）大行其道的时候，当我们的所有东西都运行在说不清楚在什么地方的服务器的时候，Firefox就取代了Nvidia，接下了为用户渲染呈现视觉效果的重任。<br />
我们还是看看现在的JavaScript已经强大到了什么地步吧！</p>
<h3>2D</h3>
<p>[singlepic=18425]</p>
<p><a href="http://jsmario.com.ar/">JavaScript Super Mario Bros.</a><br />
没错，JavaScript版的马里奥兄弟。也许你还记得，天朝的JavaScript开发者早就推出了网页版仙剑。</p>
<p>[singlepic=18427,600,425]</p>
<p><a href="http://www.jslab.dk/plottool.htm">JSLab Plot Tool</a><br />
JavaScript版Matlab。</p>
<h3>&#8220;3D&#8221;</h3>
<p>[singlepic=18424]</p>
<p><a href="http://processing.org/learning/3d/">http://processing.org/learning/3d/</a><br />
3D的JavaScript库</p>
<p>[singlepic=18426]</p>
<p><a href="http://zcool.com.cn/jscode/javascript/20080325/code_032543362008.html">10款让你震撼的图片展示js代码</a><br />
Apple Cover Flow效果的JavaScript实现，这似乎已经不算是什么了。</p>
<p><strong>猜一下吧，以下的哪一个会成为几年之后的Nvidia？</strong></p>
<ul>
<li><a title="InScript" href="http://en.wikipedia.org/wiki/InScript">InScript</a></li>
<li><a title="WebKit" href="http://en.wikipedia.org/wiki/WebKit">JavaScriptCore</a> — a JavaScript interpreter that was originally derived from <a title="KDE's JavaScript engine" href="http://en.wikipedia.org/wiki/KDE%27s_JavaScript_engine">KJS</a>. Used in the <a title="WebKit" href="http://en.wikipedia.org/wiki/WebKit">WebKit project</a> and applications such as <a title="Safari (web browser)" href="http://en.wikipedia.org/wiki/Safari_%28web_browser%29">Safari</a>.</li>
<li><a title="JScript" href="http://en.wikipedia.org/wiki/JScript">JScript</a> — the engine used in <a title="Internet Explorer" href="http://en.wikipedia.org/wiki/Internet_Explorer">Internet Explorer</a>, and one component of <a title="Trident (layout engine)" href="http://en.wikipedia.org/wiki/Trident_%28layout_engine%29">Trident (layout engine)</a></li>
<li><a title="KDE's JavaScript engine" href="http://en.wikipedia.org/wiki/KDE%27s_JavaScript_engine">KJS</a> — the engine used in <a title="Konqueror" href="http://en.wikipedia.org/wiki/Konqueror">Konqueror</a>, and one component of <a title="KHTML" href="http://en.wikipedia.org/wiki/KHTML">KHTML</a></li>
<li><a class="mw-redirect" title="Futhark (script engine)" href="http://en.wikipedia.org/wiki/Futhark_%28script_engine%29">futhark</a> — the ECMAScript engine of the <a title="Opera (web browser)" href="http://en.wikipedia.org/wiki/Opera_%28web_browser%29">Opera</a> web browser versions 9.50 and higher.</li>
<li><a class="mw-redirect" title="Linear b (script engine)" href="http://en.wikipedia.org/wiki/Linear_b_%28script_engine%29">linear_b</a> — the ECMAScript engine of the <a title="Opera (web browser)" href="http://en.wikipedia.org/wiki/Opera_%28web_browser%29">Opera</a> web browser versions 7.0 to 9.50, exclusive.</li>
<li><a title="Narcissus (JavaScript engine)" href="http://en.wikipedia.org/wiki/Narcissus_%28JavaScript_engine%29">Narcissus</a> — JavaScript implemented in JavaScript, used on top of <a class="mw-redirect" title="SpiderMonkey" href="http://en.wikipedia.org/wiki/SpiderMonkey">SpiderMonkey</a></li>
<li><a title="QtScript" href="http://en.wikipedia.org/wiki/QtScript">QtScript</a></li>
<li><a title="Rhino (JavaScript engine)" href="http://en.wikipedia.org/wiki/Rhino_%28JavaScript_engine%29">Rhino</a> — one of several JavaScript engines from <a title="Mozilla" href="http://en.wikipedia.org/wiki/Mozilla">Mozilla</a>, using the <a class="mw-redirect" title="Java Platform" href="http://en.wikipedia.org/wiki/Java_Platform">Java Platform</a></li>
<li><a class="mw-redirect" title="SpiderMonkey (Javascript engine)" href="http://en.wikipedia.org/wiki/SpiderMonkey_%28Javascript_engine%29">SpiderMonkey</a> — JavaScript engine in <a title="Mozilla" href="http://en.wikipedia.org/wiki/Mozilla">Mozilla</a> <a title="Gecko (layout engine)" href="http://en.wikipedia.org/wiki/Gecko_%28layout_engine%29">Gecko</a> applications, including <a title="Mozilla Firefox" href="http://en.wikipedia.org/wiki/Mozilla_Firefox">Firefox</a></li>
</ul>
<p>The following ones are the new generation JavaScript engines for web browsers, all implementing <a title="Just-in-time compilation" href="http://en.wikipedia.org/wiki/Just-in-time_compilation">just-in-time compilation</a> (JIT) or variations of that idea:</p>
<ul>
<li><a title="Tamarin (JavaScript engine)" href="http://en.wikipedia.org/wiki/Tamarin_%28JavaScript_engine%29">Tamarin</a> — an <a title="ActionScript" href="http://en.wikipedia.org/wiki/ActionScript">ActionScript</a> and <a title="ECMAScript" href="http://en.wikipedia.org/wiki/ECMAScript">ECMAScript</a> JIT engine.</li>
<li><a class="mw-redirect" title="TraceMonkey" href="http://en.wikipedia.org/wiki/TraceMonkey">TraceMonkey</a> — evolution of SpiderMonkey, the JavaScript engine planned for <a title="Mozilla Firefox" href="http://en.wikipedia.org/wiki/Mozilla_Firefox">Firefox</a> 3.1, also partially based on Tamarin.</li>
<li><a title="V8 (JavaScript engine)" href="http://en.wikipedia.org/wiki/V8_%28JavaScript_engine%29">V8</a> — JavaScript engine in <a title="Google Chrome" href="http://en.wikipedia.org/wiki/Google_Chrome">Google Chrome</a></li>
<li><a class="mw-redirect" title="SquirrelFish (JavaScript engine)" href="http://en.wikipedia.org/wiki/SquirrelFish_%28JavaScript_engine%29">SquirrelFish</a> — the next JavaScript engine for <a title="Apple Inc." href="http://en.wikipedia.org/wiki/Apple_Inc.">Apple Inc.</a>&#8216;s <a class="mw-redirect" title="Webkit" href="http://en.wikipedia.org/wiki/Webkit">Webkit</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2009/01/firefox-vs-nvidia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>个人简历页面更新</title>
		<link>http://www.nocoo.us/2008/10/resume-page-update/</link>
		<comments>http://www.nocoo.us/2008/10/resume-page-update/#comments</comments>
		<pubDate>Wed, 15 Oct 2008 06:13:29 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[作品发布]]></category>
		<category><![CDATA[心情日记]]></category>
		<category><![CDATA[心情]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=2894</guid>
		<description><![CDATA[WordPress有多好多强大？WordPress可以用完全自定义的HTML页面来呈现内容，你只需要遵循那么一点点规矩，放到合适的位置即可。 长久以来，我都被个人简历页面里面杂乱无章的呈现方式纠结不已，无奈实在没什么好办法，最多用ul去简单组织那么一下下，效果还是远远不够的。 自从HTML感悟了之后，其实就是昨天晚上，决心重整个人简历页面，毕竟那是脸面啊。 经过近乎一整天的编写，算是写了个我比较满意的页面出来。当然，XHTML 1.0 Strict。 很多人问我写HTML的时候用什么工具，其实就是普通字处理软件，Notepad，UltraEdit，最多Visual Studio 2008而已。下面那棵树，是我第一次用AI做出来的东西哦~]]></description>
			<content:encoded><![CDATA[<p>WordPress有多好多强大？WordPress可以用完全自定义的HTML页面来呈现内容，你只需要遵循那么一点点规矩，放到合适的位置即可。<br />
长久以来，我都被个人简历页面里面杂乱无章的呈现方式纠结不已，无奈实在没什么好办法，最多用ul去简单组织那么一下下，效果还是远远不够的。<br />
自从HTML感悟了之后，其实就是昨天晚上，决心重整<a href="http://www.nocoo.us/resume/">个人简历</a>页面，毕竟那是脸面啊。<br />
经过近乎一整天的编写，算是写了个我比较满意的页面出来。当然，XHTML 1.0 Strict。<br />
很多人问我写HTML的时候用什么工具，其实就是普通字处理软件，Notepad，UltraEdit，最多Visual Studio 2008而已。下面那棵树，是我第一次用AI做出来的东西哦~</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2008/10/resume-page-update/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>恬不知耻QZone</title>
		<link>http://www.nocoo.us/2008/10/disgusting-qzone/</link>
		<comments>http://www.nocoo.us/2008/10/disgusting-qzone/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 01:08:37 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[心情日记]]></category>
		<category><![CDATA[服务器和集群技术]]></category>
		<category><![CDATA[心情]]></category>
		<category><![CDATA[腾讯]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=2851</guid>
		<description><![CDATA[我从来不用QZone，也从来不觉得用QZone的人有多么明智，因为QZone是我见过最囧的博客程序。在我心目中，只有90后脑残的人们，和中科院的院士，才是QZone的用户。 今天QQ上提示有两个QZone提示消息，不把提示消灭成0我不甘心，终于点进去了。 第一囧，QZone居然在Firefox里成功打开，让我有了一丝好感，不错，有进步，要知道以前用Firefox开QZone总是进入一个RSS Feed的地方，很怪。 第二囧，我在右上角发现这个： [singlepic=18061] 恬不知耻的腾讯向我示威：“您打开空间所用时间仅为3.966秒，速度相当快喔！” 我终于出离愤怒，关掉QZone，站起身来，终于明白为什么挂牌的人会指定一个条件：毕业后打算去腾讯的不要。]]></description>
			<content:encoded><![CDATA[<p>我从来不用QZone，也从来不觉得用QZone的人有多么明智，因为QZone是我见过最囧的博客程序。在我心目中，只有90后脑残的人们，和中科院的院士，才是QZone的用户。<br />
今天QQ上提示有两个QZone提示消息，不把提示消灭成0我不甘心，终于点进去了。<br />
第一囧，QZone居然在Firefox里成功打开，让我有了一丝好感，不错，有进步，要知道以前用Firefox开QZone总是进入一个RSS Feed的地方，很怪。<br />
第二囧，我在右上角发现这个：</p>
<p>[singlepic=18061]</p>
<p>恬不知耻的腾讯向我示威：“您打开空间所用时间仅为3.966秒，速度相当快喔！”<br />
我终于出离愤怒，关掉QZone，站起身来，终于明白为什么挂牌的人会指定一个条件：毕业后打算去腾讯的不要。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2008/10/disgusting-qzone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>自助美工</title>
		<link>http://www.nocoo.us/2008/10/web-art-designer/</link>
		<comments>http://www.nocoo.us/2008/10/web-art-designer/#comments</comments>
		<pubDate>Sun, 05 Oct 2008 06:13:16 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[资料文献]]></category>
		<category><![CDATA[设计]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=2866</guid>
		<description><![CDATA[给大家推荐两个关注网页配色的网站吧~ FYI. 那日抓狂，枕头(AKA Rainsuds, AKA 夏至雨水)同学给了我两个网站&#8230; [singlepic=18066,670,604] DARK: http://www.dark-i.com/ [singlepic=18067,670,604] ColourLovers: http://www.colourlovers.com/]]></description>
			<content:encoded><![CDATA[<p>给大家推荐两个关注网页配色的网站吧~</p>
<p><strong>FYI.</strong> 那日抓狂，<a href="http://rainsuds.tongji.asia">枕头(AKA Rainsuds, AKA 夏至雨水)同学</a>给了我两个网站&#8230;</p>
<p>[singlepic=18066,670,604]</p>
<p>DARK: <a href="http://www.dark-i.com/">http://www.dark-i.com/</a></p>
<p>[singlepic=18067,670,604]</p>
<p>ColourLovers: <a href="http://www.colourlovers.com/">http://www.colourlovers.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2008/10/web-art-designer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>观察：危机公关之SEO</title>
		<link>http://www.nocoo.us/2008/09/seo-in-crisis-pr/</link>
		<comments>http://www.nocoo.us/2008/09/seo-in-crisis-pr/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 02:04:42 +0000</pubDate>
		<dc:creator>nocoo</dc:creator>
				<category><![CDATA[Web标准化研究]]></category>
		<category><![CDATA[开发心得]]></category>
		<category><![CDATA[服务器和集群技术]]></category>
		<category><![CDATA[SEO]]></category>

		<guid isPermaLink="false">http://www.nocoo.us/?p=2819</guid>
		<description><![CDATA[先看一个截图吧： [singlepic=17754] 这是新浪某新闻页面的一个源代码截图，网页在这里：http://news.sina.com.cn/c/2008-09-19/095016318920.shtml。其中，伊利明显带有了危机公关的意味，每个关键字伊利两个字之间被人为地加上了&#60;!&#62;这个理论上不合规范的注释符号。FYI. 合法的HTML注释应当是类似这个样子：&#60;!&#8211; 注释内容 &#8211;&#62;，且注释内容部分不能再包含&#8221;-&#8221;连字符号。但是因为浏览器会拼命纠正错误的HTML语法，&#60;!&#62;的写法会让浏览器认为这是个注释，只是不合法，因此，&#8221;伊&#60;!&#62;利&#8221;HTML串被解析成&#8221;伊利&#8221;，看起来和不加没有区别。 但是对于搜索引擎而言则不是这样子。搜索引擎是Web标准的重要获益者，基本都是按照标准去实现，&#8221;伊&#60;!&#62;利&#8221;这样的字符串会被认为都是正文，自然不会匹配关键字”伊利“，这样，这个发表在核心新闻网站的负面文章，就和伊利没有了关系。]]></description>
			<content:encoded><![CDATA[<p>先看一个截图吧：</p>
<p>[singlepic=17754]</p>
<p>这是新浪某新闻页面的一个源代码截图，网页在这里：<a href="http://news.sina.com.cn/c/2008-09-19/095016318920.shtml">http://news.sina.com.cn/c/2008-09-19/095016318920.shtml</a>。其中，伊利明显带有了危机公关的意味，每个关键字伊利两个字之间被人为地加上了&lt;!&gt;这个理论上不合规范的注释符号。FYI. 合法的HTML注释应当是类似这个样子：&lt;!&#8211; 注释内容 &#8211;&gt;，且注释内容部分不能再包含&#8221;-&#8221;连字符号。但是因为浏览器会拼命纠正错误的HTML语法，&lt;!&gt;的写法会让浏览器认为这是个注释，只是不合法，因此，&#8221;伊&lt;!&gt;利&#8221;HTML串被解析成&#8221;伊利&#8221;，看起来和不加没有区别。</p>
<p>但是对于搜索引擎而言则不是这样子。搜索引擎是Web标准的重要获益者，基本都是按照标准去实现，&#8221;伊&lt;!&gt;利&#8221;这样的字符串会被认为都是正文，自然不会匹配关键字”伊利“，这样，这个发表在核心新闻网站的负面文章，就和伊利没有了关系。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nocoo.us/2008/09/seo-in-crisis-pr/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
