<?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-7690408</id><updated>2012-06-03T21:39:18.574+08:00</updated><category term='EPM'/><category term='aspnet'/><category term='xml'/><category term='iis'/><category term='web'/><category term='Reporting Service'/><category term='Office'/><category term='security'/><category term='programming'/><category term='SQL Server 2005'/><category term='Windows Server 2008'/><category term='msi'/><category term='DotNet'/><category term='Windows'/><category term='Generics'/><category term='sql server'/><category term='sharepoint'/><category term='csharp'/><category term='Firefox'/><category term='Product Development'/><category term='sql'/><category term='Expression'/><category term='web service'/><category term='Fiddler'/><category term='Visual Basic'/><category term='design'/><category term='command line'/><category term='project'/><category term='visualstudio'/><category term='WPF'/><category term='management'/><title type='text'>Jonathan Yong</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default?start-index=26&amp;max-results=25'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>175</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7690408.post-4102728367419248671</id><published>2011-05-20T11:28:00.003+08:00</published><updated>2011-05-20T11:38:11.870+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Expression'/><title type='text'>Installing Expresion Blend 4 SP1</title><content type='html'>If you get the message "Upgrade not applicable" when trying to install Expression Blend 4 SP1, this is most likely because you already have the Windows Phone Development Tool installed.&lt;br /&gt;&lt;br /&gt;WPDT will install a copy of Blend with SP1 to design Windows Phone Silverlight app.&lt;br /&gt;&lt;br /&gt;If your version of Blend is : 4.0.20901.0, then you already have the SP1 installed.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=17872a3a-4620-4b87-9d62-f29173d12625"&gt;Expresion Blend 4 SP 1 Download page&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-4102728367419248671?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/4102728367419248671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=4102728367419248671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/4102728367419248671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/4102728367419248671'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2011/05/installing-expresion-blend-4-sp1.html' title='Installing Expresion Blend 4 SP1'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-142355611972613159</id><published>2011-05-09T00:58:00.002+08:00</published><updated>2011-05-09T00:59:56.872+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualstudio'/><title type='text'>Running Visual Studio Load Test</title><content type='html'>If you are creating a load test in Visual Studio, the load test result will be saved to a SQL Server database.&lt;br /&gt;&lt;br /&gt;There is a one time setup which you need to do in order to save the result into the database.&lt;br /&gt;&lt;br /&gt;1) &lt;b&gt;You need to create the database schema&lt;/b&gt; in a SQL Server database. To do this, run the following sql script in SQL Server to create the database:&lt;br /&gt;&lt;i&gt;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\loadtestresultsrepository.sql&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Note : Use 'Program Files' if you are on 32bit. Use 'Program Files (x86)' if you are on 64bit.&lt;br /&gt;Use 'Microsoft Visual Studio 10.0' if you are using Visual Studio 2010. Use 'Microsoft Visual Studio 9.0' if you are using Visual Studio 2008.&lt;br /&gt;&lt;br /&gt;The default database name is 'LoadTest2010' (for VS 2010) and 'LoadTest' (for VS 2008).&lt;br /&gt;&lt;br /&gt;2) &lt;b&gt;You need to configure the database connection string&lt;/b&gt; in Visual Studio so that the load test know where to save the test result. To do this, &lt;br /&gt;go to menu Test -&gt; Manage Test Controller, then click on the browse button to enter you connection string.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-8hmWSebA7Wc/TcbL1NkTTVI/AAAAAAAAAGM/3rlHb4Vc_o4/s1600/configure_testresult_db.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 345px;" src="http://4.bp.blogspot.com/-8hmWSebA7Wc/TcbL1NkTTVI/AAAAAAAAAGM/3rlHb4Vc_o4/s400/configure_testresult_db.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5604390901344587090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You only need to do these steps once. The same database will be used for all load tests for all projects.&lt;br /&gt;&lt;br /&gt;If you do not do the above steps, you won't be able to see result after you run the load test.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-142355611972613159?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/142355611972613159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=142355611972613159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/142355611972613159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/142355611972613159'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2011/05/running-visual-studio-load-test.html' title='Running Visual Studio Load Test'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-8hmWSebA7Wc/TcbL1NkTTVI/AAAAAAAAAGM/3rlHb4Vc_o4/s72-c/configure_testresult_db.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-3561719813720987609</id><published>2011-05-09T00:54:00.001+08:00</published><updated>2011-05-09T00:56:29.851+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualstudio'/><category scheme='http://www.blogger.com/atom/ns#' term='Fiddler'/><title type='text'>Save Fiddler Session as Visual Studio Web Test</title><content type='html'>Fiddler enable you save a recording session as 'Visual Sudio Web Test'. The web test can then be added to the Visual Studio test project.&lt;br /&gt;This function used to be acceesible from menu File -&gt; Save.&lt;br /&gt;&lt;br /&gt;However, if you are using a newer build (release since early 2011), this function has been moved to File -&gt; Export Session. You can choose 'Visual Studio Web Test' from the dialog drop down.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-fBasDcZGcGE/TcbLFGEorSI/AAAAAAAAAGE/Uuc8fok_cik/s1600/fiddler_export_as_webtest.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 164px;" src="http://1.bp.blogspot.com/-fBasDcZGcGE/TcbLFGEorSI/AAAAAAAAAGE/Uuc8fok_cik/s400/fiddler_export_as_webtest.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5604390074699001122" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-3561719813720987609?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/3561719813720987609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=3561719813720987609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/3561719813720987609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/3561719813720987609'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2011/05/save-fiddler-session-as-visual-studio.html' title='Save Fiddler Session as Visual Studio Web Test'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-fBasDcZGcGE/TcbLFGEorSI/AAAAAAAAAGE/Uuc8fok_cik/s72-c/fiddler_export_as_webtest.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-917026318382373848</id><published>2011-02-20T12:01:00.003+08:00</published><updated>2011-02-20T12:07:13.511+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Hidden configuration for Firefox</title><content type='html'>There is another way to tweak configuration in Firefox. Type 'about:config' in the location bar and hit &amp;lt;enter&amp;gt;. Firefox will then display a configuration screen which has more configuration options than you can find in the normal Tools -&gt; Options.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-917026318382373848?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/917026318382373848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=917026318382373848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/917026318382373848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/917026318382373848'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2011/02/hidden-configuration-for-firefox.html' title='Hidden configuration for Firefox'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-8984392420788139926</id><published>2010-06-20T12:12:00.026+08:00</published><updated>2010-06-20T14:25:42.795+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualstudio'/><category scheme='http://www.blogger.com/atom/ns#' term='aspnet'/><category scheme='http://www.blogger.com/atom/ns#' term='msi'/><title type='text'>Creating a Web Setup Project for asp.net Application Using Visual Studio</title><content type='html'>This is a tutorial how you can create a simple web setup project for your asp.net application. We will also add a new wizard step into the msi setup wizard to allow user to choose which environment he is installing and the msi will deploy the appropriate web.config specific for that environment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Create a new Web Application project in Visual Studio&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jRUlOncToWc/TB2X6rLvkgI/AAAAAAAAADE/9LA9D0NnS_4/s1600/01-create_web_app.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 284px;" src="http://1.bp.blogspot.com/_jRUlOncToWc/TB2X6rLvkgI/AAAAAAAAADE/9LA9D0NnS_4/s400/01-create_web_app.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484706955487318530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. Insert the following appSetting into web.config&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jRUlOncToWc/TB2YmuloIvI/AAAAAAAAADM/dX0AIYddjGM/s1600/02-webconfig.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 140px;" src="http://2.bp.blogspot.com/_jRUlOncToWc/TB2YmuloIvI/AAAAAAAAADM/dX0AIYddjGM/s400/02-webconfig.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484707712315433714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Copy paste the web.config 3 times and rename to the following file name:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jRUlOncToWc/TB2Z8ypZ3mI/AAAAAAAAADU/g-D30OHzUr8/s1600/03-webconfig_env.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 243px; height: 241px;" src="http://4.bp.blogspot.com/_jRUlOncToWc/TB2Z8ypZ3mI/AAAAAAAAADU/g-D30OHzUr8/s400/03-webconfig_env.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484709190873767522" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Each of the 3 files contain configuration that is specific to their environment(development, SIT and production). You can add more configuration to the config file depend on your application need. We will use these files in the web setup project later.&lt;br /&gt;&lt;br /&gt;4. Update each of the new web.config to reflect its environment:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jRUlOncToWc/TB2dM1wuArI/AAAAAAAAADc/25fgRi-SfH8/s1600/04-webconfig_env2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 383px; height: 204px;" src="http://1.bp.blogspot.com/_jRUlOncToWc/TB2dM1wuArI/AAAAAAAAADc/25fgRi-SfH8/s400/04-webconfig_env2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484712765122544306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5. Add a new Web Setup Project into the solution.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jRUlOncToWc/TB2f7lBcTlI/AAAAAAAAADk/klPMx_w-n4A/s1600/05-add_web_setup_project.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 255px;" src="http://2.bp.blogspot.com/_jRUlOncToWc/TB2f7lBcTlI/AAAAAAAAADk/klPMx_w-n4A/s400/05-add_web_setup_project.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484715767106391634" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After you add the Setup project,&lt;br /&gt;Select the Web Application Folder, in the property window, modify the virtual directory name. This is the default virtual directory name which will be installed into IIS. You can change this later during the installation. If you cannot see the Web Application Folder, select the Web Setup project, in visual studio menu, go to View -&gt; Editor -&gt; File System.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jRUlOncToWc/TB2wFrTsgyI/AAAAAAAAAFc/GCyNTKK4O0Q/s1600/05b-set_virtualdir.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 349px;" src="http://2.bp.blogspot.com/_jRUlOncToWc/TB2wFrTsgyI/AAAAAAAAAFc/GCyNTKK4O0Q/s400/05b-set_virtualdir.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484733532778300194" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. Right click in the Web Setup project and select Add -&gt; Project output.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jRUlOncToWc/TB2gOR2PEBI/AAAAAAAAADs/bxuekTCiSCI/s1600/06-add_project_output.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 363px;" src="http://4.bp.blogspot.com/_jRUlOncToWc/TB2gOR2PEBI/AAAAAAAAADs/bxuekTCiSCI/s400/06-add_project_output.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484716088376627218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7. Make sure the web application in the current solution is selected, then select Primary Output and Content files. This will add the binaries and necessary files into the msi for installation.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jRUlOncToWc/TB2gaj7wp_I/AAAAAAAAAD0/Wd3XqD4RQ2A/s1600/07-add_project_output.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 351px; height: 400px;" src="http://2.bp.blogspot.com/_jRUlOncToWc/TB2gaj7wp_I/AAAAAAAAAD0/Wd3XqD4RQ2A/s400/07-add_project_output.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484716299390068722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;8. Right click in the Web Setup project and select Add -&gt; Files. Add the three environment specific web.config file into the setup project.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jRUlOncToWc/TB2gik3ehkI/AAAAAAAAAD8/aVxENUw294M/s1600/08-add_env_webconfig.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 303px; height: 245px;" src="http://4.bp.blogspot.com/_jRUlOncToWc/TB2gik3ehkI/AAAAAAAAAD8/aVxENUw294M/s400/08-add_env_webconfig.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484716437079492162" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now we will begin the steps to add a new dialog to our installer. This dialog will enable user to choose which environment he want to install and the installer will deploy the appropriate web.config file to the installed folder.&lt;br /&gt;&lt;br /&gt;9. Make sure the Web Setup Project is selected. In the visual studio menu, go to View -&gt; Editor -&gt; User Interface. You will now see the list of dialogs which will be presented during the installation time.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jRUlOncToWc/TB2jhvHcMkI/AAAAAAAAAEE/16FQDV731_g/s1600/09-add_ui.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 143px;" src="http://2.bp.blogspot.com/_jRUlOncToWc/TB2jhvHcMkI/AAAAAAAAAEE/16FQDV731_g/s400/09-add_ui.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484719721185817154" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;10. Right click on the Start node and select Add Dialog.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jRUlOncToWc/TB2jor8b_CI/AAAAAAAAAEM/Jv9WVWCeSoc/s1600/10-add_dlg_menu.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 238px; height: 161px;" src="http://1.bp.blogspot.com/_jRUlOncToWc/TB2jor8b_CI/AAAAAAAAAEM/Jv9WVWCeSoc/s400/10-add_dlg_menu.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484719840593443874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;11. Select the Radio Buttons (3 buttons) dialog&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jRUlOncToWc/TB2j0-_wiTI/AAAAAAAAAEU/0tHo91xrYRo/s1600/11-add_dlg.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 211px;" src="http://3.bp.blogspot.com/_jRUlOncToWc/TB2j0-_wiTI/AAAAAAAAAEU/0tHo91xrYRo/s400/11-add_dlg.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484720051866077490" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;12. Right click on the new dialog you just added and select Move Up. This is to re-order the sequence of dialog presentation during installation time.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jRUlOncToWc/TB2kTQHkrGI/AAAAAAAAAEc/wO4x9tbZzsw/s1600/12-move_up.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 326px; height: 180px;" src="http://1.bp.blogspot.com/_jRUlOncToWc/TB2kTQHkrGI/AAAAAAAAAEc/wO4x9tbZzsw/s400/12-move_up.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484720571858332770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The dialog sequence should look like this after you complete the step.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_jRUlOncToWc/TB2kbcktGWI/AAAAAAAAAEk/vKVWxPINa94/s1600/12b-move_up.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 223px; height: 118px;" src="http://2.bp.blogspot.com/_jRUlOncToWc/TB2kbcktGWI/AAAAAAAAAEk/vKVWxPINa94/s400/12b-move_up.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484720712640698722" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;13. Select the Radio Button dialog, and in the property window, modify the property value to match the following:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jRUlOncToWc/TB2zX2xo1sI/AAAAAAAAAFk/yJt6xIF8e3g/s1600/13-configure_dialog.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 312px; height: 293px;" src="http://3.bp.blogspot.com/_jRUlOncToWc/TB2zX2xo1sI/AAAAAAAAAFk/yJt6xIF8e3g/s400/13-configure_dialog.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484737143629207234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The value of the ButtonProperty is the name which will be used for lookup later. The value you specified for ButtonProperty is case sensitive. The ButtonValue is the value which will be set into the lookup name specified by te ButtonProperty. For example, if you select SIT, "2" will be assigned to ENVIRONMENT.&lt;br /&gt;&lt;br /&gt;14. Now select the web.config_dev in the Web Setup project. In the property window, set the Condition and target name to match the following:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_jRUlOncToWc/TB2psnmd12I/AAAAAAAAAE0/Vv6kM7J3UT8/s1600/14-set_condition.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 250px; height: 400px;" src="http://3.bp.blogspot.com/_jRUlOncToWc/TB2psnmd12I/AAAAAAAAAE0/Vv6kM7J3UT8/s400/14-set_condition.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484726505216792418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Repeat the same for web.config_sit (set the condition to ENVIRONMENT="2") and web.config_prod  (set the condition to ENVIRONMENT="3") &lt;br /&gt;If you specify a condition, the file will only be install if the condition is evaluated to true. The value for ENVIRONMENT is assigned in the Radion Button dialog depend on which radio button you select. Remember "ENVIRONMENT" is case sensitve. It has to match the ButtonProperty value which you specified in the Radio Button dialog.&lt;br /&gt;The TargetName is the actual name for the file when it is copied into the installed folder. In this case, we want to rename it to web.config &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;15. Next, we want to exclude the original web.config file from the web application project. The final web.config will be copied from either one of three environment specific web.confg file. In the Web Setup project, right click on the Content Files, select Exclude Filter.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jRUlOncToWc/TB2rdy_qx1I/AAAAAAAAAE8/MArnxe-gt04/s1600/15-select-exclude_filter.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 308px; height: 306px;" src="http://1.bp.blogspot.com/_jRUlOncToWc/TB2rdy_qx1I/AAAAAAAAAE8/MArnxe-gt04/s400/15-select-exclude_filter.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484728449600505682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Add web.config to the filter dialog and click OK.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jRUlOncToWc/TB2rk9L-xXI/AAAAAAAAAFE/Jy7GMQtwW4g/s1600/16-add_filter.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 204px;" src="http://1.bp.blogspot.com/_jRUlOncToWc/TB2rk9L-xXI/AAAAAAAAAFE/Jy7GMQtwW4g/s400/16-add_filter.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484728572595586418" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can now build the installer and run the MSI to install your web application. Remember to run the MSI as administrator if you are in Vista and above.&lt;br /&gt;&lt;br /&gt;You will see the installer wizard dialog as following:&lt;br /&gt;This is the standard dialog for web appliction.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jRUlOncToWc/TB2s4H_AilI/AAAAAAAAAFM/myHZytNMzGk/s1600/17-install_address.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 326px;" src="http://4.bp.blogspot.com/_jRUlOncToWc/TB2s4H_AilI/AAAAAAAAAFM/myHZytNMzGk/s400/17-install_address.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484730001423108690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is the dialog which we add to allow user to choose the installation environment.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jRUlOncToWc/TB2tAUvkBoI/AAAAAAAAAFU/kAWzCmJYpSE/s1600/17b-install_env.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 259px;" src="http://1.bp.blogspot.com/_jRUlOncToWc/TB2tAUvkBoI/AAAAAAAAAFU/kAWzCmJYpSE/s400/17b-install_env.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484730142286939778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After the installation complete, you can open the web.config to verify the correct file for that environment has been installed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-8984392420788139926?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/8984392420788139926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=8984392420788139926' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/8984392420788139926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/8984392420788139926'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2010/06/creating-web-setup-project-for-aspnet.html' title='Creating a Web Setup Project for asp.net Application Using Visual Studio'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_jRUlOncToWc/TB2X6rLvkgI/AAAAAAAAADE/9LA9D0NnS_4/s72-c/01-create_web_app.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-787739333228826652</id><published>2010-06-20T11:58:00.003+08:00</published><updated>2010-06-20T12:11:40.435+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DotNet'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><title type='text'>Encoding XML Special Characters</title><content type='html'>To encode string which has XML special characters so that it can be inserted as valid text into xml node, you can use the following API in System.Security namespace.&lt;br /&gt;&lt;pre style="border:solid 1px"&gt;&lt;br /&gt;string s = System.Security.SecurityElement.Escape(&amp;quot;&amp;lt;&amp;gt;&amp;amp;&amp;quot;);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This will produce the following output:&lt;br /&gt;&lt;pre style="border:solid 1px"&gt;&lt;br /&gt;&amp;amp;lt;&amp;amp;gt;&amp;amp;amp;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-787739333228826652?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/787739333228826652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=787739333228826652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/787739333228826652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/787739333228826652'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2010/06/encoding-xml-special-characters.html' title='Encoding XML Special Characters'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-179056220115000676</id><published>2010-06-20T11:41:00.002+08:00</published><updated>2010-06-20T11:47:58.801+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='web service'/><title type='text'>How to XML serialize simple type as different element name for Generic Collection Type Argument</title><content type='html'>For web service method's parameter which is a generic collection with simple type as the type argument, the type name will be used as the XML element name in the array child node by default.&lt;br /&gt;&lt;br /&gt;Example, if below is your web service method&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;public string DoWork1(List&amp;lt;string&amp;gt; partNames)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The soap message will looks like the following:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_jRUlOncToWc/TB2PC035PoI/AAAAAAAAAC0/zTeNWdhFogg/s1600/standard_element_name.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 387px; height: 285px;" src="http://4.bp.blogspot.com/_jRUlOncToWc/TB2PC035PoI/AAAAAAAAAC0/zTeNWdhFogg/s400/standard_element_name.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484697199922724482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;However, you can change the XML element name by specifying a &lt;b&gt;XmlArrayItem&lt;/b&gt; attribute to the method's parameter&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;public string DoWork2([XmlArrayItem(ElementName = &amp;quot;blah&amp;quot;)]List&amp;lt;string&amp;gt; partNames)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jRUlOncToWc/TB2PT4B-YMI/AAAAAAAAAC8/cMlxZ-Us_F0/s1600/custom_element_name.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 373px; height: 284px;" src="http://1.bp.blogspot.com/_jRUlOncToWc/TB2PT4B-YMI/AAAAAAAAAC8/cMlxZ-Us_F0/s400/custom_element_name.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5484697492828086466" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-179056220115000676?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/179056220115000676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=179056220115000676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/179056220115000676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/179056220115000676'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2010/06/how-to-xml-serialize-simple-type-as.html' title='How to XML serialize simple type as different element name for Generic Collection Type Argument'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_jRUlOncToWc/TB2PC035PoI/AAAAAAAAAC0/zTeNWdhFogg/s72-c/standard_element_name.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-324909391242308299</id><published>2010-03-10T17:57:00.004+08:00</published><updated>2010-03-10T18:08:19.625+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='command line'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008'/><title type='text'>Finding files in your drive using command prompt</title><content type='html'>There is a command line called &lt;b&gt;where&lt;/b&gt; for finding files in your drive:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_jRUlOncToWc/S5dts0sIdaI/AAAAAAAAACs/0IQS23BJ2uI/s1600-h/where_cmd.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand; " src="http://1.bp.blogspot.com/_jRUlOncToWc/S5dts0sIdaI/AAAAAAAAACs/0IQS23BJ2uI/s400/where_cmd.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5446942891153323426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;where /R . gacutil&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The command above find the location of gacutil recursively(/R) starting from the current directory.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-324909391242308299?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/324909391242308299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=324909391242308299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/324909391242308299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/324909391242308299'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2010/03/finding-files-in-your-drive-using.html' title='Finding files in your drive using command prompt'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_jRUlOncToWc/S5dts0sIdaI/AAAAAAAAACs/0IQS23BJ2uI/s72-c/where_cmd.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-5814600183598814767</id><published>2009-11-17T18:55:00.000+08:00</published><updated>2009-11-17T18:57:09.308+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><title type='text'>Quick (and dirty) way of finding impact of field changes</title><content type='html'>If you are going to change a database table field and want to know what stored proc or UDF will be affected, you can use the following query as a quick and dirty way to find out which stored proc or UDF is using that field.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;SELECT routine_name, routine_definition&lt;br /&gt;FROM INFORMATION_SCHEMA.routines&lt;br /&gt;WHERE ROUTINE_DEFINITION LIKE '%TextToSearch%'&lt;br /&gt;ORDER BY last_altered DESC&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-5814600183598814767?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/5814600183598814767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=5814600183598814767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/5814600183598814767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/5814600183598814767'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2009/11/quick-and-dirty-way-of-finding-impact.html' title='Quick (and dirty) way of finding impact of field changes'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-7236992030440473837</id><published>2008-12-02T22:04:00.003+08:00</published><updated>2008-12-02T22:13:51.328+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Service'/><title type='text'>Extra blank page when Save to PDF from SQL Reporting Service</title><content type='html'>When you save a report as PDF from Sql Reporting Services, you might see an extra blank page in between the pages in the report. This is due to the actual print out size exceed the page size that is specified. &lt;br /&gt;&lt;br /&gt;For example, you specify your report size to be width (11 in) x height (8.5 in) which is a A4 size. However in the body of the report, you might have specify (intentionally or unintentionally) the size to be larger than that. When you save the report to PDF, you will see a blank page because the report size actually run over the page size.&lt;br /&gt;&lt;br /&gt;To solve this problem, make sure you check the Size and Margin property of both the Report and Body (you can access this from the properties window).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-7236992030440473837?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/7236992030440473837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=7236992030440473837' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/7236992030440473837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/7236992030440473837'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/12/extra-blank-page-when-save-to-pdf-from.html' title='Extra blank page when Save to PDF from SQL Reporting Service'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-1956787524541654566</id><published>2008-12-02T22:01:00.000+08:00</published><updated>2008-12-02T22:02:06.069+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Basic'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Visual Basic Divide operator</title><content type='html'>For non profressional Visual Basic developer it might not be apparent that VB has two divide operator.&lt;br /&gt;&lt;br /&gt;The first divide operator which is more commonly used is '/'. This operator will return the result with decimal&lt;br /&gt;if the number being divided (also call &lt;a href="http://en.wikipedia.org/wiki/Division_(mathematics)" target="_blank"&gt;dividend&lt;/a&gt;)&lt;br /&gt;cannot be fully divide by the divisor.&lt;br /&gt;&lt;br /&gt;The second divide operator '\', which is also called integer division will always return the result (also call &lt;a href="http://en.wikipedia.org/wiki/Quotient" target="_blank"&gt;Quotient&lt;/a&gt;) in integer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-1956787524541654566?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/1956787524541654566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=1956787524541654566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/1956787524541654566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/1956787524541654566'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/12/visual-basic-divide-operator.html' title='Visual Basic Divide operator'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-835999548743216336</id><published>2008-08-17T23:00:00.001+08:00</published><updated>2008-08-17T23:03:02.118+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='management'/><title type='text'>Essence of Growing the Company</title><content type='html'>As company start to mature and grow in business or there is a sudden boom of business opportunity, they also start to hire aggressively. This is a natural progress. However, sometime this transition has a negative effect on the company and to the employees if the growth is not managed properly.&lt;br /&gt;&lt;br /&gt;First, when the number of employees increases, the management and reporting structure also need to be changed. When the company has only 15 employees, everyone can easily get into each other and know what is going on in the company. The CEO can easily talk to any employees because they sit closer in the smaller office space and it is easy to address 10 to 15 peoples. The CEO can almost oversee everything in the company. However, when the company grow to 30 or 40 peoples, the situation start to change. The CEO and senior management will spend more time on business matters and less time in internal company affairs. The office space will also expand and possibly has remote office. This means that management has less time to understand employees’ affairs and improve the company for their employees. At this stage, HR play an important role to serve as the voice between the employees and the management. An important part of the HR job is to ensure the employees satisfaction is always remain high and play an proactive role in driving the company and employees improvement. &lt;br /&gt;&lt;br /&gt;Second, one of the tough changes when a small company transition into a more mature middle size company is the reluctance of the CEO or founder of the company to relinquish management control to the rest of the management team. This is a difficult change for a lot founders as they still see the company as "their own company" rather than develop an objective and separate view between their ownership of the company and what is good for the long term future of the company.&lt;br /&gt;&lt;br /&gt;Third, job function still start to specialized and new reporting hierarchy is introduced. This means employees will become more distanced from each other. Managers play a vital role in understanding the company direction and hold the team tight by delivering the message to their subordinate and drive everyone towards the same direction.&lt;br /&gt;&lt;br /&gt;Forth, the culture and style of working will also undergo changes. As the business and employee size has grown,  company might start to put in new company governance policy because management need a more structured way to operate the team in a more self-sustained way. The company may also need a new set of core values in order for them to succeed in the next stage.&lt;br /&gt;&lt;br /&gt;It is unavoidable that in this stage, the company and the employees will go through the growing pain. Some employees will feel resistant to the change, some employees will feel that company  is now trying to restrict their freedom, some employees just have no clue why the company is doing this and that. Just like a kid who transition into a teenager or a teenager who transition in an adult.  During this transition, some people who had not done well in their earlier life will find their direction and excel in it. Some will lost their direction or get influenced by some bad friends and goes bad. The growing pain need to be managed well so that it doesn’t goes out of control.&lt;br /&gt; &lt;br /&gt;First of all, the founders need to maintain an objective view of what is good and needed for the company to succeed in their new stage. This includes stepping aside and promoting someone or even hiring someone from outside the company who are more capable to take on their responsibility. By releasing some of their day to day responsibilities, the founders can have more time to look at the company and business in a broader view, set new direction and prepare the company for their next life. This is same as if you are already holding a handful of things in your hand, you cannot grab new things unless you release what you are currently holding.&lt;br /&gt;&lt;br /&gt;Second, employees need to be addressed so that they understand what is happening within the company, the rationale behind the series of changes that is taking place in the company, what is expected from them and how they can contribute to the continuous success of the company. It is important for all employees to understand the business landscape so that they appreciate their role better not just in term of the niche view of the organization chart, but also from the perspective of the business and how they can make a difference and impact. It also help employee to understand what they need and develop new mindset in order to do better and adapt to the new changes and culture in the company.&lt;br /&gt;&lt;br /&gt;Third, employees need to be prepared for the change. This include develop new and nurture leadership within the company long before changes start to take place. Employees need to be trained, guided and empowered   to make decision and take on additional responsibility beyond what is expected from them. Founders and managers need to understand that in order for them to do something bigger, they need someone who can replace them and do their job so that they can move up higher. Leadership is about replicating more leaders, not just how to do a new job.  This include training the new born leaders to understand business landscape, how to make tradeoff and decision, how to lead people, how to develop new leadership, how to be caring (if you don’t care enough, how can you make change), develop new skill sets and so on. The skill sets and mentality needed to be a manager and leader is different from those of regular team player. Leadership takes time to nurture. It is not something that can happen overnight.&lt;br /&gt;&lt;br /&gt;Forth, don’t hire too aggressively. Whether you are hiring people who are experience or inexperience, these new employees will go through a learning curve and adapt to a new working culture. You need to have enough leadership within the company to guide them to a productive stage.  Of course you should only hire people who can swim on their own, but it doesn’t mean you can neglect them in a corner just busy with their own work.  Leadership and guidance is still needed to align them to the company’s culture and core values and their progress need to be monitored until they are truly productive in the company. Make sure your existing employees are prepared to guide new peoples before you start to employ in big ways.&lt;br /&gt;&lt;br /&gt;Fifth, before you even start expanding the number of employees in the company, make sure the existing employees are happy. There is no point if on one hand the company is hiring new employees, but on the other hand is losing good employees. There are usually three reasons why an employee leaves the company:&lt;br /&gt;&lt;UL&gt;&lt;br /&gt;&lt;LI&gt;First, their remuneration is not up to the market standard. In simple words, they are under paid. If this is the case, it is a simple fix.&lt;br /&gt;&lt;LI&gt;Second, bad manager. Employees  leave the company because they cannot get along with their manager or the manager is simply not capable.  This is a much harder problem to identify and fix.  One way to spot this is to allow employees to appraise their manager during the appraisal and review period.&lt;br /&gt;&lt;LI&gt;Third, employees feel that they are stagnant in the company. This usually happen in company where no new business is developed, the employee is put in the same position doing the same old thing for a long time or the company has not prepare these people to move up in their careers.&lt;br /&gt;&lt;/UL&gt;&lt;br /&gt;&lt;br /&gt;I believe leadership and core values are more important for the long term success of the company than the employees’ past experience and skill sets. Experience and skill sets can be rendered useless when business nature and job role are changed. Leadership and core values are what keep people moving in the same direction.&lt;br /&gt;&lt;br /&gt;I have seen some companies which have been staying in the same size for a long period of time due to lacks of leadership within the company.  The company is mainly drive by the same person over many years and how much one or two person can accomplish?&lt;br /&gt;&lt;br /&gt;I have also seen companies that outgrowth themselves. They hire so fast and so aggressively that they have no way to manage the situation and things simply goes out of control. This phenomenon is especially obvious during the dot com boom days.  It also happen in companies that get external funding. When some companies got funded, they just simply hire new employees just for the sake of expansion.&lt;br /&gt;&lt;br /&gt;I believe that the essence of growing a company is that management needs to instill leadership from day one of the company life and prepare their employees to growth with the company and take on new role when the company expands. This has to happen before the company actually grow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-835999548743216336?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/835999548743216336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=835999548743216336' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/835999548743216336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/835999548743216336'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/08/essence-of-growing-company.html' title='Essence of Growing the Company'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-1668560285045360818</id><published>2008-08-02T17:22:00.001+08:00</published><updated>2008-08-02T17:24:44.247+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>DataBoy v1.0.6.2 is Out!</title><content type='html'>DataBoy v1.0.6.2 is released!&lt;br /&gt;&lt;br /&gt;New features include:&lt;br /&gt;&lt;UL&gt;&lt;br /&gt;&lt;LI&gt;Ctrl + Shift + (Left/Right cursor) short cut key to switch between Result and Message tab.&lt;br /&gt;&lt;LI&gt;Connection time out setting for SQL Server connection.&lt;br /&gt;&lt;LI&gt;Open and Save connection as Connection Group to a file.&lt;br /&gt;&lt;LI&gt;Remember last session.&lt;br /&gt;&lt;LI&gt;Option to persist login info. Select Persist Login Info if you want database user name and password to be saved with the connection when you save a connection group.&lt;br /&gt;&lt;LI&gt;Table column ordering in the data explorer panel tree view is now according to the sequence in the meta data.&lt;br /&gt;&lt;/UL&gt;&lt;br /&gt;&lt;br /&gt;You can download Databoy from Codeplex : &lt;a href="http://www.codeplex.com/databoy" target="_blank"&gt;Databoy&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-1668560285045360818?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/1668560285045360818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=1668560285045360818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/1668560285045360818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/1668560285045360818'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/08/databoy-v1062-is-out.html' title='DataBoy v1.0.6.2 is Out!'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-1222886949398096195</id><published>2008-07-30T11:16:00.002+08:00</published><updated>2008-07-30T11:25:29.723+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPM'/><category scheme='http://www.blogger.com/atom/ns#' term='project'/><title type='text'>Project Server 2007 : Queue system could not start</title><content type='html'>If your project server 2007 deployment use a different account for the farm service and Shared Service Provider (SSP), you might face some problem with the Project Server Queue Service.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;By default, the Project Server Queue Service run under the account that is used for the farm service. If your queue job cannot be processed and you see the following message in Event Viewer :&lt;br /&gt;&lt;br /&gt;Queue system could not start. SSP: {guid}.&lt;br /&gt;&lt;br /&gt;Try change the Project Server Queue Service account to the one that is used to run the Shared Service Provider.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Go to Services and change the &lt;i&gt;Microsoft Office Project Server Queue Service&lt;/i&gt; service account to the account that is used to run the SSP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-1222886949398096195?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/1222886949398096195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=1222886949398096195' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/1222886949398096195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/1222886949398096195'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/07/project-server-2007-queue-system-could.html' title='Project Server 2007 : Queue system could not start'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-7315649953461119401</id><published>2008-07-23T16:55:00.004+08:00</published><updated>2008-12-02T22:18:12.303+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Service'/><title type='text'>Licensing Requirement to Install Reporting Service on separate server</title><content type='html'>I was asked if the SQL Server Reporting Service is installed in a separate server from where the SQL Server database engine is installed, does it need another SQL Server license?&lt;br /&gt;&lt;br /&gt;Although I am not a licensing expert (and not many people seem to be able to understand Microsoft Licensing scheme), but I can confidently say Yes to the question above.&lt;br /&gt;&lt;br /&gt;The answer lies in the following document:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cid-87f95f1b5b21b01e.skydrive.live.com/self.aspx/Licensing%20Briefs/Licensing%20Briefs%20Current/SQL%20Server%202005%20Licensing%20%7C5long%20version%7C6.doc" target="_blank"&gt;Licensing Doc&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the above scenario, you need two SQL Server license.&lt;br /&gt;&lt;br /&gt;I hope Microsoft can be more open and clear in communicating licensing issue and requirement in the future. It will be good if they can include some of the common deployment scenario for their software together with the licensing requirement in Technet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-7315649953461119401?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/7315649953461119401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=7315649953461119401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/7315649953461119401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/7315649953461119401'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/07/licensing-requirement-to-install.html' title='Licensing Requirement to Install Reporting Service on separate server'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-4654067296168308292</id><published>2008-07-15T17:35:00.002+08:00</published><updated>2008-07-15T17:36:49.629+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008'/><title type='text'>Disable Windows Server Shutdown Reason</title><content type='html'>Windows Server 2003 and 2008 require you to specify a reason everytime you shutdown your server. If you are using Windows Server as your workstation like me, you may find this a bit annoying. Luckily, There is a way to disable it.&lt;br /&gt;&lt;br /&gt;To disable the shut down reason, &lt;br /&gt;1) run gpedit.msc. This will start the Local Group Policy Editor.&lt;br /&gt;2) Go to Computer Configuration -&gt; Administrative Templates -&gt; System.&lt;br /&gt;3) Look for 'Display Shutdown Event Tracker'. Then set it to Disabled&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_jRUlOncToWc/SHxvi4wGAmI/AAAAAAAAAB4/5efq8TCI2XM/s1600-h/shutdown_event_tracker.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_jRUlOncToWc/SHxvi4wGAmI/AAAAAAAAAB4/5efq8TCI2XM/s320/shutdown_event_tracker.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5223172312983274082" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-4654067296168308292?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/4654067296168308292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=4654067296168308292' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/4654067296168308292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/4654067296168308292'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/07/disable-windows-server-shutdown-reason.html' title='Disable Windows Server Shutdown Reason'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_jRUlOncToWc/SHxvi4wGAmI/AAAAAAAAAB4/5efq8TCI2XM/s72-c/shutdown_event_tracker.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-1467498063213038692</id><published>2008-07-06T10:42:00.003+08:00</published><updated>2008-07-06T11:00:43.684+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPM'/><category scheme='http://www.blogger.com/atom/ns#' term='project'/><title type='text'>Project 2007 error : "Could not retrieve Enteprise Global Template"</title><content type='html'>When I try to connect the Project 2007 to Project Server for one of my user few days ago, I got an error from MS Project: "Could not retrieve Enteprise Global Template".&lt;br /&gt;&lt;br /&gt;After some googling, Google for "&lt;a href="http://www.google.com.my/search?hl=en&amp;q=%22could+not+retrieve+Enterprise+Global+Template%22&amp;meta=" target="_blank"&gt;Could not retrieve Enteprise Global Template&lt;/a&gt;", I cann't find a sympton and solution that match my situation.&lt;br /&gt;&lt;br /&gt;After some diagnosis and reproduction, I manage to isolate the problem into a case that this error only happen for that user on his computer. I recall that this user has just migrated his profile when he join his computer from workgroup into domain.&lt;br /&gt;&lt;br /&gt;It turn out that after the profile migration, his MS Project cache location is pointing to a location that he currently do not have permission to access anymore. This cause MS Project to fail everytime when it need to retrieve the Enterprise Global Template from the cache. &lt;br /&gt;&lt;br /&gt;This setting is stored in registry. The solution is to remove the setting from the registry and restart MS Project. Remove the following registry key: HKCU\Software\Microsoft\Office\12.0\MS Project\Settings:CacheLocation&lt;br /&gt;&lt;br /&gt;,then restart MS Project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-1467498063213038692?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/1467498063213038692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=1467498063213038692' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/1467498063213038692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/1467498063213038692'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/07/project-2007-error-could-not-retrieve.html' title='Project 2007 error : &quot;Could not retrieve Enteprise Global Template&quot;'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-3227353198651294209</id><published>2008-06-21T13:21:00.002+08:00</published><updated>2008-06-21T13:54:11.520+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><title type='text'>Planning for DataBoy vNext</title><content type='html'>I am currently planning and designing some new feature for the next version of DataBoy. I have receive some feedback for some enhancement that people would like to see. &lt;br /&gt;&lt;br /&gt;This new release will be considered as minor update as there will be no new major feature that require significant design rework. All the new things are just enhancement that make DataBoy more usable.&lt;br /&gt;&lt;br /&gt;Some of the enhancement that is planned includes:&lt;br /&gt;- Short cut key to switch data and message tab.&lt;br /&gt;- Connection time out in the Add Connection dialog (only for SQL Server).&lt;br /&gt;- Set the cursor focus back to sql editor after a query is runned.&lt;br /&gt;- Order column in data explorer tree view according to sequence in meta data.&lt;br /&gt;- Persist database connection.&lt;br /&gt;&lt;br /&gt;My target is to release in four weeks from now.&lt;br /&gt;&lt;br /&gt;I would also like to re-iterate that the objective of DataBoy is to provide a simple tool to query database. It is not meant to be a database management tool. As such, all new feature request will be evaluated and design along this line.&lt;br /&gt;&lt;br /&gt;The two main scenarios in which DataBoy is designed to support are:&lt;br /&gt;a) Application support personnel/Developer can easily copy DataBoy into the end user computer (where there is no dev tool) or a computer where there is no SQl management tool  installed and start querying the database for application diagnosis.&lt;br /&gt;&lt;br /&gt;b) To enable application development with SQL CE much easier. At the time DataBoy was developed, the toolset for working with SQL CE v3.5 was very limited as SQL Server 2008 was not yet release and fully supported.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Having said that, I still welcome all feedbacks and enhancement request.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-3227353198651294209?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/3227353198651294209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=3227353198651294209' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/3227353198651294209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/3227353198651294209'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/06/planning-for-databoy-vnext.html' title='Planning for DataBoy vNext'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-2570958601706187217</id><published>2008-05-20T15:30:00.003+08:00</published><updated>2008-05-20T15:31:27.683+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008'/><title type='text'>Installing SQL Server 2005 and Reporting Service on Windows Server 2008</title><content type='html'>Some helpful link to install SQL Server 2005 and Reporting Service (especially) on Windows Server 2008&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/920201/en-us" target="_blank"&gt;You receive a warning message on the System Configuration Check page of the SQL Server 2005 Setup program on a computer that is running Windows Vista or a Server Core installation of Windows Server 2008&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/938245/" target="_blank"&gt;How to install and how to configure SQL Server 2005 Reporting Services on a computer that is running Windows Server 2008&lt;/a&gt;&lt;br&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/934164" target="_blank"&gt;How to install SQL Server 2005 Reporting Services on a Windows Vista-based computer&lt;/a&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-2570958601706187217?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/2570958601706187217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=2570958601706187217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/2570958601706187217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/2570958601706187217'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/05/installing-sql-server-2005-and.html' title='Installing SQL Server 2005 and Reporting Service on Windows Server 2008'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-9061691912862697754</id><published>2008-05-20T15:12:00.006+08:00</published><updated>2008-05-20T15:22:12.962+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008'/><title type='text'>Changing File Type Association in Windows Server 2008</title><content type='html'>The file type association specify which program are used to open a document by default. In Windows XP and Window Server 2003, this is done by go to &lt;br /&gt;&lt;br /&gt;&lt;i&gt;Tools -&gt; Folder Options&lt;/i&gt; from the Windows Explorer and select the &lt;i&gt;File Type&lt;/i&gt; tab.&lt;br /&gt;&lt;br /&gt;In Windows Server 2008, the UI has changed quite abit. Instead, to accomplish the same thing, you have to go to &lt;i&gt;Control Panel -&gt; Default Programs&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_jRUlOncToWc/SDJ7GMQVcDI/AAAAAAAAABw/S2MdpZ-Rhe8/s1600-h/change_default_association.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_jRUlOncToWc/SDJ7GMQVcDI/AAAAAAAAABw/S2MdpZ-Rhe8/s320/change_default_association.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5202355865865515058" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-9061691912862697754?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/9061691912862697754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=9061691912862697754' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/9061691912862697754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/9061691912862697754'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/05/changing-file-type-association-in.html' title='Changing File Type Association in Windows Server 2008'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_jRUlOncToWc/SDJ7GMQVcDI/AAAAAAAAABw/S2MdpZ-Rhe8/s72-c/change_default_association.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-2988017223571065697</id><published>2008-05-20T14:47:00.005+08:00</published><updated>2008-05-20T14:58:21.788+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008'/><title type='text'>Enabling Wireless on Windows Server 2008</title><content type='html'>After installing Windows Server 2008, it took me quite a while to figure out where things are located.&lt;br /&gt;&lt;br /&gt;One of my first learning curve is finding out how to enable wireless in Windows Server 2008.&lt;br /&gt;&lt;br /&gt;First, make sure the wireless adapter is working. To check this, go to Network and Sharing Center, click on the &lt;i&gt;Manage network connections&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_jRUlOncToWc/SDJ1gcQVcBI/AAAAAAAAABg/gqd0Vk1auwI/s1600-h/networking.jpg"&gt;&lt;br /&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_jRUlOncToWc/SDJ1gcQVcBI/AAAAAAAAABg/gqd0Vk1auwI/s320/networking.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5202349719767314450" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next, goto &lt;i&gt;Server Manager -&gt; Features&lt;/i&gt; to add the Wireless feature.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_jRUlOncToWc/SDJ128QVcCI/AAAAAAAAABo/KAnZ1spcdHI/s1600-h/enable_wireless.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_jRUlOncToWc/SDJ128QVcCI/AAAAAAAAABo/KAnZ1spcdHI/s320/enable_wireless.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5202350106314371106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then, you can configure your wireless to connect to the available wireless network.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-2988017223571065697?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/2988017223571065697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=2988017223571065697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/2988017223571065697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/2988017223571065697'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/05/enabling-wireless-on-windows-server.html' title='Enabling Wireless on Windows Server 2008'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_jRUlOncToWc/SDJ1gcQVcBI/AAAAAAAAABg/gqd0Vk1auwI/s72-c/networking.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-8428698432833945076</id><published>2008-04-26T18:15:00.001+08:00</published><updated>2008-07-06T11:14:20.231+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Parallelism, Concurrency and the free lunch</title><content type='html'>For anybody who is looking for ways of how to take advantage of the CPU capability to make their program run faster, I would suggest to look at the &lt;a href="http://msdn2.microsoft.com/en-us/concurrency/default.aspx" target="_blank"&gt;Parallel Framework Extension&lt;/a&gt; and download the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e848dc1d-5be3-4941-8705-024bc7f180ba&amp;amp;DisplayLang=en" target="_blank"&gt;PFX CTP&lt;/a&gt; to try it out.&lt;br /&gt;&lt;br /&gt;I was just optimizing my program. On my dual core machine, the improved version of my program which use PFX give me an approximate of 18% performance improvement over the original program which use a conventional foreach loop. As my data set increase, the gain is up to about 35%.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Why this is a big deal?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As the silicon has reach its physics limit of getting more into the CPU chip, we cannot depend on &lt;a href="http://en.wikipedia.org/wiki/Moore_Law" target="_blank"&gt;Moore’s law&lt;/a&gt; to take care of performance for us anymore. &lt;a href="http://www.gotw.ca/publications/concurrency-ddj.htm" target="_blank"&gt;The free lunch is pretty much over&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Instead, we can see emerging trend in parallelism and concurrency. People today are talking about multi core processors and how to make program run faster by utilizing all the cores they have in the computer; &lt;a href="http://en.wikipedia.org/wiki/Functional_programming" target="_blank"&gt;functional programming language&lt;/a&gt; is getting &lt;a href="http://www.defmacro.org/ramblings/fp.html" target="_blank"&gt;more attention&lt;/a&gt;; functional programming elements start to incorporated into mainstream imperative language (example is Linq); &lt;a href="http://en.wikipedia.org/wiki/Software_transactional_memory" target="_blank"&gt;Software Transactional Memory&lt;/a&gt; is also getting more research effort.&lt;br /&gt;&lt;br /&gt;I bet that concurrency is going to be one of the important topics in the next wave of programming paradigm.&lt;br /&gt;&lt;br /&gt;Having say that, I dont mean concurrency is the ultimate to all problems. Concurrency is a tough subject and hard to get it right. You have to weight whether the overhead of locking is worth the benefits; You have to understand the side effects of state changes; You have to find a way to handle exception and etc. Concurrency is mean to be a way of tapping into the spare processing capacity, not a way to make slow code fast. You still have to understand where the bottleneck is in your code before you decide to settle on making things more concurrent. Use it with care.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-8428698432833945076?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/8428698432833945076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=8428698432833945076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/8428698432833945076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/8428698432833945076'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/04/parallelism-concurrency-and-free-lunch.html' title='Parallelism, Concurrency and the free lunch'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-4642213804871865277</id><published>2008-04-09T23:58:00.001+08:00</published><updated>2008-04-10T00:02:04.667+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><title type='text'>DataBoy 1.0 released</title><content type='html'>I have just publish DataBoy version 1 in &lt;a href="http://www.codeplex.com" target="_blank"&gt;codeplex.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DataBoy is a small footprint and portable tool to perform simple query against SQL CE and SQL Server. It is used as an alternative query tool for SQL Management console.&lt;br /&gt;&lt;br /&gt;The download link is here : &lt;a href="http://www.codeplex.com/databoy" target="_blank"&gt;DataBoy&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-4642213804871865277?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/4642213804871865277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=4642213804871865277' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/4642213804871865277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/4642213804871865277'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/04/databoy-10-released.html' title='DataBoy 1.0 released'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-6127684674887681684</id><published>2008-04-08T23:05:00.001+08:00</published><updated>2008-04-08T23:30:28.120+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><title type='text'>Thought on WPF</title><content type='html'>I recall that some time I go I was having a conversation with my colleague about WPF. His complaint was that the XAML thing is really complicated, messy and difficult to comprehend. While I am supporting the blue badge camp, there is in fact some truth to his statements and this lead to an interesting discussion and thought.&lt;br /&gt;&lt;br /&gt;WPF and XAML is kind of a revolutionary, and it requires a new way of thinking and accepting it. Although XAML should feel natural to developer and designer who are familiar to HTML, the expressiveness of XAML is extended way beyond of what we can used to imagine. Just like HTML, XAML is very good and simple in specifying the UI layout and content without needing to think through the object model. However, as the UI get more complex and the XAML growth, it become more difficult to manage a large chunk of XAML.&lt;br /&gt;&lt;br /&gt;Second, the tool support for WPF is still pretty weak. Visual Studio 2008 and Expression Blend each has a WPF UI designer, but neither are really strong. Visual Studio 2008 are sufficient for creating simple WPF application but is not the right tool for creating complex, fancy and interaction rich application. Expression Blend fill in this gap but the shortcoming is it does not have intelisense support and the XAML editor does not support the same short cut key as in Visual Studio. Add on to this is the performance of the WPF designer in both tool sucks! The debug-ability of XAML application is also very weak. The best thing Visual Studio does now is just to throw an exception in its InitializeComponent() method whenever there is an error in the XAML. It is up to the developer to figure out what went wrong. To be fair, WPF is still a relatively new thing, and we should give the blue badge guy more time to get the tool right. Hopefully it won’t take long for this to happen. &lt;br /&gt;&lt;br /&gt;WPF introduce a lot of new concepts such as property element, markup extension and so on. Developer who are not familiar with XML has even a harder time to understand how XAML is structured (I had a colleague who just managed to figure out what XML namespace is recently). Using markup extension in XAML really takes some time to figure out how it works because of the way it is expressed in attribute value string and the special syntax notation it had.&lt;br /&gt;&lt;br /&gt;Enough rambling about WPF and XAML. XAML does have some good thing that we should praise about. Most notably, The expressiveness of XAML makes certain expression easier to understand than in imperative code. For example, let say I have a button on the form which width I want it to automatically adjust based on a value in a textbox that the user can type in. The most obvious way and simplest to do this is using data binding. Specifying in XAML will look like this :&lt;br /&gt;&lt;br /&gt;&lt;pre style="border:1px solid;"&gt;&amp;lt;WrapPanel&amp;gt;&lt;br /&gt;  &amp;lt;Button x:Name="btnOk" Content="Clickme" &lt;br /&gt;         Width="{Binding Path=Text, ElementName=txtWidth, Mode=Default}" /&amp;gt;&lt;br /&gt;  &amp;lt;TextBox x:Name="txtWidth" Text="120"/&amp;gt;&lt;br /&gt;&amp;lt;/WrapPanel&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To achieve the same effect in C#, the code will look like this:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border:1px solid;"&gt;Binding myBinding = null;&lt;br /&gt;myBinding = new Binding("Text");&lt;br /&gt;myBinding.ElementName = "txtWidth";&lt;br /&gt;btnOk.SetBinding(Button.WidthProperty, myBinding);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;or &lt;br /&gt;&lt;pre style="border:1px solid;"&gt;Binding myBinding = null;&lt;br /&gt;myBinding = new Binding("Text");&lt;br /&gt;myBinding.ElementName = "txtWidth";&lt;br /&gt;BindingOperations.SetBinding(btnOk, Button.WidthProperty, myBinding);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Neither of the C# code is any easier to understand than the XAML code. On top of that, it is not easy and obvious to figure out the right API and object model to do it in C# code. When I type btnOk.width in Visual Studio, intellisense show that width property is of type double, thus it seem that  there can be nothing much that can be done about it. So, XAML win in this aspect.&lt;br /&gt;&lt;br /&gt;The XML nature of XAML allow us to visualize better the layout hierrarchy of UI controls. The ability to define resources such as style and templates in XAML right at the appropriate context and being able to specify complex UI controls in the Content property in XAML add on to the clarity and simplicity of the UI definition than doing it at code level. &lt;br /&gt;&lt;br /&gt;WPF and XAML is still weak is some areas especially the tooling support. But nonetheless, this should not hinder us from embracing a new technology. The technology landscape is constantly changing and we should always approach new technology with a new and open mindset.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-6127684674887681684?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/6127684674887681684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=6127684674887681684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/6127684674887681684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/6127684674887681684'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/04/thought-on-wpf.html' title='Thought on WPF'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7690408.post-6576363581577137385</id><published>2008-01-14T22:47:00.000+08:00</published><updated>2008-01-15T10:22:01.324+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='visualstudio'/><title type='text'>Code Snippet for WPF Dependency Property</title><content type='html'>I posted a Visual Studio C# code snippet to generate WPF dependency property.&lt;br /&gt;&lt;br /&gt;It can be download at &lt;a href="http://www.codeplex.com/jywpf" target="_blank"&gt;Jonathan's WPF Related Stuff&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7690408-6576363581577137385?l=dataerror.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dataerror.blogspot.com/feeds/6576363581577137385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7690408&amp;postID=6576363581577137385' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/6576363581577137385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7690408/posts/default/6576363581577137385'/><link rel='alternate' type='text/html' href='http://dataerror.blogspot.com/2008/01/code-snippet-for-wpf-dependency.html' title='Code Snippet for WPF Dependency Property'/><author><name>Jonathan Yong</name><uri>http://www.blogger.com/profile/06417429484136277876</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
