﻿<?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>μ</title>
	<atom:link href="http://www.icyfire.me/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.icyfire.me</link>
	<description>太阳底下没有新鲜事。</description>
	<lastBuildDate>Mon, 26 Jul 2010 10:44:23 +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>[翻译]jQuery的show/hide性能测试</title>
		<link>http://www.icyfire.me/2010/07/jquery-showhide-performance/</link>
		<comments>http://www.icyfire.me/2010/07/jquery-showhide-performance/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 10:38:02 +0000</pubDate>
		<dc:creator>icyfire</dc:creator>
				<category><![CDATA[网站前端]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.icyfire.me/?p=927</guid>
		<description><![CDATA[这篇文章是jQuery各种show/hide方式的性能测试。作者之所以测试这个源于Robert Duffy在San Francisco举行的jQuery大会上的一句话：“.hide()和.show()的执行速度会比直接改变css慢”。但由于未能找Robert Duffy问明原因，所以作者就自己去做了这个测试。下面的翻译并不是全文翻译，只节选了一些重点。

用作测试的是一个含有100个div的HTML页面，div带有class和一些内容。为了排除掉寻找这些div所花费的时间，所以把选择器$('div')缓存起来了。用作测试的jQuery版本是1.4.2，所以测试结果也只是针对这个版本，在其他版本可能就不是这些结果了。

测试的jQuery方法分别是：
<ul>
<li>.toggle()</li>
<li>.show() 和 .hide()</li>
<li>.css({'display':'none'}) 和 .css({'display':'block'})</li>
<li>.addClass('hide') 和 .removeClass('hide')</li>
<li>改变&#60;style&#62;元素的一个属性</li>
</ul>]]></description>
			<content:encoded><![CDATA[<div style="font-size:12px;">
这篇文章是jQuery各种show/hide方式的性能测试。作者之所以测试这个源于Robert Duffy在San Francisco举行的jQuery大会上的一句话：“.hide()和.show()的执行速度会比直接改变css慢”。但由于未能找Robert Duffy问明原因，所以作者就自己去做了这个测试。下面的翻译并不是全文翻译，只节选了一些重点。</p>
<p>用作测试的是一个含有100个div的HTML页面，div带有class和一些内容。为了排除掉寻找这些div所花费的时间，所以把选择器$('div')缓存起来了。用作测试的jQuery版本是1.4.2，所以测试结果也只是针对这个版本，在其他版本可能就不是这些结果了。</p>
<p>测试的jQuery方法分别是：</p>
<ul>
<li>.toggle()</li>
<li>.show() 和 .hide()</li>
<li>.css({'display':'none'}) 和 .css({'display':'block'})</li>
<li>.addClass('hide') 和 .removeClass('hide')</li>
<li>改变&lt;style&gt;元素的一个属性</li>
</ul>
<h2>.show() 和 .hide()</h2>
<p><strong>在所有浏览器中，这两个方法在隐藏DOM元素上相对来说比较慢。</strong>主要原因在于.hide()方法必须先保存元素的"display"属性，这样.show()才能把元素恢复到原来的状态。这里用到了.data()这个jQuery方法，把信息保存在DOM元素上。为了达到这个目的，.hide()在每个元素上循环了两次，一次用来保存当前的"display"值，一次用来更新样式"display"为"none"。根据源代码上的注释，这样做是为了防止浏览器在每个循环上进行重新渲染（reflow）。.hide()方法还会检查你是否传递了使用动画效果的参数，就算传入一个"0"也会让性能大打折扣。在第一次调用.hide()的时候性能最慢，在之后再调用则会变快。</p>
<table class="mytable" cellspacing="0" style="width:528px;">
<tr>
<th scope="row" class="left top">Browser</th>
<th scope="col">hide/show</th>
</tr>
<tr>
<td class="spec">FireFox 3.6</td>
<td>29ms / 10ms</td>
</tr>
<tr>
<td class="spec">Safari 4.05</td>
<td>6ms / 1ms</td>
</tr>
<tr>
<td class="spec">Opera 10.10</td>
<td>9ms / 1ms</td>
</tr>
<tr>
<td class="spec">Chrome 5.0.3</td>
<td>5ms / 1ms</td>
</tr>
<tr>
<td class="spec">IE 6.0</td>
<td>31ms / 16ms</td>
</tr>
<tr>
<td class="spec">IE 7.0</td>
<td>15ms / 16ms</td>
</tr>
</table>
<h2>.toggle()</h2>
<p><strong>这个方法是最慢的。</strong>它会检查选择器返回的每一个元素当前是否可见，如果可见的话就调用.hide()方法，不可见则调用.show()方法。不但如此，它不仅会检查你是否传递了一个boolean值进去阻止.hide()或者.show()的执行，还会检查看你是否传入了function来进行切换（toggle）而不是对可见性进行切换。看起来这个方法还有很大的改善空间，例如可以先一次过把隐藏的元素select出来，然后调用.show()方法，同时把其余的元素select出来调用.hide()方法。</p>
<table class="mytable" cellspacing="0" style="width:528px;">
<tr>
<th scope="row" class="left top">Browser</th>
<th scope="col">hide/show</th>
</tr>
<tr>
<td class="spec">FireFox 3.6</td>
<td>80ms / 59ms</td>
</tr>
<tr>
<td class="spec">Safari 4.05</td>
<td>24ms / 30ms</td>
</tr>
<tr>
<td class="spec">Opera 10.10</td>
<td>67ms / 201ms</td>
</tr>
<tr>
<td class="spec">Chrome 5.0.3</td>
<td>55ms / 20ms</td>
</tr>
<tr>
<td class="spec">IE 6.0</td>
<td>296ms / 78ms</td>
</tr>
<tr>
<td class="spec">IE 7.0</td>
<td>328ms / 47ms</td>
</tr>
</table>
<h2>.addClass() 和 .removeClass()</h2>
<p>这是两个很漂亮的隐藏/显示DOM元素方法。<b>在Firefox上它的速度是.show()和.hide()的两倍，而在Safari上则是三倍。不过在IE6，IE7，Chrome和Opera上，两种方法几乎没什么差别。</b>值得一提的是，对于100个DOM节点来说，两种方法在Firefox上相差18ms，在Safari相差4ms，速度的差异只会体现在大量节点选择的时候。不过增加和移除class需要你花费更多的工作，因为你需要创建一个用于隐藏的class，然后还要时刻关注着这个class的优先级以保证DOM能隐藏。jQuery增加和移除class是通过字符串操作的，所以我觉得随着元素上class数量的增加，这个方法会变慢，但是我还没对此进行测试过。</p>
<table class="mytable" cellspacing="0" style="width:528px;">
<tr>
<th scope="row" class="left top">Browser</th>
<th scope="col">hide/show</th>
</tr>
<tr>
<td class="spec">FireFox 3.6</td>
<td>11ms / 11ms</td>
</tr>
<tr>
<td class="spec">Safari 4.05</td>
<td>2ms / 2ms</td>
</tr>
<tr>
<td class="spec">Opera 10.10</td>
<td>6ms / 3ms</td>
</tr>
<tr>
<td class="spec">Chrome 5.0.3</td>
<td>3ms / 1ms</td>
</tr>
<tr>
<td class="spec">IE 6.0</td>
<td>47ms / 32ms</td>
</tr>
<tr>
<td class="spec">IE 7.0</td>
<td>15ms / 16ms</td>
</tr>
</table>
<h2>.css({'display':'none'}) 和 .css({'display':'block'})</h2>
<p>这两个方法也很漂亮。<b>相对于.addClass()和.removeClass()，IE6/7和Opera上的速度都得到了提升，而在其他浏览器上则能保持水准。</b>当你知道要改变的元素的当前display样式，或者没有通过inline的方式去改变元素的display样式时，这两个方法很好用。如果你通过inline的方式改变了display样式，那么你需要确保在使得元素重新可见时display值要设置正确。如果你只是使用了元素的默认display值或者在css里设置display值，那么你只需要用类似.css({'display':''})的方法移除样式，元素就会恢复到它在css上的样式或者默认display值。作为一个类库，jQuery不能假定元素的display不是通过inline方式设置的，所以它需要被人手的去确定。不过既然你知道你不会去inline的设置display，那么你就可以去避免这个造成缓慢的主要因素。</p>
<table class="mytable" cellspacing="0" style="width:528px;">
<tr>
<th scope="row" class="left top">Browser</th>
<th scope="col">hide/show</th>
</tr>
<tr>
<td class="spec">FireFox 3.6</td>
<td>14ms / 12ms</td>
</tr>
<tr>
<td class="spec">Safari 4.05</td>
<td>2ms / 1ms</td>
</tr>
<tr>
<td class="spec">Opera 10.10</td>
<td>2ms / 2ms</td>
</tr>
<tr>
<td class="spec">Chrome 5.0.3</td>
<td>2ms / 1ms</td>
</tr>
<tr>
<td class="spec">IE 6.0</td>
<td>16ms / 16ms</td>
</tr>
<tr>
<td class="spec">IE 7.0</td>
<td>0ms / 0ms  // 少于15ms会变成0ms，具体看<a href="http://ejohn.org/blog/accuracy-of-javascript-time/">这里<br />
</a></td>
</tr>
</table>
<h2>禁止样式表</h2>
<p>纯粹为了好玩，我想：如果我们不在每个dom节点上花功夫，而是去捣鼓样式表会怎样呢？这样会提高速度吗？其实就日常使用来说，上面的测试用到的方法已经足够快了，但是如果页面上有10000个节点需要进行隐藏和显示呢？只是把它们全部选择出来就已经够慢了。如果我可以控制样式表，那么就可以完全避免这些时间花费了。不过我得告诉你，这个方法是有很大风险的。</p>
<p>风险在于控制样式表时的跨浏览器问题。首先，我尝试能不能通过jQuery插入一个带有class的"style"标签，但是却出现了跨浏览器问题。然后我尝试用javascript去创建stylesheet节点和class，但是实在有太多的API了，要搞清楚需要花不少的时间。最后，放弃了编程的方式，我在head区里写了一个带有class的style标签。通过编程的方式来创建stylesheet实在是太慢了，但是如果它一旦被创建好，那么给它一个ID和使用它的"disabled"属性就是轻而易举的事情了。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="html4strict"><span style="color: #C0AE9A;">&lt;<span style="color: #18A3E8; font-weight: bold;">style</span> <span style="color: #808080;">id</span><span style="color: #C0AE9A;">=</span><span style="color: #258507;">&quot;special_hide&quot;</span>&gt;</span>.special_hide { display: none; }<span style="color: #C0AE9A;">&lt;<span style="color: #C0AE9A;">/</span><span style="color: #18A3E8; font-weight: bold;">style</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!--  ...  --&gt;</span>
<span style="color: #C0AE9A;">&lt;<span style="color: #18A3E8; font-weight: bold;">div</span> <span style="color: #808080;">class</span><span style="color: #C0AE9A;">=</span><span style="color: #258507;">&quot;special_hide&quot;</span>&gt;</span>Special hide DIV<span style="color: #C0AE9A;">&lt;<span style="color: #C0AE9A;">/</span><span style="color: #18A3E8; font-weight: bold;">div</span>&gt;</span></pre></td></tr></table></div>

<p>然后在javascript里：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#special_hide'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'disabled, '</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #3366CC;">');</span></pre></td></tr></table></div>

<p>搞定！所有带有"special_hide"这个class的元素都显示出来了。要隐藏它们，你只需要……</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript">$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'#special_hide'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">attr</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'disabled'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'false'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>现在它们全部都隐藏了。<strong>总的javascript耗时在所有浏览器上都是0-1ms。</strong>你的javascript只是用来改变一个属性。当然，浏览器还是需要花费时间去重新渲染页面的，但是实际上你已经避免了javascript的处理时间。如果你调用了.toggle()，.hide()或者 .css()这几个方法，那么这个方法就会失效。因为那几个方法会通过内联方式设置css样式，这些样式有更高的优先级。要重新使这个方法生效，只需调用.css('display', '') 把内联的样式移除掉。这个方法同样需要花费你更多的精力，因为那需要去定义class，同时把这些class赋给页面上需要进行显示/隐藏的元素，但是如果你所要处理的元素数量是极其庞大的话，那么这也许是值得的。</p>
<p>简要回顾一下，下面是改变元素显示状态的方法，按照最快到最慢的次序排列：</p>
<ul>
<li style="list-style-type:decimal;">禁用/启用样式表</li>
<li style="list-style-type:decimal;">.css('display', ''), .css('display', 'none')</li>
<li style="list-style-type:decimal;">.addClass(), .removeClass()</li>
<li style="list-style-type:decimal;">.show(), .hide()</li>
<li style="list-style-type:decimal;">.toggle()</li>
</ul>
<p>需要注意的是，在大多数的情况下，这些方法都足够的快了。当你要操作很大的jQuery集合时，那么.show() 和 .hide()方法在IE下就会变得很慢了，这是你可能要用addClass() 或者 .removeClass()方法。 禁用/启用样式表的方法只有在很极端的情况下才有必要用到。
</p></div>
<p>Translated by <a href="http://www.icyfire.me/">icyfire</a> @ company ON Jul 26, 2010<br />
源文：<a href="http://www.learningjquery.com/2010/05/now-you-see-me-showhide-performance">Now you see me… show/hide performance</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.icyfire.me/2010/07/jquery-showhide-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>告诉你什么叫淡定……</title>
		<link>http://www.icyfire.me/2010/06/dandingdi/</link>
		<comments>http://www.icyfire.me/2010/06/dandingdi/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 16:50:23 +0000</pubDate>
		<dc:creator>icyfire</dc:creator>
				<category><![CDATA[体育竞技]]></category>
		<category><![CDATA[世界杯]]></category>

		<guid isPermaLink="false">http://www.icyfire.me/?p=949</guid>
		<description><![CDATA[尼日利亚淡定帝是也～]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.icyfire.me/wp-content/uploads/2010/06/100629224964620298a0ff23a1.jpg" alt="" title="尼日利亚淡定帝" width="457" height="529" class="aligncenter size-full wp-image-950" /></p>
<p>尼日利亚淡定帝是也～</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icyfire.me/2010/06/dandingdi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>马拉多纳丰富的表情……</title>
		<link>http://www.icyfire.me/2010/06/diego-maradona-expression/</link>
		<comments>http://www.icyfire.me/2010/06/diego-maradona-expression/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 11:03:44 +0000</pubDate>
		<dc:creator>icyfire</dc:creator>
				<category><![CDATA[体育竞技]]></category>
		<category><![CDATA[世界杯]]></category>
		<category><![CDATA[阿根廷]]></category>
		<category><![CDATA[马拉多纳]]></category>

		<guid isPermaLink="false">http://www.icyfire.me/?p=947</guid>
		<description><![CDATA[<img src="http://www.icyfire.me/wp-content/uploads/2010/06/diego_maradona_wc2010_l-528x828.jpg" alt="" title="diego_maradona_wc2010" width="528" height="828" class="aligncenter size-thumbnail wp-image-948" />

老马还真是个活宝啊……超萌～]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.icyfire.me/wp-content/uploads/2010/06/diego_maradona_wc2010_l.jpg" alt="" title="diego_maradona_wc2010" width="690" height="1083" class="aligncenter size-full wp-image-948" /></p>
<p>老马还真是个活宝啊……超萌～</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icyfire.me/2010/06/diego-maradona-expression/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Bookmark]iPhone 4第一时间火热拆解</title>
		<link>http://www.icyfire.me/2010/06/iphone-4-dismantling/</link>
		<comments>http://www.icyfire.me/2010/06/iphone-4-dismantling/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 11:24:38 +0000</pubDate>
		<dc:creator>icyfire</dc:creator>
				<category><![CDATA[数码产品]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPhone 4]]></category>

		<guid isPermaLink="false">http://www.icyfire.me/?p=941</guid>
		<description><![CDATA[去看看:[威锋网] - iPhone 4第一时间火热拆解]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.icyfire.me/wp-content/uploads/2010/06/7_536894_0656d79df26dd0d-528x395.jpg" alt="" title="7_536894_0656d79df26dd0d" width="528" height="395" class="aligncenter size-thumbnail wp-image-943" /></p>
<p>去看看:<a href="http://iphone.weiphone.com/news/2010-06-23/iPhone_4_hot_dismantling_the_first_time_218678_5.shtml">[威锋网] - iPhone 4第一时间火热拆解 </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.icyfire.me/2010/06/iphone-4-dismantling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>主题工事进行中……</title>
		<link>http://www.icyfire.me/2010/06/%e4%b8%bb%e9%a2%98%e5%b7%a5%e4%ba%8b%e8%bf%9b%e8%a1%8c%e4%b8%ad%e2%80%a6%e2%80%a6/</link>
		<comments>http://www.icyfire.me/2010/06/%e4%b8%bb%e9%a2%98%e5%b7%a5%e4%ba%8b%e8%bf%9b%e8%a1%8c%e4%b8%ad%e2%80%a6%e2%80%a6/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 03:19:37 +0000</pubDate>
		<dc:creator>icyfire</dc:creator>
				<category><![CDATA[乱七八糟]]></category>

		<guid isPermaLink="false">http://www.icyfire.me/?p=940</guid>
		<description><![CDATA[WordPress 3来了，也在第一时间更新了，所以也想把主题修理下。 主要优化下代码，然后增加一些3.0新功能的支持。]]></description>
			<content:encoded><![CDATA[<p>WordPress 3来了，也在第一时间更新了，所以也想把主题修理下。<br />
主要优化下代码，然后增加一些3.0新功能的支持。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icyfire.me/2010/06/%e4%b8%bb%e9%a2%98%e5%b7%a5%e4%ba%8b%e8%bf%9b%e8%a1%8c%e4%b8%ad%e2%80%a6%e2%80%a6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>专访马克·扎克伯格(Mark Zuckerberg)</title>
		<link>http://www.icyfire.me/2010/06/exclusive-mark-zuckerberg/</link>
		<comments>http://www.icyfire.me/2010/06/exclusive-mark-zuckerberg/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 06:41:50 +0000</pubDate>
		<dc:creator>icyfire</dc:creator>
				<category><![CDATA[新闻评测]]></category>
		<category><![CDATA[Facebook]]></category>

		<guid isPermaLink="false">http://www.icyfire.me/?p=937</guid>
		<description><![CDATA[北京时间6月23日消息，美国科技博客网站Facebook周二刊登了该网站对Facebook首席执行官马克·扎克伯格(Mark Zuckerberg)的独家采访记录。在这次于本周早些时候进行的采访中，扎克伯格谈到了Facebook的现状、未来发展、为外部开发者创建的收入生态系统及其他事宜。 摘录了下几个重点： 在应用程序被用户接受的问题上，主要有两种方式：一是通过病毒式传播，即通过强制方式发展新用户。另一种方式是让用户再次了解某款应用程序的具体性能。在互联网产业发展初期阶段，病毒式传播方式很有效。在这种情况下，其实并没有真正能够使用户再次了解应用程序的有效渠道。一些开发者通过病毒式传播方式，而迅速发展了大量用户。他们发展忠诚用户的主要方式，就是不断发展新用户，并让这些新用户产生反感情绪。真正能够让用户愿意再次了解某款应用程序性能的方式是：应用程序本身性能很好，用户愿意再次了解和使用。 维持各类游戏之间的平衡。对每位用户的兴趣爱好有所了解。如对于不喜欢玩游戏的用户，就少给他们投递一些有关游戏的信息。 对于外部游戏开发者而言，无论其公司规模大小，都能在Facebook获得平等的发展机遇。这种做法有利于维持社交游戏产业的正常竞争。 Facebook网站上应该使用单一虚拟货币才好。如果我们能够一站式购买信用币，并能够用于所有游戏，无疑对用户和外部开发者都有好处。 Twitter是性能很好、也非常简洁的服务。他们将一件事情做得很好，这就很强大。人们使用产品的方式非常不同。他们(注：指Twitter)做的一些事情，也正是我们刻意不想做的业务。 腾讯科技：专访Facebook扎克伯格：说我不在乎钱是误读 原文：Exclusive: Discussing the Future of Facebook and the Facebook Ecosystem with CEO Mark Zuckerberg]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.icyfire.me/wp-content/uploads/2010/06/201006230011.jpg" alt="" title="马克·扎克伯格(Mark Zuckerberg)" width="450" height="320" class="aligncenter size-full wp-image-939" /></p>
<p>北京时间6月23日消息，美国科技博客网站Facebook周二刊登了该网站对Facebook首席执行官马克·扎克伯格(Mark Zuckerberg)的独家采访记录。在这次于本周早些时候进行的采访中，扎克伯格谈到了Facebook的现状、未来发展、为外部开发者创建的收入生态系统及其他事宜。</p>
<p>摘录了下几个重点：</p>
<ul>
<li>在应用程序被用户接受的问题上，主要有两种方式：一是通过病毒式传播，即通过强制方式发展新用户。另一种方式是让用户再次了解某款应用程序的具体性能。在互联网产业发展初期阶段，病毒式传播方式很有效。在这种情况下，其实并没有真正能够使用户再次了解应用程序的有效渠道。一些开发者通过病毒式传播方式，而迅速发展了大量用户。他们发展忠诚用户的主要方式，就是不断发展新用户，并让这些新用户产生反感情绪。真正能够让用户愿意再次了解某款应用程序性能的方式是：应用程序本身性能很好，用户愿意再次了解和使用。</li>
<li>维持各类游戏之间的平衡。对每位用户的兴趣爱好有所了解。如对于不喜欢玩游戏的用户，就少给他们投递一些有关游戏的信息。</li>
<li>对于外部游戏开发者而言，无论其公司规模大小，都能在Facebook获得平等的发展机遇。这种做法有利于维持社交游戏产业的正常竞争。</li>
<li>Facebook网站上应该使用单一虚拟货币才好。如果我们能够一站式购买信用币，并能够用于所有游戏，无疑对用户和外部开发者都有好处。</li>
<li>Twitter是性能很好、也非常简洁的服务。他们将一件事情做得很好，这就很强大。人们使用产品的方式非常不同。他们(注：指Twitter)做的一些事情，也正是我们刻意不想做的业务。</li>
</ul>
<p>腾讯科技：<a href="http://tech.qq.com/a/20100623/000177.htm">专访Facebook扎克伯格：说我不在乎钱是误读</a></p>
<p>原文：<a href="Exclusive: Discussing the Future of Facebook and the Facebook Ecosystem with CEO Mark Zuckerberg">Exclusive: Discussing the Future of Facebook and the Facebook Ecosystem with CEO Mark Zuckerberg</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.icyfire.me/2010/06/exclusive-mark-zuckerberg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Chrome 和 Opera 都比土豆还要快</title>
		<link>http://www.icyfire.me/2010/05/chrome-%e5%92%8c-opera-%e9%83%bd%e6%af%94%e5%9c%9f%e8%b1%86%e8%bf%98%e8%a6%81%e5%bf%ab/</link>
		<comments>http://www.icyfire.me/2010/05/chrome-%e5%92%8c-opera-%e9%83%bd%e6%af%94%e5%9c%9f%e8%b1%86%e8%bf%98%e8%a6%81%e5%bf%ab/#comments</comments>
		<pubDate>Sat, 29 May 2010 13:28:13 +0000</pubDate>
		<dc:creator>icyfire</dc:creator>
				<category><![CDATA[网站前端]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[视频]]></category>

		<guid isPermaLink="false">http://www.icyfire.me/?p=929</guid>
		<description><![CDATA[5月初，爱好吹嘘 Chrome 速度的 Google 又制作了一个创意巧妙的视频，其中的一个片段是 Chrome 打开页面速度 PK 飞行的土豆速度。Opera 的人看了这个视频后也灵感大发，同样拿 Opera 和土豆拼起了速度，不过他们比的是，煮土豆的速度……]]></description>
			<content:encoded><![CDATA[<p>5月初，爱好吹嘘 Chrome 速度的 Google 又制作了一个创意巧妙的视频，其中的一个片段是 Chrome 打开页面速度 PK 飞行的土豆速度。Opera 的人看了这个视频后也灵感大发，同样拿 Opera 和土豆拼起了速度，不过他们比的是，煮土豆的速度……</p>
<p><embed src="http://player.youku.com/player.php/sid/XMTc2ODU2OTI0/v.swf" quality="high" width="480" height="400" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed></p>
<p>这是Google的。</p>
<p><embed src="http://player.youku.com/player.php/sid/XMTc2ODQzODA0/v.swf" quality="high" width="480" height="400" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed></p>
<p>上面是Opera的恶搞版，真的太搞了……</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icyfire.me/2010/05/chrome-%e5%92%8c-opera-%e9%83%bd%e6%af%94%e5%9c%9f%e8%b1%86%e8%bf%98%e8%a6%81%e5%bf%ab/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>哆啦A梦帮你测CSS3……</title>
		<link>http://www.icyfire.me/2010/05/dora-css3/</link>
		<comments>http://www.icyfire.me/2010/05/dora-css3/#comments</comments>
		<pubDate>Mon, 17 May 2010 15:14:14 +0000</pubDate>
		<dc:creator>icyfire</dc:creator>
				<category><![CDATA[网站前端]]></category>
		<category><![CDATA[CSS3]]></category>

		<guid isPermaLink="false">http://www.icyfire.me/?p=926</guid>
		<description><![CDATA[<iframe width="528" height="580" frameborder="0" scrolling="no" src="http://www.icyfire.me/wp-example/css/dora3/dora3.htm"></iframe>

这是日本某人用CSS画的哆啦A梦，用来检测浏览器对CSS3的支持程度。我用几个浏览器测试，其中Chrome 4跟Safari 4表现最好，而Firefox 3.6次之，因为它渲染的哆啦A梦的眼睛不会动，而Opera10.5再次之，它不但眼睛不会动，还渲染少了一些渐变效果。至于IE就不说了，你可以自己试试看……

来源：<a href="http://blog-imgs-42-origin.fc2.com/s/h/o/shopdd/dora_css3.html">http://blog-imgs-42-origin.fc2.com/s/h/o/shopdd/dora_css3.html</a> ]]></description>
			<content:encoded><![CDATA[<p><iframe width="528" height="580" frameborder="0" scrolling="no" src="http://www.icyfire.me/wp-example/css/dora3/dora3.htm"></iframe></p>
<p>这是日本某人用CSS画的哆啦A梦，用来检测浏览器对CSS3的支持程度。我用几个浏览器测试，其中Chrome 4跟Safari 4表现最好，而Firefox 3.6次之，因为它渲染的哆啦A梦的眼睛不会动，而Opera10.5再次之，它不但眼睛不会动，还渲染少了一些渐变效果。至于IE就不说了，你可以自己试试看……</p>
<p>来源：<a href="http://blog-imgs-42-origin.fc2.com/s/h/o/shopdd/dora_css3.html">http://blog-imgs-42-origin.fc2.com/s/h/o/shopdd/dora_css3.html</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.icyfire.me/2010/05/dora-css3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[弹出框]artDialog</title>
		<link>http://www.icyfire.me/2010/05/artdialog/</link>
		<comments>http://www.icyfire.me/2010/05/artdialog/#comments</comments>
		<pubDate>Wed, 12 May 2010 16:19:43 +0000</pubDate>
		<dc:creator>icyfire</dc:creator>
				<category><![CDATA[网站前端]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[弹出框]]></category>

		<guid isPermaLink="false">http://www.icyfire.me/?p=925</guid>
		<description><![CDATA[最近在做一个项目，对之前所用的弹出框速度不是很满意，但是一直没找到个满意的（其实ymPrompt和lhgdialog都不错），后来在Blueidea的论坛里看到了artDialog，试用了下，感觉还不错，于是用到项目上。

<img src="http://www.icyfire.me/wp-content/uploads/2010/05/artDialog2.png" alt="" />

<strong>名称</strong>：artDialog
<strong>作者</strong>：<a href="http://www.planeArt.cn" target="_blank">唐斌</a>
<strong>版本</strong>：v 2.0.9 Beta
<strong>更新</strong>：2010-05-02 
<strong>License</strong>：<a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">GNU Lesser General Public License</a>]]></description>
			<content:encoded><![CDATA[<p>最近在做一个项目，对之前所用的弹出框速度不是很满意，但是一直没找到个满意的（其实ymPrompt和lhgdialog都不错），后来在Blueidea的论坛里看到了artDialog，试用了下，感觉还不错，于是用到项目上。</p>
<p><img src="http://www.icyfire.me/wp-content/uploads/2010/05/artDialog2.png" alt="" /></p>
<p><strong>名称</strong>：artDialog<br />
<strong>作者</strong>：<a href="http://www.planeArt.cn" target="_blank">唐斌</a><br />
<strong>版本</strong>：<del datetime="2010-05-19T16:19:59+00:00">v 2.0.9 Beta</del>v 2.10 Preview<br />
<strong>更新</strong>：<del datetime="2010-05-19T16:19:59+00:00">2010-05-02 </del>2010-05-18<br />
<strong>License</strong>：<a href="http://www.gnu.org/licenses/lgpl.html" target="_blank">GNU Lesser General Public License</a></p>
<p><strong>简介</strong>：artDialog是一个轻巧且高度兼容的javascript对话框组件，可让你的网页交互拥有桌面软件般的用户体验。</p>
<p><strong>功能</strong>：支持锁定屏幕(遮罩)、模拟alert和confirm、多窗口弹出、静止定位、支持Ese键关闭对话框、定时关闭、自定义位置、拖动、鼠标调节窗口大小、换肤、穿越框架..</p>
<p><strong>优点</strong>：</p>
<ul>
<li><strong>自适应内容</strong>: 无需预设高宽, 对话框与按钮自适应消息内容的大小</li>
<li><strong>文本智能对齐</strong>: 如果设置了对话框宽度，短文本居中长文本居左对齐</li>
<li><strong>容错能力</strong>: 如果定义的宽度高度小于内容大小不会出现错位</li>
<li><strong>界面机制</strong>: 九宫格布局, 样式钩子与结构丰富, 可定制自适应皮肤</li>
<li><strong>跨浏览器支持</strong>: 支持 Firefox, Chrome, Safari, IE6+, Opera ..</li>
<li><strong>轻巧</strong>: 不依赖第三方库, js压缩后不足10kb</li>
<li><strong>IE6无抖动静止定位</strong>: 在 IE6 下可实现与现代浏览器一样完美无闪动静止定位效果</li>
<li><strong>智能定位</strong>: 使用自定义坐标的时候智能修正位置, 不会超出边界</li>
<li><strong>拖动流畅</strong>: 不会粘住鼠标也不会拖出浏览器视口导致无法控制</li>
<li><strong>IE6遮盖下拉控件支持</strong>: 支持 IE6 下覆盖下拉控件</li>
</ul>
<p><strong>下载</strong>：<a href="http://code.google.com/p/artdialog/" target="_blank">Google Code</a></p>
<p><strong>使用感受</strong>：<br />
好吧，上面的介绍跟优点都是从<a href="http://www.planeart.cn/downs/artDialog/" target="_blank">DEMO</a>页面抄下来。</p>
<p>还是说说我自己的使用感受吧。首先调用使用的是流行的传入JSON参数的方法，这个我喜欢：</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="javascript">artDialog<span style="color: #009900;">&#40;</span>
        <span style="color: #009900;">&#123;</span>	
            content<span style="color: #339933;">:</span><span style="color: #3366CC;">'欢迎你来到对话框世界！'</span><span style="color: #339933;">,</span>
            lock<span style="color: #339933;">:</span><span style="color: #003366; font-weight: bold;">true</span><span style="color: #339933;">,</span>
            style<span style="color: #339933;">:</span><span style="color: #3366CC;">'succeed noClose'</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'你点了确定'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
        <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
            <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'你点了取消'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>另外在页面载入的时候，会预先弹出一个隐藏的对话框，预先加载了一些皮肤图片，这样可以加快以后弹出框的弹出速度，很聪明的做法。</p>
<p>代码结构清晰，而且扩展起来很方便。</p>
<p>不过虽然优点这么多，但是在实际使用中还是会发现不少问题，下面是我遇到的部分问题：</p>
<ul>
<li><del datetime="2010-05-19T16:19:59+00:00">IE7的一个iframe bug。artDialog使用的是createElement的方法来创建节点，这跟ymPrompt和lhgdialog不同。而使用createElement方法创建的iframe在IE7下会出现边框，虽然artDialog里面设了iframe的border为0，但是这在IE7下是不会有作用的，解决方法是创建了iframe后用setAttribute('frameborder', '0', 0)，注意需要第三个参数"0"，不然IE7还是不认。</del>2.1中已经修复这个问题。</li>
<li>artDialog还有个重要的特性是对象重用，之前创建的对象会用一个box装起来，并用id作标识，如果是相同的id，则会用回之前的对象，加快了弹出框的创建速度，但是这在FF之类的浏览器下工作得很好，可是在IE下，这样却会在DOM下产生许多副本，详细情况用IE DOM inspector看看就知道了。在IE下关闭一个弹出框后再打开另外一个，你会发现框了的内容会首先出现之前那个弹出框的内容再出现实际的内容。我的解决方法是……去掉对象重用的相关代码。</li>
<li><del datetime="2010-05-19T16:19:59+00:00">artDialog有个不错的功能：锁定。但是事实上在我这里并没用到，锁定会把屏幕锁住，弹出框不能移动，背景用遮罩盖住，突显弹出框。其实我只是想要个普通的遮罩来突显弹出框而已，不需要锁定，而且锁定时会把滚动条干掉，导致页面会整体移动，个人感觉不太好。不过扩展个overlay功能其实不难。</del>2.1版已经改进了锁定功能，不会发生页面的偏移了。</li>
<li><del datetime="2010-05-19T16:19:59+00:00">弹出框的定位使用的是黄金比例垂直居中，我不知道这个的好处是什么，实际上的效果并不是很好。水平居中没问题，但是垂直居中有时会太靠顶，所以最后我还是改为普通的垂直居中了。</del>2.1中也作了改进。</li>
<li>使用iframe作为弹出内容的话，artDialog会首先出现一个loading的动画，等iframe加载完才显示。这很好，但是如果你的iframe里使用了jQuery的$(document).ready()的话，那恭喜你中大奖了。ready了的代码可能会出现异常，特别是在IE下。onload的速度一般会比jQuery的ready要慢，会是这个原因引起的吗？未作深入研究，所以我直接把这个loading干掉了。</li>
</ul>
<p>大致上我遇到比较重大的问题就是上面这几个了，希望下一个版本能让我喜出望外。</p>
<p>Update 2010.05.20 版本2.1修复了不少bug也改进了不少功能，作者还真勤劳～跟作者在微博上反应了些问题都在新版本中得到了解决，赞一个。期待最终版。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.icyfire.me/2010/05/artdialog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>像素：复古游戏</title>
		<link>http://www.icyfire.me/2010/04/pixel/</link>
		<comments>http://www.icyfire.me/2010/04/pixel/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 11:41:26 +0000</pubDate>
		<dc:creator>icyfire</dc:creator>
				<category><![CDATA[乱七八糟]]></category>
		<category><![CDATA[视频]]></category>

		<guid isPermaLink="false">http://www.icyfire.me/?p=921</guid>
		<description><![CDATA[<div style="width:528px;text-align:center;">
<embed src="http://player.youku.com/player.php/sid/XMTYzOTI2NDky/v.swf" quality="high" width="480" height="400" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>
</div>]]></description>
			<content:encoded><![CDATA[<div style="width:528px;text-align:center;">
<embed src="http://player.youku.com/player.php/sid/XMTYzOTI2NDky/v.swf" quality="high" width="480" height="400" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash"></embed>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.icyfire.me/2010/04/pixel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
