<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ThumNet</title>
	<atom:link href="http://blog.thumnet.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.thumnet.com</link>
	<description>Just a ThumNet blog</description>
	<lastBuildDate>Fri, 06 Aug 2010 09:34:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Automatically connect WebParts on a SharePoint page</title>
		<link>http://blog.thumnet.com/automatically-connect-webparts-on-sharepoint-page/201/</link>
		<comments>http://blog.thumnet.com/automatically-connect-webparts-on-sharepoint-page/201/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 09:34:55 +0000</pubDate>
		<dc:creator>Jeffrey Tummers</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[sharepoint2007]]></category>
		<category><![CDATA[sharepoint2010]]></category>
		<category><![CDATA[webpart]]></category>

		<guid isPermaLink="false">http://blog.thumnet.com/?p=201</guid>
		<description><![CDATA[For a recent project we had several WebParts (Provider and Consumer webparts) on a page which had to be connected to each other when the page was provisioned by our solution. Unfortunately this cannot be done within the Module.xml So I created a method which automatically connects the consumer WebParts to their correct provider WebParts. [...]]]></description>
			<content:encoded><![CDATA[<p>For a recent project we had several WebParts (Provider and Consumer webparts) on a page which had to be connected to each other when the page was provisioned by our solution.</p>
<p>Unfortunately this cannot be done within the Module.xml <img src='http://blog.thumnet.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>So I created a method which automatically connects the consumer WebParts to their correct provider WebParts.</p>
<p>To do this I basically used the <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webpartpages.splimitedwebpartmanager.aspx">SPLimitedWebPartManager</a>, <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.providerconnectionpoint.aspx">ProviderConnectionPoint</a>, <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.webparts.consumerconnectionpoint.aspx">ConsumerConnectionPoint </a>and some other nice classes.</p>
<p><strong>The method (warning long block of code)</strong></p>
<pre class="brush: csharp;">
/// &lt;summary&gt;
/// Connects the web parts on page.
/// &lt;/summary&gt;
/// &lt;param name=&quot;web&quot;&gt;The web.&lt;/param&gt;
/// &lt;param name=&quot;pageUrl&quot;&gt;The page URL.&lt;/param&gt;
/// &lt;param name=&quot;publish&quot;&gt;if set to &lt;c&gt;true&lt;/c&gt; [publish].&lt;/param&gt;
public static void ConnectWebPartsOnPage(SPWeb web, string pageUrl, bool publish)
{
	// get the page from the url
	SPFile page = web.GetFile(pageUrl);

	// make sure the page exists
	if (page.Exists)
	{
		// if the page is checked out, check it in because then the user can do an rollback
		if (page.Level == SPFileLevel.Checkout)
		{
			page.CheckIn(&quot;Page was checked out, needs to be checked in before connecting webparts&quot;, SPCheckinType.MinorCheckIn);
		}

		// check out the page because we are going to do changes on it
		page.CheckOut();

		// get the webpartmanager for the page
		using (Microsoft.SharePoint.WebPartPages.SPLimitedWebPartManager mgr = page.GetLimitedWebPartManager(PersonalizationScope.Shared))
		{
			try
			{
				// try to connect the webparts on the page
				if (ConnectWebParts(mgr))
				{
					string checkinComment = &quot;Auto connected WebParts on page&quot;;

					// webparts are connected so update the page and check it in
					page.Update();
					page.CheckIn(checkinComment);

					if (publish)
					{
						page.Publish(checkinComment);
						page.Approve(checkinComment);
					}
				}
			}
			catch (Exception ex)
			{
				page.UndoCheckOut();
				throw ex;
			}
		}
	}
}

/// &lt;summary&gt;
/// Checks if a WebPart connection exists.
/// &lt;/summary&gt;
/// &lt;param name=&quot;connections&quot;&gt;The connections.&lt;/param&gt;
/// &lt;param name=&quot;provider&quot;&gt;The provider.&lt;/param&gt;
/// &lt;param name=&quot;consumer&quot;&gt;The consumer.&lt;/param&gt;
/// &lt;returns&gt;&lt;/returns&gt;
private static bool WebPartConnectionExist(Microsoft.SharePoint.WebPartPages.SPWebPartConnectionCollection connections,
	System.Web.UI.WebControls.WebParts.WebPart provider, System.Web.UI.WebControls.WebParts.WebPart consumer)
{
	foreach (Microsoft.SharePoint.WebPartPages.SPWebPartConnection conn in connections)
	{
		if (conn.Provider == provider &amp;&amp; conn.Consumer == consumer)
		{
			return true;
		}
	}

	return false;
}

/// &lt;summary&gt;
/// Connects the web parts.
/// &lt;/summary&gt;
/// &lt;param name=&quot;manager&quot;&gt;The manager.&lt;/param&gt;
/// &lt;returns&gt;&lt;/returns&gt;
private static bool ConnectWebParts(Microsoft.SharePoint.WebPartPages.SPLimitedWebPartManager manager)
{
	bool connectionMade = false;

	// get the webparts on the page
	Microsoft.SharePoint.WebPartPages.SPLimitedWebPartCollection webparts = manager.WebParts;

	// only continu if there are any webparts
	if (webparts.Count &gt; 0)
	{
		ProviderConnectionPointCollection provColl;
		ConsumerConnectionPointCollection consColl;
		// walk through all the webparts on the page to find provider webparts
		foreach (System.Web.UI.WebControls.WebParts.WebPart providerPart in webparts)
		{

			// check if the webpart is a Provider webpart
			provColl = manager.GetProviderConnectionPoints(providerPart);
			if (provColl != null &amp;&amp; provColl.Default != null)
			{

				// walk through all the webparts on the page again now to find the consumer webparts
				foreach (System.Web.UI.WebControls.WebParts.WebPart consumerPart in webparts)
				{

					// first make sure the webpart isn't the provider webpart
					if (consumerPart != providerPart)
					{
						// check if the webpart is a Consumer webpart,
						// then make sure the consumer webpart isn't already connected to the provider webpart
						// then check if the interface of the consumer webpart is assignable from the interface of the provider webpart
						consColl = manager.GetConsumerConnectionPoints(consumerPart);
						if (consColl != null &amp;&amp; consColl.Default != null
							&amp;&amp; !WebPartConnectionExist(manager.SPWebPartConnections, providerPart, consumerPart)
							&amp;&amp; consColl.Default.InterfaceType.IsAssignableFrom(provColl.Default.InterfaceType))
						{
							// connect the webparts
							manager.SPConnectWebParts(providerPart, provColl.Default, consumerPart, consColl.Default);
							connectionMade = true;
						}
					}
				}
			}
		}
	}
	return connectionMade;
}
</pre>
<p><strong>Sample usage (console application)</strong></p>
<pre class="brush: csharp;">
try
{
	using (SPSite site = new SPSite(&quot;http://localhost&quot;))
	using (SPWeb web = site.OpenWeb())
	{
		ConnectWebPartsOnPage(web, &quot;pages/default.aspx&quot;, false);
	}
}
catch (Exception ex)
{
	Console.WriteLine();
	Console.WriteLine(&quot;Message:\n{0}\n\nStack:\n{1}\n\n&quot;, ex.Message, ex.StackTrace);
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.thumnet.com/automatically-connect-webparts-on-sharepoint-page/201/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>First NEN 2082 certified project with SharePoint 2010</title>
		<link>http://blog.thumnet.com/first-nen2082-certified-project-sharepoint-2010/180/</link>
		<comments>http://blog.thumnet.com/first-nen2082-certified-project-sharepoint-2010/180/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 15:01:39 +0000</pubDate>
		<dc:creator>Jeffrey Tummers</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[nen2082]]></category>
		<category><![CDATA[qnh]]></category>
		<category><![CDATA[sharepoint2010]]></category>

		<guid isPermaLink="false">http://blog.thumnet.com/?p=180</guid>
		<description><![CDATA[Together with 3 colleagues from QNH Business Integration I am currently finishing implementing a already NEN 2082 certified project based on SharePoint 2010. When SharePoint 2010 hits RTM there will be another audit for this version of SharePoint, because currently the pre release version has been certified. NEN 2082 is a Dutch standard which is [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="QNH" src="http://www.qnh.eu/images/stories/logos/qnhLogo.png" alt="" width="190" height="65" /><br />
Together with 3 colleagues from QNH Business Integration I am currently finishing implementing a already NEN 2082 certified project based on SharePoint 2010.<br />
When SharePoint 2010 hits RTM there will be another audit for this version of SharePoint, because currently the pre release version has been certified.</p>
<p>NEN 2082 is a Dutch standard which is similar the DoD5015 and MoReq standards. </p>
<p>This project was done for the Gemeente Nieuwegein, which is a Dutch local Government.</p>
<div id="attachment_181" class="wp-caption aligncenter" style="width: 130px"><a href="http://blog.thumnet.com/wp-content/uploads/2010/03/NieuwegeinLogo.png" rel="lightbox[180]"><img class="size-full wp-image-181" title="Nieuwegein Logo" src="http://blog.thumnet.com/wp-content/uploads/2010/03/NieuwegeinLogo.png" alt="" width="120" height="120" /></a><p class="wp-caption-text">Gemeente Nieuwegein</p></div>
<p>For this project we have also been nominated for the &#8220;Innovation of the year&#8221; award:</p>
<div id="attachment_182" class="wp-caption aligncenter" style="width: 235px"><a href="http://blog.thumnet.com/wp-content/uploads/2010/03/lrg-partner-award-2010.jpg" rel="lightbox[180]"><img class="size-medium wp-image-182" title="LRG Innovator Nomination 2010" src="http://blog.thumnet.com/wp-content/uploads/2010/03/lrg-partner-award-2010-225x300.jpg" alt="" width="225" height="300" /></a><p class="wp-caption-text">LRG Innovator Nomination 2010</p></div>
<p><a href="http://www.qnh.eu/actueel/210-qnh-implementeert-als-eerste-dmsrma-met-sharepoint-2010-conform-nen2082">More information</a> (Dutch)</p>
<p>My colleagues at QNH:</p>
<ul>
<li>Jeroer Derde &#8211; <a href="http://derde.net/blog">http://derde.net/blog</a></li>
<li>Alexander Ketelaar &#8211; <a href="http://sharepoint2010.nl">http://sharepoint2010.nl</a></li>
<li>Robert Sep</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.thumnet.com/first-nen2082-certified-project-sharepoint-2010/180/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Problem with VS2010 beta 2 Site Definition</title>
		<link>http://blog.thumnet.com/problem-vs2010-beta2-sitedefinition/159/</link>
		<comments>http://blog.thumnet.com/problem-vs2010-beta2-sitedefinition/159/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 10:40:23 +0000</pubDate>
		<dc:creator>Jeffrey Tummers</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[qnh]]></category>
		<category><![CDATA[sharepoint2010]]></category>
		<category><![CDATA[site-definition]]></category>
		<category><![CDATA[visualstudio2010]]></category>

		<guid isPermaLink="false">http://blog.thumnet.com/?p=159</guid>
		<description><![CDATA[I encountered the following problem while creating a new custom Site Definition in Visual Studio 2010 beta 2. The problem occurs when trying to create a new Document Library in the site based on the custom Site Definition. Error message: Error An error occurred while getting items from the &#34;&#34; provider: Cannot complete this action. Please try [...]]]></description>
			<content:encoded><![CDATA[<p>I encountered the following problem while creating a new custom Site Definition in Visual Studio 2010 beta 2.</p>
<p>The problem occurs when trying to create a new Document Library in the site based on the custom Site Definition.</p>
<div id="attachment_164" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.thumnet.com/wp-content/uploads/2009/12/00-error-while-creating-document-library.png" rel="lightbox[159]"><img class="size-medium wp-image-164" title="00-error-while-creating-document-library" src="http://blog.thumnet.com/wp-content/uploads/2009/12/00-error-while-creating-document-library-300x188.png" alt="Error while trying to add a new Document Library" width="300" height="188" /></a><p class="wp-caption-text">Error while trying to add a new Document Library</p></div>
<p><strong>Error message:</strong></p>
<pre class="brush: plain;">
Error

An error occurred while getting items from the &quot;&quot; provider:
Cannot complete this action.

Please try again.
</pre>
<p><em>Read on to see the solution for this error.</em></p>
<p>Visual Studio 2010 now has native integration of SharePoint 2010 projects.</p>
<div id="attachment_160" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.thumnet.com/wp-content/uploads/2009/12/01-new-site-definition-in-vs2010.png" rel="lightbox[159]"><img class="size-medium wp-image-160" title="01-new-site-definition-in-vs2010" src="http://blog.thumnet.com/wp-content/uploads/2009/12/01-new-site-definition-in-vs2010-300x168.png" alt="New Site Definition in Visual Studio 2010" width="300" height="168" /></a><p class="wp-caption-text">New Site Definition in Visual Studio 2010</p></div>
<p>After creating the new Site Definition Project in the <strong>onet.xml</strong> file<strong> </strong>contains the following:</p>
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;Project Title=&quot;SampleSiteDefinition&quot; Revision=&quot;2&quot; ListDir=&quot;&quot; xmlns:ows=&quot;Microsoft SharePoint&quot; xmlns=&quot;http://schemas.microsoft.com/sharepoint/&quot;&gt;
  &lt;NavBars&gt;
  &lt;/NavBars&gt;
  &lt;Configurations&gt;
    &lt;Configuration ID=&quot;0&quot; Name=&quot;SampleSiteDefinition&quot;&gt;
      &lt;Lists/&gt;
      &lt;SiteFeatures&gt;
      &lt;/SiteFeatures&gt;
      &lt;WebFeatures&gt;
      &lt;/WebFeatures&gt;
      &lt;Modules&gt;
        &lt;Module Name=&quot;DefaultBlank&quot; /&gt;
      &lt;/Modules&gt;
    &lt;/Configuration&gt;
  &lt;/Configurations&gt;
  &lt;Modules&gt;
    &lt;Module Name=&quot;DefaultBlank&quot; Url=&quot;&quot; Path=&quot;&quot;&gt;
      &lt;File Url=&quot;default.aspx&quot;&gt;
      &lt;/File&gt;
    &lt;/Module&gt;
  &lt;/Modules&gt;
&lt;/Project&gt;
</pre>
<p><em>Now you can modify to the onet.xml and default.aspx as you like. </em></p>
<p>When deploying the new Site Definition, creating a site, and then trying to create a new Document Library you get the error above.  The solution for the error turned out to be the <strong>missing </strong>declaration of the <strong>&lt;DocumentTemplates&gt;</strong> XML node.</p>
<p>Correct default <strong>onet.xml</strong> should be:</p>
<pre class="brush: xml; highlight: [5,6];">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;Project Title=&quot;SampleSiteDefinition&quot; Revision=&quot;2&quot; ListDir=&quot;&quot; xmlns:ows=&quot;Microsoft SharePoint&quot; xmlns=&quot;http://schemas.microsoft.com/sharepoint/&quot;&gt;
  &lt;NavBars&gt;
  &lt;/NavBars&gt;
  &lt;DocumentTemplates&gt;
  &lt;/DocumentTemplates&gt;
  &lt;Configurations&gt;
      &lt;Lists/&gt;
      &lt;SiteFeatures&gt;
      &lt;/SiteFeatures&gt;
      &lt;WebFeatures&gt;
      &lt;/WebFeatures&gt;
      &lt;Modules&gt;
        &lt;Module Name=&quot;DefaultBlank&quot; /&gt;
      &lt;/Modules&gt;
    &lt;/Configuration&gt;
  &lt;/Configurations&gt;
  &lt;Modules&gt;
    &lt;Module Name=&quot;DefaultBlank&quot; Url=&quot;&quot; Path=&quot;&quot;&gt;
      &lt;File Url=&quot;default.aspx&quot;&gt;
      &lt;/File&gt;
    &lt;/Module&gt;
  &lt;/Modules&gt;
&lt;/Project&gt;
</pre>
<p>After re-deploying the Site Definition and creating a new Site, you are able to create a Document Library.</p>
<div id="attachment_170" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.thumnet.com/wp-content/uploads/2009/12/02-correctly-working-new-doclib-screen.png" rel="lightbox[159]"><img class="size-medium wp-image-170" title="02-correctly-working-new-doclib-screen" src="http://blog.thumnet.com/wp-content/uploads/2009/12/02-correctly-working-new-doclib-screen-300x188.png" alt="Working new Document Library" width="300" height="188" /></a><p class="wp-caption-text">Working new Document Library</p></div>
<h5>Reference:</h5>
<p><a href="http://msdn.microsoft.com/en-us/library/ms474369(office.14).aspx">Microsoft&#8217;s Reference for SharePoint 2010 onet.xml</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thumnet.com/problem-vs2010-beta2-sitedefinition/159/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Looking for SharePoint 2010 Feature (GU)IDs</title>
		<link>http://blog.thumnet.com/looking-for-sharepoint-2010-feature-guid/142/</link>
		<comments>http://blog.thumnet.com/looking-for-sharepoint-2010-feature-guid/142/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 17:23:29 +0000</pubDate>
		<dc:creator>Jeffrey Tummers</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[feature-guid]]></category>
		<category><![CDATA[qnh]]></category>
		<category><![CDATA[sharepoint2010]]></category>
		<category><![CDATA[site-definition]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://blog.thumnet.com/?p=142</guid>
		<description><![CDATA[Have you ever been looking for a feature (GU)ID in SharePoint? Well here is an easy way to find them. I needed default SharePoint feature guids for the development of a custom Site Definition. Using a custom Site Definition you can automatically activate SharePoint features within the onet.xml file. Here we go: Open the SharePoint [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever been looking for a feature (GU)ID in SharePoint? Well here is an easy way to find them.</p>
<p>I needed default SharePoint feature guids for the development of a custom Site Definition. Using a custom Site Definition you can automatically activate SharePoint features within the onet.xml file.</p>
<p>Here we go:</p>
<ol>
<li>Open the SharePoint site in IE8 (or IE7).</li>
<li style="text-align: left;">Go to the Site Settings page.<br />
<img class="size-full wp-image-143" title="site-settings-menu" src="http://blog.thumnet.com/wp-content/uploads/2009/12/site-settings-menu.jpg" alt="site-settings-menu" width="259" height="587" /></li>
<li>Click on the Manage Site features (or Site Collection features)<br />
<img class="alignnone size-full wp-image-144" title="site-features" src="http://blog.thumnet.com/wp-content/uploads/2009/12/site-features.jpg" alt="site-features" width="287" height="131" /></li>
<li>Use the Developer Tools (shortcut F12)</li>
<li>Click in the toolbar on Find &#8211;&gt; Select Element by Click (shortcut CTRL+B, but this opens bookmarks manager on my machine)<br />
<img class="alignnone size-full wp-image-145" title="developertools-select" src="http://blog.thumnet.com/wp-content/uploads/2009/12/developertools-select.jpg" alt="developertools-select" width="393" height="168" /></li>
<li>Select the Activate (or Deactivate) button next to the feature you need the GUID from.<br />
<img class="alignnone size-full wp-image-147" title="select-feature-activate-button" src="http://blog.thumnet.com/wp-content/uploads/2009/12/select-feature-activate-button.jpg" alt="select-feature-activate-button" width="748" height="84" /></li>
<li>Developer Tools scrolls down to the HTML source for the specific button, the button tag is contained within a Div tag. This Div tag contains an ID attribute and thats the GUID for the feature!<br />
<img class="alignnone size-full wp-image-148" title="selected-feature-html" src="http://blog.thumnet.com/wp-content/uploads/2009/12/selected-feature-html.jpg" alt="selected-feature-html" width="502" height="213" /></li>
<li>In this case the GUID is: <strong>9c03e124-eef7-4dc6-b5eb-86ccd207cb87</strong><br />
<img class="alignnone size-full wp-image-149" title="selected-feature-guid" src="http://blog.thumnet.com/wp-content/uploads/2009/12/selected-feature-guid.jpg" alt="selected-feature-guid" width="492" height="145" /></li>
</ol>
<p>This trick also works for SharePoint 2007!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thumnet.com/looking-for-sharepoint-2010-feature-guid/142/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>IMDB REST Webservice update</title>
		<link>http://blog.thumnet.com/imdb-rest-webservice-update/129/</link>
		<comments>http://blog.thumnet.com/imdb-rest-webservice-update/129/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 20:45:15 +0000</pubDate>
		<dc:creator>ThumNet</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[imdb]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[webservice]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://blog.thumnet.com/?p=129</guid>
		<description><![CDATA[Update 2009-12-16 Looking for help in hosting If you have a server that hosts PHP and you want to support the Scraper service please contact me (info at thumnet dot com). Update 2009-12-12 Service currently down, due to too many request to IMDb, working on a fix! Update 2009-12-09 Added Picture in imdb-name request Added result [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff0000;"><strong>Update 2009-12-16</strong></span></p>
<h5>Looking for help in hosting</h5>
<p>If you have a server that hosts PHP and you want to support the Scraper service please contact me (info at thumnet dot com).</p>
<hr/>
<span style="color: #ff0000;"><strong>Update 2009-12-12</strong></span></p>
<h5>Service currently down, due to too many request to IMDb, working on a fix!</h5>
<hr />
<span style="color: #ff0000;"><strong>Update 2009-12-09</strong></span></p>
<ul>
<li>Added Picture in <em>imdb-name</em> request</li>
<li>Added result count limitation param (see the <a title="ThumNet.com Scraper" href="http://scraper.thumnet.com">guide</a>)</li>
<li>Some small bugfixes:
<ul>
<li>missing tt and nm prefix in ImdbID property in <em>imdb-name-search</em> request,</li>
<li>missing ImdbID for Writers and Directors in <em>imdb-title</em> request,</li>
<li>changed Season and Episode in <em>imdb-episode</em> request to SeasonNR and EpisodeNR</li>
<li>added result type to the summary element, to identify the result data</li>
</ul>
</li>
</ul>
<p><em><em><span style="color: #ff0000;"><strong>Update 2009-12-02</strong></span></em></em></p>
<p><em><em> </em></em></p>
<ul>
<li>Added Name search functionality, with <em>imdb-name-search</em> url param (imdb-search is now <em>imdb-title-search</em>)</li>
<li>Added Name details, with <em>imdb-name</em> url param</li>
</ul>
<p><em><em> </em></em></p>
<p><span style="color: #ff0000;"><strong>Update 2009-12-01</strong></span></p>
<ul>
<li>Fixed the Plot and Tagline for imdb title&#8217;s, see comments below.</li>
</ul>
<p>It&#8217;s been some time since my post about the <a title="ThumNet.com IMDB webservice" href="http://blog.thumnet.com/rest-like-webserviceapi-for-imdbcom-with-xml-or-json-output/6/">IMDB webservice</a> but I&#8217;m proud to tell you readers there is a new version available.</p>
<p>Some important changes include:</p>
<ul>
<li>Restructured output (sorry to you guys who have to update their software)</li>
<li>Output available in XML, JSON and debug (other output formats can be added on request)</li>
<li>Automatic support for gzipping the output</li>
<li>Summary information, containing:
<ul>
<li> data source</li>
<li>timestamp of the data</li>
<li>time taken in ms</li>
<li>scraper info</li>
<li>error code (0 for no error!) and error description</li>
</ul>
</li>
<li>Easily extendable scrape framework, so in the future more sites can be scraped!</li>
<li>Admin interface to review the data you guys produce</li>
</ul>
<p>Still interested or just curious?</p>
<p>Well the new url is: <a title="ThumNet.com Scraper" href="http://scraper.thumnet.com">http://scraper.thumnet.com</a></p>
<p>The old version (imdb.thumnet.com) will only be available until 1 december 2009.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thumnet.com/imdb-rest-webservice-update/129/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>airTranslate on Google code</title>
		<link>http://blog.thumnet.com/airtranslate-on-google-code/123/</link>
		<comments>http://blog.thumnet.com/airtranslate-on-google-code/123/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 16:39:14 +0000</pubDate>
		<dc:creator>ThumNet</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[translate]]></category>

		<guid isPermaLink="false">http://blog.thumnet.com/?p=123</guid>
		<description><![CDATA[Because I wanted to learn programming in Adobe Flex I build a tool called airTranslate. It uses the Google Ajax Language API to translate the users input text to the chosen output language. airTranslate features: Multi platform Auto detection of input language Drag and drop input text (with auto translation) Dock to tray icon (Windows [...]]]></description>
			<content:encoded><![CDATA[<p>Because I wanted to learn programming in<a href="http://www.adobe.com/products/flex/"> Adobe Flex </a> I build a tool called <strong>airTranslate</strong>. It uses the <a href="http://code.google.com/apis/ajaxlanguage/">Google Ajax Language API</a> to translate the users input text to the chosen output language.</p>
<p><img class="aligncenter size-full wp-image-124" title="airTranslate-screenshot" src="http://blog.thumnet.com/wp-content/uploads/2009/09/airTranslate-screenshot.png" alt="airTranslate-screenshot" width="560" height="383" /></p>
<p>airTranslate features:</p>
<ul>
<li>Multi platform</li>
<li>Auto detection of input language</li>
<li>Drag and drop input text (with auto translation)</li>
<li>Dock to tray icon (Windows only)</li>
<li>Translate from clipboard (with auto translation)</li>
<li>Auto store last chosen translation language</li>
<li>Update notification</li>
</ul>
<p><strong>airTranslate </strong>is available at Google code: <a href="http://code.google.com/p/thumnet/downloads/list">http://code.google.com/p/thumnet/downloads/list</a></p>
<p>The project is open source, and sources are available at <a href="http://code.google.com/p/thumnet/source/browse/#svn/trunk/Air">http://code.google.com/p/thumnet/source/browse/#svn/trunk/Air</a>. <span style="background-color: #ffffff;">It is possible to request new functions and report issues through the Google code website.</span></p>
<p>To run Adobe AIR programs you need to download and install the<a href="http://get.adobe.com/air/"> Adobe AIR runtime</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thumnet.com/airtranslate-on-google-code/123/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release Pixeled-Multicolor Theme for WordPress</title>
		<link>http://blog.thumnet.com/release-pixeled-multicolor-theme-for-wordpress/90/</link>
		<comments>http://blog.thumnet.com/release-pixeled-multicolor-theme-for-wordpress/90/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 17:04:51 +0000</pubDate>
		<dc:creator>ThumNet</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Theme]]></category>
		<category><![CDATA[pixeled-multicolor]]></category>

		<guid isPermaLink="false">http://blog.thumnet.com/?p=90</guid>
		<description><![CDATA[In my previous post I talked about the modifications I had made to the Pixeled WordPress theme. Well about 2 months ago I send the creator of the Pixeled theme an email requesting him to read my blogpost about the changes I had made to his theme. But since then I haven&#8217;t heard anything from [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a href="http://blog.thumnet.com/welcome-thumnet-blog/1/">previous post</a> I talked about the modifications I had made to the <a href="http://wordpress.org/extend/themes/pixeled">Pixeled</a> WordPress theme.</p>
<p>Well about 2 months ago I send the creator of the Pixeled theme an email requesting him to read my blogpost about the changes I had made to his theme.<br />
But since then I haven&#8217;t heard anything from him, so I decided to release the pixeled-multicolor theme myself.</p>
<p>Some screenshots:<br />

<a href='http://blog.thumnet.com/release-pixeled-multicolor-theme-for-wordpress/90/pixeled-red-right/' title='pixeled-red-right'><img width="150" height="150" src="http://blog.thumnet.com/wp-content/uploads/2009/07/pixeled-red-right-150x150.jpg" class="attachment-thumbnail" alt="Pixeled-Multicolor Red" title="pixeled-red-right" /></a>
<a href='http://blog.thumnet.com/release-pixeled-multicolor-theme-for-wordpress/90/pixeled-red-left/' title='pixeled-red-left'><img width="150" height="150" src="http://blog.thumnet.com/wp-content/uploads/2009/07/pixeled-red-left-150x150.jpg" class="attachment-thumbnail" alt="Pixeled-Multicolor Red (with menu on the Left)" title="pixeled-red-left" /></a>
<a href='http://blog.thumnet.com/release-pixeled-multicolor-theme-for-wordpress/90/pixeled-green/' title='pixeled-green'><img width="150" height="150" src="http://blog.thumnet.com/wp-content/uploads/2009/07/pixeled-green-150x150.jpg" class="attachment-thumbnail" alt="Pixeled-Multicolor Green" title="pixeled-green" /></a>
<a href='http://blog.thumnet.com/release-pixeled-multicolor-theme-for-wordpress/90/pixeled-blue/' title='pixeled-blue'><img width="150" height="150" src="http://blog.thumnet.com/wp-content/uploads/2009/07/pixeled-blue-150x150.jpg" class="attachment-thumbnail" alt="Pixeled-Multicolor Blue" title="pixeled-blue" /></a>
</p>
<p>Download <a href="http://blog.thumnet.com/wp-content/uploads/2009/07/pixeled-multicolor_20090701.zip">Pixeled-Multicolor</a> (release 20090701)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thumnet.com/release-pixeled-multicolor-theme-for-wordpress/90/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C# 4.0 .NET becomes dynamic</title>
		<link>http://blog.thumnet.com/csharp4-dotnet-becomes-dynamic/73/</link>
		<comments>http://blog.thumnet.com/csharp4-dotnet-becomes-dynamic/73/#comments</comments>
		<pubDate>Fri, 29 May 2009 17:09:23 +0000</pubDate>
		<dc:creator>Jeffrey Tummers</dc:creator>
				<category><![CDATA[DevDays09]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[qnh]]></category>

		<guid isPermaLink="false">http://blog.thumnet.com/?p=73</guid>
		<description><![CDATA[This post is about the session called C# 4.0 / The Future of C# given by Krishnan Subramanian. First off let me start with a quick summary of main new feauture for the different versions of the C# that are released. C# 1.0, Managed code C# 2.0, Generics C# 3.0, Language Integrated Query, short LINQ [...]]]></description>
			<content:encoded><![CDATA[<p>This post is about the session called <strong>C# 4.0 / The Future of C#</strong> given by Krishnan Subramanian.</p>
<p><img src="http://blog.thumnet.com/wp-content/uploads/2009/05/csharp41.png" alt="csharp4-dlr" width="464" height="300" /></p>
<p>First off let me start with a quick summary of main new feauture for the different versions of the C# that are released.</p>
<ul>
<li>C# 1.0, Managed code</li>
<li>C# 2.0, Generics</li>
<li>C# 3.0, Language Integrated Query, short LINQ</li>
<li>C# 4.0, Dynamic programming</li>
</ul>
<p>Some off the innovation for C# 4.0 are:</p>
<p><strong>Dynamic Language Runtime</strong><br />
The new version of C# has a new type of object declaration, called <code>dynamic</code>. This looks a bit the <code>var</code> keyword. With the var keyword the compiler replaced the var with the object type on compile time, intellisense and code completion still was available in Visual Studio. With the new dynamic keyword the compiler doesn&#8217;t replace this and even more important the compiler can&#8217;t check for syntax error on a dynamic object. Intellisense and code complition are also not available for objects defined with dynamic.</p>
<p>Dynamic objects are losely typed instead of strongly. </p>
<p>After reading this you might think whats the use of this new DLR, in the following sample I&#8217;ll try to explain this. We have a simple C# class called Calculator, and use it like below.</p>
<pre class="brush: csharp;">
Calculator calc = GetCalculator();
int sum = calc.Add(10, 20);
</pre>
<p>Now suppose the calculator class is not strongly typed, the code would like something like the following</p>
<pre class="brush: csharp;">
object calc = GetCalculator();
Type calcType = calc.GetType();
object res = calcType.InvokeMember(&quot;Add&quot;, BindingFlags.InvokeMethod, null, new object[] { 10, 20 });
int sum = Convert.ToInt32(res);
</pre>
<p>With the new dynamic keyword in C# 4.0 it would simply be</p>
<pre class="brush: csharp;">
dynamic calc = GetCalculator();
int sum = calc.Add(10, 20);
</pre>
<p><strong>Optional Named Parameters</strong><br />
To show you the what this means take a look at the examples below.</p>
<p>In previous version of C# method overloads would be used.</p>
<pre class="brush: csharp;">
public void Add(string lineOfText);
public void Add(string lineOfText, bool isError);
public void Add(string lineOfText, int repeat);
public void Add(string lineOfText, int repeat, bool isError);
</pre>
<p>With the new C# 4.0, the method declaration would like this</p>
<pre class="brush: csharp;">
public void Add(string lineOfText, int repeat = 1, bool isError = false);
</pre>
<p>As you can see in the sample above, it&#8217;s now possible to specify default values for a method parameter. Some samples of how to use the Add method are:</p>
<pre class="brush: csharp;">
Add(&quot;This is the line&quot;, repeat : 5);
Add(isError : true, lineOfText : &quot;Another line of text&quot;);
</pre>
<p>For people using JavaScript this might look very familiar.</p>
<p>Another cewl new thing I saw at the demo, was the ability to interpret and compile a string of C# code at runtime. This functionality offers some great new possibilities. Again for the Javascript people reading this it&#8217;s like the <code>eval</code> function.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thumnet.com/csharp4-dotnet-becomes-dynamic/73/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ADO.NET Dataservices</title>
		<link>http://blog.thumnet.com/adonet-dataservices/81/</link>
		<comments>http://blog.thumnet.com/adonet-dataservices/81/#comments</comments>
		<pubDate>Fri, 29 May 2009 16:30:12 +0000</pubDate>
		<dc:creator>Laurens 't Hardt</dc:creator>
				<category><![CDATA[DevDays09]]></category>
		<category><![CDATA[adonet]]></category>
		<category><![CDATA[qnh]]></category>

		<guid isPermaLink="false">http://blog.thumnet.com/?p=81</guid>
		<description><![CDATA[ADO.NET Dataservices is a new way to open your data to the web. It&#8217;s especially usefull in combination with a Rich Internet Client Application, such as a silverlight application or an AJAX application. Dataservices is an implementation of WCF but has some restrictions to it. Dataservices makes use of the ATOM or the JSON format [...]]]></description>
			<content:encoded><![CDATA[<p>ADO.NET Dataservices is a new way to open your data to the web. It&#8217;s especially usefull in combination with a Rich Internet Client Application, such as a silverlight application or an AJAX application.</p>
<p>Dataservices is an implementation of WCF but has some restrictions to it.</p>
<ul>
<li>Dataservices makes use of the ATOM or the JSON format to transport the data, no other format is supported.</li>
<li>The data is transported over the HTTP or HTTPS protocol and no other protocol is supported.</li>
<li>Agarding to authentication you can´t use of the WCF authentication model. You are restricted to the standard authentication model ASP.NET offers you, Windows Authentication and Forms authentication.</li>
<li>Dataservices has a REST based interface implementation, witch means a request to the service can only be done using REST.</li>
</ul>
<p><strong>Getting started with Dataservices.</strong></p>
<p>To get started with Dataservices you first need to define a datasource. This datasource needs to implement IQueryable&lt;T&gt; for the Dataservices to use it. Two commonly used framework that implement this interface are LINQ2SQL and the Entity Framework. For use with Dataservices it&#8217;s prefered to use the EntityFramework. The  IQueryable&lt;T&gt;makes it possible for Dataservices to query the data but to be able to update insert and delete data the datasource also has to implement the IUpdateAble&lt;T&gt; interface, wich is implemented by the Entity Framework and not by LINQ2SQL.</p>
<p>Now the datasource is created the Dataservice has to be created. There is a new template for adding the dataservice in Visual Studio 2008 SP1.</p>
<div id="attachment_83" class="wp-caption alignnone" style="width: 176px"><img class="size-full wp-image-83" src="http://blog.thumnet.com/wp-content/uploads/2009/05/adodsserviceitem.png" alt="New Ado Service" width="166" height="71" /><p class="wp-caption-text">New Ado Service</p></div>
<p>After this has been added the dataservice needs to be pointed to the datasource, below is a sample of that where a NorthwindDataService  is Created which is pointed to a NorthwindDataContext. In the example the security is also set to read for all entities in the InitializeService method. The security can be set per entity and per method.</p>
<pre class="brush: csharp;">
public class NorthwindDataService : WebDataService&lt;NorthwindDataContext&gt; {
InitializeService(IWebDataServiceConfiguration config)
{
config.SetResourceContainerAccessRule
(&quot;*&quot;, ResourceContainerRights.AllRead);
}
}
</pre>
<p>Dataservices is queried by REST, this can be tested in a browser by calling the service. In the examples below it&#8217;s shown how to query the service. For this example the url of the service is <em>&#8216;http://localhost:5555/Bookmarks.svc&#8217;.</em></p>
<p>The url below request for the model of the data.</p>
<p><em>&#8216;http://localhost:5555/Bookmarks.svc$metadata&#8217;</em></p>
<div id="attachment_85" class="wp-caption alignnone" style="width: 582px"><img class="size-full wp-image-85" src="http://blog.thumnet.com/wp-content/uploads/2009/05/dataservicesmetadata.jpg" alt="Metadata" width="572" height="416" /><p class="wp-caption-text">Metadata</p></div>
<p>To request a list of all the bookmarks put the url below in the browser. Here the <em>&#8216;/Bookmarks</em><em>&#8216; </em>refers to the entityset Bookmarks.</p>
<p><em>&#8216;http://localhost:5555/Bookmarks.svc/Bookmarks&#8217;</em></p>
<p>As is shown in the metadata the key of Bookmark is the Id property. Every entity needs a key property. To get just 1 bookmark with id 1 the following url can be used:<br />
<em>&#8216;http://localhost:5555/Bookmarks.svc/Bookmarks(1)&#8217;</em></p>
<p>It&#8217;s also possible to get a list of entities based upon a filter. For example get all bookmarks with Tags Devdays. This is done by using keywords, which always begin with a ´$´, in the querystring.</p>
<p><em>&#8216;http://localhost:5555/Bookmarks.svc/Bookmarks?$filter=Tags eq Devdays&#8217;</em></p>
<p><em><span style="font-style: normal;">For Silverlight applications it&#8217;s possible to query dataservices using LINQ2Dataservices so you don&#8217;t have to create these url&#8217;s yourself buth you can just use LINQ to create queries.</span></em></p>
<p><em><span style="font-style: normal;">Much more information about ADO.NET Dataservices can be found on <a title="MSDN" href="http://msdn.microsoft.com/en-us/data/bb931106.aspx">MSDN</a>.</span></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thumnet.com/adonet-dataservices/81/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Silverlight 3 Navigation</title>
		<link>http://blog.thumnet.com/silverlight-3-navigation/70/</link>
		<comments>http://blog.thumnet.com/silverlight-3-navigation/70/#comments</comments>
		<pubDate>Thu, 28 May 2009 21:53:30 +0000</pubDate>
		<dc:creator>Laurens 't Hardt</dc:creator>
				<category><![CDATA[DevDays09]]></category>
		<category><![CDATA[qnh]]></category>
		<category><![CDATA[silverlight3]]></category>

		<guid isPermaLink="false">http://blog.thumnet.com/?p=70</guid>
		<description><![CDATA[This post is about the session called What’s new in Silverlight 3 given by Mike Taulty. A major disadvantage of RIA, Rich Internet Application, is that the state is of an application can not be recovered after the browser has been closed. In Silverlight 3 there’s a solution for this problem. In SL3 you are [...]]]></description>
			<content:encoded><![CDATA[<p>This post is about the session called <strong>What’s new in Silverlight 3</strong> given by Mike Taulty.</p>
<p>A major disadvantage of RIA, Rich Internet Application, is that the state is of an application can not be recovered after the browser has been closed.</p>
<p>In Silverlight 3 there’s a solution for this problem. In SL3 you are now able to create a SL page. This in combination with the Frame and navigation Source make it possible to navigate through the same application based on the url.</p>
<p>The first part of the url is the path to the page on which the Silverlight page is located, for example <em>http://localhost/SLapp.html</em>.</p>
<p>After this the part of the url for the navigation within the application can be placed. This part must be preceded by a &#8216;#&#8217;, for example <em>http://localhost/SLapp.html#SearchPage.xaml</em>.</p>
<p>From webapplications we also now the querystring in the url for passing parameters to a site, this is also implemented in silverlight in the same way. The previously used url can then be formatted as followed <em>http://localhost/SLapp.html#SearchPage.xaml?title=silverlight</em></p>
<p>More information about <a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/04/09/silverlight-3-and-navigation-applications.aspx">page navigation</a> can be found at Mike Taulty&#8217;s blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.thumnet.com/silverlight-3-navigation/70/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
