<?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>JIYUNALEX &#187; 编程</title>
	<atom:link href="http://www.jiyunalex.com/blog/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jiyunalex.com/blog</link>
	<description>不登高山，不知天之高也；不臨深谷，不知地之厚也；不聞先王遺言，不知學問之大也</description>
	<lastBuildDate>Tue, 31 Jan 2012 07:52:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.2</generator>
		<item>
		<title>CSV parser by Regular Expression</title>
		<link>http://www.jiyunalex.com/blog/2010/04/23/csv-parser-by-regular-expression/</link>
		<comments>http://www.jiyunalex.com/blog/2010/04/23/csv-parser-by-regular-expression/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 07:36:03 +0000</pubDate>
		<dc:creator>yukialex</dc:creator>
				<category><![CDATA[Alex's]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://www.jiyunalex.com/blog/?p=229</guid>
		<description><![CDATA[Each column in a CSV file is seperated by a comma (,), if the field contains a comma inside, then it has to be bound by a pair of quote (&#8220;). Here below is an example: 0566000,1005660003,UG,MEDUU,MEDU_PGF,,MED,MBCHB,F,PGM,MEDUU,F,MBCHB,&#8221;M.B., CH.B.&#8221;,UG Therefore, we cannot simply parse the file by string.split(new char[] {,}). In this passage, I will use [...]]]></description>
			<content:encoded><![CDATA[<p>Each column in a CSV file is seperated by a comma (,), if the field contains a comma inside, then it has to be bound by a pair of quote (&#8220;). Here below is an example:</p>
<p>0566000,1005660003,UG,MEDUU,MEDU_PGF,,MED,MBCHB,F,PGM,MEDUU,F,MBCHB,&#8221;M.B., CH.B.&#8221;,UG</p>
<p>Therefore, we cannot simply parse the file by string.split(new char[] {,}). In this passage, I will use the regular expression instead to separate each column. First, we define the regular expression we use:</p>
<p><font color="red">(((\&#8221;[^\"]*\&#8221;)|([^\,\"]*))\,{1})|(\&#8221;[^\"]*\&#8221;)|([^\,\"]*)</font></p>
<p>the source code would be:</p>
<p><span style="font-color: red;"> </span></p>
<div id="_mcePaste">string s = sr.ReadLine();</div>
<div id="_mcePaste">Regex Reg = new Regex(&#8220;(((\\\&#8221;[^\\\"]*\\\&#8221;)|([^\\,\\\"]*))\\,{1})|(\\\&#8221;[^\\\"]*\\\&#8221;)|([^\\,\\\"]*)&#8221;, RegexOptions.IgnoreCase);</div>
<div id="_mcePaste">MatchCollection match = Reg.Matches(s);</div>
<div id="_mcePaste">string[] columns = new string[match.Count];</div>
<div id="_mcePaste">for (int j=0; j &lt; match.Count ; j++)</div>
<div id="_mcePaste">{</div>
<div id="_mcePaste">columns[j] = match[j].Value;</div>
<div id="_mcePaste">}</div>
<p>So, we get the result.<br />
<a href="http://www.jiyunalex.com/blog/wp-content/uploads/2010/04/reg_screen1.bmp"><img class="alignnone size-full wp-image-232" title="Regular Expression Screen Cap" src="http://www.jiyunalex.com/blog/wp-content/uploads/2010/04/reg_screen1.bmp" alt="" /></a></p>
<p>Of course, you will then need to remove the comma or quote if you want. But at least we can parse them without any problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jiyunalex.com/blog/2010/04/23/csv-parser-by-regular-expression/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>从BlogEngine.NET迁移到WordPress</title>
		<link>http://www.jiyunalex.com/blog/2010/02/08/%e4%bb%8eblogengine-net%e8%bf%81%e7%a7%bb%e5%88%b0wordpress/</link>
		<comments>http://www.jiyunalex.com/blog/2010/02/08/%e4%bb%8eblogengine-net%e8%bf%81%e7%a7%bb%e5%88%b0wordpress/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 03:59:50 +0000</pubDate>
		<dc:creator>yukialex</dc:creator>
				<category><![CDATA[Alex's]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[blogengine]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.jiyunalex.com/?p=66</guid>
		<description><![CDATA[刚刚完成从BlogEngine.NET迁移到WordPress的过程。为什么要迁移？很简单，PHP的成本实在是比ASP.NET划算太多了。外面web hosting的plan，同样配置的话php要比asp的便宜百分之30以上。像我现在用的就只要港币4元一个月，用ASP.NET的话根本做不到。当然，如果你是在家里用旧电脑架的服务器，当然就没什么区别了。话说回来，港币4元绝对比服务器的电费便宜。 迁移很简单，用过BE的人都知道，BE有export的功能，可以将所有文章+评论输出成BlogML格式。遗憾的是，WP本身没有自带Import BlogML格式的工具。于是，我们首先要去下载一个，跟着这个链接就对了： http://www.kavinda.net/2008/10/23/migrating-from-dasblog-to-wordpress.html 文中本来说的是从DasBlog到Wordpress的迁移。但DasBlog也是输出到BlogML格式的，所以该工具对我们来说也适用。最后，当你Import完之后，只要将Category的名称（会变成一堆数字和字母）改回来就大功告成了。]]></description>
			<content:encoded><![CDATA[<p>刚刚完成从BlogEngine.NET迁移到WordPress的过程。为什么要迁移？很简单，PHP的成本实在是比ASP.NET划算太多了。外面web hosting的plan，同样配置的话php要比asp的便宜百分之30以上。像我现在用的就只要港币4元一个月，用ASP.NET的话根本做不到。当然，如果你是在家里用旧电脑架的服务器，当然就没什么区别了。话说回来，港币4元绝对比服务器的电费便宜。</p>
<p>迁移很简单，用过BE的人都知道，BE有export的功能，可以将所有文章+评论输出成BlogML格式。遗憾的是，WP本身没有自带Import BlogML格式的工具。于是，我们首先要去下载一个，跟着这个链接就对了：</p>
<p><a href="http://www.kavinda.net/2008/10/23/migrating-from-dasblog-to-wordpress.html">http://www.kavinda.net/2008/10/23/migrating-from-dasblog-to-wordpress.html</a></p>
<p>文中本来说的是从DasBlog到Wordpress的迁移。但DasBlog也是输出到BlogML格式的，所以该工具对我们来说也适用。最后，当你Import完之后，只要将Category的名称（会变成一堆数字和字母）改回来就大功告成了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jiyunalex.com/blog/2010/02/08/%e4%bb%8eblogengine-net%e8%bf%81%e7%a7%bb%e5%88%b0wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MS SQL Server &#8211; Convert()</title>
		<link>http://www.jiyunalex.com/blog/2009/12/10/ms-sql-server-convert/</link>
		<comments>http://www.jiyunalex.com/blog/2009/12/10/ms-sql-server-convert/#comments</comments>
		<pubDate>Thu, 10 Dec 2009 08:32:00 +0000</pubDate>
		<dc:creator>yukialex</dc:creator>
				<category><![CDATA[Alex's]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">/alex/post/MS-SQL-Server-Convert().aspx</guid>
		<description><![CDATA[Syntax Using CONVERT: CONVERT&#160;(&#160;data_type&#160;[&#160;(&#160;length&#160;)&#160;]&#160;,&#160;expression&#160;[&#160;,&#160;style&#160;]&#160;) Arguments expression Is any valid Microsoft&#174; SQL Server&#8482; expression. For more information, see&#160;Expressions. data_type Is the target system-supplied data type, including&#160;bigint&#160;and&#160;sql_variant. User-defined data types cannot be used. For more information about available data types, see&#160;Data Types. length Is an optional parameter of&#160;nchar,&#160;nvarchar,&#160;char,&#160;varchar,&#160;binary, or&#160;varbinary&#160;data types. style Is the style of date format [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: 11px;"></p>
<h5 style="font-size: 11px; font-weight: 700;">Syntax</h5>
<p class="label" style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;"><strong>Using CONVERT:</strong></p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;"><code>CONVERT&nbsp;<strong>(&nbsp;</strong><em>data_type&nbsp;</em>[&nbsp;<strong>(&nbsp;</strong><em>length&nbsp;</em><strong>)&nbsp;</strong>]&nbsp;<strong>,</strong>&nbsp;<em>expression</em>&nbsp;[&nbsp;<strong>,</strong>&nbsp;<em>style&nbsp;</em>]&nbsp;<strong>)</strong></code></p>
<h5 style="font-size: 11px; font-weight: 700;">Arguments</h5>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;"><em>expression</em></p>
<p class="indent" style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;">Is any valid Microsoft&reg; SQL Server&trade; expression. For more information, see&nbsp;<a id="ctl00_MTCS_main_ctl01" style="text-decoration: none; color: #0033cc;" onclick="javascript:Track('ctl00_MTCS_main_ctl00|ctl00_MTCS_main_ctl01',this);" href="http://msdn.microsoft.com/en-us/library/aa258852(SQL.80).aspx">Expressions</a>.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;"><em>data_type</em></p>
<p class="indent" style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;">Is the target system-supplied data type, including&nbsp;<strong>bigint</strong>&nbsp;and&nbsp;<strong>sql_variant</strong>. User-defined data types cannot be used. For more information about available data types, see&nbsp;<a id="ctl00_MTCS_main_ctl02" style="text-decoration: none; color: #0033cc;" onclick="javascript:Track('ctl00_MTCS_main_ctl00|ctl00_MTCS_main_ctl02',this);" href="http://msdn.microsoft.com/en-us/library/aa258271(SQL.80).aspx">Data Types</a>.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;"><em>length</em></p>
<p class="indent" style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;">Is an optional parameter of&nbsp;<strong>nchar</strong>,&nbsp;<strong>nvarchar</strong>,&nbsp;<strong>char</strong>,&nbsp;<strong>varchar</strong>,&nbsp;<strong>binary</strong>, or&nbsp;<strong>varbinary</strong>&nbsp;data types.</p>
<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;"><em>style</em></p>
<p class="indent" style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;">Is the style of date format used to convert&nbsp;<strong>datetime</strong>&nbsp;or&nbsp;<strong>smalldatetime</strong>&nbsp;data to character data (<strong>nchar</strong>,&nbsp;<strong>nvarchar</strong>,&nbsp;<strong>char</strong>,&nbsp;<strong>varchar</strong>,&nbsp;<strong>nchar</strong>, or&nbsp;<strong>nvarchar</strong>&nbsp;data types), or the string format when converting&nbsp;<strong>float</strong>,<strong>&nbsp;real</strong>,&nbsp;<strong>money</strong>, or&nbsp;<strong>smallmoney</strong>&nbsp;data to character data (<strong>nchar</strong>,&nbsp;<strong>nvarchar</strong>,<strong>&nbsp;char</strong>,&nbsp;<strong>varchar</strong>,&nbsp;<strong>nchar</strong>, or&nbsp;<strong>nvarchar</strong>&nbsp;data types).</p>
<p class="indent" style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;">
<table style="border-collapse: collapse; width: 571px; border-width: 1px; border-style: solid;" border="1" frame="box" rules="all">
<tbody>
<tr valign="top">
<th class="label" style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #cccccc; font-family: Verdana; text-align: left; vertical-align: bottom; background-position: initial initial; padding: 5px; border: 0px solid #cccccc;" width="23%">Without century (yy)</th>
<th class="label" style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #cccccc; font-family: Verdana; text-align: left; vertical-align: bottom; background-position: initial initial; padding: 5px; border: 0px solid #cccccc;" width="21%">With century (yyyy)</th>
<th class="label" style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #cccccc; font-family: Verdana; text-align: left; vertical-align: bottom; background-position: initial initial; padding: 5px; border: 0px solid #cccccc;" width="27%">Standard</th>
<th class="label" style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #cccccc; font-family: Verdana; text-align: left; vertical-align: bottom; background-position: initial initial; padding: 5px; border: 0px solid #cccccc;" width="29%">Input/Output**</th>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">-</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">0 or 100 (*)</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">Default</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">mon dd yyyy hh:miAM (or PM)</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">1</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">101</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">USA</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">mm/dd/yy</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">2</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">102</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">ANSI</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">yy.mm.dd</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">3</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">103</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">British/French</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">dd/mm/yy</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">4</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">104</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">German</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">dd.mm.yy</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">5</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">105</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">Italian</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">dd-mm-yy</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">6</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">106</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">-</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">dd mon yy</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">7</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">107</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">-</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">Mon dd, yy</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">8</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">108</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">-</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">hh:mm:ss</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">-</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">9 or 109 (*)</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">Default + milliseconds</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">mon dd yyyy hh:mi:ss:mmmAM (or PM)</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">10</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">110</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">USA</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">mm-dd-yy</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">11</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">111</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">JAPAN</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">yy/mm/dd</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">12</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">112</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">ISO</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">yymmdd</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">-</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">13 or 113 (*)</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">Europe default + milliseconds</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">dd mon yyyy hh:mm:ss:mmm(24h)</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">14</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">114</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">-</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">hh:mi:ss:mmm(24h)</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">-</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">20 or 120 (*)</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">ODBC canonical</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">yyyy-mm-dd hh:mi:ss(24h)</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">-</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">21 or 121 (*)</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">ODBC canonical (with milliseconds)</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">yyyy-mm-dd hh:mi:ss.mmm(24h)</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">-</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">126(***)</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">ISO8601</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">yyyy-mm-dd Thh:mm:ss.mmm(no spaces)</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">-</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">130*</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">Hijri****</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">dd mon yyyy hh:mi:ss:mmmAM</td>
</tr>
<tr valign="top">
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="23%">-</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="21%">131*</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="27%">Hijri****</td>
<td style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: #ffffff; font-family: Verdana; text-align: left; vertical-align: top; background-position: initial initial; padding: 5px; margin: 0px; border: 1px solid #cccccc;" width="29%">dd/mm/yy hh:mi:ss:mmmAM</td>
</tr>
</tbody>
</table>
<h3>Example</h3>
<p class="indent" style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; padding: 0px;"><span style="font-family: Verdana, Arial, ����; font-size: 12px; line-height: 18px;">select CONVERT(varchar, getdate(), 120 )<br />2004-09-12 11:06:08</p>
<p>select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),&rsquo;-&#8217;,&rdquo;),&rsquo; &lsquo;,&rdquo;),&rsquo;:&#8217;,&rdquo;)<br />20040912110608</p>
<p>select CONVERT(varchar(12) , getdate(), 111 )<br />2004/09/12</p>
<p>select CONVERT(varchar(12) , getdate(), 112 )<br />20040912</p>
<p>select CONVERT(varchar(12) , getdate(), 102 )<br />2004.09.12</p>
<p>select CONVERT(varchar(12) , getdate(), 101 )<br />09/12/2004</p>
<p>select CONVERT(varchar(12) , getdate(), 103 )<br />12/09/2004</p>
<p>select CONVERT(varchar(12) , getdate(), 104 )<br />12.09.2004</p>
<p>select CONVERT(varchar(12) , getdate(), 105 )<br />12-09-2004</p>
<p>select CONVERT(varchar(12) , getdate(), 106 )<br />12 09 2004</p>
<p>select CONVERT(varchar(12) , getdate(), 107 )<br />09 12, 2004</p>
<p>select CONVERT(varchar(12) , getdate(), 108 )<br />11:06:08</p>
<p>select CONVERT(varchar(12) , getdate(), 109 )<br />09 12 2004 1</p>
<p>select CONVERT(varchar(12) , getdate(), 110 )<br />09-12-2004</p>
<p>select CONVERT(varchar(12) , getdate(), 113 )<br />12 09 2004 1</p>
<p>select CONVERT(varchar(12) , getdate(), 114 )<br />11:06:08.177</span></p>
<p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jiyunalex.com/blog/2009/12/10/ms-sql-server-convert/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OpenCV2.0</title>
		<link>http://www.jiyunalex.com/blog/2009/12/09/opencv2-0/</link>
		<comments>http://www.jiyunalex.com/blog/2009/12/09/opencv2-0/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 21:30:00 +0000</pubDate>
		<dc:creator>yukialex</dc:creator>
				<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">/alex/post/OpenCV20.aspx</guid>
		<description><![CDATA[安装 首先，OpenCV从2.0开始，用了CMake来产生Makefile，所以编译之前要先下载并安装CMake.&#160;之后，下载并安装OpenCV。安装的时候选择Add path to All users。其他用预设值就可以了。安装之后打开CMake，source code输入C:\OpenCV2.0（你的安装路径），build folder随便输入一个你存放的位置。之后按configure，他会让你选你的编译器，用visual studio的话就选你正在用的vs版本吧。最后勾上你要生成的project，按generate就可以了。 编译 去build folder，打开OpenCV.sln就可以用visual studio正常编译了。如果是使用visual c++ express 2008的话，在编译的时候会提示缺少opm.h opmassem.h和vcomp.lib vcompd.lib这几个文件，找台有装visual studio 2008的电脑拷过来放在相应位置就可以了。 使用OpenCV 打开VS2008，Tools-&#62;Options Project and Solution -&#62; VC++ Directories 从Show directories中选择library 添加C:\OpenCV2.0\lib 从Show directories中选择include 添加C:\OpenCV2.0\include\opencv 新建项目 Create a new C++ project Project -&#62; Properties Configuration Properties -&#62; Linker -&#62; Input 在Additional Dependency 输入以下档案：cxcore200.lib cv200.lib ml200.lib cvaux200.lib [...]]]></description>
			<content:encoded><![CDATA[<h3>安装</h3>
<p>首先，OpenCV从2.0开始，用了CMake来产生Makefile，所以编译之前要先下载并安装<a href="http://www.cmake.org">CMake</a>.&nbsp;之后，下载并安装<a href="http://sourceforge.net/projects/opencvlibrary/">OpenCV</a>。安装的时候选择Add path to All users。其他用预设值就可以了。安装之后打开CMake，source code输入C:\OpenCV2.0（你的安装路径），build folder随便输入一个你存放的位置。之后按configure，他会让你选你的编译器，用visual studio的话就选你正在用的vs版本吧。最后勾上你要生成的project，按generate就可以了。</p>
<h3>编译</h3>
<p>去build folder，打开OpenCV.sln就可以用visual studio正常编译了。如果是使用visual c++ express 2008的话，在编译的时候会提示缺少opm.h opmassem.h和vcomp.lib vcompd.lib这几个文件，找台有装visual studio 2008的电脑拷过来放在相应位置就可以了。</p>
<h3>使用OpenCV</h3>
<ul>
<li>打开VS2008，Tools-&gt;Options</li>
<li>Project and Solution -&gt; VC++ Directories</li>
<li>从Show directories中选择library</li>
<li>添加C:\OpenCV2.0\lib</li>
<li>从Show directories中选择include</li>
<li>添加C:\OpenCV2.0\include\opencv</li>
</ul>
<h3>新建项目</h3>
<ul>
<li>Create a new C++ project</li>
<li>Project -&gt; Properties</li>
<li>Configuration Properties -&gt; Linker -&gt; Input</li>
<li>在Additional Dependency 输入以下档案：cxcore200.lib cv200.lib ml200.lib cvaux200.lib highgui200.lib</li>
<li>成功编译</li>
</ul>
<h3>&#8220;Program failed to initialize properly 0xc0150002&#8243; error</h3>
<p>一般来说编译通过之后就可以执行，但使用Visual C++ express的朋友可能会出现以上错误。只要去下载并安装<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&amp;displaylang=en">Microsoft Visual C++ 2008 Redistributable Package (X86)</a>就可以解决这个问题了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jiyunalex.com/blog/2009/12/09/opencv2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud Computing 2</title>
		<link>http://www.jiyunalex.com/blog/2009/07/23/cloud-computing-2/</link>
		<comments>http://www.jiyunalex.com/blog/2009/07/23/cloud-computing-2/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 19:25:00 +0000</pubDate>
		<dc:creator>yukialex</dc:creator>
				<category><![CDATA[Alex's]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">/alex/post/Cloud-Computing-2.aspx</guid>
		<description><![CDATA[上文介绍了一些云计算的基本情况。说到云计算，就不得不提google这个将云计算发挥得淋漓尽致的公司。Google的网上办公（google apps）可以说是云计算的代表作，使用了google apps之后，公司不用再自己维护一堆服务器，使得公司的IT人员从繁琐的设定和高昂的维护费用中解放出来。有兴趣的人其实可以自己上网登记体验一下，25个账户以下的服务都是免费的。如果拥有自己的域名的话，更加可以通过设置CNAME来“个人化”自己的服务。比如说，我现在就有以下的服务： http://mail.jiyunalex.com http://docs.jiyunalex.com http://calendar.jiyunalex.com 这三个分别是邮箱，文件和日历服务。所以呢，现在如果你发邮件到admin@jiyunalex.com的话，我就可以从下面这个画面登录进去检阅： 怎么样？cool吧。文件和日历功能都是类似的。当然，这些都是面向企业服务的，普通用户可能不会接触到。其实除了google，也有其他公司提供类似的云计算服务，其中一个就是www.dreamhostapps.com。 dreamhostapps可以让用户免费寄存自己的网站，该网站提供了5个常用的服务，分别是WordPress, Drupal, ZenPhoto, phpBB和MediaWiki。用户登记之后就可以选择安装自己需要的服务。同样的，只要你有自己的域名，设定好一个CNAME之后，就相当于自己配置了一个服务器： http://photo.jiyunalex.com http://forum.jiunalex.com 通过这些服务，就可以省却自己架设和管理一台服务器的麻烦了。]]></description>
			<content:encoded><![CDATA[<p>上文介绍了一些云计算的基本情况。说到云计算，就不得不提google这个将云计算发挥得淋漓尽致的公司。Google的网上办公（google apps）可以说是云计算的代表作，使用了google apps之后，公司不用再自己维护一堆服务器，使得公司的IT人员从繁琐的设定和高昂的维护费用中解放出来。有兴趣的人其实可以自己上网登记体验一下，25个账户以下的服务都是免费的。如果拥有自己的域名的话，更加可以通过设置CNAME来“个人化”自己的服务。比如说，我现在就有以下的服务：</p>
<p><a href="http://mail.jiyunalex.com">http://mail.jiyunalex.com</a></p>
<p><a href="http://docs.jiyunalex.com">http://docs.jiyunalex.com</a></p>
<p><a href="http://calendar.jiyunalex.com">http://calendar.jiyunalex.com</a></p>
<p>这三个分别是邮箱，文件和日历服务。所以呢，现在如果你发邮件到<a href="mailto:admin@jiyunalex.com">admin@jiyunalex.com</a>的话，我就可以从下面这个画面登录进去检阅：</p>
<p><a href="http://www.jiyunalex.com/blog/wp-content/uploads/2009/07/mail_screen.png"><img class="alignnone size-large wp-image-154" title="登录画面" src="http://www.jiyunalex.com/blog/wp-content/uploads/2009/07/mail_screen-1024x427.png" alt="" width="1024" height="427" /></a></p>
<p>怎么样？cool吧。文件和日历功能都是类似的。当然，这些都是面向企业服务的，普通用户可能不会接触到。其实除了google，也有其他公司提供类似的云计算服务，其中一个就是<a href="http://www.dreamhostapps.com">www.dreamhostapps.com</a>。</p>
<p>dreamhostapps可以让用户免费寄存自己的网站，该网站提供了5个常用的服务，分别是WordPress, Drupal, ZenPhoto, phpBB和MediaWiki。用户登记之后就可以选择安装自己需要的服务。同样的，只要你有自己的域名，设定好一个CNAME之后，就相当于自己配置了一个服务器：</p>
<p><a href="http://photo.jiyunalex.com">http://photo.jiyunalex.com</a></p>
<p><a href="http://forum.jiunalex.com">http://forum.jiunalex.com</a></p>
<p>通过这些服务，就可以省却自己架设和管理一台服务器的麻烦了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jiyunalex.com/blog/2009/07/23/cloud-computing-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multipart form POST in C#</title>
		<link>http://www.jiyunalex.com/blog/2009/07/21/multipart-form-post-in-c/</link>
		<comments>http://www.jiyunalex.com/blog/2009/07/21/multipart-form-post-in-c/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 10:35:00 +0000</pubDate>
		<dc:creator>yukialex</dc:creator>
				<category><![CDATA[Alex's]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">/alex/post/Multipart-form-POST-in-C.aspx</guid>
		<description><![CDATA[关于Multipart message的格式，可以参考W3C的网站，本文集中演示怎样用C#代码实现该类消息的传送。 [code:c#] public static class FormUpload&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160; public static HttpWebResponse MultipartFormDataPost(string postUrl, string userAgent, Dictionary&#60;string, object&#62; postParameters)&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string formDataBoundary = "-----------------------------28947758029299";&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; string contentType = "multipart/form-data; boundary=" + formDataBoundary; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; byte[] formData = GetMultipartFormData(postParameters, formDataBoundary); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; return PostForm(postUrl, userAgent, contentType, formData);&#160;&#160;&#160;&#160;&#160;&#160;&#160; }&#160;&#160;&#160;&#160;&#160;&#160;&#160; private static HttpWebResponse PostForm(string postUrl, string userAgent, string contentType, byte[] formData)&#160;&#160;&#160;&#160;&#160;&#160;&#160; {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>关于Multipart message的格式，可以参考<a href="http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2" target="_blank">W3C</a>的网站，本文集中演示怎样用C#代码实现该类消息的传送。</p>
<p>[code:c#]</p>
<p>public static class FormUpload<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static HttpWebResponse MultipartFormDataPost(string postUrl, string userAgent, Dictionary&lt;string, object&gt; postParameters)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string formDataBoundary = "-----------------------------28947758029299";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string contentType = "multipart/form-data; boundary=" + formDataBoundary;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] formData = GetMultipartFormData(postParameters, formDataBoundary);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return PostForm(postUrl, userAgent, contentType, formData);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private static HttpWebResponse PostForm(string postUrl, string userAgent, string contentType, byte[] formData)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpWebRequest request = WebRequest.Create(postUrl) as HttpWebRequest;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (request == null)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new NullReferenceException("request is not a http request");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Set up the request properties</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.Method = "POST";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.ContentType = contentType;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.UserAgent = userAgent;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.CookieContainer = new CookieContainer();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.ContentLength = formData.Length;&nbsp; // We need to count how many bytes we're sending.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using (Stream requestStream = request.GetRequestStream())<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Push it out there</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; requestStream.Write(formData, 0, formData.Length);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; requestStream.Close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return request.GetResponse() as HttpWebResponse;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private static byte[] GetMultipartFormData(Dictionary&lt;string, object&gt; postParameters, string boundary)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Stream formDataStream = new System.IO.MemoryStream();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Encoding encoding = Encoding.Default;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (var param in postParameters)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (param.Value is byte[])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] fileData = param.Value as byte[];</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Add just the first part of this param, since we will write the file data directly to the Stream</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string header = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; filename=\"{2}\";\r\nContent-Type: application/octet-stream\r\n\r\n", boundary, param.Key, param.Key);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formDataStream.Write(encoding.GetBytes(header), 0, header.Length);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Write the file data directly to the Stream, rather than serializing it to a string.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formDataStream.Write(fileData, 0, fileData.Length);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string postData = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n{2}\r\n", boundary, param.Key, param.Value);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formDataStream.Write(encoding.GetBytes(postData), 0, postData.Length);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Add the end of the request</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string footer = "\r\n--" + boundary + "--\r\n";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formDataStream.Write(encoding.GetBytes(footer), 0, footer.Length);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Dump the Stream into a byte[]</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formDataStream.Position = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] formData = new byte[formDataStream.Length];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formDataStream.Read(formData, 0, formData.Length);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; formDataStream.Close();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return formData;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>[/code]</p>
<p>上面的FormUpload类目的是构造消息，下面就是FormUpload类的调用方法：</p>
<p>[code:c#]</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void Main(string[] args)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Read file data</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileStream fs = new FileStream("c:\\example.txt", FileMode.Open, FileAccess.Read);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; byte[] data = new byte[fs.Length];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fs.Read(data, 0, data.Length);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fs.Close();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Generate post objects</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dictionary&lt;string, object&gt; postParameters = new Dictionary&lt;string, object&gt;();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; postParameters.Add("user", "fdreader");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; postParameters.Add("pass", "<a href="mailto:pl!mnsj@38">pl!mnsj@38</a>");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; postParameters.Add("logfile", "example.txt");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; postParameters.Add("example.txt", data);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Create request and receive response</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string postURL = @"<a href="http://bigbird.itsc.cuhk.edu.hk/etickettest/palm/attendance.asp">http://bigbird.itsc.cuhk.edu.hk/etickettest/palm/attendance.asp</a>";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string userAgent = "Someone";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpWebResponse webResponse = FormUpload.MultipartFormDataPost(postURL, userAgent, postParameters);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Process response</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StreamReader responseReader = new StreamReader(webResponse.GetResponseStream());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string fullResponse = responseReader.ReadToEnd();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; webResponse.Close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.Write(fullResponse);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.ReadKey();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>[/code]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jiyunalex.com/blog/2009/07/21/multipart-form-post-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud Computing</title>
		<link>http://www.jiyunalex.com/blog/2009/07/15/cloud-computing/</link>
		<comments>http://www.jiyunalex.com/blog/2009/07/15/cloud-computing/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 15:24:00 +0000</pubDate>
		<dc:creator>yukialex</dc:creator>
				<category><![CDATA[Alex's]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">/alex/post/Cloud-Computing.aspx</guid>
		<description><![CDATA[云计算(Cloud Computing)一词，起源于2004年左右，意指将所有软件和大部分的计算功能都放在一块云里面。客户端只需要安装一个云端程序（PC上一般已浏览器为主），就可以使用大量由云提供的服务。套句老话，这其实是一个瘦客户端-肥服务端模型，这个模型与十几二十年前的模型本质上是一样，但他们的出现原因和运作方法却不太一样。在十几年前，个人电脑刚刚兴起的年代，客户端的运算能力非常有限，而且当时人们对于服务商提供的服务没有什么要求，一般来说只要求文字和图片，对服务器的要求相对来说比较低。所以当年大部分的运算都是在服务端进行的。这就是当年的瘦客户端模型。后来，随着接入互联网的人数逐年提高，并且人们希望能得到更多的多媒体内容，服务器慢慢变得不胜负荷。这个时候由于个人电脑的速度也在不断提升。于是，就有人提出将一部分的运算放到客户端上运行，从而减低服务器的负荷。这就形成了肥客户端模型。可是到了现在，人们对于软件的需求又有了新的变化。随时可得和永不丢失的数据，即时更新的信息都是人们需要的东西。得益于高速发展的互联网，于是又有人提出将所有数据和运算重新归纳到服务端（云）上，客户只需要手持一台能上网的机器（手机，PDA，MID）就能随时随地访问到需要的数据和服务。在这种背景下，云计算就诞生了。 云计算有以下的特点： 所有服务都是基于网络的（Web-based）。客户端只需要安装一个浏览器就可以访问所有服务。 客户端不会储存任何资料和数据。所有东西都保存在服务器（云）上，这样用户无论何时何地在任何一台电脑上，都能访问到属于自己的个人数据。 服务是通用的，就像Microsoft Office等通用软件一样，你可以做一些个性化的设置，但不会专门有大规模的customization。 对于企业用户来说，云计算可以省却维护服务器的麻烦。服务提供商为你提供了必要的软件和硬件维护，并且有24小时专人技术支持。企业能省下大量维护和升级的费用，所以云计算是很受欢迎的。]]></description>
			<content:encoded><![CDATA[<p>云计算(Cloud Computing)一词，起源于2004年左右，意指将所有软件和大部分的计算功能都放在一块云里面。客户端只需要安装一个云端程序（PC上一般已浏览器为主），就可以使用大量由云提供的服务。套句老话，这其实是一个瘦客户端-肥服务端模型，这个模型与十几二十年前的模型本质上是一样，但他们的出现原因和运作方法却不太一样。在十几年前，个人电脑刚刚兴起的年代，客户端的运算能力非常有限，而且当时人们对于服务商提供的服务没有什么要求，一般来说只要求文字和图片，对服务器的要求相对来说比较低。所以当年大部分的运算都是在服务端进行的。这就是当年的瘦客户端模型。后来，随着接入互联网的人数逐年提高，并且人们希望能得到更多的多媒体内容，服务器慢慢变得不胜负荷。这个时候由于个人电脑的速度也在不断提升。于是，就有人提出将一部分的运算放到客户端上运行，从而减低服务器的负荷。这就形成了肥客户端模型。可是到了现在，人们对于软件的需求又有了新的变化。随时可得和永不丢失的数据，即时更新的信息都是人们需要的东西。得益于高速发展的互联网，于是又有人提出将所有数据和运算重新归纳到服务端（云）上，客户只需要手持一台能上网的机器（手机，PDA，MID）就能随时随地访问到需要的数据和服务。在这种背景下，云计算就诞生了。</p>
<p>云计算有以下的特点：</p>
<ul>
<li>所有服务都是基于网络的（Web-based）。客户端只需要安装一个浏览器就可以访问所有服务。</li>
<li>客户端不会储存任何资料和数据。所有东西都保存在服务器（云）上，这样用户无论何时何地在任何一台电脑上，都能访问到属于自己的个人数据。</li>
<li>服务是通用的，就像Microsoft Office等通用软件一样，你可以做一些个性化的设置，但不会专门有大规模的customization。</li>
</ul>
<p>对于企业用户来说，云计算可以省却维护服务器的麻烦。服务提供商为你提供了必要的软件和硬件维护，并且有24小时专人技术支持。企业能省下大量维护和升级的费用，所以云计算是很受欢迎的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jiyunalex.com/blog/2009/07/15/cloud-computing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Application Security</title>
		<link>http://www.jiyunalex.com/blog/2009/06/15/web-application-security/</link>
		<comments>http://www.jiyunalex.com/blog/2009/06/15/web-application-security/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 21:59:00 +0000</pubDate>
		<dc:creator>yukialex</dc:creator>
				<category><![CDATA[Alex's]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">/alex/post/Web-Application-Security.aspx</guid>
		<description><![CDATA[今天公司培训，去上了一天课，讲的主题是&#8220;Web Application Security&#8221;。主讲人是一个老外，handshake networking的consultant。我觉得讲的内容很不错，在这里和大家分享一下吧。 Web Application Security &#160; 随着网络高速发展，越来越多公司将部分业务放在网上。一来方便了客户，二来也减低了公司本身的行政费用。以前黑客们大多将精力集中在OS或者Web Server层面。比如说Windows的漏洞或者是IIS，Apache的漏洞，并加以攻击。但随着这些软件的不断完善，攻击的难度也越来越大。相比起来，Web Application层面的攻击就比较容易。原因有几个：第一，OS和Web Server的漏洞可以通过patch的形式修复，一旦开发商发布这些patch，大部分电脑的漏洞都可以堵塞。但Web Application都是自己开发的，这个堵塞了漏洞，另一个还可以用同样的手法攻击。第二，Web Application的开发都是小规模进行，质量良莠不齐，攻击起来相对简单。 程序员避免犯的错误 &#160; 在这里说几个常犯的错误吧。 不要在同一个目录下备份文件。一般来说，程序员有个习惯就是做任何修改之前先备份一下，将原来的文件改成.bak, .tmp之类的。如果黑客知道我们的文件名（不可能不知道，就在网址里），就可以尝试下载有这些后缀的文件，找到的话，我们的源代码就会被直接下载咯。 修改Web Server的默认设置。修改Web Server的设置，使得返回的http header不会有IIS/6.0或Apache 2.2.1之类可以告诉黑客服务器版本的东西。因为这信息有助于黑客锁定攻击你的方法。而且主讲人还说了一个很重要的原因。大部分黑客都是没有既定目标的，他们只是在网上漫游，寻找合适的网站来攻击。如果你的网站返回的是没有任何意义的东西，他们就会觉得那管理员最起码懂一点安全的东西。于是就会放弃这个网站，直接寻找下一个。哈哈，这个强吧。 尽量不要将多个Application放在同一个服务器中。因为你永远不知道别人的Application有什么漏洞，所以每增加一个Application就等于增加了该服务器被攻击的机率。要知道，一个Application被攻破，黑客就可以通过其他方法拿到别的Application的控制权。 目前先说这么多吧。]]></description>
			<content:encoded><![CDATA[<p>今天公司培训，去上了一天课，讲的主题是&ldquo;Web Application Security&rdquo;。主讲人是一个老外，handshake networking的consultant。我觉得讲的内容很不错，在这里和大家分享一下吧。</p>
<h3>Web Application Security</h3>
<p>&nbsp;</p>
<p>随着网络高速发展，越来越多公司将部分业务放在网上。一来方便了客户，二来也减低了公司本身的行政费用。以前黑客们大多将精力集中在OS或者Web Server层面。比如说Windows的漏洞或者是IIS，Apache的漏洞，并加以攻击。但随着这些软件的不断完善，攻击的难度也越来越大。相比起来，Web Application层面的攻击就比较容易。原因有几个：第一，OS和Web Server的漏洞可以通过patch的形式修复，一旦开发商发布这些patch，大部分电脑的漏洞都可以堵塞。但Web Application都是自己开发的，这个堵塞了漏洞，另一个还可以用同样的手法攻击。第二，Web Application的开发都是小规模进行，质量良莠不齐，攻击起来相对简单。</p>
<h3>程序员避免犯的错误</h3>
<p>&nbsp;</p>
<p>在这里说几个常犯的错误吧。</p>
<ol>
<li>不要在同一个目录下备份文件。一般来说，程序员有个习惯就是做任何修改之前先备份一下，将原来的文件改成.bak, .tmp之类的。如果黑客知道我们的文件名（不可能不知道，就在网址里），就可以尝试下载有这些后缀的文件，找到的话，我们的源代码就会被直接下载咯。</li>
<li>修改Web Server的默认设置。修改Web Server的设置，使得返回的http header不会有IIS/6.0或Apache 2.2.1之类可以告诉黑客服务器版本的东西。因为这信息有助于黑客锁定攻击你的方法。而且主讲人还说了一个很重要的原因。大部分黑客都是没有既定目标的，他们只是在网上漫游，寻找合适的网站来攻击。如果你的网站返回的是没有任何意义的东西，他们就会觉得那管理员最起码懂一点安全的东西。于是就会放弃这个网站，直接寻找下一个。哈哈，这个强吧。</li>
<li>尽量不要将多个Application放在同一个服务器中。因为你永远不知道别人的Application有什么漏洞，所以每增加一个Application就等于增加了该服务器被攻击的机率。要知道，一个Application被攻破，黑客就可以通过其他方法拿到别的Application的控制权。</li>
</ol>
<p>目前先说这么多吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jiyunalex.com/blog/2009/06/15/web-application-security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slide Show widget for BlogEngine.NET</title>
		<link>http://www.jiyunalex.com/blog/2009/05/21/slide-show-widget-for-blogengine-net/</link>
		<comments>http://www.jiyunalex.com/blog/2009/05/21/slide-show-widget-for-blogengine-net/#comments</comments>
		<pubDate>Thu, 21 May 2009 21:07:00 +0000</pubDate>
		<dc:creator>yukialex</dc:creator>
				<category><![CDATA[Alex's]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">/alex/post/Slide-Show-widget-for-BlogEngineNET.aspx</guid>
		<description><![CDATA[今天用jquery写了一个给BlogEngine.NET用的slide show小工具。最重要的功能是你可以通过edit来自己上传照片，并且照片在上传后会在服务器背后自动压缩，以减低容量要求。啥也不说了，看首页右面的例子就是了，呵呵。 马上下载来玩玩吧。 This widget is written in jquery, an open source javascript library. It allows you to upload your own photos and display it as a slide show. You can see the effect on the Homepage. Please download it right below, a readme file is included. SlideShow]]></description>
			<content:encoded><![CDATA[<p>今天用jquery写了一个给BlogEngine.NET用的slide show小工具。最重要的功能是你可以通过edit来自己上传照片，并且照片在上传后会在服务器背后自动压缩，以减低容量要求。啥也不说了，看首页右面的例子就是了，呵呵。</p>
<p>马上下载来玩玩吧。</p>
<p>This widget is written in jquery, an open source javascript library. It allows you to upload your own photos and display it as a slide show. You can see the effect on the Homepage. Please download it right below, a readme file is included.</p>
<p><a href="http://www.jiyunalex.com/blog/wp-content/uploads/2009/05/SlideShow.zip">SlideShow</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jiyunalex.com/blog/2009/05/21/slide-show-widget-for-blogengine-net/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>jquery初步介绍</title>
		<link>http://www.jiyunalex.com/blog/2009/05/19/jquery%e5%88%9d%e6%ad%a5%e4%bb%8b%e7%bb%8d/</link>
		<comments>http://www.jiyunalex.com/blog/2009/05/19/jquery%e5%88%9d%e6%ad%a5%e4%bb%8b%e7%bb%8d/#comments</comments>
		<pubDate>Tue, 19 May 2009 20:48:00 +0000</pubDate>
		<dc:creator>yukialex</dc:creator>
				<category><![CDATA[Alex's]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">/alex/post/jquerye5889de6ada5e4bb8be7bb8d.aspx</guid>
		<description><![CDATA[最近在网上看到jquery这个名词，于是在网上搜了一下，发觉貌似还挺多人在使用的。下面是一段关于jquery的描述： &#8220;jQuery 是一套物件導向式簡潔輕量級的 JavaScript Library。透過 jQuery 你可以用最精簡少量的程式碼來輕鬆達到跨瀏覽器 DOM 操作、事件處理、設計頁面元素動態效果、AJAX 互動等。&#8221; 好，那就开始吧。第一步是先要下载jquery： http://docs.jquery.com/Downloading_jQuery接著將此 JS 檔放進您網頁 HTML 的 &#60;head&#62; 及 &#60;/head&#62; 之間&#8230; &#60;script type="text/javascript" src="jQuery 檔案路徑"&#62;&#60;/script&#62; jQuery 所有的屬性及函式都是定義在「jQuery」這個物件之下，這使你不會因為使用 jQuery Library 而與原本有的全域變數等其它命名空間產生衝突。此外，要取得 jQuery 物件也可以透過它提供的的另外一個縮寫符號 (別名)－錢字號「$」，這時大家可能會問那我有使用其它的 JavaScript Library 也是用「$」怎麼辦？有辦法，用下面這一行就解決了： jQuery.noConflict(); 接著你就可以繼續用 $ 來操作你原本有的函式。但是如果你還是比較想用 $ 來操作 jQuery 怎麼辦？也有取巧的辦法： (function($) { // 在此區塊內我們使 $ 參照 jQuery 物件 // 在此區塊內使用 $ 不會與其它函式衝突 [...]]]></description>
			<content:encoded><![CDATA[<p>最近在网上看到jquery这个名词，于是在网上搜了一下，发觉貌似还挺多人在使用的。下面是一段关于jquery的描述：</p>
<p>&ldquo;jQuery 是一套物件導向式簡潔輕量級的 <strong>JavaScript Library</strong>。透過 jQuery 你可以用最精簡少量的程式碼來輕鬆達到跨瀏覽器 DOM 操作、事件處理、設計頁面元素動態效果、AJAX 互動等。&rdquo;</p>
<p>好，那就开始吧。第一步是先要下载jquery：</p>
<p><a href="http://docs.jquery.com/Downloading_jQuery">http://docs.jquery.com/Downloading_jQuery</a><br />接著將此 JS 檔放進您網頁 HTML 的 &lt;head&gt; 及 &lt;/head&gt; 之間&#8230;</p>
<pre class="code"><strong>&lt;script type="text/javascript" src="jQuery 檔案路徑"&gt;&lt;/script&gt;</strong></pre>
<p>jQuery 所有的屬性及函式都是定義在<strong>「jQuery」</strong>這個物件之下，這使你不會因為使用 jQuery Library 而與原本有的全域變數等其它命名空間產生衝突。此外，要取得 jQuery 物件也可以透過它提供的的另外一個縮寫符號 (別名)－錢字號<strong>「$」</strong>，這時大家可能會問那我有使用其它的 JavaScript Library 也是用「$」怎麼辦？有辦法，用下面這一行就解決了：</p>
<pre class="code">jQuery.noConflict();</pre>
<p>接著你就可以繼續用 $ 來操作你原本有的函式。但是如果你還是比較想用 $ 來操作 jQuery 怎麼辦？也有取巧的辦法：</p>
<pre class="code">(function($) {
    <span class="memo">// 在此區塊內我們使 $ 參照 jQuery 物件</span>
    <span class="memo">// 在此區塊內使用 $ 不會與其它函式衝突</span>
})(jQuery);</pre>
<p>你也可以自己取個 jQuery Object 的別名：</p>
<pre class="code">var $alias = jQuery.noConflict();</pre>
<p>接下來你就可以使用 $alias 取代 $。</p>
<p><h2>jQuery 的基本操作概念 (Coding basics)</h2>
<p>jQuery 程式碼由 $ (或jQuery) 開始 &rarr; 後面會接著圓刮號「()」&rarr; 而圓刮號裡面的參數是你想叫 jQuery 幫你找什麼 (取得哪個(些)元素) &rarr; 接著是你想叫 jQuery 執行什麼動作 (或處理事件)。例如：</p>
<pre id="demo" class="code"><span class="memo">/*  $("#demo")：選取id為demo的元素，並綁定onclick事件  .css("background-color","gray")：  叫jQuery將其CSS的背景顏色屬性改成灰色  你可以用滑鼠點這個範例看效果*/</span>
$("#demo").click(function(){
  $("#demo").css("background-color","gray");
});	</pre>
</p>
<h2>Chaining － 串接</h2>
<p>在 jQuery 中，幾乎所有成員都會返回自己執行後的結果－也是一個 jQuery 物件，因此你可以連續地使用函數 (Chaining)。以下我們用一個範例來說明 Chaining 是怎麼一回事：</p>
<pre class="code">$("#container").css("color", "blue").css("background-color", "red");</pre>
<p>上面這段程式碼由兩段函式組成：</p>
<pre class="code">$("#container").css("color", "blue") <span class="memo">&rarr; 將文字改成藍色</span>
$("#container").css("background-color", "red") <span class="memo">&rarr; 再將背景顏色改為紅色</span></pre>
<p>利用 Chaining 只剩一行，是不是簡潔多了？</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jiyunalex.com/blog/2009/05/19/jquery%e5%88%9d%e6%ad%a5%e4%bb%8b%e7%bb%8d/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

