<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3891346170516717444</id><updated>2011-11-28T08:23:43.503+08:00</updated><category term='Adobe'/><category term='Visual Basic 6'/><category term='Virtual PC'/><category term='JBoss'/><category term='S60'/><category term='MySQL'/><category term='SQL CE'/><category term='Nokia'/><category term='zLib'/><category term='NET'/><category term='CodeProject'/><category term='Windows XP Embedded'/><category term='ADO .Net'/><category term='Palm'/><category term='Google OS'/><category term='Java'/><category term='Symbian'/><category term='3ds Max'/><category term='MS SQL Express 2005'/><category term='UIQ'/><category term='winform'/><category term='C#'/><category term='Carbide'/><category term='compression'/><category term='MSSQL 2008'/><category term='zebra'/><category term='FTP'/><category term='MS-SQL'/><category term='Compact Framework'/><category term='T-SQL'/><category term='Windows OS'/><category term='ASPNET'/><category term='DirectX'/><category term='CF'/><category term='Reflector'/><category term='OpenGL'/><category term='.NET'/><title type='text'>Start Coding</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-2595629012547118086</id><published>2011-08-09T12:41:00.000+08:00</published><updated>2011-08-09T12:41:07.232+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSSQL 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='MS-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><title type='text'>Creating Linked-server in MSSQL</title><content type='html'>I come across a situation where I need to import the data from one instance to another, in MSSQL. So, I add the steps here to see it might help.&lt;br /&gt;&lt;br /&gt;1) At &lt;span class="Apple-style-span" style="color: red;"&gt;source DB&lt;/span&gt; where we want to retrieve the data, create a new login account, eg. "&lt;span class="Apple-style-span" style="color: red;"&gt;test&lt;/span&gt;" with password "123".&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-nhmW6Q26VmU/TkC3yODbXwI/AAAAAAAABCc/KNFpKR9n37k/s1600/01_Src_NewLogin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="319" src="http://4.bp.blogspot.com/-nhmW6Q26VmU/TkC3yODbXwI/AAAAAAAABCc/KNFpKR9n37k/s320/01_Src_NewLogin.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;2) Use the neccesary authetication, choose to untick "Enforce password policy" for our testing purpose.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-wqUUNXtLlIg/TkC31013JSI/AAAAAAAABCg/-_i6X2e4ZUY/s1600/02_Src_NoEnforcePassword.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" src="http://1.bp.blogspot.com/-wqUUNXtLlIg/TkC31013JSI/AAAAAAAABCg/-_i6X2e4ZUY/s320/02_Src_NoEnforcePassword.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;3) If the db name in source DB is called "testing", maps the test account "&lt;span class="Apple-style-span" style="color: red;"&gt;test&lt;/span&gt;" to this db, with appropriate schema. In this case, it's "dbo". Add the role as "&lt;span class="Apple-style-span" style="color: red;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms189121(v=sql.90).aspx"&gt;db_datareader&lt;/a&gt;&lt;/span&gt;" as well.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-IsPeSoA6lUk/TkC38Itpw9I/AAAAAAAABCk/Sy14PCks7yg/s1600/03_Src_UserMapping.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" src="http://2.bp.blogspot.com/-IsPeSoA6lUk/TkC38Itpw9I/AAAAAAAABCk/Sy14PCks7yg/s320/03_Src_UserMapping.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;4) At &lt;span class="Apple-style-span" style="color: red;"&gt;destination DB&lt;/span&gt; where we want to store the data, create a same new login account created in step (1), eg. "&lt;span class="Apple-style-span" style="color: red;"&gt;test&lt;/span&gt;" with password "123", using SA account.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Vd6pPDmhuLo/TkC4BbPvddI/AAAAAAAABCs/WSX1hnSEul4/s1600/05_Dest_NewLogin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="283" src="http://3.bp.blogspot.com/-Vd6pPDmhuLo/TkC4BbPvddI/AAAAAAAABCs/WSX1hnSEul4/s320/05_Dest_NewLogin.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;5) Use the neccesary authetication, choose to untick "Enforce password policy" for our testing purpose.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/--ZO6sfOMgHA/TkC4B6hwvzI/AAAAAAAABCw/4XuvvwvMplw/s1600/06_Dest_NoEnforcePassword.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" src="http://1.bp.blogspot.com/--ZO6sfOMgHA/TkC4B6hwvzI/AAAAAAAABCw/4XuvvwvMplw/s320/06_Dest_NoEnforcePassword.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;6) If the db name in&amp;nbsp;destination&amp;nbsp;DB is called "testDB", maps the test account "&lt;span class="Apple-style-span" style="color: red;"&gt;test&lt;/span&gt;" to this db, with appropriate schema. In this case, it's "dbo".&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5HvzEnCGs2E/TkC4IgwQSuI/AAAAAAAABC0/Djr7j3JRuos/s1600/07_Dest_UserMapping.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" src="http://4.bp.blogspot.com/-5HvzEnCGs2E/TkC4IgwQSuI/AAAAAAAABC0/Djr7j3JRuos/s320/07_Dest_UserMapping.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;7) &lt;a href="http://msdn.microsoft.com/en-us/library/ms190479.aspx"&gt;Add a linked-server&lt;/a&gt; in&amp;nbsp;destination&amp;nbsp;DB, you can either use SQL script or GUI.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-d6UMyhBeE0A/TkC4JGn5luI/AAAAAAAABC4/BkZYUfTUvWU/s1600/08_sp_addlinkedserver.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="169" src="http://3.bp.blogspot.com/-d6UMyhBeE0A/TkC4JGn5luI/AAAAAAAABC4/BkZYUfTUvWU/s320/08_sp_addlinkedserver.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;8) You can verify the available linked-server in the&amp;nbsp;destination&amp;nbsp;DB, thru'&amp;nbsp;Catalog Views:&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/ms178530.aspx"&gt;sys.servers&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-y-5t9dJ-liY/TkC4JfuyvPI/AAAAAAAABC8/zrVu-DQcs58/s1600/09_sys.serves.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="145" src="http://2.bp.blogspot.com/-y-5t9dJ-liY/TkC4JfuyvPI/AAAAAAAABC8/zrVu-DQcs58/s320/09_sys.serves.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;9) Now, log-in as "&lt;span class="Apple-style-span" style="color: red;"&gt;test&lt;/span&gt;" user.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-2UJnggwW9SQ/TkC4J2_nZcI/AAAAAAAABDA/dVIHFcTpVXk/s1600/10_ConnectToServer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="241" src="http://4.bp.blogspot.com/-2UJnggwW9SQ/TkC4J2_nZcI/AAAAAAAABDA/dVIHFcTpVXk/s320/10_ConnectToServer.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;10) So, you should be able to query the source DB data by using a &lt;a href="http://msdn.microsoft.com/en-us/library/ms187879.aspx"&gt;fully-qualified name&lt;/a&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-vOU_0QbbIbI/TkC4KXr5_FI/AAAAAAAABDE/YuFWHChpH1A/s1600/11_QuerySuccess.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="135" src="http://4.bp.blogspot.com/-vOU_0QbbIbI/TkC4KXr5_FI/AAAAAAAABDE/YuFWHChpH1A/s320/11_QuerySuccess.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-2595629012547118086?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/2595629012547118086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=2595629012547118086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2595629012547118086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2595629012547118086'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2011/08/creating-linked-server-in-mssql.html' title='Creating Linked-server in MSSQL'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-nhmW6Q26VmU/TkC3yODbXwI/AAAAAAAABCc/KNFpKR9n37k/s72-c/01_Src_NewLogin.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-5472233840315089617</id><published>2010-05-12T21:29:00.001+08:00</published><updated>2010-05-12T21:30:53.786+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='winform'/><category scheme='http://www.blogger.com/atom/ns#' term='MS-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>You can get my projects at Softpedia now, hehe</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;a href="http://www.softpedia.com/"&gt;Softpedia&lt;/a&gt; Editorial Team informed me that they have included my projects in their sites.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;1)&amp;nbsp;&lt;a href="http://www.softpedia.com/get/Desktop-Enhancements/Clocks-Time-Management/Analog-Clock-GanGary.shtml"&gt;Analog Clock&lt;/a&gt; -&amp;nbsp;A small desktop gadget that will display the current time (&lt;span class="Apple-style-span" style="color: #5e5e5e; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px;"&gt;Downloads: 44&lt;span class="Apple-style-span" style="color: black; font-family: Arial; font-size: 13px;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.softpedia.com/screenshots/Analog-Clock-GanGary_1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.softpedia.com/screenshots/Analog-Clock-GanGary_1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;2)&amp;nbsp;&lt;a href="http://www.softpedia.com/get/Internet/Servers/Server-Tools/SQL-Management-Console.shtml"&gt;SQL Management Console 0.1.1.29977&lt;/a&gt; -Query pane and result pane (&lt;span class="Apple-style-span" style="color: #5e5e5e; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px;"&gt;Downloads: 50&lt;span class="Apple-style-span" style="color: black; font-family: 'Times New Roman'; font-size: medium;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.softpedia.com/screenshots/SQL-Management-Console_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="261" src="http://www.softpedia.com/screenshots/SQL-Management-Console_2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Again, really thanks to them.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-5472233840315089617?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/5472233840315089617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=5472233840315089617' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5472233840315089617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5472233840315089617'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2010/05/you-can-get-my-projects-at-softpedia.html' title='You can get my projects at Softpedia now, hehe'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-7765996445395349130</id><published>2010-02-24T23:48:00.014+08:00</published><updated>2010-02-25T00:40:25.491+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASPNET'/><category scheme='http://www.blogger.com/atom/ns#' term='zebra'/><title type='text'>Print Zebra barcode label thru' ASP .NET</title><content type='html'>Recently, one of the projects I am maintaining required me to enhance the existing feature, which is printing the &lt;a href="http://www.zebra.com/id/zebra/na/en/index.html"&gt;Zebra&lt;/a&gt; barcode label through ASP .NET. The old staff who developed it left the company long time ago, and there's no other colleagues know how it was developed and worked.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Printing it as WinForm application  is not uncommon with the &lt;span class="Apple-style-span"  style=" ;font-family:Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx"&gt;SerialPort Class&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;, as there's a lot of resources out there, but not so true for ASP .NET.&lt;br /&gt;&lt;br /&gt;So I needed to google around and posted question to the forums. With some lucks and &lt;a href="http://www.developerfusion.com/forum/thread/29779/"&gt;googling skills&lt;/a&gt;, i managed to let it works and add enhancement on that. But i found not full steps on web, so just to post this to help someone who might need it in the future.&lt;br /&gt;&lt;br /&gt;1.a) Set the "&lt;b&gt;&lt;span class="Apple-style-span"  style="color:#FF0000;"&gt;Generic/Text Only&lt;/span&gt;&lt;/b&gt;" as default printer driver. Yes, you see it correctly, it's not zebra printer driver that match your zebra printer, since it's printed through web.&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_N2VfwXjUyUU/S4VMbPQqyKI/AAAAAAAABA4/Q639cu5nyPg/s1600-h/setup_00.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 221px;" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/S4VMbPQqyKI/AAAAAAAABA4/Q639cu5nyPg/s400/setup_00.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5441839755583735970" /&gt;&lt;/a&gt;&lt;br /&gt;1.b.i) If you do not have it, you can go to any existing printer property page (right-click on any other printer driver) and add this driver.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_N2VfwXjUyUU/S4VMuvhBqYI/AAAAAAAABBA/67M2X38BmOA/s1600-h/setup+generic+text+only+driver.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 291px; height: 400px;" src="http://3.bp.blogspot.com/_N2VfwXjUyUU/S4VMuvhBqYI/AAAAAAAABBA/67M2X38BmOA/s400/setup+generic+text+only+driver.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5441840090659793282" /&gt;&lt;/a&gt;&lt;br /&gt;1.b.ii) Browse to driver list start with "G", then you will find it. Finish this installation process.&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_N2VfwXjUyUU/S4VM-DmkcLI/AAAAAAAABBI/9v-zF3VMQbs/s1600-h/browse+generic+text+only+driver.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 312px;" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/S4VM-DmkcLI/AAAAAAAABBI/9v-zF3VMQbs/s400/browse+generic+text+only+driver.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5441840353749790898" /&gt;&lt;/a&gt;&lt;br /&gt;2) Once you have the driver, setup the ASP designer with &lt;a href="http://www.zebra.com/id/zebra/na/en/index/products/special_features/proglang.html"&gt;Zebra programming language&lt;/a&gt; (ZPL) like this (The buttons are for user to trigger the ZPL to send). &lt;/div&gt;&lt;div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span"  style="color:#0000EE;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_N2VfwXjUyUU/S4VT2h-w1BI/AAAAAAAABBw/6tWBo3TWDNY/s1600-h/ASPX+designer+for+zebra+ZPL.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 147px;" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/S4VT2h-w1BI/AAAAAAAABBw/6tWBo3TWDNY/s400/ASPX+designer+for+zebra+ZPL.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5441847921046770706" /&gt;&lt;/a&gt;3) By calling the undocumented print() function (not &lt;a href="http://www.tizag.com/javascriptT/javascriptprint.php"&gt;window.print()&lt;/a&gt;, and I think it works on IE only) in javascript, you can print the zebra bar-code label through ASP.NET.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_N2VfwXjUyUU/S4VPZdcz2QI/AAAAAAAABBQ/lSwEYZtN1z0/s1600-h/javascript+print+function.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 153px;" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/S4VPZdcz2QI/AAAAAAAABBQ/lSwEYZtN1z0/s400/javascript+print+function.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5441843023567902978" /&gt;&lt;/a&gt;&lt;/div&gt;4) Keep the web form as clean code as possible, you will send it as ZPL and ZPL only to printer.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_N2VfwXjUyUU/S4VUEScTw3I/AAAAAAAABB4/sQhhdl2e9wY/s1600-h/ZPL+in+ASP.NET.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/S4VUEScTw3I/AAAAAAAABB4/sQhhdl2e9wY/s400/ZPL+in+ASP.NET.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5441848157393896306" /&gt;&lt;/a&gt;&lt;div&gt; 5) Print it! You should get it ;)&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_N2VfwXjUyUU/S4VTQZ_FA7I/AAAAAAAABBo/4n_AGDp5Mpo/s1600-h/print+it.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 365px;" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/S4VTQZ_FA7I/AAAAAAAABBo/4n_AGDp5Mpo/s400/print+it.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5441847266065580978" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-7765996445395349130?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/7765996445395349130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=7765996445395349130' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/7765996445395349130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/7765996445395349130'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2010/02/print-zebra-barcode-label-thru-asp-net.html' title='Print Zebra barcode label thru&apos; ASP .NET'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_N2VfwXjUyUU/S4VMbPQqyKI/AAAAAAAABA4/Q639cu5nyPg/s72-c/setup_00.jpg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-4526814301364962085</id><published>2009-07-10T00:15:00.004+08:00</published><updated>2009-07-10T00:30:28.185+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google OS'/><title type='text'>Google lauches Chrome OS</title><content type='html'>Few days ago, Google &lt;span id="SPELLING_ERROR_0" class="blsp-spelling-corrected"&gt;launches&lt;/span&gt; Chrome OS at its &lt;a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html"&gt;official blog&lt;/a&gt;, and it quotes:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;"Google Chrome OS is an open source, lightweight operating system that will initially be targeted at &lt;span id="SPELLING_ERROR_1" class="blsp-spelling-error"&gt;netbooks&lt;/span&gt;."&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;There's more from &lt;a href="http://weblogs.java.net/blog/joconner/archive/2009/07/speculations_re.html"&gt;John &lt;span id="SPELLING_ERROR_2" class="blsp-spelling-error"&gt;O'Conner's&lt;/span&gt; Blog&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;"Google Chrome OS will be a slightly more beefy Android OS ..."&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;And from the &lt;a href="http://chrome.blogspot.com/2009/07/google-chrome-os-faq.html"&gt;FAQ session&lt;/a&gt; of the main site, there's a &lt;a href="http://computersservicing.blogspot.com/2009/07/google-chrome-os-screenshots-leaked.html"&gt;screenshot of this OS&lt;/a&gt; (this image does not belong to me):&lt;br /&gt;&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 300px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5356495881178020242" border="0" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SlYYn751eZI/AAAAAAAAAwQ/0PViDhfkddA/s400/google+chrome+os_leaked_screenshot%5B4%5D.png" /&gt;It's not weird Google target on &lt;span id="SPELLING_ERROR_3" class="blsp-spelling-error"&gt;netbooks&lt;/span&gt;, since &lt;span id="SPELLING_ERROR_4" class="blsp-spelling-error"&gt;netbooks&lt;/span&gt; has stronger sales recently.&lt;br /&gt;Personally I think it's still too early to judge the impact of it towards Windows OS on desktop.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-4526814301364962085?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/4526814301364962085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=4526814301364962085' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4526814301364962085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4526814301364962085'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2009/07/google-lauches-chrome-os.html' title='Google lauches Chrome OS'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_N2VfwXjUyUU/SlYYn751eZI/AAAAAAAAAwQ/0PViDhfkddA/s72-c/google+chrome+os_leaked_screenshot%5B4%5D.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-4349163576241007975</id><published>2009-02-07T12:33:00.014+08:00</published><updated>2009-02-07T13:15:07.561+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSSQL 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='MS-SQL'/><title type='text'>MSSQL 2008 System View release!</title><content type='html'>&lt;p&gt;Are you a DBA? Want to know how the overall architecture of MSSQL? Ever wonder how you can manage the databases easily? How you can create a version of &lt;a href="http://start-coding.blogspot.com/2008/04/first-release-of-sql-management-console.html"&gt;simple MSSQL Management Console&lt;/a&gt; better than mine? Yes, now you can see how it works through the &lt;a href="http://en.wikipedia.org/wiki/Entity-relationship_model"&gt;entity-relationship model (ERM)&lt;/a&gt; at &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=531c53e7-8a2a-4375-8f2f-5d799aa67b5c&amp;amp;displaylang=en"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5299913144820774514" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 170px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_N2VfwXjUyUU/SY0S7NF3NnI/AAAAAAAAAwA/bU6_0H--m2E/s400/MSSQL+2008+SystemView.bmp" border="0" /&gt; Start from &lt;a href="http://msdn.microsoft.com/en-us/library/ms190324.aspx"&gt;sys.objects&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ms176106.aspx"&gt;sys.columns&lt;/a&gt;, ..., you can easily manipulate your T-SQL scripts within the following categories of component:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Objects, Types and Indexes&lt;/li&gt;&lt;li&gt;Trace and Eventing&lt;/li&gt;&lt;li&gt;Linked Servers&lt;/li&gt;&lt;li&gt;Common Language Runtime&lt;/li&gt;&lt;li&gt;Partitioning&lt;/li&gt;&lt;li&gt;Database Mirroring&lt;/li&gt;&lt;li&gt;EndPoints&lt;/li&gt;&lt;li&gt;Database and Storage&lt;/li&gt;&lt;li&gt;Execution Environment&lt;/li&gt;&lt;li&gt;Service Broker&lt;/li&gt;&lt;li&gt;Security&lt;/li&gt;&lt;li&gt;Transaction Information&lt;/li&gt;&lt;li&gt;Resource Governor&lt;/li&gt;&lt;li&gt;Server-Wide Information&lt;/li&gt;&lt;li&gt;Full Text Search&lt;/li&gt;&lt;li&gt;Extended Events&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;p/s: During last year PDC 2008, .NET FX team has released a selection of new types and namespaces introduce in FX4 at &lt;a href="http://blogs.msdn.com/brada/archive/2008/10/29/net-framework-4-poster.aspx"&gt;Brad Abrams's blog&lt;/a&gt;. From there, you can download 2 versions:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://tinyurl.com/PDC2008-NETFX4PDF"&gt;PDF version&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://tinyurl.com/DotNetFramework4PosterDeepZoom"&gt;DeepZoom version&lt;/a&gt; &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5299915330459632290" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 267px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SY0U6bOxgqI/AAAAAAAAAwI/4oHizywLNyc/s400/.NET+Framework+introduce+new+types+and+namespaces.bmp" border="0" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-4349163576241007975?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/4349163576241007975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=4349163576241007975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4349163576241007975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4349163576241007975'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2009/02/mssql-2008-system-view-release.html' title='MSSQL 2008 System View release!'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_N2VfwXjUyUU/SY0S7NF3NnI/AAAAAAAAAwA/bU6_0H--m2E/s72-c/MSSQL+2008+SystemView.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-4900609200777220856</id><published>2009-01-11T12:57:00.016+08:00</published><updated>2009-01-11T13:53:57.377+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows OS'/><title type='text'>Running Windows 7 Beta in Virtual PC 2007</title><content type='html'>After taking more than 12 hours (yes, I subscribed a low cost package from ISP) to download the Windows 7 Beta ISO (&lt;a href="http://start-coding.blogspot.com/2009/01/windows-7-beta-is-out.html"&gt;see my previous post&lt;/a&gt;), finally i can play around with it. Installing it on my existing OS will be too risky, thus Virtual PC comes to my mind.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As &lt;a href="http://vista.blorge.com/2008/05/29/windows-7-is-the-equivalent-of-vista-sp2/"&gt;rumour&lt;/a&gt; says, I tried it using a guest OS as Windows Vista and it works. Say not more and let's see some steps and screenshots.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) After creating a new vmc &amp;amp; vhc files, capture the ISO downloaded. You can follow &lt;a href="http://www.cerritos.edu/rdellaca/msvirtualpc/index.html"&gt;tutorial &lt;/a&gt;here. The setup will be started. When it asks for guest OS, choose Windows Vista.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289902585314204002" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 310px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SWmCX84S2WI/AAAAAAAAAuY/T4gnDuyaLoE/s400/VPC_01+use+Windows+Vista+as+guest+OS.jpg" border="0" /&gt; &lt;div&gt;2) You might need to adjust the RAM for installation to run smoothly.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289903763376843282" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 308px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SWmDchgUKhI/AAAAAAAAAug/CWOEVH0-nL8/s400/VPC_02+allocate+more+RAM+for+Windows+7.jpg" border="0" /&gt; 3) Now, you see it is loading files and starting Windows.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289903858887708258" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 300px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SWmDiFT4TmI/AAAAAAAAAuo/V3K4apKUxuQ/s400/VPC_03+loading+windows+7.jpg" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289904012804005922" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 293px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SWmDrCsYoCI/AAAAAAAAAuw/PFKljhOzlfY/s400/VPC_04+starting+windows+7.jpg" border="0" /&gt; 4) Choose the language to install, ..., etc.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289904220168471074" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 300px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_N2VfwXjUyUU/SWmD3HL7QiI/AAAAAAAAAu4/r79YgJMDOR0/s400/VPC_05+Intall+Windows+7.jpg" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289904354234297410" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 190px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SWmD-6ntbEI/AAAAAAAAAvA/tOMuyDhe750/s400/VPC_06+prepare+1st+use.jpg" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289904559945154386" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 330px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SWmEK48__1I/AAAAAAAAAvI/U9M6WwUnN4o/s400/VPC_07+choose+user+name.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;5) And Windows 7 Beta is installed successfully. &lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289904733205669890" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 300px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SWmEU-ZhqAI/AAAAAAAAAvQ/8GmkxuGvfXg/s400/VPC_09+Windows+7+loaded.jpg" border="0" /&gt;6) ScreenSaver cannot be loaded for Virtual PC with standard VGA virtualized.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289904895100555538" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 369px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SWmEeZgRkRI/AAAAAAAAAvY/-yBCUfCeiQE/s400/VPC_10+basic+VGA+cannot+play+scrsaver.jpg" border="0" /&gt; 7) Some basic themes for customization. I see it as a competition with &lt;a href="http://www.wincustomize.com/"&gt;wincustomize&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5289905824379985346" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 300px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SWmFUfVwXcI/AAAAAAAAAvg/AiLz8nseg2E/s400/VPC_11+Themes.jpg" border="0" /&gt;8) MS Paint get a Ribbon-look. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5289907031366320754" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 375px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SWmGavtuQnI/AAAAAAAAAvo/JKccR9Bqlc4/s400/VPC_12+Paint+version+is+v6.1.jpg" border="0" /&gt; 9) Our "Show Desktop" now resides on bottom-right.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5289907198856013778" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 339px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SWmGkfqYJ9I/AAAAAAAAAvw/zq60tFkbTcQ/s400/VPC_13+Show+Desktop+on+bottom-right.jpg" border="0" /&gt; &lt;div&gt;&lt;/div&gt;10) And we can try the &lt;a href="http://www.microsoft.com/windows/internet-explorer/beta/default.aspx"&gt;Internet Explorer 8 Beta&lt;/a&gt; as well. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289908262924779346" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 339px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SWmHiboI_1I/AAAAAAAAAv4/pem6C2tBSo4/s400/VPC_14+Internet+Explorer+8+Beta.jpg" border="0" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-4900609200777220856?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/4900609200777220856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=4900609200777220856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4900609200777220856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4900609200777220856'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2009/01/running-windows-7-beta-in-virtual-pc.html' title='Running Windows 7 Beta in Virtual PC 2007'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_N2VfwXjUyUU/SWmCX84S2WI/AAAAAAAAAuY/T4gnDuyaLoE/s72-c/VPC_01+use+Windows+Vista+as+guest+OS.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-5392497133294589873</id><published>2009-01-10T23:23:00.010+08:00</published><updated>2009-01-11T00:57:59.091+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='Palm'/><category scheme='http://www.blogger.com/atom/ns#' term='UIQ'/><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><title type='text'>Mixed fortune for Mobile OSes</title><content type='html'>This week is a week with full emotion, for OS developers. For &lt;a href="http://www.uiq.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;UIQ&lt;/span&gt;&lt;/a&gt; lover, they saw &lt;a href="http://www.osnews.com/story/20734/UIQ_Files_for_Bankruptcy"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;UIQ&lt;/span&gt; finally filed bankruptcy&lt;/a&gt;. While Palm OS lovers, &lt;a href="http://arstechnica.com/news.ars/post/20090108-palm-launches-new-handset-pre-operating-system-at-ces.html"&gt;Palm makes a comeback at &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;CES&lt;/span&gt;&lt;/a&gt;. &lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289692884050620050" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 271px; CURSOR: hand; HEIGHT: 50px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SWjDpuy_rpI/AAAAAAAAAuA/aj_SXnGRlqA/s400/UIQ.bmp" border="0" /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;UIQ&lt;/span&gt;:&lt;br /&gt;Quoted from &lt;a href="http://www.theregister.co.uk/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;theregister&lt;/span&gt;&lt;/a&gt;:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;"Motorola had 11 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;UIQ&lt;/span&gt; phones (or variants) planned for release next year, and now all have been cancelled in the most recent company reorganisation."&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5289704161389162242" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 290px; CURSOR: hand; HEIGHT: 58px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SWjN6KKBrwI/AAAAAAAAAuI/Wzvd4ugVlVs/s400/motodevstudio.jpg" border="0" /&gt; Sure &lt;a href="http://www.nokia.com/A4136001?newsid=1230415"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Nokia&lt;/span&gt; purchase of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;Symbian&lt;/span&gt;&lt;/a&gt; was not a simple business move.&lt;br /&gt;I wonder what will happen to &lt;a href="http://developer.motorola.com/docstools/motodevstudio/uiq/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;MotoDev&lt;/span&gt; Studio for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;UIQ&lt;/span&gt;&lt;/a&gt;, an integrated development environment based on the Eclipse &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;IDE&lt;/span&gt;, and &lt;a href="http://developer.sonyericsson.com/site/global/docstools/symbian/p_symbian.jsp"&gt;Sony &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Ecrisson's&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;Symbian&lt;/span&gt; OS Docs &amp;amp; Tools&lt;/a&gt;. They could be phased out soon and extinct anytime. Will Sony &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Ericsson&lt;/span&gt; &amp;amp; Motorola embrace Windows Mobile OS fully since the only &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Symbian&lt;/span&gt; OS is now totally owns by another competitor (a.k.a. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Nokia&lt;/span&gt;), like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;Samsung&lt;/span&gt;?&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5289704569831905378" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 199px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SWjOR7uXWGI/AAAAAAAAAuQ/Fkt1hdalPpY/s400/pre-2.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;Palm: &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;With new OS("&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;WebOS&lt;/span&gt;"), new handset ("Palm &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;pre&lt;/span&gt;") introduction at &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;CES&lt;/span&gt;, it revives the hope of Palm Inc. to gain the market once they &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_20"&gt;dominant&lt;/span&gt;, and it tries to woo more developer to it:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;"It was built with developers in mind,"&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;and:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;"The entire &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;UI&lt;/span&gt; is based on a "desktop + cards" paradigm, where "cards" replace "windows" or even "apps." You start with a display area that contains a blank desktop and an iPhone-style dock at the bottom."&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;And more news of Palm at &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;CES&lt;/span&gt; is covered by &lt;a href="http://www.engadget.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;engadget&lt;/span&gt;&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;1) &lt;a href="http://www.engadget.com/2009/01/08/live-from-palms-ces-press-conference/"&gt;Live from Palm's &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;CES&lt;/span&gt; press conference&lt;/a&gt;&lt;/div&gt;&lt;div&gt;2) &lt;a href="http://i.gizmodo.com/5126516/palm-pre-first-look-and-details"&gt;Palm &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;Pre&lt;/span&gt;: First Look and Details&lt;/a&gt;&lt;/div&gt;&lt;div&gt;3) &lt;a href="http://www.engadget.com/2009/01/08/palm-announces-web-os-platform/"&gt;Palm announces &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;webOS&lt;/span&gt; platform&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-5392497133294589873?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/5392497133294589873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=5392497133294589873' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5392497133294589873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5392497133294589873'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2009/01/mixed-fortune-for-mobile-oses.html' title='Mixed fortune for Mobile OSes'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_N2VfwXjUyUU/SWjDpuy_rpI/AAAAAAAAAuA/aj_SXnGRlqA/s72-c/UIQ.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-6277322432791401518</id><published>2009-01-10T16:51:00.005+08:00</published><updated>2009-01-10T17:27:18.159+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows OS'/><title type='text'>Windows 7 Beta is out</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_N2VfwXjUyUU/SWhmlroce0I/AAAAAAAAAt4/kuN0Jqd-8Ac/s1600-h/Windows+7.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5289590559900203842" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 245px; CURSOR: hand; HEIGHT: 160px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SWhmlroce0I/AAAAAAAAAt4/kuN0Jqd-8Ac/s400/Windows+7.bmp" border="0" /&gt;&lt;/a&gt;So fast, &lt;a href="http://en.wikipedia.org/wiki/Windows_Vista"&gt;Microsoft released Windows Vista 2 years ago&lt;/a&gt;, now we have another new Windows OS release, a.k.a Windows 7, in beta form to public. You can get it here:&lt;br /&gt;&lt;div&gt;a) &lt;a href="http://download.microsoft.com/download/6/3/3/633118BD-6C3D-45A4-B985-F0FDFFE1B021/EN/7000.0.081212-1400_client_en-us_Ultimate-GB1CULFRE_EN_DVD.iso"&gt;Windows 7 Beta 32-bit&lt;/a&gt; (downloading)&lt;/div&gt;&lt;div&gt;b) &lt;a href="http://download.microsoft.com/download/6/3/3/633118BD-6C3D-45A4-B985-F0FDFFE1B021/EN/7000.0.081212-1400_client_en-us_Ultimate-GB1CULFRE_EN_DVD.iso"&gt;Windows 7 Beta 64-bit &lt;/a&gt;(not yet tested)&lt;/div&gt;For more information, you can visit this &lt;a href="http://www.downloadwindows7beta.com/"&gt;site&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;This site have offered various tips to let you play around with it.&lt;/div&gt;&lt;div&gt;1) &lt;a href="http://lifehacker.com/5126781/how-to-dual-boot-windows-7-with-xp-or-vista?skyline=true&amp;amp;s=x"&gt;How to Dual Boot Windows 7 with XP or Vista&lt;/a&gt;&lt;/div&gt;&lt;div&gt;2) &lt;a href="http://lifehacker.com/5128018/windows-7-product-keys-available"&gt;Windows 7 Product Keys Available--for Some&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;#p/s: For Windows developer, &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=A91DC12A-FC94-4027-B67E-46BAB7C5226C&amp;amp;displaylang=en"&gt;the Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: BETA&lt;/a&gt;, or the so called Platform SDK v7.0, is released as well.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-6277322432791401518?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/6277322432791401518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=6277322432791401518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/6277322432791401518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/6277322432791401518'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2009/01/windows-7-beta-is-out.html' title='Windows 7 Beta is out'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_N2VfwXjUyUU/SWhmlroce0I/AAAAAAAAAt4/kuN0Jqd-8Ac/s72-c/Windows+7.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-5867811368599936479</id><published>2008-12-18T22:44:00.028+08:00</published><updated>2008-12-19T11:38:54.388+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='S60'/><category scheme='http://www.blogger.com/atom/ns#' term='Carbide'/><title type='text'>Carbide C++ IDE is free, even for Professional Edition</title><content type='html'>Yes, you are not wrong. Under the stiff competition from &lt;a href="http://www.apple.com/iphone"&gt;Apple's iPhone&lt;/a&gt; &amp;amp; &lt;a href="http://www.microsoft.com/windowsmobile/6-1/default.mspx"&gt;Microsoft Windows Mobile 6.1&lt;/a&gt;, Nokia decides to release their native app builder, Carbide C++ IDE for free, for OEM, Professional &amp;amp; Developer Edition (seems there's no need for Expression Edition anymore).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://library.forum.nokia.com/index.jsp?topic=/S60_5th_Edition_Cpp_Developers_Library/GUID-9CDEE1CD-B696-466A-9F2B-BF8C22D0AE0F.html"&gt;New features added on this versions are&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sensor APIs allow applications to connect to and receive data from various sensors on an S60 device.&lt;/li&gt;&lt;li&gt;Tactile Feedback Client API is used for producing tactile feedback for different touch events.&lt;/li&gt;&lt;li&gt;&lt;a href="http://library.forum.nokia.com/topic/S60_5th_Edition_Cpp_Developers_Library/GUID-92018B6B-3CBB-434D-9E61-F271C67E98E3.html"&gt;Touch UI Utilities API&lt;/a&gt; provides a mechanism to detect long-tap events on the touch screen.&lt;/li&gt;&lt;li&gt;Title Pane Touch Observer API allows an application to observe the user tapping on the title pane.&lt;/li&gt;&lt;/ul&gt;Here's some simple steps for settings up the development environment:&lt;br /&gt;1) Get the &lt;a href="http://www.forum.nokia.com/info/sw.nokia.com/id/dbb8841d-832c-43a6-be13-f78119a2b4cb.html"&gt;Carbide C++ IDE version 2.0&lt;/a&gt; &amp;amp; &lt;a href="http://www.forum.nokia.com/info/sw.nokia.com/id/75eb6517-34c1-4b92-bdf8-4899800e701a/S60_5th_Edition_SDK_v0_9_en.zip.html"&gt;Nokia S60 5th SDK&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2) Install the S60 5th SDK first by extracting the zip &amp;amp; running the setup.exe.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5281149238637232674" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 303px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SUppQHbMAiI/AAAAAAAAArw/4Bhefn0bOe4/s400/S60+5th+SDK.bmp" border="0" /&gt; 3) Here's the content of the installation package if customized installation. Choose the one that meet you needs.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5281150285665276658" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 303px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SUpqND6IEvI/AAAAAAAAAr4/OULEflXnzzM/s400/Installation+Content.bmp" border="0" /&gt; 4) Point the Eclipse installation path for plug in if you want integration with it.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5281150629511307586" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 303px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_N2VfwXjUyUU/SUpqhE1aIUI/AAAAAAAAAsA/u0_mNJOlmZM/s400/Eclipse+Plugin+If+Needed.bmp" border="0" /&gt; 5) After S60 5th SDK installed, you can start installing Carbide C++ IDE version 2.0, and this is the Welcome screen.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5281150832982185362" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 306px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SUpqs60pVZI/AAAAAAAAAsI/f4E6DN7uPfU/s400/Welcome+Screen.bmp" border="0" /&gt; 6) And yes, this screen telling you it's free for all editions!&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5281151237291226706" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 306px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SUprEc_btlI/AAAAAAAAAsQ/A3e3rppzYdY/s400/information+of+free+product.bmp" border="0" /&gt; 7) You can either choose OEM, Professional or Developer Edition here. I wonder who will need Developer Ed. when you have at least Professional Ed. Save disk space?&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5281152015133262882" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 306px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SUprxurbRCI/AAAAAAAAAsg/mvsJ4G6FACY/s400/features+for+OEM+Edition.bmp" border="0" /&gt; &lt;img id="BLOGGER_PHOTO_ID_5281161721187317378" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 306px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SUp0msjCtoI/AAAAAAAAAtw/K71i-4fIlig/s400/features+for+Professional+Edition.bmp" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5281152654411092530" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 306px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SUpsW8LI0jI/AAAAAAAAAsw/SaJSsaU-oWk/s400/features+for+Developer+Edition.bmp" border="0" /&gt; 8) After Carbide C++ IDE installed, you can start it from "Start" menu and you will be welcomed with splash screen.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5281151559350499794" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 227px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_N2VfwXjUyUU/SUprXMwWOdI/AAAAAAAAAsY/wSJmYCOF8_A/s400/Carbide+Splash+Screen.bmp" border="0" /&gt; 9) Carbide IDE is based on Eclipse, so those Eclipse user should familiar with it. You can either choose "Workbench", "Tutorials", .... Here're tutorials available.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5281155840781512626" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 357px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SUpvQaVC77I/AAAAAAAAAtg/bHLsvHIhnqA/s400/Carbide+Tutorials+1.bmp" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5281156165384281634" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 213px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SUpvjTkYHiI/AAAAAAAAAto/CWtAjDjzw58/s400/Carbide+Tutorials+2.bmp" border="0" /&gt;&lt;br /&gt;&lt;/p&gt;10) Go back "Workbench", and you can start coding. Choose "New" from "File" menu. Here're the available templates. Take note on "S60 GUI Application with UI Designer". This feature is not available when i played around with Expression Edition 2~3 years ago. How envy i was last time for this feature of Rapid Application Development (RAD).&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5281153047036540466" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 313px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SUpsty0VtjI/AAAAAAAAAs4/WPB1OPOlBbI/s400/S60+GUI+Application+with+UI+Designer.bmp" border="0" /&gt; 11) "UI Design Selection" for type of app.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5281153523597176274" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 267px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SUptJiJP7dI/AAAAAAAAAtA/P9skjJOmTkY/s400/S60+UI+Design+Selection.bmp" border="0" /&gt;12) Screenshot of Form Designer &amp;amp; Toolbox (in Visual Studio term)&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5281155035432076450" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 225px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SUpuhiKxxKI/AAAAAAAAAtY/jYtAK0IJMwg/s400/Form+Designer.bmp" border="0" /&gt;13) After you build the project (yes, even without adding any feature, it's runnable with basic skeleton), a desktop emulator version of exe will be built.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5281153869022179954" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 308px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SUptdo8_MnI/AAAAAAAAAtI/-zrX1umQ5t4/s400/Emulator+EXE+Build+Path.bmp" border="0" /&gt; 14) &lt;a href="http://en.wikipedia.org/wiki/EPOC_(computing)"&gt;Epoc&lt;/a&gt; will be trigger if you run or debug, and here's the simple application from S60 GUI application.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5281154298203739746" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 247px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SUpt2nx2FmI/AAAAAAAAAtQ/D8ggJHO--64/s400/Emulator.bmp" border="0" /&gt;Online library get be reached &lt;a href="http://library.forum.nokia.com/index.jsp?topic=/S60_5th_Edition_Cpp_Developers_Library/GUID-92018B6B-3CBB-434D-9E61-F271C67E98E3.html"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;#p/s: Microsoft has launched a new project, for running apps in Apple's iPhone, named &lt;a href="http://livelabs.com/seadragon-mobile/"&gt;SeaDragon&lt;/a&gt;. The future of computing is on mobile!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-5867811368599936479?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/5867811368599936479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=5867811368599936479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5867811368599936479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5867811368599936479'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/12/carbide-c-ide-is-free-even-for.html' title='Carbide C++ IDE is free, even for Professional Edition'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_N2VfwXjUyUU/SUppQHbMAiI/AAAAAAAAArw/4Bhefn0bOe4/s72-c/S60+5th+SDK.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-1567926786269765380</id><published>2008-12-14T22:03:00.008+08:00</published><updated>2008-12-14T23:35:40.367+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='winform'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Application.StartupPath != Environment.CurrentDirectory</title><content type='html'>When developing the .NET app, you are not only creating an .exe. Most of the time, you will need some other files like .bmp, App.Config, and .xml. For those resource files(data or images), you could simply embed into the main exe and access it class "&lt;a href="http://msdn.microsoft.com/en-us/library/system.resources.resourcemanager.aspx"&gt;ResourceManager&lt;/a&gt;", though it might increase the size tremendously. But what if for those XML file that need user customization? You might put them along with your main executable file during deployment, for initialization. Thus you will need to find where your .exe starts, and to read XML file that relative to it. So now you might think you got at least two choices, "&lt;a href="http://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspx"&gt;Environment.CurrentDirectory&lt;/a&gt;" &amp;amp; "&lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.application.startuppath.aspx"&gt;Application.StartupPath&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;From the MSDN, the definition of:&lt;br /&gt;a) Environment.CurrentDirectory&lt;br /&gt;Gets or sets the fully qualified path of the current working directory.&lt;br /&gt;b) Application.StartupPath&lt;br /&gt;Gets the path for the executable file that started the application, not including the executable name.&lt;br /&gt;&lt;br /&gt;They look similar &amp;amp; match your purpose. "Environment.CurrentDirectory" looks good, especially it is located inside "System" namespace, so you no need to add any reference; while "Application.StartupPath" needs to add reference to assembly "System.Windows.Forms". You might think the former one is better for console application, and even windows service! Windows service does not need any GUI and would suppress any messagebox from pop-up. So using "Environment.CurrentDirectory" seems a good choice to prevent the developers simply calling &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.messagebox.aspx"&gt;messagebox&lt;/a&gt; in windows service if without adding reference to assembly "System.Windows.Forms", from design perspective.&lt;br /&gt;&lt;br /&gt;So I decided to use "Environment.CurrentDirectory" for my dll, which is eventually called by the windows service, and the code to load the XML file would be similar to this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;Dim strXMLFile As String = Environment.CurrentDirectory &amp;amp; "\" &amp;amp; INITIALIZATION_XML&lt;br /&gt;If Not File.Exists(strXMLFile) Then&lt;br /&gt;    Throw New FileNotFoundException("The initialization file " &amp;amp; INITIALIZATION_XML &amp;amp; " does not exist.")&lt;br /&gt;End If&lt;/span&gt;&lt;/pre&gt;I created a WinForm for test harness of the dll, and everything was fine. Then this dll consumed by the windows services. &lt;span style="color:#ff0000;"&gt;Bang!&lt;/span&gt; I get an "FileNotFoundException" exception. I use &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.print.aspx"&gt;Debug.Print&lt;/a&gt; to find that my XML look-up path was at: "C:\WINDOWS\system32"???&lt;br /&gt;&lt;br /&gt;Why? It's because &lt;em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/d56de412(VS.80).aspx"&gt;Windows service applications run in their own security context&lt;/a&gt;.&lt;/em&gt;&lt;br /&gt;and more definition for "&lt;a href="http://www.informit.com/library/content.aspx?b=Net_2003_21days&amp;amp;seqNum=106"&gt;Environment.CurrentDirectory&lt;/a&gt;":&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Gets and sets the fully qualified path of the current directory; that is, the directory from which this process starts.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Using the Reflector:&lt;br /&gt;a) Environment.CurrentDirectory&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5279660402443096594" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 180px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SUUfKcZREhI/AAAAAAAAAjI/NMX1FIXP-BQ/s400/CurrentDirectory.bmp" border="0" /&gt; b) Application.StartupPath&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5279660890270564818" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 180px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SUUfm1sZgdI/AAAAAAAAAjQ/Fe2NCVZM_YM/s400/StartupPath.bmp" border="0" /&gt;&lt;br /&gt;So, the "Environment.CurrentDirectory" is equivalent to "Application.StartupPath" when running as WinForm/console app and will become variable "&lt;a href="http://www.wilsonmar.com/1envvars.htm"&gt;%SystemDirectory%&lt;/a&gt;" eventually if run under windows service! A lesson learned.&lt;br /&gt;&lt;br /&gt;p/s: You could use reflection from class &lt;a href="http://msdn.microsoft.com/en-us/library/system.reflection.assembly.aspx"&gt;Assembly&lt;/a&gt; as well, to find the start-up path. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-1567926786269765380?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/1567926786269765380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=1567926786269765380' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/1567926786269765380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/1567926786269765380'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/12/applicationstartuppath.html' title='Application.StartupPath != Environment.CurrentDirectory'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_N2VfwXjUyUU/SUUfKcZREhI/AAAAAAAAAjI/NMX1FIXP-BQ/s72-c/CurrentDirectory.bmp' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-5594709767853186279</id><published>2008-11-28T16:02:00.005+08:00</published><updated>2008-11-28T17:00:52.594+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='Symbian'/><title type='text'>Free booklets from Symbian</title><content type='html'>&lt;a href="http://www.symbian.com/"&gt;Symbian&lt;/a&gt; has published few booklets online, for free in SDN (&lt;a href="http://developer.symbian.com/main/index.jsp"&gt;Symbian Developer Network&lt;/a&gt;). You might ask, what the heck the booklet is. &lt;a href="http://en.wikipedia.org/wiki/Booklet"&gt;They are probably books contains small amount of pages.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Quoted from one of the booklets:&lt;br /&gt;&lt;em&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;This booklet is targeted at absolute beginners wishing to develop C++ code on Symbian OS. We help you to choose the right tools and development environment, and list everything you’ll need - from the software development kits you’ll use,to the hardware you’ll work with.&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;These booklets are essentially the starting guide for the absolute beginner, who are getting started with the coding in Symbian OS, either UIQ or S60. Though most of them are less than hundred page, i think it inspires the community to grow bigger. There are under three categories (I don't count translated category as one, though i listed it):&lt;br /&gt;a) &lt;a href="http://developer.symbian.com/main/documentation/booklets/essential.jsp"&gt;Essential Symbian OS booklets&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Coding Tips&lt;/li&gt;&lt;li&gt;Performance Tips&lt;/li&gt;&lt;li&gt;Coding Standards&lt;/li&gt;&lt;/ul&gt;b) &lt;a href="http://developer.symbian.com/main/documentation/booklets/booklets_using.jsp"&gt;Using Symbian OS booklets Essential&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Getting started&lt;/li&gt;&lt;li&gt;P.I.P.S.&lt;/li&gt;&lt;li&gt;Carbide.c++&lt;/li&gt;&lt;li&gt;Ready for ROM&lt;/li&gt;&lt;li&gt;Platform security for all&lt;/li&gt;&lt;/ul&gt;c) &lt;a href="http://developer.symbian.com/main/documentation/booklets/booklets_ui.jsp"&gt;Essential UI booklets&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Essential UIQ: Getting Started&lt;/li&gt;&lt;li&gt;Essential S60:Getting Started&lt;/li&gt;&lt;li&gt;Creating Location-Aware Applications&lt;/li&gt;&lt;/ul&gt;d) &lt;a href="http://developer.symbian.com/main/documentation/booklets/booklets_translated.jsp"&gt;Translated booklets&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Chinese Getting Started&lt;/li&gt;&lt;li&gt;Chinese Coding Tips&lt;/li&gt;&lt;li&gt;Japanese Coding Tips&lt;/li&gt;&lt;li&gt;Chinese Essential UIQ Getting Started&lt;/li&gt;&lt;li&gt;Chinese Performance Tips&lt;/li&gt;&lt;li&gt;Japanese Performance Tips&lt;/li&gt;&lt;li&gt;Korean Coding Tips&lt;/li&gt;&lt;li&gt;Japanese Data Sharing Tips&lt;/li&gt;&lt;li&gt;Japanese P.I.P.S.&lt;/li&gt;&lt;li&gt;Spanish Getting Started&lt;/li&gt;&lt;li&gt;Japanese Carbide.c++&lt;/li&gt;&lt;li&gt;Chinese P.I.P.S.&lt;/li&gt;&lt;li&gt;Japanese Getting Started&lt;/li&gt;&lt;li&gt;Korean Getting Started&lt;/li&gt;&lt;li&gt;Russian Getting Started&lt;/li&gt;&lt;li&gt;Chinese Coding Standards&lt;/li&gt;&lt;li&gt;Japanese Coding Standards&lt;/li&gt;&lt;li&gt;Chinese Platform security for all&lt;/li&gt;&lt;li&gt;Persian Getting Started&lt;/li&gt;&lt;li&gt;Russian Carbide.c++&lt;/li&gt;&lt;li&gt;Italian Quick Recipes Taster&lt;/li&gt;&lt;/ul&gt;Personally, i think these 2 books are not bad:&lt;br /&gt;a)"&lt;a href="http://developer.symbian.com/main/documentation/books/books_files/pdf/s60_getting_started.pdf"&gt;Essential S60:Getting Started&lt;/a&gt;" and&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5273625538625044946" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 95px; CURSOR: hand; HEIGHT: 110px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SS-ufIwsgdI/AAAAAAAAAjA/TwQVe2W1tL0/s400/s60_getstart_thumb.jpg" border="0" /&gt;b) "&lt;a href="http://developer.symbian.com/main/documentation/books/books_files/pdf/Carbide_booklet_final.pdf"&gt;Carbide.c++&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5273625231764640994" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 95px; CURSOR: hand; HEIGHT: 110px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SS-uNRneVOI/AAAAAAAAAi4/DuGk20NNLcw/s400/carbide.jpg" border="0" /&gt; And actually you could get more at &lt;a href="http://www.forum.nokia.com/"&gt;Forum Nokia&lt;/a&gt;, under section "&lt;a href="http://www.forum.nokia.com/Resources_and_Information/Documentation/"&gt;Documentation&lt;/a&gt;". While you might interest to develop Symbian-based apps using C#, you might be a bit disappointed, this booklet is purely based on &lt;a href="http://www.redfivelabs.com/blogs/news/archive/2008/09/08/net60-version-1-1-with-vs-2008-support-released.aspx"&gt;Net60&lt;/a&gt;, which is a propriety tool of &lt;a href="http://www.redfivelabs.com/"&gt;Red Five Labs&lt;/a&gt;, and you got to pay for it.&lt;br /&gt;&lt;br /&gt;So, why wait, get a copy of &lt;a href="http://www.forum.nokia.com/Resources_and_Information/Tools/Platforms/S60_Platform_SDKs/"&gt;S60 Platform SDKs&lt;/a&gt; &amp;amp; &lt;a href="http://www.forum.nokia.com/Resources_and_Information/Tools/IDEs/Carbide/"&gt;Carbide.c++ Express&lt;/a&gt; (free IDE), and start coding!&lt;br /&gt;&lt;br /&gt;#p/s: I think I am going to buy a &lt;a href="http://www.nseries.com/index.html#l=products,n95"&gt;Nokia N95&lt;/a&gt; and create some simple apps as well, it looks great.&lt;br /&gt;another #p/s: Nowadays, it becomes a common practice for every OS vendors host their sites, with the name like "XXX Developer Network", and "XXX Platform SDK". Familiar? See &lt;a href="http://msdn.microsoft.com/en-us/default.aspx"&gt;Microsoft Developer Network(MSDN)&lt;/a&gt; &amp;amp; &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e6e1c3df-a74f-4207-8586-711ebe331cdc&amp;amp;DisplayLang=en"&gt;Windows Platform SDK&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-5594709767853186279?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/5594709767853186279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=5594709767853186279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5594709767853186279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5594709767853186279'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/11/free-booklets-from-symbian.html' title='Free booklets from Symbian'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_N2VfwXjUyUU/SS-ufIwsgdI/AAAAAAAAAjA/TwQVe2W1tL0/s72-c/s60_getstart_thumb.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-5555909706724039251</id><published>2008-11-04T21:32:00.012+08:00</published><updated>2008-11-05T07:57:46.062+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Screenshots from VS2010 CTP</title><content type='html'>&lt;div align="left"&gt;After several days of suspension due to internal problem, Visual &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814&amp;amp;displaylang=en"&gt;Studio 2010 and .NET Framework 4.0 CTP&lt;/a&gt; was up again to public on Monday. It's recommended for you to get the latest information from the &lt;a href="https://connect.microsoft.com/VisualStudio/content/content.aspx?ContentID=9790"&gt;Connect mainpage&lt;/a&gt;, instead of the link I provided on &lt;a href="http://start-coding.blogspot.com/2008/10/visual-studio-2010-and-net-framework-40.html"&gt;last post&lt;/a&gt;. &lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 486px; CURSOR: hand; HEIGHT: 47px; TEXT-ALIGN: center" alt="" src="https://connect.microsoft.com/visualstudio/siteimages/f2b64570-4956-4687-b2d7-58842cabbbe8.jpg" border="0" /&gt; &lt;div align="left"&gt;The downloads for vhd file are around 7GB and after extraction, it consumes nearly 24GB. What a huge space it takes. While still going thru' all the new features, here are some screenshot for dear readers :&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5264953147214630098" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 333px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SRDe_hLNjNI/AAAAAAAAAig/fpnSG2k2nhU/s400/OS+version.bmp" border="0" /&gt; &lt;p align="center"&gt;VHD is using OS Windows Server 2008 SP1; 54 days left to activate&lt;/p&gt;&lt;div align="center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5264953670792175490" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 326px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SRDfd_p034I/AAAAAAAAAiw/-iL5Zsts1rU/s400/SQL+Office+VS2008+preloaded.bmp" border="0" /&gt;Now you know why it used up 24 GB; It comes with MS Office, MSSQL 2008, VS2008 &amp;amp; of course, VS2010&lt;/div&gt;&lt;p align="center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5264953376984900066" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 283px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_N2VfwXjUyUU/SRDfM5ItoeI/AAAAAAAAAio/15HOY_ODOnw/s400/VS2010+start+page.bmp" border="0" /&gt;The start page got a face-lift.&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5264799809290241282" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 318px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SRBTiE5KBQI/AAAAAAAAAiI/i1TR_f5FGS4/s400/VS2010+about+box.GIF" border="0" /&gt; &lt;p align="center"&gt;About box of VS2010. We got 103 day left for trying.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5264801745824364978" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 283px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SRBVSzC3ubI/AAAAAAAAAiQ/QQzv-sLydVI/s400/VS2010+project+wizard.GIF" border="0" /&gt; &lt;p align="center"&gt;&lt;a href="http://wix.sourceforge.net/manual-wix2/wix_index.htm"&gt;WiX&lt;/a&gt;-based Windows Installer MSI file is came along with this CTP.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-5555909706724039251?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/5555909706724039251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=5555909706724039251' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5555909706724039251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5555909706724039251'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/11/screenshot-from-vs2010-ctp.html' title='Screenshots from VS2010 CTP'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_N2VfwXjUyUU/SRDe_hLNjNI/AAAAAAAAAig/fpnSG2k2nhU/s72-c/OS+version.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-2054027043011775904</id><published>2008-10-29T21:31:00.004+08:00</published><updated>2008-10-29T21:43:26.945+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtual PC'/><title type='text'>Visual Studio 2010 and .NET Framework 4.0 CTP released</title><content type='html'>Almost one month after Microsoft &lt;a href="http://www.microsoft.com/presspass/press/2008/sep08/09-29VS10PR.mspx"&gt;unveiled the press release&lt;/a&gt;, Visual Studio 2010 and .NET Framework 4.0 CTP can be downloaded from here: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814&amp;amp;displaylang=en"&gt;Microsoft Pre-release Software Visual Studio 2010 and .NET Framework 4.0 Community Technology Preview(CTP)&lt;/a&gt;, and it is available in VHD format.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/vs2008/products/cc948977.aspx"&gt;Here're some overview&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Democratizing Application Lifecycle Management &lt;/li&gt;&lt;li&gt;Enabling emerging trends &lt;/li&gt;&lt;li&gt;Inspiring developer delight &lt;/li&gt;&lt;li&gt;Riding the next generation platform wave.&lt;/li&gt;&lt;/ul&gt;Pick it up fast, and you could be the next MVP!&lt;br /&gt;(Following image is external link)&lt;br /&gt;&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 749px; CURSOR: hand; HEIGHT: 500px; TEXT-ALIGN: center" alt="" src="http://i.msdn.microsoft.com/cc948977.ArcExpl01(en-us,MSDN.10).jpg" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-2054027043011775904?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/2054027043011775904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=2054027043011775904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2054027043011775904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2054027043011775904'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/10/visual-studio-2010-and-net-framework-40.html' title='Visual Studio 2010 and .NET Framework 4.0 CTP released'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-8279868546683239866</id><published>2008-10-27T21:05:00.004+08:00</published><updated>2008-10-27T21:47:22.195+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3ds Max'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Adobe'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenGL'/><category scheme='http://www.blogger.com/atom/ns#' term='DirectX'/><title type='text'>Will Microsoft targets Autodesk Next?</title><content type='html'>&lt;a href="http://usa.autodesk.com/adsk/servlet/item?id=12022457&amp;amp;siteID=123112"&gt;Autodesk has acquired Softimage recently&lt;/a&gt;. This might not an important news to those programmers/software developers. But it might make a huge impact to those 3D Modellers, since now we sees &lt;a href="http://usa.autodesk.com/adsk/servlet/index?id=5659302&amp;amp;siteID=123112"&gt;3ds Max&lt;/a&gt;, &lt;a href="http://usa.autodesk.com/adsk/servlet/index?siteID=123112&amp;amp;id=7635018"&gt;Maya&lt;/a&gt;, and &lt;a href="http://www.softimage.com/"&gt;Softimage&lt;/a&gt; are now under one roof. How are Autodesk going to position each of them, since they share so much similarities among them?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5261825532478475778" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 143px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SQXCcYV1zgI/AAAAAAAAAho/E6yovYQGY7Y/s400/Autodesk++Acquire+Softimage.jpg" border="0" /&gt; (From left to right: Autodesk 3ds Max, Softimage, Autodesk Maya)&lt;/p&gt;&lt;p&gt;So do you still remember these names?&lt;br /&gt;&lt;br /&gt;1) &lt;a href="http://en.wikipedia.org/wiki/WordStar"&gt;WordStar&lt;/a&gt; (word processor application)&lt;br /&gt;2) &lt;a href="http://en.wikipedia.org/wiki/Lotus_123"&gt;Lotus 1-2-3&lt;/a&gt; (spreadsheet program)&lt;br /&gt;3) &lt;a href="http://en.wikipedia.org/wiki/Borland_C%2B%2B"&gt;Borland&lt;/a&gt; &amp;amp; &lt;a href="http://en.wikipedia.org/wiki/Watcom_C_compiler"&gt;Watcom C Compiler&lt;/a&gt; (C compiler)&lt;br /&gt;4) &lt;a href="http://www.opengl.org/"&gt;OpenGL&lt;/a&gt; (3D graphics API)&lt;br /&gt;&lt;br /&gt;These are the software products that once lead in its own fields, and now Microsoft had beat them with its own products, with &lt;a href="http://office.microsoft.com/en-us/word/default.aspx"&gt;Microsoft Word&lt;/a&gt;, &lt;a href="http://office.microsoft.com/en-us/excel/FX100487621033.aspx"&gt;Microsoft Excel&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/visualc/default.aspx"&gt;Visual C++&lt;/a&gt; &amp;amp; &lt;a href="http://www.microsoft.com/downloads/Browse.aspx?displaylang=en&amp;amp;categoryid=2"&gt;Direct 3D&lt;/a&gt;, respectively.&lt;br /&gt;&lt;br /&gt;After defeating several software giants, MS is targeting &lt;a href="http://www.adobe.com/"&gt;Adobe&lt;/a&gt;, with its &lt;a href="http://silverlight.net/default.aspx"&gt;SilverLight&lt;/a&gt; &amp;amp; &lt;a href="http://www.microsoft.com/expression/default.aspx"&gt;Expression Studio&lt;/a&gt;. How long will Adobe (and &lt;a href="http://www.adobe.com/products/flash/?promoid=BPDEE"&gt;Flash&lt;/a&gt;) last? Will Microsoft targets Autodesk next, especially &lt;a href="http://arstechnica.com/journals/microsoft.ars/2008/02/07/microsoft-acquires-caligari"&gt;MS has bought Carigari&lt;/a&gt;, the creator of &lt;a href="http://www.caligari.com/Products/trueSpace/tS75/Brochure/Intro.asp"&gt;trueSpace&lt;/a&gt;? Let's wait and see.&lt;br /&gt;&lt;br /&gt;p/s: Dear developers, you might interest to see how .NET can be used in Autodesk product as well, at here: &lt;a href="http://through-the-interface.typepad.com/through_the_interface/2008/10/au-handouts-aut.html"&gt;Developing for AutoCAD® Using F#&lt;/a&gt;&lt;br /&gt;Gentle reminder, you might need to prepare yourself for it sooner or later :) &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-8279868546683239866?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/8279868546683239866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=8279868546683239866' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/8279868546683239866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/8279868546683239866'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/10/will-microsoft-targets-autodesk-next.html' title='Will Microsoft targets Autodesk Next?'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_N2VfwXjUyUU/SQXCcYV1zgI/AAAAAAAAAho/E6yovYQGY7Y/s72-c/Autodesk++Acquire+Softimage.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-6765091003062539330</id><published>2008-10-25T17:34:00.002+08:00</published><updated>2008-10-25T17:41:07.907+08:00</updated><title type='text'>How much difference between your salary with geek in googleplex</title><content type='html'>Feel your annual salary is low?&lt;br /&gt;&lt;div&gt;Think you are smart?&lt;/div&gt;&lt;div&gt;Sad why google not hire you? &lt;/div&gt;&lt;div&gt;Before all that, this might interest you: &lt;a href="http://www.geekpedia.com/Report4_Salaries-At-Google-Microsoft-And-Yahoo.html"&gt;Salaries At Google, Microsoft And Yahoo&lt;/a&gt; .&lt;/div&gt;&lt;div&gt;(This image is external link, and I hold no rights)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 763px; CURSOR: hand; HEIGHT: 418px; TEXT-ALIGN: center" alt="" src="http://www.geekpedia.com/Pictures/Glassdoor/Software%20Engineer%20Salaries.png" border="0" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-6765091003062539330?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/6765091003062539330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=6765091003062539330' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/6765091003062539330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/6765091003062539330'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/10/how-much-difference-between-your-salary.html' title='How much difference between your salary with geek in googleplex'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-79427051531853789</id><published>2008-10-22T21:06:00.047+08:00</published><updated>2008-10-24T08:01:04.492+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FTP'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflector'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtual PC'/><category scheme='http://www.blogger.com/atom/ns#' term='compression'/><title type='text'>10 Developer-must-have apps</title><content type='html'>While so many &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;bloggers&lt;/span&gt; have suggested the usable tools to their audience, how could i lag? Although &lt;a href="http://www.hanselman.com/blog/CommentView.aspx?guid=cbb7f3df-b9dd-4a4a-8cc6-83d87c117d26"&gt;Scott &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Hanselman&lt;/span&gt;&lt;/a&gt; have covered most, and it's a mountain high to climb, let me introduce my favourite top 10 developer-must-have apps:&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;1) &lt;a href="http://notepad-plus.sourceforge.net/uk/site.htm"&gt;Notepad++&lt;/a&gt; (Language: neutral)&lt;br /&gt;when you need it?&lt;br /&gt;a) View Unix files in Windows platform, especially during Java development.&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5259973076075292802" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SP8tpOeWKII/AAAAAAAAAd4/4jUpAkGcob4/s400/windows.bmp" border="0" /&gt; &lt;div align="center"&gt;when you open a come-with-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;JDK&lt;/span&gt; Java file using notepad&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5259972572472522242" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SP8tL6aFtgI/AAAAAAAAAdw/FJpG2o36dpE/s400/Unix.bmp" border="0" /&gt;when you open it using Notepad++, it's well-formatted&lt;/div&gt;&lt;br /&gt;b) Need to probe the &lt;a href="http://msdn.microsoft.com/en-us/library/ms972976.aspx"&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;ViewState&lt;/span&gt;&lt;/a&gt; of ASP .NET &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;web page&lt;/span&gt; to see how &lt;a href="http://en.wikipedia.org/wiki/HTTP"&gt;stateless HTTP&lt;/a&gt; retains value after post-back, using &lt;a href="http://en.wikipedia.org/wiki/Base64"&gt;base64&lt;/a&gt; decode. (you can try it &lt;a href="http://www.w3schools.com/aspnet/showasp.asp?filename=demo_aspnetviewstate"&gt;here&lt;/a&gt;)&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5259975729532971442" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SP8wDrX9KbI/AAAAAAAAAeI/5GFKkePBVsg/s400/View_State.bmp" border="0" /&gt; &lt;/p&gt;&lt;p align="center"&gt;A normal ASP .NET with its HTML source&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5260142794095572322" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 129px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_N2VfwXjUyUU/SP_IAHXltWI/AAAAAAAAAeQ/E9gUJNJss68/s400/before_base64_decode.bmp" border="0" /&gt; &lt;p align="center"&gt;Copy the content to Notepad++&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5260145521548382018" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 58px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SP_Ke37Az0I/AAAAAAAAAfY/IU6LAZEu5c4/s400/After_base64_decoded.bmp" border="0" /&gt; &lt;p align="center"&gt;Decode it to base64, you can see your state retained&lt;/p&gt;&lt;p&gt;c) Determine &lt;a href="http://en.wikipedia.org/wiki/Byte-order_mark"&gt;Byte-Order-Mark&lt;/a&gt; of a file, whether it's saved in following formats: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;UTF&lt;/span&gt;-8, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;UTF&lt;/span&gt;-16, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;UTF&lt;/span&gt;-16 (LE), &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;UTF&lt;/span&gt;-32 (BE), &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;UTF&lt;/span&gt;-32 (LE), &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;UTF&lt;/span&gt;-7, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;UTF&lt;/span&gt;-1, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;UTF&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;EBCDIC&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;SCSU&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;BOCU&lt;/span&gt;-1. And it's &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_17"&gt;exactly&lt;/span&gt; .Net method &lt;a href="http://msdn.microsoft.com/en-us/library/system.text.encoding.getpreamble.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;GetPreamble&lt;/span&gt;&lt;/a&gt; trying to do.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5259971736996686642" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_N2VfwXjUyUU/SP8sbSBIKzI/AAAAAAAAAdo/Co7JMLcVM5I/s400/BOM.bmp" border="0" /&gt;&lt;/p&gt;&lt;p align="center"&gt;Did you see extra three bytes ahead your file content?&lt;br /&gt;&lt;/p&gt;&lt;p&gt;d) it's lightweight, unlike Visual Studio &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;IDE&lt;/span&gt;, although &lt;a href="http://blogs.msdn.com/noahc/archive/2007/09/06/can-you-use-visual-studio-as-your-text-editor.aspx"&gt;Noah &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;Coad&lt;/span&gt; &lt;/a&gt;might beg to differ.&lt;br /&gt;e) Hey! "All I've mentioned above, other editors have the same features as well". Well, simply I like its &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;UI&lt;/span&gt; also.&lt;/p&gt;2) &lt;a href="http://ccollomb.free.fr/unlocker/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;Unlocker&lt;/span&gt;&lt;/a&gt; (Language: neutral)&lt;br /&gt;when you need it?&lt;br /&gt;a) When you want to delete a file which is being viewed/locked by hidden host. That's nothing more annoyed than this.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5260144612422214658" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 142px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SP_Jp9KcZAI/AAAAAAAAAfA/Wm6dQTU85sI/s400/Unlocker.bmp" border="0" /&gt; b) When a file get locked by your app, especially using class &lt;a href="http://msdn.microsoft.com/en-us/library/system.io.file_members.aspx"&gt;File.IO&lt;/a&gt; to write it without closing the stream properly.&lt;br /&gt;c) When you try to delete an old ASP .NET version 1.1 web projects in "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;Inetpub&lt;/span&gt;" that's being locked by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;IIS&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;3) &lt;a href="http://www.dependencywalker.com/"&gt;Dependency Walker&lt;/a&gt; (Language: native)&lt;br /&gt;when you need it?&lt;br /&gt;a) When you need to determine a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;EXE&lt;/span&gt; is a native &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;exe&lt;/span&gt; or .NET managed &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;exe&lt;/span&gt;. Why, because you can &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;decompile&lt;/span&gt; the source accordingly later :)&lt;br /&gt;&lt;p align="center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5260143572378400594" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 239px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SP_ItasrN1I/AAAAAAAAAeo/xaZtodeGBWY/s400/NET_exe.bmp" border="0" /&gt;A .NET exe&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5260143739743775746" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SP_I3KLsLAI/AAAAAAAAAew/-JX0ZOEGXhg/s400/vb6_dll.bmp" border="0" /&gt;&lt;/p&gt;&lt;p align="center"&gt;A VB6 dll&lt;/p&gt;&lt;p&gt;b) Of course, find the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;exe&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;dll&lt;/span&gt; dependencies, as the name implies. When you were in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;pre&lt;/span&gt;-NET era with only Visual C++/Visual Basic 6 &amp;amp; Package Deployment Wizard, there's no such thing called &lt;a href="http://en.wikipedia.org/wiki/Windows_Installer"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;MSI&lt;/span&gt;&lt;/a&gt; technology, which can help you to determine most of the dependencies for you.&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5260143937994714674" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 246px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SP_JCsuZbjI/AAAAAAAAAe4/GIHCuU5rRkI/s400/external_dependency.bmp" border="0" /&gt; &lt;/p&gt;&lt;p&gt;4) &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt;Process Explorer&lt;/a&gt; (Language: neutral)&lt;br /&gt;when you need it?&lt;br /&gt;a) When you need to find out what process/apps/service is running secretly. You'll never know your employer have planted a window service for software inventory control on your laptop, until you run it.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5260175688826208498" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 216px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SP_l61yhwPI/AAAAAAAAAfo/BYpk8qR3XMs/s400/Inventory+control.bmp" border="0" /&gt; b) Check the &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.threadstate.aspx"&gt;thread state&lt;/a&gt; of a stopped thread, probably due to &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.receivetimeout.aspx"&gt;Timeout&lt;/a&gt; of &lt;a href="http://support.microsoft.com/kb/172983"&gt;Three-Way Handshake&lt;/a&gt; in FTP uploading/downloading, when you suppose to have a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_35"&gt;multi-threaded&lt;/span&gt; app run without stopping FTP upload/download.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5260205735086830850" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 343px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SQABPw1StQI/AAAAAAAAAgo/dWMxGcSRlBc/s400/Wait+User+Request.bmp" border="0" /&gt;&lt;br /&gt;5) &lt;a href="http://blogs.technet.com/netmon/"&gt;Microsoft Network Monitor&lt;/a&gt; (Language: neutral)&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5260175559710025986" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 308px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SP_lzUy1KQI/AAAAAAAAAfg/FAeWT3IC_Ug/s400/Microsoft+Network+Monitor.bmp" border="0" /&gt;&lt;/p&gt;when you need it?&lt;br /&gt;a) When you have written a FTP client app running well on uploading files, but FTP server complaint it never receive. You can show this to prove.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5260177472689251218" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 170px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_N2VfwXjUyUU/SP_nirMno5I/AAAAAAAAAgQ/4QC0cGjj7tU/s400/Monitor+FTP.bmp" border="0" /&gt;&lt;br /&gt;b) When you need to sniff network traffic, especially on FTP since all the commands are transferred &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;thru&lt;/span&gt;' &lt;a href="http://en.wikipedia.org/wiki/Cleartext"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;Cleartext&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5260176351665025938" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 139px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SP_mhbDnc5I/AAAAAAAAAf4/xory3GFuv9E/s400/FTP_plainText.bmp" border="0" /&gt;&lt;/p&gt;&lt;p align="center"&gt;Wow, you can see user-name and password!&lt;/p&gt;&lt;p&gt;6) &lt;a href="http://www.red-gate.com/products/reflector/"&gt;Reflector&lt;/a&gt; (Language: .NET)&lt;br /&gt;when you need it?&lt;br /&gt;a) When you need to re-generate the source that lost and you do not have any source control previously, with the aid from plug-in, &lt;a href="http://www.denisbauer.com/NETTools/FileDisassembler.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;FileDisassembler&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5260204583812207314" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 345px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SQAAMwACEtI/AAAAAAAAAgg/q-JoA9ydZc0/s400/File+Dissembler.bmp" border="0" /&gt;&lt;br /&gt;b) When you need to find the difference between the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;exe&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;dll&lt;/span&gt; you deployed, with the another aid from plug-in, &lt;a href="http://www.codingsanity.com/diff.htm"&gt;Diff&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5260204479366053922" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 248px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SQAAGq6IQCI/AAAAAAAAAgY/Vjx9EnG2OC4/s400/Assembly+Diff.bmp" border="0" /&gt; &lt;/p&gt;&lt;p&gt;7) &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;DebugView&lt;/span&gt;&lt;/a&gt; (Language: native/.NET)&lt;br /&gt;when you need it?&lt;br /&gt;a) When your app only with issue happens intermittently, you need your app to run in verbose mode using &lt;a href="http://support.microsoft.com/kb/815788"&gt;Debug.Print&lt;/a&gt; without additional tracer running side-by-side, that might affect the performance, or introduce new bug/maintenance issue. This works well for native app too, using &lt;a href="http://msdn.microsoft.com/en-us/library/aa363362.aspx"&gt;Win32&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5260216226239784562" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SQAKybbEpnI/AAAAAAAAAgw/3a6euc7lvEw/s400/DebugView.bmp" border="0" /&gt; 8) &lt;a href="http://www.7-zip.org/"&gt;7Z&lt;/a&gt; (Language: neutral)&lt;br /&gt;when you need it?&lt;br /&gt;a) It supports most of the commercial format, yet without asking you to purchase &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_43"&gt;every time&lt;/span&gt; it loads, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;eg&lt;/span&gt;. &lt;a href="http://www.winzip.com/index.htm"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;WinZip&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.win-rar.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;Winrar&lt;/span&gt;&lt;/a&gt;. Furthermore, it able to compress more to save your disk-space.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5260221249380491554" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 342px; CURSOR: hand; HEIGHT: 400px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_N2VfwXjUyUU/SQAPW0FJISI/AAAAAAAAAhI/_C4KyINdVOY/s400/7z+support+formats.bmp" border="0" /&gt; b) When you need to find out how the zip file is created. Either &lt;a href="http://www.icsharpcode.net/OpenSource/SharpZipLib/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;SharpZipLib&lt;/span&gt;&lt;/a&gt; or Windows built-in zipping tool; compression method is either &lt;a href="http://en.wikipedia.org/wiki/DEFLATE"&gt;DEFLATE&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Implode"&gt;Implode&lt;/a&gt;, or Store. You can get the Host OS and &lt;a href="http://en.wikipedia.org/wiki/Cyclic_redundancy_check"&gt;CRC&lt;/a&gt; as well.&lt;/p&gt;&lt;p align="center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5260216396748149506" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 160px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_N2VfwXjUyUU/SQAK8Wnb0wI/AAAAAAAAAhA/kpGX-iRkuBI/s400/SharpZipLib.bmp" border="0" /&gt; this zip file is compressed using SharpZipLib with DEFLATE method &lt;/p&gt;&lt;p align="center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5260222065200740946" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 160px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SQAQGTP2OlI/AAAAAAAAAhQ/kJ94Ls11JSg/s400/STORE+compress.bmp" border="0" /&gt;this zip file is compressed using Store method&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5260216322782912066" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 160px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SQAK4DEv3kI/AAAAAAAAAg4/BC996kSCBH4/s400/Windows+Zipping+Tool.bmp" border="0" /&gt; this zip file is compressed using Windows built-in zipping tool &lt;/p&gt;&lt;p&gt;9) &lt;a href="http://www.microsoft.com/windows/downloads/virtualpc/default.mspx"&gt;Microsoft Virtual PC&lt;/a&gt; (Language: neutral)&lt;br /&gt;when you need it?&lt;br /&gt;a) When you wish to be beta tester yet you do not want to jeopardize your existing system.&lt;br /&gt;b) When you found virus, and you need to cultivate it in order to trace the originator, so that... counter-hack!&lt;br /&gt;c) When you need to test your web app in different OS. MS has prepared it for you to use it until January, 2009. Flavours available: Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;XP&lt;/span&gt; SP3 with IE6 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;VHD&lt;/span&gt; file, Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;XP&lt;/span&gt; SP2 with IE7 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;VHD&lt;/span&gt; file, Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;XP&lt;/span&gt; SP3 with IE8 Beta 2 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;VHD&lt;/span&gt; file, and Vista Image with IE7 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;VHD&lt;/span&gt; file. (see: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=21EABB90-958F-4B64-B5F1-73D0A413C8EF&amp;amp;displaylang=en"&gt;Internet Explorer Application Compatibility &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;VPC&lt;/span&gt; Image&lt;/a&gt;)&lt;br /&gt;d) When you wish to play around with different *-nix OS.&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5260326873467398034" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 359px; CURSOR: hand; HEIGHT: 254px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SQBva8d3J5I/AAAAAAAAAhY/HsTK7goQn9s/s400/VPC+with+Linux.bmp" border="0" /&gt;&lt;br /&gt;10) &lt;a href="http://www.grigsoft.com/download-windiff.htm"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;Windiff&lt;/span&gt; &lt;/a&gt;(Language: neutral)&lt;br /&gt;a) Basically for file compare and directory compare. I have used it since development in Visual C++ 6.0. Though it might not user-friendly, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;eg&lt;/span&gt;, cannot compare in separate panes, cannot compare Unicode/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;UTF&lt;/span&gt;-8 files. But it comes with Visual C++ 6.0 and have been with me so long, I feel hard to say goodbye to it.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5260331308104890802" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 164px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SQBzdEx1ObI/AAAAAAAAAhg/_e10dVhHP20/s400/WinDiff.bmp" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-79427051531853789?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/79427051531853789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=79427051531853789' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/79427051531853789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/79427051531853789'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/10/10-developer-must-have-apps.html' title='10 Developer-must-have apps'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_N2VfwXjUyUU/SP8tpOeWKII/AAAAAAAAAd4/4jUpAkGcob4/s72-c/windows.bmp' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-7757618601623981788</id><published>2008-10-11T12:30:00.004+08:00</published><updated>2008-10-11T12:41:15.003+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows OS'/><title type='text'>Review of notorious bugs on Windows pre-WU era</title><content type='html'>Remember these: &lt;a href="http://en.wikipedia.org/wiki/Code_Red_worm"&gt;Code Red&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/SQL_slammer_(computer_worm)"&gt;The SQL Slammer bug&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Blaster_(computer_worm)"&gt;The Blaster Worm bug&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Sasser_(computer_worm)"&gt;The Sasser bug&lt;/a&gt;? This article : &lt;a href="http://www.infoworld.com/article/08/10/06/41FE-windows-flaws_1.html"&gt;Worst Windows flaws of the past decade&lt;/a&gt; , bring you back to the notorious moments on Windows OS platform, pre-&lt;a href="http://update.microsoft.com/microsoftupdate/v6/default.aspx?ln=en-us"&gt;WU&lt;/a&gt;(Windows Update) era!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-7757618601623981788?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/7757618601623981788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=7757618601623981788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/7757618601623981788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/7757618601623981788'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/10/review-of-notorious-bugs-on-windows-pre.html' title='Review of notorious bugs on Windows pre-WU era'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-2018614401190125081</id><published>2008-09-27T12:33:00.006+08:00</published><updated>2008-09-27T14:10:04.139+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FTP'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>NET 2.0 FtpWebRequest class is far from perfect as self-contained class</title><content type='html'>In .NET framework 2.0, Microsoft introduced a new class for FTP- &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.aspx"&gt;FtpWebRequest Class&lt;/a&gt;. This class can consider as high-level wrapper class so that developers should no longer need to deal with socket programming and &lt;a href="http://www.jtpfxp.net/rawcmd.htm"&gt;FTP raw command&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ABOR - abort a file transfer &lt;/li&gt;&lt;li&gt;CWD - change working directory &lt;/li&gt;&lt;li&gt;DELE - delete a remote file &lt;/li&gt;&lt;li&gt;LIST - list remote files &lt;/li&gt;&lt;li&gt;MDTM - return the modification time of a file &lt;/li&gt;&lt;li&gt;MKD - make a remote directory &lt;/li&gt;&lt;li&gt;NLST - name list of remote directory &lt;/li&gt;&lt;li&gt;PASS - send password &lt;/li&gt;&lt;li&gt;PASV - enter passive mode &lt;/li&gt;&lt;li&gt;PORT - open a data port &lt;/li&gt;&lt;li&gt;PWD - print working directory &lt;/li&gt;&lt;li&gt;QUIT - terminate the connection &lt;/li&gt;&lt;li&gt;RETR - retrieve a remote file &lt;/li&gt;&lt;li&gt;RMD - remove a remote directory &lt;/li&gt;&lt;li&gt;RNFR - rename from &lt;/li&gt;&lt;li&gt;RNTO - rename to &lt;/li&gt;&lt;li&gt;SITE - site-specific commands &lt;/li&gt;&lt;li&gt;SIZE - return the size of a file &lt;/li&gt;&lt;li&gt;STOR - store a file on the remote host &lt;/li&gt;&lt;li&gt;TYPE - set transfer type &lt;/li&gt;&lt;li&gt;USER - send username &lt;/li&gt;&lt;/ul&gt;But after applying it in the real application to connect to a Unix FTP server, as a class or dll, with the reference from the sample "&lt;a href="http://msdn.microsoft.com/en-us/library/ms233623.aspx"&gt;FTP Explorer&lt;/a&gt;" in MSDN, I found that I have trouble navigating to parent directory, where I would hit error:&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5250566516092906850" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SN3CbX1HLWI/AAAAAAAAAdI/H3vyHyrcxZk/s400/550+File+unavaible.bmp" border="0" /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;System.Net.WebException: The remote server returned an error: (550) File unavailable (e.g., file not found, no access).&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;(See &lt;a href="http://en.wikipedia.org/wiki/List_of_FTP_server_return_codes"&gt;List of FTP server return codes&lt;/a&gt;) but I could do it without any problem using &lt;a href="http://filezilla-project.org/"&gt;FileZilla&lt;/a&gt;. Excluding the problem might come from .NET framework, since FTP is under &lt;a href="http://en.wikipedia.org/wiki/Request_for_Comments"&gt;RFC&lt;/a&gt; &lt;a href="http://www.ietf.org/rfc/rfc0959.txt?number=959"&gt;959&lt;/a&gt;, I was recommended by someone to use the &lt;a href="http://www.wireshark.org/"&gt;WireShark&lt;/a&gt;, a &lt;a href="http://en.wikipedia.org/wiki/Packet_sniffer"&gt;Packet sniffer tool&lt;/a&gt;, to check the message sent and received between server and client.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5250575560594764114" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SN3Kp1OZMVI/AAAAAAAAAdQ/Pu57bORJY18/s400/WireShark.bmp" border="0" /&gt;&lt;br /&gt;&lt;p&gt;I just realized that the FtpWebRequest class itself could not simply navigate to any path in the server if the default directory is not root path, since with &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.webrequestmethods.ftp_members.aspx"&gt;WebRequestMethods.Ftp Members&lt;/a&gt;, you only got these raw commands that it wrapped (where's FTP CWD protocol ?):&lt;/p&gt;&lt;ul&gt;&lt;li&gt;FTP APPE protocol&lt;/li&gt;&lt;li&gt;FTP DELE protocol&lt;/li&gt;&lt;li&gt;FTP RETR protocol&lt;/li&gt;&lt;li&gt;FTP MDTM protocol&lt;/li&gt;&lt;li&gt;FTP SIZE protocol&lt;/li&gt;&lt;li&gt;FTP NLIST protocol&lt;/li&gt;&lt;li&gt;FTP LIST protocol &lt;/li&gt;&lt;li&gt;FTP MKD protocol&lt;/li&gt;&lt;li&gt;FTP PWD protocol&lt;/li&gt;&lt;li&gt;FTP RMD protocol &lt;/li&gt;&lt;li&gt;FTP RENAME protocol&lt;/li&gt;&lt;li&gt;FTP STOR protocol&lt;/li&gt;&lt;li&gt;FTP STOU protocol&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;(Even using "&lt;a href="http://msdn.microsoft.com/en-us/library/system.net.webrequestmethods.ftp.printworkingdirectory.aspx"&gt;PrintWorkingDirectory&lt;/a&gt;", only empty string returned)&lt;/p&gt;&lt;p&gt;From &lt;a href="http://blogs.msdn.com/mariya/archive/2006/03/06/544523.aspx"&gt;Mariya Atanasova's Blog&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:78%;"&gt;The above example will bring you to your user's directory and list all the contents there. Now let's say you want to go 2 directories backwards and list the contents there (provided your user has permissions to do that). You close the previous FtpWebRequest and issue a new one with this uri&lt;br /&gt;uri = "&lt;/span&gt;&lt;/strong&gt;&lt;a href="ftp://myFtpUserName:myFtpUserPassword@myftpurl/" minmax_bound="true"&gt;&lt;strong&gt;&lt;span style="font-size:78%;"&gt;ftp://myFtpUserName:myFtpUserPassword@myFtpUrl/%2E%2E/%2E%2E&lt;/span&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;span style="font-size:78%;"&gt;";&lt;br /&gt;This is equivalent to logging in with your user's credentials and then using cd ../../&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;But one strange thing: what if user (or even you, the developer) does not know the default directory and current directory? Then you might need &lt;a href="http://msdn.microsoft.com/en-us/library/aa385473(VS.85).aspx"&gt;WinINet Functions&lt;/a&gt; or even worst, go back to socket programming.&lt;/p&gt;&lt;p&gt;p/s: For those who prefer to have hand dirty, there's a free e-book available in &lt;a href="http://www.scribd.com/"&gt;scribd&lt;/a&gt;: &lt;a href="http://www.scribd.com/doc/2683536/TCPIP-Sockets-in-C"&gt;TCP/IP Sockets in C#&lt;/a&gt; .&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-2018614401190125081?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/2018614401190125081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=2018614401190125081' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2018614401190125081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2018614401190125081'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/09/net-20-ftpwebrequest-class-is-far-from.html' title='NET 2.0 FtpWebRequest class is far from perfect as self-contained class'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_N2VfwXjUyUU/SN3CbX1HLWI/AAAAAAAAAdI/H3vyHyrcxZk/s72-c/550+File+unavaible.bmp' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-7490811888646757695</id><published>2008-09-25T18:04:00.010+08:00</published><updated>2008-09-25T19:16:11.787+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Basic 6'/><title type='text'>Why we need different version of MSXML dlls installed?</title><content type='html'>While still supporting VB6 legacy system that reference to MSXML 4.0, user (and even layman like me) curious why some PCs have installed MSXML 6.0, yet still need to install MSXML 4.0 (or SP2). We thought this should have backward compatibility or new version should act as a superset of old version, as most of the Microsoft's products do. &lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5249903553284997122" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SNtnd26dAAI/AAAAAAAAAcg/f3QBqXS6gt4/s400/MSXML.bmp" border="0" /&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;From &lt;a href="http://msdn.microsoft.com/en-us/library/ms760414(VS.85).aspx"&gt;VB6 MSXML sample&lt;/a&gt; (you can get it &lt;a href="http://www.geocities.com/gan.gary1980/DllTest.zip"&gt;here&lt;/a&gt;), if &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=3144b72b-b4f2-46da-b4b6-c5d7485f2b42&amp;amp;displaylang=en"&gt;MSXML 4.0 is installed&lt;/a&gt; and "DllTest.dll" is &lt;a href="http://technet.microsoft.com/en-us/library/bb490985.aspx"&gt;registered&lt;/a&gt; and this app is ran, you will get:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5249909691125473202" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SNttDIJqH7I/AAAAAAAAAc4/olXODwdFYog/s400/register+ActiveX.bmp" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5249903643433834402" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SNtnjGvnF6I/AAAAAAAAAco/WQ2m8zbW4oI/s400/MSXML+4+installed.bmp" border="0" /&gt;&lt;/div&gt;&lt;div&gt;if "DllTest.dll" is not registered on PC without MSXML 4.0 installed, you might get :&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5249909597279272130" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SNts9qi-vMI/AAAAAAAAAcw/KUBSmv1zN_g/s400/Run-time+error+%27429%27.bmp" border="0" /&gt;After "DllTest.dll" registration on PC without MSXML 4.0 installed, you will still get:&lt;/p&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5249911525745494626" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_N2VfwXjUyUU/SNtut6pKCmI/AAAAAAAAAdA/HqMOwTgG0hA/s400/Run-time+error+%27429%27.bmp" border="0" /&gt;&lt;/div&gt;&lt;div&gt;(you might get: "Object variable or With block variable not set" as well for some other cases)&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;From &lt;a href="http://msdn.microsoft.com/en-us/library/ms753804(VS.85).aspx"&gt;explanation of MSDN&lt;/a&gt;:&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;Version-Dependent ProgIDs&lt;br /&gt;Prior to version 4.0 of MSXML, there was a notion of version independent ProgIDs. This meant that you could write a script that instantiated an instance of MSXML, and when a new version of MSXML was installed on your machine, you automatically would get the new version. However, this sometimes created problems. Replacing one version of MSXML with another version of MSXML created situations where the user's program would stop working due to changes in the programming interface. &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;Since version 4.0 of MSXML, each version has a unique ProgID for each interface in MSXML. &lt;span style="color:#ff6666;"&gt;This means that when you are using a scripting language, you will not suddenly be using a much newer version than you were previously.&lt;/span&gt; &lt;span style="color:#ff6666;"&gt;This is a much better approach - specifying exactly which version you want to run against, then coding specifically for that version, and being certain that the version would not change when the user updates their machine means that MSXML applications are much more reliable. &lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;There is a situation where you will automatically be using MSXML version 3.0. If the computer that is fully patched uses MSXML as part of a web application in Internet Explorer using the MIME viewer, you automatically will be using MSXML 3.0. If you are using MSXML via a scripting language, and if you specify a version independent ProgID (such as Msxml2.DOMDocument), then you will be using MSXML 3.0. However, if you are using MSXML via a scripting language, and if you specify a version dependent ProgID (such as MSXML2.DOMDocument.6.0), then you will be using the version of MSXML corresponds to the specified ProgID.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-7490811888646757695?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/7490811888646757695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=7490811888646757695' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/7490811888646757695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/7490811888646757695'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/09/why-we-need-different-version-of-msxml.html' title='Why we need different version of MSXML dlls installed?'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_N2VfwXjUyUU/SNtnd26dAAI/AAAAAAAAAcg/f3QBqXS6gt4/s72-c/MSXML.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-5815752997905663911</id><published>2008-09-20T11:48:00.003+08:00</published><updated>2008-09-20T12:02:46.596+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows OS'/><title type='text'>Windows OS 7: A milestone 3 (build 6780) release?</title><content type='html'>Time flies, now we have Windows OS 7 milestone 3 (build 6780) release. From the screenshots, we can see MS have revamped the &lt;a href="http://uxevangelist.blogspot.com/2008/09/windows-7-m3-build-6780-new-wordpad-ui.html"&gt;MS WordPad, MS Paint&lt;/a&gt;, &lt;a href="http://uxevangelist.blogspot.com/2008/09/windows-7-build-6780-new-screenshots.html"&gt;MS Calculator&lt;/a&gt; to a Office-like application. Soon, all the apps in OS 7 will be filled with ribbons. (Following images are external links from &lt;a href="http://uxevangelist.blogspot.com/"&gt;UX Evangelist&lt;/a&gt;, I hold no rights)&lt;br /&gt;&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://farm4.static.flickr.com/3242/2867107619_2a1c9f372f.jpg" border="0" /&gt;&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://farm4.static.flickr.com/3253/2862818349_bfdcbf96c1.jpg" border="0" /&gt;&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.thinknext.net/content/2008/09/win7/calculator.png" border="0" /&gt; Details of multi-touch technology is discussed &lt;a href="http://uxevangelist.blogspot.com/2008/09/windows-7-multi-touch-in-depth-look-at.html"&gt;here&lt;/a&gt; as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-5815752997905663911?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/5815752997905663911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=5815752997905663911' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5815752997905663911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5815752997905663911'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/09/windows-os-7-milestone-3-build-6780.html' title='Windows OS 7: A milestone 3 (build 6780) release?'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3242/2867107619_2a1c9f372f_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-6238321517259837415</id><published>2008-09-17T20:40:00.011+08:00</published><updated>2008-09-20T11:48:26.143+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Basic 6'/><category scheme='http://www.blogger.com/atom/ns#' term='zLib'/><category scheme='http://www.blogger.com/atom/ns#' term='compression'/><title type='text'>Codepage and Compression/DEFLATE</title><content type='html'>While data compression is great to reduce the file size/content significantly, the &lt;a href="http://en.wikipedia.org/wiki/Codepage"&gt;code-page&lt;/a&gt; of the PC will affect the compression/decompression or INFLATE/DEFLATE too. If you compress the data in code-page A, you might not able to get it back through de-compression in code-page B. Some of the compression algorithms involves &lt;a href="http://en.wikipedia.org/wiki/Huffman_coding"&gt;Huffman coding&lt;/a&gt;(&lt;a href="http://www.huffmancoding.com/david/algorithm.html"&gt;here&lt;/a&gt;), thus making byte-encoding significant.&lt;br /&gt;&lt;br /&gt;Here's the &lt;a href="http://www.zlib.net/zlib_how.html"&gt;sample code&lt;/a&gt; executed using &lt;a href="http://www.zlib.net/"&gt;zLib&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;0) Within the same PC, INFLATE/DEFLATE is ok.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5246979990380633218" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SNEEgGY4XII/AAAAAAAAAcI/TTGzZ5DvxwY/s400/compress_decompress.JPG" border="0" /&gt; &lt;/p&gt;&lt;div&gt;1) DEFLATE under PC with &lt;a href="http://en.wikipedia.org/wiki/Windows-1252"&gt;code-page 1252&lt;/a&gt; (XP: Control Panel-&gt;Regional and Language Options), compare with what you get from (2) later&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;(From wiki: Windows-1252 is a character encoding of the Latin alphabet, used by default in the legacy components of Microsoft Windows in English and some other Western languages. It is one version within the group of Windows code pages.)&lt;/span&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5247943527805798946" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SNRw1XAsyiI/AAAAAAAAAcQ/NVNJCyuKk5k/s400/codepage_1252.bmp" border="0" /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_N2VfwXjUyUU/SND9nwErr7I/AAAAAAAAAcA/qRRQyieUDoA/s1600-h/1252.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5246972425247895474" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SND9nwErr7I/AAAAAAAAAcA/qRRQyieUDoA/s400/1252.JPG" border="0" /&gt;&lt;/a&gt; 2) DEFLATE under PC with &lt;a href="http://en.wikipedia.org/wiki/Code_page_936"&gt;code-page 936&lt;/a&gt; (XP: Control Panel-&gt;Regional and Language Options), compare with what you get from (1) previously&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;(From wiki: A character is encoded as 1 or 2 bytes. A byte in the range 00–7F is a single byte that means the same thing as it does in ASCII. Strictly speaking, there are 96 characters and 32 control codes in this range.&lt;br /&gt;A byte with the high bit set indicates that it is the first of 2 bytes. Loosely speaking, the first byte is in the range 81–FE (that is, never 80 or FF, and the second byte is 40–FE for some areas and 80–FE for others.)&lt;/span&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5247943865687502978" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SNRxJBt-cII/AAAAAAAAAcY/H_5X6uVe1fs/s400/codepage_936.bmp" border="0" /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_N2VfwXjUyUU/SND9dRWMzOI/AAAAAAAAAb4/9xP1nAys968/s1600-h/950.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5246972245201177826" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SND9dRWMzOI/AAAAAAAAAb4/9xP1nAys968/s400/950.JPG" border="0" /&gt;&lt;/a&gt;You can check your PC's code-page using Win API: &lt;a href="http://msdn.microsoft.com/en-us/library/ms776259(VS.85).aspx"&gt;GetACP&lt;/a&gt;.&lt;br /&gt;You also can get the &lt;a href="http://www.geocities.com/gan.gary1980/zLibSample.zip"&gt;VC++ zLib sample here&lt;/a&gt;, and &lt;a href="http://www.geocities.com/gan.gary1980/GetACP.zip"&gt;VB6 GetACP sample here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-6238321517259837415?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/6238321517259837415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=6238321517259837415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/6238321517259837415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/6238321517259837415'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/09/codepage-and-compressiondeflate.html' title='Codepage and Compression/DEFLATE'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_N2VfwXjUyUU/SNEEgGY4XII/AAAAAAAAAcI/TTGzZ5DvxwY/s72-c/compress_decompress.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-6568530702575958350</id><published>2008-09-09T21:35:00.006+08:00</published><updated>2008-09-09T22:06:09.617+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Adobe'/><title type='text'>Launch of Adobe Creative Suite 4</title><content type='html'>Probably less than 2 years of &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;launching&lt;/span&gt; Adobe Creative Suite 3 (CS3), yet the world is still digesting its Creative Suite 2(CS2), &lt;a href="http://www.adobe.com/"&gt;Adobe is going to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;launch&lt;/span&gt; its new suite of software, Creative Suite 4, on Sept 23&lt;/a&gt;. You can catch the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;webcast&lt;/span&gt; on the following days, depending on the continent you are.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5244018116795344242" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SMZ-sXdMpXI/AAAAAAAAAbo/8MYtvxVzMgI/s400/continent.bmp" border="0" /&gt; Don't miss it and register at: &lt;a href="http://adobe.istreamplanet.com/"&gt;http://adobe.istreamplanet.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5244017832278605922" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_N2VfwXjUyUU/SMZ-bzjHwGI/AAAAAAAAAbg/F-Z1sd6XLR4/s400/cs4.bmp" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-6568530702575958350?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/6568530702575958350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=6568530702575958350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/6568530702575958350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/6568530702575958350'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/09/launch-of-adobe-creative-suite-4.html' title='Launch of Adobe Creative Suite 4'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_N2VfwXjUyUU/SMZ-sXdMpXI/AAAAAAAAAbo/8MYtvxVzMgI/s72-c/continent.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-4464817672333918040</id><published>2008-08-31T01:09:00.008+08:00</published><updated>2008-08-31T01:57:32.624+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflector'/><title type='text'>Probing thread state in .NET application</title><content type='html'>In multi-threaded application, some threads could be running fine, others might have problem. While trouble-shooting bug in a multi-threaded application, someone pointed me out that there are 2 set of thread id and thread state can be probed:&lt;br /&gt;1) &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.threadstate(VS.80).aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;ThreadState&lt;/span&gt; Enumeration in System.Diagnostics&lt;/a&gt; (in system.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;dll&lt;/span&gt;)&lt;br /&gt;2) &lt;a href="http://msdn.microsoft.com/en-us/library/system.threading.threadstate(VS.80).aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;ThreadState&lt;/span&gt; Enumeration in System.Threading&lt;/a&gt; (in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;mscorlib&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;dll&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;While the enumerate members can be found in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;MSDN&lt;/span&gt; easily, the associate integer value is a bit tricky. And using &lt;a href="http://www.red-gate.com/products/reflector/"&gt;Reflector&lt;/a&gt;, its values are:&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5240365944862749250" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SLmFD-yZMkI/AAAAAAAAAbI/qlIf66yxa4k/s400/System.Threading.ThreadState.JPG" border="0" /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5240365272819979490" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SLmEc3O6VOI/AAAAAAAAAbA/q64vNFO9Myg/s400/System.Diagnostics.ThreadState.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;While it's easy to use "&lt;a href="http://msdn.microsoft.com/en-us/library/system.threading.thread.currentthread.aspx"&gt;Thread.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;CurrentThread&lt;/span&gt;&lt;/a&gt;" to &lt;a href="http://en.csharp-online.net/Check_the_state_of_the_current_thread"&gt;check the state of the current thread&lt;/a&gt;, most of the time we need to monitor all the threads. Furthermore you will get a whole different set of thread id, if using property "&lt;a href="http://msdn.microsoft.com/en-us/library/system.threading.thread.managedthreadid(VS.80).aspx"&gt;Thread.CurrentThread.ManagedThreadId&lt;/a&gt;". Thus, classes like "&lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.processthreadcollection.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;ProcessThreadCollection&lt;/span&gt;&lt;/a&gt;":&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#3333ff;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#3333ff;"&gt;For Each &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;threCurr&lt;/span&gt; As &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;ProcessThread&lt;/span&gt; In Process.GetCurrentProcess().Threads&lt;br /&gt;Console.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;WriteLine&lt;/span&gt;("ID : " + &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;CStr&lt;/span&gt;(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;threCurr&lt;/span&gt;.Id) + " ; State : " + &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;CStr&lt;/span&gt;(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;threCurr&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;ThreadState&lt;/span&gt;))&lt;br /&gt;Next&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;will be useful to enumerate all the threads in your application, especially you can simply use any other third party tool like &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt;Process-Explorer&lt;/a&gt; to probe all the thread easily, in real-time:&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5240368025282573618" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SLmG9E9IdTI/AAAAAAAAAbY/HkaxP0QiFxk/s400/ProcessExplorer.JPG" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-4464817672333918040?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/4464817672333918040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=4464817672333918040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4464817672333918040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4464817672333918040'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/08/probing-thread-state-in-net-application.html' title='Probing thread state in .NET application'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_N2VfwXjUyUU/SLmFD-yZMkI/AAAAAAAAAbI/qlIf66yxa4k/s72-c/System.Threading.ThreadState.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-482527967185598653</id><published>2008-08-29T22:28:00.003+08:00</published><updated>2008-08-29T22:36:41.971+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflector'/><title type='text'>Red Gate has acquired .NET Reflector</title><content type='html'>&lt;a href="http://www.lutzroeder.com/dotnet/"&gt;Reflector&lt;/a&gt; is an useful tool for developer to figure out the inner work of .NET framework, and &lt;a href="http://www.red-gate.com/index.htm"&gt;Red Gate&lt;/a&gt;, a software company that famous with the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SQL&lt;/span&gt; tool likes &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;SQL&lt;/span&gt; Compare,  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;SQL&lt;/span&gt; Prompt, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;SQL&lt;/span&gt; Data Compare, has &lt;a href="http://www.red-gate.com/products/reflector/"&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;acquired&lt;/span&gt; it last week&lt;/a&gt;. Here's what's on &lt;a href="http://blog.lutzroeder.com/2008/08/future-of-net-reflector.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Lutz&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Roeder's&lt;/span&gt; weblog&lt;/a&gt;. Hope it can remain free: &lt;a href="http://www.simple-talk.com/opinion/opinion-pieces/the-future-of-reflector-/"&gt;The Future of Reflector&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-482527967185598653?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/482527967185598653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=482527967185598653' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/482527967185598653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/482527967185598653'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/08/red-gate-has-acquired-net-reflector.html' title='Red Gate has acquired .NET Reflector'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-5395533042810447472</id><published>2008-08-17T15:24:00.032+08:00</published><updated>2008-08-17T21:59:41.488+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Basic 6'/><title type='text'>Impersonation in VB6</title><content type='html'>Since &lt;a href="http://en.wikipedia.org/wiki/Visual_Basic"&gt;VB6 is released around 1998&lt;/a&gt; or earlier, and now we are on year 2008, this topic might be obsolete for some to discuss. Since supporting legacy system is inevitable, I have something simple but might useful to share, on impersonation.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;(Sample source discussed can be downloaded &lt;a href="http://www.geocities.com/gan.gary1980/Impersonation.zip"&gt;here&lt;/a&gt;.)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;When an application needs to perform any operation on a network folder, using &lt;a href="http://en.wikipedia.org/wiki/Path_%28computing%29#Uniform_Naming_Convention"&gt;UNC path&lt;/a&gt;, it's not like what we can simply do anything in our own drives. Let's say we try to do file copy with vb6 app using: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/2s1c774y(VS.80).aspx"&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;FileCopy&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt; App.Path &amp;amp; "\HelloWorld.txt", txtCurrNetworkPath.Text &amp;amp; "\HelloWorld.txt"&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;You will get this: &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5235393662979020882" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SKfazFUyGFI/AAAAAAAAAYg/PFl3ejTFhIs/s400/01_copy+failed.JPG" border="0" /&gt;&lt;/div&gt;&lt;div&gt;Some folders in the network only permit for certain personnel to access, to deal with it you must able to prove you are authorized to access it. By using &lt;a href="http://msdn.microsoft.com/en-us/library/aa378184.aspx"&gt;LogonUser() API function&lt;/a&gt;, you can achieve it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Visual Basic 6 provides an Win32 API viewer for you to invoke (copy-and-paste in source) it, it's normally located at: "Start"&gt;"All Programs"&gt;"Microsoft Visual Studio 6.0"&gt;"Microsoft Visual Studio 6.0 Tools"&gt;"API Text Viewer". &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5235395280858881906" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SKfcRQZZn3I/AAAAAAAAAYo/svzWwocjjXk/s400/02_API+Text+Viewer.JPG" border="0" /&gt;For the first-time user, you might need to load the look-up files or database before you can see the available API.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5235396180765106994" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SKfdFozw4zI/AAAAAAAAAYw/en79mOQ1mTw/s400/03_Load+API+list+for+first+time.JPG" border="0" /&gt; Type the API that you are looking for and the result will be filtered in real-time. Now you can get what you want, but beware the gotcha. It mentions you need to add reference with "Kernel32.lib":&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5235398377726738066" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SKffFhIO_pI/AAAAAAAAAY4/izAugTPFNr4/s400/04_Wrong+library.JPG" border="0" /&gt;&lt;/div&gt;&lt;div&gt;From &lt;a href="http://msdn.microsoft.com/en-us/library/aa378184.aspx"&gt;MSDN&lt;/a&gt; mentioned earlier, the actual library you need is "Advapi32.lib". OK, now you refer it using the correct library in the source with: &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;Private Declare Function LogonUser Lib "advapi32.dll" Alias _ &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;"LogonUserA" _ &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;(ByVal lpszUsername As String, _ &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;ByVal lpszDomain As String, _ &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;ByVal lpszPassword As String, _ &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;ByVal dwLogonType As Long, _ &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;ByVal dwLogonProvider As Long, _ &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;phToken As Long) As Long&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5235399356231809842" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SKff-eWBezI/AAAAAAAAAZQ/uDIvt4LhZWw/s400/05_Correct+library.JPG" border="0" /&gt;And we find a remote pc with a folder shared. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5235401660335395170" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SKfiElzIEWI/AAAAAAAAAZY/4Kk3K7u4ONw/s400/06_Remote+Desktop.JPG" border="0" /&gt; &lt;div&gt;Let set "everybody" can access on it.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5235402222721002818" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SKfilU2TbUI/AAAAAAAAAZg/liPzXfGehkA/s400/07_Sharing.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5235403021581326914" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SKfjT01cmkI/AAAAAAAAAZo/TipMqz2vJc0/s400/08_Everybody+can+access.JPG" border="0" /&gt;&lt;/div&gt;&lt;div&gt;using this account in system account database, as shown in "Computer Management":&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5235404308980931746" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SKfkewxbnKI/AAAAAAAAAZw/xY63mRHBZOw/s400/09_Account+used.JPG" border="0" /&gt;Next if you follow this tutorial &lt;a href="http://support.microsoft.com/kb/q248187"&gt;(How to impersonate a user from Active Server Pages)&lt;/a&gt; or another tutorial (&lt;a href="http://support.microsoft.com/kb/285879"&gt;How to start a process as another user from Visual Basic&lt;/a&gt;), and apply it on a simple "Standard EXE". &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5235404940575098290" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SKflDhpNxbI/AAAAAAAAAZ4/cv2Jp6XThfg/s400/10_In+action.JPG" border="0" /&gt;&lt;/div&gt;&lt;div&gt;You might use "LOGON32_LOGON_INTERACTIVE" as parameter "dwLogonType". Now you try to run it and you will get this error message:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5235405106221327042" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_N2VfwXjUyUU/SKflNKuWosI/AAAAAAAAAaA/PBo1MRaFoXY/s400/11_wrong+logontype.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;What the heck? &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Could it be this parameter "dwLogonType" that casue the error? So we browse to Win32 header file (usually at: C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include) first and check the possible value for parameter "dwLogonType" since we know the domain/user/password are all correct. From "winbase.h", "9" represent another constant for "LOGON32_LOGON_NEW_CREDENTIALS". &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5235405200926407346" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_N2VfwXjUyUU/SKflSrhzerI/AAAAAAAAAaI/Nkrr1Vs1rWQ/s400/12_available+logonType.JPG" border="0" /&gt;&lt;/div&gt;&lt;div&gt;Declaring it at our VB6 application:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;Private Const LOGON32_LOGON_NEW_CREDENTIALS = 9&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;replaces "LOGON32_LOGON_INTERACTIVE" with it as parameter "dwLogonType" for LogonUser() function and eventually it works. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Note that in some pc, the impersonation might take long time. &lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5235407119134729346" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SKfnCVaTpII/AAAAAAAAAaQ/o6MbTiNDVtI/s400/13_Time+taken.JPG" border="0" /&gt;Also, the allowed user for accessing the shared folder must be taken note as well. Previously we use PC name or IP address as our domain for a shared folder that can be accessed by "everyone"; if only a particular user in &lt;a href="http://en.wikipedia.org/wiki/Active_Directory"&gt;Active Directory (AD)&lt;/a&gt; can access a network folder, then you must provide AD account to impersonate, instead of account in system account database.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5235408326537924626" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_N2VfwXjUyUU/SKfoInVqUBI/AAAAAAAAAag/BPri8cwFLbA/s400/15_AD+account+only.JPG" border="0" /&gt; &lt;/div&gt;&lt;div&gt;If you have logon-ed the remote shared folder from "Run" before, the previous example might be useless to prove its worth. Try reboot your pc before you try example above.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5235409604959526322" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SKfpTB1H3bI/AAAAAAAAAaw/ndJT2ZvdabQ/s400/17_Remote+at+RUN.JPG" border="0" /&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5235410246556078450" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_N2VfwXjUyUU/SKfp4X9qUXI/AAAAAAAAAa4/of8VgKk9oX0/s400/18_LogonWindow.JPG" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-5395533042810447472?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/5395533042810447472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=5395533042810447472' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5395533042810447472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5395533042810447472'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/08/impersonation-in-vb6.html' title='Impersonation in VB6'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_N2VfwXjUyUU/SKfazFUyGFI/AAAAAAAAAYg/PFl3ejTFhIs/s72-c/01_copy+failed.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-5804186526839619471</id><published>2008-08-08T07:56:00.004+08:00</published><updated>2008-08-08T08:08:16.020+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSSQL 2008'/><title type='text'>Finally, MSSQL 2008 is RTM-ed.</title><content type='html'>After its initial launch on February, MSSQL 2008 reaches &lt;a href="http://en.wikipedia.org/wiki/Software_release_life_cycle#RTM_or_RTW"&gt;RTM&lt;/a&gt;. With the new logo,&lt;br /&gt;&lt;p&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://i.microsoft.com/global/sqlserver/2008/en/us/PublishingImages/logo-header-sql08-dg.gif" border="0" /&gt;&lt;/p&gt;&lt;p&gt;it comes with a lots of useful resources:&lt;br /&gt;1) &lt;a href="http://technet.microsoft.com/en-us/library/bb500433(SQL.100).aspx"&gt;Quick-Start Installation of SQL Server 2008&lt;/a&gt;&lt;br /&gt;2) &lt;a href="http://technet.microsoft.com/en-us/library/bb500395(SQL.100).aspx"&gt;Installing SQL Server 2008&lt;/a&gt;&lt;br /&gt;3) &lt;a href="http://technet.microsoft.com/en-us/library/ms144275(SQL.100).aspx"&gt;Editions and Components of SQL Server 2008&lt;/a&gt;&lt;br /&gt;4) &lt;a href="http://www.microsoft.com/events/series/msdnsqlserver2008.aspx?tab=webcasts&amp;amp;id=42585"&gt;Webcasts&lt;/a&gt;&lt;br /&gt;5)&lt;a href="http://technet.microsoft.com/en-us/magazine/cc434690.aspx"&gt; What's New&lt;/a&gt;&lt;br /&gt;6) how can we forget the most important one: &lt;a href="http://technet.microsoft.com/en-us/library/ms167593(SQL.100).aspx"&gt;Tutorials&lt;/a&gt;&lt;br /&gt;Wait no more, start your engine with full-throttle and go!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-5804186526839619471?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/5804186526839619471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=5804186526839619471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5804186526839619471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5804186526839619471'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/08/finally-mssql-2008-is-rtm-ed.html' title='Finally, MSSQL 2008 is RTM-ed.'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-1861105416531198658</id><published>2008-07-25T22:06:00.012+08:00</published><updated>2008-07-25T22:57:50.418+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss'/><title type='text'>I think I found a bug in JBoss Native</title><content type='html'>With the VPC usage on deployment testing is becoming a common practice, software bug can be traced more easily, and more important, early.&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;When involving in company project that uses the &lt;a href="http://en.wikipedia.org/wiki/Jboss"&gt;JBoss Application Server&lt;/a&gt;, I found a strange behaviour in JBoss. I install of the necessary Java installers and eventually I could not start my window service, using JBoss Native. &lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;This is the way you can simulate.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;1) Download &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=04D26402-3199-48A3-AFA2-2DC0B40A73B6&amp;amp;displaylang=en"&gt;VPC 2007&lt;/a&gt; and Windows XP virtual harddisk to re-test, can be obtained here free from Microsoft (valid till September 2008): &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=21EABB90-958F-4B64-B5F1-73D0A413C8EF&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=21EABB90-958F-4B64-B5F1-73D0A413C8EF&amp;amp;displaylang=en&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;2) Install JDK &amp;amp; JRE from Sun Java, using default path ( I used &lt;a href="http://java.sun.com/javase/downloads/index_jdk5.jsp"&gt;jdk1.5.0_15&lt;/a&gt; Windows x86) without restart PC.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5226957044243877234" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SInhvPZhzXI/AAAAAAAAAXo/it1QakDMH9I/s400/01+Install+JDK.JPG" border="0" /&gt;3) Configure JAVA_HOME system variables:&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5226957400740018162" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SIniD_c1N_I/AAAAAAAAAXw/IkOAMW8YvHU/s400/02+Set+JAVA_HOME+Environment+Path.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;4) Install Ant at C-drive ( I used &lt;a href="http://ant.apache.org/bindownload.cgi"&gt;apache-ant-1.7.0&lt;/a&gt;) and configure ANT_HOME system variables:&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5226957848108472546" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SInieCByGOI/AAAAAAAAAX4/YLfNN-ug6tA/s400/03+Set+ANT_HOME+Enviroment+Path.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;5) Install JBoss at C-drive ( I used &lt;a href="http://www.jboss.org/jbossas/downloads/"&gt;jboss-4.2.2.GA&lt;/a&gt;):&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5226958196790152194" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SIniyU9-TAI/AAAAAAAAAYA/h9H4nHB0dV0/s400/04+Set+JBOSS_HOME+Environment+Path.JPG" border="0" /&gt;&lt;br /&gt;6) Run the "run.bat" in the "%JBoss_HOME%\bin" directory to verify everything is installed properly. Go to IE and type: &lt;a href="http://localhost:8080/jmx-console/"&gt;http://localhost:8080/jmx-console/&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5226959272634693586" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SInjw8zTN9I/AAAAAAAAAYQ/D12kXHsTQHM/s400/06+Start+JMX+Console.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;6) Shut down the JBoss in step(5) by pressing Ctrl-C. Install JBoss Native (I used &lt;a href="http://www.jboss.org/jbossweb/downloads/jboss-native/"&gt;JBoss Native 2.0.4&lt;/a&gt; Win32 x86), even using a new command prompt. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;7) run "service.bat install" in command prompt from "%JBoss_HOME%\bin" directory:&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5226958982200401346" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SInjgC2XncI/AAAAAAAAAYI/v9XNpqLq_Rg/s400/07+Install+JBoss+Service.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;7) run "net start JBAS50SVC", you will hit error here. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;8) Open "run.log" produced in "%JBoss_HOME%\bin" directory and you will see this: &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="color:#3366ff;"&gt;&lt;span style="font-size:85%;"&gt;Starting JBoss Application Server 5.0 [2008-07-24 04:18:06] &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#3366ff;"&gt;&lt;span style="font-size:85%;"&gt;ECHO is off. &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#3366ff;"&gt;&lt;span style="font-size:85%;"&gt;JAVA_HOME is not set. Unexpected results may occur. &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;Set JAVA_HOME to the directory of your local JDK to avoid this message. ===============================================================================&lt;br /&gt;JBoss Bootstrap Environment&lt;br /&gt;JBOSS_HOME: C:\jboss-4.2.2.GA&lt;br /&gt;JAVA: java&lt;br /&gt;JAVA_OPTS: -Xrs -Dprogram.name=run.bat -server -Xms128m -Xmx512m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000&lt;br /&gt;CLASSPATH: C:\jboss-4.2.2.GA\bin\run.jar&lt;br /&gt;===============================================================================&lt;br /&gt;Error: no `server' JVM at `C:\Program Files\Java\jre1.5.0_15\bin\server\jvm.dll'. Shutdown JBoss Application Server 5.0 service [2008-07-24 04:18:07]&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;And I reported this strange behaviour (or could be bug) to &lt;a href="https://jira.jboss.org/jira/browse/JBNATIVE-61"&gt;JIRA&lt;/a&gt; (kinda JBoss version of &lt;a href="http://en.wikipedia.org/wiki/Bugzilla"&gt;BugZilla&lt;/a&gt;), and update the &lt;a href="http://wiki.jboss.org/wiki/JBossNativeWindows"&gt;JBoss Wiki&lt;/a&gt; :)&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-1861105416531198658?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/1861105416531198658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=1861105416531198658' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/1861105416531198658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/1861105416531198658'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/07/i-think-i-found-bug-in-jboss-native.html' title='I think I found a bug in JBoss Native'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_N2VfwXjUyUU/SInhvPZhzXI/AAAAAAAAAXo/it1QakDMH9I/s72-c/01+Install+JDK.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-8643775017341217966</id><published>2008-07-15T18:13:00.007+08:00</published><updated>2008-07-15T18:31:56.327+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='winform'/><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><title type='text'>How to capture the output from Console.WriteLine</title><content type='html'>Sometimes, windows/console application needs to capture the output from console.writeline for debugging purpose. It's useful if the application can run in verbose mode, so that we can know at which point the system crashes. Maybe you might think we can implement &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.consoletracelistener.aspx"&gt;ConsoleTraceListener Class&lt;/a&gt; in .Net 2.0.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;While doing &lt;a href="http://code.msdn.microsoft.com/csharpsamples/Release/ProjectReleases.aspx?ReleaseId=8"&gt;some tutorials on Linq on .Net 3.0&lt;/a&gt;, I found the sample have another simpler way to achieve that. Here are the steps:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;1) Create a windows application&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5223184163799922098" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SHx6Use9dbI/AAAAAAAAAXI/I5wgfdua434/s400/01+create+windows+project.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;2) Design a simple GUI. Button represents you business logic and multiline textbox means the trace information.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5223184229041232946" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SHx6Yfhs3DI/AAAAAAAAAXQ/59CXlI_fwn4/s400/02+GUI+design.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;3) Set the StreamWriter to the Console output, re-capture it with TextWriter will do.&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Imports System.IO&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Public Class Form1&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;Private ReadOnly _OutputStreamWriter As StreamWriter = New StreamWriter(New MemoryStream())&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click&lt;br /&gt;' Capture console output&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;Dim writer As StreamWriter = _OutputStreamWriter&lt;br /&gt;Dim oldConsoleOut As TextWriter = Console.Out&lt;br /&gt;Console.SetOut(writer)&lt;br /&gt;Dim stream As MemoryStream = CType(writer.BaseStream, MemoryStream)&lt;br /&gt;stream.SetLength(0)&lt;/span&gt;&lt;br /&gt;DoSomething&lt;br /&gt;' set to result pane&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;writer.Flush()&lt;br /&gt;Console.SetOut(oldConsoleOut)&lt;br /&gt;TextBox1.Text += writer.Encoding.GetString(stream.ToArray())&lt;/span&gt;&lt;br /&gt;End Sub&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Private Sub DoSomething()&lt;br /&gt;Console.WriteLine("Hello world!")&lt;br /&gt;End Sub&lt;br /&gt;End Class&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;4) Here's the final result:&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5223184347656160114" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SHx6fZZtA3I/AAAAAAAAAXg/ewTTTrtUTog/s400/04+Capture+console.writeline.JPG" border="0" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-8643775017341217966?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/8643775017341217966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=8643775017341217966' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/8643775017341217966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/8643775017341217966'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/07/how-to-capture-output-from.html' title='How to capture the output from Console.WriteLine'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_N2VfwXjUyUU/SHx6Use9dbI/AAAAAAAAAXI/I5wgfdua434/s72-c/01+create+windows+project.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-1449578627429179144</id><published>2008-06-30T21:20:00.042+08:00</published><updated>2008-06-30T22:53:46.072+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP Embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtual PC'/><title type='text'>Getting started with Installation of Windows XP Embedded (2)</title><content type='html'>From the last post, we now proceed to build the XPe image. &lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:130%;color:#3333ff;"&gt;Part (C) Building Windows XP Embedded Image:&lt;/span&gt;&lt;br /&gt;1) (Actually you need it since Part (A)) Get the CD installer from: &lt;a href="http://www.microsoft.com/windows/embedded/downloads/default.mspx"&gt;http://www.microsoft.com/windows/embedded/downloads/default.mspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) You might need to register to get the product key at MS: &lt;a href="http://www.microsoft.com/windows/embedded/eval/getregistration.mspx"&gt;http://www.microsoft.com/windows/embedded/eval/getregistration.mspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3) Insert the Dics 1. Browse to "Tools Setup" in left pane. Click to install.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5217682232629382274" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGjuWJq9zII/AAAAAAAAAWQ/KwnIswqU_qw/s400/01+Tools+Setup.JPG" border="0" /&gt; &lt;div&gt;4) You might need to insert product key, mentioned at step (4).&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217682377497582754" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGjuelWPHKI/AAAAAAAAAWY/9Wp9lho33gs/s400/03+Product+Keys.JPG" border="0" /&gt; &lt;div&gt;5) Browse to "Database Engine Setup" and click to install. This will install MSDE.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217682508433981074" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGjumNH5_pI/AAAAAAAAAWg/pOk6if5JQBQ/s400/06+DB+Engine+Setup.JPG" border="0" /&gt; &lt;/div&gt;&lt;div&gt;6) Browse to "Database Setup" this time. Click to install.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217682758318567842" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGju0wBCMaI/AAAAAAAAAWo/yzD3i-KIu3w/s400/07+DB+setup.JPG" border="0" /&gt; 7) If you did not follow step (5) &amp;amp; (6), you might get this error message.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217683257120123426" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SGjvRyMl6iI/AAAAAAAAAXA/Mpb9aj0Hd6E/s400/06+Component+database.JPG" border="0" /&gt; &lt;div&gt;8) Once the installation done, launch the Microsoft Component Designer.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217682884218048098" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SGju8FBzzmI/AAAAAAAAAWw/KSHlg5l7rvg/s400/11+Component+Designer.JPG" border="0" /&gt; &lt;div&gt;9) Import the hardware information xml file we created on Part (B).&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5217683088302569234" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGjvH9TWdxI/AAAAAAAAAW4/4TrWv5rhNNs/s400/12+Importing+Files.JPG" border="0" /&gt; &lt;div&gt;10) Go to "Select Prototype Component", expand the Software/Test &amp;amp; Development node and select the Selector Prototype component. From the File menu, choose Save to save your component. A file with extension &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;SLD&lt;/span&gt; is created with your component definition&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5217668823475862306" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SGjiJorouyI/AAAAAAAAAUI/zNqtqrtAtM4/s400/14+Select+Prototype+Component.JPG" border="0" /&gt; &lt;div&gt;11) From the Tools menu, choose Component Database Manager to open this tool.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5217669333841504626" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SGjinV8SaXI/AAAAAAAAAUQ/xRAeMpy7mDA/s400/15+MS+Component+DB+Manager.JPG" border="0" /&gt; &lt;div&gt;12) Select Import and choose the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;SLD&lt;/span&gt; file that you just create. Make sure it imports successfully.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217670751150560242" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGjj511GU_I/AAAAAAAAAUo/vjTF9eAZQ_Q/s400/17+Import+succeeded.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;13) Now we launch the Microsoft Target Designer. Create new configuration. &lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217670456034534850" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SGjjoqb9JcI/AAAAAAAAAUg/CYvpHsF_YfU/s400/18+New+Configuration.JPG" border="0" /&gt; &lt;div&gt;14) From the list of component, right-click on the component we newly create and select "Add".&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5217672007094591298" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SGjlC8lfX0I/AAAAAAAAAUw/-GRubMerq9c/s400/19+Add+component+created.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;15) Add extra component, We will use the Kiosk/Gaming Console macro component, a design template that can be found under Design Templates.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217672398177011426" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGjlZtezhuI/AAAAAAAAAU4/EN0FB-5QYsI/s400/20+extra+Kiosk+Gaming+component.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;16) Add the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Runtime&lt;/span&gt; Quick Start Helper Component that will speed up the process.. &lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217673426997859106" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGjmVmIz0yI/AAAAAAAAAVI/Obmo5fDUVTg/s400/21+Runtime+Quick+Start+Helper.JPG" border="0" /&gt; &lt;div&gt;17) To build our image, press F5 to check dependencies. All necessary underlying components are added to the image. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5217673031414917986" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGjl-kefK2I/AAAAAAAAAVA/pCcxNMKFzz4/s400/23+Dependency+Check+No+error.JPG" border="0" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;18) Expand the User Interface Core component and select settings. The settings appear in the details pane. Select to Show Run on Start Menu, Show All Programs List on Start Menu, and any other settings you want to apply. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217674119020983106" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGjm94H-s0I/AAAAAAAAAVQ/vNXlfVZlBUk/s400/24+Select+User+interface+Core+component.jpg" border="0" /&gt; &lt;div&gt;19) We can now build the image. Hit F7. You might be asked for dependencies check. &lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217674366100868946" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SGjnMQkaj1I/AAAAAAAAAVY/k9QdkGkUqzc/s400/25+Build+target.JPG" border="0" /&gt; &lt;div&gt;20) Once the image building success, we got the file we want. &lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217675996351403778" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SGjorJublwI/AAAAAAAAAVg/AZXwedfSm5o/s400/26+Image+built.jpg" border="0" /&gt; &lt;div&gt;21) We need to copy the image file to the root drive of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;VPC&lt;/span&gt; we created and formatted at Part (A). You can download it from &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&amp;amp;DisplayLang=en"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;MSDN&lt;/span&gt;&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5217676903335198674" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SGjpf8gN_9I/AAAAAAAAAVo/_h7aCgFG-rU/s400/27+start+robocopy.jpg" border="0" /&gt;&lt;/div&gt;&lt;div&gt;22) We can exit the command prompt &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;in VPC&lt;/span&gt; by typing EXIT to reboot. Detach the CD installer. Here we got Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;XP&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Embeded&lt;/span&gt;.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217677699617967426" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGjqOS40zUI/AAAAAAAAAVw/gbtSve1P_Ts/s400/29+reboot.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;23) The first boot will go through the First Boot Agent (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;FBA&lt;/span&gt;) process, which builds the machine registry, enumerates the device drivers, registers all components, and so on..&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217677853571720546" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGjqXQaQpWI/AAAAAAAAAV4/cNlVAUrNYrE/s400/30+first+Boot+agent.jpg" border="0" /&gt; &lt;div&gt;24) Reboot done and we got our desktop.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5217678665481019682" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SGjrGhAhYSI/AAAAAAAAAWA/x9BDzlHOFGk/s400/31+desktop.jpg" border="0" /&gt;&lt;/div&gt;25) We also can browse to root folder. Done.&lt;Br/&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5217678987768600210" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SGjrZRn3lpI/AAAAAAAAAWI/OlYParerXt8/s400/32+root+directory.jpg" border="0" /&gt; &lt;div&gt;26) Whew! what a lengthy installation. Luckily, MS have simplify it. &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-1449578627429179144?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/1449578627429179144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=1449578627429179144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/1449578627429179144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/1449578627429179144'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/06/getting-started-with-installation-of_30.html' title='Getting started with Installation of Windows XP Embedded (2)'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_N2VfwXjUyUU/SGjuWJq9zII/AAAAAAAAAWQ/KwnIswqU_qw/s72-c/01+Tools+Setup.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-5886914342375770869</id><published>2008-06-29T21:10:00.031+08:00</published><updated>2008-06-30T08:15:43.847+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP Embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='Virtual PC'/><title type='text'>Getting started with Installation of Windows XP Embedded</title><content type='html'>Recently I am busy with &lt;a href="http://msdn.microsoft.com/en-us/library/ms345146.aspx"&gt;table partitioning&lt;/a&gt; and &lt;a href="http://www.jboss.com/"&gt;JBoss&lt;/a&gt;/&lt;a href="http://www.hibernate.org/"&gt;Hibernate&lt;/a&gt; projects, thus I could not post any new post. While the project approaching the end of completion, I found there's an article on Windows XP Embedded (XPe) installation setup: &lt;a href="http://msdn.microsoft.com/en-us/library/aa460095.aspx"&gt;How to Demonstrate Windows XP Embedded using Virtual PC&lt;/a&gt; . Thus I go to my CD rack and find back my installation CD I get last time (1 year ago), from a seminar organized by local MS.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;From a beginner perspective, I found this tutorial is quite useful, but could be better. Thus I came out with this setup guide to patch the missing part of the link above. Without more words, let get started:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#3333ff;"&gt;Part (A) VPC setup&lt;/span&gt; &lt;/div&gt;&lt;div&gt;(This part I won't elaborate more, here are steps exerpt from link above):&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;1) To create a new Virtual PC (VPC) machine, click the New button in the Virtual PC console. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;2) A New Virtual Machine Wizard opens (Figure 2). This wizard will guide you through the steps to configure your virtual machine.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;3) Because we are creating a new operating system from scratch, choose the Create a virtual machine button.&lt;br /&gt;4) In the Name and location field, enter the path and file name for your project. The file will be saved with the .vmc extension. &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;5) In the Operating System field, choose Windows XP as the operating system for the VPC machine. Windows XP Embedded and Windows XP Professional use the same binary files.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;6) Select the RAM amount for the virtual machine. The default amount (128 MB) is sufficient; however, you can adjust the amount.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;7) Choose the A new virtual hard disk button to create a new virtual hard disk that will store the operating system image.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;8) In the Name and location field, type the name and path for the file that will contain your Virtual PC machine's hard disk. This file will be approximately 300 MB in size.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;9) (From this part onwards is for partitioning the disk) Type the following command from a command prompt: &lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;DISKPART &lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;10) Type the following commands to create the partition: &lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;SELECT DISK 0&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;CLEAN&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;CREATE PARTITION PRIMARY&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;11) Type the following command to verify the partition: &lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#3333ff;"&gt;&lt;em&gt;&lt;strong&gt;LIST PARTITION&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;12) Type the following commands to verify that the partition is active: &lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;SELECT PARTITION 1&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;ACTIVE&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;13) Type &lt;em&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;EXIT&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt; to quit &lt;em&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;DISKPART&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;. &lt;/div&gt;&lt;div&gt;14) Type &lt;strong&gt;&lt;em&gt;&lt;span style="color:#3333ff;"&gt;EXIT&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt; again to reboot Windows PE.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#3333ff;"&gt;Part (B) Capturing the Hardware Information:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;1) From VPC console, start the vpc setup from part (A). Insert Disc 1 into CD-Rom and capture it through VPC menu: CD&gt;Use physical drive &lt;your&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;2) Once it captures the installer, the installation starts.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217310931365822306" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SGecpkrSf2I/AAAAAAAAARA/HM9wvoyJhTE/s400/01+Starting+XPe.jpg" border="0" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;3) Read the EULA.txt for legal acknowledgement.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217311778892510386" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SGeda59ZdLI/AAAAAAAAARI/fBK_2tf-r5s/s400/02+EULA.jpg" border="0" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;4) Back to your host machine, open command prompt and type "IPCONFIG" to get your local IP address.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217313356689189394" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGee2vtcKhI/AAAAAAAAARY/LGNxKDmoaQA/s400/03+host+IP.jpg" border="0" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;5) Back to the VPC and try to ping from it, you might need to turn off the Firewall.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217313860043788482" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SGefUC2h0MI/AAAAAAAAARg/L_mw-6e3EqY/s400/04+ping+from+guest.jpg" border="0" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;6) Back to host machine again, and right-click the CD-Rom and select "Share".&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217316069098594258" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SGehUoOPH9I/AAAAAAAAARo/hQOFSq6UfYA/s400/05+Drive+share.jpg" border="0" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;7) Click "Advanced Sharing"&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217316510061477426" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SGehuS7-vjI/AAAAAAAAARw/IbYYxcMUvLE/s400/06+Advanced+Sharing.jpg" border="0" /&gt; 8) Check the "Share this folder". Click "OK" to exit.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217316644454884514" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SGeh2Hl3ZKI/AAAAAAAAAR4/7wHtFpDxDZo/s400/07+Share+this+folder.jpg" border="0" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;9) You can confirm again by typing the UNC address, to verify the CD installer can be accessed from network sharing.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217316920081308978" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SGeiGKYU3TI/AAAAAAAAASA/P-dHAiPBMRQ/s400/08+Network+share+folder.jpg" border="0" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;10) You also need a admin account with password. Go to "Control Panel"&gt;"User Accounts" to create password, if you did not set it previously.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217317624615990466" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGeivK-e9MI/AAAAAAAAASI/7KOo3cbdfvw/s400/09+create+password.jpg" border="0" /&gt; &lt;/span&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;11) Create a folder at host machine, let's say: C:\VPC\XPe\XPeImages (try to use a folder without space between it, you can reduce your trouble later), and right-click, select "Share":&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217318759005353906" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGejxM5-97I/AAAAAAAAASY/uyvvqRovDXI/s400/11+folder+shared.jpg" border="0" /&gt;&lt;br /&gt;11) Select the appropriate user.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217318614981571746" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SGejo0YCdKI/AAAAAAAAASQ/Ri-Tmw39lac/s400/10+Share+folder.jpg" border="0" /&gt;&lt;br /&gt;11) Now, use the "&lt;a href="http://technet2.microsoft.com/windowsserver/en/library/dd619380-bb33-4d3a-b0b5-29c6206000351033.mspx?mfr=true"&gt;net use&lt;/a&gt;" command for the subsequent command to access it. (From TechNet) The function of "net use" is : Connects a computer to or disconnects a computer from a shared resource, or displays information about computer connections. The command also controls persistent net connections. Used without parameters, net use retrieves a list of network connections.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217321017309964210" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGel0pvwp7I/AAAAAAAAASg/-0zKVUIE8hA/s400/12+NET+USE.jpg" border="0" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;12) "Shared Folders" cannot be used since Virtual Machine Additions have not installed yet.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217321923015847506" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SGempXw3rlI/AAAAAAAAASo/KP0lqxHGoXQ/s400/13+VM+Additions.jpg" border="0" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;12) Execute the "TAP command to generate the hardware component &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;information to the shared folder mentioned in step (11)&lt;/span&gt;. This file is an XML files with all the virtual hardware information for this &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;VPC&lt;/span&gt;. We are going to use this file in the part (C) for building Windows XPe image file.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217322575451508594" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SGenPWRpz3I/AAAAAAAAASw/07-2LCEpeAE/s400/14+PMQ.jpg" border="0" /&gt;13) You are done for this part (B). &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;Will continue part (C) to a new post ...&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-5886914342375770869?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/5886914342375770869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=5886914342375770869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5886914342375770869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5886914342375770869'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/06/getting-started-with-installation-of.html' title='Getting started with Installation of Windows XP Embedded'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_N2VfwXjUyUU/SGecpkrSf2I/AAAAAAAAARA/HM9wvoyJhTE/s72-c/01+Starting+XPe.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-2473806596604540611</id><published>2008-05-25T21:38:00.016+08:00</published><updated>2008-05-25T22:36:37.055+08:00</updated><title type='text'>Cannot resolve the collation conflict on temporary table?(2) Problem solved.</title><content type='html'>&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;(Please backup all your database if you are going to try this)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;From my &lt;a href="http://start-coding.blogspot.com/2008/05/cannot-resolve-collation-conflict-on.html"&gt;last post&lt;/a&gt;, I proceed to install my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;MSSQL&lt;/span&gt; 2005 again, I found a strange behaviour this time. The length of the instance name is only limited to certain amount of value.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5204320141055591602" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SDl1mDkHhLI/AAAAAAAAAQ4/hxtymrVwI3g/s400/SQL2005_InstanceName_2.JPG" border="0" /&gt; From &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;BOL&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;MSDN&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms143531.aspx"&gt;Instance names are limited to 16 characters.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I feel something is wrong last time, during the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;command&lt;/span&gt; I issued:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;start /wait setup.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;exe&lt;/span&gt; /&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;qb&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;INSTANCENAME&lt;/span&gt;={my SS2005 instance name} REINSTALL=&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;SQL&lt;/span&gt;_Engine &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;REBUILDDATABASE&lt;/span&gt;=1 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;SAPWD&lt;/span&gt;={my SS2005 instance &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;sa&lt;/span&gt; password} &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;SQLCOLLATION&lt;/span&gt;=&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;SQL&lt;/span&gt;_Latin1_General_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;CP&lt;/span&gt;1_CI_AI&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I mistreated the server name as SS2005 instance name. Actually the server name is:&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;"server name" = "PC name"\"instance name".&lt;/span&gt;&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;So this time, I re-used the same setting to install the SS2005. &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;For&lt;/span&gt; the first time, I copied out the content from the image I clone from installer, using &lt;a href="http://www.poweriso.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;PowerISO&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I issued the command, with the correct &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_16"&gt;instance&lt;/span&gt; name, and I get this. Wow, this is not available last time. It proved I was wrong last time, on the term of "Instance Name".&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5204317495355737170" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SDlzMDkHhFI/AAAAAAAAAQI/pIzJuirTl7I/s400/2.bmp" border="0" /&gt; But after this I get this error message:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;"An installation package for the product Microsoft &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;SQL&lt;/span&gt; Server 2005 cannot be found. Try the installation again using a valid copy of the installation package '&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;SqlRun&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;SLQ&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;msi&lt;/span&gt;".&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5204318122420962402" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SDlzwjkHhGI/AAAAAAAAAQQ/HQHrfihpL6A/s400/4.bmp" border="0" /&gt; I think the image is corrupted, during I mounted it virtually and copying it. Thus I inserted the original CD. And I issued the same command. &lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5204318470313313394" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SDl0EzkHhHI/AAAAAAAAAQY/sqNL6JSfomI/s400/5.bmp" border="0" /&gt;&lt;br /&gt;Yes, it ran successfully and I checked my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;SQL&lt;/span&gt; Instance collation. Although it's AI(Accent &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_22"&gt;Insensitive&lt;/span&gt;), but I can do the same thing again to change to AS(Accent Sensitive). &lt;/p&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5204319209047688322" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SDl0vzkHhII/AAAAAAAAAQg/l56IiS4H1ec/s400/6.bmp" border="0" /&gt;And I checked all the database. All the database is dropped.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5204319604184679570" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SDl1GzkHhJI/AAAAAAAAAQo/W6IFIZQXpwE/s400/8.bmp" border="0" /&gt;So I need to attached them back. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5204320037976376482" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SDl1gDkHhKI/AAAAAAAAAQw/H5H-nZvI_sE/s400/attach_db_wizard.bmp" border="0" /&gt;&lt;br /&gt;&lt;div&gt;But at least I have learnt something today.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-2473806596604540611?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/2473806596604540611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=2473806596604540611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2473806596604540611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2473806596604540611'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/05/cannot-resolve-collation-conflict-on_25.html' title='Cannot resolve the collation conflict on temporary table?(2) Problem solved.'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_N2VfwXjUyUU/SDl1mDkHhLI/AAAAAAAAAQ4/hxtymrVwI3g/s72-c/SQL2005_InstanceName_2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-6252550456524837309</id><published>2008-05-20T21:09:00.032+08:00</published><updated>2008-05-21T07:46:19.147+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><title type='text'>Cannot resolve the collation conflict on temporary table?</title><content type='html'>"Cannot resolve the collation conflict between "Collation_A" and "Collation_B" in the equal to operation."&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;When I am using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;MSSQL&lt;/span&gt;&lt;/span&gt; 2000, it's normal when I hit this kind of collation problem on physically-existed table. Either the source database is conflict with new database, due to an upgrade from older version of customized database, or from other production site from different country.&lt;br /&gt;&lt;br /&gt;But recently, I hit this issue at Temporary Tables (because I changed a new job and performed a new installation on my company laptop). &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5202466249716564706" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SDLffYJQguI/AAAAAAAAAP4/Ovk9wMnxPJQ/s400/problem.bmp" border="0" /&gt;&lt;br /&gt;&lt;div&gt;Let's say you have a following &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;scripts&lt;/span&gt; written at stored procedure(SP):&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;-- Use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;AdventureWorks&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;create table #&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;tempTable&lt;/span&gt;&lt;/span&gt; (ID int IDENTITY(1,1) NOT NULL ,&lt;br /&gt;column1 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;varchar&lt;/span&gt;&lt;/span&gt;(200) NOT NULL)&lt;br /&gt;INSERT INTO #&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;tempTable&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Values('test')&lt;br /&gt;create table &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;tempTable&lt;/span&gt;&lt;/span&gt; (ID int IDENTITY(1,1) NOT NULL ,&lt;br /&gt;column2 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;varchar&lt;/span&gt;&lt;/span&gt;(200) NOT NULL)&lt;br /&gt;INSERT INTO &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;tempTable&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Values('test')&lt;br /&gt;Select * from #&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;tempTable&lt;/span&gt;&lt;/span&gt; t&lt;br /&gt;inner join &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;tempTable&lt;/span&gt;&lt;/span&gt; p&lt;br /&gt;on t.ID = p.ID&lt;br /&gt;where t.column1 = p.column2&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;--drop table #&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;tempTable&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;--drop table &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;tempTable&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;and when you execute it, you will get the following error message:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;&lt;span class="blsp-spelling-error"&gt;&lt;span class="blsp-spelling-error"&gt;Msg&lt;/span&gt;&lt;/span&gt; 468, Level 16, State 9, Line 10&lt;br /&gt;Cannot resolve the collation conflict between "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;SQL&lt;/span&gt;&lt;/span&gt;_Latin1_General_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;CP&lt;/span&gt;&lt;/span&gt;1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;At the first look, I was confused what went wrong. ( Of course you can suggest assign the associate collation will do, but what if there's tons of SP you need to modify? And even worst, they are decrypted!)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Of course the best practice would be something like this:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;CREATE TABLE #TestTempTab&lt;br /&gt;(PrimaryKey int PRIMARY KEY,&lt;br /&gt;Col1 nchar COLLATE database_default&lt;br /&gt;)&lt;/span&gt;&lt;br /&gt;as in &lt;a href="http://msdn.microsoft.com/en-us/library/ms190920.aspx"&gt;Setting and Changing the Column Collation&lt;/a&gt;, but I doubt most people do that.&lt;a href="http://msdn.microsoft.com/en-us/library/ms190920.aspx"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So first I traced down from the definition of the Temporary Tables. From &lt;a href="http://msdn.microsoft.com/en-us/library/aa258255.aspx"&gt;MSDN&lt;/a&gt;: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;You can create local and global temporary tables. Local temporary tables are visible only in the current session; global temporary tables are visible to all sessions. Prefix local temporary table names with single number sign (#table_name), and prefix global temporary table names with a double number sign (##table_name).&lt;br /&gt;... &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;The full name of a temporary table as stored in the sysobjects table in tempdb consists of table name specified in the CREATE TABLE statement and the system-generated numeric suffix.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I queried from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;tempdb&lt;/span&gt;&lt;/span&gt; at System Databases with this query: (Note: you must use "Like" statement for the name)&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;use &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;tempdb&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Select collation, * from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;sysobjects&lt;/span&gt;&lt;/span&gt; so&lt;br /&gt;inner join &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;syscolumns&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;sc&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;on so.id = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;sc&lt;/span&gt;&lt;/span&gt;.id&lt;br /&gt;where so.name like '#&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;tempTable&lt;/span&gt;&lt;/span&gt;%'&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5202452638965203474" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SDLTHIJQghI/AAAAAAAAAOQ/1-6OKJcYawI/s400/query.bmp" border="0" /&gt;&lt;br /&gt;&lt;div&gt;Why? Why it's collated in "Latin1_General_CI_AS"? Then I checked the database collation for this "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;tempdb"&lt;/span&gt;&lt;/span&gt; database and server instance:&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5202456113593745986" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SDLWRYJQgkI/AAAAAAAAAOo/sg2PAR5EbHU/s400/query_serverInstance.bmp" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5202456998357008978" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SDLXE4JQglI/AAAAAAAAAOw/OvasbAJkYMA/s400/query_tempdb.bmp" border="0" /&gt;Why all in "Latin1_General_CI_AS" collation? Then I went through the screenshot I took when I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;installed&lt;/span&gt; the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;MSSQL&lt;/span&gt;&lt;/span&gt; 2005 Developer Edition long long time ago (I have a habit to store the installation settings for future purpose, as in this case), I found this:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5202467744365183730" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SDLg2YJQgvI/AAAAAAAAAQA/HBSBRKHDTBc/s400/SQL2005_Collation.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;I switched the collation to Collation designator, which default to "Latin1_General_CI_AS" collation, as in my OS culture! I just &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_31"&gt;realized&lt;/span&gt; I misused the in-&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_32"&gt;appropriated&lt;/span&gt; collation with the current database (in this case "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;AdventureWorks&lt;/span&gt;&lt;/span&gt;", which uses "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;SQL&lt;/span&gt;&lt;/span&gt;_Latin1_General_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;CP&lt;/span&gt;&lt;/span&gt;1_CI_AS" collation.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5202459150135624290" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SDLZCIJQgmI/AAAAAAAAAO4/6Kq06EClNco/s400/query_AdventureWorks.bmp" border="0" /&gt;&lt;br /&gt;&lt;div&gt;So now, what is the solution?&lt;/div&gt;&lt;div&gt;I thought the faster way should be alter the "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;tempdb&lt;/span&gt;&lt;/span&gt;" database collation like this :&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5202460507345289858" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SDLaRIJQgoI/AAAAAAAAAPI/UpiDtu0q7c8/s400/new.bmp" border="0" /&gt;or from script:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;USE [master]&lt;br /&gt;GO&lt;br /&gt;ALTER DATABASE [&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;tempdb&lt;/span&gt;&lt;/span&gt;] COLLATE &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;SQL&lt;/span&gt;&lt;/span&gt;_Latin1_General_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;CP&lt;/span&gt;&lt;/span&gt;1_CI_AS&lt;br /&gt;GO&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;But I get this error message: &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5202459648351830642" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SDLZfIJQgnI/AAAAAAAAAPA/mhyW1rqZ4jA/s400/new_error.bmp" border="0" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I searched the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;MSDN&lt;/span&gt;&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;BOL&lt;/span&gt;&lt;/span&gt;, and I found this: &lt;a href="http://msdn.microsoft.com/en-us/library/ms179254.aspx"&gt;Setting and Changing the Server Collation&lt;/a&gt;&lt;br /&gt;&lt;div&gt;So I inserted my installer in CD-ROM and tried to use this command: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5202461125820580498" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SDLa1IJQgpI/AAAAAAAAAPQ/oYD62u-z2OM/s400/cmd_03.bmp" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;start /wait setup.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;exe&lt;/span&gt;&lt;/span&gt; /&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;qb&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;INSTANCENAME&lt;/span&gt;&lt;/span&gt;={my SS2005 instance name} REINSTALL=&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;SQL&lt;/span&gt;&lt;/span&gt;_Engine &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;REBUILDDATABASE&lt;/span&gt;&lt;/span&gt;=1 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;SAPWD&lt;/span&gt;&lt;/span&gt;={my SS2005 instance &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;sa&lt;/span&gt;&lt;/span&gt; password} &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;SQLCOLLATION&lt;/span&gt;&lt;/span&gt;=&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;SQL&lt;/span&gt;&lt;/span&gt;_Latin1_General_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;CP&lt;/span&gt;&lt;/span&gt;1_CI_AI&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;but the wizard came and went but nothing happened:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5202461993403974306" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SDLbnoJQgqI/AAAAAAAAAPY/DFYw_DF6Yt8/s400/cmd_04.bmp" border="0" /&gt; &lt;/div&gt;&lt;div&gt;So I tried to look at the summary.txt produced,  as suggested in &lt;a href="http://msdn.microsoft.com/en-us/library/ms144287.aspx"&gt;SQL Server 2005 Setup Log File&lt;/a&gt;. Nothing too!&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5202464853852193490" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SDLeOIJQgtI/AAAAAAAAAPw/u7EFDUkMde8/s400/summary.bmp" border="0" /&gt;Then "SQLSetup0011_(pcName)_Core.log":&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;..&lt;br /&gt;&lt;/span&gt;&lt;a href="http://search.yahoo.com/search?p=%22Error%3A+Action+%22LaunchPatchedBootstrapAction%22+threw+an+exception+during+execution%22&amp;amp;fr=yie7c"&gt;&lt;span style="font-size:85%;"&gt;Error: Action "LaunchPatchedBootstrapAction" threw an exception during execution. Error information reported during run:"C:\Program Files\Microsoft SQL Server\90\Setup Bootstrap\setup.exe" finished and returned: 0Aborting queue processing as nested installer has completed.&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;I also try to repair it. But there's no such options. &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5202462925411877554" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SDLcd4JQgrI/AAAAAAAAAPg/82OSh5M-5K4/s400/chg_05.bmp" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5202464106527883970" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SDLdioJQgsI/AAAAAAAAAPo/MCtQPZ91gyU/s400/chg_06.bmp" border="0" /&gt;&lt;br /&gt;&lt;div&gt;Eventually I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;uninstalled&lt;/span&gt;&lt;/span&gt; it. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;Haha&lt;/span&gt;&lt;/span&gt;. &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-6252550456524837309?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/6252550456524837309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=6252550456524837309' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/6252550456524837309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/6252550456524837309'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/05/cannot-resolve-collation-conflict-on.html' title='Cannot resolve the collation conflict on temporary table?'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_N2VfwXjUyUU/SDLffYJQguI/AAAAAAAAAP4/Ovk9wMnxPJQ/s72-c/problem.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-8892895385176432366</id><published>2008-05-16T17:41:00.003+08:00</published><updated>2008-05-16T17:51:10.999+08:00</updated><title type='text'>Confuse with pointer? Learn it in Zen-way!</title><content type='html'>&lt;p&gt;Are you confused with pointer in C/C++? Now, you can learn it in &lt;a href="http://www.chips.navy.mil/archives/98_jul/c_art17.htm"&gt;Zen-way&lt;/a&gt;!&lt;/p&gt;&lt;p&gt;In this article, you can know the actual meaning of pointer, through 5 pillars:&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;1) The First Pillar: What is an Address?&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;2) The Second Pillar: What is a Variable Name?&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;3) The Third Pillar: Finding the Address of a Variable Name&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;4) The Fourth Pillar: Declaring Pointer Variables&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;5) The Fifth Pillar: Declaring References&lt;/em&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Amitabha"&gt;Amitabha&lt;/a&gt;! Does it enlighten you??&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-8892895385176432366?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/8892895385176432366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=8892895385176432366' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/8892895385176432366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/8892895385176432366'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/05/confuse-on-pointer-learn-it-in-zen-way.html' title='Confuse with pointer? Learn it in Zen-way!'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-7864585694331194210</id><published>2008-05-08T20:44:00.007+08:00</published><updated>2008-05-08T21:05:36.048+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows OS'/><title type='text'>Windows 7 Milestone 1 Release 2 ???</title><content type='html'>After posting a video on the latest OS windows 7, no longer people called it an hoax. Now it is one of the hottest place to see the latest deveopment of the windows 7: &lt;a href="http://www.thinknext.net/archives/2199"&gt;刀枪Blue&lt;/a&gt; &lt;div&gt;&lt;br /&gt;&lt;div&gt;And he also claimed this is 2nd release of Windows 7 Milestone 1. (this image is an external link.)&lt;/div&gt;&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.thinknext.net/content/2008/04/systraywarningclick1.png" border="0" /&gt;&lt;br /&gt;&lt;div&gt;If you are an fan on the windows OS latest developement, sure you must save this site in your favourite folder! &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Just curious if he's a beta tester, he should not allow to expose any of the content, right?&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-7864585694331194210?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/7864585694331194210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=7864585694331194210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/7864585694331194210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/7864585694331194210'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/05/windows-7-milestone-1-release-2.html' title='Windows 7 Milestone 1 Release 2 ???'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-5034119129307073219</id><published>2008-05-08T07:38:00.009+08:00</published><updated>2008-05-08T21:10:32.228+08:00</updated><title type='text'>Think you're smart? Then crack it!</title><content type='html'>You think you are smart in programming? In job place, everyone seems seek you for the answer whenever there's a problem? Then go and try : &lt;a href="http://msdn.microsoft.com/en-ca/crackthecode/default.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;crackthecode&lt;/span&gt;&lt;/a&gt;, by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;MSDN&lt;/span&gt; Canada.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5197786668790891858" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SCI_b6uKxVI/AAAAAAAAAN4/Lgq4rxGWQ3Y/s400/crackthecode.bmp" border="0" /&gt;&lt;/p&gt;&lt;p&gt;And the prize is (who knows, maybe Microsoft Canada is hiring potential developer?):&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;em&gt;And now for the bounty: Two $500 Future Shop gift cards can be won on April 29, 2008 and May 15, 2008. The $4000 Grand Prize gift card draw will be on June 13, 2008. The winners will receive a call, so keep an eye on your phone.&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;While I was trying yesterday, I only managed to answer first and third questions correctly.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Here are some hints:&lt;br /&gt;Question 1: The answer got something to do with what you see when you entered the page! And I solved it.&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5197787652338402658" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SCJAVKuKxWI/AAAAAAAAAOA/BcpxwoL3WtE/s400/test2_key_small.bmp" border="0" /&gt;&lt;br /&gt;Question 2: &lt;span style="color:#ff0000;"&gt;(I do not know. Most of my time was doing windows programming! Maybe you can download &lt;/span&gt;&lt;a href="https://www.microsoft.com/downloads/details.aspx?familyid=2f465be0-94fd-4569-b3c4-dffdf19ccd99&amp;amp;displaylang=en"&gt;&lt;span style="color:#ff0000;"&gt;Microsoft Script Debugger&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#ff0000;"&gt; and see, or even Visual Studio 2005/2008???)&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Question 3 : This is a mathematics question, all those C-like languages programmer should be able to answer it easily. What's a waste to put this as question 3. :( And I lost my key because of slow &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;Internet&lt;/span&gt; connection, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;WTF&lt;/span&gt;!&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5197788442612385138" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SCJBDKuKxXI/AAAAAAAAAOI/P9IcpSJxMbQ/s400/test3_pass.bmp" border="0" /&gt;&lt;br /&gt;Question 4 :&lt;span style="color:#ff0000;"&gt; (I do not have the key!) &lt;/span&gt;&lt;/p&gt;Maybe I need to apply another &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;hotmail&lt;/span&gt; account! And it's your turn now.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Update:&lt;br /&gt;After going thru' &lt;/span&gt;&lt;a href="http://msdn.microsoft.com/en-ca/crackthecode/cc440739.aspx"&gt;&lt;span style="font-size:78%;"&gt;the rules and regulations&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;1) THE CONTEST AND THE CONTEST PERIOD : The Microsoft "Crack the Code" contest commences at 12:01 a.m. Eastern Standard Time on April 1, 2008 and concludes at 11:59 p.m. Eastern Standard Time on May 31, 2008. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;2) ELIGIBITY : The Contest is &lt;span style="color:#ff0000;"&gt;&lt;strong&gt;open to residents of Canada&lt;/strong&gt;&lt;/span&gt;, excluding Quebec, who have reached the age of majority in his or her province of residence, but excluding employees, directors and officers of, Vortxt Interactive Inc. and any affiliate (as defined in the Canada Business Corporations Act), employees, directors and officers of Microsoft Canada Co. (the "Sponsor"), employees, directors and officers of their respective advertising and promotional agencies, as well as family members of any of the foregoing.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-5034119129307073219?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/5034119129307073219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=5034119129307073219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5034119129307073219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5034119129307073219'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/05/think-youre-smart-then-crack-it.html' title='Think you&apos;re smart? Then crack it!'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_N2VfwXjUyUU/SCI_b6uKxVI/AAAAAAAAAN4/Lgq4rxGWQ3Y/s72-c/crackthecode.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-4389423003633939351</id><published>2008-05-04T15:23:00.006+08:00</published><updated>2008-05-04T16:14:51.740+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS-SQL'/><title type='text'>It's SQL injection, Not IIS vulnerability</title><content type='html'>&lt;a href="http://search.yahoo.com/search?p=Half+A+Million+Microsoft-powered+Sites+Hit+With+SQL+Injection&amp;amp;ei=utf-8&amp;amp;fr=b2ie7"&gt;Half A Million Microsoft-powered Sites Hit With SQL Injection. &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Few days ago, people thought it was an IIS vulnerability but eventually it is a SQL injection. And &lt;a class="headermaintitle" id="ctl00___ctl00___ctl00_ctl00_bcr_bth___BlogTitle" href="http://sqlblog.com/blogs/aaron_bertrand/archive/2008/04/26/call-a-spade-a-spade.aspx"&gt;Aaron Bertrand&lt;/a&gt; have few pieces of advices for web developers:&lt;br /&gt;1) Do not expose your SQL Server to the Internet directly.&lt;br /&gt;&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://technet.microsoft.com/en-us/library/Bb877979.cgn20410(en-us,TechNet.10).gif" border="0" /&gt;&lt;span style="font-size:85%;"&gt;From &lt;a href="http://technet.microsoft.com/en-us/library/bb877979.aspx"&gt;TechNet&lt;/a&gt;: A common step in troubleshooting connectivity problems is to use the Ping tool to ping the address of the computer to which you are trying to connect. When you ping, you send an ICMP Echo message and get an ICMP Echo Reply message in response. By default, Windows Firewall does not allow incoming ICMP Echo messages and therefore the computer cannot send an ICMP Echo Reply in response. To configure Windows Firewall to allow the incoming ICMP Echo message, you must enable the Allow incoming echo request setting.&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;span style="font-size:85%;"&gt;Beware if you turn this on!&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;2) Make your passwords strong.&lt;br /&gt;3) Follow the principle of least privilege Always use stored procedures, or at least parameterized statements .&lt;br /&gt;4) Use TRY/CATCH to return more generic error messages.&lt;br /&gt;5) Do not store passwords in your Users table.&lt;br /&gt;&lt;br /&gt;And some tips from &lt;a href="http://www.owasp.org/index.php/Testing_for_SQL_Server"&gt;Open Web Application Security Project (OWASP), &lt;/a&gt;there're few ways for testing the SQL Server:&lt;br /&gt;1: Testing for SQL Injection in a GET request.&lt;br /&gt;2: Testing for SQL Injection in a GET request (2).&lt;br /&gt;3: Testing in a POST request&lt;br /&gt;4: Yet another (useful) GET example&lt;br /&gt;5: custom xp_cmdshell &lt;span style="color:#ff0000;"&gt;(Especially those who are still using MSSQL 2000!)&lt;/span&gt;&lt;br /&gt;6: Referer / User-Agent&lt;br /&gt;7: SQL Server as a port scanner&lt;br /&gt;8: Upload of executables&lt;br /&gt;9: bruteforce of sysadmin password.&lt;br /&gt;&lt;br /&gt;Have you tried it on your server?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-4389423003633939351?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/4389423003633939351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=4389423003633939351' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4389423003633939351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4389423003633939351'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/05/its-sql-injection-not-iis-vulnerability.html' title='It&apos;s SQL injection, Not IIS vulnerability'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-7730706340626835401</id><published>2008-05-02T21:54:00.007+08:00</published><updated>2008-05-02T22:12:59.404+08:00</updated><title type='text'>How To Get Hired</title><content type='html'>As a software developer for three years, I have changed several jobs. If you were same as me, &lt;a href="http://www.kegel.com/academy/getting-hired.html"&gt;go thru' it before you go for inteview&lt;/a&gt;, to know how much chance you stand!&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;1. Employers look for people who are Smart and Get Things Done  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;2. Employers look for people who Have Already Done Things . &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;3. You can't get a job doing something you haven't done before.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;4. Employers &lt;/span&gt;&lt;a href="http://google.com/"&gt;&lt;span style="font-size:85%;"&gt;Google&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt; your name to see what you've said and done .&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-7730706340626835401?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/7730706340626835401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=7730706340626835401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/7730706340626835401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/7730706340626835401'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/05/how-to-get-hired.html' title='How To Get Hired'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-6252568131445887749</id><published>2008-04-30T21:35:00.007+08:00</published><updated>2008-04-30T22:21:04.770+08:00</updated><title type='text'>Get XP Service Pack 3</title><content type='html'>No more long wait. After Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;XP&lt;/span&gt; service pack 3 has reached &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;RTM&lt;/span&gt; at beginning of this month, now you can get it via &lt;a href="http://download.windowsupdate.com/msdownload/update/software/svpk/2008/04/windowsxp-kb936929-sp3-x86-enu_c81472f7eeea2eca421e116cd4c03e2300ebfde4.exe"&gt;direct download&lt;/a&gt; or WU. Though I am using Windows Vista for my machine, my company laptop and virtual environment are still using Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;XP&lt;/span&gt;. It's quite stable after service pack 2. And it's hard to change to the new environment when you already familiar with existing one. &lt;a href="http://www.microsoft.com/windows/lifecycle/default.mspx"&gt;For Direct &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;OEM&lt;/span&gt; and Retail License Availability, the support end date is June 30, 2008&lt;/a&gt;. Yes, 2 more months. Let's see will support of Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;XP&lt;/span&gt; be &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;extended&lt;/span&gt; by Microsoft.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-6252568131445887749?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/6252568131445887749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=6252568131445887749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/6252568131445887749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/6252568131445887749'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/04/get-xp-service-pack-3.html' title='Get XP Service Pack 3'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-2595409309833573494</id><published>2008-04-20T17:22:00.010+08:00</published><updated>2008-04-20T20:37:22.751+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='MS-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='ADO .Net'/><category scheme='http://www.blogger.com/atom/ns#' term='MS SQL Express 2005'/><title type='text'>First release of SQL Management Console</title><content type='html'>Finally, I decided to release the second .NET application I am developing: SQL Management Console, now. This version 0.1, which is still in beta phase, still has a lot of room for improvement. Use at your own risk.&lt;br /&gt;&lt;br /&gt;Here are some of the screenshots of it:&lt;br /&gt;1) Login screen&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5191266254468064930" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SAsVJ2gKpqI/AAAAAAAAANI/cVfzR5Ulb8g/s400/login.jpg" border="0" /&gt;&lt;br /&gt;2) Main GUI with MSSQL 2005 in action&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5191267049037014738" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SAsV4GgKptI/AAAAAAAAANg/tLt45tNDyE4/s400/SQLMgtConsole_MSSQL2005.jpg" border="0" /&gt; &lt;/p&gt;&lt;p&gt;3) Main GUI with MySQL 5.0 in action&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5191303697992951538" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SAs3NWgKpvI/AAAAAAAAANw/3__q6OTYGiE/s400/SQLMgtConsole_MySQL5.jpg" border="0" /&gt;&lt;/p&gt;&lt;p&gt;4) Object scripting&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5191266533640939186" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/SAsVaGgKprI/AAAAAAAAANQ/nyVmGrc5cv0/s400/scripting.jpg" border="0" /&gt;&lt;br /&gt;5) Dependency viewer&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5191266765569173186" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/SAsVnmgKpsI/AAAAAAAAANY/blumFhQYUFo/s400/dependency.jpg" border="0" /&gt; For this version, it will suport MSSQL 2000 &amp;amp; 2005, MySQL 5.0. I am planning to include PostgreSQL connector in the next version. The features include in this version are : &lt;ol&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;(IDE-wise) Open/Save/Drag-and-Drop file&lt;/span&gt; &lt;li&gt;&lt;span style="font-size:85%;"&gt;(IDE-wise) query pane and result pane &lt;/span&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;(MS SQL 2000 &amp;amp; 2005) Object browser for system objects (Scalar function, Stored procedure, System table, Table function, Trigger, User table, View) &lt;/span&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;(MS SQL 2000 &amp;amp; 2005) Object browser for security (Users, Roles, Schemas) &lt;/span&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;(MS SQL 2000 &amp;amp; 2005) Object browser for constraints, columns, parameters (Columns, Keys, Constraints, Triggers, Indexes, Parameters) &lt;/span&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;(MS SQL 2000 &amp;amp; 2005) Dependencies viewer for objects (Scalar function, Stored procedure, System table, Table function, Trigger, User table, View) &lt;/span&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;(MS SQL 2000 &amp;amp; 2005) Object scripting for non-encrypted objects (Scalar function, Stored procedure, Table function, Trigger, View) &lt;/span&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;(MySQL 5.0) Object browser for system objects (Scalar function, Stored procedure, System table, Trigger, User table, View) &lt;/span&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;(MySQL 5.0) Object browser for security (Users, Privilege) &lt;/span&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;(MySQL 5.0) Object browser for constraints, columns (Columns, Keys, Triggers) &lt;/span&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;(MySQL 5.0) Object scripting for non-encrypted objects (Scalar function, Stored procedure, Trigger, View) &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Since parts of the source code is came from MSDN, thus I think it's good to release it under Microsoft Public license (Ms-PL) to prevent any infringement, though the chance are very little.&lt;/p&gt;&lt;p&gt;Since I am not an expert on database, feel free to give to any constructive comment and recommendation. I will try to improve it.&lt;/p&gt;&lt;p&gt;You can get the source code at &lt;a href="http://www.geocities.com/gan.gary1980/SQLMgtConsole/SQLMgtConsole_ver0100_src.zip"&gt;here&lt;/a&gt; and executable files at &lt;a href="http://www.geocities.com/gan.gary1980/SQLMgtConsole/SQLMgtConsole_ver0100_exe.zip"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-2595409309833573494?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/2595409309833573494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=2595409309833573494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2595409309833573494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2595409309833573494'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/04/first-release-of-sql-management-console.html' title='First release of SQL Management Console'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_N2VfwXjUyUU/SAsVJ2gKpqI/AAAAAAAAANI/cVfzR5Ulb8g/s72-c/login.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-8959239266200341404</id><published>2008-04-18T07:50:00.006+08:00</published><updated>2008-04-18T08:41:18.991+08:00</updated><title type='text'>Preview of another project I am developing - SQL Management Console</title><content type='html'>For the past two months, I am busy developing my second .net app. - SQL Management Console. It comes with a MSSQL-like object explorer/browser and a simple analyzer. All my time after working hours and weekends is devoted for this project. (The first one is &lt;a href="http://start-coding.blogspot.com/2007/09/my-first-net-app-c-analog-clock.html"&gt;widget-like analog clock&lt;/a&gt;; anyway first and second in context here means specially made with purpose).&lt;br /&gt;&lt;br /&gt;Actually I first come out the idea on last year, when I was involved in a business project interface with different kind of RDBMS databases, eg. MSSQL, &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt;, &lt;a href="http://www.firebirdsql.org/"&gt;FireBird&lt;/a&gt;, Oracle, OleDB, ODBC, .... Due to some personal reason, I was unable to continue it. With more exposure on i&lt;a href="http://msdn2.microsoft.com/en-us/library/87d83y5b.aspx"&gt;nterface&lt;/a&gt; design, suddenly I found it's interesting to start this project on my own. With the classes in namespace &lt;a href="http://msdn2.microsoft.com/en-us/library/system.data.common.aspx"&gt;System.Data.Common&lt;/a&gt;, the ADO .NET programming becomes easier. Now It support MSSQL and MySQL. &lt;a href="http://www.postgresql.org/"&gt;PostgreSQL&lt;/a&gt; is my next target.&lt;br /&gt;&lt;br /&gt;While developing it, I also found few famous tools available on the market, like &lt;a href="http://www.mylittleadmin.com/en/welcome.aspx"&gt;myLittleAdmin&lt;/a&gt;, &lt;a href="http://www.red-gate.com/"&gt;Red-gate software&lt;/a&gt;. I hope one day my SQL tool can on-par with them. By the way, myLittleAdmin costs US$299.00.&lt;br /&gt;&lt;br /&gt;Forget about the intro, let you all see some screenshot of it.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MSSQL 2005&lt;/li&gt;&lt;/ul&gt;&lt;img id="BLOGGER_PHOTO_ID_5190376353176486738" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SAfryx2sA1I/AAAAAAAAAMw/wXY7QhgcazE/s400/SQLMgtConsole.jpg" border="0" /&gt; &lt;ul&gt;&lt;li&gt;MSSQL 2000&lt;/li&gt;&lt;/ul&gt;&lt;img id="BLOGGER_PHOTO_ID_5190376507795309410" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/SAfr7x2sA2I/AAAAAAAAAM4/WlH5DPs1zZo/s400/SQLMgtConsole_MSSQL200.jpg" border="0" /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MySQL 5.0&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5190376636644328306" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/SAfsDR2sA3I/AAAAAAAAANA/lmdwoPft5bc/s400/SQLMgtConsole_MySQL.jpg" border="0" /&gt;&lt;br /&gt;The full-source version 0.1 should be ready to download within these two weeks. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-8959239266200341404?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/8959239266200341404/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=8959239266200341404' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/8959239266200341404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/8959239266200341404'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/04/preview-of-another-project-i-am.html' title='Preview of another project I am developing - SQL Management Console'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_N2VfwXjUyUU/SAfryx2sA1I/AAAAAAAAAMw/wXY7QhgcazE/s72-c/SQLMgtConsole.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-133980906155597009</id><published>2008-04-07T15:56:00.000+08:00</published><updated>2008-04-07T16:24:14.953+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS-SQL'/><title type='text'>MSSQLSERVER &amp; SQLSERVERAGENT (MS SQL 2000) failed after changing the password in active directory</title><content type='html'>PC must &lt;a href="http://msdn2.microsoft.com/en-us/library/ms675577.aspx"&gt;change the password periodically to maintain security&lt;/a&gt;, though you still have choice to not to do so if you work alone in default Windows domain. But when it comes to &lt;a href="http://www.petri.co.il/how_to_install_active_directory_on_w2k.htm"&gt;active directory&lt;/a&gt;, most MIS guys &lt;a href="http://www.petri.co.il/images/acctinfo4.gif"&gt;enforce user to change it&lt;/a&gt; through the &lt;a href="http://www.petri.co.il/images/w2k_dcpromo17.gif"&gt;AD management tools&lt;/a&gt;. Thus those softwares in your PC that ties to this AD account for login should be smart enough to changed accordingly.&lt;br /&gt;&lt;br /&gt;But in MSSQL 2000, this is not the case. After changing the new AD password, the MSSQLSERVER &amp;amp; SQLSERVERAGENT will not be updated and it will give you error message (if you start it from SQL Server Enterprise Manager: Server Group-&gt;[Instance]-&gt;Management-&gt;SQL Server Agent):&lt;br /&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#ff0000;"&gt;"An error 1609 - (The service did not start due to a logon failure) occurred while performing this service operation on the SQLServerAgent service."&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5186413247867473330" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R_nXXsGFTbI/AAAAAAAAAMg/T4F3yBo-NI0/s400/services_02.JPG" border="0" /&gt;&lt;br /&gt;If you start it from Services.msc(Go to command prompt, type: "services.msc"), you will get the same logon error:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5186413123313421730" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/R_nXQcGFTaI/AAAAAAAAAMY/dS9oYVnQLZg/s400/services_01.JPG" border="0" /&gt;Due to the login account has changed, now MSSQL and SQL Server Agent cannot identify you correctly anymore, since the password it keeps is the one you saved last time. You must change the password to let it works.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;1) Right-click the particular service (MSSQLSERVER or SQLSERVERAGENT).&lt;/div&gt;&lt;div&gt;2) Choose "Properties"&lt;/div&gt;&lt;div&gt;3) Select "Log On" tab.&lt;/div&gt;&lt;div&gt;4) Change the new AD password as shown, that is!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5186413389601394114" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R_nXf8GFTcI/AAAAAAAAAMo/eRNF01tM2CA/s400/services_03.JPG" border="0" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-133980906155597009?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/133980906155597009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=133980906155597009' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/133980906155597009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/133980906155597009'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/04/mssqlserver-sqlserveragent-ms-sql-2000.html' title='MSSQLSERVER &amp; SQLSERVERAGENT (MS SQL 2000) failed after changing the password in active directory'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_N2VfwXjUyUU/R_nXXsGFTbI/AAAAAAAAAMg/T4F3yBo-NI0/s72-c/services_02.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-2408351932784210059</id><published>2008-03-25T07:46:00.000+08:00</published><updated>2008-03-25T08:43:48.482+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS-SQL'/><title type='text'>Decrypt the stored procedure, and etc</title><content type='html'>When you try to hide something from someone, people always have their own way to dig it out. Just like you thought &lt;a href="http://start-coding.blogspot.com/2008/01/encryption-is-not-safe-in-net-even-it.html"&gt;128-bit encryption is &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;un&lt;/span&gt;-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;decryptable&lt;/span&gt;&lt;/a&gt;, especially on &lt;a href="http://en.wikipedia.org/wiki/Symmetric_key"&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;symmetric&lt;/span&gt; encryption&lt;/a&gt; , people still can know you &lt;a href="http://en.wikipedia.org/wiki/Initialization_vector"&gt;initialization vector (IV)&lt;/a&gt; by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;de&lt;/span&gt;-compiling your source-code using &lt;a href="http://start-coding.blogspot.com/2008/01/reflector-addins.html"&gt;deflector&lt;/a&gt;, if you did not &lt;a href="http://search.yahoo.com/search;_ylt=A0oGkioGSehHvIMA9eBXNyoA?p=OBFUSCATE%2BNET&amp;amp;fr=yie7c&amp;amp;ei=UTF-8"&gt;obfuscate&lt;/a&gt; it (&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;Oops&lt;/span&gt;, or even obfuscation is not safe too?). Then all your effort on &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;encryption&lt;/span&gt;/information-hiding is wasted. Same goes to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;MSSQL&lt;/span&gt; 2000 built-in encryption for stored procedures (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;SPs&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;sprocs&lt;/span&gt;), etc.&lt;br /&gt;&lt;br /&gt;The syntax for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;MSSQL&lt;/span&gt; 2000 built-in encryption on &lt;a href="http://msdn2.microsoft.com/en-us/library/ms187926.aspx"&gt;CREATE PROCEDURE&lt;/a&gt; is:&lt;br /&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;CREATE &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;PROC&lt;/span&gt; [ &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;EDURE&lt;/span&gt; ] procedure_name [ ; number ] &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;[ { @parameter data_type } &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;[ VARYING ] [ = default ] [ OUTPUT ] &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;] [ ,...n ]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;[ WITH &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;{ RECOMPILE &lt;span style="color:#ff0000;"&gt;ENCRYPTION&lt;/span&gt; RECOMPILE , ENCRYPTION } ] &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;[ FOR REPLICATION ] &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;AS &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;sql&lt;/span&gt;_statement [ ...n ]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To decrypt it, for novice user, you can download the freeware (Unless you wanna pay the money for &lt;a href="http://www.devlib.net/decryptsql.htm"&gt;this&lt;/a&gt; software?) called "&lt;a href="http://www.geocities.com/d0mn4r/dSQLSRVD.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;dSQLSRVD&lt;/span&gt;&lt;/a&gt;", just &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;log in&lt;/span&gt; and find those &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;SPs&lt;/span&gt; with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;checkboxes&lt;/span&gt; checked, highlight it and click "Save", you can get the content of the stored procedure you desire. Easy, huh?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5181468005342989682" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/R-hFssGFTXI/AAAAAAAAAMA/I6_7q9PTiVI/s400/dSQLSRVD_01.bmp" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5181468129897041282" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R-hFz8GFTYI/AAAAAAAAAMI/i5UeJ_da9DQ/s400/dSQLSRVD_02.bmp" border="0" /&gt; &lt;/p&gt;&lt;p&gt;For average developer, maybe you can go to this &lt;a href="http://searchsqlserver.techtarget.com/tip/1,289483,sid87_gci1056869,00.html"&gt;site&lt;/a&gt; (please take note this method seems have limitation on the size of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;nvarchar&lt;/span&gt;(4000), you might need to roll back if your encrypted SP is long), or this &lt;a href="http://windowsitpro.com/article/articleid/14369/how-can-i-decrypt-a-sql-server-stored-procedure.html"&gt;site&lt;/a&gt;, and try to come out your version of freeware, though you can find a ready-made workable &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;sql&lt;/span&gt; script if through a &lt;a href="http://search.yahoo.com/search?p=%22with+encryption%22%2B%22t-sql%22%2Bdecrypt&amp;amp;fr=yie7c"&gt;thorough search&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Final piece, Windows applications is too common and thus make it too popular for developers to crack it. You better depend on your own.&lt;br /&gt;&lt;br /&gt;p/s: In &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;MSSQL&lt;/span&gt; 2005, &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_20"&gt;there's&lt;/span&gt; few new features added,&lt;br /&gt;1) &lt;a href="http://msdn2.microsoft.com/en-us/library/ms186950.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;EncryptByAsymKey&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;2) &lt;a href="http://msdn2.microsoft.com/en-us/library/ms188061.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;EncryptByCert&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;3) &lt;a href="http://msdn2.microsoft.com/en-us/library/ms174361.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;EncryptByKey&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;maybe it's worth for try.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-2408351932784210059?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/2408351932784210059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=2408351932784210059' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2408351932784210059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2408351932784210059'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/03/decrypt-stored-procedure-and-etc.html' title='Decrypt the stored procedure, and etc'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_N2VfwXjUyUU/R-hFssGFTXI/AAAAAAAAAMA/I6_7q9PTiVI/s72-c/dSQLSRVD_01.bmp' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-1862736932206397849</id><published>2008-03-02T15:42:00.000+08:00</published><updated>2008-03-02T17:11:52.781+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Virtual PC'/><title type='text'>Resize the virtual harddisk size (2) : expand C-drive</title><content type='html'>From last week, I expanded the hard-disk size successfully. But I am not satisfied with the end result, what if I just want to expand the main primary partition (aka C drive), not adding another secondary partition?&lt;br /&gt;&lt;br /&gt;I found the &lt;a href="http://www.symantec.com/norton/products/overview.jsp?pcid=sp&amp;amp;pvid=pm80"&gt;PartitionMagic&lt;/a&gt; and it seems able to do the job by merging the partitions, but it is not free. I need a free software to achieve that and I found &lt;a href="http://gparted.sourceforge.net/index.php"&gt;GParted&lt;/a&gt;. Since it's used mainly for *nix environment, I knew it not gonna be user-friendly. There's not executable files for you to run it on Windows. Lucky, the &lt;a href="http://gparted.sourceforge.net/download.php"&gt;liveCD&lt;/a&gt; is designed to solve this problem across the platform.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;So, here are the steps to merge the partitions using GParted:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1) Capture the GParted liveCD iso image from the Virtual PC Console.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5173065004804295106" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R8prNrtdScI/AAAAAAAAAL4/ZEwPb30tMkY/s400/Step_01.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;2) Reboot the OS.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5173064837300570546" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/R8prD7tdSbI/AAAAAAAAALw/PnzYgVO_vz8/s400/Step_02.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;3) After reboot, the Gnome Partition Editor will be loaded. Select the "GParted-liveCD Force VESA Driver" (If you have problem on "GParted-liveCD XXX (auto-configuration)", you better select this one, how do you know? Your screen will totally blank later.)"&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5173064622552205730" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R8pq3btdSaI/AAAAAAAAALo/aXg-0akQD_s/s400/Step_03.jpg" border="0" /&gt; 4) You will be asked to key-in the keymap twice. Hit enter to proceed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5173064463638415762" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/R8pquLtdSZI/AAAAAAAAALg/WqcD_DdtxjM/s400/Step_04.jpg" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5173064244595083650" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R8pqhbtdSYI/AAAAAAAAALY/uQXhlD6_kW8/s400/Step_05.jpg" border="0" /&gt; 5) Now the main app will load. Since there is some reading problem on the PS/2 mouse, you would not be able to use the mouse. Quoted from &lt;a href="http://arcanecode.wordpress.com/2007/04/25/ubuntu-704-and-virtual-pc-2007-mouse-issue-workaround-sort-of/"&gt;Arcane Code&lt;/a&gt;:&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;color:#3366ff;"&gt;&lt;em&gt;"First, let me take a second to explain what the issue is. There was a bug in the kernel code that affected many different distros of Linux. Apparently the kernel was not finding PS/2 style mice. Some work has been done and now most PS/2 style mice are now being found.&lt;br /&gt;Except, sadly for the ones being emulated. Both VMWare and VirtualPC emulate a PS/2 style mouse, and are not getting found by the kernel. Remember, it doesn’t matter what type of mouse you have hooked up to the host box (I have two mice, a Logitech MediaPlay and Microsoft Travel mouse, both USB). It only matters what the virtual machine is telling the guest OS (Ubuntu), which is PS/2 style mouse."&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Now you have to go back to old day practice : using keyboard.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5173063991192013170" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R8pqSrtdSXI/AAAAAAAAALQ/GYUaXBdS-4w/s400/Step_06.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;6) Press "Tab" key until the main drive is selected. You will know when the row is highlighted.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5173063587465087330" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/R8pp7LtdSWI/AAAAAAAAALI/9dBFcq_XTIs/s400/Step_07.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;7) Now press "Alt-P" and "Down" arrow key to select the "Resize/Move" menu.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5173063132198553922" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R8ppgrtdSUI/AAAAAAAAAK4/DDJZwhe14Kk/s400/Step_08.jpg" border="0" /&gt; &lt;div&gt;8) Leave the "Free Spacing Preceding" and key-in how much size you want to expand in "New Size" textbox. The "Resize/Move" button will be enabled once you made changes. Use "Tab" to move the focus to "Resize/Move" button and hit "Enter".&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5173063407076460882" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R8ppwrtdSVI/AAAAAAAAALA/yZgelCG7hy8/s400/Step_09.jpg" border="0" /&gt; 9) Use "Alt-E" and "Down" arrow key to select the "Apply All Operations". Partition merging will be started. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5173062956104894770" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R8ppWbtdSTI/AAAAAAAAAKw/z1XesYOwEBc/s400/Step_10.jpg" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5173062805781039394" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R8ppNrtdSSI/AAAAAAAAAKo/0hjWomvDbFM/s400/Step_11.jpg" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5173062475068557586" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R8po6btdSRI/AAAAAAAAAKg/L_3mDeTLjNc/s400/Step_12.jpg" border="0" /&gt; 10) Once it's done, turn-off the Virtual PC and reboot.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5173062376284309762" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R8po0rtdSQI/AAAAAAAAAKY/ybX_2wuaeN4/s400/Step_13.jpg" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5173062268910127346" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R8poubtdSPI/AAAAAAAAAKQ/7oZauZiP4sE/s400/Step_14.jpg" border="0" /&gt; 11) This time, select "Boot partition #1 on the first hard drive". (You need to scroll down if you did not see it from the Gnome Partition Editor.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5173057492906494178" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R8pkYbtdSOI/AAAAAAAAAKI/J5f1T-ZkpbY/s400/Step_15.jpg" border="0" /&gt;  &lt;div&gt;12) Windows will load and check for the disk consistency. Let it do the dirty job and it will reboot twice.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5173057346877606098" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/R8pkP7tdSNI/AAAAAAAAAKA/fU5-WSA-tFU/s400/Step_16.jpg" border="0" /&gt; 13) Eventually, the partition merge is done and now you will see the extra hard-disk space increase on the main primary partition. (You might need to release the iso image captured on step 1 after done)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5173057205143685314" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R8pkHrtdSMI/AAAAAAAAAJ4/nY0eFuLtk0w/s400/Step_17.jpg" border="0" /&gt; Here's the link where you can &lt;a href="http://www.aspdeveloper.net/Virtual_PC/rn1-739-24250_Virtual_PC_disables_Print_Screen_functions_in_host.aspx"&gt;capture the screen-shoot on VPC&lt;/a&gt;. &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-1862736932206397849?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/1862736932206397849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=1862736932206397849' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/1862736932206397849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/1862736932206397849'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/03/resize-virtual-harddisk-size-2-expand-c.html' title='Resize the virtual harddisk size (2) : expand C-drive'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_N2VfwXjUyUU/R8prNrtdScI/AAAAAAAAAL4/ZEwPb30tMkY/s72-c/Step_01.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-1334482891087748802</id><published>2008-02-28T07:58:00.000+08:00</published><updated>2008-02-28T08:42:27.266+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Virtual PC'/><title type='text'>Resize the virtual harddisk size</title><content type='html'>As a developer, I need to test the applications written in different version of Windows OSs, sometimes also need to try out the new beta products, and of course, to run the application without the Vista's UAC. I need to cultivate the environment for simple virus as well (very dangerous for a beginner like me). I like to use &lt;a href="http://www.microsoft.com/windows/products/winfamily/virtualpc/default.mspx"&gt;Virtual PC&lt;/a&gt; since i can get all these advantages.&lt;br /&gt;&lt;br /&gt;If the disk space is running out, the virtual OS will keep notifying you to clean up more space. It is quite annoying to clean up the space to move on.With the &lt;a href="http://vmtoolkit.com/files/folders/converters/entry87.aspx"&gt;VHD Resizer&lt;/a&gt;, you can add more space to extend the life span of your virtual environment.&lt;br /&gt;&lt;br /&gt;1. After download and install the VHD Resizer, you will be greeted with Open File Dialog:&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5171817059810364882" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R8X8NuVNTdI/AAAAAAAAAIg/fvs1L07Vqow/s400/VhdResize_01.jpg" border="0" /&gt;&lt;br /&gt;2. then you will come to the VHD Resizer main UI, insert the new vhd file you want with the new file size, the disk space allocation will start.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5171817253083893218" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R8X8Y-VNTeI/AAAAAAAAAIo/r2SB39Eb40o/s400/VhdResize_02.jpg" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5171817609566178802" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R8X8tuVNTfI/AAAAAAAAAIw/Xf11kOA-i1o/s400/VhdResize_03.jpg" border="0" /&gt;&lt;br /&gt;3. After minutes, the allocation will finish. But your job is not done yet. You would not get the result instantly. You need to go to Disk Management and partition the new disk space.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5171817781364870658" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R8X83uVNTgI/AAAAAAAAAI4/dryXKfZft2I/s400/VhdResize_04.jpg" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5171818008998137362" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R8X9E-VNThI/AAAAAAAAAJA/zfYz1xHmTXQ/s400/VhdResize_05.jpg" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5171818554458983970" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R8X9kuVNTiI/AAAAAAAAAJI/bxxLj_0SHb0/s400/VhdResize_06.jpg" border="0" /&gt;&lt;br /&gt;4. You will be greeted another wizard : New Partition Wizard. Use the default values for each settings.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5171818790682185266" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/R8X9yeVNTjI/AAAAAAAAAJQ/e58EY1V9BAs/s400/VhdResize_07.jpg" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5171819469287018082" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R8X-Z-VNTmI/AAAAAAAAAJo/af2-JkfbWeY/s400/VhdResize_12.jpg" border="0" /&gt;&lt;br /&gt;5. The disk formatting will be completed fast and easily.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5171819095624863298" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/R8X-EOVNTkI/AAAAAAAAAJY/PDhxxhZRd_o/s400/VhdResize_13.jpg" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5171819280308457042" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R8X-O-VNTlI/AAAAAAAAAJg/e6oDFRcOneE/s400/VhdResize_14.jpg" border="0" /&gt;&lt;br /&gt;&lt;p&gt;6. The actual file size for the vhd resized is not increased tremendously, I think 70 MB is used for partition the disk space, since later the hard disk space will expand dynamically.&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5171820452834528882" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/R8X_TOVNTnI/AAAAAAAAAJw/-kWpsNvO4kQ/s400/VhdResize_15.jpg" border="0" /&gt;7. Done. You will be freed from the virtual disk space problem!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-1334482891087748802?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/1334482891087748802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=1334482891087748802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/1334482891087748802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/1334482891087748802'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/02/resize-virtual-harddisk-size.html' title='Resize the virtual harddisk size'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_N2VfwXjUyUU/R8X8NuVNTdI/AAAAAAAAAIg/fvs1L07Vqow/s72-c/VhdResize_01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-5440705340457450472</id><published>2008-02-18T07:52:00.000+08:00</published><updated>2008-02-20T07:58:20.784+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeProject'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Little Update for C# Clock widget</title><content type='html'>&lt;a href="http://bp1.blogger.com/_N2VfwXjUyUU/R7jLyuVNTVI/AAAAAAAAAHg/eEIc2fkU5uY/s1600-h/AlarmInAction_Vista.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5168104644698525010" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/R7jLyuVNTVI/AAAAAAAAAHg/eEIc2fkU5uY/s400/AlarmInAction_Vista.jpg" border="0" /&gt;&lt;/a&gt;Several months after posting the &lt;a href="http://start-coding.blogspot.com/2007/09/my-first-net-app-c-analog-clock.html"&gt;C# Clock widget&lt;/a&gt; on &lt;a href="http://www.codeproject.com/KB/cs/SimpleAnalogClockWidget.aspx"&gt;CodeProject&lt;/a&gt;, finally I managed to add some useful features into it. There are:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;1) Customizable/Load and save user settings. User will be able to customize the application based on the feature they like, and it will load also on every start. In this case, the color of the hands and alarm message. (Part of the UI design refers from &lt;a href="http://blogs.msdn.com/coding4fun/archive/2006/10/31/908744.aspx"&gt;CodingForFun&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5168105769979956658" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R7jM0OVNTbI/AAAAAAAAAIQ/coG-WzIC6e0/s400/Config_EN_01.jpg" border="0" /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5168106023383027138" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R7jNC-VNTcI/AAAAAAAAAIY/Eq6v-ec8nMc/s400/Config_EN_02.jpg" border="0" /&gt;&lt;br /&gt;2) Localization, although it will no longer standalone (it will need satellite assemblies for localization). Currently it supports english and simplified chinese, other locales will fall back the english version though.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5168104855151922530" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R7jL--VNTWI/AAAAAAAAAHo/G_xli_lxD60/s400/Config_CN_01.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5168104988295908722" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/R7jMGuVNTXI/AAAAAAAAAHw/nDDNQsteDK0/s400/Config_CN_02.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;3) Alarm. User can enable the alarm so that this widget will notify the user on certain occasion.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5168105125734862210" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/R7jMOuVNTYI/AAAAAAAAAH4/PBc4Y794uI4/s400/AlarmInAction_XP.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;4) Call the system clock. This is a context-menu to summon the system clock, maybe it's redundant, since user can by-pass it through the taskbar&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5168105340483227026" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R7jMbOVNTZI/AAAAAAAAAIA/7tZ23h61aUE/s400/AdjustTime_01.jpg" border="0" /&gt; &lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5168105486512115106" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/R7jMjuVNTaI/AAAAAAAAAII/N9T3goCP3Zc/s400/AdjustTime_02.jpg" border="0" /&gt;&lt;/div&gt;&lt;p&gt;You can get the &lt;a href="http://www.geocities.com/gan.gary1980/cSharp_clock_ver1.1.zip"&gt;source-code&lt;/a&gt; and &lt;a href="http://www.geocities.com/gan.gary1980/cSharp_clock_ver1.1_installer.zip"&gt;installer&lt;/a&gt; here.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-5440705340457450472?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/5440705340457450472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=5440705340457450472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5440705340457450472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5440705340457450472'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/02/little-update-for-c-clock-widget.html' title='Little Update for C# Clock widget'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_N2VfwXjUyUU/R7jLyuVNTVI/AAAAAAAAAHg/eEIc2fkU5uY/s72-c/AlarmInAction_Vista.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-9088854227794957529</id><published>2008-02-04T07:48:00.000+08:00</published><updated>2008-02-04T08:05:53.280+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FTP'/><title type='text'>550: Access is denied. Why cannot delete files on FTP server?</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;FTP is quite popular for transfering the large files since old days. One of the problem that I face previously is this: &lt;a href="http://en.wikipedia.org/wiki/List_of_FTP_server_return_codes"&gt;550 (foo.txt) : Access is denied&lt;/a&gt;, when issuing a &lt;a href="http://en.wikipedia.org/wiki/List_of_FTP_commands"&gt;delete command&lt;/a&gt; from application on client side. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5162906814482111442" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R6ZUZL2mW9I/AAAAAAAAAHI/vN0NT5Oo2y4/s400/FTP_Failed_ReadOnlyAttr_02.bmp" border="0" /&gt;&lt;/div&gt;&lt;div&gt;After looking the setting level for the FTP at IIS, I found the user has the right to read/write, but this problem still happens on issuing a delete command. I wonder what went wrong??? &lt;/div&gt;&lt;div&gt;&lt;br /&gt; &lt;/div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5162906565374008258" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/R6ZUKr2mW8I/AAAAAAAAAHA/7v6xZtoC2rM/s400/FTP_Failed_ReadOnlyAttr_01.bmp" border="0" /&gt;&lt;br /&gt;A check on the file properties on the server side, I found this file has a read-only attribute! &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5162907067885181922" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/R6ZUn72mW-I/AAAAAAAAAHQ/gRnOy_JlA0Y/s400/FTP_Failed_ReadOnlyAttr_03.bmp" border="0" /&gt;By modifying the attribute, the delete command is able to delete the file again. I think the application on client side does not have the ability to check the file's attribute, at least for Windows FTP service (&lt;a href="http://icogsci1.ucsd.edu/~cg3x/cg3.ftp.html"&gt;Unix should have such ability, using: ls -l &lt;/a&gt;). So the workout is the server side must set the attribute implicitly, through &lt;a href="http://msdn2.microsoft.com/en-us/library/system.io.fileattributes.aspx"&gt;FileAttributes Enumeration&lt;/a&gt;. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5162907364237925362" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R6ZU5L2mW_I/AAAAAAAAAHY/_KEScStc0Gw/s400/FTP_Failed_ReadOnlyAttr_04.bmp" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-9088854227794957529?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/9088854227794957529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=9088854227794957529' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/9088854227794957529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/9088854227794957529'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/02/550-access-is-denied-why-cannot-delete.html' title='550: Access is denied. Why cannot delete files on FTP server?'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_N2VfwXjUyUU/R6ZUZL2mW9I/AAAAAAAAAHI/vN0NT5Oo2y4/s72-c/FTP_Failed_ReadOnlyAttr_02.bmp' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-215364712881594406</id><published>2008-01-25T13:15:00.000+08:00</published><updated>2008-01-25T13:37:38.135+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflector'/><title type='text'>Reflector Addins</title><content type='html'>Last blog, I talked about the Reflector. After looking for more tool to smooth the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;work flow&lt;/span&gt; of debugging task, I found there are &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;several&lt;/span&gt; add-ins that can make you life easier. &lt;a href="http://www.hanselman.com/blog/ReflectorAddinsAndPowerShellLanguageSupportForReflector.aspx"&gt;Scott &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Hanselman&lt;/span&gt;&lt;/a&gt; even compiled the list of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Codeplex&lt;/span&gt;-hosted &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;add-ins&lt;/span&gt; in his site.&lt;br /&gt;Well, I &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_5"&gt;personally&lt;/span&gt; like the &lt;a href="http://www.codeplex.com/reflectoraddins/Release/ProjectReleases.aspx?ReleaseId=1805"&gt;Diff&lt;/a&gt; and &lt;a href="http://www.denisbauer.com/NETTools/FileDisassembler.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;FileDisassembler&lt;/span&gt;&lt;/a&gt;, another &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;add-in&lt;/span&gt; which is not hosted at the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;&lt;a href="http://www.codeplex.com/reflectoraddins/Release/ProjectReleases.aspx?ReleaseId=1805"&gt;CodePlex&lt;/a&gt;&lt;/span&gt;. Diff is a tool that act like &lt;a href="http://en.wikipedia.org/wiki/WinDiff"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Windiff&lt;/span&gt;&lt;/a&gt; to your file compare, but it's used for assembly compare; while the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;FileDisassembler&lt;/span&gt; allows you to reverse-engineer the assembly to the source file, in case you loss your source code (and of course, if you wanna see how people code :-D), althought it might not 100% identical to the original code. (But hey, what you can ask for, since it is free!)&lt;br /&gt;&lt;br /&gt;(Image from Reflector.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;FileDisassembler&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://www.denisbauer.com/NETTools/Reflector.Disassembler.jpg" border="0" /&gt;Must-have and go get it! &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-215364712881594406?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/215364712881594406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=215364712881594406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/215364712881594406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/215364712881594406'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/01/reflector-addins.html' title='Reflector Addins'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-4906514101612907466</id><published>2008-01-13T21:02:00.000+08:00</published><updated>2008-01-13T22:27:35.292+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Reflector'/><title type='text'>Encryption is not safe in .Net, even it encrypts 128-bit blocks, if you do normal compilation!</title><content type='html'>With the release of .Net Reflector from Lutz Roeder, even dummy developer can de-compile your 10-years-effort application within seconds. It has become a open secret in the NET developers group and I think this is the main reason Microsoft releases &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx"&gt;some of the source code of framework libraries&lt;/a&gt;, although they often claim .NET is open architecture.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Reverse-engineering of your application is possible, when your source code is not &lt;a href="http://search.yahoo.com/search?p=obfuscator%2BNET&amp;amp;fr=yie7c"&gt;obfuscate&lt;/a&gt;d. For security purpose, developer maybe will use &lt;a href="http://msdn2.microsoft.com/en-us/library/system.security.cryptography.aspx"&gt;cryptographic services&lt;/a&gt; to encrypt user name &amp;amp; password and store it in clients'(users themselves) PC for reloading purpose. (So the application can log-in again for the same user without asking user name &amp;amp; password). This kind of information often could be a .ini/.config/.xml or any other ASCII file.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Cryptographic services help your client stores private and confidential information from others. &lt;a href="http://en.wikipedia.org/wiki/Rijndael"&gt;The higher the bits used to perform encryption/decryption, the more difficult the hackers can hack your code.&lt;/a&gt; But now the problem is not coming from the algorithm but the .NET itself, if you are writing normal codes without obfuscating it.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Let's have a sample from &lt;a href="http://msdn2.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged.aspx"&gt;MSDN using RijndaelManaged Class&lt;/a&gt;:&lt;/div&gt;&lt;div&gt;(The demo here is to urge the developers to tighten-up the security, not to encourage hackers!)&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;1) Go to &lt;a href="http://www.aisto.com/roeder/dotnet/"&gt;download .Net Relector from Lutz Roeder&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;2) Browse to the .NET application you wish to de-compile. Drag-and-drop it to the .Net Reflector. (&lt;a href="http://www.geocities.com/gan.gary1980/Encryption.zip"&gt;Sample provided&lt;/a&gt;; remove the "Config.ini" file to re-generate) &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5154955086355759922" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R4oUVsNUAzI/AAAAAAAAAFg/5FJy2LH0Ry4/s400/step_01.JPG" border="0" /&gt; 3) Browse to the default namespace. You might ask: How do you know it is default namespace? Normally it is same name with the application. If not sure, just browse one-by-one, since you can de-compile all the them :-D&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5154956353371112274" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/R4oVfcNUA1I/AAAAAAAAAFw/x728PXL8ar8/s400/step_02.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;4) Browse to default class. You might ask again: How do you know it is default class? Same answer with step (3). &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Browse to default form/module. You might ask for 3rd time: How do you know it is default form/module? For C#, normally developers will name it as frmMain/frmMDI/frmLogin. In VB .Net, the entry point should be modmain module. Else, just follow step (3) :-)&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5154956705558430562" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R4oVz8NUA2I/AAAAAAAAAF4/qICi0g5cI2A/s400/step_03.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;5) Until here, maybe you have no choice but to look into all the possible methods (sometimes you can find the possible method like : frmLogin_Load, btnLogin_Click, etc). Click the methods to check the disassembler in the right pane.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Now you can see the user name &amp;amp; password are decrypted, before they are used to validate/compare with the user input.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5154957676221039490" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/R4oWscNUA4I/AAAAAAAAAGI/CrvbTRJIFx4/s400/step_05.JPG" border="0" /&gt;&lt;br /&gt;6) Remember the configuration file in the form constructor. It's useful later to find out the where the encrypted information stored.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5154958827272274834" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/R4oXvcNUA5I/AAAAAAAAAGQ/UCMUT-g4Mcg/s400/step_06.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;7) Click on the any method on the disassembler pane to drill down. If it requires additional assembly, message box will be prompted. Just click OK.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5154957272494113650" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R4oWU8NUA3I/AAAAAAAAAGA/DGYxsEqnoKI/s400/step_04.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;8) Again, Click on the method on the disassembler. You can find the decryption method. It uses Rijndael algorithm. &lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5154959419977761698" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R4oYR8NUA6I/AAAAAAAAAGY/QGAAIwWaEB8/s400/step_07.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;9) Oh, my God! It comes with IV and key, embeded in the application.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5154962151576962018" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R4oaw8NUA-I/AAAAAAAAAG4/wmh97Yrb6Q0/s400/step_08.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;10) Copy decryption method, IV, key and build a simple console application. (&lt;a href="http://www.geocities.com/gan.gary1980/simpleDecryptTool.zip"&gt;Sample provided&lt;/a&gt;)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;11) Pass-in the encrypted string to the console application built previously. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Done! Now you are a hacker! Oops, sorry, I meant you must tighten-up you source code compilation for security purpose.&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5154961305468404690" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R4oZ_sNUA9I/AAAAAAAAAGw/-6w6hGEiF70/s400/step_09.JPG" border="0" /&gt;p/s: Even in java, there're tons of &lt;a href="http://swik.net/Eclipse/del.icio.us%2Ftag%2Feclipse/Home+Page+of+Jad+-+the+fast+Java+decompiler/bqha3"&gt;de-compiler tools&lt;/a&gt; available. It's not surprise, since .NET is modeling from Java.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-4906514101612907466?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/4906514101612907466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=4906514101612907466' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4906514101612907466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4906514101612907466'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/01/encryption-is-not-safe-in-net-even-it.html' title='Encryption is not safe in .Net, even it encrypts 128-bit blocks, if you do normal compilation!'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_N2VfwXjUyUU/R4oUVsNUAzI/AAAAAAAAAFg/5FJy2LH0Ry4/s72-c/step_01.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-5051183464865042236</id><published>2008-01-12T12:05:00.000+08:00</published><updated>2008-01-12T13:13:51.663+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><title type='text'>Trivial but also Tricky : Result of using "is NULL" &amp; "= NULL" in T-SQL is different</title><content type='html'>For the T-SQL (here I use MS-SQL), especially when you write stored procedure, you will normally receive parameter(s) from .NET/Java or any equivalent language to manipulate your client records. This is a normal design of &lt;a href="http://en.wikipedia.org/wiki/Three-tier_(computing)"&gt;three-tier application&lt;/a&gt; (Presentation Layer represents the UI that interact with user; Business Logic layer to code all your business logic; Data Access layer to deal with various kind of data storage apps) &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For these received parameters, normally you will use some of it to retrieve (or perform checking or validation) some other data from other tables. You will write any T-SQL to perform SIUD(Select/Insert/Update/Delete) on records based on the business logic in database. In order to SUID on these records, your WHERE-statement must be written precisely, and of concisely. If the WHERE-statement is wrong, then the records SUID-ed will be corrupted.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let's have simple example:&lt;/div&gt;&lt;div&gt;1) Create a simple table with nullable columns&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;&lt;em&gt;if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[_Test]') and &lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;&lt;em&gt;OBJECTPROPERTY(id, N'IsUserTable') = 1)drop table [dbo].[_Test]&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;&lt;em&gt;GO &lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;&lt;em&gt;&lt;br /&gt;CREATE TABLE [dbo].[_Test] (&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;&lt;em&gt;[col1] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , &lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;&lt;em&gt;[status] [int] NULL ) ON [PRIMARY]&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;&lt;em&gt;GO&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;2) Insert 2 sample records into it&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="font-size:78%;"&gt;insert into _Test(col1, status)&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/div&gt;&lt;div&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="font-size:78%;"&gt;values('First row', NULL) &lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/div&gt;&lt;div&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;insert into _Test(col1, status)&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/div&gt;&lt;div&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="font-size:78%;"&gt;values('Second row', 1)&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5154444049672045314" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R4hDjcNUAwI/AAAAAAAAAFI/OMAt9medFLk/s400/All_rec.JPG" border="0" /&gt;3) Create a stored procedure to determine the record could be found in database or not&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;IF EXISTS (Select * from sysobjects where name = '_spTest' and xtype = 'P') &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;DROP PROCEDURE _spTest&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;GO &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;CREATE PROCEDURE dbo._spTest &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;@p1 int&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;As &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;IF EXISTS ( Select * from _Test &lt;span style="color:#ff0000;"&gt;where status = @p1&lt;/span&gt;) &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;PRINT 'Records found !' &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;ELSE &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;PRINT 'No records found !'&lt;br /&gt;GO&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;4) Now try to execute it&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;execute _spTest 1&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;execute _spTest NULL&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5154445260852822802" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/R4hEp8NUAxI/AAAAAAAAAFQ/ubJP4h3Y7ek/s400/failed_sp.JPG" border="0" /&gt; Oh, where's another records?&lt;/p&gt;&lt;p&gt;6) And this is quoted from &lt;a href="http://msdn2.microsoft.com/en-us/library/aa933227(SQL.80).aspx"&gt;MSSQL BOL (Book On-Line) / T-SQL Reference&lt;/a&gt;:&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:85%;color:#3333ff;"&gt;To determine if an expression is NULL, use IS NULL or IS NOT NULL rather than comparison operators (such as = or !=). Comparison operators return UNKNOWN if either or both arguments are NULL.&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#000000;"&gt;Now, you realized you used the comparison operators to execute it unknowingly!&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;7) So, in order to access the particular data accurately, the correct stored procedure should be written (Of course, this is simple scripts only, &lt;a href="http://msdn2.microsoft.com/en-us/library/ms190349.aspx"&gt;COALESCE&lt;/a&gt; or any other keywords can help you to SIUD the huge records efficiently) as&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;IF EXISTS (Select * from sysobjects where name = '_spTest' and xtype = 'P') &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;DROP PROCEDURE _spTest&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;GO&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;CREATE PROCEDURE dbo._spTest &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;@p1 int&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;As &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;color:#ff0000;"&gt;IF (@p1 IS NULL) &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#ff0000;"&gt;BEGIN&lt;/span&gt; &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;IF EXISTS ( Select * from _Test where status &lt;span style="color:#ff0000;"&gt;IS NULL&lt;/span&gt;) &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;PRINT 'Records found, with status is null!' &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;ELSE &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;PRINT 'No records found with status is null!' &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#ff0000;"&gt;END &lt;/span&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;color:#ff0000;"&gt;ELSE &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#ff0000;"&gt;BEGIN&lt;/span&gt; &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;IF EXISTS ( Select * from _Test where status &lt;span style="color:#ff0000;"&gt;= @p1&lt;/span&gt;) &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;PRINT 'Records found!' &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;ELSE &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;PRINT 'No records found!' &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#ff0000;"&gt;END&lt;/span&gt;&lt;br /&gt;GO&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;8) Now try to execute it again&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;&lt;em&gt;execute _spTest 1&lt;br /&gt;execute _spTest NULL&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;9) Correct! &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5154445613040141090" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R4hE-cNUAyI/AAAAAAAAAFY/vziSL4YW95M/s400/success_sp.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-5051183464865042236?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/5051183464865042236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=5051183464865042236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5051183464865042236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5051183464865042236'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2008/01/trivial-but-also-tricky-result-of-using.html' title='Trivial but also Tricky : Result of using &quot;is NULL&quot; &amp; &quot;= NULL&quot; in T-SQL is different'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_N2VfwXjUyUU/R4hDjcNUAwI/AAAAAAAAAFI/OMAt9medFLk/s72-c/All_rec.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-4347904333165885937</id><published>2007-12-19T20:42:00.000+08:00</published><updated>2007-12-19T20:53:53.344+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows OS'/><title type='text'>Hype of Windows OS 7 started!</title><content type='html'>While the &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;developments&lt;/span&gt; of Windows OS 7 is still in infancy state, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;ppl&lt;/span&gt; have already started monitoring its development, as usual. More info at &lt;a href="http://apcmag.com/7668/beyond_vista_windows_7_what_we_know_so_far"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Apcmag&lt;/span&gt;.com&lt;/a&gt;. Of course, how can we forget the &lt;a href="http://search.yahoo.com/search?p=MinWin&amp;amp;ei=utf-8&amp;amp;fr=b2ie7"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;MinWin&lt;/span&gt;&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 200px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://apcmag.com/system/files/images/minwin.img_assist_custom.jpg" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-4347904333165885937?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/4347904333165885937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=4347904333165885937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4347904333165885937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4347904333165885937'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2007/12/hype-of-windows-os-7-started.html' title='Hype of Windows OS 7 started!'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-3561971894507778733</id><published>2007-12-05T22:48:00.000+08:00</published><updated>2007-12-05T23:16:31.309+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSSQL 2008'/><title type='text'>SQL Server 2008 introduces new data type : HierarchyId</title><content type='html'>&lt;p&gt;I think this introduction of new data type is to help to re-&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;construct&lt;/span&gt; the records back to hierarchical view easily (remember the "&lt;a href="http://msdn2.microsoft.com/en-us/library/ms175156.aspx"&gt;Using APPLY&lt;/a&gt;" sample that need to call the function recursively ?). With the syntax like &lt;a href="http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1266498,00.html"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;GetAncestor&lt;/span&gt;(), &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;GetDescendant&lt;/span&gt;(), &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;IsDescendant&lt;/span&gt;() &lt;/a&gt;, etc, you can discover the level of the records easily (why it seems gearing towards &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;CLR&lt;/span&gt; coding??).&lt;/p&gt;&lt;p&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;There're&lt;/span&gt; few articles with samples:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/manisblog/archive/2007/08/17/sql-server-2008-hierarchyid.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;SQL&lt;/span&gt; Server 2008 - &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;HierarchyID&lt;/span&gt; - Part I&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/manisblog/archive/2007/08/28/sql-server-2008-hierarchyid-part-ii.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;SQL&lt;/span&gt; Server 2008 - &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;HierarchyID&lt;/span&gt; - Part II&lt;/a&gt; &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;CTP&lt;/span&gt; version of MS &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;SQL&lt;/span&gt; 2008 can be &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;downloaded&lt;/span&gt; from &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=3BF4C5CA-B905-4EBC-8901-1D4C1D1DA884&amp;amp;displaylang=en"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-3561971894507778733?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/3561971894507778733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=3561971894507778733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/3561971894507778733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/3561971894507778733'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2007/12/sql-server-2008-introduces-new-data.html' title='SQL Server 2008 introduces new data type : HierarchyId'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-3927728228183242844</id><published>2007-11-23T13:06:00.000+08:00</published><updated>2007-11-23T14:27:22.467+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS SQL Express 2005'/><title type='text'>Make remote connection for MS SQL Express 2005</title><content type='html'>When one of my company's client uses the application that tries to connect to MS SQL Express 2005 in the main server that resides in LAN, he keeps receiving this error message:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:78%;color:#ff0000;"&gt;An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;After a thorough search using Google, I found the MS SQL Express, Evaluation and Developer editions only allow to local connection, be default. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5135911318851606914" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/R0ZsIh4O2YI/AAAAAAAAAFA/yc0KJg6mGoU/s400/remoteConnect_00.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;By setting the steps (from &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;EN-US;914277"&gt;MSDN&lt;/a&gt;, using "SQL Server Surface Area Configuration") to allow it to make remote connection from remote PC, it works fines for some of the PCs only, using connection string likes:&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="font-size:78%;color:#3333ff;"&gt;Data Source=[pc name]\SQLEXPRESS; database=[database name]; uid=[user name]; pwd=[user password]&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="font-size:78%;color:#3333ff;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="font-size:78%;color:#3333ff;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;, when there's only MS SQL Express 2005 resides on PC. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;But those PCs which have both MS SQL 2000 &amp;amp; MS SQL Express 2005 and the default instance is MS SQL 2000, it still hits the error message when I try to connect to MS SQL Express 2005:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:78%;color:#ff0000;"&gt;SQL Server does not exist or access denied.&lt;/span&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5135907023884310834" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/R0ZoOh4O2TI/AAAAAAAAAEY/qjDZdZDdJww/s320/remoteConnect_000.JPG" border="0" /&gt; If connect to MS SQL 2000 using the IP, it works fine again. So I found the root cause again. This time the solution is from &lt;a href="http://www.connectionstrings.com/?carrier=sqlserver2005"&gt;connectionstrings.com&lt;/a&gt;. By giving the port number used by MS SQL Express 2005 to the connection string, it works and here are the steps:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;1) Go to: All Programs&gt;Microsoft SQL Server 2005&gt;Configuration Tools&gt;SQL Server Configuration Manager&lt;/div&gt;&lt;br /&gt;&lt;div&gt;2) Then under: SQL Server 2005 Network Configuration&gt;Protocols for SQLEXPRESS&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5135907187093068098" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R0ZoYB4O2UI/AAAAAAAAAEg/YACQX9b70vI/s400/remoteConnect_01.JPG" border="0" /&gt; 3) Double-click the "TCP/IP", under the "IP Addresses", find the "TCP Dynamic Ports".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5135907328826988882" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R0ZogR4O2VI/AAAAAAAAAEo/3QmIXqH7I2I/s400/remoteConnect_02.JPG" border="0" /&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;4) Use the port number (I think port no. 1433 is used by default MS SQL instance) as part of the connection string likes:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="font-size:78%;color:#3333ff;"&gt;Data Source=[pc name]\SQLEXPRESS&lt;span style="color:#ff0000;"&gt;, [port number]&lt;/span&gt; ; database=[database name =]; uid=[user name]; pwd=[user password]&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5135907552165288290" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/R0ZotR4O2WI/AAAAAAAAAEw/hh-LRIkWLQU/s400/remoteConnect_03.JPG" border="0" /&gt;5) Success!&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5135907788388489586" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/R0Zo7B4O2XI/AAAAAAAAAE4/i0fItf9NOXk/s400/remoteConnect_04.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-3927728228183242844?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/3927728228183242844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=3927728228183242844' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/3927728228183242844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/3927728228183242844'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2007/11/make-remote-connection-for-ms-sql.html' title='Make remote connection for MS SQL Express 2005'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_N2VfwXjUyUU/R0ZsIh4O2YI/AAAAAAAAAFA/yc0KJg6mGoU/s72-c/remoteConnect_00.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-281450518818231463</id><published>2007-11-22T23:05:00.000+08:00</published><updated>2007-11-22T23:21:34.467+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CodeProject'/><title type='text'>My CodeProject's article being referred!</title><content type='html'>While googling on other developers create clock application, I found my CodeProject's article being referred. :-) But it is only read 60+ times at the time of reading :-( . I think this &lt;a href="http://www.dotnet-news.com/eng/detail.aspx?ID=32082"&gt;dotnet-news.com &lt;/a&gt;read all the news (or RSS) from CodeProject and channel it to all their audience.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5135683483721455890" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/R0Wc6x4O2RI/AAAAAAAAAEI/cXgS2o4fBFE/s400/Referred.jpg" border="0" /&gt;Anyway, I MUST continue to come out new application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-281450518818231463?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/281450518818231463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=281450518818231463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/281450518818231463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/281450518818231463'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2007/11/my-codeprojects-article-being-referred.html' title='My CodeProject&apos;s article being referred!'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_N2VfwXjUyUU/R0Wc6x4O2RI/AAAAAAAAAEI/cXgS2o4fBFE/s72-c/Referred.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-2433138025649443209</id><published>2007-11-14T13:22:00.000+08:00</published><updated>2007-11-14T13:34:45.137+08:00</updated><title type='text'>Which OS are You?</title><content type='html'>I just found this BBspot website. This is the result of the personality test:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bbspot.com/News/2003/01/os_quiz.php"&gt;&lt;img src="http://www.bbspot.com/Images/News_Features/2003/01/os_quiz/debian.jpg" alt="You are Debian Linux. People have difficulty getting to know you.  Once you finally open your shell they're apt to love you." border="0" width="300" height="90"&gt; &lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Wah, there're few more test can be conducted :&lt;br /&gt;&lt;a href="http://bbspot.com/News/2004/10/extension_quiz.php"&gt;Which File Extension Are You?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bbspot.com/News/2004/04/nigerian_quiz.php"&gt;Which Nigerian Spammer Are You?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bbspot.com/News/2006/08/language_quiz.php"&gt;Which Programming Language Are You?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bbspot.com/News/2005/02/website_quiz.php"&gt;Which Website Are You?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-2433138025649443209?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/2433138025649443209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=2433138025649443209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2433138025649443209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2433138025649443209'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2007/11/another-questionaire-for-personality.html' title='Which OS are You?'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-1032173938435701860</id><published>2007-11-05T13:23:00.000+08:00</published><updated>2007-11-05T13:53:11.889+08:00</updated><title type='text'>Halo 3 Flash tour</title><content type='html'>I come across this &lt;a href="http://halo3.com/"&gt;Halo3 website&lt;/a&gt; and found interesting stuff! You can navigate in 3D environment. It's a good website for those avid gamers, before you play the game in XBox.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5129225460257324802" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/Ry6rYVuG_wI/AAAAAAAAAD4/UdLO2OOZHrw/s400/screen_01.GIF" border="0" /&gt;After entering your DOB,&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5129223969903673042" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/Ry6qBluG_tI/AAAAAAAAADg/_oQj5IlBa3M/s400/birthday.GIF" border="0" /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;You can choose to autoplay :&lt;img id="BLOGGER_PHOTO_ID_5129224313501056738" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/Ry6qVluG_uI/AAAAAAAAADo/oDv4H9dh1Zk/s400/screen_00.GIF" border="0" /&gt;Or you can browse with your mouse and keyboard.&lt;br /&gt;And even better, you can take the screenshot at any point, and make it as your wallpaper.&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5129224635623603954" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/Ry6qoVuG_vI/AAAAAAAAADw/frT7IO7UQbo/s400/screen_000.GIF" border="0" /&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;Here's the one I made:&lt;/div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5129230047282396946" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/Ry6vjVuG_xI/AAAAAAAAAEA/RMd2zzSfiA4/s400/halo3_diorama_0389.jpg" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-1032173938435701860?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/1032173938435701860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=1032173938435701860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/1032173938435701860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/1032173938435701860'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2007/11/halo-3-flash-tour.html' title='Halo 3 Flash tour'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_N2VfwXjUyUU/Ry6rYVuG_wI/AAAAAAAAAD4/UdLO2OOZHrw/s72-c/screen_01.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-7585857218130478806</id><published>2007-10-25T12:51:00.000+08:00</published><updated>2007-10-25T13:27:01.212+08:00</updated><title type='text'>My article published on CodeProject!</title><content type='html'>In order to boost the site-visit , I posted my old blog to &lt;a href="http://www.codeproject.com/"&gt;CodeProject&lt;/a&gt;, haha. Thanks to the guys at CodeProject, to allow my article published, although it's a simple one. Hope can exchange valuable pointers with rest of the developers from all over the world.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5125136181035762690" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/RyAkM9gjhAI/AAAAAAAAADY/82WZZ1_AokQ/s400/codeproj.GIF" border="0" /&gt;&lt;br /&gt;p/s: My monitor have sent to repair, due to roof leaking. Got to post this blog using company's PC. Also not so free to develop new program or enhance existing article, sigh!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-7585857218130478806?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/7585857218130478806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=7585857218130478806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/7585857218130478806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/7585857218130478806'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2007/10/my-article-posted-on-codeproject.html' title='My article published on CodeProject!'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_N2VfwXjUyUU/RyAkM9gjhAI/AAAAAAAAADY/82WZZ1_AokQ/s72-c/codeproj.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-5005570801265357507</id><published>2007-09-26T22:28:00.000+08:00</published><updated>2007-09-27T12:58:48.575+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>My first .Net app : C# Analog Clock</title><content type='html'>Finally, my first try on a simple .NET app is done. I created a analog clock widget using C#. I think it's quite challenging for a beginner because it will require simple background of Math, image processing, and 3D graphics programming.&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;With the mouse hit-test, &lt;a href="http://msdn2.microsoft.com/en-us/library/9t6sa8s9(VS.71).aspx"&gt;anti-aliasing graphics&lt;/a&gt; and &lt;a href="http://www.codeproject.com/cs/media/flickerfree.asp"&gt;flicker-free double buffering&lt;/a&gt;, you couldn't even tell the difference between it and Sidebar gadget. Yet it is in C#, and it reduces the pain to deal with Win32 API directly.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5114529450475356770" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/Rvp1b_DbgmI/AAAAAAAAAC8/P-e9niefT6k/s320/SideBySide.jpg" border="0" /&gt;&lt;br /&gt;&lt;div&gt;To draw the hour-hand, minute-hand and second-hand needs a little trick. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;1) Set the origin of form to center, from left-top (so that following rotation can be taken place)&lt;br /&gt;2) Save the current state&lt;/div&gt;&lt;div&gt;3) Rotate the new graphics objects&lt;/div&gt;&lt;div&gt;4) Draw the second-hand (or any hands) at new origin, new orientation&lt;/div&gt;&lt;div&gt;5) Restore the saved state&lt;/div&gt;&lt;div&gt;6) Rotate the new graphics objects&lt;br /&gt;7) Draw the minute-hand (or any hands left) at new origin, new orientation&lt;/div&gt;&lt;div&gt;8) Reload the identity / Reset the origin and orientation (&lt;span style="color:#ff0000;"&gt;Restore the saved state seems failed&lt;/span&gt;)&lt;br /&gt;9) Rotate the new graphics objects&lt;/div&gt;&lt;div&gt;10) Draw the hour-hand (or any hands left) at new origin, new orientation&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Voila!&lt;/div&gt;&lt;div&gt;You can get the &lt;a href="http://www.geocities.com/gan.gary1980/cSharp_clock_src.zip"&gt;source here&lt;/a&gt; or get the &lt;a href="http://www.geocities.com/gan.gary1980/cSharp_clock_exe.zip"&gt;exe here&lt;/a&gt;!&lt;/div&gt;&lt;br /&gt;&lt;div&gt;#p/s: thanks for the &lt;a href="http://fasticon.com/freeware/?p=47"&gt;Fasticon&lt;/a&gt; for its free icon provided.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-5005570801265357507?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/5005570801265357507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=5005570801265357507' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5005570801265357507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/5005570801265357507'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2007/09/my-first-net-app-c-analog-clock.html' title='My first .Net app : C# Analog Clock'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_N2VfwXjUyUU/Rvp1b_DbgmI/AAAAAAAAAC8/P-e9niefT6k/s72-c/SideBySide.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-7537046031970972003</id><published>2007-09-18T23:03:00.000+08:00</published><updated>2007-09-18T23:14:01.964+08:00</updated><title type='text'>How to compete with Microsoft</title><content type='html'>I just happend to come across to this &lt;a href="http://uk.theinquirer.net/?article=42388"&gt;the Inquirer&lt;/a&gt; (It is famous of MS-bashing), ironic but true.&lt;br /&gt;Qoute:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:78%;"&gt;&lt;em&gt;Plan B: Start by developing a killer ap. If you can't think of one, don't worry - simply write a copy of an existing piece of software. It doesn't even have to do anything. When people point out that your product is rubbish, issue a press release blaming Microsoft for refusing to give you its proprietary code for free.&lt;/em&gt;&lt;br /&gt;&lt;em&gt;...&lt;/em&gt;&lt;br /&gt;&lt;em&gt;If you persevere for long enough, you may even convince the European Union that your product would be a world beater if only those bastards at Microsoft would give you the code to make it work properly.&lt;/em&gt;&lt;br /&gt;&lt;em&gt;...&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-7537046031970972003?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/7537046031970972003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=7537046031970972003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/7537046031970972003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/7537046031970972003'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2007/09/how-to-compete-with-microsoft.html' title='How to compete with Microsoft'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-3747174641117510773</id><published>2007-09-17T22:29:00.000+08:00</published><updated>2007-09-28T21:57:38.928+08:00</updated><title type='text'>Wow, write an OS!!</title><content type='html'>While surfing on &lt;a href="http://www.osnews.com/"&gt;OSNews&lt;/a&gt;, I come across to &lt;a href="http://mikeos.sourceforge.net/handbook.html#codepath"&gt;this&lt;/a&gt; site. Know what, you also can write your own OS.&lt;br /&gt;&lt;br /&gt;With the &lt;a href="http://fabrice.bellard.free.fr/qemu/index.html"&gt;QEMU processor emulator&lt;/a&gt;, anyone one can write &amp;amp; test OS written. Start from doc &lt;a href="http://fabrice.bellard.free.fr/qemu/qemu-doc.html"&gt;here&lt;/a&gt; and &lt;a href="http://calamari.reverse-dns.net:980/cgi-bin/moin.cgi/QuickStartGuide"&gt;here&lt;/a&gt;, now. I wish i could do it now, but not yet master ASP.NET, NET Framework, NET CF, ... , to name a few. OMG.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-3747174641117510773?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/3747174641117510773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=3747174641117510773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/3747174641117510773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/3747174641117510773'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2007/09/wow-write-my-own-os.html' title='Wow, write an OS!!'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-2595880599941594209</id><published>2007-09-16T22:00:00.000+08:00</published><updated>2007-09-16T22:14:46.625+08:00</updated><title type='text'>Bumblebee I am?</title><content type='html'>While reading the &lt;a href="http://blogs.msdn.com/mikehall/"&gt;Mike Hall's Windows Embeded blog&lt;/a&gt;, I also take part in the &lt;a href="http://www.funflip.com/quiz/transformers"&gt;Which Transformer are you?&lt;/a&gt; quiz.&lt;br /&gt;Haha, I get this:&lt;br /&gt;&lt;br /&gt;&lt;a style="PADDING-RIGHT: 0px; DISPLAY: block; PADDING-LEFT: 21px; BACKGROUND: url(http://www.funflip.com/_images/quiz/transformers/btns/289x143_bumblebee.jpg) no-repeat; PADDING-BOTTOM: 0px; FONT: bold 9px Tahoma; WIDTH: 268px; COLOR: white; PADDING-TOP: 70px; HEIGHT: 73px; TEXT-ALIGN: left; TEXT-DECORATION: none" href="http://www.funflip.com/"&gt;I AM&lt;br /&gt;&lt;span style="font-size:24;"&gt;61%&lt;/span&gt;&lt;br /&gt;&lt;span style="LINE-HEIGHT: 20px;font-size:12;" &gt;BUMBLEBEE&lt;/span&gt;&lt;/a&gt;&lt;a href="http://www.funflip.com/"&gt;Take the Transformers Quiz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But I still prefer the Bumblebee in the anime I watched during the time I was a kid.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-2595880599941594209?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/2595880599941594209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=2595880599941594209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2595880599941594209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/2595880599941594209'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2007/09/bumblebee-i-am.html' title='Bumblebee I am?'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-3723877008723097201</id><published>2007-09-11T23:17:00.000+08:00</published><updated>2007-09-27T13:29:26.693+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL CE'/><category scheme='http://www.blogger.com/atom/ns#' term='NET'/><category scheme='http://www.blogger.com/atom/ns#' term='CF'/><category scheme='http://www.blogger.com/atom/ns#' term='Compact Framework'/><title type='text'>SQL CE database upgrade</title><content type='html'>This blog will talk about &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SQL&lt;/span&gt; CE database upgrade.&lt;br /&gt;Actually, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;SQL&lt;/span&gt; CE database upgrade is briefly discussed in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms173006.aspx"&gt;BOL&lt;/a&gt;&lt;/span&gt; (Book On-Line). And this blog is just to fill the missing link.&lt;br /&gt;&lt;br /&gt;Normally, You can create a brand new application to use .NET CF 2.0 &amp;amp; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;SQL&lt;/span&gt; CE 3.0. Then what's the big deal about the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;SQL&lt;/span&gt; CE database upgrade, you might ask. Well,What you actually face in real-life situation is you are .NET CF 1.0 &amp;amp; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SQL&lt;/span&gt; CE 2.0 application developer. Due to performance issue (&lt;a href="http://msdn2.microsoft.com/en-us/library/system.data.sqlserverce.sqlceresultset.aspx"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;SqlCeResultSet&lt;/span&gt;&lt;/a&gt; Class) or new functionality that only available in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;SQL&lt;/span&gt; CE 3.0, you need to meet the new requirement yet need to maintain the records that already keep in existing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;SQL&lt;/span&gt; CE 2.0 database. You do not want to create a new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;SQL&lt;/span&gt; CE 3.0 database and import back all the records, ain't you? Then, this is where &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;SQL&lt;/span&gt; CE database upgrade comes in.&lt;br /&gt;&lt;br /&gt;How will one know the database file (*.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;sdf&lt;/span&gt;) is not workable in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;SQL&lt;/span&gt; CE 3.0 ? Simple, open it from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;MSSQL&lt;/span&gt; Management Studio (Sorry, you need full version to run it). If you see this message, clearly you need to upgrade your database.&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5109542875044038578" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/Rui-LF-gx7I/AAAAAAAAACU/jP8tXlT9UBw/s400/MSSQL_MgtStudio.gif" border="0" /&gt;Now I will show you how to upgrade it within the emulator environment, specifically for OS &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;PPC&lt;/span&gt; 2003. It can be done in actual device in the similar way. First, copy all the cabinet files of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;SQL&lt;/span&gt; CE run-time components for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;SQL&lt;/span&gt; CE 2.0 and 3.0 into you emulator, using Windows CE Remote File Viewer. The default location of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;SQL&lt;/span&gt; CE 2.0 run-time components is C:\Program Files\Microsoft Visual Studio 8\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;SmartDevices&lt;/span&gt;\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;SDK&lt;/span&gt;\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;SQL&lt;/span&gt; Server\Mobile\v2.0\[platform]\[processor] &amp;amp; the default location of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;SQL&lt;/span&gt; CE 3.0 run-time components is &lt;drive&gt;C:\Program Files\Microsoft Visual Studio 8\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;SmartDevices&lt;/span&gt;\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;SDK&lt;/span&gt;\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;SQL&lt;/span&gt; Server\Mobile\v3.0\[platform]\[processor]. You also need a upgrade.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;exe&lt;/span&gt;. This files is located in the same folder with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;SQL&lt;/span&gt; CE 3.0 run-time components.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5109543089792403394" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/Rui-Xl-gx8I/AAAAAAAAACc/F5vOO2DjkxM/s400/cabinet_2.0.gif" border="0" /&gt;&lt;img id="BLOGGER_PHOTO_ID_5109543231526324178" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/Rui-f1-gx9I/AAAAAAAAACk/SHMPHKcTQFQ/s400/cabinet_3.0.gif" border="0" /&gt;Then you need to download the Pocket Shell in &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=74473fd6-1dcc-47aa-ab28-6a2b006edfe9&amp;amp;displaylang=en"&gt;Windows Mobile Developer Power Toys&lt;/a&gt;. It is the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;PPC&lt;/span&gt; version of you desktop command prompt. The default location is in C:\Program Files\Windows Mobile Developer Power Toys\&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;PPC&lt;/span&gt;_Command_Shell\arm. Copy the console.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;dll&lt;/span&gt; to emulator's \WINDOWS directory and copy the shell to emulator root folder for less programming later.&lt;br /&gt;&lt;br /&gt;So now you should have 5 cabinet files(sqlce20.dev.ppc.wce4.armv4.cab, sqlce20.ppc.wce4.armv4.cab, sqlce30.dev.ENU.ppc.wce4.armv4.cab, sqlce30.dev.ppc.wce4.armv4.cab, sqlce30.rep.ppc.wce4.armv4.cab), 3 executable files (upgrade.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;exe&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;cmd&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;exe&lt;/span&gt; &amp;amp; shell.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;exe&lt;/span&gt; &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_34"&gt;from&lt;/span&gt; Power Toy) and one &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;SQL&lt;/span&gt; CE 2.0 database (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;oldDB&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;sdf&lt;/span&gt;). Install all the 5 cabinet files &amp;amp; click on the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;cmd&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;exe&lt;/span&gt; to run it. You will be prompt to enter command.&lt;br /&gt;&lt;br /&gt;Type something like: &lt;strong&gt;upgrade.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;exe&lt;/span&gt; /s &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;oldDB&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;sdf&lt;/span&gt; /d &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;newDB&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;sdf&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5109192848094316386" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_N2VfwXjUyUU/Rud_01-gx2I/AAAAAAAAABs/nLOfWvTOxLA/s320/shell.GIF" border="0" /&gt;viola! (You need to wait a while if your database is huge)&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5109193556763920242" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/RueAeF-gx3I/AAAAAAAAAB0/9m-SN4tBQ90/s320/upgrade_success.GIF" border="0" /&gt;Try to open it with desktop MSSQL:&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5109544348217821170" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_N2VfwXjUyUU/Rui_g1-gx_I/AAAAAAAAAC0/MZpKC3u1bR4/s400/MSSQL_Done.gif" border="0" /&gt;&lt;br /&gt;&lt;p&gt;If you have missed any cabinet file during installation (eg. you did not install "sqlce30.rep.ppc.wce4.armv4.cab"), you will get this error message:&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5109195042822604690" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp3.blogger.com/_N2VfwXjUyUU/RueB0l-gx5I/AAAAAAAAACE/L1BlAQ5kfKo/s320/updateFailed.gif" border="0" /&gt; Try to export the upgrade.log file to analyze:&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5109195485204236194" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_N2VfwXjUyUU/RueCOV-gx6I/AAAAAAAAACM/uBbegAwJokU/s320/upgrade_log.GIF" border="0" /&gt;In this case, you will get:&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;strong&gt;&lt;em&gt;Connecting to source databaseCreating destination databaseUnable to instantiate SQL CE 3.0 provider&lt;br /&gt;HRESULT: 0x80040154Database upgrade failed&lt;/em&gt;&lt;/strong&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-3723877008723097201?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/3723877008723097201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=3723877008723097201' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/3723877008723097201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/3723877008723097201'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2007/09/sql-ce-database-upgrade.html' title='SQL CE database upgrade'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_N2VfwXjUyUU/Rui-LF-gx7I/AAAAAAAAACU/jP8tXlT9UBw/s72-c/MSSQL_MgtStudio.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3891346170516717444.post-4925041243981594271</id><published>2007-09-11T21:56:00.000+08:00</published><updated>2007-09-11T23:17:11.435+08:00</updated><title type='text'>First blog</title><content type='html'>Hi, this is my first blog. Since my hobby is programming, of course most of the blogs will relate to programming. Haha.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3891346170516717444-4925041243981594271?l=start-coding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://start-coding.blogspot.com/feeds/4925041243981594271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3891346170516717444&amp;postID=4925041243981594271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4925041243981594271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3891346170516717444/posts/default/4925041243981594271'/><link rel='alternate' type='text/html' href='http://start-coding.blogspot.com/2007/09/sql-ce-20-database-upgrade.html' title='First blog'/><author><name>gary</name><uri>http://www.blogger.com/profile/14341234358005844724</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='20' height='32' src='http://4.bp.blogspot.com/_N2VfwXjUyUU/Sy2lsQbX7tI/AAAAAAAABAY/Uq-o7ukhQIc/S220/DSC00770.jpg'/></author><thr:total>0</thr:total></entry></feed>
