<?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>Rash thoughts about .NET, C#, F# and Dynamics NAV. &#187; .NET</title>
	<atom:link href="http://www.navision-blog.de/tag/net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.navision-blog.de</link>
	<description>This Blog is about Microsoft Dynamics NAV (f.k.a Navision incl. C/SIDE and C/AL), C#, F# and .NET in general.</description>
	<lastBuildDate>Wed, 14 Jul 2010 11:12:43 +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>Using NaturalSpec to create a spec for C# projects (Updated 08.11.2009)</title>
		<link>http://www.navision-blog.de/2009/02/23/using-naturalspec-to-create-spec-for-c-projects/</link>
		<comments>http://www.navision-blog.de/2009/02/23/using-naturalspec-to-create-spec-for-c-projects/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 17:07:08 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[F#]]></category>
		<category><![CDATA[NaturalSpec]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[spec]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2009/02/23/using-naturalspec-to-create-spec-for-c-projects/</guid>
		<description><![CDATA[In my last two articles I gave an introduction in NaturalSpec and showed how to get started. This time I will show how we can use NaturalSpec to write automatically testable scenarios for C# projects. Like the TDD principle “Write the tests first” we should write our spec first and use the “Red-Green-Refactor” method. &#34;Red&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>In my last two articles I gave an <a href="http://www.navision-blog.de/2009/02/23/introducing-naturalspec-a-dsl-for-testing-part-i/">introduction</a> in <a href="http://code.google.com/p/natural/">NaturalSpec</a> and showed <a href="http://www.navision-blog.de/2009/11/08/getting-started-with-naturalspec/">how to get started</a>. This time I will show how we can use <a href="http://code.google.com/p/natural/">NaturalSpec</a> to write automatically testable scenarios for C# projects.</p>
<p>Like the <a href="http://en.wikipedia.org/wiki/Test_Driven_Development">TDD</a> principle “Write the tests first” we should write our spec first and use the “Red-Green-Refactor” method.</p>
<h5>&quot;Red&quot; – Create a spec scenario that fails</h5>
<p>At first I created a F# class library project called “Spec.CarSelling” and added project references to <em>NaturalSpec.dll</em> and <em>nunit.framework.dll</em> (see <a href="http://www.navision-blog.de/2009/02/23/getting-started-with-naturalspec/">“Getting started”</a> for further explanations).</p>
<p>Now I can write my first scenario:</p>
<pre class="code"><span style="color: green">// 1. define the module
</span><span style="color: blue">module </span>CarSpec</pre>
<pre class="code"><span style="color: green">// 2. open the NaturalSpec namespace</span>
<span style="color: blue">open </span>NaturalSpec

<span style="color: green">// 3. open project namespace
</span><span style="color: blue">open </span>CarSellingLib

<span style="color: green">// 4. define a test context
</span><span style="color: blue">let </span>Bert = <span style="color: blue">new </span>Dealer(<span style="color: maroon">&quot;Bert&quot;</span>)

<span style="color: green">// 5. create a method in BDD-style
</span><span style="color: blue">let </span>selling_a_car_for amount (dealer:Dealer) =
  printMethod amount
  dealer.SellCar amount

<span style="color: green">// 6. create a scenario
</span>[&lt;Scenario&gt;]
<span style="color: blue">let </span>When_selling_a_car_for_30000_it_should_equal_my_DreamCar() =
  As Bert
    |&gt; When selling_a_car_for 30000
    |&gt; It should equal (<span style="color: blue">new </span>Car(CarType.BMW, 200))
    |&gt; Verify</pre>
<p>At this stage the scenario is ready but doesn’t compile. This means we are ready with the &quot;Red&quot;-stage.</p>
<h5>&quot;Green&quot; – Make the test the pass</h5>
<p>In order to get the test green we have to create a C# class library called <strong>CarSellingLib</strong> and define the enum <strong>CarType</strong> and the classes <strong>Dealer</strong> and <strong>Car</strong>. Sticking to the <a href="http://en.wikipedia.org/wiki/You_Ain%27t_Gonna_Need_It">YAGNI-principle</a> we implement only the minimum to get the spec green (and ToString()-members for the output functionality).</p>
<pre class="code"><span style="color: blue">namespace </span>CarSellingLib
{
    <span style="color: blue">public enum </span><span style="color: #2b91af">CarType
    </span>{
        BMW
    }
}</pre>
<p>
  </p>
<pre class="code"><span style="color: blue">namespace </span>CarSellingLib
{
    <span style="color: blue">public class </span><span style="color: #2b91af">Car
    </span>{
        <span style="color: blue">public </span>Car(<span style="color: #2b91af">CarType </span>type, <span style="color: blue">int </span>horsePower)
        {
            Type = type;
            HorsePower = horsePower;
        }

        <span style="color: blue">public </span><span style="color: #2b91af">CarType </span>Type { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }
        <span style="color: blue">public int </span>HorsePower { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }

        <span style="color: blue">public override string </span>ToString()
        {
            <span style="color: blue">return string</span>.Format(<span style="color: #a31515">&quot;{0} ({1} HP)&quot;</span>, Type, HorsePower);
        }

        <span style="color: blue">public override bool </span>Equals(<span style="color: blue">object </span>obj)
        {
            <span style="color: blue">var </span>y = obj <span style="color: blue">as </span><span style="color: #2b91af">Car</span>;
            <span style="color: blue">if</span>(y == <span style="color: blue">null</span>) <span style="color: blue">return false</span>;
            <span style="color: blue">return </span>Type == y.Type &amp;&amp; HorsePower == y.HorsePower;
        }
<span style="color: blue">    </span>}
}</pre>
<pre class="code"><span style="color: blue">using </span>System;

<span style="color: blue">namespace </span>CarSellingLib
{
    <span style="color: blue">public class </span><span style="color: #2b91af">Dealer
    </span>{
        <span style="color: blue">public </span>Dealer(<span style="color: blue">string </span>name)
        {
            Name = name;
        }

        <span style="color: blue">public string </span>Name { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }

        <span style="color: blue">public </span><span style="color: #2b91af">Car </span>SellCar(<span style="color: blue">int </span>amount)
        {
            <span style="color: blue">return new </span><span style="color: #2b91af">Car</span>(<span style="color: #2b91af">CarType</span>.BMW, 200);
        }

        <span style="color: blue">public override string </span>ToString()
        {
            <span style="color: blue">return </span>Name;
        }
    }
}</pre>
<p>
  <br />When we add a project reference to our spec-project the UnitTests should pass and we have completed the &quot;Green&quot; step. (See &quot;<a href="http://www.navision-blog.de/2009/11/08/getting-started-with-naturalspec/">Getting started</a>&quot; if you don’t know how to run the spec.) Now we can add some more scenarios to our spec: </p>
<p></p>
<pre class="code"><span style="color: green">// 1. define the module </span>
<span style="color: blue">module </span>CarSpec</pre>
<pre class="code"><span style="color: green">// 2. open NaturalSpec-Namespace
</span><span style="color: blue">open </span>NaturalSpec

<span style="color: green">// 3. open project namespace
</span><span style="color: blue">open </span>CarSellingLib

<span style="color: green">// 4. define a test context
</span><span style="color: blue">let </span>Bert = <span style="color: blue">new </span>Dealer(<span style="color: maroon">&quot;Bert&quot;</span>)

<span style="color: green">// define reusable values
</span><span style="color: blue">let </span>DreamCar = <span style="color: blue">new </span>Car(CarType.BMW, 200)
<span style="color: blue">let </span>LameCar = <span style="color: blue">new </span>Car(CarType.Fiat, 45)

<span style="color: green">// 5. create a method in BDD-style
</span><span style="color: blue">let </span>selling_a_car_for amount (dealer:Dealer) =
  printMethod amount
  dealer.SellCar amount

<span style="color: green">// 6. create a scenario
</span>[&lt;Scenario&gt;]
<span style="color: blue">let </span>When_selling_a_car_for_30000_it_should_equal_the_DreamCar() =
  As Bert
    |&gt; When selling_a_car_for 30000
    |&gt; It should equal DreamCar
    |&gt; It shouldn't equal LameCar
    |&gt; Verify      

[&lt;Scenario&gt;]
<span style="color: blue">let </span>When_selling_a_car_for_19000_it_should_equal_the_LameCar() =
  As Bert
    |&gt; When selling_a_car_for 19000
    |&gt; It should equal LameCar
    |&gt; It shouldn't equal DreamCar
    |&gt; Verify</pre>
<p>
  </p>
<pre class="code"><span style="color: green">// create a scenario that expects an error</span>
[&lt;Scenario&gt;]
[&lt;Fails_with <span style="color: #a31515">&quot;Need more money&quot;</span>&gt;]
<span style="color: blue">let </span>When_selling_a_car_for_1000_it_should_fail_with_Need_More_Money() =
  As Bert
    |&gt; When selling_a_car_for 1000
    |&gt; Verify</pre>
<p>Now we are in the “Red”-Phase again.</p>
<h5>&quot;Refactor&quot; &#8211; rearrange your code to eliminate duplication and follow patterns</h5>
<p>After making the spec &quot;Green&quot; and doing some refactoring the project code could look like this:</p>
<pre class="code"><span style="color: blue">namespace </span>CarSellingLib
{
    <span style="color: blue">public enum </span><span style="color: #2b91af">CarType
    </span>{
        Fiat,
        BMW
    }
}</pre>
<p>
  </p>
<pre class="code"><span style="color: blue">namespace </span>CarSellingLib
{
    <span style="color: blue">public class </span><span style="color: #2b91af">Car
    </span>{
        <span style="color: blue">public </span>Car(<span style="color: #2b91af">CarType </span>type, <span style="color: blue">int </span>horsePower)
        {
            Type = type;
            HorsePower = horsePower;
        }

        <span style="color: blue">public </span><span style="color: #2b91af">CarType </span>Type { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }
        <span style="color: blue">public int </span>HorsePower { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }

        <span style="color: blue"># region </span>ToString, Equals 

        <span style="color: blue">public override string </span>ToString()
        {
            <span style="color: blue">return string</span>.Format(<span style="color: #a31515">&quot;{0} ({1} HP)&quot;</span>, Type, HorsePower);
        }

        <span style="color: blue">public override bool </span>Equals(<span style="color: blue">object </span>obj)
        {
            <span style="color: blue">var </span>y = obj <span style="color: blue">as </span><span style="color: #2b91af">Car</span>;
            <span style="color: blue">if</span>(y == <span style="color: blue">null</span>) <span style="color: blue">return false</span>;
            <span style="color: blue">return </span>Type == y.Type &amp;&amp; HorsePower == y.HorsePower;
        }

        <span style="color: blue">#endregion
    </span>}
}</pre>
<p>
  </p>
<pre class="code"><span style="color: blue">using </span>System;

<span style="color: blue">namespace </span>CarSellingLib
{
    <span style="color: blue">public class </span><span style="color: #2b91af">Dealer
    </span>{
        <span style="color: blue">public </span>Dealer(<span style="color: blue">string </span>name)
        {
            Name = name;
        }

        <span style="color: blue">public string </span>Name { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }

        <span style="color: blue">public </span><span style="color: #2b91af">Car </span>SellCar(<span style="color: blue">int </span>amount)
        {
            <span style="color: blue">if </span>(amount &gt; 20000)
                <span style="color: blue">return new </span><span style="color: #2b91af">Car</span>(<span style="color: #2b91af">CarType</span>.BMW, 200);

            <span style="color: blue">if </span>(amount &gt; 3000)
                <span style="color: blue">return new </span><span style="color: #2b91af">Car</span>(<span style="color: #2b91af">CarType</span>.Fiat, 45);

            <span style="color: blue">throw new </span><span style="color: #2b91af">Exception</span>(<span style="color: #a31515">&quot;Need more money&quot;</span>);
        }

        <span style="color: blue">public override string </span>ToString()
        {
            <span style="color: blue">return </span>Name;
        }
    }
}</pre>
<p>The spec output should look like the following:</p>
<blockquote>
<p>Scenario: When selling a car for 1000 it should fail with Need More Money</p>
<p>- Should fail&#8230;<br />
    &#8211; As Bert<br />
    &#8211; When selling a car for 1000</p>
<p>Scenario: When selling a car for 19000 it should equal the LameCar</p>
<p>- As Bert<br />
    &#8211; When selling a car for 19000<br />
    =&gt; It should equal Fiat (45 HP)<br />
    =&gt; It should not equal BMW (200 HP)<br />
    ==&gt; OK</p>
<p>Scenario: When selling a car for 30000 it should equal my DreamCar</p>
<p>- As Bert<br />
    &#8211; When selling a car for 30000<br />
    =&gt; It should equal BMW (200 HP)<br />
    ==&gt; OK</p>
<p>Scenario: When selling a car for 30000 it should equal the DreamCar</p>
<p>- As Bert<br />
    &#8211; When selling a car for 30000<br />
    =&gt; It should equal BMW (200 HP)<br />
    =&gt; It should not equal Fiat (45 HP)<br />
    >==&gt; OK</p>
<p>4 passed, 0 failed, 0 skipped, took 1,81 seconds (NUnit 2.5).</p>
</blockquote>
<h5>Summary</h5>
<p>I showed how we can use NaturalSpec for the Red-Green-Refactor process of C# projects and how easy it is to get a spec in natural language.</p>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2009/02/23/using-naturalspec-to-create-spec-for-c-projects/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>101 LINQ Samples</title>
		<link>http://www.navision-blog.de/2007/10/06/101-linq-samples/</link>
		<comments>http://www.navision-blog.de/2007/10/06/101-linq-samples/#comments</comments>
		<pubDate>Sat, 06 Oct 2007 16:54:37 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[LINQ]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2007/10/06/101-linq-samples/</guid>
		<description><![CDATA[LINQ (also Language Integrated Queries) ist momentan in aller (NET-)Munde. Wer sich mit der Syntax vertraut machen m&#246;chte kann auf MSDN 101 LINQ-Beispiele ansehen und durcharbeiten. Besonders die Samples die anonyme Typen verwenden, erzeugen eine gewisse Vorfreude bei mir. &#169;2010 Rash thoughts about .NET, C#, F# and Dynamics NAV.. All Rights Reserved..]]></description>
			<content:encoded><![CDATA[<p><a href="http://msdn.microsoft.com/data/ref/linq/">LINQ</a> (also <u>L</u>anguage <u>In</u>tegrated <u>Q</u>ueries) ist momentan in aller (NET-)Munde. Wer sich mit der Syntax vertraut machen m&#246;chte kann auf MSDN <a href="http://msdn2.microsoft.com/en-us/vcsharp/aa336746.aspx">101 LINQ-Beispiele</a> ansehen und durcharbeiten. Besonders die <a href="http://msdn2.microsoft.com/en-us/vcsharp/aa336758.aspx">Samples die anonyme Typen</a> verwenden, erzeugen eine gewisse Vorfreude bei mir.</p>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2007/10/06/101-linq-samples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ReSharper 3.0 f&#252;r Visual Studio 2005 im Test &#8211; Refactoring f&#252;r Profis</title>
		<link>http://www.navision-blog.de/2007/10/06/resharper-30-fr-visual-studio-2005-im-test/</link>
		<comments>http://www.navision-blog.de/2007/10/06/resharper-30-fr-visual-studio-2005-im-test/#comments</comments>
		<pubDate>Sat, 06 Oct 2007 10:03:11 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Firmen]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[resharper]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2007/10/06/resharper-30-fr-visual-studio-2005-im-test/</guid>
		<description><![CDATA[ReSharper ist ein Plugin der Firma JetBrains f&#252;r Visual Studio, das sich speziell die Produktivit&#228;tssteigerung beim Entwickeln als Ziel gesetzt hat. Besonderes Augenmerk wird dabei auf die Refactoring-Unterst&#252;zung gelegt, also auf das nachtr&#228;gliche Umgestalten von Quellcode. JetBrains wirbt damit das &#8220;intelligenteste AddIn f&#252;r Visual Studio&#8221; entwickelt zu haben &#8211; doch was kann ReSharper wirklich?  Download [...]]]></description>
			<content:encoded><![CDATA[<p>ReSharper ist ein Plugin der Firma <a href="http://www.jetbrains.com/index.html">JetBrains</a> f&#252;r Visual Studio, das sich speziell die Produktivit&#228;tssteigerung beim Entwickeln als Ziel gesetzt hat. Besonderes Augenmerk wird dabei auf die Refactoring-Unterst&#252;zung gelegt, also auf das nachtr&#228;gliche Umgestalten von Quellcode. JetBrains wirbt damit das &#8220;intelligenteste AddIn f&#252;r Visual Studio&#8221; entwickelt zu haben &#8211; doch was kann ReSharper wirklich? </p>
<p><span id="more-345"></span></p>
<h5>Download &amp; Installation</h5>
<p>ReSharper 3.0.2 gibt es bei JetBrains als <a href="http://www.jetbrains.com/resharper/download/index.html#full" title="ReSharper Download">30-Tage Testversion</a> zum Download. Die Installation gestaltet sich wirklich einfach &#8211; empfehlenswert ist jedoch Visual Studio vorher zu schlie&#223;en. Nach vollendeter Installation und erneutem Starten von Visual Studio wird die Shortcutbelegung f&#252;r ReSharper abgefragt. Es besteht die Wahl zwischen <a href="http://www.jetbrains.com/resharper/documentation/ReSharper30DefaultKeymap.pdf" title="Visual Studio Keyboard Schema">&#8220;Visual Studio&#8221;</a> und <a href="http://www.jetbrains.com/resharper/documentation/ReSharper30DefaultKeymap_2.pdf" title="IntelliJ IDEA">&#8220;IntelliJ IDEA&#8221;</a>. Beim &#8220;Visual Studio&#8221;-Schema werden die bekannten Standard-Refactoring-Features von Visual Studio einfach mit den analogen ReSharper-Features &#252;berschrieben, w&#228;hrend die zweite Einstellung f&#252;r Entwickler gedacht ist, die bereits mit IntelliJ IDEA oder ReSharper 2.5 gearbeitet haben.</p>
<p><img border="0" width="467" src="http://www.navision-blog.de/blog/wp-content/uploads/2007/10/install-resharper.gif" alt="ReSharper Keyboard Schema" height="281" style="border-width: 0px" /></p>
<p>Seit der Version 3.0 kann man die Keyboard-Belegung nun auch jederzeit &#252;ber <em>ReSharper/Options/Environment/General</em> editieren. Im weiteren werde ich jedoch nur auf die &#8220;Visual Studio&#8221;-Belegung eingehen.</p>
<h5>IntelliSense-Erweiterungen</h5>
<p>Visual Studio 2005 bringt standardm&#228;&#223;ig eine Reihe von <a href="http://de.wikipedia.org/wiki/IntelliSense" title="IntelliSense - Wikipedia">&#8220;IntelliSense&#8221;</a>-Features mit, die das Entwicklerleben einfacher gemacht haben. ReSharper erweitert diese Features noch um einige weitere M&#246;glichkeiten. So ist es zum Beispiel m&#246;glich alle im Projekt verwendeten Typen im IntelliSense auszuw&#228;hlen und nicht nur die Importierten. Das m&#246;glicherweise erforderliche Using-Statement wird von ReSharper automatisch erg&#228;nzt.</p>
<h5>Code-Assistent</h5>
<p>Immer wenn die Gl&#252;hbirne <img border="0" width="14" src="http://www.navision-blog.de/blog/wp-content/uploads/2007/10/bulb.gif" alt="Code Assistent" height="18" /> am linken Bildschirmrand erscheint, hat der Code-Assistent eine M&#246;glichkeit zum Refactoring gefunden. Durch Druck auf ALT+ENTER werden die gefundenen M&#246;glichkeiten aufgelistet. Hier einige Beispiele:</p>
<ul>
<li>Member-Variablen, die nicht beschrieben werden, k&#246;nnen &#8220;readonly&#8221; gesetzt werden:</li>
</ul>
<p> <img border="0" width="400" src="http://www.navision-blog.de/blog/wp-content/uploads/2007/10/codeassistent1.gif" alt="Code-Assistent" height="88" /> </p>
<ul>
<li>Stringverkettungen k&#246;nnen in String.Fomat() umgewandelt werden:</li>
</ul>
<p><img border="0" width="393" src="http://www.navision-blog.de/blog/wp-content/uploads/2007/10/codeassistent2.gif" alt="Code-Assistent" height="72" /></p>
<ul>
<li>Falls festgestellt wird, dass eine benutzte Variable NULL sein k&#246;nnte, wird ein &#8220;If(variable != null)&#8221; angeboten:</li>
</ul>
<p><img border="0" width="400" src="http://www.navision-blog.de/blog/wp-content/uploads/2007/10/codeassistent3.gif" alt="Code-Assistent" height="53" /></p>
<ul>
<li>Wenn erkannt wird, dass der benutzte Namespace in einer Datei nicht der Struktur innerhalb der Projektmappe entspricht, kann der Namespace verlagert werden:</li>
</ul>
<p><img border="0" width="400" src="http://www.navision-blog.de/blog/wp-content/uploads/2007/10/codeassistent4.gif" alt="Code-Assistent" height="93" /></p>
<h5>Code-Navigation</h5>
<p>ReSharper bildet intern den gesamten <a href="http://de.wikipedia.org/wiki/Abstract_Syntax_Tree">abstrakten Syntaxbau</a> des Projektes ab und kann so genau erkennen, wann Refactoring eingesetzt werden kann. Das AddIn ist so u.a. in der Lage alle Aufrufe einer Funktion (ALT+F7) innerhalb der gesamten Projektmappe zu finden. Neben der Anzeige dieser Stellen ist auch eine einfache Navigation innerhalb der Aufrufhierarchie m&#246;glich.</p>
<p><img border="0" width="400" src="http://www.navision-blog.de/blog/wp-content/uploads/2007/10/usages.jpg" alt="usages" height="207" /></p>
<p>Besonders nett ist dieses Feature, wenn man innerhalb von Klassenhierarchien an abgeleitete Stellen navigieren m&#246;chte.</p>
<h5>Toter Code</h5>
<p>Da alle Funktions-Aufrufe der Projektmappe analysiert werden, ist ReSharper auch in der Lage &#8220;toten Code&#8221; zu erkennen, also Code der nirgends aufgerufen wird. Dieser Code wird grau markiert und kann getreu dem <a href="http://de.wikipedia.org/wiki/YAGNI">YAGNI-Prinzip</a> (<em>You Ain’t Gonna Need It) </em>per ALT+ENTER gel&#246;scht werden.</p>
<p><img border="0" width="382" src="http://www.navision-blog.de/blog/wp-content/uploads/2007/10/gray-code1.png" alt="Toter Code" height="74" /></p>
<p><img border="0" width="400" src="http://www.navision-blog.de/blog/wp-content/uploads/2007/10/gray-code2.png" alt="Tote Referenzen" height="109" /> </p>
<p>Das Feature funktioniert so gut, dass ich mittlerweile bei grauem Code automatisch ALT+ENTER dr&#252;cke und den Code l&#246;sche. Falls der sehr seltene Fall eintritt, dass man die Funktion irgendwann doch nochmal braucht, dann schreibt man sie eben neu &#8211; oder schaut in seine Versionsverwaltung.</p>
<h5>Codeformatierung</h5>
<p>Nachdem man ReSharper installiert hat, zeigt sich Visual Studio in einem etwas anderen Gesicht. Das Erste das auff&#228;llt, ist das verfeinerte Syntax-Highlighting. Aber auch beim Tippen von Code darf man sich an einige neue Features gew&#246;hnen &#8211; u.a. werden ge&#246;ffnete Klammern immer gleich wieder geschlossen und der Cursor zwischen die Klammern geschoben. Das gr&#246;&#223;te Feature in diesem Bereich ist jedoch die automatische Codeformatierung mit STRG+ALT+F. Je nach eingestellter Stufe werden hier toter Code entfernt, die Klassen-Member alphabetisch geordnet, Usings optimiert und die Blockeinr&#252;ckung nach voreingestellter Konvention korrigiert.</p>
<p>Leider hat das Feature in der getesteten Version 3.0.2 noch ein paar kleine Macken, so dass ReSharper beim Neuformatieren einiger l&#228;ngerer Dateien einen &#8220;Out of Memory Error&#8221; meldet. Laut <a href="http://www.jetbrains.net/jira/browse/RSRP">JetBrains Bugdatenbank</a> wurde das Problem bereits gel&#246;st &#8211; der Patch ist aber noch nicht downloadbar.</p>
<h5>Die Farbanzeige</h5>
<p>Neben dem Quellcodefenster zeigt ReSharper eine Farbanzeige mit einem &#220;berblick &#252;ber den Status des aktuellen Dokuments an. Die Balken stellen dabei Links zu den entsprechenden Stellen im Dokument dar und die Position innerhalb des Dokuments wird auf die Gr&#246;&#223;e der Scrollleiste skaliert.</p>
<table border="1" width="398" cellPadding="2" cellSpacing="2">
<tr>
<td width="118" vAlign="top">
<p style="text-align: center"><img border="0" width="37" src="http://www.navision-blog.de/blog/wp-content/uploads/2007/10/bar0.png" alt="Roter Rand - Compile-Error" height="281" /></p>
</td>
<td width="146" vAlign="top">
<p style="text-align: center"><img border="0" width="51" src="http://www.navision-blog.de/blog/wp-content/uploads/2007/10/bar1.png" alt="Gelber Rand - Warnungen / Toter Code / Refactoringanweisungen" height="281" /></p>
</td>
<td width="124" vAlign="top">
<p style="text-align: center"><img border="0" width="46" src="http://www.navision-blog.de/blog/wp-content/uploads/2007/10/bar2.png" alt="Gr&#252;ner Rand - Alles Ok / Empfehlungen" height="281" /></p>
</td>
</tr>
<tr>
<td width="116" vAlign="top">Roter Rand:Compile-Error</td>
<td width="151" vAlign="top">Gelber Rand:Warnungen / Toter Code / Refactoringanweisungen</td>
<td width="127" vAlign="top">Gr&#252;ner Rand:Alles Ok / Empfehlungen zum Refactoring</td>
</tr>
</table>
<p>Leider gibt es keine solche Anzeige f&#252;r alle Dateien innerhalb eines Projektes, so dass man alle Dateien manuell &#246;ffnen und ansehen muss.</p>
<h5>UnitTesting</h5>
<p>ReSharper bietet wie viele andere Tools eine erweiterte Unterst&#252;tzung f&#252;r UnitTests. Dabei werden aktuell <a href="http://www.nunit.org/">NUnit</a>, <a href="http://www.csunit.org/">csUnit</a> und &#252;ber ein zus&#228;tzliches <a href="http://der-albert.com/Tags/MbUnit/default.aspx">Plugin</a> auch <a href="http://www.mbunit.com/">mbUnit</a> angeboten. Leider gibt es scheinbar keine M&#246;glichkeit das UnitTest-Framework von Visual Studio Team System zu benutzen, so dass ich hier nicht weiter getestet habe.</p>
<h5>Refactoring</h5>
<p>Das Herz von ReSharper ist nat&#252;rlich das Refactoring. Es werden hier so viele Funktionen angeboten, so dass ich hier nur auf die Wichtigsten eingehen m&#246;chte. Eine <a href="http://www.jetbrains.com/resharper/features/code_refactoring.html" title="ReSharper - Refactoringfeatures">komplette &#220;bersicht</a> aller Refactoring-Features gibt es auf der ReSharper-Homepage.</p>
<p>Als wichtigsten ReSharper-Shortcut sollte man sich STRG+SHIFT+R f&#252;r &#8220;Refactor This&#8221; merken. Diese Funktionalit&#228;t bietet abh&#228;ngig vom Kontext eine Auswahl der gerade m&#246;glichen Refactoring-M&#246;glichkeiten.</p>
<p><img border="0" width="400" src="http://www.navision-blog.de/blog/wp-content/uploads/2007/10/refactor-this.png" alt="refactor_this" height="167" /></p>
<p>Neben den bereits aus Visual Studio bekannten Features wie &#8220;Feld einkapseln&#8221; und &#8220;Umbenennen&#8221; gibt es zum Beispiel M&#246;glichkeiten um Eigenschaften in Methoden zu konvertieren und umgekehrt, Methoden entlang von Vererbungshierarchien zu verschieben und Interfaces in Abstrakte Klassen zu konvertieren. Ein besonders nettes Feature ist, dass man ganze Quelltextbl&#246;cke als eigenst&#228;ndige Methoden auslagern kann. ReSharper erkennt dabei sogar automatisch welche Parameter der Methode &#252;bergeben werden m&#252;ssen:</p>
<p><img border="0" width="400" src="http://www.navision-blog.de/blog/wp-content/uploads/2007/10/extract-method.png" alt="Extract Method" height="240" /></p>
<h5>Fazit</h5>
<p>ReSharper ist ein ausgezeichnetes Tool um die Produktivit&#228;t in Visual Studio zu steigern. Es werden viele Refactoring-Features angeboten und durch die Farbanzeige am Bildschirmrand hat man immer einen &#220;berblick &#252;ber den aktuellen Stats der Datei (leider nicht &#252;ber das gesamte Projekt). Ein kleiner Wermutstropfen ist die fehlende UnitTest-Unterst&#252;tzung f&#252;r Visual Studio Team System und der mit 249 $ (C#-Edition f&#252;r Firmen) doch meiner Meinung nach recht saftige Preis.</p>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2007/10/06/resharper-30-fr-visual-studio-2005-im-test/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kurioses von der BASTA</title>
		<link>http://www.navision-blog.de/2007/09/19/kurioses-von-der-basta/</link>
		<comments>http://www.navision-blog.de/2007/09/19/kurioses-von-der-basta/#comments</comments>
		<pubDate>Wed, 19 Sep 2007 11:46:50 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[Lustiges]]></category>
		<category><![CDATA[Veranstaltungen]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[basta]]></category>
		<category><![CDATA[Ebay]]></category>
		<category><![CDATA[kurioses]]></category>
		<category><![CDATA[Mainz]]></category>
		<category><![CDATA[poker]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2007/09/19/kurioses-von-der-basta/</guid>
		<description><![CDATA[Pleiten Pech und Pannen  Bei meinem Vortrag &#252;ber die Programmierung in Dynamics Nav hat mir mein Navision bei der Demo leider einen Streich gespielt und ist vollkommen unmotiviert abgeraucht. Da probiert man das Ganze zu Hause unz&#228;hlige Male aus und genau in der Pr&#228;sentation passiert der Unfall. Aber heute habe ich erfahren, dass ich mich da noch [...]]]></description>
			<content:encoded><![CDATA[<h5>Pleiten Pech und Pannen </h5>
<p>Bei meinem Vortrag &#252;ber die <a target="_blank" href="http://www.basta.net/sessions_de.asp?track=12#session-sol1" title="BASTA Vortrag">Programmierung in Dynamics Nav</a> hat mir mein Navision bei der Demo leider einen Streich gespielt und ist vollkommen unmotiviert abgeraucht. Da probiert man das Ganze zu Hause unz&#228;hlige Male aus und genau in der Pr&#228;sentation passiert der Unfall.</p>
<p>Aber heute habe ich erfahren, dass ich mich da noch gl&#252;cklich sch&#228;tzen kann. <a href="http://blogs.compactframework.de/Torsten.Weber/2007/09/17/Post+Von+Der+BASTA+2007+Ndash+Folien+Und+Beispiele+Von+Meinem+Vortrag+QuotWeb+20+Bei+Mobilen+Geraumltenquot.aspx" title="Torsten Weber">Torsten Weber</a> ist heute in seiner Session &#252;ber &#8220;<a href="javascript:NF('http://entwickler.com/konferenzen/planer/show_details.php?konferenzid=50&amp;sessionid=5668')" title="Compact Framework">Mobile Anwendungen mit dem .NET Compact Framework 2.0</a>&#8221; das gesamte Vista abgest&#252;rzt. Das ist nat&#252;rlich &#228;u&#223;erst &#228;rgerlich. Daf&#252;r hatte Torsten jedoch <a href="http://blogs.compactframework.de/Torsten.Weber/ct.ashx?id=15712660-0c60-43c2-81c1-2716f3319315&amp;url=http%3a%2f%2fwww.torstenweber.de%2fgehezu%2fbasta2007-2.zip">die mit Abstand sch&#246;nsten Folien auf der BASTA</a>.</p>
<p>[Noch schlimmer ist es jedoch, wenn man, wie es <a href="http://blogs.msdn.com/dirkpr/" title="Dirk Primbs">Dirk Primbs</a> leider passiert ist, seine eigene KeyNote verpasst. Daf&#252;r ist jedoch <a href="http://blogs.msdn.com/dparys/archive/2007/09/19/demos-zur-basta-2007.aspx">Dariusz Parys</a> eingesprungen.]</p>
<h5>Abendprogramm</h5>
<p>Das Abendprogramm gestern bestand in einer Session, in der jeder BASTA-Teilnehmer die M&#246;glichkeit hatte 5 Minuten auf der B&#252;hne &#252;ber ein Thema seiner Wahl referieren. Dabei konnten die Zuh&#246;rer den Redner auch abw&#228;hlen und selbst das Mikrofon &#252;bernehmen.  Als Anreiz konnte man neben einem BASTA-Schl&#252;&#223;elb&#228;ndchen (Trostpreis) auch attraktive Sachpreise gewinnen. Das Highlight war jedoch als ein Oracle-Mitarbeiter (O-Ton &#8220;Orahk&#228;l&#8221;) 5 min. lang versuchte Leute zu finden, die im n&#228;chsten Jahr auch mal einen Oracle-Vortrag auf der BASTA h&#246;ren wollen. Als Preis loste er sich dann ein SQL-Server Buch. <img src='http://www.navision-blog.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  Nicht zu fassen.</p>
<p>Aber es kam noch besser: Im Anschluss an den Oracle-Vertreter wurde Masoud Kamali auf die B&#252;hne gebeten, seines Zeichens Gr&#252;nder und Gesch&#228;ftsf&#252;hrer des <a href="http://software-support.biz/">Software &amp; Support Verlages</a>. Er sollte in 5min. die Gr&#252;ndunggeschichte und die weitere Zukunft (O-Ton: &#8220;Wir schlagen Google!&#8221;) des Verlages zu erkl&#228;ren. Der Software &amp; Support Verlag ist ja auch Veranstalter der BASTA und der Hauptpreis des Abends (Kostenlose Teilnahme an der BASTA 2008) wurde nun genau von deren Chef gezogen &#8211; welch eine Ironie in 10 Minuten.</p>
<p>Das Ticket wird nun &#252;brigens bei Ebay versteigert und der Erl&#246;s geht an <a href="http://www.aerzte-ohne-grenzen.de/">&#196;rzte ohne Grenzen</a>.</p>
<p>Am zweiten Abend wurde dann &#252;brigens Poker gespielt &#8211; leider ohne pers&#246;nliche Eins&#228;tze, so dass eigentlich mit jeder Hand gespielt (und verloren) wurde.</p>
<p><img src="http://www.navision-blog.de/blog/wp-content/uploads/2007/09/poker.jpg" alt="Pokern auf der BASTA" class="bordered" /></p>
<h5>Speaker-Shirts</h5>
<p>Die Speaker laufen auf der BASTA alle mit so tollen schwarzen Polo-Shirts rum. Wie ich jedoch erfahren habe, sollte ich meins immer sch&#246;n anlassen. Das Shirt von <a href="http://www.sylviamarx.com/projects/devcoach/" title="Michael Willers - devchoach">Michael Willers </a> ist offenbar so begehrt, dass es gestern geklaut wurde. <img src='http://www.navision-blog.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Interessant ist in dem Zusammenhang auch der <a href="http://hiq-software.blogspot.com/2007/09/neulich-auf-der-basta.html">Blog-Eintrag</a> von Benjamin Gopp <img src='http://www.navision-blog.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Auf der R&#252;ckfahrt gab es dann noch folgendes Highlight:</p>
<p><img src="http://www.navision-blog.de/blog/wp-content/uploads/2007/09/bier.jpg" alt="Bielefeld" class="bordered" /></p>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2007/09/19/kurioses-von-der-basta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bericht zur Student Technology Conference 2007</title>
		<link>http://www.navision-blog.de/2007/05/28/bericht-zur-student-technology-conference-2007/</link>
		<comments>http://www.navision-blog.de/2007/05/28/bericht-zur-student-technology-conference-2007/#comments</comments>
		<pubDate>Mon, 28 May 2007 14:46:09 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Veranstaltungen]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[stc]]></category>
		<category><![CDATA[stc2007]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2007/05/28/bericht-zur-student-technology-conference-2007/</guid>
		<description><![CDATA[Vom 21. bis 22. Mai 2007 fand die STC 2007 im Landschaftspark Duisburg statt. Da ich bereits 2005 auf der STC in Mainz war, wollte ich auch unbedingt dieses Jahr hin. Und ich kann gleich vorweg nehmen: es hat viel Spa&#223; gemacht &#8211; nicht zuletzt da wir diesmal eine 9er Gruppe gebildet haben. Da die [...]]]></description>
			<content:encoded><![CDATA[<p>Vom 21. bis 22. Mai 2007 fand die <a title="Student Technology Conference 2007" href="http://www.studentconference.de/" target="_blank">STC 2007</a> im <a href="http://www.landschaftspark.de/">Landschaftspark Duisburg</a> statt. Da ich bereits 2005 auf der STC in Mainz war, wollte ich auch unbedingt dieses Jahr hin. Und ich kann gleich vorweg nehmen: es hat viel Spa&#223; gemacht &#8211; nicht zuletzt da wir diesmal eine 9er Gruppe gebildet haben.</p>
<p>Da die Keynote am Montag (21.5.2007) bereits um 10 gehalten werden sollte, hatten wir uns entschlossen einen Tag fr&#252;her anzureisen und in der <a href="http://www.jugendherberge.de/jh/rheinland/duisburg-meiderich/" target="_blank">Jugendherberge Duisburg Meiderich</a> zu &#252;bernachten. Wie sich heraus stellte war die Jugendherberge nur 300 Meter vom Tagungsgel&#228;nde entfernt, so dass wir uns nach dem langen Playstation-Turnier ohne Probleme bei der STC anmelden konnten.</p>
<p><span id="more-308"></span>
<p><img class="bordered" alt="Jugendherberge Duisburg Meiderich" src="http://www.navision-blog.de/images/stc2007/jh.jpg"></p>
<p>Im folgenden werde ich kurz die f&#252;r mich interessantesten Themen der STC vorstellen:</p>
<h5>Microsoft Popfly</h5>
<p><img class="bordered" style="margin-left: 10px" alt="Microsoft Popfly Keynote" src="http://www.navision-blog.de/images/stc2007/popfly.jpg" align="right">In der Keynote wurde <a href="http://www.popfly.ms/">Microsoft Popfly</a>&nbsp;(als fr&#252;he Alpha-Version)&nbsp;pr&#228;sentiert. Das Projekt ist &#228;hnlich zu Jahoo-Pipes und bietet dem Anwender eine graphische M&#246;glichkeit Webservices mit einander zu verbinden und Mashups zu bauen. Es wurde gezeigt wie man in wenigen&nbsp;Sekunden den Flickr-Dienst abrufen und mit MapPoint verbinden kann. Als Ergebnis sah man eine Weltkarte die an den entsprechenden Orten Flickr-Bilder angezeigt hat &#8211; ohne eine einzige Zeile Code und mit wirklich beeindruckender Grafik. Leider ist die Alpha wohl noch sehr fehlerhaft, so dass viele Samples in der Keynote nicht funktionierten, aber man konnte&nbsp;schon erahnen wie die SocialNetworks der Zukunft aussehen werden.</p>
<h5>SQL-Server und Business Analytics</h5>
<p><a href="http://www.beconstructed.de/">Ruprecht Dr&#246;ge</a> stellte in zwei sehr unterhaltsamen Vortr&#228;gen&nbsp;M&#246;glichkeiten zur SQL-Server-Optimierung sowie die Integration, Analysis und&nbsp;Reporting Services vor. Es war schon interessant zu sehen, wie <a href="http://www.microsoft.com/germany/dynamics/nav/analytics.mspx">Business Analytics</a> im Jahre 2007 aussieht und mit welchen graphischen Hilfsmitteln man heute schon programmieren kann. </p>
<p>Mehr Information dazu:</p>
<ul>
<li><a title="www.sqlserverfaq.de" href="http://www.sqlserverfaq.de">www.sqlserverfaq.de</a>
<li><a href="http://www.microsoft.com/germany/msdn/solve/knowhow/sql/default.mspx">SQL Server Reihe auf MSDN-Solve</a></li>
</ul>
<h5>Rootkits</h5>
<p>Michael Willers&nbsp;Rootkits-Vortrag auf der <a href="http://www.navision-blog.de/2006/08/29/nachlese-zur-ice2006/">ICE 2006 in Lingen</a> hat mich stark beeindruckt, so dass ich h&#246;ren wollte wie sich die Szene im letzten halben Jahr entwickelt hat. Auch diesmal gab es ein gleichzeitig beeindruckend und erschreckendes Live-Hacking. Mit wenigen Zeilen Code wurde demonstriert wie man in den Kernel-Mode eines Betriebssystems kommt. Danach kann man alles tun. Live wurde z.B. gezeigt, dass es m&#246;glich ist Prozesse zu verstecken, Passw&#246;rter bei Windows-Login zu fischen, das EventLog zu f&#228;lschen und vieles mehr. </p>
<p>Mehr Informationen dazu:</p>
<ul>
<li><a title="http://www.rootkits.org/" href="http://www.rootkits.org/">http://www.rootkits.org/</a></li>
</ul>
<h5>Vorgehensmodelle</h5>
<p>Das Highlight auf der STC war f&#252;r mich ein Vortrag von Christian Bertmann (Accenture) &#252;ber verschiedene Vorgehensmodelle bzw. Methodiken&nbsp;in der Softwareentwicklung. Es wurde dabei sehr stark auf strukturelle Probleme klassischer Entwicklung und klassischem Projektmanagement hingewiesen und einige neuartige L&#246;sungsans&#228;tze pr&#228;sentiert. Insgesamt muss ich sagen, dass mir dieser Vortrag sehr stark die Augen ge&#246;ffnet hat und ich mich nun seit letzter Woche intensiv mit Extreme Programming und agilen Methoden besch&#228;ftige.</p>
<h5>XNA</h5>
<p>In einem der vielen &#8220;Game Development&#8221;-Vortr&#228;gen zeigt <a href="http://blogs.msdn.com/dirkpr/archive/2006/08/24/716986.aspx">Dirk Primbs einen kurzen Einblick in XNA</a>&nbsp;(„<b>X</b>NA’s <b>N</b>ot <b>A</b>cronymed“ <img src='http://www.navision-blog.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ), dem neuen Programmierframework f&#252;r die XBOX. Wen man XNA mit klassicher DirectX-Programmierung vergleicht kann man sehen, dass man mit deutlich&nbsp;weniger Code auskommen kann.</p>
<p>Weitere Informationen:</p>
<ul>
<li><a href="http://creators.xna.com/">XNA Creators Club Online</a>
<li><a href="http://msdn.microsoft.com/xna/">Microsoft XNA official homepage</a> </i>
<li><a href="http://entwickler.de/zonen/portale/psecom,id,101,online,961,p,0.html">&#220;bersichtsartikel zu XNA: &#8220;Managed Code f&#252;r die XBox&#8221; auf <i>entwickler.de</i></a> </li>
</ul>
<h5>Abendunterhaltung</h5>
<p>Gegen Abend wechselte die Konferenz ihr Bild &#252;bergangslos zur Grillparty mit allerlei Abendprogramm. So war es m&#246;glich&nbsp;an einer Nachtf&#252;hrung durch den unglaublich bunt beleuchteten&nbsp;Landschaftspark oder an&nbsp;einer GPS-Rallye teilzunehmen. </p>
<p><a href="http://www.navision-blog.de/images/stc2007/landschaftspark1.jpg"><img class="bordered" alt="Landschaftspark in der Nacht" src="http://www.navision-blog.de/images/stc2007/landschaftspark1_small.jpg"></a></p>
<p><a href="http://www.navision-blog.de/images/stc2007/landschaftspark2.jpg"><img class="bordered" alt="Landschaftspark in der Nacht" src="http://www.navision-blog.de/images/stc2007/landschaftspark2_small.jpg"></a></p>
<p>Wer davon noch nicht komplett&nbsp;ausgepowert war, konnte sich am Kicker-Tisch, beim <a href="http://www.microsoft.com/germany/msdn/coding4fun/antme/default.mspx">AntMe</a>-Programmierwettbewerb&nbsp;oder beim XBOX-Contest austoben. <br />Zur &#220;bernachtung ging es anschlie&#223;end in&nbsp;die <a href="http://www.duisburg.de/tourismus_kultur_sport/sport/sportschule-wedau.php">Sportschule Wedau</a>.</p>
<p><img class="bordered" alt="Kickern am Abend" src="http://www.navision-blog.de/images/stc2007/kicker.jpg"></p>
<p>Insgesamt war die STC mal wieder ein voller Erfolg und n&#228;chstes Jahr bin ich bestimmt wieder dort.</p>
<p>Nachtrag: In der Fotogalerie gibt es <a href="http://gallery.navision-blog.de/displayimage.php?album=9&#038;pos=0">weitere Bilder</a>.</p>
<p> Nachtrag 2: Auf der STC wurde die <a href="http://zegermans-mongolrally.blogspot.com/2007/05/ze-stc-aftershow-picture-party.html">Mongol-Rallye vorgestellt</a>. Einfach mal draufschauen&#8230;</p>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2007/05/28/bericht-zur-student-technology-conference-2007/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Microsoft macht Partner fit f&#252;r Web 2.0</title>
		<link>http://www.navision-blog.de/2007/05/24/microsoft-macht-partner-fit-fuer-web-20/</link>
		<comments>http://www.navision-blog.de/2007/05/24/microsoft-macht-partner-fit-fuer-web-20/#comments</comments>
		<pubDate>Thu, 24 May 2007 21:02:51 +0000</pubDate>
		<dc:creator>Jens Hesse</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Diverses]]></category>
		<category><![CDATA[Firmen]]></category>
		<category><![CDATA[Veranstaltungen]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2007/05/24/microsoft-macht-partner-fit-fuer-web-20/</guid>
		<description><![CDATA[Durch die sogenannte &#8220;LiftOff Initiative&#8221; sollen Microsoft Partner in einem Trainingsprogramm an die Technologien rund ums Web 2.0 herangef&#252;hrt werden. Schwerpunkt der Trainingsma&#223;nahme ist die Integration der Microsoft Webtechnologien (WPF/E, ASP.NET, AJAX), Web Services und Map Point, sowie Workflow Management. Vor dem zweit&#228;gigen Workshop erhalten die Teilnehmer ein Softwarepaket bestehend aus drei Visual Studio Professional [...]]]></description>
			<content:encoded><![CDATA[<p>Durch die sogenannte <a href="http://www.microsoft.com/germany/msdn/solve/liftoff/default.mspx">&#8220;LiftOff Initiative&#8221;</a> sollen Microsoft Partner in einem Trainingsprogramm an die Technologien rund ums Web 2.0 herangef&#252;hrt werden. Schwerpunkt der Trainingsma&#223;nahme ist die Integration der Microsoft Webtechnologien (WPF/E, ASP.NET, AJAX), Web Services und Map Point, sowie Workflow Management. </p>
<p><span id="more-307"></span> Vor dem zweit&#228;gigen Workshop erhalten die Teilnehmer ein Softwarepaket bestehend aus drei Visual Studio Professional und ein Windows Server 2003 Standard inklusive 5 CALs. Ziel der Aktion ist es innerhalb von sechs Monaten eine Webpr&#228;senz im <a href="http://www.microsoft.com/germany/partner/default.mspx">Microsoft Partner-Portal</a> zu ver&#246;ffentlichen. Die Teilnahme am Workshop kostet 149,-€ und ist in folgenden St&#228;dten m&#246;glich:</p>
<ul>
<li>Frankfurt 30./31.05.2007</li>
<li>K&#246;ln 04./05.06.2007</li>
<li>Berlin 14./15.06.2007</li>
<li>B&#246;blingen 18./19.06.2007</li>
<li>M&#252;nchen 20./21.06.2007</li>
</ul>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2007/05/24/microsoft-macht-partner-fit-fuer-web-20/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress Anti-Spam-Plugin &quot;Akismet&quot; f&#252;r .NET</title>
		<link>http://www.navision-blog.de/2007/05/18/wordpress-anti-spam-plugin-akismet-fuer-net/</link>
		<comments>http://www.navision-blog.de/2007/05/18/wordpress-anti-spam-plugin-akismet-fuer-net/#comments</comments>
		<pubDate>Fri, 18 May 2007 17:54:15 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2007/05/18/wordpress-anti-spam-plugin-akismet-fr-net/</guid>
		<description><![CDATA[Aufgrund eines&#160;Blogeintrags von Damir Tomicic&#160;und den guten Erfahrungen die ich mit Akismet gemacht habe,&#160;m&#246;chte ich an dieser Stelle mal auf ein .NET Akismet-API ausmerksam machen. Arne Brachhold hat den Zugriff auf den&#160;Webservice von Akismet als .NET-Klassenbibliothek gekapselt und bietet diese .dll frei&#160;zum Download an. Man kann diese dann zum Beispiel in ASP.NET Foren oder Blogs [...]]]></description>
			<content:encoded><![CDATA[<p>Aufgrund eines&nbsp;<a title="[Strategy] Days of No Spam" href="http://tomicic.de/StrategyDaysOfNoSpam.aspx" target="_blank">Blogeintrags von Damir Tomicic</a>&nbsp;und den guten Erfahrungen die ich mit <a href="http://akismet.com/" target="_blank">Akismet</a> gemacht habe,&nbsp;m&#246;chte ich an dieser Stelle mal auf ein .NET Akismet-API ausmerksam machen. Arne Brachhold hat den Zugriff auf den&nbsp;Webservice von <a title="Akismet C# API for the .Net Framework 1.1 and 2.0" href="http://www.arnebrachhold.de/2006/04/18/akismet-anti-spam-library-for-the-dotnet-framework" target="_blank">Akismet als .NET-Klassenbibliothek gekapselt</a> und bietet diese .dll frei&nbsp;zum <a href="http://www.arnebrachhold.de/2006/04/18/akismet-anti-spam-library-for-the-dotnet-framework#P30DL">Download</a> an. Man kann diese dann zum Beispiel in ASP.NET Foren oder Blogs einbauen.</p>
<p>Laut der Akismet-Homepage sind &#252;brigens 95% aller Kommentareintr&#228;ge Spam &#8211; auf meinem Blog wurden bisher 16.138 Kommentare als Spam identifiziert.</p>
<p>Nachtrag: Es gibt das Projekt auch auf <a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=AkismetApi">CodePlex</a>.</p>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2007/05/18/wordpress-anti-spam-plugin-akismet-fuer-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GhostDoc 2.0 released</title>
		<link>http://www.navision-blog.de/2007/05/02/ghostdoc-20-released/</link>
		<comments>http://www.navision-blog.de/2007/05/02/ghostdoc-20-released/#comments</comments>
		<pubDate>Wed, 02 May 2007 06:24:12 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2007/05/02/ghostdoc-20-released/</guid>
		<description><![CDATA[Das bekannte Dokumentations-Plugin f&#252;r Visual Studio geht in die zweite Runde. Hier die neuen GhostDoc-Features im &#220;berblick: L&#228;uft&#160;auf Windows Vista L&#228;uft unter Visual Studio&#160;Orcas (Beta 1) Bessere&#160;Unterst&#252;tzung der&#160;Generics und anderen neuen Sprachelementen Weitere Informationen gibt es im GhostDoc-Blog. &#169;2010 Rash thoughts about .NET, C#, F# and Dynamics NAV.. All Rights Reserved..]]></description>
			<content:encoded><![CDATA[</p>
<p>Das bekannte Dokumentations-Plugin f&#252;r Visual Studio geht in die zweite Runde. Hier die neuen <a href="http://www.roland-weigelt.de/ghostdoc/">GhostDoc</a>-Features im &#220;berblick:</p>
<li>L&#228;uft&nbsp;auf Windows Vista
<li>L&#228;uft unter Visual Studio&nbsp;Orcas (Beta 1)
<li>Bessere&nbsp;Unterst&#252;tzung der&nbsp;Generics und anderen neuen Sprachelementen</li>
<p>Weitere Informationen gibt es im <a href="http://weblogs.asp.net/rweigelt/archive/2007/05/01/2473036.aspx">GhostDoc-Blog</a>.</p>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2007/05/02/ghostdoc-20-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ICE2007 in Lingen &#8211; Intelligent Communities for Europe</title>
		<link>http://www.navision-blog.de/2007/04/24/ice-2007-in-lingen-intelligent-communities-for-europe/</link>
		<comments>http://www.navision-blog.de/2007/04/24/ice-2007-in-lingen-intelligent-communities-for-europe/#comments</comments>
		<pubDate>Tue, 24 Apr 2007 06:41:11 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Veranstaltungen]]></category>
		<category><![CDATA[hesse]]></category>
		<category><![CDATA[ice]]></category>
		<category><![CDATA[lingen]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2007/04/24/ice-2007-in-lingen-intelligent-communities-for-europe/</guid>
		<description><![CDATA[Bereits im letzten Jahr war ich mit meinem Kollegen Jens Hesse auf der ICE in Lingen. Dieses Jahr findet die kostenfreie Community-Tagung&#160;am 15. September statt.&#160;Die Anmeldung zur \\ice:2007 ist ab dem 01.05.07 m&#246;glich und die Teilnehmerzahl ist auf 250 begrenzt. Weitere Informationen: http://www.ice-lingen.de/ Mein Bericht zur ICE2006 View this on the map. Nachtrag: Jetzt ist [...]]]></description>
			<content:encoded><![CDATA[</p>
<p>Bereits im letzten Jahr war ich mit meinem Kollegen Jens Hesse auf der ICE in Lingen. Dieses Jahr findet die kostenfreie Community-Tagung&nbsp;am 15. September statt.&nbsp;Die Anmeldung zur <b>\\ice:2007</b> ist ab dem 01.05.07 m&#246;glich und die Teilnehmerzahl ist auf 250 begrenzt.</p>
<p><img alt="ICE 2006 in Lingen" src="http://www.forksoft.de/blogImages/NachlesezurICE2006_D11E/speaker_thumb.png"></p>
<p>Weitere Informationen:</p>
<ul>
<li><a href="http://www.ice-lingen.de/">http://www.ice-lingen.de/</a>
<li><a title="Nachlese zur ICE2006" href="http://www.navision-blog.de/2006/08/29/nachlese-zur-ice2006/">Mein Bericht zur ICE2006</a></li>
</ul>
<p><a href="http://www.ice-lingen.de" target="_blank"><img src="http://www.navision-blog.de/images/ice2007.gif" width="468" height="60" border="0" alt="ice2007" title="ice2007" /></a></p>
<p><a href="http://www.navision-blog.de/2007/04/24/ice-2007-in-lingen-intelligent-communities-for-europe/">View this on the map.</a></p>
<p>Nachtrag: Jetzt ist auch ein <a href="http://blog.ice-lingen.de/up/ice2007trailer_1st.zip">Trailer zur ICE 2007</a> erschienen.</p>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2007/04/24/ice-2007-in-lingen-intelligent-communities-for-europe/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>.NET Wintercamp 2007 &#8211; Abschlussbericht</title>
		<link>http://www.navision-blog.de/2007/03/28/net-wintercamp-2007-abschlussbericht/</link>
		<comments>http://www.navision-blog.de/2007/03/28/net-wintercamp-2007-abschlussbericht/#comments</comments>
		<pubDate>Wed, 28 Mar 2007 09:31:09 +0000</pubDate>
		<dc:creator>Steffen Forkmann</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Veranstaltungen]]></category>
		<category><![CDATA[hoyer]]></category>
		<category><![CDATA[leipzig]]></category>
		<category><![CDATA[user_group]]></category>

		<guid isPermaLink="false">http://www.navision-blog.de/2007/03/28/net-wintercamp-2007-abschlussbericht/</guid>
		<description><![CDATA[Marcel Hoyer von der .NET User Group Leipzig hat einen sch&#246;nen Abschlussbericht zum .NET Wintercamp in Leipzig geschrieben. Ich muss sagen mir hat mein ASP.NET-Vortrag&#160;auch viel Spa&#223; gemacht und ich hoffe ich bekomme die Gelegenheit beim .NET-Sommercamp 2007 wieder als Sprecher fungieren zu d&#252;rfen. &#169;2010 Rash thoughts about .NET, C#, F# and Dynamics NAV.. All [...]]]></description>
			<content:encoded><![CDATA[<p>Marcel Hoyer von der .NET User Group Leipzig hat einen sch&#246;nen <a href="http://blog.pixelplastic.de/PermaLink,guid,3ec50388-62b6-4605-b5a7-bf84e3d2386e.aspx">Abschlussbericht zum .NET Wintercamp in Leipzig</a> geschrieben. Ich muss sagen mir hat mein <a href="http://www.navision-blog.de/blog/download-manager.php?id=3">ASP.NET-Vortrag</a>&nbsp;auch viel Spa&#223; gemacht und ich hoffe ich bekomme die Gelegenheit beim .NET-Sommercamp 2007 wieder als Sprecher fungieren zu d&#252;rfen. <img src='http://www.navision-blog.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p align=center><img src="http://www.navision-blog.de/images/wintercamp_steffen.jpg" alt="Vortrag auf dem .NET Wintercamp 2007" class=bordered></p>
<p>&copy;2010 <a href="http://www.navision-blog.de">Rash thoughts about .NET, C#, F# and Dynamics NAV.</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.navision-blog.de/2007/03/28/net-wintercamp-2007-abschlussbericht/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
