<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://saguiitay.spaces.live.com/mmm2008-05-08_20.17/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fsaguiitay.spaces.live.com%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Itay's space</title><description /><link>http://saguiitay.spaces.live.com/</link><language>en-US</language><pubDate>Fri, 09 May 2008 17:22:28 GMT</pubDate><lastBuildDate>Fri, 09 May 2008 17:22:28 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><live:identity><live:id>4287375271627483618</live:id><live:alias>saguiitay</live:alias></live:identity><image><title>Itay's space</title><url>http://tkfiles.storage.live.com/y1p4-XpO-iQRL_E21bxBTNkOqP9eUYEKEkffKriAMhHlRwFjA1Mxjnrpg-LOVyKwUBSUTjm9aM8Z7Q</url><link>http://saguiitay.spaces.live.com/</link></image><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>SharePoint 2007 Web Folders</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!817.entry</link><description>&lt;p&gt;I've been working with SharePoint 2007 for so long now on my office desktop and laptop, that it seems that I don't remember some of the SharePoint 2007 requirements. Working on a fresh virtual machine that has WSS 3.0 installed and running, I've tries to open a Pages Library as a Web Folder. The result was a nice error message telling me &amp;quot;Your client does not support opening this list with Windows Explorer.&amp;quot; This seemed a bit strange, since I'm working on the SharePoint server itself, which is a fully updated Windows Server 2003 (all patch and updates installed), and I'm browsing using Internet Explorer 7 (again, fully updated).  &lt;p&gt;After googling a bit, it seems the resolution was hidden in a forum with a link on page 2 of Google. The topic forwarded me to the following Microsoft page: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=17C36612-632E-4C04-9382-987622ED1D64&amp;amp;displaylang=en" target="_blank"&gt;Software Update for Web Folders (KB907306)&lt;/a&gt;  &lt;p&gt;I'm not sure if I should say that this update should come as part of the Windows Update or not, but I'm sure glad I've found this!&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+SharePoint+2007+Web+Folders&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>SharePoint</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!817.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!817.entry</guid><pubDate>Mon, 28 Apr 2008 19:46:27 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!817/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!817.entry#comment</wfw:comment><dcterms:modified>2008-04-28T19:46:27Z</dcterms:modified></item><item><title>Microsoft SharePoint Products and Technologies Team Blog : Don't miss the announcements by Bill Gates to kick off the SharePoint Conference!</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!807.entry</link><description>&lt;p&gt;From &amp;quot;The official blog of the SharePoint Product Group&amp;quot; come this entry: 
&lt;p&gt;&lt;a href="http://blogs.msdn.com/sharepoint/archive/2008/03/02/don-t-miss-the-announcements-by-bill-gates-to-kick-off-the-sharepoint-conference.aspx"&gt;Microsoft SharePoint Products and Technologies Team Blog : Don't miss the announcements by Bill Gates to kick off the SharePoint Conference!&lt;/a&gt; 
&lt;p&gt;You can come and meet some of my colleagues at the &lt;a href="http://www.mssharepointconference.com/Pages/default.aspx" target="_blank"&gt;Microsoft Office SharePoint Conference 2008&lt;/a&gt;, at the Tzunami booth.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+Microsoft+SharePoint+Products+and+Technologies+Team+Blog+%3a+Don't+miss+the+announcements+by+Bill+Gates+to+kick+off+the+SharePoint+Conference!&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>SharePoint</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!807.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!807.entry</guid><pubDate>Mon, 03 Mar 2008 14:48:10 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!807/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!807.entry#comment</wfw:comment><dcterms:modified>2008-05-01T23:43:26Z</dcterms:modified></item><item><title>User friendly file size</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!805.entry</link><description>&lt;p&gt;Based on a utility method found in the Microsoft.SharePoint.Utilities.SPUtility class, here's a method to get a user-friendly text for a file size:  &lt;pre&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; FormatSize(&lt;span style="color:rgb(0,0,255)"&gt;long&lt;/span&gt; cbSize)
{
    &lt;span style="color:rgb(0,0,255)"&gt;double&lt;/span&gt; num;
    &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (cbSize &amp;lt;= 1024L)
    {
        &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (cbSize &amp;lt;= 0L)
        {
            &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&gt;.Format(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;{0} KB&amp;quot;&lt;/span&gt;, &lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;0&amp;quot;&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;string&lt;/span&gt;.Format(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;&amp;lt; 1 KB&amp;quot;&lt;/span&gt;);
    }
    &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (cbSize &amp;lt;= 1048576L)
    {
        num = &lt;span style="color:rgb(43,145,175)"&gt;Math&lt;/span&gt;.Round((&lt;span style="color:rgb(0,0,255)"&gt;double&lt;/span&gt;)(&lt;span style="color:rgb(43,145,175)"&gt;Convert&lt;/span&gt;.ToDouble(cbSize) / 1024.0), 1);
        &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&gt;.Format(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;{0} KB&amp;quot;&lt;/span&gt;, num);
    }
    &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (cbSize &amp;lt;= 1073741824L)
    {
        num = &lt;span style="color:rgb(43,145,175)"&gt;Math&lt;/span&gt;.Round((&lt;span style="color:rgb(0,0,255)"&gt;double&lt;/span&gt;)(&lt;span style="color:rgb(43,145,175)"&gt;Convert&lt;/span&gt;.ToDouble(cbSize) / 1048576.0), 1);
        &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&gt;.Format(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;{0} MB&amp;quot;&lt;/span&gt;, num);
    }

    &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (cbSize &amp;lt;= 1099511627776L)
    {
        num = &lt;span style="color:rgb(43,145,175)"&gt;Math&lt;/span&gt;.Round((&lt;span style="color:rgb(0,0,255)"&gt;double&lt;/span&gt;)(&lt;span style="color:rgb(43,145,175)"&gt;Convert&lt;/span&gt;.ToDouble(cbSize) / 1073741824.0), 1);
        &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&gt;.Format(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;{0} GB&amp;quot;&lt;/span&gt;, num);
    }

    num = &lt;span style="color:rgb(43,145,175)"&gt;Math&lt;/span&gt;.Round((&lt;span style="color:rgb(0,0,255)"&gt;double&lt;/span&gt;)(&lt;span style="color:rgb(43,145,175)"&gt;Convert&lt;/span&gt;.ToDouble(cbSize) / 1099511627776.0), 1);
    &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&gt;.Format(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;{0} TB&amp;quot;&lt;/span&gt;, num);
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+User+friendly+file+size&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>General .Net</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!805.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!805.entry</guid><pubDate>Fri, 01 Feb 2008 21:07:13 GMT</pubDate><slash:comments>1</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!805/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!805.entry#comment</wfw:comment><dcterms:modified>2008-02-01T21:07:13Z</dcterms:modified></item><item><title>Utility classes: Negative arrays</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!803.entry</link><description>&lt;p&gt;Playing around with &lt;a href="http://www.aisto.com/roeder/dotnet" target="_blank"&gt;Lutz Roeder's .Net Reflector&lt;/a&gt;, I came across a very simple implementation of a &amp;quot;negative&amp;quot; array inside the Microsoft.SharePoint.Utilities namespace: NegativeArray. This class allows you to work with a &amp;quot;two-way&amp;quot; array: Creating a NegativeArray of size 10, you will have an array, with indices ranging from -10 to 10. &lt;p&gt;Where's the class implementation: &lt;p&gt; &lt;pre&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;NegativeArray
&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;int&lt;/span&gt;[] negative;
    &lt;span style="color:rgb(0,0,255)"&gt;private&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;int&lt;/span&gt;[] positive;

    &lt;span style="color:rgb(0,0,255)"&gt;public&lt;/span&gt; NegativeArray(&lt;span style="color:rgb(0,0,255)"&gt;int&lt;/span&gt; maxIndex)
    {
        &lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;.positive = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;int&lt;/span&gt;[maxIndex + 1];
        &lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;.negative = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;int&lt;/span&gt;[maxIndex];
    }

    &lt;span style="color:rgb(0,0,255)"&gt;public&lt;/span&gt; NegativeArray(&lt;span style="color:rgb(0,0,255)"&gt;int&lt;/span&gt; maxIndex, &lt;span style="color:rgb(43,145,175)"&gt;NegativeArray&lt;/span&gt; source)
    {
        &lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;.positive = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;int&lt;/span&gt;[maxIndex + 1];
        &lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;.negative = &lt;span style="color:rgb(0,0,255)"&gt;new&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;int&lt;/span&gt;[maxIndex];
        &lt;span style="color:rgb(0,0,255)"&gt;for&lt;/span&gt; (&lt;span style="color:rgb(0,0,255)"&gt;int&lt;/span&gt; i = -source.MaxIndex; i &amp;lt;= source.MaxIndex; i++)
            &lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;[i] = source[i];
    }

    &lt;span style="color:rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;int&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;[&lt;span style="color:rgb(0,0,255)"&gt;int&lt;/span&gt; index]
    {
        &lt;span style="color:rgb(0,0,255)"&gt;get
&lt;/span&gt;        {
            &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; ((index &amp;gt;= 0) &amp;amp;&amp;amp; (index &amp;lt;= &lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;.MaxIndex))
                &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;.positive[index];

            &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (index &amp;lt; -&lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;.MaxIndex)
                &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;ArgumentOutOfRangeException&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;.negative[-index - 1];
        }
        &lt;span style="color:rgb(0,0,255)"&gt;set
&lt;/span&gt;        {
            &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; ((index &amp;gt;= 0) &amp;amp;&amp;amp; (index &amp;lt;= &lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;.MaxIndex))
                &lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;.positive[index] = &lt;span style="color:rgb(0,0,255)"&gt;value&lt;/span&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; (index &amp;lt; -&lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;.MaxIndex)
                    &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;ArgumentOutOfRangeException&lt;/span&gt;();

                &lt;span style="color:rgb(0,0,255)"&gt;this&lt;/span&gt;.negative[-index - 1] = &lt;span style="color:rgb(0,0,255)"&gt;value&lt;/span&gt;;
            }
        }
    }

    &lt;span style="color:rgb(0,0,255)"&gt;public&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;int&lt;/span&gt; MaxIndex
    {
        &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;.positive.Length - 1);
        }
    }
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+Utility+classes%3a+Negative+arrays&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>General .Net</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!803.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!803.entry</guid><pubDate>Tue, 29 Jan 2008 18:57:28 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!803/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!803.entry#comment</wfw:comment><dcterms:modified>2008-01-31T09:22:54Z</dcterms:modified></item><item><title>MIME Types and File Extensions</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!802.entry</link><description>&lt;p&gt;Whenever working with content of files, it is often useful to have a way to find the MIME type based on a file extension, or the other way around - finding the file extension from a MIME type. Below are 2 useful methods for such requirements:  &lt;pre&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; GetExtensionFromMime(&lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&gt; mimeType)
{
    &lt;span style="color:rgb(0,0,255)"&gt;try
&lt;/span&gt;    {
        &lt;span style="color:rgb(43,145,175)"&gt;RegistryKey&lt;/span&gt; key = &lt;span style="color:rgb(43,145,175)"&gt;Registry&lt;/span&gt;.ClassesRoot.OpenSubKey(&lt;span style="color:rgb(163,21,21)"&gt;@&amp;quot;Mime\Database\Content Type\&amp;quot;&lt;/span&gt; + mimeType);
        &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (key == &lt;span style="color:rgb(0,0,255)"&gt;null&lt;/span&gt;)
            &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;null&lt;/span&gt;;

        &lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&gt; str = key.GetValue(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;Extension&amp;quot;&lt;/span&gt;) &lt;span style="color:rgb(0,0,255)"&gt;as&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&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(str))
            &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&gt;.Empty;
        
        &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; str;
    }
    &lt;span style="color:rgb(0,0,255)"&gt;catch
&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;string&lt;/span&gt;.Empty;
    }
}

&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; GetMimeFromExtension(&lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&gt; ext)
{
    &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (!ext.StartsWith(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;.&amp;quot;&lt;/span&gt;))
        ext = &lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;.&amp;quot;&lt;/span&gt; + ext;
    &lt;span style="color:rgb(43,145,175)"&gt;RegistryKey&lt;/span&gt; key = &lt;span style="color:rgb(43,145,175)"&gt;Registry&lt;/span&gt;.ClassesRoot.OpenSubKey(ext);
    &lt;span style="color:rgb(0,0,255)"&gt;if&lt;/span&gt; (key == &lt;span style="color:rgb(0,0,255)"&gt;null&lt;/span&gt;)
        &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;null&lt;/span&gt;;

    &lt;span style="color:rgb(0,0,255)"&gt;return&lt;/span&gt; key.GetValue(&lt;span style="color:rgb(163,21,21)"&gt;&amp;quot;Content Type&amp;quot;&lt;/span&gt;) &lt;span style="color:rgb(0,0,255)"&gt;as&lt;/span&gt; &lt;span style="color:rgb(0,0,255)"&gt;string&lt;/span&gt;;
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+MIME+Types+and+File+Extensions&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>General .Net</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!802.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!802.entry</guid><pubDate>Tue, 29 Jan 2008 18:40:06 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!802/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!802.entry#comment</wfw:comment><dcterms:modified>2008-01-29T18:40:06Z</dcterms:modified></item><item><title>Don't name the URL for a sub-site 'CON' in MOSS 2007 - mindykelly's blog</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!797.entry</link><description>&lt;p&gt;Now, I'm not the best person to speak about documentation and openness is code and products, but every now and then I find myself raising an eyebrow about someone else's behavior: &lt;p&gt;&lt;a href="http://www.sharepointblogs.com/mindykelly/archive/2007/06/20/don-t-name-the-url-for-a-sub-site-con-in-moss-2007.aspx"&gt;Don't name the URL for a sub-site 'CON' in MOSS 2007 - mindykelly's blog&lt;/a&gt;  &lt;p&gt;I don't complain that Microsoft don't allow the &amp;quot;CON&amp;quot; as the URL of a WSS/MOSS site. But people, how about making this a public knowledge. How about putting up a one-stop repository for all SharePoint limitation and restrictions? &lt;p&gt;Among the many sites that Microsoft pops-up every other week, I'd love to see a site that centralize all the information about naming convention and limitations in SharePoint. Starting from the list of invalid characters for any type of items, list of &amp;quot;illegal&amp;quot; endings (_files, -files, etc), invalid names and so on...&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+Don't+name+the+URL+for+a+sub-site+'CON'+in+MOSS+2007+-+mindykelly's+blog&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>SharePoint</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!797.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!797.entry</guid><pubDate>Mon, 19 Nov 2007 07:26:37 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!797/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!797.entry#comment</wfw:comment><dcterms:modified>2007-11-19T07:26:37Z</dcterms:modified></item><item><title>SharePoint Associated groups</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!794.entry</link><description>&lt;p&gt;When you create a new sub-site in SharePoint, and choose the &amp;quot;Use Unique Permissions&amp;quot; option, three groups are created at the site-collection level: Owners, Members &amp;amp; Visitors. These groups are &amp;quot;associated&amp;quot; to the sub-site that you've just created.  &lt;p&gt;But what does &amp;quot;associated&amp;quot; actually mean?  &lt;p&gt;First, I misled you a bit - the names of the groups are actually &lt;em&gt;SiteName&lt;/em&gt; Owners, &lt;em&gt;SiteName&lt;/em&gt; Members &amp;amp; &lt;em&gt;SiteName&lt;/em&gt; Visitors (where &lt;em&gt;SiteName&lt;/em&gt; is the name of the sub-site you're creating). Next they all have a nice link in their description, directing you to the sub-site.  &lt;p&gt;More interesting, those three groups get some permissions on the sub-site.  &lt;p&gt;The less obvious &amp;quot;associations&amp;quot; are the fact that those groups will appear in the Quick Launch area when you go to the &amp;quot;&lt;em&gt;People and Gr&lt;/em&gt;oups&amp;quot; section of the site. Also, if you delete the sub-site, the groups will be removed from the site-collection.   &lt;p&gt;That's quite a lot of meaning for a single word.  &lt;p&gt;Let look a bit deeper into each meaning:  &lt;p&gt;&lt;strong&gt;Title &amp;amp; Description:&lt;/strong&gt;  &lt;p&gt;This is just some basic naming policy used by SharePoint. The &lt;em&gt;SiteName&lt;/em&gt; is validated, the group type is appended, the description is generated with a link. Nothing fancy here.  &lt;p&gt;&lt;strong&gt;Permissions:&lt;/strong&gt;  &lt;p&gt;The permissions are obtained by assigning permission levels to each group. Again, nothing too interesting.  &lt;p&gt;&lt;strong&gt;Quick Launch:&lt;a href="http://tk3.storage.msn.com/y1pm1Ce_ywp6TtYSCAnZsdaogAN-wAVwnKWS9LkgwgiAbt1QI03_QEBjC3ErNdsNrfYFW39vVm4k8ywBq0484S0Uw?PARTNER=WRITER"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px" height=215 alt="MOSS_SetUpGroups" src="http://tk3.storage.msn.com/y1pm1Ce_ywp6Tub0_fvVA2qAdMG40a8fzFfrQHo2av92jWgpDbFr_YlL0_HfhMxE5dXeEUk5RZ_V17ZAK9brGjvtg?PARTNER=WRITER" width=244 align=right border=0&gt;&lt;/a&gt;&lt;/strong&gt;  &lt;p&gt;The list of groups that appear in the Quick Launch is retained in the &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spweb.associatedgroups.aspx" target="_blank"&gt;AssociatedGroups&lt;/a&gt; property of the &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spweb.aspx" target="_blank"&gt;SPWeb&lt;/a&gt;. This list can also be updated by modifying the vti_associategroups key in the &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spweb.allproperties.aspx" target="_blank"&gt;AllProperties&lt;/a&gt; property of &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spweb.aspx" target="_blank"&gt;SPWeb&lt;/a&gt;.  &lt;p&gt;Setting a group as the &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spweb.associatedmembergroup.aspx" target="_blank"&gt;AssociatedMemberGroup&lt;/a&gt;, &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spweb.associatedvisitorgroup.aspx" target="_blank"&gt;AssociatedVisitorGroup&lt;/a&gt; or &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spweb.associatedownergroup.aspx" target="_blank"&gt;AssociatedOwnerGroup&lt;/a&gt; automatically adds the group to the list of AssociatedGroups. These properties can be also updated by modifying the vti_associatemembergroup, vti_associatevisitorgroup &amp;amp; vti_associateownergroup keys in the &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spweb.allproperties.aspx" target="_blank"&gt;AllProperties&lt;/a&gt; property of &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spweb.aspx" target="_blank"&gt;SPWeb&lt;/a&gt;.  &lt;p&gt;These three properties are also reflected in the &amp;quot;&lt;em&gt;Set up Groups&lt;/em&gt;&amp;quot; page of the sub-site.   &lt;p&gt;&lt;strong&gt;Auto deletion:&lt;/strong&gt;  &lt;p&gt;This issue is a bit more complex. When using the SharePoint UI, or when calling &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spweb.createdefaultassociatedgroups.aspx" target="_blank"&gt;CreateDefaultSharePointGroups&lt;/a&gt; methods of &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spweb.aspx" target="_blank"&gt;SPWeb&lt;/a&gt;, this behavior is implemented automatically. However, creating a group, and even associating it with a site, doesn't reproduce it. Only after using &lt;a href="http://www.aisto.com/roeder/dotnet" target="_blank"&gt;Lutz Roeder's .Net Reflector&lt;/a&gt;, and examining the &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spweb.createdefaultassociatedgroups.aspx" target="_blank"&gt;CreateDefaultSharePointGroups&lt;/a&gt; method, I've found that you need to add the group's ID to the vti_createdassociategroups key in &lt;a href="http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spweb.allproperties.aspx" target="_blank"&gt;AllProperties&lt;/a&gt;.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+SharePoint+Associated+groups&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>SharePoint</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!794.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!794.entry</guid><pubDate>Tue, 02 Oct 2007 20:02:12 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!794/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!794.entry#comment</wfw:comment><dcterms:modified>2007-10-02T20:02:12Z</dcterms:modified></item><item><title>SqlCE doesn't support TRUNCATE TABLE</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!788.entry</link><description>&lt;p&gt;Not long ago, I modified a piece of code to use SqlCE as a data store. The older code was using OleDb to access an MS Access file. &lt;p&gt;As part of the modifications, our team did a general overview of much of the data access code. We did many changes, more than I can even number. Here is a partial list: &lt;ul&gt; &lt;li&gt;Review of table keys, indices and restrictions.  &lt;li&gt;Usage of IDbCommand instead of SQL string statements.  &lt;li&gt;Removed legacy object model.  &lt;li&gt;Replaced consecutive DELETE and INSERT statements with UPDATE.  &lt;li&gt;and so on.&lt;/ul&gt; &lt;p&gt;A few days ago, I noticed some delay in the data layer. This was nothing new - we process a huge amount of data - but since the many improvements, what used to be fast might now appear slow compared to the optimized code. After some search I've come up to a method that clears a many tables in the database. Something along the lines of:&lt;pre&gt;&lt;span&gt;using&lt;/span&gt; (IDbCommand cmd = DAL.GetClearTableCommand(tablename))
{
    &lt;span&gt;// cmd.CommandText == &amp;quot;DELETE FROM &amp;quot; + tablename&lt;/span&gt;
    cmd.ExecuteNonQuery();
}
&lt;/pre&gt;
&lt;p&gt;This of course, is nothing fancy or special. My thought was, instead of performing a DELETE statement, why not use the TRUNCATE TABLE statement, which is faster and more efficient. To my surprise, changing the GetClearTableCommand() method to return a TRUNCATE TABLE statement results in an parsing exception.
&lt;p&gt;After some research, I've found that the TRUNCATE TABLE statement is not supported/implemented in SqlCE. Much to my disappointment, I will have to leave the DELETE statement in place, until I find a faster solution. 
&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+SqlCE+doesn't+support+TRUNCATE+TABLE&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>General .Net</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!788.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!788.entry</guid><pubDate>Mon, 01 Oct 2007 19:08:14 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!788/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!788.entry#comment</wfw:comment><dcterms:modified>2007-10-01T19:08:14Z</dcterms:modified></item><item><title>Allowing timeout on long-running operations - possible bug - Miscellaneous Debris</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!785.entry</link><description>&lt;p&gt;Avner Kashtan writes in his &lt;a href="http://weblogs.asp.net/avnerk/default.aspx" target="_blank"&gt;blog&lt;/a&gt; about an interesting problem, and solution, on how to run a long-running operation, with a timeout. The solution involves, obviously, running the code in a different thread. The possible bug is an unhandled exception in the different thread, which might kill the whole application process. &lt;p&gt;The suggested solution is to catch the exception in the running thread, and &amp;quot;passing the exception backward&amp;quot;. This is possible thanks to the us of an anonymous delegate. &lt;p&gt;Although this is indeed, as mentioned in the post, an ugly solution, I find myself wondering what's the penalty of doing such a thing. Is the performance degraded so much? Is it such a horrible OOP crime? &lt;p&gt;&lt;a href="http://weblogs.asp.net/avnerk/archive/2007/08/27/allowing-timeout-on-long-running-operations-possible-bug.aspx"&gt;Allowing timeout on long-running operations - possible bug - Miscellaneous Debris&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+Allowing+timeout+on+long-running+operations+-+possible+bug+-+Miscellaneous+Debris&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>General .Net</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!785.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!785.entry</guid><pubDate>Sat, 29 Sep 2007 15:09:47 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!785/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!785.entry#comment</wfw:comment><dcterms:modified>2007-09-29T15:09:47Z</dcterms:modified></item><item><title>Scot Hiller writes about the Tzunami Deployer</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!780.entry</link><description>&lt;p&gt;A couple of weeks ago Scot Hillier, Microsoft SharePoint MVP, wrote in his blog about our expected release of the Tzunami Deployer. Take a look at it here: &lt;a href="http://ablog.apress.com/wp-trackback.php?p=1414" target="_blank"&gt;Next Version of Tzunami Deployer&lt;/a&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+Scot+Hiller+writes+about+the+Tzunami+Deployer&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!780.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!780.entry</guid><pubDate>Wed, 22 Aug 2007 21:23:54 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!780/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!780.entry#comment</wfw:comment><dcterms:modified>2007-08-22T21:23:54Z</dcterms:modified></item><item><title>MOSS Documents Libraries naming policy</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!775.entry</link><description>&lt;p&gt;When you create a new Documents Library in MOSS, you are asked to provide a title for that Library. The provided title will be later used to define the internal name of the Library, as well as its URL. This is where the problems start. &lt;p&gt;It only makes sense that MOSS allows the user to enter any value for the Library's title. However, there are a lot of limitations on internal names, and even more on URLs. This result in MOSS doing some kind of encoding/validation on the title. The result might range from having the name exactly the same as the title, to the name being completely different and unrelated. &lt;p&gt;After some digging, I came up with the following logic: &lt;p&gt;&lt;font face="Courier New" size=2&gt;For each char:&lt;br&gt;  if char is valid&lt;br&gt;    add it to URL&lt;br&gt;  if char is invalid&lt;br&gt;    if URL already ends with '_' (underscore)&lt;br&gt;      don't do anything&lt;br&gt;    else&lt;br&gt;      add '_' (underscore) &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;Strip '_' from beginning and end of URL &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;If URL is empty&lt;br&gt;  replace URL with a legal DocLibXXX value where XXX is a number&lt;/font&gt;  &lt;p&gt;Invalid characters are the following:&lt;br&gt;1. Any character bellow 0x20&lt;br&gt;2. Any of the following characters: ~!@#$%^&amp;amp;*{}[]-=+\:&amp;quot;'|&amp;lt;&amp;gt;,?/.&lt;br&gt;3. Any character that takes more than 1 byte (Unicode and such) &lt;p&gt;  &lt;p&gt;Hopefully, this will save some other poor soul from losing his hair like I did.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+MOSS+Documents+Libraries+naming+policy&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>SharePoint</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!775.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!775.entry</guid><pubDate>Wed, 08 Aug 2007 20:04:53 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!775/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!775.entry#comment</wfw:comment><dcterms:modified>2008-01-27T18:14:46Z</dcterms:modified></item><item><title>Creating a user in Documentum</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!774.entry</link><description>&lt;p&gt;Here's 2 ways to create a user in Documentum: &lt;p&gt;Using the DQL: &lt;p&gt;&lt;font face="Courier New" size=2&gt;create dm_cabinet object&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;set object_name = '%USERNAME%'&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;go&lt;br&gt;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;create dm_user object&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;set user_name = '%USER DISPLAY NAME%,&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;set default_folder = '/%USERNAME%',&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;set user_os_name = '%USERNAME%',&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;set user_privileges = %PRIVILEGES%',&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;set user_address = '%USER EMAIL%&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;go&lt;/font&gt; &lt;p&gt;Using the IAPI: &lt;p&gt;&lt;font face="Courier New" size=2&gt;create,c,dm_user&lt;br&gt;set,c,l,user_name&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;set,c,l,user_os_name&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;set,c,l,user_address&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New" size=2&gt;save,c,l&lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+Creating+a+user+in+Documentum&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>Documentum</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!774.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!774.entry</guid><pubDate>Thu, 02 Aug 2007 15:20:08 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!774/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!774.entry#comment</wfw:comment><dcterms:modified>2007-08-02T15:21:24Z</dcterms:modified></item><item><title>ListViewGroup - only one item per group</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!768.entry</link><description>&lt;p&gt;As I was working on a new GUI part of the software I'm working on, I needed to allow the user to choose only a single item in each category. I overloaded the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.listview.aspx" target="_blank"&gt;ListView&lt;/a&gt; control, and override the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.forms.listview.onitemcheck.aspx" target="_blank"&gt;OnItemCheck&lt;/a&gt; method. Here's the result: &lt;p&gt;&lt;font face="Courier New" size=2&gt;&lt;font color="#0000ff"&gt;public class&lt;/font&gt; &lt;font color="#0080ff"&gt;SingleItemPerGroupListView&lt;/font&gt; : &lt;font color="#0080ff"&gt;ListView&lt;/font&gt;&lt;br&gt;{&lt;br&gt;    &lt;font color="#0000ff"&gt;public&lt;/font&gt; SingleItemPerGroupListView()&lt;br&gt;    { } &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;    &lt;font color="#0000ff"&gt;protected override void&lt;/font&gt; OnItemCheck(&lt;font color="#0080ff"&gt;ItemCheckEventArgs&lt;/font&gt; ice)&lt;br&gt;    {&lt;br&gt;        &lt;font color="#008000"&gt;// Always behave regulary when user uncheck an item&lt;br&gt;&lt;/font&gt;        &lt;font color="#0000ff"&gt;if&lt;/font&gt; (ice.NewValue == &lt;font color="#0080ff"&gt;CheckState&lt;/font&gt;.Unchecked)&lt;br&gt;        {&lt;br&gt;            &lt;font color="#0000ff"&gt;base&lt;/font&gt;.OnItemCheck(ice);&lt;br&gt;            &lt;font color="#0000ff"&gt;return&lt;/font&gt;;&lt;br&gt;        } &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;        &lt;font color="#008000"&gt;// Get the checked item&lt;br&gt;&lt;/font&gt;        &lt;font color="#0080ff"&gt;ListViewItem&lt;/font&gt; lvi = &lt;font color="#0000ff"&gt;this&lt;/font&gt;.Items[ice.Index]; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;        &lt;font color="#008000"&gt;// If no item has no group, handle regulary&lt;br&gt;&lt;/font&gt;        &lt;font color="#0000ff"&gt;if&lt;/font&gt; (lvi.Group == &lt;font color="#0000ff"&gt;null&lt;/font&gt;)&lt;br&gt;        {&lt;br&gt;            &lt;font color="#0000ff"&gt;base&lt;/font&gt;.OnItemCheck(ice);&lt;br&gt;            &lt;font color="#0000ff"&gt;return&lt;/font&gt;;&lt;br&gt;        } &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;        &lt;font color="#008000"&gt;// If another item is checked, uncheck item&lt;br&gt;&lt;/font&gt;        &lt;font color="#0000ff"&gt;foreach&lt;/font&gt; (&lt;font color="#0080ff"&gt;ListViewItem&lt;/font&gt; otherLvi &lt;font color="#0000ff"&gt;in&lt;/font&gt; lvi.Group.Items)&lt;br&gt;        {&lt;br&gt;            &lt;font color="#0000ff"&gt;if&lt;/font&gt; (otherLvi == lvi)&lt;br&gt;                &lt;font color="#0000ff"&gt;continue&lt;/font&gt;; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New" size=2&gt;            &lt;font color="#0000ff"&gt;if&lt;/font&gt; (otherLvi.Checked)&lt;br&gt;            {&lt;br&gt;                otherLvi.Checked = &lt;font color="#0000ff"&gt;false&lt;/font&gt;;&lt;br&gt;            }&lt;br&gt;        }&lt;br&gt;    }&lt;br&gt;}&lt;/font&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+ListViewGroup+-+only+one+item+per+group&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>GUI Development</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!768.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!768.entry</guid><pubDate>Wed, 01 Aug 2007 22:13:25 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!768/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!768.entry#comment</wfw:comment><dcterms:modified>2007-08-01T22:13:25Z</dcterms:modified></item><item><title>Comparison between the Deployer and another migration product</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!723.entry</link><description>&lt;div&gt;Jingmei Li, a Microsoft employee, did a comparison &lt;a href="http://blogs.msdn.com/jingmeili/archive/2007/03/13/evaluate-partner-solutions-that-support-migration-from-sps-2003-to-moss-2007.aspx"&gt;on her blog&lt;/a&gt; between the &lt;a href="http://www.tzunami.com"&gt;Tzunami Deployer 2.01&lt;/a&gt;, and DocAve 4.1 Migrator. &lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+Comparison+between+the+Deployer+and+another+migration+product&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>SharePoint</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!723.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!723.entry</guid><pubDate>Wed, 25 Apr 2007 12:14:06 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!723/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!723.entry#comment</wfw:comment><dcterms:modified>2008-01-27T18:15:33Z</dcterms:modified></item><item><title>Scot Hillier's "Microsoft SharePoint: Building Office 2007 Solutions in C# 2005"</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!712.entry</link><description>&lt;div&gt;&lt;a href="http://www.shillier.com/"&gt;Scot Hillier&lt;/a&gt;, on of the gurus of Microsoft SharePoint, just shipped his new book about Sharepoint solutions, entitles &amp;quot;&lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http://www.amazon.com/Microsoft-SharePoint-Building-Office-Solutions/dp/1590598091/sr%3D8-1/qid%3D1162944826%3Fie%3DUTF8%26s%3Dbooks&amp;amp;tag=biustudiesmat-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Microsoft SharePoint: Building Office 2007 Solutions in C# 2005&lt;/a&gt;&amp;quot;. As with the rest of Scot's book, this is definetly a must-read for all SharePoint administrators and developers. Scot is an independent consultant focused on SharePoint, the Microsoft Office System, and .NET technologies. Scot has authored eight books on Microsoft technologies over the last ten years, as well as numerous articles appearing in magazines and online.&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+Scot+Hillier's+%22Microsoft+SharePoint%3a+Building+Office+2007+Solutions+in+C%23+2005%22&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>SharePoint</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!712.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!712.entry</guid><pubDate>Thu, 15 Feb 2007 21:31:54 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!712/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!712.entry#comment</wfw:comment><dcterms:modified>2007-02-15T21:31:54Z</dcterms:modified></item><item><title>Design Patterns Implementation in a Storage Explorer Application</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!708.entry</link><description>&lt;div&gt;Although a bit old, I found the well-written, interesting article by Breman Sinaga, &lt;a href="http://www.codeproject.com/cs/design/sinagastorageexplorer.asp"&gt;Design Patterns Implementation in a Storage Explorer Application&lt;/a&gt; to be an excellente piece of work, explaining about several design patterns, such as &lt;a href="http://en.wikipedia.org/wiki/Strategy_pattern"&gt;Strategy&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Observer_design_pattern"&gt;Observer&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Adapter_pattern"&gt;Adapter &lt;/a&gt;and &lt;a href="http://en.wikipedia.org/wiki/Template_method_design_pattern"&gt;Template Method&lt;/a&gt;, and showing how to corperate them all together. The result looks like a well designed, well thought-of, tool.&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+Design+Patterns+Implementation+in+a+Storage+Explorer+Application&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>General .Net</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!708.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!708.entry</guid><pubDate>Mon, 01 Jan 2007 22:27:19 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!708/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!708.entry#comment</wfw:comment><dcterms:modified>2007-01-01T22:27:19Z</dcterms:modified></item><item><title>DebbugerDisplayAttribute</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!707.entry</link><description>&lt;div&gt;&lt;font face="Geneva, Arial, Sans-serif" size=2&gt;A little late, I know, but while watching the &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=165493"&gt;Channel 9: Scott Nonnenberg - Visualizers in VS 2005 webcast&lt;/a&gt;, I've learned the beauty of the DebuggerDisplayAttribute.&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Geneva, Arial, Sans-serif" size=2&gt;For those of you not familiar with this attribute, it allow you to choose how the tooltips inside the IDE while debugging will look like, and what values they will show you. Look at the following example:&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Geneva, Arial, Sans-serif"&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font size=2&gt;[System.Diagnostics.&lt;/font&gt;&lt;font color="#2b91af" size=2&gt;DebuggerDisplay&lt;/font&gt;&lt;font size=2&gt;(&lt;/font&gt;&lt;font color="#a31515" size=2&gt;&amp;quot;Name={Name} ({Members.Count} members)&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font size=2&gt;)]&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff" size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color="#0000ff" size=2&gt;class&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace" color="#2b91af" size=2&gt;Group&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font size=2&gt;{&lt;br&gt;    &lt;/font&gt;&lt;font color="#0000ff" size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color="#0000ff" size=2&gt;string&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font size=2&gt; Name;&lt;br&gt;    &lt;/font&gt;&lt;font color="#0000ff" size=2&gt;public&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color="#2b91af" size=2&gt;ArrayList&lt;/font&gt;&lt;font size=2&gt; Members = &lt;/font&gt;&lt;font color="#0000ff" size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color="#2b91af" size=2&gt;ArrayList&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace" size=2&gt;();&lt;br&gt;}&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color="#2b91af" size=2&gt;&lt;br&gt;&lt;font face="Courier New, Courier, Monospace"&gt;Group&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font size=2&gt; g = &lt;/font&gt;&lt;font color="#0000ff" size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color="#2b91af" size=2&gt;Group&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font size=2&gt;();&lt;br&gt;g.Name = &lt;/font&gt;&lt;font color="#a31515" size=2&gt;&amp;quot;Administrators&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font size=2&gt;;&lt;br&gt;g.Members.Add(&lt;/font&gt;&lt;font color="#a31515" size=2&gt;&amp;quot;User1&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font size=2&gt;);&lt;br&gt;g.Members.Add(&lt;/font&gt;&lt;font color="#a31515" size=2&gt;&amp;quot;User2&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font size=2&gt;);&lt;br&gt;g.Members.Add(&lt;/font&gt;&lt;font color="#a31515" size=2&gt;&amp;quot;User3&amp;quot;&lt;/font&gt;&lt;font size=2&gt;);&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size=2&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Geneva, Arial, Sans-serif" size=2&gt;If you run your application, and have an instance of a Group, here's how it will look like when you'll place the mouse ove the instance:&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Geneva, Arial, Sans-serif" size=2&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Verdana, Geneva, Arial, Sans-serif" size=2&gt;Name=&amp;quot;Aministrator&amp;quot; (3 members);&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size=2&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Geneva, Arial, Sans-serif" size=2&gt;This is very usefull if you have instances of complex objects, and you'd like to shorten the time you spend understanding that's the data that you are currently debugging.&lt;/font&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+DebbugerDisplayAttribute&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>General .Net</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!707.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!707.entry</guid><pubDate>Thu, 21 Dec 2006 09:06:28 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!707/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!707.entry#comment</wfw:comment><dcterms:modified>2006-12-21T10:57:29Z</dcterms:modified></item><item><title>Tzunami at SharePoint Connections</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!682.entry</link><description>&lt;div&gt;The company that I work for, &lt;a href="http://www.tzunami.net/"&gt;Tzunami Inc.&lt;/a&gt;, which specialize in &lt;a href="http://www.tzunami.net/"&gt;SharePoint migration&lt;/a&gt;, will exhibit in the &lt;a href="http://www.devconnections.com/shows/SPfall2006/default.asp?s=83" rel=nofollow&gt;SharePoint Connections &lt;/a&gt;conference at Las Vegas, on November 6-9 2006.&lt;/div&gt;
&lt;div&gt;Be sure to visit us at booth #716 to see a live demonstration of our tool, the Tzunami Deployer.&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+Tzunami+at+SharePoint+Connections&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!682.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!682.entry</guid><pubDate>Wed, 04 Oct 2006 14:12:49 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!682/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!682.entry#comment</wfw:comment><dcterms:modified>2006-10-24T09:28:59Z</dcterms:modified></item><item><title>Isolated storage</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!681.entry</link><description>&lt;div&gt;Although not a very technical, you should read the following article by Peter Aitken: &lt;a href="http://www.devsource.com/article2/0,1895,2002924,00.asp"&gt;Exploring .Net's Isolated Storage&lt;/a&gt;. The article doesn't go very deep, isn't very technical, and to tell the truth, I didn't find it a good read. However, it does provide a basic introduction to the very important subject of Isolated Storage.&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+Isolated+storage&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>General .Net</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!681.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!681.entry</guid><pubDate>Fri, 15 Sep 2006 23:13:51 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!681/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!681.entry#comment</wfw:comment><dcterms:modified>2006-09-15T23:13:51Z</dcterms:modified></item><item><title>Connecting to Documentum using .Net</title><link>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!679.entry</link><description>&lt;div&gt;I've spoke in an earlier post about working with Documentum in .Net. In this post, I'll show you how to connect to a DocBase, and get the list of cabinets.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;The following code will connect to a DocBase. It assumes that you have a &lt;font face="Courier New, Courier, Monospace"&gt;Username&lt;/font&gt;, &lt;font face="Courier New, Courier, Monospace"&gt;Password&lt;/font&gt; and &lt;font face="Courier New, Courier, Monospace"&gt;DocBase&lt;/font&gt; variables declared that contain valid information:&lt;/div&gt;
&lt;div&gt;&lt;font size=2&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;/font&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New" color="#008000" size=2&gt;// Get a client object&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font size=2&gt;&lt;font face="Courier New, Courier, Monospace"&gt;DfClientX _clientx = &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace" color="#0000ff" size=2&gt;new&lt;/font&gt;&lt;font size=2&gt;&lt;font face="Courier New, Courier, Monospace"&gt; DfClientX();&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;IDfClient _client = _clientx.getLocalClient();&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font color="#0000ff" size=2&gt;&lt;br&gt;if&lt;/font&gt;&lt;font size=2&gt; (_client == &lt;/font&gt;&lt;font color="#0000ff" size=2&gt;null&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;font face="Courier New, Courier, Monospace"&gt;)&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font color="#0000ff" size=2&gt;    throw&lt;/font&gt;&lt;font size=2&gt; &lt;/font&gt;&lt;font color="#0000ff" size=2&gt;new&lt;/font&gt;&lt;font size=2&gt; Exception(&lt;/font&gt;&lt;font color="#800080" size=2&gt;&amp;quot;Failed creating Documentum client&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;font face="Courier New, Courier, Monospace"&gt;);&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;br&gt;&lt;font color="#008000"&gt;// Retrieve the client's version&lt;/font&gt;&lt;br&gt;Console.WriteLine(&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace" color="#800080" size=2&gt;&amp;quot;Using DFC version '{0}'&amp;quot;&lt;/font&gt;&lt;font size=2&gt;&lt;font face="Courier New, Courier, Monospace"&gt;, _clientx.getDFCVersion());&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;br&gt;&lt;font color="#008000"&gt;// Create an object with the credentials of the user&lt;/font&gt;&lt;br&gt;IDfLoginInfo _loginInfoObj = _clientx.getLoginInfo();&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;_loginInfoObj.setUser(Username);&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;_loginInfoObj.setPassword(Password);&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;br&gt;&lt;font color="#008000"&gt;// Create a new session to the requested DocBase&lt;/font&gt;&lt;br&gt;IDfSession _session = _client.newSession(DocBase, _loginInfoObj);&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font color="#0000ff" size=2&gt;&lt;br&gt;if&lt;/font&gt;&lt;font size=2&gt; (_session == &lt;/font&gt;&lt;font color="#0000ff" size=2&gt;null&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;font face="Courier New, Courier, Monospace"&gt; || !_session.isConnected())&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;{&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font color="#0000ff"&gt;    &lt;/font&gt;Console.WriteLine(&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace" color="#800080" size=2&gt;&amp;quot;Failed conecting to Documentum&amp;quot;&lt;/font&gt;&lt;font size=2&gt;&lt;font face="Courier New, Courier, Monospace"&gt;);&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font color="#0000ff" size=2&gt;    if&lt;/font&gt;&lt;font size=2&gt; (_session != &lt;/font&gt;&lt;font color="#0000ff" size=2&gt;null&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;font face="Courier New, Courier, Monospace"&gt;)&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font color="#0000ff"&gt;    &lt;/font&gt;{&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font color="#0000ff"&gt;        &lt;/font&gt;Console.WriteLine(&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace" color="#800080" size=2&gt;&amp;quot;DFC Messages:\r\n{0}&amp;quot;&lt;/font&gt;&lt;font size=2&gt;&lt;font face="Courier New, Courier, Monospace"&gt;, _session.getMessage(1));&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font color="#0000ff"&gt;    &lt;/font&gt;}&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace" color="#0000ff" size=2&gt;    return&lt;/font&gt;&lt;font size=2&gt;&lt;font face="Courier New, Courier, Monospace"&gt;;&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;}&lt;br&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;br&gt;Console.WriteLine(&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font color="#800080" size=2&gt;&amp;quot;Using server version '{0}'&amp;quot;&lt;/font&gt;&lt;font size=2&gt;, _session.getServerVersion());&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Geneva, Arial, Sans-serif" size=2&gt;Now, once we're connected to the Documentum DocBase, we'll list all the cabinets:&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font size=2&gt;&lt;/font&gt;&lt;/font&gt; &lt;/div&gt;
&lt;div&gt;&lt;font face="Courier New, Courier, Monospace"&gt;&lt;font size=2&gt;&lt;font size=2&gt;
&lt;p&gt;IDfQuery query = _clientx.getQuery();&lt;br&gt;&lt;font color="#008000"&gt;// Quering the &amp;quot;dm_cabinet&amp;quot; table returns only items of dm_cabinet type&lt;/font&gt;&lt;br&gt;query.setDQL(&lt;/font&gt;&lt;font color="#800080" size=2&gt;&amp;quot;SELECT r_object_id, object_name, title FROM dm_cabinet&amp;quot;&lt;/font&gt;&lt;font size=2&gt;);&lt;br&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;br&gt;&lt;font color="#008000"&gt;// Query the session for the cabinets&lt;br&gt;&lt;/font&gt;IDfCollection col = query.execute(_session, (&lt;/font&gt;&lt;font color="#0000ff" size=2&gt;int&lt;/font&gt;&lt;font size=2&gt;)DFCLib.tagDfQueryTypes.IDfQuery_DF_READ_QUERY);&lt;br&gt;&lt;br&gt;&lt;font color="#008000"&gt;// Loop through all the items in the collection&lt;/font&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff" size=2&gt;while&lt;/font&gt;&lt;font size=2&gt; (col.next())&lt;br&gt;{&lt;br&gt;    &lt;font color="#008000"&gt;// Get the current item from the collection&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;br&gt;    IDfTypedObject typedObj = col.getTypedObject();&lt;br&gt;    &lt;font color="#008000"&gt;// Print the item's name&lt;/font&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;br&gt;    Console.WriteLine(&lt;/font&gt;&lt;font color="#800080" size=2&gt;&amp;quot;Cabinet name: {0}&amp;quot;&lt;/font&gt;&lt;font size=2&gt;, typedObj.getString(&lt;/font&gt;&lt;font color="#800080" size=2&gt;&amp;quot;object_name&amp;quot;&lt;/font&gt;&lt;font size=2&gt;))&lt;br&gt;}&lt;br&gt;col.Close();&lt;/font&gt;
&lt;p&gt;&lt;font size=2&gt;&lt;font face="Geneva, Arial, Sans-serif"&gt;One of the most important thing to remember, is that you have to close the IDfCollection. Each session has a very limited number of collections it can have open at the same time. If you need more collections, I would suggest just caching the items inside a .Net collection for later use.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+Connecting+to+Documentum+using+.Net&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><category>Documentum</category><comments>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!679.entry#comment</comments><guid isPermaLink="true">http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!679.entry</guid><pubDate>Thu, 14 Sep 2006 16:18:27 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://saguiitay.spaces.live.com/blog/cns!3B7FD118142669E2!679/comments/feed.rss</wfw:commentRss><wfw:comment>http://saguiitay.spaces.live.com/Blog/cns!3B7FD118142669E2!679.entry#comment</wfw:comment><dcterms:modified>2006-09-14T16:18:27Z</dcterms:modified></item><item><title>Custom List: Links</title><link>http://saguiitay.spaces.live.com/Lists/cns!3B7FD118142669E2!661</link><description>&lt;p&gt;Links&lt;/p&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://ablog.apress.com&amp;#47;&amp;#63;author&amp;#61;187"&gt;Scot Hillier&amp;#39;s Blog&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Scot Hillier is an independent consultant and Microsoft Most Valuable Professional focused on creating solutions for Information Workers with SharePoint, Office, and related .NET technologies.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://aviv.raffon.net&amp;#47;"&gt;Aviv Raff On .NET&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If at first you don&amp;#39;t succeed&amp;#59; call it version 1.0&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.codeproject.com"&gt;Code Project&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The Code Project is a free site containing hundreds of free source code samples and tutorials. Check it out&amp;#33;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.joelonsoftware.com&amp;#47;"&gt;Joel on Software&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A weblog by Joel Spolsky, a programmer working in New York City, about software and software companies.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.tzunami.com&amp;#47;"&gt;Tzunami Inc.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Tzunami offers products and solutions that transform the risky and costly clerical task of content migration into a fast and efficient Enterprise Content Management process.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+Custom+List%3a+Links&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><guid isPermaLink="false">cns!3B7FD118142669E2!661</guid><pubDate>Wed, 08 Aug 2007 20:24:36 GMT</pubDate><msn:type>list</msn:type><live:type>list</live:type><live:typelabel>List</live:typelabel><cf:itemRSS>http://saguiitay.spaces.live.com/Lists/cns!3B7FD118142669E2!661/feed.rss</cf:itemRSS><dcterms:modified>2007-08-08T20:24:36Z</dcterms:modified></item><item><title>Book List: Book List</title><link>http://saguiitay.spaces.live.com/Lists/cns!3B7FD118142669E2!642</link><description>&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3Fie&amp;#61;UTF8&amp;#38;location&amp;#61;http&amp;#58;&amp;#47;&amp;#47;www.amazon.com&amp;#47;Advanced-SharePoint-Services-Solutions-Professionals&amp;#47;dp&amp;#47;1590594568&amp;#38;tag&amp;#61;biustudiesmat-20&amp;#38;linkCode&amp;#61;ur2&amp;#38;camp&amp;#61;1789&amp;#38;creative&amp;#61;9325"&gt;Scot P. Hillier: Microsoft SharePoint&amp;#58; Advanced SharePoint Services Solutions&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3Flink_code&amp;#61;ur2&amp;#38;tag&amp;#61;biustudiesmat-20&amp;#38;camp&amp;#61;1789&amp;#38;creative&amp;#61;9325&amp;#38;location&amp;#61;&amp;#47;exec&amp;#47;obidos&amp;#47;tg&amp;#47;detail&amp;#47;-&amp;#47;1590593383&amp;#63;v&amp;#37;3Dglance"&gt;Scot P. Hillier: Microsoft SharePoint&amp;#58; Building Office 2003 Solutions&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.amazon.com&amp;#47;gp&amp;#47;redirect.html&amp;#37;3Fie&amp;#61;UTF8&amp;#38;location&amp;#61;http&amp;#58;&amp;#47;&amp;#47;www.amazon.com&amp;#47;Microsoft-SharePoint-Building-Office-Solutions&amp;#47;dp&amp;#47;1590598091&amp;#47;sr&amp;#37;3D8-1&amp;#47;qid&amp;#37;3D1162944826&amp;#37;3Fie&amp;#37;3DUTF8&amp;#37;26s&amp;#37;3Dbooks&amp;#38;tag&amp;#61;biustudiesmat-20&amp;#38;linkCode&amp;#61;ur2&amp;#38;camp&amp;#61;1789&amp;#38;creative&amp;#61;9325"&gt;Scot Hillier: Microsoft SharePoint&amp;#58; Building Office 2007 Solutions in C&amp;#35; 2005&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=4287375271627483618&amp;page=RSS%3a+Book+List%3a+Book+List&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=saguiitay.spaces.live.com&amp;amp;GT1=saguiitay"&gt;</description><guid isPermaLink="false">cns!3B7FD118142669E2!642</guid><pubDate>Thu, 15 Feb 2007 21:33:04 GMT</pubDate><msn:type>booklist</msn:type><live:type>booklist</live:type><live:typelabel>Book list</live:typelabel><cf:itemRSS>http://saguiitay.spaces.live.com/Lists/cns!3B7FD118142669E2!642/feed.rss</cf:itemRSS><dcterms:modified>2007-02-15T21:33:04Z</dcterms:modified></item></channel></rss>