<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2119983323538995583</id><updated>2012-01-17T23:16:26.299-08:00</updated><category term='Ribbon'/><category term='nettiers'/><category term='c#'/><category term='Sql server'/><category term='Visual Studio'/><category term='Microsoft'/><category term='.NET2'/><category term='.Net 3.5'/><category term='UnitTests'/><category term='windows forms'/><category term='MTV'/><category term='iPod'/><category term='SharePoint'/><category term='Tools'/><category term='CruiseControl'/><category term='.net'/><category term='CodeSmith'/><category term='SQLite'/><category term='WPF'/><category term='.nettiers'/><category term='ASP.NET'/><title type='text'>Predicate&lt;T&gt;</title><subtitle type='html'>My name is John Roland, I'm the creator of the .netTiers project. On this blog you'll find tome tips about various Microsoft .NET technology: ASP.NET, Windows Forms, WPF, or the Composite UI Application Block.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>88</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-7088983219221701607</id><published>2011-12-19T07:50:00.001-08:00</published><updated>2011-12-19T07:50:05.679-08:00</updated><title type='text'>Change GridView Column HeaderText programmatically</title><content type='html'>&lt;p&gt;Actually it does not work on PreRender event, so you have to do it in the RowCreated event:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;protected void GridViewLot_RowCreated(object sender, GridViewRowEventArgs e)&lt;br&gt;&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; if (e.Row.RowType == DataControlRowType.Header)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;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; if (!string.IsNullOrEmpty(lt.CustomAttributeName1)) e.Row.Cells[5].Text = lt.CustomAttributeName1; else e.Row.GridView.Columns[5].Visible = false;&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; }&lt;/p&gt; &lt;p&gt;}&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-7088983219221701607?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/7088983219221701607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=7088983219221701607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7088983219221701607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7088983219221701607'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2011/12/change-gridview-column-headertext.html' title='Change GridView Column HeaderText programmatically'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-697005292525957130</id><published>2010-12-15T07:28:00.001-08:00</published><updated>2010-12-15T07:28:05.545-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sql server'/><title type='text'>Native MD5 in SQLServer</title><content type='html'>&lt;p&gt;Starting from SQL Server 2005, you can now compute some hash in your sql queries or stored procedures:&lt;/p&gt;&lt;pre&gt;&lt;br&gt;&lt;br /&gt;HashBytes ( '&amp;lt;algorithm&amp;gt;', { @input | 'input' } )&lt;br /&gt;&amp;lt;algorithm&amp;gt;::= MD2 | MD4 | MD5 | SHA | SHA1&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;Example&lt;/pre&gt;&lt;pre&gt;DECLARE @HashThis nvarchar(4000);&lt;br /&gt;SELECT @HashThis = CONVERT(nvarchar(4000),'dslfdkjLK85kldhnv$n000#knf');&lt;br /&gt;SELECT HashBytes('SHA1', @HashThis);&lt;br /&gt;GO&lt;/pre&gt;&lt;pre&gt;source: &lt;/pre&gt;&lt;pre&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms174415.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms174415.aspx&lt;/a&gt;&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-697005292525957130?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/697005292525957130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=697005292525957130' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/697005292525957130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/697005292525957130'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2010/12/native-md5-in-sqlserver.html' title='Native MD5 in SQLServer'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-1214016888960248608</id><published>2010-08-14T02:34:00.001-07:00</published><updated>2010-08-14T02:36:54.964-07:00</updated><title type='text'>TotalRecall Google Chrome Extension 1.02 Fix</title><content type='html'>&lt;p&gt;TotalRecall is a cool google Chrome extension that allow you to save the content of online forms, it’s very usefull for developper :-)&lt;/p&gt; &lt;p&gt;Sadly the extension is not working anymore with the latest google chrome release. After some investigation, I’ve found that it fail because of a breaking change in google Chrome database API…&lt;/p&gt; &lt;p&gt;In the background html, I’ve made the following changes – in bold :&lt;/p&gt;&lt;pre&gt;&lt;p&gt;  db:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null,&lt;br&gt;&amp;nbsp; dbName:&amp;nbsp;&amp;nbsp;&amp;nbsp; "totalrecall",&lt;br&gt;&amp;nbsp; dbVersion: '2.0', &lt;br /&gt;&lt;p&gt;&amp;nbsp; // this creates the database if it doesn't already exist&lt;br&gt;&amp;nbsp; databaseConnect: function()&lt;br&gt;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bgNs.db = openDatabase(bgNs.dbName, bgNs.dbVersion,&lt;strong&gt; 'Forms database', 1024*1024*3&lt;/strong&gt;);&lt;br&gt;&amp;nbsp; },&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br&gt;I've repack the extension with the fix: here you can &lt;a href="https://docs.google.com/leaf?id=0B5Sm3keSJODyODQwMTExMGQtZWJkYi00ODFlLTllNjctZDE1YTc5ZTIyNmRl&amp;amp;hl=en&amp;amp;authkey=CNP8y_wB"&gt;download&lt;/a&gt;. &lt;br /&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-1214016888960248608?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/1214016888960248608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=1214016888960248608' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/1214016888960248608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/1214016888960248608'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2010/08/totalrecall-google-chrome-extension-102.html' title='TotalRecall Google Chrome Extension 1.02 Fix'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-7392352289959984042</id><published>2010-08-12T03:21:00.001-07:00</published><updated>2010-08-12T03:21:20.228-07:00</updated><title type='text'>SQL – Get the list of columns of a table</title><content type='html'>&lt;p&gt;This can be done by querying the system tables of SQLServer&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;SELECT   &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: lime"&gt;SysObjects&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[Name] &lt;/span&gt;&lt;span style="color: blue"&gt;as &lt;/span&gt;&lt;span style="color: teal"&gt;TableName&lt;/span&gt;&lt;span style="color: gray"&gt;,   &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: lime"&gt;SysColumns&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[Name] &lt;/span&gt;&lt;span style="color: blue"&gt;as &lt;/span&gt;&lt;span style="color: teal"&gt;ColumnName&lt;/span&gt;&lt;span style="color: gray"&gt;,   &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: lime"&gt;SysTypes&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[Name] &lt;/span&gt;&lt;span style="color: blue"&gt;As &lt;/span&gt;&lt;span style="color: teal"&gt;DataType&lt;/span&gt;&lt;span style="color: gray"&gt;,   &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: lime"&gt;SysColumns&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[Length] &lt;/span&gt;&lt;span style="color: blue"&gt;As Length   &lt;br /&gt;FROM   &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: lime"&gt;SysObjects &lt;/span&gt;&lt;span style="color: gray"&gt;INNER JOIN &lt;/span&gt;&lt;span style="color: lime"&gt;SysColumns   &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;ON &lt;/span&gt;&lt;span style="color: lime"&gt;SysObjects&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[Id] &lt;/span&gt;&lt;span style="color: gray"&gt;= &lt;/span&gt;&lt;span style="color: lime"&gt;SysColumns&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[Id]   &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: gray"&gt;INNER JOIN &lt;/span&gt;&lt;span style="color: lime"&gt;SysTypes  &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;ON &lt;/span&gt;&lt;span style="color: lime"&gt;SysTypes&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[xtype] &lt;/span&gt;&lt;span style="color: gray"&gt;= &lt;/span&gt;&lt;span style="color: lime"&gt;SysColumns&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[xtype]  &lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;WHERE  &lt;/span&gt;&lt;span style="color: lime"&gt;SysObjects&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[type] &lt;/span&gt;&lt;span style="color: gray"&gt;= &lt;/span&gt;&lt;span style="color: red"&gt;'U'  &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;and &lt;/span&gt;&lt;span style="color: lime"&gt;SysColumns&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[Name] &lt;/span&gt;&lt;span style="color: gray"&gt;like &lt;/span&gt;&lt;span style="color: red"&gt;'%mytable%'&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;ORDER BY  &lt;/span&gt;&lt;span style="color: lime"&gt;SysObjects&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[Name]&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-7392352289959984042?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/7392352289959984042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=7392352289959984042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7392352289959984042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7392352289959984042'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2010/08/sql-get-list-of-columns-of-table.html' title='SQL – Get the list of columns of a table'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-5457300692677820469</id><published>2010-08-12T03:19:00.001-07:00</published><updated>2010-08-12T03:19:12.480-07:00</updated><title type='text'>SQL Server: how to find view or stored procedure with specific text</title><content type='html'>&lt;p&gt;You can query the system tables:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;SELECT &lt;/span&gt;&lt;span style="color: teal"&gt;[name]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;FROM &lt;/span&gt;&lt;span style="color: teal"&gt;[dbo]&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[sysobjects] obj&lt;br /&gt;&lt;/span&gt;&lt;span style="color: gray"&gt;INNER JOIN &lt;/span&gt;&lt;span style="color: teal"&gt;[dbo]&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[syscomments] cmt&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;ON &lt;/span&gt;&lt;span style="color: teal"&gt;obj&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[id] &lt;/span&gt;&lt;span style="color: gray"&gt;= &lt;/span&gt;&lt;span style="color: teal"&gt;cmt&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[id]&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;where &lt;/span&gt;&lt;span style="color: teal"&gt;cmt&lt;/span&gt;&lt;span style="color: gray"&gt;.&lt;/span&gt;&lt;span style="color: teal"&gt;[text] &lt;/span&gt;&lt;span style="color: gray"&gt;like &lt;/span&gt;&lt;span style="color: red"&gt;'%my text%'&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-5457300692677820469?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/5457300692677820469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=5457300692677820469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/5457300692677820469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/5457300692677820469'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2010/08/sql-server-how-to-find-view-or-stored.html' title='SQL Server: how to find view or stored procedure with specific text'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-2913772677206044252</id><published>2010-08-08T11:17:00.001-07:00</published><updated>2010-08-08T11:17:13.169-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET2'/><title type='text'>How to get database list in c#</title><content type='html'>&lt;p&gt;It can be done easily with the GetSchema method on a SqlConnection instance:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;protected string &lt;/span&gt;ServerConnectionString&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: blue"&gt;get&lt;br /&gt;            &lt;/span&gt;{&lt;br /&gt;                &lt;span style="color: blue"&gt;return &lt;/span&gt;&lt;span style="color: #a31515"&gt;"Data Source=(local)\\SQLEXPRESS;;Integrated Security=SSPI;"&lt;/span&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;protected string&lt;/span&gt;[] GetDatabaseList()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; databases = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;();&lt;br /&gt;            &lt;span style="color: blue"&gt;using &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;SqlConnection &lt;/span&gt;sqlConx = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SqlConnection&lt;/span&gt;(ServerConnectionString))&lt;br /&gt;            {&lt;br /&gt;                sqlConx.Open();&lt;br /&gt;                &lt;span style="color: #2b91af"&gt;DataTable &lt;/span&gt;tblDatabases = sqlConx.GetSchema(&lt;span style="color: #a31515"&gt;"Databases"&lt;/span&gt;);&lt;br /&gt;                sqlConx.Close();&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: blue"&gt;foreach &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;DataRow &lt;/span&gt;row &lt;span style="color: blue"&gt;in &lt;/span&gt;tblDatabases.Rows)&lt;br /&gt;                {&lt;br /&gt;                    databases.Add(row[&lt;span style="color: #a31515"&gt;"database_name"&lt;/span&gt;].ToString());&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: blue"&gt;return &lt;/span&gt;databases.ToArray();&lt;br /&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Here is a post of David Hayden detailing all the possibility of database reflection exposed by this method:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://www.davidhayden.com/blog/dave/archive/2006/01/15/2734.aspx"&gt;http://www.davidhayden.com/blog/dave/archive/2006/01/15/2734.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-2913772677206044252?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/2913772677206044252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=2913772677206044252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2913772677206044252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2913772677206044252'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2010/08/how-to-get-database-list-in-c.html' title='How to get database list in c#'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-8566120238161644700</id><published>2009-12-06T08:35:00.001-08:00</published><updated>2009-12-06T08:35:37.489-08:00</updated><title type='text'>Generating DAL using CodeSmith and .Nettiers (step by step)</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here is a good step by step tutorial to start with .NetTiers.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://fci-h.blogspot.com/2009/11/generating-dal-using-codesmith-and.html"&gt;http://fci-h.blogspot.com/2009/11/generating-dal-using-codesmith-and.html&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-8566120238161644700?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/8566120238161644700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=8566120238161644700' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8566120238161644700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8566120238161644700'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/12/generating-dal-using-codesmith-and.html' title='Generating DAL using CodeSmith and .Nettiers (step by step)'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-7525837980367474534</id><published>2009-09-18T06:22:00.001-07:00</published><updated>2009-09-18T06:22:29.773-07:00</updated><title type='text'>The workstation driver is not installed - webDAV</title><content type='html'>&lt;p&gt;From: &lt;a href="http://blogs.msdn.com/carloshm/archive/2008/04/07/webdav-the-workstation-driver-is-not-installed.aspx"&gt;http://blogs.msdn.com/carloshm/archive/2008/04/07/webdav-the-workstation-driver-is-not-installed.aspx&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Did you ever receive this message when trying to access WebDav - MOSS through command prompt?&lt;/p&gt;    &lt;p&gt;Due to a bug in Windows Server 2003, you will need to restart WebClient redirector service and then start webclient service.&lt;/p&gt;    &lt;p&gt;NET STOP MRXDAV&lt;/p&gt;    &lt;p&gt;NET START WEBCLIENT&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-7525837980367474534?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/7525837980367474534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=7525837980367474534' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7525837980367474534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7525837980367474534'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/09/workstation-driver-is-not-installed.html' title='The workstation driver is not installed - webDAV'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-7515048416830337303</id><published>2009-09-18T02:38:00.001-07:00</published><updated>2009-09-18T02:38:31.521-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><title type='text'>Download Microsoft Web Application Stress Tool Setup.exe</title><content type='html'>&lt;p&gt;Lately, Microsoft has removed its download page of “Web Application Stress Tool” (WAS) : –(.   &lt;br /&gt;Although it’s a (very) old tool, I still find it very convenient to run simple load tests: easy too use, simple report, efficient !    &lt;br /&gt;So I’ve decided to make it available for download: &lt;a href="http://www.box.net/shared/trbhb7tzdy" target="_blank"&gt;WAS Setup.exe&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.csdn.net/Comman1999/archive/2007/12/12/1930711.aspx" target="_blank"&gt;here you can find a tutorial about Web application Stress Tool&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-7515048416830337303?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/7515048416830337303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=7515048416830337303' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7515048416830337303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7515048416830337303'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/09/download-microsoft-web-application.html' title='Download Microsoft Web Application Stress Tool Setup.exe'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-2538099462480760055</id><published>2009-09-08T02:42:00.001-07:00</published><updated>2009-09-08T02:42:40.965-07:00</updated><title type='text'>Free Http sniffer and Viewer</title><content type='html'>&lt;p&gt;HttpSpy is a very good replacement for HTTP Analyzer.   &lt;br /&gt;It list every http request, with headers, response, status code, etc.&lt;/p&gt;  &lt;p&gt;The software is free for personal use, and is developped in .NET !!!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.devolutions.net/products/HttpSpy.aspx" target="_blank"&gt;Publisher website&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.devolutions.net/download/Devolutions.HttpSpy.Bin.4.1.0.0.zip" target="_blank"&gt;Download HttpSpy.exe here&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-2538099462480760055?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/2538099462480760055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=2538099462480760055' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2538099462480760055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2538099462480760055'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/09/free-http-sniffer-and-viewer.html' title='Free Http sniffer and Viewer'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-2165480076839390918</id><published>2009-09-07T05:48:00.001-07:00</published><updated>2009-09-07T05:48:04.948-07:00</updated><title type='text'>Novell NetDrive.exe 4.0 download</title><content type='html'>&lt;p&gt;This is the original freeware tool from Novell, that allows us to map a webdav or ftp server as a new drive.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.box.net/shared/nrcukmu8iv" target="_blank"&gt;Download NetDrive.exe&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-2165480076839390918?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/2165480076839390918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=2165480076839390918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2165480076839390918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2165480076839390918'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/09/novell-netdriveexe-40-download.html' title='Novell NetDrive.exe 4.0 download'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-6484661944027510195</id><published>2009-09-01T08:09:00.001-07:00</published><updated>2009-09-01T08:10:44.455-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Visual studio : How to quickly attach asp.net process</title><content type='html'>&lt;p&gt;I do this by creating the following macro:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Sub AttachToAspNET()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Try      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim dbg2 As EnvDTE80.Debugger2 = DTE.Debugger      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim trans As EnvDTE80.Transport = dbg2.Transports.Item(&amp;quot;Default&amp;quot;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim compName As String = WindowsIdentity.GetCurrent().Name      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; compName = compName.Substring(0, compName.IndexOf(&amp;quot;\&amp;quot;))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim proc2 As EnvDTE80.Process2 = dbg2.GetProcesses(trans, compName).Item(&amp;quot;w3wp.exe&amp;quot;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; proc2.Attach() '(dbg2)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Catch ex As System.Exception      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MsgBox(ex.Message)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End Try      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; End Sub&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Then I assign a keyboard shortcut (CTRL+ALT+K) to it via the “Tools\Option\Keyboard” menu.&lt;/p&gt;  &lt;p&gt;You can find a more complete explanation here, but its code is not working:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.lavablast.com/post/2008/01/Attach-to-Process-with-one-shortcut.aspx"&gt;http://blog.lavablast.com/post/2008/01/Attach-to-Process-with-one-shortcut.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-6484661944027510195?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/6484661944027510195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=6484661944027510195' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6484661944027510195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6484661944027510195'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/09/visual-studio-quickcly-to-attach-aspnet.html' title='Visual studio : How to quickly attach asp.net process'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-8323335282184792569</id><published>2009-06-09T05:22:00.000-07:00</published><updated>2009-06-09T05:26:37.487-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UnitTests'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>nUnit reports no TestFixtures on a network share</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:'Times New Roman';"&gt;nUnit just detects no tests, with no error message at all !!!&lt;/span&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Times New Roman';"&gt;actually if your assembly in on a network share, you need to "trust" this share, with the caspol.exe command line.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Times New Roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Times New Roman';"&gt;Here is the one i've used:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Times New Roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51); font-family: Verdana; font-size: 11px; line-height: 14px; "&gt;CasPol.exe -m -ag 1.2 -url file://z:\trunk\* FullTrust&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"    style="font-family:Verdana;font-size:100%;color:#333333;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; line-height: 14px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"    style="font-family:Verdana;font-size:100%;color:#333333;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; line-height: 14px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"    style="font-family:Verdana;font-size:100%;color:#333333;"&gt;&lt;span class="Apple-style-span" style="font-size: 11px; line-height: 14px;"&gt;I've also tested it successfully under a virtual machine.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-8323335282184792569?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/8323335282184792569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=8323335282184792569' title='166 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8323335282184792569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8323335282184792569'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/06/nunit-reports-no-testfixtures-on.html' title='nUnit reports no TestFixtures on a network share'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>166</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-1993510262916567158</id><published>2009-06-09T00:46:00.000-07:00</published><updated>2009-06-09T00:59:22.189-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UnitTests'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Generate a random string</title><content type='html'>I always need that method in my unit tests !&lt;div&gt;There is several implementation around, but here is an interesting one, based upon temporary filename creation:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: verdana; font-size: 14px; line-height: 20px; "&gt;&lt;pre style="font-size: 13px; margin-top: 0px; margin-right: 10px; margin-bottom: 12px; margin-left: 10px; padding-top: 6px; padding-right: 0px; padding-bottom: 6px; padding-left: 0px; line-height: normal; "&gt;&lt;i style="color: green; font-style: normal; "&gt;    /// &lt;summary&gt;     /// Get random string of 11 characters.     /// &lt;/summary&gt;     /// &lt;returns&gt;Random string.&lt;/returns&gt;&lt;/i&gt;     public static string &lt;b style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(176, 224, 230); background-position: initial initial; "&gt;&lt;u&gt;GetRandomString&lt;/u&gt;&lt;/b&gt;()     {         string path = &lt;span style="background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: yellow; background-position: initial initial; "&gt;Path.GetRandomFileName();&lt;/span&gt;         path = path.Replace(".", ""); &lt;i style="color: green; font-style: normal; "&gt;// Remove period.&lt;/i&gt;         return path;     }&lt;/pre&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Original article here:&lt;/div&gt;&lt;div&gt;&lt;a href="http://dotnetperls.com/Content/Random-String.aspx"&gt;http://dotnetperls.com/Content/Random-String.aspx&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-1993510262916567158?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/1993510262916567158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=1993510262916567158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/1993510262916567158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/1993510262916567158'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/06/generate-random-string.html' title='Generate a random string'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-3636391749492173720</id><published>2009-05-04T00:30:00.001-07:00</published><updated>2009-05-04T00:32:00.008-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net 3.5'/><title type='text'>Create a RSS feed natively with .NET 3.5 and C#</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;With the introduction of the &lt;font color="#0080c0"&gt;System.ServiceModel.Syndication&lt;/font&gt; namespace, the 3.5 .Net framework allow us to read (it was talked in a previous post) and write RSS feed with a strongly typed API.&lt;/p&gt;  &lt;p&gt;Here is a code snippet that show how to create an HttpHandler that render an RSS feed:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@ &lt;/span&gt;&lt;span style="color: #a31515"&gt;WebHandler &lt;/span&gt;&lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;C#&amp;quot; &lt;/span&gt;&lt;span style="color: red"&gt;Class&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;RssHandler&amp;quot; &lt;/span&gt;&lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Globalization;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System.ServiceModel.Syndication;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;RssHandler &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;IHttpHandler &lt;/span&gt;{&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: blue"&gt;public void &lt;/span&gt;ProcessRequest (&lt;span style="color: #2b91af"&gt;HttpContext &lt;/span&gt;context) {&lt;br /&gt;        context.Response.ContentType = &lt;span style="color: #a31515"&gt;&amp;quot;text/xml&amp;quot;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #2b91af"&gt;SyndicationFeed &lt;/span&gt;myFeed = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SyndicationFeed&lt;/span&gt;();&lt;br /&gt;        myFeed.Title = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TextSyndicationContent&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;My Feed&amp;quot;&lt;/span&gt;);&lt;br /&gt;        myFeed.Description = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TextSyndicationContent&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;My feed Description&amp;quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;        myFeed.Copyright = &lt;span style="color: #2b91af"&gt;TextSyndicationContent&lt;/span&gt;.CreatePlaintextContent(&lt;span style="color: #a31515"&gt;&amp;quot;Copyright jroland&amp;quot;&lt;/span&gt;);&lt;br /&gt;        myFeed.Language = &lt;span style="color: #2b91af"&gt;CultureInfo&lt;/span&gt;.CurrentCulture.Name;&lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;SyndicationItem&lt;/span&gt;&amp;gt; feedItems = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;SyndicationItem&lt;/span&gt;&amp;gt;();&lt;br /&gt;        &lt;span style="color: blue"&gt;for &lt;/span&gt;(&lt;span style="color: blue"&gt;int &lt;/span&gt;i = 0; i &amp;lt; 10; i++)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #2b91af"&gt;SyndicationItem &lt;/span&gt;item = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SyndicationItem&lt;/span&gt;();&lt;br /&gt;            item.Title = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TextSyndicationContent&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Title &amp;quot; &lt;/span&gt;+ i);&lt;br /&gt;            item.Summary = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TextSyndicationContent&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Summary &amp;quot; &lt;/span&gt;+ i);&lt;br /&gt;            item.PublishDate = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DateTimeOffset&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Now);&lt;br /&gt;            &lt;br /&gt;            &lt;span style="color: #2b91af"&gt;SyndicationPerson &lt;/span&gt;authInfo = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SyndicationPerson&lt;/span&gt;();&lt;br /&gt;            authInfo.Name = &lt;span style="color: #a31515"&gt;&amp;quot;John Roland&amp;quot;&lt;/span&gt;;&lt;br /&gt;            item.Authors.Add(authInfo);&lt;br /&gt;            &lt;br /&gt;            feedItems.Add(item);&lt;br /&gt;        }&lt;br /&gt;        myFeed.Items = feedItems;        &lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;        System.Xml.&lt;span style="color: #2b91af"&gt;XmlWriter &lt;/span&gt;writer = System.Xml.&lt;span style="color: #2b91af"&gt;XmlWriter&lt;/span&gt;.Create(context.Response.Output);&lt;br /&gt;        myFeed.SaveAsRss20(writer);&lt;br /&gt;        writer.Close();&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    &lt;span style="color: blue"&gt;public bool &lt;/span&gt;IsReusable {&lt;br /&gt;        &lt;span style="color: blue"&gt;get &lt;/span&gt;{&lt;br /&gt;            &lt;span style="color: blue"&gt;return false&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-3636391749492173720?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/3636391749492173720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=3636391749492173720' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/3636391749492173720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/3636391749492173720'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/05/create-rss-feed-natively-with-net-35.html' title='Create a RSS feed natively with .NET 3.5 and C#'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-1748715832201037006</id><published>2009-04-29T04:51:00.001-07:00</published><updated>2009-04-29T04:51:04.668-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><title type='text'>Taskbar on a second monitor – Free multi monitor TaskBar</title><content type='html'>&lt;p&gt;   &lt;br /&gt;Windows XP and Vista support multi monitor nicely, but the TaskBar is only available on one monitor only :-(.&lt;/p&gt;  &lt;p&gt;Ultramon is a well known alternative, but cost money.&lt;/p&gt;  &lt;p&gt;Alternatively you can use the free version “&lt;b&gt;&lt;a href="http://www.mediachance.com/free/multimon.htm" target="_blank"&gt;MultiMonitor TaskBar&lt;/a&gt;&lt;/b&gt;” edited by MediaChance.    &lt;br /&gt;It display a second taskbar with icons of the application opened on that monitor.&lt;/p&gt;  &lt;p&gt;Download it &lt;a href="http://www.mediachance.com/free/mmtaskbar21.exe" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-1748715832201037006?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/1748715832201037006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=1748715832201037006' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/1748715832201037006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/1748715832201037006'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/04/taskbar-on-second-monitor-free-multi.html' title='Taskbar on a second monitor – Free multi monitor TaskBar'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-2964666809594031379</id><published>2009-04-24T07:25:00.000-07:00</published><updated>2009-04-24T07:26:33.198-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><title type='text'>Sharepoint WSS 3.0 Service Pack 2</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h5&gt;Service Pack 2 for Microsoft Office SharePoint Server 2007 and Windows SharePoint Services 3.0 due to ship April 28th&lt;/h5&gt;  &lt;p&gt;Office Service Pack team &lt;a href="http://blogs.technet.com/office_sustained_engineering/archive/2009/04/16/service-pack-2-for-the-2007-microsoft-office-system-due-to-ship-april-28th.aspx"&gt;announced Service Pack 2 for Microsoft Office SharePoint Server 2007 and Windows SharePoint Services 3.0 would be available on April 28th.&lt;/a&gt; It provides many fixes and performance improvements, as well as some new features. Also with the new service pack, Internet Explorer 8 will be added into browser support matrix as level one, and Firefox 2.0 and 3.0 as level two. We recommend every customer to start planning their patch window to apply this service pack. Please look out for more details on April 28&lt;sup&gt;th&lt;/sup&gt;. &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt; &lt;fieldset style="padding-bottom: 8px; padding-left: 8px; padding-right: 8px; padding-top: 8px"&gt;&lt;legend&gt;for french readers &lt;/legend&gt;La date de disponibilité du SP2 de MOSS 2007 et WSS 3.0 a été annoncée: cela sera le 28 Avril! Ce SP fournit de nombreux correctifs et améliorations de performances, ainsi que de nouvelles fonctionnalités. Le SP2 sera un pré-requis pour la mise à jour en version 2010 de SharePoint, il est donc recommandé de prévoir d’ores et déjà son application! Microsoft SharePoint Team Blog : Service Pack 2 for Microsoft Office SharePoint Server 2007 and Windows SharePoint Services 3.0 due to ship April 28th &lt;/fieldset&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-2964666809594031379?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/2964666809594031379/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=2964666809594031379' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2964666809594031379'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2964666809594031379'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/04/sharepoint-wss-30-service-pack-2.html' title='Sharepoint WSS 3.0 Service Pack 2'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-6108798542761625272</id><published>2009-04-20T06:32:00.001-07:00</published><updated>2009-04-20T06:32:06.195-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net 3.5'/><title type='text'>Snippet Compiler – write and test c# code without saving</title><content type='html'>&lt;p&gt;   &lt;br /&gt;If you’re like me, you’re creating a lot of small console application to test some idea or even to just try a library or API. Snippet Compiler is a small tool that lets you quickly test small apps without having to save the code.     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_6PGvPTc1ZFU/Sex5Ptyyj-I/AAAAAAAAAJM/o8yiW4HxvMw/s1600-h/SnippetCompiler3.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SnippetCompiler" border="0" alt="SnippetCompiler" src="http://lh6.ggpht.com/_6PGvPTc1ZFU/Sex5TCfZfcI/AAAAAAAAAJQ/fIwDVmOu-PE/SnippetCompiler_thumb1.png?imgmax=800" width="542" height="565" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Download the “&lt;strong&gt;Snippet Compiler&lt;/strong&gt;” by Jeff Key.&lt;a href="http://www.sliver.com/dotnet/SnippetCompiler/"&gt;      &lt;br /&gt;http://www.sliver.com/dotnet/SnippetCompiler/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-6108798542761625272?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/6108798542761625272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=6108798542761625272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6108798542761625272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6108798542761625272'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/04/snippet-compiler-write-and-test-c-code.html' title='Snippet Compiler – write and test c# code without saving'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_6PGvPTc1ZFU/Sex5TCfZfcI/AAAAAAAAAJQ/fIwDVmOu-PE/s72-c/SnippetCompiler_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-7420650060227691823</id><published>2009-04-17T02:01:00.001-07:00</published><updated>2009-04-20T06:45:00.482-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><title type='text'>Free image / icons library for software programmers</title><content type='html'>&lt;blockquote&gt;   &lt;p&gt;Everyone knows that developer are poor when it come to icon or graphic design, so here is a free image / icons library named &lt;strong&gt;Silk&lt;/strong&gt; that is very useful when you create a web site or an application and that you need some basic icons to start with.&lt;/p&gt;    &lt;p&gt;From the author website: &lt;/p&gt;    &lt;p&gt;&lt;em&gt;“Silk” is a smooth, free icon set, containing over &lt;strong&gt;700&lt;/strong&gt; 16-by-16 pixel icons in strokably-soft PNG format. Containing a large variety of icons, you're sure to find something that tickles your fancy. And all for a low low price of &lt;strong&gt;$0.00&lt;/strong&gt;. You can't say fairer than that.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Download it &lt;a href="http://www.famfamfam.com/lab/icons/silk/" target="_blank"&gt;&lt;strong&gt;here&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-7420650060227691823?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/7420650060227691823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=7420650060227691823' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7420650060227691823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7420650060227691823'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/04/free-image-icons-library-for-software.html' title='Free image / icons library for software programmers'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-7322807616392647220</id><published>2009-04-16T02:56:00.001-07:00</published><updated>2009-04-16T02:56:30.833-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Ribbon'/><category scheme='http://www.blogger.com/atom/ns#' term='.Net 3.5'/><title type='text'>How to download the Free WPF Ribbon control from Microsoft</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Microsoft has release a free WPF Ribbon control that is quite hard to get, even if it have a codeplex page. Actually you have to go to the following page:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/office/aa973809.aspx" href="http://msdn.microsoft.com/en-us/office/aa973809.aspx"&gt;http://msdn.microsoft.com/en-us/office/aa973809.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;and Click on the &lt;a href="https://profile.microsoft.com/RegSysProfileCenter/wizard.aspx?wizid=5fed1051-2e7b-4049-8177-0fdaae5f475c&amp;amp;lcid=1033"&gt;&lt;strong&gt;License the Office UI&lt;/strong&gt;&lt;/a&gt; link.&lt;/p&gt;  &lt;p&gt;Then you have to sign in with your live account (who does not have one ?) and accept the OFFICE Fluent UI license.    &lt;br /&gt;Beware that you must indicate one or more of your own product that will use the Ribbon…     &lt;br /&gt;    &lt;br /&gt;This done, you have will eventually gain access to this page: &lt;a title="http://www.microsoftio.com/officeUI/license/" href="http://www.microsoftio.com/officeUI/license/"&gt;http://www.microsoftio.com/officeUI/license/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ok finally here are the good stuff :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A pdf file “2007 Microsoft Office Fluent UI Design Guidelines License”, that explains in details how to design your own ribbon so that user have a fluent UI. &lt;/li&gt;    &lt;li&gt;Microsoft Fluent Third Party usage guidelines: it is a very short doc, mostly about trademark issues. &lt;/li&gt;    &lt;li&gt;the file &lt;strong&gt;WPFRibbonCTP.zip&lt;/strong&gt;, titled “WPF Ribbon Control: Binary &amp;amp; Link to Sample Application” . This file contains the &lt;strong&gt;RibbonControlsLibrary.dll&lt;/strong&gt; assembly, and a text file that explain you that :       &lt;br /&gt;“A sample application and Hands-on-Lab which uses the WPF Ribbon can be found at &lt;a href="http://windowsclient.net/wpf"&gt;http://windowsclient.net/wpf&lt;/a&gt; under &amp;quot;WPF Features Preview Hand-on-Lab.&amp;quot;”       &lt;br /&gt;Actually the sample is here: &lt;a title="http://windowsclient.net/downloads/folders/hands-on-labs/entry76491.aspx" href="http://windowsclient.net/downloads/folders/hands-on-labs/entry76491.aspx"&gt;http://windowsclient.net/downloads/folders/hands-on-labs/entry76491.aspx&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt; &lt;fieldset style="padding-bottom: 4px; background-color: #ffffcf; padding-left: 4px; padding-right: 4px; padding-top: 4px"&gt;&lt;legend&gt;Note to the french readers:&lt;/legend&gt;    &lt;p&gt;Microsoft a publié un control gratuit de “Ribbon” pour WPF, le lien donné sur la page codeplex du projet est “localisé” et arrive sur une page francaise de Microsoft (&lt;a href="http://msdn.microsoft.com/fr-fr/office/aa973809.aspx" target="_blank"&gt;L’interface utilisateur de la version 2007 de Microsoft Office system est disponible sous licence&lt;/a&gt;). La mauvaise surprise c’est que le lien “Obtenir la licence” qui devrait permettre de valider la license et de télécharger la library est faux, et pointe vers une vidéo de channel 9 !!! Donc l’astuce est de repasser sur la version US de la page et d’obtenir ainsi le bon lien: &lt;a href="https://profile.microsoft.com/RegSysProfileCenter/wizard.aspx?wizid=5fed1051-2e7b-4049-8177-0fdaae5f475c&amp;amp;lcid=1033"&gt;&lt;strong&gt;License the Office UI&lt;/strong&gt;&lt;/a&gt; .&lt;/p&gt; &lt;/fieldset&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-7322807616392647220?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/7322807616392647220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=7322807616392647220' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7322807616392647220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7322807616392647220'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/04/how-to-download-free-wpf-ribbon-control.html' title='How to download the Free WPF Ribbon control from Microsoft'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-7905663079060435734</id><published>2009-04-15T08:46:00.001-07:00</published><updated>2009-04-15T08:46:16.562-07:00</updated><title type='text'>How to detect dual monitor in c#</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here is a small c# method to detect if there is dual monitor, actually it’s just one line of code !&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public bool &lt;/span&gt;DetectDualMonitor()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue"&gt;return &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Screen&lt;/span&gt;.AllScreens.Length &amp;gt; 1;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-7905663079060435734?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/7905663079060435734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=7905663079060435734' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7905663079060435734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7905663079060435734'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/04/how-to-detect-dual-monitor-in-c.html' title='How to detect dual monitor in c#'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-4120265136151482515</id><published>2009-04-09T23:51:00.001-07:00</published><updated>2009-04-10T13:43:42.433-07:00</updated><title type='text'>c# - String to Generic Type conversion</title><content type='html'>&lt;p&gt; Lately I was searching about how to convert a string to another type, which is specified as Generic. &lt;/p&gt;&lt;p&gt;The solution is very simple and already present in the framework:&lt;/p&gt;  &lt;p&gt;&lt;br /&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public static &lt;/span&gt;T To&amp;lt;T&amp;gt;(&lt;span style="color:blue;"&gt;this string &lt;/span&gt;text)&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:blue;"&gt;    return &lt;/span&gt;(T)&lt;span style="color:#2b91af;"&gt;Convert&lt;/span&gt;.ChangeType(text, &lt;span style="color:blue;"&gt;typeof&lt;/span&gt;(T));&lt;br /&gt;}&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color:green;"&gt;// sample usage&lt;br /&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;int &lt;/span&gt;val = &lt;span style="color:#a31515;"&gt;"124"&lt;/span&gt;.To&amp;lt;&lt;span style="color:blue;"&gt;int&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;span style="color:blue;"&gt;double &lt;/span&gt;dbl = &lt;span style="color:#a31515;"&gt;"124.5"&lt;/span&gt;.To&amp;lt;&lt;span style="color:blue;"&gt;double&lt;/span&gt;&amp;gt;();&lt;/pre&gt;&lt;p&gt;In application development, this can be useful if yours settings are saved as string in a database.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-4120265136151482515?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/4120265136151482515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=4120265136151482515' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4120265136151482515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4120265136151482515'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/04/c-string-to-generic-type-conversion.html' title='c# - String to Generic Type conversion'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-447336057883347464</id><published>2009-04-08T23:41:00.001-07:00</published><updated>2009-04-08T23:41:32.357-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET2'/><title type='text'>Improved c# Slug generator (or how to make friendly url from a post title)</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;here is an improved version of the Slug generator from &lt;strong&gt;Kamran Ayub.&lt;/strong&gt; You can found original post here :&lt;strong&gt; &lt;/strong&gt;&lt;a title="http://www.intrepidstudios.com/blog/2009/2/10/function-to-generate-a-url-friendly-string.aspx" href="http://www.intrepidstudios.com/blog/2009/2/10/function-to-generate-a-url-friendly-string.aspx"&gt;http://www.intrepidstudios.com/blog/2009/2/10/function-to-generate-a-url-friendly-string.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ve added the ability to remove accent.&lt;/p&gt;  &lt;p&gt;&lt;span style="color: blue"&gt;public static string &lt;/span&gt;GenerateSlug(&lt;span style="color: blue"&gt;this string &lt;/span&gt;phrase)     &lt;br /&gt;{     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string &lt;/span&gt;str = phrase.RemoveAccent().ToLower();     &lt;br /&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; str = &lt;span style="color: #2b91af"&gt;Regex&lt;/span&gt;.Replace(str, &lt;span style="color: #a31515"&gt;@&amp;quot;[^a-z0-9\s-]&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;&amp;quot;&lt;/span&gt;); &lt;span style="color: green"&gt;// invalid chars&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;str = &lt;span style="color: #2b91af"&gt;Regex&lt;/span&gt;.Replace(str, &lt;span style="color: #a31515"&gt;@&amp;quot;\s+&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot; &amp;quot;&lt;/span&gt;).Trim(); &lt;span style="color: green"&gt;// convert multiple spaces into one space&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;str = str.Substring(0, str.Length &amp;lt;= 45 ? str.Length : 45).Trim(); &lt;span style="color: green"&gt;// cut and trim it&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;str = &lt;span style="color: #2b91af"&gt;Regex&lt;/span&gt;.Replace(str, &lt;span style="color: #a31515"&gt;@&amp;quot;\s&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;-&amp;quot;&lt;/span&gt;); &lt;span style="color: green"&gt;// hyphens&amp;#160;&amp;#160; &lt;br /&gt;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;return &lt;/span&gt;str;     &lt;br /&gt;}     &lt;br /&gt;    &lt;br /&gt;&lt;span style="color: blue"&gt;public static string &lt;/span&gt;RemoveAccent(&lt;span style="color: blue"&gt;this string &lt;/span&gt;txt)     &lt;br /&gt;{     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;byte&lt;/span&gt;[] bytes = System.Text.&lt;span style="color: #2b91af"&gt;Encoding&lt;/span&gt;.GetEncoding(&lt;span style="color: #a31515"&gt;&amp;quot;Cyrillic&amp;quot;&lt;/span&gt;).GetBytes(txt);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return &lt;/span&gt;System.Text.&lt;span style="color: #2b91af"&gt;Encoding&lt;/span&gt;.ASCII.GetString(bytes);     &lt;br /&gt;}&lt;/p&gt; &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;p&gt;note: I’ve chosen to implement them as extension method, feel free to modify this.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-447336057883347464?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/447336057883347464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=447336057883347464' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/447336057883347464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/447336057883347464'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/04/improved-c-slug-generator-or-how-to.html' title='Improved c# Slug generator (or how to make friendly url from a post title)'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-4004824477183350514</id><published>2009-04-07T05:31:00.001-07:00</published><updated>2009-04-07T05:31:09.211-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET2'/><title type='text'>Display obscured password on a propertygrid</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To not show your passwords in plain text on a propertygrid, just use the &lt;span style="color: #2b91af"&gt;&lt;strong&gt;PasswordPropertyText&lt;/strong&gt; &lt;/span&gt;attribute:&lt;/p&gt;  &lt;p&gt;[&lt;span style="color: #2b91af"&gt;DisplayName&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Password&lt;/span&gt;&lt;span style="color: #a31515"&gt;&amp;quot;&lt;/span&gt;), &lt;span style="color: #2b91af"&gt;Category&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Authentication&amp;quot;&lt;/span&gt;), &lt;span style="color: #2b91af"&gt;PasswordPropertyText&lt;/span&gt;(&lt;span style="color: blue"&gt;true&lt;/span&gt;)]    &lt;br /&gt;&lt;span style="color: blue"&gt;public string &lt;/span&gt;Password    &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160; …    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;Your propertygrid will look like this:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_6PGvPTc1ZFU/SdtHgFBXfoI/AAAAAAAAAJE/dBDUtFaWOvo/s1600-h/PasswordPropertyText%5B5%5D.jpg"&gt;&lt;img title="PasswordPropertyText" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="394" alt="PasswordPropertyText" src="http://lh6.ggpht.com/_6PGvPTc1ZFU/SdtHiYS9sbI/AAAAAAAAAJI/3zbtDtQFMik/PasswordPropertyText_thumb%5B3%5D.jpg?imgmax=800" width="308" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-4004824477183350514?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/4004824477183350514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=4004824477183350514' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4004824477183350514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4004824477183350514'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/04/display-obscured-password-on.html' title='Display obscured password on a propertygrid'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_6PGvPTc1ZFU/SdtHiYS9sbI/AAAAAAAAAJI/3zbtDtQFMik/s72-c/PasswordPropertyText_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-3657737008834521172</id><published>2009-04-06T01:32:00.001-07:00</published><updated>2009-04-06T01:32:59.814-07:00</updated><title type='text'>How to define the path for private assemblies</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Here is a trick which I always forget the syntax, so it might be useful for me to write it down…&lt;/em&gt;    &lt;br /&gt;    &lt;br /&gt;When deploying an application, you may want to put some dependencies into one or several sub folders; maybe just to clean the root folder from private components assemblies, or sometime to isolate the add-ins assemblies into a dedicated folder.    &lt;br /&gt;    &lt;br /&gt;Your application will not find those dependencies until you modify the application configuration file (the app.config) to set a custom &lt;strong&gt;probing&lt;/strong&gt; &lt;strong&gt;privatePath&lt;/strong&gt;. This &lt;span style="color: #a31515"&gt;probing&lt;/span&gt; setting is under the runtime / assemblyBinding section, and the &lt;span style="color: red"&gt;privatePath&lt;/span&gt; attribute can take several relative path separated with semicolon.&lt;/p&gt;  &lt;p&gt;Here is a sample with a private path to the &lt;strong&gt;Addins&lt;/strong&gt; folder and to the &lt;strong&gt;Components&lt;/strong&gt; folder.&lt;/p&gt;  &lt;p&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;runtime&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;assemblyBinding     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;urn:schemas-microsoft-com:asm.v1&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;probing &lt;/span&gt;&lt;span style="color: red"&gt;privatePath&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Addins;Components&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;assemblyBinding&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;     &lt;br /&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;runtime&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;     &lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;p&gt;   &lt;br /&gt;Reference:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/823z9h8w.aspx"&gt;http://msdn.microsoft.com/en-us/library/823z9h8w.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-3657737008834521172?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/3657737008834521172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=3657737008834521172' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/3657737008834521172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/3657737008834521172'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2009/04/how-to-define-path-for-private.html' title='How to define the path for private assemblies'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-8764248387607327188</id><published>2008-11-27T11:51:00.001-08:00</published><updated>2009-01-05T01:38:29.324-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET2'/><title type='text'>c# : How to set default value on automatic properties (auto implemented properties)</title><content type='html'>&lt;p&gt; &lt;/p&gt;  &lt;p&gt;The new c# compiler allow us to write very clean and simplified property declaration, that avoid us to declare the private member and the get/ set accessors. here is the snippet (just do "prop TAB TAB" in visual studio 2008)&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; Name { &lt;span style="color: rgb(0,0,255)"&gt;get&lt;/span&gt;; &lt;span style="color: rgb(0,0,255)"&gt;set&lt;/span&gt;; }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;my original post was wrong (thank for the report), shame on me.&lt;br /&gt;&lt;br /&gt;I'll post a fixed version asap.&lt;br /&gt;&lt;br /&gt;&lt;s&gt;&lt;br /&gt;Here is what to do when you need a default value for your property : Just use our good old attributes:&lt;/s&gt;&lt;/p&gt;&lt;s&gt;&lt;pre class="code"&gt;[System.ComponentModel.&lt;span style="color: rgb(43,145,175)"&gt;DefaultValue&lt;/span&gt;(&lt;span style="color: rgb(163,21,21)"&gt;"John doe"&lt;/span&gt;)]&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; Name { &lt;span style="color: rgb(0,0,255)"&gt;get&lt;/span&gt;; &lt;span style="color: rgb(0,0,255)"&gt;set&lt;/span&gt;; }&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/s&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-8764248387607327188?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/8764248387607327188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=8764248387607327188' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8764248387607327188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8764248387607327188'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/11/c-how-to-set-default-value-on-automatic.html' title='c# : How to set default value on automatic properties (auto implemented properties)'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-474262091026128431</id><published>2008-11-26T02:21:00.001-08:00</published><updated>2008-11-26T02:31:14.454-08:00</updated><title type='text'>Read an RSS or Atom feed natively with C# (.Net Framework 3.5)</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;It's now possible, with the new classes added in the System.ServiceModel.Syndication namespace, to create or read an RSS feed without the use of additional components or classes.&lt;/p&gt; &lt;p&gt;First you'll need to reference the "System.ServiceModel.Web" assembly, then here is a short snippet to read a feed from an url:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;            &lt;span style="color: rgb(43,145,175)"&gt;XmlReader&lt;/span&gt; reader = &lt;span style="color: rgb(43,145,175)"&gt;XmlReader&lt;/span&gt;.Create(&lt;span style="color: rgb(163,21,21)"&gt;"http://feeds.feedburner.com/erp360"&lt;/span&gt;);&lt;br /&gt;            &lt;span style="color: rgb(43,145,175)"&gt;SyndicationFeed&lt;/span&gt; feed = &lt;span style="color: rgb(43,145,175)"&gt;SyndicationFeed&lt;/span&gt;.Load(reader);&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;var&lt;/span&gt; item &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; feed.Items)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: rgb(43,145,175)"&gt;Console&lt;/span&gt;.WriteLine(item.Title.Text);&lt;br /&gt;                &lt;span style="color: rgb(43,145,175)"&gt;Console&lt;/span&gt;.WriteLine(item.PublishDate.ToString(&lt;span style="color: rgb(163,21,21)"&gt;"dd/MM/yyyy"&lt;/span&gt;));&lt;br /&gt;                &lt;span style="color: rgb(43,145,175)"&gt;Console&lt;/span&gt;.WriteLine();&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            reader.Close();&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;To read from a feed contained into a string :&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;                XmlReader&lt;/span&gt; reader = &lt;span style="color: rgb(43,145,175)"&gt;XmlReader&lt;/span&gt;.Create(&lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;StringReader&lt;/span&gt;(FeedXmlContent));&lt;br /&gt;                &lt;span style="color: rgb(43,145,175)"&gt;SyndicationFeed&lt;/span&gt; feed = &lt;span style="color: rgb(43,145,175)"&gt;SyndicationFeed&lt;/span&gt;.Load(reader);&lt;br&gt;                reader.Close();&lt;/pre&gt;&lt;pre class="code"&gt;&amp;nbsp;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-474262091026128431?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/474262091026128431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=474262091026128431' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/474262091026128431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/474262091026128431'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/11/read-rss-or-atom-feed-natively-with-c.html' title='Read an RSS or Atom feed natively with C# (.Net Framework 3.5)'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-2026432036291000550</id><published>2008-11-14T00:49:00.001-08:00</published><updated>2008-11-14T00:49:57.844-08:00</updated><title type='text'>John Frusciante new Album "The Empyrean," due Jan. 20</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://farm1.static.flickr.com/3/3505149_2cd3d30462.jpg" align="left" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;John is gonna release its first album since &amp;quot;Curtains&amp;quot; !!!&lt;/p&gt;  &lt;p&gt;Original news is here:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.billboard.com/bbcom/news/article_display.jsp?vnu_content_id=1003889627"&gt;http://www.billboard.com/bbcom/news/article_display.jsp?vnu_content_id=1003889627&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Guitarist Johnny Marr and bassist Flea are among the guests on &lt;a href="http://www.billboard.com/bbcom/about/Red+Hot+Chili+Peppers"&gt;Red Hot Chili Peppers&lt;/a&gt; guitarist &lt;a href="http://www.billboard.com/bbcom/about/John+Frusciante"&gt;John Frusciante&lt;/a&gt;'s new album, &amp;quot;The Empyrean,&amp;quot; due Jan. 20 via Record Collection.      &lt;br /&gt;The Sonus Quartet and the New Dimension Singers also make appearances on the follow-up to 2005's &amp;quot;Curtains.&amp;quot; Frusciante has released seven solo albums since rejoining the Chili Peppers in 1998.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In mean time, I discover that John Frusciante just start to blog:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://johnfrusciante.com/"&gt;http://johnfrusciante.com/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-2026432036291000550?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/2026432036291000550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=2026432036291000550' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2026432036291000550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2026432036291000550'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/11/john-frusciante-new-album-empyrean-due.html' title='John Frusciante new Album &amp;quot;The Empyrean,&amp;quot; due Jan. 20'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/3/3505149_2cd3d30462_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-5761533291557937099</id><published>2008-10-01T08:25:00.001-07:00</published><updated>2008-10-01T08:25:10.275-07:00</updated><title type='text'>How to check for a network connection in .NET 2.0 (C# or VB)</title><content type='html'>&lt;p&gt;&amp;nbsp; &lt;p&gt;quoted from: &lt;a href="http://www.ardentdev.com/blog/index.php/2006/01/18/how-to-check-for-a-network-connection-in-net-20-c-or-vb/"&gt;http://www.ardentdev.com/blog/index.php/2006/01/18/how-to-check-for-a-network-connection-in-net-20-c-or-vb/&lt;/a&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;To check for a network connection in .NET 2.0 use this: &lt;p&gt;System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable() &lt;p&gt;To monitor a change in IP address or a change in network availability, use the events from the NetworkChange class: &lt;p&gt;System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged &lt;p&gt;System.Net.NetworkInformation.NetworkChange.NetworkAddressChanged&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-5761533291557937099?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/5761533291557937099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=5761533291557937099' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/5761533291557937099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/5761533291557937099'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/10/how-to-check-for-network-connection-in.html' title='How to check for a network connection in .NET 2.0 (C# or VB)'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-9208379636263016627</id><published>2008-09-24T05:42:00.001-07:00</published><updated>2008-09-24T05:42:42.229-07:00</updated><title type='text'>How to make a Right click to select a ListViewItem in a Windows Forms ListView (C#)</title><content type='html'>&lt;p&gt;It is the normal behavior on windows, but not in the ListView control, I'm wondering why ... maybe an option that I've miss somewhere ?&lt;/p&gt; &lt;p&gt;anyway, here is my solution, you can either override the listview, or put an event handler on the mouseUp event:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;First way:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;    public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;MyListView&lt;/span&gt; : System.Windows.Forms.&lt;span style="color: rgb(43,145,175)"&gt;ListView&lt;br /&gt;&lt;/span&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; OnMouseUp(&lt;span style="color: rgb(43,145,175)"&gt;MouseEventArgs&lt;/span&gt; e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;base&lt;/span&gt;.OnMouseUp(e);&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (e.Button == &lt;span style="color: rgb(43,145,175)"&gt;MouseButtons&lt;/span&gt;.Right)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: rgb(43,145,175)"&gt;ListViewItem&lt;/span&gt; item = &lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.GetItemAt(e.X, e.Y);&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (item != &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    item.Selected = &lt;span style="color: rgb(0,0,255)"&gt;true&lt;/span&gt;;                    &lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Second way :&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.listView.MouseUp += &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; System.Windows.Forms.&lt;span style="color: rgb(43,145,175)"&gt;MouseEventHandler&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.OnListViewMouseUp);&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;        private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; OnListViewMouseUp(&lt;span style="color: rgb(0,0,255)"&gt;object&lt;/span&gt; sender, &lt;span style="color: rgb(43,145,175)"&gt;MouseEventArgs&lt;/span&gt; e)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(43,145,175)"&gt;ListView&lt;/span&gt; listView = sender &lt;span style="color: rgb(0,0,255)"&gt;as&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;ListView&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (e.Button == &lt;span style="color: rgb(43,145,175)"&gt;MouseButtons&lt;/span&gt;.Right)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: rgb(43,145,175)"&gt;ListViewItem&lt;/span&gt; item = listView.GetItemAt(e.X, e.Y);&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (item != &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    item.Selected = &lt;span style="color: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-9208379636263016627?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/9208379636263016627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=9208379636263016627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/9208379636263016627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/9208379636263016627'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/09/how-to-make-right-click-to-select.html' title='How to make a Right click to select a ListViewItem in a Windows Forms ListView (C#)'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-2652470116255389310</id><published>2008-09-05T06:23:00.001-07:00</published><updated>2009-01-04T03:02:54.265-08:00</updated><title type='text'>How to get rounded corner windows forms</title><content type='html'>&lt;p&gt;You can use a function available in gdi32.dll, by calling it in the constructor of the form. &lt;/p&gt; &lt;p&gt;From my experience the Border seems to not apply on the rounded corners.&lt;/p&gt; &lt;p&gt; &lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;    using &lt;/span&gt;&lt;span style=""&gt;System.Runtime.InteropServices;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;    public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;partial&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;LoginForm&lt;/span&gt; : &lt;span style="color: rgb(43,145,175)"&gt;Form&lt;br /&gt;&lt;/span&gt;    {&lt;br /&gt;       [&lt;span style="color: rgb(43,145,175)"&gt;DllImport&lt;/span&gt;(&lt;span style="color: rgb(163,21,21)"&gt;"Gdi32.dll"&lt;/span&gt;, EntryPoint = &lt;span style="color: rgb(163,21,21)"&gt;"CreateRoundRectRgn"&lt;/span&gt;)]&lt;br /&gt;       &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;extern&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;IntPtr&lt;/span&gt; CreateRoundRectRgn&lt;br /&gt;       (&lt;br /&gt;           &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; nLeftRect, &lt;span style="color: rgb(0,128,0)"&gt;// x-coordinate of upper-left corner&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; nTopRect, &lt;span style="color: rgb(0,128,0)"&gt;// y-coordinate of upper-left corner&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; nRightRect, &lt;span style="color: rgb(0,128,0)"&gt;// x-coordinate of lower-right corner&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; nBottomRect, &lt;span style="color: rgb(0,128,0)"&gt;// y-coordinate of lower-right corner&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; nWidthEllipse, &lt;span style="color: rgb(0,128,0)"&gt;// height of ellipse&lt;br /&gt;&lt;/span&gt;            &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; nHeightEllipse &lt;span style="color: rgb(0,128,0)"&gt;// width of ellipse&lt;br /&gt;&lt;/span&gt;        );&lt;br /&gt;&lt;br /&gt;       &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; LoginForm()&lt;br /&gt;       {&lt;br /&gt;           InitializeComponent();&lt;br /&gt;           Region = System.Drawing.&lt;span style="color: rgb(43,145,175)"&gt;Region&lt;/span&gt;.FromHrgn(CreateRoundRectRgn( 0, 0, Width-10, Height-10, 20, 20)); &lt;span style="color: rgb(0,128,0)"&gt;// adjust these parameters to get the lookyou want.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;        }&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-2652470116255389310?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/2652470116255389310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=2652470116255389310' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2652470116255389310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2652470116255389310'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/09/how-to-get-rounded-corner-windows-forms.html' title='How to get rounded corner windows forms'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-3694063743955056269</id><published>2008-08-12T07:10:00.001-07:00</published><updated>2008-08-12T07:10:58.494-07:00</updated><title type='text'>Microsoft Visual Basic Power Packs 3.0</title><content type='html'>&lt;h6&gt;Overview&lt;/h6&gt; &lt;p&gt;&lt;a name="Description"&gt;&lt;/a&gt;The new DataRepeater control included in this version of the Visual Basic Power Packs allows you use standard Windows Forms controls to display rows of your data in a scrollable container giving you more flexibility and customization than standard grid controls.&lt;br&gt;The Line and Shape controls are a set of three graphical controls that enable you to draw lines, ovals, and rectangles on forms and containers at design time making it much easier to enhance the look of your user interface. These shape controls also provide events such as click and double-click allowing developers to respond and interact with end users.&lt;br&gt;The Printer Compatibility Library allows projects that used the Printer and Printers Collection in Visual Basic 6.0 to be upgraded without having to re-write your printing logic. By simply adding a reference to the library, declaring a Printer and making a few minor syntax changes, your project will be able to print using the Printers collection and Printer object as it did in Visual Basic 6.0. This version adds a new Write method to the Printer object which allows you to print text without a forced carriage return similar to the semicolon syntax used by Print method in Visual Basic 6.0.&lt;br&gt;The PrintForm component is designed to bring back the ability to easily print a Windows Form. With this the new PrintForm component you can once again layout the Windows Form exactly as you want it and allow your users to print the form as a quick report. &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=371368A8-7FDC-441F-8E7D-FE78D96D4063&amp;amp;displaylang=en" target="_blank"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=371368A8-7FDC-441F-8E7D-FE78D96D4063&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-3694063743955056269?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/3694063743955056269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=3694063743955056269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/3694063743955056269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/3694063743955056269'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/08/microsoft-visual-basic-power-packs-30.html' title='Microsoft Visual Basic Power Packs 3.0'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-4566909327679096891</id><published>2008-08-11T12:13:00.001-07:00</published><updated>2008-08-11T12:13:35.872-07:00</updated><title type='text'>Show All tasks In visual studio 2008</title><content type='html'>&lt;p&gt;Finnally Microsoft has fixed that !&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;In earlier versions of Visual Studio, the task list is populated by using the ToDo tasks that are specified in open files. In this service pack, the Visual C# IDE extends this functionality. The Visual C# IDE populates the task list by using the ToDo tasks that are specified in the whole solution.&lt;/p&gt; &lt;p&gt;French: La liste des t�ches est remplie dans des versions ant�rieures de Visual Studio en utilisant les t�ches ToDo qui sont sp�cifi�es dans des fichiers ouverts. Le Visual C# IDE dans ce Service Pack, �tend cette fonctionnalit�. Le Visual C# IDE remplit la liste des t�ches en utilisant les t�ches ToDo qui sont sp�cifi�es dans la solution enti�re.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;So, all we need is to install the Visual Studio 2008 SP 1.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:605EEA63-B54B-4e6d-A290-F5E9E8229FC1:7e0cd4ab-667c-44d7-96bf-039e8751a050" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Source: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=27673c47-b3b5-4c67-bd99-84e525b5ce61&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=27673c47-b3b5-4c67-bd99-84e525b5ce61&amp;displaylang=en&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src="http://lh5.ggpht.com/jroland/SKCPX7t1IcI/AAAAAAAAAGA/j0QeyUK8cTA/11.08.2008.21.12.46.953.jpg?imgmax=800" /&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-4566909327679096891?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/4566909327679096891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=4566909327679096891' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4566909327679096891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4566909327679096891'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/08/show-all-tasks-in-visual-studio-2008.html' title='Show All tasks In visual studio 2008'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/jroland/SKCPX7t1IcI/AAAAAAAAAGA/j0QeyUK8cTA/s72-c/11.08.2008.21.12.46.953.jpg?imgmax=800' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-2007317581759076358</id><published>2008-08-11T12:02:00.001-07:00</published><updated>2008-08-11T12:02:33.567-07:00</updated><title type='text'>Microsoft Visual Studio 2008 Service Pack 1</title><content type='html'>&lt;p&gt;Disponible en t�l�chargement, en fran�ais.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h6&gt;&lt;strong&gt;Pr�sentation&lt;/strong&gt;&lt;/h6&gt; &lt;p&gt;&lt;a name="Description"&gt;&lt;/a&gt;Ce t�l�chargement installe Visual Studio 2008 SP1 et .NET Framework 3.5 Service Pack 1 (SP1). Le SP1 traite les probl�mes remont�s par le biais des commentaires des clients et des partenaires ou trouv�s lors de tests internes. Ces Service Packs proposent aux utilisateurs Visual Studio et .NET Framework des am�liorations en termes de r�activit�, de stabilit� et de performances. &lt;br&gt;Pour plus d'informations sur ces Service Packs, cliquez &lt;a href="http://go.microsoft.com/?linkid=9188339"&gt;ici&lt;/a&gt;.&lt;br&gt;&lt;b&gt;IMPORTANT &lt;/b&gt; &lt;ul&gt; &lt;li&gt;Si vous avez pr�c�demment install� un correctif logiciel Visual Studio 2008, vous devez ex�cuter l'utilitaire de nettoyage des correctifs avant d'installer Visual Studio 2008 SP1. Pour plus d'informations, consultez &lt;a href="http://code.msdn.microsoft.com/RemoveKB944899"&gt;Utilitaire de nettoyage des correctifs Visual Studio 2008 pour l'installation de Visual Studio 2008 SP1&lt;/a&gt; (en anglais).  &lt;li&gt;Avant l'installation, vous devez passer attentivement en revue le fichier &lt;a href="http://go.microsoft.com/fwlink/?LinkID=119522"&gt;readme&lt;/a&gt; fourni pour vous informer sur les probl�mes connus li�s � cette version.  &lt;li&gt;Les technologies suivantes ont �t� test�es et leur fonctionnement avec SP1 v�rifi� :  &lt;ul&gt; &lt;li&gt;Kit de d�veloppement logiciel (SDK) et outils Silverlight 2.0 Beta2  &lt;li&gt;MVC version Preview no 3  &lt;li&gt;Extensions ASP.NET/Dynamic Data Preview  &lt;li&gt;VC 2008 Feature Pack  &lt;li&gt;Contr�les VB PowerPack (2.0 et 3.0)  &lt;li&gt;Expression Studio 2 (RTM)  &lt;li&gt;SQL Server 2008 et Kit de d�veloppement logiciel (SDK) .NET Framework 3.5  &lt;li&gt;XSLT Profiler  &lt;li&gt;Kit de d�veloppement logiciel (SDK) VSTA 2.0  &lt;li&gt;Kit de d�veloppement Visual Studio 2008 SDK&lt;/li&gt;&lt;/ul&gt;Si vous rencontrez des probl�mes lors de l'installation du SP1, d�sinstallez les compl�ments des technologies et/ou de d�veloppement et r�essayez l'installation du SP1. Cette liste sera enrichie � mesure que de nouvelles technologies seront mises � jour et que leur compatibilit� avec le SP1 aura �t� v�rifi�e. &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="wlWriterSmartContent" id="scid:605EEA63-B54B-4e6d-A290-F5E9E8229FC1:e3252220-38a9-4950-b64a-af8476d8e612" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Source: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=27673c47-b3b5-4c67-bd99-84e525b5ce61&amp;amp;displaylang=fr"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=27673c47-b3b5-4c67-bd99-84e525b5ce61&amp;displaylang=fr&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src="http://lh4.ggpht.com/jroland/SKCMyNPb1-I/AAAAAAAAAF8/0E9gjSoCK7o/11.08.2008.21.02.15.171.jpg?imgmax=800" /&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-2007317581759076358?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/2007317581759076358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=2007317581759076358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2007317581759076358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2007317581759076358'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/08/microsoft-visual-studio-2008-service.html' title='Microsoft Visual Studio 2008 Service Pack 1'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/jroland/SKCMyNPb1-I/AAAAAAAAAF8/0E9gjSoCK7o/s72-c/11.08.2008.21.02.15.171.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-9046300273519553059</id><published>2008-07-26T14:52:00.001-07:00</published><updated>2008-07-26T14:52:31.601-07:00</updated><title type='text'>Visual studio command line to open a file into running instance</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;here is it:&lt;/p&gt; &lt;p&gt;devenv /Edit "c:\test.txt"&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;if you omit the /Edit swith then another instance is opened.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-9046300273519553059?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/9046300273519553059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=9046300273519553059' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/9046300273519553059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/9046300273519553059'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/07/visual-studio-command-line-to-open-file.html' title='Visual studio command line to open a file into running instance'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-7712316935130010747</id><published>2008-07-06T14:55:00.001-07:00</published><updated>2008-07-06T14:55:51.729-07:00</updated><title type='text'>string Extension method - Part 2</title><content type='html'>&lt;p&gt;Here is a usefull string extension method, in order to validate a string input against a regular expression pattern:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;        public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt; IsMatch(&lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; value, &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; pattern)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Regex&lt;/span&gt;.IsMatch(value, pattern);&lt;br /&gt;        }&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-7712316935130010747?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/7712316935130010747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=7712316935130010747' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7712316935130010747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7712316935130010747'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/07/string-extension-method-part-2.html' title='string Extension method - Part 2'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-372323774380348942</id><published>2008-07-03T08:15:00.001-07:00</published><updated>2008-07-03T08:15:15.220-07:00</updated><title type='text'>linq extension methods that extend every classes with reflection helpers</title><content type='html'>&lt;p&gt;Here is my simple extension method that quickly obtain the list of property name on any object, and another one to get the property value.&lt;/p&gt; &lt;p&gt;No more getType().GetProperties() over and over again :-D&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;    public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;ObjectExtension&lt;br /&gt;&lt;/span&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&amp;gt; GetProperties(&lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;object&lt;/span&gt; value)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; value.GetType().GetProperties().Select(z =&amp;gt; z.Name).ToList();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;object&lt;/span&gt; GetPropertyValue(&lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;object&lt;/span&gt; value, &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; propertyName)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(43,145,175)"&gt;PropertyInfo&lt;/span&gt; propertyInfo = value.GetType().GetProperty(propertyName);&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; propertyInfo.GetValue(value, &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;);&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-372323774380348942?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/372323774380348942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=372323774380348942' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/372323774380348942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/372323774380348942'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/07/linq-extension-methods-that-extend.html' title='linq extension methods that extend every classes with reflection helpers'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-5493065099441671593</id><published>2008-07-02T05:51:00.001-07:00</published><updated>2008-07-02T05:51:29.648-07:00</updated><title type='text'>FFClickOnce Firefox 3 version (hack)</title><content type='html'>&lt;p&gt;The famous FireFox extension is not yet compliant with Firefox, so here is a hack of FFClickonce 0.7 that works with Firefox 3.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.box.net/shared/3xsuu7ig0g" target="_blank"&gt;Download FFClickonce for Firefox 3&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-5493065099441671593?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/5493065099441671593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=5493065099441671593' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/5493065099441671593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/5493065099441671593'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/07/ffclickonce-firefox-3-version-hack.html' title='FFClickOnce Firefox 3 version (hack)'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-8617841254105567144</id><published>2008-06-04T01:51:00.001-07:00</published><updated>2008-06-04T01:51:17.833-07:00</updated><title type='text'>C# Save an Image to a byte[] array</title><content type='html'>&lt;p&gt;I use this to get the data to put in database:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;&lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;//Load a picture&lt;/span&gt;&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;Image &lt;font color="#000000"&gt;image = Image.LoadFromFile("toto.jpg");&lt;br&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color: rgb(43,145,175)"&gt;MemoryStream&lt;/span&gt; ms = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;MemoryStream&lt;/span&gt;();&lt;br /&gt;&lt;font color="#000000"&gt;image &lt;/font&gt;.Save(ms, &lt;font color="#000000"&gt;image &lt;/font&gt;.RawFormat);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0,128,0)"&gt;// put the data of this picture in the category object    &lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(43,145,175)"&gt;Byte&lt;/span&gt;[] buffer = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Byte&lt;/span&gt;[ms.Length - 1];&lt;br /&gt;ms.Position = 0;&lt;br /&gt;ms.Read(buffer, 0, buffer.Length);&lt;br /&gt;&lt;br /&gt;ms.Close();&lt;/pre&gt;&lt;font color="#008000"&gt;// Now you can put the buffer data in your database&lt;/font&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-8617841254105567144?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/8617841254105567144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=8617841254105567144' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8617841254105567144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8617841254105567144'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/06/c-save-image-to-byte-array.html' title='C# Save an Image to a byte[] array'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-2139257149938259764</id><published>2008-06-04T01:46:00.001-07:00</published><updated>2008-06-04T01:46:16.707-07:00</updated><title type='text'>C# Load an Image from a byte[] array</title><content type='html'>&lt;p&gt;Usefull when you store your image in a database.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font color="#2b91af"&gt;byte&lt;/font&gt;[] data = null; // Load that from your database&lt;br&gt;&lt;span style="color: rgb(43,145,175)"&gt;MemoryStream&lt;/span&gt; stream = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;MemoryStream&lt;/span&gt;(data);&lt;br&gt;&lt;font color="#2b91af"&gt;Image&lt;/font&gt; image = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Bitmap&lt;/span&gt;(stream);&lt;br&gt;stream.Close();&lt;/p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-2139257149938259764?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/2139257149938259764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=2139257149938259764' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2139257149938259764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2139257149938259764'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/06/c-load-image-from-byte-array.html' title='C# Load an Image from a byte[] array'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-1832585988172415248</id><published>2008-05-28T10:20:00.001-07:00</published><updated>2008-05-28T10:20:57.353-07:00</updated><title type='text'>How to create fixed length string in c#</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I needed this one to create a csv file. Here is my little method, maybe it should be a class ?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;        public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;static&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; GetFixedLengthString(&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; input, &lt;span style="color: rgb(0,0,255)"&gt;int&lt;/span&gt; length)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; result = &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;.Empty;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;.IsNullOrEmpty(input))&lt;br /&gt;            {&lt;br /&gt;                result = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;(&lt;span style="color: rgb(163,21,21)"&gt;' '&lt;/span&gt;, length);&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;else&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (input.Length &amp;gt; length)&lt;br /&gt;            {&lt;br /&gt;                result = input.Substring(0, length);&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;else&lt;br /&gt;&lt;/span&gt;            {&lt;br /&gt;                result = input.PadRight(length);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; result;&lt;br /&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-1832585988172415248?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/1832585988172415248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=1832585988172415248' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/1832585988172415248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/1832585988172415248'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/05/how-to-create-fixed-length-string-in-c.html' title='How to create fixed length string in c#'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-5883472548986752240</id><published>2008-05-13T02:36:00.001-07:00</published><updated>2009-03-27T02:04:29.149-07:00</updated><title type='text'>How to integrate Araxis Merge with TortoiseSVN</title><content type='html'>&lt;p&gt; &lt;/p&gt;  &lt;p&gt;Araxis merge is an awesome merge/diff tool, which is something &lt;b&gt;invaluable &lt;/b&gt;when you work with a source code repository.&lt;/p&gt;  &lt;p&gt;Here is how to integrate it with tortoisesvn, in order to replace the internal diff and merge tools.&lt;/p&gt;  &lt;p&gt;   &lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:605EEA63-B54B-4e6d-A290-F5E9E8229FC1:6ab07f4b-7cfa-40cb-8c9c-745009ad9f7c" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Source: &lt;a href="http://www.araxis.com/merge/scm_integration.html"&gt;http://www.araxis.com/merge/scm_integration.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/jroland/SClhC8Hbp6I/AAAAAAAAAF0/KYnHD31ZJKU/13.05.2008.11.34.21.656.jpg?imgmax=800" /&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The &lt;strong&gt;External Programs&lt;/strong&gt; section of the &lt;strong&gt;TortoiseSVN Settings&lt;/strong&gt; window enables external diff and merging programs to be configured. &lt;/p&gt;  &lt;p&gt;Merge can also integrate directly with Subversion. Please see &lt;a href="http://www.araxis.com/merge/scm_integration.html#Subversion"&gt;Subversion&lt;/a&gt; for more information. &lt;/p&gt;  &lt;h6&gt;To configure Merge as the Diff Viewer:&lt;/h6&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p&gt;In the &lt;strong&gt;TortoiseSVN Settings&lt;/strong&gt; window, select the &lt;strong&gt;Diff Viewer&lt;/strong&gt; page (located under &lt;strong&gt;External Programs&lt;/strong&gt;). &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Select the &lt;strong&gt;External&lt;/strong&gt; radio button. &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;In path field, enter the following (all on one line):&lt;/p&gt;      &lt;blockquote&gt;&lt;code&gt;"C:\Program Files\Araxis\Araxis Merge\compare.exe" /max /wait /title1:%bname /title2:%yname %base %mine&lt;/code&gt;&lt;/blockquote&gt;      &lt;p&gt;Note: in the above path, replace &lt;em&gt;C:\Program Files\Araxis\Araxis Merge\&lt;/em&gt; with the full path of the Merge installation directory on your machine. &lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;h6&gt;To configure Merge as the Merge Tool:&lt;/h6&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;p&gt;In the &lt;strong&gt;TortoiseSVN Settings&lt;/strong&gt; window, select the &lt;strong&gt;Merge Tool&lt;/strong&gt; page (located under &lt;strong&gt;External Programs&lt;/strong&gt;). &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;Select the &lt;strong&gt;External&lt;/strong&gt; radio button. &lt;/p&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;p&gt;In path field, enter the following (all on one line):&lt;/p&gt;      &lt;blockquote&gt;&lt;code&gt;"C:\Program Files\Araxis\Araxis Merge\compare.exe" /a2 /max /wait /3 /title1:%tname /title2:%bname /title3:%yname %theirs %base %mine %merged&lt;/code&gt;&lt;/blockquote&gt;      &lt;p&gt;Note: in the above path, replace &lt;em&gt;C:\Program Files\Araxis\Araxis Merge\&lt;/em&gt; with the full path of the Merge installation directory on your machine. &lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;This page also contains how to integrate Araxis merge will all the other source control.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-5883472548986752240?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/5883472548986752240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=5883472548986752240' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/5883472548986752240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/5883472548986752240'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/05/how-to-integrate-araxis-merge-with.html' title='How to integrate Araxis Merge with TortoiseSVN'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/jroland/SClhC8Hbp6I/AAAAAAAAAF0/KYnHD31ZJKU/s72-c/13.05.2008.11.34.21.656.jpg?imgmax=800' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-4512459973846051387</id><published>2008-05-12T05:23:00.001-07:00</published><updated>2008-05-12T05:23:14.695-07:00</updated><title type='text'>c# : How to hash a string to MD5</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;MD5 hash is a method to obtain a unique &amp;quot;signature&amp;quot; from a string. It is very usefull in order to store password, but be aware that there is no way to get back to the original string, starting from the hash.&lt;/p&gt;  &lt;p&gt;I use it for creating unique filename for caching url crawling. &lt;/p&gt;  &lt;p&gt;Here is a snipped of a method that give the MD5 hash from a string:&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:605EEA63-B54B-4e6d-A290-F5E9E8229FC1:dbf297a1-49a8-4d5c-a4a2-08c5a9a63346" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;/div&gt;  &lt;p&gt;private string HashString(string Value)   &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; byte[] data = System.Text.Encoding.ASCII.GetBytes(Value);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; data = x.ComputeHash(data);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string ret = &amp;quot;&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; for (int i=0; i &amp;lt; data.Length; i++)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ret += data[i].ToString(&amp;quot;x2&amp;quot;).ToLower();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return ret;    &lt;br /&gt;}&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-4512459973846051387?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/4512459973846051387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=4512459973846051387' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4512459973846051387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4512459973846051387'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/05/c-how-to-hash-string-to-md5.html' title='c# : How to hash a string to MD5'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-6024608214070359413</id><published>2008-04-09T01:44:00.001-07:00</published><updated>2008-04-16T02:06:53.583-07:00</updated><title type='text'>How to remove Ads from Windows Live Messenger (MSN messenger)</title><content type='html'>&lt;p&gt;Here is a tip that my friend &lt;a href="http://marc-chouteau.blogspot.com/" target="_blank"&gt;Marc Chouteau&lt;/a&gt; just gave me to remove the ads from windows live messenger without installing any cracks. &lt;/p&gt; &lt;p&gt;Actually it does not mess with windows live messenger at all, but with your host file in order to change the IP adresses of the Windows Live Messenger ads servers.&lt;/p&gt; &lt;p&gt;&lt;br&gt;Add the following two lines in your host file (c:\windows\system32\drivers\etc\host) with notepad:&lt;/p&gt; &lt;p&gt;127.0.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp; rad.msn.com&lt;br&gt;127.0.0.1&amp;nbsp;&amp;nbsp;&amp;nbsp; rad.live.com&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;and your done!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-6024608214070359413?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/6024608214070359413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=6024608214070359413' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6024608214070359413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6024608214070359413'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/04/how-to-remove-adds-from-msn-messenger.html' title='How to remove Ads from Windows Live Messenger (MSN messenger)'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-4179329924052742867</id><published>2008-04-08T06:15:00.001-07:00</published><updated>2008-04-08T06:15:44.117-07:00</updated><title type='text'>How to detect if Shift or Control key is pressed</title><content type='html'>&lt;p&gt;I have this need in a login windowss form: i want to enable some kind of "auto login" (no need to press "OK" to logon), but I also want the user to be able to cancel it, in order to enter a new identifier.&lt;/p&gt; &lt;p&gt;So my idea was to deactivate the autologin feature if the "SHIFT" key is detected as pressed while the form is displayed, here is the code to do that, i put it in the OnLoad method of the form :&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;Control&lt;/span&gt;.ModifierKeys == &lt;span style="color: rgb(43,145,175)"&gt;Keys&lt;/span&gt;.Shift)&lt;br /&gt;{&lt;br /&gt;   Data.SignMeAutomatically = &lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;;&lt;br /&gt;}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-4179329924052742867?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/4179329924052742867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=4179329924052742867' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4179329924052742867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4179329924052742867'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/04/how-to-detect-if-shift-or-control-key.html' title='How to detect if Shift or Control key is pressed'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-8038609430485601535</id><published>2008-03-19T01:01:00.001-07:00</published><updated>2009-04-15T08:48:21.965-07:00</updated><title type='text'>Could not start the Wireless Zero Configuration service on Local Computer. Error 1068: The dependency service or group failed to start.</title><content type='html'>&lt;p&gt;I've got this message when i try to start the Wireless Zero Configuration Service...&lt;/p&gt; &lt;p&gt;I've found the solution in a blog post, here is a quote:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;As you mention it, if you try to start the WZCSVC service in the MMC, an error code appears referring to its parent services appears (1068, this parent services are Remote Procedure Call and something called NDIS Protocol [I have no idea what this is... ��]). So, if you check the RPC service, it must be enabled (system essential), but you cannot find the other "service".&lt;br /&gt;I have also seen answers referring to disabling any 3rd Party Wireless Management Software (but I don't have one, so it cannot be that).&lt;br /&gt;However, I did find such Protocol Service in the regedit, and I found out it was disabled (it was set to 4). So, in sum, I recommend you to go to&lt;br /&gt;&lt;strong&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ndisuio&lt;/strong&gt;&lt;br /&gt;and check that the "Start" Value is set to 1, 2 or 3 (&lt;strong&gt;I set it to 1&lt;/strong&gt;).&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:605EEA63-B54B-4e6d-A290-F5E9E8229FC1:3a6ba755-493f-469a-931a-1bf1bc65aca0" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Source: &lt;a href="http://www.techsupportforum.com/networking-forum/networking-support/94273-error-1068-when-starting-wzc.html"&gt;http://www.techsupportforum.com/networking-forum/networking-support/94273-error-1068-when-starting-wzc.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;/div&gt; &lt;p&gt;On mine the key was set to "4". I change it to "1", then I've restarted my machine, and everything is fine now.&lt;/p&gt; &lt;p&gt;It's seems that a virus/trojan have played with it in the past...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-8038609430485601535?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/8038609430485601535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=8038609430485601535' title='33 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8038609430485601535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8038609430485601535'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/03/could-not-start-wireless-zero.html' title='Could not start the Wireless Zero Configuration service on Local Computer. Error 1068: The dependency service or group failed to start.'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>33</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-7001459619046667364</id><published>2008-02-26T00:03:00.001-08:00</published><updated>2008-02-26T00:03:00.334-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows forms'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET2'/><title type='text'>How to solve Visual Studio 2005/2008 : Exception of type 'System.ComponentModel.Design.ExceptionCollection' was thrown.</title><content type='html'>&lt;p&gt;&lt;strong&gt;White screen of Darn&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This is one of my worst nightmare under Visual studio, when I try to open a Form in designer view, sometime I get the message "Exception of type 'System.ComponentModel.Design.ExceptionCollection' was thrown." grrr.&lt;/p&gt; &lt;p&gt;then, most of the time I need to close Visual Studio, rebuild the solution, and then re-open the windows form... Sometime it works, and sometime not :-(&lt;/p&gt; &lt;p&gt;I've just found (maybe i'm dumb and everyone already know that ?) that actually we can know what is happenning, because Visual Studio designer is executing the code of our control, it has encounter an error, and we can actually debug this !&lt;/p&gt; &lt;p&gt;Here is the rewritten expanation from &lt;a href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=289686" target="_blank"&gt;connect.microsoft.com&lt;/a&gt;: &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;em&gt;The real problem of the "ExceptionCollection" being thrown is that when there is a WSOD (White Screen of Darn) indicating a designer load issue, the designer gets unloaded. In your project, the RussTabStrip is throwing exceptions. These get caught by our unload method and get displayed in the dialog box you see.&lt;br&gt;So, to fix this you should:&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;1) Start a second instance of visual studio&lt;br&gt;&lt;/em&gt;&lt;em&gt;2) go the the Tools menu, "Attach to process", select the 'devenv.exe' process, and click the 'attach' button.&lt;br&gt;3) In the Debug/Exceptions menu &lt;br&gt;&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;&lt;a href="http://lh4.google.com/jroland/R8PHsAo4FXI/AAAAAAAAADk/UP5fqExG9gU/image%5B2%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="128" alt="image" src="http://lh3.google.com/jroland/R8PHswo4FYI/AAAAAAAAADs/wgYU1n-j6c4/image_thumb" width="244" border="0"&gt;&lt;/a&gt; &lt;/p&gt;&lt;/em&gt; &lt;p&gt;&lt;em&gt;Turn on exception catching when first thrown (in the Debug-&amp;gt;Exceptions menu).&lt;br&gt;4) Open the designer with the debugger attached&lt;br&gt;5) The second visual studion will break on your error.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;This just help me to solve a "White screen of Darn" problem that plumb me for monthes, though i should share.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-7001459619046667364?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/7001459619046667364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=7001459619046667364' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7001459619046667364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7001459619046667364'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/02/how-to-solve-visual-studio-20052008.html' title='How to solve Visual Studio 2005/2008 : Exception of type &amp;#39;System.ComponentModel.Design.ExceptionCollection&amp;#39; was thrown.'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-2360064775377779573</id><published>2008-02-06T08:14:00.001-08:00</published><updated>2008-02-06T08:14:45.376-08:00</updated><title type='text'>John Frusciante is my god !</title><content type='html'>&lt;p&gt;&lt;a href="http://lh6.google.com/jroland/R6nc8NLA4oI/AAAAAAAAABk/2HCn14hXFdo/john%5B2%5D"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="john" src="http://lh5.google.com/jroland/R6nc89LA4pI/AAAAAAAAABs/lTQiT4okJyE/john_thumb" width="209" border="0"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-2360064775377779573?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/2360064775377779573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=2360064775377779573' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2360064775377779573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2360064775377779573'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/02/john-frusciante-is-my-god.html' title='John Frusciante is my god !'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-5652164264429900608</id><published>2008-01-23T13:50:00.001-08:00</published><updated>2008-01-23T13:50:12.352-08:00</updated><title type='text'>Le rapport Atali</title><content type='html'>&lt;p&gt;Le chef de l'Etat s'est cependant d�clar� oppos� � la suppression du principe de pr�caution et des d�partements. &lt;p&gt;&lt;strong&gt;Source:&lt;/strong&gt; Liberation.fr &lt;p&gt;&lt;strong&gt;Date:&lt;/strong&gt; mercredi 23 janvier 2008 &lt;p&gt;&lt;a href="http://www.liberation.fr/actualite/politiques/_files/file_305652_189189.pdf"&gt;Cliquez ici pour t�l�charger le rapport Attali au format PDF&lt;/a&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;Jacques Attali a remis ce midi son rapport sur la �lib�ralisation de la croissance� � Nicolas Sarkozy. Le rapport vise � donner un point de croissance en plus � la France et r�duire le taux de ch�mage � 5%, &lt;em&gt;�si toutes les mesures �taient appliqu�es�&lt;/em&gt;, selon Jacques Attali. &lt;p&gt;Le pr�sident de la R�publique &lt;em&gt;�adh�re � l'essentiel�&lt;/em&gt; des conclusions du rapport. Selon lui &lt;em&gt;�notre pays a besoin d'une cure de modernisation intensive�. �On va reprendre une tr�s grande partie des propositions�&lt;/em&gt;, affirme-t-il. Sauf deux : la suppression des d�partements, qui selon Nicolas Sarkozy se justifient par leur &lt;em&gt;�l�gitimit� historique�&lt;/em&gt;, et la suppression du principe de pr�caution, qui d'apr�s lui ne serait &lt;em&gt;�pas comprise�&lt;/em&gt; par les Fran�ais.&lt;br&gt;Sur le rapport rassemblant 316 propositions, les membres de la commission en ont pr�sent�es les principales :&lt;br&gt;&lt;strong&gt;Education et formation :&lt;/strong&gt;&lt;br&gt;- Augmentation des m�tiers de la petite enfance � la rentr�e 2008.&lt;br&gt;- Augmentation de la formation dans ces m�tiers.&lt;br&gt;- Sur l'universit�, g�n�ralisation d'une ann�e de stage incluse dans le cursus.&lt;br&gt;- Cr�ation de 10 p�les universitaires de taille mondiale, sur 10 nouveaux campus, et d�veloppement des partenariats public-priv�.&lt;br&gt;&lt;strong&gt;Environnement :&lt;/strong&gt;&lt;br&gt;- Cr�ation de 12 �co-villes&lt;br&gt;&lt;strong&gt;Entreprises :&lt;/strong&gt;&lt;br&gt;- Pour les PME, limiter les d�lais de paiement par la loi � 30 jours.&lt;br&gt;&lt;strong&gt;Num�rique :&lt;/strong&gt;&lt;br&gt;- R�duire la fracture num�rique : avec le haut d�bit pour tous en 2011 et le tr�s haut d�bit pour tous en 2016 ; en favorisant l'�quipement en ordinateur des m�nages d�favoris�s.&lt;br&gt;&lt;strong&gt;Rapports sociaux :&lt;/strong&gt;&lt;br&gt;- En mati�re sociale : favoriser la n�gociation pour produire les r�gles sociales, revoir la repr�sentativit� pour les organisations syndicales, que la validation des accords se fasse par accord majoritaire.&lt;br&gt;&lt;strong&gt;Lutte contre le ch�mage :&lt;/strong&gt;&lt;br&gt;- Sur le ch�mage des jeunes, cr�er un bonus-malus favorisant les entreprises qui embauchent des jeunes, notamment des jeunes de banlieue.&lt;br&gt;- Cr�ation de �contrats d'�volution�, favorisant la s�curisation des parcours professionnels.&lt;br&gt;- Soutien individuel plus fort dans la recherche d'emploi.&lt;br&gt;- D�veloppement de la formation pour les demandeurs d'emploi.&lt;br&gt;&lt;strong&gt;Commerce et service :&lt;/strong&gt;&lt;br&gt;- Supprimer les numerus clausus sur les professions r�glement�es (taxis, pharmaciens.)&lt;br&gt;- Ouvrir � la concurrence les secteurs prot�g�s, notamment la distribution.&lt;br&gt;&lt;strong&gt;Immigration&lt;/strong&gt; :&lt;br&gt;- Accueillir plus de travailleurs immigr�s qualifi�s. 250 000 immigr�s accueillis par an correspond � 0,5% de croissance par an en plus. Accueillir plus d'�tudiants, de chercheurs, d'artistes.&lt;br&gt;&lt;strong&gt;Services publics et fonctionnement de l'Etat :&lt;/strong&gt;&lt;br&gt;- Evaluer l'�fficacit� des services publics et des agents de la fonction publique.&lt;br&gt;- Instaurer des primes de performance dans la fonction public.&lt;br&gt;- Evaluer les projets de loi apr�s mise en oeuvre.&lt;br&gt;- Renforcer l'�chelon r�gional et supprimer les d�partements d'ici 10 ans.&lt;br&gt;&lt;strong&gt;Dette&lt;/strong&gt; :&lt;br&gt;- R�duire les d�ficits par une baisse de 20 milliards d'euros par an de la d�pense publique. Par exemple en d�sindexant pendant cinq ans les transferts de cr�dits de l'Etat vers les collectivit�s territoriales, et par la mise sous condition de ressources les allocations familiales.&lt;br&gt;Un s�minaire gouvernemental se tiendra d�but f�vrier pour d�cider des mesures prioritaires. La �loi sur la modernisation �conomique� pr�sent�e au printemps &lt;em&gt;�incluera des mesures du rapport�&lt;/em&gt;, a promis le chef de l'Etat.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-5652164264429900608?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/5652164264429900608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=5652164264429900608' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/5652164264429900608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/5652164264429900608'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/01/le-rapport-atali.html' title='Le rapport Atali'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-8628771158634272931</id><published>2008-01-22T08:32:00.001-08:00</published><updated>2008-01-22T08:32:05.865-08:00</updated><title type='text'>Get the properties of an object by reflection</title><content type='html'>&lt;p&gt;Actually it's very simple, but i always forget ... &lt;/p&gt; &lt;p&gt;This sample is also reading the property value, and writting is also.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;            MyEntity&lt;/span&gt; entity = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;MyEntity&lt;/span&gt;();&lt;br /&gt;            entity.Id = 10;&lt;br /&gt;            entity.Name = &lt;span style="color: rgb(163,21,21)"&gt;"TEST"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;PropertyInfo&lt;/span&gt; property &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; entity.GetType().GetProperties())&lt;br /&gt;            {&lt;br /&gt;                &lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;object&lt;/span&gt; value = property.GetValue(entity, &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: rgb(43,145,175)"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: rgb(163,21,21)"&gt;"{0} = {1}"&lt;/span&gt;, property.Name, value);&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (property.Name == &lt;span style="color: rgb(163,21,21)"&gt;"Id"&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    property.SetValue(entity, 11, &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;);&lt;br /&gt;                    &lt;span style="color: rgb(0,0,255)"&gt;object&lt;/span&gt; value2 = property.GetValue(entity, &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;);&lt;br /&gt;                    &lt;span style="color: rgb(43,145,175)"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: rgb(163,21,21)"&gt;"{0} changed to {1}"&lt;/span&gt;, property.Name, value2);&lt;br /&gt;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(43,145,175)"&gt;Console&lt;/span&gt;.Read();&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-8628771158634272931?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/8628771158634272931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=8628771158634272931' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8628771158634272931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8628771158634272931'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/01/get-properties-of-object-by-reflection.html' title='Get the properties of an object by reflection'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-982941076874021313</id><published>2008-01-13T00:51:00.001-08:00</published><updated>2008-01-13T00:51:53.150-08:00</updated><title type='text'>Le site d'ERP 360 est en ligne !</title><content type='html'>&lt;p&gt;La premi�re version du site consacr� a notre produit fare "ERP 360�" est maintenant en ligne.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.erp360.net"&gt;http://www.erp360.net&lt;/a&gt;&lt;/p&gt; &lt;p&gt;ERP 360 est une suite logiciel d�di�e � la gestion commerciale et particulierement adapt� au domaine du n�goce.&lt;/p&gt; &lt;p&gt;Au menu: Catalogue produit, centrale d'achat, devis, commande client, centrale de livraison, demande de prix fournisseur, gestion multi entrepot, transfert de stock, statistiques et analyse, suivi des KPI, etc.&lt;/p&gt; &lt;p&gt;Le logiciel est construit autour d'une framework d'extensibilit�, permettant en autres:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Des propri�t�s �tendues sur tous les objets.&lt;/li&gt; &lt;li&gt;Personalisations compl�tes des documents via la technologie gratuite "Microsoft Reporting".&lt;/li&gt; &lt;li&gt;Gestion de plugins&lt;/li&gt; &lt;li&gt;Extensions des actions massives sur les listes&lt;/li&gt; &lt;li&gt;Extensions des filtrages avanc�s&lt;/li&gt; &lt;li&gt;Extensions des propri�t�s sur les documents de ventes&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Des vid�os de pr�sentations sont disponibles sur le site.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-982941076874021313?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/982941076874021313/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=982941076874021313' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/982941076874021313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/982941076874021313'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2008/01/le-site-d-360-est-en-ligne.html' title='Le site d&amp;#39;ERP 360 est en ligne !'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-7924701180164177315</id><published>2007-12-16T11:46:00.000-08:00</published><updated>2007-12-16T11:46:48.618-08:00</updated><title type='text'>Chouteau Marc: ERP 360, une vision 360° de l'activité des entreprises</title><content type='html'>&lt;a href="http://marc-chouteau.blogspot.com/2007/12/erp-360-une-vision-360-de-l-des.html"&gt;Chouteau Marc: ERP 360, une vision 360° de l&amp;#39;activité des entreprises&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-7924701180164177315?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://marc-chouteau.blogspot.com/2007/12/erp-360-une-vision-360-de-l-des.html' title='Chouteau Marc: ERP 360, une vision 360° de l&apos;activité des entreprises'/><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/7924701180164177315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=7924701180164177315' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7924701180164177315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7924701180164177315'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/12/chouteau-marc-erp-360-une-vision-360-de.html' title='Chouteau Marc: ERP 360, une vision 360° de l&apos;activité des entreprises'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-381473116368096689</id><published>2007-12-15T12:09:00.001-08:00</published><updated>2007-12-15T12:09:03.561-08:00</updated><title type='text'>Remove ads and speed up web browsing experience</title><content type='html'>&lt;p&gt;It's something that everybody must do: change your host file to change the ip of the most well know ad server.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;here is a good host file replacement, juste follow the indications:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://everythingisnt.com/hosts.html" target="_blank"&gt;Remove web ads&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-381473116368096689?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/381473116368096689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=381473116368096689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/381473116368096689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/381473116368096689'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/12/remove-ads-and-speed-up-web-browsing.html' title='Remove ads and speed up web browsing experience'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-7243685736640692945</id><published>2007-12-14T08:27:00.001-08:00</published><updated>2007-12-14T08:27:34.547-08:00</updated><title type='text'>Host a Windows Form into another</title><content type='html'>&lt;p&gt;Here is a way to do it without the use of MDI.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(43,145,175)"&gt;Form2&lt;/span&gt; f2 = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Form2&lt;/span&gt;();&lt;br /&gt;f2.TopLevel = &lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;;&lt;br /&gt;f2.Location = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Point&lt;/span&gt;(0, 0);&lt;br /&gt;f2.Size = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Size&lt;/span&gt;(&lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.Width, &lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.Height - 40);&lt;br /&gt;f2.Anchor = &lt;span style="color: rgb(43,145,175)"&gt;AnchorStyles&lt;/span&gt;.Top | &lt;span style="color: rgb(43,145,175)"&gt;AnchorStyles&lt;/span&gt;.Left | &lt;span style="color: rgb(43,145,175)"&gt;AnchorStyles&lt;/span&gt;.Right | &lt;span style="color: rgb(43,145,175)"&gt;AnchorStyles&lt;/span&gt;.Bottom;&lt;br /&gt;f2.FormBorderStyle = &lt;span style="color: rgb(43,145,175)"&gt;FormBorderStyle&lt;/span&gt;.None;&lt;br /&gt;f2.BackColor = &lt;span style="color: rgb(43,145,175)"&gt;SystemColors&lt;/span&gt;.ControlDark;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.Controls.Add(f2);&lt;br /&gt;&lt;br /&gt;f2.Show();&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-7243685736640692945?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/7243685736640692945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=7243685736640692945' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7243685736640692945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7243685736640692945'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/12/host-windows-form-into-another.html' title='Host a Windows Form into another'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-4953206342619695381</id><published>2007-10-26T00:54:00.001-07:00</published><updated>2007-10-26T00:54:27.607-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.nettiers'/><category scheme='http://www.blogger.com/atom/ns#' term='CruiseControl'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>"AssemblyInfo version" custom CruiseControl.Net labeller</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I need this one in order to integrate a .netTiers project into my build server, cause i want the ccnet project to be labelled with the version written in the assemblyinfo, as this number is generated and incremented at each netTiers generation.&lt;/p&gt; &lt;p&gt;CCnet do not have such labeller, but hopefully it offer a simple extensibility framework for this.&lt;/p&gt; &lt;p&gt;First create a class library project, but be carefull the output file must match the following naming convention in order to be loaded as a plugin container by the ccnet server: CCNet.*.Plugin.dll, so typically you will call your project: &lt;strong&gt;CCNet.MyCompanyName.Plugin&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;then add these references:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;ThoughtWorks.CruiseControl.Core&lt;/li&gt; &lt;li&gt;ThoughtWorks.CruiseControl.Remote&lt;/li&gt; &lt;li&gt;NetReflector&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;ok now our custom labeller mechanics: an input I juste want to indicate the path to my assemblyinfo file, and optionnally to modify the regexp to catch the version string, here is the code of the class:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; Exortech.NetReflector;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Globalization;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Threading;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; ThoughtWorks.CruiseControl.Core;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; ThoughtWorks.CruiseControl.Remote;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;using&lt;/span&gt; System.Text.RegularExpressions;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;namespace&lt;/span&gt; CCNet.Serialcoder.Plugin&lt;br /&gt;{&lt;br /&gt;    [&lt;span style="color: rgb(43,145,175)"&gt;ReflectorType&lt;/span&gt;(&lt;span style="color: rgb(163,21,21)"&gt;"assemblyinfolabeller"&lt;/span&gt;)]&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;AssemblyInfoLabeller&lt;/span&gt; : &lt;span style="color: rgb(43,145,175)"&gt;ILabeller&lt;/span&gt;, &lt;span style="color: rgb(43,145,175)"&gt;ITask&lt;br /&gt;&lt;/span&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; Generate(&lt;span style="color: rgb(43,145,175)"&gt;IIntegrationResult&lt;/span&gt; previousResult)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(43,145,175)"&gt;Regex&lt;/span&gt; regex = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Regex&lt;/span&gt;(m_Pattern);&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; content = System.IO.&lt;span style="color: rgb(43,145,175)"&gt;File&lt;/span&gt;.ReadAllText(m_Path);&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(43,145,175)"&gt;Match&lt;/span&gt; versionMatch = regex.Match(content);&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (versionMatch == &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;throw&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;ApplicationException&lt;/span&gt;(&lt;span style="color: rgb(163,21,21)"&gt;"cannot find the version"&lt;/span&gt;);&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; previousResult.Label;&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;else&lt;br /&gt;&lt;/span&gt;            {&lt;br /&gt;                &lt;span style="color: rgb(43,145,175)"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: rgb(163,21,21)"&gt;"AssemblyInfoLabeller: {0}"&lt;/span&gt;, versionMatch.Groups[&lt;span style="color: rgb(163,21,21)"&gt;"version"&lt;/span&gt;].Value);&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; versionMatch.Groups[&lt;span style="color: rgb(163,21,21)"&gt;"version"&lt;/span&gt;].Value;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; Run(&lt;span style="color: rgb(43,145,175)"&gt;IIntegrationResult&lt;/span&gt; result)&lt;br /&gt;        {&lt;br /&gt;            result.Label = &lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.Generate(result);&lt;br /&gt;        }&lt;br /&gt;                &lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; m_Path;&lt;br /&gt;&lt;br /&gt;        [&lt;span style="color: rgb(43,145,175)"&gt;ReflectorProperty&lt;/span&gt;(&lt;span style="color: rgb(163,21,21)"&gt;"path"&lt;/span&gt;, Required = &lt;span style="color: rgb(0,0,255)"&gt;true&lt;/span&gt;)]&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; Path&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; m_Path; }&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;set&lt;/span&gt; { m_Path = &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; m_Pattern = &lt;span style="color: rgb(163,21,21)"&gt;@"AssemblyVersion\(""(?&amp;lt;version&amp;gt;[^\""]*)""\)"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        [&lt;span style="color: rgb(43,145,175)"&gt;ReflectorProperty&lt;/span&gt;(&lt;span style="color: rgb(163,21,21)"&gt;"pattern"&lt;/span&gt;, Required = &lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;)]&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; Pattern&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; m_Pattern; }&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;set&lt;/span&gt; { m_Pattern = &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;; }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Compile, juste put the dll in the c:\program files\cruisecontrol.net\server directory&lt;/p&gt;&lt;br /&gt;&lt;p&gt;then in your ccnet.config file, you can use the new labeller this way:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;labeller&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt; &lt;/span&gt;&lt;span style="color: rgb(255,0,0)"&gt;type&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;=&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;assemblyinfolabeller&lt;/span&gt;"&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;  &amp;lt;&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;path&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;c:\projects\src\Applications\Serialcoder.Northwind\trunk\nettiers\assemblyinfo.cs&lt;span style="color: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;path&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(163,21,21)"&gt;labeller&lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-4953206342619695381?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/4953206342619695381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=4953206342619695381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4953206342619695381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4953206342619695381'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/10/version-custom-cruisecontrolnet.html' title='&amp;quot;AssemblyInfo version&amp;quot; custom CruiseControl.Net labeller'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-2936944256037991430</id><published>2007-09-25T09:27:00.001-07:00</published><updated>2007-09-25T09:27:10.469-07:00</updated><title type='text'>Get the Length of an SQL SERVER IMAGE column</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Here is an example of running these commands on an IMAGE data type using the DATALENGTH function: &lt;p&gt;SELECT name, DATALENGTH(packagedata) &lt;br&gt;FROM dbo.sysdtspackages&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-2936944256037991430?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/2936944256037991430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=2936944256037991430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2936944256037991430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2936944256037991430'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/09/get-length-of-sql-server-image-column.html' title='Get the Length of an SQL SERVER IMAGE column'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-547092640129121275</id><published>2007-09-24T13:21:00.001-07:00</published><updated>2007-09-24T13:21:47.039-07:00</updated><title type='text'>Set Focus in ASP.NET 2.0</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;From &lt;a href="http://www.beansoftware.com/ASP.NET-Tutorials/Focus-ASP.NET.aspx" target="_blank"&gt;http://www.beansoftware.com/ASP.NET-Tutorials/Focus-ASP.NET.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;ASP.NET 2.0 simplified this problem and introduce a concept of "default focus". There is a new DefaultFocus attribute that allows you to easily set focus to desired controls. The sample HTML code bellow will set focus on control named textbox1: &lt;p&gt;&amp;lt;form id="Form1" defaultfocus="textbox" runat="server"&amp;gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:textbox id="textbox1" runat="server"/&amp;gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:textbox id="textbox2" runat="server"/&amp;gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:button id="button1" text="Button1" runat="server"/&amp;gt; &lt;br&gt;&amp;lt;/form&amp;gt;  &lt;p&gt;ASP.NET 2.0 provides three different new solutions if you need to set focus dynamically. At run time you can use Page.SetFocus method with control's ID as a parameter or you can simply call a new control's Focus method. They both do practically the same thing. It is only programmer's choice to choose which method likes more.  &lt;p&gt;There is also DefaultFocus property of the form element. Set this property to ID of wanted control, run the project and that control will get focus when page is first time loaded. &lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-547092640129121275?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/547092640129121275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=547092640129121275' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/547092640129121275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/547092640129121275'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/09/set-focus-in-aspnet-20.html' title='Set Focus in ASP.NET 2.0'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-121794320506502384</id><published>2007-09-24T13:19:00.001-07:00</published><updated>2007-09-24T13:19:35.167-07:00</updated><title type='text'>Default buttons in ASP.NET 2.0</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;taken from &lt;a href="http://www.beansoftware.com/ASP.NET-Tutorials/Accept-Enter-Key.aspx" target="_blank"&gt;http://www.beansoftware.com/ASP.NET-Tutorials/Accept-Enter-Key.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;ASP.NET 2.0 makes this problems easier and introduce a concept of a "default button". New defaultbutton attribute can be used with &amp;lt;form&amp;gt; or &amp;lt;asp:panel&amp;gt; control. What button will be "clicked" depends of where acutally cursor is and what button is choosen as a default button for form or a panel. &lt;/p&gt; &lt;p&gt;Here is sample HTML code that contains one form and one panel control: &lt;p&gt;&amp;lt;form defaultbutton="button1" runat="server"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:textbox id="textbox1" runat="server"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:textbox id="textbox2" runat="server"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:button id="button1" text="Button1" runat="server"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:panel defaultbutton="button2" runat="server"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:textbox id="textbox3" runat="server"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;asp:button id="button2" runat="server"/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/asp:panel&amp;gt;&lt;br&gt;&amp;lt;/form&amp;gt;   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-121794320506502384?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/121794320506502384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=121794320506502384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/121794320506502384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/121794320506502384'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/09/default-buttons-in-aspnet-20.html' title='Default buttons in ASP.NET 2.0'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-4824138794326708845</id><published>2007-09-13T06:11:00.001-07:00</published><updated>2009-04-29T08:39:16.672-07:00</updated><title type='text'>How to make an USB key autorun</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I was searching this for how a long time, my personnal usage is to run &lt;a href="http://www.keepass.org" target="_blank"&gt;Keepass&lt;/a&gt; (the opensource password manager) automatically when i plug my usb key. This solution actually not run keepass but it opens the XP run dialog, with a new entry, like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.google.com/jroland/Ruk2_jqaR7I/AAAAAAAAABU/f5OPwV3ZILw/image%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="image" src="http://lh5.google.com/jroland/Ruk3ATqaR8I/AAAAAAAAABc/N83jOpyKbGE/image_thumb.png" width="230" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To make this happen, you have to create an &amp;quot;&lt;strong&gt;autorun.inf&lt;/strong&gt;&amp;quot; file on the root of the key, with the following content:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;[Autorun]     &lt;br /&gt;Open=KeePass.exe      &lt;br /&gt;Action=Start KeePass      &lt;br /&gt;Icon=KeePass.exe      &lt;br /&gt;Label=KeePass&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I let you customize...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-4824138794326708845?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/4824138794326708845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=4824138794326708845' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4824138794326708845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4824138794326708845'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/09/how-to-make-usb-key-autorun.html' title='How to make an USB key autorun'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-6473819553260199712</id><published>2007-09-06T12:26:00.001-07:00</published><updated>2007-09-06T12:26:48.057-07:00</updated><title type='text'>Binding a list of entity into a datagridview throw a BindingSource</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font face="Trebuchet MS"&gt;it works great till you press the 'esc' key on the first row... then it throw a InvalidOperationException grrrr&lt;/font&gt;&lt;/p&gt; &lt;p&gt;the solution i present here is a little mod of the one presented here:&lt;/p&gt; &lt;p&gt; &lt;div class="wlWriterSmartContent" id="scid:605EEA63-B54B-4e6d-A290-F5E9E8229FC1:1ee91667-bc25-4833-bf01-f387305c8b7f" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Source: &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=301807&amp;amp;SiteID=1"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=301807&amp;SiteID=1&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;img src="http://lh5.google.com/jroland/RuBUdz9lOgI/AAAAAAAAABM/H741Ov767qM/06.09.2007.21.18.00.984.jpg" /&gt;&lt;/div&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You have to subclass the DataGridView and add the following override:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;bool&lt;/span&gt; ProcessCmdKey(&lt;span style="color: rgb(0,0,255)"&gt;ref&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Message&lt;/span&gt; msg, &lt;span style="color: rgb(43,145,175)"&gt;Keys&lt;/span&gt; keyData)&lt;br /&gt;{&lt;br /&gt;      &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (keyData == &lt;span style="color: rgb(43,145,175)"&gt;Keys&lt;/span&gt;.Escape)&lt;br /&gt;      {&lt;br /&gt;           &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; ((Rows.Count == 1 || Rows.Count == 2) &amp;amp;&amp;amp; (CurrentCell != &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt; &amp;amp;&amp;amp; CurrentCell.RowIndex == 0))&lt;br /&gt;           {&lt;br /&gt;               &lt;span style="color: rgb(43,145,175)"&gt;IBindingList&lt;/span&gt; bl = (&lt;span style="color: rgb(43,145,175)"&gt;IBindingList&lt;/span&gt;)DataSource;&lt;br /&gt;               bl.Clear();&lt;br /&gt;               &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;true&lt;/span&gt;;&lt;br /&gt;           }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;base&lt;/span&gt;.ProcessCmdKey(&lt;span style="color: rgb(0,0,255)"&gt;ref&lt;/span&gt; msg, keyData);&lt;br /&gt;}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-6473819553260199712?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/6473819553260199712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=6473819553260199712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6473819553260199712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6473819553260199712'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/09/binding-list-of-entity-into.html' title='Binding a list of entity into a datagridview throw a BindingSource'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-645478095179378686</id><published>2007-06-15T04:45:00.001-07:00</published><updated>2007-06-15T04:45:46.974-07:00</updated><title type='text'>Cr�ation colonne DataGridView et persistence des propri�t�s</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Si vous essayer de cr�er une nouveau type de colonne pour une datagridview, et que vous essayer d'y ajouter une propri�t�, aucun probl�me pour voir cette propri�t� dans l'�diteur de colonne du designer de Visual studio. Par contre, si vous entrez une valeur pour cette propri�t�, elle n'est pas enregistr�e dans le designer, et si vous editez une nouvelle fois cette colonne, la propri�t� reste vide... voici la classe que j'ai cr�e:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;DataGridViewSortableTextBoxColumn&lt;/span&gt; : System.Windows.Forms.&lt;span style="color: rgb(43,145,175)"&gt;DataGridViewTextBoxColumn&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; m_SortPropertyName;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; SortPropertyName&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.m_SortPropertyName; }&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;set&lt;br /&gt;&lt;/span&gt;            {&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.m_SortPropertyName != &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.m_SortPropertyName = &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;       }&lt;br&gt;}&lt;/pre&gt;&lt;pre class="code"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="code"&gt;en fait la solution est simple et viens du fait qu'il faut overrider la methode Clone() car elle est utilis�e par la mechanique du designer, voici donc la classe revue et corrig�e:&lt;/pre&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;class&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;DataGridViewSortableTextBoxColumn&lt;/span&gt; : System.Windows.Forms.&lt;span style="color: rgb(43,145,175)"&gt;DataGridViewTextBoxColumn&lt;br /&gt;&lt;/span&gt;{&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; m_SortPropertyName;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt; SortPropertyName&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.m_SortPropertyName; }&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;set&lt;br /&gt;&lt;/span&gt;            {&lt;br /&gt;                &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (&lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.m_SortPropertyName != &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.m_SortPropertyName = &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;        &lt;/span&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;object&lt;/span&gt; Clone()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(43,145,175)"&gt;DataGridViewSortableTextBoxColumn&lt;/span&gt; col = (&lt;span style="color: rgb(43,145,175)"&gt;DataGridViewSortableTextBoxColumn&lt;/span&gt;)&lt;span style="color: rgb(0,0,255)"&gt;base&lt;/span&gt;.Clone();&lt;br /&gt;            col.SortPropertyName = m_SortPropertyName;&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; col;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;/pre&gt;r�f�rence: &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=652532&amp;amp;SiteId=1" target="_blank"&gt;Post sur les forums MSDN&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-645478095179378686?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/645478095179378686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=645478095179378686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/645478095179378686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/645478095179378686'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/06/cration-colonne-datagridview-et.html' title='Cr�ation colonne DataGridView et persistence des propri�t�s'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-2724710157859691780</id><published>2007-04-24T05:20:00.001-07:00</published><updated>2007-04-24T05:20:46.191-07:00</updated><title type='text'>Serialcoder recrute</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;J'ai le bonheur d'annoncer que ma société recrute, donc si vous souhaitez rejoindre notre equipe et devenir vous meme un Serialcoder, il faut déjà un bon niveau avec le framework .Net 2.0, que le c# soit votre language natal, que les designs patterns n'aient plus de secret pour vous et que vous soyez a l'aise aussi bien en winforms qu'en asp.net.  &lt;p&gt;Si vous réunissez tous ces critères et que vous voulez participer à une grande aventure dans une startup inovante, envoyez moi votre CV à &lt;a href="mailto:cv@serialcoder.net"&gt;cv@serialcoder.net&lt;/a&gt;&amp;nbsp;, veuillez y faire figurer vos réalisations, copie d'ecran ou link ainsi que vos pretentions salariales, reponse très rapide assurée. &lt;p&gt;Les postes sont à pourvoir dès maintenant dans la région Lyonnaise (Axe Lyon Grenoble).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-2724710157859691780?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/2724710157859691780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=2724710157859691780' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2724710157859691780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2724710157859691780'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/04/serialcoder-recrute.html' title='Serialcoder recrute'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-52423286565887190</id><published>2007-02-07T06:11:00.001-08:00</published><updated>2007-02-07T06:11:34.505-08:00</updated><title type='text'>String collection UITypeEditor</title><content type='html'>&lt;p&gt;&lt;/p&gt;&lt;pre class="code"&gt;[&lt;span style="color: rgb(0,128,128)"&gt;Category&lt;/span&gt;(&lt;span style="color: rgb(128,0,0)"&gt;"Custom Attributes"&lt;/span&gt;)]&lt;br /&gt;[&lt;span style="color: rgb(0,128,128)"&gt;Description&lt;/span&gt;(&lt;span style="color: rgb(128,0,0)"&gt;"List of possible values"&lt;/span&gt;)]&lt;br /&gt;[&lt;span style="color: rgb(0,128,128)"&gt;Editor&lt;/span&gt;(&lt;span style="color: rgb(128,0,0)"&gt;@"System.Windows.Forms.Design.StringCollectionEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;typeof&lt;/span&gt;(System.Drawing.Design.&lt;span style="color: rgb(0,128,128)"&gt;UITypeEditor&lt;/span&gt;))]&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0,128,128)"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(0,0,255)"&gt;string&lt;/span&gt;&amp;gt; Items&lt;br /&gt;{&lt;br /&gt;   &lt;span style="color: rgb(0,0,255)"&gt;get&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.m_Items; }&lt;br /&gt;   &lt;span style="color: rgb(0,0,255)"&gt;set&lt;/span&gt; { &lt;span style="color: rgb(0,0,255)"&gt;this&lt;/span&gt;.m_Items = &lt;span style="color: rgb(0,0,255)"&gt;value&lt;/span&gt;; }&lt;br /&gt;}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-52423286565887190?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/52423286565887190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=52423286565887190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/52423286565887190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/52423286565887190'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/02/string-collection-uitypeeditor.html' title='String collection UITypeEditor'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-6194998799523286572</id><published>2007-02-05T01:21:00.001-08:00</published><updated>2007-02-16T05:38:29.117-08:00</updated><title type='text'>MagicWords, a SlickRun clone</title><content type='html'>&lt;p&gt; &lt;/p&gt; &lt;p&gt;MagicWords is an improved command line tool, that give you the ability to create "Magic Word" that can run any program (with parameters), launch any url or files. &lt;/p&gt; &lt;p&gt;The user interface consists of a simple textbox, that is hidden in the tray bar by default, and that can be activated by pressing the CTRL-F12 combinaison.  &lt;/p&gt;&lt;p&gt;The textbox has auto-completion, so you actually just need to type 2 or 3 letters to launch your application; which is the far more easy and instictive than desktop shortcuts or menus.  &lt;/p&gt;&lt;p&gt;This application is inspired by the awesome SlickRun, and intend to give users an OpenSource alternative.  &lt;/p&gt;&lt;p&gt;A plugin support is on the way.  &lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&lt;a title="Download MagicWords, a SlickRun clone" href="http://code.google.com/p/magicwords/downloads/list"&gt;Go to the Download page&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;The project is hosted on Google Opensource project hosting. You can get the latest sources with a SVN client.&lt;br&gt;&lt;br /&gt;Use this command to anonymously check out the latest project source code:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;svn checkout http://magicwords.googlecode.com/svn/trunk/ magicwords &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-6194998799523286572?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/6194998799523286572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=6194998799523286572' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6194998799523286572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6194998799523286572'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/02/magicwords-slickrun-clone.html' title='MagicWords, a SlickRun clone'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-1955384166094975698</id><published>2007-02-04T05:43:00.001-08:00</published><updated>2007-02-04T05:43:38.337-08:00</updated><title type='text'>How do I bind the values of an enum to a ComboBox?</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;From the SyncFusion Windows Forms FAQ:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;This entry was created using the feedback provided by Jay Harlow in the newsgroups. &lt;p&gt;The enum values can be bound to a combobox as follows: &lt;p&gt;[C#]  &lt;p&gt;// Setup the binding as follows:  &lt;p&gt;// MyValues is the enum type  &lt;p&gt;comboBox1.DataSource = Enum.GetValues(typeof MyValues);  &lt;p&gt;[VB]  &lt;p&gt;comboBox1.DataSource = Enum.GetValues(Type.GetType(MyValues))  &lt;p&gt;Then in the SelectedValueChanged event for the ComboBox. &lt;p&gt;[C#]  &lt;p&gt;private void ComboBox1ValueChanged(object sender, EventArgs e)  &lt;p&gt;{  &lt;p&gt;MyValues v = (MyValues)this.comboBox1.SelectedValue;  &lt;p&gt;}  &lt;p&gt;[VB]  &lt;p&gt;Private Sub ComboBox1ValueChanged(ByVal sender As Object, ByVal e As EventArgs)  &lt;p&gt;Dim v As MyValues = CType(Me.comboBox1.SelectedValue, MyValues)  &lt;p&gt;End Sub &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-1955384166094975698?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/1955384166094975698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=1955384166094975698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/1955384166094975698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/1955384166094975698'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/02/how-do-i-bind-values-of-enum-to.html' title='How do I bind the values of an enum to a ComboBox?'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-378469747380411983</id><published>2007-01-31T12:57:00.001-08:00</published><updated>2007-01-31T12:57:12.993-08:00</updated><title type='text'>Show a c# Windows Forms on dual monitor</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Actually this can be done very easily with the &lt;strong&gt;Screen&lt;/strong&gt; class. &lt;br&gt;Here is a small sample that display a second form, fullscreen, on your second monitor if there is one. &lt;br&gt;&lt;br&gt;&lt;em&gt;Note&lt;/em&gt;: The code is to be put in your main Form class.&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: rgb(0,0,255)"&gt;protected&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;override&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;void&lt;/span&gt; OnLoad(&lt;span style="color: rgb(43,145,175)"&gt;EventArgs&lt;/span&gt; e)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;base&lt;/span&gt;.OnLoad(e);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;Screen&lt;/span&gt;.AllScreens.Length &amp;gt; 1)&lt;br /&gt;    {&lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: rgb(43,145,175)"&gt;Form2&lt;/span&gt; frm = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Form2&lt;/span&gt;();&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,128,0)"&gt;// Important !&lt;br /&gt;&lt;/span&gt;        frm.StartPosition = &lt;span style="color: rgb(43,145,175)"&gt;FormStartPosition&lt;/span&gt;.Manual;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,128,0)"&gt;// Get the second monitor screen&lt;br /&gt;&lt;/span&gt;        &lt;span style="color: rgb(43,145,175)"&gt;Screen&lt;/span&gt; screen = GetSecondaryScreen();&lt;br /&gt;        &lt;br /&gt;        &lt;span style="color: rgb(0,128,0)"&gt;// set the location to the top left of the second screen&lt;br /&gt;&lt;/span&gt;        frm.Location = screen.WorkingArea.Location;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,128,0)"&gt;// set it fullscreen&lt;br /&gt;&lt;/span&gt;        frm.Size = &lt;span style="color: rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Size&lt;/span&gt;(screen.WorkingArea.Width, screen.WorkingArea.Height);&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: rgb(0,128,0)"&gt;// Show the form&lt;br /&gt;&lt;/span&gt;        frm.Show();&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Screen&lt;/span&gt; GetSecondaryScreen()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;Screen&lt;/span&gt;.AllScreens.Length == 1)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;foreach&lt;/span&gt; (&lt;span style="color: rgb(43,145,175)"&gt;Screen&lt;/span&gt; screen &lt;span style="color: rgb(0,0,255)"&gt;in&lt;/span&gt; &lt;span style="color: rgb(43,145,175)"&gt;Screen&lt;/span&gt;.AllScreens)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(0,0,255)"&gt;if&lt;/span&gt; (screen.Primary == &lt;span style="color: rgb(0,0,255)"&gt;false&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; screen;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;;&lt;br /&gt;}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-378469747380411983?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/378469747380411983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=378469747380411983' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/378469747380411983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/378469747380411983'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/01/show-c-windows-forms-on-dual-monitor.html' title='Show a c# Windows Forms on dual monitor'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-3306601318522636797</id><published>2007-01-31T09:16:00.001-08:00</published><updated>2007-01-31T09:16:16.700-08:00</updated><title type='text'>How to DataBind a ThreeState CheckBox</title><content type='html'>&lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Here is the way to do a DataBinding between a Property and&amp;nbsp;a CheckBox that have a ThreeState mode enabled. To do this&amp;nbsp;the property have to be a nullable bool (bool?), it's called &lt;strong&gt;NotCompleted&lt;/strong&gt; in my case:&lt;/p&gt;&lt;pre class="code"&gt;uxCheckBox.DataBindings.Add(&lt;span style="color: rgb(128,0,0)"&gt;"CheckState"&lt;/span&gt;, ProductFilter, &lt;span style="color: rgb(128,0,0)"&gt;"NotCompleted"&lt;/span&gt;, &lt;span style="color: rgb(0,0,255)"&gt;true&lt;/span&gt;, &lt;span style="color: rgb(0,128,128)"&gt;DataSourceUpdateMode&lt;/span&gt;.OnPropertyChanged, &lt;span style="color: rgb(0,0,255)"&gt;null&lt;/span&gt;, &lt;span style="color: rgb(128,0,0)"&gt;""&lt;/span&gt;);&lt;br /&gt;            &lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Then, NotCompleted will be equal to :&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;true&lt;/strong&gt; if (uxCheckBox.CheckState == CheckState.Checked) &lt;br /&gt;&lt;li&gt;&lt;strong&gt;false&lt;/strong&gt; if (uxCheckBox.CheckState == CheckState.UnChecked) &lt;br /&gt;&lt;li&gt;&lt;strong&gt;null&lt;/strong&gt; if (uxCheckBox.CheckState == CheckState.Undeterminate)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Trying to bind to a Property of type System.Windows.Forms.CheckState just not work....&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-3306601318522636797?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/3306601318522636797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=3306601318522636797' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/3306601318522636797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/3306601318522636797'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/01/how-to-databind-threestate-checkbox.html' title='How to DataBind a ThreeState CheckBox'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-6589273122560681732</id><published>2007-01-25T12:28:00.001-08:00</published><updated>2007-01-25T12:28:47.964-08:00</updated><title type='text'>Connections to SQL Server files (*.mdf) require SQL Server Express 2005 to function properly. Please verify the installation of the component ...</title><content type='html'>&lt;p&gt;I've got this error message while trying to add a Database file into a c# website project :-s .&lt;br&gt;After a bit googling it appears that Visual studio 2005 is trying to connect to a SQLSERVEREXPRESS instance name, and yes this can be change easily, if like me, you have change this name during SQL server express 2005 installation. here we go:&lt;/p&gt; &lt;p&gt;In visual studio 2005, open the Tools menu&lt;/p&gt; &lt;p&gt;click on the "Options" item&lt;/p&gt; &lt;p&gt;Select the "Database Tools" node&lt;/p&gt; &lt;p&gt;Select the "Data Connections"&amp;nbsp;child node&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;then you have a text box with the following label:&lt;/p&gt; &lt;p&gt;"SQL server Instance Name (blank for default): &lt;br&gt;"SQLSERVEREXPRESS"&lt;/p&gt; &lt;p&gt;for me it was just a matter of leaving it blank, and then adding a mdf file to the project is just working fine :-D&lt;/p&gt; &lt;p&gt;I've not found the solution anywhere else, I must be stupid... anyway, hope it helps someone.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-6589273122560681732?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/6589273122560681732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=6589273122560681732' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6589273122560681732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6589273122560681732'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/01/connections-to-sql-server-files-mdf.html' title='Connections to SQL Server files (*.mdf) require SQL Server Express 2005 to function properly. Please verify the installation of the component ...'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-4523048055761252079</id><published>2007-01-25T06:03:00.001-08:00</published><updated>2007-01-25T06:03:26.278-08:00</updated><title type='text'>Visual Studio 2005 - SP1 - Application failed to initialize 0xc015004</title><content type='html'>&lt;p&gt;I was just installing a new laptop (Windows XP SP 2), then installing Visual Studio 2005, no problem until there.&lt;br&gt;Then I decide to install the Visual Studio 2005 Service Pack 1, but I got an error during the process: insufisant space on the C: drive ... :-s&lt;br&gt;I fix this by increasing the partition, but then i got an stopping error when installing the SP1 (err 280 ?) &amp;nbsp;and even an error while uninstalling / reinstalling Visual Studio !&lt;/p&gt; &lt;p&gt;I finnally succeed to re-install everything correcly by uninstally everything with the help of the &lt;a title="Dot Net framework cleanup tool" href="http://astebner.sts.winisp.net/tools/dotnetfx_cleanup_tool.zip"&gt;dotnetfx_cleanup_tool.zip&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:91789370-98cc-4104-9a0b-397ecdc421f7" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/Visual%20Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;, &lt;a href="http://technorati.com/tags/DotNet" rel="tag"&gt;DotNet&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-4523048055761252079?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/4523048055761252079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=4523048055761252079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4523048055761252079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4523048055761252079'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/01/visual-studio-2005-sp1-application.html' title='Visual Studio 2005 - SP1 - Application failed to initialize 0xc015004'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-6517157338776061367</id><published>2007-01-16T08:32:00.001-08:00</published><updated>2007-01-16T08:52:11.686-08:00</updated><title type='text'>.netTiers and SmartCodeGenerator</title><content type='html'>&lt;p&gt;If you are a lover of code generation, you must check the new OpenSource project called &lt;a title="SmartCodeGenerator" href="http://www.smartcodegenerator.com" target="_blank"&gt;SmartCodeGenerator&lt;/a&gt;, it's a very new ASP.NET based template engine (close in that way to codesmith), with some powerfull Database Schema Explorer API, that run against SQL Server, MySql and&amp;nbsp;Oracle for now !&lt;/p&gt; &lt;p&gt;As .netTiers are openSource templates, it is very naturally that both teams will work together to bring .netTiers on that new generation plateform.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:56406b43-ad66-46f9-88bd-2b1f9ac2c27e" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/code%20generation" rel="tag"&gt;code generation&lt;/a&gt;, &lt;a href="http://technorati.com/tags/nettiers" rel="tag"&gt;nettiers&lt;/a&gt;, &lt;a href="http://technorati.com/tags/smartcodegenerator" rel="tag"&gt;smartcodegenerator&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-6517157338776061367?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/6517157338776061367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=6517157338776061367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6517157338776061367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6517157338776061367'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/01/nettiers-and-smartcodegenerator.html' title='.netTiers and SmartCodeGenerator'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-2155451010977377205</id><published>2007-01-12T02:16:00.001-08:00</published><updated>2007-01-12T02:16:51.909-08:00</updated><title type='text'>HttpWebRequest NetworkCredential with NTLM authentication</title><content type='html'>&lt;p&gt;Here is a usefull snippet if you want to programmatically acces to an url protected with a windows authentication. My first problem was the authentication type. here is the code:&amp;nbsp;&lt;/p&gt;&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="#008080"&gt;HttpWebRequest&lt;/font&gt; request = (&lt;font color="#008080"&gt;HttpWebRequest&lt;/font&gt;)WebRequest.Create(url);&lt;br /&gt;request.Method = "GET";&lt;br /&gt;request.KeepAlive = &lt;font color="blue"&gt;true&lt;/font&gt;;&lt;br /&gt;request.Accept = @"*/*";&lt;br /&gt;&lt;br /&gt;&lt;font color="blue"&gt;if&lt;/font&gt; (&lt;font color="blue"&gt;string&lt;/font&gt;.IsNullOrEmpty(user) == &lt;font color="blue"&gt;false&lt;/font&gt; &amp;amp;&amp;amp; &lt;font color="blue"&gt;string&lt;/font&gt;.IsNullOrEmpty(password) == &lt;font color="blue"&gt;false&lt;/font&gt;)&lt;br /&gt;{&lt;br /&gt;    &lt;font color="#008080"&gt;NetworkCredential&lt;/font&gt; credential = &lt;font color="blue"&gt;new&lt;/font&gt; &lt;font color="#008080"&gt;NetworkCredential&lt;/font&gt;(user, password);&lt;br /&gt;    CredentialCache credentialCache = &lt;font color="blue"&gt;new&lt;/font&gt; CredentialCache();&lt;br /&gt;    credentialCache.Add(&lt;font color="blue"&gt;new&lt;/font&gt; Uri(url), "NTLM", credential);&lt;br /&gt;    request.Credentials = credentialCache;&lt;br /&gt;}            &lt;br&gt;&lt;br /&gt;&lt;font color="#008080"&gt;HttpWebResponse&lt;/font&gt; response = &lt;font color="blue"&gt;null&lt;/font&gt;;&lt;br /&gt;&lt;font color="blue"&gt;try&lt;/font&gt;&lt;br /&gt;{&lt;br /&gt;    response = (HttpWebResponse)request.GetResponse();&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-2155451010977377205?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/2155451010977377205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=2155451010977377205' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2155451010977377205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2155451010977377205'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/01/httpwebrequest-networkcredential-with.html' title='HttpWebRequest NetworkCredential with NTLM authentication'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-6008038197320096677</id><published>2007-01-10T00:58:00.001-08:00</published><updated>2007-01-18T05:18:18.090-08:00</updated><title type='text'>Make an HTML Table looks like an Excel Worksheet</title><content type='html'>&lt;p&gt;a very simple tip, but I found it very useful. here is the html/CSS code:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&amp;lt;style&amp;gt;&lt;br /&gt;    table { &lt;br /&gt;    border: AppWorkspace solid 1px; &lt;br /&gt;    font-size: 0.8em; &lt;br /&gt;    text-align: center; &lt;br /&gt;    border-collapse:collapse; &lt;br /&gt;    style: 600px;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;tr.header{&lt;br /&gt;    font-weight: bold;&lt;br /&gt;    background-color: #ffffef&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;td { &lt;br /&gt;    border: 1px solid AppWorkspace; &lt;br /&gt;    margin: 0; &lt;br /&gt;    padding: 3px; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;table&amp;gt;&lt;br /&gt;    &amp;lt;tr class="header"&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;test&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;test&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;test&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;test&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;test&amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;/tr&amp;gt;&lt;br /&gt;    &amp;lt;tr&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;test2&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;test2&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;test2&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;test2&amp;lt;/td&amp;gt;&lt;br /&gt;        &amp;lt;td&amp;gt;test2&amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;/tr&amp;gt;&lt;br /&gt;    &lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&lt;strong&gt;it will render like this :&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;amp;file_id=f_38272411"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-6008038197320096677?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/6008038197320096677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=6008038197320096677' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6008038197320096677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6008038197320096677'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/01/make-html-table-looks-like-excel.html' title='Make an HTML Table looks like an Excel Worksheet'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-3743601325763096529</id><published>2007-01-09T04:27:00.001-08:00</published><updated>2007-01-09T04:27:36.377-08:00</updated><title type='text'>WebDesign and Colors</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;h6&gt;Source: &lt;a title="http://www.pepfx.com/articles/web_design/webdesign_colors.php" href="http://www.pepfx.com/articles/web_design/webdesign_colors.php"&gt;http://www.pepfx.com/articles/web_design/webdesign_colors.php&lt;/a&gt;&lt;/h6&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;Brief summary of some of the emotions/feelings associated with color:&lt;/h3&gt;&lt;img height="148" alt="Color Psychology" src="http://www.pepfx.com/articles/images/color_psychology.gif" width="110" align="left" border="0"&gt;  &lt;p style="font-size: 9px"&gt;strength, boldness, excitement, determination, desire, courage &lt;br&gt;enthusiasm, cheerfulness, affordability, stimulation, creativity &lt;br&gt;attention-grabbing, comfort, liveliness, intellect, happiness, energy &lt;br&gt;durability, reliability, safety, honesty, optimism, harmony, freshness &lt;br&gt;depth, stability, professionalism, loyalty, reliability, honor, trust &lt;br&gt;power,nobility, luxury, mystery, royalty, elegance, magic &lt;br&gt;conservatism, traditionalism, intelligence, seriousness &lt;br&gt;endurance, relaxing, confident, casual, reassuring, earthy &lt;br&gt;elegance, sophistication, formality, strength, mystery &lt;br&gt;cleanliness, purity, newness, virginity, peace, innocence, simplicity &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The above associations are &lt;b&gt;not universal&lt;/b&gt;. Our personal associations, but also cultural backgrounds influence how we experience colors. &lt;br&gt;&lt;i&gt;"Colors are seen as warm or cool mainly because of long-held (and often universal) associations. Yellow, orange and red are associated with the heat of sun and fire; blue, green and violet with the coolness of leaves, sea and the sky. Warm colors seem closer to the viewer than cool colors, but vivid cool colors can overwhelm light and subtle warm colors. Using warm colors for foreground and cool colors for background enhances the perception of depth." &lt;/i&gt; &lt;p&gt;Source: Pantone,Inc.  &lt;p&gt;&amp;nbsp;  &lt;h3&gt;Color is a very powerful element in web design.&lt;/h3&gt;Colors make us feel a certain way, so they can and should be used to support the purpose of a website. &lt;br&gt;&lt;b&gt;Red&lt;/b&gt; is a good accent color as it stimulates people to make quick decisions. &lt;b&gt;Blue&lt;/b&gt; has a rather calming effect, however when combined with warm colors (yellow, red), it can result in vibrant and high-impact designs. Blue also makes time pass more quickly. &lt;b&gt;Yellow&lt;/b&gt; stimulates mental activity and is very effective as an attention grabber. &lt;b&gt;Green&lt;/b&gt; - as a predominant color on a website - has been known to drive people away, so in most cases, unless the website is associated with nature, it is better to use it only for website accents. &lt;b&gt;Orange&lt;/b&gt; is highly accepted among young people.  &lt;h3&gt;Colors &amp;amp; Shopping behavior&lt;/h3&gt;Psychologists have suggested that &lt;strong&gt;color impression can account for 60% of the acceptance&lt;/strong&gt; or rejection of a product or service. Market researchers have also determined that color affects shopping habits:  &lt;ul&gt; &lt;li&gt;Impulse shoppers respond best to red-orange, black and royal blue.  &lt;li&gt;Shoppers who plan and stick to budgets respond best to pink, teal, light blue and navy.  &lt;li&gt;Traditional people respond to pastel colors - pink, rose, sky blue.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-3743601325763096529?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/3743601325763096529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=3743601325763096529' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/3743601325763096529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/3743601325763096529'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/01/webdesign-and-colors.html' title='WebDesign and Colors'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-966890761223761372</id><published>2007-01-09T00:24:00.001-08:00</published><updated>2007-01-09T00:24:01.788-08:00</updated><title type='text'>Wait cursor on a C# Console Application</title><content type='html'>&lt;p&gt;A small tip to draw a kind of wait cursor in a C# Console Application with the help of the BackSpace character ("\b").&lt;/p&gt; &lt;p&gt;Here is the code:&lt;/p&gt;&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="blue"&gt;string&lt;/font&gt; data = "|/-\\";&lt;br /&gt;&lt;font color="blue"&gt;for&lt;/font&gt; (&lt;font color="blue"&gt;int&lt;/font&gt; i=0; i&amp;lt;1000; i++)&lt;br /&gt;{&lt;br /&gt;    Console.Write("{0}{1}", i&amp;gt;0 ? "\b" : &lt;font color="blue"&gt;string&lt;/font&gt;.Empty, tmp[i % tmp.Length]);&lt;br /&gt;    Thread.Sleep(200);&lt;br /&gt;    i++;&lt;br /&gt;}&lt;br /&gt;Console.Write("\b");&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-966890761223761372?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/966890761223761372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=966890761223761372' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/966890761223761372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/966890761223761372'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/01/wait-cursor-on-c-console-application.html' title='Wait cursor on a C# Console Application'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-2651070793595401765</id><published>2007-01-08T08:08:00.001-08:00</published><updated>2007-01-08T08:08:26.173-08:00</updated><title type='text'>TList&lt;Entity&gt; / List&lt;T&gt; tips and tricks</title><content type='html'>&lt;p&gt;&lt;em&gt;This is the re-post of an old article I wrote with Robert.&lt;br&gt;it&amp;nbsp;apply to the .netTiers generated TList&amp;lt;T&amp;gt; or to the standard&amp;nbsp;List&amp;lt;T&amp;gt;.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt;Utilizing many new features from the .Net 2 framework&amp;nbsp;(Generics, Delegate and Anonymous Methods) we were able to greatly&amp;nbsp;improve some core functionalities of the templates including Searching, Filtering and Sorting.&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: 14pt"&gt;1. Find Methods&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Old Implementation&lt;/b&gt;&lt;br&gt;When using the Find method in .netTeirs 1, the entity search&amp;nbsp;was done with this kind of method call:&lt;br&gt;&lt;br&gt;&lt;i&gt;Method Signature:&lt;b&gt; &lt;/b&gt;&lt;/i&gt;Find (EntityColumn column, object searchCriteria);&lt;br&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Example A:&lt;/b&gt; &lt;br&gt;ProductCollection productCollection = products.Find(ProductColumn.ProductId, 1); &lt;/p&gt; &lt;p&gt;this looks very&amp;nbsp;clean but actually it's&amp;nbsp;mostly inefficient (try it in a 100x loop, with a 1000 item list ;-) the reason is that it use internally reflection to get the right property and its value, and then do the comparison.&lt;/p&gt; &lt;p&gt;&lt;b&gt;New Implementation&lt;/b&gt;&lt;br&gt;In .netTiers2, the Find method has a new overload that take a generic delegate as parameter.&lt;br&gt;&lt;i&gt;&lt;/i&gt;&lt;/p&gt; &lt;p&gt;&lt;i&gt;Method Signature:&lt;b&gt; &lt;/b&gt;&lt;/i&gt;Find(Predicate&amp;lt;T&amp;gt; match);&lt;/p&gt; &lt;p&gt;&lt;b&gt;Example B:&lt;br&gt;&lt;/b&gt;TList&amp;lt;Product&amp;gt; products = DataRepository.ProductProvider.GetAll(); &lt;br&gt;&lt;br&gt;void UpdateProductQuantity(int productId, int newQuantity)&lt;br&gt;{&lt;br&gt;&amp;nbsp; Product product = products.Find(delegate (Product p) {return p.ProductId == productId;});&lt;br&gt;&amp;nbsp; product.Quantity = newQuantity;&lt;br&gt;} &lt;/p&gt; &lt;p&gt;See how the use of an anonymous method for the predicate allow us to use the current context (here the productId parameter of the UpdateProductQuantity method). &lt;br&gt;To search for several items that match the predicate, just use the FindAll method.&lt;/p&gt; &lt;p&gt;You can find more information about the Predicate Generic Delegate on &lt;a href="http://msdn2.microsoft.com/en-us/library/bfcke1bz.aspx" target="_blank" mce_href="http://msdn2.microsoft.com/en-us/library/bfcke1bz.aspx"&gt;msdn2&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;span style="font-size: 14pt"&gt;2. Filtering&lt;/span&gt;&lt;/p&gt; &lt;p&gt;The Filtering is used to filter a given list of entities, this is very usefull&amp;nbsp;when the list is binded to a visual control like the DataGridView for example.&amp;nbsp; Filtering is done by providing a set of filter criteria, which is then applied to the list.&amp;nbsp; The items that DO NOT match the criteria are removed temporarly from the collection's innerList and put in the &lt;i&gt;FilteredItems&lt;/i&gt; property. The filter can finally be removed by calling the RemoveFilter() method.&lt;/p&gt; &lt;p&gt;&lt;b&gt;Old Implementation &lt;/b&gt;&lt;br&gt;In netTiers1, filtering was done like so:&lt;br&gt;&lt;br&gt;&lt;b&gt;Example C:&lt;/b&gt;&lt;br&gt;products.Filter = "ProductName&amp;nbsp;= 'Sugar' AND CategoryId = 5";&amp;nbsp; &lt;/p&gt; &lt;p&gt;While it tried to emulate a familiar SQL syntax for where clauses, a special parser was evaluating the filter expression, and then use reflection to check property value; the result was&amp;nbsp;a&amp;nbsp;very slow and very limited filtering (due to the filter parser limitations and the heavy use of reflection).&lt;/p&gt; &lt;p&gt;&lt;b&gt;New Implementation&lt;/b&gt;&lt;br&gt;With the use of the new Predicate&amp;lt;T&amp;gt; overload, you can do:&lt;/p&gt; &lt;p&gt;&lt;b&gt;Example D:&lt;/b&gt;&lt;br&gt;product.ApplyFilter(delegate(Product p) {return p.ProductName == "Sugar" &amp;amp;&amp;amp; p.CategoryId ==5;}));&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;span style="font-size: 14pt"&gt;3. Sorting&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Following a familiar pattern now, with the help of the comparison&amp;nbsp;generic delegate.&lt;br&gt;&lt;i&gt;&lt;br&gt;Method Signature:&lt;/i&gt; Sort(Comparison&amp;lt;T&amp;gt; match);&lt;br&gt;&lt;br&gt;We can create more efficent and complex sorting, for example, say that we want to sort the northwind category list based on the child ProductCollection property Count.&lt;br&gt;&lt;/p&gt; &lt;p&gt;&lt;b&gt;Example E:&lt;/b&gt;&lt;br&gt;We could do something like the following: &lt;/p&gt; &lt;p&gt;category.Sort(MyCustomSort);&amp;nbsp; //uses the MyCustomSort delegate&lt;br&gt;...&lt;br&gt;public int MyCustomSort(Category c1, Category c2)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return c1.ProductCollection.Count.CompareTo(c2.ProductCollection.Count);&lt;br&gt;}&lt;/p&gt; &lt;p&gt;Similarly, like in the previous examples of &lt;i&gt;Find&lt;/i&gt; and &lt;i&gt;Filter&lt;/i&gt;, we could've also used an anonymous delegate.&lt;br&gt;category.Sort(&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; MyCustomSort(Category c1, Category c2){&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; return c1.ProductCollection.Count.CompareTo(c2.ProductCollection.Count);&amp;nbsp;&lt;br&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; });&lt;br&gt;You can find more information about the Comparing and Generic delegates on &lt;a href="http://msdn2.microsoft.com/en-us/library/tfakywbh.aspx" target="_blank" mce_href="http://msdn2.microsoft.com/en-us/library/tfakywbh.aspx"&gt;MSDN2&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;b&gt;&lt;span style="font-size: 14pt"&gt;4. Action&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p&gt;This last point is dedicated to a small tip i really like :-) &lt;br&gt;The Action generic delegate that is used on the &lt;i&gt;ForEach &lt;/i&gt;method of the &lt;i&gt;TList &lt;/i&gt;collections.&lt;br&gt;&lt;br&gt;&lt;b&gt;Example F:&lt;/b&gt;&lt;br&gt;category.ProductCollection.ForEach(delegate(Product p) {Console.WriteLine(p.ProductName);});&lt;/p&gt; &lt;p&gt;&lt;b&gt;Example G:&lt;br&gt;&lt;/b&gt;int total = 0;&lt;br&gt;order.OrderDetailCollection.ForEach(delegate(OrderDetail od) {total += od.Quantity * od.UnitPrice&amp;nbsp;;});&lt;/p&gt; &lt;p&gt;You can find more information about the Action Generic Delegate on &lt;a href="http://msdn2.microsoft.com/en-us/library/018hxwa8.aspx" target="_blank" mce_href="http://msdn2.microsoft.com/en-us/library/018hxwa8.aspx"&gt;MSDN2&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;That's all! &amp;nbsp; Good Luck!&lt;br&gt;Cheers!&lt;/p&gt; &lt;p&gt;John Roland / Robert Hinojosa - &lt;a href="http://www.nettiers.com/" mce_href="http://www.nettiers.com/"&gt;NetTiers.com&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-2651070793595401765?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/2651070793595401765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=2651070793595401765' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2651070793595401765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2651070793595401765'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2007/01/tlist-list-tips-and-tricks.html' title='TList&amp;lt;Entity&amp;gt; / List&amp;lt;T&amp;gt; tips and tricks'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-817155851903377921</id><published>2006-12-30T07:05:00.001-08:00</published><updated>2006-12-30T09:52:05.864-08:00</updated><title type='text'>Simulating the ItemDrag event on a DataGridView</title><content type='html'>&lt;p&gt;In my Windows Forms application I want my users to do things very easily and the Drag&amp;amp;Drop feature is one of those. For example&amp;nbsp;when they create an&amp;nbsp;Order,&amp;nbsp;I wish that&amp;nbsp;they can just drop a product onto&amp;nbsp;the order form to add the&amp;nbsp;correponding OrderDetail.&lt;br&gt;&lt;br&gt;Sadly the new of Windows Forms 2.0 DataGridView do not exposes&amp;nbsp; theItemDrag event like the one available in the ListView :-S .&lt;br&gt;Hopefully, this can be fixed very easily by using the MouseDown event of the DataGridView, like this:&lt;/p&gt;&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="blue"&gt;private&lt;/font&gt; &lt;font color="blue"&gt;void&lt;/font&gt; OnDataGridViewMouseDown(object sender, MouseEventArgs e)&lt;br /&gt;{&lt;br /&gt;    DataGridView.HitTestInfo hit = m_DataGridView.HitTest(e.X, e.Y);&lt;br /&gt;    m_DataGridView.DoDragDrop(m_DataGridView.Rows[hit.RowIndex].DataBoundItem as Product, DragDropEffects.Move);&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;this example suppose that your&amp;nbsp;DataGridView is binded to a&amp;nbsp;IBindingList of Product entities, then on the&amp;nbsp;mouse down the DragDrop of the Product entity itself&amp;nbsp;is starting.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Then i can use this on a second DataGridView or on any Windows&amp;nbsp;Forms control:&lt;/p&gt;&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="blue"&gt;private&lt;/font&gt; &lt;font color="blue"&gt;void&lt;/font&gt; OnQuoteItemsDataGridViewDragEnter(object sender, DragEventArgs e)&lt;br /&gt;{&lt;br /&gt;    e.Effect = DragDropEffects.Move;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;font color="blue"&gt;private&lt;/font&gt; &lt;font color="blue"&gt;void&lt;/font&gt; OnQuoteItemsDataGridViewDragDrop(object sender, DragEventArgs e)&lt;br /&gt;{&lt;br /&gt;    &lt;font color="blue"&gt;if&lt;/font&gt; (e.Data.GetDataPresent("Serialcoder.Product", &lt;font color="blue"&gt;false&lt;/font&gt;))&lt;br /&gt;    {&lt;br /&gt;        &lt;font color="green"&gt;// Do what you want with the product, for example add an OrderDetail to an order with the help of the product.Id&lt;/font&gt;&lt;br /&gt;        &lt;font color="#008080"&gt;Product&lt;/font&gt; product = (&lt;font color="#008080"&gt;Serialcoder.Product&lt;/font&gt;)e.Data.GetData("Serialcoder.Product");&lt;br /&gt;				&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;font face="Trebuchet MS" size="2"&gt;Hope it helps.&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-817155851903377921?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/817155851903377921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=817155851903377921' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/817155851903377921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/817155851903377921'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2006/12/simulating-itemdrag-event-on.html' title='Simulating the ItemDrag event on a DataGridView'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-903447103536739589</id><published>2006-12-21T05:36:00.001-08:00</published><updated>2007-01-15T03:26:14.329-08:00</updated><title type='text'>Show all tasks in Visual Studio 2005 / C#</title><content type='html'>&lt;p&gt;Visual studio has an awesome feature that let you add some special comments in your code, like:&lt;/p&gt; &lt;p&gt;// TODO Optimize the following lines&lt;/p&gt; &lt;p&gt;and then display thoses as tasks in the Visual studio&amp;nbsp;Task List window (you can display it with the menu: Views, Tasks list).&lt;/p&gt; &lt;p&gt;Sadly, with c# at least, it's only showing the task that are contained in currently opened files, not very handy if like me you work on a solution with more that 10 projects, and that you put many TODO on the way.&lt;/p&gt; &lt;p&gt;In order to get my full list of tasks, I've just made a very simple command line tool that you can add as an external tool in visual studio. This tool is writing the list of task in the output window, in the right format, so you just have to click on a task to go to the right file and position.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h4&gt;&lt;strong&gt;Configuration&lt;/strong&gt;&lt;/h4&gt; &lt;p&gt;To add it as an external tool in visual studio: &lt;/p&gt; &lt;p&gt;go to menu Tools/External tools...  &lt;p&gt;click on the Add button  &lt;p&gt;Fill the form as:&lt;br&gt;- title: Show all tasks&lt;br&gt;- Command: c:\yourpath\ShowAllTasks.exe&lt;br&gt;- arguments: $(SolutionDir)&lt;br&gt;- Initial directory: $(SolutionDir)  &lt;p&gt;then check the "Use output window" box, and OK.  &lt;p&gt;(note: you can also add a "show project tasks", by replacing the arguments by $(ProjectDir)  &lt;p&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" src="http://serialcoder.net/archive/install.png" border="0"&gt;  &lt;p&gt;&amp;nbsp;  &lt;h4&gt;&lt;strong&gt;Known issues&lt;/strong&gt;&lt;/h4&gt; &lt;p&gt;This is&amp;nbsp;a very quick&amp;nbsp;&amp;amp; dirty app that just fit my needs, in order to make it more robust&amp;nbsp;here is a the list of possible improvements:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;need to check also the word TASK  &lt;li&gt;the search is done in all files under the solution folder, this must be replaced by the list of files of the solution + files of the projects that are in solution  &lt;li&gt;transform this into a VS macro, and add items in the Task List window (i've try a bit first but failed)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;a title="Show all Tasks in visual studio 2005" href="http://www.serialcoder.net/archive/showalltasks.rar"&gt;Download executable&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="Download Show all tasks project" href="http://www.box.net/public/8ysjm0hg4q" target="_blank"&gt;&lt;img height="24" alt="File icon" src="http://www.box.net/thumbs/24x24/default_file.gif" width="24" align="absMiddle" border="0"&gt;Download Source code&lt;/a&gt; - Please Share your mods :-D&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-903447103536739589?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/903447103536739589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=903447103536739589' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/903447103536739589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/903447103536739589'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2006/12/show-all-tasks-in-visual-studion-2005-c.html' title='Show all tasks in Visual Studio 2005 / C#'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-8946757191995232438</id><published>2006-12-20T11:48:00.001-08:00</published><updated>2006-12-20T11:48:28.484-08:00</updated><title type='text'>Conventions de code</title><content type='html'>&lt;p&gt;&lt;span style="font-weight: bold"&gt;Directives et bonnes pratiques&lt;/span&gt;&lt;br&gt;Version 2.1&lt;br&gt;&lt;br&gt;Auteur: Juval Lowy&lt;br&gt;www.idesign.net&lt;br&gt;Traducteurs: John Roland, Marc Chouteau&lt;br&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt; &lt;hr style="width: 100%; height: 2px"&gt;  &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;br&gt;&lt;span style="font-weight: bold"&gt;Définitions:&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="font-style: italic"&gt;Casse Pascal:&lt;/span&gt;&lt;br&gt;La première lettre de l'identificateur et la première lettre de chaque mot concaténé suivant sont en majuscules. Vous pouvez utiliser la casse Pascal pour les identificateurs comportant trois caractères ou plus.&lt;br&gt;&lt;br&gt;&lt;span style="font-style: italic"&gt;Casse Camel:&lt;/span&gt;&lt;br&gt;La première lettre de l'identificateur est en minuscules et la première lettre de chaque mot concaténé suivant est en majuscules.&lt;br&gt;&lt;br&gt;&lt;strong&gt;Références&lt;/strong&gt;:&lt;br&gt;&lt;a title="http://blogs.codes-sources.com/coq/archive/2006/07/17/22446.aspx" href="http://blogs.codes-sources.com/coq/archive/2006/07/17/22446.aspx"&gt;http://blogs.codes-sources.com/coq/archive/2006/07/17/22446.aspx&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt; &lt;p&gt; &lt;li&gt;Utilisez l'anglais pour votre code, que ce soit pour les classes, pour les methodes, les variables, les constantes, etc. &lt;br&gt; &lt;hr style="width: 100%; height: 2px"&gt;  &lt;p&gt;&lt;/p&gt; &lt;h2&gt;Conventions de nommage et style du code&lt;br&gt;&lt;/h2&gt; &lt;ol&gt; &lt;li&gt;Utilisez la casse "Pascal" (la première lettre est une majuscule) pour les types, les noms de methodes et les constantes.&lt;br&gt;&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="blue"&gt;public&lt;/font&gt; &lt;font color="blue"&gt;class&lt;/font&gt; SomeClass&lt;br /&gt;{&lt;br /&gt;    &lt;font color="blue"&gt;const&lt;/font&gt; &lt;font color="blue"&gt;int&lt;/font&gt; DefaultSize = 100;&lt;br /&gt;    &lt;font color="blue"&gt;public&lt;/font&gt; &lt;font color="blue"&gt;void&lt;/font&gt; SomeMethod()&lt;br /&gt;    { }&lt;br /&gt;} &lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Utilisez la casse "Camel" pour les variables locales et les paramètres des methodes&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="blue"&gt;int&lt;/font&gt; number;&lt;br /&gt;&lt;font color="blue"&gt;void&lt;/font&gt; MyMethod(&lt;font color="blue"&gt;int&lt;/font&gt; aNumber)&lt;br /&gt;{}&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Préfixez les interfaces avec &lt;span style="color: #ff0000"&gt;I&lt;/span&gt; &lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="blue"&gt;interface&lt;/font&gt; IMyInterface&lt;br /&gt;{...}&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Préfixez les membres privées avec m_. Utilisez la casse Pascal pour le reste du nom de la variable, qui suit le préfix m_.&lt;br&gt;&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="blue"&gt;public&lt;/font&gt; &lt;font color="blue"&gt;class&lt;/font&gt; SomeClasse&lt;br /&gt;{&lt;br /&gt;    &lt;font color="blue"&gt;private&lt;/font&gt; &lt;font color="blue"&gt;int&lt;/font&gt; m_Number;&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Suffixez vos attributs personnlisés par &lt;font color="red"&gt;Attribute&lt;/font&gt;. &lt;br /&gt;&lt;li&gt;Suffixez vos exceptions personnalisés par &lt;font color="#ff0000"&gt;Exception&lt;/font&gt;. &lt;br /&gt;&lt;li&gt;Nommez vos méthodes en utilsant une paire Nom-Object, comme dans &lt;font color="#ff0000"&gt;ShowDialog()&lt;/font&gt;. &lt;br /&gt;&lt;li&gt;Les méthodes qui retournent des valeurs doivent portées un nom qui décrit la valeur retournée, tel que: &lt;font color="#ff0000"&gt;GetObjectState()&lt;/font&gt;. &lt;br /&gt;&lt;li&gt;Utilisez des noms de variables qui décrivent leur role: &lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Evitez les variables d'une seule lettre comme &lt;font color="#ff0000"&gt;i&lt;/font&gt; ou &lt;font color="#ff0000"&gt;t&lt;/font&gt;, utilisez de préférence: &lt;font color="#ff0000"&gt;index&lt;/font&gt; ou &lt;font color="#ff0000"&gt;temp&lt;/font&gt;. &lt;br /&gt;&lt;li&gt;Evitez la notation hongroise pour les membres public ou protected. &lt;br /&gt;&lt;li&gt;N'utilisez pas d'abbreviations. (par exemple &lt;font color="#ff0000"&gt;num&lt;/font&gt; à la place de &lt;font color="#ff0000"&gt;number&lt;/font&gt;)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;li&gt;Utilisez toujours les types prédéfinis de C# plutôt que leurs alias dans l'éspace de nom &lt;font color="#ff0000"&gt;System&lt;/font&gt;.&lt;br&gt;Par exemple:&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="blue"&gt;object&lt;/font&gt; , et non: Object&lt;br /&gt;&lt;font color="blue"&gt;string&lt;/font&gt;, et non: String&lt;br /&gt;&lt;font color="blue"&gt;int&lt;/font&gt; , et non: Int32&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Avec les génériques, utilisez des majuscules pour les types. Par ailleurs, réservez l'utilisation du suffixe &lt;font color="#ff0000"&gt;Type&lt;/font&gt; quand vous travaillez avec le type .Net &lt;font color="#ff0000"&gt;Type&lt;/font&gt;.&lt;br&gt;&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="green"&gt;// Correcte:&lt;/font&gt;&lt;br /&gt;&lt;font color="blue"&gt;public&lt;/font&gt; &lt;font color="blue"&gt;class&lt;/font&gt; LinkedList&amp;lt;K,T&amp;gt;&lt;br /&gt;{...}&lt;br /&gt;&lt;br /&gt;&lt;font color="green"&gt;// A éviter:&lt;/font&gt;&lt;br /&gt;&lt;font color="blue"&gt;public&lt;/font&gt; &lt;font color="blue"&gt;class&lt;/font&gt; LinkedList&amp;lt;KeyType, DataType&amp;gt;&lt;br /&gt;{...}&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Utilisez des éspaces de nom significatifs, tel que le nom de l'entreprise et le nom du produit. &lt;br /&gt;&lt;li&gt;Evitez les types pleinement qualifiés et utilisez l'instruction &lt;font color="#ff0000"&gt;using&lt;/font&gt; à la place. &lt;br /&gt;&lt;li&gt;Evitez de mettre une instruction &lt;font color="#ff0000"&gt;using&lt;/font&gt; dans un éspace de nom. &lt;br /&gt;&lt;li&gt;Regroupez tous les éspaces de nom du framework ensemble et mettez les éspaces de nom personnalisés et/ou tierces en dessous.&lt;br&gt;&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="blue"&gt;using&lt;/font&gt; System;&lt;br /&gt;&lt;font color="blue"&gt;using&lt;/font&gt; System.Collections.Generic;&lt;br /&gt;&lt;font color="blue"&gt;using&lt;/font&gt; System.ComponentModel;&lt;br /&gt;&lt;font color="blue"&gt;using&lt;/font&gt; System.Data;&lt;br /&gt;&lt;font color="blue"&gt;using&lt;/font&gt; MyCompany;&lt;br /&gt;&lt;font color="blue"&gt;using&lt;/font&gt; MyControls;&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Utilisez l'inférence de delegate à la place des instantiations explicites.&lt;br&gt;&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="blue"&gt;delegate&lt;/font&gt; &lt;font color="blue"&gt;void&lt;/font&gt; SomeDelegate();&lt;br /&gt;&lt;font color="blue"&gt;public&lt;/font&gt; &lt;font color="blue"&gt;void&lt;/font&gt; SomeMethod()&lt;br /&gt;{...}&lt;br /&gt;SomeDelegate someDelegate = SomeMethod;&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Maintenez une identation stricte. N'utilisez pas de tabulation ni d'identation non standard tel qu'un seul éspace. Les valeurs recommandés sont trois ou quatre éspaces. &lt;br /&gt;&lt;li&gt;L'identation des commentaires doit être au même niveau que le code qui est commenté. &lt;br /&gt;&lt;li&gt;Les commentaires ne doivent pas contenir de fautes d'orthographes. &lt;br /&gt;&lt;li&gt;Toutes les variables membres doivent être déclarées en haut, avec une ligne de séparation entre elles et les propriétés ou les méthodes.&lt;br&gt;&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="blue"&gt;public&lt;/font&gt; &lt;font color="blue"&gt;class&lt;/font&gt; MyClass&lt;br /&gt;{&lt;br /&gt;    &lt;font color="blue"&gt;int&lt;/font&gt; m_Number;&lt;br /&gt;    &lt;font color="blue"&gt;string&lt;/font&gt; m_Name;&lt;br /&gt;    &lt;br /&gt;    &lt;font color="blue"&gt;public&lt;/font&gt; &lt;font color="blue"&gt;void&lt;/font&gt; SomeMethod1()&lt;br /&gt;    {}&lt;br /&gt;    &lt;font color="blue"&gt;public&lt;/font&gt; &lt;font color="blue"&gt;void&lt;/font&gt; SomeMethod2()&lt;br /&gt;    {}&lt;br /&gt;}&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Déclarez une variable locale aussi près que possible de sa première utilisation. &lt;br /&gt;&lt;li&gt;Un nom de fichier doit correspondre à la class qu'il contient. &lt;br /&gt;&lt;li&gt;Quand vous utilisez les types partiels, et que vous allouez une partie par fichier, nommez chaque fichier d'après le rôle joué par&amp;nbsp;la partie contenue. Par exemple:&lt;br&gt;&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="green"&gt;// Cans le fichier MyClass.cs :&lt;/font&gt;&lt;br /&gt;&lt;font color="blue"&gt;public&lt;/font&gt; &lt;font color="blue"&gt;partial&lt;/font&gt; &lt;font color="blue"&gt;class&lt;/font&gt; MyClass&lt;br /&gt;{...}&lt;br /&gt;&lt;br /&gt;&lt;font color="green"&gt;// Dans le fichier MyClass.Designer.cs&lt;/font&gt;&lt;br /&gt;&lt;font color="blue"&gt;public&lt;/font&gt; &lt;font color="blue"&gt;partial&lt;/font&gt; &lt;font color="blue"&gt;class&lt;/font&gt; MyClass&lt;br /&gt;{...}&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;br /&gt;&lt;li&gt;Placez toujours les accolades ouvrantes sur une nouvelle ligne. &lt;br /&gt;&lt;li&gt;Avec les méthodes anonymes, imitez la disposition&amp;nbsp;du méthode habituelle, en l'alignant avec la déclaration du delegate anonyme. (Donc respecte la règle 24 sur les accolades)&lt;br&gt;&lt;pre&gt;&lt;font face="Courier New" color="black" size="2"&gt;&lt;font color="blue"&gt;delegate&lt;/font&gt; &lt;font color="blue"&gt;void&lt;/font&gt; SomeDelegate(&lt;font color="blue"&gt;string&lt;/font&gt; someString);&lt;br /&gt;&lt;br /&gt;&lt;font color="green"&gt;// Correcte&lt;/font&gt;&lt;br /&gt;&lt;font color="blue"&gt;public&lt;/font&gt; &lt;font color="blue"&gt;void&lt;/font&gt; InvokeMethod()&lt;br /&gt;{&lt;br /&gt;    SomeDelegate someDelegate = &lt;font color="blue"&gt;delegate&lt;/font&gt;(&lt;font color="blue"&gt;string&lt;/font&gt; name)&lt;br /&gt;                                {&lt;br /&gt;                                    MessageBox.Show(name);&lt;br /&gt;                                };&lt;br /&gt;    someDelegate("Juval");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;font color="green"&gt;// A éviter&lt;/font&gt;&lt;br /&gt;&lt;font color="blue"&gt;public&lt;/font&gt; &lt;font color="blue"&gt;void&lt;/font&gt; InvokeMethod()&lt;br /&gt;{&lt;br /&gt;    SomeDelegate someDelegate = &lt;font color="blue"&gt;delegate&lt;/font&gt;(&lt;font color="blue"&gt;string&lt;/font&gt; name){MessageBox.Show(name);};&lt;br /&gt;    someDelegate("Juval");&lt;br /&gt;} &lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;&lt;/li&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-8946757191995232438?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/8946757191995232438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=8946757191995232438' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8946757191995232438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8946757191995232438'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2006/12/conventions-de-code.html' title='Conventions de code'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-1391981933519971381</id><published>2006-10-25T23:44:00.001-07:00</published><updated>2006-10-25T23:44:09.590-07:00</updated><title type='text'>Open Shopping Cart</title><content type='html'>&lt;p&gt;Our &lt;a title="Agile Software Editor" href="http://en.serialcoder.net/"&gt;Serialcoder&lt;/a&gt; team as decided to release our .net Shopping Cart as an Open source project, on CodePlex.&lt;/p&gt; &lt;p&gt;The project is called: OpenShoppingCart, ans is used in the .netTiers petshop demo application.&lt;/p&gt; &lt;p&gt;Here is the project &lt;a title="Open source Shopping cart component" href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=openshoppingcart"&gt;homepage&lt;/a&gt;, and &lt;a title="Download free shopping cart component" href="http://www.codeplex.com/SourceControl/ListDownloadableCommits.aspx?ProjectName=openshoppingcart"&gt;download&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-1391981933519971381?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/1391981933519971381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=1391981933519971381' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/1391981933519971381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/1391981933519971381'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2006/10/open-shopping-cart.html' title='Open Shopping Cart'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-581475065031986418</id><published>2006-10-22T10:05:00.001-07:00</published><updated>2006-10-22T10:05:25.569-07:00</updated><title type='text'>Guitar tuner</title><content type='html'>&lt;p&gt;If you're in search for a good guitar tuner, i can only recommend you to download and use &lt;a title="Free guitar tuner" href="http://www.aptuner.com/cgi-bin/aptuner/apmain.html"&gt;AP Tuner&lt;/a&gt;, which is on my opinion one of the best and free tuner around.&lt;/p&gt; &lt;p&gt;about the features, it support default Presets for several guitar tuning, but also for Bass, Violin, Viola and Cello, you can even change the stretch table to use.&lt;/p&gt; &lt;p&gt;but for me it principal quality is its tuning system, it's just awesome&amp;nbsp;because its display is very precise and yet so stable (by removing parasite i think) so you can just tune your guitar in few sec without wondering why you're always below or above.&lt;/p&gt; &lt;p&gt;here is a screenshot:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.aptuner.com/aptunerMain.jpg"&gt;  &lt;p&gt;final word: just use it. &lt;p&gt;&lt;a title="Download guitar tuner" href="http://www.aptuner.com/cgi-bin/aptuner/ftp/apmain/APTunerInstall306.exe"&gt;you can download it here&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-581475065031986418?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/581475065031986418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=581475065031986418' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/581475065031986418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/581475065031986418'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2006/10/guitar-tuner.html' title='Guitar tuner'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-7798223045842357663</id><published>2006-10-21T13:48:00.000-07:00</published><updated>2006-10-21T14:03:45.900-07:00</updated><title type='text'>Screenshot of Visual Log Parser GUI</title><content type='html'>Here is a screenshot of Visual logparser, a free tool we have just release with serialCoder.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://photos1.blogger.com/blogger2/6527/258787026799193/1600/serialcoder-visual-logparser.gif" /&gt;&lt;br /&gt;&lt;br /&gt;you can download it &lt;a href="http://en.serialcoder.net/logiciels/visual-logparser.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-7798223045842357663?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/7798223045842357663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=7798223045842357663' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7798223045842357663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/7798223045842357663'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2006/10/screenshot-of-visual-log-parser-gui.html' title='Screenshot of Visual Log Parser GUI'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-1855241185809756042</id><published>2006-10-13T01:00:00.001-07:00</published><updated>2006-10-13T01:00:08.796-07:00</updated><title type='text'>.netTiers windows forms templates</title><content type='html'>&lt;p&gt;&lt;/p&gt; &lt;p&gt;I'm currently working on Windows Forms dedicated templates for .netTiers. as far as I am I've added 2 templates (still in developpement though): &lt;p&gt;first, an entity datagridview, with the following features: &lt;p&gt;- take a tlist&amp;lt;entity&amp;gt; as input&lt;br&gt;- display textbox column for string and numbers&lt;br&gt;- display checkbox column for boolean&lt;br&gt;- display combobox column for FK&lt;br&gt;- column are readonly depending of the table column &lt;br&gt;- TList&amp;lt;entity&amp;gt; properties are generated for FK Combo DataSource&lt;br&gt;- an event is thrown when the focus change to a new entity (aka a new row)&lt;br&gt;- embedded error provider for automatic validation, based upon the (customizable) validation rules. &lt;p&gt;The second template is a form to edit a single entity, and apart from display, contains the same features. &lt;p&gt;&amp;nbsp; &lt;p&gt;&lt;strong&gt;Download&lt;/strong&gt;:&lt;br&gt;please use tortoiseSVN to get the files from the sourceforge repository &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:03143324-e9a4-466e-b192-a74dca6f85c2" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/.net2" rel="tag"&gt;.net2&lt;/a&gt;, &lt;a href="http://technorati.com/tags/windows%20forms" rel="tag"&gt;windows forms&lt;/a&gt;, &lt;a href="http://technorati.com/tags/CAB" rel="tag"&gt;CAB&lt;/a&gt;, &lt;a href="http://technorati.com/tags/netTtiers" rel="tag"&gt;netTtiers&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-1855241185809756042?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/1855241185809756042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=1855241185809756042' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/1855241185809756042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/1855241185809756042'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2006/10/nettiers-windows-forms-templates.html' title='.netTiers windows forms templates'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-4753170322114538129</id><published>2006-10-12T08:13:00.001-07:00</published><updated>2006-10-12T08:23:33.860-07:00</updated><title type='text'>Visual LogParser</title><content type='html'>&lt;p&gt;Here i&amp;nbsp;will&amp;nbsp;present you a small GUI for logParser we have developped.&lt;/p&gt; &lt;h3&gt;SQL queries against a variety of log files and other system data sources&lt;/h3&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;As an application developper you often need to write some logs for your application, and hopefully &lt;br&gt;there is actually many framework to ease your pain: Log4net, Entlib Logging Application Block, etc.&lt;br&gt;But when it come to read those logs, extract statistics or to do some alert or action on them, things become harder.&lt;br&gt;Actually a free command line tool from Microsoft named LogParser exists and it is quite awesome: &lt;br&gt;you can query any log and data sources (database, event log, iis logs, file system, registry, etc.) with a complexe SQL query (I mean with functions, group by, etc.). More here about&amp;nbsp;&lt;a title="LogParser unofficial support page" href="http://www.logparser.com"&gt;LogParser&lt;/a&gt;  &lt;p&gt;On the down side, using it from the command line become quickly boring, mostly because&amp;nbsp; you need to type your sql query in a DOS prompt. &lt;br&gt;As we failed to find any intuitive GUI for logParser, we just start to build our own, by assembling the following pieces: &lt;br&gt;the logparser engine, a "visual studio" like MDI dockable interface, syntax highlighting...  &lt;h3&gt;a composite application&lt;/h3&gt; &lt;p&gt;The applicaton is a true composite one. First it is based upon the .net 2 framework, and on the &lt;a href="http://www.gotdotnet.com/codegallery/codegallery.aspx?id=22f72167-af95-44ce-a6ca-f2eafbf2653c"&gt;Composite UI application block&lt;/a&gt; (which is en extension of Enterprise Library). We also use the TextEditor control from the guies at &lt;a href="http://www.icsharpcode.net/OpenSource/SD/"&gt;SharpDevelop&lt;/a&gt;, so we have a strong editor, with syntax hightlighting, line numbers, etc. Finnally we also use an older version of the &lt;a href="http://www.divil.co.uk/net/controls/sanddock/"&gt;SandDock&lt;/a&gt; control (the freeware version) from DivElements to have the VS2005 dock panels look and feel.&lt;/p&gt; &lt;h3&gt;Serialcoder&lt;/h3&gt; &lt;p&gt;This software is part of my activity in my future company &lt;a title="Agile software developpement" href="http://www.serialcoder.net/"&gt;Serialcoder&lt;/a&gt;, which I'm co-founder, and can acts&amp;nbsp;a small case study about agile developpement, and "mashuping" in windows forms.&lt;/p&gt; &lt;p&gt;&lt;a title="LogParser graphical user interface" href="http://www.serialcoder.net/deploy/visual-logparser/publish.htm"&gt;Download Visual LogParser&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-4753170322114538129?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/4753170322114538129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=4753170322114538129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4753170322114538129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/4753170322114538129'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2006/10/visual-logparser.html' title='Visual LogParser'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-8165557910523848436</id><published>2006-10-04T06:48:00.000-07:00</published><updated>2006-10-04T06:49:22.163-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.nettiers'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>Creating strongly typed repeater</title><content type='html'>&lt;p&gt;When you develop ASP.Net application, you quickly discover that the basic ASP:Repeater is a killer control, although it looks quite dumb at first look, compared to DataList or the powerfull GridView, but actually its simplicity, and it's lightness offer the flexibility required to do all those funcky stuff you only find in enterprise developpement ...&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Ok, in this perfect world there is yet a dark side: the repeater is a late binding control and use a lot of reflection, which make things a lot more slower. So my idea was to generate some strongly typed Repeater, as part of the .netTiers framework. A repeater will be generated for each Table and View, and will work in conjunction with the actual strongly typed DataSource.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Tempalted control&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;To create these repeaters, we actually create a ASP.NET templated control, with the following ITemplate ( to match standard repeater), i mean &lt;strong&gt;HeaderTemplate&lt;/strong&gt;, &lt;strong&gt;ItemTemplate&lt;/strong&gt;, &lt;strong&gt;AlternatingItemTemplate&lt;/strong&gt; and &lt;strong&gt;FooterTemplate&lt;/strong&gt;.&lt;br /&gt;Here is the code of my repeater for a simple "Product" entity:&lt;/p&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:fb73cc5f-1a1a-4229-93e9-ef26eacbfbcd" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0pxcolor:white;" &gt;&lt;pre  style="color:white;"&gt;&lt;span style="color:#000000;"&gt;ParseChildren(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;span style="color:#000000;"&gt;)]&lt;br /&gt;[ToolboxData(&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;lt;{0}:ProductRepeater runat=\"server\"&amp;gt;&amp;lt;/{0}:ProductRepeater&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt;&lt;span style="color:#000000;"&gt; ProductRepeater : Control, System.Web.UI.INamingContainer&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; ProductRepeater()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;override&lt;/span&gt;&lt;span style="color:#000000;"&gt; ControlCollection Controls&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;&lt;span style="color:#000000;"&gt;.EnsureChildControls();&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;&lt;span style="color:#000000;"&gt;.Controls;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; ITemplate m_headerTemplate;&lt;br /&gt;[Browsable(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;&lt;span style="color:#000000;"&gt;)]&lt;br /&gt;[TemplateContainer(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color:#000000;"&gt;(ProductItem))]&lt;br /&gt;[PersistenceMode(PersistenceMode.InnerDefaultProperty)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; ITemplate HeaderTemplate&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt; { &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; m_headerTemplate; }&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;&lt;span style="color:#000000;"&gt; { m_headerTemplate &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; ITemplate m_itemTemplate;&lt;br /&gt;[Browsable(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;&lt;span style="color:#000000;"&gt;)]&lt;br /&gt;[TemplateContainer(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color:#000000;"&gt;(ProductItem))]&lt;br /&gt;[PersistenceMode(PersistenceMode.InnerDefaultProperty)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; ITemplate ItemTemplate&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt; { &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; m_itemTemplate; }&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;&lt;span style="color:#000000;"&gt; { m_itemTemplate &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; ITemplate m_altenateItemTemplate;&lt;br /&gt;[Browsable(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;&lt;span style="color:#000000;"&gt;)]&lt;br /&gt;[TemplateContainer(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color:#000000;"&gt;(ProductItem))]&lt;br /&gt;[PersistenceMode(PersistenceMode.InnerDefaultProperty)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; ITemplate AlternatingItemTemplate&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt; { &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; m_altenateItemTemplate; }&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;&lt;span style="color:#000000;"&gt; { m_altenateItemTemplate &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; ITemplate m_footerTemplate;&lt;br /&gt;[Browsable(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;&lt;span style="color:#000000;"&gt;)]&lt;br /&gt;[TemplateContainer(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color:#000000;"&gt;(ProductItem))]&lt;br /&gt;[PersistenceMode(PersistenceMode.InnerDefaultProperty)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; ITemplate FooterTemplate&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt; { &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; m_footerTemplate; }&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;&lt;span style="color:#000000;"&gt; { m_footerTemplate &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[Category(&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;Data&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;virtual&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; DataSourceID&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (ViewState[&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;DataSourceID&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;] &lt;/span&gt;&lt;span style="color:#000000;"&gt;==&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt;.Empty;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt;)ViewState[&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;DataSourceID&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;];&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;set&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;{&lt;br /&gt;ViewState[&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;DataSourceID&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;] &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; value;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;System.Collections.IEnumerable m_currentView;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; System.Collections.IEnumerable ConnectToDataSourceView()&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (m_currentView &lt;/span&gt;&lt;span style="color:#000000;"&gt;==&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;{&lt;br /&gt;NetTiers.SQLiteDemo.Web.Data.ProductDataSource datasource &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;br /&gt;Control ctl &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;this&lt;/span&gt;&lt;span style="color:#000000;"&gt;.Page.FindControl(DataSourceID);&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (ctl &lt;/span&gt;&lt;span style="color:#000000;"&gt;==&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; System.Web.HttpException(&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;Datasource does not exists&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;br /&gt;}&lt;br /&gt;datasource &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; ctl &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;as&lt;/span&gt;&lt;span style="color:#000000;"&gt; NetTiers.SQLiteDemo.Web.Data.ProductDataSource;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (datasource &lt;/span&gt;&lt;span style="color:#000000;"&gt;==&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; System.Web.HttpException(&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;Datasource must be data control&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;System.Collections.IEnumerable dsv &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; datasource.GetEntityList(); &lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt;this.DataMember);&lt;/span&gt;&lt;span style="color:#008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (dsv &lt;/span&gt;&lt;span style="color:#000000;"&gt;==&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;throw&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; System.Web.HttpException(&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;View not found&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;);&lt;br /&gt;}&lt;br /&gt;m_currentView &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; dsv;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; m_currentView;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;override&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; CreateChildControls()&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (ChildControlsCreated)&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;br /&gt;}&lt;br /&gt;Controls.Clear();&lt;br /&gt;&lt;br /&gt;System.Collections.IEnumerable datas &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; (System.Collections.IEnumerable)ConnectToDataSourceView();&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (datas &lt;/span&gt;&lt;span style="color:#000000;"&gt;!=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (m_headerTemplate &lt;/span&gt;&lt;span style="color:#000000;"&gt;!=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;{&lt;br /&gt;Control headerItem &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; Control();&lt;br /&gt;m_headerTemplate.InstantiateIn(headerItem);&lt;br /&gt;Controls.Add(headerItem);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;int&lt;/span&gt;&lt;span style="color:#000000;"&gt; pos &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;0&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color:#000000;"&gt; (&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;object&lt;/span&gt;&lt;span style="color:#000000;"&gt; o &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;in&lt;/span&gt;&lt;span style="color:#000000;"&gt; datas)&lt;br /&gt;{&lt;br /&gt;NetTiers.SQLiteDemo.Entities.Product entity &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; o &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;as&lt;/span&gt;&lt;span style="color:#000000;"&gt; NetTiers.SQLiteDemo.Entities.Product;&lt;br /&gt;ProductItem container &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; ProductItem(entity);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (m_itemTemplate &lt;/span&gt;&lt;span style="color:#000000;"&gt;!=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;&amp;&amp;amp;&lt;/span&gt;&lt;span style="color:#000000;"&gt; (pos &lt;/span&gt;&lt;span style="color:#000000;"&gt;%&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;2&lt;/span&gt;&lt;span style="color:#000000;"&gt;) &lt;/span&gt;&lt;span style="color:#000000;"&gt;==&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;0&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;{&lt;br /&gt;m_itemTemplate.InstantiateIn(container);&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (m_altenateItemTemplate &lt;/span&gt;&lt;span style="color:#000000;"&gt;!=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;{&lt;br /&gt;m_altenateItemTemplate.InstantiateIn(container);&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (m_itemTemplate &lt;/span&gt;&lt;span style="color:#000000;"&gt;!=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;{&lt;br /&gt;m_itemTemplate.InstantiateIn(container);&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;else&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#008000;"&gt;//&lt;/span&gt;&lt;span style="color:#008000;"&gt; no template !!!&lt;/span&gt;&lt;span style="color:#008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;}&lt;br /&gt;}&lt;br /&gt;Controls.Add(container);&lt;br /&gt;pos&lt;/span&gt;&lt;span style="color:#000000;"&gt;++&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;if&lt;/span&gt;&lt;span style="color:#000000;"&gt; (m_footerTemplate &lt;/span&gt;&lt;span style="color:#000000;"&gt;!=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;null&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;br /&gt;{&lt;br /&gt;Control footerItem &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt;&lt;span style="color:#000000;"&gt; Control();&lt;br /&gt;m_footerTemplate.InstantiateIn(footerItem);&lt;br /&gt;Controls.Add(footerItem);&lt;br /&gt;}&lt;br /&gt;ChildControlsCreated &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;protected&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;override&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;void&lt;/span&gt;&lt;span style="color:#000000;"&gt; OnPreRender(EventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;&lt;span style="color:#000000;"&gt;.DataBind();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;#region&lt;/span&gt;&lt;span style="color:#000000;"&gt; Design time&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;internal&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;&lt;span style="color:#000000;"&gt; RenderAtDesignTime()&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;TODO create a designer&lt;/span&gt;&lt;span style="color:#000000;"&gt;"&lt;/span&gt;&lt;span style="color:#000000;"&gt;;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;#endregion&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The code is a bit long but it's mostly due to the templates properties.&lt;br /&gt;The main logic is in the two methods "&lt;strong&gt;ConnectToDataSourceView&lt;/strong&gt;" and "&lt;strong&gt;CreateChildControls&lt;/strong&gt;". The first take the given datasourceId and search for the control in the page, then it get the entity list from it.&lt;br /&gt;The second a bit more tricky, it creates the children controls depending of the differents templates.&lt;br /&gt;Please note that for the ItemTemplate and AlternatingItemTemplate we loop on each entity, we create a container for this entity and send it to the current ITemplate to render it.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;/h2&gt;&lt;br /&gt;&lt;h2&gt;Strongly typed TemplateContainer&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;&lt;/h2&gt;&lt;br /&gt;&lt;h2&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;It's probably not obvious here, but one of the most intersting stuff is the TemplateContainer attribute on the ITemplate properties: we use them to indicate the use of strongly typed template container.&lt;br /&gt;Here is the code of the Product Template container:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:b1aff121-4f01-4986-85ee-a3caf68f6377" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0pxcolor:white;" &gt;&lt;"&gt;&lt;pre  style="color:white;"&gt;&lt;span style="color:#000000;"&gt;[System.ComponentModel.ToolboxItem(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;false&lt;/span&gt;&lt;span style="color:#000000;"&gt;)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;class&lt;/span&gt;&lt;span style="color:#000000;"&gt; ProductItem : System.Web.UI.Control, System.Web.UI.INamingContainer&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;private&lt;/span&gt;&lt;span style="color:#000000;"&gt; NetTiers.SQLiteDemo.Entities.Product _entity;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; ProductItem()&lt;br /&gt;: &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;&lt;span style="color:#000000;"&gt;()&lt;br /&gt;{ }&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; ProductItem(NetTiers.SQLiteDemo.Entities.Product entity)&lt;br /&gt;: &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;base&lt;/span&gt;&lt;span style="color:#000000;"&gt;()&lt;br /&gt;{&lt;br /&gt;_entity &lt;/span&gt;&lt;span style="color:#000000;"&gt;=&lt;/span&gt;&lt;span style="color:#000000;"&gt; entity;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[System.ComponentModel.Bindable(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;span style="color:#000000;"&gt;)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; System.Int64 Id&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt; { &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; _entity.Id; }&lt;br /&gt;}&lt;br /&gt;[System.ComponentModel.Bindable(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;span style="color:#000000;"&gt;)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; System.String Name&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt; { &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; _entity.Name; }&lt;br /&gt;}&lt;br /&gt;[System.ComponentModel.Bindable(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;span style="color:#000000;"&gt;)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; System.String Description&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt; { &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; _entity.Description; }&lt;br /&gt;}&lt;br /&gt;[System.ComponentModel.Bindable(&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;&lt;span style="color:#000000;"&gt;)]&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;public&lt;/span&gt;&lt;span style="color:#000000;"&gt; System.Int64 CategoryId&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;get&lt;/span&gt;&lt;span style="color:#000000;"&gt; { &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;return&lt;/span&gt;&lt;span style="color:#000000;"&gt; _entity.CategoryId; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The template container acts as a decorator, it takes our entity in the constructor, and exposes the entity properties as container properties: that the "magic" part, now we have a strongly typed Container in our web page, no more &lt;strike&gt;Container.Eval("Name"),&lt;/strike&gt; but &lt;strong&gt;&amp;lt;%# Container.Name %&amp;gt;,&lt;/strong&gt; with full intellisense !!! and of course, no more reflection.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Use the repeater&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;as we've said the control is very friendly and offer intelisense on the child templates, and on the container properties, here is a sample of use:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:6fbb9d27-e366-49f6-9e15-45a1858566dd" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;&lt;pre  style="color:white;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;data:ProductRepeater&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="productRepeater1"&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;br /&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="server"&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;br /&gt;DataSourceID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="productDataSource1"&lt;/span&gt;&lt;span style="color:#ff0000;"&gt; &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;HeaderTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;h1&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;List of product&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;h1&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;HeaderTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;b&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#ffff00;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:#f5f5f5;"&gt;# Container.Name &lt;/span&gt;&lt;span style="color:#ffff00;"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;b&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;br &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ffff00;"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color:#f5f5f5;"&gt;# Container.Description &lt;/span&gt;&lt;span style="color:#ffff00;"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;hr &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;data:ProductRepeater&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;data:ProductDataSource&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;ID&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="productDataSource1"&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;br /&gt;runat&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="server"&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;br /&gt;SelectMethod&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;="GetAll"&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;data:ProductDataSource&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Conclusion&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;Hopefully this article will help you to write some templated control.&lt;br /&gt;note: adding a typed designer would be a great improvement.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-8165557910523848436?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/8165557910523848436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=8165557910523848436' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8165557910523848436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8165557910523848436'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2006/10/creating-strongly-typed-repeater.html' title='Creating strongly typed repeater'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-3497241282755506607</id><published>2006-10-01T06:58:00.000-07:00</published><updated>2006-10-01T07:17:02.804-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows forms'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Abortable BackgroundWorker</title><content type='html'>I've just found a cool Backgroundworker extension that is able to abort a "one long process", as opposite to the framework one that suppose you have a succession of small piece of work that can be canceled between them.&lt;br /&gt;&lt;br /&gt;the class is by Roy Osherove, here is the link:&lt;br /&gt;&lt;a href="http://weblogs.asp.net/rosherove/pages/BackgroundWorkerEx.aspx"&gt;http://weblogs.asp.net/rosherove/pages/BackgroundWorkerEx.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-3497241282755506607?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/3497241282755506607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=3497241282755506607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/3497241282755506607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/3497241282755506607'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2006/10/abortable-backgroundworker.html' title='Abortable BackgroundWorker'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-8230401441745863591</id><published>2006-09-29T04:03:00.000-07:00</published><updated>2006-09-29T04:06:05.292-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeSmith'/><category scheme='http://www.blogger.com/atom/ns#' term='nettiers'/><title type='text'>Apocryph SQLiteSchemaProvider fixed</title><content type='html'>Here is an alternative schema provider for sqlite3 databases. Actually it is a corrected and enhanced version of the Apocryph one (&lt;a href="http://apocryph.org/a_sqlite_schema_provider_for_codesmith"&gt;http://apocryph.org/a_sqlite_schema_provider_for_codesmith&lt;/a&gt;), which use the very good sqlite ADO.net wrapper of &lt;a href="http://sqlite.phxsoftware.com/"&gt;http://sqlite.phxsoftware.com/&lt;/a&gt;.&lt;br /&gt;What I've modified is :&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Support of correct Native Types&lt;/li&gt;&lt;li&gt;Addition of the "CS_Identity" extended property.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&gt;&gt; &lt;strong&gt;&lt;a href="http://community.codesmithtools.com/files/18263/download.aspx"&gt;Download it here&lt;/a&gt;&lt;/strong&gt; &lt;&lt;&lt;/p&gt;&lt;br /&gt;ps: I use this provider along with .netTiers to generate a fully fonctionnal entities/dal layers. more on that on the .netTiers forums and on this blog in few days.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-8230401441745863591?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/8230401441745863591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=8230401441745863591' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8230401441745863591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/8230401441745863591'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2006/09/apocryph-sqliteschemaprovider-fixed.html' title='Apocryph SQLiteSchemaProvider fixed'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-6332040438885996471</id><published>2006-09-27T13:53:00.000-07:00</published><updated>2006-09-27T14:29:40.341-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows forms'/><category scheme='http://www.blogger.com/atom/ns#' term='iPod'/><category scheme='http://www.blogger.com/atom/ns#' term='MTV'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET2'/><title type='text'>"MTV Double Cheese" like bring to my iPod</title><content type='html'>I like very much the MTV "Double Cheese" concept.&lt;br /&gt;For those who do not know what I'm taking about, it's simply a period of time (30 min. maybe) while they play songs from two artists alternatively, usually the biggest hits.&lt;br /&gt;I was wondering for a long time how to bring this to my iPod, for example by extending iTunes, until the day i found an article on codeproject that describe how to access to iTunes/iPod from .net with a COM wrapper...&lt;br /&gt;I've spend a few hours to build a small (proof of concept) app, that is able to generate some "double cheese playlist:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger2/6527/258787026799193/1600/ipodDoubleCheese.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger2/6527/258787026799193/400/ipodDoubleCheese.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;to use it:&lt;br /&gt;- requires .net 2&lt;br /&gt;- requires iTunes&lt;br /&gt;- ensure your iPod is connected, there is actually no error management at all&lt;br /&gt;- start the app&lt;br /&gt;- wait for you library to be loaded&lt;br /&gt;- double click on the artist, or the album, node you want to add&lt;br /&gt;- press Save to create a playlist on your iPod. the playlist name will be the list of artist name&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fullxml.com/media/doublecheese.zip"&gt;download it here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;any comment welcome :-) I will post a stronger version very soon&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-6332040438885996471?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/6332040438885996471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=6332040438885996471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6332040438885996471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/6332040438885996471'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2006/09/mtv-double-cheese-like-bring-to-my-ipod.html' title='&quot;MTV Double Cheese&quot; like bring to my iPod'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2119983323538995583.post-2911406528400344052</id><published>2006-09-25T15:48:00.000-07:00</published><updated>2006-09-25T16:15:31.226-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLite'/><category scheme='http://www.blogger.com/atom/ns#' term='CodeSmith'/><category scheme='http://www.blogger.com/atom/ns#' term='nettiers'/><title type='text'>.netTiers and SQLite</title><content type='html'>&lt;div&gt;Lastly, I'm working on making netTiers compliant with other database that only SQL server.&lt;br /&gt;My primary interest is to be able to use .netTiers when i need to develop an application that required an embedded database.&lt;br /&gt;I've decided, as a start , to focus on SQLite, as it is a light and powerfull database engine with a good ADO.NET 2 provider (you can find it at: &lt;a href="http://sqlite.phxsoftware.com/"&gt;http://sqlite.phxsoftware.com/&lt;/a&gt;).&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;To acheive this goal, i've created a new NetTiersProvider, that rely upon DbProviderFactory architecture, which allow us to write some generic Data code. Then, in order to support the different type of database, i generate an xml file that contains all the queries for a dedicated InvariantProviderName.&lt;br /&gt;The hardest part was to refactor some of the data methods and queries so that DbProviderFactory that do not support Output parameter can work (.netTiers use to use Ouput parameter to get back computed columns from Insert and Update queries)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;As far as I am, the unit tests are now workings, and I'm working on modifying the main netTiers templates files so it generate the right Data provider depending of the selected SourceDatabase.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;here is a screenshot of the nunit tests results :&lt;/div&gt;&lt;a href="http://photos1.blogger.com/blogger2/6527/258787026799193/1600/nettiers_sqlite_nunit.png"&gt;&lt;/a&gt;&lt;a href="http://photos1.blogger.com/blogger2/6527/258787026799193/1600/nettiers_sqlite_nunit.png"&gt;&lt;img src="http://photos1.blogger.com/blogger2/6527/258787026799193/1600/nettiers_sqlite_nunit.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2119983323538995583-2911406528400344052?l=predicatet.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://predicatet.blogspot.com/feeds/2911406528400344052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2119983323538995583&amp;postID=2911406528400344052' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2911406528400344052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2119983323538995583/posts/default/2911406528400344052'/><link rel='alternate' type='text/html' href='http://predicatet.blogspot.com/2006/09/nettiers-and-sqlite.html' title='.netTiers and SQLite'/><author><name>John Roland</name><uri>http://www.blogger.com/profile/04970656187403887584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.box.net/index.php?rm=box_v2_download_shared_file&amp;file_id=f_39509162'/></author><thr:total>5</thr:total></entry></feed>
