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

<channel>
	<title>阿北的博客</title>
	<atom:link href="http://www.abeion.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.abeion.com</link>
	<description>关注互联网和分享网络技术的IT博客</description>
	<lastBuildDate>Wed, 16 May 2012 02:00:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>全球最小PC本月正式发售</title>
		<link>http://www.abeion.com/2180.html</link>
		<comments>http://www.abeion.com/2180.html#comments</comments>
		<pubDate>Wed, 16 May 2012 02:00:16 +0000</pubDate>
		<dc:creator>阿北</dc:creator>
				<category><![CDATA[信息前沿]]></category>
		<category><![CDATA[Cotton Candy]]></category>
		<category><![CDATA[FXI]]></category>
		<category><![CDATA[Raspberry]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.abeion.com/?p=2180</guid>
		<description><![CDATA[<p>35美元的Raspberry Pi以其高性价比和微型的外观设计赢得了大家的认可，不过最近它迎来他的竞争对手--Cotton Candy。这款有FXI发布的微型电脑二月份接受预定，不过随着生产线的成功供应，将于本月下旬正式发售。该款微型电脑原定于3月份首发的，不过开发商为了增加其性能和一些系统新功能， <span class='read-more'><a href='http://www.abeion.com/2180.html'>[Read More…]</a></span></p><div class="clear-float"></div>
		]]></description>
			<content:encoded><![CDATA[<p>35美元的Raspberry Pi以其高性价比和微型的外观设计赢得了大家的认可，不过最近它迎来他的竞争对手&#8211;Cotton Candy。这款有FXI发布的微型电脑二月份接受预定，不过随着生产线的成功供应，将于本月下旬正式发售。该款微型电脑原定于3月份首发的，不过开发商为了增加其性能和一些系统新功能，所以延迟到了现在，不过其考究的制造工艺无疑是同类中的佼佼者。</p>
<p><img class="alignleft size-full wp-image-2183" title="study875_0857361074164264" src="http://www.abeion.com/wp-content/uploads/2012/05/study875_0857361074164264.jpg" alt="" width="500" height="331" /></p>
<p><a href="http://www.abeion.com/wp-content/uploads/2012/05/study875_085834891766808.jpg"><img class="alignleft size-full wp-image-2181" title="study875_085834891766808" src="http://www.abeion.com/wp-content/uploads/2012/05/study875_085834891766808.jpg" alt="" width="472" height="338" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>该微型电脑采用了4核1.2GHz的ARM Cortex A9处理器，一个4核的ARM Mali-400MP GPU，1GB的DRAM，通过microSD扩展卡槽可以实现64GB的存储。在接口方面有USB2.0，HDMI，micro-USB接口，支持802.11b/g/n WiFi和Bluetooth 2.1 +EDR接入，同时电脑支持ICS 4.0系统和Ubuntu系统。售价为$199.</p>
<object width="480" height="400"><param name="movie" value="http://player.youku.com/player.php/sid/XMzk3MjE4OTU2/v.swf"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="isShowRelatedVideo=false&showAd=0&show_pre=1&show_next=1&isAutoPlay=false&isDebug=false&UserID=&winType=interior&playMovie=true&MMControl=false&MMout=false&RecordCode=1001,1002,1003,1004,1005,1006,2001,3001,3002,3003,3004,3005,3007,3008,9999" /><embed src="http://player.youku.com/player.php/sid/XMzk3MjE4OTU2/v.swf" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="480" height="400" flashvars="isShowRelatedVideo=false&showAd=0&show_pre=1&show_next=1&isAutoPlay=false&isDebug=false&UserID=&winType=interior&playMovie=true&MMControl=false&MMout=false&RecordCode=1001,1002,1003,1004,1005,1006,2001,3001,3002,3003,3004,3005,3007,3008,9999"></embed></object>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abeion.com/2180.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>25个让Java程序员更高效的Eclipse插件</title>
		<link>http://www.abeion.com/2178.html</link>
		<comments>http://www.abeion.com/2178.html#comments</comments>
		<pubDate>Wed, 11 Apr 2012 00:44:50 +0000</pubDate>
		<dc:creator>阿北</dc:creator>
				<category><![CDATA[编程开发]]></category>
		<category><![CDATA[AnyEdit Tools]]></category>
		<category><![CDATA[Checkstyle]]></category>
		<category><![CDATA[ECLemma]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Eclipse-rbe]]></category>
		<category><![CDATA[FindBugs]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[JDepend4Eclipse]]></category>
		<category><![CDATA[PMD]]></category>
		<category><![CDATA[SourceHelper]]></category>
		<category><![CDATA[程序员]]></category>

		<guid isPermaLink="false">http://www.abeion.com/?p=2178</guid>
		<description><![CDATA[<p>Eclipse提供了一个可扩展插件的开发系统。这就使得Eclipse在运行系统之上可以实现各种功能。这些插件也不同于其他的应用（插件的功能是最难用代码实现的）。拥有合适的Eclipse插件是非常重要的，因为它们能让Java开发者们无缝的开发基于J2EE和服务的应用程序。Eclipse的插件也能帮助他 <span class='read-more'><a href='http://www.abeion.com/2178.html'>[Read More…]</a></span></p><div class="clear-float"></div>
		]]></description>
			<content:encoded><![CDATA[<p>Eclipse提供了一个可扩展插件的开发系统。这就使得Eclipse在运行系统之上可以实现各种功能。这些插件也不同于其他的应用（插件的功能是最难用代码实现的）。拥有合适的Eclipse插件是非常重要的，因为它们能让Java开发者们无缝的开发基于J2EE和服务的应用程序。Eclipse的插件也能帮助他们开发不同应用架构上的程序。</p>
<p>下面列出来的是25个最好的免费Eclipse插件，可以让开发者更高效的工作 。<br />
<a href="http://img.cnbeta.com/newsimg/120411/0737020704587373.jpg"><img title="eclipse logo" src="http://img.cnbeta.com/newsimg/120411/0737020704587373.jpg" alt="eclipse logo" width="250" height="250" /></a><br />
<strong>提高代码质量的插件</strong><br />
<strong>1. FindBugs</strong><br />
FindBugs可以帮你找到Java代码中的bug，它使用Lesser GNU Public License的自由软件许可。<br />
<strong>2. Checkstyle</strong><br />
Checkstyle插件可以集成到Eclipse IDE中去，能确保Java代码遵循标准代码样式。<br />
<strong>3. ECLemma</strong><br />
ECLemma是一款拥有Eclipse Public License许可的免费工具，它提供了方便快捷的开发和测试环境。你可以使用代码覆盖模式下的“launch”功能，用起来就像是真正的运行/调试模式。你可以通过使用代码覆盖试图，高亮源文件，计数来分析代码。<br />
<strong>4. JDepend4Eclipse</strong><br />
JDepend4Eclipse可以帮助你遍历文件夹，协助你量化设计的质量。它使用Eclipse Public License v1.0许可。<br />
<strong>5. PMD</strong><br />
PMD是一款代码分析器，用来检测变量和写得不好的代码。（更新网址-<a href="http://pmd.sourceforge.net/eclipse/">http://pmd.sourceforge.net/eclipse/</a>）<br />
<strong>6. SourceHelper</strong><br />
SourceHelper可以协助编码和调试，对写好的代码提供说明。<br />
<strong>7. Structure101</strong><br />
Structure101帮助修改代码的架构，就是说你可以改变架构，而不打乱代码。<br />
文本编辑插件<br />
<strong>8. AnyEdit Tools</strong><br />
AnyEdit为输出控制台和工具栏增加了新的编辑器，帮助导入和导出数据。它使用Eclipse Public License v1.0许可。<br />
<strong>9. Eclim</strong><br />
Eclim给Eclipse引入了Vim的功能，Vim是最好的编辑器之一。开发者可以采用不同的语言来编写代码，它也提供bug纠错功能。Eclim使用GPLV3许可。<br />
<strong>10. Eclipse-rbe</strong><br />
Eclipse-rbe用来编辑Java文件，它的功能有为缺失变量发出警告信息，排序键值，转变Unicode编码等。它使用GNU库或LGPL许可。<br />
<strong>依赖管理</strong><br />
<strong>11. Apache IvyDE</strong><br />
Apache IvyDE集成了Apache Ivy的依赖管理功能。它能管理’ivy.xml’中的依赖，也能够配合WPT和Ant插件的使用。<br />
<strong>12. M2eclipse (Maven插件)</strong><br />
M2eclipse能够管理简单的项目，也能管理多模块项目，它能在Eclipse中启动maven。它提供依赖管理，能提供自动下载。<br />
<strong>版本控制插件</strong><br />
<strong>13. Subclipse</strong><br />
Subclipse是一个SVN插件，它为Eclipse IDE提供subversion支持，使用EPL 1.0许可。<br />
<strong>14. EGit</strong><br />
EGit提供同步视图，可以读.git/ 下排除的文件，提供rebase功能，为pull和push提供精简的操作。<br />
<strong>15. MercurialEclipse</strong><br />
MercurialEclipse是个流行的版本控制系统。它提供了clone repository功能，push-pull同步功能，以及简单的回滚功能。<br />
<strong>16. P4Eclipse</strong><br />
P4Eclipse吸纳了Perforce管理系统的特长。它提供了以开发者为导向的一系列的功能，并且支持许多Agile开流程发以及传统开发流程。<br />
<strong>框架开发插件</strong><br />
<strong>17. Spring Tool Suite</strong><br />
Spring Tool Suite提供了XML文件预览以及图形化的spring配置编辑器等开发环境和工具，它能让开发变得更简单。<br />
<strong>18. Spring IDE</strong><br />
Spring IDE帮助你开发Spring应用，它提供了图形编辑界面。它还能用图形的方式显示bean之间的关系。（更新网址 – <a href="http://springide.org/updatesite">http://springide.org/updatesite</a>）<br />
<strong>19. Hibernator</strong><br />
Hibernator能够创建或更新数据库schema，运行hibernate查询语句，创建映射文档。用户可以将一个Java类和一个相关的映射文件同步起来。<br />
<strong>20. JbossTools</strong><br />
JbossTools 3.2x支持JBoss，Hibernate，Drools，XHTML，Seam等。（更新网址-<a href="http://download.jboss.org/jbosstools/updates/JBossTools-2.1.2.GA">http://download.jboss.org/jbosstools/updates/JBossTools-2.1.2.GA</a>）<br />
<strong>其他功能插件</strong><br />
<strong>21. ASM – 二进制预览插件</strong><br />
ASM Bytecode Outline插件可以显示当前的Java文件或class文件的分解的二进制代码，便于Java/class文件的二进制比较，也可以显示当前二进制代码的ASMifier代码。你可以用Eclipse更新管理器来安装ASM。（更新网址-<a href="http://download.forge.objectweb.org/eclipse-update/">http://download.forge.objectweb.org/eclipse-update/</a>）<br />
<strong>22. Mylyn – 任务管理</strong><br />
Mylyn采用任务为中心的界面，它为开发者提供了任务管理工具。另外，也集成了富文本编辑工具，以及监测工具。<br />
<strong>23. Eclipse Launcher</strong><br />
Eclipse launcher采用Delphi 6写成，使用它你可以自定义启动Eclipse IDE时的配置。<br />
<strong>24. FileSync</strong><br />
FileSync拥有Eclipse Pulic License v1.0许可，它是一个文件同步工具，可以创建，删除，映射文件。<br />
<strong>25. Log4E</strong><br />
Log4E可以帮你更容易的写日志，而不需要受特定日志框架的约束。当然你也可以自定义你自己的日志模版。<br />
总而言之，插件能让Eclipse用其他语言来编写。Eclipse插件是必不可少的，因为它们让Java应用无缝连接，降低了Java的复杂度。然而，装了过多的插件会让你的Eclipse变慢，所以你需要有选择性的安装插件。<br />
除了以上提到的插件，当然还有其他的高效率的插件，如Jadclipse。如果你还有其他让你觉得好用的插件，请写下来吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abeion.com/2178.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>人类捕猎猛犸象首次获证实 现最完整猛犸象遗骸</title>
		<link>http://www.abeion.com/2174.html</link>
		<comments>http://www.abeion.com/2174.html#comments</comments>
		<pubDate>Wed, 11 Apr 2012 00:40:52 +0000</pubDate>
		<dc:creator>阿北</dc:creator>
				<category><![CDATA[新鲜趣闻]]></category>
		<category><![CDATA[猎人]]></category>
		<category><![CDATA[猛犸象]]></category>
		<category><![CDATA[猛犸象遗骸]]></category>
		<category><![CDATA[西伯利亚]]></category>
		<category><![CDATA[遗骸]]></category>

		<guid isPermaLink="false">http://www.abeion.com/?p=2174</guid>
		<description><![CDATA[<p><a href="http://www.abeion.com/wp-content/uploads/2012/04/Img340243443.jpg"></a><br /></p><p>近日，西伯利亚猎人发现有史以来保存最完整的猛犸象遗骸。猛犸蓬松的姜黄色皮毛色泽鲜艳，就和这个动物在冰封的陆地上漫步时一样。它的眼睛、脚垫甚至内脏都完好无损。这是一头年轻的猛犸象，生活在一万多年前。<br /></p><p>　　搜寻象牙的人在西伯利亚冻土中发现它那保存完好的身体，然后交给了科学家。象牙猎人发现的这头 <span class='read-more'><a href='http://www.abeion.com/2174.html'>[Read More…]</a></span></p><div class="clear-float"></div>
		]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.abeion.com/wp-content/uploads/2012/04/Img340243443.jpg"><img src="http://www.abeion.com/wp-content/uploads/2012/04/Img340243443.jpg" alt="" title="Img340243443" width="300" height="160" class="alignleft size-full wp-image-2175" /></a><br />
近日，西伯利亚猎人发现有史以来保存最完整的猛犸象遗骸。猛犸蓬松的姜黄色皮毛色泽鲜艳，就和这个动物在冰封的陆地上漫步时一样。它的眼睛、脚垫甚至内脏都完好无损。这是一头年轻的猛犸象，生活在一万多年前。<br />
　　搜寻象牙的人在西伯利亚冻土中发现它那保存完好的身体，然后交给了科学家。象牙猎人发现的这头猛犸象遗骸几乎全部冰冻，是独一无二的。<br />
　　专家认为他们能从这个新发现中获得很多重要信息，不仅包括有关这些动物的，还有冰河世纪与猛犸象生活在一起的人类情况。科学家发现，这头猛犸象死时最多只有三四岁。象牙猎人在西伯利亚最偏远的地区雅库特的尤斯特-雅尼思科伊地区发现了它。<br />
　　最值得注意的是它的背上有两处整齐的伤口，体内有几块骨头被移除，例如脊骨、颅骨、肋骨和盆骨等。科学家在它的毛皮附近找到了颅骨。一条很长的直线切口从头部延伸到背部中央，还有一个开放性伤口显得十分不同，它上面布满图案，有一些很小的锯齿，好像来自一种原始的像锯子一样的工具。这次技术熟练的屠杀不可能是狮子等食肉动物的杰作，很可能是冰河世纪洞穴人为了生存进行的捕杀。<br />
　　猛犸象一直是洞穴壁画的主题，但这是北半球被冰原覆盖40%时，人类捕杀这些大型动物的第一个证据。这项研究显示，一万年前猛犸象在全面解冻期完全灭绝，而人类的肆意捕杀或许扮演了重要角色。<br />
　　这头约1.8米长的猛犸象名为尤卡，好像在早期从另一个食肉动物那里逃脱。一条断腿和身上的多处伤口都表明它曾拼命挣扎过。美国密歇根大学地球与环境科学教授、猛犸象专家丹尼尔-费希尔表示：“我们有强有力的证据证明尤卡和某个顶级捕食者之间发生过一场生死搏斗，或许是狮子。更有趣的是，有些线索表明人类很可能在早期参与了这场屠杀。”<br />
　　冰河世纪开始时，猛犸象从非洲大象进化而来，它们比今天的大象大两倍左右，重达8吨。另外，长牙能帮它们抵御捕食者，从冰雪中挖出草和灌木等。<br />
　　科学家可以解剖尤卡，或用红外线扫描观察它的器官，了解猛犸象设法适应恶劣气候的原因。他们还能用最先进的技术检查它那通常情况下已经丢失的体组织，以便分析它的基因组，这增加了从遗骸中克隆一头猛犸象的可能性。<br />
　　自然历史博物馆的艾德里安-李斯特教授说：“从外表看起来，它是我们发现的最完整的猛犸象遗骸。以前发现的大多数化石只有骨骼和牙齿，因为它们被埋在地下。只有在西伯利亚非常遥远的北部，才能发现一个像它一样的遗骸，不仅有肉、皮肤，还有毛发。”</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abeion.com/2174.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# 编程：错误汇总</title>
		<link>http://www.abeion.com/2170.html</link>
		<comments>http://www.abeion.com/2170.html#comments</comments>
		<pubDate>Thu, 05 Apr 2012 14:59:34 +0000</pubDate>
		<dc:creator>阿北</dc:creator>
				<category><![CDATA[编程开发]]></category>

		<guid isPermaLink="false">http://www.abeion.com/?p=2170</guid>
		<description><![CDATA[<p>　1、在C#编程中，字符型类型是最容易处理出错的地方，代价是非常昂贵，在.Net Framwork中，字符串是一个相当特别的引用类型，string本省就是一个不可继承的密封类，但是它具有了值类型所应用的特点，但是它在CLR中内存还是保存于托管堆之上，也就是说，当我们每次定义一个字符串类型的时候，就在 <span class='read-more'><a href='http://www.abeion.com/2170.html'>[Read More…]</a></span></p><div class="clear-float"></div>
		]]></description>
			<content:encoded><![CDATA[<p>　1、在C#编程中，字符型类型是最容易处理出错的地方，代价是非常昂贵，在.Net Framwork中，字符串是一个相当特别的引用类型，string本省就是一个不可继承的密封类，但是它具有了值类型所应用的特点，但是它在CLR中内存还是保存于托管堆之上，也就是说，当我们每次定义一个字符串类型的时候，就在堆内存中开辟一端内存，而当我们字符串被修改之后，它会创建一个新的内存，注意这里的内存是不连续的，而是通过修改栈内地址引用而拼凑字符串，不会改变源字符串在内存中的地址，所以有些程序员总是喜欢使用这样的方法格式化字符串：<br />
string SelectText=”select * from “+TableName+” where UserName=&#8217;”+Name+”&#8216;”;<br />
　　上述代码，使用了字符串拼凑的方法，因为使用了多重串联，因此会在内存中创建两个不必要的字符串垃圾副本。<br />
　　其实在C#中，已经为我们提供了StringBuilder和String.Fromat来解决此问题，虽然他们可以实现同样的功能，但是他们有质的变化，StringBuilder在内存中开辟的是一段连续内存，当增加新字符串时候，它会在栈中指向的同一个堆内存中连续存放字符，这就形成了性能的提升。所以我们将上面代码改成：<br />
　　string SelectText=string.Format(“select * from {0} where UserName={1}”,TableName,Name);<br />
　　2、大多数开发人员都不知道内置的验证数据类型的方法，如System.Int32，因此很多人都是自己实现的，其实这是不妥的，因为这些基本类型中都存在自己固有的类型验证方法，下面这个就是自己实现验证的一个字符串是否是数值的代码：<br />
　public bool CheckIfNumeric(string value)</p>
<p>　　{</p>
<p>　　bool IsNumeric=true;</p>
<p>　　try</p>
<p>　　{</p>
<p>　　int i=Convert.ToInt32(value);</p>
<p>　　}</p>
<p>　　catch(FormatException excepiton)</p>
<p>　　{</p>
<p>　　IsNumeric=false;</p>
<p>　　}</p>
<p>　　return IsNumeric;</p>
<p>　　}</p>
<p>　　虽然使用了try catch语句，这不是最佳的做法，更好的方法是下面使用Int.TryParse;<br />
　int output=0;</p>
<p>　　bool IsNumeric=int.TryParse(value,out output);</p>
<p>　　int.TryParse是更快、更简洁的方法。<br />
　　3、自己利用IDisposable接口手动释放内存<br />
　　在.NET Framework中，对象的处理和使用一样重要，理想的方法是在使用完对象的时候，在类中实现IDisposable接口中的dispose方法进行内存的释放，当然在.Net本身提供的垃圾回收机制(GC)中就提供了这样的功能，在我们实例化类对象时，在类本身的析构函数中会调用dispose方法，GC在各级内存堆满的情况下，自动检查对象使用情况，去相应的释放内存，但是运行在非托管平台上的方法，需要我们自己手动释放内存，比如我们常见的SqlConnection对象，也就有了下面的创建、使用和处理方法：<br />
public void DALOneMethod()</p>
<p>　　{</p>
<p>　　SqlConnection connection=null;</p>
<p>　　try</p>
<p>　　{</p>
<p>　　connection =new SqlConnection(“。。。。。。。。。。。”);</p>
<p>　　connection.Open();</p>
<p>　　//sqlcommand。。run</p>
<p>　　}</p>
<p>　　catch(Exception exception)</p>
<p>　　{</p>
<p>　　// manager exception</p>
<p>　　}</p>
<p>　　finally</p>
<p>　　{</p>
<p>　　connection.Close();</p>
<p>　　connection.Disopse();</p>
<p>　　}</p>
<p>　　}</p>
<p>　　上述代码是大部分程序员会出现的代码，乍看没啥问题，连接处理在最后一个代码中被明确调用，但是如果发生了一个异常，catch代码块就被执行,然后再执行最后一个代码块处理连接，因此在最后一个代码块执行之前，连接将一直留在内存中，大部分我们会在此处记录错误，一般涉及到IO操作，如果延时时间比较长的话，这个连接将在内存时间长时间停留。我们一个原则就是当对象不再使用的时候我们里面释放资源。<br />
　　我们采用程序逻辑域来处理这个问题会更好：<br />
public void DALOneMethod()</p>
<p>　　{</p>
<p>　　using(SqlConnction connection=new SqlConnection(“。。。。。。。”))</p>
<p>　　{</p>
<p>　　connction.Open();</p>
<p>　　// do SUAD</p>
<p>　　}</p>
<p>　　}</p>
<p>　　当使用using代码快时，对象上的dispose()方法将在执行推出逻辑域的时候调用，这样就保证了SqlConnection的资源处理被尽早释放，当然这个方法也适用于实现IDisposable接口的类，当时个人不推荐这样做，在非常有把握的情况下可以手动释放，但是没把握还是叫给.net系统释放，因为本身类的析构函数就实现这个方法，当我们自己重写后，反而会导致系统误以为你自己定义了方法，而推迟释放资源，有兴趣可以研究下GC运行本质，假如能在第一代被释放的内存，如果我们重写dispose方法反而推迟到第二代内存堆中释放，显然是不可取的。<br />
　　4、学会合理的管理公共变量，我们在系统中经常会滥用公共变量，没有做到合适的封装好。<br />
　static void Main(string[] args)</p>
<p>　　{</p>
<p>　　MyAccount account=new MyAccount();</p>
<p>　　//这地方不能随便的调用account里面的字段进行更改，但是缺改了</p>
<p>　　account.AccountNumber=”ddddddddd”;</p>
<p>　　Console.ReadKey();</p>
<p>　　}</p>
<p>　　public class MyAccount</p>
<p>　　{</p>
<p>　　public string AccountNumber;</p>
<p>　　public MyAcctount()</p>
<p>　　{</p>
<p>　　AccountNumber=”ssssssssssssss”;</p>
<p>　　}</p>
<p>　　}</p>
<p>　　在上面的MyAccount类中生命了一个AccountNumber公共变量，理想情况下，AccountNumber应该是只读的，不能让外界修改，但是这里MyAccount类却没有对它做任何控制。</p>
<p>　　声明公共做法应该是使用属性，如：<br />
public class MyAccount</p>
<p>　　{</p>
<p>　　private stirng _accountNumber;</p>
<p>　　public string AccountNumber</p>
<p>　　{</p>
<p>　　get { return _accountNumber; }</p>
<p>　　}</p>
<p>　　public MyAccount()</p>
<p>　　{</p>
<p>　　_accountNumber=”dddddddd”;</p>
<p>　　}</p>
<p>　　}</p>
<p>　　这里我们封装了AccountNumber公共变量，它变成了只读，不能由调用者类进行修改。<br />
　　5、嵌套的异常处理，有的开发人员喜欢在方法末尾加上处理的嵌套方法，如<br />
　public class NestedExceptionHandling</p>
<p>　　{</p>
<p>　　public void MainMethod()</p>
<p>　　{</p>
<p>　　try</p>
<p>　　{</p>
<p>　　//some implementation</p>
<p>　　ChildMethod1();</p>
<p>　　}</p>
<p>　　catch (Exception exception)</p>
<p>　　{</p>
<p>　　//Handle exception</p>
<p>　　}</p>
<p>　　}</p>
<p>　　private void ChildMethod1()</p>
<p>　　{</p>
<p>　　try</p>
<p>　　{</p>
<p>　　//some implementation</p>
<p>　　ChildMethod2();</p>
<p>　　}</p>
<p>　　catch (Exception exception)</p>
<p>　　{</p>
<p>　　//Handle exception</p>
<p>　　throw;</p>
<p>　　}</p>
<p>　　}</p>
<p>　　private void ChildMethod2()</p>
<p>　　{</p>
<p>　　try</p>
<p>　　{</p>
<p>　　//some implementation</p>
<p>　　}</p>
<p>　　catch (Exception exception)</p>
<p>　　{</p>
<p>　　//Handle exception</p>
<p>　　throw;</p>
<p>　　}</p>
<p>　　}</p>
<p>　　}</p>
<p>　　如果相同的异常被处理多次，性能开销将会增加。<br />
　　我们的解决方法是让异常处理方法独立开来，如：<br />
　public class NestedExceptionHandling</p>
<p>　　{</p>
<p>　　public void MainMethod()</p>
<p>　　{</p>
<p>　　try</p>
<p>　　{</p>
<p>　　//some implementation</p>
<p>　　ChildMethod1();</p>
<p>　　}</p>
<p>　　catch(Exception exception)</p>
<p>　　{</p>
<p>　　//Handle exception</p>
<p>　　}</p>
<p>　　}</p>
<p>　　private void ChildMethod1()</p>
<p>　　{</p>
<p>　　//some implementation</p>
<p>　　ChildMethod2();</p>
<p>　　}</p>
<p>　　private void ChildMethod2()</p>
<p>　　{</p>
<p>　　//some implementation</p>
<p>　　}</p>
<p>　　}</p>
<p>　　6、大数据量上使用Dataset和DataReader混用，当单表数据量很大的情况，使用DataSet是一种很不明智的选择，应为DataSet是以DataTable内存形式存放数据量，一次性将数据拖入内存，当数据很大的情况下，这种方式是很吃内存的，相比DataSer，DataReader就显得优雅很多，它是每次读取一条数据，然后轮询调用机制，但是也有它的弊端，就是相对长连接，但是对内存消耗而言这是有利的，当然DataSet在大部分应用场景下也是有自己的优点，充分解耦、一次性操作、领域模型操作等方面，两者分情况分场景而用，这里只是稍微提提，根据场景分析区别。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abeion.com/2170.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>有关于程序员的漫画四幅：要钱还是要命？</title>
		<link>http://www.abeion.com/2163.html</link>
		<comments>http://www.abeion.com/2163.html#comments</comments>
		<pubDate>Thu, 15 Mar 2012 05:56:01 +0000</pubDate>
		<dc:creator>阿北</dc:creator>
				<category><![CDATA[新鲜趣闻]]></category>
		<category><![CDATA[LISP]]></category>
		<category><![CDATA[程序员]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[软件编程]]></category>

		<guid isPermaLink="false">http://www.abeion.com/?p=2163</guid>
		<description><![CDATA[<p>漫画一：软件编程</p><p>漫画二：使用 LISP 语言的程序员眼里其他语言程序员的形象</p><p>漫画三：学校里的编程和真实项目里的编程</p><p>漫画四：程序员与劫匪</p><p><a href="http://www.abeion.com/wp-content/uploads/2012/03/10221301932724558.jpg"></a></p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#160;</p><p>&#038;nbsp <span class='read-more'><a href='http://www.abeion.com/2163.html'>[Read More…]</a></span></p><div class="clear-float"></div>
		]]></description>
			<content:encoded><![CDATA[<p>漫画一：软件编程<br />
漫画二：使用 LISP 语言的程序员眼里其他语言程序员的形象<br />
漫画三：学校里的编程和真实项目里的编程<br />
漫画四：程序员与劫匪</p>
<p><a href="http://www.abeion.com/wp-content/uploads/2012/03/10221301932724558.jpg"><img class="alignleft size-full wp-image-2166" title="10221301932724558" src="http://www.abeion.com/wp-content/uploads/2012/03/10221301932724558.jpg" alt="" width="560" height="380" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://www.abeion.com/wp-content/uploads/2012/03/10221312141921848.jpg"><img class="alignleft size-full wp-image-2167" title="10221312141921848" src="http://www.abeion.com/wp-content/uploads/2012/03/10221312141921848.jpg" alt="" width="560" height="604" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://www.abeion.com/wp-content/uploads/2012/03/102214267586003.jpg"><img class="alignleft size-full wp-image-2164" title="102214267586003" src="http://www.abeion.com/wp-content/uploads/2012/03/102214267586003.jpg" alt="" width="537" height="809" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://www.abeion.com/wp-content/uploads/2012/03/1022153598871870.jpg"><img class="alignleft size-full wp-image-2165" title="1022153598871870" src="http://www.abeion.com/wp-content/uploads/2012/03/1022153598871870.jpg" alt="" width="560" height="466" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.abeion.com/2163.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>维也纳大学研发出世界上最小最快的3D打印机</title>
		<link>http://www.abeion.com/2159.html</link>
		<comments>http://www.abeion.com/2159.html#comments</comments>
		<pubDate>Wed, 14 Mar 2012 00:24:23 +0000</pubDate>
		<dc:creator>阿北</dc:creator>
				<category><![CDATA[创意设计]]></category>
		<category><![CDATA[斯蒂芬主教座堂]]></category>
		<category><![CDATA[液态树脂]]></category>
		<category><![CDATA[维也纳大学]]></category>

		<guid isPermaLink="false">http://www.abeion.com/?p=2159</guid>
		<description><![CDATA[<p>图中左上角是伦敦塔桥，左下角则是斯蒂芬主教座堂，而中间那副大图则是285微米微型F1赛车模型，这些可不是微雕，而是由世界上最快的3D打印机打出的最小的模型。具体过程可以观看下面的视频。</p><p>跟其他的3D打印机类似，该3D打印机也使用了液态树脂，该树脂可在激光束的照射下硬化成型，该技术称为双光子打印技 <span class='read-more'><a href='http://www.abeion.com/2159.html'>[Read More…]</a></span></p><div class="clear-float"></div>
		]]></description>
			<content:encoded><![CDATA[<p>图中左上角是伦敦塔桥，左下角则是斯蒂芬主教座堂，而中间那副大图则是285微米微型F1赛车模型，这些可不是微雕，而是由世界上最快的3D打印机打出的最小的模型。具体过程可以观看下面的视频。</p>
<object width="420" height="363"><param name="movie" value="http://www.tudou.com/v/GkpTUaCby90"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="never"></param><param name="allownetworking" value="internal"></param><param name="flashvars" value="" /><embed src="http://www.tudou.com/v/GkpTUaCby90" type="application/x-shockwave-flash" allowscriptaccess="never" allownetworking="internal" allowfullscreen="true" width="420" height="363" flashvars=""></embed></object>
<p>跟其他的3D打印机类似，该3D打印机也使用了液态树脂，该树脂可在激光束的照射下硬化成型，该技术称为双光子打印技术，它可以以你无法想象的速度打印出极其微小的模型。</p>
<p><a href="http://www.abeion.com/wp-content/uploads/2012/03/635d0477gw1dqyf79qwaoj.jpg"><img class="alignleft size-full wp-image-2160" title="635d0477gw1dqyf79qwaoj" src="http://www.abeion.com/wp-content/uploads/2012/03/635d0477gw1dqyf79qwaoj.jpg" alt="" width="500" height="281" /></a></p>
<p><a href="http://www.abeion.com/wp-content/uploads/2012/03/635d0477gw1dqyfbm1d6wj.jpg"><img class="alignleft size-full wp-image-2161" title="635d0477gw1dqyfbm1d6wj" src="http://www.abeion.com/wp-content/uploads/2012/03/635d0477gw1dqyfbm1d6wj.jpg" alt="" width="500" height="316" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>该新型打印技术基于一种可微调的加速激光镜，由维也纳大学一个科研团队开发而成可以制成疯狂的纳米级模型。Jürgen Stampfl 教授称：“在这之前3D打印技术一直很慢，之前的打印技术大概是毫米每秒，而我们装置可以达到5米每秒。”</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abeion.com/2159.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>八大疯狂的HTML5 Canvas及WebGL动画效果</title>
		<link>http://www.abeion.com/2154.html</link>
		<comments>http://www.abeion.com/2154.html#comments</comments>
		<pubDate>Wed, 14 Mar 2012 00:13:02 +0000</pubDate>
		<dc:creator>阿北</dc:creator>
				<category><![CDATA[信息前沿]]></category>
		<category><![CDATA[Canvas]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[WebGL]]></category>

		<guid isPermaLink="false">http://www.abeion.com/?p=2154</guid>
		<description><![CDATA[<p>HTML5、WebGL和JavaScript改变了长久以来的动画制作行业。在过去的几年中，我们想要制作卓越的网页动画只能使用Flash和Java Applet。而现在，使用脚本语言和渲染器在浏览器中实现疯狂的动画效果已经成为可能。究其原因，大概有以下几点：</p><p>&#160;</p><p>处理器的性能越 <span class='read-more'><a href='http://www.abeion.com/2154.html'>[Read More…]</a></span></p><div class="clear-float"></div>
		]]></description>
			<content:encoded><![CDATA[<p>HTML5、WebGL和JavaScript改变了长久以来的动画制作行业。在过去的几年中，我们想要制作卓越的网页动画只能使用Flash和Java Applet。而现在，使用脚本语言和渲染器在浏览器中实现疯狂的动画效果已经成为可能。究其原因，大概有以下几点：</p>
<p>&nbsp;</p>
<ul>
<li>处理器的性能越来越高。我们的电脑已经有足够的强大的能力去渲染最为复杂的动画效果。</li>
<li>现在浏览器和web技术的不断发展。浏览器如Firefox、Chrome、Safari和IE10，web技术如Canvas、SVG和WebGL。</li>
<li>网速越来越快。一些体验需要实时数据流和预加载资源，更好的网络状况能有更好的体验。</li>
</ul>
<p>我们挑选了8个由WebGL、HTML5 Canvas和Javascript制作的绝妙效果。每一个都非常简单但却发人深省，疯狂并且极具创意。</p>
<div id="toc_container">
<p>目录</p>
<ul>
<li><a href="http://www.hiwebgl.com/?p=922#i">1 黏糊糊的东西</a></li>
<li><a href="http://www.hiwebgl.com/?p=922#i-2">2 粒子动画</a></li>
<li><a href="http://www.hiwebgl.com/?p=922#i-3">3 三维液体</a></li>
<li><a href="http://www.hiwebgl.com/?p=922#i-4">4 章鱼</a></li>
<li><a href="http://www.hiwebgl.com/?p=922#i-5">5 蠕虫</a></li>
<li><a href="http://www.hiwebgl.com/?p=922#i-6">6 疯狂的触角</a></li>
<li><a href="http://www.hiwebgl.com/?p=922#i-7">7 随机视觉</a></li>
<li><a href="http://www.hiwebgl.com/?p=922#Conductor">8 Conductor</a></li>
</ul>
</div>
<h3>黏糊糊的东西</h3>
<p>用鼠标拖拽，然后扔出去，就会粘在网页边缘。</p>
<p><a href="http://www.spielzeugz.de/html5/sticky-thing/"><img title="" src="http://img.cnbeta.com/newsimg/120313/23130201474242916.jpg" alt="" width="500" height="250" /></a></p>
<h3>粒子动画</h3>
<p>使用浮点纹理和FBO来实现的动画，由粒子组成一匹奔跑的骏马。</p>
<p><a href="http://empaempa.github.com/GLOW/examples/complicated/"><img title="" src="http://img.cnbeta.com/newsimg/120313/2313021538508085.jpg" alt="" width="500" height="250" /></a></p>
<h3>三维液体</h3>
<p>用3D的方式呈现经典的2D水面效果算法。</p>
<p><a href="http://www.abeion.com/wp-content/uploads/2012/03/23130222106873730.jpg"><img class="alignleft size-full wp-image-2155" title="23130222106873730" src="http://www.abeion.com/wp-content/uploads/2012/03/23130222106873730.jpg" alt="" width="500" height="250" /></a></p>
<h3>章鱼</h3>
<p>WebGL和Three.js制作的漂亮的章鱼状的星空动画</p>
<p><a href="http://dl.dropbox.com/u/6983010/wserv/gexp_pulpo/index.html"><img title="" src="http://img.cnbeta.com/newsimg/120313/23130231567436148.jpg" alt="" width="500" height="250" /></a></p>
<h3>蠕虫</h3>
<p>HTML5 Canvas制作的效果，无数条蠕虫根据灰度组成图片，你还可以拖拽一张本地图片到右侧。</p>
<p><a href="http://html5-pro.com/wormz/"><img title="" src="http://img.cnbeta.com/newsimg/120313/2313024967236216.jpg" alt="" width="500" height="250" /></a></p>
<h3>疯狂的触角</h3>
<p><a href="http://grantkot.com/tentacles.html"><img title="" src="http://img.cnbeta.com/newsimg/120313/2313035297404839.jpg" alt="" width="500" height="250" /></a></p>
<h3>随机视觉</h3>
<p><a href="http://voxelrain.appspot.com/"><img title="" src="http://img.cnbeta.com/newsimg/120313/23130361435667621.jpg" alt="" width="500" height="250" /></a></p>
<h3>Conductor</h3>
<p>将纽约地铁系统变成可以弹奏的弦乐器。</p>
<p><a href="http://www.mta.me/"><img title="" src="http://img.cnbeta.com/newsimg/120313/23130371124988892.jpg" alt="" width="500" height="250" /></a></p>
<p>&nbsp;</p>
<p><em>原文地址：<a href="http://favbulous.com/post/895/8-crazy-animations-withwebgl-and-html5-canvas" target="_blank">http://favbulous.com/post/895/8-crazy-animations-withwebgl-and-html5-canvas</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.abeion.com/2154.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>土豆内部下封口令 与优酷版权官司或大事化了</title>
		<link>http://www.abeion.com/2151.html</link>
		<comments>http://www.abeion.com/2151.html#comments</comments>
		<pubDate>Wed, 14 Mar 2012 00:11:18 +0000</pubDate>
		<dc:creator>阿北</dc:creator>
				<category><![CDATA[信息前沿]]></category>
		<category><![CDATA[tudou]]></category>
		<category><![CDATA[youku]]></category>
		<category><![CDATA[优酷]]></category>
		<category><![CDATA[土豆]]></category>

		<guid isPermaLink="false">http://www.abeion.com/?p=2151</guid>
		<description><![CDATA[<p><a href="http://www.abeion.com/wp-content/uploads/2012/03/1Q0015462-0.jpg"></a></p><p>优酷与土豆合并，不但让外界震惊，就连其内部员工也不例外。昨日（3月13日），接受《每日经济新闻》记者采访的几位土豆网员工均表示，对合并一事惊讶。不过，由于土豆网已对全体人员下达“封口令”，所以上述员工均婉拒了进一步采访。伴随着合并，此前优酷与土豆之间在知识产权方面的 “视界大战”也或将结束。 <span class='read-more'><a href='http://www.abeion.com/2151.html'>[Read More…]</a></span></p><div class="clear-float"></div>
		]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.abeion.com/wp-content/uploads/2012/03/1Q0015462-0.jpg"><img class="alignleft size-full wp-image-2152" title="1Q0015462-0" src="http://www.abeion.com/wp-content/uploads/2012/03/1Q0015462-0.jpg" alt="" width="590" height="225" /></a></p>
<p>优酷与土豆合并，不但让外界震惊，就连其内部员工也不例外。昨日（3月13日），接受《每日经济新闻》记者采访的几位土豆网员工均表示，对合并一事惊讶。不过，由于土豆网已对全体人员下达“封口令”，所以上述员工均婉拒了进一步采访。伴随着合并，此前优酷与土豆之间在知识产权方面的 “视界大战”也或将结束。</p>
<p><strong>　　土豆对员工下达“封口令”</strong></p>
<p>优酷与土豆合并，让“土豆网将裁员”这一消息也跟着传了出来。</p>
<p>昨日下午4时左右，《每日经济新闻》记者来到位于北京北苑路上的北美国际商务中心，这里是包括58同城、窝窝团在内的众多互联网公司的聚集地。整个园区的中心是一个方形大广场，土豆网北京分公司位于广场的西北角。</p>
<p>当时正值上班时间，土豆网门口并无异样。记者对前台人员说明采访意图后，被告知高管出去开会了，不在办公室，“我们一切正常”。</p>
<p>资料显示，合并后，优酷股东及美国存托凭证持有者将拥有新公司约71.5%的股份，土豆股东及美国存托凭证持有者将拥有新公司约28.5%的股份。由于在股权配置中优酷网占“上风”，这也让外界纷纷猜测土豆网员工离职速度会加快。</p>
<p>尽管根据双方公布的内容，土豆将保留其品牌和平台的独立性，帮助加强和完善优酷土豆的视频业务，但互联网资深观察家丁道师告诉《每日经济新闻》记者，双方合并后，很多环节的人员重合，必然要精简。</p>
<p>“土豆网的员工昨天听到这个消息时，的确是一阵惊讶。”某知情人士告诉记者，大家窃窃私语，然后继续正常工作。</p>
<p>“至少平台没有变化。”土豆网上海公司某员工私下对记者表示，别人是否离职他不清楚，但他自己不会离职。</p>
<p>由于土豆网是全员持股，与裁员相关的期权行权问题也引起了外界关注。公开资料显示，只要进入土豆网转正后的员工都会有，其中早进的员工可拿2万~3万股，但需要1年后才能行权，4年后才能套现全部期权。</p>
<p>记者就此对多位土豆员工进行采访，对方均以不方便为由，拒绝透露。上述知情人士表示，合并的消息公布后，土豆网已不允许员工接受采访。</p>
<p><strong>　　双方“视界大战”或结束</strong></p>
<p>双方的合并，还让此前的法律纠纷更具“戏剧”色彩。</p>
<p>国内互联网从来不缺乏口水战，在视频领域，优酷、土豆可谓是老冤家。几个月前，双方还曾因版权纠纷而“大打出手”、对簿公堂，互相指责对方侵权。相关人员也是冷嘲热讽、明争暗斗。</p>
<p>王微当时甚至表示，除提出侵权赔偿要求外，将向互联网产业主管部门以及国家版权局进行举报，并要求对优酷进行列入黑名单乃至吊销资质等处理，以及向中国和国际各版权和知识产权机构申诉。</p>
<p>然而，大吵大闹尚无结果之时，两家居然合并了。“这好似一对青年男女，前一秒钟还在当街对骂，后一秒钟却高调示爱并拿出了结婚证。”一位不愿具名的土豆网员工在微博上毫不掩饰自己的惊诧。</p>
<p>据了解，去年底海淀法院就受理了优酷对土豆的诉讼，两家合并后，此案将如何处理？上述知情人士表示，合并之事刚刚宣布，具体工作还未展开。</p>
<p>“不会自己人告自己人”，多位受访的业内人士昨日认为必将不了了之，但针对优酷的诉讼也会多起来。</p>
<p>“合二为一的结果是，原来两家的知识产权纠纷集中在一家身上。”IT时评家张书乐认为，视频行业已趋向寡头模式，优酷土豆合并后，一夜之间成了行业“公敌”。</p>
<p>中国网络法律网首席法律顾问赵占领也认为，合并之后视频行业竞争格局清晰，但竞争将越来越激烈，腾讯、百度、新浪、搜狐等在资金、品牌、流量方面都有优势，法律作为商战武器将会使用更多。</p>
<p>《每日经济新闻》</p>
]]></content:encoded>
			<wfw:commentRss>http://www.abeion.com/2151.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gmail最新载入界面可让人感觉速度加快11%</title>
		<link>http://www.abeion.com/2147.html</link>
		<comments>http://www.abeion.com/2147.html#comments</comments>
		<pubDate>Sat, 10 Mar 2012 01:57:38 +0000</pubDate>
		<dc:creator>阿北</dc:creator>
				<category><![CDATA[新鲜趣闻]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[New Scientist]]></category>
		<category><![CDATA[Stack Exchange]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://www.abeion.com/?p=2147</guid>
		<description><![CDATA[<p>Gmail 最新载入界面中的进度条的内部动画是从右向左的. 为什么呢? Stack Exchange 站群 User Experience 分站作出了<a href="http://ux.stackexchange.com/questions/18361/why-do-progress-bars-animate-backwards">解答</a>. 因为<a href="http://www.chrisharrison.net/projects/progressbars2/ProgressBarsHarrison.pdf">研究</a>表明, 反向的内部动画可以加快人感觉中的速度, 程度大约有 11%. 有兴趣的同学可以点击查看 New Scientist 提供的<a href="http://www.newscientist.com/video/76695476001-progress-bar-illusion.html">视频 <span class='read-more'><a href='http://www.abeion.com/2147.html'>[Read More…]</a></span></a></p><div class="clear-float"></div>
		]]></description>
			<content:encoded><![CDATA[<p>Gmail 最新载入界面中的进度条的内部动画是从右向左的. 为什么呢? Stack Exchange 站群 User Experience 分站作出了<a href="http://ux.stackexchange.com/questions/18361/why-do-progress-bars-animate-backwards">解答</a>. 因为<a href="http://www.chrisharrison.net/projects/progressbars2/ProgressBarsHarrison.pdf">研究</a>表明, 反向的内部动画可以加快人感觉中的速度, 程度大约有 11%. 有兴趣的同学可以点击查看 New Scientist 提供的<a href="http://www.newscientist.com/video/76695476001-progress-bar-illusion.html">视频</a>, 便会有个非常清晰的比较.</p>
<p><a href="http://www.abeion.com/wp-content/uploads/2012/03/Gmail-Loading.png"><img class="alignleft size-full wp-image-2148" title="Gmail Loading" src="http://www.abeion.com/wp-content/uploads/2012/03/Gmail-Loading.png" alt="" width="457" height="194" /></a></p>
<p><object id="flashObj" width="486" height="412" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" /><param name="flashvars" value="videoId=76695476001&amp;playerID=2227271001&amp;playerKey=AQ~~,AAAAADqBmN8~,Yo4S_rZKGX0rYg6XsV7i3F9IB8jNBoiY&amp;domain=embed&amp;dynamicStreaming=true" /><param name="base" value="http://admin.brightcove.com" /><param name="seamlesstabbing" value="false" /><param name="allowfullscreen" value="true" /><param name="swliveconnect" value="true" /><param name="allowscriptaccess" value="always" /><param name="pluginspage" value="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" /><embed id="flashObj" width="486" height="412" type="application/x-shockwave-flash" src="http://c.brightcove.com/services/viewer/federated_f9?isVid=1" flashvars="videoId=76695476001&amp;playerID=2227271001&amp;playerKey=AQ~~,AAAAADqBmN8~,Yo4S_rZKGX0rYg6XsV7i3F9IB8jNBoiY&amp;domain=embed&amp;dynamicStreaming=true" base="http://admin.brightcove.com" seamlesstabbing="false" allowfullscreen="true" swliveconnect="true" allowscriptaccess="always" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" /></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.abeion.com/2147.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何编写优质的API文档</title>
		<link>http://www.abeion.com/2142.html</link>
		<comments>http://www.abeion.com/2142.html#comments</comments>
		<pubDate>Sat, 10 Mar 2012 01:52:40 +0000</pubDate>
		<dc:creator>阿北</dc:creator>
				<category><![CDATA[生活小记]]></category>
		<category><![CDATA[API]]></category>

		<guid isPermaLink="false">http://www.abeion.com/?p=2142</guid>
		<description><![CDATA[<p>编写技术文档，是令众多开发者望而生畏的任务之一。它本身是一件费时费力才能做好的工作。可是大多数时候，人们却总是想抄抄捷径，这样做的结果往往非常令人遗憾的，因为优质的技术文档是决定你的项目是否引人关注的重要因素。无论开源产品或面向开发者的产品，均是如此。</p><p>实际上，我想说明的是：对于面向开发者的产品 <span class='read-more'><a href='http://www.abeion.com/2142.html'>[Read More…]</a></span></p><div class="clear-float"></div>
		]]></description>
			<content:encoded><![CDATA[<p>编写技术文档，是令众多开发者望而生畏的任务之一。它本身是一件费时费力才能做好的工作。可是大多数时候，人们却总是想抄抄捷径，这样做的结果往往非常令人遗憾的，因为优质的技术文档是决定你的项目是否引人关注的重要因素。无论开源产品或面向开发者的产品，均是如此。</p>
<p>实际上，我想说明的是：对于面向开发者的产品来说，其用户体验中最重要的一环并不是什么主页设计、登录过程、或者SDK下载。真正最重要的是产品的API文档！如果没人知道你的产品如何使用，纵使它巧夺天工，又有何用？</p>
<p>如果你是一个专门从事面向开发者产品设计的工程师，那么编写完善的技术文档，就跟你为终端用户提供良好用户体验一样关键。（API 设计是很聪明的投资，你得到的回报是忠实的开发人员。详见：《<a href="http://blog.jobbole.com/10197/">为什么“开发人员友好性”是API设计的核心</a>》。）</p>
<p>我见过许多类似的情况，一个项目被草率地扔到GitHub的页面上，仅仅配有两行的readme说明文件。要知道，真正成功的API文档是需要用爱来悉心制作的艺术品。在Parse产品项目里，我们就把自己奉献给了这门艺术！</p>
<p>那么，什么才是制作优秀API文档的关键因素呢？</p>
<p><strong>0. 绝不吝惜使用层次</strong><br />
你的设计文档不应当仅仅直白地列出所有的终端函数和其参数。好的文档应该是一整套有机的系统内容，能指引用户通过文档与API进行交互。退一万步说，你至少让你的文档包含以下几个部分。<br />
参考索引：参考索引应当是一个事无巨细的列表，包含了所有功能函数的繁文缛节。它必须注明所有的数据类型和函数规格。高级开发者要能够拿着它整天当参考书使用。<br />
开发指南：这是介于参考索引和开发教程中间程度的文档。它就仿佛是一篇更加详细的参考索引，阐明了如何使用各种API。<br />
开发教程：开发教程会更加具体地阐述如何使用API，并着重介绍其中的一部分功能。如果能提供可编译运行的源代码，那就再好不过了。<br />
在Parse项目里，我们做到了上述所有三个部分。目前我们正在努力编制更多的开发教程。<br />
另外一个此方面优秀的范例是Stripe’s API(http://www.stripe.com) 。这个产品的文档包括一个很棒的《hybrid guide and reference》，以及一套开发教程。《GitHub API参考》也经过了良好的设计。</p>
<p><strong>1. 不要在例子中包含抽象概念</strong><br />
你可以争辩说，我的API本身就是个抽象体, 抽象就是它的特点。然而，当你在教会开发者如何使用的过程中，还是能不抽象就不抽象比较好。<br />
在你的文档中尽可能地举现实中的例子吧。没有哪个开发者会抱怨你举例太多的。实际上，这种做法能显著地缩短开发者理解你产品的时间。对此，我们的网站里甚至给出一个代码样例加以解释。</p>
<p><a href="http://www.abeion.com/wp-content/uploads/2012/03/22051901882087878.gif"><img class="alignleft size-full wp-image-2144" title="22051901882087878" src="http://www.abeion.com/wp-content/uploads/2012/03/22051901882087878.gif" alt="" width="824" height="482" /></a></p>
<p><strong>3. 减少点击次数</strong><br />
开发者痛恨点击鼠标，这已经不是什么秘密了。千万别把你的文档分散在数以万计的页面当中。尽量把相关的主题都放到一个页面里。<br />
我们非常赞成使用“单页面大指南”的组织形式（<a href="http://www.parse.com/docs/ios_guide">链接</a>），这种形式不仅能让用户纵览全局，仅仅通过一个导航栏就能进入他们感兴趣的任意主题，另外还有一个好处是：用户在进行搜索的时候，仅仅搜索当前页面，就能涵盖查找所有的内容。<br />
在这个方面的一个优秀范例是<a href="http://documentcloud.github.com/backbone/">ckbone.js documentation</a>，只要你有个鼠标，一切尽在掌握。</p>
<p><strong>4. 包含适当的快速指南</strong><br />
万事开头难，开发者/<a href="http://blog.jobbole.com/821/">程序员</a>学习一套全新的API，不得不重新适应其全新的思维方式，学习代价高昂。对于这个问题的解决办法是：通过快速指南来引导开发者。<br />
快速指南的目的是让用户用最小的代价学习如何利用你提供的API干一些小事。仅此而已。一旦用户完成了快速指南，他们就对自己有了信心，并能向更加深入的主题迈进。<br />
举个例子，我们的快速指南能让用户下载SDK以及在平台上存储一个对象。为此，我们甚至做了一个按钮，来让用户测试他们是否正确地完成了快速指南。这能提升用户的信心，以鼓励他们学习我们产品其他的部分。</p>
<p><strong>5. 支持多种<a href="http://blog.jobbole.com/tag/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/">编程语言</a></strong><br />
我们生活在一个多语言的世界。如果可能的话，为你的API提供各种编程语言版本的样例程序，只要的API支持这些语言。多数时候，多语言的工作都是由客户端库来完成的。要知道，开发者要想掌握一套API，离开他们熟悉的编程语言，是很难想象的。<br />
<a href="http://documentation.mailgun.net/api-intro.html#base-url">MailGun’s API</a>为此做出了良好的榜样。它提供了curl,Ruby,Python,Java,C#和PHP等多个版本供开发者选择。</p>
<p><strong>6. 绝不放过任何边界情况</strong><br />
使用API开发应用，所能遭遇的最糟糕的情况，莫过于你发现了一个文档中没有提到的错误。如果你遇到这种情况，就意味着你不能确认究竟是你的程序出了错，还是你对API的理解出了错。<br />
因此，参考索引中必须包含每种假设可能造成的边界情况，不论是显示的还是隐式的。花点儿时间在这个上面，绝对能起到事半功倍的效果。</p>
<p><strong>7. 提供样例应用</strong><br />
在学习结束的时候，开发者希望能看到关于项目产品应用的大致蓝图。达到这一目的最好的办法，莫过于提供可运行的样例应用。我发现，应用程序代码是将API运行机理和系统整合融会贯通最好的办法。<br />
<a href="http://developer.apple.com/library/ios/navigation/#section=Resource%20Types&amp;amp;amp;topic=Sample%20Code">sample code in Apple’s iOS Developer Library</a> 则是这方面做得很好的，它包含了详尽的iOS样例程序，并按主题一一分类。</p>
<p><strong>8. 加入人性化的因素</strong><br />
阅读技术文档枯燥乏味，自然不像坐过山车那样紧张刺激。不过，你至少可以通过加入一些人性化的因素，或者开开玩笑。给你的例子中的变量其一些好玩儿的名字吧，别老是把函数名称叫什么foo之类的，好让你的读者有焕然一新的感觉。<br />
至少，这可以保证你的读者不会读着读着就睡过去。</p>
<p><strong>结论：</strong><br />
若要想深入人心，一个良好的设计文档必不可少。然而，设计一个好文档是需要大量投入才能形成的。但是，这些投入是值得的，因为它的意义和产品本身同等重要。<br />
编写良好文档的另一半诀窍，是要从产品开发的初始阶段就朝着这个方向努力。不过，这就不是本文讨论的范畴了。</p>
<p>英文原文：<a href="http://blog.parse.com/2012/01/11/designing-great-api-docs/">James Yu</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.abeion.com/2142.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

