<?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/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>朱文昊 Albert Zhu &#187; 朱文昊 Albert Zhu</title>
	<atom:link href="http://zhuwenhao.com/author/zhuwenhao/feed/" rel="self" type="application/rss+xml" />
	<link>http://zhuwenhao.com</link>
	<description>朱文昊的中文博客－－专注技术，向往自由</description>
	<lastBuildDate>Thu, 10 May 2012 07:20:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Adobe AIR和他的对手们</title>
		<link>http://zhuwenhao.com/1047/%e6%8a%80%e6%9c%af/%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1%e8%af%ad%e8%a8%80/ria%e7%b1%bb%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/adobe-air%e5%92%8c%e4%bb%96%e7%9a%84%e5%af%b9%e6%89%8b%e4%bb%ac/</link>
		<comments>http://zhuwenhao.com/1047/%e6%8a%80%e6%9c%af/%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1%e8%af%ad%e8%a8%80/ria%e7%b1%bb%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/adobe-air%e5%92%8c%e4%bb%96%e7%9a%84%e5%af%b9%e6%89%8b%e4%bb%ac/#comments</comments>
		<pubDate>Thu, 10 May 2012 07:20:26 +0000</pubDate>
		<dc:creator>朱文昊 Albert Zhu</dc:creator>
				<category><![CDATA[RIA类程序设计]]></category>

		<guid isPermaLink="false">http://zhuwenhao.com/?p=1047</guid>
		<description><![CDATA[转载自：http://www.k-zone.cn/zblog/post/adobe-air-silveright-javafx-prism.html
一切权力归著作人所有
本来很久之前就想写一篇这样的文章，但是一直没有时间，今天在“机缘巧合”下，就把把这篇文章成稿了：）
自从Adobe AIR在08年露出端倪以后，Adobe的野心也就“昭然若揭”了，正如我在08年，应RIAMeeting邀请，做了一篇关于Adobe AIR的演讲上面说的那样，Adobe不安心、也不甘心做浏览器的“第一公民”，而是要做操作系统的第一公民，因此Adobe AIR应运而生。
而本篇文章不是悉数Adobe AIR的，而 [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>转载自：<a href="http://www.k-zone.cn/zblog/post/adobe-air-silveright-javafx-prism.html">http://www.k-zone.cn/zblog/post/adobe-air-silveright-javafx-prism.html</a></p>
<p>一切权力归著作人所有</p></blockquote>
<p>本来很久之前就想写一篇这样的文章，但是一直没有时间，今天在“机缘巧合”下，就把把这篇文章成稿了：）<br />
自从<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>在08年露出端倪以后，<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a>的野心也就“昭然若揭”了，正如我在08年，应<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=RIAMeeting">RIAMeeting</a>邀请，做了一篇关于<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>的演讲上面说的那样，<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a>不安心、也不甘心做浏览器的“第一公民”，而是要做操作系统的第一公民，因此<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>应运而生。</p>
<p>而本篇文章不是悉数<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>的，而是想说一下他的对手们。既然说到对手，就要先来说一下<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>的特性。总结如下：</p>
<p>1、离线处理功能（可以利用SQLLite进行离线处理）<br />
2、Flex → AIR，几乎可以无缝转换的特征。<br />
3、无需浏览器而单独运行。</p>
<p>okay，上面几点就是<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>的一些比较显著的特质了，那么我们再说一下<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>的对手们。</p>
<p>1、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Silverlight">Silverlight</a> 3.0版本<br />
“据说”（已经被证实）在这个3.0版本里面增加了“OUT OF BROWSER”功能，即可以“让用户将他们喜欢的SILVERLIGHT程序直接放到他们的桌面或开始菜单中,而不用去下载任何运行环境和打开浏览器程序”。<br />
也就是说，第三版的Silverlight已经具有了<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>的第三个特性。同样，也具有第二个特性，但是惟独在这个版本中没有集成<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>的第一个特性。</p>
<p><strong>结论：</strong>无须质疑，在<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Silverlight">Silverlight</a> 3.0与<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>的“对局”中已经败下阵来。</p>
<p>2、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=ajax">Ajax</a><br />
如果要说<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=ria">RIA</a>的话，除了<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=flex">Flex</a>外，就要数<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=ajax">Ajax</a>的资格老了，不仅他的资格老，而且内容也“老”，“无非就是”<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=JavaScript">JavaScript</a>而已：）但是千万不要小看这个JavaScript，在<a href="http://www.k-zone.cn/zblog/post/TIOBE-2009-5.html">TIOBE程式語言最新排名-2009年5月版</a>的排行版上，也是前十名的选手（要知道<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=ActionScript+3%2E0">ActionScript 3.0</a>的排行才是区区23名而已）<br />
如果要比较一下<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=ajax">Ajax</a>的话，我想与<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>是没有办法相比了，因为<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=ajax">Ajax</a>虽然属于<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=ria">RIA</a>范畴，但是他的对手也仅仅是<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=flex">Flex</a>、或者说是<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Silverlight">Silverlight</a> 3.0以上的版本（不包含3.0版本）。</p>
<p><strong>结论：</strong>还未比较就败下阵来。但是大家千万不要觉得<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=JavaScript">JavaScript</a>就无法与<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>相提并论了，其他他的实力还是蛮强大的，这点我会在下面的内容中陈述的。</p>
<p>3、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=JavaFX">JavaFX</a><br />
自从Sun推出了自己的<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=ria">RIA</a>概念的编程语言：<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=JavaFX">JavaFX</a>，Kenshin认为<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=ria">RIA</a>这个圈是越来越好玩了，相继<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a>、Microsoft、Oracle都纷纷加入这个战团。这样才真的有意思嘛，否则就Adobe自己玩，想玩都玩不大。<br />
Sun的<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=JavaFX">JavaFX</a>，有他先天的优势 &#8211; Java，别忘记虽然Java的霸主地位被一再的侵蚀，但是“瘦死的骆驼比马大”，更何况他还没有“死”，在TIOBE程式語言最新排名-2009年5月版的排行版上仍然是一副老大的嘴脸。现在到了Oracle手里，我希望Oracle给可以赋予Java、赋予JavaFX更强大的战斗力。</p>
<p><strong>总结：</strong>但是<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=JavaFX">JavaFX</a>现在还它弱小了，因此<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=JavaFX">JavaFX</a>最大的竞争对手是<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=flex">Flex</a>、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=ajax">Ajax</a>、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Silverlight">Silverlight</a> 3.0以上版本，他连<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>的边都没靠，估计就得“挂”了：）不过我倒是认为<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=JavaFX">JavaFX</a>就从Sun对他的命名上面，就可以知道，Sun不会再犯JSP时代的错误了。</p>
<p>以上就是<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>正统的对手们，通过一些了解可以得知，除了“犹抱琵琶半遮面”的<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Silverlight">Silverlight</a> 3.0似乎可以与之抗衡一下，其他诸如<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=ajax">Ajax</a>、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=JavaFX">JavaFX</a>均不在一个数量级上，充其量就能与<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=flex">Flex</a>“过过招”，但基本上也是完败与Flex的。</p>
<p>那么说完了“正统”的对手，让我们在来看一下，“明修栈道暗渡陈仓”的<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>的非正统的对手们。</p>
<p>1、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>（三棱镜）<br />
说到<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>，估计没有太多的人认识他，同时说到Mozilla，相比也没有太多的人了解，但是说到“鼎鼎大名”的FireFox（中文名：火狐），估计就是无人不知，无人不晓的了。而<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>正是系出名门（Mozilla）旗下FireFox的“同门小师弟”。<br />
但是<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>与<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>有什么关系吗？<br />
其实道理很简单，<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>的特性我已经在上面叙述了，但是在这里再总结一下：<br />
<strong>可以将web Application无缝等转移到桌面上面，同时具有desk Application的一些特征：可以使用OS API、不依赖于浏览器等等。</strong><br />
说完了<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>的特征，让我们来了解一下Prism能做些什么？<br />
关于<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>的功能，我早在07年的时候（请注意一下这个时间），就在这个博客上面介绍过，详细请看这里：<a href="http://www.k-zone.cn/zblog/post/prism.html">http://www.k-zone.cn/zblog/post/prism.html</a><br />
其中关于<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>的定义如下：<br />
<em><a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>可以将用户在浏览器中的Web程序（例如Google Docs、Google Canlendar等）分离出来，并直接在桌面（Window、Liunx、Mac OS X）上面运行。<br />
</em><em>      因此<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>在某种意义上说可以约等于<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a>的<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>项目和微软的WPF、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Silverlight">Silverlight</a>项目，同属与RIA范畴的软件，因此在这一领域将直接面对Adobe和Micosoft的挑战。</em><br />
在让我们看一下<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>实际中的运行图：（我分别运行了Gmail、Tasks、Facebook、FriendFeed）在我的桌面上面。<br />
<a href="http://www.flickr.com/photos/wonle/3580559290/" target="_blank"><img src="http://zhuwenhao.com/wp-content/uploads/2012/05/3580559290_dcb29ea560.jpg" alt="" /></a><span style="color: #0000ee;"><br />
</span>      是不是很“吓人”呢？我可以通过<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>直接将任意web Application 转换为desk Application，而不需要什么<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Silverlight">Silverlight</a>的支持。在<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>上面完全符合<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>这个概念的“核心”特质。为什么说核心特质呢？因为<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>其实只是可以“模拟”web Application上面的运行，而非具有离线功能、操作OS API等功能。</p>
<p><strong>总结：</strong><a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>虽然好，虽然在某些程度上“暗度”了一把<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>，但是还是与<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>有些较明显的差距。</p>
<p>2、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Google+Gears">Google Gears</a><br />
没错，就是<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Google+Gears">Google Gears</a>（这也是在07年的时候，Google发布的应用程序），这个让浏览器支持离线处理功能的工具。<br />
关于<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Google+Gears">Google Gears</a>的介绍请看：<a href="http://baike.baidu.com/view/1037577.htm">http://baike.baidu.com/view/1037577.htm</a> 或者 <a href="http://code.google.com/intl/zh-CN/apis/gears/">http://code.google.com/intl/zh-CN/apis/gears/</a><br />
通过以上的介绍可以得知，<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Google+Gears">Google Gears</a>是离线处理的“利器”，泛泛的说，只要是支持<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Google+Gears">Google Gears</a>的网站都具有离线处理功能。例如：Google Reader、WordPress 2.6以上版本等。<br />
同时，由于<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Google+Gears">Google Gears</a>得益于开放的API政策，因此任何人都可以利用<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Google+Gears">Google Gears</a> API编写自己的离线功能的web Application。<br />
其实介绍了这么多，就说明一个事情：<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Google+Gears">Google Gears</a>具有<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>特征中的“离线处理”功能。</p>
<p><strong>总结：</strong><a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Google+Gears">Google Gears</a>虽然具有离线处理功能，由于缺乏其他特质，因此依旧不能给<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>带来直接的威胁，同样在与<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>的对阵中也败下阵来了。</p>
<p>结果上面的一系列比较，无论是正统的<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Silverlight">Silverlight</a> 3.0、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=ajax">Ajax</a>、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=JavaFX">JavaFX</a>、还是“旁门左道”的<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>，<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Google+Gears">Google Gears</a>都不是<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>的对手。难道<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>真的可以“笑傲江湖”吗？</p>
<p>其实不然，既然我们单独对决无一胜算，但是我们可以联合起来。假设以下的情况：</p>
<p>1、Google Reader（具有离线功能） + <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>，我想就变成了一个具有离线处理，同时也可以在桌面上运行、不依赖于浏览器的desk Application，而这个desk Application作为一个RSS Reader来说，我想足可以“干掉”目前市面上面所有的desk Application吧？更何况是<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>版本的Reader（目前尚不清楚是否有这种AIR Reader的存在）</p>
<p>2、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Google+Gears">Google Gears</a> API + <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a> + <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=JavaScript">JavaScript</a>的方式。<br />
通过以上的组合，我们可以做到给任意web Application加上具有AIR一样的作用，我随便举几个例子来说：FriendFeed、Facebook、Twitter、Delicious等都具有以上的功能，那么将会是多么可怕的事情。<br />
这样就可以使上面的那几个应用不局限与浏览器、网络而可以单独生存。那么我想<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>是无论如何也无法做到一些<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>版本的FriendFeed、Facebook、Twitter、Delicious吧？</p>
<p><strong>最后总结一下：</strong><br />
个人猜测，<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Google+Gears">Google Gears</a>、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Prism">Prism</a>、<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=JavaScript">JavaScript</a>、甚至于包含HTML 5标准的浏览器、Google Chrome、FireFox都将会是<a href="http://www.k-zone.cn/zblog/catalog.asp?tags=Adobe">Adobe</a> <a href="http://www.k-zone.cn/zblog/catalog.asp?tags=AIR">AIR</a>真正的竞争对手！</p>
<div id="overlinks">
<h3>永久链接：</h3>
<div><a href="http://www.k-zone.cn/zblog/post/adobe-air-silveright-javafx-prism.html">http://www.k-zone.cn/zblog/post/adobe-air-silveright-javafx-prism.html</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://zhuwenhao.com/1047/%e6%8a%80%e6%9c%af/%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1%e8%af%ad%e8%a8%80/ria%e7%b1%bb%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1/adobe-air%e5%92%8c%e4%bb%96%e7%9a%84%e5%af%b9%e6%89%8b%e4%bb%ac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C#写的定时关机程序及一些感想</title>
		<link>http://zhuwenhao.com/1020/%e6%8a%80%e6%9c%af/%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1%e8%af%ad%e8%a8%80/csharp-%e8%af%ad%e8%a8%80/c%e5%86%99%e7%9a%84%e5%ae%9a%e6%97%b6%e5%85%b3%e6%9c%ba%e7%a8%8b%e5%ba%8f%e5%8f%8a%e4%b8%80%e4%ba%9b%e6%84%9f%e6%83%b3/</link>
		<comments>http://zhuwenhao.com/1020/%e6%8a%80%e6%9c%af/%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1%e8%af%ad%e8%a8%80/csharp-%e8%af%ad%e8%a8%80/c%e5%86%99%e7%9a%84%e5%ae%9a%e6%97%b6%e5%85%b3%e6%9c%ba%e7%a8%8b%e5%ba%8f%e5%8f%8a%e4%b8%80%e4%ba%9b%e6%84%9f%e6%83%b3/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 14:17:34 +0000</pubDate>
		<dc:creator>朱文昊 Albert Zhu</dc:creator>
				<category><![CDATA[Csharp 语言]]></category>
		<category><![CDATA[自由软件社区]]></category>

		<guid isPermaLink="false">http://zhuwenhao.com/?p=1020</guid>
		<description><![CDATA[前几天老婆想要一个自动关机的软件，这种小软件网上下载不是有广告就可能有病毒，或者觉得不好用。这么简单的软件，自己应该很容易写一个吧。首先用几分钟写出一个bat脚本。（脚本卖萌的地方，不要见笑哦）

View Code BASH1
2
3
4
5
6
7
8
9
10
11
12
13
14
@echo   off 
echo 自动关机程序，献给我亲爱的老婆！
echo 请输入需要关机的延迟时间。
echo 请先保存、关闭重要的程序，到时候会强制关机，不能后悔哦。
:again
echo 关机时间（秒）=
set /p SHUTDELAY=
echo 将在  [...]]]></description>
			<content:encoded><![CDATA[<p>前几天老婆想要一个自动关机的软件，这种小软件网上下载不是有广告就可能有病毒，或者觉得不好用。这么简单的软件，自己应该很容易写一个吧。首先用几分钟写出一个bat脚本。（脚本卖萌的地方，不要见笑哦）</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p1020code2'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p10202"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code" id="p1020code2"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">@</span><span style="color: #7a0874; font-weight: bold;">echo</span>   off 
<span style="color: #7a0874; font-weight: bold;">echo</span> 自动关机程序，献给我亲爱的老婆！
<span style="color: #7a0874; font-weight: bold;">echo</span> 请输入需要关机的延迟时间。
<span style="color: #7a0874; font-weight: bold;">echo</span> 请先保存、关闭重要的程序，到时候会强制关机，不能后悔哦。
:again
<span style="color: #7a0874; font-weight: bold;">echo</span> 关机时间（秒）=
<span style="color: #000000; font-weight: bold;">set</span> <span style="color: #000000; font-weight: bold;">/</span>p <span style="color: #007800;">SHUTDELAY</span>=
<span style="color: #7a0874; font-weight: bold;">echo</span> 将在 <span style="color: #000000; font-weight: bold;">%</span>SHUTDELAY<span style="color: #000000; font-weight: bold;">%</span>秒后关机，确认输入ok然后回车，取消请关闭本窗口。
<span style="color: #7a0874; font-weight: bold;">echo</span> 如果要重新输入关机时间，请按回车。
<span style="color: #000000; font-weight: bold;">set</span> <span style="color: #000000; font-weight: bold;">/</span>p <span style="color: #007800;">AGREE</span>=
<span style="color: #000000; font-weight: bold;">if</span> <span style="color: #ff0000;">&quot;%AGREE%&quot;</span>==<span style="color: #ff0000;">&quot;ok&quot;</span> shutdown <span style="color: #660033;">-f</span> <span style="color: #660033;">-s</span> <span style="color: #660033;">-t</span> <span style="color: #000000; font-weight: bold;">%</span>SHUTDELAY<span style="color: #000000; font-weight: bold;">%</span>  
<span style="color: #000000; font-weight: bold;">if</span> not <span style="color: #ff0000;">&quot;%AGREE%&quot;</span>==<span style="color: #ff0000;">&quot;ok&quot;</span> goto again
<span style="color: #7a0874; font-weight: bold;">echo</span> 老婆的命令已经生效了。请关闭本窗口。
pause<span style="color: #000000; font-weight: bold;">&gt;</span>nul</pre></td></tr></table></div>

<p>当然这样的脚本并不能充分显示老公的“手艺”，于是动手写一个窗体程序。本来可以用C++ MFC，但是想想也太没有挑战性了，顺便想体验一下高生产率的语言带来的好处（<a href="http://coolshell.cn/articles/6548.html" target="_blank">参考此文</a>），所以用C#写了一个小工具。大家可以到我的公开SVN上下载代码。代码基于GPL协议发布。</p>
<p>SVN地址： <a href="http://svn.zhu.im/just-for-fun/CsharpProjs/ShutdownMyPC/" target="_blank">http://svn.zhu.im/just-for-fun/CsharpProjs/ShutdownMyPC/</a></p>
<p>代码中依然有卖萌的地方，切勿拿来交作业什么的。:)</p>
<p>以下是运行界面：最小化后可以隐藏在系统托盘哦</p>
<p><a href="http://zhuwenhao.com/wp-content/uploads/2012/02/0ab98a874d62e780ff1bbf12bee64b12.jpeg"><img class="alignnone size-medium wp-image-1021" title="0ab98a874d62e780ff1bbf12bee64b12" src="http://zhuwenhao.com/wp-content/uploads/2012/02/0ab98a874d62e780ff1bbf12bee64b12-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>但是，这样一个东西在发布给用户（嗯，我老婆一个人）时，遇到了麻烦。原来她办公的电脑时很久很久没有更新的Windows XP，有没有.Net Framework不知道，但肯定没有.net framework 4. 于是想要制作一个安装程序，把framework集成到安装包里。结果，我没有找到任何可用的解决方法。如果按照微软标准做法，使用联机下载方式，那不联网的电脑怎么办？如果使用本地安装包，我本来数k字节的软件，瞬间变成数十M，size可是钱啊。不论时网络传输还是介质拷贝，文件一大什么方法都不优雅了。这简直就是悲剧。幸好，家里的Windows 7在我的悉心呵护下，长期保持自动更新，终于能用来给“客户”演示了。</p>
<p>另外一个感想就是，程序员真的需要坚持不懈的克服“程序员情结”。我写软件为了好玩，加入倒计时声音警告功能、加入了几种色彩警告，不仅没有得到“用户”好评，反而被批“弄那么麻烦干嘛”。是啊，KISS吧，你懂的。（不过我老婆会领会为另外一种意思，两者都很好）</p>
<p>附上exe程序，电脑中已经安装了.Net framework 4.0已经自己愿意且会安装的人可以下载来玩玩：</p>
<p><a href="http://zhuwenhao.com/wp-content/uploads/2012/02/ShutdownMyPC.exe">ShutdownMyPC</a></p>
<p>&nbsp;</p>
<p>下次我会用C++实现尽可能少依赖性的软件了。</p>
]]></content:encoded>
			<wfw:commentRss>http://zhuwenhao.com/1020/%e6%8a%80%e6%9c%af/%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1%e8%af%ad%e8%a8%80/csharp-%e8%af%ad%e8%a8%80/c%e5%86%99%e7%9a%84%e5%ae%9a%e6%97%b6%e5%85%b3%e6%9c%ba%e7%a8%8b%e5%ba%8f%e5%8f%8a%e4%b8%80%e4%ba%9b%e6%84%9f%e6%83%b3/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>转载：理查德·斯托曼一直是对的</title>
		<link>http://zhuwenhao.com/995/%e6%8a%80%e6%9c%af/%e8%87%aa%e7%94%b1%e8%bd%af%e4%bb%b6%e7%a4%be%e5%8c%ba/%e8%bd%ac%e8%bd%bd%ef%bc%9a%e7%90%86%e6%9f%a5%e5%be%b7%c2%b7%e6%96%af%e6%89%98%e6%9b%bc%e4%b8%80%e7%9b%b4%e6%98%af%e5%af%b9%e7%9a%84/</link>
		<comments>http://zhuwenhao.com/995/%e6%8a%80%e6%9c%af/%e8%87%aa%e7%94%b1%e8%bd%af%e4%bb%b6%e7%a4%be%e5%8c%ba/%e8%bd%ac%e8%bd%bd%ef%bc%9a%e7%90%86%e6%9f%a5%e5%be%b7%c2%b7%e6%96%af%e6%89%98%e6%9b%bc%e4%b8%80%e7%9b%b4%e6%98%af%e5%af%b9%e7%9a%84/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 01:28:18 +0000</pubDate>
		<dc:creator>朱文昊 Albert Zhu</dc:creator>
				<category><![CDATA[自由软件社区]]></category>

		<guid isPermaLink="false">http://zhuwenhao.com/?p=995</guid>
		<description><![CDATA[

作者： 阮一峰
日期：  [...]]]></description>
			<content:encoded><![CDATA[<div>
<div>
<p>作者： <a href="http://www.ruanyifeng.com">阮一峰</a></p>
<p>日期： <a href="http://www.ruanyifeng.com/blog/2012/01/"><abbr title="2012-01-19T20:29:14+08:00">2012年1月19日</abbr></a></p>
</div>
</div>
<div id="main-content">
<div>
<p>所有反对<a href="http://www.ruanyifeng.com/blog/2012/01/why_sopa_is_evil.html" target="_blank">SOPA</a>的文章之中，有一篇的题目是<a href="http://www.osnews.com/story/25469/Richard_Stallman_Was_Right_All_Along" target="_blank">《理查德·斯托曼一直是对的》</a>，我印象最深。</p>
</div>
<div id="more">
<p>它指出，最近几个月，美国的公民自由严重倒退。先是<a href="http://en.wikipedia.org/wiki/National_Defense_Authorization_Act_for_Fiscal_Year_2012" target="_blank">《国防授权法案》</a>（NDAA）允许政府可以不经任何程序，无限期拘捕具有恐怖活动嫌疑的人；接着是参与”占领华尔街”运动的民众被污蔑成”恐怖分子”；现在又是SOPA，它企图通过控制传播渠道，来抑制信息的流通。</p>
<p><img src="http://zhuwenhao.com/wp-content/uploads/2012/02/bg2012011901.jpg" alt="" /></p>
<p>这些对公民自由的侵犯，不禁让人联想到，30年前的1983年，有一个叫做<a href="http://www.ruanyifeng.com/blog/2005/03/post_112.html" target="_blank">理查德·斯托曼</a>的程序员，声称<strong>“软件的自由，关系到人类的自由”</strong>。这个观点当时被认为荒唐偏激，但是现在来看，他担心的事情正在变成现实，他其实是对的。</p>
<p><img src="http://zhuwenhao.com/wp-content/uploads/2012/02/bg2012011902.jpg" alt="" /></p>
<p>很多人不赞成理查德·斯托曼，一部分原因是觉得他过于极端，是一个狂热的偏执症患者。比如，他仅有的个人电脑是一台<a href="http://www.lemote.com/en/products/Notebook/2010/0310/112.html" target="_blank">龙芯上网本</a>， 因为这是世界唯一的全部使用自由软件（Bios、硬件驱动、操作系统、应用软件）的电脑；他拒绝使用手机，因为手机的硬件和软件太封闭，使用某个品牌的手 机，几乎等同于接受某家公司的控制；甚至他的头发、他的胡子、他的服装，都让人们觉得这是一个怪人，大可不必理会他的观点。</p>
<p><img src="http://zhuwenhao.com/wp-content/uploads/2012/02/bg2012011903.jpg" alt="" /></p>
<p>他创立的<a href="http://www.fsf.org/" target="_blank">自由软件基金会</a>的主页上这样<a href="http://www.fsf.org/about/" target="_blank">写道</a>：</p>
<blockquote><p>“我们的社会正越来越依赖计算机，我们使用的软件对保证未来社会的自由至关重要。<strong>自由软件使我们能够控制我们使用的技术，让技术造福个人和社会，而不是让技术被商业公司或政府控制，用来限制或监视我们。</strong>”</p>
<p>(As our society grows more dependent on computers, the software we run is of critical importance to securing the future of a free society. Free software is about having control over the technology we use in our homes, schools and businesses, where computers work for our individual and communal benefit, not for proprietary software companies or governments who might seek to restrict and monitor us.)</p></blockquote>
<p>很长时间内，我也认为理查德·斯托曼太极端，对他说的”软件=自由”根本没有感觉，只是觉得自由软件可以免费使用，这点很不错。我从没想过，软件与 大公司的垄断、政府的独裁有什么关系，言论自由、公民权力，这些问题怎么会涉及到编程呢？任何时候，只要自由软件能让我不花钱就用上新功能，我就心满意足 了。</p>
<p>但是近几年来，随着《爱国者法案》、国家防火墙、实名制、SOPA这样的事情越来越多，我逐渐意识到，我是错的，理查德·斯托曼是对的。<strong>如今，政府控制人民不再需要警察和军队了，他们只需要控制软件和硬件就行了。</strong></p>
<p>电脑和网络技术，在现代社会中占据了至关重要的位置。控制了它们，就可以监视人们的一举一动、一言一行，等同于控制言论、思想、真理和权力。你或许 会说，面对面的交谈，就可以免受控制。错！想一想我们怎么安排见面？再想一想，我们身上的每一台设备都与网络相连，这意味着什么？</p>
<p>假设一个邪恶的政府与大资本家联手，企图剥夺人民的自由。只要自由软件存在，他们就不可能完全成功，因为代码和技术细节都是开放的，他们无法掩人耳 目，自由软件将是人民反抗的武器。反过来，如果没有自由软件，代码、协议、操作系统、硬件驱动、文件格式都是保密的，请问你怎么反抗呢？你拿什么反抗呢？ 根本不需要SOPA，你的自由早就在他人的控制之下了。</p>
<p>这就是斯托曼一直重复的警告，可惜大多数人都忽视了他的话，只从经济角度看待代码。直到有一天，代码与我们的自由紧密相关的时候，我们才开始醒悟。<strong>自由软件是抵抗邪恶政府、捍卫自由的武器。</strong>源码包含着力量，我们必须保证，它控制在自由的人们手里。</p>
<p>最终来说，自由软件与商业无关，它只关系到人类的自由。GPL许可证从来不反对用软件挣钱，它只反对你通过限制他人的自由来挣钱。在理查德·斯托曼看来，专有软件剥夺用户的自由，最终将导致灾难性的后果，高度依赖计算机的社会尤其如此。</p>
<p>如果你想推广你的代码，让更多的人使用，那么<a href="http://www.ruanyifeng.com/blog/2011/05/how_to_choose_free_software_licenses.html" target="_blank">BSD许可证</a>效果更好。但是，如果你想保证自由从此再不会消失、而是像雪球那样越滚越大，那么GPL许可证是最好的选择。</p>
<p>理查德·斯托曼在30年前，就意识到这一点。他忍受各种艰难困苦，绝不妥协，到处鼓吹自由软件的合理性和必要性。今天我们已经看清楚了，30年了，他一直是对的！</p>
<p>必须让大家明白，软件代码不仅仅是商业产品，更重要的，它是人类自由的一部分。如果我们要保卫自由，就必须支持自由软件。你可以使用闭源软件，但是你应该支持自由软件，因为没有它，就没有我们的自由，不仅未来如此，而且现在已经如此了。</p>
<p>（完）<span id="more-995"></span></p>
</div>
</div>
<div>
<h3>（原）文档信息</h3>
<ul>
<li>版权声明：自由转载-非商用-非衍生-保持署名 | <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh">Creative Commons BY-NC-ND 3.0</a></li>
<li>原文网址：<a href="http://www.ruanyifeng.com/blog/2012/01/richard_stallman_was_right_all_along.html">http://www.ruanyifeng.com/blog/2012/01/richard_stallman_was_right_all_along.html</a></li>
<li>最后修改时间：2012年2月 5日 21:32</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://zhuwenhao.com/995/%e6%8a%80%e6%9c%af/%e8%87%aa%e7%94%b1%e8%bd%af%e4%bb%b6%e7%a4%be%e5%8c%ba/%e8%bd%ac%e8%bd%bd%ef%bc%9a%e7%90%86%e6%9f%a5%e5%be%b7%c2%b7%e6%96%af%e6%89%98%e6%9b%bc%e4%b8%80%e7%9b%b4%e6%98%af%e5%af%b9%e7%9a%84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>写在农历新年的话</title>
		<link>http://zhuwenhao.com/991/%e9%9a%8f%e7%ac%94/%e5%86%99%e5%9c%a8%e5%86%9c%e5%8e%86%e6%96%b0%e5%b9%b4%e7%9a%84%e8%af%9d/</link>
		<comments>http://zhuwenhao.com/991/%e9%9a%8f%e7%ac%94/%e5%86%99%e5%9c%a8%e5%86%9c%e5%8e%86%e6%96%b0%e5%b9%b4%e7%9a%84%e8%af%9d/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 13:47:56 +0000</pubDate>
		<dc:creator>朱文昊 Albert Zhu</dc:creator>
				<category><![CDATA[随笔]]></category>

		<guid isPermaLink="false">http://zhuwenhao.com/?p=991</guid>
		<description><![CDATA[很长时间以来，工作一直都很忙，除了转发一些IEEE的月报，以及更新一些源代码之外，几乎没有写过多少日志。在除夕夜，放大假的日子里，终于有时间回想和展望。最让我开心的是，我妈妈和爸爸在新的地方继续发光发热，祝你们身体健康，心情愉快。
2011年，公司发生了很大的、好的转变，我也承担了更大的责任。在2012，在技术和管理方面，将会有更多的挑战等待我去迎接。
]]></description>
			<content:encoded><![CDATA[<p>很长时间以来，工作一直都很忙，除了转发一些IEEE的月报，以及更新一些源代码之外，几乎没有写过多少日志。在除夕夜，放大假的日子里，终于有时间回想和展望。最让我开心的是，我妈妈和爸爸在新的地方继续发光发热，祝你们身体健康，心情愉快。</p>
<p>2011年，公司发生了很大的、好的转变，我也承担了更大的责任。在2012，在技术和管理方面，将会有更多的挑战等待我去迎接。</p>
]]></content:encoded>
			<wfw:commentRss>http://zhuwenhao.com/991/%e9%9a%8f%e7%ac%94/%e5%86%99%e5%9c%a8%e5%86%9c%e5%8e%86%e6%96%b0%e5%b9%b4%e7%9a%84%e8%af%9d/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>IEEE中文快报  2012年1月</title>
		<link>http://zhuwenhao.com/988/%e5%bf%97%e6%84%bf%e5%b7%a5%e4%bd%9c/ieee/eee%e4%b8%ad%e6%96%87%e5%bf%ab%e6%8a%a5-2012%e5%b9%b41%e6%9c%88/</link>
		<comments>http://zhuwenhao.com/988/%e5%bf%97%e6%84%bf%e5%b7%a5%e4%bd%9c/ieee/eee%e4%b8%ad%e6%96%87%e5%bf%ab%e6%8a%a5-2012%e5%b9%b41%e6%9c%88/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 03:45:24 +0000</pubDate>
		<dc:creator>朱文昊 Albert Zhu</dc:creator>
				<category><![CDATA[IEEE]]></category>

		<guid isPermaLink="false">http://zhuwenhao.com/?p=988</guid>
		<description><![CDATA[本期热点内容包括：
1）  IEEE 新年祝福
2）  IEEE国内外要点新闻
3）  IEEE在线讲座精选
4）  2012年科技大预测
5）  IEEE Support  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://zhuwenhao.com/wp-content/uploads/2012/01/ieee-logo.jpg"><img class="size-full wp-image-1011 alignright" title="ieee-logo" src="http://zhuwenhao.com/wp-content/uploads/2012/01/ieee-logo.jpg" alt="" width="90" height="90" /></a>本期热点内容包括：</p>
<p>1）  IEEE 新年祝福</p>
<p>2）  IEEE国内外要点新闻</p>
<p>3）  IEEE在线讲座精选</p>
<p>4）  2012年科技大预测</p>
<p>5）  IEEE Support Center介绍</p>
<p>&nbsp;</p>
<p>IEEE新年祝福</p>
<p>截止到2011年12月31日，IEEE中国区会员（不包括香港，澳门和台湾）达到9,273人。其中，荣誉会员1人，终身会士7人，会士53人，终身高级会员18人，高级会员673人，终身会员2人，会员5346人，准会员509人，研究生会员1948人，本科生会员716人。</p>
<p>谨代表IEEE中国代表处向全体会员和志愿者表示最真挚的新春祝福和衷心感谢！</p>
<p>&nbsp;</p>
<p>IEEE要点新闻</p>
<p>2011年12月06日在美国休斯敦举行的IEEE全球通信会议(IEEE Globecom’11)上，浙江大学陈积明教授获得IEEE通信学会亚太区杰出青年研究学者奖。此奖于2001年成立，授予过去3年中在通信领域的论文发表/会议方面活跃的35岁以下的杰出年轻研究人员。</p>
<p>2011年12月8日，John L. Hennessy，现任斯坦福校长，被评为2012 IEEE Medal of Honor获奖人。他率先推出的RISC（精简指令集计算机）处理器架构，以及在计算机工程和高等教育中表现出卓越的领导力，使他获得该殊荣。IEEE Medal of Honor由IEEE基金会赞助，2012年IEEE颁奖典礼将在2012年6月30日在美国波士顿举行。</p>
<p>2011年12月21日，“中国<a href="http://tech.hexun.com/telecom/index.html">通信</a>标准化协会第十次会员大会”在北京召开。工业和信息化部、国家标准化管理委员会相关司局，相关协会\学会领导，ETSI、IEEE、协会会员/观察员代表，各技术委员会主席/组长，协会专家咨询委员会委员、技术管理委员会委员和专家等300多人参加了大会。IEEE中国代表处首席代表华宁介绍了“IEEE组织及其标准发展动态”。</p>
<p>2011年12月13日至18日，应北京交通大学校邀请，受美国工程与技术鉴定委员会（ABET）下属的IEEE工程协会委派，Rod Harker先生莅临北京交大校指导电信学院“通信工程”和“自动化”专业申请国际IEEE专业认证评估工作。</p>
<p>IEEE生物识别理事会(IEEE Biometrics Council)选举结果日前揭晓，中国科学院副秘书长、中科院自动化所研究员谭铁牛当选候任主席。按照规定，2013年他将正式担任该理事会主席。</p>
<p>2011年12月21日下午，IEEE电子科大学生分会组织同学们参观了爱立信公司成都分部。</p>
<p>2012年1月9日，IEEE标准协会宣布将全球产业领导聚集在一起形成电力事业联盟（Power Matters Alliance）计划。 PMA将致力于重塑消费者日常在无线，无害环境和智能的环境下和电力交互。</p>
<p>2012年1月10日，IEEE标准协会宣布，IEEE P1901.2™ 标准对于低频（小于500千赫）窄带电力线通信（智能电网应用的PLC）工作组已进入了最后的审批程序。支持室内和室外的低压电力线通讯标准草案邮件投票阶段于2011年12月20开始，2012年1月25日结束。</p>
<p>2012年1月10日-13日，2012国际消费电子展在美国拉斯维加斯举行，来自世界各地的IEEE会员在会上对行业发展趋势进行了预测，包括IEEE高级会员Dr. Coughlin，他讨论了自然灾害如何影响消费电子市场，Dr. Gershon讨论了未来社交网络媒体的应用等。在此次展览上，IEEE，IEEE Spectrum，IEEE标准协会，IEEE 通信学会，IEEE消费电子学会等都设置了展台。</p>
<p>IEEE目前正在制定新的P1905.1标准，该标准为统一构成家庭网络的多种互连技术提供了底层机制。这一标准的制定使得EoC超越接入网技术，成为家庭网络的重要组成部分，无缝连接家庭内部各个数字设备，真正完成数字家庭的构建，实现所谓的<a href="http://www.iot-online.com/tags.php?/%E4%B8%89%E7%BD%91%E8%9E">三网融合</a>。</p>
<p>更多新闻请登录<a href="http://cn.ieee.org/">http://cn.ieee.org</a></p>
<p>&nbsp;</p>
<p>IEEE在线讲座精选</p>
<p><a href="http://spectrum.ieee.org/webinar/">IEEE Spectrum系列讲座</a></p>
<p><a href="http://www.ieee.org/membership_services/membership/gold/index.html">IEEE GOLD系列讲座</a></p>
<p><a href="http://www.comsoc.org/free-tutorials"><strong>Consumer Networking Standardization</strong></a></p>
<p>最新IEEE.TV精彩内容（<a href="http://www.ieee.tv/home">http://www.ieee.tv/home</a>）</p>
<p>&nbsp;</p>
<p>2012 科技大预测</p>
<p><strong>2012</strong>年第一期的<strong>IEEE Spectrum</strong>预测了<strong>2012</strong>年<strong>14</strong>大领先科技（<strong>Top Tech for 2012)</strong>：</p>
<p>“我们可以天马行空地预测下个世纪的科技，也可以对未来十年的科技进行热情地展望，但是，如果仅仅是展望未来12个月的科技动态，则最好是脚踏实地、以现实为基础做出预测。这正是我们本年度进行的技术调查的内容：在选定的学科中，我们主要考虑了这些科学技术明年出现在科技头条的可能性，我们认为也希望它们可以获得成功。 一个典型的例子就是极紫外光刻技术： 超过15年的改进已经让它成为了支持摩尔定律的最佳方式。今年，它也有可能走到成败的关键点。我们无法告诉您这些技术成败与否，但是在任何情况下，这一结果在硅谷乃至更大的区域都是头条新闻。”</p>
<p>——Philip E.Ross Samuel K. Moore</p>
<p>1.         体外骨骼设备（Exoskeletons for Paraplegics）：面向下肢截瘫患者的体外骨骼技术将推向市场）</p>
<p>2.         视网膜假体（Retinal Prostheses），眼睛中植入的电极将会为失明患者带来光明</p>
<p>3.         私人航天飞船（Private Spacecraft），商业宇宙旅行将会频繁成行</p>
<p>4.         3-D集成电路（3-D Integrated Circuits）， 3D芯片制造技术将会继续研究，为延续莫尔定律加力</p>
<p>5.         外星球探索（Another Earth），一个新的地外行星寻找计划启动</p>
<p>6.         电动汽车充电站（EV Charging Station），启动测试电动汽车充电站的可行性</p>
<p>7.         可插电繁殖（Plug-Ins Proliferating），全电动或混合电动汽车将会在今年稍后时间驶上街头</p>
<p>8.         电池存储电网（Grid-Scale Batteries），2012将会诞生大规模的电池存储接入电网设施)</p>
<p>9.         中国超级计算机（China&#8217;s Supercomputers），国产芯片将会装备曙光6000</p>
<p>10.     Windows 8（Windows 8），微软Win8的发布将会检验微软是否能引领桌面计算的潮流</p>
<p>11.     极紫外光刻（Extreme Ultraviolet Lithography) ，远紫外线金属板印刷将会取得重大突破</p>
<p>12.     3-D立体印刷（3-D Printing），3D实体打印技术将会从原型走向市场</p>
<p>13.     LED节能技术（LEDs fro Less），LED灯将会更便宜</p>
<p>14.     神奇的4G（Fantastic 4G）， 4G-LTE市场将会大规模部署</p>
<p>&nbsp;</p>
<p><strong>2012</strong>年<strong>1</strong>月在<strong>2012</strong>国际消费电子展上，<strong>IEEE</strong>专家预测<strong>12</strong>项消费电子产品发展趋势：</p>
<p>1.         无所不在的连接，实时的基于云的数据共享可以无缝访问我们的住宅和汽车。</p>
<p>2.         网络视频的巅峰，基于网络的视频流媒体电视2012年美国将达到一个临界点。</p>
<p>3.         家庭的病患监控技术，先进的健康监测技术最终会在家庭和不只是诊所和医院使用。</p>
<p>4.         家庭网络技术的融合，将看到一个新品种能够尽快打开找到所有可用的网络连接</p>
<p>5.         长期存储技术，陶瓷蚀刻数据将有可能使存储的信息到达1000年。</p>
<p>6.         IT技术对企业的技术决策的影响将继续发展，例如人们将开始使用平板电脑和智能手机告知同事他们的工作（如在办公室或异地）。</p>
<p>7.         消费类电子产品服务，电子产品制造商将更加广泛提供服务，应用和通过远程服务器联机（即云）提供给消费者的内容。</p>
<p>8.         智能手机黑客增加，移动安全将是一个快速增长的问题。</p>
<p>9.         自然灾害引发全球消费电子产品的价格，泰国的大洪水的自然灾害的影响将更加清楚地在2012年体现。</p>
<p>10.     私人公司，而不是军队，将推动重大技术创新。</p>
<p>11.     更多的汽车将运用先进的传感器，使车辆检测并警告司机立即停止危险车辆的方式，它可以显著减少车辆事故的可能性。</p>
<p>12.     自动元数据生成，使个人内容更为有用和可用。</p>
<p>&nbsp;</p>
<p>IEEE Support Center介绍</p>
<p>IEEE支持中心是IEEE客户服务界面，解答IEEE的产品和服务相关问题。 IEEE支持中心提供的信息包括但不限于以下内容：</p>
<p>Ÿ   IEEE和协会的会员资格和福利</p>
<p>Ÿ   Xplore订阅和访问</p>
<p>Ÿ   在线产品</p>
<p>Ÿ   报价及订单</p>
<p>Ÿ   IEEE标准</p>
<p>访问IEEE支持中心，您将可以：</p>
<p>Ÿ   浏览常见问题的解答和我们的知识库</p>
<p>Ÿ   通过关键字搜索IEEE的产品和服务信息</p>
<p>Ÿ   提交您的问题</p>
<p>Ÿ   与我们的客服代表进行在线聊天</p>
<p>欢迎访问<a href="https://supportcenter.ieee.org/">https://supportcenter.ieee.org/</a>，使用以上功能。</p>
<p>如有关于会员用户名密码，订阅刊物订单，会员级别变更等问题，强烈推荐会员使用Live Chat功能，在线和IEEE客户人员说明问题，可获得第一时间解决。</p>
]]></content:encoded>
			<wfw:commentRss>http://zhuwenhao.com/988/%e5%bf%97%e6%84%bf%e5%b7%a5%e4%bd%9c/ieee/eee%e4%b8%ad%e6%96%87%e5%bf%ab%e6%8a%a5-2012%e5%b9%b41%e6%9c%88/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IEEE中文快报 2011年12月</title>
		<link>http://zhuwenhao.com/984/%e5%bf%97%e6%84%bf%e5%b7%a5%e4%bd%9c/ieee/ieee%e4%b8%ad%e6%96%87%e5%bf%ab%e6%8a%a5-2011%e5%b9%b412%e6%9c%88/</link>
		<comments>http://zhuwenhao.com/984/%e5%bf%97%e6%84%bf%e5%b7%a5%e4%bd%9c/ieee/ieee%e4%b8%ad%e6%96%87%e5%bf%ab%e6%8a%a5-2011%e5%b9%b412%e6%9c%88/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 07:54:33 +0000</pubDate>
		<dc:creator>朱文昊 Albert Zhu</dc:creator>
				<category><![CDATA[IEEE]]></category>

		<guid isPermaLink="false">http://zhuwenhao.com/?p=984</guid>
		<description><![CDATA[本期热点内容包括：
1）  IEEE 最近优惠信息
2）  IEEE国内外要点新闻
3）  IEEE在线讲座精选
4）  IEEE 会员风采
5）  myIEEE介绍
&#160;
IEEE 最近优惠信息
&#160;
现在IEEE会员可以免费试用一个月IEEE MDL（会员图书馆）
IEEE MDL是IEEE会员独享的产品，每月35美元25篇（或15美元3篇）下载IEEE  [...]]]></description>
			<content:encoded><![CDATA[<p>本期热点内容包括：<a href="http://zhuwenhao.com/wp-content/uploads/2012/01/ieee-logo.jpg"><img class="size-full wp-image-1011 alignright" title="ieee-logo" src="http://zhuwenhao.com/wp-content/uploads/2012/01/ieee-logo.jpg" alt="" width="90" height="90" /></a></p>
<p>1）  IEEE 最近优惠信息</p>
<p>2）  IEEE国内外要点新闻</p>
<p>3）  IEEE在线讲座精选</p>
<p>4）  IEEE 会员风采</p>
<p>5）  myIEEE介绍</p>
<p>&nbsp;</p>
<p>IEEE 最近优惠信息</p>
<p>&nbsp;</p>
<p>现在IEEE会员可以免费试用一个月IEEE MDL（会员图书馆）</p>
<p>IEEE MDL是IEEE会员独享的产品，每月35美元25篇（或15美元3篇）下载IEEE Xplore中任何期刊或会议录文章。现在IEEE向会员提供一个月的免费试用期（25篇文章），点击</p>
<p><a href="http://www.ieee.org/publications_standards/publications/subscriptions/prod/mdl/mdl_freetrial.html?WT.mc_id=iom_prod_mdl">http://www.ieee.org/publications_standards/publications/subscriptions/prod/mdl/mdl_freetrial.html?WT.mc_id=iom_prod_mdl</a> 网页最下面Start your trial，输入会员用户名和密码，购物车中自动出现30天MDL试用，点击checkout即可完成。</p>
<p>&nbsp;</p>
<p>IEEE要点新闻</p>
<p>11月4-7日，中国通信标准化协会邬贺铨理事长、杨泽民秘书长一行访问了位于新泽西IEEE总部，与IEEE秘书长兼COO James Prendergast博士、IEEE-SA主席Steven M. Mills先生、IEEE-SA秘书长Judith Gorman女士及IEEE相关部门负责人进行了热烈友好的交流。在此次会见期间，CCSA秘书长杨泽民与IEEE-SA秘书长Judith Gorman女士共同签署了合作谅解备忘录。双方还就近期下一步的合作进行了部署：一是确定了CCSA TC6与IEEE 802.3（EPON）之间互发联络函的沟通机制，并指定了双方的联系人。二是计划在2012年6月份联合在北京举办M2M研讨会。</p>
<p>11月21日，IEEE北京交通大学学生分会成功举办了“大师面对面”活动，邀请IEEE Fellow毕奇作了“下一代无线通信机遇与挑战”的主题讲座。毕奇讲述了无线通信的发展历史以及下一代无线通信所面临的技术挑战，并结合自身经历鼓励交大学生技术创新。报告在同学们意犹未尽的热烈掌声中圆满结束。</p>
<p>2012 IEEE Fellow增选结果揭晓，中国国内共有9名教授（冯正和，洪伟，毛军发，李学龙，牛志升，温江涛，吴建平，尤肖虎，张文军）入选，于2012年1月1日生效。 IEEE Fellow是IEEE最高等级的成员，是技术界公认的殊荣，也是重要的事业成就。</p>
<p>IEEEXtreme 5.0极限编程竞赛成绩已经公布，本次大赛共有来自世界各地的1515支队参加，其中来自中国高校的共有35支队伍。清华大学&amp;上海交大的fanwudi队伍获得了全球第8名，进入全球前100名中还有来自大连理工，清华大学和电子科大的参赛队伍。</p>
<p>11月22-23日，在北京举行的中国智慧能源高峰会议以及IEEE1888子标准工作组会议上，由中国创新的IEEE1888节能标准，获得智慧能源产业的广泛瞩目并获得全球重要厂商的支持。</p>
<p>11月30日IEEE宣布，在FierceEnergy杂志公布的全球“15个最具影响力的能源专家”清单中，有4名IEEE智能电网专家，他们是 IEEE终身会员Dick DeBlasio，IEEE Fellows Erich Gunther 和John McDonald以及IEEE计算机协会会员 Andres Carvallo。</p>
<p>12月5日，IEEE标准协会宣布IEEE802.22™工作组获得IEEE标准协会“2011年新兴技术奖”。IEEE802.22-2011是第一个电视（TV）白带宽（联合国定义为可用或未被占用的电视频道）IEEE802®标准，它也是第一个重点在利用农村大部分空置的电视频道实现宽带连接，从而有助于弥合“数字鸿沟”。</p>
<p>12月5日，IEEE标准协会宣布，成立一个研究小组，研究在同轴网络上的EPON新的PHY（物理层）标准。新成立的IEEE 802.3标准™EPON同轴电缆协议（EPOC）的研究小组将探讨使用IEEE 802.3以太网规范，显着提升和扩大现有的接入网络，为世界各地的亿万住宅和商业用户提供以太网的能力。</p>
<p>12月7日，IEEE标准协会宣布已批准了IEEE 1903™-2011 “下一代服务重叠网络的功能架构（NGSON）”标准。IEEE 1903 NGSON标准，提供了一基于IP协议的的服务重叠网络的具体框架，解决了在宽带和移动网络交互服务中更高效提供应用的创建，交付和管理。IEEE1903工作组成员包括中国移动，工信部研究所，华为，KDDI，KT和Telcordia等。</p>
<p>12月9日下午，IEEE华中科技大学学生分会与烽火科技集团联系并组织 “IEEE HUST学生分会烽火之旅”活动，活动吸引了华中科技大学各个院系包括本科生、硕士生和博士生在内共计33名同学参加。 学生们先是参观了烽火科技的展厅和生产车间，然后烽火介绍了公司在光纤领域的业务以及发展状况，战略，人才招聘等，最后IEEE华中科技大学学生分会介绍了IEEE学生分会的发展情况，烽火之旅圆满结束。</p>
<p>更多新闻请登录<a href="http://cn.ieee.org/">http://cn.ieee.org</a></p>
<p>&nbsp;</p>
<p>IEEE在线讲座精选</p>
<p><a href="http://spectrum.ieee.org/webinar/">IEEE Spectrum系列讲座</a></p>
<p><a href="http://www.ieee.org/membership_services/membership/gold/index.html">IEEE GOLD系列讲座</a></p>
<p><a href="http://www.comsoc.org/form/tutorial-registration-consumer-networking-standardizations"><strong>Consumer Networking Standardization</strong></a></p>
<p>最新IEEE.TV精彩内容（<a href="http://www.ieee.tv/home">http://www.ieee.tv/home</a>）</p>
<p>&nbsp;</p>
<p>IEEE 会员风采</p>
<p>梅生伟，清华大学电机系电力系统研究所副所长、教授、博士生导师，IET Fellow，IEEE高级会员。主要从事电力系统鲁棒控制、复杂性网络、新能源发电等方面的研究。下面是他对于中国乃至全球绿色创新与低碳发展的热点问题的一些看法。</p>
<p>问：请评价一下中国目前绿色创新，低碳发展的现状。中国是否已经形成了“绿色产业”？</p>
<p>答：目前的绿色创新主要由科研院所和高校完成，而创新资金也在很大程度上依赖于政府。中国仍未形成“绿色产业”，主要有以下几个方面的原因：第一，资金缺乏的制约。第二，风险投资机制不够完善。第三，绿色创新的技术基础较为薄弱。</p>
<p>问：中国在绿色、低碳方面有哪些行业做得比较好？</p>
<p>近年来，中国在能源、建筑、家电等行业大力推进节能减排技术，在绿色、低碳发展方面取得了较大的成效。中国在能源行业的绿色、低碳发展成效可以通过风电、大阳能和智能电网三个方面体现。中国社会建筑节能意识不断加强。中国家用电器产业十分注重节能环保的电器产品的研发和销售。</p>
<p>问：从全球来看，有哪些绿色创新，低碳发展的新趋势（包括技术、应用方面的）？</p>
<p>答：跨行业，跨国界，浅绿向深绿转变的发展趋势。</p>
<p>问：请展望一下未来5年中国以及国际的绿色创新，低碳发展的前景</p>
<p>答：在中国“十二五”规划中，绿色创新、低碳发展是未来五年发展中一个非常重要的命题。中国的绿色创新虽然起步较晚，但目前正处在转变发展方式和调整产业结构的关键时期，绿色创新有着广阔的发展前景。美国政府提出通过绿色创新掌握应对全球气候变化和环境污染问题的领导权。欧盟宣布保持欧盟在绿色创新领域的世界领先地位。日本则强化绿色创新与低碳发展，绿色创新、低碳发展已在世界各国中形成了高度共识。</p>
<p>更多内容请登录</p>
<p><a href="http://www.ieee.org/about/news/ieee_in_the_news.html?WT.mc_id=whm_news_1">http://www.ieee.org/about/news/ieee_in_the_news.html?WT.mc_id=whm_news_1</a></p>
<p>&nbsp;</p>
<p>myIEEE介绍</p>
<p>myIEEE是一个为IEEE会员提供的个性化门户网站。登录myIEEE可以：</p>
<p>Ÿ   查看会员信息；</p>
<p>Ÿ   了解IEEE当地组织和志愿者的领导信息；</p>
<p>Ÿ   寻找即将召开的会议；</p>
<p>Ÿ   会员优惠信息；</p>
<p>Ÿ   阅读来自IEEE Spectrum, IEEE Standards News, and The Institute的最新消息。</p>
<p>进入myIEEE，首先看到会员问候区(Hello)，显示姓名，会员等级，会员号，并可以打印会员证书，My account显示或修改个人信息。My desktop个人定制模块。Knowledge desk包括会员订阅信息，IEEEXplore下载次数最多的文章等。Community desk提供访问本地及全球的交流机会，包括IEEE会员信息，最新的IEEE会议列表等。Profession desk直接搜索IEEE的招聘网站和IEEE &#8211; USA顾问数据库，以及IEEE奖项及奖学金的机会及时公告。Volunteer提供志愿者资源，申请成为志愿者等。</p>
<p>欢迎登录<a href="http://www.ieee.org/membership_services/membership/my_ieee.html">http://www.ieee.org/membership_services/membership/my_ieee.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://zhuwenhao.com/984/%e5%bf%97%e6%84%bf%e5%b7%a5%e4%bd%9c/ieee/ieee%e4%b8%ad%e6%96%87%e5%bf%ab%e6%8a%a5-2011%e5%b9%b412%e6%9c%88/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IEEE 中文快报 2011 年 11 月</title>
		<link>http://zhuwenhao.com/981/%e5%bf%97%e6%84%bf%e5%b7%a5%e4%bd%9c/ieee/ieee-%e4%b8%ad%e6%96%87%e5%bf%ab%e6%8a%a5-2011-%e5%b9%b4-11-%e6%9c%88/</link>
		<comments>http://zhuwenhao.com/981/%e5%bf%97%e6%84%bf%e5%b7%a5%e4%bd%9c/ieee/ieee-%e4%b8%ad%e6%96%87%e5%bf%ab%e6%8a%a5-2011-%e5%b9%b4-11-%e6%9c%88/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 07:14:31 +0000</pubDate>
		<dc:creator>朱文昊 Albert Zhu</dc:creator>
				<category><![CDATA[IEEE]]></category>

		<guid isPermaLink="false">http://zhuwenhao.com/?p=981</guid>
		<description><![CDATA[IEEE 中文快报
2011 年 11 月
本期热点内容包括：
1）   IEEE 最近优惠信息
2）   IEEE 国内外要点新闻
3）   IEEE 在线讲座精选
4）   IEEE 会员风采
5）   IEEE E-Scientia 项目
IEEE 最近优惠信息
Myieee 新增打印会员证书功能 ，请在 www.ieee.org 主页上登录 myieee ，然后在最上面 hello 中找到 Member Certificate(PDF) ，可下载并打印会员证书。
现在加入 IEEE 将免费获得 IEEE 通信协会会员资格，会员福利即可开始！
IEEE 通信协会会员权益：
Ÿ     [...]]]></description>
			<content:encoded><![CDATA[<p>IEEE 中文快报<br />
2011 年 11 月<br />
本期热点内容包括：<br />
1）   IEEE 最近优惠信息<br />
2）   IEEE 国内外要点新闻<br />
3）   IEEE 在线讲座精选<br />
4）   IEEE 会员风采<br />
5）   IEEE E-Scientia 项目</p>
<p>IEEE 最近优惠信息</p>
<p>Myieee 新增打印会员证书功能 ，请在 www.ieee.org 主页上登录 myieee ，然后在最上面 hello 中找到 Member Certificate(PDF) ，可下载并打印会员证书。</p>
<p>现在加入 IEEE 将免费获得 IEEE 通信协会会员资格，会员福利即可开始！<br />
IEEE 通信协会会员权益：<br />
Ÿ    获得 IEEE Communications Magazine （包括所有过刊）和每月新闻；<br />
Ÿ    获得最新行业资源和技术文件；<br />
Ÿ    与世界各地的通信专家的交流机会。<br />
现在就从 http://www.comsoc.org/newjoinspecial_china 网站入口开始 IEEE 之旅吧。</p>
<p>IEEE 会员加入 IEEE 标准协会（ IEEE-SA ），个人会员可享受特殊折扣， 26.00 美元（原价 49.00 美元）。 IEEE &#8211; SA 是全球标准的领先开发商，标准涉及广泛的技术和产业，包括电力和能源，计算机技术（设计，自动化和云计算），通讯（无线网络），交通运输，以及智能电网，绿色科技，网络安全，等等。<br />
IEEE &#8211; SA 个人会员的权益：<br />
Ÿ    无限制的参与个人项目和投票<br />
Ÿ    发起新的标准<br />
Ÿ    担任工作组领导职务<br />
Ÿ    参与在 IEEE &#8211; SA 的董事会选举<br />
Ÿ    每月 IEEE &#8211; SA 的新闻简报<br />
Ÿ    购买 IEEE 标准享受折扣<br />
用帐号登录如下地址即可享受折扣：</p>
<p>https://sbwsweb.ieee.org/ecustomercme_enu/start.swe?SWECmd=GotoView&#038;SWEView=CUT+Home+Page+View+(eCustomer)&#038;src=0&#038;mem_type=Customer&#038;Join=n&#038;Prod=1-U3KFU3</p>
<p>IEEE 要点新闻<br />
2011 年 9 月 IEEE 推出了第一期“标准教育电子杂志“，该杂志提供和标准相关的学习，教学，使用，部署，制定和发展标准等内容，面向学生，教育工作者，从业者，标准制定者和标准用户，这是 IEEE 标准协会为建设造福人类社会的标准教育的重要举措。 IEEE 标准教育电子杂志是免费提供的。请在线查看创刊号 http://ieee-elearning.org/outreach/course/view.php?id=80<br />
10 月 14 日晚， IEEE 清华学生分会在独峰咖啡屋举行了一场别开生面的大师讲座，邀请到了 IEEE fellow 黄铠教授介绍云计算的生态环境，分享生活经历和故事。本次活动也是 清华大学第九期的“走进 Fellow ”活动，成为让更多同学了解 IEEE 的一次有益尝试。<br />
10 月 22 日 -23 日， IEEEXtreme 5.0 极限编程竞赛在全球拉开战幕。本次大赛 共有来自世界各地的 1515 支队参加，其中来自中国高校的共有 35 支队伍。清华大学 &#038; 上海交大的 fanwudi 队伍获得了全球第 8 名，进入全球 前 100 名中还有来自大连理工，清华大学和电子科大的参赛队伍。<br />
10 月 28 日上午， IEEE Fellow 和 Military Sensing Symposia （ MMS ） Fellow ，来自美国的 MARK E. DAVIS 博士在电子科技大学做“叶簇穿透雷达技术”的学术讲座。此次讲座由 AESS （ IEEE 航天电子系统协会）赞助，由电子科技大学 IEEE 学生分会筹办。<br />
2011 年 10 月，美国东西方研究所（ Eastwest Insititute ）将 Cybersecurity Award 颁发给了 IEEE ，从而奖励 IEEE 在 2009 年发布 “ROGUCCI” （ http://www.ieee-rogucci.org ）突破性的分析报告。该报告对承载横贯大陆的互联网流量的 99 ％的国际海底通信电缆进行了分析，并提出 12 个可行的解决方案。 10 月 13 日， IEEE 通信协会代表 IEEE 参加了在阿拉伯联合酋长国大使馆宴会厅举行的颁奖晚宴。<br />
2011 年 11 月 1 日， IEEE 合格评定程序（ ICAP ）和 Iometrix 宣布推出 IEEE 1588 &#8211; 2008 认证计划的试点阶段。将邀请领先的 IEEE 1588-2008 的解决方案供应商，包括设备和零部件制造商参加。有意获得参与 IEEE 1588-2008 联盟认证计划，请访问 ICAP 网站 http://www.ieee-isto.org/icap-program 或联系 IEEE 中国代表处。<br />
10 月 18 日， IEEE 宣布为庆祝 IBM 诞辰 100 周年而出版的 IBM 期刊（九月 / 十月）将在 IEEE Xplore® 中独家销售。<br />
10 月， IEC 和 IEEE 宣布设立 45,000 美元奖金挑战下一代创新技术，提交论文赢取大奖。更多内容请登陆 http://www.iecieeechallenge.org/<br />
10 月 24 国内高校软件工程教授组成的代表团访问了 IEEE 计算机协会在洛杉矶办公室，并和 IEEE 计算机协会主席一起讨论教育和培训方案，包括软件开发认证，并探讨可能的合作伙伴关系。<br />
11 月 7-9 日， IEEE 和外国专家局国际人才交流基金会在厦门联合举行了 IEEE CSDA 培训。<br />
11 月 8 日， IEEE 标准协会宣布，已批准启动一项新的研究组，以探索下一代 100 Gb / s 的以太网操作的光网络解决方案。该研究小组将调查新修订的 IEEE 802.3 ™以太网标准，以提高在 IEEE802.3ba ™ -2010 中定义的 100 Gb / s 以太网物理层（ PHY ）功能。该研究小组将研究在更狭窄和更快的接口上进行 100GB/ s 的操作，从而提供低成本高密度的 100GB/ s 的解决方案。<br />
更多新闻请访问 IEEE 中文网站 http://cn.ieee.org</p>
<p>IEEE 在线讲座精选<br />
IEEE Spectrum 系 列 讲座<br />
IEEE GOLD 系列 讲 座<br />
802.11n 和 802.11 （ 802.11n and Multi-Gigabit 802.11 ）<br />
最新 IEEE.TV 精彩内容（ http://www.ieee.tv/home ）</p>
<p>IEEE 会员风采<br />
Steve O ’ Donnell ，原英国电信数据中心全球负责人、 IEEE 会员，下面是 Donnell 对于中小企业驱动云计算的一些看法。<br />
“初创企业需要的是敏捷，他们关注的是费用和执行速度，而不是风险，因此更愿意迅速采取云计算平台，如 Gmail ，客户关系管理和会计核算平台等”<br />
“初创企业使用云计算，然后随着他们成长驱动云计算的发展，同时年轻的工程师和 IT 人员成长以后也将企业带入云计算时代。”<br />
然而 Donnell 解释说，周围的可靠性问题，数据安全，隐私等是目前许多规模较大的公司将需要花时间来克服的障碍。“他们往往不信任云，大多数公司将非关键应用放在云计算中，这将成为云计算投资的严重阻力。”<br />
Donnell 还指出，许多规模较大的公司使用两个关键服务的云供应商提供有效抵御潜在的中断的适应性，“运行在两家供应商，如果失败，第二个仍然可用，这可能削弱了成本的节约，但企业是愿意这样做，以确保连续性和数据恢复”。<br />
Donnell 还认为大多数担忧是关于 IT 经理的控制能力。他表示：“现在缺少工具，使企业能够以和数据中心中相同的方式管理云中的安全性和可用性。 企业相信自己的数据中心是安全有效的，他们希望能够由自己管理云的安全性和可用性，而不是把它外包给第三方。”<br />
更多关于云计算和前沿技术报告，请阅读 IEEE 特别报道“ 10 年间的 11 大前沿技术”</p>
<p>http://spectrum.ieee.org/static/special-report-top-11-technologies-of-the-decade</p>
<p>IEEE E-Scientia 项目<br />
IEEE E-Scientia 是 IEEE 在过去 10 年中与科技馆和社区中心合作开展的首次严肃性试验项目，开发供大学预科学生参与和互动的展会。在 2011 年 7 月， E-Scientia 世界研讨会在乌拉圭举行，目的是讨论在全球范围内向 IEEE 领域的科技馆推出名为 E-Scientia 的体验式展览，并制订拓展规划。活动包括 E-Scientia 展览演示，讨论教材改进，并计划通过与当地科技馆的合作关系拓展展览范围。<br />
研讨会参与者有机会看到由 IEEE 学生会员带领当地中学生进行的 E-Scientia 展览现场演示。在体验过程中，以十名学生为一组，分组进入 “ 类似航天飞机 ” 的模型结构中，以 “ 船员 ” 身份参加一次飞行任务。在此期间，学生们接受电气和电子基本原理的基本培训。每个工作站的计算机为学生们演示如何装配电子线路，为飞船分别提供电力、推进、通信、生命维护和防御措施。 IEEE 主席 Moshe Kam 参加了该研讨会，并认为 E-Scientia 展览的独特性质和优势之一是能够让学生感到学习工程学很有趣也不令人生畏。<br />
IEEE 计划将此项目在中国推广，设备可在国内当地制造，经验丰富的人员对组装和调试模块应该没有问题，还可提供视频， IEEE 专业工作人员将对此项目进行全程指导。请联系 IEEE 中国代表处索要更多信息。</p>
]]></content:encoded>
			<wfw:commentRss>http://zhuwenhao.com/981/%e5%bf%97%e6%84%bf%e5%b7%a5%e4%bd%9c/ieee/ieee-%e4%b8%ad%e6%96%87%e5%bf%ab%e6%8a%a5-2011-%e5%b9%b4-11-%e6%9c%88/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于呼吸防护标准的说明 N95 N99 N100口罩 FFP1 FFP2 FFP3口罩</title>
		<link>http://zhuwenhao.com/975/%e7%a7%91%e5%ad%a6/%e5%8c%bb%e5%ad%a6/%e5%85%b3%e4%ba%8e%e5%91%bc%e5%90%b8%e9%98%b2%e6%8a%a4%e6%a0%87%e5%87%86%e7%9a%84%e8%af%b4%e6%98%8e-n95-n99-n100%e5%8f%a3%e7%bd%a9-ffp1-ffp2-ffp3%e5%8f%a3%e7%bd%a9/</link>
		<comments>http://zhuwenhao.com/975/%e7%a7%91%e5%ad%a6/%e5%8c%bb%e5%ad%a6/%e5%85%b3%e4%ba%8e%e5%91%bc%e5%90%b8%e9%98%b2%e6%8a%a4%e6%a0%87%e5%87%86%e7%9a%84%e8%af%b4%e6%98%8e-n95-n99-n100%e5%8f%a3%e7%bd%a9-ffp1-ffp2-ffp3%e5%8f%a3%e7%bd%a9/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 05:36:34 +0000</pubDate>
		<dc:creator>朱文昊 Albert Zhu</dc:creator>
				<category><![CDATA[医学]]></category>

		<guid isPermaLink="false">http://zhuwenhao.com/?p=975</guid>
		<description><![CDATA[前几天街上的空气真的好差，到处都是不能散去的汽车尾气和灰尘。据美国大使馆提供的资料，很小的污染物颗粒，会进入肺部和循环系统并无法被人体排出。为了健康，我买了3M的口罩和呼吸面具，顺便了解了各种不同的防护标准，下文是转载的资料，原文地址.
各国防尘口罩的国家标准不同，对比起来各有侧重。在防病毒方面，我国疾控中心在流行病职业暴露工作人员防护级别二级中要求，口罩过滤标准要达到FFP2或N95标准。鉴于国内现在对FFP标准尚认识不足，现对二者做简要的对比：
(1)、FFP标准：即呼吸防护的欧洲标准。以下是标准的具体参数：
CE149：2001测试：测试机型：TS18130
　　　　　测试物质：NaCl [...]]]></description>
			<content:encoded><![CDATA[<p>前几天街上的空气真的好差，到处都是不能散去的汽车尾气和灰尘。据<a href="http://chinese.usembassy-china.org.cn/070109air.html" target="_blank">美国大使馆提供的资料</a>，很小的污染物颗粒，会进入肺部和循环系统并无法被人体排出。为了健康，我买了3M的口罩和呼吸面具，顺便了解了各种不同的防护标准，下文是转载的资料，<a href="http://hi.baidu.com/hesppe1/blog/item/9696d21ba855c90f413417dc.html" target="_blank">原文地址</a>.</p>
<div>各国防尘口罩的国家标准不同，对比起来各有侧重。在防病毒方面，我国疾控中心在流行病职业暴露工作人员防护级别二级中要求，口罩过滤标准要达到<span style="font-family: Times;">FFP2</span>或<span style="font-family: Times;">N95</span>标准。鉴于国内现在对<span style="font-family: Times;">FFP</span>标准尚认识不足，现对二者做简要的对比：</div>
<div><span style="font-family: Times;">(1)</span>、<span style="font-family: Times;">FFP</span>标准：即呼吸防护的欧洲标准。以下是标准的具体参数：</div>
<div><span style="font-family: Times;">CE149</span>：<span style="font-family: Times;">2001</span>测试：测试机型：<span style="font-family: Times;">TS18130</span></div>
<div><strong>　　　　　</strong>测试物质：<span style="font-family: Times;">NaCl&amp;DOP</span><span style="font-size: small;"><span style="font-family: Times;">     </span>粒径：<span style="font-family: Times;">0.3</span>μ<span style="font-family: Times;">m        </span>测试流速：</span><span style="font-family: Times;">95L/Min</span></div>
<table width="490" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="56">
<div align="center">等级</div>
</td>
<td valign="top" width="147">
<div style="text-align: center;"><span style="font-family: Times;">Penetration </span>渗透率</div>
</td>
<td valign="top" width="133">
<div style="text-align: center;">捕集率</div>
</td>
<td valign="top" width="154">
<div align="center"><span style="font-family: Times;">Resistant </span>阻抗</div>
</td>
</tr>
<tr>
<td valign="top" width="56">
<div align="center"><span style="font-family: Times;">FFP1</span></div>
</td>
<td valign="top" width="147">
<div style="text-align: center;"><span style="font-family: Times;">20%</span></div>
</td>
<td valign="top" width="133">
<div style="text-align: center;">≥<span style="font-family: Times;">80%</span></div>
</td>
<td valign="top" width="154">
<div align="center"><span style="font-family: Times;">21mm H<sub><span style="font-size: x-small;">2</span></sub>O</span></div>
</td>
</tr>
<tr>
<td valign="top" width="56">
<div align="center"><span style="font-family: Times;">FFP2</span></div>
</td>
<td valign="top" width="147">
<div style="text-align: center;"><span style="font-family: Times;">6%</span></div>
</td>
<td valign="top" width="133">
<div style="text-align: center;"><span style="font-size: small;">≥</span><span style="font-family: Times;">94%</span></div>
</td>
<td valign="top" width="154">
<div align="center"><span style="font-family: Times;">24mm H<sub><span style="font-size: x-small;">2</span></sub>O</span></div>
</td>
</tr>
<tr>
<td valign="top" width="56">
<div align="center"><span style="font-family: Times;">FFP3</span></div>
</td>
<td valign="top" width="147">
<div style="text-align: center;"><span style="font-family: Times;">1%</span></div>
</td>
<td valign="top" width="133">
<div style="text-align: center;">≥<span style="font-family: Times;">99%</span></div>
</td>
<td valign="top" width="154">
<div align="center"><span style="font-family: Times;">30mm H<sub><span style="font-size: x-small;">2</span></sub>O</span></div>
</td>
</tr>
</tbody>
</table>
<div align="left"><span style="font-family: Times;">(2)</span>、<span style="font-family: Times;">N</span>标准：是呼吸防护的美国标准。以下是标准的具体参数：</div>
<div align="left"><span style="font-family: Times;">NIOSH</span>标准，<span style="font-size: small;"><span style="font-family: Times;"> </span>测试机型：</span><span style="font-family: Times;">TS18130</span></div>
<div align="left">测试物质：<span style="font-family: Times;">NaCl<span style="font-size: small;">   </span></span>粒径：<span style="font-family: Times;">0.3</span>μ<span style="font-family: Times;">m<span style="font-size: small;"> </span></span>测试流速：<span style="font-family: Times;">85L/Min</span></div>
<table width="492" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="59">
<div align="center">等级</div>
</td>
<td valign="top" width="145">
<div style="text-align: center;"><span style="font-family: Times;">Penetration</span>渗透率</div>
</td>
<td valign="top" width="132">
<div style="text-align: center;">捕集率</div>
</td>
<td style="text-align: center;" valign="top" width="156">
<div align="center"><span style="font-family: Times;">Resistant </span>阻抗</div>
</td>
</tr>
<tr>
<td valign="top" width="59">
<div align="center"><span style="font-family: Times;">N95</span></div>
</td>
<td valign="top" width="145">
<div style="text-align: center;" align="center"><span style="font-family: Times;">5%</span></div>
</td>
<td valign="top" width="132">
<div style="text-align: center;">≥<span style="font-family: Times;">95%</span></div>
</td>
<td valign="top" width="156">
<div style="text-align: center;"><span style="font-family: Times;">35mm H<sub><span style="font-size: x-small;">2</span></sub>O</span></div>
</td>
</tr>
<tr>
<td valign="top" width="59">
<div align="center"><span style="font-family: Times;">N99</span></div>
</td>
<td valign="top" width="145">
<div style="text-align: center;" align="center"><span style="font-family: Times;">1%</span></div>
</td>
<td valign="top" width="132">
<div style="text-align: center;"><span style="font-size: small;">≥</span><span style="font-family: Times;">99%</span></div>
</td>
<td valign="top" width="156">
<div style="text-align: center;"><span style="font-family: Times;"><span style="font-size: small;">35mm H<sub><span style="font-size: x-small;">2</span></sub>O</span></span></div>
</td>
</tr>
<tr>
<td style="text-align: center;" valign="top" width="59">
<div align="center"><span style="font-family: Times;">N100</span></div>
</td>
<td style="text-align: center;" valign="top" width="145">
<div style="text-align: center;" align="center"><span style="font-family: Times;">0.03%</span></div>
</td>
<td valign="top" width="132">
<div style="text-align: center;"><span style="font-size: small;">≥</span><span style="font-family: Times;">99.97%</span></div>
</td>
<td valign="top" width="156">
<div style="text-align: center;"><span style="font-family: Times;">35mm H<sub><span style="font-size: x-small;">2</span></sub>O</span></div>
</td>
</tr>
</tbody>
</table>
<div align="left"><span style="font-size: small;">备注：<span style="font-family: Times;">NaCl： </span>氯化钠（食盐）；<span style="font-family: Times;">DOP</span>：石蜡油　</span></div>
<div>两者的测试使用的是一样的机器，使用<span style="font-family: Times;">NaCl</span>做测试用的污染物，混合<span style="font-family: Times;">DOP</span>代表可以防护油性的粉尘。<span style="font-family: Times;">FFP2</span>标准中，口罩对灰尘的捕集率为大于等于<span style="font-family: Times;">94</span>％，小于<span style="font-family: Times;">N95</span>捕集率一个百分点，然而测试时每分钟通过的气流量是不同的，欧标为<span style="font-family: Times;">95</span>升<span style="font-family: Times;">/</span>分钟，美标为<span style="font-family: Times;">85</span>升<span style="font-family: Times;">/</span>分钟。同时，阻抗值高低代表着使用口罩时，口罩对呼吸的阻碍程度，值越大则呼吸越受阻碍，二者的舒适程度不同。</div>
<div>
<blockquote>
<div>朱文昊 注：阻抗率中的 mm H<sub>2</sub>O 是压强单位毫米水柱。1千帕约等于102毫米水柱，一毫米水柱约等于1/102千帕。另外 PM2.5指直径2.5微米的颗粒物，标准中提到的0.3微米测试颗粒比PM2.5小很多。我最终选择了FFP3标准的产品。</div>
</blockquote>
</div>
]]></content:encoded>
			<wfw:commentRss>http://zhuwenhao.com/975/%e7%a7%91%e5%ad%a6/%e5%8c%bb%e5%ad%a6/%e5%85%b3%e4%ba%8e%e5%91%bc%e5%90%b8%e9%98%b2%e6%8a%a4%e6%a0%87%e5%87%86%e7%9a%84%e8%af%b4%e6%98%8e-n95-n99-n100%e5%8f%a3%e7%bd%a9-ffp1-ffp2-ffp3%e5%8f%a3%e7%bd%a9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>深入理解C语言</title>
		<link>http://zhuwenhao.com/968/%e6%8a%80%e6%9c%af/%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1%e8%af%ad%e8%a8%80/c-%e8%af%ad%e8%a8%80/%e6%b7%b1%e5%85%a5%e7%90%86%e8%a7%a3c%e8%af%ad%e8%a8%80/</link>
		<comments>http://zhuwenhao.com/968/%e6%8a%80%e6%9c%af/%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1%e8%af%ad%e8%a8%80/c-%e8%af%ad%e8%a8%80/%e6%b7%b1%e5%85%a5%e7%90%86%e8%a7%a3c%e8%af%ad%e8%a8%80/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 13:01:03 +0000</pubDate>
		<dc:creator>朱文昊 Albert Zhu</dc:creator>
				<category><![CDATA[C 语言]]></category>

		<guid isPermaLink="false">http://zhuwenhao.com/?p=968</guid>
		<description><![CDATA[轉載自本站友情鏈接的coolshell，原文鏈接。
朱文昊評註：感謝Ritchie等先驅，他們的聰明才智和貢獻令人欽佩萬分。C語言的很多特性都有歷史的影子，隨著時間的流逝歷史逐漸沈積為基石。這樣，要學好用好C語言，除了可以多瞭解一下計算機科學的發展史，更應該多瞭解一些硬件相關的東西。推薦延伸閱讀資料：《C語言缺陷於陷阱》以及《C語言專家編程》
&#160;
Dennis Ritchie  过世了，他发明了C语言，一个影响深远并彻底改变世界的计算机语言。一门经历40多年的到今天还长盛不衰的语言，今天很多语言都受到C的影响，C++，Java，C#，Perl， PHP， Javascript，  [...]]]></description>
			<content:encoded><![CDATA[<p>轉載自本站友情鏈接的coolshell，<a href="http://coolshell.cn/articles/5761.html" target="_blank">原文鏈接</a>。</p>
<blockquote><p>朱文昊評註：感謝Ritchie等先驅，他們的聰明才智和貢獻令人欽佩萬分。C語言的很多特性都有歷史的影子，隨著時間的流逝歷史逐漸沈積為基石。這樣，要學好用好C語言，除了可以多瞭解一下計算機科學的發展史，更應該多瞭解一些硬件相關的東西。推薦延伸閱讀資料：《C語言缺陷於陷阱》以及《C語言專家編程》</p>
<p>&nbsp;</p></blockquote>
<p>Dennis Ritchie  过世了，他发明了C语言，一个影响深远并彻底改变世界的计算机语言。一门经历40多年的到今天还长盛不衰的语言，今天很多语言都受到C的影响，C++，Java，C#，Perl， PHP， Javascript， 等等。但是，你对C了解吗？相信你看过本站的《<a href="http://coolshell.cn/articles/945.html">C语言的谜题</a>》还有《<a href="http://coolshell.cn/articles/873.html">谁说C语言很简单？</a>》，这里，我再写一篇关于深入理解C语言的文章，一方面是缅怀Dennis，另一方面是告诉大家应该如何学好一门语言。（顺便注明一下，下面的一些例子来源于<a href="http://www.slideshare.net/olvemaudal/deep-c">这个slides</a>）</p>
<p>首先，我们先来看下面这个经典的代码：</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p968code11'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p96811"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p968code11"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #993333;">int</span> a <span style="color: #339933;">=</span> <span style="color: #0000dd;">42</span><span style="color: #339933;">;</span>
&nbsp;
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span>“<span style="color: #339933;">%</span>d\n”<span style="color: #339933;">,</span> a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>从这段代码里你看到了什么问题？我们都知道，这段程序里少了一个#include &lt;stdio.h&gt; 还少了一个return 0;的返回语句。</p>
<p>不过，让我们来深入的学习一下，</p>
<ul>
<li>这段代码在C++下无法编译，因为C++需要明确声明函数</li>
<li>这段代码在C的编译器下会编译通过，因为在编译期，编译器会生成一个printf的函数定义，并生成.o文件，链接时，会找到标准的链接库，所以能编译通过。</li>
<li> 但是，你知道这段程序的退出码吗？在ANSI-C下，退出码是一些未定义的垃圾数。但在C89下，退出码是3，因为其取了printf的返回值。为什么printf函数返回3呢？因为其输出了’4′, ’2′,’\n’ 三个字符。而在C99下，其会返回0，也就是成功地运行了这段程序。你可以使用gcc的 -std=c89或是-std=c99来编译上面的程序看结果。</li>
<li>另外，我们还要注意main()，在C标准下，如果一个函数不要参数，应该声明成main(void)，而main()其实相当于main(…)，也就是说其可以有任意多的参数。</li>
</ul>
<p>我们再来看一段代码：</p>
<p>&nbsp;</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p968code12'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p96812"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
</pre></td><td class="code" id="p968code12"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">void</span> f<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> a <span style="color: #339933;">=</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">int</span> b<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">int</span> c<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #339933;">++</span>a<span style="color: #339933;">;</span> <span style="color: #339933;">++</span>b<span style="color: #339933;">;</span> <span style="color: #339933;">++</span>c<span style="color: #339933;">;</span>
&nbsp;
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;a=%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;b=%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> b<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;c=%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> c<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
f<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
f<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
f<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>这个程序会输出什么？</p>
<ul>
<li>我相信你对a的输出相当有把握，就分别是4，5，6，因为那个静态变量。</li>
<li>对于c呢，你应该也比较肯定，那是一堆乱数。</li>
<li>但是你可能不知道b的输出会是什么？答案是1，2，3。为什么和c不一样呢？因为，如果要初始化，每次调用函数里，编译器都要初始化函数栈空间，这太费性能了。但是c的编译器会初始化静态变量为0，因为这只是在启动程序时的动作。</li>
<li>全局变量同样会被初始化。</li>
</ul>
<p>说到全局变量，你知道 静态全局变量和一般全局变量的差别吗？是的，对于static 的全局变量，其对链接器不可以见，也就是说，这个变量只能在当前文件中使用。</p>
<p>我们再来看一个例子：</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p968code13'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p96813"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
</pre></td><td class="code" id="p968code13"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">void</span> foo<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #993333;">int</span> a<span style="color: #339933;">;</span>
&nbsp;
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> bar<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #993333;">int</span> a <span style="color: #339933;">=</span> <span style="color: #0000dd;">42</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
bar<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
foo<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>你知道这段代码会输出什么吗？A) 一个随机值，B) 42。A 和 B都对（在“<a href="http://coolshell.cn/articles/4907.html">在函数外存取局部变量的一个比喻</a>”文中的最后给过这个例子），不过，你知道为什么吗？</p>
<ul>
<li>如果你使用一般的编译，会输出42，因为我们的编译器优化了函数的调用栈（重用了之前的栈），为的是更快，这没有什么副作用。反正你不初始化，他就是随机值，既然是随机值，什么都无所谓。</li>
<li>但是，如果你的编译打开了代码优化的开关，-O，这意味着，foo()函数的代码会被优化成main()里的一个inline函数，也就是说没有函数调用，就像宏定义一样。于是你会看到一个随机的垃圾数。</li>
</ul>
<p>下面，我们再来看一个示例：</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p968code14'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p96814"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code" id="p968code14"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> b<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span>“<span style="color: #0000dd;">3</span>”<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">3</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> c<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span>“<span style="color: #0000dd;">4</span>”<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">return</span> <span style="color: #0000dd;">4</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #993333;">int</span> a <span style="color: #339933;">=</span> b<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> c<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span>“<span style="color: #339933;">%</span>d\n”<span style="color: #339933;">,</span> a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>这段程序会输出什么？，你会说是，3，4，7。但是我想告诉你，这也有可能输出，4，3，7。为什么呢？ 这是因为，在C/C++中，表达的评估次序是没有标准定义的。编译器可以正着来，也可以反着来，所以，不同的编译器会有不同的输出。你知道这个特性以后，你就知道这样的程序是没有可移植性的。</p>
<p>我们再来看看下面的这堆代码，他们分别输出什么呢？</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p968code15'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p96815"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p968code15"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">int</span> a<span style="color: #339933;">=</span><span style="color: #0000dd;">41</span><span style="color: #339933;">;</span> a<span style="color: #339933;">++;</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span>“<span style="color: #339933;">%</span>d\n”<span style="color: #339933;">,</span> a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">int</span> a<span style="color: #339933;">=</span><span style="color: #0000dd;">41</span><span style="color: #339933;">;</span> a<span style="color: #339933;">++</span> <span style="color: #339933;">&amp;</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span>“<span style="color: #339933;">%</span>d\n”<span style="color: #339933;">,</span> a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">int</span> a<span style="color: #339933;">=</span><span style="color: #0000dd;">41</span><span style="color: #339933;">;</span> a<span style="color: #339933;">++</span> <span style="color: #339933;">&amp;&amp;</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span>“<span style="color: #339933;">%</span>d\n”<span style="color: #339933;">,</span> a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">int</span> a<span style="color: #339933;">=</span><span style="color: #0000dd;">41</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>a<span style="color: #339933;">++</span> <span style="color: #339933;">&lt;</span> <span style="color: #0000dd;">42</span><span style="color: #009900;">&#41;</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span>“<span style="color: #339933;">%</span>d\n”<span style="color: #339933;">,</span> a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">int</span> a<span style="color: #339933;">=</span><span style="color: #0000dd;">41</span><span style="color: #339933;">;</span> a <span style="color: #339933;">=</span> a<span style="color: #339933;">++;</span> <a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span>“<span style="color: #339933;">%</span>d\n”<span style="color: #339933;">,</span> a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>只有示例一，示例三，示例四输出42，而示例二和五的行为则是未定义的。关于这种未定义的东西是因为Sequence Points的影响（Sequence Points是一种规则，也就是程序执行的序列点，在两点之间的表达式只能对变量有一次修改），因为这会让编译器不知道在一个表达式顺列上如何存取变量的值。比如a = a++，a + a++，不过，在C中，这样的情况很少。</p>
<p>下面，再看一段代码：（假设int为4字节，char为1字节）</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p968code16'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p96816"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p968code16"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">struct</span> X <span style="color: #009900;">&#123;</span> <span style="color: #993333;">int</span> a<span style="color: #339933;">;</span> <span style="color: #993333;">char</span> b<span style="color: #339933;">;</span> <span style="color: #993333;">int</span> c<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d,&quot;</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">struct</span> X<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">struct</span> Y <span style="color: #009900;">&#123;</span> <span style="color: #993333;">int</span> a<span style="color: #339933;">;</span> <span style="color: #993333;">char</span> b<span style="color: #339933;">;</span> <span style="color: #993333;">int</span> c<span style="color: #339933;">;</span> <span style="color: #993333;">char</span> d<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
&nbsp;
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #993333;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #993333;">struct</span> Y<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>这个代码会输出什么?</p>
<p>a) 9，10<br />
b)12, 12<br />
c)12, 16</p>
<p>答案是C，我想，你一定知道字节对齐，是向4的倍数对齐。</p>
<ul>
<li>但是，你知道为什么要字节对齐吗？还是因为性能。因为这些东西都在内存里，如果不对齐的话，我们的编译器就要向内存一个字节一个字节的取，这样一来，struct X，就需要取9次，太浪费性能了，而如果我一次取4个字节，那么我三次就搞定了。所以，这是为了性能的原因。</li>
<li>但是，为什么struct Y不向12 对齐，却要向16对齐，因为char d; 被加在了最后，当编译器计算一个结构体的尺寸时，是边计算，边对齐的。也就是说，编译器先看到了int，很好，4字节，然后是 char，一个字节，而后面的int又不能填上还剩的3个字节，不爽，把char b对齐成4，于是计算到d时，就是13 个字节，于是就是16啦。但是如果换一下d和c的声明位置，就是12了。</li>
</ul>
<p>另外，再提一下，上述程序的printf中的%d并不好，因为，在64位下，sizeof的size_t是unsigned long，而32位下是 unsigned int，所以，C99引入了一个专门给size_t用的%zu。这点需要注意。在64位平台下，C/C++ 的编译需要注意很多事。你可以参看《<a href="http://coolshell.cn/articles/3512.html">64位平台C/C++开发注意事项</a>》。</p>
<p>下面，我们再说说编译器的Warning，请看代码：</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p968code17'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p96817"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
</pre></td><td class="code" id="p968code17"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #993333;">int</span> a<span style="color: #339933;">;</span>
&nbsp;
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>考虑下面两种编译代码的方式 ：</p>
<ul>
<li>cc -Wall a.c</li>
<li>cc -Wall -O a.c</li>
</ul>
<p>前一种是不会编译出a未初化的警告信息的，而只有在-O的情况下，才会有未初始化的警告信息。这点就是为什么我们在makefile里的CFLAGS上总是需要-Wall和 -O。</p>
<p>最后，我们再来看一个指针问题，你看下面的代码：</p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p968code18'); return false;">View Code</a> C</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p96818"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code" id="p968code18"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#include &lt;stdio.h&gt;</span>
&nbsp;
<span style="color: #993333;">int</span> main<span style="color: #009900;">&#40;</span><span style="color: #993333;">void</span><span style="color: #009900;">&#41;</span>
&nbsp;
<span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #993333;">int</span> a<span style="color: #009900;">&#91;</span><span style="color: #0000dd;">5</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%x<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%x<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> a<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%x<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>a<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span style="color: #000066;">printf</span></a><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;%x<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;</span>a<span style="color: #339933;">+</span><span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>假如我们的a的地址是：0Xbfe2e100, 而且是32位机，那么这个程序会输出什么？</p>
<ul>
<li>第一条printf语句应该没有问题，就是 bfe2e100</li>
<li>第二条printf语句你可能会以为是bfe2e101。那就错了，a+1，编译器会编译成 a+ 1*sizeof(int)，int在32位下是4字节，所以是加4，也就是bfe2e104</li>
<li>第三条printf语句可能是你最头疼的，我们怎么知道a的地址？我不知道吗？可不就是bfe2e100。那岂不成了a==&amp;a啦？这怎么可能？自己存自己的？也许很多人会觉得指针和数组是一回事，那么你就错了。如果是 int *a，那么没有问题，因为a是指针，所以 &amp;a 是指针的地址，a 和 &amp;a不一样。但是这是数组啊a[]，所以&amp;a其实是被编译成了 &amp;a[0]。</li>
<li>第四条printf语句就很自然了，就是bfe2e104。还是不对，因为是&amp;a是数组，被看成int(*)[5]，所以sizeof(a)是5，也就是5*sizeof(int)，也就是bfe2e114。</li>
</ul>
<p>看过这么多，你可能会觉得C语言设计得真扯淡啊。不过我要告诉下面几点Dennis当初设计C语言的初衷：</p>
<p><strong>1）相信程序员，不阻止程序员做他们想做的事。</strong></p>
<p><strong>2）保持语言的简洁，以及概念上的简单。</strong></p>
<p><strong>3）保证性能，就算牺牲移植性。</strong></p>
<p>今天很多语言进化得很高级了，语法也越来越复杂和强大，但是C语言依然光芒四射，Dennis离世了，但是C语言的这些设计思路将永远不朽。</p>
<p><strong>（请勿用于商业用途，转载时请注明作者和出处）</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://zhuwenhao.com/968/%e6%8a%80%e6%9c%af/%e7%a8%8b%e5%ba%8f%e8%ae%be%e8%ae%a1%e8%af%ad%e8%a8%80/c-%e8%af%ad%e8%a8%80/%e6%b7%b1%e5%85%a5%e7%90%86%e8%a7%a3c%e8%af%ad%e8%a8%80/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>提供最新，最完整的Android源代码压缩包下载</title>
		<link>http://zhuwenhao.com/950/%e6%8a%80%e6%9c%af/%e8%87%aa%e7%94%b1%e8%bd%af%e4%bb%b6%e7%a4%be%e5%8c%ba/android/%e6%8f%90%e4%be%9b%e6%9c%80%e6%96%b0%ef%bc%8c%e6%9c%80%e5%ae%8c%e6%95%b4%e7%9a%84android%e6%ba%90%e4%bb%a3%e7%a0%81%e5%8e%8b%e7%bc%a9%e5%8c%85%e4%b8%8b%e8%bd%bd/</link>
		<comments>http://zhuwenhao.com/950/%e6%8a%80%e6%9c%af/%e8%87%aa%e7%94%b1%e8%bd%af%e4%bb%b6%e7%a4%be%e5%8c%ba/android/%e6%8f%90%e4%be%9b%e6%9c%80%e6%96%b0%ef%bc%8c%e6%9c%80%e5%ae%8c%e6%95%b4%e7%9a%84android%e6%ba%90%e4%bb%a3%e7%a0%81%e5%8e%8b%e7%bc%a9%e5%8c%85%e4%b8%8b%e8%bd%bd/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 17:02:22 +0000</pubDate>
		<dc:creator>朱文昊 Albert Zhu</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://zhuwenhao.com/?p=950</guid>
		<description><![CDATA[我的Blog里，提供了几种Android源码下载的文章是最受欢迎的了。看来真的又很多人需要打包好的Android源码。
所以我会把自己一个服务器300G的硬盘空间中的大部分拿出来存储和分享Android源代码。如果你需要Android源代码，你可以去看看http://d.zhu.im/android/
如果你要链接到我的文件，最好能再页面上放置友情链接、说句谢谢之类的，我就很开心了。
除了再2011年10月24日以前生成的文件，是我手动产生的，所以会长期保留之外，建议你不要静态链接到源码压缩包，因为硬盘空间不够的时候，旧文件会被删除。我提供了符号链接，你查找名字类似  [...]]]></description>
			<content:encoded><![CDATA[<p>我的Blog里，提供了几种Android源码下载的文章是最受欢迎的了。看来真的又很多人需要打包好的Android源码。<br />
所以我会把自己一个服务器300G的硬盘空间中的大部分拿出来存储和分享Android源代码。如果你需要Android源代码，你可以去看看<a href="http://d.zhu.im/android/" target="_blank">http://d.zhu.im/android/</a><br />
如果你要链接到我的文件，最好能再页面上放置友情链接、说句谢谢之类的，我就很开心了。<br />
除了再2011年10月24日以前生成的文件，是我手动产生的，所以会长期保留之外，建议你不要静态链接到源码压缩包，因为硬盘空间不够的时候，旧文件会被删除。我提供了符号链接，你查找名字类似 “latest-android-&#8217;$VERSION-ID&#8217;.tar.gz”这样的文件，链接到他，可以指向最新同步好的文件。<br />
目前提供三个版本的源码包。<br />
如果你需要其他版本，请提供版本号。如何提供版本号？请先读一下我的自动更新脚本。<br />
我的300G服务器是CentOS的，没法容易地repo sync.所以我写了一个脚本运行在一个Ubuntu机器上。现在地想法是每周运行一次。这个周期是否需要调整，也看各位的反馈了。<br />
脚本如下：<br />
<span id="more-950"></span></p>

<div class="wp_codebox_msgheader"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p950code20'); return false;">View Code</a> BASH</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p95020"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
</pre></td><td class="code" id="p950code20"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
<span style="color: #007800;">LOG_FILE</span>=tmp.output.log
<span style="color: #007800;">SVR_LOG</span>=~<span style="color: #000000; font-weight: bold;">/</span>log.reposync.log
<span style="color: #007800;">SYNC_DATE</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #ff0000;">&quot;+%Y%m%d&quot;</span><span style="color: #000000; font-weight: bold;">`</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#rm -rf android-*</span>
make_latest_link <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #007800;">VER</span>=$<span style="color: #000000; font-weight: bold;">@</span>
        <span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-sf</span> android-<span style="color: #007800;">$SYNC_DATE</span>-<span style="color: #007800;">$VER</span>.tar.bz2 latest-android-<span style="color: #007800;">$VER</span>.tar.bz2
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;ln -sf android-<span style="color: #007800;">$SYNC_DATE</span>-<span style="color: #007800;">$VER</span>.tar.bz2 latest-android-<span style="color: #007800;">$VER</span>.tar.bz2&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        rsync <span style="color: #660033;">-l</span> latest-android-<span style="color: #007800;">$VER</span>.tar.bz2 d.zhu.im:<span style="color: #000000; font-weight: bold;">/</span>d<span style="color: #000000; font-weight: bold;">/</span>android<span style="color: #000000; font-weight: bold;">/</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;uploaded latest symbol link by rsync&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
f_check_log_err <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #007800;">ERR_NUM</span>=$<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #660033;">-c</span> <span style="color: #ff0000;">'error'</span> <span style="color: #007800;">$LOG_FILE</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$ERR_NUM</span>&quot;</span> <span style="color: #660033;">-ne</span> <span style="color: #ff0000;">&quot;0&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span>;
        <span style="color: #000000; font-weight: bold;">then</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Some Error occurred ERR_NUM=<span style="color: #007800;">$ERR_NUM</span>.&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
                <span style="color: #c20cb9; font-weight: bold;">tail</span> <span style="color: #660033;">-10</span> tmp.output.log <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;rm current folder&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
                <span style="color: #7a0874; font-weight: bold;">cd</span> ..
                <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #007800;">$FOLDER_NAME</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;quit in false&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
                <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
        <span style="color: #000000; font-weight: bold;">else</span>
                <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;check tmp log PASS&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        <span style="color: #000000; font-weight: bold;">fi</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
upload_new_android <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #7a0874; font-weight: bold;">&#123;</span>
        <span style="color: #007800;">VERSION</span>=$<span style="color: #000000; font-weight: bold;">@</span>
        <span style="color: #007800;">FOLDER_NAME</span>=android-<span style="color: #007800;">$SYNC_DATE</span>-<span style="color: #007800;">$VERSION</span>
        <span style="color: #007800;">RUN_SH_DATE</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #ff0000;">&quot;+%Y%m%d%H%M%S&quot;</span><span style="color: #000000; font-weight: bold;">`</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Sync start date and time: <span style="color: #007800;">$RUN_SH_DATE</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Working Repo version is <span style="color: #007800;">$VERSION</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        <span style="color: #c20cb9; font-weight: bold;">mkdir</span> <span style="color: #007800;">$FOLDER_NAME</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;mkdir <span style="color: #007800;">$FOLDER_NAME</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        <span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #007800;">$FOLDER_NAME</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;repo init start&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        repo init <span style="color: #660033;">-u</span> https:<span style="color: #000000; font-weight: bold;">//</span>android.googlesource.com<span style="color: #000000; font-weight: bold;">/</span>platform<span style="color: #000000; font-weight: bold;">/</span>manifest <span style="color: #660033;">-b</span> android-<span style="color: #007800;">$VERSION</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$LOG_FILE</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        f_check_log_err <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;repo sync start&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        repo <span style="color: #c20cb9; font-weight: bold;">sync</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$LOG_FILE</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        f_check_log_err <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        <span style="color: #7a0874; font-weight: bold;">cd</span> ..
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;tar start&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        <span style="color: #c20cb9; font-weight: bold;">tar</span> cjf <span style="color: #007800;">$FOLDER_NAME</span>.tar.bz2 <span style="color: #007800;">$FOLDER_NAME</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;md5sum start&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        md5sum <span style="color: #007800;">$FOLDER_NAME</span>.tar.bz2 <span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$FOLDER_NAME</span>.tar.bz2.md5.txt
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;sha1sum start&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        sha1sum <span style="color: #007800;">$FOLDER_NAME</span>.tar.bz2 <span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$FOLDER_NAME</span>.tar.bz2.sha1.txt
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;upload start&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        <span style="color: #c20cb9; font-weight: bold;">scp</span> <span style="color: #007800;">$FOLDER_NAME</span>.tar.bz2<span style="color: #000000; font-weight: bold;">*</span> d.zhu.im:<span style="color: #000000; font-weight: bold;">/</span>d<span style="color: #000000; font-weight: bold;">/</span>android<span style="color: #000000; font-weight: bold;">/</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        <span style="color: #666666; font-style: italic;">#make latest symbol link and upload by rsync -l</span>
        make_latest_link <span style="color: #007800;">$VERSION</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;rm -rf <span style="color: #007800;">$FOLDER_NAME</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
        <span style="color: #c20cb9; font-weight: bold;">rm</span> <span style="color: #660033;">-rf</span> <span style="color: #007800;">$FOLDER_NAME</span><span style="color: #000000; font-weight: bold;">*</span>
        <span style="color: #007800;">RUN_SH_DATE</span>=<span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">date</span> <span style="color: #ff0000;">&quot;+%Y%m%d%H%M%S&quot;</span><span style="color: #000000; font-weight: bold;">`</span>
        <span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;finished ALL at time: <span style="color: #007800;">$RUN_SH_DATE</span>&quot;</span> <span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>gt; <span style="color: #007800;">$SVR_LOG</span> <span style="color: #000000;">2</span><span style="color: #000000; font-weight: bold;">&amp;</span>gt;<span style="color: #000000; font-weight: bold;">&amp;</span>amp;<span style="color: #000000;">1</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span>
&nbsp;
upload_new_android 2.2.2_r1
upload_new_android <span style="color: #000000;">2.3</span>_r1
upload_new_android 2.3.7_r1</pre></td></tr></table></div>

<p>大家看到这里，应该知道版本号是什么意思了。如果你需要什么，请告诉我。</p>
]]></content:encoded>
			<wfw:commentRss>http://zhuwenhao.com/950/%e6%8a%80%e6%9c%af/%e8%87%aa%e7%94%b1%e8%bd%af%e4%bb%b6%e7%a4%be%e5%8c%ba/android/%e6%8f%90%e4%be%9b%e6%9c%80%e6%96%b0%ef%bc%8c%e6%9c%80%e5%ae%8c%e6%95%b4%e7%9a%84android%e6%ba%90%e4%bb%a3%e7%a0%81%e5%8e%8b%e7%bc%a9%e5%8c%85%e4%b8%8b%e8%bd%bd/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

