<?xml version="1.0" encoding="UTF-8" ?><feed version="0.3" xml:lang="zh-cn" xmlns="http://purl.org/atom/ns#">
<title type="text/plain">
<![CDATA[ DarkSpy Blog ]]> 
 </title>
 <tagline type="text/plain">
<![CDATA[ DarkSpy 的 部落格  ]]> 
 </tagline>
<link rel="alternate" type="text/html" href="http://www.darkspy.org/blog_new/index.php" title="Atom feed" /> 
<author>
<name>
<![CDATA[ DarkSpy ]]> 
</name>
<url>
<![CDATA[ http://www.darkspy.org/blog_new/ ]]> 
</url>
<email>
<![CDATA[ @  ]]> 
</email>
</author>
<id>
<![CDATA[ http://www.darkspy.org/blog_new/atomfeed.php  ]]> 
</id>
<generator url="http://www.darkspy.org/blog_new/" version="0.3">Blog Atom Feed</generator> 
<copyright type="text/plain" mode="escaped">
<![CDATA[ Powered by Bo-Blog V1.7.0108.2, All rights reserved.  ]]> 
</copyright>
<modified>2012-2-2T06:50:10Z</modified><entry>
<title type="text/plain" mode="escaped">Why I hate religion, but love Jesus</title>
<link rel="alternate" type="text/html" href="http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120202_064808" title="Web Page" />
<link rel="source" type="text/html" href="http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120202_064808" title="Web Page" /> 
<author>
<name>
<![CDATA[ DarkSpy ]]> 
</name>
<url>
<![CDATA[ http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120202_064808 ]]> 
</url>
<email>
<![CDATA[ @  ]]> 
</email>
</author>
<id>
<![CDATA[ http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120202_064808  ]]> 
</id>
<modified>2012-2-2T19:48:08Z</modified> 
<issued>2012-2-2T19:48:08Z</issued> 
<created>2012-2-2T19:48:08Z</created> 
<summary type="text/plain" mode="escaped">
<![CDATA[ youtube 点击上千万的视频，目前的... ]]> 
</summary>
<content type="text/html" mode="escaped">
<![CDATA[ youtube 点击上千万的视频，目前的中文字幕版本。<br /><a href="http://player.youku.com/player.php/sid/XMzQ3MjI3MjAw/v.swf" target="_blank">[Full Window]</a><br /><object width="400" height="300" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"><param name="movie" value="http://player.youku.com/player.php/sid/XMzQ3MjI3MjAw/v.swf" /><param name="quality" value="high" /><param name="play" value="false" /><embed width="480" height="400" src="http://player.youku.com/player.php/sid/XMzQ3MjI3MjAw/v.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" /></object>  ]]> 
</content>
</entry><entry>
<title type="text/plain" mode="escaped">如何写好程序(四)</title>
<link rel="alternate" type="text/html" href="http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120127_225400" title="Web Page" />
<link rel="source" type="text/html" href="http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120127_225400" title="Web Page" /> 
<author>
<name>
<![CDATA[ DarkSpy ]]> 
</name>
<url>
<![CDATA[ http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120127_225400 ]]> 
</url>
<email>
<![CDATA[ @  ]]> 
</email>
</author>
<id>
<![CDATA[ http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120127_225400  ]]> 
</id>
<modified>2012-1-28T11:54:00Z</modified> 
<issued>2012-1-28T11:54:00Z</issued> 
<created>2012-1-28T11:54:00Z</created> 
<summary type="text/plain" mode="escaped">
<![CDATA[ <br/>4. 抽象<br /><br ... ]]> 
</summary>
<content type="text/html" mode="escaped">
<![CDATA[ <br/>4. 抽象<br /><br />至少在我看来，抽象能力是一个程序员必备的一门技艺，一个能力，一个程序员不具备抽象能力或者抽象能力很弱，那他的水平会受到巨大的局限。<br /><br />有很多种的程序员，有写架构的，有写框架的，有写类库的，有写优化的，有专门写一种的，有可以写多种语言的，等等，但是，如果一个程序员缺少了抽象能力，就相当于少了一只手在打字。<br /><br />为什么说抽象能力那么重要。<br /><br />抽象能力的体现是程序员对成品总体把握度的一个认识的归纳和映射，有些程序员自诩优化做的相当不错，从某种意义上讲，优化做的不错确实是好，然而局限在一个点上，是无法将视野扩展到架构和框架层面的，哪怕程序写的再好，或者自己想象一套非常好的架构在网上任人追捧，都无济于事，因为在实战状况下，自己预想的设计会遇到层层阻碍。<br /><br />或许你会说，有经验的程序员会将这个阻碍的可能性降到最低，然而再好的程序员，都有可能存在没有想到的某一个部分，所以实战前的 UML 等作战部署尤其重要，借助经验和工具，将这种可能性降到最低，完成抽象和架构的部署，最终写的时候就不会出现太大的篓子。<br /><br />那么什么样子的抽象是好的呢，按照具体而言，我将它分为3个层面，可复用层，业务层 和 逻辑层，但这三个层面并非一定要这样分，大致情况是分这三个层面。比如我要写一个下载软件，那么抽象的层面可能是这样：<br /><br />可复用层：网络底层接口，事件调用机制 以及 出错机制。<br />业务层：添加新任务，下载事件，错误处理 等。<br />逻辑层：添加任务的逻辑，下载的逻辑，错误处理逻辑 等。<br /><br />分清楚了这三层，就可以很容易的开始编码了，当然在这开始之前，需要把整个产品的流程在脑海里面想一遍或者最好通过 UML 等辅助工具做一遍，当然如果你觉得自己已经很牛逼了，那么你可以尝试只用人肉建模就可以了，看看写的时候会超出你的想象多少。<br /><br />to be continued...<br/>  ]]> 
</content>
</entry><entry>
<title type="text/plain" mode="escaped">如何写好程序(三)</title>
<link rel="alternate" type="text/html" href="http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120116_005906" title="Web Page" />
<link rel="source" type="text/html" href="http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120116_005906" title="Web Page" /> 
<author>
<name>
<![CDATA[ DarkSpy ]]> 
</name>
<url>
<![CDATA[ http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120116_005906 ]]> 
</url>
<email>
<![CDATA[ @  ]]> 
</email>
</author>
<id>
<![CDATA[ http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120116_005906  ]]> 
</id>
<modified>2012-1-16T13:59:06Z</modified> 
<issued>2012-1-16T13:59:06Z</issued> 
<created>2012-1-16T13:59:06Z</created> 
<summary type="text/plain" mode="escaped">
<![CDATA[ 3. 细化目标<br /><br />在... ]]> 
</summary>
<content type="text/html" mode="escaped">
<![CDATA[ 3. 细化目标<br /><br />在明确了目标之后，我们还要细化目标，细化的目的是为了更好的将代码模块化，之后的章节我会写到，如何将代码模块化以及抽象化。<br /><br />一个细化的目标将会很容易的成为代码的明确框架，以及策划方案，当然这个目标可能是在脑中形成，而非白纸黑字写在纸上的。程序员不喜欢写策划案，写出来的策划案也可能常改。<br /><br />这也可能是为什么程序员是男性的居多，因为男性的想象能力相比女性更好一点。<br /><br />细化目标的内容可以分下面几个内容。<br /><br />1、有几个模块要做<br />2、难点是什么<br />3、最复杂的代码是什么，是否可以简单化<br />4、用户体验<br /><br />当然第4条，如果是 console 程序，就不用特别考虑用户体验了。<br /><br />至于第3和第2点，复杂并非是难点，复杂的意思是，很多重复机械化的代码，比如某些 UI 的重复性，需要敲许多复杂的代码，但是逻辑并不复杂，如果是这样，考虑是否可以简单之，比如，是否可以用一个宏或者某些代理类完成。<br /><br />第一点是着重要讨论的，有多少模块，和我之后要讲的抽象内容是分不开的，一个好的模块设计是程序是否成熟的关键，好的模块必须是低耦合，高复用的，然而这并非是绝对的概念，比如 UI 和事件，可以是低耦合，高复用，但是 UI 之间的模块，肯定有不少耦合性，必须绑在一起，比如 MDI 和 SDI 之间，等等。<br /><br />to be continued...<br/><br/>  ]]> 
</content>
</entry><entry>
<title type="text/plain" mode="escaped">如何写好程序(二)</title>
<link rel="alternate" type="text/html" href="http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120112_200614" title="Web Page" />
<link rel="source" type="text/html" href="http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120112_200614" title="Web Page" /> 
<author>
<name>
<![CDATA[ DarkSpy ]]> 
</name>
<url>
<![CDATA[ http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120112_200614 ]]> 
</url>
<email>
<![CDATA[ @  ]]> 
</email>
</author>
<id>
<![CDATA[ http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120112_200614  ]]> 
</id>
<modified>2012-1-13T09:06:14Z</modified> 
<issued>2012-1-13T09:06:14Z</issued> 
<created>2012-1-13T09:06:14Z</created> 
<summary type="text/plain" mode="escaped">
<![CDATA[ <br/>2. 明确目标<br /><b... ]]> 
</summary>
<content type="text/html" mode="escaped">
<![CDATA[ <br/>2. 明确目标<br /><br />写任何程序都需要明确目标，不管是公司的项目，私人的项目，游戏，系统，哪怕一个小小的类库都需要明确目标。<br /><br />为什么要明确目标，道理很简单，因为如果不明确目标，很多程序员的习惯会这里优化一点，那里添加一点，最后做出一个四不像，为了尽可能避免后续的 过度设计 或者 无法设计 等问题，明确自己的目标是很重要的。<br /><br />程序员不喜欢写文档没有关系，然而目标一定要在自己脑里面明确。<br /><br />做个人的软件更是如此，可能在最后成品阶段，会将最初目标和成品做一个妥协，比如某个功能没有完成，放到下一个版本推出吧；或者有些人的习惯是，不完成誓不罢休，这就是对最初目标的一个妥协或者贯彻。<br /><br />那么为什么目标明确了还会有妥协的阶段？<br /><br />第一因为市场因素，第二是因为精力和投资。如果没有妥协，最初目标是没有意义的，当然你可能完全按照最初目标去实现，按照 agile 原则，是在不停的修正中进行下去的，所以最初设计的目标必须是一个大目标，比如我要实现一个下载工具，而非细化的目标，比如这个工具要长的像迅雷等等，这些都属于细化的方案，是在设计过程中逐步妥协完善的。<br /><br />当我们明确了目标之后，就有了下一步需要实施的东西，那就是细化目标，妥协，实现，妥协，实现 这个步骤。<br /><br />有很多人问，这个和写好程序有关系吗，显然有不可分割的联系，因为如果自己都不知道要做什么，怎么能写好东西呢？<br /><br />to be continued...<br/>  ]]> 
</content>
</entry><entry>
<title type="text/plain" mode="escaped">如何写好程序(一)</title>
<link rel="alternate" type="text/html" href="http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120108_015503" title="Web Page" />
<link rel="source" type="text/html" href="http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120108_015503" title="Web Page" /> 
<author>
<name>
<![CDATA[ DarkSpy ]]> 
</name>
<url>
<![CDATA[ http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120108_015503 ]]> 
</url>
<email>
<![CDATA[ @  ]]> 
</email>
</author>
<id>
<![CDATA[ http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120108_015503  ]]> 
</id>
<modified>2012-1-8T14:55:03Z</modified> 
<issued>2012-1-8T14:55:03Z</issued> 
<created>2012-1-8T14:55:03Z</created> 
<summary type="text/plain" mode="escaped">
<![CDATA[ 这是一个很大的命题，有人说你胆子太大了，... ]]> 
</summary>
<content type="text/html" mode="escaped">
<![CDATA[ 这是一个很大的命题，有人说你胆子太大了，不怕被吐槽吗？也有人说你的水平还没有C++之父高呢，人家都没写这个题材。<br /><br />其实我想写的很简单，也很浅显易懂，然而很多人就是做不好，很多人也学不好，写不好。<br /><br />如何写好程序这个系列，不知道会写多久，或许几章，或许几十章，2012年的开始，就想写这篇系列，这个系列是在2011年12月萌发的，一直很懒，到现在才写。<br /><br />本来想写的系列是：如何写好C++程序，后来发现太片面了，很多东西都是相通的，最终取了一个如何写好程序。<br /><br />1、要对程序有兴趣<br /><br />啊这是废话不是吗？难道写程序的人对程序没兴趣？<br /><br />当然有了，why not？有人纯粹是为了一份好工作好薪水去做程序员的。当然在大学里面，可能你学到的东西只是理论，到正式场合下来用，一定被人打枪。<br /><br />如果你对程序没有任何兴趣，我劝你还是放弃这份职业，因为可能你没有任何出路，或者你正在复制粘贴并拿着高薪的快感中存在的时候，就不停的跳槽，最终厌恶这份职业。<br /><br />在做了几十年程序之后，对程序的某个方面多少会有厌倦或者厌恶感，比如厌恶了做服务器端，厌恶了做引擎等等。<br /><br />但是你始终不能失去对程序的兴趣，虽然兴趣没有初期那么强烈，然而完全不能失去这个动力，这是动力，也是唯一能让你成功的，写好程序的动力。<br /><br />如果这一切兴趣都失去了怎么办，那我想最好尽快找其他工作或者其他岗位吧，不夸张，也不是忽悠。<br /><br />to be continued...  ]]> 
</content>
</entry><entry>
<title type="text/plain" mode="escaped">智能手机和平板电脑将决定2012美国总统大选成败</title>
<link rel="alternate" type="text/html" href="http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120102_202215" title="Web Page" />
<link rel="source" type="text/html" href="http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120102_202215" title="Web Page" /> 
<author>
<name>
<![CDATA[ DarkSpy ]]> 
</name>
<url>
<![CDATA[ http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120102_202215 ]]> 
</url>
<email>
<![CDATA[ @  ]]> 
</email>
</author>
<id>
<![CDATA[ http://www.darkspy.org/blog_new/index.php?job=art&amp;articleid=a_20120102_202215  ]]> 
</id>
<modified>2012-1-3T09:22:15Z</modified> 
<issued>2012-1-3T09:22:15Z</issued> 
<created>2012-1-3T09:22:15Z</created> 
<summary type="text/plain" mode="escaped">
<![CDATA[ zt from cnbeta<br />... ]]> 
</summary>
<content type="text/html" mode="escaped">
<![CDATA[ zt from cnbeta<br />社交网络在上一届美国总统大选中发挥着重要作用，但自2008年以来智能手机使用量的爆炸性增长和平板电脑的推出将决定2012年美国总统候选人的成败。随着共和党初选已进入白热化，主要竞争者在其官方网站上上展示出社交网络强大的认可，并通过台式电脑以数字的方式连接。但分析师指出，共和党和奥巴马总统的竞选活动尚未通过智能手机或平板电脑对支持者做出许多移动特定的连接。<br /><br />有些竞选活动在网站上有特殊链接，可以通过短信对手机进行更新，但到目前为止他们在AppStore或AndroidMarket应用商店上似乎没有可供下载的特定候选人移动应用程序。<br /><br />市场研究公司Enderle Group分析师罗布·恩德勒(Rob Enderle)表示：“智能手机和平板电脑现在更加成为主流，而这些设备确实推动了‘占领华尔街’运动和中东的革命。我们相互连接的方式在过去几年中已经发生很大变化。候选人需要一个良好的社会媒体宣传活动来取胜，社会媒体包括移动，因为移动允许候选人与支持者保持实时联系和响应。移动使得社交更为重要。”<br /><br />恩德勒表示：“智能手机的主要使用群体在45岁以下，该年龄群体越来越多地看到，在社交网络中，智能手机或平板电脑作为Facebook和Twitter 的门户网站。恩德勒还表示对于总统大选来说，要建立一个以台式电脑为导向的网站还不足够，还需要一个以移动为导向的网站，这一类型的网站适合图形和文字或视频，无论是在7至10英寸的平板电脑或是在4英寸的智能手机上。<br /><br />苹果应用商店App Store列出了数以百计的新闻和社会媒体相关的应用程序，但根据最近的搜索，没有直接关系到单一候选人的应用程序。分析师表示新闻机构可能会建立专门的应用程序，以帮助候选人的粉丝支持他们，几乎与职业体育联盟所使用的移动应用程序一样，球迷们可以追踪分数、球员和排名。<br /><br />分析师称，在未来几个月里，民主党和共和两党甚至有可能将为App Store 或 Android Market提供他们自己的独立应用程序。 <br/>  ]]> 
</content>
</entry></feed>
