<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-12062482</id><updated>2011-07-07T16:44:10.713-07:00</updated><title type='text'>Sanjaya Kumar</title><subtitle type='html'>Sanjaya Kumar's Blog</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-12062482.post-6520361778011882193</id><published>2011-03-31T22:30:00.000-07:00</published><updated>2011-03-31T22:34:17.585-07:00</updated><title type='text'>Free CMS</title><content type='html'>I was searching for a nice and simple CMS system for my work found following listing. But DotnetNuke is not listed there :)&lt;br /&gt;&lt;br /&gt;http://spyrestudios.com/free-content-management-systems/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-6520361778011882193?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/6520361778011882193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=6520361778011882193' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/6520361778011882193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/6520361778011882193'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2011/03/free-cms.html' title='Free CMS'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-3529660653808784391</id><published>2010-03-14T01:51:00.000-08:00</published><updated>2010-03-14T04:12:29.925-07:00</updated><title type='text'>ThreadAbortException in IIS 7 TransferRequest</title><content type='html'>&lt;span style="font-weight:bold;"&gt;IIS Integrated Mode&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In some web applications we have to transfer the web request, but with IIS 7.0  HttpServerUtility.TransferRequest trows ThreadAbortException whis is really annoying. We have to manually handle the exception.&lt;br /&gt;&lt;br /&gt;The reason for this is &lt;br /&gt;&lt;br /&gt;On the Integration mode for Internet Information Services (IIS) 7.0, the HttpServerUtility.TransferRequest method incorrectly uses the HTTPResponse.End method to stop the parent request. This results in throwing a ThreadAbortException, which can impact performance for terminating execution of a response. In the .NET Framework 3.5 SP1, the TransferRequest method now ends the parent request by using the HttpApplication.CompleteRequest method. This also terminates the current request gracefully by transferring control to the HttpApplication.EndRequestevent handler without throwing an exception.&lt;br /&gt;&lt;br /&gt;Suggested modifications with when you install .NET framework SP1:  If you have error-handling code that uses the TransferRequest method to determine whether the ThreadAbortException was thrown, you can remove that code from the catch block.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-3529660653808784391?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/3529660653808784391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=3529660653808784391' title='39 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/3529660653808784391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/3529660653808784391'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2010/03/threadabortexception-in-iis-7.html' title='ThreadAbortException in IIS 7 TransferRequest'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>39</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-2793635796918589681</id><published>2009-11-23T14:03:00.000-08:00</published><updated>2009-11-23T14:11:56.621-08:00</updated><title type='text'>SDK design considerations</title><content type='html'>&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;EN-US&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="--"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:"Cambria Math";  panose-1:2 4 5 3 5 4 6 3 2 4;  mso-font-charset:1;  mso-generic-font-family:roman;  mso-font-format:other;  mso-font-pitch:variable;  mso-font-signature:0 0 0 0 0 0;} @font-face  {font-family:Calibri;  panose-1:2 15 5 2 2 2 4 3 2 4;  mso-font-charset:0;  mso-generic-font-family:swiss;  mso-font-pitch:variable;  mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-parent:"";  margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} a:link, span.MsoHyperlink  {mso-style-noshow:yes;  mso-style-priority:99;  color:blue;  mso-themecolor:hyperlink;  text-decoration:underline;  text-underline:single;} a:visited, span.MsoHyperlinkFollowed  {mso-style-noshow:yes;  mso-style-priority:99;  color:purple;  mso-themecolor:followedhyperlink;  text-decoration:underline;  text-underline:single;} p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph  {mso-style-priority:34;  mso-style-unhide:no;  mso-style-qformat:yes;  margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:.5in;  mso-add-space:auto;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphCxSpFirst  {mso-style-priority:34;  mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagraphCxSpMiddle  {mso-style-priority:34;  mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:0in;  margin-left:.5in;  margin-bottom:.0001pt;  mso-add-space:auto;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxSpLast  {mso-style-priority:34;  mso-style-unhide:no;  mso-style-qformat:yes;  mso-style-type:export-only;  margin-top:0in;  margin-right:0in;  margin-bottom:10.0pt;  margin-left:.5in;  mso-add-space:auto;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoChpDefault  {mso-style-type:export-only;  mso-default-props:yes;  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-fareast-font-family:Calibri;  mso-fareast-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;  mso-bidi-font-family:"Times New Roman";  mso-bidi-theme-font:minor-bidi;} .MsoPapDefault  {mso-style-type:export-only;  margin-bottom:10.0pt;  line-height:115%;} @page Section1  {size:8.5in 11.0in;  margin:1.0in 1.0in 1.0in 1.0in;  mso-header-margin:.5in;  mso-footer-margin:.5in;  mso-paper-source:0;} div.Section1  {page:Section1;}  /* List Definitions */  @list l0  {mso-list-id:144204142;  mso-list-type:hybrid;  mso-list-template-ids:682636738 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1  {mso-level-tab-stop:none;  mso-level-number-position:left;  text-indent:-.25in;} @list l0:level2  {mso-level-number-format:alpha-lower;  mso-level-tab-stop:none;  mso-level-number-position:left;  text-indent:-.25in;} @list l1  {mso-list-id:442312214;  mso-list-type:hybrid;  mso-list-template-ids:1945503546 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l1:level1  {mso-level-tab-stop:none;  mso-level-number-position:left;  text-indent:-.25in;} @list l2  {mso-list-id:1986348884;  mso-list-type:hybrid;  mso-list-template-ids:-1507570136 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l2:level1  {mso-level-tab-stop:none;  mso-level-number-position:left;  text-indent:-.25in;} @list l2:level2  {mso-level-number-format:alpha-lower;  mso-level-tab-stop:none;  mso-level-number-position:left;  text-indent:-.25in;} ol  {margin-bottom:0in;} ul  {margin-bottom:0in;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-priority:99;  mso-style-qformat:yes;  mso-style-parent:"";  mso-padding-alt:0in 5.4pt 0in 5.4pt;  mso-para-margin-top:0in;  mso-para-margin-right:0in;  mso-para-margin-bottom:10.0pt;  mso-para-margin-left:0in;  line-height:115%;  mso-pagination:widow-orphan;  font-size:11.0pt;  font-family:"Calibri","sans-serif";  mso-ascii-font-family:Calibri;  mso-ascii-theme-font:minor-latin;  mso-hansi-font-family:Calibri;  mso-hansi-theme-font:minor-latin;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;b style=""&gt;&lt;span style="line-height: 115%;font-size:24;" &gt;SDK Design Considerations&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Hs2Wflua5E4/SwsHsRVxXCI/AAAAAAAAAjQ/ghsk05Z0SrI/s1600/sdk.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_Hs2Wflua5E4/SwsHsRVxXCI/AAAAAAAAAjQ/ghsk05Z0SrI/s320/sdk.jpg" alt="" id="BLOGGER_PHOTO_ID_5407424234738768930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b style=""&gt;&lt;span style="line-height: 115%;font-size:24;" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormalCxSpMiddle"&gt;&lt;b style=""&gt;&lt;span style="line-height: 115%;font-size:12;" &gt;&lt;span style="font-size:100%;"&gt;API design principles&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormalCxSpLast"&gt;Following list summarizes some of the rules and laws which should be adhered to build a complete API for a SDK&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpFirst" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;1.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Easy to learn&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;2.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Make interfaces easy to use correctly and hard to use incorrectly.&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;Interface should not be misleading to use it incorrectly. You should define contracts preciously to avoid mistakes by the person who is using it. &lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;3.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Consistent API design&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span style=""&gt; &lt;/span&gt;An interface that is predictable serves better than one which is locally optimal but inconsistent across the whole set.&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;4.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;It should be sufficiently powerful to satisfy the requirements, but should not be over complex. &lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;5.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Don’t try to please everyone by making the API generic. &lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;6.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Do not return resources that the caller is responsible for releasing.&lt;/p&gt;    &lt;p class="MsoListParagraphCxSpMiddle"&gt;Always try to encapsulate the resource releasing, cleaning and destructing logic.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;7.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Namespaces, Type names and function names should reflect the intended use. &lt;/p&gt;    &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;8.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Consider the API evolvement and extend over time. &lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle"&gt;Need to facilitate to effectively evolve an API to keep it relevant and useful over time, without having to throw it away and start over every 18 months.&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpLast"&gt;Consider the coexistence with other versions when evolving&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Other SDK requirements&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpFirst" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;1.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;SDK should be able to easily setup and configure(installation pack)&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;2.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;SDK should clearly define the development platforms which supported.&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;3.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;It should be able to maintain different versions and their coexistence.&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;4.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;SDK should contains following artifacts&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;a.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Libraries&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;b.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;&lt;a href="http://en.wikipedia.org/wiki/Documentation" title="Documentation"&gt;&lt;span style="text-decoration: none;color:#000000;" &gt;Documentation&lt;/span&gt;&lt;/a&gt; and tools utilizing the &lt;a href="http://en.wikipedia.org/wiki/Application_programming_interface" title="Application programming interface"&gt;&lt;span style="text-decoration: none;color:#000000;" &gt;APIs&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;c.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Samples &lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;d.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Licensing agreements&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpLast" style="margin-left: 1in; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;e.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Source code(if open-source)&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Development best practice &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpFirst" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;1.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Code consistency using coding best practices, coding standards and basic frameworks&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;2.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Unexpected behaviors need to be avoided. &lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;3.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Ensure graceful termination of unavoidable situations while providing proper information to the client. &lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;4.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;SDK should be well tested before release.&lt;/p&gt;  &lt;p class="MsoListParagraphCxSpMiddle" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;5.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Modularization should be done for reuse. &lt;/p&gt;  &lt;p class="MsoListParagraphCxSpLast" style="text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;&lt;span style=""&gt;6.&lt;span style=";font-family:&amp;quot;;font-size:7;"  &gt;       &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Access modifiers should be properly defined. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-2793635796918589681?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/2793635796918589681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=2793635796918589681' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/2793635796918589681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/2793635796918589681'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2009/11/sdk-design-considerations.html' title='SDK design considerations'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Hs2Wflua5E4/SwsHsRVxXCI/AAAAAAAAAjQ/ghsk05Z0SrI/s72-c/sdk.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-8624445278312348202</id><published>2009-05-18T22:52:00.001-07:00</published><updated>2009-05-18T22:57:22.041-07:00</updated><title type='text'>Localizing Sharepoint web sites and web parts</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;&lt;strong&gt;Localizing Websites and webparts in SharePoint&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Internationalization is not a topic which is widely discussed by sharepoint communalities.  Recently when I was researching this topic I came across with several interesting strategies of accomplishing the localization of sharepoint websites and webparts, which I think worth to discuss here. I will discuss these two areas separately and first let's discuss about internationalizing websites.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Localizing Sharepoint sites&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Internationalization of web sites provided by sharepoint can be done only by installing relevant language packs which can be download from Microsoft web site.  Once relevant language packs are installed site collections and sites are available with specific language options with a dropdown list to select.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;   &lt;/p&gt;&lt;p&gt; So before you create the site you have to select the desired language of the web site or collection. Once you create by specifying the language, site is created using the specified language's template files.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Following languages packs and service packs need to be installed. After installing each pack, setup will ask to run the SharePoint configuration wizard.  Run configuration wizard for successful completion. &lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;Install Windows SharePoint Services 3.0 Language Pack &lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;a href='http://www.microsoft.com/downloads/details.aspx?FamilyId=36EE1BF0-652C-4E38-B247-F29B3EEFA048&amp;amp;displaylang=en'&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=36EE1BF0-652C-4E38-B247-F29B3EEFA048&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;     &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Install Windows SharePoint Services 3.0 Language Pack Service Pack &lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;a href='http://www.microsoft.com/DownLoads/details.aspx?familyid=05046B1D-DD7B-456A-8838-8D978C5F3579&amp;amp;displaylang=en'&gt;http://www.microsoft.com/DownLoads/details.aspx?familyid=05046B1D-DD7B-456A-8838-8D978C5F3579&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;     &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt; Install 2007 Office System Language Pack. When downloading select the correct language at the language drop down to get the service pack of specific language.&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;a href='http://www.microsoft.com/downloads/details.aspx?FamilyID=2447426b-8689-4768-bff0-cbb511599a45&amp;amp;displaylang=en'&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=2447426b-8689-4768-bff0-cbb511599a45&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;     &lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt; &lt;br /&gt; &lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt; Install the 2007 Microsoft Office Servers Language Pack Service Pack 1. When downloading select the correct language at the language drop down to get the service pack of specific language.&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;a href='http://www.microsoft.com/DownLoads/details.aspx?familyid=3A6C26FD-0BEB-40D5-8CBA-15164FAAB150&amp;amp;displaylang=en'&gt;http://www.microsoft.com/DownLoads/details.aspx?familyid=3A6C26FD-0BEB-40D5-8CBA-15164FAAB150&amp;amp;displaylang=en&lt;/a&gt;&lt;br /&gt;     &lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;That's it. SharePoint language specific configurations and templates are installed into your Sharepoint front end server and now it's ready create new sites using new language.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Localizing sharepoint custom web parts&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The default web parts provided by Sharepoint installation are automatically localized according to the language you select once you install the language pack. But when you develop custom web parts for your business needs, those web parts need to be localized using different language resource files.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Normally sharepoint sites are not localized according to user's browser language, but according to the language you use to create the site. So all the web parts inside the site should also behave in the same manner.  Let's see how we can accomplish this.&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Create a library project in Visual studio (VS). I name it "&lt;strong&gt;langwebpart&lt;/strong&gt;".&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add a Reference to Microsoft.SharePoint.dll&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Update assembly version and and allow partially trusted callers&lt;br /&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;In &lt;strong&gt;Solution Explorer&lt;/strong&gt;, double-click the &lt;strong&gt;AssemblyInfo&lt;/strong&gt; file&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style='margin-left: 1pt'&gt;[assembly: AssemblyVersion("1.0.0")]&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Add the following line to the top of the file:&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;&lt;span style='color:blue'&gt;    using&lt;/span&gt; System.Security;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;ol style='margin-left: 55pt'&gt;&lt;li&gt;Add the following line to the bottom of the file&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;    [assembly: AllowPartiallyTrustedCallers]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Add a new class. I name it as "&lt;strong&gt;userinfowebpart&lt;/strong&gt;"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Inherit &lt;strong&gt;userinfowebpart&lt;/strong&gt; from &lt;strong&gt;Microsoft.SharePoint.WebPartPages&lt;/strong&gt;&lt;br /&gt;    &lt;/li&gt;&lt;li&gt;&lt;div&gt;Override the &lt;strong&gt;render&lt;/strong&gt; method of &lt;strong&gt;WebpartPages&lt;/strong&gt;&lt;br /&gt;     &lt;/div&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;protected&lt;/span&gt;&lt;br /&gt;       &lt;span style='color:blue'&gt;override&lt;/span&gt;&lt;br /&gt;       &lt;span style='color:blue'&gt;void&lt;/span&gt; Render(&lt;span style='color:#2b91af'&gt;HtmlTextWriter&lt;/span&gt; output){};&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;/li&gt;&lt;li&gt;Create two resource files for English and Norwegian named &lt;strong&gt;userinfo.resx &lt;/strong&gt;and &lt;strong&gt;userinfo.nb-NO.resx &lt;/strong&gt;and add relevant language strings values with their key names.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;These localized strings can be used inside your programming code  as follows.&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;nameLbl.Text = langwebpart.&lt;span style='color:#2b91af'&gt;userinfo&lt;/span&gt;.name;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;      &lt;strong&gt;langwebpart&lt;/strong&gt; is the namespace&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;      &lt;strong&gt;userinfo&lt;/strong&gt; is the language file name &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;name&lt;/strong&gt; is the key.&lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Below is our code of the simple web part class.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;namespace&lt;/span&gt; langwebpart{&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;     &lt;span style='color:blue'&gt;public&lt;/span&gt;&lt;br /&gt;     &lt;span style='color:blue'&gt;class&lt;/span&gt;&lt;br /&gt;     &lt;span style='color:#2b91af'&gt;userinfowebpart&lt;/span&gt;:Microsoft.SharePoint.WebPartPages.&lt;span style='color:#2b91af'&gt;WebPart&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;     &lt;span style='color:#2b91af'&gt;Label&lt;/span&gt; nameLbl;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;     &lt;span style='color:blue'&gt;protected&lt;/span&gt;&lt;br /&gt;     &lt;span style='color:blue'&gt;override&lt;/span&gt;&lt;br /&gt;     &lt;span style='color:blue'&gt;void&lt;/span&gt; Render(&lt;span style='color:#2b91af'&gt;HtmlTextWriter&lt;/span&gt; output)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;     &lt;span style='color:blue'&gt;try&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;            {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;                RenderChildren(output);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;     &lt;span style='color:blue'&gt;catch&lt;/span&gt; (&lt;span style='color:#2b91af'&gt;Exception&lt;/span&gt; e)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;            {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;                output.Write(e.StackTrace); ;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;            }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;           &lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;br /&gt;     &lt;span style='color:blue'&gt;protected&lt;/span&gt;&lt;br /&gt;     &lt;span style='color:blue'&gt;override&lt;/span&gt;&lt;br /&gt;     &lt;span style='color:blue'&gt;void&lt;/span&gt; CreateChildControls()&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;        {&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;            nameLbl = &lt;span style='color:blue'&gt;new&lt;/span&gt;&lt;br /&gt;     &lt;span style='color:#2b91af'&gt;Label&lt;/span&gt;();&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;            nameLbl.Text = langwebpart.&lt;span style='color:#2b91af'&gt;userinfo&lt;/span&gt;.name;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;            Controls.Add(nameLbl);&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;        }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;    }&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;Developing localized web part is simple as mentioned above. Next step is to deploy the web part to the SharePoint server instance.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Deploying localized web part&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;There are several ways to deploy a web part to SharePoint.  One of the easiest and simple way is to copy the relevant assemblies to bin directory of the SharePoint web application instance.&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Deploying to bin directory&lt;br /&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Copy assembly DLL to either&lt;br/&gt;- /bin directory for a given IIS virtual server (e.g., c:\inetpub\wwwroot\bin) for globally available or to specific web application /bin folder to available only that web application.&lt;strong&gt;&lt;br /&gt;     &lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Copy DWP file to C:\Inetpub\wwwroot\wpcatalog&lt;strong&gt;&lt;br /&gt;     &lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Copy resources to C:\Inetpub\wwwroot\wpresources&lt;strong&gt;&lt;br /&gt;     &lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Adjust web.config&lt;br/&gt;- Register as SafeControl&lt;br/&gt;- Select Code Access Security settings&lt;strong&gt;&lt;br /&gt;      &lt;/strong&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Deploying to as a Webpart package&lt;br /&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;A Web Part package is a cabinet (.cab) file that contains the following items: &lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Manifest.xml (mandatory)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Web Part assemblies (optional)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Class resource files (optional)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;.dwp files (optional)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h3&gt;Creating a Manifest File for a .cab File&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;The Manifest file, a configuration file that describes the structure and contents of the .cab file, is the only required component for the .cab file. The Stsadm.exe tool uses this file to deploy the remaining content of the .cab file.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The following example shows a manifest file for a package that deploys two assemblies and their resources:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;&amp;lt;?&lt;/span&gt;&lt;span style='color:#a31515'&gt;xml&lt;/span&gt;&lt;span style='color:blue'&gt;&lt;br /&gt;     &lt;/span&gt;&lt;span style='color:red'&gt;version&lt;/span&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;"&lt;span style='color:blue'&gt;1.0&lt;/span&gt;"&lt;span style='color:blue'&gt;&lt;br /&gt;     &lt;/span&gt;&lt;span style='color:red'&gt;encoding&lt;/span&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;"&lt;span style='color:blue'&gt;utf-8&lt;/span&gt;"&lt;span style='color:blue'&gt; ?&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;&amp;lt;&lt;/span&gt;&lt;span style='color:#a31515'&gt;WebPartManifest&lt;/span&gt;&lt;span style='color:blue'&gt;&lt;br /&gt;     &lt;/span&gt;&lt;span style='color:red'&gt;xmlns&lt;/span&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;"&lt;span style='color:blue'&gt;http://schemas.microsoft.com/WebPart/v2/Manifest&lt;/span&gt;"&lt;span style='color:blue'&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;  &amp;lt;&lt;/span&gt;&lt;span style='color:#a31515'&gt;Assemblies&lt;/span&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;    &amp;lt;&lt;/span&gt;&lt;span style='color:#a31515'&gt;Assembly&lt;/span&gt;&lt;span style='color:blue'&gt;&lt;br /&gt;     &lt;/span&gt;&lt;span style='color:red'&gt;FileName&lt;/span&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;"&lt;span style='color:blue'&gt;langwebpart.dll&lt;/span&gt;"&lt;span style='color:blue'&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;      &amp;lt;&lt;/span&gt;&lt;span style='color:#a31515'&gt;ClassResources&lt;/span&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;      &amp;lt;/&lt;/span&gt;&lt;span style='color:#a31515'&gt;ClassResources&lt;/span&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;      &amp;lt;&lt;/span&gt;&lt;span style='color:#a31515'&gt;SafeControls&lt;/span&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;        &amp;lt;&lt;/span&gt;&lt;span style='color:#a31515'&gt;SafeControl&lt;/span&gt;&lt;span style='color:blue'&gt;&lt;br /&gt;     &lt;/span&gt;&lt;span style='color:red'&gt;Namespace&lt;/span&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;"&lt;span style='color:blue'&gt;langwebpart&lt;/span&gt;"&lt;span style='color:blue'&gt;&lt;br /&gt;     &lt;/span&gt;&lt;span style='color:red'&gt;TypeName&lt;/span&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;"&lt;span style='color:blue'&gt;*&lt;/span&gt;"&lt;span style='color:blue'&gt;/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;      &amp;lt;/&lt;/span&gt;&lt;span style='color:#a31515'&gt;SafeControls&lt;/span&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;    &amp;lt;/&lt;/span&gt;&lt;span style='color:#a31515'&gt;Assembly&lt;/span&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;  &amp;lt;/&lt;/span&gt;&lt;span style='color:#a31515'&gt;Assemblies&lt;/span&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;  &amp;lt;&lt;/span&gt;&lt;span style='color:#a31515'&gt;DwpFiles&lt;/span&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;    &amp;lt;&lt;/span&gt;&lt;span style='color:#a31515'&gt;DwpFile&lt;/span&gt;&lt;span style='color:blue'&gt;&lt;br /&gt;     &lt;/span&gt;&lt;span style='color:red'&gt;FileName&lt;/span&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;"&lt;span style='color:blue'&gt;webpart.dwp&lt;/span&gt;"&lt;span style='color:blue'&gt;/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;    &amp;lt;&lt;/span&gt;&lt;span style='color:#a31515'&gt;DwpFile&lt;/span&gt;&lt;span style='color:blue'&gt;&lt;br /&gt;     &lt;/span&gt;&lt;span style='color:red'&gt;FileName&lt;/span&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;"&lt;span style='color:blue'&gt;nb-NO\webpart.dwp&lt;/span&gt;"&lt;span style='color:blue'&gt;/&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;  &amp;lt;/&lt;/span&gt;&lt;span style='color:#a31515'&gt;DwpFiles&lt;/span&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;&lt;span style='color:blue'&gt;&amp;lt;/&lt;/span&gt;&lt;span style='color:#a31515'&gt;WebPartManifest&lt;/span&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;h3&gt;Creating a .cab File&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;Developers can use either of the following methods to create a .cab file: &lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Use Microsoft Visual Studio® .NET Professional to create a CAB Project.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use MakeCAB.exe, a command-line tool included with Microsoft Windows 2000 and later.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Using Visual Studio&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;To use Visual Studio.NET Professional to create a CAB project, follow these steps: &lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Start Visual Studio .NET.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Create a new solution. &lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;On the &lt;strong&gt;File&lt;/strong&gt; menu, point to &lt;strong&gt;New&lt;/strong&gt;, and then click &lt;strong&gt;Blank Solution&lt;/strong&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Type a name for the solution, and then click &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Open the Web Part project within this solution. &lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;In Solution Explorer, right-click the new solution, point to &lt;strong&gt;Add&lt;/strong&gt;, and then click &lt;strong&gt;Existing Project&lt;/strong&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Browse to the location of Web Part project that you want to add, click the project, and then click &lt;strong&gt;Open&lt;/strong&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Create a new CAB project &lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;In Solution Explorer, right-click the new solution, point to &lt;strong&gt;Add&lt;/strong&gt;, and then click &lt;strong&gt;New Project&lt;/strong&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Under &lt;strong&gt;Project Types&lt;/strong&gt;, click &lt;strong&gt;Setup and Deployment Projects,&lt;/strong&gt; and then under &lt;strong&gt;Templates&lt;/strong&gt;, click &lt;strong&gt;Cab Project&lt;/strong&gt;. &lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Type a name for the CAB project, and then click &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Add the Web Part project output to the CAB project. &lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;In Solution Explorer, right-click the CAB project, point to &lt;strong&gt;Add&lt;/strong&gt;, and then click &lt;strong&gt;Project Output&lt;/strong&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;In the &lt;strong&gt;Project&lt;/strong&gt; box, click the Web Part project that you added to the solution in step 3.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Select all the appropriate file categories that appear in the list, and then click &lt;strong&gt;OK&lt;/strong&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Make sure that you select &lt;strong&gt;Primary output&lt;/strong&gt; and &lt;strong&gt;Content Files&lt;/strong&gt;. These categories add the Manifest.xml file, the .dwp files, and the Web Part assembly to the .cab file. Verify that the Manifest.xml file and the .dwp files are marked as content for build action in their respective properties sheets. &lt;br /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;Build the solution to create the .cab file.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Using MakeCAB.exe&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;MakeCAB.exe is a tool included with Windows 2000 or later. To use MakeCAB.exe to create a .cab file, follow these steps: &lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Create a directive file for makecab.exe, and save the file with a .ddf extension. The following sample directive file (named &lt;span style='font-family:Courier New; font-size:10pt'&gt;langwebpart&lt;/span&gt;.ddf) creates a .cab file for a simple Web Part library project: &lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;;*** Sample Source Code MakeCAB Directive file example&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;.OPTION EXPLICIT ; Generate errors &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;.Set CabinetNameTemplate=langwebpart.cab    &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;.set DiskDirectoryTemplate=CDROM &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;.Set CompressionType=MSZIP &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;.Set UniqueFiles="OFF"&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;.Set Cabinet=on&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;.Set DiskDirectory1=langwebpart.CAB &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;Manifest.xml &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;webpart.dwp &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;langwebpart.dll &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;.Set DestinationDir=nb-NO&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;nb-NO\webpart.dwp&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='font-family:Courier New; font-size:10pt'&gt;;*** &amp;lt;the end&amp;gt;&lt;/span&gt;&lt;br /&gt;   &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Copy all the files that you want to include in the .cab file into the directory where you created the .ddf file. In this example, these files are the Manifest.xml file, the WebPart.dwp file, and the &lt;span style='font-family:Courier New; font-size:10pt'&gt;langwebpart&lt;/span&gt;.dll file.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;Open a command prompt, change to the directory that contains the .ddf file and the files that you want to include in the .cab file, and then run the following command: &lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;Makecab.exe /F langwebpart.ddf&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;MakeCAB.exe creates a directory named &lt;span style='font-family:Courier New; font-size:10pt'&gt;langwebpart&lt;/span&gt;.cab, and in this directory MakeCAB.exe creates a .cab file named &lt;span style='font-family:Courier New; font-size:10pt'&gt;langwebpart&lt;/span&gt;.cab that contains the all the files listed in the &lt;span style='font-family:Courier New; font-size:10pt'&gt;langwebpart&lt;/span&gt;.ddf directive file.&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Creating a CAB File with Localized Resources&lt;br /&gt;&lt;/h3&gt;&lt;p&gt;Visual Studio does not support creating .cab files with internal directories. However, localized Web Parts may require a .cab file with internal directories. Because of this you must use a tool like MakeCAB.exe or another, third-party CAB utility to deploy localized Web Parts.&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;Deploying a Web Part Package&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;Administrators can use the Stsadm.exe tool to deploy .cab files created by developers. Stsadm.exe is a command-line tool that you can use to manage a Windows SharePoint Services computer. Three Stsadm.exe options apply to Web Part package deployment: &lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;AddWPPack&lt;br /&gt;&lt;/li&gt;&lt;li&gt;DeleteWPPack&lt;br /&gt;&lt;/li&gt;&lt;li&gt;EnumWPPacks&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;For more information about a specific Stsadm.exe command-line option, type the following line at a command prompt:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;stsadm –help &lt;strong&gt;option&lt;/strong&gt;&lt;br /&gt;     &lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;h2&gt;Adding a Web Part Package&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;To use the &lt;strong&gt;Stsadm.exe&lt;/strong&gt; command to deploy a Web Part package on a server computer running Windows SharePoint Services, open a command prompt, and then type the following command:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;stsadm.exe -o addwppack &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;-filename &lt;strong&gt;Web_Part_Pack_name&lt;/strong&gt;&lt;br /&gt;     &lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;[-url &lt;strong&gt;URL&lt;/strong&gt;]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;[-globalinstall]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;[-force]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;If you want to install a Web Part package on a virtual server when the Web Part package is already installed on another virtual server on the same computer, use the following command:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;stsadm.exe -o addwppack&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;-name &lt;strong&gt;Web_Part_Pack_name&lt;/strong&gt;&lt;br /&gt;     &lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;[-url &lt;strong&gt;URL&lt;/strong&gt;]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;[-globalinstall]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;[-force]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;h2&gt;Deleting a Web Part Package&lt;br /&gt;&lt;/h2&gt;&lt;p&gt;To delete a Web Part package from specified virtual servers on a computer running Windows SharePoint Services, open a command prompt, and then type the following command:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;stsadm.exe -o deletewppack&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;           -name &lt;strong&gt;Web_Part_Pack_name&lt;/strong&gt;&lt;br /&gt;     &lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;pre&gt;&lt;code&gt;           [-url &lt;strong&gt;URL&lt;/strong&gt;]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;To decide whether to install a Web Part package in the GAC or in the Bin directory, ask the following questions: &lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Do you want to make this package available to all virtual servers on your computer?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Do you trust the assemblies and resources of the package completely?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you answer "yes" to both of these questions, install the Web Part package to the GAC. Assemblies in the GAC are fully trusted and are available to all virtual servers.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;For more info http://msdn.microsoft.com/en-us/library/dd583149.aspx&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-8624445278312348202?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/8624445278312348202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=8624445278312348202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/8624445278312348202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/8624445278312348202'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2009/05/localizing-sharepoint-web-sites-and-web.html' title='Localizing Sharepoint web sites and web parts'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-7131652895154118365</id><published>2009-05-05T01:58:00.000-07:00</published><updated>2009-05-05T02:00:40.682-07:00</updated><title type='text'>ORganization culture Change ...A Nightmare???</title><content type='html'>Organizational culture is the identity and personality of the organization which makes the uniqueness. This personality is glued with collection of values and norms that are shared by people and groups in an organization and that control the way they interact with each other and with people outside the organization and comprised of the shared assumptions, values, shared priorities and norms, tangible artifacts of organization  and behavioral patterns of organizational members. Once the members are incepted, they soon come to sense the particular culture of an organization and become part and parcel of it. Relationship diagram of cultural entities are very complex and very difficulty explain and distinguish, because they are interconnected, randomly changing and very volatile. &lt;br /&gt;&lt;br /&gt;Due to this nature, today organizations attention towards the culture management has dramatically increased, because it is the engine of the organization which drives it towards achieving organizational goals and objectives. So the interested parties of the organization always try to keep the engine running while executing minimum or no changes. This concept of minimum changes concept implies that culture change is difficult and it should be carefully advocated.&lt;br /&gt;&lt;br /&gt;Normally people are attached and frozen with current comfortable culture. They resist changing the situation and show strong reactions. Following are some of the key issues found. &lt;br /&gt;1. Comfort with current situation. When people work in a culture for a long time a social environment is built around them and they are trapped within it. &lt;br /&gt;2. Fear of collapse. Not all the organizational changes are going to be successful. There are thousands of user stories of failure. &lt;br /&gt;3. Unpredictability of new system. &lt;br /&gt;4. Unwillingness to learn and experience new things. Different types of personalities can be found in an organization. Some are self motivated and willing to experience new things. But most of the people do not want to do so. &lt;br /&gt;5. Difficulty in defining the complete change model. It is evident that modeling a change for all the organizational requirements is hard and even harder to define a flexible model which caters for changing requirements.&lt;br /&gt;6. Feeling of the participants that their autonomy and their security are threatened.&lt;br /&gt;&lt;br /&gt;Careful handling of these situations while building safety nets and preventing frustration from developing into resistance helped to a successful culture change.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-7131652895154118365?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/7131652895154118365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=7131652895154118365' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/7131652895154118365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/7131652895154118365'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2009/05/organization-culture-change-nightmare.html' title='ORganization culture Change ...A Nightmare???'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-7966080804911027353</id><published>2009-01-12T22:47:00.000-08:00</published><updated>2009-01-12T22:48:00.060-08:00</updated><title type='text'>Thread Safe Dictionary in C#</title><content type='html'>I have been working with a project where concurrent requests are accessing a Dictionary. If you check from msdn the Dictionary class http://msdn.microsoft.com/en-au/library/xfhwa508(vs.80).aspx is not Thread safe.&lt;br /&gt;&lt;br /&gt;Thread Safety&lt;br /&gt;&lt;br /&gt;Public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.&lt;br /&gt;&lt;br /&gt;To overcome this one can use Hashtable.http://msdn.microsoft.com/en-us/library/system.collections.hashtable.aspx&lt;br /&gt;Hashtable is thread safe for use by multiple reader threads and a single writing thread. It is thread safe for multi-thread use when only one of the threads perform write (update) operations, which allows for lock-free reads provided that the writers are serialized to the Hashtable. To support multiple writers all operations on the Hashtable must be done through the wrapper returned by the Synchronized method, provided that there are no threads reading the Hashtable object.&lt;br /&gt;&lt;br /&gt;But for multiple writes you need to get the Synchronized Hashtable as follows.&lt;br /&gt;Hashtable myHT = new Hashtable();&lt;br /&gt;Hashtable mySyncdHT = Hashtable.Synchronized( myHT );&lt;br /&gt;&lt;br /&gt;But to make the dictionary you have three things to do.&lt;br /&gt;1) Create a sub-class of System.Collections.Generic.Dictionary&lt;br /&gt;2) Create a utility class for modifying the collection safely&lt;br /&gt;3) Creating your own thread-safe dictionary from scratch.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have written written a utility class which keeps a instance of Dictionary and modify it in a thread safe manner with ReaderWriterLockSlim. Check the advantage of ReaderWriterLockSlim over ReaderWriterLock here.http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlockslim.aspx.&lt;br /&gt;&lt;br /&gt;Following is my code sample.&lt;br /&gt;&lt;br /&gt;public class SerializableDictionary : IXmlSerializable&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//This is the internal dictionary that we are wrapping&lt;br /&gt;IDictionary dict = new Dictionary();&lt;br /&gt;&lt;br /&gt;#region IDictionary members&lt;br /&gt;[NonSerialized]&lt;br /&gt;ReaderWriterLockSlim dictionaryLock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual bool Remove(TKey key)&lt;br /&gt;{&lt;br /&gt;dictionaryLock.EnterWriteLock();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;return this.dict.Remove(key);&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;dictionaryLock.ExitWriteLock();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual bool ContainsKey(TKey key)&lt;br /&gt;{&lt;br /&gt;dictionaryLock.EnterReadLock();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;return this.dict.ContainsKey(key);&lt;br /&gt;} finally&lt;br /&gt;{&lt;br /&gt;dictionaryLock.ExitReadLock();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual bool TryGetValue(TKey key, out TValue value)&lt;br /&gt;{&lt;br /&gt;dictionaryLock.EnterReadLock();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;return this.dict.TryGetValue(key, out value);&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;dictionaryLock.ExitReadLock();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual TValue this[TKey key]&lt;br /&gt;{&lt;br /&gt;get&lt;br /&gt;{&lt;br /&gt;dictionaryLock.EnterReadLock();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;return this.dict[key];&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;dictionaryLock.ExitReadLock();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;set&lt;br /&gt;{&lt;br /&gt;dictionaryLock.EnterWriteLock();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;this.dict[key] = value;&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;dictionaryLock.ExitWriteLock();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual ICollection Keys&lt;br /&gt;{&lt;br /&gt;get&lt;br /&gt;{&lt;br /&gt;dictionaryLock.EnterReadLock();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;return new List(this.dict.Keys);&lt;br /&gt;}finally&lt;br /&gt;{&lt;br /&gt;dictionaryLock.ExitReadLock();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual ICollection Values&lt;br /&gt;{&lt;br /&gt;get&lt;br /&gt;{&lt;br /&gt;dictionaryLock.EnterReadLock();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;return new List(this.dict.Values);&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;dictionaryLock.ExitReadLock();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual void Clear()&lt;br /&gt;{&lt;br /&gt;dictionaryLock.EnterWriteLock();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;this.dict.Clear();&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;dictionaryLock.ExitWriteLock();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual int Count&lt;br /&gt;{&lt;br /&gt;get&lt;br /&gt;{&lt;br /&gt;dictionaryLock.EnterReadLock();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;return this.dict.Count;&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;dictionaryLock.ExitReadLock();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual bool Contains(KeyValuePair item)&lt;br /&gt;{&lt;br /&gt;dictionaryLock.EnterReadLock();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;return this.dict.Contains(item);&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;dictionaryLock.ExitReadLock();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual void Add(KeyValuePair item)&lt;br /&gt;{&lt;br /&gt;dictionaryLock.EnterWriteLock();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;this.dict.Add(item);&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;dictionaryLock.ExitWriteLock();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual void Add(TKey key, TValue value)&lt;br /&gt;{&lt;br /&gt;dictionaryLock.EnterWriteLock();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;this.dict.Add(key, value);&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;dictionaryLock.ExitWriteLock();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual bool Remove(KeyValuePair item)&lt;br /&gt;{&lt;br /&gt;dictionaryLock.EnterWriteLock();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;return this.dict.Remove(item);&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;dictionaryLock.ExitWriteLock();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual void CopyTo(KeyValuePair[] array, int arrayIndex)&lt;br /&gt;{&lt;br /&gt;dictionaryLock.EnterReadLock();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;this.dict.CopyTo(array, arrayIndex);&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;dictionaryLock.ExitReadLock();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual bool IsReadOnly&lt;br /&gt;{&lt;br /&gt;get&lt;br /&gt;{&lt;br /&gt;return this.dict.IsReadOnly;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public virtual IEnumerator&gt; GetEnumerator()&lt;br /&gt;{&lt;br /&gt;throw new NotSupportedException("Cannot enumerate a threadsafe dictionary. Instead, enumerate the keys or values collection");&lt;br /&gt;}&lt;br /&gt;#endregion&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-7966080804911027353?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/7966080804911027353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=7966080804911027353' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/7966080804911027353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/7966080804911027353'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2009/01/thread-safe-dictionary-in-c.html' title='Thread Safe Dictionary in C#'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-7338294309128873521</id><published>2008-12-22T23:15:00.000-08:00</published><updated>2008-12-23T01:14:39.555-08:00</updated><title type='text'>Flex Error</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;TypeError: Error #1009: Cannot access a property or method of a null object reference.&lt;br/&gt;    at mx.charts::AxisRenderer/calcStaggeredSpacing()[C:\Work\flex\dmv_automation\projects\datavisualisation\src\mx\charts\AxisRenderer.as:2195]&lt;br/&gt;    at mx.charts::AxisRenderer/calcRotationAndSpacing()[C:\Work\flex\dmv_automation\projects\datavisualisation\src\mx\charts\AxisRenderer.as:1586]&lt;br/&gt;    at mx.charts::AxisRenderer/adjustGutters()[C:\Work\flex\dmv_automation\projects\datavisualisation\src\mx\charts\AxisRenderer.as:1326]&lt;br/&gt;    at mx.charts::AxisRenderer/set gutters()[C:\Work\flex\dmv_automation\projects\datavisualisation\src\mx\charts\AxisRenderer.as:798]&lt;br/&gt;    at mx.charts.chartClasses::CartesianChart/updateAxisLayout()[C:\Work\flex\dmv_automation\projects\datavisualisation\src\mx\charts\chartClasses\CartesianChart.as:2028]&lt;br/&gt;    at mx.charts.chartClasses::CartesianChart/updateDisplayList()[C:\Work\flex\dmv_automation\projects\datavisualisation\src\mx\charts\chartClasses\CartesianChart.as:1355]&lt;br/&gt;    at mx.core::UIComponent/validateDisplayList()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:6214]&lt;br/&gt;    at mx.managers::LayoutManager/validateDisplayList()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:602]&lt;br/&gt;    at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:675]&lt;br/&gt;    at Function/http://adobe.com/AS3/2006/builtin::apply()&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;this error occurs when you have only 1 dataset and your dataset name is wider than the chart..&lt;br/&gt;&lt;br/&gt;this is a bug of Flex and you can make a workaround for this. visit this http://bugs.adobe.com/jira/browse/FLEXDMV-1821&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-7338294309128873521?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/7338294309128873521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=7338294309128873521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/7338294309128873521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/7338294309128873521'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/12/flex-error.html' title='Flex Error'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-3186355483506008488</id><published>2008-11-19T03:10:00.000-08:00</published><updated>2008-11-19T03:10:00.856-08:00</updated><title type='text'>xml data encoding issue in sql server 2005</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Today I found one of my friend is struggling with saving xml to sql server 2005 database with Norwegian characters. When he try to insert xml data error is throwing saying "invalid characters found in line number ....". According to the definitions sql server keeps xml data using utf-16 encoding. so this should support Norwegian characters. The xml document which we are trying to save contains the declarations as &lt;br/&gt;&lt;br/&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt;&lt;br/&gt;&lt;br/&gt;If we remove the above xml declaration from the xml document before sending it to sql server, it will be automatically handled by the server using utf-16. you can use .Net to remove the declaration before sending it to server and insert declaration while you retrieve xml from database.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-3186355483506008488?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/3186355483506008488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=3186355483506008488' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/3186355483506008488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/3186355483506008488'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/11/xml-data-encoding-issue-in-sql-server.html' title='xml data encoding issue in sql server 2005'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-8055628813929191203</id><published>2008-11-17T05:12:00.000-08:00</published><updated>2008-11-17T05:12:01.522-08:00</updated><title type='text'>Cairngorm with Flex</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Cairngorm is a framework which facilitates to write well structured flex code with MVC architecture. Its Front controller, Model Locator, command and delegate patterns are the main components of the framework. I will try to explain how it works with a simple example application of user search.&lt;br/&gt;&lt;br/&gt;&lt;ol&gt;&lt;li&gt;App boots up, shows first state&lt;/li&gt;&lt;li&gt;user types in some keywords, clicks the Search button&lt;/li&gt;&lt;li&gt;this fires the doSearch event handler&lt;/li&gt;&lt;li&gt;the doSearch handler creates a CairngormEvent, and dispatches it&lt;/li&gt;&lt;li&gt;the Controller has mapped that type of event to a Command, and thus it runs the command, passing it the event&lt;/li&gt;&lt;li&gt;the Command looks at the event type in the execute function and&lt;br /&gt;decides what to run, in this case, searchBooks, passing the event’s&lt;br /&gt;data to the function&lt;/li&gt;&lt;li&gt;search books creates the Business Delegate, and calls its method&lt;/li&gt;&lt;li&gt;the Delegate gets the WebService from the ServiceLocator, fires off the WebService, and waits for a response&lt;/li&gt;&lt;li&gt;if the response is successful, it parses the E4X XML via a Factory to a list of Book ValueObjects&lt;/li&gt;&lt;li&gt;finally, it calls the responder’s onResult function&lt;/li&gt;&lt;li&gt;Since the Command is the Responder, he gets the data, and sets it to the ModelLocator and updates the applications state&lt;/li&gt;&lt;li&gt;The View’s are bound to the state variable and book list in the ModelLocator, so they immediately have their bindings fire&lt;/li&gt;&lt;li&gt;This causes the main app to change state, and show the results DataGrid&lt;/li&gt;&lt;li&gt;The results DataGrid is bound to the books list in the ModelLocator, and shows the results.&lt;/li&gt;&lt;/ol&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-8055628813929191203?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/8055628813929191203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=8055628813929191203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/8055628813929191203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/8055628813929191203'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/11/cairngorm-with-flex.html' title='Cairngorm with Flex'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-907158669685164514</id><published>2008-10-20T03:35:00.000-07:00</published><updated>2008-10-20T03:35:00.339-07:00</updated><title type='text'>Lucene Free text search Engine</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;When I was working with the Lucene  search engine, I faced with some problems of "Too many clauses" in the search criteria. To avoid above problem always use PrefixFilters &lt;br/&gt;&lt;br/&gt;Term term = new Term(_facetName, axisValue.FromValue);&lt;br/&gt;PrefixFilter filter = new PrefixFilter(term);&lt;br/&gt;&lt;br/&gt;instead of&lt;br/&gt;&lt;br/&gt;Term term = new Term(_facetName, axisValue.FromValue);&lt;br/&gt;Filter p = new QueryWrapperFilter(new TermQuery(term));&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;You can avoid words which are very short when indexing. This will improve the performance of the searching. Following is a sample of implementing custom analyzer with the Token filter.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;   public class CustomAnalyzer : Analyzer {&lt;br/&gt;&lt;br/&gt;      private Set stopSet;&lt;br/&gt;      private int _minTokenLength = 3;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;      public static  string[] STOP_WORDS = StopAnalyzer.ENGLISH_STOP_WORDS;&lt;br/&gt;&lt;br/&gt;      /** Builds an analyzer. */&lt;br/&gt;      public CustomAnalyzer(int minTokenLength)&lt;br/&gt;          : this(STOP_WORDS, minTokenLength) &lt;br/&gt;      {&lt;br/&gt;      }&lt;br/&gt;&lt;br/&gt;      /** Builds an analyzer with the given stop words. */&lt;br/&gt;      public CustomAnalyzer(String[] stopWords,int minTokenLength)&lt;br/&gt;      {&lt;br/&gt;        stopSet = StopFilter.makeStopSet(stopWords);&lt;br/&gt;        _minTokenLength = minTokenLength;&lt;br/&gt;      }&lt;br/&gt;&lt;br/&gt;      /** Constructs a {@link StandardTokenizer} filtered by a {@link&lt;br/&gt;      StandardFilter}, a {@link LowerCaseFilter} and a {@link StopFilter}. */&lt;br/&gt;      public override TokenStream tokenStream(String fieldName, Reader reader) {&lt;br/&gt;        TokenStream result = new StandardTokenizer(reader);&lt;br/&gt;        result = new StandardFilter(result);&lt;br/&gt;        result = new LengthTokenFilter(result, _minTokenLength);&lt;br/&gt;        result = new LowerCaseFilter(result);&lt;br/&gt;        result = new StopFilter(result, stopSet);&lt;br/&gt;        return result;&lt;br/&gt;      }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;ToenFilter to remove tokens with short lengths&lt;br/&gt;&lt;br/&gt;public class LengthTokenFilter: TokenFilter {&lt;br/&gt;    private int minLength;&lt;br/&gt;&lt;br/&gt;    public int MinLength&lt;br/&gt;    {&lt;br/&gt;        get { return minLength; }&lt;br/&gt;        set { minLength = value; }&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    internal LengthTokenFilter(TokenStream input, int minLength)&lt;br/&gt;        : base(input)&lt;br/&gt;    {&lt;br/&gt;        this.minLength = minLength;&lt;br/&gt;    }&lt;br/&gt;&lt;br/&gt;    public override Token next(Token result){&lt;br/&gt;&lt;br/&gt;        while ((result = input.next(result)) != null) {&lt;br/&gt;            if (result.termLength() &amp;gt;= minLength) {&lt;br/&gt;                return result;&lt;br/&gt;            }&lt;br/&gt;        }&lt;br/&gt;&lt;br/&gt;        return null;&lt;br/&gt;    }&lt;br/&gt;}&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-907158669685164514?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/907158669685164514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=907158669685164514' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/907158669685164514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/907158669685164514'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/10/lucene-free-text-search-engine.html' title='Lucene Free text search Engine'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-6830745425264402605</id><published>2008-10-16T10:33:00.000-07:00</published><updated>2008-10-19T23:19:18.179-07:00</updated><title type='text'>Flex PopupButton</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;While I am working with Flex PopupButton, I faced with some issues of Event dispatching and propagation. All the events dispatched inside the PopupButton control will not propagate to the parent container components.I couldn't find a way to catch the events from the controls inside the popup button from the main application.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-6830745425264402605?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/6830745425264402605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=6830745425264402605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/6830745425264402605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/6830745425264402605'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/10/flex-popupbutton.html' title='Flex PopupButton'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-795864693117521008</id><published>2008-10-10T00:16:00.000-07:00</published><updated>2008-10-10T00:16:00.569-07:00</updated><title type='text'>Flex component explorer</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;span style='border-collapse: separate; color: rgb(5, 13, 36); font-family: &amp;apos;Lucida Grande&amp;apos;; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;' class='Apple-style-span'&gt;&lt;big&gt;This is really helpful to visualize the flex components and its behavior. &lt;/big&gt;&lt;/span&gt;&lt;a href='http://examples.adobe.com/flex3/componentexplorer/explorer.html'&gt;http://examples.adobe.com/flex3/componentexplorer/explorer.html&lt;/a&gt;&lt;span style='border-collapse: separate; color: rgb(5, 13, 36); font-family: &amp;apos;Lucida Grande&amp;apos;; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 19px; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;' class='Apple-style-span'&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-795864693117521008?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/795864693117521008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=795864693117521008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/795864693117521008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/795864693117521008'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/10/flex-component-explorer.html' title='Flex component explorer'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-3065081080711633251</id><published>2008-10-09T23:50:00.000-07:00</published><updated>2008-10-09T23:50:08.418-07:00</updated><title type='text'>Adobe Flex</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;small&gt;&lt;font face='agency'&gt;&lt;big&gt;Adobe Flex is one of the best RIA application generation platform and for the current project we have decided to use flex.Flex is a highly productive, free open source framework for building and maintaining expressive web applications that deploy consistently on all major browsers, desktops, and operating systems.You can get more information and resources from &lt;br/&gt;&lt;/big&gt;&lt;/font&gt;&lt;/small&gt;&lt;a href='http://www.adobe.com/products/flex/'&gt;http://www.adobe.com/products/flex/&lt;/a&gt;&lt;br/&gt;&lt;small&gt;&lt;font face='agency'&gt;&lt;big&gt;&lt;br/&gt;&lt;/big&gt;&lt;/font&gt;&lt;/small&gt;&lt;span class='Apple-style-span' style='border-collapse: separate; color: rgb(51, 51, 51); font-family: Arial; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: 18px; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;'&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-3065081080711633251?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/3065081080711633251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=3065081080711633251' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/3065081080711633251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/3065081080711633251'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/10/adobe-flex.html' title='Adobe Flex'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-4686716546264784856</id><published>2008-09-15T22:31:00.000-07:00</published><updated>2008-09-15T22:38:00.665-07:00</updated><title type='text'>University of Mortuwa has become the no 1 in google summer code</title><content type='html'>This Week's Top 10's: Universities for Google Summer of Code 2008. University of moratuwa has become number 1. this is a great news for all the sri lankans.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://google-opensource.blogspot.com/2008/05/this-weeks-top-10s-universities-for.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-4686716546264784856?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/4686716546264784856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=4686716546264784856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/4686716546264784856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/4686716546264784856'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/09/university-of-mortuwa-has-become-no-1.html' title='University of Mortuwa has become the no 1 in google summer code'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-7410376807245318457</id><published>2008-05-21T13:31:00.000-07:00</published><updated>2008-05-21T13:44:04.085-07:00</updated><title type='text'>SSIS error in merge joins</title><content type='html'>we have developed a application called File converter which uses SSIS to convert different input file formats(flat files, hierarchical files, xml) different output file formats. &lt;br /&gt;&lt;br /&gt;File converter is a web application and these SSIS packages are executed via .NET APIs. The crazy error was when we deploy a SSIS package which contains xml sources and merge joins SSIS package execution hangs. But the funny thing is it executes successfully in windows ZP. But it hands on windows 2000. &lt;br /&gt;&lt;br /&gt;Customers production environment is windows 2000. We have installed only SSIS service on this machine where File Converter web application is running. After days of trouble shooting we found the cause for the problem. Hurraayyyyy..... &lt;br /&gt;&lt;br /&gt;ITS   SQL server service pack 2. If you install service pack 2 to SSIS service it does the work. &lt;br /&gt;&lt;br /&gt;for more details see &lt;span style="font-weight:bold;"&gt;http://support.microsoft.com/kb/938049&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you still have the issue install hot fixes for service pack 2 as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-7410376807245318457?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/7410376807245318457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=7410376807245318457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/7410376807245318457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/7410376807245318457'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/05/ssis-error-in-merge-joins.html' title='SSIS error in merge joins'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-4265684102705765039</id><published>2008-05-13T05:33:00.000-07:00</published><updated>2008-05-13T06:34:58.120-07:00</updated><title type='text'>Once again in Norway</title><content type='html'>I am with Anura, dileepa and pathi once again in Norway. This time we work with SPN development team to enhance the current Preator system(Predator is a debt collection system) towards next generation CMS system. Predator's core is written in borland c++ and we are re-engineering its data access layer and business layer to migrate Faircom ISAM to Faircom SQL.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-4265684102705765039?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/4265684102705765039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=4265684102705765039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/4265684102705765039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/4265684102705765039'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/05/once-again-in-norway.html' title='Once again in Norway'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-3886268919264403332</id><published>2008-05-13T05:21:00.000-07:00</published><updated>2008-05-13T05:22:51.011-07:00</updated><title type='text'>SQL Server Management Studio Reports and Dashboard</title><content type='html'>Good article to read to check the statistics of MSSQL server using reports and dashboards.&lt;br /&gt;&lt;br /&gt;http://www.databasejournal.com/features/mssql/article.php/3743596&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-3886268919264403332?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/3886268919264403332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=3886268919264403332' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/3886268919264403332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/3886268919264403332'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/05/sql-server-management-studio-reports.html' title='SQL Server Management Studio Reports and Dashboard'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-5446130448534525908</id><published>2008-02-25T12:44:00.001-08:00</published><updated>2008-02-25T12:44:49.855-08:00</updated><title type='text'>Understanding the Metabolism</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Understand the Metabolism&lt;br/&gt;&lt;br/&gt;If you're trying to lose weight and think your metabolism might be the culprit, there are changes you can make to improve it. But with the commercialism surrounding "metabolism-enhancing" products, it can be hard to separate fact from fiction (or advertising) and pin down techniques that are scientifically proven to change one's metabolism.&lt;br/&gt;&lt;br/&gt;   1. Understand what metabolism is. In the simplest terms, metabolism is the rate at which your body burns calories. The rate differs significantly from person to person. You and your friend can have the same activity level, diet, and weight but still gain or lose weight at different rates based on differences in metabolism.&lt;br/&gt;   2. Determine what is influencing your metabolism. There are some factors that you can change, and some factors that you can't.&lt;br/&gt;&lt;br/&gt;          * Age - metabolism slows 5% per decade after age 40&lt;br/&gt;          * Sex - men generally burn calories faster than women&lt;br/&gt;          * Heredity - you can inherit your metabolic rate from previous generations&lt;br/&gt;          * Thyroid disorder - problems in the thyroid gland can slow metabolism but this is rare&lt;br/&gt;          * Proportion of lean body mass - metabolism increases with muscle mass &lt;br/&gt;   3. Calculate your resting metabolic rate (RMR). RMR is often used interchangeably with basal metabolic rate (BMR); although they are slightly different, estimating either is sufficient for the purpose of losing weight. To calculate your RMR, use the Mifflin-St Jeor equation (which is more reliable than the Harris-Benedict equation). There are also calculators online that can do this for you:&lt;br/&gt;&lt;br/&gt;          * RMR = (9.99w + 6.25s) - 4.92a + 166g&lt;br/&gt;          * w = weight in kilograms; if you know your weight in pounds, divide by 2.2 to get your weight in kilograms&lt;br/&gt;          * s = height in centimeters; if you know your height in inches, multiply by 2.54 to get your height in centimeters&lt;br/&gt;          * a = age in years&lt;br/&gt;          * g = gender = 1 for males, 0 for females &lt;br/&gt;   4. Adjust your diet accordingly. Your RMR will tell you how many calories you need to maintain your body at rest. Your daily consumption to maintain your weight should be:&lt;br/&gt;&lt;br/&gt;          * RMR x 1.15&lt;br/&gt;          * E.g. RMR = 2000, so the maintenance intake is 2000 x 1.15 = 2300&lt;br/&gt;          * To lose weight safely, consume no more than your maintenance intake but no less than your RMR.&lt;br/&gt;          * Count calories by recording what you eat and looking up how many calories each food item contains (either on the food packaging or in tables provided in books or online). &lt;br/&gt;&lt;br/&gt;more : http://www.wikihow.com/Increase-Your-Metabolism&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-5446130448534525908?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/5446130448534525908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=5446130448534525908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/5446130448534525908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/5446130448534525908'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/02/understanding-metabolism.html' title='Understanding the Metabolism'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-2477780276102279846</id><published>2008-02-16T12:36:00.001-08:00</published><updated>2008-02-16T12:41:17.285-08:00</updated><title type='text'>sweden trip</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;We traveled to Sweden  from sandefijord  by Ferry.  This trip was not interesting as we have expected. We spend around 8 hours at Stormstad, Sweden and visited around the city. It was not a big city.&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;b&gt;Strömstad&lt;/b&gt; is a &lt;a title='Cities in Sweden' class='mw-redirect' href='http://en.wikipedia.org/wiki/Cities_in_Sweden'&gt;town&lt;/a&gt; (pop. 5,800) in &lt;a title='Bohuslän' href='http://en.wikipedia.org/wiki/Bohusl%C3%A4n'&gt;Bohuslän&lt;/a&gt; in western &lt;a title='Sweden' href='http://en.wikipedia.org/wiki/Sweden'&gt;Sweden&lt;/a&gt; and the seat of &lt;a title='Strömstad Municipality' href='http://en.wikipedia.org/wiki/Str%C3%B6mstad_Municipality'&gt;Strömstad Municipality&lt;/a&gt;, &lt;a title='Västra Götaland County' href='http://en.wikipedia.org/wiki/V%C3%A4stra_G%C3%B6taland_County'&gt;Västra Götaland County&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Strömstad is, despite its small population, for historical reasons normally still referred to as a &lt;a title='Stad (Sweden)' href='http://en.wikipedia.org/wiki/Stad_%28Sweden%29'&gt;&lt;i&gt;city&lt;/i&gt;&lt;/a&gt;. &lt;a title='Statistics Sweden' href='http://en.wikipedia.org/wiki/Statistics_Sweden'&gt;Statistics Sweden&lt;/a&gt;, however, only counts &lt;a title='Urban areas of Sweden' class='mw-redirect' href='http://en.wikipedia.org/wiki/Urban_areas_of_Sweden'&gt;localities&lt;/a&gt; with more than 10,000 inhabitants as cities.&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;&lt;b&gt;some links &lt;/b&gt;&lt;br/&gt;&lt;br/&gt;http://www.vastsverige.com/templates/default____2349.aspx&lt;br/&gt;&lt;b&gt;&lt;br/&gt;Photos&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt; &lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Ferry to sweden&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_Hs2Wflua5E4/R7dJra0q01I/AAAAAAAAAFU/5tDf8Ivbq6s/s1600-h/PICT0040.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_Hs2Wflua5E4/R7dJra0q01I/AAAAAAAAAFU/5tDf8Ivbq6s/s320/PICT0040.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5167680107714368338" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Stormstad city&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_Hs2Wflua5E4/R7dKHa0q02I/AAAAAAAAAFc/R3RBwAE8YD8/s1600-h/PICT0081.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_Hs2Wflua5E4/R7dKHa0q02I/AAAAAAAAAFc/R3RBwAE8YD8/s320/PICT0081.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5167680588750705506" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-2477780276102279846?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/2477780276102279846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=2477780276102279846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/2477780276102279846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/2477780276102279846'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/02/sweden-trip.html' title='sweden trip'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_Hs2Wflua5E4/R7dJra0q01I/AAAAAAAAAFU/5tDf8Ivbq6s/s72-c/PICT0040.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-2578602114579833456</id><published>2008-02-16T12:19:00.001-08:00</published><updated>2008-02-16T12:22:55.533-08:00</updated><title type='text'>Amsterdam Visit</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I traveled to Amsterdam central and enjoyed the boat trip. It was a two hour journey which goes around the Amsterdam city via ancient canals. We could see all different types of building with different eras. This is a nice trip to enjoy.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Amsterdam central&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_Hs2Wflua5E4/R7dFja0q0zI/AAAAAAAAAFE/Osxf94qLiaM/s1600-h/PICT0031.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_Hs2Wflua5E4/R7dFja0q0zI/AAAAAAAAAFE/Osxf94qLiaM/s320/PICT0031.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5167675572228903730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Boat trip around the city&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_Hs2Wflua5E4/R7dGDa0q00I/AAAAAAAAAFM/lSWSpcTuWBY/s1600-h/PICT0058.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_Hs2Wflua5E4/R7dGDa0q00I/AAAAAAAAAFM/lSWSpcTuWBY/s320/PICT0058.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5167676121984717634" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-2578602114579833456?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/2578602114579833456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=2578602114579833456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/2578602114579833456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/2578602114579833456'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/02/amsterdam-visit.html' title='Amsterdam Visit'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_Hs2Wflua5E4/R7dFja0q0zI/AAAAAAAAAFE/Osxf94qLiaM/s72-c/PICT0031.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-6579937524179311828</id><published>2008-02-16T12:14:00.001-08:00</published><updated>2008-02-16T12:14:06.571-08:00</updated><title type='text'>Norway again for Customer Site SPN</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I am again at Norway for onsite development at customer site SPN. I left from colombo on 25th of January. It was a long journey. Traveled to Quatar, Amsterdam and finally sandefijord. I myself with three other developers are enjoying the Nordic weather now. Its snowing at sandefijord but not that much cold as last time of my visit.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-6579937524179311828?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/6579937524179311828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=6579937524179311828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/6579937524179311828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/6579937524179311828'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/02/norway-again-for-customer-site-spn.html' title='Norway again for Customer Site SPN'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-6547842311996399281</id><published>2008-01-03T00:37:00.001-08:00</published><updated>2008-01-03T00:37:31.754-08:00</updated><title type='text'>ScribeFire </title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;This is a great firefox plugin to edit blogs. try it.&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p class='poweredbyperformancing'&gt;Powered by &lt;a href='http://scribefire.com/'&gt;ScribeFire&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-6547842311996399281?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/6547842311996399281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=6547842311996399281' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/6547842311996399281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/6547842311996399281'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/01/scribefire.html' title='ScribeFire '/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-4736191320310158094</id><published>2008-01-02T19:39:00.000-08:00</published><updated>2008-01-02T19:40:40.468-08:00</updated><title type='text'>An unhandled exception occurred in the user interface.Exception Information: OSearch (SPSearchAcct)</title><content type='html'>Setting up SharePoint? Accounts need their domain.&lt;br /&gt;I have been meaning to post this forever and keep forgetting. A very common issue I am seeing people have when setting up and configuring SharePoint is the way they are specifying account names. You must always specify domain\username. Even though SharePoint will never tell you this is the problem it is. Many users are tempted to just type in username for a service and then the password then they are greeted with a random/cryptic error message. After about an hour (or a day of reinstalling) they realize it was because they forgot to specify the domain name. &lt;br /&gt;&lt;br /&gt;I will attempt to compile a list of error messages that have been caused by this issue and post them here. If you have one please post it in the comments and I will update the post. Thanks &lt;br /&gt;&lt;br /&gt;Sample Error: &lt;br /&gt;&lt;br /&gt;An unhandled exception occurred in the user interface.Exception Information: OSearch (SPSearchAcct)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-4736191320310158094?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/4736191320310158094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=4736191320310158094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/4736191320310158094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/4736191320310158094'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/01/unhandled-exception-occurred-in-user.html' title='An unhandled exception occurred in the user interface.Exception Information: OSearch (SPSearchAcct)'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-1525424148383683318</id><published>2008-01-01T01:12:00.000-08:00</published><updated>2008-01-01T01:35:01.852-08:00</updated><title type='text'>SSIS training at Sandejord, Norway</title><content type='html'>Last week (09/12/2007) I traveled to Norway for a SSIS training for my customer SPN(System Partner Norge). Hasith yaggahawita one of my company mate also joined with me for this visit. We flew to Frankfurt, Germany and then using a Scandinavian air lines we landed to Oslo. It was a quite large air travel. This was my first visit to Norway and winter is beginning there. It was quite cold and temperature was around -10 Celsius. &lt;br /&gt;&lt;br /&gt;We then traveled to Sandefjord by the train. It was a two hours journey and Sandefjord is very beautiful and quite. there are no big building and looks like a village.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;SPN outside view&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_Hs2Wflua5E4/R3oImQbtvNI/AAAAAAAAAE0/o_fFvz8ThJw/s1600-h/IMG_0164.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_Hs2Wflua5E4/R3oImQbtvNI/AAAAAAAAAE0/o_fFvz8ThJw/s320/IMG_0164.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5150438577190845650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The apartment we lodged was beautiful and near to the railway station. SPN is 15 minutes from the apartment.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;My Apartment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_Hs2Wflua5E4/R3oIIgbtvMI/AAAAAAAAAEs/pKxoLtdTR3Y/s1600-h/IMG_0187.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_Hs2Wflua5E4/R3oIIgbtvMI/AAAAAAAAAEs/pKxoLtdTR3Y/s320/IMG_0187.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5150438066089737410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;From Monday to Friday I had conducted the SSIS training for SPN employees and last day(Friday) We had the Christmas part which was organized in the Ferry to Sweden. This was my first experience in a Ferry. We really enjoyed the Norwegian foods and drinks. &lt;br /&gt;&lt;br /&gt;Saturday I with my friend hasith backed to Oslo. We have visited the city as well as Castle. &lt;br /&gt;We had the return flight on Sunday through Frankfurt.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Trees with friezed FOG&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_Hs2Wflua5E4/R3oJKwbtvOI/AAAAAAAAAE8/QLl4ZCEcUTE/s1600-h/IMG_0172.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_Hs2Wflua5E4/R3oJKwbtvOI/AAAAAAAAAE8/QLl4ZCEcUTE/s320/IMG_0172.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5150439204256070882" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-1525424148383683318?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/1525424148383683318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=1525424148383683318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/1525424148383683318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/1525424148383683318'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2008/01/ssis-training-at-sandejord-norway.html' title='SSIS training at Sandejord, Norway'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_Hs2Wflua5E4/R3oImQbtvNI/AAAAAAAAAE0/o_fFvz8ThJw/s72-c/IMG_0164.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-2697633986803024552</id><published>2007-07-12T09:45:00.000-07:00</published><updated>2007-07-12T09:54:08.420-07:00</updated><title type='text'>strange error on ssis package excution</title><content type='html'>I was totally blank when i got the error saying OLE DB provider 'STREAM' for linked server '(null)' returned invalid data for column '[!BulkInsert].sak_beregnetrente&lt;br /&gt;&lt;br /&gt;I was doing a bulk data transfer from faircom ctree server to sql server 2005 using ssis. the faircom db is a large database and very difficult to figure out where the error was. &lt;br /&gt;I then tried to check the null values of the data column "sak_beregnetrente". but it contained more than 20 million records. then i used a ssis derived column to check the null using the expression  &lt;br /&gt;&lt;br /&gt;[sak_beregnetrente] == NULL(DT_R8) ? 0 : [sak_beregnetrente]&lt;br /&gt;&lt;br /&gt;this will check the NAN values for the column data because the data type is float.&lt;br /&gt;&lt;br /&gt;eahhhhh, this solved my problem&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-2697633986803024552?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/2697633986803024552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=2697633986803024552' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/2697633986803024552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/2697633986803024552'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2007/07/strange-error-on-ssis-package-excution.html' title='strange error on ssis package excution'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-2799153898217072921</id><published>2007-06-08T02:15:00.000-07:00</published><updated>2007-06-08T02:18:43.345-07:00</updated><title type='text'>can not open chm file</title><content type='html'>Hi all I faced the problem which does not show the contant of the chm files. i search though the web and found the following content. I took it from http://www.nik.com.au/archives/2005/04/06/chm-help-files-error-the-page-cannot-be-displayed/#comment-307582&lt;br /&gt;&lt;br /&gt;CHM problem&lt;br /&gt;&lt;br /&gt;I just had a very weird problem in Windows XP with CHM help files (Compiled HTML). A CHM file is the Microsoft preferred format for help files within applications, and in my case I had many books in CHM format and I was surprised that after some housekeeping that none of the CHM files in a certain directory would open, and they would give a “The page cannot be displayed�? error while showing the contents in the left-hand pane.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-weight:bold;"&gt;After some fiddling around and searching online to no avail (Microsoft identified the problem but offered no solution) I found out that the reason for the problem was because there was a hash (#) in my file path. The files that were not working were in a folder called ‘c#’ and the hash in the directory name was causing problems. The problem arises when there is a hash in any part of the directory path to the CHM file. The problems seems to arise because the hash character signifies an anchor in HTML so the CHM file is getting a bit confused as to where to look for the content.&lt;br /&gt;Share This &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-2799153898217072921?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/2799153898217072921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=2799153898217072921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/2799153898217072921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/2799153898217072921'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2007/06/can-not-open-chm-file.html' title='can not open chm file'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-115803999266957568</id><published>2006-09-11T22:46:00.000-07:00</published><updated>2006-09-11T22:49:21.280-07:00</updated><title type='text'>Oasis of Sanjaya</title><content type='html'>Hey guys check this out &lt;a href="http://www.joelonsoftware.com/" &gt;http://www.joelonsoftware.com/&lt;/a&gt;&lt;br /&gt;&lt;/BR&gt;&lt;br /&gt;&lt;a href="http://steve-yegge.blogspot.com/" &gt;http://steve-yegge.blogspot.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-115803999266957568?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/115803999266957568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=115803999266957568' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/115803999266957568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/115803999266957568'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2006/09/oasis-of-sanjaya.html' title='Oasis of Sanjaya'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-115701368571463975</id><published>2006-08-30T22:54:00.000-07:00</published><updated>2006-08-31T01:41:25.740-07:00</updated><title type='text'>org.xml.sax.SAXParseException: Premature end of file</title><content type='html'>I got this error bse the http response was empty&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-115701368571463975?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/115701368571463975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=115701368571463975' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/115701368571463975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/115701368571463975'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2006/08/orgxmlsaxsaxparseexception-premature.html' title='org.xml.sax.SAXParseException: Premature end of file'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-115700361980549950</id><published>2006-08-30T22:49:00.000-07:00</published><updated>2006-08-30T22:53:39.816-07:00</updated><title type='text'>java.net.MalformedURLException: no protocol</title><content type='html'>These days i am working with a project with http response processing. I faced with follwoing exeption when  parsing the http response via DOMParser&lt;br /&gt;java.net.MalformedURLException: no protocol&lt;br /&gt;&lt;br /&gt;my code was:&lt;br /&gt; String xml = (String) parseEnv.get(RESPONSE_BODY);&lt;br /&gt;      &lt;br /&gt;        DOMParser parser = new DOMParser();&lt;br /&gt;&lt;br /&gt;        parser.reset();&lt;br /&gt;        try {&lt;br /&gt;             parser.parse(new InputSource(xml);&lt;br /&gt;        } catch (Exception e) {&lt;br /&gt;            throw new ParseException(e);&lt;br /&gt;        }&lt;br /&gt;The error was InputSource expects an SystemId. This can be accomplished as&lt;br /&gt;parser.parse(new InputSource(new StringReader(xml)));&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-115700361980549950?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/115700361980549950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=115700361980549950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/115700361980549950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/115700361980549950'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2006/08/javanetmalformedurlexception-no.html' title='java.net.MalformedURLException: no protocol'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-111312582657861274</id><published>2005-04-10T02:37:00.000-07:00</published><updated>2006-08-30T23:06:56.756-07:00</updated><title type='text'></title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7876/1003/1600/sanjaya.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/7876/1003/320/sanjaya.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sanjaya  Helllllooooo my friends Welcome to my blog&lt;a href="http://www.hello.com/" target="ext"&gt;&lt;img src="http://photos1.blogger.com/pbh.gif" alt="Posted by Hello" style="border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="absmiddle" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-111312582657861274?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/111312582657861274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=111312582657861274' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/111312582657861274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/111312582657861274'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2005/04/sanjaya-helllllooooo-my-friends.html' title=''/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-12062482.post-111312437336609747</id><published>2005-04-10T02:10:00.000-07:00</published><updated>2005-04-10T02:38:48.476-07:00</updated><title type='text'>Brief</title><content type='html'>If we choose the correct path of our life, &lt;span style="font-family:courier new;"&gt;we can explore every avenue of it.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/12062482-111312437336609747?l=sanjayakumar.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sanjayakumar.blogspot.com/feeds/111312437336609747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=12062482&amp;postID=111312437336609747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/111312437336609747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/12062482/posts/default/111312437336609747'/><link rel='alternate' type='text/html' href='http://sanjayakumar.blogspot.com/2005/04/brief.html' title='Brief'/><author><name>sanjaya</name><uri>http://www.blogger.com/profile/16382874153307680962</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
