<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>I blog, therefore I am</title><link>http://dev.robertmao.com/</link><description /><language>en-us</language><lastBuildDate>Mon, 08 Dec 2008 16:40:11 +0000</lastBuildDate><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/devrobertmao" type="application/rss+xml" /><item><title>Restful Instant Messaging Service?</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/qeHZtJLwOCc/</link><description>&lt;p&gt;&lt;p&gt;Just think about this idea: RESTful IM service. It’s a decentralized IM service, one IM server can host one or more users, when you post a message to other user, it may directly post to the server which the user resident. &lt;/p&gt;  &lt;p&gt;Is this a new idea or something similar already?&amp;#160; I believe XMPP have some idea in similar, but they use own protocol. &lt;/p&gt;  &lt;p&gt;Twitter is a kind of simple web based IM/Presence service with RESTful APIs, it has shown great success.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Some links for future think: &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.slideshare.net/kellan/beyond-rest" href="http://www.slideshare.net/kellan/beyond-rest"&gt;http://www.slideshare.net/kellan/beyond-rest&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=qeHZtJLwOCc:MgBed54Z5iQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=qeHZtJLwOCc:MgBed54Z5iQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=qeHZtJLwOCc:MgBed54Z5iQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=qeHZtJLwOCc:MgBed54Z5iQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=qeHZtJLwOCc:MgBed54Z5iQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/qeHZtJLwOCc" height="1" width="1"/&gt;</description><pubDate>Mon, 08 Dec 2008 16:40:11 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/12/08/restful-instant-messaging-service/</guid><category>Ideas</category><feedburner:origLink>http://dev.robertmao.com/2008/12/08/restful-instant-messaging-service/</feedburner:origLink></item><item><title>I combined all my English blog in one&amp;hellip;</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/9Ea7zgFrWPE/</link><description>&lt;p&gt;&lt;p&gt;I have combined all my English blog (dotnet.robertmao.com, talk.robertmao.com, dev.robertmao.com, idea.robertmao.com) under one blog now.&amp;#160; I also changed from Wordpress to my own Google App Engine powered blog engine (PSF: Personal Site Framework).&amp;#160; Comments are still not yet imported, and something is still shared with my Chinese blog, but I will soon fix them all. &lt;/p&gt;  &lt;p&gt;Now all the URL(permalink) are still working, in the future I may redirect the domain names under one name only. &lt;/p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=9Ea7zgFrWPE:yUmGgAaal2E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=9Ea7zgFrWPE:yUmGgAaal2E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=9Ea7zgFrWPE:yUmGgAaal2E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=9Ea7zgFrWPE:yUmGgAaal2E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=9Ea7zgFrWPE:yUmGgAaal2E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/9Ea7zgFrWPE" height="1" width="1"/&gt;</description><pubDate>Mon, 08 Dec 2008 16:30:00 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/12/08/i-combined-all-my-english-blog-in-onehellip/</guid><category>About this blog</category><category>Blog on blog</category><category>Google Apps Engine</category><feedburner:origLink>http://dev.robertmao.com/2008/12/08/i-combined-all-my-english-blog-in-onehellip/</feedburner:origLink></item><item><title>GAE+Django dev logs</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/gmEWs8uVndQ/</link><description>&lt;p&gt;I am implementing my own blog on GAE, today when I worked on the RSS feed I met a problem, the Django version come with GAE (1.1.5) doesn't work well with django.contrib.syndication, it will always throw an error:&lt;br /&gt;&lt;blockquote&gt;'module' object has no attribute 'quote_name' app engine&lt;/blockquote&gt;&lt;br /&gt;The error is from inside the syndication framework and called into the django's model functions, looks like the default django version come along with GAE have some issue for that.&lt;/p&gt;

&lt;p&gt;Then I decided to install django 1.0 code and the lastes Django helper to my project, before today I always use teh default django from GAE and use helper r52.  (the latest helper only work on django 1.0).&lt;/p&gt;

&lt;p&gt;Unfortunately, they don't work, the reason is here:&lt;/p&gt;

&lt;p&gt;http://groups.google.com/group/google-appengine/browse_thread/thread/f6d3cb4a66340bc5&lt;/p&gt;

&lt;p&gt;http://code.djangoproject.com/ticket/9115&lt;/p&gt;

&lt;p&gt;I applied the patch from&lt;a href="http://code.djangoproject.com/ticket/9115"&gt; here&lt;/a&gt;, modified temp.py, and now everything works well for me !  Django 1.0 is running in GAE,  and the syndication framework works !&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=gmEWs8uVndQ:vKyyirn_JHg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=gmEWs8uVndQ:vKyyirn_JHg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=gmEWs8uVndQ:vKyyirn_JHg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=gmEWs8uVndQ:vKyyirn_JHg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=gmEWs8uVndQ:vKyyirn_JHg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/gmEWs8uVndQ" height="1" width="1"/&gt;</description><pubDate>Fri, 10 Oct 2008 23:56:32 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/10/10/gaedjango-dev-logs/</guid><category>Google</category><category>Google Apps Engine</category><feedburner:origLink>http://dev.robertmao.com/2008/10/10/gaedjango-dev-logs/</feedburner:origLink></item><item><title>Google Maps / Live Maps switcher bookmarklet</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/cW3PEJoDDZI/</link><description>&lt;p&gt;I wrote a &lt;a href="http://dev.robertmao.com/2007/07/18/google-maps-ditu-switcher-bookmarklet/"&gt;Google Maps / Google Ditu switcher bookmarklet&lt;/a&gt; before. Now comes the switcher bookmarklet for Google Maps and Microsoft Live Maps:&lt;/p&gt;

&lt;p&gt;code:&lt;br /&gt;&lt;blockquote&gt;javascript: var _cur= ""+window.location; if (_cur.search(/http:\/\/maps.goog/i) !=-1) { var _url = document.getElementById('link'); function gup( name , u) { name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regexS = "[\\?&amp;amp;]"+name+"=([^&amp;amp;#]*)"; var regex = new RegExp( regexS ); var results = regex.exec( u );if( results == null )    return ""; else return results[1];} lurl = 'http://maps.live.com/default.aspx?cp=' + gup('ll', _url).replace(/\,/,'~')+'&amp;amp;lvl='+gup('z', _url); window.location=lurl;} else if (_cur.search(/http:\/\/maps.live/i) != -1) { eval('var _xxx ='+ document.getElementById('MapControl_MapControl').value); gurl = "http://maps.google.com/maps?ll=" +_xxx.C.Latitude +","+ _xxx.C.Longitude + "&amp;amp;z=" + _xxx.Z; window.location=gurl;} else { alert('This script only works on maps.live.com or maps.google.com, check http://dev.robertmao.com for update.');}&lt;/blockquote&gt;&lt;br /&gt;Please save above as a bookmarklet, and you can switch freely from google maps and live maps!&lt;/p&gt;

&lt;p&gt;&lt;!--[if gte mso 9]&amp;gt;  Normal 0     false false false  EN-US ZH-CN X-NONE              MicrosoftInternetExplorer4              &amp;lt;![endif]--&gt;&lt;!--[if gte mso 9]&amp;gt;                                                                                                                                            &amp;lt;![endif]--&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: #1f497d"&gt;I only spend half a hour to create it so it may have bug or not work in some scenarios, and it need improve on map mode switch. &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color: #1f497d"&gt; &lt;/span&gt;&lt;/p&gt;&lt;/p&gt;

&lt;p&gt;&lt;span style="font-size: 11pt;font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;color: #1f497d"&gt;Tested on firefox only, should workable in IE. &lt;/span&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=cW3PEJoDDZI:nr6v7VJkpWY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=cW3PEJoDDZI:nr6v7VJkpWY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=cW3PEJoDDZI:nr6v7VJkpWY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=cW3PEJoDDZI:nr6v7VJkpWY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=cW3PEJoDDZI:nr6v7VJkpWY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/cW3PEJoDDZI" height="1" width="1"/&gt;</description><pubDate>Sun, 07 Sep 2008 12:50:34 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/09/07/google-maps-live-maps-switcher-bookmarklet/</guid><category>Javascript</category><category>Google Maps</category><feedburner:origLink>http://dev.robertmao.com/2008/09/07/google-maps-live-maps-switcher-bookmarklet/</feedburner:origLink></item><item><title>My GAE toy: Site Traffic Comparer</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/m4bkPshgd3E/</link><description>&lt;p&gt;&lt;a href="http://stc.appspot.com/"&gt;&lt;img src="http://stc.appspot.com/img/logo.png" alt="http://stc.appspot.com/img/logo.png" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just created a small toy on GAE, site traffic comparer, it pull traffic compare charts from alexa.com, compete.com and google trends at once, so you can very quickly have a galance of how web sites' traffic look like in different traffic comparer sites.&lt;/p&gt;

&lt;p&gt;This is a very early version, more will added, I will make it a handy tool for myself to research and investigate web sites.&lt;/p&gt;

&lt;p&gt;url is here:  &lt;a href="http://stc.appspot.com"&gt;http://stc.appspot.com&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=m4bkPshgd3E:snLqNlBNieo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=m4bkPshgd3E:snLqNlBNieo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=m4bkPshgd3E:snLqNlBNieo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=m4bkPshgd3E:snLqNlBNieo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=m4bkPshgd3E:snLqNlBNieo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/m4bkPshgd3E" height="1" width="1"/&gt;</description><pubDate>Mon, 04 Aug 2008 11:35:45 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/08/04/my-gae-toy-site-traffic-comparer/</guid><category>Web</category><category>Google</category><category>Web analytics</category><feedburner:origLink>http://dev.robertmao.com/2008/08/04/my-gae-toy-site-traffic-comparer/</feedburner:origLink></item><item><title>Display alexa traffic image elsewhere</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/Ye_fz_aEvlE/</link><description>&lt;p&gt;Continue:&lt;a href="http://dev.robertmao.com/2008/07/28/get-alexa-image-signature/"&gt; http://dev.robertmao.com/2008/07/28/get-alexa-image-signature/ &lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To include a alexa image in your web page, add following:&lt;br /&gt;&lt;blockquote&gt;&amp;lt;script src="http://widgets.alexa.com/traffic/javascript/graph.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script src="http://widgets.alexa.com/traffic/session/?domain=www.alexa.com&amp;amp;date="&amp;gt;&amp;lt;/script&amp;gt;&lt;/p&gt;

&lt;p&gt;function setAlexaImage(sites)&lt;br /&gt;{&lt;br /&gt;var html = "http://widgets.alexa.com/traffic/graph/?r=6m&amp;amp;y=r&amp;amp;z=3&amp;amp;h=400&amp;amp;w=648&amp;amp;c=1";&lt;/p&gt;

&lt;p&gt;for (var i in sites)&lt;br /&gt;{&lt;br /&gt;html+= "&amp;amp;u[]="+sites[i];&lt;br /&gt;}&lt;br /&gt;var sig = AGraphManager.signature;&lt;br /&gt;html+='&amp;amp;x=' + sig.expiry + '&amp;amp;check=www.alexa.com&amp;amp;signature='+sig.signature;&lt;br /&gt;$("img#alexa_uv")[0].src=html;&lt;br /&gt;}&lt;/p&gt;

&lt;p&gt;...&lt;/p&gt;

&lt;p&gt;&amp;lt;img id="alexa_uv" src="#" /&amp;gt;&lt;/p&gt;

&lt;p&gt;...&lt;/blockquote&gt;&lt;br /&gt;I used jquery to get element, and used Alexa's original code to  help to get the signature, but compose the image URL myself.&lt;/p&gt;

&lt;p&gt;I didn't try to rewrite alexa's js code, I don't want to reverse engineer it or change anything there, so just use their own code.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=Ye_fz_aEvlE:tIRb_vc-ZBg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=Ye_fz_aEvlE:tIRb_vc-ZBg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=Ye_fz_aEvlE:tIRb_vc-ZBg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=Ye_fz_aEvlE:tIRb_vc-ZBg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=Ye_fz_aEvlE:tIRb_vc-ZBg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/Ye_fz_aEvlE" height="1" width="1"/&gt;</description><pubDate>Sun, 03 Aug 2008 22:59:57 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/08/03/display-alexa-traffic-image-elsewhere/</guid><category>Web</category><category>Web analytics</category><feedburner:origLink>http://dev.robertmao.com/2008/08/03/display-alexa-traffic-image-elsewhere/</feedburner:origLink></item><item><title>Get Alexa image signature.</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/4a9ew3Z-h8o/</link><description>&lt;p&gt;Alexa image now comes with a signature, but it's easy to request the signature.&lt;/p&gt;

&lt;p&gt;e.g.&lt;/p&gt;

&lt;p&gt;http://widgets.alexa.com/traffic/session/?domain=www.alexa.com&amp;amp;date=2008-7-28&lt;/p&gt;

&lt;p&gt;domian: the site who request the signature&lt;/p&gt;

&lt;p&gt;date: current date&lt;/p&gt;

&lt;p&gt;it will reply a javascript:&lt;br /&gt;&lt;pre&gt;	new Alexa.Permission('traffic', '&lt;strong&gt;2008-07-28T22:51:24.000Z&lt;/strong&gt;', &lt;br /&gt;		'http://widgets.alexa.com/traffic/graph/', '&lt;strong&gt;wtxwcq9Jam6wcjjtxZsbNFLGXro=&lt;/strong&gt;');&lt;/pre&gt;&lt;br /&gt;Now we can then generate the image URL with signature:&lt;/p&gt;

&lt;p&gt;img src="http://widgets.alexa.com/traffic/graph/?r=3m&amp;amp;y=r&amp;amp;z=3&amp;amp;h=300&amp;amp;w=470&amp;amp;c=1&amp;amp;u[]=robertmao.com&amp;amp;u&lt;br /&gt;[]=wangjianshuo.com&amp;amp;u[]=williamlong.info&amp;amp;x=&lt;strong&gt;2008-07-28T22:51:24.000Z&lt;/strong&gt;&amp;amp;check=www.alexa.com&amp;amp;signature=&lt;strong&gt;wtxwcq9Jam6wcjjtxZsbNFLGXro=&lt;/strong&gt;"&lt;br /&gt;&lt;pre&gt;&lt;/pre&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=4a9ew3Z-h8o:lglYOirE3_Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=4a9ew3Z-h8o:lglYOirE3_Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=4a9ew3Z-h8o:lglYOirE3_Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=4a9ew3Z-h8o:lglYOirE3_Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=4a9ew3Z-h8o:lglYOirE3_Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/4a9ew3Z-h8o" height="1" width="1"/&gt;</description><pubDate>Mon, 28 Jul 2008 22:52:10 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/07/28/get-alexa-image-signature/</guid><category>Web</category><feedburner:origLink>http://dev.robertmao.com/2008/07/28/get-alexa-image-signature/</feedburner:origLink></item><item><title>To "refresh" a SqlDataSource.</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/ZG5PD1hquD8/</link><description>&lt;p&gt;I am trying to "refresh" a SqlDataSource in a postback action.  The basic idea is, user change some setting (which passed as paramters to the SqlDataSource) and need to "refresh" the query result. I was though to call some method in SqlDataSource but eventually I found the simplest way (maybe not that efficient) is call the object who have databinding with SqlDataSource's DataBin() again.&lt;/p&gt;

&lt;p&gt;e.g.&lt;/p&gt;

&lt;p&gt;protected void Button1_Click(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;RadChart1.DataBind();&lt;br /&gt;}&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=ZG5PD1hquD8:77Xeg0uuufw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=ZG5PD1hquD8:77Xeg0uuufw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=ZG5PD1hquD8:77Xeg0uuufw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=ZG5PD1hquD8:77Xeg0uuufw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=ZG5PD1hquD8:77Xeg0uuufw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/ZG5PD1hquD8" height="1" width="1"/&gt;</description><pubDate>Sun, 27 Jul 2008 22:10:05 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/07/27/to-refresh-a-sqldatasource/</guid><category>ASP.NET</category><category>Learning notes</category><feedburner:origLink>http://dev.robertmao.com/2008/07/27/to-refresh-a-sqldatasource/</feedburner:origLink></item><item><title>asp:ControlParameter vs asp:FormParameter</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/qP2yt8zIp-k/</link><description>&lt;p&gt;I got stucked on ASP.Net's SqlDataSource's parameters for quite a long time.  The problem is I am always trying to use aspFormParamter in a postback, there are quite a few samples in the Internet, but most of them are simple aspx page without masterpage. In my project I used masterpage, it looks like for some reason it doesn't work well.&lt;/p&gt;

&lt;p&gt;Fortunately, after I changed to asp:ControlParameter, it works great.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=qP2yt8zIp-k:M-VpMaLtsFg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=qP2yt8zIp-k:M-VpMaLtsFg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=qP2yt8zIp-k:M-VpMaLtsFg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=qP2yt8zIp-k:M-VpMaLtsFg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=qP2yt8zIp-k:M-VpMaLtsFg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/qP2yt8zIp-k" height="1" width="1"/&gt;</description><pubDate>Sun, 27 Jul 2008 22:06:24 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/07/27/aspcontrolparameter-vs-aspformparameter/</guid><category>ASP.NET</category><category>Learning notes</category><feedburner:origLink>http://dev.robertmao.com/2008/07/27/aspcontrolparameter-vs-aspformparameter/</feedburner:origLink></item><item><title>output a line in a batch *without* crlf</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/hQkVMdKNIdc/</link><description>&lt;p&gt;&lt;p&gt;Learned from here: &lt;a href="http://devduck.spaces.live.com/blog/cns%2115D0C43F1C8E7753%21390.entry"&gt;Progressive Dots&lt;/a&gt;, this is a MSFTer who developing LiveMesh. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;set /p CRLF=.&amp;lt;NUL&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;try this in command window, you will get a ''.&amp;quot; output.&amp;#160; &amp;quot;&lt;em&gt;set /p&lt;/em&gt;&amp;quot; is used for get a input with a specified prompt, &amp;quot;&lt;em&gt;&amp;lt;NUL&lt;/em&gt;&amp;quot; make it return immediately, so &amp;quot;&lt;em&gt;set /p CRLP=.&amp;lt;NUL&lt;/em&gt;&amp;quot; generate a dot without carriage return. &lt;/p&gt;  &lt;p&gt;It's a good trick, but as always, I hate .BAT files... &lt;/p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=hQkVMdKNIdc:vw0VQi-7-3M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=hQkVMdKNIdc:vw0VQi-7-3M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=hQkVMdKNIdc:vw0VQi-7-3M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=hQkVMdKNIdc:vw0VQi-7-3M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=hQkVMdKNIdc:vw0VQi-7-3M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/hQkVMdKNIdc" height="1" width="1"/&gt;</description><pubDate>Sat, 05 Jul 2008 21:38:01 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/07/05/output-a-line-in-a-batch-without-crlf/</guid><category>Learning notes</category><feedburner:origLink>http://dev.robertmao.com/2008/07/05/output-a-line-in-a-batch-without-crlf/</feedburner:origLink></item><item><title>A page which crash Firefox 3.0</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/77hpe4YMcWk/</link><description>&lt;p&gt;&lt;p&gt;Just downloaded Firefox 3.0 and found this URL will make it crash: &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.nikhilk.net/entry.aspx?id=198" href="http://www.nikhilk.net/entry.aspx?id=198"&gt;http://www.nikhilk.net/entry.aspx?id=198&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Looks like it crashed in Javascript execution...&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;updated:&lt;/strong&gt; looks like because of silverlight?&lt;/p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=77hpe4YMcWk:vLoKopY0jKA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=77hpe4YMcWk:vLoKopY0jKA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=77hpe4YMcWk:vLoKopY0jKA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=77hpe4YMcWk:vLoKopY0jKA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=77hpe4YMcWk:vLoKopY0jKA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/77hpe4YMcWk" height="1" width="1"/&gt;</description><pubDate>Tue, 17 Jun 2008 23:14:44 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/06/17/a-page-which-crash-firefox-30/</guid><category>Javascript</category><category>HTML</category><feedburner:origLink>http://dev.robertmao.com/2008/06/17/a-page-which-crash-firefox-30/</feedburner:origLink></item><item><title>Write code with no getters???</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/bjZ3nDhyleo/</link><description>&lt;p&gt;&lt;p&gt;One of my friends shared a blog post to me, at first it looks like quite a good practice, however after I read and think over I feel I am quite disagree with this guy. It’s a quite interesting debate, I am wondering if you guys like it or have your opinions. &lt;/p&gt;  &lt;p&gt;In this blog (&lt;a href="http://michaelfeathers.typepad.com/michael_feathers_blog/2008/06/the-flawed-theo.html"&gt;http://michaelfeathers.typepad.com/michael_feathers_blog/2008/06/the-flawed-theo.html&lt;/a&gt; ), someone tell a story that write code without setter will have great benefit for TDD: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“John Nolan, gave his developers a challenge: &lt;strong&gt;write OO code with no getters&lt;/strong&gt;. Whenever possible, tell another object to do something rather than ask. In the process of doing this, they noticed that their code became supple and easy to change. They also noticed that the fake objects that they were writing were highly repetitive, so they came up with the idea of a mocking framework that would allow them to set expectations on objects - mock objects.”&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Someone(&lt;a href="http://peripateticaxiom.blogspot.com/2008/06/tdd-mocks-and-design.html"&gt;http://peripateticaxiom.blogspot.com/2008/06/tdd-mocks-and-design.html&lt;/a&gt; ) extended his idea and provided a code sample: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;“Suppose that we want to print a value that some object can provide. Rather than writing something like &lt;code&gt;statement.append(account.getTransactions())&lt;/code&gt; instead we would write something more like &lt;code&gt;account.appendTransactionTo(statement)&lt;/code&gt; We can test this easily by passing in a mocked statement that expects to have a call like &lt;code&gt;append(transaction)&lt;/code&gt; made. Code written this way does turn out to be more flexible, easier to maintain and also, I submit, easier to read and understand. (Partly because) This style lends itself well to the use of &lt;a href="http://c2.com/cgi/wiki?IntentionRevealingNames"&gt;Intention Revealing Names&lt;/a&gt;.”&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Those idea looks great at the first sight, but at least for me I complete can’t agree with the second guy, I feel what he *&lt;b&gt;suggested&lt;/b&gt;* is what I will *&lt;b&gt;avoid&lt;/b&gt;*. Maybe he just gave a bad sample, however from his blog’s long debate it looks like he is quite confident with his idea. &lt;/p&gt;  &lt;p&gt;Reference reading: &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Getter/Setter debate: &lt;a href="http://moffdub.wordpress.com/2008/06/16/the-getter-setter-debate/"&gt;http://moffdub.wordpress.com/2008/06/16/the-getter-setter-debate/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Getter Eradicator: &lt;a href="http://martinfowler.com/bliki/GetterEradicator.html"&gt;http://martinfowler.com/bliki/GetterEradicator.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Why getter/setter are evil: &lt;a href="http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html"&gt;http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Doing it wrong: getters &amp;amp; setters: &lt;a href="http://typicalprogrammer.com/?p=23"&gt;http://typicalprogrammer.com/?p=23&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;--&lt;/p&gt;  &lt;p&gt;I would like to hear your opinions....&lt;/p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=bjZ3nDhyleo:yEJL1qGLdNA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=bjZ3nDhyleo:yEJL1qGLdNA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=bjZ3nDhyleo:yEJL1qGLdNA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=bjZ3nDhyleo:yEJL1qGLdNA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=bjZ3nDhyleo:yEJL1qGLdNA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/bjZ3nDhyleo" height="1" width="1"/&gt;</description><pubDate>Tue, 17 Jun 2008 22:53:41 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/06/17/write-code-with-no-getters/</guid><category>Learning notes</category><feedburner:origLink>http://dev.robertmao.com/2008/06/17/write-code-with-no-getters/</feedburner:origLink></item><item><title>Better captcha idea&amp;hellip;</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/jG1v51SJE_4/</link><description>&lt;p&gt;&lt;p&gt;Some idea just came on the training sessions: &lt;/p&gt;  &lt;p&gt;1. user don’t need to input any captcha code, user just click on a button; &lt;/p&gt;  &lt;p&gt;2. the “button” is a image which looks like a button, but hard to be find out by robots (image can contain invisible noises or backgrounds to make image recognition algorithm really hard to implement)&amp;#160; &lt;/p&gt;  &lt;p&gt;3. server generate the position of the button, and verify the position of click to check if it’s in “range”. &lt;/p&gt;  &lt;p&gt;--&lt;/p&gt;  &lt;p&gt;This method will not need user to enable javascript. I saw a good captcha idea by ask user to simply drag an object to a area with JS. &lt;/p&gt;  &lt;p&gt;--&lt;/p&gt;  &lt;p&gt;some links in captcha (not related or similar to my ideas so far) :&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.eggheadcafe.com/tutorials/aspnet/79e023b6-124f-4f63-865c-6d357cddbe56/a-better-captcha-control.aspx" href="http://www.eggheadcafe.com/tutorials/aspnet/79e023b6-124f-4f63-865c-6d357cddbe56/a-better-captcha-control.aspx"&gt;http://www.eggheadcafe.com/tutorials/aspnet/79e023b6-124f-4f63-865c-6d357cddbe56/a-better-captcha-control.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://haacked.com/archive/2006/10/02/Better_CAPTCHA_Through_Encryption.aspx" href="http://haacked.com/archive/2006/10/02/Better_CAPTCHA_Through_Encryption.aspx"&gt;http://haacked.com/archive/2006/10/02/Better_CAPTCHA_Through_Encryption.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://haacked.com/archive/2006/09/26/Lightweight_Invisible_CAPTCHA_Validator_Control.aspx" href="http://haacked.com/archive/2006/09/26/Lightweight_Invisible_CAPTCHA_Validator_Control.aspx"&gt;http://haacked.com/archive/2006/09/26/Lightweight_Invisible_CAPTCHA_Validator_Control.aspx&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=jG1v51SJE_4:RG9wTQCkkFE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=jG1v51SJE_4:RG9wTQCkkFE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=jG1v51SJE_4:RG9wTQCkkFE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=jG1v51SJE_4:RG9wTQCkkFE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=jG1v51SJE_4:RG9wTQCkkFE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/jG1v51SJE_4" height="1" width="1"/&gt;</description><pubDate>Tue, 17 Jun 2008 14:43:39 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/06/17/better-captcha-idea/</guid><category>Ideas</category><feedburner:origLink>http://dev.robertmao.com/2008/06/17/better-captcha-idea/</feedburner:origLink></item><item><title>idea: future personal site?</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/X5DEvXmb81s/</link><description>&lt;p&gt;&lt;p&gt;Future personal site ideas and some mock up.&amp;#160; This future personal site is many ideas in one:&lt;/p&gt;  &lt;p&gt;* It’s a personal site, but it’s services/modules may provided by many providers&lt;/p&gt;  &lt;p&gt;* it's a personal identity server, user only need to login from there&lt;/p&gt;  &lt;p&gt;* It's all other service's &amp;quot;starting point&amp;quot;, use a new service means &amp;quot;install&amp;quot; (at least a link) in your home site&lt;/p&gt;  &lt;p&gt;* it provide some basic services (e.g. openid, OPSN, etc.) those service remain standard.&amp;#160; &lt;/p&gt;  &lt;p&gt;* privacy data (e.g. friend's email, contact info) will not be exposed to applications, it only expose some function such as &amp;quot;invite friends&amp;quot;, &amp;quot;notify friends&amp;quot; etc to applications. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A screen mock of install &amp;quot;some service&amp;quot; to my personal site: &lt;/p&gt;  &lt;p&gt;&lt;img height="480" alt="image" src="http://idea.robertmao.com/files/2008/06/image.png" width="620" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;img height="458" alt="image" src="http://idea.robertmao.com/files/2008/06/image1.png" width="615" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;img height="463" alt="image" src="http://idea.robertmao.com/files/2008/06/image2.png" width="608" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;img height="456" alt="image" src="http://idea.robertmao.com/files/2008/06/image3.png" width="612" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;&lt;img height="469" alt="image" src="http://idea.robertmao.com/files/2008/06/image4.png" width="610" border="0" /&gt;&lt;/p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=X5DEvXmb81s:tCdR3JQCO6Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=X5DEvXmb81s:tCdR3JQCO6Q:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=X5DEvXmb81s:tCdR3JQCO6Q:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=X5DEvXmb81s:tCdR3JQCO6Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=X5DEvXmb81s:tCdR3JQCO6Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/X5DEvXmb81s" height="1" width="1"/&gt;</description><pubDate>Sun, 15 Jun 2008 19:26:17 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/06/15/idea-future-personal-site/</guid><category>Ideas</category><category>OPSN</category><feedburner:origLink>http://dev.robertmao.com/2008/06/15/idea-future-personal-site/</feedburner:origLink></item><item><title>Dump SQL Server Express' DB Schema</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/YJinblbi1Zc/</link><description>&lt;p&gt;&lt;p&gt;I am quite feeling lost since SQL Server 2005, SQL Server Express don't come with the &amp;quot;Enterprise manager&amp;quot; any more... I used to do many stuff under that Enterprise manager for SQL Server 2000 before. &lt;/p&gt;  &lt;p&gt;One simple task I need to do is dump my database schema and transfer to another server, I can easily do that before in Enterprise manager, now I don't even know hot to dump and generate the SQL statement... fortunately I found this tool: &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.codeplex.com/sqlhost" href="http://www.codeplex.com/sqlhost"&gt;http://www.codeplex.com/sqlhost&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;h5&gt;Database Publishing Wizard &lt;/h5&gt;    &lt;p&gt;&lt;b&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=56E5B1C5-BF17-42E0-A410-371A838E570A"&gt;Download the Current Release (1.1)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.codeplex.com/sqlhost/Wiki/View.aspx?title=Localized%20versions%20of%201.1&amp;amp;referringTitle=Database%20Publishing%20Wizard"&gt;Localized versions of 1.1&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;The Database Publishing Wizard enables the deployment of SQL Server 2005 databases (both schema and data) into a shared hosting environment on either a SQL Server 2000 or 2005 server.      &lt;br /&gt;The tool supports two modes of deployment:&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;It generates a single SQL script file which can be used to recreate a database when the only connectivity to a server is through a web-based control panel with a script execution window. &lt;/li&gt;      &lt;li&gt;It connects to a web service provided by your hoster and directly creates objects on a specified hosted database &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;The Database Publishing Wizard provide both a graphical and a command-line interface. In addition, it can integrate directly into Visual Studio 2005 or Visual Web Developer 2005.&lt;/p&gt;&lt;/blockquote&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=YJinblbi1Zc:34RWLK0nqnk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=YJinblbi1Zc:34RWLK0nqnk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=YJinblbi1Zc:34RWLK0nqnk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=YJinblbi1Zc:34RWLK0nqnk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=YJinblbi1Zc:34RWLK0nqnk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/YJinblbi1Zc" height="1" width="1"/&gt;</description><pubDate>Wed, 04 Jun 2008 14:32:27 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/06/04/dump-sql-server-express-db-schema/</guid><category>Visual Studio</category><category>Learning notes</category><feedburner:origLink>http://dev.robertmao.com/2008/06/04/dump-sql-server-express-db-schema/</feedburner:origLink></item><item><title>My suggestions on Web2py's route design</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/7RpqjpHIxDA/</link><description>&lt;p&gt;&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Learning &lt;a href="http://web2py.com/"&gt;web2py&lt;/a&gt;, it's an excellent yet young python web framework, I just wrote a few suggestions in the dev group: (&lt;a title="route to controllers- Some idea may take from ASP.NET MVC&amp;#39;s design" href="http://groups.google.com/group/web2py/t/ae76852c30ac3c73"&gt;route to controllers- Some idea may take from ASP.NET MVC's design&lt;/a&gt;)&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;I am learning web2py and very new to Python, so I could be wrong or I am not yet understand Massimo Di Pierro's principles, just some opinions for discuss.&amp;#160; &lt;/p&gt;    &lt;p&gt;Looks like the URL rules&amp;#160; /[applicaiton]/[controller]/[function]&amp;#160; is hard coded, I saw the code in main.py (lines near 140) : &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; request.application=items[0]      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; request.controller=items[1]       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; request.function=items[2] &lt;/p&gt;    &lt;p&gt;And also I found /static/... is hard coded as well. &lt;/p&gt;    &lt;p&gt;Yes, with rewrite.py(route.py), we can rewrite any URL in this format and rewrite any this kind of URL to whatever we want. However there maybe some design which could be more flexible and yet keep CoC in good shape. &lt;/p&gt;    &lt;p&gt;Look at the latest Microsoft ASP.NET MVC (now in preview 3, you can read this blog &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/05/27/asp-net-mvc-preview-3-release.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2008/05/27/asp-net-mvc-preview-3-release.aspx&lt;/a&gt; to get some general idea), it also have a route mapping mechanism, you can write your rule to define which part means &amp;quot;controller&amp;quot; which part means &amp;quot;action&amp;quot;, if you read the blog post I give, in the end part it introduced the route. &lt;/p&gt;    &lt;p&gt;Something interesting is, that new added route part is NOT a part of ASP.NET MVC framework, it's actually useful for some other senarios, e.g. new release ASP.NET dynamic data applications(ASP.NET's answer to scaffold) &lt;/p&gt;    &lt;p&gt;My points is, a more flexible routing mechanism could make the architect looks better and more flexible and you won't need to give up the compatibility and CoC principle. &lt;/p&gt;    &lt;p&gt;ASP.NET MVC's design learned a lot from Ruby On Rails, actually RoR's route design is also quite flexible (refere to &lt;a href="http://manuals.rubyonrails.com/read/chapter/65)"&gt;http://manuals.rubyonrails.com/read/chapter/65)&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=7RpqjpHIxDA:tfeFMKwrc5M:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=7RpqjpHIxDA:tfeFMKwrc5M:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=7RpqjpHIxDA:tfeFMKwrc5M:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=7RpqjpHIxDA:tfeFMKwrc5M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=7RpqjpHIxDA:tfeFMKwrc5M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/7RpqjpHIxDA" height="1" width="1"/&gt;</description><pubDate>Tue, 03 Jun 2008 23:34:54 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/06/03/my-suggestions-on-web2pys-route-design/</guid><category>Learning notes</category><feedburner:origLink>http://dev.robertmao.com/2008/06/03/my-suggestions-on-web2pys-route-design/</feedburner:origLink></item><item><title>Good comparing of GAE Data Store .vs. Amazon Simple DB .vs. MS SSDS</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/drBeYRmXm8A/</link><description>&lt;p&gt;&lt;p&gt;Found a good comparing paper on: &lt;/p&gt;  &lt;p&gt;&lt;a href="http://oakleafblog.blogspot.com/2008/04/comparing-google-app-engine-amazon.html"&gt;Comparing Google App Engine, Amazon SimpleDB and Microsoft SQL Server Data Services&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=drBeYRmXm8A:g8jxQGRJ6nA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=drBeYRmXm8A:g8jxQGRJ6nA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=drBeYRmXm8A:g8jxQGRJ6nA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=drBeYRmXm8A:g8jxQGRJ6nA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=drBeYRmXm8A:g8jxQGRJ6nA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/drBeYRmXm8A" height="1" width="1"/&gt;</description><pubDate>Mon, 02 Jun 2008 14:42:04 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/06/02/good-comparing-of-gae-data-store-vs-amazon-simple-db-vs-ms-ssds/</guid><category>Learning notes</category><feedburner:origLink>http://dev.robertmao.com/2008/06/02/good-comparing-of-gae-data-store-vs-amazon-simple-db-vs-ms-ssds/</feedburner:origLink></item><item><title>Emulate a file system in Google Apps Engine with its Data store API?</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/1TzrGGq3upM/</link><description>&lt;p&gt;&lt;p&gt;GAE don't have a normal file system, it don't have something similar to Amazon's S3, so it's not very developer friendly to develop something like a photo, video, file sharing service. &lt;/p&gt;  &lt;p&gt;Just played GAE for a whole afternoon, tried all GAE current APIs and made a simplest photo album test apps. &lt;/p&gt;  &lt;p&gt;I am thinking of build a &amp;quot;file system&amp;quot; on top of Data store API, since Data Store API does support Blob field, it should be not difficult to do so. I am thinking of use S3 alike API or moglifs alike API to do so. &lt;/p&gt;  &lt;p&gt;Basic idea is create a table, say FileSystem,&amp;#160; it have columns: path, name, ext, create_date, blob_data_store. And create handler, e.g. /file/.*,&amp;#160; it will use the path to query the FileSystem table, and reply the blob data.&lt;/p&gt;  &lt;p&gt;I will first look if someone already did this, if not I may play my own. &lt;/p&gt;  &lt;p&gt;Current GAE only allow max 1M file size and total 500M data store, so it's not that useful at this stage, but consider it's price announced on their blog, it looks like pretty nice in compare of Amazon's S3.&lt;/p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=1TzrGGq3upM:4RCnmwPFM-0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=1TzrGGq3upM:4RCnmwPFM-0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=1TzrGGq3upM:4RCnmwPFM-0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=1TzrGGq3upM:4RCnmwPFM-0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=1TzrGGq3upM:4RCnmwPFM-0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/1TzrGGq3upM" height="1" width="1"/&gt;</description><pubDate>Mon, 02 Jun 2008 14:28:20 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/06/02/emulate-a-file-system-in-google-apps-engine-with-its-data-store-api/</guid><category>idea</category><feedburner:origLink>http://dev.robertmao.com/2008/06/02/emulate-a-file-system-in-google-apps-engine-with-its-data-store-api/</feedburner:origLink></item><item><title>Very good articles on MVC, MVP and more.</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/faFqFwb7ZEM/</link><description>&lt;p&gt;&lt;p&gt;Very good articles on MVC, MVP and more.&lt;/p&gt;  &lt;h5&gt;&lt;a href="http://ctrl-shift-b.blogspot.com/2007/08/interactive-application-architecture.html"&gt;Interactive Application Architecture Patterns&lt;/a&gt;&lt;/h5&gt;  &lt;p&gt;&lt;a href="http://ctrl-shift-b.blogspot.com/2007/08/interactive-application-architecture.html"&gt;An Introduction to the Model-View-Controller, Model-View-Presenter, and Presentation-Abstraction-Control Patterns&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=faFqFwb7ZEM:lPH1A7GvBnU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=faFqFwb7ZEM:lPH1A7GvBnU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=faFqFwb7ZEM:lPH1A7GvBnU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=faFqFwb7ZEM:lPH1A7GvBnU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=faFqFwb7ZEM:lPH1A7GvBnU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/faFqFwb7ZEM" height="1" width="1"/&gt;</description><pubDate>Sat, 31 May 2008 08:56:26 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/05/31/very-good-articles-on-mvc-mvp-and-more/</guid><category>TDD</category><category>Learning notes</category><feedburner:origLink>http://dev.robertmao.com/2008/05/31/very-good-articles-on-mvc-mvp-and-more/</feedburner:origLink></item><item><title>Presenter First approach in MVP</title><link>http://feedproxy.google.com/~r/devrobertmao/~3/ZrukRbJbHAU/</link><description>&lt;p&gt;&lt;p&gt;A colleague of mine recommended me a great paper to read: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160;&lt;a href="http://atomicobject.com/files/PresenterFirstAgile2006.pdf"&gt;&amp;quot;Presenter First: Organizing Complex GUI Applications for Test-Driven Development&amp;quot;&lt;/a&gt;, agile, pp. 276-288, AGILE 2006 (AGILE'06), 2006.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I really like the idea in this paper, it's practical and useful in daily development life. &lt;/p&gt;  &lt;p&gt;There are many articles or implementations and even courses talk about MVC or MVP, but most of them only gave very simple examples for them. Yes, it's really easy to understand or sounds clear for a simple M-V-C piece or simple M-V-P piece, however in real life, a complete application contains many Models, Views, and Controllers/Presenters, this will be much harder than a simple sample. &lt;/p&gt;  &lt;p&gt;This paper give a great approach in MVP best practice, I am still learning more and will do some experiment&amp;#160; development, but I already feel I should strongly recommend this paper. &lt;/p&gt;  &lt;p&gt;More valuable links and examples, videos here: &lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.atomicobject.com/pages/Presenter+First" href="http://www.atomicobject.com/pages/Presenter+First"&gt;http://www.atomicobject.com/pages/Presenter+First&lt;/a&gt;&lt;/p&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=ZrukRbJbHAU:W1zfis14RxM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=ZrukRbJbHAU:W1zfis14RxM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=ZrukRbJbHAU:W1zfis14RxM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/devrobertmao?a=ZrukRbJbHAU:W1zfis14RxM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/devrobertmao?i=ZrukRbJbHAU:W1zfis14RxM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/devrobertmao/~4/ZrukRbJbHAU" height="1" width="1"/&gt;</description><pubDate>Wed, 28 May 2008 22:36:37 +0000</pubDate><guid isPermaLink="false">http://dev.robertmao.com/2008/05/28/presenter-first-approach-in-mvp/</guid><category>TDD</category><category>Learning notes</category><feedburner:origLink>http://dev.robertmao.com/2008/05/28/presenter-first-approach-in-mvp/</feedburner:origLink></item></channel></rss>
