<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Creative Mind</title>
	
	<link>http://rocketCMS.com</link>
	<description>Because we all have one</description>
	<pubDate>Fri, 05 Jun 2009 14:14:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<image><link>http://www.brunofigueiredo.com/</link><url>http://www.google.com/a/cpanel/brunofigueiredo.com/images/logo.gif?service=mail</url><title>BrunoFigueiredo.com</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/brunofig" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>Links for 2009-07-30 [del.icio.us]</title><link>http://feedproxy.google.com/~r/brunofig/~3/eKHq6vQb0nE/brunofig</link><pubDate>Fri, 31 Jul 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/brunofig#2009-07-30</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/saveenr/archive/2009/07/29/a-list-of-tools-for-automatic-graph-and-diagram-layout.aspx"&gt;Saveen Reddy's blog : A List of Tools for Automatic Graph and Diagram Layout&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/brunofig/~4/eKHq6vQb0nE" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/brunofig#2009-07-30</feedburner:origLink></item><item><title>Links for 2009-07-29 [del.icio.us]</title><link>http://feedproxy.google.com/~r/brunofig/~3/FQuR-vk6KF0/brunofig</link><pubDate>Thu, 30 Jul 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/brunofig#2009-07-29</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.sitepoint.com/blogs/2009/07/29/build-auto-expanding-textarea-1/"&gt;How to Build an Auto-Expanding Textarea jQuery Plugin, Part 1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/brunofig/~4/FQuR-vk6KF0" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/brunofig#2009-07-29</feedburner:origLink></item><item><title>Links for 2009-07-23 [del.icio.us]</title><link>http://feedproxy.google.com/~r/brunofig/~3/bhPY1Wln8x4/brunofig</link><pubDate>Fri, 24 Jul 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/brunofig#2009-07-23</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://hungred.com/2009/07/11/how-to/tutorial-create-simple-vibrate-effect-form-box-jquery/"&gt;Tutorial: How to create a simple vibration effect for your form box with jQuery - Hungred.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/brunofig/~4/bhPY1Wln8x4" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/brunofig#2009-07-23</feedburner:origLink></item><item><title>Links for 2009-07-21 [del.icio.us]</title><link>http://feedproxy.google.com/~r/brunofig/~3/yPxzrWLeU04/brunofig</link><pubDate>Wed, 22 Jul 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/brunofig#2009-07-21</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://methvin.com/splitter/"&gt;jQuery Splitter Plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/brunofig/~4/yPxzrWLeU04" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/brunofig#2009-07-21</feedburner:origLink></item><item><title>Links for 2009-07-20 [del.icio.us]</title><link>http://feedproxy.google.com/~r/brunofig/~3/1BVU2VRI4Lw/brunofig</link><pubDate>Tue, 21 Jul 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/brunofig#2009-07-20</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://commonservicefactory.codeplex.com/"&gt;Common Service Factory - Home&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.dreamcss.com/2009/07/7-interesting-jquery-calendar-plugins.html"&gt;7 interesting jQuery calendar plugins&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/brunofig/~4/1BVU2VRI4Lw" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/brunofig#2009-07-20</feedburner:origLink></item><item><title>Links for 2009-07-16 [del.icio.us]</title><link>http://feedproxy.google.com/~r/brunofig/~3/VSR6Wr6pu_M/brunofig</link><pubDate>Fri, 17 Jul 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/brunofig#2009-07-16</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.lostechies.com/blogs/johnteague/archive/2009/07/15/giving-your-mvc-views-an-identity.aspx"&gt;Giving Your MVC Views an Identity - John Teague's Blog -&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/brunofig/~4/VSR6Wr6pu_M" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/brunofig#2009-07-16</feedburner:origLink></item><item><title>Links for 2009-07-10 [del.icio.us]</title><link>http://feedproxy.google.com/~r/brunofig/~3/b6ed1SaV5LE/brunofig</link><pubDate>Sat, 11 Jul 2009 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/brunofig#2009-07-10</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.dreamincode.net/code/snippet2539.htm"&gt;Save a bitmap of a web page - C# - Source Code | DreamInCode.net&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/8b7k14a4.aspx"&gt;How to: Format Text in Documents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/316384"&gt;How to automate Microsoft Word to create a new document by using Visual C#&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.packtpub.com/article/microsoft-office-outlook-programming-vsto-c-sharp-part1"&gt;Microsoft Office Outlook Programming Using VSTO 3.0 and C#: Part 1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/brunofig/~4/b6ed1SaV5LE" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/brunofig#2009-07-10</feedburner:origLink></item><item>
		<title>P&amp;P: Repository and Specification Patterns</title>
		<link>http://feedproxy.google.com/~r/brunofig/~3/wUhfRRDROzI/</link>
		<comments>http://rocketCMS.com/index.php/2009/06/05/repository-specification-patterns-how-do-you-implement-it/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 14:14:10 +0000</pubDate>
		<dc:creator>Bruno Figueiredo</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[P&P]]></category>

		<category><![CDATA[Patterns]]></category>

		<category><![CDATA[Repository]]></category>

		<category><![CDATA[Specification]]></category>

		<guid isPermaLink="false">http://rocketCMS.com/?p=179</guid>
		<description><![CDATA[I&#8217;ve been using the Repository pattern but I&#8217;ve struggling with it a bit. Surfing the web returns good samples, the problem is that, after reading many posts about it, I came to the conclusion that there are two kinds of implementations.
First Approach: The Specific Repository
The specific repository implementation takes us to have a interface for [...]]]></description>
			<content:encoded><![CDATA[<p><span class="drop">I</span>&#8217;ve been using the <a href="http://martinfowler.com/eaaCatalog/repository.html">Repository pattern</a> but I&#8217;ve struggling with it a bit. Surfing the web returns good samples, the problem is that, after reading many posts about it, I came to the conclusion that there are two kinds of implementations.</p>
<h5>First Approach: The Specific Repository</h5>
<p>The specific repository implementation takes us to have a interface for each entity that defines all of the data access methods that we need to perform.</p>
<p>So, if we want to access data from a Customer, we would build first a <em>ICustomerRepository </em> and and <em>LinqCustomerRepository</em> that would implement our interface:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://wucy6a.blu.livefilestore.com/y1pDkWAyl6n0LSxhbX91RxnisWf9xSG16K264bc-mvCpbqH90MEzaW3dqsZRPCCdb5T46tPRgMOtChteKhLCeYLgyiZJK-I5ZPi/specific_diagram.jpg" alt="" /></p>
<p>Has you can see, we have a method for each action we want to perform. While this implementation serves the repository purpose, to me it feels more like a <a href="http://www.martinfowler.com/eaaCatalog/serviceLayer.html" target="_blank">Service layer</a> .</p>
<h5>Second Approach: The Generic Repository</h5>
<p>This approach uses a generic interface and implementation for the common actions:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://wucy6a.blu.livefilestore.com/y1pJbDZOs6P3tJ8xtO_jNJQdo6qeQPJl_sXDKKNPfCE_CRTDCNzNKPpxyhTiPJkNHcKtuYsTjjH4FdfzcA7rmluVkTO8U6Wl3MZ/generic.jpg" alt="" /></p>
<p>This approach, to me, reflects more the repository pattern in the current available technology allowing us to have  simplicity in our repositories thru the use of generics.</p>
<p>With this approach we also might use the <a href="http://en.wikipedia.org/wiki/Specification_pattern" target="_blank">Specification pattern</a> for querying the data container.</p>
<h5>The Specification Pattern</h5>
<p>With this pattern we can encapsulate our queries. To perform this task we must first create a abstract class that will serve as base for all our queries:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://wucy6a.blu.livefilestore.com/y1ptw5aBqEaaXo6HFJScJuSNGwlsnS5z0PlDky24FMquCE5pEVKctPkP183Qt6AKF6yx7rS0j8tEiKwQGaEFWV9Bv5CM2ihpyQz/specification_QB.jpg" alt="" /></p>
<p>With this we can now, for instance, create a query to get all customers by gender:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://wucy6a.blu.livefilestore.com/y1ppIxSAkD9MkVtwGfQYboc4x1MKHfErOZCEYOdeT0ok78XkWLJWtlMkfWNnqZ7JFu9ULW7_cfiGGx5AzFt5llEfpD2eXcCuYEw/specification_Filter.jpg" alt="" /></p>
<p>To use it in our Service Layer we just need to:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://wucy6a.blu.livefilestore.com/y1ppZiEGOYZ-QIU9PIdJwjQTBP4SFeObGuFgW3iUk8rQ-Lkk2FB9kLsmXnu87fNEu6A9xGIOk_bVi9E4_u0dAMOcLBNsqvLDBiB/service.jpg" alt="" /></p>
<p>Our Find method of the Repository will get all:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://wucy6a.blu.livefilestore.com/y1p3lz2ZoRi2l2PQFaoBmcsdW6ivwYexyNDQ8ONgtCDVb8cr-RX36aC6hro2Pvx6Kc0331CVk-Mjue3-PcKXxSP6u8y4Ax8Bijs/Repository_Find.jpg" alt="" /></p>
<div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://rocketCMS.com/index.php/2009/06/05/repository-specification-patterns-how-do-you-implement-it/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://rocketCMS.com/index.php/2009/06/05/repository-specification-patterns-how-do-you-implement-it/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://rocketCMS.com/index.php/2009/06/05/repository-specification-patterns-how-do-you-implement-it/&title=P%26%23038%3BP%3A+Repository+and+Specification+Patterns" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://rocketCMS.com/index.php/2009/06/05/repository-specification-patterns-how-do-you-implement-it/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://rocketCMS.com/index.php/2009/06/05/repository-specification-patterns-how-do-you-implement-it/&title=P%26%23038%3BP%3A+Repository+and+Specification+Patterns" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brunofig?a=wUhfRRDROzI:kvOTq4r4qPI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=wUhfRRDROzI:kvOTq4r4qPI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=wUhfRRDROzI:kvOTq4r4qPI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/brunofig?i=wUhfRRDROzI:kvOTq4r4qPI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=wUhfRRDROzI:kvOTq4r4qPI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/brunofig?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=wUhfRRDROzI:kvOTq4r4qPI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/brunofig?i=wUhfRRDROzI:kvOTq4r4qPI:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brunofig/~4/wUhfRRDROzI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rocketCMS.com/index.php/2009/06/05/repository-specification-patterns-how-do-you-implement-it/feed/</wfw:commentRss>
		<feedburner:origLink>http://rocketCMS.com/index.php/2009/06/05/repository-specification-patterns-how-do-you-implement-it/</feedburner:origLink></item>
		<item>
		<title>Quick Tip: Using SqlMetal to generate mapping for your POCO</title>
		<link>http://feedproxy.google.com/~r/brunofig/~3/DgpuzpbTB4A/</link>
		<comments>http://rocketCMS.com/index.php/2009/05/29/quick-tip-using-sqlmetal-to-generate-mapping-for-your-poco/#comments</comments>
		<pubDate>Fri, 29 May 2009 15:40:50 +0000</pubDate>
		<dc:creator>Bruno Figueiredo</dc:creator>
		
		<category><![CDATA[Tips & Tricks]]></category>

		<category><![CDATA[EF]]></category>

		<category><![CDATA[linq]]></category>

		<category><![CDATA[poco]]></category>

		<guid isPermaLink="false">http://rocketCMS.com/?p=177</guid>
		<description><![CDATA[We all know that we can easily map our database to classes using the Linq-to-Sql designer on Visual Studio. What happens in this process is that VS automatically creates all classes necessary to map our database. Although this being just freaking awesome, I do find it to have, sometimes, a two-face result.]]></description>
			<content:encoded><![CDATA[<p><span class="drop">W</span>e all know that we can easily map our database to classes using the Linq-to-Sql designer on Visual Studio. What happens in this process is that VS automatically creates all classes necessary to map our database. Although this being just freaking awesome, I do find it to have, sometimes, a two-face result:</p>
<ul>
<li>Sure we get all the job done quickly but,</li>
<li>We end loosing control over part of our code.</li>
</ul>
<p>Another issue is that if you, like me, like to create tables with and organize them with schemas, the designer complete ignores the schema.</p>
<p>In my latest pet project I used a Microsoft tool called SqlMetal:</p>
<blockquote><p>The <a href="http://msdn.microsoft.com/en-us/library/bb386987.aspx" target="_blank">SqlMetal</a> command-line tool generates code and mapping for the LINQ to SQL component of the .NET Framework.</p></blockquote>
<p>With this we can build our POCO classes and use the generated mapping from SqlMetal with the bonus of it mapping the schemas as well.</p>
<h5>Generating the map file</h5>
<p>So, to use it we just need to run our SqlMetal command:</p>
<p><img src="http://rhjiya.blu.livefilestore.com/y1p-vGfSoip76dVI64ipFpvksxSdSv46J0zjGw1x24Ov27O1I9X0e-utDUENE32Sz4KV_GgXk9BnIGvtSZ7iRqxSXZ28udPJg9S/im1.jpg" alt="" /></p>
<p>So we need to tell where is our database (using the /<em>server </em> and /<em>database</em> parameter) and to where we want to generate our mapping file (with the <em>/map</em> parameter). We also need to use the /<em>code</em> parameter with the /<em>map</em> but the file generated is of no use to us since we want to have our “own” classes. We end up our command with the <em>/namespace</em> parameter were we identify were our classes will reside.</p>
<p>The generated map file will help us in the creation process of our POCO classes.</p>
<h5>Creating our POCO classes</h5>
<p><img src="http://rhjiya.blu.livefilestore.com/y1pU7-6PkkSW8SM7fjNXQ0OuKleTsjqDjag2_kTvxdSxO-ni7i_oWnm5kuFrMGVjW2oXwlflXJD-I9gTYk3rPE26Ij-33DcCoor/im2.jpg" alt="" /></p>
<p>As we can see from the image above, our mapping file defines for each table a <em>type</em> element. Notice that this element has a <em>Name</em> attribute. This will be the name of our POCO class.</p>
<p>Now we have to options. We can use this name, in the format <em>tableSchema_tableName</em> , or we can rename our class. For the propose of this sample we will leave it.</p>
<p>So taking the example from the image above, we create our <em>Product_Details</em> class:</p>
<p><img src="http://rhjiya.blu.livefilestore.com/y1pbycAJTzrdMJUztWmhoz0jTUkZxaEkFyCUN-Wnn_WHyxs9n5iFp880jkCy3jTYs-FQBNdNd2l3GrymDdXrMqvOPpYE9xWZ3Oa/im3.jpg" alt="" /></p>
<p>Since we didn’t use the generated code file, we also need to create a <em>DataContext</em> helper class, that will use our map file:</p>
<p><img src="http://rhjiya.blu.livefilestore.com/y1pVQTNelqhFjoQbLSaN7oajP-rtoZmBw9OWD8E33aeEvaf9-F4zAFJPT1t6Gesg61bFDahFRtX432pr4oD5HD6ovcgpbhsm1Pp/im4.jpg" alt="" /></p>
<p>That’s it. Lets take it for a spin:</p>
<p><img src="http://rhjiya.blu.livefilestore.com/y1ppa9BkwXnQRdjHFPEd8-xwff82UzhpikDlhjjcTRhnEGTUZ2qHdqDiXPe04vjzzpf1U_qc-dFP3IjvXsMZSmrC7OSTF3RlaNv/im5.jpg" alt="" /></p>
<h5>Why is this better than using the designer? It sure takes more time to develop…</h5>
<p>Has everything else, we have to think before using this approach. With this you can, for instance, start coding your app without even knowing if you will end up using a SQL Server or a Oracle database. You can also easily move the Model to another assembly, and leave the ORM part (datacontext and map file) in another.</p>
<h5>POCO with EF</h5>
<p>Now, since EF is taking over, I recommend reading this post from the EF team on how to use <a href="http://blogs.msdn.com/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experience.aspx" target="_blank">POCO with EF 4.0</a> .</p>
<div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://rocketCMS.com/index.php/2009/05/29/quick-tip-using-sqlmetal-to-generate-mapping-for-your-poco/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://rocketCMS.com/index.php/2009/05/29/quick-tip-using-sqlmetal-to-generate-mapping-for-your-poco/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://rocketCMS.com/index.php/2009/05/29/quick-tip-using-sqlmetal-to-generate-mapping-for-your-poco/&title=Quick+Tip%3A+Using+SqlMetal+to+generate+mapping+for+your+POCO" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://rocketCMS.com/index.php/2009/05/29/quick-tip-using-sqlmetal-to-generate-mapping-for-your-poco/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://rocketCMS.com/index.php/2009/05/29/quick-tip-using-sqlmetal-to-generate-mapping-for-your-poco/&title=Quick+Tip%3A+Using+SqlMetal+to+generate+mapping+for+your+POCO" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brunofig?a=DgpuzpbTB4A:PDFJbOfIEeU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=DgpuzpbTB4A:PDFJbOfIEeU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=DgpuzpbTB4A:PDFJbOfIEeU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/brunofig?i=DgpuzpbTB4A:PDFJbOfIEeU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=DgpuzpbTB4A:PDFJbOfIEeU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/brunofig?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=DgpuzpbTB4A:PDFJbOfIEeU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/brunofig?i=DgpuzpbTB4A:PDFJbOfIEeU:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brunofig/~4/DgpuzpbTB4A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rocketCMS.com/index.php/2009/05/29/quick-tip-using-sqlmetal-to-generate-mapping-for-your-poco/feed/</wfw:commentRss>
		<feedburner:origLink>http://rocketCMS.com/index.php/2009/05/29/quick-tip-using-sqlmetal-to-generate-mapping-for-your-poco/</feedburner:origLink></item>
		<item>
		<title>Typemock is launching a new product for ASP.NET developers</title>
		<link>http://feedproxy.google.com/~r/brunofig/~3/x1GM1tlL5Co/</link>
		<comments>http://rocketCMS.com/index.php/2009/05/20/typemock-is-launching-a-new-product-for-aspnet-developers/#comments</comments>
		<pubDate>Wed, 20 May 2009 10:46:11 +0000</pubDate>
		<dc:creator>Bruno Figueiredo</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://rocketCMS.com/?p=173</guid>
		<description><![CDATA[Unit Testing ASP.NET? ASP.NET unit testing has never been this easy.
Typemock is launching a new product for ASP.NET developers – the ASP.NET Bundle - and for the launch will be giving out FREE licenses  to bloggers and their readers.
The ASP.NET Bundle is the ultimate ASP.NET unit testing solution, and offers both Typemock Isolator , [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.typemock.com/"><span class="drop">U</span>nit Testing</a> ASP.NET? <a href="http://www.typemock.com/ASP.NET_unit_testing_page.php">ASP.NET unit testing</a> has never been this easy.</p>
<p>Typemock is launching a new product for ASP.NET developers – the <strong>ASP.NET Bundle</strong> - and for the launch will be giving out <span style="color: #006600;"><strong>FREE licenses</strong> </span> to bloggers and their readers.</p>
<p>The ASP.NET Bundle is the ultimate ASP.NET unit testing solution, and offers both <a href="http://www.typemock.com/">Typemock Isolator</a> , a <a href="http://www.typemock.com/">unit test</a> tool and <a href="http://sm-art.biz/Ivonna.aspx">Ivonna</a> , the Isolator add-on for <a href="http://sm-art.biz/Ivonna.aspx">ASP.NET unit testing</a> , for a bargain price.</p>
<p>Typemock Isolator is a leading <a href="http://www.typemock.com/">.NET unit testing</a> tool (C# and VB.NET) for many ‘hard to test’ technologies such as <a href="http://typemock.com/sharepointpage.php">SharePoint</a> , <a href="http://www.typemock.com/ASP.NET_unit_testing_page.php">ASP.NET</a> , <a href="http://www.typemock.com/ASP.NET_unit_testing_page.php">MVC</a> , <a href="http://www.typemock.com/wcfpage.php">WCF</a> , WPF, <a href="http://www.typemock.com/Silverlight_unit_testing_page.php">Silverlight</a> and more. Note that for <a href="http://www.typemock.com/Silverlight_unit_testing_page.php">unit testing Silverlight</a> there is an open source Isolator add-on called <a href="http://www.typemock.com/Silverlight_unit_testing_page.php">SilverUnit</a> .</p>
<p>The first 60 bloggers who will blog this text in their blog and <a href="http://blog.typemock.com/2009/05/get-free-typemock-licenses-aspnet.html">tell us about it</a> , will get a Free Isolator ASP.NET Bundle license (Typemock Isolator + Ivonna). If you post this in an ASP.NET <strong>dedicated</strong> blog, you&#8217;ll get a license automatically (even if more than 60 submit) during the first week of this announcement.</p>
<p>Also 8 bloggers will get an <strong>additional 2 licenses</strong> (each) to give away to their readers / friends.</p>
<p>Go ahead, click the following link for <a href="http://blog.typemock.com/2009/05/get-free-typemock-licenses-aspnet.html">more information </a> on how to get your free license.</p>
<div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://rocketCMS.com/index.php/2009/05/20/typemock-is-launching-a-new-product-for-aspnet-developers/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://rocketCMS.com/index.php/2009/05/20/typemock-is-launching-a-new-product-for-aspnet-developers/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://rocketCMS.com/index.php/2009/05/20/typemock-is-launching-a-new-product-for-aspnet-developers/&title=Typemock+is+launching+a+new+product+for+ASP.NET+developers" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://rocketCMS.com/index.php/2009/05/20/typemock-is-launching-a-new-product-for-aspnet-developers/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://rocketCMS.com/index.php/2009/05/20/typemock-is-launching-a-new-product-for-aspnet-developers/&title=Typemock+is+launching+a+new+product+for+ASP.NET+developers" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brunofig?a=x1GM1tlL5Co:ekIbOay23tY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=x1GM1tlL5Co:ekIbOay23tY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=x1GM1tlL5Co:ekIbOay23tY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/brunofig?i=x1GM1tlL5Co:ekIbOay23tY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=x1GM1tlL5Co:ekIbOay23tY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/brunofig?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=x1GM1tlL5Co:ekIbOay23tY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/brunofig?i=x1GM1tlL5Co:ekIbOay23tY:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brunofig/~4/x1GM1tlL5Co" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rocketCMS.com/index.php/2009/05/20/typemock-is-launching-a-new-product-for-aspnet-developers/feed/</wfw:commentRss>
		<feedburner:origLink>http://rocketCMS.com/index.php/2009/05/20/typemock-is-launching-a-new-product-for-aspnet-developers/</feedburner:origLink></item>
		<item>
		<title>OffTopic: Attacked and Moved….</title>
		<link>http://feedproxy.google.com/~r/brunofig/~3/BZm4B1KG8eI/</link>
		<comments>http://rocketCMS.com/index.php/2009/05/04/offtopic-attacked-and-moved/#comments</comments>
		<pubDate>Mon, 04 May 2009 11:06:42 +0000</pubDate>
		<dc:creator>Bruno Figueiredo</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[offtopic]]></category>

		<guid isPermaLink="false">http://rocketCMS.com/?p=164</guid>
		<description><![CDATA[It seems that my blog was attacked. Lost the latest posts. I&#8217;ve started the recovery process but for the time being, I&#8217;ve moved from BlogEngine.net to WordPress. 
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;]]></description>
			<content:encoded><![CDATA[<p><span class="drop">I</span>t seems that my blog was attacked. Lost the latest posts. I&#8217;ve started the recovery process but for the time being, I&#8217;ve moved from BlogEngine.net to WordPress. </p>
<div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://rocketCMS.com/index.php/2009/05/04/offtopic-attacked-and-moved/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://rocketCMS.com/index.php/2009/05/04/offtopic-attacked-and-moved/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://rocketCMS.com/index.php/2009/05/04/offtopic-attacked-and-moved/&title=OffTopic%3A+Attacked+and+Moved%26%238230%3B." target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://rocketCMS.com/index.php/2009/05/04/offtopic-attacked-and-moved/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://rocketCMS.com/index.php/2009/05/04/offtopic-attacked-and-moved/&title=OffTopic%3A+Attacked+and+Moved%26%238230%3B." target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brunofig?a=BZm4B1KG8eI:8-0uEtU1vc4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=BZm4B1KG8eI:8-0uEtU1vc4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=BZm4B1KG8eI:8-0uEtU1vc4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/brunofig?i=BZm4B1KG8eI:8-0uEtU1vc4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=BZm4B1KG8eI:8-0uEtU1vc4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/brunofig?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=BZm4B1KG8eI:8-0uEtU1vc4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/brunofig?i=BZm4B1KG8eI:8-0uEtU1vc4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brunofig/~4/BZm4B1KG8eI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rocketCMS.com/index.php/2009/05/04/offtopic-attacked-and-moved/feed/</wfw:commentRss>
		<feedburner:origLink>http://rocketCMS.com/index.php/2009/05/04/offtopic-attacked-and-moved/</feedburner:origLink></item>
		<item>
		<title>.NET Integration Series: Create a OBA to share your LOB data using Visual Studio 2k8 Office Tools and ADO.NET Data Services</title>
		<link>http://feedproxy.google.com/~r/brunofig/~3/XqasutMKh_A/</link>
		<comments>http://rocketCMS.com/index.php/2009/04/30/net-integration-series-create-a-oba-to-share-your-lob-data-using-visual-studio-2k8-office-tools-and-adonet-data-services/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 22:28:26 +0000</pubDate>
		<dc:creator>Bruno Figueiredo</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<category><![CDATA[Astoria]]></category>

		<category><![CDATA[Integration]]></category>

		<category><![CDATA[LOB]]></category>

		<category><![CDATA[OBA]]></category>

		<category><![CDATA[Outlook]]></category>

		<category><![CDATA[Series]]></category>

		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://rocketCMS.com/?p=169</guid>
		<description><![CDATA[When developing web applications, most of the time the business data remains only accessible via the web browser. Some times that is not enough. Not everyone uses the browser as the main tool for their work. Many use office tools, for instance, to write business contracts in Word or keep track of budgets and stocks on Excel.]]></description>
			<content:encoded><![CDATA[<p><span class="drop">W</span>hen developing web applications, most of the time the business data remains only accessible via the web browser. Some times that is not enough. Not everyone uses the browser as the main tool for their work. Many use office tools, for instance, to write business contracts in Word or keep track of budgets and stocks on Excel.</p>
<p>When this happens, it is fundamental that these applications can connect with a central repository where all the business data is located and consume it without leaving the application.</p>
<p>Creating a Office Business Application (OBA) to share your Line of Business (LOB) Data is extremely easy, and can enhance the user experience greatly.</p>
<p>For this demo let’s assume that we work in a large online shopping company. In the shopping portal, on each product page, the user was the possibility to email, thru a easy web form, the customer support to enquiry about the product.</p>
<p>This feature is heavily use by the customers. What happens is that, when a support team member receives the email, he was to access the intranet portal to gain more details about the product to more accurate answer the customer.</p>
<p>After a brief talk with the support team manager, we realized that the main working tool they use is Outlook, since all enquiries are send via email by the web form. </p>
<p>“We can improve this process!” we think out loud. “Since the email subject identifies the product ID, why not have Outlook show the product details?”, we ask. “That would be just great!” says the manager. (I’m getting a little bit esquizofrenic talking to myself…)</p>
<p><strong>NOTE: </strong><strong>This is demo code. No validation and performance was took in account.</strong></p>
<p>So, what we need is to, when the customer support team member selects an email, our Outlook add-in will look the subject for the product ID, and if found, show a new region on the email message window detailing the product.</p>
<p>Since the LOB data is on a central repository, we need to develop first a service to fetch the data. For this task we will use the <a href="http://msdn.microsoft.com/en-us/data/bb931106.aspx" target="_blank">ADO.NET Data Services</a>. </p>
<p>Simply put, ADO.NET Data Services let us expose our data as a RSS feed.</p>
<p>In Visual Studio 2008 create a new web application, and add a new Linq to Sql Class item:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1p1FMEpiEbPpq2jRoRHcoHWjvXsjBDV1pshqMqmb2QQEjj2GOSgzL3K8ZASatoAP1UhCh_F2t3mhcihaNtL8wGlV-aP6V4VwfK/OBA1_1.jpg" /> </p>
<p>Lets drag some tables from the store database to the L2S designer. We will end up with the following model:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1p7vHnp0dEaD91t8HZzBqCgT24AWE3INOzI6sLKU7MzFboKNO5hgNsi8nBEhLEsI5NjNTPlrgoNP-84eE1hYCuCnztSQA-iDET/OBA1_2.jpg" /> </p>
</p>
<p>Now lets add a new ADO.NET Data Service:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1p-t_bFl6e2gBaW-lxCDPoLRJ3I-3sHQvrXroQndgu4iTjn0Pa2jzGJPL2aJOEL7Lp2e9z8geliSD38OmF-bB9TtO29p5UMr2s/OBA1_3.jpg" /> </p>
<p>After adding our Data Service, we need to let him know which data context to use, in this case, our L2S <em>OnlineStore.dbml</em>. What we need to do is in the generic <em>DataService </em>class tell it to use the <em>OnlineStoreDataContext</em>, and next tell which entities we can use, in our case all (“*”) and set the usage rights, that in our case, we only need to read the data:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1pVGd1vImbSc0ym8NsaP5zWuJWDpCpXXWwcqGSAVQ28BcrY3xDt-ixCpIa7-ihO5-ou2MtSbgt2eGE_QRRoLG4LfufYSwippNK/OBA1_4.jpg" /> </p>
<p>To test our service, just browse it:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1peOi5sTmXW6ZVyxRKdj_tQd63K4vWyQkSRxp0y5ZJpjZNoNYlZ5yxz0c21HUhsotbPl9k0uthH6cwo_Voo8sw4JX2in6X5X5s/OBA1_5.jpg" /> </p>
<p>As you can see we have easily exposed our data thru a service. </p>
<p>With this done, is now time to build our client, in our case, a Outlook add-in.</p>
<p>Lets start by creating a new Outlook add-in project:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1pf_PZBTgAZhq6MVEuU6btm37qlfqf85-94IxjOFsT_uTg6b5GpM82G2vlrPTxy5kXgy_o7CcmELVdsuTVVfP5qi9noCsMG6VM/OBA1_6.jpg" /> </p>
<p>The next step is to create the actual region that will be shown when we select a email message in Outlook. So, lets add a new Outlook Form Region:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1pB233ttFtICQdqbLmZc4UvThcvvt_b6jkOmVvNnNTqqziloEFH-WkOuQj0Osa3YGGNs4ojbM8KszstL-8KfMHtHcMEKIeScsT/OBA1_7.jpg" /> </p>
<p>The Outlook Form Region wizard starts. The first step lets us design a new region or import a Outlook form storage file. We will choose the first one: Design a new form region.</p>
<p>The next step let us choose which type of region do we want to create. To simplify the process of the support team, we will choose the “Adjoining”:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1ppkCKYjA4-rEVRMw5NQlAp4817UdOUJ-OHSMvWwfOrLAcrF3xs2HIbTyD4fRHoBVLxcSwwSnw8pgXmdi_Ds-L6Pi3TaJjiug-/OBA1_8.jpg" /> </p>
<p>Next we are asked for the name of our region, and when should this region be shown. Since we only want this while we are reading the email, choose only “Reading Pane”:</p>
<p><img style="margin: 0px 15px 0px 0px; display: inline" align="left" src="http://ti5pma.blu.livefilestore.com/y1pu3Nva0mJWg2C4Vp2es1ES-wz6bEYOL6bAPR-jWIa39BMSff2JhUcPD9PRqGHVSA4V2dspjA-iNjhpGbTZVfUtN4gCcmwYBvj/OBA1_9.jpg" /> </p>
<p>Finally we just need to define which message class will trigger the display. In our case the “Mail Message”, which should be selected by default.</p>
<p>Clicking finish will make the designer show our new email region, which is a empty windows form user control.</p>
<p>Finally we will start coding something <img src='http://rocketCMS.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Since we only want to show our region when the subject has a specific pattern, we will need to code this logic. So, hit F7 to go to the code-behind of our region.</p>
<p>Let’s first create a regEx to match our subject pattern:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1pPuxfO4lic2mvmmGOH71RBHr_QxATsGx_ynSWC4fwFO1hKziv5HsggMTrz1mM1UcouK30lMdXLH_VikxPb2vjXbEwrlyw7-VT/OBA1_10.jpg" /> </p>
<p>Next, in the “ProductDetailsRegionFactory_FormRegionInitializing” event, we will add the code logic to see if we show or not our region:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1p7kkMO7ALno_NQ-O8WL5Fn7owoTEJjixwgC6kvX73ibMGMZk_cvxMY1sJmKas4lDt-pExW6Rx7ld6F9YxNDQ1yzoJHnkYdPZV/OBA1_11.jpg" /> </p>
<p>Since we have some logic implemented we can test it to see if it works. Just select the Outlook add-in project and hit F5. The Outlook window will be showed to you. If any email message subject matches our pattern, our region will be shown:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1phGGtH2Ng9sNsVklLgA0Q5VV0_zH0cmIyy7088zrS8bnNxOmwWoByp35ILQFpngtIcKja28xjafgWyGj5KCiJeGr92ffQhB4q/OBA1_12.jpg" width="538" height="379" /> </p>
<p>Nice..it works! (has if we had any doubts… <img src='http://rocketCMS.com/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> )</p>
<p>Now that we have coded when the region is shown, we need to add the service reference so we can display the product details.</p>
<p>Just right-click on the OBAOutlookAddIn project, select “Add Service Reference…”, click “Discover”, rename the namespace to “AcmeServices” and click “OK”.</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1phHxD5os6L_qW_3OP2xs_H2YdRzdCkNJJrm-B2IUquBGmo--xFg6_gmFPQvxyBfkSRkwIsLxlePtrDFF5YLDouKriIRql9Mkq/OBA1_13.jpg" width="557" height="449" /> </p>
<p>In the designer of our region let’s add three labels:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1pF4ZmX23Od3ZWInye_YTyz2bd6fYZOq5zyOVAv6WHKnJ5TWvs3IlyZWrgxDDL1uL-lnAJ4XPe6k4_F9aGvcVuoVbQSKN9AVKr/OBA1_14.jpg" /> </p>
</p>
</p>
</p>
</p>
<p>Next, on the code behind, in the “ProductDetailsRegion_FormRegionShowing” event, lets add the product details logic:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1pyMN2ApGaAqeGS2rFMDwQESBk36NWgf2HkDFTUNGFv7P-GwEiCOTZR9NX22dv4IiQhAI8_VPFJcGXSNiVuo4Ow5hxJZzjU8b6/OBA1_15.jpg" width="516" height="432" /> </p>
<p>That’s it! If we run our project we will have our product details showed to us:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://ti5pma.blu.livefilestore.com/y1pxErfsM0PPIbDnAzOdqedt4i8ueF5DgqMTe34rsnXHSzNikqj08cda7P4vKW3xuZJAksCFxmAedaubtoWSfQKyjK5pj5kBsx-/OBA1_16.jpg" /> </p>
<p>&#160;</p>
<p>Has we can see, sharing LOB data with Microsoft Office is easy and fast, allowing you to create full integrated applications using the latest Microsoft technology.</p>
<p><a href="http://ti5pma.blu.livefilestore.com/y1pfxk4spp4mxs7jCCtUfSb9qR0wkZGpxbKde-IL4WnGZi0-KPrZnBu8yt2Ut9QyW38BGt687yCYhUaKXin5B2d0X32v8wNmJoZ/OBASample.zip?download">Download Code</a></p>
<div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://rocketCMS.com/index.php/2009/04/30/net-integration-series-create-a-oba-to-share-your-lob-data-using-visual-studio-2k8-office-tools-and-adonet-data-services/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://rocketCMS.com/index.php/2009/04/30/net-integration-series-create-a-oba-to-share-your-lob-data-using-visual-studio-2k8-office-tools-and-adonet-data-services/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://rocketCMS.com/index.php/2009/04/30/net-integration-series-create-a-oba-to-share-your-lob-data-using-visual-studio-2k8-office-tools-and-adonet-data-services/&title=.NET+Integration+Series%3A+Create+a+OBA+to+share+your+LOB+data+using+Visual+Studio+2k8+Office+Tools+and+ADO.NET+Data+Services" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://rocketCMS.com/index.php/2009/04/30/net-integration-series-create-a-oba-to-share-your-lob-data-using-visual-studio-2k8-office-tools-and-adonet-data-services/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://rocketCMS.com/index.php/2009/04/30/net-integration-series-create-a-oba-to-share-your-lob-data-using-visual-studio-2k8-office-tools-and-adonet-data-services/&title=.NET+Integration+Series%3A+Create+a+OBA+to+share+your+LOB+data+using+Visual+Studio+2k8+Office+Tools+and+ADO.NET+Data+Services" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brunofig?a=XqasutMKh_A:1PTaPXyfbWU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=XqasutMKh_A:1PTaPXyfbWU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=XqasutMKh_A:1PTaPXyfbWU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/brunofig?i=XqasutMKh_A:1PTaPXyfbWU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=XqasutMKh_A:1PTaPXyfbWU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/brunofig?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=XqasutMKh_A:1PTaPXyfbWU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/brunofig?i=XqasutMKh_A:1PTaPXyfbWU:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brunofig/~4/XqasutMKh_A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rocketCMS.com/index.php/2009/04/30/net-integration-series-create-a-oba-to-share-your-lob-data-using-visual-studio-2k8-office-tools-and-adonet-data-services/feed/</wfw:commentRss>
		<feedburner:origLink>http://rocketCMS.com/index.php/2009/04/30/net-integration-series-create-a-oba-to-share-your-lob-data-using-visual-studio-2k8-office-tools-and-adonet-data-services/</feedburner:origLink></item>
		<item>
		<title>Microsoft Certified Professional Developer:  Web Development</title>
		<link>http://feedproxy.google.com/~r/brunofig/~3/mtlCnh2RxkY/</link>
		<comments>http://rocketCMS.com/index.php/2009/04/30/microsoft-certified-professional-developer-web-development/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 11:16:16 +0000</pubDate>
		<dc:creator>Bruno Figueiredo</dc:creator>
		
		<category><![CDATA[Certification]]></category>

		<category><![CDATA[MCPD]]></category>

		<category><![CDATA[Microsoft]]></category>

		<category><![CDATA[Web Developer]]></category>

		<guid isPermaLink="false">http://rocketCMS.com/?p=166</guid>
		<description><![CDATA[Today I finished the Microsoft Certification process that we at work started this year. I&#8217;m now MCPD for web development.  

&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;]]></description>
			<content:encoded><![CDATA[<p><span class="drop">T</span>oday I finished the Microsoft Certification process that we at work started this year. I&#8217;m now MCPD for web development. <img src='http://rocketCMS.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><img title="MCPD logo" src="http://jtoprq.blu.livefilestore.com/y1pq8bm6fiPKquZcTfZqhwcrN8Jr05nth-bkg4d7cP-pGMwhTVGviogHpDNIRZQIzrgox0pPTSuQJ0U0MGqS4K_Xw/MCPD(rgb)_504.png" alt="" title="MCPD logo" /></p>
<div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://rocketCMS.com/index.php/2009/04/30/microsoft-certified-professional-developer-web-development/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://rocketCMS.com/index.php/2009/04/30/microsoft-certified-professional-developer-web-development/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://rocketCMS.com/index.php/2009/04/30/microsoft-certified-professional-developer-web-development/&title=Microsoft+Certified+Professional+Developer%3A++Web+Development" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://rocketCMS.com/index.php/2009/04/30/microsoft-certified-professional-developer-web-development/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://rocketCMS.com/index.php/2009/04/30/microsoft-certified-professional-developer-web-development/&title=Microsoft+Certified+Professional+Developer%3A++Web+Development" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brunofig?a=mtlCnh2RxkY:-Ra_k9uCGHY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=mtlCnh2RxkY:-Ra_k9uCGHY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=mtlCnh2RxkY:-Ra_k9uCGHY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/brunofig?i=mtlCnh2RxkY:-Ra_k9uCGHY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=mtlCnh2RxkY:-Ra_k9uCGHY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/brunofig?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=mtlCnh2RxkY:-Ra_k9uCGHY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/brunofig?i=mtlCnh2RxkY:-Ra_k9uCGHY:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brunofig/~4/mtlCnh2RxkY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rocketCMS.com/index.php/2009/04/30/microsoft-certified-professional-developer-web-development/feed/</wfw:commentRss>
		<feedburner:origLink>http://rocketCMS.com/index.php/2009/04/30/microsoft-certified-professional-developer-web-development/</feedburner:origLink></item>
		<item>
		<title>What could be improved in the OutSystems platform?</title>
		<link>http://feedproxy.google.com/~r/brunofig/~3/t_uBKzTC2VY/</link>
		<comments>http://rocketCMS.com/index.php/2008/11/12/what-could-be-improved-in-the-outsystems-platform/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 10:53:47 +0000</pubDate>
		<dc:creator>Bruno Figueiredo</dc:creator>
		
		<category><![CDATA[Outsystems]]></category>

		<category><![CDATA[user experience]]></category>

		<guid isPermaLink="false">http://rocketCMS.com/?p=162</guid>
		<description><![CDATA[Let me just start by saying that regarding my last post, I was contacted by the OutSystems and a support ticket was open to correct those situations in a future release.
Now, after been working with OutSystems for sometime, I believe that some improvement could be added, like:

Custom Controls
One thing that I think is critical and [...]]]></description>
			<content:encoded><![CDATA[<p><em><span class="drop">L</span>et me just start by saying that regarding my </em><a target="_blank" href="http://rocketcms.com/index.php/2008/11/07/outsystems-the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-ie/"><em>last post</em></a><em>, I was contacted by the OutSystems and a support ticket was open to correct those situations in a future release.</em></p>
<p>Now, after been working with OutSystems for sometime, I believe that some improvement could be added, like:</p>
<h4></h4>
<h3>Custom Controls</h3>
<p>One thing that I think is critical and a major flaw in the OS platform is the lack of support for custom controls. Now a days this is simply mandatory. In the previous client, we had a huge library of custom, business-oriented, controls. </p>
<h3><img style="border: 0px none ; margin: 10px 15px 10px 0px;" alt="image" src="http://4luxpq.blu.livefilestore.com/y1p9xD70z5HE30Y1mcCATvuTagmPTTyubsAL_hLgO5AYPV1_V2fWDp84mWua31pA3emOnpZ_U2sSaGnN6VyCGrNWQ/image_2.png" align="left" border="0" width="244" height="189">Extended Assign Editor</h3>
<p>Another thing that could be introduced is a Extended Assign (Expression) Editor. When using the Assign Action, we can have, for instance, 30 assigns. Editing them in a property grid like editor may not always be the best(practical) solution. It would be nice to have a Extended Expression Editor for action that had multiple arguments. This Extended Expression Editor would have on the left side a treeview with all the arguments of that action.</p>
<h3>Unit tests outside assemblies</h3>
<p>This was a big &#8220;What the Heck&#8221; for me. While using Reflector to browser the OutSystems assemblies, I found out that many assemblies also contains the unit tests. Keeping it in one project requires extra bandwidth to distribute , extra build time and increases the installation footprint.</p>
<h3>Master Pages</h3>
<p>On the <a target="_blank" href="http://community.outsystems.com/developercommunity/">community forums</a> there is a post about this topic with over a year. This is a much needed functionality. Please release it on the next version. Pleeeeaaaassseeee. <img src='http://rocketCMS.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3><img style="border: 0px none ; margin: 10px 15px 10px 0px;" alt="image" src="http://4luxpq.blu.livefilestore.com/y1p2OyJKDEvMu_5JYPOBi5MY3VfYKHC535edKdWAbhH4HeEGKnSmhotrnowCrdtaePZ2egtNzSKHYkABIfNs2v1cg/image_4.png" align="left" border="0" width="244" height="219">Docking panels<img style="border: 0px none ; margin: 0px 0px 10px 15px;" alt="image" src="http://4luxpq.blu.livefilestore.com/y1pUJm0g1AFFSR8LPkYIkiYTByfDDZC0H1h9hpLpe5r4VOlRz8oGathBxvpu6gz5gTzpB5mCA605d0ItE0_PTYpXQ/image_6.png" align="right" border="0" width="131" height="97"></h3>
<p>The OS Service Studio relies on panel for both application(eSpace) navigation and Tool box. This is just fine, but these panel are &#8220;fixed&#8221;. Or you see them or you&#8230;see them. It would be nice to have docking panel, like visual Studio.&nbsp; </p>
<h3>Editor Tabs</h3>
<p>Another feature that could be added to improve user experience are the tabs. The latest release of the Service Studio introduced the navigation back/forward arrow, but is my believe that tabs would be much appreciated by the community.</p>
<h3>Split Screen</h3>
<p>Now this is just pushing, but split screen for the designer, action of a webscreen would be just soooo sweeeeeeet <img src='http://rocketCMS.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<h3>Shelves</h3>
<p>This is a topic not related with the user experience, but more a programmer experience. Many times while creating a a webscreen, editing a action, or whatever task we can perform on the Service Studio, we have the need to save that change for later. A common scenario is when we are introducing a new, 5 days long feature, and on day 4 your manager says &#8220;We need to make a little change on that action.&#8221; . We can always save the eSpace, get the latest publish one, make the changes and go back to our saved eSpace. </p>
<p>For me it would be nice to have a &#8220;Shelve&#8230;&#8221; on the context menu. This action would save the changes to the OS Server for later usage.</p>
<p>This is a concept that we have, for instance, with <a target="_blank" href="http://blogs.vertigosoftware.com/teamsystem/archive/2006/01/18/Shelving_and_Branching.aspx">Visual Studio and Team Foundation Server</a>.</p>
<h3>&nbsp;</h3>
<h3>Conclusion</h3>
<p>So, these are some of the features I would love to be added to the OS.</p>
<p>What do you think? Any suggestions?</p>
<p>If you haven&#8217;t already tried out the OS Platform, <a target="_blank" href="http://community.outsystems.com/DocumentsEntry.aspx?VirtualDirectoryId=125">download</a> the developer edition, <a target="_blank" href="http://community.outsystems.com/Tutorial/">learn</a> how to use, and show it to your manager <img src='http://rocketCMS.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . It&#8217;s great for rapid application development.</p>
<div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://rocketCMS.com/index.php/2008/11/12/what-could-be-improved-in-the-outsystems-platform/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://rocketCMS.com/index.php/2008/11/12/what-could-be-improved-in-the-outsystems-platform/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://rocketCMS.com/index.php/2008/11/12/what-could-be-improved-in-the-outsystems-platform/&title=What+could+be+improved+in+the+OutSystems+platform%3F" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://rocketCMS.com/index.php/2008/11/12/what-could-be-improved-in-the-outsystems-platform/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://rocketCMS.com/index.php/2008/11/12/what-could-be-improved-in-the-outsystems-platform/&title=What+could+be+improved+in+the+OutSystems+platform%3F" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brunofig?a=t_uBKzTC2VY:Wt4A2ED8Xqs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=t_uBKzTC2VY:Wt4A2ED8Xqs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=t_uBKzTC2VY:Wt4A2ED8Xqs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/brunofig?i=t_uBKzTC2VY:Wt4A2ED8Xqs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=t_uBKzTC2VY:Wt4A2ED8Xqs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/brunofig?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=t_uBKzTC2VY:Wt4A2ED8Xqs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/brunofig?i=t_uBKzTC2VY:Wt4A2ED8Xqs:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brunofig/~4/t_uBKzTC2VY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rocketCMS.com/index.php/2008/11/12/what-could-be-improved-in-the-outsystems-platform/feed/</wfw:commentRss>
		<feedburner:origLink>http://rocketCMS.com/index.php/2008/11/12/what-could-be-improved-in-the-outsystems-platform/</feedburner:origLink></item>
		<item>
		<title>OutSystems: The controls collection cannot be modified because the control contains code blocks (i.e. ).</title>
		<link>http://feedproxy.google.com/~r/brunofig/~3/0nfzVKhxUGk/</link>
		<comments>http://rocketCMS.com/index.php/2008/11/07/outsystems-the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-ie/#comments</comments>
		<pubDate>Fri, 07 Nov 2008 10:44:19 +0000</pubDate>
		<dc:creator>Bruno Figueiredo</dc:creator>
		
		<category><![CDATA[Outsystems]]></category>

		<category><![CDATA[bug]]></category>

		<category><![CDATA[control collection]]></category>

		<guid isPermaLink="false">http://rocketCMS.com/?p=159</guid>
		<description><![CDATA[Lately I&#8217;ve been working with the OutSystems platform . For all of you that need to develop small to medium applications on a record time, this is the tool.
Although developed in .Net, the OS platform just recently updated their tools to the 2.0 version of the .NET framework.
&#34;So, what does this introduction has to do [...]]]></description>
			<content:encoded><![CDATA[<p><span class="drop">L</span>ately I&#8217;ve been working with the <a href="http://www.outsystems.com/agile/" target="_blank">OutSystems platform</a> . For all of you that need to develop small to medium applications on a record time, this is the tool.</p>
<p>Although developed in .Net, the OS platform just recently updated their tools to the 2.0 version of the .NET framework.</p>
<p><strong>&quot;So, what does this introduction has to do with the title?&quot;</strong></p>
<p>What happens is that I developed a <a href="http://msdn.microsoft.com/en-us/library/system.web.ihttpmodule.aspx" target="_blank">HttpModule</a> to add some meta tags to all applications under IIS.</p>
<p>All worked well until we started using one of the OS management applications. The error was: &quot;The Controls collection cannot be modified because the control contains code blocks (i.e. &lt;%&#8230;%&gt;&lt;% &#8230; %&gt;). &quot;</p>
<p><strong>&quot;What the heck?!&quot;</strong></p>
<p>After browsing thru the OS management application page files, I found this piece of code on almost all pages of the application:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">&lt;head runat=<span style="color: #006080;">&quot;server&quot;</span>
&gt;

&lt;title&gt;&lt;%= HttpUtility.HtmlEncode (Title) %&gt;&lt;/title&gt;
&lt;meta http-equiv=<span style="color: #006080;">&quot;Content-Type&quot;</span>
 content=<span style="color: #006080;">&quot;text/html; charset=utf-8&quot;</span>
 /&gt;
&lt;link href=<span style="color: #006080;">&quot;web.css&quot; </span>
type=<span style="color: #006080;">&quot;text/css&quot;</span>
 rel=<span style="color: #006080;">&quot;stylesheet&quot; </span>
/&gt;&lt;%= GetJavaScriptIncludes() %&gt;
&lt;script src=<span style="color: #006080;">&quot;&lt;%= OutSystems.HubEdition.RuntimePlatform.Web.JavaScriptManager.GetRelativeJavaScriptPrefix() %&gt;_osvalidators.js&quot;</span>

 type=<span style="color: #006080;">&quot;text/javascript&quot; </span>
charset=<span style="color: #006080;">&quot;UTF-8&quot;</span>
&gt;&lt;/script&gt;
&lt;/head&gt;</pre>
</div>
<p>Has you can see, although the head tag as the attribute <em>runat=&quot;server&quot; </em> they still use markup text (&lt;%&#8230;%&gt;). Has <a href="http://west-wind.com/WebLog/posts/6148.aspx" target="_blank">Rick explains</a> , when using the markup text, the generated code for the page changes, and all markup text is translated to Response.write and the controls collection of the container is hardcoded living no room for adding new controls.</p>
<p>So for me, the big question is: Since the OS team updated their solution to the .NET 2.0 version, <strong>why didn&#8217;t they also upgraded the management application to use all the cool (and helpful) features? </strong> <strong>Why not use MasterPages? </strong> <strong>Why not use the <em>ClientScript.RegisterClientScriptBlock </em> and <em>this.ClientScript.RegisterClientScriptInclude</em> ? Why not use the <em>Page.Title</em> ?</strong></p>
<div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://rocketCMS.com/index.php/2008/11/07/outsystems-the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-ie/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://rocketCMS.com/index.php/2008/11/07/outsystems-the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-ie/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://rocketCMS.com/index.php/2008/11/07/outsystems-the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-ie/&title=OutSystems%3A+The+controls+collection+cannot+be+modified+because+the+control+contains+code+blocks+%28i.e.+%3C%25...%25%3E%29." target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://rocketCMS.com/index.php/2008/11/07/outsystems-the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-ie/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://rocketCMS.com/index.php/2008/11/07/outsystems-the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-ie/&title=OutSystems%3A+The+controls+collection+cannot+be+modified+because+the+control+contains+code+blocks+%28i.e.+%3C%25...%25%3E%29." target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brunofig?a=0nfzVKhxUGk:DzV7VR-6caU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=0nfzVKhxUGk:DzV7VR-6caU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=0nfzVKhxUGk:DzV7VR-6caU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/brunofig?i=0nfzVKhxUGk:DzV7VR-6caU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=0nfzVKhxUGk:DzV7VR-6caU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/brunofig?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=0nfzVKhxUGk:DzV7VR-6caU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/brunofig?i=0nfzVKhxUGk:DzV7VR-6caU:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brunofig/~4/0nfzVKhxUGk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rocketCMS.com/index.php/2008/11/07/outsystems-the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-ie/feed/</wfw:commentRss>
		<feedburner:origLink>http://rocketCMS.com/index.php/2008/11/07/outsystems-the-controls-collection-cannot-be-modified-because-the-control-contains-code-blocks-ie/</feedburner:origLink></item>
		<item>
		<title>TIP: Conditional code execution with the ConditionalAttribute and the #IF … #ENDIF Preprocessor Directive</title>
		<link>http://feedproxy.google.com/~r/brunofig/~3/ozkYrJdrCaA/</link>
		<comments>http://rocketCMS.com/index.php/2008/09/25/153/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 09:08:44 +0000</pubDate>
		<dc:creator>Bruno Figueiredo</dc:creator>
		
		<category><![CDATA[Tips & Tricks]]></category>

		<category><![CDATA[attributes]]></category>

		<category><![CDATA[conditional]]></category>

		<category><![CDATA[debug]]></category>

		<category><![CDATA[reflector]]></category>

		<guid isPermaLink="false">http://rocketCMS.com/?p=153</guid>
		<description><![CDATA[While developing an application, you need to execute some code only when a defined condition is meet, for example, you have a product and you want to have specific code execution for both a release version and a trial version. You could change the code and compile different code for each version, or you could [...]]]></description>
			<content:encoded><![CDATA[<p><span class="drop">W</span>hile developing an application, you need to execute some code only when a defined condition is meet, for example, you have a product and you want to have specific code execution for both a release version and a trial version. You could change the code and compile different code for each version, or you could use one (or both) of the following solutions:</p>
<ul>
<li>The <strong>ConditionalAttribute</strong> indicates that a method is callable if a specified preprocessing identifier is applied to the method.</li>
<li>The <strong>#IF &#8230; #ENDIF</strong> Preprocessor Directive conditionally includes source code at compile-time if a specified preprocessing identifier is defined.</li>
</ul>
<h3>The ConditionalAttribute class</h3>
<p>An practical example of the usage of this attribute is the framework itself. The <em>System.Diagnostics.Debug</em> class uses in its methods this attribute so that when you are debugging your assembly, the debugging information is output:</p>
<p><img style="border-width: 0px;" src="http://fdbysa.blu.livefilestore.com/y1piCC45SmoC7SgUKrqGYtsVcEpIAfEn5ikjazFHlNHbVs_hTS1XsXNPeJQMcG-JmXCAoW7EWb5E_q01iahyCov8g/image_2.png" border="0" alt="image" width="706" height="604" /></p>
<p>Let build a simple example:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">using</span>

 System;

<span style="color: #0000ff;">using</span>

 System.Collections.Generic;
<span style="color: #0000ff;">using</span>

 System.Diagnostics;

<span style="color: #0000ff;">public</span>

 <span style="color: #0000ff;">class</span>

 MyConditionalSample
{
    <span style="color: #0000ff;">public</span>

 <span style="color: #0000ff;">static</span>

 <span style="color: #0000ff;">void</span>

 Main()
    {
        Debug.WriteLine(<span style="color: #006080;">&quot;Some debug info!&quot;</span>

);
        ExecuteIfRelease();
        ExecuteIfDebug();
    }

    [Conditional(<span style="color: #006080;">&quot;RELEASE&quot;</span>

)]
    <span style="color: #0000ff;">private</span>

 <span style="color: #0000ff;">static</span>

 <span style="color: #0000ff;">void</span>

 ExecuteIfRelease()
    {
        Console.WriteLine(<span style="color: #006080;">&quot;Hello world! I'm a release assembly!&quot;</span>

);
    }

    [Conditional(<span style="color: #006080;">&quot;DEBUG&quot;</span>

)]
    <span style="color: #0000ff;">private</span>

 <span style="color: #0000ff;">static</span>

 <span style="color: #0000ff;">void</span>

 ExecuteIfDebug()
    {
        Console.WriteLine(<span style="color: #006080;">&quot;Hello world! I'm a debug assembly!&quot;</span>

);
    }

}</pre>
</div>
<p>This is a straight forward example. In the <strong>Main </strong> method we call the <strong>Debug.WriteLine</strong> method to output some debug info, and call both <strong>ExecuteIfRelease</strong> and <strong>ExecuteIfDebug</strong> methods.</p>
<p>Looking at these methods, notice that they have the Conditional attribute with the conditional compilation symbols <em>RELEASE </em> and <em>DEBUG.</em></p>
<p>So, on our command line we will first simple compile and execute our code:</p>
<p><img style="border-width: 0px;" src="http://fdbysa.blu.livefilestore.com/y1pkoLWhOgX4gfTxXdGyKC-ehXmB4x0w5Mi_cuhXjP16jKlKv3lWxJ_bqsiGOzBCuDBYeuV3abgDSVpPBFi9HUoHw/image_6.png" border="0" alt="image" width="673" height="222" /></p>
<p>As you can see, no output was wrote, this because no conditional symbols were defined in our compilation. Let&#8217;s change our compilation command to include the <em>RELEASE</em> symbol:</p>
<p><img style="border-width: 0px;" src="http://fdbysa.blu.livefilestore.com/y1pcDLvvWiaAvX_pyKA27Up-MsT2dYalapiJLbYx6KvHQ0sG8Tas5VjWtOT0Ay3WE5yv5iXdbGLP3pWG83CWU_Qkg/image_8.png" border="0" alt="image" width="673" height="222" /></p>
<p>Now that we added the <em>RELEASE </em> symbol, the runtime now executes our <strong>ExecuteIfRelease</strong> method.</p>
<p>Changing the symbol to <em>DEBUG</em> will now make the runtime execute the <strong>ExecuteIfDebug</strong> method and also output our debug message, that we can trace in the DebugView:</p>
<p><img style="border-width: 0px;" src="http://fdbysa.blu.livefilestore.com/y1pEiOtKQG6FpC7hOgLTtczmw2m6-WMuDM3V1po5Js8zaf43bcxQP261XkW9Q6uHmGyJji5Oa6RlVElkXnRDSxCFA/image_10.png" border="0" alt="image" width="673" height="222" /></p>
<p><img style="border-width: 0px;" src="http://fdbysa.blu.livefilestore.com/y1pq0PF7wzplVyTVu-gx64004JB0619nufvV0Ix71ldTL978Ipm2ztzNeRhw1wd2G6pN4IqxgbL5zmFv4hZl_ccIQ/image_12.png" border="0" alt="image" width="649" height="287" /></p>
<p>If we look at our compile code in the .NET Reflector we will see that both methods are declared on the code but only the <strong>ExecuteIfDebug</strong> method is declared on the <strong>Main </strong> method:</p>
<p><img style="border-width: 0px;" src="http://fdbysa.blu.livefilestore.com/y1pDXAWN7uTezHCG5mwWwTurL5BBcMTCqpflHUs7lHGOQS-olRIlB6Apl4JUMV5ScjF9CPEM09KT1TkDEFIgZw0gg/image_14.png" border="0" alt="image" width="706" height="604" /></p>
<h3>#IF &#8230; #ENDIF Preprocessor Directive</h3>
<p>The #IF&#8230;#ENDIF preprocessor takes this to another level. When using this directive, you are telling the compiler to include/exclude code from the compiled assembly.</p>
<p>So, taking our example and changing it to use instead this directive:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff;">using</span>

 System;

<span style="color: #0000ff;">using</span>

 System.Collections.Generic;
<span style="color: #0000ff;">using</span>

 System.Diagnostics;

<span style="color: #0000ff;">public</span>

 <span style="color: #0000ff;">class</span>

 MyConditionalSample
{
    <span style="color: #0000ff;">public</span>

 <span style="color: #0000ff;">static</span>

 <span style="color: #0000ff;">void</span>

 Main()
    {
        Debug.WriteLine(<span style="color: #006080;">&quot;Some debug info!&quot;</span>

);
        #<span style="color: #0000ff;">if</span>

(RELEASE)
        ExecuteIfRelease();
        #elif(DEBUG)
        ExecuteIfDebug();
        <span style="color: #cc6633;">#endif</span>

    }

    #<span style="color: #0000ff;">if</span>

(RELEASE)
    <span style="color: #0000ff;">private</span>

 <span style="color: #0000ff;">static</span>

 <span style="color: #0000ff;">void</span>

 ExecuteIfRelease()
    {
        Console.WriteLine(<span style="color: #006080;">&quot;Hello world! I'm a release assembly!&quot;</span>

);
    }
    #elif(DEBUG)
    <span style="color: #0000ff;">private</span>

 <span style="color: #0000ff;">static</span>

 <span style="color: #0000ff;">void</span>

 ExecuteIfDebug()
    {
        Console.WriteLine(<span style="color: #006080;">&quot;Hello world! I'm a debug assembly!&quot;</span>

);
    }
    <span style="color: #cc6633;">#endif</span>

}</pre>
</div>
<p>Now let&#8217;s compile and execute our code using the <em>DEBUG </em> symbol:</p>
<p><img style="border-width: 0px;" src="http://fdbysa.blu.livefilestore.com/y1pKpCz9-v90VhlII51T9CKNXpdn8hQI7q7DTHDDUIy9pqRsSSqlxmzTyMXpKEFpQIqQUXuxUVKV1FLQLVKFOpoXg/image_16.png" border="0" alt="image" width="673" height="174" /></p>
<p>The code executed has expected, with no visible difference from the prior sample. So what&#8217;s the catch?</p>
<p>The catch, has told, is in the compiled code itself:</p>
<p><img style="border-width: 0px;" src="http://fdbysa.blu.livefilestore.com/y1pTY_HS5qMfBEqZuw2WRzHKlQEouyltiEjbqALJMy30vtkTEOTggRfPb8aidslBMcQQtxXoGqzDugo5CWlVpmEOg/image_18.png" border="0" alt="image" width="706" height="488" /></p>
<p>Notice that our compiled code doesn&#8217;t include the <strong>ExecuteIfRelease </strong> method.</p>
<h3>Conclusion</h3>
<p>So there you have it. To simple ways of call conditional code. One more thing: although we used the command line compiler to define de conditional symbols, the same can be made using Visual Studio. Simply go to the project&#8217;s properties, and on the <em>Build </em> tab set your custom compilations symbols, or use the <em>DEBUG </em> and/or <em>TRACE </em> symbols:</p>
<p><img style="border-width: 0px;" src="http://fdbysa.blu.livefilestore.com/y1pnzjMvp2mdDlycNJp62mWd62md1y9fYCm_AZFiWK7yQX2d7FCkUvCOg_3hdNHdQd4ovlVGvNdMEaADf2YfsnMYg/image_22.png" border="0" alt="image" width="625" height="128" /></p>
<p>I would like to say thanks to my good friend <a href="http://msmvps.com/blogs/paulomorgado" target="_blank">Paulo</a> for pointing me into the right direction on this matter.</p>
<div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://rocketCMS.com/index.php/2008/09/25/153/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://rocketCMS.com/index.php/2008/09/25/153/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://rocketCMS.com/index.php/2008/09/25/153/&title=TIP%3A+Conditional+code+execution+with+the+ConditionalAttribute+and+the+%23IF+%26%238230%3B+%23ENDIF+Preprocessor+Directive" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://rocketCMS.com/index.php/2008/09/25/153/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://rocketCMS.com/index.php/2008/09/25/153/&title=TIP%3A+Conditional+code+execution+with+the+ConditionalAttribute+and+the+%23IF+%26%238230%3B+%23ENDIF+Preprocessor+Directive" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brunofig?a=ozkYrJdrCaA:xXJRYTad34E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=ozkYrJdrCaA:xXJRYTad34E:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=ozkYrJdrCaA:xXJRYTad34E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/brunofig?i=ozkYrJdrCaA:xXJRYTad34E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=ozkYrJdrCaA:xXJRYTad34E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/brunofig?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=ozkYrJdrCaA:xXJRYTad34E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/brunofig?i=ozkYrJdrCaA:xXJRYTad34E:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brunofig/~4/ozkYrJdrCaA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rocketCMS.com/index.php/2008/09/25/153/feed/</wfw:commentRss>
		<feedburner:origLink>http://rocketCMS.com/index.php/2008/09/25/153/</feedburner:origLink></item>
		<item>
		<title>Finally I’ve got Funambol working over the air</title>
		<link>http://feedproxy.google.com/~r/brunofig/~3/x7EbZzJE9XQ/</link>
		<comments>http://rocketCMS.com/index.php/2008/08/15/finally-ive-got-funambol-working-over-the-air/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 03:46:21 +0000</pubDate>
		<dc:creator>Bruno Figueiredo</dc:creator>
		
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">/post/Finally-Ive-got-Funambol-working-over-the-air.aspx</guid>
		<description><![CDATA[Over the last couple of days I&#8217;ve been trying to put Funambol (for those that don&#8217;t know, Funambol is a mobile messaging server that allows, for instance, data sync, and it&#8217;s open source) to work and to be accessible &#8220;over the air&#8220;.Since @work I&#8217;m a Microsoft guy, @home I fall into the &#8220;the dark side [...]]]></description>
			<content:encoded><![CDATA[<p><span class="drop">O</span>ver the last couple of days I&#8217;ve been trying to put <a href="http://www.funambol.com/">Funambol</a> (for those that don&#8217;t know, Funambol is a mobile messaging server that allows, for instance, data sync, and it&#8217;s open source) to work and to be accessible &#8220;<a href="http://searchmobilecomputing.techtarget.com/sDefinition/0,,sid40_gci805999,00.html">over the air</a>&#8220;.<br />Since @work I&#8217;m a Microsoft guy, @home I fall into the &#8220;the dark side of the force&#8221;, and use (or at least try since I&#8217;m sooooo newbie) linux, in this particular case, <a href="http://www.ubuntu.com/">Ubuntu</a>.</p>
<p>Getting Funambol to work is extremely easy:<br />First get a terminal window and download the package:<br />
<blockquote># sudo -s<br /># wget http://download.forge.objectweb.org/sync4j/funambol-7.0.6.bin</p></blockquote>
<p>Then just install:<br />
<blockquote>#  sh funambol-7.0.6.bin</p></blockquote>
<p>Using the default directory for the instalation, start the funambol server:<br />
<blockquote>#  /opt/Funambol/bin/funambol start</p></blockquote>
<p>On your browser you can now type http://localhost:8080, hit Enter and voila, the DS Server page is shown.<br />Here you can browse to the Web Demo client and loging as a guest.</p>
<p>To manage the Funambol server, we user the Admin applet by executing:<br />
<blockquote># /opt/Funambol/admin/bin/funamboladmin</p></blockquote>
<p>After login (File &gt; Login user:admin password:admin), we can now manage the server, and, for now, create a new user, by expanding the tree till we reach the Users node and adding a new user.</p>
<p>So, for completing this first step, all we need to do is install the mobile client. I&#8217;m using the Funambol client for windows mobile. Many other <a href="https://www.forge.funambol.org/download/">clients are available</a>, like for iPod, BlackBerry, Outlook, Java capable phones and of course, the iPhone.</p>
<p>After installing the client and setup the account details, just hit &#8220;sync all&#8221;, and all your data will be placed on the funambol server. (note: I&#8217;m assuming that the device used in this step is, for now, can access the local network where the funambol server is located).</p>
<p>Now, I need to configure the server to be accessible &#8220;over the air&#8221;. This was, for me, the hard part since I didnt knew much of Apache and Tomcat.</p>
<p>Since this is a <a href="http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29">LAMP server</a>, I&#8217;ll be using the Apache web server as a <a href="http://httpd.apache.org/docs/2.0/mod/mod_proxy.html">reversed proxy</a> to the &#8220;internal&#8221; tomcat server used by Funambol.</p>
<p>Assuming that the domain <i>funambol.domain.tld</i> is poiting to the LAMP server public IP, all we need to do is add a proxy reditection from the Apache to the Tomcat using <a href="http://httpd.apache.org/docs/2.0/vhosts/">Apache VirtualHosts</a>:<br />
<blockquote># gedit /etc/apache2/sites-available/default</p></blockquote>
<p>In the editor, add a new VirtualHost element like so:<br />
<blockquote>&lt;VirtualHost *:80&gt;<br />    ServerAdmin webmaster@localhost<br />    ServerName funambol.domain.tld</p>
<p>    ProxyPass / http://localhost:8080/funambol/<br />    ProxyPassReverse / http://localhost:8080/funambol/</p>
<p>    ErrorLog /var/log/apache2/error.log<br />&lt;/VirtualHost&gt;</p></blockquote>
<p>Now we need to enable the apache proxy be editing the proxy.conf file:<br />
<blockquote># gedit /etc/apache2/mods-available/proxy.conf</p></blockquote>
<p>And allowing proxy from all, like the code bellow:<br />ProxyRequests Off</p>
<p>    &lt;Proxy *&gt;<br />        Order deny,allow<br />        Allow from all<br />    &lt;/Proxy&gt;</p>
<p>If all went well you will now be able to access the Funambol server throu the client using the <i>funambol.domain.tld</i> url.</p>
<p>Hope that this little tutorial can help you out setting up your own Funambol server.</p>
<p>The next steps, for me, will be getting Funambol to work with <a href="http://calendar.google.com">Google Calendar</a> and also with <a href="http://www.zimbra.com/">Zimbra</a>.</p>
<p><em></em></p>
<div id="spreadx">&nbsp;<a href="http://digg.com/submit?phase=2&url=http://rocketCMS.com/index.php/2008/08/15/finally-ive-got-funambol-working-over-the-air/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/digg.gif" alt="Digg" border="0" /></a>&nbsp;&nbsp;<a href="http://www.facebook.com/share.php?u=http://rocketCMS.com/index.php/2008/08/15/finally-ive-got-funambol-working-over-the-air/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/facebook.gif" alt="Facebook" border="0" /></a>&nbsp;&nbsp;<a href="http://www.stumbleupon.com/submit?url=http://rocketCMS.com/index.php/2008/08/15/finally-ive-got-funambol-working-over-the-air/&title=Finally+I%26%238217%3Bve+got+Funambol+working+over+the+air" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/stumble.gif" alt="StumbleUpon" border="0" /></a>&nbsp;&nbsp;<a href="http://technorati.com/faves?add=http://rocketCMS.com/index.php/2008/08/15/finally-ive-got-funambol-working-over-the-air/" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/technorati.gif" alt="Technorati" border="0" /></a>&nbsp;&nbsp;<a href="http://del.icio.us/post?url=http://rocketCMS.com/index.php/2008/08/15/finally-ive-got-funambol-working-over-the-air/&title=Finally+I%26%238217%3Bve+got+Funambol+working+over+the+air" target="_new"><img src="http://rocketCMS.com/wp-content/plugins/spreadx/images/delicious.gif" alt="Deli.cio.us" border="0" /></a>&nbsp;</div><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/brunofig?a=x7EbZzJE9XQ:V6O4QI0DkuQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=x7EbZzJE9XQ:V6O4QI0DkuQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/brunofig?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=x7EbZzJE9XQ:V6O4QI0DkuQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/brunofig?i=x7EbZzJE9XQ:V6O4QI0DkuQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=x7EbZzJE9XQ:V6O4QI0DkuQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/brunofig?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/brunofig?a=x7EbZzJE9XQ:V6O4QI0DkuQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/brunofig?i=x7EbZzJE9XQ:V6O4QI0DkuQ:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/brunofig/~4/x7EbZzJE9XQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rocketCMS.com/index.php/2008/08/15/finally-ive-got-funambol-working-over-the-air/feed/</wfw:commentRss>
		<feedburner:origLink>http://rocketCMS.com/index.php/2008/08/15/finally-ive-got-funambol-working-over-the-air/</feedburner:origLink></item>
	<lastBuildDate>Fri, 31 Jul 2009 00:00:00 PDT</lastBuildDate></channel>
</rss>
