<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Shahed's blog</title>
        <link>http://geekswithblogs.net/shahedul/Default.aspx</link>
        <description>Sharing my thoughts and work</description>
        <language>en-US</language>
        <copyright>Shahedul Huq Khandkar</copyright>
        <managingEditor>shahedk@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Shahed's blog</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/shahedul/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>Converting Silverlight 1.1 Alpha projects to Silverlight 2 Beta 1</title>
            <category>Silverlight</category>
            <link>http://geekswithblogs.net/shahedul/archive/2008/03/05/120263.aspx</link>
            <description>&lt;p&gt;Just installed the runtime and Silverlight Tools for Visual Studio 2008. You can find the necessary tools &lt;a target="_blank" href="http://silverlight.net/GetStarted/#betajump"&gt;here&lt;/a&gt;. The beta 1 now has a good set of controls including Data Grid, cool!&lt;/p&gt;
&lt;p&gt;To run the Silverlight 1.1 Alpha projects in Beta 1, you need to manually modify few things. &lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
First, if you try to open the old projects in VS 2008 after installing the latest bits, you will get the following error message: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;"Unable to read the project file '... .csproj'. ... The imported project "C:\Program Files\MSBuild\Microsoft\VisualStudio\v9.0\Silverlight\Microsoft.Silverlight.Csharp.targets" was not found."&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Just open the project file with notepad and replace the &amp;lt;import&amp;gt; node value. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Old: &amp;lt;Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\Silverlight\Microsoft.Silverlight.Csharp.targets" /&amp;gt; &lt;/p&gt;
&lt;p&gt;New: &amp;lt;Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight\v2.0\Microsoft.Silverlight.CSharp.targets" /&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Save the project file and now you can load it in Visual Studio. Now that you have the projects opened, if you expand the Reference node you will see this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/shahedul/WindowsLiveWriter/Conver.1AlphaprojectstoSilverlight2Beta1_58D4/image_2.png"&gt;&lt;img width="185" height="132" border="0" style="border-width: 0px;" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/shahedul/WindowsLiveWriter/Conver.1AlphaprojectstoSilverlight2Beta1_58D4/image_thumb.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;You need to delete agclr, system.silverlight and system.Xml.core from the reference list. Then add the new assemblies: System.Windows, System.Windows.Browser, System.Windows.Controls and System.Windows.Controls.Extended.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/shahedul/WindowsLiveWriter/Conver.1AlphaprojectstoSilverlight2Beta1_58D4/image_4.png"&gt;&lt;img width="244" height="178" border="0" style="border-width: 0px;" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/shahedul/WindowsLiveWriter/Conver.1AlphaprojectstoSilverlight2Beta1_58D4/image_thumb_1.png" /&gt;&lt;/a&gt;  &lt;/p&gt;
&lt;p&gt;Ok, lets do a rebuild now. Don't worry if you get a long list or errors. Here is a quick list the things you may just do find and replace:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;There is a PointCollection class now. So if you have List&amp;lt;Point&amp;gt; then you can change it to PointCollection &lt;/li&gt;
    &lt;li&gt;For Keyboard events (i.e. KeyUp, KeyDown...) replace KeyboardEventArgs with KeyEventArgs &lt;/li&gt;
    &lt;li&gt;System.Windows.Browser.Serialization is moved, so you need to block //using System.Windows.Browser.Serialization &lt;/li&gt;
    &lt;li&gt;Previously, in xaml we used to write x:Class="SilverlightApplication1.Page;assembly=ClientBin/... .dll". Now we don't need to mention the assembly part. Just write x:Class="SilverlightApplication1.Page" &lt;/li&gt;
    &lt;li&gt;For mouse events (i.e. MouseEnter, MouseLeave...) replace the EventHandler with MouseEventHandler and for MouseLeftButtonUp/MouseLeftButtonDown change it to MouseButtonEventHandler&lt;br /&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now, look into the web service. Lets assume you have a service named MyService and you have added the necessary web reference. The Silverlight 1.1 Alpha would generate a MyService class and to call any method asynchronously you would probably write something like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;void Test() &lt;br /&gt;
{ &lt;br /&gt;
    MyService service = new MyService(); &lt;br /&gt;
    AsyncCallback callback = new AsyncCallback(FooCallback); &lt;br /&gt;
    Core.BeginFoo(parameter, service); &lt;br /&gt;
} &lt;/p&gt;
&lt;p&gt;FooCallback(IAsyncResult result) &lt;br /&gt;
{ &lt;br /&gt;
    MyService service = result.AsyncState as MyService; &lt;br /&gt;
    service.EndSyncCommand(result); &lt;br /&gt;
}&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In silverlight 2 beta 1, you need to do this slightly differently. It will generate a MySerciceSoapClient class. So, you may write something like this:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;void Test() &lt;br /&gt;
{ &lt;br /&gt;
    MyServiceSoapClient service = new MyServiceSoapClient(); &lt;/p&gt;
&lt;p&gt;    service.FooAsync(); &lt;/p&gt;
&lt;p&gt;    service.FooCompleted += new EventHandler&amp;lt;FooCompletedEventArgs&amp;gt;(service_FooCompleted); &lt;br /&gt;
} &lt;/p&gt;
&lt;p&gt;void service_FooCompleted(object sender, FooCompletedEventArgs e) &lt;br /&gt;
{ &lt;br /&gt;
    ... &lt;br /&gt;
    ... &lt;br /&gt;
}&lt;/p&gt;
&lt;/blockquote&gt; &lt;br /&gt;
&lt;p&gt;In addition to the above mentioned points, you should also look into the new App.xaml.cs file where you can handle any application wide exception as well as application startup and exit codes.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120263"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120263" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/120263.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2008/03/05/120263.aspx</guid>
            <pubDate>Wed, 05 Mar 2008 18:25:04 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/120263.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2008/03/05/120263.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/120263.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/120263.aspx</trackback:ping>
        </item>
        <item>
            <title>Spy on your class and log what it is doing</title>
            <link>http://geekswithblogs.net/shahedul/archive/2007/02/07/105664.aspx</link>
            <description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;In this article, I will explain how you can track class activities like function calls, parameters and return values by simply inheriting one class which I named "Spy". The "Spy"&amp;nbsp;class encapsulates the tracking and logging relates the complexities .&amp;nbsp;This class can be used for debugging&amp;nbsp;function call sequence, state change of objects &amp;amp; parameters on the way of nested function calls and their return steps.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;How it works?&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The Spy class&amp;nbsp;adds small spy&amp;nbsp;properties&amp;nbsp;at the time of object creation with&amp;nbsp;each&amp;nbsp;method to intercept their activity.&amp;nbsp;As your class is inherited from Spy class, all methods&amp;nbsp;of your&amp;nbsp;class will also be logged in the same way. Now, the question is, "How Spy class do this!". The Spy class is inherited from &lt;code&gt;ContextBoundObject&lt;/code&gt; and has a custom attribute called &lt;code&gt;AttributeSpy&lt;/code&gt;. Although there are some performance issues for inheriting the &lt;code&gt;ContextBoundObject&lt;/code&gt; but&amp;nbsp;it&amp;nbsp;gives&amp;nbsp;the cool feature -&amp;nbsp;a context bound with the object.&amp;nbsp;A&amp;nbsp;context carries the properties&amp;nbsp;and rules of&amp;nbsp;the object. The cool thing is that these properties travel with the object and can be accessed by sinks. Now, The attribute&amp;nbsp;&lt;code&gt;AttributeSpy&lt;/code&gt; does the important task. It checks if&amp;nbsp;spy&amp;nbsp;property is already added for any particular method otherwise adds that. Before going to detail, lets see&amp;nbsp;the object&amp;nbsp;initialization process first.&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;b&gt;What happens when user creates an object?&lt;/b&gt;&lt;/p&gt; &lt;p&gt;When the user creates an instance of a new client-activated object by calling &lt;em&gt;new&lt;/em&gt; or &lt;em&gt;Activator.CreateInstance&lt;/em&gt; and before the thread returns to the user code, a &lt;code&gt;IConstructionCallMessage&lt;/code&gt; is sent to the remote application. When the construction message arrives at the remote application, it is processed by a remoting activator (either the default one, or one that is specified in the Activator property) and a new object is created. The remoting application then returns a &lt;code&gt;IConstructionReturnMessage&lt;/code&gt; to the local application. The &lt;code&gt;IConstructionReturnMessage&lt;/code&gt; contains an instance of ObjRef, which packages information about the remote object. The remoting infrastructure converts the ObjRef instance into a proxy to the remote object, which is returned to the user code.&lt;/p&gt; &lt;p&gt;Now, briefly, here is the workflow for any class which inherits from &lt;code&gt;&lt;strong&gt;Spy&lt;/strong&gt;&lt;/code&gt; class:&lt;/p&gt; &lt;p&gt;&lt;img src="http://www.shahed.net/articles/images/classspy/SpyClassWorkflow.jpg"&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The Spy class is just few lines. It has the custom attribute &lt;code&gt;AttributeSpy&lt;/code&gt; with the name in parameter and it is inherited from ContextBoundObject.&lt;/p&gt; &lt;p&gt;[&lt;span style="color: rgb(43,145,175)"&gt;AttributeSpy&lt;/span&gt;(&lt;span style="color: rgb(163,21,21)"&gt;"Spy"&lt;/span&gt;)]&lt;br&gt;&lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Spy&lt;/span&gt; : &lt;span style="color: rgb(43,145,175)"&gt;ContextBoundObject&lt;br&gt;&lt;/span&gt;{&lt;br&gt;}&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;The &lt;code&gt;AttributeSpy&lt;/code&gt; class is inherited from &lt;code&gt;ContextAttribute&lt;/code&gt; and overrides the IsContextOK() method which checks whether our &lt;code&gt;PropertySpy&lt;/code&gt; (I will explain&amp;nbsp;it shortly)&amp;nbsp;is in ContextProperties list. By returning false, another override method GetPropertiesForNewContext() is invoked, where we are adding the &lt;code&gt;PropertySpy&lt;/code&gt; in ContextProperties list.&lt;/p&gt; &lt;p&gt;[&lt;span style="color: rgb(43,145,175)"&gt;AttributeUsage&lt;/span&gt;(&lt;span style="color: rgb(43,145,175)"&gt;AttributeTargets&lt;/span&gt;.Class)]&lt;br&gt;&lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;AttributeSpy&lt;/span&gt; : &lt;span style="color: rgb(43,145,175)"&gt;ContextAttribute&lt;/span&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; _name = &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;.Empty;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; AttributeSpy(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; name)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;span style="color: rgb(0,0,255)"&gt;base&lt;/span&gt;(name)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _name = name;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; GetPropertiesForNewContext(System.Runtime.Remoting.Activation.&lt;span style="color: rgb(43,145,175)"&gt;IConstructionCallMessage&lt;/span&gt; ctorMsg)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctorMsg.ContextProperties.Add(&lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;PropertySpy&lt;/span&gt;(_name));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt; IsContextOK(&lt;span style="color: rgb(43,145,175)"&gt;Context&lt;/span&gt; ctx, System.Runtime.Remoting.Activation.&lt;span style="color: rgb(43,145,175)"&gt;IConstructionCallMessage&lt;/span&gt; ctorMsg)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(43,145,175)"&gt;PropertySpy&lt;/span&gt; spy = ctx.GetProperty(_name) &lt;span style="color: rgb(0,0,255)"&gt;as&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;PropertySpy&lt;/span&gt;;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (spy == &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;}&lt;/p&gt; &lt;p&gt;The &lt;code&gt;PropertySpy&lt;/code&gt; class&amp;nbsp;implements &lt;code&gt;IContextProperty&lt;/code&gt; and&amp;nbsp;&lt;code&gt;IContributeObjectSink&lt;/code&gt; interface.&amp;nbsp;The &lt;code&gt;IContributeObjectSink&lt;/code&gt; interface is implemented to get&amp;nbsp;the GetObjectSink() method which is called during the method invocation and the parameter nextSink ( type of &lt;code&gt;IMessageSink&lt;/code&gt;) contains the detail information of method. Here we created our own &lt;code&gt;MessageSinkSpy&lt;/code&gt; class inheriting from&amp;nbsp;&lt;code&gt;IMessageSink&lt;/code&gt; and added to the spying code in Synchronous and Asynchronous methods for SyncProcessMessage and AsyncProcessMessage and returned it GetObjectSink(). When any method gets invoked, these methods keep the logs in a text file.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;MessageSinkSpy&lt;/span&gt; : &lt;span style="color: rgb(43,145,175)"&gt;IMessageSink
&lt;/span&gt;{&lt;/pre&gt;&lt;pre class="code"&gt;    ...&lt;/pre&gt;&lt;pre class="code"&gt;    ...&lt;/pre&gt;&lt;pre class="code"&gt;    &lt;span style="color: rgb(43,145,175)"&gt;IMessageCtrl&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;IMessageSink&lt;/span&gt;.AsyncProcessMessage(&lt;span style="color: rgb(43,145,175)"&gt;IMessage&lt;/span&gt; msg, &lt;span style="color: rgb(43,145,175)"&gt;IMessageSink&lt;/span&gt; replySink)
    {
        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (msg &lt;span style="color: rgb(0,0,255)"&gt;is&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;IMethodCallMessage&lt;/span&gt;)
        {
            &lt;span style="color: rgb(43,145,175)"&gt;IMethodCallMessage&lt;/span&gt; callingMessage = msg &lt;span style="color: rgb(0,0,255)"&gt;as&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;IMethodCallMessage&lt;/span&gt;;
            &lt;span style="color: rgb(43,145,175)"&gt;LogHelper&lt;/span&gt;.LogMethodCall(callingMessage);

        }

        &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; _nextSync.AsyncProcessMessage(msg, replySink);
    }

    &lt;span style="color: rgb(43,145,175)"&gt;IMessage&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;IMessageSink&lt;/span&gt;.SyncProcessMessage(&lt;span style="color: rgb(43,145,175)"&gt;IMessage&lt;/span&gt; msg)
    {
        &lt;span style="color: rgb(43,145,175)"&gt;IMethodCallMessage&lt;/span&gt; callingMessage = msg &lt;span style="color: rgb(0,0,255)"&gt;as&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;IMethodCallMessage&lt;/span&gt;;
        &lt;span style="color: rgb(43,145,175)"&gt;LogHelper&lt;/span&gt;.LogMethodCall(callingMessage);

        &lt;span style="color: rgb(43,145,175)"&gt;IMethodReturnMessage&lt;/span&gt; returnMessage = _nextSync.SyncProcessMessage(msg) &lt;span style="color: rgb(0,0,255)"&gt;as&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;IMethodReturnMessage&lt;/span&gt;;
        &lt;span style="color: rgb(43,145,175)"&gt;LogHelper&lt;/span&gt;.LogMethodReturn(returnMessage);

        &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; returnMessage;
    }&lt;/pre&gt;&lt;pre class="code"&gt;    ...&lt;/pre&gt;&lt;pre class="code"&gt;    ...&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&lt;/span&gt;}
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Writing custom objects in log:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Writing&amp;nbsp;simple&amp;nbsp;primitive datatypes&amp;nbsp;(int, char, bool...) is&amp;nbsp;easy but writing custom objects in&amp;nbsp;log in a meaningful way needs some extra work.&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; GetObjectDetail(&lt;span style="color: rgb(43,145,175)"&gt;Object&lt;/span&gt; obj, &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; padding)
{
    &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (obj == &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;)
        &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(163,21,21)"&gt;"Object is NULL"&lt;/span&gt;;

    &lt;span style="color: rgb(43,145,175)"&gt;StringBuilder&lt;/span&gt; objDescription = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;StringBuilder&lt;/span&gt;();

    &lt;span style="color: rgb(0,128,0)"&gt;//Object type
&lt;/span&gt;    objDescription.Append(padding);
    objDescription.Append(&lt;span style="color: rgb(163,21,21)"&gt;"("&lt;/span&gt; + obj.GetType() + &lt;span style="color: rgb(163,21,21)"&gt;")"&lt;/span&gt;);

    &lt;span style="color: rgb(0,128,0)"&gt;//Object detail
&lt;/span&gt;    objDescription.Append(&lt;span style="color: rgb(163,21,21)"&gt;":"&lt;/span&gt;);
    &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (IsPrimptiveDataType(obj))
    {
        &lt;span style="color: rgb(0,128,0)"&gt;//int, string, bool
&lt;/span&gt;        objDescription.Append(&lt;span style="color: rgb(163,21,21)"&gt;" "&lt;/span&gt; + obj.ToString());
    }
    &lt;span style="color: rgb(0,0,255)"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (IsArray(obj))
    {
        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (obj &lt;span style="color: rgb(0,0,255)"&gt;is&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Array&lt;/span&gt;)
            &lt;span style="color: rgb(0,128,0)"&gt;//Array[]
&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;object&lt;/span&gt; o &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;Array&lt;/span&gt;)obj)
                GetObjectDetail(o, padding + DEFAULT_PADDING);
        &lt;span style="color: rgb(0,0,255)"&gt;else
&lt;/span&gt;            &lt;span style="color: rgb(0,128,0)"&gt;//IList
&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;object&lt;/span&gt; o &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;IList&lt;/span&gt;)obj)
                GetObjectDetail(o, padding + DEFAULT_PADDING);
    }
    &lt;span style="color: rgb(0,0,255)"&gt;else
&lt;/span&gt;    {
        &lt;span style="color: rgb(0,128,0)"&gt;// Collect object properties
&lt;/span&gt;        &lt;span style="color: rgb(43,145,175)"&gt;PropertyInfo&lt;/span&gt;[] infos = obj.GetType().GetProperties();

        &lt;span style="color: rgb(0,128,0)"&gt;// Log object details
&lt;/span&gt;        &lt;span style="color: rgb(0,0,255)"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;PropertyInfo&lt;/span&gt; info &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; infos)
        {
            &lt;span style="color: rgb(0,0,255)"&gt;object&lt;/span&gt; value = info.GetValue(obj, (&lt;span style="color: rgb(0,0,255)"&gt;object&lt;/span&gt;[])&lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;);
            objDescription.Append(DEFAULT_PADDING + info.Name + GetObjectDetail(value, padding + DEFAULT_PADDING));
        }

        &lt;span style="color: rgb(0,128,0)"&gt;// New line
&lt;/span&gt;        objDescription.Append(&lt;span style="color: rgb(43,145,175)"&gt;Environment&lt;/span&gt;.NewLine);
    }

    &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; objDescription.ToString();
}
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&amp;nbsp;To keep it simple, I used regular .net class - StreamWriter. But for any large size application you should use optimized logging application like &lt;em&gt;log4net&lt;/em&gt; or &lt;em&gt;EnterpriseLibrary - Logging Application Block&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a title="Source code &amp;amp; sample project" href="http://www.shahed.net/Articles/SampleCodes/ClasSspy/ClassSpy.zip"&gt;Source code &amp;amp; sample project&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=105664"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=105664" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/105664.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2007/02/07/105664.aspx</guid>
            <pubDate>Wed, 07 Feb 2007 22:52:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/105664.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2007/02/07/105664.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/105664.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/105664.aspx</trackback:ping>
        </item>
        <item>
            <title>Add flakes (modules) in your personal site from pageflakes</title>
            <link>http://geekswithblogs.net/shahedul/archive/2007/01/12/103403.aspx</link>
            <description>&lt;p&gt;Pageflakes recently released their new&amp;nbsp;compact framework. This&amp;nbsp;allows you to host their flakes outside pageflakes site. You can choose from 135+ flakes and 1000s of RSS feeds or podcases to decorate your site. All you need do is copy&amp;nbsp;a small&amp;nbsp;HTML block in you site. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;First select the flake you want to export and go to settings-&amp;gt;Export. Click the "Get HTML" button.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.shahed.net/articles/images/pfcompactframework/step1.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Then copy the HTML:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.shahed.net/articles/images/pfcompactframework/step2.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And see for your self. Here&amp;nbsp;I have added the Map Flake in my post.&amp;nbsp;&lt;/p&gt;


&lt;iframe id="pffid29667958" hidefocus style="border-top-width: 0px; border-left-width: 0px; border-left-color: #cccccc; border-bottom-width: 0px; border-bottom-color: #cccccc; margin: 0px; width: 320px; border-top-color: #cccccc; height: 451px; border-right-width: 0px; border-right-color: #cccccc" src="http://www.pageflakes.com/SingleFlake.aspx?FlakeId=29667958" frameborder="0" scrolling="no" onload="if (typeof registerFlake == 'function') {registerFlake(this);}" allowtransparency&gt;&lt;/iframe&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=103403"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=103403" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/103403.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2007/01/12/103403.aspx</guid>
            <pubDate>Fri, 12 Jan 2007 08:21:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/103403.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2007/01/12/103403.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/103403.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/103403.aspx</trackback:ping>
        </item>
        <item>
            <title>Stop bot, crawler or automated programs from hiting a page</title>
            <link>http://geekswithblogs.net/shahedul/archive/2007/01/09/103124.aspx</link>
            <description>&lt;P&gt;Recently,&amp;nbsp;I faced a problem where&amp;nbsp;I need to ensure that someone really clicked on a link from a browser. One possible option&amp;nbsp;could be using&amp;nbsp;javascript instead of a direct link. But as many of the referrer sites&amp;nbsp;have already set the link in their pages, I can't&amp;nbsp;ask all of them to fix in their sites.&amp;nbsp;And although this can solve bot or&amp;nbsp;crawler but can't block if someone programmatically&amp;nbsp;hits this page. &lt;/P&gt;
&lt;P&gt;The page link was like following:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.shahed.net/articles/images/stopbot/old.jpg" border=0&gt; &lt;/P&gt;
&lt;P&gt;One option is the check on server side to prevent Crawler. But this is not enough for all cases.&lt;/P&gt;

&lt;P&gt;if( Request.Browser.Crawler )&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //do something else&lt;/P&gt;
&lt;P&gt;So, I did&amp;nbsp;a trick. Instead of directly reffereing to the actual url, first redirect to a dummy page. And the dummy page will redirect to actual url using javascript.&amp;nbsp;We know that&amp;nbsp;javascript will work only in browsers. Which means anyone hitting the page programmatically will get the dummy page.&amp;nbsp;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.shahed.net/articles/images/stopbot/new.jpg" border=0&gt;&lt;/P&gt;
&lt;P&gt;You can also&amp;nbsp;generate the actual page url at runtime and managed that in Application_BeginRequest in global.ascx. Although this saves you from&amp;nbsp;automated hit attacts but also creates a problem. It creates a loop if you press the "browser-&amp;gt;back" button from your site in IE6.&amp;nbsp;Because the browser will take you back to the dummy page and dummy page will send you back again. This could be resolved easily if I could have little more access in window.history object. But unfortunately, recent browsers restrict access of this object and allows only go(), back(), forward() and length property.&lt;/P&gt;
&lt;P&gt;Now, the problem is how the dummy page will know whether it has been redirected from a referrer site or from your own site (if user clicks "browser-&amp;gt;back" button)?&lt;/P&gt;
&lt;P&gt;Here is the trick: add a marker in the url as bookmark.&lt;/P&gt;

&lt;P&gt;// Check if its redirected from pageflakes&lt;BR&gt;if( document.location.href.indexOf('#marker') &amp;gt; 0 )&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // User clicked the Browser.back(), redirect to referrer site&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.location.href= document.referrer;&lt;BR&gt;}&lt;BR&gt;else&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // From referrer site, redirect to my site&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var redirectUrl = 'mypageX.aspx?&amp;lt;%= Request.RawUrl.Split('?')[1].Replace("'","\\'") %&amp;gt;';&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.location.href="#marker"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.location.href= redirectUrl;&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;Fell free to comment if you have any other ideas.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=103124"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=103124" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/103124.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2007/01/09/103124.aspx</guid>
            <pubDate>Tue, 09 Jan 2007 19:44:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/103124.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2007/01/09/103124.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/103124.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/103124.aspx</trackback:ping>
        </item>
        <item>
            <title>HTTP 404 error if RSS feed contains &amp;lt;!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd"&amp;gt</title>
            <link>http://geekswithblogs.net/shahedul/archive/2007/01/10/103296.aspx</link>
            <description>&lt;p&gt;Few days back, I was getting HTTP 404 error in my RSS Reader for some feeds. Some of them are very popular feeds and when I checked the feed XML content, I couldn't find any problem. After doing some step by step debugging I found an interesting thing - the path provided for the DTD in &amp;lt;!DCOTYPE... is no longer valid. 
&lt;p&gt;When the XmlTextReader was trying to download the DTD from "&lt;a href="http://my.netscape.com/publish/formats/rss-0.91.dtd&amp;quot;"&gt;http://my.netscape.com/publish/formats/rss-0.91.dtd"&lt;/a&gt; it got the exception "HTTP 404 error" and bubbled up to the top level. So, the only option available to me was to tell the XmlTextReader not to try to validate this feed with the provided DTD. 
&lt;p&gt;Now, The question comes, how can I tell the XmlTextReader not to validate. While searching for the solution I found a very useful class called "XmlReaderSettings" (in .Net 2.0) where you can do many useful things. but unfortunately the XmlTextReader constructor does not have any overload to pass XmlReaderSettings. You can easily use XmlReaderSettings with XmlReader. 
&lt;p&gt;// Create a XmlReaderSettings instance&lt;br&gt;XmlReaderSettings settings = new XmlReaderSettings();&lt;br&gt;settings.IgnoreComments = true;&lt;br&gt;settings.IgnoreProcessingInstructions = true;&lt;br&gt;//... and any other rules you like to implement 
&lt;p&gt;// Then pass the settings object while creating the XmlReader&lt;br&gt;XmlReader xmlReader = XmlReader.Create(response.GetResponseStream(), settings); 
&lt;p&gt;Although XmlTextReader is a subclass of XmlReader but I was looking for a quick fix and didn't have enough time to change much of my code. Then I found this: 
&lt;p&gt;xmlReader.XmlResolver = null; 
&lt;p&gt;Yes, if you set XmlResover to null, the XmlTextReader will not try to validate the XML with DTD.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=103296"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=103296" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/103296.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2007/01/10/103296.aspx</guid>
            <pubDate>Thu, 11 Jan 2007 04:27:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/103296.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2007/01/10/103296.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/103296.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/103296.aspx</trackback:ping>
        </item>
        <item>
            <title>Top 20 Programming Lessons ...</title>
            <link>http://geekswithblogs.net/shahedul/archive/2006/12/03/100247.aspx</link>
            <description>&lt;P&gt;Here is a great article explaining the realities of software development: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.dcs-media.com/desdev/Detail.aspx?ArticleId=578"&gt;http://www.dcs-media.com/desdev/Detail.aspx?ArticleId=578&lt;/A&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=100247"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=100247" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/100247.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2006/12/03/100247.aspx</guid>
            <pubDate>Mon, 04 Dec 2006 04:39:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/100247.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2006/12/03/100247.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/100247.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/100247.aspx</trackback:ping>
        </item>
        <item>
            <title>How to delete a windows service</title>
            <link>http://geekswithblogs.net/shahedul/archive/2006/10/13/93984.aspx</link>
            <description>&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Recently, I was trying to delete a windows service. Normally it should not be necessary to manually delete a service. Uninstalling an application should remove its associated service (if any). 
&lt;P&gt;However, I installed some beta products and a service created by one of the applications was not removed automatically. Its very easy to remove a service from registry if you know the right path. Here is how I did that: 
&lt;P&gt;1. Run Regedit or Regedt32 
&lt;P&gt;2. Find the registry entry "HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services" 
&lt;P&gt;3. Look for the service there and delete it. You can look at the keys to know what files the service was using and delete them as well (if necessary). 
&lt;P&gt;alternatively, you can also use command prompt and delete a service using following command: 
&lt;P&gt;sc delete &amp;lt; SERVICE name&amp;gt;&lt;BR&gt;&lt;BR&gt;or to create, simply type &lt;br/&gt;sc create &amp;lt;SERVICE name&amp;gt;
&lt;P&gt;NOTE: You have to reboot the system to get the list updated in service manager.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=93984"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=93984" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/93984.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2006/10/13/93984.aspx</guid>
            <pubDate>Fri, 13 Oct 2006 21:54:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/93984.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2006/10/13/93984.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/93984.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/93984.aspx</trackback:ping>
        </item>
        <item>
            <title>"Code Search" - another interesting feature from Google</title>
            <link>http://geekswithblogs.net/shahedul/archive/2006/10/06/93366.aspx</link>
            <description>&lt;P&gt;Today, I heard about "&lt;A href="http://www.google.com/codesearch"&gt;Code Search&lt;/A&gt;" from a pod cast. Its very useful for developers, specially the advance search option.&lt;/P&gt;
&lt;P&gt;see &lt;A href="http://www.google.com/codesearch"&gt;www.google.com/codesearch&lt;/A&gt;&lt;/P&gt;&lt;IMG src="http://www.shahed.net/articles/images/google_codesearch/codesearch.jpg"&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=93366"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=93366" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/93366.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2006/10/06/93366.aspx</guid>
            <pubDate>Fri, 06 Oct 2006 22:19:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/93366.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2006/10/06/93366.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/93366.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/93366.aspx</trackback:ping>
        </item>
        <item>
            <title>Can not open any files in Office 2007 after installing the latest "Beta 2 Technical Refresh"</title>
            <link>http://geekswithblogs.net/shahedul/archive/2006/10/10/93616.aspx</link>
            <description>&lt;P&gt;After installing the lastest Office 2007 beta 2 technical refresh, I was getting &amp;#8220;Document is unavailable&amp;#8221; or virus related error message and can not open any old files.&lt;/P&gt;
&lt;P&gt;The problem&amp;nbsp;is caused by Norton AntiVirus. To resolve the problem, goto option -&amp;gt;&amp;nbsp;miscellaneus and disable the &amp;#8220;How to keep Microsoft Office documents protected&amp;#8221; and you can work fine.&lt;/P&gt;&lt;IMG src="http://www.shahed.net/articles/Images/CannotOpenFile_Office2007/Office%20Beta_fileOpenProblem.jpg"&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=93616"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=93616" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/93616.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2006/10/10/93616.aspx</guid>
            <pubDate>Tue, 10 Oct 2006 10:46:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/93616.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2006/10/10/93616.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/93616.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/93616.aspx</trackback:ping>
        </item>
        <item>
            <title>Can a web based RSS Reader replace the desktop RSS apps?</title>
            <category>ATLAS</category>
            <category>Javascript</category>
            <link>http://geekswithblogs.net/shahedul/archive/2006/08/24/89050.aspx</link>
            <description>&lt;P&gt;Recently, &lt;A href="http://www.pageflakes.com/"&gt;Pageflakes&lt;/A&gt; released their new RSS Reader. It provides all the features of a good desktop RSS reader and with AJAX, it gives you the smoothness of regular desktop reader. The good thing of a web application is that you don't have to install it in your PC and you can use it from anywhere.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=351 src="http://www.shahed.net/articles/Images/rssReader/The%20Reader_thumb[20].jpg" width=650 border=0&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The reader has two view modes: Outlook View &amp;amp; Newspaper View. In both view mode, you can resize the panes just like any desktop application. You can also use &lt;EM&gt;hotkeys&lt;/EM&gt; for navigation. At the bottom, there are a number of options for sorting, marking the articles read/unread etc.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=161 src="http://www.shahed.net/articles/Images/rssReader/Outlook%20View_thumb[1].jpg" width=300 border=0&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=161 src="http://www.shahed.net/articles/Images/rssReader/Newspaper%20View_thumb[1].jpg" width=300 border=0&gt;&lt;/P&gt;
&lt;P&gt;The reader also has option to save articles. You can save unlimited number of articles (in beta version). Even after few months or even years, you can still keep you feeds. &lt;A href="http://www.pageflakes.com/"&gt;Pageflakes&lt;/A&gt; also archives old feeds for a period of time. So, if you are busy for a day and couldn't read your favorite articles, it will be saved&amp;nbsp;there for you.&amp;nbsp;The&amp;nbsp;&lt;EM&gt;Forward article &lt;/EM&gt;option allows you to share your articles with others.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;This RSS Reader is actually a part of the RSS flake. You can import your OPML or add feeds directly into the page or save as bookmark. The pre-caching feature is coming soon. With that, you can configure the reader to download feeds in background and read articles even smoother.&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=89050"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=89050" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/89050.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2006/08/24/89050.aspx</guid>
            <pubDate>Thu, 24 Aug 2006 13:49:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/89050.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2006/08/24/89050.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/89050.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/89050.aspx</trackback:ping>
        </item>
        <item>
            <title>FireFox error: [Exception... "'Permission denied to set property XULElement.selectedIndex' ...</title>
            <category>Javascript</category>
            <link>http://geekswithblogs.net/shahedul/archive/2006/08/14/87910.aspx</link>
            <description>Finally I found a simple solution for the FireFox error:
&lt;br /&gt;
&lt;br /&gt;
"[Exception... "'Permission denied to set property XULElement.selectedIndex' when calling method: [nsIAutoCompletePopup::selectedIndex]" nsresult: "0x8057001e (NS_ERROR_XPC_JS_THREW_STRING)"
&lt;br /&gt;
&lt;br /&gt;
This error occurs when focus() is called. I was reported in https://bugzilla.mozilla.org/show_bug.cgi?id=236791 but still no fix/patch from mozilla.
&lt;br /&gt;
To avoid this error, you have to turn off autocomplete. 
&lt;br /&gt;
&lt;br /&gt;
from javascript, you can do that in following way:
obj.setAttribute('autocomplete','off');
&lt;br /&gt;&lt;br /&gt;
Or, you can simply set autocomplete="off" in HTML.
&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=87910"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=87910" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/87910.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2006/08/14/87910.aspx</guid>
            <pubDate>Mon, 14 Aug 2006 19:48:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/87910.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2006/08/14/87910.aspx#feedback</comments>
            <slash:comments>12</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/87910.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/87910.aspx</trackback:ping>
        </item>
        <item>
            <title>IIS Error "Unexpected error 0x8ffe2740 occurred"</title>
            <category>IIS</category>
            <link>http://geekswithblogs.net/shahedul/archive/2006/07/20/85743.aspx</link>
            <description>&lt;p&gt;I was getting the following error when trying to start IIS from my XP machine:&lt;/p&gt;
&lt;p&gt;“Unexpected error 0x8ffe2740 occurred“&lt;/p&gt;
&lt;p&gt;You can get more information in MS KB @ &lt;a href="http://support.microsoft.com/?id=816944"&gt;http://support.microsoft.com/?id=816944&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Finally, I discovered that its caused by Skype. It listens to port 80 for incoming call. Now, most of the time IIS starts before Skype starts. So IIS works but if you restart IIS or try to start IIS after Skype is started then you will get this error message.&lt;/p&gt;
&lt;p&gt;There are 2 possible solutions:&lt;/p&gt;
&lt;p&gt;1. You can change your IIS settings to run in different port (say 81)&lt;/p&gt;
&lt;p&gt;2. You can change your Skype settings&lt;br /&gt;
     Skype File-&amp;gt; Options -&amp;gt; Connection&lt;br /&gt;
     Uncheck Use Port 80 as an alternative for incoming connections.&lt;/p&gt;
&lt;p&gt;Restart default website.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=85743"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=85743" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/85743.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2006/07/20/85743.aspx</guid>
            <pubDate>Thu, 20 Jul 2006 12:23:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/85743.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2006/07/20/85743.aspx#feedback</comments>
            <slash:comments>29</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/85743.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/85743.aspx</trackback:ping>
        </item>
        <item>
            <title>How to optimize javascript</title>
            <category>Javascript</category>
            <link>http://geekswithblogs.net/shahedul/archive/2006/07/01/83780.aspx</link>
            <description>&lt;P&gt;Today, I have read a useful article which explains the performance issues&amp;nbsp;for javascript execution on Opera. I think, this is also applicable for regular javascript execution on other browsers too.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://userjs.org/help/tutorials/efficient-code"&gt;http://userjs.org/help/tutorials/efficient-code&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=83780"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=83780" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/83780.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2006/07/01/83780.aspx</guid>
            <pubDate>Sat, 01 Jul 2006 12:14:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/83780.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2006/07/01/83780.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/83780.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/83780.aspx</trackback:ping>
        </item>
        <item>
            <title>Debugging JScript in Visual Studio 2005</title>
            <category>ASP.NET 2.0</category>
            <category>ATLAS</category>
            <link>http://geekswithblogs.net/shahedul/archive/2006/06/23/82781.aspx</link>
            <description>Today, I found an interesting change in Visual Studio 2005 JScript debugging. In Visual Studio 2003, to dubug JScript we need to clear the Disable Script Debugging checkbox from Internet Explorer, Tools-&gt;Advance Options. But in Visual Studio 2005, we also have to add the key word "debugger" in JScript code.

For more details, http://support.microsoft.com/default.aspx?scid=kb;en-us;816173&amp;%20f=11
&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=82781"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=82781" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/82781.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2006/06/23/82781.aspx</guid>
            <pubDate>Fri, 23 Jun 2006 06:37:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/82781.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2006/06/23/82781.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/82781.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/82781.aspx</trackback:ping>
        </item>
        <item>
            <title>' ', hexadecimal value 0x1F, is an invalid character. Line 1, position 1.</title>
            <link>http://geekswithblogs.net/shahedul/archive/2006/03/22/72953.aspx</link>
            <description>&lt;P&gt;I was making a simple rss reader and for some feeds, I was always getting this error &amp;#8220;' ', hexadecimal value 0x1F, is an invalid character. Line 1, position 1.&amp;#8221;&lt;/P&gt;
&lt;P&gt;finally, I found that, well-formed xml does not allow '0x1F'. The range of well-formed xml is &lt;/P&gt;
&lt;P&gt;Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] |&lt;BR&gt;[#x10000-#x10FFFF]&lt;/P&gt;
&lt;P&gt;in my case, it was caused for allowing 'gzip' in the request header. &lt;FONT color=#008000 size=2&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=72953"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=72953" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/shahedul/aggbug/72953.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shahedul Huq Khandkar</dc:creator>
            <guid>http://geekswithblogs.net/shahedul/archive/2006/03/22/72953.aspx</guid>
            <pubDate>Wed, 22 Mar 2006 07:07:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/shahedul/comments/72953.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/shahedul/archive/2006/03/22/72953.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/shahedul/comments/commentRss/72953.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/shahedul/services/trackbacks/72953.aspx</trackback:ping>
        </item>
    </channel>
</rss>