<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Path to Zen &#187; microsoft</title>
	<atom:link href="http://www.digizenstudio.com/blog/categories/microsoft/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.digizenstudio.com/blog</link>
	<description>Jing Xue's Weblog</description>
	<lastBuildDate>Tue, 01 Jun 2010 01:40:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Dual-booters, beware the XP installer.</title>
		<link>http://www.digizenstudio.com/blog/2007/11/05/dual-booters-beware-the-xp-installer/</link>
		<comments>http://www.digizenstudio.com/blog/2007/11/05/dual-booters-beware-the-xp-installer/#comments</comments>
		<pubDate>Tue, 06 Nov 2007 02:51:51 +0000</pubDate>
		<dc:creator>Jing Xue</dc:creator>
				<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://www.digizenstudio.com/blog/2007/11/05/dual-booters-beware-the-xp-installer/</guid>
		<description><![CDATA[About this time last year, I decided to switch to Linux. I lived happily ever after in (K)Ubuntu, with my original Windows still kept around (one word: games). So after upgrading my workhorse desktop at home a couple of weeks back, I had the opportunity to reinstall both OS&#8217;s in a dual-boot setup. The experience [...]]]></description>
			<content:encoded><![CDATA[<p>About this time last year, I decided to <a href="http://www.digizenstudio.com/blog/2006/11/11/my-ubuntu-experience-pilot/" rel="_blank">switch to Linux</a>. I lived happily ever after in (K)Ubuntu, with my original Windows still kept around (one word: <em>games</em>). So after upgrading my workhorse desktop at home a couple of weeks back, I had the opportunity to reinstall both OS&#8217;s in a dual-boot setup. The experience from the two setup processes was unbelievably radically different.<span id="more-152"></span></p>
<p>Let me list the hardware upgrade first so you know what the &#8220;players&#8221; had to deal with:</p>
<ol>
<li>Replaced P4 3.0 GHz with Core 2 Quad Q6600,</li>
<li>Bumped RAM to 4G,</li>
<li>Replaced an Asus P4 motherboard with Abit IP35Pro.</li>
<li>Replaced nvidia 6800GT with 8600GTS.</li>
<li>Added a new SATA hard drive. Kept the IDE hard drive around.</li>
</ol>
<p>I actually expected to spend a lot of time on installing and configuring Gutsy, after all, it&#8217;s still linux, right?  Well, not really.  The only hiccup I had was when trying to boot up from the live dvd for the first time, the kernel (2.6.22) got confused by my new SATA drive,  and would take very long to boot.  It took 1 minute to find the answer by google: add &#8216;irqpoll&#8217; to the boot options.</p>
<p>And it just cruised from there:</p>
<ol>
<li>Boot into the live dvd desktop, run installer, copy files, reboot into the new installation.</li>
<li>The &#8220;restricted driver manager&#8221; automatically prompts if I would like to enable the proprietary nvidia driver. Yes, I would. Reboot.</li>
<li>Run <code>nvidia-settings</code> to set up the dual monitors. Copy the config fragments for the logitech marble mouse and natural keyboard into <code>/etc/X11/xorg.conf</code>. Restart X server.</li>
</ol>
<p>And that&#8217;s it. I was able to pick up whatever it was that I was working on before the upgrade as soon as I had the home dir copied over from the backup machine.</p>
<p>It wasn&#8217;t like that on the WinXP side. Not at all.</p>
<p>I booted into the XP installation CD. The installer apparently got confused by the combination of the IDE and SATA drives, but it didn&#8217;t say anything, instead went straight to the screen where it showed a list of two partitions, each from&#8230; wait&#8230; the same drive number with exactly the same id and bus numbers?  And none of the actual, existing partitions on either drives were shown?</p>
<p>I then pressed Enter on one of the drives and got to the next screen where it warned that it was about to format the partition and &#8220;all data will be lost&#8221;. So naturally I decided to abort <em>right then and there</em>, and boot back into linux to make sure I&#8217;ve got everything backed up.  Well, what do you know, all data <strong>were</strong> lost already by then, because, apparently, the XP installer had already wiped out the partition table.</p>
<p>In hindsight, and to be fair, I probably did something real stupid there by pressing that Enter key, after having seen the confused partition/drive list.  But, hey, you are supposed to tell people before you wipe out their partition table, right?</p>
<p>So I had to go through the whole exercise again, except this time I installed XP first, and then Kubuntu. Even it worked this time, I still had to spent way more time in the XP part than I did in Kubuntu. To begin with, it took 40 minutes or so to see the initial XP desktop, and then another 6-7 reboots to install all the service packs, security patches, etc.</p>
<p>Now, before somebody screams &#8220;fanboy!&#8221; I&#8217;ll admit that it&#8217;s not exactly fair to directly compare Kubuntu 7.10 with the original Windows XP.  After all, the latter was first released in 2001. But then, I will also argue that, as a paying customer of a retail Windows XP license, I have never received so much as an offer from Microsoft to replace the original installation CD with one that can handle my rather not so very unique SATA+IDE configuration.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digizenstudio.com/blog/2007/11/05/dual-booters-beware-the-xp-installer/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Take it easy, Microsoft, will ya?</title>
		<link>http://www.digizenstudio.com/blog/2007/06/11/take-it-easy-microsoft-will-ya/</link>
		<comments>http://www.digizenstudio.com/blog/2007/06/11/take-it-easy-microsoft-will-ya/#comments</comments>
		<pubDate>Tue, 12 Jun 2007 01:23:28 +0000</pubDate>
		<dc:creator>Jing Xue</dc:creator>
				<category><![CDATA[fisheye]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://www.digizenstudio.com/blog/2007/06/11/take-it-easy-microsoft-will-ya/</guid>
		<description><![CDATA[I have many friends over at Microsoft working on various great products this company has built, so I don&#8217;t want this post to sound like average Microsoft bashing. But it is just sad to see Microsoft decided to go after Jamie Cansdale for something he did that actually benefits Microsoft by adding a critical piece [...]]]></description>
			<content:encoded><![CDATA[<p>I have many friends over at Microsoft working on various great products this company has built, so I don&#8217;t want this post to sound like average Microsoft bashing. But it is just sad to see Microsoft decided to <a href="http://weblogs.asp.net/nunitaddin/archive/2007/06/07/microsoft-vs-testdriven-net-06-june-2007.aspx" rel="_blank">go after Jamie Cansdale</a> for something he did that actually benefits Microsoft by adding a critical piece to the development stack. Whether it is well within Microsoft&#8217;s rights to take these legal actions against Jamie Cansdale, or whether the EULA in question is overly vague, is simply beside the point. The point here is Microsoft, or at least its bureaucratic corporate arm, has once again shown its almost complete disregard of the goodwill of the development community &#8211; even its own development community. I know &#8220;prosecutorial discretion&#8221; as a legal term doesn&#8217;t really apply here, but still, perhaps Microsoft could use some of that here, too?</p>
<p>It is when reading news like this that I feel very grateful for being part of the Java community, where openness is the spirit, and where I don&#8217;t have to lose sleep over worrying being hauled into a court by an army of corporate lawyers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digizenstudio.com/blog/2007/06/11/take-it-easy-microsoft-will-ya/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>X-JSON header useful in AJAX dialog submission flow</title>
		<link>http://www.digizenstudio.com/blog/2006/07/11/x-json-header-useful-in-ajax-dialog-submission-flow/</link>
		<comments>http://www.digizenstudio.com/blog/2006/07/11/x-json-header-useful-in-ajax-dialog-submission-flow/#comments</comments>
		<pubDate>Wed, 12 Jul 2006 02:31:03 +0000</pubDate>
		<dc:creator>Jing Xue</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[web-design]]></category>

		<guid isPermaLink="false">http://www.digizenstudio.com/blog/?p=98</guid>
		<description><![CDATA[One AJAX page I&#8217;ve been playing with has this UI flow that emulates a desktop form dialog &#8211; the user clicks on a link, a modal dialog shows up with a usual form, which the user fills out and submits to the server. Now, a successful response from the server can be one of these: [...]]]></description>
			<content:encoded><![CDATA[<p>One AJAX page I&#8217;ve been playing with has this UI flow that emulates a desktop form dialog &#8211; the user clicks on a link, a modal dialog shows up with a usual form, which the user fills out and submits to the server. Now, a successful response from the server can be one of these: if there are any form validation errors, the response is the same form annotated with the error message(s), in this case the response should be used to refresh the dialog. If there are no errors, the dialog is closed, and the response from the server should contain some content to update the area above the original link the user clicked on.<span id="more-98"></span></p>
<p>The tricky part &#8211; at least trickier than I thought &#8211; in implementing this whole thing turned out to be how to establish a consistent and non-hacking way to distinguish between a response with form validation errors and one without. Even though most AJAX toolkits today provide nice wrappers around raw HttpXMLRequest calls, and will invoke appropriate callback in the case of success or failure, they can&#8217;t help in this case, because whether there are validation errors or not the response would always appear successful to the wrappers. So I&#8217;m pretty much on my own to figure out a way to tell.</p>
<p>The simplest and most obvious way is to search for some magic word, e.g., some particular id in the response text that only appears in one of the responses. But somehow that sounds a bit hacking to me. And it&#8217;s not a very generic theme. I wouldn&#8217;t want to hand pick some magic word for each scenario like this.</p>
<p>Next I ruled out wrapping entire responses in JSON on the ground of scary escaping pitfalls.</p>
<p>So how about wrapping the responses in an XML element called, say, AjaxResponse? Then on client, I can parse this into an XML DOM element, take a look at its &#8217;status&#8217; attribute, and if it&#8217;s success, close the dialog, and update the div with whatever is wrapped? That actually worked &#8211; but only in Firefox, not in IE. IE appears to have some problem inserting a node into the current DOM, if the node was not created in the current window itself. In other words, the seemingly legitimate XHTML &#8216;div&#8217; element wrapped in AjaxResponse cannot be inserted into the current DOM tree using <code>someElement.appendChild(myDiv)</code>. It would return some mysterious &#8220;No such interface supported&#8221; error message. Even specifically adding <code>xmlns:xhtml="http://www.w3.org/1999/xhtml"</code> to the &#8216;div&#8217; element wouldn&#8217;t make IE know any better.</p>
<p>At last, I came to the solution the prototype javascript library uses in its connection manager package &#8211; an X-JSON reaponse header. It works like an out-of-band channel between the server and client. A piece of JSON data is set into the header by the server code (in either the form controller or the jsp page), and evaluated in the client javascript. Due to the limitation on how many characters can be sent in any http header, it&#8217;s not ideal for sending along large amount of data, but perfect for all other cases, such as mine. All I have to do is putting a status variable in there. The client would evaluate the JSON and decide accordingly whether to close the form and use the response body to populate a div in the main page, or to keep the form open and use the response body to show the form again. Even though I use Yahoo UI Library instead of prototype to handle ajax calls, this is very easy to implement, and generic to be reused in all the form handling scenarios. The best part is, of course, that it&#8217;s separated from the response body, which can remain simply whatever content xhtml the client can use to fill out a div area. Another bonus from this approach is that, since all the data particular to the AJAX call are separated into the X-JSON header, the same jsp form page is AJAX-agnostic, and can be reused in other non-Ajax pages.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digizenstudio.com/blog/2006/07/11/x-json-header-useful-in-ajax-dialog-submission-flow/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SHIFT does not affect %*</title>
		<link>http://www.digizenstudio.com/blog/2006/04/22/shift-does-not-affect/</link>
		<comments>http://www.digizenstudio.com/blog/2006/04/22/shift-does-not-affect/#comments</comments>
		<pubDate>Sat, 22 Apr 2006 17:22:37 +0000</pubDate>
		<dc:creator>Jing Xue</dc:creator>
				<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://www.digizenstudio.com/blog/2006/04/22/shift-does-not-affect/</guid>
		<description><![CDATA[In a Windows batch file, SHIFT moves all (or part of if you give an optional parameter) the command line prameters to the left for one. So, after a SHIFT command, %0 has %1 used to have, %1 has %2 used to have, and so on. But the %* variable, which holds the entire set [...]]]></description>
			<content:encoded><![CDATA[<p>In a Windows batch file, SHIFT moves all (or part of if you give an optional parameter) the command line prameters to the left for one. So, after a SHIFT command, %0 has %1 used to have, %1 has %2 used to have, and so on. But the %* variable, which holds the entire set of parameters, is not affected at all. So if you have foo.cmd calling bar.cmd, and in foo.cmd, after it has processed the first several parameters, and shifted them off the parameter list, in order to pass the rest of the parameters to bar.cmd, foo.cmd must enumerate %1 to %9 on the line calling bar.cmd, rather than simply using %*, which would pass the entire line of original parameters to bar.cmd.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digizenstudio.com/blog/2006/04/22/shift-does-not-affect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTTP Error Code 405 from VS Web Service Proxy</title>
		<link>http://www.digizenstudio.com/blog/2005/10/24/http-code-405-web-service/</link>
		<comments>http://www.digizenstudio.com/blog/2005/10/24/http-code-405-web-service/#comments</comments>
		<pubDate>Tue, 25 Oct 2005 02:29:14 +0000</pubDate>
		<dc:creator>Jing Xue</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://www.digizenstudio.com/blog/2005/10/24/http-code-405-web-service/</guid>
		<description><![CDATA[I have a Tomcat hosting Axis running at http://localhost:8080, and the regular VS 2002/IIS stuff running at http://localhost.  So I feed the wsdl URL from Axis in VS&#8217; &#8220;Add Web Reference&#8221;, and make VS generate the proxy for the Web service running in Axis.  Unfortunately when the proxy is generated, the default service [...]]]></description>
			<content:encoded><![CDATA[<p>I have a Tomcat hosting Axis running at http://localhost:8080, and the regular VS 2002/IIS stuff running at http://localhost.  So I feed the wsdl URL from Axis in VS&#8217; &#8220;Add Web Reference&#8221;, and make VS generate the proxy for the Web service running in Axis.  Unfortunately when the proxy is generated, the default service endpoint URL is always set to http://localhost. So naturally when I run the Web service consumer application in VS, it tries to go to the local IIS for the service, only to get back a 405 error.  What makes this a bit hard to catch is one usually would expect a 404 error from a non-existent service endpoint.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digizenstudio.com/blog/2005/10/24/http-code-405-web-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RedirectView Fails In IE</title>
		<link>http://www.digizenstudio.com/blog/2005/05/21/redirectview-fails-in-ie/</link>
		<comments>http://www.digizenstudio.com/blog/2005/05/21/redirectview-fails-in-ie/#comments</comments>
		<pubDate>Sat, 21 May 2005 06:04:39 +0000</pubDate>
		<dc:creator>Jing Xue</dc:creator>
				<category><![CDATA[microsoft]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.digizenstudio.com/blog/2005/05/21/redirectview-fails-in-ie/</guid>
		<description><![CDATA[This isn&#8217;t really a Spring issue, but the symptom was reported on the Spring Forum.  It&#8217;s good to know that IE has this limitation of 2083 characters for query strings.
]]></description>
			<content:encoded><![CDATA[<p>This isn&#8217;t really a Spring issue, but the symptom was <a href="http://forum.springframework.org/viewtopic.php?t=5532" rel="_blank">reported on the Spring Forum</a>.  It&#8217;s good to know that IE has this limitation of 2083 characters for query strings.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digizenstudio.com/blog/2005/05/21/redirectview-fails-in-ie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>the Microsoft source leak</title>
		<link>http://www.digizenstudio.com/blog/2004/02/20/the-microsoft-source-leak/</link>
		<comments>http://www.digizenstudio.com/blog/2004/02/20/the-microsoft-source-leak/#comments</comments>
		<pubDate>Fri, 20 Feb 2004 19:29:37 +0000</pubDate>
		<dc:creator>Jing Xue</dc:creator>
				<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://www.digizenstudio.com/blog/2004/02/20/the-microsoft-source-leak/</guid>
		<description><![CDATA[Somebody wrote some interesting code reading notes on some of the Windows source code leaked onto the Internet. I have a few friends working for Microsoft as programmers, and they sure are like some people who would write code and comments like that.  
]]></description>
			<content:encoded><![CDATA[<p>Somebody wrote some interesting <a href="http://www.kuro5hin.org/story/2004/2/15/71552/7795">code reading notes</a> on some of the Windows source code leaked onto the Internet. I have a few friends working for Microsoft as programmers, and they sure are like some people who would write code and comments like that. <img src='http://www.digizenstudio.com/blog/wp-includes/images/smilies/icon_cool.gif' alt='8-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.digizenstudio.com/blog/2004/02/20/the-microsoft-source-leak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Schedule program to run at boot time</title>
		<link>http://www.digizenstudio.com/blog/2003/11/17/schedule-program-to-run-at-boot-time/</link>
		<comments>http://www.digizenstudio.com/blog/2003/11/17/schedule-program-to-run-at-boot-time/#comments</comments>
		<pubDate>Tue, 18 Nov 2003 01:55:19 +0000</pubDate>
		<dc:creator>Jing Xue</dc:creator>
				<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://www.digizenstudio.com/blog/2003/11/17/schedule-program-to-run-at-boot-time/</guid>
		<description><![CDATA[Add the full command line to:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute
]]></description>
			<content:encoded><![CDATA[<p>Add the full command line to:<br />
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digizenstudio.com/blog/2003/11/17/schedule-program-to-run-at-boot-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The winshow adware</title>
		<link>http://www.digizenstudio.com/blog/2003/11/11/the-winshow-adware/</link>
		<comments>http://www.digizenstudio.com/blog/2003/11/11/the-winshow-adware/#comments</comments>
		<pubDate>Tue, 11 Nov 2003 13:26:07 +0000</pubDate>
		<dc:creator>Jing Xue</dc:creator>
				<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://www.digizenstudio.com/blog/2003/11/11/the-winshow-adware/</guid>
		<description><![CDATA[One of my XP machines was affected by winshow/winlink on Sunday. The symptom was that usually when a second IE window almost finished loading a page, an application error would get thrown from a winshow.dll.
Googling with &#8220;winshow&#8221; returned a surprising number of results. The one I followed to fix my system was from Symantec.
It didn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>One of my XP machines was affected by winshow/winlink on Sunday. The symptom was that usually when a second IE window almost finished loading a page, an application error would get thrown from a winshow.dll.</p>
<p>Googling with &#8220;winshow&#8221; returned a surprising number of results. The one I followed to fix my system was from <a href="http://securityresponse.symantec.com/avcenter/venc/data/adware.winshow.html">Symantec</a>.</p>
<p>It didn&#8217;t end there. It turned out one unique feature my winshow &#8220;showed&#8221;, while not mentioned by any of the pages I have seen, was that after deleting all the related registries and files, and rebooting the system, winshow and winlink would come back!</p>
<p>A quick glance at the Startup folder revealed a mysterious &#8220;MSUpdater.exe&#8221; (those perverts didn&#8217;t even bother to give it a proper icon!). After removing that file and rebooting, everything came back to normal.</p>
<p>I think I&#8217;ll be purchasing a copy of Norton AntiVirus very shortly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digizenstudio.com/blog/2003/11/11/the-winshow-adware/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serving CSV files</title>
		<link>http://www.digizenstudio.com/blog/2003/11/05/serving-csv-files/</link>
		<comments>http://www.digizenstudio.com/blog/2003/11/05/serving-csv-files/#comments</comments>
		<pubDate>Wed, 05 Nov 2003 14:46:11 +0000</pubDate>
		<dc:creator>Jing Xue</dc:creator>
				<category><![CDATA[microsoft]]></category>

		<guid isPermaLink="false">http://www.digizenstudio.com/blog/2003/11/05/serving-csv-files/</guid>
		<description><![CDATA[(In Windows 2000 + Office 2000)
For a servlet or any other dynamic file generation service that needs to serve a CSV file, the content type, &#8220;application/vnd.ms-excel&#8221;, is the only one that makes Excel open the file inside IE, but for some reason when Excel does that it doesn&#8217;t recognize the CSV format.
On the other hand, [...]]]></description>
			<content:encoded><![CDATA[<p>(In Windows 2000 + Office 2000)<br />
For a servlet or any other dynamic file generation service that needs to serve a CSV file, the content type, &#8220;application/vnd.ms-excel&#8221;, is the only one that makes Excel open the file inside IE, but for some reason when Excel does that it doesn&#8217;t recognize the CSV format.</p>
<p>On the other hand, when set to &#8220;text/csv&#8221; (or something like &#8220;application/unknown&#8221;), IE doesn&#8217;t open it in place, but does offer a dialog to either open it in a separate Excel windows, or save it. If the client has &#8220;confirm open after download&#8221; cleared in the CSV file type settings, IE would directly open it in Excel.</p>
<p>I have also observed that ETrade uses this header to send back an account snapshot:<br />
&#8220;Content-Type: application/vnd.ms-excel; extension=CSV&#8221;<br />
The additional extension declaration doesn&#8217;t help Excel in realizing it&#8217;s a CSV file, though &#8211; the file is still opened in Excel with each entire line in one field.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.digizenstudio.com/blog/2003/11/05/serving-csv-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
