<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Jack @ CnBlogs</title><subtitle type="text">Focus on .NET.  Jack@SAE</subtitle><id>http://feed.cnblogs.com/blog/u/20530/rss</id><updated>2011-11-21T07:09:04Z</updated><author><name>Jack Niu</name><uri>http://www.cnblogs.com/skywind/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/skywind/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/20530/rss"/><entry><id>http://www.cnblogs.com/skywind/archive/2011/11/21/2257224.html</id><title type="text">二小时与四周时间在编程上的差别</title><summary type="text">本文是从 Simplicity Oriented Programming 这篇文章翻译而来。 在Warsztat(一个波兰的游戏开发组织)工作的几年中，我发现一个有趣的现象。经常我们会组织一些编程竞赛，这些竞赛通常分为两种形式。一种是个人行动，一般只有2个小时的时间，另外一种是长时间的(数天/ 周)。作为一个额外的要求，前者通常限制只允许使用基本的API(SDL, OpenGL等)，而后者通常没...</summary><published>2011-11-21T07:09:00Z</published><updated>2011-11-21T07:09:00Z</updated><author><name>Jack Niu</name><uri>http://www.cnblogs.com/skywind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/skywind/archive/2011/11/21/2257224.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/skywind/archive/2011/11/21/2257224.html"/><content type="html">&lt;p&gt;本文是从 &lt;a href="http://dabroz.scythe.pl/2011/07/16/simplicity-oriented-programming"&gt;Simplicity Oriented Programming&lt;/a&gt; 这篇文章翻译而来。  &lt;p&gt;在&lt;a href="http://warsztat.gd/"&gt;Warsztat&lt;/a&gt;(一个波兰的游戏开发组织)工作的几年中，我发现一个有趣的现象。经常我们会组织一些编程竞赛，这些竞赛通常分为两种形式。一种是个人行动，一般只有2个小时的时间，另外一种是长时间的(数天/ 周)。作为一个额外的要求，前者通常限制只允许使用基本的API(SDL, OpenGL等)，而后者通常没有限制(可以使用各种引擎，UDK/Unity等)。  &lt;p&gt;结果有点让人吃惊。很多人更愿意参加短竞赛。但不管游戏是在2个小时里开发出来的，还是在4周内开发出来的，它们中优秀的部分的在水平上一样的。为什么？  &lt;ol&gt; &lt;li&gt;4周的开发期并不意味着开发的时间是672或224小时。在一些极端的情况在，4周的竞赛跟2个小时的竞赛一样，也就是这4周的最后2个小时在起作用。  &lt;li&gt;很多的游戏体现出来的实际是一个创意。事实上：你4周内想出来的创意未必就比10分钟内想出的好。  &lt;li&gt;2小时竞赛的开发过程压力强度非常的大。大部分的时间都是用来改进核心功能(因为也没有其它的)。  &lt;li&gt;另一方面，在长周期竞赛项目里，人们最初只是关注一些无关紧要的功能。一旦你开始琢磨着添加一个界面组件，把它做成一个内置的MP3播放器，或把界面弄的色彩斑斓，你的项目就开始失败了。 &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;这也许是我们得到的最重要的教训。如果你需要很快的完成某项事情，代码可能会写的很差，但也会很短小、简练和灵活。如果没有时间的约束，程序的复杂度，功能项和缺陷率会上一个等级。给日后维护带来的工作量并不体现在现在。  &lt;p&gt;在4周的编程时间里，你可以进行数次的快速迭代编程，每一次都对游戏的核心功能进行改进。但如果一开始你就把一些以后未知的特征功能考虑进去，写这部分功能以及修改bug会耗去大部分的时间。诚然，你可以用这4周时间写出大量的assets测试，但核心的游戏娱乐方式设计的足够好吗？  &lt;p&gt;最后，给你们一个绝对有价值的C(++)忠告：当增加新功能时，从最小的核心功能开始：  &lt;ol&gt; &lt;li&gt;全局函数 — 如果你需要去显示分数，不要犹豫，立即写出void DisplayScore()。如果你的游戏是单人玩的，把分数存成全局变量。看看，你至少节省了10分钟的写getter、setter和设计给模块通信的时间。不需要做这些。如果游戏是多人玩的，你需要为每个人记录和显示分数。但如果你的游戏不是多人玩的，你没有任何理由实现能显示任意多人的任意分数的功能。相信我，你将会遇到比显示分数复杂的多的多的问题。  &lt;li&gt;如果你的函数需要用到共用代码或需要辅助函数，请把它们组织到一起，最好是放在一个单独的文件里。时刻想着静态函数和变量 — 跟“OO”的静态相反，文件的静态是可见的。这样做很好，因为你可以把所有跟字体相关的操作都放在一个文件里，把把所有内部数据都放在静态全局变量里。辅助函数可以做成静态的，通过共享的header对外开放(如果你写出简单的代码，整理工作从来不会耗费你太多的时间)。  &lt;li&gt;只有在必要的时候才把函数提升为类。记着，类意味着对象，对象意味这相互关系，而相互关系意味这复杂。你的游戏设计会酷到留有大量的时间处理代码的复杂吗？  &lt;li&gt;只有当上面说的这些不够好，设计模式或其他新奇的东西才能成为你的求助目标。永远不要走到这一步。 &lt;/li&gt;&lt;/ol&gt;&lt;img src="http://www.cnblogs.com/skywind/aggbug/2257224.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/skywind/archive/2011/11/21/2257224.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/skywind/archive/2011/11/17/2252634.html</id><title type="text">upload size of asp.net</title><summary type="text">for asp.net, there are 2 spaces to set the maximun upload size. 1. in web.config, like this&amp;lt;httpRuntime executionTimeout=&amp;quot;6000&amp;quot; maxRequestLength=&amp;quot;150000&amp;quot; /&amp;gt;2. in IIS=&amp;gt;Request Filtering: if your uploa...</summary><published>2011-11-17T06:20:00Z</published><updated>2011-11-17T06:20:00Z</updated><author><name>Jack Niu</name><uri>http://www.cnblogs.com/skywind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/skywind/archive/2011/11/17/2252634.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/skywind/archive/2011/11/17/2252634.html"/><content type="html">&lt;p&gt;for asp.net, there are 2 spaces to set the maximun upload size. &lt;/p&gt; &lt;p&gt;1. in web.config, like this&lt;/p&gt;&lt;pre&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;httpRuntime&lt;/span&gt; &lt;span style="color: #ff0000"&gt;executionTimeout&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"6000"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;maxRequestLength&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"150000"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="color: #0000ff"&gt;&lt;font color="#000000"&gt;2. in IIS=&amp;gt;Request Filtering:&lt;/font&gt;&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/skywind/201111/201111171419099523.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/skywind/201111/201111171419122258.png" width="344" height="414"&gt;&lt;/a&gt; &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;if your upload file is exceed the max lengh, you will get error like &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;404 - File or directory not found.&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/skywind/201111/201111171419166845.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/skywind/201111/201111171419197910.png" width="365" height="94"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/skywind/aggbug/2252634.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/skywind/archive/2011/11/17/2252634.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/skywind/archive/2011/11/17/2252617.html</id><title type="text">Parse MSI installers by call MSI database [C#]</title><summary type="text">Purpose: Parse MSI installer, to get information such as product name, product code, properties etc. MSI is a standard windows install techonoly, so there are APIs for developers to access. But they a...</summary><published>2011-11-17T06:07:00Z</published><updated>2011-11-17T06:07:00Z</updated><author><name>Jack Niu</name><uri>http://www.cnblogs.com/skywind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/skywind/archive/2011/11/17/2252617.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/skywind/archive/2011/11/17/2252617.html"/><content type="html">&lt;p&gt;Purpose: Parse MSI installer, to get information such as product name, product code, properties etc.&lt;/p&gt; &lt;p&gt;MSI is a standard windows install techonoly, so there are APIs for developers to access. But they are c/c++ methods, instead of C#. After google, i found the ‘Wrapping the Windows Installer 2.0 API’(&lt;a title="http://www.codeproject.com/KB/cs/msiinterop.aspx" href="http://www.codeproject.com/KB/cs/msiinterop.aspx"&gt;http://www.codeproject.com/KB/cs/msiinterop.aspx&lt;/a&gt;), which is can let .net developers access MSI api easily.&lt;/p&gt; &lt;p&gt;After download the library, you can visit MSI datatable like this&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div style="border-bottom: #4f81bd 1px solid; text-align: left; border-left: #4f81bd 1px solid; line-height: 18px; background-color: white; margin: 0px; width: 100%; font-family: 'Courier New','Consolas','Fixedsys','BitStream Vera Sans Mono', courier,monospace,serif; color: black; font-size: 12px; overflow: auto; border-top: #4f81bd 1px solid; border-right: #4f81bd 1px solid"&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 1:  &lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 2:  &lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;WindowsInstaller;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 3:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 4:  &lt;/span&gt;&lt;span style="color: blue"&gt;namespace &lt;/span&gt;MsiTest&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 5:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 6:  &lt;/span&gt;    &lt;span style="color: blue"&gt;class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Program&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 7:  &lt;/span&gt;&lt;span style="color: #2b91af"&gt;    &lt;/span&gt;{&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 8:  &lt;/span&gt;        &lt;span style="color: blue"&gt;static void &lt;/span&gt;Main(&lt;span style="color: blue"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt; 9:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;10:  &lt;/span&gt;            test(&lt;span style="color: #a31515"&gt;"c:\\xxx.msi"&lt;/span&gt;);&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;11:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;12:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;13:  &lt;/span&gt;        &lt;span style="color: blue"&gt;private static void &lt;/span&gt;test(&lt;span style="color: blue"&gt;string &lt;/span&gt;fileName)&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;14:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;15:  &lt;/span&gt;            &lt;span style="color: #2b91af"&gt;IntPtr &lt;/span&gt;databasePtr;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;16:  &lt;/span&gt;            &lt;span style="color: blue"&gt;var &lt;/span&gt;retDatabase = &lt;span style="color: #2b91af"&gt;MsiInterop&lt;/span&gt;.MsiOpenDatabase(fileName, &lt;span style="color: #2b91af"&gt;MsiDbPersistMode&lt;/span&gt;.ReadOnly, &lt;span style="color: blue"&gt;out &lt;/span&gt;databasePtr);&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;17:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;18:  &lt;/span&gt;            &lt;span style="color: #2b91af"&gt;IntPtr &lt;/span&gt;viewPtr;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;19:  &lt;/span&gt;            &lt;span style="color: blue"&gt;var &lt;/span&gt;ret = &lt;span style="color: #2b91af"&gt;MsiInterop&lt;/span&gt;.MsiDatabaseOpenView(databasePtr, &lt;span style="color: #a31515"&gt;"SELECT Value FROM Property where Property = 'SecureCustomProperties'"&lt;/span&gt;, &lt;span style="color: blue"&gt;out &lt;/span&gt;viewPtr);&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;20:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;21:  &lt;/span&gt;            &lt;span style="color: #2b91af"&gt;IntPtr &lt;/span&gt;recordPtr = &lt;span style="color: #2b91af"&gt;IntPtr&lt;/span&gt;.Zero;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;22:  &lt;/span&gt;            ret = &lt;span style="color: #2b91af"&gt;MsiInterop&lt;/span&gt;.MsiViewExecute(viewPtr, &lt;span style="color: #2b91af"&gt;IntPtr&lt;/span&gt;.Zero);&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;23:  &lt;/span&gt;            ret = &lt;span style="color: #2b91af"&gt;MsiInterop&lt;/span&gt;.MsiViewFetch(viewPtr, &lt;span style="color: blue"&gt;ref &lt;/span&gt;recordPtr);&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;24:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;25:  &lt;/span&gt;            &lt;span style="color: blue"&gt;uint &lt;/span&gt;buffer_length = 2550;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;26:  &lt;/span&gt;            &lt;span style="color: blue"&gt;string &lt;/span&gt;return_buffer = &lt;span style="color: blue"&gt;new string&lt;/span&gt;(&lt;span style="color: #a31515"&gt;' '&lt;/span&gt;, (&lt;span style="color: blue"&gt;int&lt;/span&gt;)buffer_length);&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;27:  &lt;/span&gt;            &lt;span style="color: #2b91af"&gt;MsiInterop&lt;/span&gt;.MsiRecordGetString(recordPtr, 1, return_buffer, &lt;span style="color: blue"&gt;ref &lt;/span&gt;buffer_length);&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;28:  &lt;/span&gt;            &lt;span style="color: #2b91af"&gt;MsiInterop&lt;/span&gt;.MsiCloseAllHandles();&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;29:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;30:  &lt;/span&gt;            &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(return_buffer.Trim());&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;31:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;32:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;33:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;34:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #f7f7ff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;35:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre style="padding-bottom: 0px !important; line-height: 18px; background-color: #fff; margin: 0em; padding-left: 12px !important; padding-right: 0px !important; color: black; padding-top: 0px !important"&gt;&lt;span style="line-height: 18px; color: #4f81bd"&gt;36:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/skywind/aggbug/2252617.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/skywind/archive/2011/11/17/2252617.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/skywind/archive/2009/11/16/1603947.html</id><title type="text">使用SQL语句获取Sql Server数据库的版本</title><summary type="text">select SERVERPROPERTY('productversion')非常好用！</summary><published>2009-11-16T08:40:00Z</published><updated>2009-11-16T08:40:00Z</updated><author><name>Jack Niu</name><uri>http://www.cnblogs.com/skywind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/skywind/archive/2009/11/16/1603947.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/skywind/archive/2009/11/16/1603947.html"/></entry><entry><id>http://www.cnblogs.com/skywind/archive/2009/06/12/1502171.html</id><title type="text">.NET 4.0 will come soon, let&amp;rsquo;s review what is new in .net 3.0</title><summary type="text">* Automatically Implemented Properties * Object and Collection Initializers * Implicitly Typed Local Variables and Implicitly Typed Arrays * Extending Types with Extension Methods * Lambda Expressions...</summary><published>2009-06-12T07:32:00Z</published><updated>2009-06-12T07:32:00Z</updated><author><name>Jack Niu</name><uri>http://www.cnblogs.com/skywind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/skywind/archive/2009/06/12/1502171.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/skywind/archive/2009/06/12/1502171.html"/></entry><entry><id>http://www.cnblogs.com/skywind/archive/2009/05/25/1488896.html</id><title type="text">闲来无事, 贴2个.NET下Hash值一样的string</title><summary type="text">Console.WriteLine("0.89265452879139".GetHashCode());Console.WriteLine("0.280527401380486".GetHashCode()); 输出结果是 20606538272060653827不过, 对于一般的应用来说, 将字符串(string)Hash一下用于比较,搜索还是可行的.</summary><published>2009-05-25T06:53:00Z</published><updated>2009-05-25T06:53:00Z</updated><author><name>Jack Niu</name><uri>http://www.cnblogs.com/skywind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/skywind/archive/2009/05/25/1488896.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/skywind/archive/2009/05/25/1488896.html"/></entry><entry><id>http://www.cnblogs.com/skywind/archive/2009/05/22/1487138.html</id><title type="text">在资源管理器中使鼠标右键增加一个命令，运行cmd，同时使得当前路径为资源管理器当前的目录</title><summary type="text">1,找开注册表编辑器； 2,找到HKEY_CLASSES_ROOT\Folder\shell； 3,在“编辑”下选择“新建”下面的“项”，输入随便什么名字，例如可以是cmd； 4,在cmd下再选择“新建”下面的“项”，输入名字command（注意要小写）； 5,双击cmd的默认值，输入一个字符串，这个字符串就是日后在右键菜单上出现的字符串，例如可以输入：“进入命令行方式”；用户也可以使用&amp;amp;...</summary><published>2009-05-22T07:22:00Z</published><updated>2009-05-22T07:22:00Z</updated><author><name>Jack Niu</name><uri>http://www.cnblogs.com/skywind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/skywind/archive/2009/05/22/1487138.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/skywind/archive/2009/05/22/1487138.html"/></entry><entry><id>http://www.cnblogs.com/skywind/archive/2009/05/09/1453094.html</id><title type="text">[C#] Format a XML string using XmlTextWriter</title><summary type="text">// a demo stringstring xml = "&amp;lt;Root&amp;gt;&amp;lt;Eles&amp;gt;&amp;lt;Ele&amp;gt;abc&amp;lt;/Ele&amp;gt;&amp;lt;Ele&amp;gt;123&amp;lt;/Ele&amp;gt;&amp;lt;/Eles&amp;gt;&amp;lt;/Root&amp;gt;";System.Xml.XmlDocument doc = new System.Xml.XmlDocument();doc.Load...</summary><published>2009-05-09T02:48:00Z</published><updated>2009-05-09T02:48:00Z</updated><author><name>Jack Niu</name><uri>http://www.cnblogs.com/skywind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/skywind/archive/2009/05/09/1453094.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/skywind/archive/2009/05/09/1453094.html"/></entry><entry><id>http://www.cnblogs.com/skywind/archive/2009/02/21/1395603.html</id><title type="text">如何在string.Format方法中输出大括号（{}）</title><summary type="text">在string.Format参数中，大括号{}是有特殊意义的符号，但是如果我们希望最终的结果中包含大括号（{}），那么我们需要怎么做呢？是”\{”吗？很遗憾，运行时，会给你一个Exception的！正确的写法是{{和}}。对，double {{ 或}}即可输出{或}.DEMO:static void Main(string[] args){ Console.WriteLine(string.For...</summary><published>2009-02-21T15:16:00Z</published><updated>2009-02-21T15:16:00Z</updated><author><name>Jack Niu</name><uri>http://www.cnblogs.com/skywind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/skywind/archive/2009/02/21/1395603.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/skywind/archive/2009/02/21/1395603.html"/></entry><entry><id>http://www.cnblogs.com/skywind/archive/2008/12/22/1360024.html</id><title type="text">发布一款小软件：和讯博客助手-测试版- 0.3.0</title><summary type="text"/><published>2008-12-22T10:14:00Z</published><updated>2008-12-22T10:14:00Z</updated><author><name>Jack Niu</name><uri>http://www.cnblogs.com/skywind/</uri></author><link rel="alternate" href="http://www.cnblogs.com/skywind/archive/2008/12/22/1360024.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/skywind/archive/2008/12/22/1360024.html"/></entry></feed>
