<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-22626958</atom:id><lastBuildDate>Fri, 13 Sep 2024 17:05:25 +0000</lastBuildDate><category>.net</category><category>webdev</category><category>asp.net</category><category>visual studio</category><category>howto</category><category>netflix</category><category>netflix prize</category><category>netflixprize</category><category>varozhka</category><category>OSS</category><category>api</category><category>c#</category><category>google</category><category>google chart</category><category>open source</category><category>vs2005</category><category>IE</category><category>JavaScript</category><category>example</category><category>ngchart</category><category>sitemap</category><category>ChangePassword</category><category>anonymous</category><category>atlas</category><category>boost</category><category>build</category><category>c++</category><category>chart</category><category>debug</category><category>flash</category><category>global.asax</category><category>installer</category><category>membership</category><category>msdn</category><category>msi</category><category>nant</category><category>setup</category><category>smtp</category><category>tool</category><category>utility</category><category>vs2003</category><category>winforms</category><category>wix</category><title>Random stuff</title><description>...moving from C++ to C#</description><link>http://sudoku-dev.blogspot.com/</link><managingEditor>noreply@blogger.com (digizzle)</managingEditor><generator>Blogger</generator><openSearch:totalResults>31</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-222287776804849794</guid><pubDate>Sun, 20 Jul 2008 12:33:00 +0000</pubDate><atom:updated>2008-07-20T08:50:35.835-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">api</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">google chart</category><category domain="http://www.blogger.com/atom/ns#">ngchart</category><category domain="http://www.blogger.com/atom/ns#">open source</category><category domain="http://www.blogger.com/atom/ns#">OSS</category><category domain="http://www.blogger.com/atom/ns#">webdev</category><title>Version 0.6 of NGChart</title><description>New version of &lt;a href=&quot;http://code.google.com/p/ngchart/&quot; title=&quot;Home of .NET wrapper for Google Chart API&quot;&gt;NGChart library&lt;/a&gt; supports QR codes.&lt;br /&gt;&lt;br /&gt;From &lt;a href=&quot;http://code.google.com/apis/chart/#qrcodes&quot; title=&quot;QR Codes overview section in the docs&quot;&gt;Google Chart API docs&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;QR Codes are a popular type of two-dimensional barcode, which are  also known as hardlinks or  physical world hyperlinks. QR Codes store text which can be a hyperlink, contact information, telephone number, even whole verses of poems!&lt;/blockquote&gt;&lt;br /&gt;This is how encoded &quot;Hello world&quot; message looks like:&lt;br /&gt;&lt;img src=&quot;http://chart.apis.google.com/chart?chs=150x150&amp;amp;cht=qr&amp;amp;chl=Hello%20world&amp;amp;choe=UTF-8&quot; alt=&quot;QR Codes sample image&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;C# code for the image:&lt;br /&gt;&lt;br /&gt;&lt;div    style=&quot;background: rgb(238, 238, 238) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;font-family:Courier New;font-size:9pt;color:black;&quot;&gt;&lt;br /&gt;&lt;p style=&quot;margin: 0px;&quot;&gt;&lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;QRCodes&lt;/span&gt; chart = &lt;span style=&quot;color:blue;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;QRCodes&lt;/span&gt;(&lt;span style=&quot;color:blue;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: rgb(43, 145, 175);&quot;&gt;ChartSize&lt;/span&gt;(150, 150), &lt;span style=&quot;color: rgb(163, 21, 21);&quot;&gt;&quot;Hello world&quot;&lt;/span&gt;);&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://sudoku-dev.blogspot.com/2008/07/version-06-of-ngchart.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-6808908307270208673</guid><pubDate>Sun, 09 Dec 2007 20:10:00 +0000</pubDate><atom:updated>2007-12-09T15:10:39.338-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">api</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">example</category><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">google chart</category><category domain="http://www.blogger.com/atom/ns#">ngchart</category><category domain="http://www.blogger.com/atom/ns#">open source</category><category domain="http://www.blogger.com/atom/ns#">OSS</category><category domain="http://www.blogger.com/atom/ns#">webdev</category><title>Updated NGChart library (.NET wrapper for Google Chart API)</title><description>&lt;p&gt;&lt;a title=&quot;Project page for NGChart&quot; href=&quot;http://code.google.com/p/ngchart/&quot; target=&quot;_blank&quot;&gt;NGChart&lt;/a&gt; was updated with the new features:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Bar charts&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;&lt;a title=&quot;How to generate a bar chart with Google Chart API with NGChart&quot; href=&quot;http://code.google.com/p/ngchart/wiki/NGChartSamples&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://chart.apis.google.com/chart?cht=bvg&amp;amp;chs=300x125&amp;amp;chd=s:UBZaz,HM85E&amp;amp;chco=1E90FF,9ACD32&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Pie charts with labels&lt;/strong&gt; &lt;/p&gt; &lt;p&gt;&lt;a title=&quot;Sample of pie chart with labels&quot; href=&quot;http://code.google.com/p/ngchart/wiki/NGChartSamples&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://chart.apis.google.com/chart?chl=DodgerBlue|Orchid|DarkSalmon&amp;amp;cht=p3&amp;amp;chs=400x150&amp;amp;chd=s:Zc1&amp;amp;chco=1E90FFFF,DA70D6FF,E9967AFF&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Chart title&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a title=&quot;How to generate a chart with title with Google Chart API with NGChart&quot; href=&quot;http://code.google.com/p/ngchart/wiki/NGChartSamples&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://chart.apis.google.com/chart?cht=lc&amp;amp;chs=200x125&amp;amp;chd=s:ABZaz09B&amp;amp;chco=1E90FF&amp;amp;chtt=Line+chart|simple+one&amp;amp;chts=808000,10&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;And the project wiki now has &lt;a title=&quot;How to generate a chart with Google Chart API with NGChart&quot; href=&quot;http://code.google.com/p/ngchart/wiki/NGChartSamples&quot; target=&quot;_blank&quot;&gt;Samples page&lt;/a&gt;. &lt;/p&gt; &lt;p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3b737b9c-c9d3-46d6-a355-134d007770e4&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;del.icio.us tags: &lt;a href=&quot;http://del.icio.us/popular/google%20chart&quot; rel=&quot;tag&quot;&gt;google chart&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/google&quot; rel=&quot;tag&quot;&gt;google&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/.net&quot; rel=&quot;tag&quot;&gt;.net&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/C#&quot; rel=&quot;tag&quot;&gt;C#&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/csharp&quot; rel=&quot;tag&quot;&gt;csharp&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/ngchart&quot; rel=&quot;tag&quot;&gt;ngchart&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/example&quot; rel=&quot;tag&quot;&gt;example&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/library&quot; rel=&quot;tag&quot;&gt;library&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/wrapper&quot; rel=&quot;tag&quot;&gt;wrapper&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/webdev&quot; rel=&quot;tag&quot;&gt;webdev&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/open%20source&quot; rel=&quot;tag&quot;&gt;open source&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/OSS&quot; rel=&quot;tag&quot;&gt;OSS&lt;/a&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3a0fc3ec-d56e-4496-8432-f2b10a8bf980&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/google%20chart&quot; rel=&quot;tag&quot;&gt;google chart&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/google&quot; rel=&quot;tag&quot;&gt;google&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/.net&quot; rel=&quot;tag&quot;&gt;.net&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/C#&quot; rel=&quot;tag&quot;&gt;C#&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/csharp&quot; rel=&quot;tag&quot;&gt;csharp&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/ngchart&quot; rel=&quot;tag&quot;&gt;ngchart&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/example&quot; rel=&quot;tag&quot;&gt;example&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/library&quot; rel=&quot;tag&quot;&gt;library&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/wrapper&quot; rel=&quot;tag&quot;&gt;wrapper&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/webdev&quot; rel=&quot;tag&quot;&gt;webdev&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/open%20source&quot; rel=&quot;tag&quot;&gt;open source&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/OSS&quot; rel=&quot;tag&quot;&gt;OSS&lt;/a&gt;&lt;/div&gt;&lt;/p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f6b44d26-e38d-4a9e-92d8-e3b652b5f093&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;IceRocket tags: &lt;a href=&quot;http://blogs.icerocket.com/search?q=google%20chart&quot; rel=&quot;tag&quot;&gt;google chart&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=google&quot; rel=&quot;tag&quot;&gt;google&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=.net&quot; rel=&quot;tag&quot;&gt;.net&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=C#&quot; rel=&quot;tag&quot;&gt;C#&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=csharp&quot; rel=&quot;tag&quot;&gt;csharp&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=ngchart&quot; rel=&quot;tag&quot;&gt;ngchart&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=example&quot; rel=&quot;tag&quot;&gt;example&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=library&quot; rel=&quot;tag&quot;&gt;library&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=wrapper&quot; rel=&quot;tag&quot;&gt;wrapper&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=webdev&quot; rel=&quot;tag&quot;&gt;webdev&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=open%20source&quot; rel=&quot;tag&quot;&gt;open source&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=OSS&quot; rel=&quot;tag&quot;&gt;OSS&lt;/a&gt;&lt;/div&gt;  </description><link>http://sudoku-dev.blogspot.com/2007/12/updated-ngchart-library-net-wrapper-for.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>19</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-2538034468405990448</guid><pubDate>Fri, 07 Dec 2007 22:50:00 +0000</pubDate><atom:updated>2007-12-07T17:50:30.599-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">api</category><category domain="http://www.blogger.com/atom/ns#">c#</category><category domain="http://www.blogger.com/atom/ns#">chart</category><category domain="http://www.blogger.com/atom/ns#">example</category><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">google chart</category><category domain="http://www.blogger.com/atom/ns#">open source</category><category domain="http://www.blogger.com/atom/ns#">OSS</category><title>.NET wrapper for Google Chart API</title><description>&lt;p&gt;As you may know, Google created a simple and easy way to dynamically generate charts to use in web projects with the new &lt;a title=&quot;Homepage of Google Chart API&quot; href=&quot;http://code.google.com/apis/chart/&quot; target=&quot;_blank&quot;&gt;Google Chart API&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I started a &lt;a title=&quot;The .NET Chart project page at the Google Code site.&quot; href=&quot;http://code.google.com/p/ngchart/&quot; target=&quot;_blank&quot;&gt;project&lt;/a&gt; to wrap the library to simplify usage of it in .NET projects.&lt;/p&gt; &lt;p&gt;As example - say, you need to visually compare two line charts:&lt;/p&gt; &lt;p class=&quot;code&quot;&gt;Chart chart = new Chart(ChartType.Line,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new ChartSize(200, 125),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new ChartData(new int[][]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new int[] { 0, 1, 25, 26, 51, 52, 61, 1 }, &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new int[] {7, 12, 60, 57, 4}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }),&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new Color[] { Color.DodgerBlue, Color.Gainsboro }); &lt;br&gt;return chart.ToString(); &lt;/p&gt; &lt;p&gt;It will generate the following url:&lt;/p&gt; &lt;p&gt;&lt;a title=&quot;Chart sample&quot; href=&quot;http://chart.apis.google.com/chart?cht=lc&amp;amp;chs=200x125&amp;amp;chd=s:ABZaz09B,HM85E&amp;amp;chco=1E90FFFF,DCDCDCFF&quot; target=&quot;_blank&quot;&gt;http://chart.apis.google.com/chart?cht=lc&amp;amp;chs=200x125&amp;amp;chd=s:ABZaz09B,HM85E&amp;amp;chco=1E90FFFF,DCDCDCFF&lt;/a&gt;&lt;/p&gt; &lt;p&gt;And the generated url shows the following chart:&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;Generated chart&quot; src=&quot;http://chart.apis.google.com/chart?cht=lc&amp;amp;chs=200x125&amp;amp;chd=s:ABZaz09B,HM85E&amp;amp;chco=1E90FFFF,DCDCDCFF&quot;&gt; &lt;/p&gt; &lt;p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;scid:0767317B-992E-4b12-91E0-4F059A8CECA8:115c4b56-f7a1-4326-af9c-d39de9189bdb&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;del.icio.us tags: &lt;a href=&quot;http://del.icio.us/popular/google%20chart&quot; rel=&quot;tag&quot;&gt;google chart&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/google&quot; rel=&quot;tag&quot;&gt;google&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/.net&quot; rel=&quot;tag&quot;&gt;.net&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/c#&quot; rel=&quot;tag&quot;&gt;c#&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/api&quot; rel=&quot;tag&quot;&gt;api&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/example&quot; rel=&quot;tag&quot;&gt;example&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/OSS&quot; rel=&quot;tag&quot;&gt;OSS&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/open%20source&quot; rel=&quot;tag&quot;&gt;open source&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/chart&quot; rel=&quot;tag&quot;&gt;chart&lt;/a&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4bda5f00-0212-4975-9fcb-fbc925475cbd&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/google%20chart&quot; rel=&quot;tag&quot;&gt;google chart&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/google&quot; rel=&quot;tag&quot;&gt;google&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/.net&quot; rel=&quot;tag&quot;&gt;.net&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/c#&quot; rel=&quot;tag&quot;&gt;c#&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/api&quot; rel=&quot;tag&quot;&gt;api&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/example&quot; rel=&quot;tag&quot;&gt;example&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/OSS&quot; rel=&quot;tag&quot;&gt;OSS&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/open%20source&quot; rel=&quot;tag&quot;&gt;open source&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/chart&quot; rel=&quot;tag&quot;&gt;chart&lt;/a&gt;&lt;/div&gt;&lt;/p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ca7ff6ad-4c33-4f5d-93f1-11dca1b7d3de&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;IceRocket tags: &lt;a href=&quot;http://blogs.icerocket.com/search?q=google%20chart&quot; rel=&quot;tag&quot;&gt;google chart&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=google&quot; rel=&quot;tag&quot;&gt;google&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=.net&quot; rel=&quot;tag&quot;&gt;.net&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=c#&quot; rel=&quot;tag&quot;&gt;c#&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=api&quot; rel=&quot;tag&quot;&gt;api&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=example&quot; rel=&quot;tag&quot;&gt;example&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=OSS&quot; rel=&quot;tag&quot;&gt;OSS&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=open%20source&quot; rel=&quot;tag&quot;&gt;open source&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=chart&quot; rel=&quot;tag&quot;&gt;chart&lt;/a&gt;&lt;/div&gt;  </description><link>http://sudoku-dev.blogspot.com/2007/12/net-wrapper-for-google-chart-api.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-2414054893905281554</guid><pubDate>Sun, 16 Sep 2007 15:41:00 +0000</pubDate><atom:updated>2007-09-16T11:41:19.276-04:00</atom:updated><title>Dell laptop and microphone problems</title><description>&lt;p&gt;Suddenly, mic stopped working in my Inspiron 6400 Dell laptop. All audio devices are from SigmaTel, and non of my actions (like, turn on Microphone boost) did not help.&lt;/p&gt; &lt;p&gt;The soluiton I found - Go to &lt;strong&gt;Control Panel&lt;/strong&gt; and Open &lt;strong&gt;SigmaTel Audio&lt;/strong&gt; applet. It contains a single checkbox &lt;strong&gt;Allow reconfiguration Pop-Ups&lt;/strong&gt;. You should check the box, and re-insert the microphone. You should see Audio System Event: &quot;The system has detected an audion device connection event.&quot; Choose &lt;strong&gt;Microphone&lt;/strong&gt; there and hit &lt;strong&gt;Ok&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:61f75158-31c4-4332-aa4d-694d57606c3a&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/vista&quot; rel=&quot;tag&quot;&gt;vista&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/microphone&quot; rel=&quot;tag&quot;&gt;microphone&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/problem&quot; rel=&quot;tag&quot;&gt;problem&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/solution&quot; rel=&quot;tag&quot;&gt;solution&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/troubleshooting&quot; rel=&quot;tag&quot;&gt;troubleshooting&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/fix&quot; rel=&quot;tag&quot;&gt;fix&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/mic&quot; rel=&quot;tag&quot;&gt;mic&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/dell&quot; rel=&quot;tag&quot;&gt;dell&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/laptop&quot; rel=&quot;tag&quot;&gt;laptop&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/sigmatel&quot; rel=&quot;tag&quot;&gt;sigmatel&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/inspiron%206400&quot; rel=&quot;tag&quot;&gt;inspiron 6400&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/audio&quot; rel=&quot;tag&quot;&gt;audio&lt;/a&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:eafe3def-0788-497c-9f24-2679c17c93d8&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;del.icio.us tags: &lt;a href=&quot;http://del.icio.us/popular/vista&quot; rel=&quot;tag&quot;&gt;vista&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/microphone&quot; rel=&quot;tag&quot;&gt;microphone&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/problem&quot; rel=&quot;tag&quot;&gt;problem&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/solution&quot; rel=&quot;tag&quot;&gt;solution&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/troubleshooting&quot; rel=&quot;tag&quot;&gt;troubleshooting&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/fix&quot; rel=&quot;tag&quot;&gt;fix&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/mic&quot; rel=&quot;tag&quot;&gt;mic&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/dell&quot; rel=&quot;tag&quot;&gt;dell&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/laptop&quot; rel=&quot;tag&quot;&gt;laptop&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/sigmatel&quot; rel=&quot;tag&quot;&gt;sigmatel&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/inspiron%206400&quot; rel=&quot;tag&quot;&gt;inspiron 6400&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/audio&quot; rel=&quot;tag&quot;&gt;audio&lt;/a&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:386cf1d2-489b-47c0-81be-9c09df8cb74f&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;IceRocket tags: &lt;a href=&quot;http://blogs.icerocket.com/search?q=vista&quot; rel=&quot;tag&quot;&gt;vista&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=microphone&quot; rel=&quot;tag&quot;&gt;microphone&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=problem&quot; rel=&quot;tag&quot;&gt;problem&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=solution&quot; rel=&quot;tag&quot;&gt;solution&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=troubleshooting&quot; rel=&quot;tag&quot;&gt;troubleshooting&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=fix&quot; rel=&quot;tag&quot;&gt;fix&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=mic&quot; rel=&quot;tag&quot;&gt;mic&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=dell&quot; rel=&quot;tag&quot;&gt;dell&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=laptop&quot; rel=&quot;tag&quot;&gt;laptop&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=sigmatel&quot; rel=&quot;tag&quot;&gt;sigmatel&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=inspiron%206400&quot; rel=&quot;tag&quot;&gt;inspiron 6400&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=audio&quot; rel=&quot;tag&quot;&gt;audio&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;</description><link>http://sudoku-dev.blogspot.com/2007/09/dell-laptop-and-microphone-problems.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-2171675205548693124</guid><pubDate>Mon, 27 Aug 2007 20:51:00 +0000</pubDate><atom:updated>2007-08-27T16:55:17.742-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">anonymous</category><category domain="http://www.blogger.com/atom/ns#">asp.net</category><category domain="http://www.blogger.com/atom/ns#">global.asax</category><category domain="http://www.blogger.com/atom/ns#">membership</category><title>Anonymous identification in ASP.NET 2.0 (nitpicking)</title><description>&lt;p&gt;MSDN page on &lt;strong&gt;HttpRequest.AnonymousID&lt;/strong&gt; says that the generated anonymous ID can be changed in &lt;strong&gt;AnonymousIdentification_OnCreate&lt;/strong&gt; handler. But in reality you should use &lt;strong&gt;AnonymousIdentification_Creating&lt;/strong&gt; handler (as it said in MSDN page on &lt;strong&gt;AnonymousIdentificationEventArgs&lt;/strong&gt; class).&lt;/p&gt;&lt;p&gt;&lt;/p&gt;</description><link>http://sudoku-dev.blogspot.com/2007/08/anonymous-identification-in-aspnet-20.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-2774100685136916395</guid><pubDate>Sat, 18 Aug 2007 10:57:00 +0000</pubDate><atom:updated>2007-08-18T06:57:20.611-04:00</atom:updated><title>System disk cleanup (part 1)</title><description>&lt;p&gt;Once a month I run out of free space at disk C: and everytime it&#39;s harder and harder to find what is safe to delete. I decided to create a list of temporary stuff which is safe to delete, and a&amp;nbsp;list of utilities I&#39;m using.&lt;/p&gt; &lt;p&gt;Before you start to delete&amp;nbsp;files - &amp;nbsp;it&#39;s a good idea to&amp;nbsp;find out first who ate all the disk space. So you&#39;ll be sure you&amp;nbsp;concentrated on the big files and folders. And get the required free disk space much faster ;)&lt;/p&gt; &lt;p&gt;Personally, I would recommend a great utility to visualise the disk usage - &lt;a title=&quot;Homepage of WinDirStat utility&quot; href=&quot;http://windirstat.info/&quot; target=&quot;_blank&quot;&gt;WinDirStat&lt;/a&gt;. It&#39;s&amp;nbsp;open source software and hosted at &lt;a title=&quot;WinDirStat development page at SourceForge.net&quot; href=&quot;http://sourceforge.net/projects/windirstat/&quot; target=&quot;_blank&quot;&gt;SourceForge.net&lt;/a&gt;, free to use, small, fast&amp;nbsp;and pretty simple - start it and select a disk drive you would like to analyze. In a minute you will have a tree of folders sorted by size. In addition it has &quot;treemap&quot; feature&amp;nbsp;which gives you visual feeling of what and how is big.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://windirstat.info/&quot; target=&quot;_new&quot; atomicselection=&quot;true&quot;&gt;&lt;img alt=&quot;Screenshot of disk space usage shown by WinDirStat &quot; src=&quot;http://aycu06.webshots.com/image/23925/2001739718232297496_rs.jpg&quot;&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Try it. I bet you&#39;ll find a lot of unused stuff.&lt;/p&gt; &lt;p&gt;This is a first part of &quot;System Disk Cleanup&quot; series. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:1ec511fa-6007-4f21-a93a-b40a7581fa97&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/disk%20cleanup&quot; rel=&quot;tag&quot;&gt;disk cleanup&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/cleanup&quot; rel=&quot;tag&quot;&gt;cleanup&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/disk%20space&quot; rel=&quot;tag&quot;&gt;disk space&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/system%20disk&quot; rel=&quot;tag&quot;&gt;system disk&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/disk%20usage&quot; rel=&quot;tag&quot;&gt;disk usage&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/windirstat&quot; rel=&quot;tag&quot;&gt;windirstat&lt;/a&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:455b4e46-8bcc-4bc8-a872-2c04769e983b&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;del.icio.us tags: &lt;a href=&quot;http://del.icio.us/popular/disk%20cleanup&quot; rel=&quot;tag&quot;&gt;disk cleanup&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/cleanup&quot; rel=&quot;tag&quot;&gt;cleanup&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/disk%20space&quot; rel=&quot;tag&quot;&gt;disk space&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/system%20disk&quot; rel=&quot;tag&quot;&gt;system disk&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/disk%20usage&quot; rel=&quot;tag&quot;&gt;disk usage&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/windirstat&quot; rel=&quot;tag&quot;&gt;windirstat&lt;/a&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:19a96c00-6dd7-4964-91cd-52ea2e8aeb7c&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;BuzzNet tags: &lt;a href=&quot;http://www.buzznet.com/tags/disk%20cleanup/&quot; rel=&quot;tag&quot;&gt;disk cleanup&lt;/a&gt;, &lt;a href=&quot;http://www.buzznet.com/tags/cleanup/&quot; rel=&quot;tag&quot;&gt;cleanup&lt;/a&gt;, &lt;a href=&quot;http://www.buzznet.com/tags/disk%20space/&quot; rel=&quot;tag&quot;&gt;disk space&lt;/a&gt;, &lt;a href=&quot;http://www.buzznet.com/tags/system%20disk/&quot; rel=&quot;tag&quot;&gt;system disk&lt;/a&gt;, &lt;a href=&quot;http://www.buzznet.com/tags/disk%20usage/&quot; rel=&quot;tag&quot;&gt;disk usage&lt;/a&gt;, &lt;a href=&quot;http://www.buzznet.com/tags/windirstat/&quot; rel=&quot;tag&quot;&gt;windirstat&lt;/a&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:0c963436-a113-4296-b7dc-61c0aa7a3f64&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;IceRocket tags: &lt;a href=&quot;http://blogs.icerocket.com/search?q=disk%20cleanup&quot; rel=&quot;tag&quot;&gt;disk cleanup&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=cleanup&quot; rel=&quot;tag&quot;&gt;cleanup&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=disk%20space&quot; rel=&quot;tag&quot;&gt;disk space&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=system%20disk&quot; rel=&quot;tag&quot;&gt;system disk&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=disk%20usage&quot; rel=&quot;tag&quot;&gt;disk usage&lt;/a&gt;, &lt;a href=&quot;http://blogs.icerocket.com/search?q=windirstat&quot; rel=&quot;tag&quot;&gt;windirstat&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;</description><link>http://sudoku-dev.blogspot.com/2007/08/system-disk-cleanup-part-1.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-3140743909481478317</guid><pubDate>Thu, 21 Jun 2007 21:17:00 +0000</pubDate><atom:updated>2007-06-21T17:30:07.248-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">asp.net</category><category domain="http://www.blogger.com/atom/ns#">ChangePassword</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">smtp</category><category domain="http://www.blogger.com/atom/ns#">webdev</category><title>Send an email by GMail from ASP.NET 2.0</title><description>&lt;p&gt;If you try to use &lt;strong&gt;&lt;a title=&quot;MSDN page about ChangePassword control&quot; href=&quot;http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.changepassword(vs.80).aspx&quot; target=&quot;_blank&quot;&gt;ChangePassword&lt;/a&gt; &lt;/strong&gt;control with GMail server in your settings, you&#39;ll probably get failed. To fix that you need to use SSL to send an email, and also - set SMTP server port to 587.&lt;/p&gt; &lt;p&gt;To use SSL add a handler to &lt;strong&gt;&lt;a title=&quot;Help page on SendingMail event&quot; href=&quot;http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.changepassword.sendingmail(VS.80).aspx&quot; target=&quot;_blank&quot;&gt;SendingMail&lt;/a&gt;&lt;/strong&gt; event of the control with the following body:&lt;/p&gt; &lt;div style=&quot;border-right: #000 1px solid; border-top: #000 1px solid; font-size: 8pt; border-left: #000 1px solid; color: black; border-bottom: #000 1px solid; font-family: courier new&quot;&gt; &lt;p style=&quot;margin: 0px&quot;&gt;&lt;span style=&quot;color: blue&quot;&gt;protected&lt;/span&gt; &lt;span style=&quot;color: blue&quot;&gt;void&lt;/span&gt; _ctrlPasswordRecovery_SendingMail(&lt;span style=&quot;color: blue&quot;&gt;object&lt;/span&gt; sender, &lt;span style=&quot;color: teal&quot;&gt;MailMessageEventArgs&lt;/span&gt; e)&lt;/p&gt; &lt;p style=&quot;margin: 0px&quot;&gt;{&lt;/p&gt; &lt;p style=&quot;margin: 0px&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green&quot;&gt;// send the same email, but with SSL enable&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0px&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal&quot;&gt;SmtpClient&lt;/span&gt; client = &lt;span style=&quot;color: blue&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: teal&quot;&gt;SmtpClient&lt;/span&gt;();&lt;/p&gt; &lt;p style=&quot;margin: 0px&quot;&gt;&amp;nbsp; &amp;nbsp; client.EnableSsl = &lt;span style=&quot;color: blue&quot;&gt;true&lt;/span&gt;;&lt;/p&gt; &lt;p style=&quot;margin: 0px&quot;&gt;&amp;nbsp; &amp;nbsp; client.Send(e.Message);&lt;/p&gt; &lt;p style=&quot;margin: 0px&quot;&gt;&amp;nbsp;&lt;/p&gt; &lt;p style=&quot;margin: 0px&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green&quot;&gt;// cancel the sending by control&lt;/span&gt;&lt;/p&gt; &lt;p style=&quot;margin: 0px&quot;&gt;&amp;nbsp; &amp;nbsp; e.Cancel = &lt;span style=&quot;color: blue&quot;&gt;true&lt;/span&gt;; &lt;/p&gt; &lt;p style=&quot;margin: 0px&quot;&gt;}&lt;/p&gt;&lt;/div&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:089b33dc-c6e8-4ee8-9601-eff5d1010de9&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;del.icio.us tags: &lt;a href=&quot;http://del.icio.us/popular/ChangePassword&quot; rel=&quot;tag&quot;&gt;ChangePassword&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/ASP.NET&quot; rel=&quot;tag&quot;&gt;ASP.NET&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/.NET&quot; rel=&quot;tag&quot;&gt;.NET&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/SendingEmail&quot; rel=&quot;tag&quot;&gt;SendingEmail&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/smtp&quot; rel=&quot;tag&quot;&gt;smtp&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/gmail&quot; rel=&quot;tag&quot;&gt;gmail&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/SSL&quot; rel=&quot;tag&quot;&gt;SSL&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/SmtpClient&quot; rel=&quot;tag&quot;&gt;SmtpClient&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/mail&quot; rel=&quot;tag&quot;&gt;mail&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/email&quot; rel=&quot;tag&quot;&gt;email&lt;/a&gt;&lt;/div&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:aa6c4703-9da3-4577-8642-f722f92fa967&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/ChangePassword&quot; rel=&quot;tag&quot;&gt;ChangePassword&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/ASP.NET&quot; rel=&quot;tag&quot;&gt;ASP.NET&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/.NET&quot; rel=&quot;tag&quot;&gt;.NET&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/SendingEmail&quot; rel=&quot;tag&quot;&gt;SendingEmail&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/smtp&quot; rel=&quot;tag&quot;&gt;smtp&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/gmail&quot; rel=&quot;tag&quot;&gt;gmail&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/SSL&quot; rel=&quot;tag&quot;&gt;SSL&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/SmtpClient&quot; rel=&quot;tag&quot;&gt;SmtpClient&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/mail&quot; rel=&quot;tag&quot;&gt;mail&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/email&quot; rel=&quot;tag&quot;&gt;email&lt;/a&gt;&lt;/div&gt;</description><link>http://sudoku-dev.blogspot.com/2007/06/send-email-by-gmail-from-aspnet-20.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-8199314728461057294</guid><pubDate>Sun, 17 Jun 2007 15:45:00 +0000</pubDate><atom:updated>2007-06-21T17:28:07.975-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">asp.net</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">visual studio</category><category domain="http://www.blogger.com/atom/ns#">vs2005</category><category domain="http://www.blogger.com/atom/ns#">webdev</category><title>Restore IntelliSense for web.config</title><description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Sometimes intellisense gets lost for web.config in VS2005.  &lt;p&gt;Seems like it happens after usage of&amp;nbsp;&quot;ASP.NET Configuration&quot; tool.&amp;nbsp;The tool&amp;nbsp;replaces &lt;strong&gt;&amp;lt;configuration&amp;gt;&lt;/strong&gt; tag with &lt;strong&gt;&amp;lt;configuration xmlns=&quot;&lt;/strong&gt;&lt;a href=&quot;http://schemas.microsoft.com/.NetConfiguration/v2.0&amp;quot;&quot;&gt;&lt;strong&gt;http://schemas.microsoft.com/.NetConfiguration/v2.0&quot;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&amp;gt;&lt;/strong&gt;, and IntelliSense is not available after that. &lt;p&gt;To fix the problem - just remove that &lt;strong&gt;xmlns=&quot;...&quot;&lt;/strong&gt; from the &lt;strong&gt;&amp;lt;configuration&amp;gt;&lt;/strong&gt; tag. And save the web.config. &lt;p&gt;&amp;nbsp; &lt;p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:3da8c124-2c35-4a9b-877f-62b6f359f1e3&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/vs2005&quot; rel=&quot;tag&quot;&gt;vs2005&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/intellisense&quot; rel=&quot;tag&quot;&gt;intellisense&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/web.config&quot; rel=&quot;tag&quot;&gt;web.config&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/problem&quot; rel=&quot;tag&quot;&gt;problem&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/fix&quot; rel=&quot;tag&quot;&gt;fix&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/asp.net%20configuration&quot; rel=&quot;tag&quot;&gt;asp.net configuration&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/configuration&quot; rel=&quot;tag&quot;&gt;configuration&lt;/a&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:0fda8ad5-b48f-4fad-9a78-444b93ac7cb9&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;del.icio.us tags: &lt;a href=&quot;http://del.icio.us/popular/vs2005&quot; rel=&quot;tag&quot;&gt;vs2005&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/intellisense&quot; rel=&quot;tag&quot;&gt;intellisense&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/web.config&quot; rel=&quot;tag&quot;&gt;web.config&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/problem&quot; rel=&quot;tag&quot;&gt;problem&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/fix&quot; rel=&quot;tag&quot;&gt;fix&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/asp.net%20configuration&quot; rel=&quot;tag&quot;&gt;asp.net configuration&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/configuration&quot; rel=&quot;tag&quot;&gt;configuration&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;</description><link>http://sudoku-dev.blogspot.com/2007/06/restore-intellisense-for-webconfig.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-992221501982058814</guid><pubDate>Sun, 10 Jun 2007 14:37:00 +0000</pubDate><atom:updated>2007-06-21T17:28:07.976-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">msdn</category><category domain="http://www.blogger.com/atom/ns#">visual studio</category><category domain="http://www.blogger.com/atom/ns#">vs2005</category><title>Fixing Visual Studio 2005 Documentation</title><description>&lt;p&gt;Documentation for .NET Framework disappeared after I installed some additional stuff to VS2005 (I guess it was after&amp;nbsp;&quot;Web Client Software Factory - January 2007&quot; installation). On hitting F1 in VS2005 usually I was getting &quot;Information Not Found&quot;.&lt;/p&gt; &lt;p&gt;After unsuccessful searches in Google I gave up and decided to try&amp;nbsp;to find the problem myself. That was funny, because I found the solution in a minute.&lt;/p&gt; &lt;p&gt;In case you have the similar problem I would suggest to try the following:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Run &lt;strong&gt;Microsoft Visual Studio 2005 Documentation&lt;/strong&gt; from Start Menu. The Document Exproler should start with the page named &lt;strong&gt;The Visual Studio&amp;nbsp;Combined Help Collection&lt;/strong&gt;.  &lt;li&gt;At the page click on &lt;strong&gt;Visual&amp;nbsp;Studio&amp;nbsp;2005&amp;nbsp;Combined&amp;nbsp;Help&amp;nbsp;Collection Manager&lt;/strong&gt; hyperlink. That should go to a page with information on all help collections installed at your machine.  &lt;li&gt;Check all collections you need and hit &lt;strong&gt;Update VSCC&lt;/strong&gt;. Close all instances of Document Explorer and VS2005. On the next start it will update indexes and you&amp;nbsp;should&amp;nbsp;get the help back.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Good luck.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:62ea5b2d-3020-4bd4-9551-6608d47775cb&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/help&quot; rel=&quot;tag&quot;&gt;help&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/msdn&quot; rel=&quot;tag&quot;&gt;msdn&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/vs2005&quot; rel=&quot;tag&quot;&gt;vs2005&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/vs&quot; rel=&quot;tag&quot;&gt;vs&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/visual%20studio&quot; rel=&quot;tag&quot;&gt;visual studio&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/index&quot; rel=&quot;tag&quot;&gt;index&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/repair&quot; rel=&quot;tag&quot;&gt;repair&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/problem&quot; rel=&quot;tag&quot;&gt;problem&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/fix&quot; rel=&quot;tag&quot;&gt;fix&lt;/a&gt;&lt;/div&gt; &lt;p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:704b83b3-966e-4512-bca9-5a04b342e343&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;del.icio.us tags: &lt;a href=&quot;http://del.icio.us/popular/help&quot; rel=&quot;tag&quot;&gt;help&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/msdn&quot; rel=&quot;tag&quot;&gt;msdn&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/vs2005&quot; rel=&quot;tag&quot;&gt;vs2005&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/vs&quot; rel=&quot;tag&quot;&gt;vs&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/visual%20studio&quot; rel=&quot;tag&quot;&gt;visual studio&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/index&quot; rel=&quot;tag&quot;&gt;index&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/repair&quot; rel=&quot;tag&quot;&gt;repair&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/problem&quot; rel=&quot;tag&quot;&gt;problem&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/fix&quot; rel=&quot;tag&quot;&gt;fix&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;</description><link>http://sudoku-dev.blogspot.com/2007/06/fixing-visual-studio-2005-documentation.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-416772061578800874</guid><pubDate>Fri, 15 Dec 2006 22:14:00 +0000</pubDate><atom:updated>2006-12-15T17:14:12.779-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">netflix</category><category domain="http://www.blogger.com/atom/ns#">netflix prize</category><category domain="http://www.blogger.com/atom/ns#">netflixprize</category><category domain="http://www.blogger.com/atom/ns#">varozhka</category><title>Varozhka: Generation of a prediction set (part 4)</title><description>&lt;p&gt;Now you should have Netflix dataset,&amp;nbsp;Varozhka and a compiled test estimator at your machine. Please, check previous posts if you don&#39;t.&lt;/p&gt; &lt;p&gt;Before you start the processing I would recommend to unload all unneccessary stuff, because importing and processing are CPU- and memory- consuming tasks.&lt;/p&gt; &lt;p&gt;1. Run &lt;strong&gt;Varozhka.UI.exe&lt;/strong&gt;. If this is a first run, it will ask you about settings:&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;Settings dialog&quot; src=&quot;http://aycu28.webshots.com/image/6027/2000568706486242939_rs.jpg&quot;&gt; &lt;/p&gt; &lt;p&gt;You should provide:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Directory with the Netflix dataset.  &lt;li&gt;Directory where prediction sets should be generated.  &lt;li&gt;Assembly with an estimator (if you followed steps from the previous post it should be&amp;nbsp;at &lt;em&gt;C:\Projects\MyEstimator\bin\Release&lt;/em&gt;).&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;2. Indexing will start automatically if settings are valid:&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;Indexing the Netflix dataset&quot; src=&quot;http://aycu26.webshots.com/image/8385/2003326063239219252_rs.jpg&quot;&gt; &lt;/p&gt; &lt;p&gt;This is a long operation... you can take a cup of coffee while it&#39;s importing. On my four years old P4 it takes around 40 minutes... a good place to optimize ;)&lt;/p&gt; &lt;p&gt;&amp;nbsp;3. The main UI will appear after the indexing is completed. Here you can check RMSE against the current estimator:&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;RMSE check in progress...&quot; src=&quot;http://aycu37.webshots.com/image/8076/2003359760517373472_rs.jpg&quot;&gt; &lt;/p&gt; &lt;p&gt;And, if results are good - generate a prediction set to submit:&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;Prediction set generation in progress...&quot; src=&quot;http://aycu24.webshots.com/image/6823/2000575319212489590_rs.jpg&quot;&gt; &lt;/p&gt; &lt;p&gt;On complete it will start &lt;a title=&quot;Submit Predictions page at Netflix Prize site&quot; href=&quot;http://www.netflixprize.com/submissions&quot;&gt;Submission&lt;/a&gt; page at Netflix Prize site, and will open Explorer window with the Output directory (you specified it in the Settings):&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;Prediction set is ready to submit&quot; src=&quot;http://aycu31.webshots.com/image/5590/2000562917381758601_rs.jpg&quot;&gt; &lt;/p&gt; &lt;p&gt;&lt;strong&gt;output.txt.gz&lt;/strong&gt; is the Prediction file, and &lt;strong&gt;md5.txt&lt;/strong&gt; contains md5 hash string.&lt;/p&gt; &lt;p&gt;To submit the generated prediction set:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Fill&amp;nbsp;up your team info.  &lt;li&gt;Choose &lt;strong&gt;output.txt.gz&lt;/strong&gt; in &lt;strong&gt;Prediction File&lt;/strong&gt; field.  &lt;li&gt;Put content of &lt;strong&gt;md5.txt&lt;/strong&gt; in &lt;strong&gt;MD5 Hash&lt;/strong&gt; field.  &lt;li&gt;Hit &lt;strong&gt;Submit&lt;/strong&gt; button.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Soon you should receive emails with submission results ;)&lt;/p&gt; &lt;p&gt;There are several things which are not implemented in the current version:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;processing cannot be stopped  &lt;li&gt;estimator cannot be reloaded, so you should quit and start the app again if you changed the estimator&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:e9612eda-fc44-424a-9433-a75bedc67260&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/netflix&quot; rel=&quot;tag&quot;&gt;netflix&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/netflixprize&quot; rel=&quot;tag&quot;&gt;netflixprize&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/netflix%20prize&quot; rel=&quot;tag&quot;&gt;netflix prize&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/varozhka&quot; rel=&quot;tag&quot;&gt;varozhka&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/DIY&quot; rel=&quot;tag&quot;&gt;DIY&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:13d71452-8ab6-49c8-be33-1e22db7b91a1&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;del.icio.us tags: &lt;a href=&quot;http://del.icio.us/popular/netflix&quot; rel=&quot;tag&quot;&gt;netflix&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/netflixprize&quot; rel=&quot;tag&quot;&gt;netflixprize&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/netflix%20prize&quot; rel=&quot;tag&quot;&gt;netflix prize&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/varozhka&quot; rel=&quot;tag&quot;&gt;varozhka&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/DIY&quot; rel=&quot;tag&quot;&gt;DIY&lt;/a&gt;&lt;/div&gt;</description><link>http://sudoku-dev.blogspot.com/2006/12/varozhka-generation-of-prediction-set.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-7952640643125820480</guid><pubDate>Fri, 15 Dec 2006 21:56:00 +0000</pubDate><atom:updated>2006-12-15T17:29:13.106-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">netflix</category><category domain="http://www.blogger.com/atom/ns#">netflix prize</category><category domain="http://www.blogger.com/atom/ns#">netflixprize</category><category domain="http://www.blogger.com/atom/ns#">varozhka</category><title>Varozhka: Creating an estimator (part 3)</title><description>&lt;h5&gt;Overview&lt;/h5&gt; &lt;p&gt;The same results can be achieved with Notepad and csc.exe from .NET Framework distribution, but I would recommend to use Visual Studio 2005 for that. I&#39;m using VS2005 Standard Edition, but I&#39;m pretty sure you can use any edition. If you don&#39;t have VS2005 installed - get your free copy of VS2005 Express Edition&amp;nbsp;at &lt;a title=&quot;Visual Studio Express homepage&quot; href=&quot;http://msdn.microsoft.com/vstudio/express/&quot;&gt;http://msdn.microsoft.com/vstudio/express/&lt;/a&gt;.&lt;/p&gt; &lt;h5&gt;Estimator creation&lt;/h5&gt; &lt;p&gt;1. Run VS2005 and create a new Class Library project. Name the project as MyEstimator, and save it (say, to &lt;em&gt;C:\Projects&lt;/em&gt;).&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;New Project dialog&quot; src=&quot;http://aycu30.webshots.com/image/7789/2003368332771690803_rs.jpg&quot;&gt; &lt;/p&gt; &lt;p&gt;2. Add references to &lt;strong&gt;Varozhka.Processing.dll&lt;/strong&gt; and &lt;strong&gt;Varozhka.TrainingData.dll&lt;/strong&gt; assemblies.&amp;nbsp;These assemblies located at the directory where you extracted the Varozhka package (&lt;em&gt;C:\Varozhka&lt;/em&gt;).&lt;/p&gt; &lt;p&gt;&lt;img alt=&quot;Add Reference dialog&quot; src=&quot;http://aycu08.webshots.com/image/6647/2000557405339156684_rs.jpg&quot;&gt; &lt;/p&gt; &lt;p&gt;3. Create a new class named as &lt;strong&gt;TestEstimator&lt;/strong&gt;. Inherit the class from &lt;strong&gt;BaseEstimator &lt;/strong&gt;class. It&#39;s an abstract class to set some constraints to descendant classes. Implement required constructor and override &lt;strong&gt;GetRating()&lt;/strong&gt; method - this is a function where you have to implement your algorithm. For now let it return some constant value, say - 3.0.&lt;/p&gt; &lt;p&gt;The TestEstimator class should look something like:&lt;/p&gt; &lt;style type=&quot;text/css&quot;&gt;&lt;br /&gt;.cf { font-family: courier new; font-size: 8pt; color: black; border: solid 1px #000; }&lt;br /&gt;.cl { margin: 0px; }&lt;br /&gt;.cln { color: #2b91af; }&lt;br /&gt;.cb1 { color: blue; }&lt;br /&gt;.cb2 { color: teal; }&lt;br /&gt;&lt;/style&gt;  &lt;div style=&quot;font-family: courier new; font-size: 8pt; color: black; border: solid 1px #000;&quot;&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System;&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; Varozhka.Processing;&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; Varozhka.TrainingData;&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4&lt;/span&gt;&amp;nbsp;&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;namespace&lt;/span&gt; MyEstimator&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;6&lt;/span&gt;&amp;nbsp;{&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;7&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: teal;&quot;&gt;TestEstimator&lt;/span&gt; : &lt;span style=&quot;color: teal;&quot;&gt;BaseEstimator&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;8&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;9&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; TestEstimator(&lt;span style=&quot;color: teal;&quot;&gt;NetflixData&lt;/span&gt; netflixData) : &lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;10&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;base&lt;/span&gt;(netflixData)&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;11&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;12&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;13&lt;/span&gt;&amp;nbsp;&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;override&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;float&lt;/span&gt; GetRating(&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; movieId, &lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; customerId, &lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal;&quot;&gt;DateTime&lt;/span&gt; date)&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; 3.0f;&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;}&lt;/div&gt; &lt;p&gt;Basically, the dumb estimator is ready, and&amp;nbsp;you can use it in estimations... but we will try to create something more complicated.&lt;/p&gt; &lt;p&gt;4. Let&#39;s create an estimator which will return average rating of the customer. We should sum up ratings of all rated movies, and divide it by number of ratings. Our estimator contains &lt;strong&gt;NetflixData&lt;/strong&gt; property, which gives access to Netflix information. In the current implementation it allows to get:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;movies&amp;nbsp;rated by user (&lt;strong&gt;GetMoviesByCustomer()&lt;/strong&gt;&amp;nbsp;method)  &lt;li&gt;customer/rating pairs for a movie (&lt;strong&gt;GetPacksByMovie()&lt;/strong&gt; method)  &lt;li&gt;customer who watched a movie (&lt;strong&gt;GetCustomersByMovie()&lt;/strong&gt; method). &lt;em&gt;This method is pretty slow in the current implementation, and I would not recommend to use it.&lt;/em&gt;  &lt;li&gt;rating of the movie&amp;nbsp;by the given customer (&lt;strong&gt;GetRating()&lt;/strong&gt; method).&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Straightforward implementation will be:&lt;/p&gt; &lt;style type=&quot;text/css&quot;&gt;&lt;br /&gt;.cf { font-family: courier new; font-size: 8pt; color: black; border: solid 1px #000; }&lt;br /&gt;.cl { margin: 0px; }&lt;br /&gt;.cln { color: #2b91af; }&lt;br /&gt;.cb1 { color: blue; }&lt;br /&gt;.cb2 { color: teal; }&lt;br /&gt;.cb3 { color: green; }&lt;br /&gt;&lt;/style&gt;  &lt;div style=&quot;font-family: courier new; font-size: 8pt; color: black; border: solid 1px #000;&quot;&gt; &lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;14&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;override&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;float&lt;/span&gt; GetRating(&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; movieId, &lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;15&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; customerId, &lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;16&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal;&quot;&gt;DateTime&lt;/span&gt; date)&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;17&lt;/span&gt;&amp;nbsp;{&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;18&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;// get all movies watched by the customer&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;19&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;short&lt;/span&gt;[] movies = NetflixData.GetMoviesByCustomer(customerId);&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;20&lt;/span&gt;&amp;nbsp;&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;21&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;// get sum of all ratings&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;22&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; sumRatings = 0;&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;23&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;foreach&lt;/span&gt; (&lt;span style=&quot;color: blue;&quot;&gt;short&lt;/span&gt; movie &lt;span style=&quot;color: blue;&quot;&gt;in&lt;/span&gt; movies)&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;24&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; {&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;25&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sumRatings += NetflixData.GetRating(movie, customerId);&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;26&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; }&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;27&lt;/span&gt;&amp;nbsp;&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;28&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;// calculate average rating&lt;/span&gt;&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;29&lt;/span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; (&lt;span style=&quot;color: blue;&quot;&gt;float&lt;/span&gt;)sumRatings / (&lt;span style=&quot;color: blue;&quot;&gt;float&lt;/span&gt;)movies.Length;&lt;br/&gt;&lt;span style=&quot;color: #2b91af;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;30&lt;/span&gt;&amp;nbsp;}&lt;/div&gt; &lt;p&gt;&amp;nbsp;This implementation has&amp;nbsp;several drawbacks. Say:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;it will give wrong results for probe set, because we should ignore rating for movie with passed movieId.  &lt;li&gt;it&#39;s a good idea to cache calculated movie ratings.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;But the purpose of the sample is to show ability of indexes, so I&#39;m ignoring these issues.&lt;/p&gt; &lt;p&gt;5. Compile the project in Release mode. Now we have working estimator, and it&#39;s ready to use in prediction generator&amp;nbsp;;)&lt;/p&gt; &lt;p&gt;Check the next post on how to generate predictions.&lt;/p&gt; &lt;p&gt;&lt;em&gt;NOTE: the project is under development, so that will obsolete some day.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:e9612eda-fc44-424a-9433-a75bedc67260&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/netflix&quot; rel=&quot;tag&quot;&gt;netflix&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/netflixprize&quot; rel=&quot;tag&quot;&gt;netflixprize&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/netflix%20prize&quot; rel=&quot;tag&quot;&gt;netflix prize&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/varozhka&quot; rel=&quot;tag&quot;&gt;varozhka&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/DIY&quot; rel=&quot;tag&quot;&gt;DIY&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:13d71452-8ab6-49c8-be33-1e22db7b91a1&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;del.icio.us tags: &lt;a href=&quot;http://del.icio.us/popular/netflix&quot; rel=&quot;tag&quot;&gt;netflix&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/netflixprize&quot; rel=&quot;tag&quot;&gt;netflixprize&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/netflix%20prize&quot; rel=&quot;tag&quot;&gt;netflix prize&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/varozhka&quot; rel=&quot;tag&quot;&gt;varozhka&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/DIY&quot; rel=&quot;tag&quot;&gt;DIY&lt;/a&gt;&lt;/div&gt;</description><link>http://sudoku-dev.blogspot.com/2006/12/varozhka-creating-estimator-part-3.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-8379586884635203629</guid><pubDate>Fri, 15 Dec 2006 20:40:00 +0000</pubDate><atom:updated>2006-12-15T15:40:33.525-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">netflix</category><category domain="http://www.blogger.com/atom/ns#">netflix prize</category><category domain="http://www.blogger.com/atom/ns#">netflixprize</category><category domain="http://www.blogger.com/atom/ns#">varozhka</category><title>Varozhka: Installation (part 2)</title><description>&lt;h5&gt;Requirements&lt;/h5&gt; &lt;ul&gt; &lt;li&gt;Processing&amp;nbsp;is very memory-consuming because the Netflix dataset is big enough. You need at least&amp;nbsp;1GB of RAM.  &lt;li&gt;~3 GB of free space at HDD. Most of it is used by Netflix dataset.  &lt;li&gt;Windows 2000/XP/2003/Vista. (checked on XP only. Please, let me know if you tried it on any other systems).  &lt;li&gt;You need to have &lt;a title=&quot;Microsoft .NET Framework Version 2.0 Redistributable Package (x86)&quot; href=&quot;http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&amp;amp;displaylang=en&quot;&gt;.NET Framework 2.0&lt;/a&gt; installed. I guess everything (except the UI) can be migrated to Mono. Did not tried that though.&lt;/li&gt;&lt;/ul&gt; &lt;h5&gt;Preparations&lt;/h5&gt; &lt;p&gt;First - &lt;a title=&quot;Official download page at Netflix Prize site&quot; href=&quot;http://www.netflixprize.com/download&quot;&gt;download&lt;/a&gt; the archive with Netflix dataset. Extract it&amp;nbsp;to some directory (say, &lt;em&gt;c:\Netflix&lt;/em&gt;). Extract archive with movies (&lt;em&gt;training_set.tar&lt;/em&gt;) to &lt;strong&gt;training_set&lt;/strong&gt; subdirectory (&lt;em&gt;c:\Netflix\training_set&lt;/em&gt; ) - this&amp;nbsp;subdir&amp;nbsp;is expected by indexer.&lt;/p&gt; &lt;h5&gt;Installation&lt;/h5&gt; &lt;ol&gt; &lt;li&gt;Download the latest version of Varozhka from &lt;a title=&quot;Downloads for Varozhka&quot; href=&quot;https://sourceforge.net/project/showfiles.php?group_id=181765&quot;&gt;SF.net&lt;/a&gt;.  &lt;li&gt;Extract it to some directory (say, &lt;em&gt;c:\Varozhka&lt;/em&gt;).&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;And now it&#39;s time to implement an estimator with your algorithm. &lt;strong&gt;Samples&lt;/strong&gt; subdirectory (&lt;em&gt;c:\Varozhka\Samples&lt;/em&gt;) contains two samples of simple estimators. You can view the code, or check walkthrough in the next post.&lt;/p&gt; &lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:e9612eda-fc44-424a-9433-a75bedc67260&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/netflix&quot; rel=&quot;tag&quot;&gt;netflix&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/netflixprize&quot; rel=&quot;tag&quot;&gt;netflixprize&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/netflix%20prize&quot; rel=&quot;tag&quot;&gt;netflix prize&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/varozhka&quot; rel=&quot;tag&quot;&gt;varozhka&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/DIY&quot; rel=&quot;tag&quot;&gt;DIY&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:13d71452-8ab6-49c8-be33-1e22db7b91a1&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;del.icio.us tags: &lt;a href=&quot;http://del.icio.us/popular/netflix&quot; rel=&quot;tag&quot;&gt;netflix&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/netflixprize&quot; rel=&quot;tag&quot;&gt;netflixprize&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/netflix%20prize&quot; rel=&quot;tag&quot;&gt;netflix prize&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/varozhka&quot; rel=&quot;tag&quot;&gt;varozhka&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/DIY&quot; rel=&quot;tag&quot;&gt;DIY&lt;/a&gt;&lt;/div&gt;</description><link>http://sudoku-dev.blogspot.com/2006/12/varozhka-installation-part-2.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-979730659459854437</guid><pubDate>Fri, 15 Dec 2006 20:08:00 +0000</pubDate><atom:updated>2006-12-15T15:08:44.351-05:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">netflix</category><category domain="http://www.blogger.com/atom/ns#">netflix prize</category><category domain="http://www.blogger.com/atom/ns#">netflixprize</category><category domain="http://www.blogger.com/atom/ns#">varozhka</category><title>Varozhka: Introduction (part 1)</title><description>&lt;p&gt;As you may know, &lt;a title=&quot;Netflix home&quot; href=&quot;http://www.netflix.com/&quot;&gt;Netflix&lt;/a&gt; organized a &lt;font color=&quot;#ff8040&quot;&gt;&lt;a title=&quot;Home of Netflix Prize&quot; href=&quot;http://www.netflixprize.com&quot;&gt;competition&lt;/a&gt;&lt;/font&gt; for systems predicting user&amp;nbsp;ratings for movies. &lt;/p&gt; &lt;p&gt;I&#39;m sure a lot of bright people have ideas on how to improve that, but do not have time to spend on it.&lt;/p&gt; &lt;p&gt;This project is a framework to&amp;nbsp;automate most&amp;nbsp;of the dirty work with the dataset.&amp;nbsp;So you can concentrate on the prediction algorithm ;)&lt;/p&gt; &lt;p&gt;Current features:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;No additional&amp;nbsp;DB engine is required. All indexes are loaded in memory.  &lt;li&gt;Abstract layer to play with data (this is a place to plug in).  &lt;li&gt;Data&amp;nbsp;access layer.  &lt;li&gt;Easy way to check RMSE against the probe set.  &lt;li&gt;Generation of submission dataset.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;So, basically you can download &lt;a title=&quot;Netflix Prize dataset&quot; href=&quot;http://www.netflixprize.com/download&quot;&gt;the Netflix dataset&lt;/a&gt;, extract it to a directory, start a wizard (which do all import tasks), implement your own rating estimator, and use a wizard to submit results to Netflix.&lt;/p&gt; &lt;p&gt;The project named Varozhka (belarusian word for &quot;fortune-teller&quot;). It hosted at &lt;a title=&quot;Project home at Google Code&quot; href=&quot;http://code.google.com/p/varozhka/&quot;&gt;Google Code&lt;/a&gt; and &lt;a title=&quot;Project home at SF.net&quot; href=&quot;http://sourceforge.net/projects/varozhka&quot;&gt;SourceForge.Net&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;This is an introductory post about the project. More details later...&lt;/p&gt; &lt;p&gt;NOTE: The project is under development, and most of the code is not optimized in any way.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:e9612eda-fc44-424a-9433-a75bedc67260&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/netflix&quot; rel=&quot;tag&quot;&gt;netflix&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/netflixprize&quot; rel=&quot;tag&quot;&gt;netflixprize&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/netflix%20prize&quot; rel=&quot;tag&quot;&gt;netflix prize&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/varozhka&quot; rel=&quot;tag&quot;&gt;varozhka&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/DIY&quot; rel=&quot;tag&quot;&gt;DIY&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class=&quot;wlWriterSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:13d71452-8ab6-49c8-be33-1e22db7b91a1&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;del.icio.us tags: &lt;a href=&quot;http://del.icio.us/popular/netflix&quot; rel=&quot;tag&quot;&gt;netflix&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/netflixprize&quot; rel=&quot;tag&quot;&gt;netflixprize&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/netflix%20prize&quot; rel=&quot;tag&quot;&gt;netflix prize&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/varozhka&quot; rel=&quot;tag&quot;&gt;varozhka&lt;/a&gt;, &lt;a href=&quot;http://del.icio.us/popular/DIY&quot; rel=&quot;tag&quot;&gt;DIY&lt;/a&gt;&lt;/div&gt;</description><link>http://sudoku-dev.blogspot.com/2006/12/varozhka-introduction-part-1.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-5978927569932011714</guid><pubDate>Wed, 25 Oct 2006 20:19:00 +0000</pubDate><atom:updated>2006-10-25T16:23:02.785-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">build</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">nant</category><title>NAnt 0.85 and active version of .NET Framework</title><description>&lt;p&gt;By default, &lt;a href=&quot;http://nant.sourceforge.net/&quot;&gt;NAnt&lt;/a&gt; 0.85 (at least, RC4 I&#39;m using) have .NET 2.0 Framework as active while running build scripts. And sometimes it&#39;s necessary to compile assembly (say, with &lt;a href=&quot;http://nant.sourceforge.net/release/latest/help/tasks/csc.html&quot;&gt;&amp;lt;csc&amp;gt; task&lt;/a&gt;) for .NET 1.1 Framework. The info on how to change active .NET Framework is in the NAnt documentation, but&amp;nbsp;some digging required to find it. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;So here is&amp;nbsp;a&amp;nbsp;solution:&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-right: black 1px solid; border-top: black 1px solid; font-size: 8pt; border-left: black 1px solid; border-bottom: black 1px solid&quot;&gt;&lt;font face=&quot;Courier New&quot;&gt;&amp;nbsp; &amp;lt;property name=&quot;nant.settings.currentframework&quot; value=&quot;net-1.1&quot; /&amp;gt;&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:28d44539-8a36-4059-a521-5c8291e5826c&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/nant&quot; rel=&quot;tag&quot;&gt;nant&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/.net&quot; rel=&quot;tag&quot;&gt;.net&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/build&quot; rel=&quot;tag&quot;&gt;build&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/howto&quot; rel=&quot;tag&quot;&gt;howto&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;</description><link>http://sudoku-dev.blogspot.com/2006/10/nant-085-and-active-version-of-net.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-8006014126355543097</guid><pubDate>Sun, 22 Oct 2006 20:19:00 +0000</pubDate><atom:updated>2006-10-22T16:21:35.596-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IE</category><category domain="http://www.blogger.com/atom/ns#">JavaScript</category><category domain="http://www.blogger.com/atom/ns#">webdev</category><title>DIV stays empty after innerHTML assignment in Internet Explorer 6.0</title><description>&lt;p&gt;I guess I&#39;m not the first one who run into it, but I did not found a solution in the google. &amp;nbsp;So here is the problem and my solution...&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;&lt;br&gt;There is an empty DIV, which is located in hidden outer DIV (&#39;display&#39; is &#39;none&#39;). On some event (say, click) - outer DIV became visible, and innerDIV.innerHTML assigned to some string. It works perfectly for FF, but in IE the inner DIV stays empty. Nevertheless, &lt;a title=&quot;Download of IE Developer Toolbar&quot; href=&quot;http://www.microsoft.com/downloads/thankyou.aspx?familyId=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;amp;displayLang=en)&quot;&gt;Internet Explorer Developer Toolbar&lt;/a&gt; shows that DIV content was changed and visible.&lt;br /&gt;&lt;p&gt;This is how it looks like in &lt;em&gt;simplified&lt;/em&gt; code:&lt;br&gt;HTML: &lt;br /&gt;&lt;div style=&quot;border-right: black 1px solid; border-top: black 1px solid; font-size: 8pt; border-left: black 1px solid; border-bottom: black 1px solid&quot;&gt;&lt;font face=&quot;Courier New&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div id=&#39;outer&#39;&amp;gt;&amp;lt;div id=&#39;inner&#39;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;JavaScript (with Prototype library 1.5.0_rc0):&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-right: black 1px solid; border-top: black 1px solid; font-size: 8pt; border-left: black 1px solid; border-bottom: black 1px solid&quot;&gt;&lt;font face=&quot;Courier New&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Element.show(&#39;outer&#39;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(&#39;inner&#39;).innerHTML = &#39;foo&#39;; &lt;/font&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;br&gt;For the inner DIV I assigned style with height:100%, and it helped.&lt;br&gt;CSS:&lt;br /&gt;&lt;div style=&quot;border-right: black 1px solid; border-top: black 1px solid; font-size: 8pt; border-left: black 1px solid; border-bottom: black 1px solid&quot;&gt;&lt;font face=&quot;Courier New&quot;&gt;#inner&lt;br&gt;{&lt;br&gt;&amp;nbsp; height: 100%;&lt;br&gt;}&lt;/font&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: Somehow I cannot reproduce the problem with some simple test, so maybe I missed something. &lt;/p&gt;&lt;br /&gt;&lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:3e7fc33b-70e8-4e63-8029-66ab75f8a5d3&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/IE&quot; rel=&quot;tag&quot;&gt;IE&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/JavaScript&quot; rel=&quot;tag&quot;&gt;JavaScript&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/webdev&quot; rel=&quot;tag&quot;&gt;webdev&lt;/a&gt;&lt;/div&gt;</description><link>http://sudoku-dev.blogspot.com/2006/10/div-stays-empty-after-innerhtml.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-8597203586663369307</guid><pubDate>Tue, 17 Oct 2006 20:15:00 +0000</pubDate><atom:updated>2006-10-17T16:23:16.564-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">installer</category><category domain="http://www.blogger.com/atom/ns#">msi</category><category domain="http://www.blogger.com/atom/ns#">setup</category><category domain="http://www.blogger.com/atom/ns#">wix</category><title>Wix 3.0: &quot;tallow.exe&quot; gone...</title><description>&lt;p&gt;I decided to try &lt;a title=&quot;Homepage of WiX project&quot; href=&quot;http://wix.sourceforge.net/&quot; target=&quot;_blank&quot;&gt;WiX&lt;/a&gt; 3.0 (&lt;a title=&quot;Build 3.0.2128.0 of WiX&quot; href=&quot;http://wix.sourceforge.net/&quot;&gt;3.0.2128.0&lt;/a&gt;) for my current project.&amp;nbsp; And here is a first issue (with help file) I run into:&lt;br /&gt;I needed to generate information about files to install. It appears that WiX 2.0 contained an utility named &quot;tallow.exe&quot; to enumerate a directory and generate WiX Fragment for it. But the installed version of WiX doesn&#39;t have the utility.&lt;br /&gt;I did some searches, but without success - everyone referencing to &quot;tallow.exe&quot;. I started to examine all executables in &lt;strong&gt;bin&lt;/strong&gt; directory, and finally found exactly what I need - &quot;heat.exe&quot; utility.&lt;br /&gt;So... it appears &quot;tallow.exe&quot; was superseded by &quot;heat.exe&quot;. Also &quot;heat.exe&quot; can generate fragments about a website, but I did not tried that one.&lt;br /&gt;Here is a command line to generate a WiX fragment with files information:&lt;/p&gt;&lt;br /&gt;&lt;div style=&quot;border-right: black 1px solid; border-top: black 1px solid; font-size: 8pt; border-left: black 1px solid; border-bottom: black 1px solid&quot;&gt;&lt;font face=&quot;Courier New&quot;&gt;C:\Program Files\Windows Installer XML v3\bin&amp;gt;heat.exe dir D:\src\bin\ -out c:\files.wxs&lt;/font&gt; &lt;/div&gt;&lt;br /&gt;I guess it will be in WiX documentation soon, but not yet...&lt;br/&gt;&lt;br /&gt;&lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;0767317B-992E-4b12-91E0-4F059A8CECA8:0ac48a98-7d94-4c89-93ff-6f622ec36337&quot; contenteditable=&quot;false&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;Technorati tags: &lt;a href=&quot;http://technorati.com/tags/wix&quot; rel=&quot;tag&quot;&gt;wix&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/installer&quot; rel=&quot;tag&quot;&gt;installer&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/msi&quot; rel=&quot;tag&quot;&gt;msi&lt;/a&gt;, &lt;a href=&quot;http://technorati.com/tags/setup&quot; rel=&quot;tag&quot;&gt;setup&lt;/a&gt;&lt;/div&gt;</description><link>http://sudoku-dev.blogspot.com/2006/10/wix-30-tallowexe-gone.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-115669942770429100</guid><pubDate>Sun, 27 Aug 2006 17:23:00 +0000</pubDate><atom:updated>2006-08-27T13:41:03.763-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">winforms</category><title>Application Settings for Windows Forms .NET 2.0</title><description>&lt;p&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/0zszyc6e.aspx&quot;&gt;Application Settings&lt;/a&gt; in .NET 2.0&amp;nbsp;allows to a&amp;nbsp;developer to concentrate on real tasks, and not re-implement settings handling for every new application.&lt;/p&gt; &lt;p&gt;I did not have any experience with Application Settings, but with help of Visual Studio (it automatically generates all required stuff), it took&amp;nbsp;five minute to add settings to an application.&lt;/p&gt; &lt;p&gt;The only problem was to get settings from previous version(s) of application. So&amp;nbsp;it was time to load MSDN and read the documentation :)&lt;/p&gt; &lt;p&gt;&lt;span id=&quot;nsrTitle&quot;&gt;&lt;strong&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/d1cddstd.aspx&quot;&gt;ApplicationSettingsBase&lt;/a&gt;&lt;/strong&gt; class has almost everything for the&amp;nbsp;task: m&lt;/span&gt;&lt;span&gt;&lt;span&gt;igration should be performed right after the settings was loaded, so it can be performed in handler of &lt;span&gt;&lt;strong&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.configuration.applicationsettingsbase.settingsloaded.aspx&quot;&gt;SettingsLoaded&lt;/a&gt;&lt;/strong&gt; event. And &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;strong&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.configuration.applicationsettingsbase.upgrade.aspx&quot;&gt;Upgrade&lt;/a&gt;&lt;/strong&gt; method allows to automatically migrate settings. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;So all you need to do is to add a special boolean setting &lt;strong&gt;IsFirstRun&lt;/strong&gt; with default value as &lt;strong&gt;true&lt;/strong&gt;, and in &lt;strong&gt;SettingsLoaded&lt;/strong&gt; handler call &lt;strong&gt;Upgrade&lt;/strong&gt; if &lt;strong&gt;IsFirstRun&lt;/strong&gt; is &lt;strong&gt;false&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;Here is a snippet from Settings.cs (it should be generated by Visual Studio):&lt;/p&gt; &lt;br /&gt;&lt;div style=&quot;border: solid black 1px; font-size: 9pt;&quot;&gt;&lt;br /&gt;internal sealed partial class Settings &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;public Settings() &lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;SettingsLoaded += new SettingsLoadedEventHandler(Settings_SettingsLoaded);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;void Settings_SettingsLoaded(object sender, SettingsLoadedEventArgs e)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;if (IsFirstRun)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Upgrade();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;IsFirstRun = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://sudoku-dev.blogspot.com/2006/08/application-settings-for-windows-forms.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-115661710041777067</guid><pubDate>Sat, 26 Aug 2006 18:31:00 +0000</pubDate><atom:updated>2006-08-26T14:31:40.433-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">asp.net</category><category domain="http://www.blogger.com/atom/ns#">sitemap</category><category domain="http://www.blogger.com/atom/ns#">tool</category><category domain="http://www.blogger.com/atom/ns#">utility</category><category domain="http://www.blogger.com/atom/ns#">webdev</category><title>Utility to convert ASP.NET sitemap to Google sitemap</title><description>&lt;p&gt;&lt;a title=&quot;Information about Google sitemaps&quot; href=&quot;http://www.google.com/webmasters/sitemaps/docs/en/about.html&quot;&gt;Google sitemaps&lt;/a&gt; is a way for webmaster to notify Google about site changes. A website created with ASP.NET 2.0 also could contain a &lt;a title=&quot;ASP.NET Site Navigation Overview&quot; href=&quot;http://msdn2.microsoft.com/en-us/library/e468hxky.aspx&quot;&gt;sitemap&lt;/a&gt; with navigation structure of the site. And, basically, both sitemaps are containing the same&amp;nbsp;urls, but in different formats. &lt;/p&gt; &lt;p&gt;I needed a tool to generate Google sitemap from ASP.NET sitemap. I searched for such utility, but did not find what I need, so I created one. The utility is open-sourced (BSD license). I registered project at both&amp;nbsp;&lt;a title=&quot;Utility hosted at Google Code&quot; href=&quot;http://code.google.com/p/sitemaps-asp2google/&quot;&gt;Google Code&lt;/a&gt;&amp;nbsp;and &lt;a title=&quot;Utility hosted at SourceForge&quot; href=&quot;http://sourceforge.net/projects/sitemap-asp2goo&quot;&gt;SourceForge&lt;/a&gt;, but Subversion hosted at&amp;nbsp; Google Code. (BTW, do you know that SF.net now allows to use third-party SVN hosting?). &lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://sourceforge.net/project/showfiles.php?group_id=174897&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;</description><link>http://sudoku-dev.blogspot.com/2006/08/utility-to-convert-aspnet-sitemap-to_26.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-115445936062259488</guid><pubDate>Tue, 01 Aug 2006 18:58:00 +0000</pubDate><atom:updated>2006-08-01T15:20:04.090-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">asp.net</category><category domain="http://www.blogger.com/atom/ns#">webdev</category><title>SelectedDate property of Calendar control (ASP.NET 2.0)</title><description>Another day, another trick...&lt;br /&gt;Spent a while in attempts to select a specific date in ASP.NET &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.calendar.aspx&quot; title=&quot;Overview of Calendar control&quot;&gt;Calendar&lt;/a&gt; control. And it appears &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.calendar.selecteddate.aspx&quot; title=&quot; Gets or sets the selected date&quot;&gt;SelectedDate&lt;/a&gt; property is ignoring assigned value if it&#39;s not a midnight of the day. &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.datetime.date.aspx&quot; title=&quot; Gets the date component&quot;&gt;Date&lt;/a&gt; property of &lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.datetime.aspx&quot;&gt;DateTime&lt;/a&gt; class is useful for that.&lt;br /&gt;&lt;br /&gt;Here is a snippet:&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;font-family:courier new;font-size:8pt;border: solid 1px black; background-color:#daeff1;&quot;&gt;_calendar.SelectedDate = DateTime.Now.&lt;b&gt;Date&lt;/b&gt;;&lt;/div&gt;</description><link>http://sudoku-dev.blogspot.com/2006/08/selecteddate-property-of-calendar.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-115437183654372767</guid><pubDate>Mon, 31 Jul 2006 18:34:00 +0000</pubDate><atom:updated>2006-07-31T14:50:36.556-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">asp.net</category><category domain="http://www.blogger.com/atom/ns#">webdev</category><title>PostBack and selection in DropDownList control (ASP.NET 2.0)</title><description>Sometimes a simple task can take plenty of time. And today I tried to use &lt;strong&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist.aspx&quot; title=&quot;DropDownList class overview&quot;&gt;DropDownList&lt;/a&gt;&lt;/strong&gt; control without ViewState (in other words - by &quot;manually&quot; populating the combobox on each page loading). By some reason, DropDownList control is not raising &lt;strong&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.selectedindexchanged.aspx&quot; title=&quot;Occurs when the index of the selected item in the drop-down control changes.&quot;&gt;SelectedIndexChanged&lt;/a&gt;&lt;/strong&gt; event if EnableViewState is False, and I&#39;m not sure how to do it properly in ASP.NET way...&lt;br /&gt;&lt;br /&gt;As workaround I used the &lt;em&gt;&lt;a href=&quot;http://www.w3.org/TR/html4/interact/forms.html#control-name&quot; title=&quot;HTML Controls&quot;&gt;control-name/value&lt;/em&gt;&lt;/a&gt; pair for the drop-down which is passed in HTTP POST parameters (when form is submitted). Control-name is &lt;strong&gt;&lt;a href=&quot;http://msdn2.microsoft.com/en-us/library/system.web.ui.control.uniqueid.aspx&quot; title=&quot;Unique identifier for the ASP.NET server control&quot;&gt;UniqueID&lt;/a&gt;&lt;/strong&gt; property of the drop-down, and the value contains the selected item.&lt;br /&gt;&lt;br /&gt;So to restore the selection I used:&lt;br /&gt;&lt;div style=&quot;font-family:courier new;font-size:8pt;border: solid 1px black; background-color:#daeff1;&quot;&gt;_combo.SelectedValue = Request[_combo.UniqueID];&lt;/div&gt;&lt;br /&gt;Let me know if you know a better solution.</description><link>http://sudoku-dev.blogspot.com/2006/07/postback-and-selection-in-dropdownlist.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-115368025917971166</guid><pubDate>Sun, 23 Jul 2006 18:38:00 +0000</pubDate><atom:updated>2006-07-23T14:44:19.190-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">boost</category><category domain="http://www.blogger.com/atom/ns#">c++</category><title>Compiling boost 1.33.1</title><description>Today I decided to update the &lt;a href=&quot;http://boost.org&quot;&gt;boost&lt;/a&gt; library on my machine. And I got a strange error in attempt to compile &lt;a href=&quot;http://boost.org/tools/build/jam_src/index.html#introduction&quot;&gt;Boost.Jam&lt;/a&gt; (bjam):&lt;br /&gt;&lt;div style=&quot;font-family:courier new;font-size:8pt;border: solid 1px black; background-color:#daeff1;&quot;&gt;G:\boost_1_33_1\tools\build\jam_src&gt;build&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;color:red;&quot;&gt;\Utilities\Bin\x86 was unexpected at this time.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The problem was solved after (temporary) removing the following path&lt;br /&gt;from PATH environment variable:&lt;br /&gt;&lt;div style=&quot;font-family:courier new;font-size:8pt;border: solid 1px black; background-color:#daeff1;&quot;&gt;H:\Program Files\Microsoft DirectX 9.0 SDK (October 2005)\Utilities\Bin\x86;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Seems like build.bat (or callee of it) do not like scopes in the PATH.</description><link>http://sudoku-dev.blogspot.com/2006/07/compiling-boost-1331.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-115256756211239605</guid><pubDate>Mon, 10 Jul 2006 21:28:00 +0000</pubDate><atom:updated>2006-07-10T17:42:12.780-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">visual studio</category><category domain="http://www.blogger.com/atom/ns#">vs2003</category><category domain="http://www.blogger.com/atom/ns#">webdev</category><title>Cleaning up web cache for Visual Studio 2003</title><description>Web cache in Visual Studio 2003 (maybe in VS2002 as well) can give you some unpleasant moments. In my case, two branches of the same project behave differently if you compile them manually, and unexpectedly similar if compiled automatically (by NAnt). The reason of the problem was a cached assembly...&lt;br /&gt;&lt;br /&gt;Visual Studio 2003 saves cached versions of your web projects in Web Cache directory. And if you are getting strange errors while opening your project, maybe it worth to clean up the cache.&lt;br /&gt;&lt;br /&gt;The cache usually located at &lt;b&gt;C:\Documents and Settings\&lt;i&gt;username&lt;/i&gt;\VSWebCache&lt;/b&gt;. The path can be customized, and stored in registry under&lt;br /&gt;&lt;b&gt;HKCU\Software\Microsoft\VisualStudio\7.1\WebProject\OfflineCacheDir&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Here is a small NAnt snippet to cleanup web cache (VSWebCache) for the current user. It takes path to the cache from the registry, and delete the whole directory for the current user.&lt;br /&gt;&lt;br /&gt;NOTE: you&#39;ll lose some of you user settings of your web projects, but automatic build will work correctly. But be sure you know what are you doing ;)&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;font-family:courier new;font-size:8pt;border: solid 1px black; background-color:#daeff1;&quot;&gt; &amp;lt;readregistry property=&quot;vs_web_cache&quot; key=&quot;Software\Microsoft\VisualStudio\7.1\WebProject\OfflineCacheDir&quot; hive=&quot;CurrentUser&quot;&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;delete dir=&quot;${path::combine(vs_web_cache, environment::get-machine-name())}&quot; failonerror=&quot;false&quot;&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://sudoku-dev.blogspot.com/2006/07/cleaning-up-web-cache-for-visual.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-115206522304398906</guid><pubDate>Wed, 05 Jul 2006 01:30:00 +0000</pubDate><atom:updated>2006-07-04T22:07:03.066-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">flash</category><category domain="http://www.blogger.com/atom/ns#">webdev</category><title>Flash player and textboxs in Firefox</title><description>&lt;h3&gt;Problem&lt;/h3&gt;&lt;br /&gt;Open a HTML page with a textbox and Flash Player in Firefox (FF1.5 and FP8.0). The textbox became locked if you hit Stop button in the Flash Player. It looks like focus is still in the text box, but it&#39;s impossible to type anything.&lt;br /&gt;The same page works fine in Internet Explorer 6.0.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Solution&lt;/h3&gt;&lt;br /&gt;It&#39;s not mine solution, I found it here &lt;a href=&quot;http://www.easterndesigner.com/forum/viewtopic.php?t=87&quot;&gt;http://www.easterndesigner.com/forum/viewtopic.php?t=87&lt;/a&gt;. The solution was for another problem, but it works for locked textboxes as well.&lt;br /&gt;&lt;br /&gt;You should set &lt;span style=&quot;font-weight: bold;&quot;&gt;wmode&lt;/span&gt; as &lt;span style=&quot;font-weight: bold;&quot;&gt;transparent&lt;/span&gt; in object&#39;s params and in attributes for &lt;span style=&quot;font-weight: bold;&quot;&gt;embed&lt;/span&gt; tag. Also &lt;span style=&quot;font-weight: bold;&quot;&gt;embed&lt;/span&gt; should be styled as &lt;span style=&quot;font-weight: bold;&quot;&gt;style=&quot;z-index:inherit&quot;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;So the final code should looks something like:&lt;br /&gt;&lt;div style=&quot;font-family:courier new;font-size:8pt;border: solid 1px black; background-color:#daeff1;&quot;&gt;&lt;br /&gt;&amp;lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot;&lt;br /&gt;&amp;nbsp;codebase=&quot;http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0&quot;&lt;br /&gt;&amp;nbsp;width=&quot;300&quot; height=&quot;200&quot; align=&quot;middle&quot; &gt;&lt;br /&gt;&amp;nbsp;&amp;lt;param name=&quot;movie&quot; value=&quot;foo.swf&quot; /&gt;&lt;br /&gt;&amp;nbsp;&amp;lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;&lt;br /&gt;&amp;nbsp;&amp;lt;param name=&quot;wmode&quot; value=&quot;transparent&quot; /&gt;&lt;br /&gt;&amp;nbsp;&amp;lt;embed src=&quot;foo.swf&quot; wmode=&quot;transparent&quot; quality=&quot;high&quot; width=&quot;300&quot; &amp;nbsp;height=&quot;200&quot; style=&quot;z-index:inherit&quot; align=&quot;middle&quot; &amp;nbsp;type=&quot;application/x-shockwave-flash&quot; &amp;nbsp;pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; /&gt;&lt;br /&gt;&amp;lt;/object&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://sudoku-dev.blogspot.com/2006/07/flash-player-and-textboxs-in-firefox.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-115031929526372341</guid><pubDate>Wed, 14 Jun 2006 21:00:00 +0000</pubDate><atom:updated>2006-06-14T17:42:47.796-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">.net</category><category domain="http://www.blogger.com/atom/ns#">asp.net</category><category domain="http://www.blogger.com/atom/ns#">atlas</category><category domain="http://www.blogger.com/atom/ns#">webdev</category><title>Atlas ASP.NET - using external web services</title><description>&lt;div&gt;&lt;br /&gt;    &lt;p&gt;&lt;em&gt;The sample created with &lt;/em&gt;&lt;a href=&quot;http://atlas.asp.net&quot; title=&quot;Atlas site&quot;&gt;&lt;em&gt;Atlas&lt;/em&gt;&lt;/a&gt;&lt;em&gt; April 2006 CTP, so the example might be obsolete someday. And remember - it&#39;s just one from several different ways to achieve the same results.&lt;/em&gt;&lt;br /&gt;     &quot;Atlas&quot; allows to access external web services, but it took for me a while to create a working application. And I decided to write a walkthrough for it. The purpose of the walkthrough is to show how to access the web service with less code as possible, so - no error checking. As a test web service I choose &lt;a href=&quot;http://www.webservicex.net/geoipservice.asmx&quot; title=&quot;WSDL of the service&quot;&gt;GeoIPService&lt;/a&gt; - it detects country by IP address.&lt;br /&gt;         You can download sources for the walkthrough &lt;a href=&quot;http://www.digizzle.com/downloads/AtlasGeo.zip&quot;&gt;here&lt;/a&gt; (6 KB). The archive doesn&#39;t contain Atlas dll, so you should add it yourself to the &lt;strong&gt;Bin&lt;/strong&gt; directory.&lt;/p&gt;&lt;br /&gt;     &lt;h1&gt;Preparation&lt;/h1&gt;In Visual Studio 2005 create a new web site using Atlas web site template:&lt;br /&gt;     &lt;center&gt;&lt;br /&gt;         &lt;img src=&quot;http://aycu20.webshots.com/image/2339/1311500324647006517_rs.jpg&quot; alt=&quot;New project with Atlas Website template&quot; /&gt; &lt;/center&gt;&lt;br /&gt; From the created project delete unnecessary stuff (&lt;em&gt;readme.txt&lt;/em&gt;, etc).&lt;br /&gt;     &lt;h1&gt;Server-side modifications&lt;/h1&gt;&lt;br /&gt;         To access an external web service: a web application is accessing its home server, and the home server is accessing the external web service. That process named &lt;em&gt;bridging&lt;/em&gt;. So let&#39;s create a bridge first.&lt;ol&gt;&lt;br /&gt;         &lt;li&gt;Generate server-side code for web service calls:&lt;br /&gt;             &lt;ol&gt;&lt;br /&gt;                 &lt;li&gt;Add &lt;strong&gt;App_Code&lt;/strong&gt; ASP.NET folder (right-click on the project in &lt;strong&gt; Solution Explorer&lt;/strong&gt;, &lt;strong&gt;Add ASP.NET folder \ App_Code&lt;/strong&gt;). &lt;/li&gt;&lt;li&gt;Launch &lt;strong&gt;VS2005 Command Prompt&lt;/strong&gt;. &lt;/li&gt;&lt;li&gt;In the console go to &lt;strong&gt;App_Code&lt;/strong&gt; folder.&lt;/li&gt;&lt;li&gt;Execute &lt;code&gt;&quot;wsdl.exe http://www.webservicex.net/geoipservice.asmx?WSDL&quot;&lt;/code&gt;.&lt;br /&gt;                     It will generated a strongly-typed proxy for the web service.&lt;center&gt; &lt;img src=&quot;http://aycu21.webshots.com/image/2500/1654288341268795420_rs.jpg&quot; alt=&quot;Console with wsdl.exe&quot; /&gt;&lt;/center&gt;&lt;br /&gt;                 &lt;/li&gt;&lt;li&gt;Add generated class (GeoIPService.cs) to the project under the &lt;strong&gt;App_Code&lt;/strong&gt; folder.&lt;/li&gt;&lt;br /&gt;            &lt;/ol&gt;&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;Add a wrapper for the generated code. The wrapper class is simple - it creates an instance of the generated GeoIPService class, and perform a call to its method:&lt;br /&gt;         &lt;div class=&quot;code&quot;&gt;&lt;code&gt;public class GeoIPWrapper&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;public GeoIP LookupIP(string ip)&lt;br /&gt;   &amp;nbsp;{&lt;br /&gt;       &amp;nbsp;GeoIPService service = new GeoIPService();&lt;br /&gt;&lt;br /&gt;               &amp;nbsp;GeoIP geoIP = service.GetGeoIP(ip);&lt;br /&gt;       &amp;nbsp;return geoIP;&lt;br /&gt;   &amp;nbsp;}&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;The wrapper is not accessible directly from javascript code. To access it a bridge should be declared. So create xml file, and save it to the root of the project as GeoService.asbx. Content of the file should be:&lt;br /&gt;         &lt;div class=&quot;code&quot;&gt;&lt;code&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;bridge namespace=&quot;AtlasTests&quot; className=&quot;GeoService&quot; &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;proxy type=&quot;GeoIPWrapper, App_Code&quot;  /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;method name=&quot;LookupIP&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;input&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;parameter name=&quot;ip&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/input&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/method&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/bridge&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;     &lt;h1&gt;Client-side modifications&lt;/h1&gt;&lt;br /&gt;         Open &lt;strong&gt;Default.aspx&lt;/strong&gt;, and switch to Source view.&lt;br /&gt;         All changes will be done in this file, but I tried to separate changes logically.&lt;br /&gt;         &lt;br/&gt;&lt;b&gt;Changes in HTML part&lt;/b&gt;&lt;br /&gt;     &lt;ol&gt;&lt;li&gt;Add a reference to the web service bridge in the ScriptManager definition.&lt;br /&gt;             &lt;div class=&quot;code&quot;&gt;&lt;code&gt;&amp;lt;atlas:ScriptManager ID=&quot;_scriptManager&quot; runat=&quot;server&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;Services&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;atlas:ServiceReference Path=&quot;~/GeoService.asbx&quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/Services&amp;gt;&lt;br /&gt;&amp;lt;/atlas:ScriptManager&amp;gt;&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Add an edit box to enter an IP address.&lt;br /&gt;             &lt;div class=&quot;code&quot;&gt;&lt;code&gt;&amp;lt;input type=&quot;text&quot; id=&quot;_boxIP&quot; /&amp;gt; &lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Add Lookup button to initiate a call to the web service from the client-side. In &lt;strong&gt;onclick&lt;/strong&gt; handler add a call to JavaScript function (the function will be defined soon).&lt;br /&gt;             &lt;div class=&quot;code&quot;&gt;&lt;code&gt;&amp;lt;input type=&quot;submit&quot; id=&quot;_btnLookup&quot; onclick=&quot;LookupIP(); return false;&quot; /&amp;gt;&lt;br /&gt;             &lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Add an empty DIV block for results.&lt;br /&gt;             &lt;div class=&quot;code&quot;&gt;&lt;code&gt;&amp;lt;div id=&quot;_results&quot;&amp;gt;&amp;lt;/div&amp;gt;             &lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;         &lt;b&gt;Changes in JavaScript part&lt;/b&gt;&lt;br /&gt;         &lt;ol&gt;&lt;br /&gt;         &lt;li&gt;Add a script section.&lt;/li&gt;&lt;li&gt;Define variables for the edit box and results placeholder:&lt;br /&gt;             &lt;div class=&quot;code&quot;&gt;&lt;code&gt;var _boxIP = new Sys.UI.TextBox($(&quot;_boxIP&quot;));&lt;br /&gt;                 var _placeholder = new Sys.UI.Label($(&quot;_results&quot;));&lt;/code&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Implement &lt;strong&gt;LookupIP()&lt;/strong&gt; function, it will make a call to the bridge. It&#39;s asynchronous call, so most parameters are callbacks.&lt;br /&gt;First parameter is a dictionary with &amp;lt;key, value&amp;gt; pairs - in our case it contains only one pair. Second parameter is a callback to receive results. Third parameter - a callback which will be called on timeout. Fourth parameter - a callback for errors. There are other parameters (&lt;code&gt;onMethodAborted, userContext, timeoutInterval, priority, useGetMethod&lt;/code&gt;), but they are ignored in this walkthrough.&lt;br /&gt;             &lt;div class=&quot;code&quot;&gt;&lt;code&gt;function LookupIP()&lt;br /&gt;{&lt;br /&gt;   &amp;nbsp;var ip = _boxIP.get_text();&lt;br /&gt;   &amp;nbsp;AtlasTests.GeoService.LookupIP({&#39;ip&#39;: ip}, OnGeoResults, OnTimeout, OnError);&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Main callback is &lt;strong&gt;OnGeoResults()&lt;/strong&gt; function. It receives an object with structure that is mirroring the structure returned by the web service.&lt;br /&gt;             &lt;div class=&quot;code&quot;&gt;&lt;code&gt;function OnGeoResults(results)&lt;br /&gt;{&lt;br /&gt;   &amp;nbsp;// if succeeded&lt;br /&gt;   &amp;nbsp;if (results.ReturnCode == 1)&lt;br /&gt;   &amp;nbsp;{&lt;br /&gt;       &amp;nbsp;&amp;nbsp;var strResult = &quot;IP: &quot; + results.IP + &quot;&amp;lt;br/&amp;gt;Country: &quot; + results.CountryName;&lt;br /&gt;   &amp;nbsp;&amp;nbsp;_placeholder.set_text(strResult);&lt;br /&gt;   &amp;nbsp;}&lt;br /&gt;   &amp;nbsp;else&lt;br /&gt;   &amp;nbsp;{&lt;br /&gt;   &amp;nbsp;&amp;nbsp;_placeholder.set_text(results.ReturnCodeDetails);&lt;br /&gt;   &amp;nbsp;}&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;                 Two other callbacks are just stubs to notify us about critical situations.&lt;br /&gt;                 &lt;div class=&quot;code&quot;&gt;&lt;code&gt;function OnTimeout(result, context)&lt;br /&gt;{&lt;br /&gt;   &amp;nbsp;alert(&quot;Timeout! &quot;  + result.get_message());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;                 function OnError(result, response, context)&lt;br /&gt;{&lt;br /&gt;   &amp;nbsp;alert(&quot;Error! &quot; + result.get_message());&lt;br /&gt;}&lt;/code&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;     &lt;h1&gt;Tests&lt;/h1&gt;&lt;br /&gt;     Now we have a web application which can call external web services. The application is simple, so tests are simple as well. :)&lt;br /&gt;         &lt;ol&gt;&lt;li&gt;Start the web application.&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;Enter some valid IP address (remember, there are no error checking).&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;And hit &lt;b&gt;Lookup&lt;/b&gt; button.&lt;br /&gt;         &lt;/li&gt;&lt;li&gt;If everything is OK you should get information about the IP address:&lt;br /&gt;     &lt;center&gt;&lt;br /&gt;         &lt;img src=&quot;http://aycu14.webshots.com/image/333/1617012099510027831_rs.jpg&quot; alt=&quot;Results of lookup of IP address&quot; style=&quot;border: 1px solid gray;&quot; /&gt;&lt;/center&gt;&lt;br /&gt;         &lt;/li&gt;&lt;br /&gt;     &lt;/ol&gt;&lt;br /&gt; &lt;/div&gt;</description><link>http://sudoku-dev.blogspot.com/2006/06/atlas-aspnet-using-external-web.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-22626958.post-114722905129757531</guid><pubDate>Wed, 10 May 2006 02:33:00 +0000</pubDate><atom:updated>2006-05-09T22:44:11.306-04:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">IE</category><category domain="http://www.blogger.com/atom/ns#">webdev</category><title>Empty table cells and Internet Explorer</title><description>Now I understand why cross-browser development is the experience mostly.&lt;br /&gt;In nonogram I needed an empty cell (TD HTML object) with fixed size, and the cell can have several different backgrounds. And I&#39;m building the table on fly with JavaScript.&lt;br /&gt;I&#39;m doing all testing in FireFox, and I was surprised after I checked the game in IE and Opera - empty cells don&#39;t have borders.&lt;br /&gt;I tried to use CSS method - &lt;span style=&quot;color: rgb(0, 0, 102);&quot;&gt;&quot;empty-cells: show;&quot;&lt;/span&gt;, it helped with Opera, but not with IE.&lt;br /&gt;I tried to put &lt;span style=&quot;color: rgb(0, 0, 102);&quot;&gt;nbsp&lt;/span&gt; in the cell - size of cell became larger than I wanted.&lt;br /&gt;I put 1x1 transparent gif in each cell, that helped, but it took around 8 seconds to load/render the table in IE (1.5 sec in FF).&lt;br /&gt;&lt;br /&gt;So the current solution is to have a small char in the cell, say &#39;.&#39;, with the same color as background of the cell. And set the cursor for cells as &lt;span style=&quot;color: rgb(0, 0, 102);&quot;&gt;&quot;cursor: default;&quot;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Loading and rendering times now are:&lt;br /&gt;3 sec in IE, 0.85 sec in FF and 0.4 sec in Opera.&lt;br /&gt;Speed is still slow, but more acceptable. Maybe it makes sense to generate the table on server side.&lt;br /&gt;&lt;br /&gt;I still not sure how it will work with older versions of browsers. :)</description><link>http://sudoku-dev.blogspot.com/2006/05/empty-table-cells-and-internet.html</link><author>noreply@blogger.com (digizzle)</author><thr:total>1</thr:total></item></channel></rss>