<?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:blogger='http://schemas.google.com/blogger/2008' 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-2323225770790057567</id><updated>2026-10-14T13:42:03.265-07:00</updated><category term=".Net"/><category term="javascript"/><category term="C#"/><category term="ASP.Net"/><category term="Android"/><category term="IIS"/><category term="Google Maps API"/><category term="JSON"/><category term="Java"/><category term="HTML"/><category term="MVC"/><category term="SQL"/><category term="Visual Studio"/><category term="Windows"/><category term="XML"/><category term="algorithms"/><category term="jquery"/><category term="C++"/><category term="Cloud"/><category term="DNS"/><category term="Database"/><category term="HTTP"/><category term="IDE"/><category term="IoC"/><category term="MSSQL"/><category term="Maps"/><category term="NLog"/><category term="Oracle"/><category term="REST"/><category term="RegExp"/><category term="SVN"/><category term="SharePoint"/><category term="Testing"/><category term="VS"/><category term="WCF"/><category term="Web API"/><category term="Web Testing"/><category term="ajax"/><category term="bada"/><category term="git"/><category term="iPhone"/><category term="mobile"/><title type='text'>Tech Has No Boundary</title><subtitle type='html'>A expert on system architect with full SDLC and Agile development experience.&#xa;Skills: ,  C# C++ Scrum OOA/OOD javascript ASP.Net MVC XML, HTML Web Service, RESTful, WCF, Android and etc.&#xa;&#xa;Email me if you need help on development.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-7918421862512659306</id><published>2012-07-31T12:09:00.001-07:00</published><updated>2012-07-31T12:16:39.733-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><title type='text'>Deploy TimerJobs to SharePoint 2007 farm</title><content type='html'>&lt;p&gt;
Working with SharePoint 2007 is full with excitement, don&#39;t you agree? I am lucky enough to be an advanced SharePoint developer + admin. Today, I am going to share one trick on deploying TimerJobs to MOSS 3.0. 
&lt;/p&gt;
&lt;p&gt;
After executing a list of &quot;stsadm&quot; commands, please be sure to recycle the MOSS Timer service, and do a recycle of your IIS app pools. 
&lt;/p&gt;
It took me a day for figure out why the newly deployed timerjob wasn&#39;t running, as there is no any system trace available to you. 

Hope it help.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&#39;font-size:0.9em;color:red;&#39;&gt; show your appreciation by clicking on those Google ads &lt;/span &gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/7918421862512659306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/07/deploy-timerjobs-to-sharepoint-2007-farm.html#comment-form' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/7918421862512659306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/7918421862512659306'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/07/deploy-timerjobs-to-sharepoint-2007-farm.html' title='Deploy TimerJobs to SharePoint 2007 farm'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-5302771540231989051</id><published>2012-03-23T13:34:00.000-07:00</published><updated>2012-09-18T10:01:09.454-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".Net"/><category scheme="http://www.blogger.com/atom/ns#" term="ASP.Net"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="MVC"/><category scheme="http://www.blogger.com/atom/ns#" term="Web API"/><title type='text'>MVC 4 Web API access Session</title><content type='html'>It&#39;s not&amp;nbsp;recommended&amp;nbsp;to use Session &amp;nbsp;in Web API for various of good reasons. However, in case you&#39;re still so interested to access Session for any business needs, here is a quick solution to allow accessing Session in Web API.&lt;br /&gt;
&lt;br /&gt;

&lt;pre class=&quot;brush:c#&quot;&gt;
&amp;nbsp;
// In global.asax
public class MvcApp : System.Web.HttpApplication
{
 public static void RegisterRoutes(RouteCollection routes)
 {
  var route = routes.MapHttpRoute(
   name: &quot;DefaultApi&quot;,
   routeTemplate: &quot;api/{controller}/{id}&quot;,
   defaults: new { id = RouteParameter.Optional }
  );
  route.RouteHandler = new MyHttpControllerRouteHandler();
 }
}

// Create two new classes
public class MyHttpControllerHandler : HttpControllerHandler, IRequiresSessionState
{
 public MyHttpControllerHandler(RouteData routeData): base(routeData)
 {
 }
}
public class MyHttpControllerRouteHandler : HttpControllerRouteHandler
{
 protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
 {
  return new MyHttpControllerHandler(requestContext.RouteData);
 }
}

// Now Session is visible in your Web API
public class ValuesController : ApiController
{
 public string GET(string input)
 {
  var session = HttpContext.Current.Session;
  if (session != null)
  {
   if (session[&quot;Time&quot;] == null)
    session[&quot;Time&quot;] = DateTime.Now;
   return &quot;Session Time: &quot; + session[&quot;Time&quot;] + input;
  }
  return &quot;Session is not availabe&quot; + input;
 }
}
&amp;nbsp;
&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;small&gt;Source is &lt;a href=&quot;http://forums.asp.net/t/1780385.aspx/1/10&quot; &gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/5302771540231989051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/03/mvc-4-web-api-access-session.html#comment-form' title='58 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/5302771540231989051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/5302771540231989051'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/03/mvc-4-web-api-access-session.html' title='MVC 4 Web API access Session'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>58</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-426358093696372838</id><published>2012-03-22T08:51:00.000-07:00</published><updated>2012-03-22T08:51:35.069-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Cloud"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>First Cloud OS - Solaris 11</title><content type='html'>Oracle has released Solaris 11 and claimed it as the first Cloud OS in the market. Looking forward to having my hands on it.&lt;br /&gt;
&lt;br /&gt;
Details of Oracle Solaris 11 can be found on &lt;a href=&quot;http://www.oracle.com/us/products/servers-storage/solaris/solaris11/overview/index.html&quot;&gt;here&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/426358093696372838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/03/first-cloud-os-solaris-11.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/426358093696372838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/426358093696372838'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/03/first-cloud-os-solaris-11.html' title='First Cloud OS - Solaris 11'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-3799604900382951693</id><published>2012-02-13T11:44:00.000-08:00</published><updated>2012-02-13T11:44:52.320-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="IDE"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Best IDE tools/plug-ins for eclipse Java development</title><content type='html'>Looking for best IDE integrated tools/plug-ins for eclipse Java development just like Resharper or CodeRush for Visual Studio .Net platform. Anyone has few suggestions?</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/3799604900382951693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/02/best-ide-toolsplug-ins-for-eclipse-java.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/3799604900382951693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/3799604900382951693'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/02/best-ide-toolsplug-ins-for-eclipse-java.html' title='Best IDE tools/plug-ins for eclipse Java development'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-3468788459094762563</id><published>2012-01-30T11:38:00.000-08:00</published><updated>2012-01-30T11:38:46.862-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="algorithms"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>javascript: base64 encoding</title><content type='html'>It&#39;s quite easy to implement. See the code snippets below 
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:javascript&quot;&gt;
&amp;lt;script&amp;gt;
&amp;nbsp; &amp;nbsp; base64Keys = &quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=&quot;;
&amp;nbsp; &amp;nbsp; base64Encode = function(input) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; var chr1, chr2, chr3, enc1, enc2, enc3, enc4, i, output;
&amp;nbsp; &amp;nbsp; &amp;nbsp; output = &quot;&quot;;
&amp;nbsp; &amp;nbsp; &amp;nbsp; i = 0;
&amp;nbsp; &amp;nbsp; &amp;nbsp; input = utf8Encode(input);
&amp;nbsp; &amp;nbsp; &amp;nbsp; while (i &amp;lt; input.length) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; chr1 = input.charCodeAt(i++);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; chr2 = input.charCodeAt(i++);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; chr3 = input.charCodeAt(i++);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; enc1 = chr1 &amp;gt;&amp;gt; 2;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; enc2 = ((chr1 &amp;amp; 3) &amp;lt;&amp;lt; 4) | (chr2 &amp;gt;&amp;gt; 4);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; enc3 = ((chr2 &amp;amp; 15) &amp;lt;&amp;lt; 2) | (chr3 &amp;gt;&amp;gt; 6);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; enc4 = chr3 &amp;amp; 63;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (isNaN(chr2)) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; enc3 = enc4 = 64;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else if (isNaN(chr3)) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; enc4 = 64;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; output = &quot;&quot; + output + (base64Keys.charAt(enc1)) + (base64Keys.charAt(enc2)) + (enc3 &amp;lt; 64 ? base64Keys.charAt(enc3) : &#39;&#39;) + (enc4 &amp;lt; 64 ? base64Keys.charAt(enc4) : &#39;&#39;);
&amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; return output;
&amp;nbsp; &amp;nbsp; };

&amp;nbsp; &amp;nbsp; utf8Encode = function(string) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; var c, s, utftext, _i, _len, _ref;
&amp;nbsp; &amp;nbsp; &amp;nbsp; string = string.replace(/\r\n/g, &quot;\n&quot;);
&amp;nbsp; &amp;nbsp; &amp;nbsp; utftext = &quot;&quot;;
&amp;nbsp; &amp;nbsp; &amp;nbsp; _ref = string.split(&#39;&#39;);
&amp;nbsp; &amp;nbsp; &amp;nbsp; for (_i = 0, _len = _ref.length; _i &amp;lt; _len; _i++) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; s = _ref[_i];
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; c = s.charCodeAt(0);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (c &amp;lt; 128) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; utftext += String.fromCharCode(c);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else if (c &amp;gt; 127 &amp;amp;&amp;amp; c &amp;lt; 2048) {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; utftext += String.fromCharCode((c &amp;gt;&amp;gt; 6) | 192);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; utftext += String.fromCharCode((c &amp;amp; 63) | 128);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } else {
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; utftext += String.fromCharCode((c &amp;gt;&amp;gt; 12) | 224);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; utftext += String.fromCharCode(((c &amp;gt;&amp;gt; 6) &amp;amp; 63) | 128);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; utftext += String.fromCharCode((c &amp;amp; 63) | 128);
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; }
&amp;nbsp; &amp;nbsp; &amp;nbsp; return utftext;
&amp;nbsp; &amp;nbsp; };
&amp;lt;/script&amp;gt;
&amp;nbsp;&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/3468788459094762563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/01/javascript-base64-encoding.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/3468788459094762563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/3468788459094762563'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/01/javascript-base64-encoding.html' title='javascript: base64 encoding'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-4191517324983186711</id><published>2012-01-27T10:29:00.000-08:00</published><updated>2012-01-30T11:39:20.325-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Command-line to launch Android emulator.</title><content type='html'>Assuming Android SDK has been successfully installed and AVD of your target android version was created. For Window 7 user, the install path is likely at &quot;c:\Program Files\Android\android-sdk\tools\&quot;. If you have problems on above step, please refer to &lt;a href=&quot;http://developer.android.com/sdk/index.html&quot;&gt;Android developer site&lt;/a&gt; or email me.

The command line to launch your emulator, for example IceCream.&lt;br /&gt;
&lt;br /&gt;

c:\&amp;gt;&quot;C:\Program Files\Android\android-sdk\tools\emulator.exe&quot; -avd IceCream</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/4191517324983186711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/01/command-line-to-launch-android-emulator.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/4191517324983186711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/4191517324983186711'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/01/command-line-to-launch-android-emulator.html' title='Command-line to launch Android emulator.'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-4760745906383317616</id><published>2012-01-27T10:16:00.000-08:00</published><updated>2012-01-27T10:20:17.273-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="Maps"/><title type='text'>Javascript to request GPS location from web page</title><content type='html'>There is no direct method natively built in Javascript stack. Don&#39;t give up though. I am giving your few lines of code to provide the result you look for. The code runs well on IE9, Chrome, FireFox, Safari on both PC and mobile device platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:javascript&quot;&gt;&amp;nbsp;
function requestGeoLocation() {
 if (navigator.geolocation) {
 navigator.geolocation.getCurrentPosition(function(loc){
 // do nothing
 //document.getElementById(&#39;myloc&#39;).innerHTML = &#39;Location: &#39; + 
 //    loc.coords.latitude + &#39;, &#39; +
 //    loc.coords.longitude;
    
        }, function() { alert(&#39;request denied or something went wrong.&#39;);});
} else { 
 alert(&#39;GPS is supported.&#39;); 
}
&amp;nbsp;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/4760745906383317616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/01/javascript-to-request-gps-location-from.html#comment-form' title='27 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/4760745906383317616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/4760745906383317616'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/01/javascript-to-request-gps-location-from.html' title='Javascript to request GPS location from web page'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>27</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-6513816608412557710</id><published>2012-01-24T09:41:00.000-08:00</published><updated>2012-01-24T11:52:58.464-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="bada"/><category scheme="http://www.blogger.com/atom/ns#" term="C++"/><category scheme="http://www.blogger.com/atom/ns#" term="mobile"/><title type='text'>bada mobile platform for C++ and Flash developersd</title><content type='html'>bada is Korean name meaning &quot;ocean&quot; or &quot;sea&quot;. As you could guess, it&#39;s provided by another mobile device manufacture outside the North American region, called Samsung. 

Many mobile/tablet developers probably already knew much as objective-c and android. If you were hard core C++ fans like me, you probably want to take look at bada which provides you a ever familiar syntax and powerful OOD support. bada&#39;s home site is &lt;a href=&quot;http://developer.bada.com/&quot;&gt;here&lt;/a&gt;.
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWXimVxNtoX86KwrFSC1MNHsYYaBUR7vo2umeeIaaQez_seAyfw5U_0SbW3vrUm-2OBKvT-D4qRe3p-ofDFXAd_WOPuL1e5Nt2gTgjU3b6DrgYT_c6pC-o2IMqChH2LqgG3RYpKST_a9d9/s1600/bada-ide.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;178&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWXimVxNtoX86KwrFSC1MNHsYYaBUR7vo2umeeIaaQez_seAyfw5U_0SbW3vrUm-2OBKvT-D4qRe3p-ofDFXAd_WOPuL1e5Nt2gTgjU3b6DrgYT_c6pC-o2IMqChH2LqgG3RYpKST_a9d9/s320/bada-ide.PNG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
bada IDE is eclipse CDT-base (C/C++ Development Tools). So you don&#39;t have to learn everything from the&amp;nbsp;beginning&amp;nbsp;if knows eclipse.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A new project wizard dialog pops up from &quot;File-&amp;gt;New-&amp;gt;bada C++/Flash Application Project&quot;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGnLEzIPa4f0eXA__B7Go_tEdwsojJboGIEBn3lw9GSRhyz8JA0hKPXGMSoFeeSCoW7EDAI89YqzgUqwH63JkZeVF2lf2DkPAruUD_IrBkJtlULOToYPtHCbrgwZf9cu5YBeYxep5p-E3_/s1600/bada-new-project.PNG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGnLEzIPa4f0eXA__B7Go_tEdwsojJboGIEBn3lw9GSRhyz8JA0hKPXGMSoFeeSCoW7EDAI89YqzgUqwH63JkZeVF2lf2DkPAruUD_IrBkJtlULOToYPtHCbrgwZf9cu5YBeYxep5p-E3_/s320/bada-new-project.PNG&quot; width=&quot;290&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/6513816608412557710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/01/bada-mobile-platform-for-c-and-flash.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/6513816608412557710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/6513816608412557710'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/01/bada-mobile-platform-for-c-and-flash.html' title='bada mobile platform for C++ and Flash developersd'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWXimVxNtoX86KwrFSC1MNHsYYaBUR7vo2umeeIaaQez_seAyfw5U_0SbW3vrUm-2OBKvT-D4qRe3p-ofDFXAd_WOPuL1e5Nt2gTgjU3b6DrgYT_c6pC-o2IMqChH2LqgG3RYpKST_a9d9/s72-c/bada-ide.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-8295896069209103605</id><published>2012-01-12T23:01:00.000-08:00</published><updated>2012-01-12T23:01:26.516-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="MSSQL"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL"/><title type='text'>The database principal owns a schema in the database, and cannot be dropped</title><content type='html'>Encounter this while restoring a SQL Server database backup from one server to another, and trying to delete a user comes from the backup.&lt;br /&gt;
&lt;br /&gt;
The workaround is to list all the schema that user owns by following script:&lt;br /&gt;
&lt;pre class=&#39;brush:sql&#39;&gt;
SELECT name FROM &amp;nbsp;sys.schemas WHERE principal_id = USER_ID(&#39;usertodelete&#39;);&lt;br /&gt;
&lt;/pre&gt;
&lt;br /&gt;
then remove or transfer those schema owned by that user to another user, such as dbo by this script:&lt;br /&gt;
&lt;pre class=&#39;brush:sql&#39;&gt;
alter authorization on schema::schema_name to dbo;&lt;br /&gt;
&lt;/pre&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/8295896069209103605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/01/database-principal-owns-schema-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/8295896069209103605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/8295896069209103605'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2012/01/database-principal-owns-schema-in.html' title='The database principal owns a schema in the database, and cannot be dropped'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-893630862882711392</id><published>2011-12-31T23:44:00.000-08:00</published><updated>2011-12-31T23:51:01.328-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".Net"/><title type='text'>Microsoft Managed Extensibility Framework (MEF)</title><content type='html'>Managed Extensibility Framework (MEF) &lt;span style=&quot;font-family: &#39;Segoe UI&#39;, &#39;Microsoft Sans Serif&#39;, Arial, Geneva, sans-serif; font-size: 13px;&quot;&gt;is a composition layer for .NET that improves the flexibility, maintainability and testability of large applications. MEF can be used for third-party plugin extensibility, or it can bring the benefits of a loosely-coupled plugin-like architecture to regular applications.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Segoe UI&#39;, &#39;Microsoft Sans Serif&#39;, Arial, Geneva, sans-serif; font-size: 13px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Segoe UI&#39;, &#39;Microsoft Sans Serif&#39;, Arial, Geneva, sans-serif; font-size: 13px;&quot;&gt;MEF is a part of the Microsoft .NET Framework, with types primarily under the&lt;/span&gt;&lt;i style=&quot;font-family: &#39;Segoe UI&#39;, &#39;Microsoft Sans Serif&#39;, Arial, Geneva, sans-serif; font-size: 13px;&quot;&gt;System.ComponentModel.Composition.*&lt;/i&gt;&lt;span style=&quot;font-family: &#39;Segoe UI&#39;, &#39;Microsoft Sans Serif&#39;, Arial, Geneva, sans-serif; font-size: 13px;&quot;&gt;&amp;nbsp;namespaces.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &#39;Segoe UI&#39;, &#39;Microsoft Sans Serif&#39;, Arial, Geneva, sans-serif; font-size: 13px;&quot;&gt;MEF has shipped with .NET 4.0 and Silverlight 4&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: &#39;Segoe UI&#39;, &#39;Microsoft Sans Serif&#39;, Arial, Geneva, sans-serif; font-size: 13px;&quot;&gt;MEF 2 is under development and can be downloaded in source code and binary form from this site&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;span style=&quot;font-family: &#39;Segoe UI&#39;, &#39;Microsoft Sans Serif&#39;, Arial, Geneva, sans-serif;&quot;&gt;For more information, click &lt;a href=&quot;http://mef.codeplex.com/&quot;&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Segoe UI&#39;, &#39;Microsoft Sans Serif&#39;, Arial, Geneva, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Segoe UI&#39;, &#39;Microsoft Sans Serif&#39;, Arial, Geneva, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/893630862882711392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/12/microsoft-managed-extensibility.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/893630862882711392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/893630862882711392'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/12/microsoft-managed-extensibility.html' title='Microsoft Managed Extensibility Framework (MEF)'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-9168276173198317767</id><published>2011-12-24T14:51:00.000-08:00</published><updated>2011-12-24T14:51:28.930-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="git"/><title type='text'>Useful Git Terms</title><content type='html'>&lt;br /&gt;
&lt;div style=&quot;background-attachment: initial; background-clip: initial; background-color: white; background-image: none; background-origin: initial; color: #333333; font-family: Arial, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 17px; margin-bottom: 10px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;master&lt;/b&gt;: this is the main code branch, equivalent to&amp;nbsp;&lt;em&gt;trunk&lt;/em&gt;&amp;nbsp;in Subversion. Branches are generally created off of&amp;nbsp;&lt;b&gt;master&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;origin&lt;/b&gt;: the default remote repository that all your branches are&amp;nbsp;&lt;tt&gt;pull&lt;/tt&gt;&#39;ed from and&amp;nbsp;&lt;tt&gt;push&lt;/tt&gt;&#39;ed to. This is defined when you execute the initial&amp;nbsp;&lt;tt&gt;git clone&lt;/tt&gt;&amp;nbsp;command.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;fast-forward&lt;/b&gt;: the process of bringing a branch up-to-date with another branch, by fast-forwarding the commits in one branch onto the other.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;rebase&lt;/b&gt;: the process by which you cut off the changes made in your local branch, and graft them onto the end of another branch.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;unpublished&lt;/b&gt;&amp;nbsp;vs.&amp;nbsp;&lt;b&gt;published&lt;/b&gt;&amp;nbsp;branches: an&amp;nbsp;&lt;b&gt;unpublished&lt;/b&gt;&amp;nbsp;branch is a branch that only exists on your local workstation, in your local repository. Nobody but you know that branch exists. A&amp;nbsp;&lt;b&gt;published&lt;/b&gt;&amp;nbsp;branch is one that has been&lt;tt&gt;push&lt;/tt&gt;&#39;ed up to github, and is available for other developers to checkout and work on.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/9168276173198317767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/12/useful-git-terms.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/9168276173198317767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/9168276173198317767'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/12/useful-git-terms.html' title='Useful Git Terms'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-8221262497483554082</id><published>2011-12-22T23:37:00.000-08:00</published><updated>2011-12-24T14:49:04.837-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".Net"/><category scheme="http://www.blogger.com/atom/ns#" term="IoC"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><title type='text'>NuGet Install Castle.Windsor and factilies for NLog or log4net</title><content type='html'>Install the following Castle packages from NuGet command line.&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;i&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;PM&amp;gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;install-package Castle.Windsor&amp;nbsp;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;span style=&quot;font-style: normal;&quot;&gt;PM&amp;gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;install-package Castle.Core-NLog&lt;/i&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;PM&amp;gt; &lt;i&gt;install-package Castle.Core-log4net&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;PM&amp;gt; &lt;i&gt;install-package Castle.LoggingFacility&lt;/i&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&amp;nbsp;Notes: that Castle.Core-NLog has the Castle.Facilities for NLog.</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/8221262497483554082/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/12/nuget-install-castlewindsor-and.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/8221262497483554082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/8221262497483554082'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/12/nuget-install-castlewindsor-and.html' title='NuGet Install Castle.Windsor and factilies for NLog or log4net'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-1812982029024470930</id><published>2011-12-08T08:51:00.001-08:00</published><updated>2011-12-08T09:05:47.358-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ASP.Net"/><category scheme="http://www.blogger.com/atom/ns#" term="IIS"/><title type='text'>Validation of viewstate MAC failed,in hosting on a web farm</title><content type='html'>If a web application is hosted by a web farm or cluster, you would experience this exception if you didn&#39;t set up the web.config correctly. The solution for resolving this exception is to ensure the &lt;machinekey&gt; configuration specifies the same validation key and validation algorithm in every single web.config in your deployment. AutoGeneration by default cannot be used in a cluster environment.

Below is the sample machinekey config entry for your web.config

&lt;/machinekey&gt;&lt;br /&gt;
&lt;pre class=&quot;brush:xml&quot;&gt;
&amp;nbsp;
&amp;lt;configuration&amp;gt;
    &amp;lt;appSettings/&amp;gt;
    &amp;lt;connectionStrings/&amp;gt;
    &amp;lt;system.web&amp;gt;
        &amp;lt;machineKey  validationKey=&#39;44DB9132AD56D581F6DBFDD8F09EDFD167B75283771DB3241804B0F03602EBACF6349C724FAC64785F60653EC9F9CA20A4D377387A1677704525FE9147CE6AC3&#39; decryptionKey=&#39;C77E66D32F8F554C507DDEC6DA2A1A470B5EE195DA584EDD&#39; validation=&#39;SHA1&#39;/&amp;gt;
    &amp;lt;/system.web&amp;gt;
&amp;lt;/configuration&amp;gt;
&amp;nbsp;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/1812982029024470930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/12/validation-of-viewstate-mac-failedin.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/1812982029024470930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/1812982029024470930'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/12/validation-of-viewstate-mac-failedin.html' title='Validation of viewstate MAC failed,in hosting on a web farm'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-7843168491471102232</id><published>2011-11-13T14:47:00.001-08:00</published><updated>2011-11-13T15:05:10.840-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".Net"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="IIS"/><title type='text'>Manage IIS Application Pool from .Net C# code</title><content type='html'>&amp;nbsp;
.Net framework provides a very easy-to-use API wrapper class, ServerManager, to help manage IIS system from any .Net application using either C# or VB.net. Below C# code snippet demonstrates how to restart/recycle a given AppPool in IIS.

&lt;br /&gt;
&lt;pre class=&quot;brush:c#&quot;&gt;
    &amp;nbsp;
    public void RestartAppPool(string appPool)
        {
            try
            {
                logger.Info(&quot;Restarting app pool: &quot; + appPool);

                // Recycle app pool
                using (var manager = new ServerManager())
                {
                    var pool = manager.ApplicationPools[appPool];

                    if (pool != null) 
                    {
                        Process process = null;

                        if (pool.WorkerProcesses.Count &amp;gt; 0)
                        {
                            process = Process.GetProcessById(pool.WorkerProcesses[0].ProcessId);
                        }

                        if (pool.State == ObjectState.Stopped)
                            pool.Start();
                        else
                            pool.Recycle();

                        // clean up any worker thread created by app pool
                        if (process != null)
                        {
                            while (!process.HasExited)
                            {
                                Thread.Sleep(10);
                            }

                            process.Dispose();
                        }
                    }
                }

                //logger.Info(&quot;Successfully restarted app pool: &quot; + appPool);
            }
            catch (Exception ex)
            {
               // logger.Error(&quot;Restart app pool error: &quot; + ex);
            }
        }
&amp;nbsp;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/7843168491471102232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/11/manage-iis-application-pool-from-net-c.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/7843168491471102232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/7843168491471102232'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/11/manage-iis-application-pool-from-net-c.html' title='Manage IIS Application Pool from .Net C# code'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-8743485628001728273</id><published>2011-11-08T10:50:00.000-08:00</published><updated>2011-11-08T10:51:14.395-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>JQuery extension: numeric only input text</title><content type='html'>Here is the simply but re-usable approach, IMO: create an jquery numeric extension and then use the numeric extension in your input text box:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:javascript&quot;&gt;
&amp;nbsp;
// numeric extension
jQuery.fn.onlyNumeric = function () {
    return this.each(function () {
        $(this).keydown(function (e) {
            var key = e.which || e.keyCode;
            if (!e.shiftKey &amp;amp;&amp;amp; !e.altKey &amp;amp;&amp;amp; !e.ctrlKey &amp;amp;&amp;amp;
                key &amp;gt;= 48 &amp;amp;&amp;amp; key &amp;lt;= 57 || key &amp;gt;= 96 &amp;amp;&amp;amp; key &amp;lt;= 105 ||
                key == 8 || key == 13 || key == 46 ||
                key == 35 || key == 36 || key == 37 || key == 39)
                return true;
            return false;
        });
    });
};
// use it in your input text box
$(&#39;#input_box&#39;).onlyNumeric();
&amp;nbsp;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/8743485628001728273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/11/jquery-extension-numeric-only-input.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/8743485628001728273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/8743485628001728273'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/11/jquery-extension-numeric-only-input.html' title='JQuery extension: numeric only input text'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-282269661232506273</id><published>2011-11-02T13:32:00.000-07:00</published><updated>2011-11-02T13:39:47.191-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTML"/><title type='text'>HTML meta tags for mobile or regular sites</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange; font-family: monospace; white-space: pre-wrap;&quot;&gt;For mobile site specifically:&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&amp;lt;meta &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&#39;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;HandheldFriendly&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&#39; &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&#39;&lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-value&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&#39; /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&amp;lt;meta &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&#39;&lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-value&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&#39; &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&#39;&lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-value&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;viewport&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&#39; /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&amp;lt;meta &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&quot;&lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-value&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;viewport&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot; &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&quot;&lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-value&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;width=device-width&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&amp;lt;meta &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&#39;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;MobileOptimized&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&#39; &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&#39;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;width&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&#39; /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&amp;lt;meta &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&#39;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;HandheldFriendly&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&#39; &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&#39;&lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-value&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&#39; /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&amp;lt;meta &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&quot;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;google-site-verification&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot; &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&quot;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;wYqVbCtxN_YM1tLTZmGkUDbEmNrSjpB7hBNp5_Avsvs&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: orange; font-family: monospace; white-space: pre-wrap;&quot;&gt;General meta tags for all sites:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&amp;lt;meta &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&quot;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;keywords&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot; &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&quot;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;key words of you site&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&amp;lt;meta &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&quot;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;description&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot; &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&quot;&lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-value&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;description of your site&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&amp;lt;meta &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;http-equiv&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #1a1aa6; font-family: monospace; white-space: pre-wrap;&quot;&gt;Content-Typ&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot; &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&quot;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #1a1aa6; font-family: monospace; white-space: pre-wrap;&quot;&gt;text/html; charset=utf-8&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&amp;lt;meta &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;http-equiv&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #1a1aa6; font-family: monospace; white-space: pre-wrap;&quot;&gt;X-UA-Compatible&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot; &lt;/span&gt;&lt;span class=&quot;webkit-html-attribute-name&quot; style=&quot;font-family: monospace; white-space: pre-wrap;&quot;&gt;content&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;=&quot;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #1a1aa6; font-family: monospace; white-space: pre-wrap;&quot;&gt;IE=8&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&quot; /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #881280; font-family: monospace; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace;&quot;&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/282269661232506273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/11/commonly-used-html-meta-tags-for.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/282269661232506273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/282269661232506273'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/11/commonly-used-html-meta-tags-for.html' title='HTML meta tags for mobile or regular sites'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-2075813251009242579</id><published>2011-10-21T11:16:00.000-07:00</published><updated>2011-10-21T16:44:35.435-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="Web Testing"/><title type='text'>Load testing ajax application using Visual Studio 2010</title><content type='html'>In order to do this, you need to extend Visual Studio Web Performance Test &amp;nbsp;with your own Extraction and/or Validation Rule. Visual Studio 2010, which my current working copy, has all interfaces provided for the needed customizations.&lt;br /&gt;
&lt;br /&gt;
Here is an official tutorial for &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms243179.aspx&quot;&gt;Creating a Custom Extraction Rule&lt;/a&gt;, which can lead you to the place where you can find all useful information and a real code example.&lt;br /&gt;
&lt;br /&gt;
For java users, you may want to explore &lt;a href=&quot;http://htmlunit.sourceforge.net/&quot;&gt;HtmlUnit&lt;/a&gt; platform.</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/2075813251009242579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/10/load-testing-ajax-page-in-visual-studio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/2075813251009242579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/2075813251009242579'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/10/load-testing-ajax-page-in-visual-studio.html' title='Load testing ajax application using Visual Studio 2010'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-2902872836505447207</id><published>2011-10-19T09:25:00.000-07:00</published><updated>2011-10-19T09:25:34.876-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google Maps API"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>Avoid InfoWindow from shifting Google Maps</title><content type='html'>It&#39;s kind of inconsistent in some cases that Google InfoWindow would shift the map while panning. That&#39;s a huge user experience if this map behaviour is not your intention. There a couple ways to resolve it, either close the InfoWindow when panning the map way far causing it invisible, or set the proper value to an attribute of InfoWindow, which I believe it is the easiest and most solid solution. Here is the code snippet for the 2nd solution.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:javascript&quot;&gt;&amp;nbsp;
var infoWin = new google.maps.InfoWindow({disableAutoPan: true});
&amp;nbsp;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/2902872836505447207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/10/avoid-infowindow-from-shifting-google.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/2902872836505447207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/2902872836505447207'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/10/avoid-infowindow-from-shifting-google.html' title='Avoid InfoWindow from shifting Google Maps'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-5289721433950158542</id><published>2011-10-18T10:36:00.000-07:00</published><updated>2011-10-18T10:36:31.651-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Get Ready for Android App Development</title><content type='html'>Being excited about mobile application and open source platform? Apple or Android? Personally I like both platforms but more lean to Android as I don&#39;t have any &quot;expensive&quot; Apple computer. Would be nice if I could get a sponsor. So Android App is my target for contributing to the community.&lt;br /&gt;
&lt;br /&gt;
To get ready for your Android App development, you need the following stuff.&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;JDK, any version since1.6.x or later and can be downloaded from &lt;a href=&quot;http://www.oracle.com/technetwork/java/javase/downloads/index.html&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Android SDK, and it can be downloaded from &lt;a href=&quot;http://developer.android.com/sdk/index.html&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Eclipse IDE (recommended but not necessary),&amp;nbsp;preferable&amp;nbsp;to download &lt;a href=&quot;http://www.eclipse.org/downloads/&quot;&gt;Java EE Developer version&lt;/a&gt;.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Download and install &lt;a href=&quot;http://developer.android.com/sdk/eclipse-adt.html#installing&quot;&gt;Android Development Tools (ADT)&lt;/a&gt; plug-in for Eclipse.&lt;/li&gt;
&lt;li&gt;Add Android platforms to development environment.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;From Eclipse, go to Window -&amp;gt; Android SDK and AVD Manager.&lt;/li&gt;
&lt;li&gt;On Windows, double click the SDK Manager.exe file at the root fo the Android SDK directory.&lt;/li&gt;
&lt;li&gt;On Mac or Linux, open a terminal and navigate to the tools/ directory in the Android SDK, then execute command: &lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #b45f06; font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;android&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ol&gt;
Now, you should be ready to get your hands wet on your first Android App development, Hello Word, for example. :)&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
For more information, you can always go to Android official &lt;a href=&quot;http://developer.android.com/index.html&quot;&gt;home site for developers&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Georgia, &#39;Times New Roman&#39;, serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/5289721433950158542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/10/get-ready-for-android-app-development.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/5289721433950158542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/5289721433950158542'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/10/get-ready-for-android-app-development.html' title='Get Ready for Android App Development'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-1650235132706430578</id><published>2011-10-16T23:42:00.000-07:00</published><updated>2011-10-16T23:42:16.045-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Google Maps API"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Convert Latitude and Longitude to android.maps.GeoPoint</title><content type='html'>Use the following code snippets&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush:java&quot;&gt;&amp;nbsp;
GeoPoint point = new GeoPoint((int)(latitude * 1e6), (int)(longitude * 1e6));
&amp;nbsp;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/1650235132706430578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/10/convert-latitude-and-longitude-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/1650235132706430578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/1650235132706430578'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/10/convert-latitude-and-longitude-to.html' title='Convert Latitude and Longitude to android.maps.GeoPoint'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-4546576103393328286</id><published>2011-10-16T18:01:00.000-07:00</published><updated>2011-10-16T21:25:55.456-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="Google Maps API"/><title type='text'>Obtain Android Google Maps SDK Debug Certificate</title><content type='html'>&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;For developing your Google Maps application for android, I would like to obtain a debug Google Maps SDK debug certificate before production release. Android.com provides a very thorough instruction for helping newbies and beginners. Here I just list the steps that I went through in my own development environment: Windows 7 32bit + JDK1.7.0. Hope it would help simplify your learning curve.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;1. Locate your debug.keystore.&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; By default, build tools create the debug keystore in the active AVD directory which varies by platform:&lt;/span&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; Windows Vista/7: c:\users\&amp;lt;user&amp;gt;\.android\debug.keystore&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; For eclipse/ADT user, go to &lt;b&gt;Windows &lt;/b&gt;-&amp;gt; &lt;b&gt;Preferences &lt;/b&gt;-&amp;gt; &lt;b&gt;Android &lt;/b&gt;-&amp;gt; &lt;b&gt;Build &lt;/b&gt;for the full path of debug.keystore.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;2. After the debug.keystore was located, use keytool utility to obtain the MD5 fingerprint of the debug certificate.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; Replace the below command with your JDK installation path and your actual user id&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; &quot;c:\program files\java\jdk1.7.0\bin\keytool&quot; -v -list -alias androiddebugkey -keystore c:\users\&amp;lt;user&amp;gt;\.android\debug.keystore -storepass android -keypass android&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: red;&quot;&gt;Note&lt;/span&gt;&lt;/b&gt;: only the MD5 fingerprint is recognized by Google. Other version, such as SHA1/256, is new since JDK 1.7, and cannot be used for registering Google Maps API.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;3. Now, follow steps below to register your debug certificate with Google Maps Service&lt;/span&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Go to &lt;a href=&quot;http://code.google.%20com/android/maps-api-signup.html&quot;&gt;http://code.google.com/android/maps-api-signup.html&lt;/a&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;If you don&#39;t have a Google account, use the link on the page to set one up.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Read the Android Maps API Terms of Service carefully. If you agree to the terms, indicate so using the checkbox on the screen.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Paste the MD5 certificate fingerprint of the certificate that you are registering into the appropriate form field.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;Click &quot;Generate API Key&quot;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: &#39;Helvetica Neue&#39;, Arial, Helvetica, sans-serif;&quot;&gt;The server will handle your request, associating the fingerprint with your developer identity and generating a unique Maps API Key, and then will return a results page that gives you your Key string.&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: white; font-family: Helvetica, Arial, sans-serif; font-size: x-small;&quot;&gt;
&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/4546576103393328286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/10/obtain-android-google-maps-sdk-debug.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/4546576103393328286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/4546576103393328286'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/10/obtain-android-google-maps-sdk-debug.html' title='Obtain Android Google Maps SDK Debug Certificate'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-6588144410397397523</id><published>2011-10-05T10:45:00.000-07:00</published><updated>2011-10-07T15:15:15.758-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="algorithms"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><title type='text'>Find GPS location (latitude and longitude) is within given radius</title><content type='html'>In a project, I need to determine whether a given GPS location (latitude and longitude) is within a pre-set radius area, for example, within a 2&amp;nbsp;kilometres&amp;nbsp;circle of a target place - Vancouver Convention Centre. It&#39;s not a rocket science to do it but it would be helpful for those who need to implement the similar logic.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Here is code&amp;nbsp;snippet in javascript, and could be easily ported to other languages, like C#.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;pre class=&quot;brush:javascript&quot;&gt;
&amp;nbsp;
// center: the center goelocation of the radius
// radius: radius in meter
// loc: the geolocation that you want to check
function isInArea(center, radius, loc) {
        var R = 6371;
        var lat1 = loc.lat();
        var lon1 = loc.lng();
        var lat2 = center.lat();
        var lon2 = center.lng();
        var dLat = (lat2 - lat1) * Math.PI / 180;
        var dLon = (lon2 - lon1) * Math.PI / 180;
        var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
		Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
		Math.sin(dLon / 2) * Math.sin(dLon / 2);
        var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
        var d = R * c;
        return (d * 1000 &amp;lt;= radius)
    };
&amp;nbsp;
&lt;/pre&gt;

&lt;div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/6588144410397397523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/10/check-if-gps-location-latitude-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/6588144410397397523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/6588144410397397523'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/10/check-if-gps-location-latitude-and.html' title='Find GPS location (latitude and longitude) is within given radius'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-6227431234461857817</id><published>2011-09-27T22:37:00.000-07:00</published><updated>2011-09-27T22:37:02.086-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SVN"/><title type='text'>Create/Change SVN user and password using htpasswd</title><content type='html'>
To create a new SVN user 
c:\program files\Collabnet\bin\htpasswd -cm ../config/authz-file username password

To change existing SVN user&#39;s password
c:\program files\Collabnet\bin\htpasswd -m ../config/authz-file username
</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/6227431234461857817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/09/createchange-svn-user-and-password.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/6227431234461857817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/6227431234461857817'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/09/createchange-svn-user-and-password.html' title='Create/Change SVN user and password using htpasswd'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-5365896610237220231</id><published>2011-09-24T22:11:00.000-07:00</published><updated>2011-09-27T22:41:37.383-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><title type='text'>Android Historical Version Names</title><content type='html'>Android version history and its nick name.&lt;br /&gt;
1.5 Cupcake&lt;br /&gt;
1.6 Donut&lt;br /&gt;
2.0 Eclair&lt;br /&gt;
2.2 Froyo&lt;br /&gt;
2.3 Gingerbread&lt;br /&gt;
3.0 Honeycomb</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/5365896610237220231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/09/android-historical-version-names.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/5365896610237220231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/5365896610237220231'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/09/android-historical-version-names.html' title='Android Historical Version Names'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2323225770790057567.post-6929773031964852182</id><published>2011-09-23T10:08:00.000-07:00</published><updated>2011-09-23T10:29:55.743-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ajax"/><category scheme="http://www.blogger.com/atom/ns#" term="ASP.Net"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="HTTP"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="jquery"/><title type='text'>JQuery Ajax Call to Web service via POST</title><content type='html'>Have been used a lots of jquery in the recent real-time information web development project, I found this quite easy to initiate a POST HTTP call to web service through JQuery. Here are 2 sample code snippets.

&lt;br /&gt;
&lt;h4&gt;
Case 1: Pass no parameter &lt;/h4&gt;
&lt;pre class=&quot;brush:javascript&quot;&gt;&amp;nbsp;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
    // in this case, we post nothing back to api but
    // just call it (no parameter required) and expected json object as result
    function callWebApiViaPost() {
        $.ajax({
            type: &quot;POST&quot;,
            url: &quot;yourwebapi&quot;,
            data: &quot;{}&quot;,
            contentType: &quot;application/json;&quot;,
            dataType: &quot;json&quot;,
            success: function (t) {
                $(&quot;#your_result_display_div&quot;).text(t.d);
            }
        });
    }

&amp;lt;/script&amp;gt;
&amp;nbsp;
&lt;/pre&gt;
&lt;h4&gt;
Case 2: Pass parameter(s) &lt;/h4&gt;
For example, you have a API like below:
&lt;br /&gt;
&lt;pre class=&quot;brush:c#&quot;&gt;&amp;nbsp;
[WebMethod]
public static string ToUpperCase(string yourparam)
{
    return yourparam.ToUpper();
}
&amp;nbsp;
&lt;/pre&gt;
The corresponding jquery ajax post call will be like this:
&lt;br /&gt;
&lt;pre class=&quot;brush:javascript&quot;&gt;&amp;nbsp;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;
    // in this case, we post nothing back to api but
    // just call it (no parameter required) and expected json object as result
    function callWebApiViaPost() {
        $.ajax({
            type: &quot;POST&quot;,
            url: &quot;yourweb/ToUpperCase&quot;,
            data: &quot;{yourparam: &#39;hello-world&#39;}&quot;,
            contentType: &quot;application/json;&quot;,
            dataType: &quot;json&quot;,
            success: function (t) {
                $(&quot;#your_result_display_div&quot;).text(t.d);
            }
        });
    }

&amp;lt;/script&amp;gt;
&amp;nbsp;
&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://techhasnoboundary.blogspot.com/feeds/6929773031964852182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/09/jquery-ajax-call-to-web-service-via.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/6929773031964852182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2323225770790057567/posts/default/6929773031964852182'/><link rel='alternate' type='text/html' href='http://techhasnoboundary.blogspot.com/2011/09/jquery-ajax-call-to-web-service-via.html' title='JQuery Ajax Call to Web service via POST'/><author><name>transit</name><uri>http://www.blogger.com/profile/00484017271477280761</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>