<?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>Kevin.Gao.Blog() &#187; Kevin Gao</title>
	<atom:link href="http://www.kevingao.net/author/kevin/feed" rel="self" type="application/rss+xml" />
	<link>http://www.kevingao.net</link>
	<description>SourceSafe, Source Control, Software Development</description>
	<lastBuildDate>Tue, 27 Jul 2010 12:26:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SCM Anywhere 2.2 Released!</title>
		<link>http://www.kevingao.net/general/scm-anywhere-2-2-released.html</link>
		<comments>http://www.kevingao.net/general/scm-anywhere-2-2-released.html#comments</comments>
		<pubDate>Tue, 27 Jul 2010 12:23:15 +0000</pubDate>
		<dc:creator>Kevin Gao</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.kevingao.net/?p=744</guid>
		<description><![CDATA[I&#8217;m happy to announce that SCM Anywhere Standalone 2.2 is released today!  SCM Anywhere Hosted 2.2 is also going to release on August 1. Stay tuned.  :-) 
Since SCM Anywhere was launched, there have been many customers asking whether there is a web front for people like external users, test team members to log issues.  In [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m happy to announce that <a href="http://www.scmsoftwareconfigurationmanagement.com/Products/Version-Control-Source-Control-SCM-Anywhere.aspx">SCM Anywhere Standalone 2.2</a> is released today!  <a href="http://www.scmsoftwareconfigurationmanagement.com/Products/Software-Configuration-Management-SCM-Hosting.aspx">SCM Anywhere Hosted 2.2</a> is also going to release on August 1. Stay tuned.  :-) </p>
<p>Since SCM Anywhere was launched, there have been many customers asking whether there is a web front for people like external users, test team members to log issues.  In response to the customer requests, we add an issue tracking web client to SCM Anywhere in this version so that users can report and track issues via web browsers conveniently.</p>
<p>Besides the addition of web client, the new version includes better support for Visual Studio 2010 and enhanced SCM Anywhere VSPackage (<a href="http://www.scmsoftwareconfigurationmanagement.com/Products/SCMStandalone_News.aspx">More info</a>).</p>
<p>I’m putting the download links here. You can have a try if interested.</p>
<ul>
<li>SCM Anywhere Standalone <a href="http://www.dynamsoft.com/Downloads/SCMStandalone_Download.aspx">Download</a>  <a href="http://kb.dynamsoft.com/questions/499/How+to+upgrade+to+SCM+Anywhere+Standalone+2.x%3F">Upgrade </a> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.kevingao.net/general/scm-anywhere-2-2-released.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SourceAnywhere 2.3.1 Released!</title>
		<link>http://www.kevingao.net/general/sourceanywhere-2-3-1-released.html</link>
		<comments>http://www.kevingao.net/general/sourceanywhere-2-3-1-released.html#comments</comments>
		<pubDate>Tue, 13 Jul 2010 06:36:50 +0000</pubDate>
		<dc:creator>Kevin Gao</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.kevingao.net/?p=730</guid>
		<description><![CDATA[I&#8217;m pleased to announce that both SourceAnywhere Standalone 2.3.1 and SourceAnywhere Hosted 2.3.1 are released today.  
 
During the past months, we received quite a few feedbacks regarding our VSS Import Tool. Knowing how important the history of source code in VSS and easy migration to SourceAnywhere means to our customers, we decided to improve [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pleased to announce that both <a href="http://www.dynamsoft.com/Products/SourceAnywhere-SourceSafe-VSS.aspx">SourceAnywhere Standalone 2.3.1</a> and <a href="http://www.dynamsoft.com/Products/SourceAnywhere-Hosting-Version-Control-Source-Control.aspx">SourceAnywhere Hosted 2.3.1</a> are released today. <img src='http://www.kevingao.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p> <br />
During the past months, we received quite a few feedbacks regarding our VSS Import Tool. Knowing how important the history of source code in VSS and easy migration to SourceAnywhere means to our customers, we decided to improve the VSS Import Tool to better serve our users.</p>
<p> </p>
<p>After several weeks&#8217; effort, we finally worked out an internal version which impresses one user, &#8220;I&#8217;m very pleased by great acceleration of importing (<strong>from 10 days to 8 hours</strong>)&#8221; WOW, Great Job! Thanks to our customers and team members.</p>
<p> </p>
<p>I&#8217;m listing the main improvements of <strong>VSS Import Tool</strong> here (click <a href="http://www.dynamsoft.com/Products/SAWStandalone_News.aspx">here</a> to learn more):</p>
<ul>
<li>Greatly improved the performance by introducing multi-threading technology.</li>
<li>Enabled users work normally while import is in the process. Users are able to access/edit the data once the latest versions of files/projects have been imported.</li>
<li>Added support of importing the data from the error point if the process fails.</li>
<li>Optimized the import of Label.</li>
<li>Optimized the project selection. Refreshing the projects is much faster now.</li>
</ul>
<p> </p>
<p>In addition, <strong>MSSCCI Plug-in</strong><strong> </strong>boosts the performance by up to<strong> 30%~50%</strong>. According to the data provided by our test team, it now takes less than 20 sec to open a large project from source control through uniPaaS, compared to 1~2 minutes in version 2.3 (build 30656 of hosted edition).</p>
<p> </p>
<p>Considering you may be interested in experiencing these exciting improvements by yourselves, I put the download links here:</p>
<p>SourceAnywhere Hosted: <a href="http://www.dynamsoft.com/Products/SAWHosted_Plan.aspx">Signup</a><br />
SourceAnywhere Standalone: <a href="http://www.dynamsoft.com/Downloads/SAWStandalone_Download.aspx">Download</a>, <a href="http://kb.dynamsoft.com/questions/162/How+to+upgrade+SourceAnywhere+Standalone+to+the+latest+version%3F">Upgrade</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevingao.net/general/sourceanywhere-2-3-1-released.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft is launching Windows Server AppFabric and Windows Azure AppFabric</title>
		<link>http://www.kevingao.net/general/microsoft-is-launching-windows-server-appfabric-and-windows-azure-appfabric.html</link>
		<comments>http://www.kevingao.net/general/microsoft-is-launching-windows-server-appfabric-and-windows-azure-appfabric.html#comments</comments>
		<pubDate>Mon, 26 Apr 2010 19:49:55 +0000</pubDate>
		<dc:creator>Kevin Gao</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.kevingao.net/?p=728</guid>
		<description><![CDATA[

Microsoft is launching Windows Server AppFabric and Windows Azure AppFabric.
Join the event on May 20 at 8:30 A.M. Pacific Time to learn how your current IT assets can harness some of the benefits of the cloud on-premises-and can readily connect to new applications and data running in the cloud. As part of the Virtual Launch [...]]]></description>
			<content:encoded><![CDATA[<p><span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium 'Times New Roman'; white-space: normal; orphans: 2; letter-spacing: normal; color: #000000; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"></p>
<div style="background-color: #ffffff; margin: 0px; font: 13px/19px Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; background-origin: initial; background-clip: initial; padding: 0.6em;">
<p>Microsoft is launching Windows Server AppFabric and Windows Azure AppFabric.</p>
<p>Join the event on May 20 at 8:30 A.M. Pacific Time to learn how your current IT assets can harness some of the benefits of the cloud on-premises-and can readily connect to new applications and data running in the cloud. As part of the Virtual Launch Event, Gartner vice president and distinguished analyst Yefim Natis will discuss the latest trends and biggest questions facing the Application Infrastructure space. He will also speak about the role Application Infrastructure will play in helping businesses benefit from the cloud.  Plus, you&#8217;ll hear some exciting product announcements and a keynote from Abhay Parasnis, GM of Application Server Group at Microsoft.  Parasnis will discuss the latest Microsoft investments in the Application Infrastructure space aimed at delivering on-demand scalability, highly available applications, a new level of connectivity, and more. Save the date!</p>
<p>For more info, please visit:</p>
<p><a href="http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx">http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx</a></p>
<p> </p>
<p>Thanks.</p></div>
<p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevingao.net/general/microsoft-is-launching-windows-server-appfabric-and-windows-azure-appfabric.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HAPPY NEW YEAR</title>
		<link>http://www.kevingao.net/general/happy-new-year.html</link>
		<comments>http://www.kevingao.net/general/happy-new-year.html#comments</comments>
		<pubDate>Tue, 05 Jan 2010 03:10:07 +0000</pubDate>
		<dc:creator>Kevin Gao</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.kevingao.net/?p=721</guid>
		<description><![CDATA[Hi Everyone,
Happy new year.
Wish you and your family all the best in 2010.
Kevin Gao
]]></description>
			<content:encoded><![CDATA[<p>Hi Everyone,</p>
<p>Happy new year.</p>
<p>Wish you and your family all the best in 2010.</p>
<p>Kevin Gao</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevingao.net/general/happy-new-year.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dynamsoft is Releasing .NET TWAIN</title>
		<link>http://www.kevingao.net/general/dynamsoft-is-releasing-net-twain.html</link>
		<comments>http://www.kevingao.net/general/dynamsoft-is-releasing-net-twain.html#comments</comments>
		<pubDate>Mon, 28 Dec 2009 03:53:02 +0000</pubDate>
		<dc:creator>Kevin Gao</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.kevingao.net/?p=715</guid>
		<description><![CDATA[Dynamic Web TWAIN is an ActiveX control and optimized for web applications. Dynamic Web TWAIN has been very popular. It is widely used in government, health care, insurance, policing and many other industries.
We are releasing a new TWAIN component, Dynamsoft .NET TWAIN, which is developed in C# and uses managed code. We are doing the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.dynamsoft.com/Products/WebTWAIN_Overview.aspx" target="_blank">Dynamic Web TWAIN </a>is an ActiveX control and optimized for web applications. Dynamic Web TWAIN has been very popular. It is widely used in government, health care, insurance, policing and many other industries.</p>
<p>We are releasing a new TWAIN component, Dynamsoft .NET TWAIN, which is developed in C# and uses managed code. We are doing the release test of Dynamsoft .NET TWAIN and expecting to release it in the coming months.</p>
<p>Stay tuned.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevingao.net/general/dynamsoft-is-releasing-net-twain.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SourceAnywhere for VSS 5.4 and SourceOffSite 4.2 Comparison</title>
		<link>http://www.kevingao.net/programming/sourceanywhere-for-vss-and-sourceoffsite-comparison.html</link>
		<comments>http://www.kevingao.net/programming/sourceanywhere-for-vss-and-sourceoffsite-comparison.html#comments</comments>
		<pubDate>Mon, 20 Jul 2009 04:14:36 +0000</pubDate>
		<dc:creator>Kevin Gao</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.kevingao.net/?p=702</guid>
		<description><![CDATA[As the architect of SourceAnywhere for VSS, I was asked by many users about the performance of SourceAnywhere for VSS compared with other products.
Recently, I did the test. Now I am posting the result here with the hope that it can save your time evaluating different SourceSafe remote access tools. I mainly focus on the [...]]]></description>
			<content:encoded><![CDATA[<p>As the architect of SourceAnywhere for VSS, I was asked by many users about the performance of SourceAnywhere for VSS compared with other products.</p>
<p>Recently, I did the test. Now I am posting the result here with the hope that it can save your time evaluating different SourceSafe remote access tools. I mainly focus on the features and remote-access performance comparison.</p>
<p> </p>
<p><strong>Below is the result:</strong></p>
<h3>Feature Comparison</h3>
<table border="1" width="100%">
<tbody>
<tr>
<td><strong>Features</strong></td>
<td align="center"><a href="http://www.dynamsoft.com/Products/SAW_Overview.aspx" target="_blank"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/logo_SAWV.gif" alt="Visual SourceSafe (VSS) Remote Access Tool Recommended by Microsoft" /></a></td>
<td align="center"><strong>SourceOffSite</strong></td>
</tr>
<tr>
<td colspan="3"><em><strong>Performance Features</strong></em></td>
</tr>
<tr>
<td>Data compression</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
</tr>
<tr>
<td>Client/Server architecture</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
</tr>
<tr>
<td>Cache Server</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/no.gif" alt="No" /></td>
</tr>
<tr>
<td>Delta Transfer</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/no.gif" alt="No" /></td>
</tr>
<tr>
<td>Multithread file transfer</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/no.gif" alt="No" /></td>
</tr>
<tr>
<td colspan="3">　</td>
</tr>
<tr>
<td colspan="3"><em><strong>Security Features</strong></em></td>
</tr>
<tr>
<td>Client/Server Architecture</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
</tr>
<tr>
<td>Blowfish encryption</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
</tr>
<tr>
<td>128 SSL</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/no.gif" alt="No" /></td>
</tr>
<tr>
<td>Password policy</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/no.gif" alt="No" /></td>
</tr>
<tr>
<td>Independent VSS database access control</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/no.gif" alt="No" /></td>
</tr>
<tr>
<td colspan="3">　</td>
</tr>
<tr>
<td colspan="3"><em><strong>IDE Integration</strong></em></td>
</tr>
<tr>
<td>Visual Studio 6/2003/2005/2008</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
</tr>
<tr>
<td>SQL Server 2005</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
</tr>
<tr>
<td>Eclipse Plug-in</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/no.gif" alt="No" /></td>
</tr>
<tr>
<td>Dreamweaver</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/no.gif" alt="No" /></td>
</tr>
<tr>
<td colspan="3">　</td>
</tr>
<tr>
<td colspan="3"><em><strong>Cross Platform</strong></em></td>
</tr>
<tr>
<td>Windows</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
</tr>
<tr>
<td>Linux</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
</tr>
<tr>
<td>Mac</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
</tr>
<tr>
<td>Solaris</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/no.gif" alt="No" /></td>
</tr>
<tr>
<td>AIX</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/no.gif" alt="No" /></td>
</tr>
<tr>
<td>SCO</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/no.gif" alt="No" /></td>
</tr>
<tr>
<td>Any Java compatible platform</td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/yes.gif" alt="Yes" /></td>
<td align="center"><img src="http://www.kevingao.net/wp-content/uploads/2009/07/no.gif" alt="No" /></td>
</tr>
</tbody>
</table>
<p> </p>
<h3>Performance Test</h3>
<p><strong>Result:</strong> (Unit: second)</p>
<table border="1" width="100%">
<tbody>
<tr>
<td>　</td>
<td><strong>SourceAnywhere for VSS with cache server</strong></td>
<td><strong>SourceAnywhere for VSS without cache server</strong></td>
<td><strong>SourceOffSite (no cache server is available)</strong></td>
</tr>
<tr>
<td><strong>Add</strong></td>
<td>195</td>
<td>193</td>
<td>408</td>
</tr>
<tr>
<td><strong>Get (no local file exists)</strong></td>
<td>175</td>
<td>213</td>
<td>1256</td>
</tr>
<tr>
<td><strong>Check out (no local file exists)</strong></td>
<td>189</td>
<td>232</td>
<td>1409</td>
</tr>
<tr>
<td><strong>Check out (all local files exist)</strong></td>
<td>79</td>
<td>90</td>
<td>160</td>
</tr>
<tr>
<td><strong>Check in (no file is changed)</strong></td>
<td>177</td>
<td>189</td>
<td>723</td>
</tr>
<tr>
<td><strong>Check in (All files are changed)</strong></td>
<td>259</td>
<td>273</td>
<td>842</td>
</tr>
</tbody>
</table>
<p> </p>
<p><strong>Test Environment:</strong><br />
There are 3 machines used in the test:</p>
<p>Server : CPU Intel P4 2.66G, 256M RAM, Win 2003 Std sp1; SourceAnywhere for VSS Server 5.3.1; SourceOffSite Server 4.2</p>
<p>Client: CPU Intel P4 3.0G, 512M RAM, 160GB 5400RPM HD, Win XP sp2; SourceAnywhere for VSS Server 5.3.1; SourceOffSite Client 4.2</p>
<p>Cache server: CPU Intel Celeron 2.66G, 512M RAM, 160GB 5400RPM HD, Win2003 Std SP1; SourceAnywhere for VSS Cache Server 5.3.1</p>
<p>Broadband connection is used between the client and server machine.</p>
<p>The cache server and client are on the same LAN, which connects to the server through office ADSL.</p>
<p> </p>
<p><strong>Test Software:</strong></p>
<p>SourceAnywhere for VSS 5.4, SourceAnywhere for VSS 5.4 Cache Server 5.4, SourceAnywhere for VSS Client 5.4.</p>
<p>SourceOffSite Server 4.2, SourceOffSite Client 4.2.</p>
<p> </p>
<p><strong>Test Data:</strong></p>
<p>1. A project with 1,500 files; Total size is 17.1 MB.<br />
2. 1,000 changed files (used for check-in).<br />
3. Server and Client machines are restarted before each test.</p>
<p>I attached the test data I used here. You can <a href="http://www.kevingao.net/wp-content/uploads/sawforvss-sos-comparison/TestData.zip">download it</a> and do the test in your own environment if you like.</p>
<p> </p>
<p><strong>Test method:</strong></p>
<p>Every operation is carried out 5 times. The highest and lowest results are eliminated. The average value is calculated.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevingao.net/programming/sourceanywhere-for-vss-and-sourceoffsite-comparison.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Get involved</title>
		<link>http://www.kevingao.net/csharp-java-conversion/get-involved.html</link>
		<comments>http://www.kevingao.net/csharp-java-conversion/get-involved.html#comments</comments>
		<pubDate>Thu, 16 Jul 2009 07:38:55 +0000</pubDate>
		<dc:creator>Kevin Gao</dc:creator>
				<category><![CDATA[C# & Java conversion]]></category>

		<guid isPermaLink="false">http://www.kevingao.net/?p=689</guid>
		<description><![CDATA[This article is a part of CSharpJavaMerger Framework, an open source project. Join us now to make it better!
CSharpJavaMerger Framework is free and open source. It is developed by Dynamsoft. CSharpJavaMerger Framework isn&#8217;t perfect yet. Developers who are interested at the software are most welcome to get involved in the following ways:

Edit web pages
The ones [...]]]></description>
			<content:encoded><![CDATA[<div style="padding-right: 10px; padding-left: 13px; float: right; padding-bottom: 13px; margin-left: 8px; width: 210px; padding-top: 13px; background-color: #f5f5f5; text-align: left; border: #808080 1px dotted;"><strong>This article is a part of <a href="http://www.kevingao.net/csharp-java-conversion">CSharpJavaMerger Framework</a>, an open source project. <a href="http://www.kevingao.net/csharp-java-conversion/get-involved.html">Join us now</a> to make it better!</strong></div>
<p>CSharpJavaMerger Framework is free and open source. It is developed by Dynamsoft. CSharpJavaMerger Framework isn&#8217;t perfect yet. Developers who are interested at the software are most welcome to get involved in the following ways:</p>
<ul>
<li><strong>Edit web pages</strong><br />
The ones register will be granted with commit right to the wiki-type articles. To join KevinGao.net, you can register an account here:<br />
<a href="http://www.kevingao.net/wp-login">http://www.kevingao.net/wp-login</a></p>
<p>	After registering, you will receive an email including the password for your account. You can then log in KevinGao.net and make changes to the article.</p>
<p>
	You can find the wiki-type articles in <strong>Recent contributions to Wiki</strong> section at the bottom of Dashboard page.<br />
　</li>
<li><strong>Write Code</strong><br />
If you wish to contribute source code of CSharpJavaMerfer via SCM Anywhere Hosted, please contact Kevin Gao at <a href="mailto:kgao@dynamsoft.com">kgao@dynamsoft.com</a> with notice of your intension. He will give you an account of SCM Anywhere Hosted with change/commit right.<br />
　</li>
<li><strong>Submit feature requests or bug reports</strong><br />
If you have any feature requests or find any bugs, you can submit or update tickets in the Issue Tracking Explorer of SC M Anywhere Hosted:<br />
<a href="http://www.scmsoftwareconfigurationmanagement.com/help/SCM%20Hosted/Issue-Tracking/Issue.htm">http://www.scmsoftwareconfigurationmanagement.com/help/SCM%20Hosted/Issue-Tracking/Issue.htm</a></li>
</ul>
<p><strong>Links:</strong><br />
Previous article &gt;&gt;&gt;&gt;: <a href="http://www.kevingao.net/csharp-java-conversion/license.html">License</a><br />
Next article &gt;&gt;&gt;&gt;:<br />
WCF &amp; Java Interop series home page: <a href="http://www.kevingao.net/csharp-java-conversion">CSharpJavaMerger Framework</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevingao.net/csharp-java-conversion/get-involved.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>License</title>
		<link>http://www.kevingao.net/csharp-java-conversion/license.html</link>
		<comments>http://www.kevingao.net/csharp-java-conversion/license.html#comments</comments>
		<pubDate>Thu, 16 Jul 2009 07:29:05 +0000</pubDate>
		<dc:creator>Kevin Gao</dc:creator>
				<category><![CDATA[C# & Java conversion]]></category>

		<guid isPermaLink="false">http://www.kevingao.net/?p=687</guid>
		<description><![CDATA[This article is a part of CSharpJavaMerger Framework, an open source project. Join us now to make it better!
CSharpJavaMerger is distributed under General Public License (GPL).
 
Links:
Previous article &#62;&#62;&#62;&#62;: How to write Java code?
Next article &#62;&#62;&#62;&#62;: Get involved
WCF &#38; Java Interop series home page: CSharpJavaMerger Framework
]]></description>
			<content:encoded><![CDATA[<div style="padding-right: 10px; padding-left: 13px; float: right; padding-bottom: 13px; margin-left: 8px; width: 210px; padding-top: 13px; background-color: #f5f5f5; text-align: left; border: #808080 1px dotted;"><strong>This article is a part of <a href="http://www.kevingao.net/csharp-java-conversion">CSharpJavaMerger Framework</a>, an open source project. <a href="http://www.kevingao.net/csharp-java-conversion/get-involved.html">Join us now</a> to make it better!</strong></div>
<p>CSharpJavaMerger is distributed under General Public License (GPL).</p>
<p> </p>
<p><strong>Links:</strong><br />
Previous article &gt;&gt;&gt;&gt;: <a href="http://www.kevingao.net/csharp-java-conversion/how-to-write-java-code.html">How to write Java code?</a><br />
Next article &gt;&gt;&gt;&gt;: <a href="http://www.kevingao.net/csharp-java-conversion/get-involved.html">Get involved</a><br />
WCF &amp; Java Interop series home page: <a href="http://www.kevingao.net/csharp-java-conversion">CSharpJavaMerger Framework</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevingao.net/csharp-java-conversion/license.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to write Java code?</title>
		<link>http://www.kevingao.net/csharp-java-conversion/how-to-write-java-code.html</link>
		<comments>http://www.kevingao.net/csharp-java-conversion/how-to-write-java-code.html#comments</comments>
		<pubDate>Thu, 16 Jul 2009 07:26:29 +0000</pubDate>
		<dc:creator>Kevin Gao</dc:creator>
				<category><![CDATA[C# & Java conversion]]></category>

		<guid isPermaLink="false">http://www.kevingao.net/?p=684</guid>
		<description><![CDATA[This article is a part of CSharpJavaMerger Framework, an open source project. Join us now to make it better!

Use &#8220;class&#8221; instead of &#8220;interface&#8221; in enumerations and add &#8220;public final static&#8221; keywords before enumerations.For example:

public class EnumEOL
{
  public final static int enumEOLNative = 0;
  public final static int enumEOLWindowsCRLF = 1;
  public final static int enumEOLUnixCR = 2;
  public final [...]]]></description>
			<content:encoded><![CDATA[<div style="padding-right: 10px; padding-left: 13px; float: right; padding-bottom: 13px; margin-left: 8px; width: 210px; padding-top: 13px; background-color: #f5f5f5; text-align: left; border: #808080 1px dotted;"><strong>This article is a part of <a href="http://www.kevingao.net/csharp-java-conversion">CSharpJavaMerger Framework</a>, an open source project. <a href="http://www.kevingao.net/csharp-java-conversion/get-involved.html">Join us now</a> to make it better!</strong></div>
<ul>
<li>Use &#8220;class&#8221; instead of &#8220;interface&#8221; in enumerations and add &#8220;public final static&#8221; keywords before enumerations.For example:<br />
<code><br />
public class EnumEOL<br />
{<br />
  public final static int enumEOLNative = 0;<br />
  public final static int enumEOLWindowsCRLF = 1;<br />
  public final static int enumEOLUnixCR = 2;<br />
  public final static int enumEOLMacLF = 3;<br />
}</code></li>
<li>Don&#8217;t use &#8220;e.printStackTrace&#8221; in try… catch and System.out.println(e.getStackTrace(…)) in classes.</li>
<li>Don&#8217;t use annotations like @Override, @suppresswarning.</li>
<li>Use &#8220;CompareTo&#8221; and &#8220;CompareToIgnoreCace&#8221; to compare strings. Don&#8217;t use &#8220;equels ()&#8221; or &#8220;==&#8221;.</li>
<li>Replace all &#8220;String&#8221; with &#8220;CString&#8221;, which is a class defined in the CSharpJavaMerger Framework, except for the following two places:
<ul>
<li>Don&#8217;t change the &#8220;String&#8221; in &#8220;String Object&#8221;.</li>
<li>Don&#8217;t change the &#8220;String&#8221; in string constant. For example, public final static String VSSVER= &#8220;vssver.scc&#8221;</li>
</ul>
<p>Two things to notice:</p>
<ul>
<li>Use &#8220;string == null&#8221; instead of &#8220;CSting == null || CString.getValue() == null&#8221;.</li>
<li>The logic of Substring (int, int) is changed. The meaning of the 1st parameter is the same in C# and Java, while the 2nd one not. The 2nd parameter is the subscript of the substring in Java, and it means the length of the substring in C#. The substring of &#8220;CString&#8221; here is same with substring in C#.</li>
</ul>
</li>
<li>Use Debug.Assert (b) instead of assert (b). Debug is a class defined in CSharpJavaMerger Framework.</li>
<li>Omit &#8220;public&#8221; keyword in the member functions in interfaces.</li>
<li>Make sure the subclasses&#8217; functions, including returned value, function names, parameter list, are different from that of the superclass prototype, except implementation classes of Abstract and interface.</li>
<li>The name convention for variables of checkbox control variables: m_chk, for example, m_chkUseSSL.</li>
<li>Exception processing
<ul>
<li>Only catch the exceptions in java.lang.Exception, which is a base class of Java.<br />
After caching an exception, if any functions in java.lang.Exception need to be called, please add the objects in the constructor of CException, new an object of CException and call the according function of CException.For example:<br />
<code>try<br />
  {<br />
    //...<br />
  }<br />
  catch(Exception e1)<br />
  {<br />
    CException exp = new CException(e1);<br />
    CString str = exp.GetMessage()<br />
  }</code></li>
<li>Use e.GetMessage() instead of e.getLocaleMessage().</li>
</ul>
</li>
<li>File, I/O classes processing
<ul>
<li>Use CFile instead of File. CFile is a class in CSharpJava Framework. The class is used to judge file path, whether file exists or not, file&#8217;s properties, and whether files is deleted.</li>
<li>Use FileStream to read/write binary.</li>
<li>Use StreamWriter/StreamReader to read/write text.</li>
<li>Use CFileInputStream to read all files.</li>
<li>Use CFileOutputStream to write to all files.</li>
</ul>
</li>
<li>Use &#8220;DateTime&#8221; instead of &#8220;Calendar&#8221;. DateTime is a function in CSharepJavaMerger Framework.</li>
<li>Use Guid instead of UUID.</li>
<li>Omit Constructors called by Constructors. Replace &#8220;this ()&#8221; in Constructors with corresponding functions.</li>
<li>Add &#8220;break&#8221; before Default in switch case.</li>
<li>Use Boolean instead of Boolean. Boolean is a system class.</li>
<li>Replace Anonymous inner classes with inner or common classes.
<ul>
<li>Use List, Map etc instead of ArrayList, HashMap for statement. For example:<br />
Use: CList list = CList();<br />
Instead of ：ArrayList list = ArrayList()</li>
</ul>
</li>
<li>There may be some tricks when adding strings. For example:
<ul>
<li>CString str1 = new CString(&#8221;hello&#8221;);</li>
<li>CString str2 = new CString(&#8221;world&#8221; + str1);<br />
//This line can be compiled successfully.<br />
//However, what you want may be CString str2 = new CString(&#8221;World&#8221; + str1.getValue());</li>
</ul>
</li>
<li>Use CThread instead of Thread.</li>
<li>Use DESUtil instead of DES.</li>
<li>Capitalize the name of all packages.</li>
<li>Replace the function used for sorting &#8220;Collections.sort(listChangeSet,comparator);&#8221; with &#8220;list.Sort(Comparer comparer);&#8221;. Compare in a class in CSharepJavaMerger Framework.<br />
For example, use the following code:<br />
<code><br />
class SortListComparator extends Comparer&lt;Object&gt;<br />
{<br />
  public int Compare(Object obj1, Object obj2)<br />
  ...<br />
}</code><br />
Rather than:<br />
<code><br />
class SortListComparator implements Comparator&lt;Object&gt;<br />
{<br />
  public int compare(Object obj1, Object obj2)<br />
  ...<br />
}</code></li>
<li>Use CMap instead of Map. For example:<br />
Use:<br />
&#8220;CMap map = new CMap();&#8221;<br />
Instead of:<br />
&#8220;Map map = new HashMap();&#8221;</li>
<li>Don&#8217;t use Integer and Long system functions.</li>
<li>Change private inner constructors to be public.</li>
<li>If a member variable of a private inner class needs to be used by its external classes, please change the member variable to public.</li>
<li>If you want to convert between CString and Long, integer, please use Str.ToLong() instead of new Long(CString.GetValue).longValue().</li>
<li>Add [] before array definition like this:<br />
String [] var = null</li>
<li>Don&#8217;t use keywords as variables. For example,<br />
Do not use &#8220;out&#8221; which is in CFileStream out;.</li>
<li>Don&#8217;t get the string out of CString and then call the functions of String. For example:
<ul>
<li>Don&#8217;t use the following way: CString str; str.GetValue().compareTo</li>
<li>Other classes either. Don&#8217;t get the system classes and then call system functions.</li>
</ul>
</li>
<li>Don&#8217;t use the following functions:
<ul>
<li>Integer.intValue()</li>
<li>new Integer()</li>
<li>new Long</li>
<li>Long.longValue()</li>
</ul>
</li>
<li>If conditional expression (? : ) uses string, it&#8217;s not CString.</li>
</ul>
<p> </p>
<p><strong>Links:</strong><br />
Previous article &gt;&gt;&gt;&gt;: <a href="http://www.kevingao.net/csharp-java-conversion/how-to-write-csharp-code.html">How to write C# code?</a><br />
Next article &gt;&gt;&gt;&gt;: <a href="http://www.kevingao.net/csharp-java-conversion/license.html">License</a><br />
WCF &amp; Java Interop series home page: <a href="http://www.kevingao.net/csharp-java-conversion">CSharpJavaMerger Framework</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevingao.net/csharp-java-conversion/how-to-write-java-code.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to write C# code?</title>
		<link>http://www.kevingao.net/csharp-java-conversion/how-to-write-csharp-code.html</link>
		<comments>http://www.kevingao.net/csharp-java-conversion/how-to-write-csharp-code.html#comments</comments>
		<pubDate>Thu, 16 Jul 2009 06:52:46 +0000</pubDate>
		<dc:creator>Kevin Gao</dc:creator>
				<category><![CDATA[C# & Java conversion]]></category>

		<guid isPermaLink="false">http://www.kevingao.net/?p=679</guid>
		<description><![CDATA[This article is a part of CSharpJavaMerger Framework, an open source project. Join us now to make it better!

Use &#8220;base&#8221; instead of &#8220;super&#8221;.
Use &#8220;namespace&#8221; instead of &#8220;package&#8221;.
Use &#8220;using&#8221; instead of &#8220;import&#8221;. You can comment the import section and use the Resolve function of Visual Studio 2008 to add &#8220;using&#8221; automatically.
Omit &#8220;throw Exception&#8221; in the end [...]]]></description>
			<content:encoded><![CDATA[<div style="padding-right: 10px; padding-left: 13px; float: right; padding-bottom: 13px; margin-left: 8px; width: 210px; padding-top: 13px; background-color: #f5f5f5; text-align: left; border: #808080 1px dotted;"><strong>This article is a part of <a href="http://www.kevingao.net/csharp-java-conversion">CSharpJavaMerger Framework</a>, an open source project. <a href="http://www.kevingao.net/csharp-java-conversion/get-involved.html">Join us now</a> to make it better!</strong></div>
<ul>
<li>Use &#8220;base&#8221; instead of &#8220;super&#8221;.</li>
<li>Use &#8220;namespace&#8221; instead of &#8220;package&#8221;.</li>
<li>Use &#8220;using&#8221; instead of &#8220;import&#8221;. You can comment the import section and use the Resolve function of Visual Studio 2008 to add &#8220;using&#8221; automatically.</li>
<li>Omit &#8220;throw Exception&#8221; in the end of the functions.</li>
<li>Using &#8220;delegate callback&#8221; when accessing UI resources through workers threads.Below is the example of closing dialog boxes in workers thread:
<ul>
<li>Java<br />
<code>public void closeDialog()<br />
{<br />
  m_isCanceled = false;<br />
  Display.getDefault().syncExec(new Runnable()<br />
  {<br />
    public void run()<br />
    {<br />
      Shell shell = getShell();<br />
      if (shell != null)<br />
      {<br />
        if (!shell.isDisposed())<br />
        {<br />
          shell.dispose();<br />
        }<br />
      }<br />
    }<br />
  });<br />
}<br />
</code></li>
<li>C#<br />
<code>delegate void GUICallback(string pos);<br />
//Function declaration.<br />
//Please note the prototype of the function is certain:<br />
//the return value is void and the input parameter is string.<br />
private void closeDialogInner(string strMessage)<br />
{<br />
  if (this.InvokeRequired)<br />
  //This is a system function.<br />
  //If this function needs to access some control resources,<br />
  //please change "this" to the name of the control,<br />
  //for example: this.m_btnOK.InvokeRequired.<br />
  {<br />
    GUICallback callback = new GUICallback(closeDialogInner);<br />
    this.Invoke(callback, new object[] { strMessage });<br />
  }<br />
  else<br />
  {<br />
    this.Close();<br />
  }<br />
}<br />
</code></li>
</ul>
</li>
<li>Replace Display.getDefault().getActiveShell() with Form.ActiveForm(). This function may be not used much.</li>
<li>Use &#8220;is&#8221; instead of &#8220;instanceof&#8221;.</li>
<li>Replace Integer.MAX_VALUE with int.MaxValue and replace Long.MAX_VALUE with long.MaxValue.</li>
<li>An important thing: please keep the variables of interfaces&#8217; controls consistent.
<p>Don&#8217;t change logic. Don&#8217;t comment codes if you don&#8217;t need to. Please try to convert a function at a dash.<br />
These are the recommended steps:</p>
<ul>
<li>Transfer util class.</li>
<li>Transfer IView class.</li>
<li>Draw dialog boxes. Please make sure the variables of the control names in C# and Java are the same.</li>
<li>Implement the functions in IView.</li>
<li>Convert the controller classes.
<ul>
<li>Convert thread classes</li>
<li>Convert the Dialog control classes</li>
</ul>
</li>
<li>Add events for controls</li>
<li>Copy the implementing code of Copy event.<br />
One thing to notice: The constructor of Form calls InitializeComponent() directly, but in Java, createContents is called only when openDialob, so the time to create controls are different in C# and Java. The time to call FormLoad(…) method in C# is similar to that of createContents in Java.</li>
</ul>
</li>
<li>Replace &#8220;final&#8221; in local constant with &#8220;const&#8221;.</li>
<li>Omit &#8220;final&#8221; in parameters.</li>
<li>Use &#8220;public const&#8221; instead of &#8220;public final static&#8221;.</li>
<li>Replace &#8220;length&#8221; with &#8220;Length&#8221; in the member of array&#8217;s length.</li>
<li>Using Long:
<ul>
<li>Using Long= System.Int64;</li>
<li>Integer.MaxValue-&gt;Integer.MAX_VALUE</li>
</ul>
</li>
<li>Using Integer:
<ul>
<li>Using Integer = System.Int32</li>
<li>Long.MaxValue-&gt;Long.MAX_VALUE</li>
</ul>
</li>
</ul>
<p> </p>
<p><strong>Links:</strong><br />
Previous article &gt;&gt;&gt;&gt;: <a href="http://www.kevingao.net/csharp-java-conversion/an-example.html">An example</a><br />
Next article &gt;&gt;&gt;&gt;: <a href="http://www.kevingao.net/csharp-java-conversion/how-to-write-java-code.html">How to write Java code?</a><br />
WCF &amp; Java Interop series home page: <a href="http://www.kevingao.net/csharp-java-conversion">CSharpJavaMerger Framework</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kevingao.net/csharp-java-conversion/how-to-write-csharp-code.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
