<?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:a10="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>DotNetGerman Bloggers</title><description>Alle Blogs von DotNetGerman.com</description><copyright>Copyright 2004-2007 DotNetGerman.com</copyright><generator>DotNetGerman.com</generator><a10:link href="http://blogs.dotnetgerman.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/DotnetgermanBloggers" /><feedburner:info uri="dotnetgermanbloggers" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><item><guid isPermaLink="false">http://marco.wordpress.glueckkanja.net/?p=537</guid><link>http://marcoscheel.de/sharepoint/sign-in-as-a-different-user-benutzer-wechseln-fur-iis-basierte-sites</link><a10:author><a10:name>Marco Scheel</a10:name></a10:author><title>Sign In As A Different User – Benutzer wechseln für IIS basierte Sites</title><description>Meine Kollege Karten Kleinschmidt und ich haben beim Kunden ein interessante kleine Aufgabe bekommen, in der es darum ging, den verwendeten Benutzer (Domainen Benutzer) an einer bestehenden Webseite zu wechseln. In einem Unternehmensnetzwerk mit integrierter Anmeldung an der Domain muss der User im Normalfall keine weiteren Anmeldeinformationen eingeben, um auf Websites zuzugreifen. Anwendungen wie SharePoint, CRM und [...]</description><pubDate>Sun, 27 May 2012 20:23:06 Z</pubDate><a10:rights type="text">Marco Scheel</a10:rights><a10:content type="html">&lt;p&gt;Meine Kollege &lt;a title="MCM Lync Hero" href="http://blog.karstenkleinschmidt.de/" target="_blank"&gt;Karten Kleinschmidt&lt;/a&gt; und ich haben beim Kunden ein interessante kleine Aufgabe bekommen, in der es darum ging, den verwendeten Benutzer (Domainen Benutzer) an einer bestehenden Webseite zu wechseln.&lt;/p&gt;
&lt;p&gt;In einem Unternehmensnetzwerk mit integrierter Anmeldung an der Domain muss der User im Normalfall keine weiteren Anmeldeinformationen eingeben, um auf Websites zuzugreifen. Anwendungen wie &lt;a title="Love this stuff" href="http://sharepoint.microsoft.com/en-us/" target="_blank"&gt;SharePoint&lt;/a&gt;, CRM und viele Eigenentwicklungen nutzen diese Funktion natürlich für Authentifizierung und Autorisierung aus. Es kommt aber immer mal wieder vor, dass der aktuelle Benutzer nicht der &amp;#8220;richtige&amp;#8221; Benutzer für die aktuelle Aufgabe ist. In vielen Unternehmen haben Benutzer neben dem eigenen Account einen administrativen Benutzer (gk\ms und gk\adm_ms). Ist man am PC mit dem normalen Account angemeldet und möchte nun den administrativen Account verwenden, dann muss man den ganzen Brower mit anderen Credentials starten, sich am PC ummelden oder per Terminal Services auf einem anderen Rechner anmelden. Anwendungen wie &lt;a title="I rule the world" href="http://sharepoint.microsoft.com/en-us/" target="_blank"&gt;SharePoint&lt;/a&gt; bieten solche Funktionen Out-Of-The-Box bereits an. Für Anwendungen, welche das nicht können, ist es für den normalen Mitarbeiter im Unternehmen kein leichtes Unterfangen, diese Aufgabe zu lösen.&lt;br /&gt;
&lt;a href="http://marcoscheel.de/files/2012/05/SharePoint.png"&gt;&lt;img class="alignnone size-full wp-image-539" title="SharePoint" src="http://marcoscheel.de/files/2012/05/SharePoint.png" alt="" width="388" height="265" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title="Microsoft Certified Master - Lync" href="http://www.bing.com/search?q=karsten+kleinschmidt&amp;amp;src=IE-TopResult&amp;amp;FORM=IE10TR" target="_blank"&gt;Karsten&lt;/a&gt; (und damit irgendwann auch ich) hat nun die Aufgabe, für eine Website im Lync Umfeld so eine Funktion anzubieten. Eine kurze Recherche (&lt;a title="Googled with Bing" href="http://www.bing.com/search?q=iis+sign+in+as+a+different+user&amp;amp;src=IE-TopResult&amp;amp;FORM=IE10TR" target="_blank"&gt;Bing&lt;/a&gt; | &lt;a title="Not easy to get a link to my search that seemed &amp;quot;secure&amp;quot;" href="https://www.google.com/#hl=en&amp;amp;output=search&amp;amp;sclient=psy-ab&amp;amp;q=iis+sign+in+as+a+different+user&amp;amp;oq=iis+sign+in+as+a+different+user" target="_blank"&gt;Google&lt;/a&gt;) hat gezeigt, dass &lt;a title="Roel van Lisdonk" href="http://www.roelvanlisdonk.nl" target="_blank"&gt;Roel van Lisdonk&lt;/a&gt; in seinem Blogpost &lt;a title="Link to ASP .NET – C# – How to “Sign in as Different User” like in Microsoft SharePoint with Windows Authentication" href="http://www.roelvanlisdonk.nl/?p=825" rel="bookmark"&gt;ASP .NET – C# – How to “Sign in as Different User” like in Microsoft SharePoint with Windows Authentication&lt;/a&gt; genau das beschreibt. Seine Lösung ist allerdings Page-basierend und ich wollte was allgemeineres. Ich habe dann einfach seine Code als Basis genommen, ein &lt;a title="MSDN Doku" href="http://msdn.microsoft.com/en-us/library/zec9k340.aspx" target="_blank"&gt;HTTPModule&lt;/a&gt; erstellt und das Ergebnis dann auf Codeplex veröffentlicht. Da nicht so viel Eigenleistung drin steckt, war es schnell klar, dass es nur &amp;#8220;fair&amp;#8221; ist es weiter zu teilen. Hier ist also das erste &lt;a title="Weltbester Arbeitgeber im Rhein-Main Gebiet" href="http://glueckkanja.com" target="_blank"&gt;Glück &amp;amp; Kanja&lt;/a&gt; &lt;a title="Kann kein TFS und deswegen mußte ich GIT machen. Booooh" href="http://www.codeplex.com" target="_blank"&gt;Codeplex&lt;/a&gt; Projekt.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://signinas.codeplex.com"&gt;http://signinas.codeplex.com&lt;/a&gt; &amp;#8211; Glück &amp;amp; Kanja Consulting AG &amp;#8211; Sign In As A Different User&lt;/p&gt;
&lt;p&gt;&lt;a href="http://marcoscheel.de/files/2012/05/Codeplex.png"&gt;&lt;img class="alignnone size-full wp-image-543" title="Codeplex" src="http://marcoscheel.de/files/2012/05/Codeplex.png" alt="" width="688" height="363" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Das Projekt steckt sicher noch in den Kinderschuhen und kann deutlich erweitert werden, aber dafür gibt es ja Codeplex &lt;img src='http://marcoscheel.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Ich hatte übrigens viel &lt;a title="Es ist auch nie online gekommen..." href="https://twitter.com/marcoscheel/status/203496861250764803" target="_blank"&gt;&amp;#8220;Spaß&amp;#8221;&lt;/a&gt; mit Codeplex, aber das ist ne andere Geschichte und die Schuld von TFS &lt;img src='http://marcoscheel.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GHZx46QkNC49ze69Ohu3Rs6p_KE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GHZx46QkNC49ze69Ohu3Rs6p_KE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GHZx46QkNC49ze69Ohu3Rs6p_KE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GHZx46QkNC49ze69Ohu3Rs6p_KE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.marcoscheel.de/~ff/marcoscheel?a=UQyZxiMrDPA:MBop-lPpylg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marcoscheel?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.marcoscheel.de/~ff/marcoscheel?a=UQyZxiMrDPA:MBop-lPpylg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marcoscheel?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.marcoscheel.de/~ff/marcoscheel?a=UQyZxiMrDPA:MBop-lPpylg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marcoscheel?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.marcoscheel.de/~ff/marcoscheel?a=UQyZxiMrDPA:MBop-lPpylg:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marcoscheel?i=UQyZxiMrDPA:MBop-lPpylg:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/marcoscheel/~4/UQyZxiMrDPA" height="1" width="1"/&gt;</a10:content><a10:contributor><a10:name>Marco Scheel</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marco Scheel</dc:creator></item><item><guid isPermaLink="false">http://www.softwarearchitekt.at/post.aspx?id=20b63049-e1cb-48a0-970b-19c740a489c4</guid><link>http://www.softwarearchitekt.at/post/2012/05/27/Knockoutjs-mit-Dojo-nutzen.aspx</link><a10:author><a10:name>Manfred Steyer</a10:name></a10:author><title>Knockout.js zusammen mit Dojo unter Verwendung eines Custom-Bindings nutzen</title><description>&lt;div&gt;Knockout.js bringt Datenbindung sowie Unterst&amp;uuml;tzung f&amp;uuml;r das Muster Model-View-ViewModel und somit einen popul&amp;auml;ren Ansatz f&amp;uuml;r das Trennen von Logik und Pr&amp;auml;sentation in JavaScript-basierten Anwendungen. Dojo bringt hingegen mit dem Sub-Projekt Dijit optisch ansprechende Steuerelemente f&amp;uuml;r Web-Anwendungen. In Kombination funktionieren diese beiden Frameworks leider nicht miteinander &amp;ndash; zumindest nicht von Haus aus.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Aus diesem Grund habe ich nun ein generisches knockout-Binding implementiert, welches den Br&amp;uuml;ckenschlag zwischen diesen beiden Technologien erm&amp;ouml;glicht. Getestet wurde es mit den Steuerelementen Button, ToggleButton, CheckBox, RadioButton, NumberTextBox, SliderButton sowie ComboBox und Select.&lt;/div&gt;
&lt;div&gt;Das nachfolgende Listing zeigt die Implementierung dieses Bindings.&lt;/div&gt;
&lt;div class="code"&gt;
&lt;pre class="brush: js;"&gt;@{
    ViewBag.Title = "Index";
    this.Layout = "";
}&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;

&amp;lt;head&amp;gt;
   &amp;lt;link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dijit/themes/claro/claro.css"&amp;gt;    
   &amp;lt;script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.js" data-dojo-config="isDebug: true, async: true, parseOnLoad: false"&amp;gt;&amp;lt;/script&amp;gt;
   

    &amp;lt;script src="/Scripts/jquery-1.6.2.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="/Scripts/knockout-1.3.0beta.debug.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;
    
    &amp;lt;script language="javascript"&amp;gt;

        koHelper = {};
        koHelper.getValue = function(prop, defaultValue) {
                if (typeof prop == "undefined") {
                    return defaultValue;
                }
                else if (ko.isObservable(prop)) {
                    return prop();
                }
                else {
                    return prop;
                }
               
            }

        koHelper.subscribeIfObservable = function (propertyName, propertyValue, widget) {
            if (propertyValue &amp;amp;&amp;amp; ko.isObservable(propertyValue)) {
                propertyValue.subscribe(function (newValue) {
                        widget.set(propertyName, newValue);
                });
            }
        }

        koHelper.getEventHandler = function (handler) {
            return (handler) ? handler : function () { };
        }


        ko.bindingHandlers.dijit = {
            init: function (element, valueAccessor, allBindingsAccessor, viewModel) {

                var value = valueAccessor();
                var dojoType = $(element).data("dojo-type");

                dojoType = dojoType.replace(/\./g, "/");

                require([dojoType], function (Widget) {

                    var config = {};

                    for (var property in value) {
                        config[property] = koHelper.getValue(value[property]);
                    }

                    var widget = new Widget(config, element);
                    widget.startup();

                    widget.set('onChange', function (newValue) {
                        var prop;
                            
                        prop = value.value;
                        if (ko.isObservable(prop)) prop(newValue);

                        prop = value.checked;
                        if (ko.isObservable(prop)) prop(newValue);
                    });

                    for (var property in value) {
                        koHelper.subscribeIfObservable(property, value[property], widget);
                    }

                });

            },
            update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
            }
        };

    &amp;lt;/script&amp;gt;

[&amp;hellip;]&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;Damit dieses Binding korrekt funktioniert, muss man zun&amp;auml;chst das automatische Parsen der Seite durch Dojo unterbinden &amp;ndash; das &amp;uuml;bernimmt das Binding. Bewerkstelligt wird dies durch Angabe von parseOnLoad: false im Attribut data-dojo-config jenes Script-Tags, mit dem Dojo eingebunden wird (siehe oben).&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;Die Anwendung dieses Bindings ist im n&amp;auml;chsten Listing demonstriert. Wie gewohnt sind die Dojo-Typen im Rahmen der einzelnen Tags mit dem Attribut data-dojo-type anzugeben. Die Datenbindung mittels Knockout wird &amp;ndash; ebenfalls, wie gewohnt &amp;ndash; mit dem Attribut data-bind vollzogen. Im Rahmen dessen kommt jedoch die Eigenschaft dijit, welche &amp;uuml;ber das Custom-Binding bereitgestellt wird, zum Einsatz. Diese Eigenschaft hat auf ein Objekt zu verweisen, welches die einzelnen Eigenschaften des Dijit-Steuerelements auf Observables oder Funktionen des View-Models bzw. auf statische Werte abbildet.&lt;/div&gt;
&lt;div class="code"&gt;
&lt;pre class="brush: js;"&gt;[&amp;hellip;]
    &amp;lt;script language="javascript"&amp;gt;

        function MainVM() {

            var self = this;

            this.buttonName = ko.observable("Klick mich!");
            this.iconClass = ko.observable("dijitIconNewTask");
            this.checked = ko.observable(true);
            this.state = ko.observable("A");
            this.state2 = ko.observable("");
            this.age = ko.observable();

            this.topping1checked = ko.observable(true);
            this.topping2checked = ko.observable(false);
            this.topping3checked = ko.observable(false);

            this.percent = ko.observable(50);


            this.options = ko.observableArray([{ key: "", value: "Bitte w&amp;auml;hlen Sie ..." }, { key: "D", value: "Deutschland" }, { key: "A", value: "&amp;Ouml;sterreich" }, { key: "CH", value: "Schweiz"}]);

            this.zutat = ko.observable();

            this.clickFunction = function () {
                if (window.console) console.log("Aua!");
                self.buttonName("Aua!");
                self.iconClass("dijitIconClear");
            }

        }

        $(function () {

            var vm = new MainVM();
            ko.applyBindings(vm);

        });
    &amp;lt;/script&amp;gt;
    

&amp;lt;/head&amp;gt;

&amp;lt;body class="claro"&amp;gt;
    &amp;lt;h1&amp;gt;Index&amp;lt;/h1&amp;gt;


    
    &amp;lt;button data-dojo-type="dijit.form.ToggleButton"  data-bind="dijit: { checked:checked, iconClass:'dijitCheckBoxIcon' }"&amp;gt;
        Toggle
    &amp;lt;/button&amp;gt;

    &amp;lt;div&amp;gt;
        Checked: &amp;lt;span data-bind="text: checked"&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;/div&amp;gt;

    
    &amp;lt;button data-dojo-type="dijit/form/Button" data-bind="dijit: { label: buttonName, onClick: clickFunction, iconClass: iconClass, showLabel:true }"&amp;gt;Click Me!&amp;lt;/button&amp;gt;
 

    


   &amp;lt;input type="checkbox" id="dbox1" checked data-dojo-type="dijit.form.CheckBox" data-bind="dijit: { checked: checked }"&amp;gt;&amp;lt;label for="dbox1"&amp;gt;Want&amp;lt;/label&amp;gt;
       


    &amp;lt;div&amp;gt;
        &amp;lt;select id="stateSelect" data-dojo-type="dijit.form.Select" data-bind="foreach:options, dijit: { value: state }" name="stateSelect"&amp;gt;
        
            &amp;lt;option data-bind="attr: { value: key  }, text: value"&amp;gt;&amp;lt;/option&amp;gt;

        &amp;lt;/select&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;
        State: &amp;lt;span data-bind="text: state"&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;/div&amp;gt;


    &amp;lt;div&amp;gt;
        &amp;lt;select data-dojo-type="dijit.form.ComboBox" data-bind="foreach:options, dijit: { value: state2 }" 
            name="stateSelect"&amp;gt;
        
            &amp;lt;option data-bind="attr: { value: key  }, text: value"&amp;gt;&amp;lt;/option&amp;gt;

        &amp;lt;/select&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;
        State: &amp;lt;span data-bind="text: state2"&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;/div&amp;gt;


    &amp;lt;div&amp;gt;
        &amp;lt;label for="number"&amp;gt;Age:&amp;lt;/label&amp;gt;
        &amp;lt;input id="number" type="text" value="54" required="true" data-dojo-type="dijit.form.NumberTextBox" data-bind="dijit: { value: age }"&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;
        Age: &amp;lt;span data-bind="text:age"&amp;gt;&amp;lt;/span&amp;gt;
    &amp;lt;/div&amp;gt;


    &amp;lt;ul&amp;gt;
    &amp;lt;li&amp;gt;
        &amp;lt;input id="topping1" type="radio" name="topping" value="anchovies" checked
            data-dojo-type="dijit.form.RadioButton" data-bind="dijit: { checked: topping1checked}"&amp;gt;
        &amp;lt;label for="topping1"&amp;gt;Anchovies&amp;lt;/label&amp;gt;
    &amp;lt;/li&amp;gt;
    &amp;lt;li&amp;gt;
        &amp;lt;input id="topping2" type="radio" name="topping" value="olives"
            data-dojo-type="dijit.form.RadioButton" data-bind="dijit: { checked: topping2checked}"&amp;gt;
        &amp;lt;label for="topping2"&amp;gt;Olives&amp;lt;/label&amp;gt;
    &amp;lt;/li&amp;gt;
    &amp;lt;li&amp;gt;
        &amp;lt;input id="topping3" type="radio" name="topping" value="pineapple"
            data-dojo-type="dijit.form.RadioButton" data-bind="dijit: { checked: topping3checked}"&amp;gt;
        &amp;lt;label for="topping3"&amp;gt;Pineapple&amp;lt;/label&amp;gt;
    &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;

&amp;lt;div&amp;gt;

    &amp;lt;div&amp;gt;topping1checked: &amp;lt;span data-bind="text: topping1checked"&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;topping2checked: &amp;lt;span data-bind="text: topping2checked"&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div&amp;gt;topping3checked: &amp;lt;span data-bind="text: topping3checked"&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;

&amp;lt;/div&amp;gt;


&amp;lt;div&amp;gt;
    &amp;lt;input id="hslider" type="range"
        data-dojo-type="dijit.form.HorizontalSlider"
        data-bind="dijit: { value: percent, minimum: 0, maximum: 100, discreteValues: 101 }"&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div&amp;gt;

    Percent: &amp;lt;span data-bind="text: percent"&amp;gt;&amp;lt;/span&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;/body&amp;gt;


&amp;lt;/html&amp;gt;&lt;/pre&gt;
&lt;/div&gt;</description><pubDate>Sun, 27 May 2012 15:29:00 +0100</pubDate><a10:rights type="text">Manfred Steyer</a10:rights><a10:contributor><a10:name>Manfred Steyer</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Manfred Steyer</dc:creator></item><item><guid isPermaLink="true">http://del.icio.us/GeekDotNet#2012-05-25</guid><link>http://del.icio.us/GeekDotNet#2012-05-25</link><a10:author><a10:name>Marco Scheel</a10:name></a10:author><title>Links for 2012-05-25 [del.icio.us]</title><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sharepintblog.com/2011/10/23/sharepoint-claims-based-authentication-with-thinktecture-identity-server-walkthrough/#comment-311"&gt;SharePoint claims based authentication with Thinktecture identity server &amp;ndash; Walkthrough &amp;laquo; SharePint Blog&amp;hellip; Hic!&lt;/a&gt;&lt;br/&gt;
Enter your description here (optional)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://spsync.net/"&gt;SPSync&lt;/a&gt;&lt;br/&gt;
What is SPSync?
SPSync is a very powerful tool, sitting in the taskbar and works like Dropbox. It automatically sync folders you choose with document libraries in SharePoint 2010. It provides a full two-way sync mechanism.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.iis.net/mschap/archive/2012/05/25/live-smooth-streaming-using-iis-media-services-detailed-overview-and-programmatic-management.aspx"&gt;Live Smooth Streaming Using IIS Media Services : Detailed Overview and Programmatic Management : Somnath Ghosh's Blog : The Official Microsoft IIS Site&lt;/a&gt;&lt;br/&gt;
Enter your description here (optional)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/nikosan/archive/2012/05/25/sql-server-2012-licensing-value-vs-oracle-database.aspx"&gt;SQL Server 2012 Licensing Value vs. Oracle Database - My Application Platform Quotes - Site Home - MSDN Blogs&lt;/a&gt;&lt;br/&gt;
Enter your description here (optional)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.wssdemo.com/Blog/archive/2012/05/12/have-you-exported-your-user-profile-service-fim-encryption-key.aspx"&gt;Ian's SharePoint Blog - Have you exported your User Profile Service (FIM) encryption key?&lt;/a&gt;&lt;br/&gt;
Enter your description here (optional)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/besidethepoint/archive/2011/02/19/how-i-learned-to-stop-worrying-and-love-the-sharepoint-topology-service.aspx"&gt;How I Learned to Stop Worrying and Love the SharePoint Topology Service - Beside the Point - Site Home - MSDN Blogs&lt;/a&gt;&lt;br/&gt;
Enter your description here (optional)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.davidklee.net/2012/03/31/configure-clustering-for-sql-server-2012-alwayson/"&gt;Configure clustering for SQL Server 2012 AlwaysOn &amp;raquo; Data Performance Technology&lt;/a&gt;&lt;br/&gt;
Enter your description here (optional)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.davidklee.net/2012/04/10/sql-server-2012-alwayson-availability-group-creation/"&gt;SQL Server 2012 AlwaysOn Availability Group Creation &amp;raquo; Data Performance Technology&lt;/a&gt;&lt;br/&gt;
Enter your description here (optional)&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/marcoscheel/~4/bs3vvW1qb1Q" height="1" width="1"/&gt;</description><pubDate>Sat, 26 May 2012 00:00:00 -0700</pubDate><a10:rights type="text">Marco Scheel</a10:rights><a10:contributor><a10:name>Marco Scheel</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marco Scheel</dc:creator></item><item><guid isPermaLink="false">http://www.st-lange.net/post.aspx?id=4e6470dc-de0c-4e24-8e90-623a4042be28</guid><link>http://www.st-lange.net/post/Silverlight-Tipp-der-Woche-async-basierte-Silverlight-Web-Services.aspx</link><a10:author><a10:name>Stefan Lange</a10:name></a10:author><title>Silverlight Tipp der Woche: async-basierte Silverlight Web-Services</title><description>&lt;h2&gt;Silverlight Tipp der Woche: async basierte Silverlight Web-Services&lt;/h2&gt;

&lt;p&gt;In diesem Tipp geht es um die Verwendung vom neuen C# 5 Schlüsselwort async beim Aufruf von Web-Services in Silverlight.&lt;/p&gt;

&lt;h2&gt;Zusammenfassung&lt;/h2&gt;

&lt;p&gt;&lt;b&gt;async&lt;/b&gt; und &lt;b&gt;await&lt;/b&gt; machen asynchronen Code wesentlich übersichtlicher, weil sie dessen logische Struktur erhalten. Das hilft vor allem beim Aufruf von Web-Services. In Silverlight sind Web-Service Referenzen von Hause aus aber leider nicht „awaitable“. Hier wird erklärt, wie es trotzdem geht.&lt;/p&gt;

&lt;p&gt;(Dieser Artikel setzt die Arbeitsweise von &lt;b&gt;async&lt;/b&gt; und &lt;b&gt;await&lt;/b&gt; als bekannt voraus.)&lt;/p&gt;

&lt;h2&gt;Aufruf von asynchronem Code&lt;/h2&gt;

&lt;p&gt;Wer schon mal mit den neuen C# 5 Schlüsselworten &lt;b&gt;async&lt;/b&gt; und &lt;b&gt;await&lt;/b&gt; programmiert hat, fragt sich sehr schnell, wie er denn bisher ohne diese leben konnte.&lt;/p&gt;

&lt;p&gt;In Visual Studio 2010 werden sie durch die &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=9983" target="_blank"&gt;Async CTP Version 3&lt;/a&gt; für alle Arten von .NET Projekten zur Verfügung gestellt.&lt;/p&gt;

&lt;p&gt;In Visual Studio 11 sind sie als Compiler-Feature bereits enthalten und in .NET 4.5 Projekten auch unmittelbar verfügbar. Für .NET 4 und Silverlight 5 Projekte muss zunächst noch das &lt;b&gt;Microsoft.CompilerServices.AsyncTargetingPack&lt;/b&gt; via NuGet dazu installiert werden.&lt;/p&gt;

&lt;p&gt;Vor allem beim Aufruf von asynchronen Web-Service-Funktionen in Silverlight kommt die neue Schreibweise wie gerufen. Im Prinzip &lt;i&gt;könnte&lt;/i&gt; man jetzt folgendes schreiben:&lt;/p&gt;

&lt;pre class="brush: c#;"&gt;var result1 = await client.DoThisAsync("Hallo");
var result2 = await client.DoThatAsync(result1, 43);&lt;/pre&gt;

&lt;p&gt;Keine Callbacks, keine Lambdas, kein Spaghetti-Code mit Error und UserState Properties. Nur zwei intuitive Zeilen Code, die exakt das machen, was man unmittelbar beim Lesen des Codes erwartet. Das ist schon phantastisch. Leider steht diese Schreibweise für Web-Services nicht unmittelbar zur Verfügung.&lt;/p&gt;

&lt;h2&gt;Das Problem&lt;/h2&gt;

&lt;p&gt;Die bisher generierten asynchronen Web-Service-Funktionen kann man natürlich nicht mit &lt;b&gt;async&lt;/b&gt; verwenden, denn Funktionen, die „awaitable“ sein wollen, müssen ein &lt;b&gt;Task&lt;/b&gt;- oder &lt;b&gt;Task&amp;lt;T&amp;gt;&lt;/b&gt;-Objekt zurückgeben. Für bestehende Klassen wie &lt;b&gt;WebClient&lt;/b&gt; gibt es daher Extension-Methods wie 
&lt;b&gt;DownloadString&lt;u&gt;Task&lt;/u&gt;Async&lt;/b&gt; als Variante von &lt;b&gt;DownloadStringAsync&lt;/b&gt;, die ein &lt;b&gt;Task&amp;lt;string&amp;gt;&lt;/b&gt; zurückliefert.&lt;/p&gt;

&lt;p&gt;Beim Import von Service-Referenzen müssten also eigentlich nur anders aufgebaute Funktionen generiert werden. Diese Funktionen müssten &lt;b&gt;Task&lt;/b&gt;-Objekte zurückgeben und dafür würden die ganzen Completed-Handler und deren &lt;b&gt;EventArgs&lt;/b&gt; wegfallen. Für .NET 4.5 Projekte wurde dazu in Visual Studio 11 eine neue Option beim Importieren eingeführt: „Generate task-based operations“. Diese Option generiert alternative Funktionen, die man mit &lt;b&gt;await&lt;/b&gt; verwenden kann. Für Silverlight oder .NET Projekte kleiner als 4.5 ist diese Option allerdings nicht verfügbar. Hier der Sceenshot für ein Silverlight 5 Projekt:&lt;/p&gt;

&lt;center&gt;&lt;a href="http://www.st-lange.net/samples/2012-05-async/VS11-SL5-ServiceReferenceSettings.png" target="_blank"&gt;
  &lt;img src="/samples/2012-05-async/VS11-SL5-ServiceReferenceSettings.png" style="border-style:none" width="600px"/&gt;
&lt;/a&gt;&lt;/center&gt;

&lt;p&gt;Die Option ist grau. Und in Visual Studio 2010 geht das natürlich sowieso nicht.&lt;/p&gt;

&lt;h2&gt;Die Lösung&lt;/h2&gt;

&lt;p&gt;Beim Importieren eines Web-Services generiert einem der Compiler ja schon asynchrone Funktionen mit jeweils einem Completed-Handler. Vielleicht kann man den Code ja irgendwie wiederverwenden. Bei meinem Versuch die generierten Funktionen mit Hilfe eines Expression-Trees zu zerlegen, um dann mit Reflection die Funktionen des darunterliegenden Channels aufzurufen, habe ich eine sehr viel einfachere Lösung gefunden.&lt;/p&gt;

&lt;p&gt;Nehmen wir zur Erläuterung einen WCF-Webservice mit drei typischen Funktionen:&lt;/p&gt;
&lt;pre class="brush: c#;"&gt;public void DoAction(string s, double d, DateTime t) …
public string DoThis(string s) …
public int DoThat(string s, int n) …&lt;/pre&gt;

&lt;p&gt;Dieser Service wird wie üblich in einer Web-Anwendung implementiert und über „Add Service Reference“ zum Silverlight Projekt unter dem Namen &lt;b&gt;Service1&lt;/b&gt; hinzugefügt. Der Compiler generiert daraus diverse Dateien, die man auch sehen kann, wenn für das Projekt „Show All Files“ aktiv ist. Eine der generierten Dateien ist Reference.cs, die wiederum u.a. die Klasse &lt;b&gt;Service1Client&lt;/b&gt; enthält. &lt;b&gt;Service1Client&lt;/b&gt; enthält die private Unterklasse &lt;b&gt;Service1ClientChannel&lt;/b&gt;, eine typsichere Implementierung des Servicecontracts unseres Webservices. Und hier können wir ansetzen, denn der Servicecontract ist auf Basis des BeginInvoke/EndInvoke Patterns implementiert. Dieses Pattern wurde bereits in .NET 1.0 eingeführt und benötigt für jede asynchrone Operation zwei Funktionen, die als Paar immer den Namenskonventionen &lt;b&gt;BeginXxx&lt;/b&gt; und &lt;b&gt;EndXxx&lt;/b&gt; folgen. &lt;b&gt;BeginXxx&lt;/b&gt; liefert ein &lt;b&gt;IAsyncResult&lt;/b&gt; zur Überwachung der asynchronen Operation und &lt;b&gt;EndXxx&lt;/b&gt; nimmt nach deren Beendigung ein &lt;b&gt;IAsyncResult&lt;/b&gt; entgegen und extrahiert daraus den Rückgabewert. Die wesentlich neuere Klasse &lt;b&gt;Task&lt;/b&gt; verfügt über eine Kompatibilitätsmethode &lt;b&gt;FromAsync&lt;/b&gt;, die asynchrone Operationen, die über ein solches async-Pattern bereitgestellt werden, in ein &lt;b&gt;Task&lt;/b&gt;-Objekt umwandelt.&lt;/p&gt;

&lt;p&gt;Da &lt;b&gt;Service1Client&lt;/b&gt; freundlicherweise als partial deklariert ist, brauchen wir die Klasse nur um drei neue Funktionen in der gewünschten Form ergänzen:&lt;/p&gt;

&lt;pre class="brush: c#;"&gt;public partial class Service1Client
{
  public Task DoActionTaskAsync(string s, double d, DateTime t)
  {
    return Task.Factory.FromAsync(Channel.BeginDoAction(s, d, t, null, null), Channel.EndDoAction);
  }
 
  public Task&amp;lt;string&amp;gt; DoThisTaskAsync(string s)
  {
    return Task&amp;lt;string&amp;gt;.Factory.FromAsync(Channel.BeginDoThis(s, null, null), Channel.EndDoThis);
  }
 
  public Task&amp;lt;int&amp;gt; DoThatTaskAsync(string s, int n)
  {
    return Task&amp;lt;int&amp;gt;.Factory.FromAsync(Channel.BeginDoThat(s, n, null, null), Channel.EndDoThat);
  }
}&lt;/pre&gt;

&lt;p&gt;Das Muster ist leicht zu erkennen. In die Funktion &lt;b&gt;FromAsync&lt;/b&gt; werden das Ergebnis des Aufrufs der &lt;b&gt;BeginXxx&lt;/b&gt;-Funktion sowie ein Delegate auf &lt;b&gt;EndXxx&lt;/b&gt; reingereicht. Die beiden letzten Parameter der &lt;b&gt;BeginXxx&lt;/b&gt;-Funktionen sind übrigens immer ein &lt;b&gt;AsyncCallback&lt;/b&gt; und ein User-State Objekt. Beide sind null, da wir sie hier nicht benötigen.&lt;/p&gt;

&lt;p&gt;Da alle Servicefunktionen bereits unter den Namen &lt;b&gt;XxxAsync&lt;/b&gt; existieren, habe ich sie analog zu oben erwähnten Extension-Methods von &lt;b&gt;WebClient&lt;/b&gt; in &lt;b&gt;XxxTaskAsync&lt;/b&gt; umbenannt. Alternativ könnte man auch eine neue Klasse von &lt;b&gt;Service1Client&lt;/b&gt; ableiten und die bisherigen Funktionsnamen mit &lt;b&gt;new&lt;/b&gt; überschreiben. Das Ganze mit Extention Methods zu machen funktioniert hingegen nicht, weil die Property &lt;b&gt;Channel&lt;/b&gt; protected ist.&lt;/p&gt;

&lt;p&gt;Mit verhältnismäßig wenig Tipparbeit können wir jetzt doch unseren Code von oben schreiben:&lt;/p&gt;

&lt;pre class="brush: c#;"&gt;var result1 = await client.DoThisTaskAsync("Hallo");
var result2 = await client.DoThatTaskAsync(result1, 43);&lt;/pre&gt;

&lt;p&gt;Die zweite Funktion wird mit dem Ergebnis der ersten aufgerufen, ganz natürlich und ohne Klimmzüge.&lt;/p&gt;

&lt;p&gt;Das hintereinander Aufrufen von asynchronen Funktionen ist aber nur die Spitze des Eisbergs. Auch der folgende (hier inhaltlich unsinnige) Code ist möglich:&lt;/p&gt;

&lt;pre class="brush: c#;"&gt;string result = null;
try
{
  var client = new Service1Client();
  if (await client.DoThatTaskAsync("xxx", 43) &amp;gt; 123)
    result = await client.DoThisTaskAsync("Hallo");
  else
  {
    await client.DoActionTaskAsync("yyy", 4.5, DateTime.Now);
    int x = 321;
    while ((x = await client.DoThatTaskAsync("zzz", x)) &amp;lt; 42)
      result += await client.DoThisTaskAsync(x.ToString("0"));
  }
}
catch (Exception ex)
{
  Debug.WriteLine(ex.Message);
}&lt;/pre&gt;

&lt;p&gt;Ein try-Block um &lt;i&gt;asynchrone&lt;/i&gt; Funktionen, die sich innerhalb beliebiger Kontrollstrukturen befinden! Und eine Exception auf dem Server landet stets sauber beim Client im catch-Block.&lt;/p&gt;

&lt;p&gt;Wer immer noch nicht von &lt;b&gt;async&lt;/b&gt;/&lt;b&gt;await&lt;/b&gt; restlos begeistert ist, sollte mal versuchen, den Code oben mit den bisherigen Mitteln zu schreiben. Insbesondere wegen des try-catch-Blocks ist dies eine sehr schwierige Übung.&lt;/p&gt;

&lt;p&gt;Noch ein technischer Hinweis: Das Erzeugen des Task-Objektes führt zur Erzeugung eines zusätzlichen Threads, der auf das &lt;b&gt;WaitHandle&lt;/b&gt; von &lt;b&gt;IAsyncResult&lt;/b&gt; wartet. Dies hat aber praktisch keinerlei Laufzeitrelevanz. Der Thread wird einmal im Threadpool erzeugt und dann wiederverwendet. Die überwiegende Zeit wartet er auf die Fertigstellung der asynchronen Operation. Danach benachrichtigt er den Main-Thread, damit dieser hinter dem &lt;b&gt;await&lt;/b&gt; weitermacht.&lt;/p&gt;

&lt;h2&gt;Fazit&lt;/h2&gt;

&lt;p&gt;„Fast und fluid“ war Silverlight ja immer schon. Mit async/await und den selbst gekapselten Task-basierten Service-Operationen haben wir nun auch in Silverlight, was mit der Windows Runtime der neue Standard werden wird. Und es funktioniert so gut, dass ich schon fast vergessen habe, wie ich es bisher ohne &lt;b&gt;await&lt;/b&gt; gemacht habe.&lt;/p&gt;

&lt;p&gt;Hier der Beispielcode zum Ausprobieren:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.st-lange.net/file.axd?file=2012%2f05%2fTaskBasedWebOperations.zip"&gt;TaskBasedWebOperations.zip&lt;/a&gt; (61 kB)&lt;/p&gt;
</description><pubDate>Fri, 25 May 2012 21:10:00 +0200</pubDate><a10:rights type="text">Stefan Lange</a10:rights><a10:contributor><a10:name>Stefan Lange</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Stefan Lange</dc:creator></item><item><guid isPermaLink="false">http://blog.lars-keller.net/post/2012/05/25/Das-war-der-System-Management-Summit-2012.aspx</guid><a10:author><a10:name>Lars Keller</a10:name></a10:author><title>Das war der System Management Summit 2012</title><description>&lt;p&gt;Am 09.05.12 war der 6. &lt;a href="http://www.systemmanagementsummit.de/"&gt;System Management Summit&lt;/a&gt; (SMS) 2012 in Hanau. Ich war mit Arbeitskollegen als Referent und Microsoft Partner vor Ort. Auf der SMS wurden die neuen System Center (SC) 2012 Produkte in &lt;a href="http://blog.lars-keller.net/image.axd?picture=Events_20120504_SMS_0591.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 15px 15px 15px 5px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Microsoft Systemmanagement Summit 2012 - Lars Keller" src="http://blog.lars-keller.net/image.axd?picture=Events_20120504_SMS_0591_thumb.jpg" border="0" alt="Microsoft Systemmanagement Summit 2012 - Lars Keller" width="244" height="164" align="left" /&gt;&lt;/a&gt;Deutschland vorgestellt. Wir, das Research &amp;amp; Development Team, besch&amp;auml;ftigen uns sehr intensiv mit den verschiedenen System Center Produkten und deren Unterst&amp;uuml;tzung f&amp;uuml;r einen Aufbau einer Hybrid Cloud Infrastruktur. Auch als Entwickler lernt man diese Produkte n&amp;auml;her kennen, denn alle Produkte haben eine WebService-API. ;-)&lt;/p&gt;
&lt;p&gt;Meine Kollegen aus dem Infrastruktur Bereich berichten ausf&amp;uuml;hrlich &amp;uuml;ber alle neuen System Center Features, Tipps &amp;amp; Tricks in ihrem &lt;a href="http://startblog.hud.de/"&gt;Blog&lt;/a&gt;, so dass ich den interessierten Leser darauf verweise.&lt;/p&gt;
&lt;p&gt;Als Referent durfte ich einen Vortrag zum Thema &amp;ldquo;&lt;a href="http://www.systemmanagementsummit.de/Agenda2012.aspx"&gt;Von 0 auf Cloud - Privat Cloud in 45 Minuten &amp;ndash; VM Deployment &amp;uuml;ber die (fast) gesamte System Center Suite 2012&lt;/a&gt;&amp;rdquo; halten.&amp;nbsp; Mein Kollege und ich haben verdeutlicht, wie einfach Cloud Computing sein kann, wenn die Prozesse klar definiert&lt;a href="http://blog.lars-keller.net/image.axd?picture=Events_20120504_SMS_0598.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 15px 0px 15px 15px; padding-left: 0px; padding-right: 0px; display: inline; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Microsoft Systemmanagement Summit 2012 - Lars Keller" src="http://blog.lars-keller.net/image.axd?picture=Events_20120504_SMS_0598_thumb.jpg" border="0" alt="Microsoft Systemmanagement Summit 2012 - Lars Keller" width="244" height="164" align="right" /&gt;&lt;/a&gt; sind und System Center im Hintergrund l&amp;auml;uft. In dem Vortrag selber haben wir zum ersten Mal auf einer Konferenz auch einen Einblick in das von meinem Team entwickelte Self-Service-Portal gegeben. Mit dem Self-Service-Portal wird die Hybrid Cloud Infrastruktur von Nicht-Administratoren administriert und verschiedene Prozesse z.B. &amp;ldquo;Buchen von Software f&amp;uuml;r einen Mitarbeiter von Kostenstellenverantwortlichen&amp;rdquo; angesto&amp;szlig;en. Das Portal verwaltet u.a. die Lizenzen, Provisionierung und Budgetierung dieser Software. Interessierte Leser k&amp;ouml;nnen sich unsere Session anschauen, sobald diese in den n&amp;auml;chsten Wochen ver&amp;ouml;ffentlicht wird. [&lt;strong&gt;UPDATE&lt;/strong&gt;: Die Session sind &lt;a href="http://www.event-team.com/events/mms2012/membersarea.aspx"&gt;online&lt;/a&gt;.]&amp;nbsp;&lt;/p&gt;
&lt;p&gt;F&amp;uuml;r mich war die SMS sehr spannend, besonders weil ich als Entwickler auf einer IT-Pro Konferenz sprechen durfte. ;-)&lt;/p&gt;
&lt;p&gt;Ich denke, wie in den Jahren davor, wird H&amp;amp;D beim n&amp;auml;chsten System Management Summit wieder vor Ort sein!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/LarsKellerinspiredBynet?a=lJlNWAMpeTM:jav6F4HUYYY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LarsKellerinspiredBynet?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LarsKellerinspiredBynet?a=lJlNWAMpeTM:jav6F4HUYYY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LarsKellerinspiredBynet?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LarsKellerinspiredBynet?a=lJlNWAMpeTM:jav6F4HUYYY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LarsKellerinspiredBynet?i=lJlNWAMpeTM:jav6F4HUYYY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LarsKellerinspiredBynet?a=lJlNWAMpeTM:jav6F4HUYYY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LarsKellerinspiredBynet?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/LarsKellerinspiredBynet?a=lJlNWAMpeTM:jav6F4HUYYY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/LarsKellerinspiredBynet?i=lJlNWAMpeTM:jav6F4HUYYY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/LarsKellerinspiredBynet/~4/lJlNWAMpeTM" height="1" width="1"/&gt;</description><pubDate>Fri, 25 May 2012 10:30:00 Z</pubDate><a10:link rel="self" href="http://blog.lars-keller.net/post.aspx?id=3f82d4ac-cfb1-493d-8a35-9bd4b032fa19" /><a10:link href="http://feedproxy.google.com/~r/LarsKellerinspiredBynet/~3/lJlNWAMpeTM/Das-war-der-System-Management-Summit-2012.aspx" /><a10:link rel="related" href="http://blog.lars-keller.net/post/2012/05/25/Das-war-der-System-Management-Summit-2012.aspx#comment" /><a10:updated>2012-05-25T10:30:00Z</a10:updated><a10:rights type="text">Lars Keller</a10:rights><a10:contributor><a10:name>Lars Keller</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Lars Keller</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10308705</guid><link>http://blogs.msdn.com/b/hsirtl/archive/2012/05/25/webschau-2012-kw21-neues-zu-windows-azure.aspx</link><a10:author><a10:name>Holger Sirtl</a10:name></a10:author><title>Webschau 2012-KW21: Neues zu Windows Azure</title><description>&lt;p&gt;Auch heute wieder ein Rückblick auf interessante News, Blogposts und sonstigen Informationen zu Cloud Computing mit Windows Azure in dieser Woche:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;TechNet: &lt;a href="http://technet.microsoft.com/en-us/video/microsoft-it-integrates-windows-azure-blob-storage-for-real-time-document-management.aspx"&gt;Microsoft IT Integrates Windows Azure BLOB Storage for Real-time Document Management&lt;/a&gt;      &lt;br /&gt;Hier wird anhand eines Microsoft-internen Projektes beschrieben, wie Windows Azure Blob Storage dazu verwendet werden kann, skalierbares, performantes und leistungsfähiges Dokumentenmanagement (mit Genehmigungsprozessen etc.) zu implementieren.      &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;Clint Edmonson: &lt;a href="http://www.notsotrivial.net/blog/post/2012/05/21/Windows-Azure-Solution-Cookbook.aspx"&gt;Windows Azure Solution Cookbook&lt;/a&gt;      &lt;br /&gt;Mein Kollege, &lt;a href="http://www.notsotrivial.net/blog/contact.aspx"&gt;Clint Edmonson&lt;/a&gt;, hat eine Blog-Serie gestartet, in der er auf verschiedene, typische Implementierungsszenarien für Azure-basierte Softwaresysteme eingeht. Er beschreibt für jedes Szenario die jeweils beteiligten Azure Services und deren Zusammenspiel. Los geht’s mit einem typischen Consumer-Webportal.      &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;Windows Azure Produktguppe: &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2012/05/22/getting-started-with-the-service-bus-samples-for-windows-8.aspx"&gt;Getting Started with the Service Bus Samples for Windows 8&lt;/a&gt;      &lt;br /&gt;Im &lt;a href="http://watwindows8.codeplex.com/"&gt;Windows Azure Toolkit for Windows 8&lt;/a&gt; hat Microsoft ja eine Beispielbibliothek für das Zusammenspiel von Windows 8&amp;#160; und Windows Azure Service Bus aus Metro Style Anwendungen veröffentlicht. Dieser Blogpost gibt einen Überblick über die ebenfalls enthaltene Beispielanwendung und in diesem Zusammenhang auch über die Bibliothek.&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10308705" width="1" height="1"&gt;</description><pubDate>Fri, 25 May 2012 07:40:00 Z</pubDate><a10:rights type="text">Holger Sirtl</a10:rights><a10:contributor><a10:name>Holger Sirtl</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Holger Sirtl</dc:creator></item><item><guid isPermaLink="false">http://www.biggle.de/blog/?p=6977</guid><link>http://feedproxy.google.com/~r/BigglesBlog/~3/voYcx1w7J4I/visual-studio-11-beta-ein-vergleich-der-versionen</link><a10:author><a10:name>Mario Priebe</a10:name></a10:author><title>Visual Studio 11 (Beta) – Ein Vergleich der Versionen</title><description>Eine Übersicht über die einzelnen Features die in den verschiedenen Visual Studio 2011 (Beta) Versionen enthalten sind, zeigt uns die folgende Vergleichstabelle: Kategorisiert sind die Features wie folgt: Debugging and Diagnostics Testing Tools Integrated Development Environment Development Platform Support Architecture and Modeling Lab Management Team Foundation Server Collaboration Software and Services for Production Use Software [...]</description><pubDate>Thu, 24 May 2012 21:16:49 Z</pubDate><a10:rights type="text">Mario Priebe</a10:rights><a10:content type="html">&lt;p&gt;Eine Übersicht über die einzelnen Features die in den verschiedenen Visual Studio 2011 (Beta) Versionen enthalten sind, zeigt uns die folgende Vergleichstabelle:&lt;/p&gt;
&lt;p&gt;Kategorisiert sind die Features wie folgt:&lt;/p&gt;
&lt;h2&gt;Debugging and Diagnostics&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.biggle.de/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5iaWdnbGUuZGUvYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAxMi8wNS8yMDEyLTA1LTI0LTIzaDA0XzM0LnBuZw=="&gt;&lt;img src="http://www.biggle.de/blog/wp-content/uploads/2012/05/2012-05-24-23h04_34.png" alt="" title="2012-05-24 23h04_34" width="500" class="alignnone size-medium wp-image-6978" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Testing Tools&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.biggle.de/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5iaWdnbGUuZGUvYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAxMi8wNS8yMDEyLTA1LTI0LTIzaDA2XzI3LnBuZw=="&gt;&lt;img src="http://www.biggle.de/blog/wp-content/uploads/2012/05/2012-05-24-23h06_27.png" alt="" title="2012-05-24 23h06_27" width="500" class="alignnone size-full wp-image-6981" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Integrated Development Environment&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.biggle.de/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5iaWdnbGUuZGUvYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAxMi8wNS8yMDEyLTA1LTI0LTIzaDA3XzA0LnBuZw=="&gt;&lt;img src="http://www.biggle.de/blog/wp-content/uploads/2012/05/2012-05-24-23h07_04.png" alt="" title="2012-05-24 23h07_04" width="500" class="alignnone size-full wp-image-6982" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Development Platform Support&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.biggle.de/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5iaWdnbGUuZGUvYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAxMi8wNS8yMDEyLTA1LTI0LTIzaDA3XzMxLnBuZw=="&gt;&lt;img src="http://www.biggle.de/blog/wp-content/uploads/2012/05/2012-05-24-23h07_31.png" alt="" title="2012-05-24 23h07_31" width="500" class="alignnone size-full wp-image-6983" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Architecture and Modeling&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.biggle.de/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5iaWdnbGUuZGUvYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAxMi8wNS8yMDEyLTA1LTI0LTIzaDA4XzAxLnBuZw=="&gt;&lt;img src="http://www.biggle.de/blog/wp-content/uploads/2012/05/2012-05-24-23h08_01.png" alt="" title="2012-05-24 23h08_01" width="500" class="alignnone size-full wp-image-6984" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Lab Management&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.biggle.de/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5iaWdnbGUuZGUvYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAxMi8wNS8yMDEyLTA1LTI0LTIzaDA4XzI5LnBuZw=="&gt;&lt;img src="http://www.biggle.de/blog/wp-content/uploads/2012/05/2012-05-24-23h08_29.png" alt="" title="2012-05-24 23h08_29" width="500" class="alignnone size-full wp-image-6985" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Team Foundation Server&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.biggle.de/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5iaWdnbGUuZGUvYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAxMi8wNS8yMDEyLTA1LTI0LTIzaDA4XzU2LnBuZw=="&gt;&lt;img src="http://www.biggle.de/blog/wp-content/uploads/2012/05/2012-05-24-23h08_56.png" alt="" title="2012-05-24 23h08_56" width="500" class="alignnone size-full wp-image-6986" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Collaboration&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.biggle.de/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5iaWdnbGUuZGUvYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAxMi8wNS8yMDEyLTA1LTI0LTIzaDA5XzMwLnBuZw=="&gt;&lt;img src="http://www.biggle.de/blog/wp-content/uploads/2012/05/2012-05-24-23h09_30.png" alt="" title="2012-05-24 23h09_30" width="500" class="alignnone size-full wp-image-6987" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Software and Services for Production Use&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.biggle.de/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5iaWdnbGUuZGUvYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAxMi8wNS8yMDEyLTA1LTI0LTIzaDA5XzU4LnBuZw=="&gt;&lt;img src="http://www.biggle.de/blog/wp-content/uploads/2012/05/2012-05-24-23h09_58.png" alt="" title="2012-05-24 23h09_58" width="500" class="alignnone size-full wp-image-6988" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Software for Development and Testing&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.biggle.de/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5iaWdnbGUuZGUvYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAxMi8wNS8yMDEyLTA1LTI0LTIzaDEwXzM4LnBuZw=="&gt;&lt;img src="http://www.biggle.de/blog/wp-content/uploads/2012/05/2012-05-24-23h10_38.png" alt="" title="2012-05-24 23h10_38" width="500" class="alignnone size-full wp-image-6989" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Other Benefits&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.biggle.de/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5iaWdnbGUuZGUvYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAxMi8wNS8yMDEyLTA1LTI0LTIzaDExXzA0LnBuZw=="&gt;&lt;img src="http://www.biggle.de/blog/wp-content/uploads/2012/05/2012-05-24-23h11_04.png" alt="" title="2012-05-24 23h11_04" width="500" class="alignnone size-full wp-image-6990" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ich freue mich sowohl auf den Test- und den Feedback-Manager als auch auf die Scrum-Integration in der neuen Version!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.biggle.de/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Zpc3VhbHN0dWRpby8xMS9lbi11cy9wcm9kdWN0cy9jb21wYXJl" title=\"http://www.microsoft.com/visualstudio/11/en-us/products/compare\" target=\"_blank\"&gt;http://www.microsoft.com/visualstudio/11/en-us/products/compare&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;&lt;p style="float:right; font-size:0.9em;"&gt;Dieser Beitrag stammt von &lt;a href="http://www.biggle.de/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5iaWdnbGUuZGU="&gt;Mario Priebe&lt;/a&gt;.&lt;/p&gt; &lt;img src="http://www.biggle.de/blog/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&amp;post_id=6977" width="1" height="1" style="display: none;" /&gt;&lt;h2  class="related_post_title"&gt;Ähnliche Beiträge&lt;/h2&gt;&lt;ul class="related_post"&gt;&lt;li&gt;12. Januar 2012 -- &lt;a href="http://www.biggle.de/blog/automatisiertes-ein-und-auschecken-im-buildprozess" title="Automatisiertes Ein- und Auschecken im Buildprozess"&gt;Automatisiertes Ein- und Auschecken im Buildprozess&lt;/a&gt;&lt;/li&gt;&lt;li&gt;13. September 2011 -- &lt;a href="http://www.biggle.de/blog/visual-studio-makro-fr-shoulda-methoden-erstellen" title="Visual Studio Makro f&amp;uuml;r Shoulda Methoden erstellen"&gt;Visual Studio Makro f&amp;uuml;r Shoulda Methoden erstellen&lt;/a&gt;&lt;/li&gt;&lt;li&gt;4. Juli 2011 -- &lt;a href="http://www.biggle.de/blog/neuer-ordner-im-projekt-per-hotkey" title="Neuer Ordner im Projekt per Hotkey"&gt;Neuer Ordner im Projekt per Hotkey&lt;/a&gt;&lt;/li&gt;&lt;li&gt;9. Juni 2011 -- &lt;a href="http://www.biggle.de/blog/visual-studio-2010-test-tooling" title="Visual Studio 2010 Test-Tooling"&gt;Visual Studio 2010 Test-Tooling&lt;/a&gt;&lt;/li&gt;&lt;li&gt;21. Mai 2011 -- &lt;a href="http://www.biggle.de/blog/kopieren-einer-leerzeile-in-visual-studio-verhindern" title="Kopieren einer Leerzeile in Visual Studio verhindern"&gt;Kopieren einer Leerzeile in Visual Studio verhindern&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/BigglesBlog?a=voYcx1w7J4I:o5v4D-UF81c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BigglesBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BigglesBlog?a=voYcx1w7J4I:o5v4D-UF81c:D7DqB2pKExk"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BigglesBlog?i=voYcx1w7J4I:o5v4D-UF81c:D7DqB2pKExk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BigglesBlog?a=voYcx1w7J4I:o5v4D-UF81c:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BigglesBlog?i=voYcx1w7J4I:o5v4D-UF81c:-BTjWOF_DHI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BigglesBlog?a=voYcx1w7J4I:o5v4D-UF81c:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BigglesBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BigglesBlog?a=voYcx1w7J4I:o5v4D-UF81c:o7iSjSoFTgY"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BigglesBlog?d=o7iSjSoFTgY" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/BigglesBlog?a=voYcx1w7J4I:o5v4D-UF81c:ec-rMiKX1uA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/BigglesBlog?d=ec-rMiKX1uA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BigglesBlog/~4/voYcx1w7J4I" height="1" width="1"/&gt;</a10:content><a10:contributor><a10:name>Mario Priebe</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Mario Priebe</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10309884</guid><link>http://blogs.msdn.com/b/cbinder/archive/2012/05/24/visual-studio-11-beta-quickhit-videos-vol-7-coded-ui-test-load-und-performance-tests-eclipse-integration-tee-feedback-client.aspx</link><a10:author><a10:name>Christian Binder [MS]</a10:name></a10:author><title>Visual Studio 11 Beta QuickHit Videos Vol.7 (Coded UI Test, Load und Performance Tests, Eclipse Integration (TEE), Feedback Client)</title><description>&lt;p&gt;Testing ist für viele Teams ein fester Bestandteil der Softwareentwicklung. Hier zeigen wir in zwei kurzen Videos den Coded UI Test zum automatisierten Testen von UI’s und die Load und Performance Tests. Zudem den Team Explorer Everywhere, welcher die Eclipse Integration für den TFS mitbringt und den neuen Feedback Client, der es dem Development Team sehr einfach ermöglicht, Feedback zur Implementierung einzuholen. Vor Allem für Agile Teams ein wichtiger Aspekt aber auch für andere Teams interessant, die kontinuierlich und strukturiert Feedback einholen wollen. Viel Spass&lt;/p&gt; &lt;iframe height="281" src="http://player.vimeo.com/video/42754064" frameborder="0" width="500" mozallowfullscreen="mozallowfullscreen" webkitallowfullscreen="webkitallowfullscreen" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;  &lt;p&gt;&lt;a href="http://vimeo.com/42754064"&gt;Visual Studio 11 Beta - Coded UI Test | Microsoft&lt;/a&gt; &lt;/p&gt; &lt;iframe height="281" src="http://player.vimeo.com/video/42556908" frameborder="0" width="500" mozallowfullscreen="mozallowfullscreen" webkitallowfullscreen="webkitallowfullscreen" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;   &lt;p&gt;&lt;a href="http://vimeo.com/42556908"&gt;Visual Studio 11 Beta - Last- und Performancetests | Microsoft&lt;/a&gt;&lt;/p&gt; &lt;iframe height="281" src="http://player.vimeo.com/video/42551575" frameborder="0" width="500" mozallowfullscreen="mozallowfullscreen" webkitallowfullscreen="webkitallowfullscreen" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;   &lt;p&gt;&lt;a href="http://vimeo.com/42551575"&gt;Visual Studio 11 Beta - Team Explorer Everywhere | Microsoft&lt;/a&gt; &lt;/p&gt; &lt;iframe height="281" src="http://player.vimeo.com/video/42753254" frameborder="0" width="500" mozallowfullscreen="mozallowfullscreen" webkitallowfullscreen="webkitallowfullscreen" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;   &lt;p&gt;&lt;a href="http://vimeo.com/42753254"&gt;Visual Studio 11 Beta - Feedback Client | Microsoft&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10309884" width="1" height="1"&gt;</description><pubDate>Thu, 24 May 2012 12:52:41 Z</pubDate><a10:rights type="text">Christian Binder [MS]</a10:rights><a10:contributor><a10:name>Christian Binder [MS]</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Christian Binder [MS]</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10309821</guid><link>http://blogs.msdn.com/b/cbinder/archive/2012/05/24/uptodate-veranstaltungen-f-252-r-net-entwickler-der-net-developer-group-ulm.aspx</link><a10:author><a10:name>Christian Binder [MS]</a10:name></a10:author><title>UpToDate? Veranstaltungen für .NET Entwickler der .NET Developer Group Ulm</title><description>&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt; &lt;font size="3"&gt;   &lt;p&gt;     &lt;br /&gt;&lt;font size="2"&gt;Die .NET Community im Raum Ulm läd ein :       &lt;br /&gt;&lt;/font&gt;      &lt;br /&gt;&lt;strong&gt;Code Camp (01.06.2012 - 02.06.2012)&lt;/strong&gt;&lt;/p&gt; &lt;/font&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/5824.clip_5F00_image001_5F00_1189FFBC.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/8463.clip_5F00_image001_5F00_thumb_5F00_495C43DF.jpg" width="139" height="45" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Das Ziel des Code Camps ist, Erfahrungen mit anderen Entwicklern auszutauschen, neu Praktiken zu erlernen und vor allem viel Spaß miteinander zu haben. Als Aufgabenstellung wollen wir die Usergroup-Homepage neu implementieren und sowohl Web- als auch Desktop-Entwicklern ein entsprechendes Betätigungsfeld zu geben. &lt;/p&gt;  &lt;p&gt;Detaillierte Informationen finden Sie &lt;a href="http://www.dotnet-ulm.de/CodeCamp.aspx"&gt;hier…&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;strong&gt;SCRUMit Summit 2012 (19.06.2012)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/7484.clip_5F00_image002_5F00_6832B7BD.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/0143.clip_5F00_image002_5F00_thumb_5F00_7B736E5C.jpg" width="159" height="45" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nach der tollen Resonanz der Veranstaltung im vorigen Jahr gibt es nun eine Fortsetzung der Reihe. Wir laden Sie herzlich ein zum &lt;b&gt;SCRUMit Summit 2012!&lt;/b&gt;    &lt;br /&gt;Nutzen Sie diese Möglichkeit des Austausches zwischen Experten und Gleichgesinnten über &lt;b&gt;Best Practices und Erfahrungen mit agiler Software-Entwicklung.&lt;/b&gt; Wie können wir die Potentiale des agilen Projektmanagements noch effizienter nutzen? Wie können die Herausforderungen in der täglichen Anwendung von Scrum besser bewältigt werden? Welche nützlichen Tipps und Tools gibt es zu dieser Thematik? Antworten auf diese und weitere Fragen, Erfolgsrezepte und Praxistipps präsentieren &lt;b&gt;hochkarätige Speaker&lt;/b&gt; auf dem SCRUMit Summit 2012. &lt;/p&gt;  &lt;p&gt;Detaillierte Informationen zu den Vorträgen und Sprechern finden Sie &lt;a href="http://www.dotnet-ulm.de/Vortraege%20und%20Referenten.aspx"&gt;hier…&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;strong&gt;VS 2011 ALM Info Day&lt;/strong&gt; &lt;strong&gt;(01.08.2012)&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;img alt="Visual Studio 11" src="http://www.dotnet-ulm.de/Photos/visual_studio_logo.png" /&gt;&lt;/p&gt;  &lt;p&gt;Mit Visual Studio 11 und Team Foundation Server stellt Microsoft die nächste Version seiner ALM-Plattform vor. Dabei wurden insbesondere häufig vermisste Funktionen für agile Teams nachgerüstet. Diese und viele andere Verbesserungen werden an diesem Tag vorgestellt.&lt;/p&gt;  &lt;p&gt;Detaillierte Informationen zu den Vorträgen und Sprechern finden Sie &lt;a href="http://www.dotnet-ulm.de/VortragVS11.aspx"&gt;hier…&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10309821" width="1" height="1"&gt;</description><pubDate>Thu, 24 May 2012 10:21:35 Z</pubDate><a10:rights type="text">Christian Binder [MS]</a10:rights><a10:contributor><a10:name>Christian Binder [MS]</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Christian Binder [MS]</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10309802</guid><link>http://blogs.msdn.com/b/hsirtl/archive/2012/05/24/video-reihe-zu-windows-azure-folge-13-was-ist-der-windows-azure-table-storage.aspx</link><a10:author><a10:name>Holger Sirtl</a10:name></a10:author><title>Video-Reihe zu Windows Azure – Folge 13: Was ist der Windows Azure Table Storage?</title><description>&lt;p&gt;Windows Azure Table Storage ist die Non-SQL-Datenbank der Windows Azure Plattform. Er kann zur Ablage großer semi-strukturierter Datenbestände in der Cloud verwendet werden. Die Daten werden dabei automatisch 3-fach, hoch-verfügbar abgelegt, und können über RESTful-Schnittstellen zugegriffen werden. Als Alternative für den Zugriff stehen für .NET, Java und PHP Klassenbibliotheken zur Verfügung. Das Video gibt einen kurzen Überblick über den Windows Azure Table Storage.&lt;/p&gt;  &lt;p&gt;Hier das Video: &lt;a href="http://youtu.be/2z0uN69vujA"&gt;Was ist der Windows Azure Table Storage?&lt;/a&gt; [10:19]&lt;/p&gt;  &lt;p&gt;&lt;iframe height="315" src="http://www.youtube.com/embed/2z0uN69vujA" frameborder="0" width="560" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Video: &lt;a href="http://youtu.be/2z0uN69vujA"&gt;Was ist der Windows Azure Table Storage?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=kLfaa_19yB4&amp;amp;list=PLC71216BDE26EBE8C"&gt;Video-Playlist zu Windows Azure auf YouTube&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10309802" width="1" height="1"&gt;</description><pubDate>Thu, 24 May 2012 09:28:53 Z</pubDate><a10:rights type="text">Holger Sirtl</a10:rights><a10:contributor><a10:name>Holger Sirtl</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Holger Sirtl</dc:creator></item><item><guid isPermaLink="false">http://blog.ppedv.de/post.aspx?id=449b571b-c9eb-4147-87c3-6d1270753482</guid><link>http://blog.ppedv.de/post/2012/05/23/Suspension-Manager.aspx</link><a10:author><a10:name>ppedv Team Blog</a10:name></a10:author><title>Suspension Manager</title><description>&lt;p&gt;Nein es geht nicht um Frührente. der Lebenszyklus von Windows 8 METRO Anwendungen etwas eigenwillig. Kurz gesagt, kann man das Betriebssystem einen in den Hintergrund gelegte Anwendung aus dem Betriebssystem Sheduler entfernen. Der Modus nennt sich suspended. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.ppedv.de/image.axd?picture=image_199.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blog.ppedv.de/image.axd?picture=image_thumb_199.png" width="509" height="90" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;warum und wieso dauert etwas länger zu erklären.&amp;#160; Relevant ist, was man aus Coding Sicht tun muss.&lt;/p&gt;  &lt;p&gt;Eigentlich muss man gar nichts tun. Die Anwendung wird ja nicht geschlossen, insofern kommt sie in dem Status zurück wie man sie zuletzt gesehen hat. Eine Textbox beinhaltet noch immer den Text. Aber Windows 8 hat das rechteine Suspended APP komplett zu entfernen. Ich habe das zwar noch nie gesehen, aber&amp;#160; bei kommenden ARM Geräten mit wenig Arbeitsspeicher wird das wohl passieren.&lt;/p&gt;  &lt;p&gt; Sämtliche Beispiele aus dem SDK enthalten eine Hilfsklasse die sich SuspensionManager nennt.Ich kopiere die aktuell in meine Projekte, auch wenn sie nicht optimal ist.&lt;/p&gt;  &lt;pre class="brush: vb; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;Module SuspensionManager
    Private sessionState_ As New Dictionary(Of String, Object)
    Private knownTypes_ As List(Of Type) = New List(Of Type)
    Private Const filename As String = &amp;quot;_sessionState.xml&amp;quot;

    ' Provides access to the currect session state
    Public ReadOnly Property SessionState As Dictionary(Of String, Object)
        Get
            Return sessionState_
        End Get
    End Property

    ' Allows custom types to be added to the list of types that can be serialized
    Public ReadOnly Property KnownTypes As List(Of Type)
        Get
            Return knownTypes_
        End Get
    End Property

    ' Save the current session state
    Public Async Function SaveAsync() As Task
        ' Get the output stream for the SessionState file.
        Dim file As StorageFile = &lt;br /&gt;Await ApplicationData.Current.LocalFolder.CreateFileAsync(filename, &lt;br /&gt;CreationCollisionOption.ReplaceExisting)
        Dim raStream As IRandomAccessStream = &lt;br /&gt;Await file.OpenAsync(FileAccessMode.ReadWrite)
        Using outStream As IOutputStream = raStream.GetOutputStreamAt(0)
            ' Serialize the Session State.
            Dim serializer As New &lt;br /&gt;DataContractSerializer(GetType(Dictionary(Of String, Object)))
            serializer.WriteObject(outStream.AsStreamForWrite, sessionState_)
            Await outStream.FlushAsync
        End Using
    End Function

    ' Restore the saved sesison state
    Public Async Function RestoreAsync() As Task
        ' Get the input stream for the SessionState file.
        Try
            Dim file As StorageFile = &lt;br /&gt;Await ApplicationData.Current.LocalFolder.GetFileAsync(filename)
            If file Is Nothing Then
                Exit Function
            End If
            Dim inStream As IInputStream = Await file.OpenSequentialReadAsync

            ' Deserialize the Session State.
            Dim serializer As New DataContractSerializer(GetType(Dictionary(Of String, Object)))
            sessionState_ = CType(serializer.ReadObject(inStream.AsStreamForRead),&lt;br /&gt; Dictionary(Of String, Object))
        Catch ex As Exception
            ' Restoring state is best-effort.  &lt;br /&gt;If it fails, the app will just come up with a new session.
        End Try
    End Function

End Module&lt;/pre&gt;

&lt;p&gt;In der Applikation Klasse app.xaml.vb wird dann diese aufgerufen wenn die Anwendung schlafen geht oder wieder aufwacht.&lt;/p&gt;

&lt;pre class="brush: vb; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;Protected Async Sub OnSuspending(ByVal sender As Object, &lt;br /&gt;ByVal args As SuspendingEventArgs) Handles Me.Suspending
        Dim deferral As SuspendingDeferral = args.SuspendingOperation.GetDeferral
        Await SuspensionManager.SaveAsync
        deferral.Complete()
End Sub

Protected Overrides Async Sub OnLaunched(ByVal args As LaunchActivatedEventArgs)
        If args.PreviousExecutionState = ApplicationExecutionState.Terminated Then
            ' Do a synchronous restore
            Await SuspensionManager.RestoreAsync

 End If&lt;/pre&gt;

&lt;p&gt;Spannend ist der Part in dem man per Getdeferral WinRT bittet die Anwendung vom Suspending zu verschonen. Schließlich kann das speichern ja etwas länger dauern und damit wird der 5 Sekunden Zyklus unterbrochen.&lt;/p&gt;

&lt;p&gt;Ob die Anwendung vom Suspended oder Terminated Modus kommt, spielt für das Restore der Settings natürlich eine Rolle.&lt;/p&gt;

&lt;p&gt;Im eigentlichen VB.NET Programmcode wird auch der Suspensionmanager um einer Art Session wie in ASP.NET relevanten Infos abzulegen. So kann das ausgewählte Listenelement&amp;#160; wieder hergestellt werden.&lt;/p&gt;

&lt;pre class="brush: vb; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;If SuspensionManager.SessionState.ContainsKey(&amp;quot;SelectedScenario&amp;quot;) Then
            Dim selectedScenarioName As String = &lt;br /&gt;TryCast(SuspensionManager.SessionState(&amp;quot;SelectedScenario&amp;quot;), String)
            startingScenario = &lt;br /&gt;TryCast(Me.FindName(selectedScenarioName), ListBoxItem)
End If&lt;/pre&gt;</description><pubDate>Wed, 23 May 2012 19:40:44 +0200</pubDate><a10:rights type="text">ppedv Team Blog</a10:rights><a10:contributor><a10:name>ppedv Team Blog</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">ppedv Team Blog</dc:creator></item><item><guid isPermaLink="true">http://del.icio.us/GeekDotNet#2012-05-22</guid><link>http://del.icio.us/GeekDotNet#2012-05-22</link><a10:author><a10:name>Marco Scheel</a10:name></a10:author><title>Links for 2012-05-22 [del.icio.us]</title><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://code-inside.de/blog/2012/05/22/github-for-windowserste-eindrcke/"&gt;GitHub for Windows&amp;ndash;erste Eindr&amp;uuml;cke | Code-Inside Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/marcoscheel/~4/zZss6qjeMMQ" height="1" width="1"/&gt;</description><pubDate>Wed, 23 May 2012 00:00:00 -0700</pubDate><a10:rights type="text">Marco Scheel</a10:rights><a10:contributor><a10:name>Marco Scheel</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marco Scheel</dc:creator></item><item><guid isPermaLink="false">http://code-inside.de/blog/?p=4389</guid><link>http://feedproxy.google.com/~r/Code-insideBlog/~3/gXU9oWlv_sc/</link><a10:author><a10:name>Code-Inside Blog</a10:name></a10:author><title>RavenHQ–RavenDB in der Cloud</title><description>&lt;div&gt;&lt;img width="150" height="150" src="http://code-inside.de/blog/wp-content/uploads/image1556-150x150.png" class="attachment-thumbnail wp-post-image" alt="image.png" title="image.png" style="margin-bottom: 15px;" /&gt;&lt;/div&gt;Ayende Rahien hat es heute verkündet – RavenHQ, der RavenDB Cloud Hoster (natürlich von und mit Ayende) ist ab heute raus aus der Beta und man kann es von überall aus nutzen. In der Betaphase waren nur Nutzer von AppHarbor zugelassen. Was ist RavenHQ? RavenHQ ist im Grunde ein gehostes RavenDB in den Rechenzentren von ...</description><pubDate>Tue, 22 May 2012 23:46:09 Z</pubDate><a10:rights type="text">Code-Inside Blog</a10:rights><a10:content type="html">&lt;div&gt;&lt;img width="150" height="150" src="http://code-inside.de/blog/wp-content/uploads/image1556-150x150.png" class="attachment-thumbnail wp-post-image" alt="image.png" title="image.png" style="margin-bottom: 15px;" /&gt;&lt;/div&gt;&lt;p&gt;Ayende Rahien hat &lt;a href="http://ayende.com/blog/156289/ravenhq-goes-out-of-beta"&gt;es heute verkündet&lt;/a&gt; – RavenHQ, der RavenDB Cloud Hoster (natürlich von und mit Ayende) ist ab heute raus aus der Beta und man kann es von überall aus nutzen. In der Betaphase waren nur Nutzer von AppHarbor zugelassen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was ist RavenHQ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ravenhq.com/"&gt;RavenHQ&lt;/a&gt; ist im Grunde ein gehostes &lt;a href="https://ravendb.net/"&gt;RavenDB&lt;/a&gt; in den Rechenzentren von &lt;a href="https://appharbor.com/"&gt;AppHarbor&lt;/a&gt;. Ähnliches wäre z.B. die SQL Variante auf Azure oder MongoHQ – eigentlich gibts zu fast allen NoSQL Lösungen auch Hoster &lt;img src='http://code-inside.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was hat man von RavenHQ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ein Wort: Backups. Vielleicht auch sechs: Die Jungs sind cleverer als ich. RavenHQ nimmt einen die Bürde des Datenbank Managements und fertig Backups an und spielt Updates ein. Nebenbei macht es natürlich den Einstieg in die Entwicklung mit RavenDB wesentlich einfacher. Wer RavenDB lieber selber hostet – auch kein Problem – es ist nur eine Variante RavenDB zu nutzen &lt;img src='http://code-inside.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt;  &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Erste Schritte in RavenHQ&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nach der völlig kostenlosen Anmeldung aur &lt;a href="https://ravenhq.com/"&gt;RavenHQ.com&lt;/a&gt; erblickt man eine schlanke Oberfläche. Erste Aufgabe: Eine Datenbank anlegen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image1557.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://code-inside.de/blog/wp-content/uploads/image_thumb718.png" width="599" height="212"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RavenHQ Preisspanne – von kostenlos bis 500$&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bei der Anlage einer Datenbank wählt man seine Plan aus. Solange man keine Rechnungsdaten hinterlegt hat gibt es aber nur die “Bronze” Variante. Diese ist kostenlos und reicht zum Experimentieren aus. Die einzelnen &lt;a href="https://ravenhq.com/Pricing"&gt;Featuresets sieht man hier&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image1558.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://code-inside.de/blog/wp-content/uploads/image_thumb719.png" width="601" height="613"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RavenHQ ConnectionString + ApiKey&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nach der Anlage der Datenbank kann man sich Details zur Datenbank anschauen (verbrauchter Speicherplatz), die Datenbank über “Admin Tasks” löschen und den Plan über “Upgrade” ändern. Wichtigster Punkt am Anfang ist der ConnectionString, welchen wir auch gleich benötigen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image1559.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://code-inside.de/blog/wp-content/uploads/image_thumb720.png" width="605" height="302"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Die Angaben sollten natürlich streng geheim bleiben – aber die Datenbank, welche hier abgebildet ist, existiert ohnehin nicht mehr &lt;img src='http://code-inside.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RavenDB Management – in the Cloud!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Natürlich kommt auch die Management Software mit. Der Link ist unter dem “Database Information” zu finden.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image1560.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://code-inside.de/blog/wp-content/uploads/image_thumb721.png" width="483" height="324"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image1561.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://code-inside.de/blog/wp-content/uploads/image_thumb722.png" width="484" height="376"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Demo Projekt&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Um zu zeigen wie easy das ist, mal eine winzige ASP.NET MVC DemoApp.&lt;/p&gt;
&lt;p&gt;Den RavenDB Client via NuGet runterladen:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/SNAGHTML670bb06.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML670bb06" border="0" alt="SNAGHTML670bb06" src="http://code-inside.de/blog/wp-content/uploads/SNAGHTML670bb06_thumb.png" width="479" height="331"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Achtung: Den Code würde ich so nicht in ernsthaften Projekten einsetzen!&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:0b819a51-6cd2-4d98-8f24-141f1d3d5d77" class="wlWriterEditableSmartContent"&gt;
&lt;pre name="code" class="c#"&gt;public ActionResult Index()
        {
            using (var documentStore = new DocumentStore { Url="https://1.ravenhq.com/databases/Robert0Muehsig-CodeInside", ApiKey="c4c3c135-e202-4a9e-b7d7-baa67298722a" })
			{
				documentStore.Initialize();

			    using(var session = documentStore.OpenSession())
			    {
			        var album = session.Load&amp;lt;Album&amp;gt;("albums/609");
                    ViewBag.Message = "Album Nr. 609 on RavenHQ cost about " + album.Price;
			    }

			}

            return View();
        }&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Nicht schön, aber dafür zeigen wir Daten von RavenHQ an!&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image1562.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://code-inside.de/blog/wp-content/uploads/image_thumb723.png" width="375" height="186"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Das Projekt findet ihr &lt;a href="https://github.com/Code-Inside/Samples/tree/master/2012/RavenHQ"&gt;hier&lt;/a&gt; – auch wenn es nicht wirklich viel ist &lt;img src='http://code-inside.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was gibt es Negatives?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Aktuell ist RavenHQ in US Rechenzentren gehostet, erst in ca. 2 Monaten stehen auch europäische Rechenzentren mit RavenDB bereit:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image1563.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://code-inside.de/blog/wp-content/uploads/image_thumb724.png" width="450" height="89"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Natürlich sollte man &lt;a href="http://code-inside.de/blog/2010/08/05/europische-data-center-von-microsoft-co-vs-us-patriot-act/"&gt;sich immer überlegen&lt;/a&gt;, ob man die Daten fremdhosten möchte und wenn es um sensible Kundendaten geht den Kunden entsprechend auch aufmerksam machen. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RavenDB Lizenzieren oder auf RavenHQ “mit nutzen”&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;RavenDB ist Open Source, allerdings benötigt man für &lt;a href="http://ravendb.net/licensing"&gt;den kommerziellen Einsatz eine Lizenz&lt;/a&gt;. Wer RavenHQ nutzt, bekommt auch für Closed Source Applikationen eine Lizenz. Damit relativiert sich der Preis doch noch um einiges wie ich finde.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Code-insideBlog/~4/gXU9oWlv_sc" height="1" width="1"/&gt;</a10:content><a10:contributor><a10:name>Code-Inside Blog</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Code-Inside Blog</dc:creator></item><item><guid isPermaLink="false">http://blog.ppedv.de/post.aspx?id=f619a06e-6630-4945-b9ef-8dbb89c018b1</guid><link>http://blog.ppedv.de/post/2012/05/22/Windows-8-flippt-aus.aspx</link><a10:author><a10:name>ppedv Team Blog</a10:name></a10:author><title>Windows 8 flippt aus</title><description>&lt;p&gt;Vermutlich wird es zwei Wege geben. Schlichtweg ignorieren oder Design Orgien mit Expression Blend. Windows 8 Anwendungen können in mindestens vier verschiedenen Layouts daher kommen. &lt;/p&gt;  &lt;p&gt;Relativ klar ist Hochformat oder Querformat. Man kann in Visual Studio 11 die METRO styled APP auch dazu zwingen in einem bestimmten Format zu starten.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.ppedv.de/image.axd?picture=image_197.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blog.ppedv.de/image.axd?picture=image_thumb_197.png" width="590" height="99" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Dazu kommt noch der jeweilige Flipped Mode der quasi das Bild um 180 Grad dreht und so den physikalischen Windows 8 Start Button nach oben bringt.&lt;/p&gt;  &lt;p&gt;Je nach Anwendungstyp kann es sinnvoll sein sich als Entwickler vorher festzulegen. Typische Reader werden meist im Hochformat arbeiten. Videos wird man eher quer betrachten.&lt;/p&gt;  &lt;p&gt;Dann sind da noch die flexiblen Anwendungen die alles können. Die Weather APP wird gerne als Beispiel genannt. Es gibt Fullscreen (ganzer Bildschirm), Snapped (Randdbereich)&amp;#160; und Filled(das dazwischen. Je in der Landscape und Portrait Variante.&lt;/p&gt;  &lt;p&gt;Das erkennen des aktuellen Zustandes gestaltet WinRT noch einfach&lt;/p&gt;  &lt;pre class="brush: vb; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;Private Sub UserControl36_Loaded(sender As Object, e As RoutedEventArgs) 

Handles Me.Loaded
        AddHandler ViewManagement.ApplicationView.GetForCurrentView().ViewStateChanged, 
AddressOf gedreht
End Sub

Private Async Function gedreht(sender As ApplicationView,

args As ApplicationViewStateChangedEventArgs) As Task
        Dim msg = New MessageDialog(args.ViewState.ToString)
        Await msg.ShowAsync

End Function&lt;/pre&gt;

&lt;p&gt;Wie&amp;#160; aber gestaltet man den XAML Code dazu? Die Beispiele arbeiten alle mit Viewstates. Es findet sich folgender VB.NET Beispiel Code dazu um den State zu wechseln.&lt;/p&gt;

&lt;pre class="brush: vb; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt; Private Sub MainPage_ViewStateChanged(ByVal sender As ViewManagement.ApplicationView,

ByVal args As Windows.UI.ViewManagement.ApplicationViewStateChangedEventArgs)
        Select Case args.ViewState
            Case Windows.UI.ViewManagement.ApplicationViewState.Filled
                VisualStateManager.GoToState(Me, &amp;quot;Fill&amp;quot;, False)
            Case Windows.UI.ViewManagement.ApplicationViewState.FullScreenPortrait
                VisualStateManager.GoToState(Me, &amp;quot;FullScreenPortrait&amp;quot;, False)
            Case Windows.UI.ViewManagement.ApplicationViewState.FullScreenLandscape
                VisualStateManager.GoToState(Me, &amp;quot;FullScreenLandscape&amp;quot;, False)
            Case Windows.UI.ViewManagement.ApplicationViewState.Snapped
                VisualStateManager.GoToState(Me, &amp;quot;Snapped&amp;quot;, False)
            Case Else
        End Select
    End Sub&lt;/pre&gt;

&lt;p&gt;Visual Studio 11 kann zwar exzellent XAML editieren, aber keine Animationen und damit auch Viewstates. Wenn man das nicht in XAML runtertippen möchte bleibt nur Expression Blend.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.ppedv.de/image.axd?picture=image_198.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://blog.ppedv.de/image.axd?picture=image_thumb_198.png" width="225" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dort kann man für jeden Status Animationen definieren. Diese können Controls auf dem Userinterface bewegen, drehen oder auch schmäler machen.&amp;#160; Man kann auch komplette Controls ein und Ausblenden und so aus einem Grid eine Listview machen. Bisher kenne ich keine Anwendung die das konsequent umsetzt.&lt;/p&gt;

&lt;p&gt;So wird beim Kalender aus einer Tagesansicht &lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.ppedv.de/image.axd?picture=Screenshot%20(42).png"&gt;&lt;img title="Screenshot (42)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Screenshot (42)" src="http://blog.ppedv.de/image.axd?picture=Screenshot%20(42)_thumb.png" width="416" height="236" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;in der snapped Darstellung eine Monats Übersicht,&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.ppedv.de/image.axd?picture=Screenshot%20(43).png"&gt;&lt;img title="Screenshot (43)" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="Screenshot (43)" src="http://blog.ppedv.de/image.axd?picture=Screenshot%20(43)_thumb.png" width="423" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Auch wenn der Visual State Manager von Expression Blend hilft, ein vollständiger Designer für die Sichten ist er nicht. So gehe ich davon aus das die ersten Windows 8 METRO Anwendungen aus dem Store alle nur auf eine Sicht hin optimiert sind. &lt;/p&gt;

&lt;p&gt;Nur wenige APPs werden auch im ersten Schritt die Notwendigkeit haben sozusagen aktiv auf der Seite zu laufen, gerade weil auch über Toasts Anwendungen im Suspended Modus sich beim Benutzer melden können.&lt;/p&gt;</description><pubDate>Tue, 22 May 2012 18:54:31 +0200</pubDate><a10:rights type="text">ppedv Team Blog</a10:rights><a10:contributor><a10:name>ppedv Team Blog</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">ppedv Team Blog</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10308801</guid><link>http://blogs.msdn.com/b/swiss_dpe_team/archive/2012/05/22/mit-kinect-for-windows-sdk-1-5-gestengesteurte-windows-apps-entwickeln.aspx</link><a10:author><a10:name>Swiss DPE Team [MS]</a10:name></a10:author><title>Mit Kinect for Windows SDK 1.5 gestengesteurte Windows-Apps entwickeln</title><description>&lt;p&gt;Mit dem &lt;a href="http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx"&gt;Kinect for Windows SDK 1.5&lt;/a&gt; kündigt der &lt;a href="http://blogs.msdn.com/b/kinectforwindows/"&gt;Kinect for Windows Blog&lt;/a&gt; nicht nur einen wichtigen Release an, sondern verspricht zusätzliche Verfügbarkeit der Hardware in weiteren Ländern. So wird auch in der Schweiz ab Juni 2012 Kinect für Desktop- oder Embedded-Systeme erhältlich sein. Mit dem Kinect for Windows SDK können eigene Anwendungen entwickelt werden, die dann vom Benutzer sowohl sprach- als gestengesteuert werden können. Dafür stehen u.a. Zugriff auf &lt;b&gt;Rohdaten-Streams&lt;/b&gt;, &lt;b&gt;Skeletal Tracking&lt;/b&gt;, sowie &lt;b&gt;erweiterte Audio-Funktionen&lt;/b&gt; für die Programmiersprachen C++, C# oder Visual Basic zur Verfügung. Interessante Beispiel-Anwendungen finden sich in der &lt;a href="http://www.microsoft.com/en-us/kinectforwindows/discover/gallery.aspx"&gt;Kinect-Gallery&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-86-80-metablogapi/0576.clip_5F00_image001_5F00_5ACEE876.png" width="578" height="450" /&gt;&lt;/p&gt;  &lt;p&gt;Die wohl auffälligste Änderung in der Version 1.5 ist das &lt;b&gt;Kinect Studio&lt;/b&gt;. Dank diesem Studio können Entwickler die Interaktionen aufzeichnen, wiedergeben und auch gleich debuggen. Das Software-Release enthält ausserdem eine &lt;b&gt;Face Tracking SDK&lt;/b&gt;, welches in Echtzeit ein 3D-Netz von Gesichtsmerkmalen (Kopf-, Augenbrauen-, Mundform-Bewegung, etc.) zur Verfügung stellt. Und ebenfalls neu wird Kinect for Windows neben dem ganzen Körper von stehenden Personen auch nur den Oberkörper von sitzenden Benutzern erkennen können. Das SDK enthält Treiber um die Kinect-Sensoren auf einem Computer mit Windows 7, Windows 8 Consumer Preview oder mit Windows Embedded Standard 7 laufen zulassen. Neben dem SDK ist auch ein &lt;a href="http://www.microsoft.com/en-us/kinectforwindows/develop/developer-downloads.aspx"&gt;Entwickler-Toolkit&lt;/a&gt; erhältlich, welches etliche Ressourcen zur Entwicklung und Beispiele zur Verfügung stellt. &lt;/p&gt;  &lt;p&gt;Wer heute schon mit dieser Technologie experimentieren möchte, der kann sich das aktuelle Kinect for Windows SDK 1.5 herunterladen, und falls vorhanden, die Xbox 360 Kinect Sensoren für Testzwecke mit Hilfe des Xbox 360 Kinect AC Adapters an den PC anhängen, bis die Kinect for Windows Hardware erhältlich ist. &lt;/p&gt;  &lt;p&gt;Weiterführende Informationen zu Kinect finden Sie auf der &lt;a href="http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/default.aspx"&gt;Kinect Infoseite&lt;/a&gt;. Interessante Einblicke in das Kinect Projekt und das Team dahinter werden auf dem &lt;a href="http://blogs.msdn.com/b/kinectforwindows/"&gt;Kinect Blog&lt;/a&gt; publiziert. Am schnellsten zum Experten in Sachen Kinect-Entwicklung werden Sie mit den &lt;a href="http://channel9.msdn.com/Series/KinectQuickstart"&gt;sechs Kinect for Winodws QuickStart Videos&lt;/a&gt; und den Kinect for Windows Quickstart Resources: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://channel9.msdn.com/Series/KinectSDKQuickstarts/Understanding-Kinect-Hardware"&gt;Installing and Using the Kinect Sensor&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/Series/KinectSDKQuickstarts/Getting-Started"&gt;Setting Up Your Development Environment&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/Series/KinectSDKQuickstarts/Skeletal-Tracking-Fundamentals"&gt;Skeletal Tracking Fundamentals&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/Series/KinectSDKQuickstarts/Camera-Fundamentals"&gt;Camera Fundamentals&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/Series/KinectSDKQuickstarts/Working-with-Depth-Data"&gt;Working with Depth Data&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/Series/KinectSDKQuickstarts/Audio-Fundamentals"&gt;Audio Fundamentals&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10308801" width="1" height="1"&gt;</description><pubDate>Tue, 22 May 2012 10:43:09 Z</pubDate><a10:rights type="text">Swiss DPE Team [MS]</a10:rights><a10:contributor><a10:name>Swiss DPE Team [MS]</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Swiss DPE Team [MS]</dc:creator></item><item><guid isPermaLink="false">http://www.st-lange.net/post.aspx?id=9de9da67-3887-42c0-ba39-b88ea48bf130</guid><link>http://www.st-lange.net/post/Consumer-Preview-eBooke-zu-Windows-8-von-Charles-Petzold.aspx</link><a10:author><a10:name>Stefan Lange</a10:name></a10:author><title>„Consumer Preview eBook“ zu Windows 8 von Charles Petzold</title><description>&lt;p&gt;„Programming Windows“ von Charles Petzold ist immer noch das Standardwerk zum Windows API. Jetzt, rund 25 Jahre nach der Erstausgabe, schreibt der Autor an der 6. Fassung. Inhaltlich ist das Buch allerdings aufgrund der Windows Runtime ein kompletter Neuanfang. Entwickler brauchen aber nicht bis zum Herbst auf die Fertigstellung zu warten, sondern können den aktuellen Stand schon jetzt als eBook kaufen.&lt;/p&gt;

&lt;center&gt;&lt;a href="http://shop.oreilly.com/product/0790145369079.do" target="_blank"&gt;
  &lt;img src="/samples/2012-05-Win8Petzold/PW6-Ebook1-Cover.png" style="border-style:none"/&gt;
&lt;/a&gt;&lt;/center&gt;

&lt;p&gt;Mit sieben Kapiteln und etwa 300 Seiten hat das Werk jetzt ca. ein Drittel des geplanten Umfangs. Der Beispielcode im Buch ist in C# geschrieben und kann nach dem Kauf heruntergeladen werden. Zusätzlich gibt es auch eine C++/CX Version aller Beispielsprogramme.&lt;/p&gt;

&lt;p&gt;Bis Ende Mai kann man das eBook für 10 Dollar kaufen, danach wird es stufenweise teurer. Weitere Updates bis zum fertigen Buch sind in diesem Preis inbegriffen.&lt;/p&gt;

&lt;h2&gt;Der Autor&lt;/h2&gt;

&lt;p&gt;Es gibt zwei Dinge, die ich an Petzold besonders schätze. Zum einen kann er hervorragend erklären. Durch sein Buch „3D Programming for Windows“ habe ich beispielsweise zum ersten Mal wirklich verstanden, was Quaternionen sind und wie man damit rechnet. Zum anderen geht er auf viele Details ein und experimentiert mit den APIs. Antworten zu komplizierten WPF Problemen habe ich fast immer in seinem Buch gefunden und nicht in meinen beiden anderen WPF Büchern. Dass manche seinen Stil kritisieren, weil er sehr penibel systematisch erklärt und oft ins Detail geht, kann ich nicht so ganz nachvollziehen. Für mich ist gerade das ein Vorzug des Autors.&lt;/p&gt;

&lt;h2&gt;Das Buch&lt;/h2&gt;

&lt;p&gt;Das Buch behandelt ausschließlich die neue Windows Runtime zur Erstellung von Metro Apps. Die bisherigen 7 Kapitel sind wie gewohnt gut strukturiert und mit vielen farbigen Quellcodeauszügen und Screenshots angereichert. Vorkenntnisse in WPF oder Silverlight werden nicht vorausgesetzt. Wer sie allerdings hat, kann sein Wissen praktisch vollständig wiederverwenden. Zum Buch gehören aktuell 79 Beispielprogramme (jeweils in C# und C++/CX).&lt;/p&gt;

&lt;p&gt;Auf mich macht diese Preview Version einen guten Eindruck und wird wahrscheinlich zu einem umfassenden Werk zu den technischen Aspekten der Windows Metro App-Programmierung anwachsen. 10 Dollar ist ein fairer Preis und auch der Kauf bei oreilly.com verlief problemlos.&lt;/p&gt;

&lt;p&gt;Hier der Link zu &lt;a href="http://www.charlespetzold.com/blog/2012/05/Programming-Windows-6th-Edition-Preview-Ebook-Is-Here.html" target="_blank"&gt;Petzolds Blog-Artikel&lt;/a&gt;&lt;/p&gt;
</description><pubDate>Tue, 22 May 2012 09:35:00 +0200</pubDate><a10:rights type="text">Stefan Lange</a10:rights><a10:contributor><a10:name>Stefan Lange</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Stefan Lange</dc:creator></item><item><guid isPermaLink="false">http://code-inside.de/blog/?p=4360</guid><link>http://feedproxy.google.com/~r/Code-insideBlog/~3/o0nGrfczulg/</link><a10:author><a10:name>Code-Inside Blog</a10:name></a10:author><title>GitHub for Windows–erste Eindrücke</title><description>&lt;div&gt;&lt;img width="150" height="150" src="http://code-inside.de/blog/wp-content/uploads/image1551-150x150.png" class="attachment-thumbnail wp-post-image" alt="image.png" title="image.png" style="margin-bottom: 15px;" /&gt;&lt;/div&gt;Git ist schon eine tolle Sachen und eröffnet viele neue Möglichkeiten – allerdings ist der Einstieg recht hart und selbst wenn man die guten Hilfsanleitungen auf GitHub befolgt, kommt man am Anfang nur langsam vorwärt. Insbesondere ist das Tooling für Windows / .NET Entwickler auch nicht gerade “bekanntes Terrain”. GitHub to the rescue! Die GitHub ...</description><pubDate>Mon, 21 May 2012 23:22:28 Z</pubDate><a10:rights type="text">Code-Inside Blog</a10:rights><a10:content type="html">&lt;div&gt;&lt;img width="150" height="150" src="http://code-inside.de/blog/wp-content/uploads/image1551-150x150.png" class="attachment-thumbnail wp-post-image" alt="image.png" title="image.png" style="margin-bottom: 15px;" /&gt;&lt;/div&gt;&lt;p&gt;Git ist schon eine tolle Sachen und eröffnet viele neue Möglichkeiten – allerdings ist der &lt;a href="http://code-inside.de/blog/2011/08/05/einstieg-in-git-fr-net-entwickler/"&gt;Einstieg recht hart&lt;/a&gt; und selbst wenn man die guten Hilfsanleitungen auf GitHub befolgt, kommt man am Anfang nur langsam vorwärt. Insbesondere ist das Tooling für Windows / .NET Entwickler auch nicht gerade “bekanntes Terrain”. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GitHub to the rescue!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Die &lt;a href="https://github.com/blog/1127-github-for-windows"&gt;GitHub Jungs&lt;/a&gt;, darunter z.B. &lt;a href="http://haacked.com/archive/2012/05/21/introducing-github-for-windows.aspx"&gt;Phil Haack&lt;/a&gt;, haben das Problem erkannt und der erste Eindruck sieht ziemlich gut aus.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://windows.github.com/"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://code-inside.de/blog/wp-content/uploads/image1551.png" width="606" height="358"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was ist GitHub for Windows?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Einerseits ist es die Brücke zur GitHub.com Seite – man sieht seine Repositories und kann diese direkt klonen. Auf der anderen Seite wird z.B. automatisch &lt;a href="http://haacked.com/archive/2011/12/13/better-git-with-powershell.aspx"&gt;PoSh-Git&lt;/a&gt; installiert. Für den Einstieg in Git auf alle Fälle hilfreich. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Runterladen&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://windows.github.com/"&gt;Runterladen kann man es hier&lt;/a&gt; und es soll sich auch selbst mit Updates versorgen können.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Erste Schritte&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Eine schicke “Metro”-look-a-like App begrüßt uns und möchte die Credentials zu GitHub haben. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/SNAGHTML1523cf6.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML1523cf6" border="0" alt="SNAGHTML1523cf6" src="http://code-inside.de/blog/wp-content/uploads/SNAGHTML1523cf6_thumb.png" width="565" height="324"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nach dem Login werden die Basis-Einstellungen für Git vorgenommen (gitconfig).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/SNAGHTML152f7111.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML152f711" border="0" alt="SNAGHTML152f711" src="http://code-inside.de/blog/wp-content/uploads/SNAGHTML152f711_thumb1.png" width="573" height="333"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Leider hab ich versehentlich den 3. Schritt übersprungen, daher hatte ich nur meine Repositories gehen, welche auf GitHub.com liegen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/SNAGHTML15646781.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTML1564678" border="0" alt="SNAGHTML1564678" src="http://code-inside.de/blog/wp-content/uploads/SNAGHTML1564678_thumb1.png" width="570" height="331"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Per Drag-n-Drop kann man aber lokale Repositories in die Anwendung holen und man sieht seine gesamte Historie und wie der Stand ist.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image1555.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://code-inside.de/blog/wp-content/uploads/image_thumb716.png" width="565" height="328"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Auf zur Shell&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Git benutzt sich aber auch hervorragend von der Kommandozeile. Meist hatte man mich &lt;a href="http://code.google.com/p/msysgit/"&gt;msysGit&lt;/a&gt; und der Bash gekämpft. GitHub for Windows installiert aber automatisch Posh-Git für die Powershell mit. Man kann allerdings frei wählen, welche Shell man am Ende benutzen möchte.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/SNAGHTML158b071.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="SNAGHTML158b071" border="0" alt="SNAGHTML158b071" src="http://code-inside.de/blog/wp-content/uploads/SNAGHTML158b071_thumb.png" width="559" height="413"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image4100.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://code-inside.de/blog/wp-content/uploads/image4_thumb.png" width="564" height="324"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was es nicht ist…&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;GitHub for Windows ist trotzdem keine komplette GUI für alle Befehle von Git und klingt sich auch nicht ins Visual Studio etc. ein. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fazit&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Wer GitHub Repositories hat und auf Windows arbeitet: Installieren. Wie (und ob) es sich überhaupt mit anderen Git Hostern (&lt;a href="http://code-inside.de/blog/2012/03/30/codeplex-wird-modernisiert/"&gt;Codeplex&lt;/a&gt; z.B.) verträgt kann ich leider nicht sagen. Auch die UI mit dem Metro-look ist durchaus angenehm &lt;img src='http://code-inside.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image1554.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://code-inside.de/blog/wp-content/uploads/image_thumb715.png" width="122" height="100"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Wie ist deine Meinung zu &lt;a href="http://www.knowyourstack.com/what-is/github"&gt;GitHub&lt;/a&gt; und &lt;a href="http://www.knowyourstack.com/what-is/git"&gt;Git&lt;/a&gt;? Was ist gut bei GitHub? Was ist schlecht an Git? Dann könnt ihr das gerne auf &lt;a href="http://www.knowyourstack.com/"&gt;KnowYourStack&lt;/a&gt; mitteilen &lt;img src='http://code-inside.de/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /&gt;  (das Projekt wird natürlich auch auf GitHub gehostet). &lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Code-insideBlog/~4/o0nGrfczulg" height="1" width="1"/&gt;</a10:content><a10:contributor><a10:name>Code-Inside Blog</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Code-Inside Blog</dc:creator></item><item><guid isPermaLink="false">http://blog.ppedv.de/post.aspx?id=db56eb58-6f8d-45f9-8f10-9d4c536d85a6</guid><link>http://blog.ppedv.de/post/2012/05/21/MVVM-mit-weniger-Code.aspx</link><a10:author><a10:name>ppedv Team Blog</a10:name></a10:author><title>MVVM mit weniger Code</title><description>&lt;p&gt;Durch Zufall bin ich darüber gestolpert. In Windows 8 Projekten legt Visual Studio 11 im Common Verzeichnis eine Klasse BindableBase an. Diese kapselt, auch dank eines neuen Attributes CallerMemberName in .NET 4.5, sehr elegant den Code für die Implementierung des Event Systems.&lt;/p&gt;  &lt;p&gt;Dies ist nötig um den View, als das per XAML definierte Userinterface, über Änderungen an den Daten zu informieren.&lt;/p&gt;  &lt;p&gt;Der bisherige Ansatz implementiert das Interface INotifyPropertyChanged in der Viewmodell Klasse. Dann wird das Event per RaiseEvent für jede Eigenschaft einzeln gefeuert. Aber nur wenn die Daten sich auch geändert haben.&lt;/p&gt;  &lt;pre class="brush: vb; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) 
Implements INotifyPropertyChanged.PropertyChanged 
    
Private _BenutzerName As String    
    Public Property BenutzerName() As String        
        Get          
           Return _BenutzerName 
        End Get 
        Set(ByVal value As String) 
            If _BenutzerName &amp;lt;&amp;gt; value Then 
                _BenutzerName = value 
                RaiseEvent PropertyChanged(Me, &lt;br /&gt;New PropertyChangedEventArgs(&amp;quot;BenutzerName&amp;quot;)) 
            End If

        End Set 
   End Property 
End Class&lt;/pre&gt;

&lt;p&gt;Auch wenn das Raisevent in der Praxis meist in eine Methode OnPropertyChanged gekapselt wird, noch ganz schien viel Code.&lt;/p&gt;

&lt;p&gt;Nun zum Vergleich der ungleich schönere Code mit der geerbten BindableBase Implementierung. Vor allem die unschöne und von Intellisense nicht unterstützte Schreibweise mit dem PropertyName als String fällt weg.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;pre class="brush: vb; auto-links: true; collapse: false; first-line: 1; gutter: true; html-script: false; light: false; ruler: false; smart-tabs: true; tab-size: 4; toolbar: true;"&gt;Public Class PersonViewModel
    Inherits BindableBase

    Private _BenutzerName As String
    Public Property BenutzerName() As String
        Get
            Return _BenutzerName
        End Get
        Set(ByVal value As String)
            _BenutzerName = value
            SetProperty(_BenutzerName, value)
        End Set
    End Property&lt;/pre&gt;



&lt;p&gt;Das VB.NET Codebeispiel wurde in WinRT geschrieben, sollte auch in .NET 4.5 Windows Desktop Anwendungen funktionieren.&lt;/p&gt;</description><pubDate>Mon, 21 May 2012 20:37:02 +0200</pubDate><a10:rights type="text">ppedv Team Blog</a10:rights><a10:contributor><a10:name>ppedv Team Blog</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">ppedv Team Blog</dc:creator></item><item><guid isPermaLink="false">http://blog.schelian.de/?p=1958</guid><link>http://blog.schelian.de/2012/05/fritzbox-7390-nortel-vpn-client-vpn-tunnel-is-disconnected-due-to-routing-table-change/</link><a10:author><a10:name>Hans-Peter Schelian</a10:name></a10:author><title>Fritzbox 7390 – Nortel VPN Client – VPN tunnel is disconnected due to routing table change</title><description>Nachdem ich vor einigen Wochen in meinem Homeoffice einen DSL Speedport von der Telekom gegen eine Fritzbox 7390 ausgetauscht habe, kam es bei der Verwendung der Nortel VPN Client Software zu ständigen Verbindungsabbrüchen. Da ich dieses Verhalten kurz nach dem &amp;#8230; &lt;a href="http://blog.schelian.de/2012/05/fritzbox-7390-nortel-vpn-client-vpn-tunnel-is-disconnected-due-to-routing-table-change/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;</description><pubDate>Mon, 21 May 2012 12:29:38 Z</pubDate><a10:rights type="text">Hans-Peter Schelian</a10:rights><a10:content type="html">&lt;p&gt;Nachdem ich vor einigen Wochen in meinem Homeoffice einen DSL Speedport von der Telekom gegen eine Fritzbox 7390 ausgetauscht habe, kam es bei der Verwendung der Nortel VPN Client Software zu ständigen Verbindungsabbrüchen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.schelian.de/wp-content/uploads/2012/05/image.png"&gt;&lt;img style="background-image: none; margin: 0px 7px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2012/05/image_thumb.png" alt="image" width="244" height="46" align="left" border="0" /&gt;&lt;/a&gt;Da ich dieses Verhalten kurz nach dem Einsatz der Fritzbox festgestellt habe, lag die Vermutung, dass es mit der Fritzbox zusammenhängt, natürlich mehr als nah.&lt;/p&gt;
&lt;p&gt;Um die Vermutung zu verfestigen oder zu wiederlegen, habe ich mit der gleichen Hardware in verschiedenen Netzwerkumgebungen getestet, ob das Problem nicht doch an meinem Rechner oder der Konfiguration liegen könnte.&lt;/p&gt;
&lt;p&gt;Das war aber nicht der Fall, das Problem trat nur in meinem Homeoffice auf.&lt;/p&gt;
&lt;p&gt;Was lag also näher als den Support von AMV anzuschreiben um ihm meine Probleme zu schildern.&lt;/p&gt;
&lt;p&gt;Gesagt getan und folgendes E-Mail an den Support gesendet:&lt;/p&gt;
&lt;p&gt;&amp;gt;&amp;gt;&amp;gt;=================  START MAIL vom 03.05.2012 ================&amp;gt;&amp;gt;&amp;gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Hallo Support Team,&lt;/p&gt;
&lt;p&gt;Ich verwende den Nortel VPN Client Version 10.04.016 um eine VPN Verbindung zu einem Firmennetzwerk herzustellen.&lt;/p&gt;
&lt;p&gt;Ich kann die Verbindung herstellen, nach kurzer Zeit (nach einigen Sekunden bis Minuten) wird die Verbindung getrennt und es erscheint folgende&lt;/p&gt;
&lt;p&gt;Fehlermeldung:&lt;/p&gt;
&lt;p&gt;&amp;#8220;VPN tunnel is disconnected due to routing table change&amp;#8221;.&lt;/p&gt;
&lt;p&gt;Wenn ich den gleichen Rechner in meinem Büronetzwerk verwende in dem ich einen Router von Vodafone einsetze funktioniert der VPN Zugang zum selben Firmennetzwerk den ganzen Tag ohne Unterbrechung.&lt;/p&gt;
&lt;p&gt;Auf das VPN des Firmennetzwerk habe ich keinen Einfluss (das ist aber auch obsolet, da es für über 100000 Mitarbeiter weltweit funktioniert.&lt;/p&gt;
&lt;p&gt;Für mich auch, wenn ich es nicht mit der FritzBox 7390 aus dem Homeoffice heraus verwende.&lt;/p&gt;
&lt;p&gt;Der 7390 ist an einem VDSL 50000 Anschluss angeschlossen und funktioniert bis auf dieses VPN Problem ohne weitere Einschränkung. Leider kann ich ohne dieses VPN mein Homeoffice nicht nutzen &lt;img src='http://blog.schelian.de/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /&gt;  .&lt;/p&gt;
&lt;p&gt;Ich hoffe Sie haben Lösungsansätze für mich&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;gt;&amp;gt;&amp;gt;================= ENDE MAIL vom 03.05.2012 ================&amp;gt;&amp;gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Nicht gut aber schnell, nämlich am gleichen Tag habe ich dann eine erste Antwort erhalten&lt;/p&gt;
&lt;p&gt;&amp;lt;&amp;lt;&amp;lt;================= START MAIL vom 03.05.2012 ===================&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align="left"&gt;Guten Tag Herr Schelian,&lt;/p&gt;
&lt;p align="left"&gt;vielen Dank für Ihre Anfrage an den AVM-Support.&lt;/p&gt;
&lt;p align="left"&gt;Tipps und Hinweise zu VPN-Lösungen anderer Hersteller finden Sie in folgendem&lt;/p&gt;
&lt;p align="left"&gt;Link:&lt;/p&gt;
&lt;p align="left"&gt;&lt;a href="http://service.avm.de/support/de/SKB/FRITZ-Box-7390/243:VPN-Loesung-eines-andere"&gt;http://service.avm.de/support/de/SKB/FRITZ-Box-7390/243:VPN-Loesung-eines-andere&lt;/a&gt;&lt;/p&gt;
&lt;p align="left"&gt;n-Herstellers-mit-FRITZ-Box-verbinden&lt;/p&gt;
&lt;p align="left"&gt;Über die Tipps in unserer FAQ hinaus leisten wir keinen Support für lokale oder individuelle VPN-Szenarien mit der Software anderer Hersteller.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;&amp;lt;&amp;lt;================= ENDE MAIL vom 03.05.2012 ===================&lt;/p&gt;
&lt;p&gt;Außer einem Link zu einer furchtbaren FAQ die so überhaupt nichts mit dem von mir geschilderten Problem zu tun hat, nur “Schön dass Sie uns geschrieben haben”.&lt;/p&gt;
&lt;p&gt;Aber ich wäre nicht Ich, wenn ich mich damit zufrieden gegeben hätte.&lt;/p&gt;
&lt;p&gt;Also habe ich 2 Tage später folgendes Mail an den Support zurückgeschrieben:&lt;/p&gt;
&lt;p&gt;==================== START MAIL vom 05.05.2012 ================&amp;gt;&amp;gt;&amp;gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Hallo Support Team,&lt;/p&gt;
&lt;p&gt;leider hat mir Ihr Hinweis nicht geholfen.&lt;/p&gt;
&lt;p&gt;Natürlich hatte ich bevor ich Sie kontaktiert habe die Q&amp;amp;A auf Ihrer Webseite angeschaut.&lt;/p&gt;
&lt;p&gt;Ich nehme an, dass Sie mein Problem nicht richtig verstanden haben, ich versuche nicht mit irgendeiner VPN Lösung auf die Fritzbox zuzugreifen, sondern aus dem Netz welches über die Fritzbox über das Internet hergestellt hat auf ein Weltweites VPN Firmennetzwerk zuzugreifen.&lt;/p&gt;
&lt;p&gt;Wie ich bereits in meiner ersten Nachricht geschrieben habe, kann ich mit dem gleichen Notebook aus meinem Firmennetz an dem ein Vodafone Router die Verbindung ins Internet herstellt, ohne Problem auf das externe VPN Netzwerk zugreifen.&lt;/p&gt;
&lt;p&gt;Über einen Mobilen WLAN Hotspot funktioniert der Zugriff ebenfalls.&lt;/p&gt;
&lt;p&gt;Eben nur nicht sobald ich über den Internetzugang gehe der über die Fritzbox hergestellt wird.&lt;/p&gt;
&lt;p&gt;Ich hoffe dass Sie mir weiterhelfen können.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;==================== ENDE MAIL vom 08.05.2012 ================&amp;gt;&amp;gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Und tatsächlich erhalte ich nach nur 3 Tagen wieder eine Antwort&lt;/p&gt;
&lt;p&gt;&amp;lt;&amp;lt;&amp;lt;================= START MAIL vom 05.05.2012 ===================&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Guten Tag Herr Schelian,&lt;/p&gt;
&lt;p&gt;vielen Dank für Ihre Rückmeldung.&lt;/p&gt;
&lt;p&gt;Es tut mir leid, aber wir supporten wie erwähnt keine individuellen lokalen&lt;/p&gt;
&lt;p&gt;VPN-Szenarien.&lt;/p&gt;
&lt;p&gt;Freundliche Grüße aus Berlin&lt;/p&gt;
&lt;p&gt;Dirk Jarius (AVM Support)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;&amp;lt;&amp;lt;================= ENDE MAIL vom 08.05.2012 ===================&lt;/p&gt;
&lt;p&gt;Es tut mir auch leid, ich konnte mir nicht verkneifen noch einmal zurück zu schreiben&lt;/p&gt;
&lt;p&gt;==================== START MAIL vom 10.05.2012 ================&amp;gt;&amp;gt;&amp;gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Hallo Herr Jarius,&lt;/p&gt;
&lt;p&gt;wenn das die Meinung von AVM ist!&lt;/p&gt;
&lt;p&gt;Ich finde zwar nicht dass es sich bei meinem Problem im ein VPN Problem sondern um ein Router bzw. Firewall Problem Ihres Routers handelt. Aus irgend einem Grund ändert der Router die Routing Table und stört damit die bestendende Verbindung zu meinem VPN Server.&lt;/p&gt;
&lt;p&gt;Vor allem wo dies mit verschiedener Firmware mal besser mal schlechter wird.&lt;/p&gt;
&lt;p&gt;Mit der letzten Aktualisierung gerade mal wieder schlechter, bzw. mal wieder gar nicht benutzbar.&lt;/p&gt;
&lt;p&gt;Dann werde ich wohl keine Fritz Router mehr einsetzen können.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;==================== ENDE MAIL vom 10.05.2012 ================&amp;gt;&amp;gt;&amp;gt;&lt;/p&gt;
&lt;p&gt;Aber wer denkt, der AVM Support würde aufgeben, der täuscht, ich erhalte also noch einmal eine Mail vom AVM Support&lt;/p&gt;
&lt;p&gt;&amp;lt;&amp;lt;&amp;lt;================ START MAIL vom 11.05.2012 ===================&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Guten Tag Herr Schelian,&lt;/p&gt;
&lt;p&gt;vielen Dank für Ihre Rückmeldung.&lt;/p&gt;
&lt;p&gt;Mein Kollege hat hier völlig recht. Es gibt hier keinen kausalen Zusammenhang mit der FRITZ!Box. Lesen Sie sich bitte dies hier in Ruhe&lt;/p&gt;
&lt;p&gt;durch:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.michaelfmcnamara.com/2010/03/nortel-vpn-client-release-10-04-016-for-windows-7/#comment-3602"&gt;http://blog.michaelfmcnamara.com/2010/03/nortel-vpn-client-release-10-04-016-for-windows-7/#comment-3602&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dort ist exakt die Fehlermeldung aufgegriffen und auch die Ursache und eine Lösung beschrieben.&lt;/p&gt;
&lt;p&gt;Freundliche Grüße aus Berlin&lt;/p&gt;
&lt;p&gt;Eddy Schuhmacher (AVM Support)&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;lt;&amp;lt;&amp;lt;================= ENDE MAIL vom 11.05.2012 ===================&lt;/p&gt;
&lt;p&gt;Ich habe dort zwar keine Lösung für mein Problem gefunden, aber immerhin einen Workaround und konnte damit tatsächlich ermitteln, dass das Problem mit dem 7390 nur mit WLAN auftritt und nicht wenn ich den Rechner per Kabel angeschlossen habe.&lt;/p&gt;
&lt;p&gt;Eigentlich hätte man die Sache damit bewenden lassen können, aber ich wäre nicht Ich wenn ich das Problem nicht an der Wurzel packen wollte.&lt;/p&gt;
&lt;p&gt;Und so habe ich mich auf die Suche nach den Unterschieden in den verschiedenen W-LAN Netzen gemacht.&lt;/p&gt;
&lt;p&gt;Um das ganze hier nicht ausufern zu lassen möchte ich nun aber zur Lösung des Problem kommen.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Hallo AVM Support hört gut zu, es gibt eine Fritz7390 Lösung für mein VPN spezifisches Problem.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Unter WLAN&amp;#8211;&amp;gt;Funkkanal gibt es eine Einstellung:&lt;/p&gt;
&lt;p&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2012/05/image1.png" alt="image" width="644" height="313" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Für 300 Mbit/s optimierte Kanäle verwenden.&lt;/p&gt;
&lt;p&gt;Und diese Option ist im Default gesetzt (&lt;strong&gt;Und muss ausgeschaltet werden&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;Das einschalten dieser Option führt dazu, dass die Fritzbox anstelle eines einzelnen Kanals einen Doppelkanal zum Beispiel Kanal 8 und Kanal 12 verwendet, und in diesem Zusammenhang kommt es zu wohl irgendwie zum internen Umschreiben der Routing Table oder irgend einem anderen Fritzbox internen Problem, dass zu dem in diesem Artikel beschriebenen Abbruch der VPN Verbindung kommt.&lt;/p&gt;
&lt;p&gt;Übrigens konnte ich noch einen Zusammenhang mit dieser Einstellung feststellen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.schelian.de/wp-content/uploads/2012/05/image2.png"&gt;&lt;img style="background-image: none; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.schelian.de/wp-content/uploads/2012/05/image_thumb1.png" alt="image" width="212" height="112" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Bei der Musik Übertagung vom iPhone/iPad via AirPlay auf einen Verstärker kam es immer wieder zu kurzen Unterbrechungen (Aussetzern)!&lt;/p&gt;
&lt;p&gt;Diese sind nun auch verschwunden.&lt;/p&gt;
&lt;p&gt;Hallo AVM Support Team, es war mir eine Freude behilflich sein zu können.&lt;/p&gt;
&lt;p&gt;Ich schicke euch den Link per Mail, dann könnt Ihr eure FAQ ergänzen&lt;/p&gt;
&lt;div class="google_plus_one"&gt;&lt;g:plusone size="medium" count="true" url="http://blog.schelian.de/2012/05/fritzbox-7390-nortel-vpn-client-vpn-tunnel-is-disconnected-due-to-routing-table-change/"&gt;&lt;/g:plusone&gt;&lt;/div&gt;&lt;div align="right"&gt;&lt;a href="http://twitter.com/SchelianHP" target="_blank"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/igit-follow-me-after-post-button-new/twitter11.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;a href="http://twitter.com/share?url=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Ffritzbox-7390-nortel-vpn-client-vpn-tunnel-is-disconnected-due-to-routing-table-change%2F&amp;amp;url=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Ffritzbox-7390-nortel-vpn-client-vpn-tunnel-is-disconnected-due-to-routing-table-change%2F" target="_blank" rel="nofollow" title="Twitter"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/wp-most-simple-social-bookmarks/images/twitter.png" alt="Twitter" title="Twitter" /&gt;&lt;/a&gt;
&lt;a href="http://del.icio.us/post?url=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Ffritzbox-7390-nortel-vpn-client-vpn-tunnel-is-disconnected-due-to-routing-table-change%2F&amp;amp;title=Fritzbox+7390+-+Nortel+VPN+Client+-+VPN+tunnel+is+disconnected+due+to+routing+table+change" target="_blank" rel="nofollow" title="del.icio.us"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/wp-most-simple-social-bookmarks/images/delicious2.png" alt="del.icio.us" title="del.icio.us" /&gt;&lt;/a&gt;
&lt;a href="http://digg.com/submit?phase=2&amp;amp;url=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Ffritzbox-7390-nortel-vpn-client-vpn-tunnel-is-disconnected-due-to-routing-table-change%2F&amp;amp;title=Fritzbox+7390+-+Nortel+VPN+Client+-+VPN+tunnel+is+disconnected+due+to+routing+table+change" target="_blank" rel="nofollow" title="Digg"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/wp-most-simple-social-bookmarks/images/digg.png" alt="Digg" title="Digg" /&gt;&lt;/a&gt;
&lt;a href="http://facebook.com/sharer.php?u=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Ffritzbox-7390-nortel-vpn-client-vpn-tunnel-is-disconnected-due-to-routing-table-change%2F&amp;amp;t=Fritzbox+7390+-+Nortel+VPN+Client+-+VPN+tunnel+is+disconnected+due+to+routing+table+change" target="_blank" rel="nofollow" title="Facebook"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/wp-most-simple-social-bookmarks/images/facebook.png" alt="Facebook" title="Facebook" /&gt;&lt;/a&gt;
&lt;a href="http://www.linkedin.com/shareArticle?url=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Ffritzbox-7390-nortel-vpn-client-vpn-tunnel-is-disconnected-due-to-routing-table-change%2F&amp;amp;title=Fritzbox+7390+-+Nortel+VPN+Client+-+VPN+tunnel+is+disconnected+due+to+routing+table+change" target="_blank" rel="nofollow" title="linked-in"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/wp-most-simple-social-bookmarks/images/linkedin.png" alt="linked-in" title="linked-in" /&gt;&lt;/a&gt;
&lt;a href="http://buzz.yahoo.com/submit?submitUrl=Fritzbox+7390+-+Nortel+VPN+Client+-+VPN+tunnel+is+disconnected+due+to+routing+table+change&amp;amp;u=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Ffritzbox-7390-nortel-vpn-client-vpn-tunnel-is-disconnected-due-to-routing-table-change%2F" target="_blank" rel="nofollow" title="Yahoo Buzz"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/wp-most-simple-social-bookmarks/images/yahoo.png" alt="Yahoo Buzz" title="Yahoo Buzz" /&gt;&lt;/a&gt;
&lt;a href="http://stumbleupon.com/submit?url=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Ffritzbox-7390-nortel-vpn-client-vpn-tunnel-is-disconnected-due-to-routing-table-change%2F&amp;amp;title=Fritzbox+7390+-+Nortel+VPN+Client+-+VPN+tunnel+is+disconnected+due+to+routing+table+change&amp;amp;newcomment=Fritzbox+7390+-+Nortel+VPN+Client+-+VPN+tunnel+is+disconnected+due+to+routing+table+change" target="_blank" rel="nofollow" title="StumbleUpon"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/wp-most-simple-social-bookmarks/images/su.png" alt="StumbleUpon" title="StumbleUpon" /&gt;&lt;/a&gt;



</a10:content><a10:contributor><a10:name>Hans-Peter Schelian</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Hans-Peter Schelian</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10305782</guid><link>http://blogs.msdn.com/b/hsirtl/archive/2012/05/21/video-reihe-zu-windows-azure-folge-12-was-ist-das-windows-azure-content-delivery-network.aspx</link><a10:author><a10:name>Holger Sirtl</a10:name></a10:author><title>Video-Reihe zu Windows Azure – Folge 12: Was ist das Windows Azure Content Delivery Network?</title><description>&lt;p&gt;Das Content Delivery Network (CDN) ist ein Verbund von Windows Azure Rechenzentren, die weltweit verteilt sind. Im CDN können Inhalte aus Windows Azure Blob Storage für einen bestimmten Zeitraum gecached werden und somit eine effiziente Auslieferung von Inhalten des Blob Storage sicherstellen: Ein Anwender erhält beim Zugriff Blob Storage Inhalte aus dem für ihn nächstgelegenen Rechenzentrum ausgeliefert. Ich gebe in dem Video einen Überblick über das CDN, Hinweise darauf, worauf bei dessen Nutzung geachtet werden muss und zeige Aktivierung und Deaktivierung des CDN am Beispiel.&lt;/p&gt;  &lt;p&gt;Hier das Video: &lt;a href="http://youtu.be/c4X__Fl53LE"&gt;Was ist das Windows Azure Content Delivery Network?&lt;/a&gt; [10:20]&lt;/p&gt;  &lt;p&gt;&lt;iframe height="315" src="http://www.youtube.com/embed/c4X__Fl53LE" frameborder="0" width="560" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;Weitere Informationen&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Video: &lt;a href="http://youtu.be/c4X__Fl53LE"&gt;Was ist das Windows Azure Content Delivery Network?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Video: &lt;a href="http://youtu.be/LIdstrOcgLo"&gt;Was ist Windows Azure Blob Storage?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=kLfaa_19yB4&amp;amp;list=PLC71216BDE26EBE8C"&gt;Video-Playlist zu Windows Azure auf YouTube&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10305782" width="1" height="1"&gt;</description><pubDate>Mon, 21 May 2012 07:39:00 Z</pubDate><a10:rights type="text">Holger Sirtl</a10:rights><a10:contributor><a10:name>Holger Sirtl</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Holger Sirtl</dc:creator></item><item><guid isPermaLink="true">http://del.icio.us/GeekDotNet#2012-05-20</guid><link>http://del.icio.us/GeekDotNet#2012-05-20</link><a10:author><a10:name>Marco Scheel</a10:name></a10:author><title>Links for 2012-05-20 [del.icio.us]</title><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.technet.com/b/lukeb/archive/2012/05/20/sharepoint-remoting-ps.aspx"&gt;SharePoint - remoting PS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/marcoscheel/~4/rt1pD9BUf5U" height="1" width="1"/&gt;</description><pubDate>Mon, 21 May 2012 00:00:00 -0700</pubDate><a10:rights type="text">Marco Scheel</a10:rights><a10:contributor><a10:name>Marco Scheel</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Marco Scheel</dc:creator></item><item><guid isPermaLink="false">http://blog.ppedv.de/post.aspx?id=d423b8b6-3f13-4bd0-9590-77217be40a3c</guid><link>http://blog.ppedv.de/post/2012/05/19/Windows-8-Settings-speichern.aspx</link><a10:author><a10:name>ppedv Team Blog</a10:name></a10:author><title>Windows 8 Settings speichern</title><description>&lt;p&gt;Unter dem Motto alles ganz anders und doch ähnlich, steht das speichern von Settings mit WinRT. ganz ähnlich wie bei Silverlight kann man einzelne Werte in ein Key Value Dictionary anlegen oder direkt komplexe Datentypen serialisieren und per Dateizugriff lesen und schreiben. Zusätzlich kann man aber nun die Dictionarys in Container gruppieren. Vermutlich um Gruppen von Einstellungen leichter handhaben zu können.&lt;/p&gt;  &lt;p&gt;Der Große Unterschied ist, das es kein IsolatedStorage gibt. Die Daten werden entweder lokal, Temporär oder Roaming und damit in der Cloud gespeichert.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;Dim localSettings As Windows.Storage.ApplicationDataContainer = &lt;br /&gt;Windows.Storage.ApplicationData.Current.LocalSettings&lt;br /&gt;
&lt;br /&gt;Dim temporaryFolder As Windows.Storage.StorageFolder = &lt;br /&gt;Windows.Storage.ApplicationData.Current.TemporaryFolder&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt; Dim roamingSettings As Windows.Storage.ApplicationDataContainer = &lt;br /&gt;Windows.Storage.ApplicationData.Current.RoamingSettings&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Speichern eines Wertes per Key lokal&lt;/p&gt;

&lt;pre class="csharpcode"&gt;  localSettings.Values(&lt;span class="str"&gt;&amp;quot;hannes&amp;quot;&lt;/span&gt;) = textbox1.Text + &lt;span class="str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class="kwrd"&gt;Date&lt;/span&gt;.Now
   &lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Gruppieren per Container&lt;/p&gt;

&lt;pre class="csharpcode"&gt; localSettings.CreateContainer(&lt;span class="str"&gt;&amp;quot;hannescontainer&amp;quot;&lt;/span&gt;, ApplicationDataCreateDisposition.Always)
 localSettings.Containers(&lt;span class="str"&gt;&amp;quot;hannesontainer&amp;quot;&lt;/span&gt;).Values(&lt;span class="str"&gt;&amp;quot;eins&amp;quot;&lt;/span&gt;) = textbox1.Text + &lt;span class="str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class="kwrd"&gt;Date&lt;/span&gt;.Now&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Speichern im Temp Folder ( bei mir C:\Users\pre\AppData\Local\Packages\BUILD.588a3b42-fdba-460e-8a17-f527a66ad183_89gf582k2a27c\TempState )&lt;/p&gt;

&lt;pre class="csharpcode"&gt; Dim tf As StorageFile = Await temporaryFolder.CreateFileAsync(&lt;span class="str"&gt;&amp;quot;hannes.txt&amp;quot;&lt;/span&gt;,
      CreationCollisionOption.ReplaceExisting)
 Await FileIO.WriteTextAsync(tf, textbox1.Text + &lt;span class="str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; + Date.Now)&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Bisher konnte ich nicht herausfinden wann der Inhalt des Tempfolders wieder geleert wird.&lt;/p&gt;

&lt;p&gt;Die letzte Möglichkeit ist das Speichern in der Cloud, als Roaming bezeichnet. Damit kann der Benutzer von einem Gerät zum anderen wechseln und dort weiter arbeiten. Um das Änderungen in der Konfiguration mitzubekommen gibt es auch ein Event DataChanged (Windows.Storage.ApplicationData.Current.DataChanged ).&lt;/p&gt;

&lt;p&gt;Mit folgendem VB.NET Code Beispiel wird gesichert&lt;/p&gt;

&lt;pre class="csharpcode"&gt; roamingSettings.Values(&lt;span class="str"&gt;&amp;quot;hannesroaming&amp;quot;&lt;/span&gt;) = textbox1.Text + &lt;span class="str"&gt;&amp;quot; &amp;quot;&lt;/span&gt; + &lt;span class="kwrd"&gt;Date&lt;/span&gt;.Now&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;In der Microsoft Cloud gibt es natürlich auch Beschränkungen, die man per Code auslesen kann.&lt;/p&gt;

&lt;pre class="csharpcode"&gt; &lt;span class="rem"&gt;'  textblock1.Text = ApplicationData.Current.RoamingStorageQuota&lt;/span&gt;
 textblock1.Text = ApplicationData.Current.RoamingFolder.Path&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Das speichern erledigt WinRT allerdings asynchron. Zuerst werden die Settings in der normalen Settings.dat Datei lokal gespeichert. Erst nach einigen Sekunden, funkt Windows 8 zu Microsoft und übergibt in einem komprimierten XML Format die Daten, wie der Screenshot mit Fiddler zeigt.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.ppedv.de/image.axd?picture=image_196.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://blog.ppedv.de/image.axd?picture=image_thumb_196.png" width="528" height="80" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ohne es zu wissen, kann das Roaming nur über die Windows ID (Live ID) funktionieren. Bei meinem Samsung XE700 melde ich mich mit der Live ID an. Wie das ist mit einer Domain Anmeldung, habe ich noch nicht getestet und auch&amp;#160; nicht in der Doku gefunden.&lt;/p&gt;</description><pubDate>Sat, 19 May 2012 10:05:57 +0200</pubDate><a10:rights type="text">ppedv Team Blog</a10:rights><a10:contributor><a10:name>ppedv Team Blog</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">ppedv Team Blog</dc:creator></item><item><guid isPermaLink="false">http://blog.ppedv.de/post.aspx?id=b0f6421b-9d26-4eab-aa90-3440f652e3f2</guid><link>http://blog.ppedv.de/post/2012/05/19/Hyper-V-vhd-Files-in-Virtual-Box-nutzen.aspx</link><a10:author><a10:name>ppedv Team Blog</a10:name></a10:author><title>Hyper-V vhd-Files in Virtual Box nutzen</title><description>&lt;p&gt;In unseren Schulungen werden von den Teilnehmer Hyper-V Images benutzt. Auch als Trainer möchte ich diese Festplatten nutzen, jedoch läuft Hyper-V unter Windows 7 nicht. Sobald Windows 8 erscheint, können die VHD Files direkt benutzt werden. (siehe &lt;a title="http://blog.ppedv.de/post/2011/09/15/Hyper-V-mit-Windows-8.aspx" href="http://blog.ppedv.de/post/2011/09/15/Hyper-V-mit-Windows-8.aspx" target="_blank"&gt;Hyper-V-mit-Windows-8&lt;/a&gt;) Aber bis dahin, verwende ich die Hyper-V Images unter Virtual Box.&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h1&gt;Erstellen der Virtual Box Maschine&lt;/h1&gt;  &lt;p&gt;Einfach die Maschine mit Neu anlegen und dann die VHD-Datei auswählen ist leider nicht. Beim Versuch diese Maschine zu starten erscheint kurz nach dem Windows-Knight-Rider-Balken ein Bluescreen. Das liegt daran, dass die Hyper-V Maschinen mit IDE Platten ausgestattet sind, aber Virtual Box mit SATA Platten arbeitet.&lt;/p&gt;  &lt;p&gt;Die Lösung für dieses Problem ist einfach:   &lt;br /&gt;Beim Anlegen der Maschine muss die Auswahl der Bootfestplatte übersprungen werden. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.ppedv.de/image.axd?picture=image_193.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ppedv.de/image.axd?picture=image_thumb_193.png" width="244" height="148" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nachdem die Maschine angelegt, ist kann diese mit “Ändern” angepasst werden. Es ist nun notwendig im Bereich “Massenspeicher” die VHD Platte als IDE Platte anzufügen.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.ppedv.de/image.axd?picture=image_194.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ppedv.de/image.axd?picture=image_thumb_194.png" width="244" height="161" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Der Bereich der Festplatten sollte dann so aussehen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.ppedv.de/image.axd?picture=image_195.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ppedv.de/image.axd?picture=image_thumb_195.png" width="231" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Mit diesen Einstellungen kann die Maschine nun gestartet werden. Nicht vergessen: die Gast-Erweiterungen müssen noch installiert werden.&lt;/p&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h1&gt;Verwendung von Hyper-V - Differenz-Disks&lt;/h1&gt;  &lt;p&gt;Hyper-V bietet auch die Möglichkeit mit Basis und Differenz-Disks zu arbeiten. Leider können diese Dateien nicht direkt in Virtual Box verwendet werden (zumindest nicht ohne weitere Änderung der Dateien). Auch das Exportieren aus Hyper-V hilft nicht weiter, da auch beim Export die Disks nicht zusammengeführt werden.&lt;/p&gt;  &lt;p&gt;Aber die Hyper-V Verwaltungsoberfläche bietet die Möglichkeit Differenz-Disks zu einer Disk zusammen zu führen. Der Menüpunkt versteckt sich hinter dem Settingsdialog für die Maschine. Im Bereich “IDE Controller – HardDrive”: Hier wird die vhd-Datei ausgewählt und dann mit “Edit” bearbeitet.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.ppedv.de/image.axd?picture=1.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="1" border="0" alt="1" src="http://blog.ppedv.de/image.axd?picture=1_thumb.png" width="244" height="167" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Im zweiten Schritt ist der Menüpunkt “Merge” auszuwählen.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.ppedv.de/image.axd?picture=2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="2" border="0" alt="2" src="http://blog.ppedv.de/image.axd?picture=2_thumb.png" width="244" height="180" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Und im letzten Schritt wird definiert, ob die Parent-Platte verändert wird oder eine neue Platte erstellt werden soll. Die neue Platte kann nun wie oben beschrieben in Virtual Box verwendet werden.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.ppedv.de/image.axd?picture=3.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="3" border="0" alt="3" src="http://blog.ppedv.de/image.axd?picture=3_thumb.png" width="244" height="180" /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Sat, 19 May 2012 08:45:02 +0200</pubDate><a10:rights type="text">ppedv Team Blog</a10:rights><a10:contributor><a10:name>ppedv Team Blog</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">ppedv Team Blog</dc:creator></item><item><guid isPermaLink="true">http://christian.bloggingon.net/archive/2012/05/18/installation-von-fxcop.aspx</guid><link>http://christian.bloggingon.net/archive/2012/05/18/installation-von-fxcop.aspx</link><a10:author><a10:name>Christian Kiefer</a10:name></a10:author><title>Installation von FxCop</title><description>&lt;p&gt;Das Tool FxCop kann nicht als einzelne Anwendung heruntergeladen werden sondern ist in dem Microsoft Windows SDK für Windows 7 und .NET Framework 4 enthalten:    &lt;br /&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=8279"&gt;&lt;font style="font-weight: normal"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=8279&lt;/font&gt; &lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font style="font-weight: normal"&gt;Wenn man nur an dem Tool FxCop interessiert ist muss man jedoch nicht das SDK vollständig installieren, sondern es reicht wenn man vor der Installation nur die Rubrik .NET Development| Tools auswählt:&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font style="font-weight: normal"&gt; &lt;a href="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Installation-von-FxCop_FF44/clip_image002_2.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Installation-von-FxCop_FF44/clip_image002_thumb.jpg" width="569" height="397" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font style="font-weight: normal"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Nach der Installation befindet sich im Verzeichnis: “&lt;font face="Courier New"&gt;C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\FXCop die Installationsdatei für FxCop „FxCopSetup.exe&lt;/font&gt;“.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Diese Installationsdatei ist auszuführen, damit FxCop installiert wird, das Verzeichnis für FxCop kann angegeben werden:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Installation-von-FxCop_FF44/clip_image002%5B6%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002[6]" border="0" alt="clip_image002[6]" src="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Installation-von-FxCop_FF44/clip_image002%5B6%5D_thumb.jpg" width="566" height="512" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Zum Aufruf von FxCop empfiehlt sich die Extension „FxCop Integrator“, welches bei CodePlex herunterladen werden kann: &lt;a href="https://fxcopintegrator.codeplex.com/"&gt;https://fxcopintegrator.codeplex.com/&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Diese Extension verwendet zusätzlich das Programm Metrics.exe von Microsoft, welches hier heruntergeladen werden kann: &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=9422"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=9422&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Derzeit werden folge&lt;a name="_GoBack"&gt;&lt;/a&gt;nde Metriken unterstützt: Maintainability Index, Cyclomatic Complexity, Depth of Inheritance, Class Coupling und Lines of Code (LOC).&lt;/p&gt;  &lt;p&gt;Der FxCop Integrator lässt sich im Projektexplorer über das Kontextmenü aufrufen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Installation-von-FxCop_FF44/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Installation-von-FxCop_FF44/image_thumb.png" width="519" height="169" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Dieser erstellt ein „Code Inspection Result“ sowie ein „Code Metrics Collection Result“&lt;/p&gt;  &lt;p&gt;&lt;a href="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Installation-von-FxCop_FF44/clip_image002%5B8%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002[8]" border="0" alt="clip_image002[8]" src="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Installation-von-FxCop_FF44/clip_image002%5B8%5D_thumb.jpg" width="509" height="408" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Der FxCop Integrator erlaubt es auch einzelne Dateien zu überprüfen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Installation-von-FxCop_FF44/image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Installation-von-FxCop_FF44/image_thumb_1.png" width="507" height="193" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;FxCop kann auch manuell aufgerufen werden:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Installation-von-FxCop_FF44/clip_image002%5B10%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002[10]" border="0" alt="clip_image002[10]" src="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Installation-von-FxCop_FF44/clip_image002%5B10%5D_thumb.jpg" width="503" height="362" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;&lt;/p&gt; &lt;font style="font-weight: normal"&gt;&lt;/font&gt;&lt;img src="http://christian.bloggingon.net/aggbug/417.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 18 May 2012 14:33:00 Z</pubDate><a10:rights type="text">Christian Kiefer</a10:rights><a10:contributor><a10:name>Christian Kiefer</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Christian Kiefer</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10304781</guid><link>http://blogs.msdn.com/b/hsirtl/archive/2012/05/18/webschau-2012-kw20-neues-zu-windows-azure.aspx</link><a10:author><a10:name>Holger Sirtl</a10:name></a10:author><title>Webschau 2012-KW20: Neues zu Windows Azure</title><description>&lt;p&gt;Auch heute wieder ein Rückblick auf interessante News, Blogposts und sonstigen Informationen zu Cloud Computing mit Windows Azure in dieser Woche:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Azure Blog: &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2012/05/17/the-bing-search-api-on-windows-azure-marketplace-is-here.aspx"&gt;The Bing Search API on Windows Azure Marketplace is Here!&lt;/a&gt;      &lt;br /&gt;Auf dem Windows Azure Marketplace ist jetzt auch die Bing Search API verfügbar. Damit lassen sich Suchergebnisse in Form von Web-ULRs, Bilder, Nachrichten und Videos in eigene Cloud Services integrieren.      &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;Brian Swan: &lt;a href="http://blogs.msdn.com/b/silverlining/archive/2012/05/14/azure-real-world-optimizing-php-applications-for-the-cloud.aspx"&gt;Azure Real World – Optimizing PHP Applications for the Cloud&lt;/a&gt;      &lt;br /&gt;In diesem Blog-Post schreibt Ken Muse, Vide President of Technology bei ecoInsight über den Betrieb von PHP Anwendungen auf Windows Azure. Er geht dabei auch auf Hybid-Szenarien mit einer Mischung aus .NET- und PHP-Komponenten ein. Er beleuchtet dabei erforderliche Konfigurationseinstellungen und zeigt, wie derartige Anwendungen optimal von der Cloud profitieren.       &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;Channel 9: &lt;a href="http://channel9.msdn.com/Shows/Cloud+Cover/Episode-80-Getting-Started-with-SQL-Azure-Data-Sync-Preview"&gt;Episode 80 – Getting Started with SQL Azure Data Sync Preview&lt;/a&gt;      &lt;br /&gt;In dieser Folge zeigen &lt;a href="http://blog.syntaxc4.net/"&gt;Cory Fowler &lt;/a&gt;und &lt;a href="http://geekswithblogs.net/ScottKlein/Default.aspx"&gt;Scott Klein&lt;/a&gt; — Windows Azure Technical Evangelists — wie man mit der SQL Azure Data Sync Preview loslegen kann. In diesem Zusammenhang auch nochmal ein Hinweis auf mein &lt;a href="http://youtu.be/5pqSvdS5NWA"&gt;10-Minuten-Video zu SQL Azure DataSync auf Youtube&lt;/a&gt;.       &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;Altocumulus: &lt;a href="http://yossidahan.wordpress.com/2012/05/07/setting-up-my-environment-to-build-packages-to-run-on-hadoop-on-azure/"&gt;Setting up my environment to build packages to run on Hadoop on Azure&lt;/a&gt;      &lt;br /&gt;Dieser Artikel beschreibt, wie man in Java geschriebene Map/Reduce Anwendungen auf &lt;a href="http://www.hadooponazure.com/"&gt;Hadoop auf Azure&lt;/a&gt; ausführen kann. Als Entwicklungsumgebung dient Eclipse.&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10304781" width="1" height="1"&gt;</description><pubDate>Fri, 18 May 2012 10:33:00 Z</pubDate><a10:rights type="text">Holger Sirtl</a10:rights><a10:contributor><a10:name>Holger Sirtl</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Holger Sirtl</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10306702</guid><link>http://blogs.msdn.com/b/swiss_dpe_team/archive/2012/05/18/bing-search-api-im-windows-azure-marketplace.aspx</link><a10:author><a10:name>Swiss DPE Team [MS]</a10:name></a10:author><title>Bing Search API im Windows Azure Marketplace</title><description>&lt;p&gt;Die &lt;a href="https://datamarket.azure.com/dataset/5BA839F1-12CE-4CCE-BF57-A49D98D29A44"&gt;Bing Search API&lt;/a&gt; ist ab sofort im &lt;a href="https://www.windowsazure.com/en-us/home/features/marketplace"&gt;Windows Azure Marketplace&lt;/a&gt; verfügbar, wie das &lt;a href="http://blogs.msdn.com/b/windowsazure"&gt;Windows Azure Team&lt;/a&gt; im MSDN Blog ankündigt. Die Bing Search API ermöglicht es Entwicklern und ISVs Suchergebnisse wie Textinformationen, News, Bilder und Videos in den eigenen Applikationen oder in selbst entwickelten Websites zu verwenden.&lt;/p&gt;  &lt;p&gt;Es gibt zwei Varianten die BING Search API zu verwenden:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://datamarket.azure.com/dataset/5BA839F1-12CE-4CCE-BF57-A49D98D29A44"&gt;Bing Search API&lt;/a&gt; ist die volle BING API (mit Zugang zu Web-, Bilder-, News- und Video-Suchresultaten)&lt;/li&gt;    &lt;li&gt;&lt;a href="https://datamarket.azure.com/dataset/8818F55E-2FE5-4CE3-A617-0B8BA8419F65"&gt;Bing Search API – Web Results Only&lt;/a&gt; (für Entwickler, die nur Web-Ergebnisse benötigen)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Die Kommunikation mit der BING Service API erfolgt per XML oder per JSON. Die Ergebnisse können per Parameter gesteuert werden (z.B.: $top steuert die Anzahl der retournierten Suchergebnisse, standardmässig 50). Bing API DataMarket unterstützt übrigens auch HTTP compression. Dafür muss nur im HTTP request der Header “Accept-Encoding: gzip” hinzugefügt werden. Das Word-Dokument &lt;a href="http://go.microsoft.com/fwlink/?LinkID=252146"&gt;FAQ for Bing Search API&lt;/a&gt; liefert weitere Details zu den APIs.&lt;/p&gt;  &lt;p&gt;Die Bing Search API kann für bis zu 5.000 Abfragen pro Monat kostenlos durchgeführt werden. Für mehr als 5.000 Queries pro Monat gibt es verschiedene kostenpflichtige Pakete, 10.000 Transaktionen kosten beispielsweise 18.23 CHF/Monat (nur Web-Ergebnisse 11.85 CHF/Monat), usw. Weitere Informationen und eine Preistabelle sind in den &lt;a href="https://datamarket.azure.com/dataset/5BA839F1-12CE-4CCE-BF57-A49D98D29A44"&gt;Marketplace Details Pages&lt;/a&gt; zu finden.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10306702" width="1" height="1"&gt;</description><pubDate>Fri, 18 May 2012 08:21:13 Z</pubDate><a10:rights type="text">Swiss DPE Team [MS]</a10:rights><a10:contributor><a10:name>Swiss DPE Team [MS]</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Swiss DPE Team [MS]</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10306696</guid><link>http://blogs.msdn.com/b/hsirtl/archive/2012/05/18/bing-search-api-auf-dem-windows-azure-marketplace-verf-252-gbar.aspx</link><a10:author><a10:name>Holger Sirtl</a10:name></a10:author><title>Bing Search API auf dem Windows Azure Marketplace verfügbar</title><description>&lt;p&gt;Auf dem &lt;a href="https://www.windowsazure.com/en-us/home/features/marketplace/?WT.mc_id=cmp_pst001_blg_post0110"&gt;Windows Azure Marketplace&lt;/a&gt; ist jetzt die &lt;a href="https://datamarket.azure.com/dataset/5BA839F1-12CE-4CCE-BF57-A49D98D29A44"&gt;Bing Search API&lt;/a&gt; verfügbar. Mit diesem Dienst können Suchergebnisse in Form von Internet-Links, Bildern, Nachrichten, und Videos sowie Rechtschreibkorrektur und Übersetzungsdienste in eigene Cloud Services integriert werden.&lt;/p&gt;  &lt;p&gt;Darüberhinaus können Informationen aus Datasets in eigene Anwendungen über standardisierte Datendiensteintegriert werden und diese über ein Service Explorer Tool, PowerPivot in Microsoft Excel und weitere Tools ausgewertet werden.&lt;/p&gt;  &lt;p&gt;Folgende Bing Search APIs sind über den Marketplace verfügbar:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://datamarket.azure.com/dataset/5BA839F1-12CE-4CCE-BF57-A49D98D29A44"&gt;Bing Search API&lt;/a&gt; (für den Zugriff auf auf Suchergebnisse in Form von Internet-Links, Bildern, Nachrichten, und Videos sowie Rechtschreibkorrektur und Übersetzungsdiensten)&lt;/li&gt;    &lt;li&gt;&lt;a href="https://datamarket.azure.com/dataset/8818F55E-2FE5-4CE3-A617-0B8BA8419F65"&gt;Bing Search API&lt;/a&gt; – Nur Web Ergebnisse (für den ausschließlichen Zugriff auf Web Ergebnisse)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Pro Monat sind 5000 Abfragen kostenfrei. Für Anwender mit mehr Abfragen sindentsprechend kostenpflichtige Angebote verfügbar.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://datamarket.azure.com/dataset/5BA839F1-12CE-4CCE-BF57-A49D98D29A44"&gt;Bing Search API&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2012/05/17/the-bing-search-api-on-windows-azure-marketplace-is-here.aspx"&gt;Original-Blogpost der Produktgruppe&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10306696" width="1" height="1"&gt;</description><pubDate>Fri, 18 May 2012 08:05:10 Z</pubDate><a10:rights type="text">Holger Sirtl</a10:rights><a10:contributor><a10:name>Holger Sirtl</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Holger Sirtl</dc:creator></item><item><guid isPermaLink="false">http://blog.ppedv.de/post.aspx?id=49f1da1d-c55d-4a5a-b4cb-ee7c07b0e668</guid><link>http://blog.ppedv.de/post/2012/05/17/Bilder-in-Windows-8-METRO-Styled-Apps.aspx</link><a10:author><a10:name>ppedv Team Blog</a10:name></a10:author><title>Bilder in Windows 8 METRO Styled Apps</title><description>&lt;p&gt;Wenn man in Windows 8 Tiles oder Popups Bilder anzeigen möchte stellen sich mehrere Fragen. Zunächst das Format. Möglich ist png und jpg (auch jpeg).&amp;#160; Auch Transparenz in PNG funktioniert.&lt;/p&gt;  &lt;p&gt;Typischerweise wird ein Bild in das APPX Paket eingepackt und damit in die Visual Studio 11 Solution. In Silverlight Anwendungen war das eher verpönt, weil der Download eine Rolle gespielt hat.Bei WinRT wird die Anwendung ohnehin dauerhaft installiert und damit das oder die Images.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.ppedv.de/image.axd?picture=image_192.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blog.ppedv.de/image.axd?picture=image_thumb_192.png" width="244" height="204" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Der Eigenschaftsdialog muss dann das Bild als Content zeigen.&lt;/p&gt;  &lt;p&gt;Dann lässt sich im Image Source Attribut über die neuen Protokoll Spezifikationen ms-appx auf das Bild verweisen. In diesem Fall liegt das Bild im Unterverzeichnis Images.&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Image&lt;/span&gt; &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Height&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;100&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Margin&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;36,39,0,0&amp;quot;&lt;/span&gt; &lt;br /&gt;&lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Top&amp;quot;&lt;br /&gt;&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;347&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Source&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-appx:///Images/ppedv.jpg&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;span style="font-size: x-small"&gt;&lt;font size="2"&gt;Wenn Bild Link fehlerhaft ist erscheint keine Fehlermeldung.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Die zweite Möglichkeit ist,&amp;#160; das Bild lokal auf der Festplatte in den Settings der Anwendung zu speichern (oder Roaming, dazu aber wann anders mehr).&amp;#160; Der folgende Code liest das Verzeichnis aus.&lt;/p&gt;

&lt;pre class="csharpcode"&gt; &lt;span class="kwrd"&gt;Dim&lt;/span&gt; localSettings &lt;span class="kwrd"&gt;As&lt;/span&gt; Windows.Storage.ApplicationDataContainer = &lt;br /&gt;Windows.Storage.ApplicationData.Current.LocalSettings&lt;br /&gt;&lt;span class="kwrd"&gt;Dim&lt;/span&gt; localFolder &lt;span class="kwrd"&gt;As&lt;/span&gt; Windows.Storage.StorageFolder = &lt;br /&gt;Windows.Storage.ApplicationData.Current.LocalFolder
        Textbox1.Text = localFolder.Path&lt;/pre&gt;

&lt;p&gt;Am Ende kommt ein bekannter Pfad raus, der den Namen des Pakets aus den Visual Studio appx Manifest enthält plus einen Salt Wert.&lt;/p&gt;

&lt;p&gt;C:\Users\pre\AppData\Local\Packages\BUILD.588a3b42-fdba-460e-8a17-f527a66ad183_89gf582k2a27c\LocalState&lt;/p&gt;

&lt;p&gt;Ich habe eine Grafik Datei per Hand dort hin kopiert. Referenziert wird diese mit einer weiteren WinRT Protokoll Spezifikation mx-appdata und dem fixen Zusatz local.&lt;/p&gt;

&lt;pre class="csharpcode"&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Image&lt;/span&gt; &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt;  
   &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Top&amp;quot;&lt;/span&gt;  &lt;br /&gt;&lt;span class="attr"&gt;Source&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ms-appdata:///local/windows.png&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Natürlich kann man das Bild auch aus dem Web laden mit dem HTTP Protokoll.&lt;/p&gt;

&lt;p&gt;Entgegen meiner Erwartungen wird das Bild auch gecacht. Konkret per Etag und 304 Meldung, so das die Anwendung dauerhaft dasselbe&amp;#160; Bild nicht.&lt;/p&gt;

&lt;pre class="csharpcode"&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Image&lt;/span&gt; &lt;span class="attr"&gt;HorizontalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Left&amp;quot;&lt;/span&gt;  
     &lt;span class="attr"&gt;VerticalAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Top&amp;quot;&lt;/span&gt;  &lt;br /&gt;&lt;span class="attr"&gt;Source&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://www.firmenpresse.de/adpics/76898.jpg?id=2212&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Das Caching lässt sich nicht beeinflussen Abhilfe schafft ein alter Trick mit einem angehängten wechselnden&amp;#160; Querystring.&lt;/p&gt;</description><pubDate>Thu, 17 May 2012 14:00:00 +0200</pubDate><a10:rights type="text">ppedv Team Blog</a10:rights><a10:contributor><a10:name>ppedv Team Blog</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">ppedv Team Blog</dc:creator></item><item><guid isPermaLink="false">http://webenliven-space.de/dotnetblog/post.aspx?id=f826dfb1-f597-4f62-b349-f2b180b69ad8</guid><link>http://webenliven-space.de/dotnetblog/post/2012/05/17/NET-Architektur-mit-dem-Beispiel-e2809eGoFishe2809c-e28093-Developmente28093Erstellen-von-Workflow-Activities.aspx</link><a10:author><a10:name>Gregor Biswanger</a10:name></a10:author><title>.NET-Architektur mit dem Beispiel „GoFish“ – Development–Erstellen von Workflow Activities</title><description>&lt;p&gt;&lt;a href="http://webenliven-space.de/dotnetblog/image.axd?picture=Windows-Live-Writer/68c9077c6de1/3828DBD3/gofish-1_thumb1_thumb.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="gofish-1_thumb1_thumb" border="0" alt="gofish-1_thumb1_thumb" align="left" src="http://webenliven-space.de/dotnetblog/image.axd?picture=Windows-Live-Writer/68c9077c6de1/3ECBBF89/gofish-1_thumb1_thumb_thumb.jpg" width="240" height="128" /&gt;&lt;/a&gt;In der &lt;a href="http://www.dotnet-blog.net/post/2012/01/29/NET-Architektur-mit-dem-Beispiel-e2809eGoFishe2809c-e28093-Design-und-Development.aspx" target="_blank"&gt;letzten Folge dieser Architektur-Serie&lt;/a&gt;, haben wir die Phasen Design und Development kennengelernt. Bei der Design-Phase wurden die jeweiligen Prozesse zu Komponenten abstrahiert. Aus den Komponenten entstanden die jeweiligen Schichten und Contracts (Interfaces). Auch wenn der Punkt Development nicht komplett abgeschlossen wurde, somit ist zumindest die Hauptlogik durch TDD implementiert worden.&lt;/p&gt;  &lt;p&gt;In diesem Teil wird die Development-Phase fortgesetzt, womit das Ziel mit dem Spiel „GoFish“ immer näher rückt. &lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;/p&gt;  &lt;h2&gt;Erstellen von Workflow Foundation Activities&lt;/h2&gt;  &lt;p&gt;Erst einmal kommt die Frage auf, wofür die Workflow Foundation verwenden? Die Workflow Foundation ist eine Art Framework für Geschäftslogik. Das Verhalten und die Verwendung der jeweiligen Prozesse werden visuell dargestellt. Gerade bei größeren Änderungen der Geschäftslogik ist eine visuelle Darstellung geradezu ideal. Es ist ersichtlicher ein paar Bausteine auszutauschen als Methoden und deren IF-Statements zu durchforsten. Außerdem kann man seine eigenen Komponenten ohne hohen Aufwand zu Activities erweitern. Sollte irgendwann zur Projektlaufzeit doch wieder auf klassischen Code gewechselt werden wollen, kann man einfach die Activities wieder löschen und die eigenen Komponenten bleiben unberührt. Activities dienen demnach als Adapter- oder Fassade-Pattern (siehe das &lt;a href="http://de.wikipedia.org/wiki/Adapter_(Entwurfsmuster)" target="_blank"&gt;Entwurfsmuster Adapter&lt;/a&gt;und &lt;a href="http://de.wikipedia.org/wiki/Fassade_(Entwurfsmuster)" target="_blank"&gt;Entwurfsmuster Fassade&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;In der Design-Phase wurde das Komponentendiagramm entworfen. Dieses beschreibt bereits die jeweiligen Activities für die Geschäftslogik. Das Komponentendiagramm wurde anhand des Ablaufdiagramms abstrahiert. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://webenliven-space.de/dotnetblog/image.axd?picture=Windows-Live-Writer/68c9077c6de1/02534ADF/image.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://webenliven-space.de/dotnetblog/image.axd?picture=Windows-Live-Writer/68c9077c6de1/27E8DA0E/image_thumb.png" width="830" height="695" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;i&gt;Abbildung 1 – Das Komponentendiagramm mit den gewünschten Activities.&lt;/i&gt;&lt;/b&gt; &lt;/p&gt;  &lt;p&gt;Das Komponentendiagramm beschreibt die zu benötigten Activities: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;AddCardsToPlayerActivity.cs &lt;/li&gt;    &lt;li&gt;FindQuartetsActivity.cs &lt;/li&gt;    &lt;li&gt;GetCardFromStackActivity.cs &lt;/li&gt;    &lt;li&gt;GetCardsActivity.cs &lt;/li&gt;    &lt;li&gt;GetSameCardValuesActivity.cs &lt;/li&gt;    &lt;li&gt;GetTheWinnerActivity.cs &lt;/li&gt;    &lt;li&gt;RemoveCardsActivity.cs &lt;/li&gt;    &lt;li&gt;SelectRandomCardActivity.cs &lt;/li&gt;    &lt;li&gt;SharedCardsToPlayerActivity.cs&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Die Grundlagen für &lt;a href="http://www.dotnet-blog.net/post/2010/12/02/Einstieg-zur-Workflow-Foundation-4-Activity-selbst-schreiben.aspx" target="_blank"&gt;das Erstellen von Workflow Activities&lt;/a&gt; habe ich bereits gebloggt bzw. &lt;a href="http://www.microsoft.com/germany/msdn/webcasts/serien/MSDNWCS-1106-02.aspx" target="_blank"&gt;Microsoft Webcasts veröffentlicht&lt;/a&gt;. Es wird von der Basisklasse CodeActivity abgeleitet und das Input / Output via Arguments definiert. Das Input / Output entnehmen wir vom &lt;a href="http://webenliven-space.de/dotnetblog/image.axd?picture=Windows-Live-Writer/2d1101a10598/0304F15A/image.png" target="_blank"&gt;DomainModel&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Als Häuptling entspricht hier der GamblingTable, der als Aggregate (Domain-Driven Design) für die Entities Player und Card dient. Aggregate sind Zusammenfassungen von Entitäten und Wertobjekten und deren Assoziationen untereinander zu einer gemeinsamen transaktionalen Einheit. &lt;/p&gt;  &lt;p&gt;Beim Spiel stehen für alle Activities dann alle relevanten Daten zur Verfügung. So entwarf ich je nach Anforderungen den I/O folgendermaßen: &lt;/p&gt;  &lt;p&gt;&lt;b&gt;AddCardsToPlayerActivity&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;IN PlayerCards &lt;/li&gt;    &lt;li&gt;IN CardsToAdd &lt;/li&gt;    &lt;li&gt;OUT ResultPlayerCards&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;FindQuartetsActivity&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;IN PlayerCards &lt;/li&gt;    &lt;li&gt;OUT ResultQuartets&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;GetCardFromStackActivity&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;IN CardDeck &lt;/li&gt;    &lt;li&gt;IN PlayerCards &lt;/li&gt;    &lt;li&gt;OUT ResultCardDeck &lt;/li&gt;    &lt;li&gt;OUT ResultPlayerCards&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;GetCardsActivity&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;OUT Result (List&amp;lt;Card&amp;gt;)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;GetSameCardValuesActivity&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;IN PlayerCards &lt;/li&gt;    &lt;li&gt;IN SelectedCard &lt;/li&gt;    &lt;li&gt;OUT SameValueCards&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;GetTheWinnerActivity&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;IN Players &lt;/li&gt;    &lt;li&gt;OUT Result (string)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;RemoveCardsActivity&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;IN PlayerCards &lt;/li&gt;    &lt;li&gt;IN CardsForDelete &lt;/li&gt;    &lt;li&gt;OUT ResultPlayerCards&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;SelectRandomCardActivity&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;IN PlayerCards &lt;/li&gt;    &lt;li&gt;OUT Result (Card)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;SharedCardsToPlayerActivity&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;IN Cards &lt;/li&gt;    &lt;li&gt;IN Players &lt;/li&gt;    &lt;li&gt;OUT CardsResult &lt;/li&gt;    &lt;li&gt;OUT PlayersResult&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Und hier sind die Implementierungen der Activities:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;AddCardsToPlayerActivity&lt;/h4&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Activities;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; GoFish.Common.Entities;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; GoFish.Domain.Activities&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; AddCardsToPlayerActivity : CodeActivity&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; PlayerCards { get; set; }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; CardsToAdd { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; OutArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; ResultPlayerCards { get; set; }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Execute(CodeActivityContext context)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            List&amp;lt;Card&amp;gt; playerCards = PlayerCards.Get(context);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            List&amp;lt;Card&amp;gt; cardsToAdd = CardsToAdd.Get(context);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            cardsToAdd.ForEach(playerCards.Add);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            ResultPlayerCards.Set(context, playerCards);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h4&gt;FindQuartetsActivity&lt;/h4&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Activities;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; GoFish.Common.Entities;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; GoFish.Common.Extensions;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; GoFish.Domain.Activities&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; FindQuartetsActivity : CodeActivity&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; PlayerCards { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; OutArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; ResultQuartets { get; set; } &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Execute(CodeActivityContext context)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            List&amp;lt;Card&amp;gt; playerCards = PlayerCards.Get(context);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            List&amp;lt;Card&amp;gt; results = playerCards.FindQuartets();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            ResultQuartets.Set(context, results);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h4&gt;GetCardFromStackActivity&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Activities;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; GoFish.Common.Entities;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; GoFish.Domain.Activities&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; GetCardFromStackActivity : CodeActivity&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; CardDeck { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; PlayerCards { get; set; }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; OutArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; ResultCardDeck { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; OutArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; ResultPlayerCards { get; set; }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Execute(CodeActivityContext context)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            List&amp;lt;Card&amp;gt; cardDeck = CardDeck.Get(context);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            List&amp;lt;Card&amp;gt; playerCards = PlayerCards.Get(context);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            Random random = &lt;span class="kwrd"&gt;new&lt;/span&gt; Random();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; deckIndex = cardDeck.Count - 1;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            Card pulledCard = cardDeck[random.Next(0, deckIndex)];&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            playerCards.Add(pulledCard);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            cardDeck.Remove(pulledCard);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;            ResultCardDeck.Set(context, cardDeck);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;            ResultPlayerCards.Set(context, playerCards);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h4&gt;GetCardsActivity&lt;/h4&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Activities;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; GoFish.Common.Entities;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; GoFish.Domain.Activities&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; GetCardsActivity : CodeActivity&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; List&amp;lt;Card&amp;gt; Execute(CodeActivityContext context)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            CardsGenerator cardsGenerator = &lt;span class="kwrd"&gt;new&lt;/span&gt; CardsGenerator();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; cardsGenerator.GetCards();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h4&gt;GetSameCardValuesActivity&lt;/h4&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Activities;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; GoFish.Common.Entities;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; GoFish.Common.Extensions;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; GoFish.Domain.Activities&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; GetSameCardValuesActivity : CodeActivity&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;         [RequiredArgument]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;         &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; PlayerCards { get; set; }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;         [RequiredArgument]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;         &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;Card&amp;gt; SelectedCard { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;         [RequiredArgument]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;         &lt;span class="kwrd"&gt;public&lt;/span&gt; OutArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; SameValueCards { get; set; }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Execute(CodeActivityContext context)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            List&amp;lt;Card&amp;gt; playerCards = PlayerCards.Get(context);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            Card selectedCard = SelectedCard.Get(context);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            List&amp;lt;Card&amp;gt; sameValueCards = playerCards.GetSameValueCards(selectedCard.Value);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            SameValueCards.Set(context, sameValueCards);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h4&gt;&lt;b&gt;GetTheWinnerActivity&lt;/b&gt;&lt;/h4&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Activities;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; GoFish.Common.Entities;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; GoFish.Common.Extensions;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; GoFish.Domain.Activities&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; GetTheWinnerActivity : CodeActivity&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;List&amp;lt;Player&amp;gt;&amp;gt; Players { get; set; } &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Execute(CodeActivityContext context)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            List&amp;lt;Player&amp;gt; players = Players.Get(context);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; players.GetTheWinner();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;b&gt;&lt;/b&gt;&amp;#160;&lt;/p&gt;

&lt;h4&gt;RemoveCardsActivity&lt;/h4&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Activities;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; GoFish.Common.Entities;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; GoFish.Domain.Activities&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; RemoveCardsActivity : CodeActivity&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; PlayerCards { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; CardsForDelete { get; set; }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; OutArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; ResultPlayerCards { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Execute(CodeActivityContext context)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            List&amp;lt;Card&amp;gt; playerCards = PlayerCards.Get(context);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;            List&amp;lt;Card&amp;gt; cardsForDelete = CardsForDelete.Get(context);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            cardsForDelete.ForEach(card =&amp;gt; playerCards.Remove(card));&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            ResultPlayerCards.Set(context, playerCards);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h4&gt;SelectRandomCardActivity&lt;/h4&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Activities;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; GoFish.Common.Entities;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; GoFish.Domain.Activities&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; SelectRandomCardActivity : CodeActivity&amp;lt;Card&amp;gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; PlayerCards { get; set; } &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; Card Execute(CodeActivityContext context)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            List&amp;lt;Card&amp;gt; playerCards = PlayerCards.Get(context);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            Random random = &lt;span class="kwrd"&gt;new&lt;/span&gt; Random();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; playerIndex = 0;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt;(playerCards.Count &amp;gt; 0)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;                playerIndex = playerCards.Count - 1;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; randomIndex;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (playerCards.Count != 0)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;                randomIndex = random.Next(0, playerIndex);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Card();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; playerCards[randomIndex];&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;}&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;h4&gt;SharedCardsToPlayerActivity&lt;/h4&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;div class="csharpcode"&gt;
    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Activities;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; GoFish.Common.Extensions;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; GoFish.Common.Entities;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; GoFish.Domain.Activities&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;{&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; SharedCardsToPlayerActivity : CodeActivity&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    {&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; Cards { get; set; }&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;List&amp;lt;Player&amp;gt;&amp;gt; Players { get; set; }&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; OutArgument&amp;lt;List&amp;lt;Card&amp;gt;&amp;gt; CardsResult { get; set; }&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; OutArgument&amp;lt;List&amp;lt;Player&amp;gt;&amp;gt; PlayersResult { get; set; } &lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Execute(CodeActivityContext context)&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        {&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            List&amp;lt;Card&amp;gt; cards = Cards.Get(context);&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            List&amp;lt;Player&amp;gt; players = Players.Get(context);&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            players.ForEach(player =&amp;gt; player.Cards = cards.GetFiveRandomCards());&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            CardsResult.Set(context, cards);&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;            PlayersResult.Set(context, players);&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        }&lt;/pre&gt;

    &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;    }&lt;/pre&gt;

    &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;}&lt;/pre&gt;
  &lt;/div&gt;
  &lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;h1&gt;Zusammenfassung und Vorschau auf den nächsten Teil&lt;/h1&gt;

&lt;p&gt;Jetzt sind die wichtigsten Funktionen/Aktivitäten als eigenständige Workflow Activities gekapselt. &lt;a href="http://www.dotnet-blog.net/post/2010/12/03/Einstieg-zur-Workflow-Foundation-4-e28093-Unit-Testing.aspx" target="_blank"&gt;Diese könnten nun nachträglich mit Unit-Tests abgesichert werden&lt;/a&gt;. Jedoch reicht mir für diese Architektur-Serie der TDD-Part (&lt;a href="http://www.dotnet-blog.net/post/2012/01/29/NET-Architektur-mit-dem-Beispiel-e2809eGoFishe2809c-e28093-Design-und-Development.aspx" target="_blank"&gt;siehe letzte Folge&lt;/a&gt;). &lt;/p&gt;

&lt;p&gt;Beim nächsten Teil werden wir die &lt;strong&gt;Development-&lt;/strong&gt;Phase fortsetzen und alle Bausteine (Activities) zu Workflows zusammenführen. Sodass, &lt;a href="http://webenliven-space.de/dotnetblog/image.axd?picture=Windows-Live-Writer/2d1101a10598/54AB6BAC/GameCoreActivityDiagram.png" target="_blank"&gt;das Aktivitätsdiagramm&lt;/a&gt; aus der Design-Phase implementiert wird.&lt;/p&gt;

&lt;p&gt;Viel Spaß und bis zur nächsten Folge, wenn Ihr mögt!&lt;/p&gt;</description><pubDate>Thu, 17 May 2012 12:15:15 -0400</pubDate><a10:rights type="text">Gregor Biswanger</a10:rights><a10:contributor><a10:name>Gregor Biswanger</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Gregor Biswanger</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10305779</guid><link>http://blogs.msdn.com/b/hsirtl/archive/2012/05/17/video-reihe-zu-windows-azure-folge-11-was-ist-windows-azure-blob-storage.aspx</link><a10:author><a10:name>Holger Sirtl</a10:name></a10:author><title>Video-Reihe zu Windows Azure – Folge 11: Was ist Windows Azure Blob Storage?</title><description>&lt;p&gt;Windows Azure Blob Storage erlaubt die sichere, hoch-verfügbare Speicherung großer Binärdaten (BLOB = binary large objects) in Windows Azure. Inhalte werden automatisch 3-fach gespeichert. Darüber hinaus ist Geo-Replikation optional verfügbar. Ich erkläre in diesem Video, wie Blob Storage funktioniert, was es mit Block Blobs und Page Blobs auf sich hat und welche Einsatzszenarien für Blob Storage bestehen.&lt;/p&gt;  &lt;p&gt;Hier das Video: &lt;a href="http://youtu.be/LIdstrOcgLo"&gt;Was ist Windows Azure Blob Storage?&lt;/a&gt; [10:46]&lt;/p&gt;  &lt;p&gt;&lt;iframe height="315" src="http://www.youtube.com/embed/LIdstrOcgLo" frameborder="0" width="560" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Video: &lt;a href="http://youtu.be/LIdstrOcgLo"&gt;Was ist Windows Azure Blob Storage?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=kLfaa_19yB4&amp;amp;list=PLC71216BDE26EBE8C"&gt;Video-Playlist zu Windows Azure auf YouTube&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10305779" width="1" height="1"&gt;</description><pubDate>Thu, 17 May 2012 11:26:00 Z</pubDate><a10:rights type="text">Holger Sirtl</a10:rights><a10:contributor><a10:name>Holger Sirtl</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Holger Sirtl</dc:creator></item><item><guid isPermaLink="false">http://blog.m-ri.de/?p=973</guid><link>http://blog.m-ri.de/index.php/2012/05/16/bericht-uber-die-adc-fur-c-in-ohlstadt-vom-03-04-mai-2012/</link><a10:author><a10:name>Martin Richter</a10:name></a10:author><title>Bericht über die Advanced Developers Conference (ADC) für C++ in Ohlstadt vom 03.+04. Mai 2012</title><description>Auf http://www.c-plusplus.de ist von mir jetzt ein Artikel zu der ADC C++ Konferenz in Ohlstadt erschienen, die am 03.04. Mai 2012 stattfand. Über die Abendveranstaltung habe ich in meinem letzten Blogartikel auszugsweise berichtet. Advanced Developers Conference C++ &amp;#8211; native C++ im Blickpunkt (Tag 1) Advanced Developers Conference C++ &amp;#8211; native C++ im Blickpunkt (Tag 2) [...]</description><pubDate>Wed, 16 May 2012 18:01:55 Z</pubDate><a10:rights type="text">Martin Richter</a10:rights><a10:content type="html">&lt;p&gt;Auf &lt;a href="http://www.c-plusplus.de"&gt;http://www.c-plusplus.de&lt;/a&gt; ist von mir jetzt ein Artikel zu der &lt;em&gt;ADC C++ Konferenz in Ohlstadt&lt;/em&gt; erschienen, die am 03.04. Mai 2012 stattfand.&lt;br /&gt;
Über die Abendveranstaltung habe ich in meinem letzten Blogartikel auszugsweise berichtet.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.c-plusplus.de/forum/303525"&gt;Advanced Developers Conference C++ &amp;#8211; native C++ im Blickpunkt (Tag 1)&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.c-plusplus.de/forum/303526"&gt;Advanced Developers Conference C++ &amp;#8211; native C++ im Blickpunkt (Tag 2)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Viel Spaß beim Lesen!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;&lt;small&gt;Copyright &amp;copy; 2010 Martin Richter&lt;br /&gt;Dieser Feed ist nur für den persönlichen, nicht gewerblichen Gebrauch bestimmt. Eine Verwendung dieses Feeds bzw. der hier veröffentlichten Beiträge auf anderen Webseiten bedarf der ausdrücklichen Genehmigung des Autors.&lt;br /&gt;(Digital Fingerprint: bdafe67664ea5aacaab71f8c0a581adf)&lt;/small&gt;</a10:content><a10:contributor><a10:name>Martin Richter</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Martin Richter</dc:creator></item><item><guid isPermaLink="false">http://ilker.de/?p=3545</guid><link>http://ilker.de/no-more-blog-comments</link><a10:author><a10:name>Ilker Cetinkaya</a10:name></a10:author><title>No More Blog Comments</title><description>A few months ago I started to completely rethink my website. During this time, I also took the time to think about the comment functionality which is included in my current blog software WordPress. One of the outcomes of my thoughts on [...]</description><pubDate>Wed, 16 May 2012 14:27:53 Z</pubDate><a10:rights type="text">Ilker Cetinkaya</a10:rights><a10:content type="html">&lt;p
&gt;A few months ago I started to completely rethink my website. During this time, I also took the time to think about the comment functionality which is included in my current blog software &lt;a href="http://www.wordpress.org"
  &gt;WordPress&lt;/a
  &gt;. One of the outcomes of my thoughts on my websites was to change my blogging. &lt;em
  &gt;Completely&lt;/em
  &gt;. Both from mental as well as from a technical perspective.&lt;/p
&gt;&lt;p
&gt;From ‘mental’ (or practical) perpective, I’ll change my blog gradually from a non-directed, spontaneuous blabbing, ranting and random thought disposal instrument towards a more topic-oriented and directed writing. I won’t start to write technical or theoretical articles or books. I want to keep my blogging small since I like the concept of small, chewable chunks of information for a specific topic.&lt;/p
&gt;&lt;p
&gt;Second, from technical perspective, I’m going to completely change the platform and infrastructure of my website (again). I’ll move off from &lt;a href="http://www.wordpress.org"
  &gt;WordPress&lt;/a
  &gt; and use a static website generator instead. I don’t have much interactive content or even applications. Hence, static webpages serve my purposes quite well. However, there’s one little dynamic thing I have until now. You guessed it already, it’s my blog comment functionality.&lt;/p
&gt;&lt;div id="what-is-a-comment"
&gt;&lt;h4
  &gt;What Is A Comment?&lt;/h4
  &gt;&lt;p
  &gt;Ok. From technical perspective, comments aren’t much of an issue, since there’s a number of external providers for commenting, i.e. the popular &lt;a href="http://disqus.com"
    &gt;Disqus&lt;/a
    &gt;. Nonetheless, I wanted to rethink &lt;em
    &gt;everything&lt;/em
    &gt; on my website. Hence, I chewed on the comment thing as well. After a couple of days, I came to a conclusion I hadn’t thought I’d come to before: &lt;em
    &gt;Just don’t do it.&lt;/em
    &gt;&lt;/p
  &gt;&lt;p
  &gt;Yes, that’s right. No more blog comments on my website. Even more, I’ll remove the blog comments from my old entries as well. The reason is quite simple. On-site comments are simply wrong. From almost any perspective it makes no real sense to me to enable commenting on an article/blog right just where the article is. And to be honest, this conclusion is quite new for me as well. I didn’t care much about it until recently.&lt;/p
  &gt;&lt;p
  &gt;The fundamental question for me to be answered was: &lt;em
    &gt;What is a blog comment?&lt;/em
    &gt; To me, a blog comment is a published opinion or statement regarding the content/topic layed out in the original article. Such a statement must have an author &amp;#8211; be it disclosed or undisclosed. As a side note: I never allowed anonymous commenting. But surely, impersonated or fake name commenting is/was possible as well.&lt;/p
  &gt;&lt;p
  &gt;As for the activity of commenting, the author writes and publishes her thoughts in the internet. Now hold on for a second and re-read that last sentence again. The important thing to notice is &lt;em
    &gt;the internet&lt;/em
    &gt;. That’s actually what makes me believe that the entire concept of on-site commenting is wrong. The culture and nature of the internet is distributed and free information. Now, if information is useful or related to some other information, it’s simply interlinked. I’m a firm believer that the concept of linking is crucial for the internet.&lt;/p
  &gt;&lt;p
  &gt;I think that instead of posting a comment on the same site where the article resides, the comment actually needs to be published &lt;em
    &gt;somewhere else&lt;/em
    &gt; on the internet and then interlinked with the original article. This &lt;em
    &gt;is the natural way&lt;/em
    &gt; of information sharing on the internet. Yes, it’s the culture of the internet. The author can simply post her comment on her own website or blog. Nowadays, it’s just a few clicks to get a free personal blog.&lt;/p
  &gt;&lt;p
  &gt;Thinking a little more about the topic, one might inevitably notice that actually there’s a &lt;em
    &gt;trend&lt;/em
    &gt; towards off-site commenting in recent years. With the rise of the social networks (you know, this &lt;a href="http://facebook.com"
    &gt;Facebook&lt;/a
    &gt;, &lt;a href="http://twitter.com"
    &gt;Twitter&lt;/a
    &gt; and &lt;a href="http://plus.google.com"
    &gt;G+&lt;/a
    &gt; things), sharing links and quick commenting has become both popular and &lt;em
    &gt;usable&lt;/em
    &gt;. Just post the link of the article or page in question, write your statement and fire off a new conversation.&lt;/p
  &gt;&lt;p
  &gt;Moreover, sharing on social networks is beneficiary for all parties involved. Be it the author of the original article, the commenting author, the social network platform, or the readers of the comment embodied as “social network status message”. Perhaps the best thing about it is that the comment (and a potential conversation) about the topic in question is being made &lt;em
    &gt;intentionally&lt;/em
    &gt; and &lt;em
    &gt;directed&lt;/em
    &gt;. The author of the comment makes many useful and helpful decisions before sharing her comments.&lt;/p
  &gt;&lt;p
  &gt;After it was clear for me that off-site commenting is far better than on-site commenting, I thought about a second, related question. I asked myself: “Why should I limit my readers?”. And of course, that’s a very valid question. Why should I, as author of an article, limit the feedback and conversation possibilities for my readers?&lt;/p
  &gt;&lt;p
  &gt;At first sight, I thought that it’s not a good idea to limit feedback channels. Even more, just &lt;em
    &gt;switching off&lt;/em
    &gt; the comment feature on a blog is &amp;#8211; well &amp;#8211; quite unnatural, since most of the blogs out there have (excellent) on-site commenting. Additionally, from a open communication perspective, it’s counterintuitive to simply block a communication channel. Especially for someone like me, who really is very dedicated and passionate to &lt;em
    &gt;develop and foster communication and feedback all the time&lt;/em
    &gt;. However, I finally decided to disable this communication/feedback channel and go for the hard way. The key argument here is based on a very simple idea: Providing a &lt;em
    &gt;wrong&lt;/em
    &gt; option doesn’t improve anything.&lt;/p
  &gt;&lt;p
  &gt;That’s why I’ll no longer provide on-site comments on my website. You can share your feedback with me and others at any time. Write your thoughts on your own website, post your comment on a social network, link to original or related sources and let me know about your comment if you like. You can surely just send me an email as well.&lt;/p
  &gt;&lt;/div
&gt;
</a10:content><a10:contributor><a10:name>Ilker Cetinkaya</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ilker Cetinkaya</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10305776</guid><link>http://blogs.msdn.com/b/cbinder/archive/2012/05/16/c-day-2012-windows-8-f-252-r-c-entwickler.aspx</link><a10:author><a10:name>Christian Binder [MS]</a10:name></a10:author><title>C++ Day 2012 : Windows 8 für C++ Entwickler</title><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/3823.cplusplus_5F00_tour2_2D00_gelb_5F00_2166C364.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="cplusplus_tour2-gelb" border="0" alt="cplusplus_tour2-gelb" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/3007.cplusplus_5F00_tour2_2D00_gelb_5F00_thumb_5F00_6AA9685F.jpg" width="753" height="251" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Nach einem sehr erfolgreichen ersten C++Day dieses Jahr und einer sehr gut besuchten ADC C++ möchten wir weiter kontinuierlich Themen für C++ Entwickler anbieten. Daher laden wir zu einem weiteren kostenfreien C++ Day 2012 mit dem folgenden Schwerpunkten&amp;#160; ein:     &lt;br /&gt;      &lt;br /&gt;“&lt;em&gt;Windows 8 für C++ Entwickler&lt;/em&gt;”, um die neuen sehr guten Möglichkeiten für C++ Entwickler mit Windows 8 zu beleuchten.&amp;#160; &lt;br /&gt; “&lt;em&gt;ALM für C++ Entwickler&lt;/em&gt;”, für alle C++ Entwickler, die Ihre Entwicklungs Infrastruktur optimieren möchten.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;strong&gt;Wann? und Wo?&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;14.6 Berlin &lt;/font&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032514028&amp;amp;Culture=de-DE" target="_blank"&gt;&lt;font size="2"&gt;Anmeldung&lt;/font&gt;&lt;/a&gt;    &lt;br /&gt;&lt;font size="2"&gt;18.6 Unterschleißheim &lt;/font&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032514030&amp;amp;Culture=de-DE" target="_blank"&gt;&lt;font size="2"&gt;Anmeldung&lt;/font&gt;&lt;/a&gt;    &lt;br /&gt;&lt;font size="2"&gt;25.6 Köln &lt;/font&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032514031&amp;amp;Culture=de-DE" target="_blank"&gt;&lt;font size="2"&gt;Anmeldung&lt;/font&gt;&lt;/a&gt;    &lt;br /&gt;&lt;font size="2"&gt;26.6 Bad Homburg &lt;/font&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032514032&amp;amp;Culture=de-DE" target="_blank"&gt;&lt;font size="2"&gt;Anmeldung&lt;/font&gt;&lt;/a&gt;    &lt;br /&gt;&lt;font size="2"&gt;3.7 Blaustein &lt;/font&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032514033&amp;amp;Culture=de-DE" target="_blank"&gt;&lt;font size="2"&gt;Anmeldung&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="3"&gt;&lt;strong&gt;Agenda:&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;14:00 – 15:15 &lt;strong&gt;Windows 8 Metro Style Apps mit C++&lt;/strong&gt;       &lt;br /&gt;15:15 – 15:30 Pause      &lt;br /&gt;15:30 – 16:45 &lt;strong&gt;WinRT für C++ Entwickler&lt;/strong&gt;      &lt;br /&gt;16:45 – 17:15 Pause      &lt;br /&gt;17:15 – 18:30 &lt;strong&gt;ALM in C++ Projekten       &lt;br /&gt;&lt;/strong&gt;18:30 – 19:00 Q/A&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;Vortäge:&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="2"&gt;Windows 8 Metro Style Apps mit C++ und XAML&lt;/font&gt; &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Unter Windows 8 erhält nun auch der C++ Programmierer die Möglichkeit optisch modernste Benutzerschnittstellen mit XAML zu „deklarieren“ und auf die Windows Runtime (WinRT) zurückzugreifen. Somit steht für Windows 8 Metro Style Apps erstmals ein neues UI Framework zur Verfügung. Dieser Vortrag vermittelt Ihnen die wesentlichen Grundlagen zu Windows 8 Metro Style Apps mit dem dazugehörigen Interaktionsmodell und zeigt, wie Sie mit Visual C++ und XAML eigene Metro Apps erstellen können. Das Konzept des App Stores rundet den Vortrag ab.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="2"&gt;WinRT für C++ Entwickler&lt;/font&gt; &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Die Windows Runtime (WinRT) ist die neue Library für Metro Style Apps. Mit native C++ lassen sich Komponenten und Treiber für WinRT und damit für Metro Style Apps erstellen. Hierfür hat Microsoft die C++ Syntax wie bereits für C++ /CLI erweitert, es steht nun C++ /CX zur Verfügung. Erfahren Sie in diesem Vortrag, wie Sie mit Visual C++ WinRT Komponenten erstellen und in Metro Apps verwenden können. Ein besonderer Fokus wird dabei auch auf die C++ /CX Spracherweiterungen gesetzt. Eine Abgrenzung von C++ /CX zu C++ /CLI und C# rundet diesen Vortrag ab.&lt;/font&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font size="3"&gt;&amp;#160;&lt;/font&gt;&lt;font size="2"&gt;ALM in C++ Projekten&lt;/font&gt; &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Im C++ Umfeld werden bislang häufig bis auf Version Control nur vereinzelt weitere Bausteine des ALM verwendet, obwohl es hierfür aus technischer Sicht keine Gründe gibt. Dieser Vortrag richtet sich daher an alle Entwickler, die bislang auf die Vorzüge der Integration der unterschiedlichen ALM Aspekte in Team Foundation Server verzichtet haben. Anhand eines überschaubaren Beispiels wird die Arbeit mit Visual Studio 11 und Team Foundation Server 11 von der Definition eines Requirements, über die Implementierung und die Integration von automatisierten Tests in den zentralen Build Prozess bis hin zum Management von Bugs veranschaulicht. Abschließend gibt der Vortag einen kompakten Ausblick auf die für C++ Entwickler relevanten Neuerungen mit TFS 11.&lt;/font&gt;&lt;/p&gt;  &lt;h5&gt;&lt;font size="3" face="Segoe UI"&gt;&lt;font style="font-weight: bold"&gt;       &lt;br /&gt;&lt;font color="#3a3e43"&gt;Der Referent&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font style="font-weight: bold"&gt; &lt;/font&gt;&lt;/h5&gt;  &lt;h6&gt;&lt;/h6&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/2043.image_5F00_7AFC0DA5.png"&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/4118.image_5F00_thumb_5F00_5CCE4FF1.png" width="95" height="118" /&gt;&lt;/a&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/8306.image_5F00_50602CC8.png"&gt;&lt;img title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/7142.image_5F00_thumb_5F00_6F36A0A6.png" width="65" height="46" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Thomas Trotzki ist ALM Consultant bei der artiso AG nahe Ulm und Microsoft-C++-Profi der ersten Stunde.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Mit Microsoft C++ und den MFC beschäftigt er sich intensiv seit den ersten Beta-Versionen zu Microsoft C/C++ 7.0, also bereits vor der Geburtsstunde von Visual C++ und Visual Studio.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;Technologisch ist er neben C++ und den MFC auch mit COM/DCOM und der gesamten „Managed Welt“ vertraut und hat umfangreiche Expertise im Application Lifecycle Management. Zurzeit betreut er Kunden bei der Einführung von Microsoft Team Foundation Server und berät bei der Etablierung eines Application Lifecycle Management in deren Entwicklungsabteilungen&lt;/font&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10305776" width="1" height="1"&gt;</description><pubDate>Wed, 16 May 2012 11:25:21 Z</pubDate><a10:rights type="text">Christian Binder [MS]</a10:rights><a10:contributor><a10:name>Christian Binder [MS]</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Christian Binder [MS]</dc:creator></item><item><guid isPermaLink="true">http://www.artiso.com/ProBlog/PermaLink,guid,aa3b3dd7-0ce8-4f5f-b1e5-e83c8f62a49c.aspx</guid><link>http://www.artiso.com/ProBlog/PermaLink,guid,aa3b3dd7-0ce8-4f5f-b1e5-e83c8f62a49c.aspx</link><a10:author><a10:name>Thomas Schissler</a10:name></a10:author><title>Im TFS Plain Text Felder aus der Datenbank auslesen</title><description>&lt;p&gt;
Der TFs bietet ein relationales Warehouse und einen OLAP-Cube um auf Daten zuzugreifen,
z.B. für Reports. Leider gibt es keine Möglichkeit, PlainText-Felder im Warehouse
abzulegen. Es gibt aberhin und wieder die Situation, dass man diese Felder ausgeben
möchte. Dazu gibt es verschiedene Möglichkeiten. Die sauberste ist, wenn man die Felder
über die TFS API ausliest. Einen etwa schnelleren Weg zeige ich hier auf, auch wenn
der nicht ganz sauber ist. Dieser Weg geht direkt auf die operational Datenbank des
TFS und stellt damit ein von Microsoft nicht supportetes Szenario dar. D.h. Microsoft
kann die Datenbankstruktur jederzeit ohne Vorankündigung ändern was dazu führen kann,
dass der Ansatz so nicht mehr funktioniert.
&lt;/p&gt;
&lt;p&gt;
Mit folgender Abfrage auf die Datenbank der entsprechenden Team Project Collection
kann man beispielsweise das Description-Feld für alle Work Items abfragen. Die Abfrage
ist für den TFS 2010 konzipiert.
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; dbo.WorkItemsLatest.ID ,dbo.WorkItemsLatest.Rev
,dbo.WorkItemsLatest.[&lt;span class="kwrd"&gt;Work&lt;/span&gt; Item Type] ,dbo.WorkItemsLatest.Title
,dbo.WorkItemsLatest.&lt;span class="kwrd"&gt;State&lt;/span&gt; ,LongTexts.Words &lt;span class="kwrd"&gt;FROM&lt;/span&gt; dbo.WorkItemsLatest &lt;span class="kwrd"&gt;LEFT&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; lt.ID
,lt.Rev ,lt.Words &lt;span class="kwrd"&gt;FROM&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; t1.* &lt;span class="kwrd"&gt;FROM&lt;/span&gt; dbo.WorkItemLongTexts
t1 &lt;span class="kwrd"&gt;LEFT&lt;/span&gt; &lt;span class="kwrd"&gt;OUTER&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; dbo.WorkItemLongTexts
t2 &lt;span class="kwrd"&gt;ON&lt;/span&gt; t1.ID = t2.ID &lt;span class="kwrd"&gt;AND&lt;/span&gt; t1.Rev
&amp;lt; t2.Rev &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; t2.id &lt;span class="kwrd"&gt;is&lt;/span&gt; &lt;span class="kwrd"&gt;NULL&lt;/span&gt;)
lt &lt;span class="kwrd"&gt;INNER&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; dbo.Fields &lt;span class="kwrd"&gt;ON&lt;/span&gt; lt.FldID
= Fields.FldID &lt;span class="kwrd"&gt;AND&lt;/span&gt; Fields.ReferenceName = &lt;span class="str"&gt;'System.Description'&lt;/span&gt;)
LongTexts &lt;span class="kwrd"&gt;ON&lt;/span&gt; dbo.WorkItemsLatest.ID = LongTexts.ID &lt;/pre&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;img width="0" height="0" src="http://www.artiso.com/ProBlog/aggbug.ashx?id=aa3b3dd7-0ce8-4f5f-b1e5-e83c8f62a49c" /&gt;</description><pubDate>Wed, 16 May 2012 07:57:03 Z</pubDate><a10:rights type="text">Thomas Schissler</a10:rights><a10:contributor><a10:name>Thomas Schissler</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Thomas Schissler</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10305710</guid><link>http://blogs.msdn.com/b/hsirtl/archive/2012/05/16/veranstaltungshinweis-meet-windows-azure-am-7-juni.aspx</link><a10:author><a10:name>Holger Sirtl</a10:name></a10:author><title>Veranstaltungshinweis: MEET Windows Azure am 7. Juni</title><description>&lt;p&gt;Die Windows Azure Produktgruppe hat heute ein für alle Windows Azure Nutzer (und solche, die es werden wollen) äußerst wichtiges Online-Event angekündigt:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.meetwindowsazure.com/"&gt;&lt;strong&gt;MEET Windows Azure&lt;/strong&gt;&lt;/a&gt;    &lt;br /&gt;am 7. Juni 2012 ab 19:00 Uhr (MESZ)&lt;/p&gt;  &lt;p&gt;Live per Streaming aus San Francisco übertragen geben &lt;a href="http://weblogs.asp.net/scottgu/"&gt;Scott Guthrie&lt;/a&gt; und weitere Verantwortliche für Windows Azure einen Überblick über die neuesten Entwicklungen von und und für Windows Azure.&lt;/p&gt;  &lt;p&gt;Persönlicher Tipp von mir: unbedingt reinschauen. Das wird großartig!!!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.meetwindowsazure.com/"&gt;MEET Windows Azure&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2012/05/15/mark-your-calendar-meet-windows-azure-event-streamed-online-june-7th.aspx"&gt;Original-Blog-Post der Windows Azure Produktgruppe&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10305710" width="1" height="1"&gt;</description><pubDate>Wed, 16 May 2012 07:39:04 Z</pubDate><a10:rights type="text">Holger Sirtl</a10:rights><a10:contributor><a10:name>Holger Sirtl</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Holger Sirtl</dc:creator></item><item><guid isPermaLink="false">http://www.just-about.net/?p=2263</guid><link>http://www.just-about.net/dotnet-developers-conference-2012-eine-subjektive-zusammenfassung</link><a10:author><a10:name>Hendrik Lösch</a10:name></a10:author><title>Dotnet Developers Conference 2012 – Eine subjektive Zusammenfassung</title><description>Zwei Tage DDC liegen hinter mir. Übermüdet und voller neuer Eindrücke sitze ich nun in einem Regionalexpress nach Dresden der hoffentlich auch irgendwann einmal ankommt, vielen Dank Deutsche Bahn für die bescheidene Anbindung. Gefühlte 95% der Zeit war ich dabei als üblicher Teilnehmer unterwegs. Die einzigen Unterscheidungsmerkmale gegenüber der Allgemeinheit waren das rote Bändchen am [...]</description><pubDate>Tue, 15 May 2012 22:05:21 Z</pubDate><a10:rights type="text">Hendrik Lösch</a10:rights><a10:content type="html">&lt;p&gt;&lt;a href="http://www.just-about.net/wp-content/uploads/2012/05/DDC-2012_BannerSpeaker.jpg" rel="lightbox[2263]"&gt;&lt;img class="alignleft  wp-image-2266" title="DDC-2012_BannerSpeaker" src="http://www.just-about.net/wp-content/uploads/2012/05/DDC-2012_BannerSpeaker.jpg" alt="" width="200" height="120" /&gt;&lt;/a&gt; Zwei Tage DDC liegen hinter mir. Übermüdet und voller neuer Eindrücke sitze ich nun in einem Regionalexpress nach Dresden der hoffentlich auch irgendwann einmal ankommt, vielen Dank Deutsche Bahn für die bescheidene Anbindung.&lt;/p&gt;
&lt;p&gt;Gefühlte 95% der Zeit war ich dabei als üblicher Teilnehmer unterwegs. Die einzigen Unterscheidungsmerkmale gegenüber der Allgemeinheit waren das rote Bändchen am Namensschild und der große Aufdruck „Speaker“ auf meinem Poloshirt. Die Insignien der Konferenzelite wenn man so will, welche schnellere Kontaktaufnahme und einige detailliertere Einblicke in die Organisation garantierten.&lt;/p&gt;
&lt;p&gt;&lt;span id="more-2263"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Die Sicht des Teilnehmers&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bevor ich auf letzteres eingehe sei aber zunächst erst einmal die Infrastruktur gelobt. Die Internetverbindung war schnell und funktionierte fast immer tadellos, nur manchmal bedurfte es einiger Anläufe um zum gewünschten Ziel zu kommen. Das Essen fand ich reichlich und weitestgehend gutschmeckend. Vor allem die Cateringidee bei der OpenNight mit Burgern und Hotdogs zum selber basteln hatte einen hohen Kreativitätsfaktor.&lt;/p&gt;
&lt;p&gt;Nur als ich mir am ersten Tag irgendein Wirsing-Matsch-Patsch auf den Teller hievte hätte ich mir zum einen gern einen Schildchen mit kurzer Beschreibung gewünscht und vor allem eine etwas breitere Aufstellung der Tische mit dem Essen. Diese standen in den Stoßzeiten leider zu nahe bei einander, wodurch sich die Schlangen daran gegenseitig im Weg standen, was wiederum die Inbesitznahme der Leckereien beim Mittagessen zu einem kleinen Spießrutenlauf werden ließ an dessen Ende man sich mit irgendwas auf dem Teller zufrieden gab, Hauptsache raus hier.&lt;/p&gt;
&lt;p&gt;Von den Vorträgen her bin ich nach wie vor zu großen Teilen begeistert aber leider auch etwas zwiegespallten. So war die Themenauswahl wirklich gut und gliederte sich in acht Kategorien zu je vier Tracks pro Tag, mit denen vom Requirements-Engieneering über die Architektur, automatisierten Tests und Deployment alles abgedeckt wurde, einschließlich Tipps und Tricks fürs Alltagsgeschäft.&lt;/p&gt;
&lt;p&gt;Auf der anderen Seite muss ich jedoch auch Kritik üben. So hielt leider nicht jeder Vortrag das was die Ankündigung versprach. Dies lag zum einen an der fehlenden Schwierigkeitsstufe, die schon frühzeitig vor allzu seichten Themen gewarnt hätte, und zum anderen ein paar zu große Versprechungen seitens der Vortragenden.&lt;/p&gt;
&lt;p&gt;Positiv hervor zu heben seien jedoch vor allem die Vorträge von Chris Rupp („Spezifizierst du noch oder implementierst du schon?“) die auf beeindruckende Weise die Komplexität der Kommunikation analysierte, Golo Rodens „JavaScript Best Practices“ der mit einfachsten Mitteln die schlimmsten Stolpersteine von JavaScript beschrieb und mir als zuvor Unwissenden dabei genug Futter gab um im Grunde die, leider erst darauf folgende, Einführung in JavaScript im Internet surfend zu verbringen. Weiterhin war die Keynote von Jeff Potter sehr unterhaltsam, auch wenn manche Pointe durch das Raster fiel, weil der Tag doch etwas sehr anstrengend war und somit wenig Platz zum Übersetzen im vollgestopfte Kurzzeitspeicher blieb.&lt;/p&gt;
&lt;p&gt;Leider nicht mitnehmen konnte ich „Guck mal – Codereviews in der Praxis“ von Laurin Still und „Gestern Entwickler, heute ScrumMaster“ von Dr. Jürgen Hoffman und Heiko Stapf die mir nachträglich als sehr gut bescheinigt wurden, aber etwas ungünstig zu meiner eigenen Session lagen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Die Sicht des Sprechers&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Damit sind wir auch schon beim eigentlichen Auslöser für meine Teilnahme. In meinem Vortrag „MS Test – Der missverstandene Stiefbruder!?!“ widmete ich mich einer Gegenüberstellung von NUnit und MS Test sowie den unterschiedlichen Teststufen in der Qualitätssicherung und deren Automatisierungsgrad. Ob ich den Nerv meiner Zuhörer dabei traf kann ich leider nicht ganz einschätzen und würde mich hier über Feedback freuen.&lt;/p&gt;
&lt;p&gt;Sehr ermutigend war jedoch die große Anzahl der Beteiligten die ich grob auf etwas zwischen 60 und 80 von insgesamt ca. 500 Personen schätzen würde. Dies ist für mich insofern erfreulich, da mein Thema nach eigener Einschätzung ein vergleichsweise umfangreiches Wissen voraussetzte und nicht wenig komplex war, ich anderer seits im Hauptteil aber nie das Gefühl bekam die Zuhörerschaft zu überfordern oder in den Weiten der Langeweile verloren zu haben. Dies zeigte sich zum Beispiel durch beständig in die Höhe gehende Hände auf Fragen meinerseits und interessiertes Nicken oder amüsiertes Kopfschütteln ihrerseits.&lt;/p&gt;
&lt;p&gt;Hauptteil, ist hier ein wichtiger Punkt, denn leider habe ich mich im Vorfeld zeitlich ein wenig verschätzt. So habe ich in der Vorbereitung alles in allem für den Vergleich der Frameworks samt Zusammenfassung fast immer etwas über 50 Minuten benötigt. Plus einen Puffer für Fragen und Anekdoten also ein solider Zeitrahmen, der mich dazu bewog den Vergleich der Isolation Frameworks als Backup zu verwenden. Leider war ich jedoch schon nach 40 Minuten fertig und bekam bis auf eine Frage, bei der ich nicht helfen konnte, kein weiteres Futter. Die nun doch gezeigten Backupfolien wirkten daraufhin für mich irgendwie wie angeflanscht, was dem Verständnis sicher nicht dienlich war.&lt;/p&gt;
&lt;p&gt;Was lernen wir daraus? Never change a running system! Vor allem nicht einen Tag vor der Konferenz! Dabei war genau diese Devise eigentlich der Grund warum ich bis auf zwei Folien nicht das Layout der Konferenz übernahm. Mit den, für meinen Geschmack, etwas zu großzügigen Rändern samt Begleitinfos hätte ich mir meiner Meinung nach andernfalls den Vortrag gekillt bzw. einen unverhältnismäßig hohen Umbauaufwand gehabt.&lt;/p&gt;
&lt;p&gt;Obwohl ich also nicht ohne Fehler bin muss ich auch aus Sicht eines Sprechers Kritik an meinen Kollegen äußern. Ich habe viele erfrischende Ideen und kreative Vorträge gesehen. Es wird auch niemand gezwungen voll gestopfte Powerpoint Monstren mit Myriaden Folien zu produzieren, aber bitte Jungs die Leute zahlen teils nicht gerade wenig Geld für die Veranstaltung also solltet ihr den Inhalt einer Session auch nicht dem Funfactor unterordnen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Zusammenfassung&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Alles in allem bin ich aber sehr zufrieden. Das Hotel war klasse und super gelegen, die Menschen waren nett und gesprächig, der Wissensgewinn war beträchtlich und dank meines Sprecherdaseins war das alles auch fast gänzlich kostenlos. Danke an der Stelle noch mal an meinen Arbeitgeber Saxonia Systems die alle Kosten übernahmen die der Veranstalter nicht trug.&lt;/p&gt;
&lt;div class="printfriendly alignright"&gt;&lt;a href="http://www.just-about.net/dotnet-developers-conference-2012-eine-subjektive-zusammenfassung?pfstyle=wp" rel="nofollow" &gt;&lt;span class="printfriendly-text"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;</a10:content><a10:contributor><a10:name>Hendrik Lösch</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Hendrik Lösch</dc:creator></item><item><guid isPermaLink="false">http://code-inside.de/blog/?p=4331</guid><link>http://feedproxy.google.com/~r/Code-insideBlog/~3/_R5A0OymJqg/</link><a10:author><a10:name>Code-Inside Blog</a10:name></a10:author><title>Chocolatey–apt-get für Windows</title><description>&lt;div&gt;&lt;img width="150" height="150" src="http://code-inside.de/blog/wp-content/uploads/image1549-150x150.png" class="attachment-thumbnail wp-post-image" alt="image.png" title="image.png" style="margin-bottom: 15px;" /&gt;&lt;/div&gt;Durch Zufall bin ich auf das Tool “Chocolatey” gestoßen. Wer die Website sich anschaut, wird evtl. eine Verwandschaft mit NuGet ausmachen. Was macht Chocolatey? Chocolatey ist ein “Maschine Package Manager”, das bedeutet, dass man für seine Maschine einfach Tools runterladen und Updaten kann – direkt über die Konsole. Was ist der Unterschied zu NuGet? NuGet ...</description><pubDate>Tue, 15 May 2012 18:45:13 Z</pubDate><a10:rights type="text">Code-Inside Blog</a10:rights><a10:content type="html">&lt;div&gt;&lt;img width="150" height="150" src="http://code-inside.de/blog/wp-content/uploads/image1549-150x150.png" class="attachment-thumbnail wp-post-image" alt="image.png" title="image.png" style="margin-bottom: 15px;" /&gt;&lt;/div&gt;&lt;p&gt;Durch Zufall bin ich auf das Tool &lt;a href="http://chocolatey.org/"&gt;“Chocolatey”&lt;/a&gt; gestoßen. Wer die Website sich anschaut, wird evtl. eine Verwandschaft mit &lt;a href="http://nuget.org/"&gt;NuGet&lt;/a&gt; ausmachen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://chocolatey.org/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://code-inside.de/blog/wp-content/uploads/image1549.png" width="542" height="694"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was macht Chocolatey?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Chocolatey ist ein “Maschine Package Manager”, das bedeutet, dass man für seine Maschine einfach Tools runterladen und Updaten kann – direkt über die Konsole. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was ist der Unterschied zu NuGet?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;NuGet ist für Development Libraries, wohingegen Chocolatey eher auf das Tooling eingeht. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Demonstration gefällig?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Das Chocolatey Team hat ein Video bereitgestellt, welches die Funktionsweise zeigt:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:623a3428-1001-45a5-b270-287bce3533f3" class="wlWriterEditableSmartContent"&gt;
&lt;div&gt;&lt;object width="448" height="252"&gt;&lt;param name="movie" value="http://www.youtube.com/v/N-hWOUL8roU?hl=en&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/N-hWOUL8roU?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Wie installier ich Chocolatey:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Einfach CMD starten und dies befolgen:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image1550.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://code-inside.de/blog/wp-content/uploads/image_thumb712.png" width="474" height="65"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;@powershell -NoProfile -ExecutionPolicy unrestricted -Command &amp;#8220;iex ((new-object net.webclient).DownloadString(&amp;#8216;http://bit.ly/psChocInstall&amp;#8217;))&amp;#8221;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ausprobieren…&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich musste zwar erst noch die Konsole schließen und die Powershell Konsole aufmachen, konnte dann aber erfolgreich “cinst Console2” ausführen:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/SNAGHTMLb39dd9c.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="SNAGHTMLb39dd9c" border="0" alt="SNAGHTMLb39dd9c" src="http://code-inside.de/blog/wp-content/uploads/SNAGHTMLb39dd9c_thumb.png" width="491" height="329"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tadaa…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Open Source, für Windows und basiert auf NuGet&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; Es ist zudem &lt;a href="https://github.com/chocolatey/chocolatey/"&gt;Open Source&lt;/a&gt;, basiert auf NuGet (wie unschwer zu sehen war) und die Idee ist uralt und doch irgendwie hat es noch keiner auf Windows toll gelöst. Schaut euch Chocolatey mal an – für die Entwicklertoolbox &lt;img src='http://code-inside.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; .&lt;/p&gt;
&lt;p&gt;Weitere Hintergründe erfährt man auch auf im &lt;a href="https://github.com/chocolatey/chocolatey/wiki"&gt;Wiki auf GitHub&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Wer das Tool schon länger kennt kann auch gerne &lt;a href="http://www.knowyourstack.com/what-is/chocolatey"&gt;Informationen auf KnowYourStack&lt;/a&gt; hinterlegen &lt;img src='http://code-inside.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS: Bei dem Namen kommen Erinnerung zu Azure hoch &amp;#8211; Wie spricht man das aus? &lt;img src='http://code-inside.de/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /&gt; &lt;/em&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Code-insideBlog/~4/_R5A0OymJqg" height="1" width="1"/&gt;</a10:content><a10:contributor><a10:name>Code-Inside Blog</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Code-Inside Blog</dc:creator></item><item><guid isPermaLink="false">http://blog.jan-welker.de/PermaLink,guid,4d42118a-e6c5-444c-8cea-07fb0c2ca217.aspx</guid><link>http://blog.jan-welker.de/2012/05/15/NETDeveloperConference2012EinR%c3%bcckblick.aspx</link><a10:author><a10:name>Jan Welker</a10:name></a10:author><title>.NET Developer Conference 2012 – ein Rückblick</title><description>&lt;p&gt;
Genau wie &lt;a href="http://blog.jan-welker.de/2011/06/07/DasWarDieNETDevCon2011.aspx" target="_blank"&gt;im
letzten Jahr&lt;/a&gt; fand die .NET Developer Conference in der Meistersingerhalle in Nürnberg
statt. Die Konferenz wird von der Neuen Mediengesellschaft Ulm veranstaltet, die auch
Herausgeber der Entwicklerzeitschrift dotnetpro ist. Im letzten Jahr konnte die Veranstaltung
die Meistersingerhalle noch nicht ganz ausfüllen, in diesem Jahr waren deutlich mehr
Besucher da.&lt;br&gt;
Die Vortragsräume waren oft bis auf den letzten Platz gefüllt und das Catering hatte
das ein oder andere Mal Probleme, dem Ansturm hungriger Entwickler standzuhalten.&lt;br&gt;
&lt;br&gt;
&lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;a href="http://blog.jan-welker.de/content/binary/Windows-Live-Writer/b6e.NET-Developer-Conference-2012ein-Rck_FBDA/DDC-Tasse_2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="DDC-Tasse" border="0" alt="DDC-Tasse" src="http://blog.jan-welker.de/content/binary/Windows-Live-Writer/b6e.NET-Developer-Conference-2012ein-Rck_FBDA/DDC-Tasse_thumb.jpg" width="244" height="212"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td valign="top" width="200"&gt;
Diese Tasse bekam jeder Besucher bei der Begrüßung.&lt;br&gt;
&lt;br&gt;
C64 – Basic. Das nächste “große Ding” nach JavaScript?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;br&gt;
Erfreulicherweise gab es in diesem Jahr einige Verbesserungen. Zum Beispiel stand
in jedem Raum ein W-Lan Repeater, die einen stabilen Internetzugang ermöglichten,
so dass die Social-Media Angebote des Veranstalters genutzt werden konnten. Im Gegensatz
zur Basta! Spring, die ich Ende Februar besuchte, wurde bei dieser Konferenz kräftig &lt;a href="https://twitter.com/#!/search/%23ddc12" target="_blank"&gt;getwittert&lt;/a&gt;.&lt;br&gt;
Die Konferenz deckte ein breites Themenspektrum ab, die vier Tracks waren Sprachen,
Architektur, Datenzugriff und Soft Skills.&lt;br&gt;
Die Pausen zwischen den Vorträgen waren ausreichend und man hatte genügend Gelegenheit
fürs Networking und für den Besuch der Sponsoren. Leider gab es nur 3 Aussteller,
die vor Ort waren.&lt;br&gt;
&lt;br&gt;
&lt;table border="0" cellspacing="0" cellpadding="2" width="400"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="200"&gt;
&lt;a href="http://blog.jan-welker.de/content/binary/Windows-Live-Writer/b6e.NET-Developer-Conference-2012ein-Rck_FBDA/DDC-Essen_2.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="DDC-Essen" border="0" alt="DDC-Essen" src="http://blog.jan-welker.de/content/binary/Windows-Live-Writer/b6e.NET-Developer-Conference-2012ein-Rck_FBDA/DDC-Essen_thumb.jpg" width="184" height="244"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;td valign="top" width="200"&gt;
Hamburger, Hot Dogs zum selber bauen und reichlich fränkisches Bier gab es bei der
so genannten Open Night am Ende des ersten Tages. 
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br&gt;
&lt;br&gt;
Meine größte Kritik bei der DDC 2012 betrifft die Agenda. Es ist mir insgesamt drei
Mal passiert, dass ich in einem Vortrag saß, der für absolute Einsteiger ausgelegt
war. Zum Beispiel gab es einen Vortrag, in dem erklärt wurde, dass es in JavaScript
Schleifen und Variablen gibt. In diesem Vortrag habe ich zum Beispiel auch “gelernt”,
dass man JavaScript &lt;u&gt;sogar&lt;/u&gt; in ASP.NET einsetzten kann.&lt;br&gt;
Ich habe nichts gegen solche Low-Level Vorträge, ganz im Gegenteil, jedoch sollte
das Level in der Agenda angegeben werden, wenn sich das Niveau der Vorträge so stark
unterscheidet wie auf dieser Konferenz, denn es gab auch Vorträge die deutlich anspruchsvoller
waren. Mit dieser Meinung war ich nicht allein, wie ich in einigen Gesprächen mit
anderen Entwicklern erfahren habe.
&lt;/p&gt;
&lt;p&gt;
Alles in allem war die .NET Developer Conference 2012 eine gelungene Konferenz zu
einem fairen Preis.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.jan-welker.de/aggbug.ashx?id=4d42118a-e6c5-444c-8cea-07fb0c2ca217" /&gt;</description><pubDate>Tue, 15 May 2012 16:56:13 Z</pubDate><a10:rights type="text">Jan Welker</a10:rights><a10:contributor><a10:name>Jan Welker</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Jan Welker</dc:creator></item><item><guid isPermaLink="false">http://blog.aitgmbh.de/?p=2823</guid><link>http://feedproxy.google.com/~r/AITTeamSystemProBlog/~3/wdzXSfkBn7M/</link><a10:author><a10:name>Sven Hubert</a10:name></a10:author><title>Agile Entwicklung mit ScrumTable für TFS 2010 – Teil 3</title><description>Die letzten beiden Blog-Einträge über Team Foundation Server mit ScrumTable befassten sich mit dem Backlog grooming. Die Vorzüge der Kombination zwischen ScrumTable und Team Foundation Server treten ebenfalls bei den Sprint Planning Meetings zum Vorschein. Dieser Artikel beschreibt, wie sich die Interaktion mit ScrumTable während der Sprint Planning Meetings gestaltet.&lt;p&gt;&lt;a href="http://blog.aitgmbh.de/2012/05/15/agile-entwicklung-mit-scrumtable-fur-tfs-2010-%e2%80%93-teil-3/"&gt;Agile Entwicklung mit ScrumTable für TFS 2010 – Teil 3&lt;/a&gt; is a post from: &lt;a href="http://blog.aitgmbh.de"&gt;AIT Blog&lt;/a&gt;&lt;/p&gt;
</description><pubDate>Tue, 15 May 2012 16:27:21 Z</pubDate><a10:rights type="text">Sven Hubert</a10:rights><a10:content type="html">&lt;p&gt;Die letzten beiden Blog-Einträge über Team Foundation Server mit ScrumTable befassten sich mit dem Backlog grooming. Die Vorzüge der Kombination zwischen ScrumTable und Team Foundation Server treten ebenfalls bei den Sprint Planning Meetings zum Vorschein. Dieser Artikel beschreibt, wie sich die Interaktion mit ScrumTable während der Sprint Planning Meetings gestaltet.&lt;/p&gt;
&lt;p&gt;&lt;span id="more-2823"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Sprint Planning wird üblicherweise in zwei Meetings aufgeteilt. Im ersten Teil wählt das Team die User Stories aus, welche im nächsten Sprint realisiert werden. Das Meeting definiert also „was“ realisiert werden soll.&lt;br /&gt;
Im zweiten Teil werden die einzelnen User Stories in Aufgaben unterteilt. Somit wird definiert, „wie“ das Team die User Stories des zu planenden Sprints realisiert.&lt;/p&gt;
&lt;p&gt;Durch die oben beschriebene Unterteilung in Sprint Planning 1 und 2 kann ein Fokus gesetzt und effizienter geplant werden, da bei den Meetings jeweils andere Scrum Rollen vertreten sein sollten.&lt;/p&gt;
&lt;p&gt;&lt;img style="margin-left: 15px;" src="http://www.scrumtable.ch/images/ait_blog3_img1.png" border="0" alt="" width="400" align="right" /&gt; Im ersten Teil stellt der Product Owner die von ihm gewünschten User Stories (meistens die obersten im Product Backlog) vor. Skizzen und Anhänge (siehe Bild rechts) helfen beim Verstehen. Das Ziel dieses Meetings besteht darin, dass das Team die zu realisierenden User Stories versteht und deren Abnahmekriterien kennt.&lt;br /&gt;
Das Team prüft so bei jeder User Story, ob diese zeitlich im nächsten Sprint realisiert werden kann und ob Abhängigkeiten zu anderen User Stories bestehen. User Stories können vom Team zurückgestellt werden, falls deren Realisierung weitere User Stories nach sich zieht &amp;#8211; somit würde die Sprint-Dauer nicht mehr ausreichen. Sobald genügend Arbeitslast fürs Team eingeplant wurde, wird der erste Teil des Meetings üblicherweise beendet.&lt;/p&gt;
&lt;p&gt;Im zweiten Teil, bei welchem der Product Owner nicht mehr anwesend ist, werden die einzelnen User Stories technisch analysiert und eine grobe Architektur entworfen. Anschliessend wird die Story in Aufgaben unterteilt, welche von einzelnen Team-Mitgliedern implementiert werden können. Am Ende sollte eine Liste von Aufgaben vorhanden sein, welche von den einzelnen Team Mitgliedern ausgewählt und ausgeführt werden kann.&lt;/p&gt;
&lt;p&gt;Das folgende Video beschreibt eine mögliche Interaktion mit ScrumTable während der Sprint Planning Meetings:&lt;br /&gt;
&lt;a href="http://youtu.be/RIpfxVQs5VY" target="_new"&gt;&lt;img src="http://www.scrumtable.ch/images/ait_blog3_img2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.aitgmbh.de/2012/05/15/agile-entwicklung-mit-scrumtable-fur-tfs-2010-%e2%80%93-teil-3/"&gt;Agile Entwicklung mit ScrumTable für TFS 2010 – Teil 3&lt;/a&gt; is a post from: &lt;a href="http://blog.aitgmbh.de"&gt;AIT Blog&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/AITTeamSystemProBlog/~4/wdzXSfkBn7M" height="1" width="1"/&gt;</a10:content><a10:contributor><a10:name>Sven Hubert</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Sven Hubert</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10305382</guid><link>http://blogs.msdn.com/b/cbinder/archive/2012/05/15/c-webcasts-zu-c-11-going-parallel-und-alm.aspx</link><a10:author><a10:name>Christian Binder [MS]</a10:name></a10:author><title>C++ Webcasts zu C++ 11, Going Parallel und ALM</title><description>&lt;p&gt;Im Rahmen der ersten &lt;a title="C++ Days 2012" href="http://blogs.msdn.com/b/cbinder/archive/2011/12/29/c-entwickler-uptodate-microsoft-c-day-2012.aspx" target="_blank"&gt;C++ Days&lt;/a&gt; in diesem Jahr haben wir die Inhalte auch als Webcasts zur Verfügung gestellt.    &lt;br /&gt;Die Demos und Slides zum C++ Day gibt es &lt;a title="Demos und Slides C++ Day 2012" href="http://blogs.msdn.com/b/cbinder/archive/2012/02/09/c-day-2012-slides-und-demos-zum-download.aspx" target="_blank"&gt;hier&lt;/a&gt;.&amp;#160; Viel Spass&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/germany/MSDN/webcasts/library.aspx?id=1032487455" target="_blank"&gt;&lt;font size="3"&gt;C++11 : Modernes C++ im 21. Jahrhundert&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;C++ bleibt aktuell – neue Sprachfeatures machen den nativen Klassiker fit für neue Herausforderungen. Dieser Vortrag gibt Ihnen einen Überblick über die wesentlichsten Neuerungen in C++ 11 – wie beispielsweise Smartpointer mit Reference-Counting (shared_ptr), Lambda-Expressions, neue Container-Klassen, Iteratoren und Sprachkonstrukte wie for_each sowie RValue References.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/germany/MSDN/webcasts/library.aspx?id=1032487456" target="_blank"&gt;&lt;font size="3"&gt;Parallel Power in VC++ 11 Beta &lt;/font&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Effektive parallele Programmierung erhöht die Performance in vielen Fällen drastisch, braucht aber das richtige Know-How und spezialisierte Tools. Denn bei stetig steigender Anzahl an Cores und CPUs wird es immer wichtiger, das Anwendungsmodell in Richtung Skalierbarkeit hinsichtlich Multiprocessing auszulegen. Auch das Debugging bietet einige Herausforderungen. Verschaffen Sie sich einen Überblick über die neuen Konzepte rund um Parallelisierung in Windows API, Concurrency Runtime und Visual Studio.     &lt;/p&gt;  &lt;h3&gt;&lt;font size="3" face="Segoe UI"&gt;&lt;a href="http://www.microsoft.com/germany/MSDN/webcasts/library.aspx?id=1032487453" target="_blank"&gt;Visual Studio ALM 11 Beta für C++ Entwickler&lt;/a&gt;&lt;/font&gt;&lt;/h3&gt;  &lt;p&gt;Visual Studio ALM 11 bringt für &amp;quot;C++&amp;quot;-Teams einige Neuerungen. Dashboards unterstützen Teams vom Backlog über die Sprint-Planung bis zum täglichen Standup. Code Review Support und VS Context Switching macht Team Collaboration mit TFS 11 besser denn je. Neues natives &amp;quot;C++&amp;quot;-Unittesting und &amp;quot;Architecture Discovery&amp;quot; ist nun auch für native C++ verfügbar. Dieser Webcast greift einige der Änderungen für &amp;quot;C++&amp;quot;-Entwickler auf.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10305382" width="1" height="1"&gt;</description><pubDate>Tue, 15 May 2012 14:45:11 Z</pubDate><a10:rights type="text">Christian Binder [MS]</a10:rights><a10:contributor><a10:name>Christian Binder [MS]</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Christian Binder [MS]</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10304893</guid><link>http://blogs.msdn.com/b/cbinder/archive/2012/05/14/sql-server-data-tools-workshop-in-bad-homburg.aspx</link><a10:author><a10:name>Christian Binder [MS]</a10:name></a10:author><title>SQL Server Data Tools Workshop in Bad Homburg</title><description>&lt;p&gt;&lt;a title="SQL Server Data Tools Workshop" href="http://www.microsoft.com/germany/visualstudio/events/data-tools-workshop.aspx" target="_blank"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-75-18-metablogapi/0317.image_5F00_651D2CA1.png" width="586" height="215" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Am 2. Juli veranstalten wir einen Workshop zu den SQL Server Data Tools. Gerd Drapers Principal Group Program Manager SQL Server wird mit Kollegen diesen Tagesworkshop halten. Gerd ist im Kontext der TechEd in Europa und wir konnten Ihn für diesen Workshop exklusiv nach Deutschland holen. Also ein einmalige Chance sich mit den Entwicklern der SQL Server Data Tools auszutauschen. Leider haben wir nur eine begrenzte Anzahl an Plätzen zur Verfügung.&lt;/p&gt;  &lt;p&gt;Zur Anmeldung und den Details geht’s &lt;a title="SQL Data Tools Workshop" href="http://www.microsoft.com/germany/visualstudio/events/data-tools-workshop.aspx"&gt;hier&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10304893" width="1" height="1"&gt;</description><pubDate>Mon, 14 May 2012 14:58:09 Z</pubDate><a10:rights type="text">Christian Binder [MS]</a10:rights><a10:contributor><a10:name>Christian Binder [MS]</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Christian Binder [MS]</dc:creator></item><item><guid isPermaLink="false">http://ilker.de/?p=3532</guid><link>http://ilker.de/der-agilist-agile-scrummaster</link><a10:author><a10:name>Ilker Cetinkaya</a10:name></a10:author><title>Der Agilist: Agile Scrum-Master</title><description>Nach einer kurzen Verschnaufpause möchte ich heute meine Interview-Serie der Agilisten fortführen und gleich mit einem interessanten Thema einsteigen: Der Stand der heutigen agilen Software-Entwicklung aus der Perspektive des Scrum-Master. Der Scrum-Master ist eine besondere Rolle im Rahmenwerk Scrum. Wenn auch nicht [...]</description><pubDate>Mon, 14 May 2012 13:38:37 Z</pubDate><a10:rights type="text">Ilker Cetinkaya</a10:rights><a10:content type="html">&lt;style type="text/css"&gt;
.der-agilist-agile-scrum-master .figure {
  float: right;
  margin-left: 8px;
}
.der-agilist-agile-scrum-master blockquote {
  margin-top: 24px;
  padding-bottom: 6px;
  padding-top: 12px;
  border-left: 0px;
  border-bottom: 1px solid #c2c3c4;
  border-top: 1px solid #c2c3c4;
}
.der-agilist-agile-scrum-master #content hr {
  display:block;
  height:1px;
  color:#c2c3c4;
}
#weitere-interviews-der-serie-der-agilist {
  font-size:smaller;
}
&lt;/style&gt;
&lt;p
&gt;Nach einer kurzen Verschnaufpause möchte ich heute meine Interview-Serie der &lt;a href="/der-agilist"
  &gt;Agilisten&lt;/a
  &gt; fortführen und gleich mit einem interessanten Thema einsteigen: Der Stand der heutigen agilen Software-Entwicklung aus der Perspektive des &lt;em
  &gt;Scrum-Master&lt;/em
  &gt;. Der Scrum-Master ist eine besondere Rolle im Rahmenwerk Scrum. Wenn auch nicht die wichtigste, ist es dennoch eine intensive und spannende Rolle.&lt;/p
&gt;&lt;div id="im-interview:-bettina-ruggeri"
&gt;&lt;h3
  &gt;Im Interview: Bettina Ruggeri&lt;/h3
  &gt;&lt;div class="figure"
  &gt;&lt;img src="/wp-content/uploads/2012/05/der_agilist_bettina.jpg"
     /&gt;&lt;p class="caption"
    &gt;&lt;/p
    &gt;&lt;/div
  &gt;&lt;p
  &gt;Gerade wegen des intensiven Wirkungsspektrums der Rolle ist es mir eine Freude, mit &lt;a href="https://www.xing.com/profile/Bettina_Ruggeri"
    &gt;Bettina Ruggeri&lt;/a
    &gt; eine erfahrene Scrum-Masterin für ein Interview gewinnen zu können. Bettina blickt nicht nur auf vielschichtige Erfahrungen als Scrum-Master zurück, sondern ist darüber hinaus eine engagierte Scrum-Masterin, die gerne den Austausch mit Kollegen sucht und das stetige Lernen befürwortet &amp;#8211; ja sogar vorlebt. Es folgt ein komprimiertes Gesprächsprotokoll. Viel Spaß!&lt;/p
  &gt;&lt;blockquote
  &gt;&lt;p
    &gt;Hallo Bettina. Was machst Du beruflich?&lt;/p
    &gt;&lt;/blockquote
  &gt;&lt;p
  &gt;Aktuell verbreite &amp;amp; lebe ich agile Werte und Methoden als Scrum Master und Kanban Coach. Dazu betreue ich die Ausbildung in unserem Unternehmen und werde vielfach als Moderator eingesetzt.&lt;/p
  &gt;&lt;p
  &gt;Darüber hinaus arbeite ich im beruflichen und privaten Umfeld als Konfliktmoderatorin/Mediatorin und begleite Menschen als systemischer Coach.&lt;/p
  &gt;&lt;blockquote
  &gt;&lt;p
    &gt;Welches sind Deine Ziele bei der agilen Software-Entwicklung?&lt;/p
    &gt;&lt;/blockquote
  &gt;&lt;p
  &gt;Mein Ziel ist eine verbesserte Zusammenarbeit, um gemeinsam Ziele zu erreichen. Deshalb möchte ich eine Firmenkultur fördern, in der die Interessen aller Mitarbeiter gesehen werden, Freude an Weiterentwicklung und ein wertschätzendes Fehler- und Konfliktverhalten gelebt wird.&lt;/p
  &gt;&lt;p
  &gt;Und so konzentriere ich mich immer mehr auf die Menschen, die mir im Leben begegnen &amp;#8211; sei es jeder Einzelne, Teams und auch das Management.&lt;/p
  &gt;&lt;p
  &gt;Aus meiner Sicht sind Akzeptanz und ein vertrauensvolles Umfeld der notwendige Raum, um Kreativität und Begeisterung für erfolgreiche Produkte zu entwickeln.&lt;/p
  &gt;&lt;blockquote
  &gt;&lt;p
    &gt;Scrum ist mittlerweile das bekannteste und beliebteste agile methodische Vorgehen. Warum?&lt;/p
    &gt;&lt;/blockquote
  &gt;&lt;p
  &gt;Nun, es ist in erster Linie natürlich eine vielerorts erfolgreiches agiles Methodenwerk. Darüber hinaus &lt;em
    &gt;erscheint&lt;/em
    &gt; es dem Neuling bzw. Interessierten auch als ein einfaches Methoenmodell, weil es nur wenige “Regeln” mit sich bringt.&lt;/p
  &gt;&lt;p
  &gt;Betrachtet man die Zuneigung zu Scrum etwas genauer, fällt einem schnell auf, das ein Großteil der Vorliebe dem agilen Wert der “Menschenorientierung” zu schulden ist. Scrum stellt den Menschen in den Vordergrund, wie jede andere agile Vorgehensweise auch. Das ist ein Schlüsselfaktor denke ich.&lt;/p
  &gt;&lt;blockquote
  &gt;&lt;p
    &gt;Ist Scrum wirklich so einfach, wie es immer gesagt und vermittelt wird?&lt;/p
    &gt;&lt;/blockquote
  &gt;&lt;p
  &gt;Nein, Scrum ist nicht wirklich einfach. Ich denke, Scrum will das auch gar nicht sein. Der “Schein” des einfachen mit den wenigen Rollen, Regeln und Gremien ist zwar da, aber das war’s auch schon. Themen wie Selbstorganisation und Eigeninteresse an Weiterentwicklung sind äußerst schwierig. Sowohl für den Einzelnen, wie auch für die Gemeinschaft.&lt;/p
  &gt;&lt;p
  &gt;Ein kurzes Beispiel hilft vielleicht zur Veranschaulichung. In agilen Methoden &amp;#8211; so auch in Scrum &amp;#8211; gibt es vielschichtige Feedback- und Reflektionsmechanismen. Menschen werden daduch quasi &lt;em
    &gt;gezwungen&lt;/em
    &gt;, eine Überprüfung der Lage und Ihres Handelns durchzuführen. Das ist schwerer als man denken mag, denn wir Menschen tun uns meist leichter zu sagen, was wir &lt;em
    &gt;nicht&lt;/em
    &gt; wollen. Doch das zu sagen, was wir &lt;em
    &gt;stattdessen&lt;/em
    &gt; wollen, ist ungleich schwieriger.&lt;/p
  &gt;&lt;blockquote
  &gt;&lt;p
    &gt;Wieso ist der Scrum-Master für ein Scrum-Team so wichtig? Alle im Team ‘können’ ja Scrum, oder nicht?&lt;/p
    &gt;&lt;/blockquote
  &gt;&lt;p
  &gt;Nun, es liegt in der Natur des Menschen, das man in seinem Aufgabenfeld von Zeit zu Zeit in eine gewisse Routine kommt. Dinge, Methoden und Auffassungen schleifen sich ein und der Blick über den Tellerrand fällt dann dem einen oder anderen schwerer.&lt;/p
  &gt;&lt;p
  &gt;Ein “frischer Wind” von außen, eine Kraft, die manche steife Blicke wieder aufweitet tut in diesem Moment meines Erachtens gut. Als Scrum-Master erlebe ich mich als die Kraft, die hilft, die gemeinsame Komfort-Zone zu hinterfragen. Insofern kann man sagen, dass es auch eine meiner Aufgaben ist, “unbequem” zu sein. Das Ziel dabei ist die Weiterentwicklung der Arbeitsweisen.&lt;/p
  &gt;&lt;blockquote
  &gt;&lt;p
    &gt;Warum wird oft bei agilen Einführungen der Scrum-Master als neuer ‘Projekt-Manager’ gesehen?&lt;/p
    &gt;&lt;/blockquote
  &gt;&lt;p
  &gt;Diese Wahrnehmung hat viele Gründe. Meistens hat es mit der Ab- und Übergabe von Vertrauen und Verantwortung zu tun. Ein klassisches Management ist es gewohnt, Verantwortung explizit an Personen zu übertragen. Es braucht eine Bezugsperson, der sie die Verantwortung buchstäblich ‘in die Hände’ legt.&lt;/p
  &gt;&lt;p
  &gt;Manchmal ist es auch etwas banaleres, wie z.B. die nackte Tatsache, dass die völlige Transparenz zwischen Team und Produktverantwortlichen nicht erwünscht ist. Das mag aus vielerlei Motivationsfaktoren entstehen. Entscheidend ist aber meiner Meinung nach, dass man solche Faktoren erkennt. Nur dadurch lässt sich auch ein überlegter Umgang mit der Situation ermöglichen.&lt;/p
  &gt;&lt;blockquote
  &gt;&lt;p
    &gt;Welches sind Deiner Meinung nach die Kern-Eigenschaften eines guten Scrum-Masters?&lt;/p
    &gt;&lt;/blockquote
  &gt;&lt;p
  &gt;Die wichtigste Eigenschaft ist sicherlich die &lt;em
    &gt;“Liebe zu den Menschen”&lt;/em
    &gt;. Als Scrum-Master arbeitet man viel mit und an den Menschen. Da ist es quasi fundamental, den Umgang mit vielerlei Charakteren und Meinungen zu mögen.&lt;/p
  &gt;&lt;p
  &gt;Darüber hinaus zeichnet sich ein Scrum-Master für mich durch das leben und vermitteln von Werten wie Akzeptanz, Wertschätzung und Vertrauen aus. Das sind elementare Werte, um den Raum für Kreativität zu schaffen und zu schützen.&lt;/p
  &gt;&lt;blockquote
  &gt;&lt;p
    &gt;In wie weit lässt sich Scrum-Master als Rolle mit disziplinarischer Führung vereinbaren?&lt;/p
    &gt;&lt;/blockquote
  &gt;&lt;p
  &gt;Meiner Meinung nach ist das eine Frage der Integration in die Unternehmensorganisation. Natürlich wird auch in die Scrum-Master-Rolle viel Verantwortung “hineininterpretiert”. Das man auch ein ausschlaggebender Faktor sein, muss es aber nicht. Ich denke das mangelnde Vertrauen in das Team ist eher kontraproduktiv. Ich persönlich möchte als Scrum-Master lieber keine disziplinarische Verantwortung übernehmen. Ich denke es wäre für mich und meine Arbeit mit den Menschen eher ein Hindernis als ein Vorteil.&lt;/p
  &gt;&lt;blockquote
  &gt;&lt;p
    &gt;Welches sind die Nachteile der Scrum-Master-Rolle in der Praxis?&lt;/p
    &gt;&lt;/blockquote
  &gt;&lt;p
  &gt;Ich glaube das ein Scrum-Master schon vor der Herausforderung steht, sich, seine Aufgaben und seine Rolle jederzeit klar nach außen zu kommunizieren und darzulegen. Der Scrum-Master wird im Alltag meist aus dem Hintergrund agieren und das Team in den Vordergrund stellen. Das ist mit eine der Hauptaufgaben. Schließlich ist die Förderung der Selbst-Organisation des Teams ein wichtiger Eckpfeiler in Scrum.&lt;/p
  &gt;&lt;p
  &gt;Daraus kann sich aber auch eine Wahrnehmung Dritter ergeben, die den Scrum-Master als passiv oder so ähnlich empfinden. Eine klare Kommunikation und das ständige Feedback der Mitarbeiter können diesen Wahrnehmungen entgegenwirken.&lt;/p
  &gt;&lt;blockquote
  &gt;&lt;p
    &gt;Was ist für Dich das wichtigste an einem agilen Team?&lt;/p
    &gt;&lt;/blockquote
  &gt;&lt;p
  &gt;Die Freude an der Arbeit und an der gemeinsamen Leistung ist sicherlich ein sehr hohes Gut. Das ist natürlich auch eine individuelle Frage der Motivation. Gerade diese Individualität fordert von einem agilen Team eine gesunde Kompromiss- und Konfliktfähigkeit. Besonders die gemeinschaftliche Findung und Beschreitung eines Konsens ist für ein agiles Team von großem Wert.&lt;/p
  &gt;&lt;p
  &gt;In diesem Zusammenhang ist es auch wichtig zu erkennen, dass diese Werte nicht einfach “erlangt werden”, sondern von allen stetige Aufmerksamkeit abverlangen. Konsens- und Kompromissfähigkeit ist keine Eigenschaft, sondern ein Ziel, welches jedes Mal angegangen und erarbeitet werden will.&lt;/p
  &gt;&lt;blockquote
  &gt;&lt;p
    &gt;Was fehlt Deiner Meinung nach in der agilen Lebens- und Arbeitsweise?&lt;/p
    &gt;&lt;/blockquote
  &gt;&lt;p
  &gt;Ich bin der Überzeugung, dass mangelndes Vertrauen eine große Hürde darstellt. Meine Erfahrung hat mir gezeigt, das gerade diese Öffnung des Einzelnen dem Anderen gegenüber ein großer und schwieriger Schritt ist. Gerade in unserer heutigen Zeit, in der die Professionalisierung mit Klarheit, Sachlichkeit und Nüchternheit assoziiert wird. Vertrauen passt zwar nicht in dieses Bild, aber das liegt nicht am Vertrauen, sondern eben an diesem verzerrten Bild der Professionalität.&lt;/p
  &gt;&lt;p
  &gt;Akzeptanz und Wertschätzung sind weitere wichtige Werte, die oftmals &amp;#8211; ja sogar in agilen Projekten und Unternehmen &amp;#8211; vernachlässigt werden. Hier können und müssen wir dran bleiben.&lt;/p
  &gt;&lt;blockquote
  &gt;&lt;p
    &gt;Wenn Du Dir für die agile Arbeitswelt etwas wünschen könntest, was würdest Du Dir wünschen?&lt;/p
    &gt;&lt;/blockquote
  &gt;&lt;p
  &gt;Eine vertrauensvolle und optimistische Firmenkultur, die sich auf die Erreichung der gemeinsamen Ziele konzentriert. Es mag sich etwas abgehoben oder esoterisch anhören, aber es ist durchaus aller Ehren wert, wenn man sich vornimmt, einfach “Licht in die Welt zu tragen”. Manchmal geht uns Menschen der Blick für das große Ganze auch verloren, dann hilft es, sich wieder auf die grundlegenden Dinge zu stützen.&lt;/p
  &gt;&lt;p
  &gt;Oft wird z.B. vergessen, dass wir nicht arbeiten, um zu Leben, sondern das die Arbeit Teil unseres Lebens ist. Man kann und sollte nicht einfach 8 oder mehr Stunden seines täglichen Lebens einfach so ausblenden. Das Ziel sollte sein, dass wir als Menschen unsere Arbeit mit Freude erledigen und dass alle Interessen umgesetzt und gelebt werden können. Vertrauen, Akzeptanz, Wertschätzung sind die Kräfte, die uns dabei helfen können.&lt;/p
  &gt;&lt;p
  &gt;&lt;strong
    &gt;Vielen Dank, Bettina!&lt;/strong
    &gt;&lt;/p
  &gt;&lt;div id="weitere-interviews-der-serie-der-agilist"
  &gt;&lt;h5
    &gt;Weitere Interviews der Serie “Der Agilist”&lt;/h5
    &gt;&lt;ul
    &gt;&lt;li
      &gt;&lt;a href="/der-agilist-agile-coaching"
	&gt;Agile Coaching&lt;/a
	&gt; mit Christian Dähn&lt;/li
      &gt;&lt;li
      &gt;&lt;a href="/der-agilist-agile-games"
	&gt;Agile Games&lt;/a
	&gt; mit Thorsten O. Kalnin&lt;/li
      &gt;&lt;li
      &gt;&lt;a href="/der-agilist-agile-devops"
	&gt;Agile DevOps&lt;/a
	&gt; mit Andreas Mandi-Beke&lt;/li
      &gt;&lt;li
      &gt;&lt;a href="/der-agilist-agile-und-kanban"
	&gt;Agile und Kanban&lt;/a
	&gt; mit Markus Andrezak&lt;/li
      &gt;&lt;li
      &gt;&lt;a href="/der-agilist-agile-management"
	&gt;Agile Management&lt;/a
	&gt; mit Kai Simons&lt;/li
      &gt;&lt;li
      &gt;&lt;a href="/der-agilist-agile-engineering"
	&gt;Agile Engineering&lt;/a
	&gt; mit Björn Rochel&lt;/li
      &gt;&lt;li
      &gt;&lt;a href="/der-agilist-agile-education"
	&gt;Agile Education&lt;/a
	&gt; mit Ole Pophal&lt;/li
      &gt;&lt;/ul
    &gt;&lt;/div
  &gt;&lt;/div
&gt;
</a10:content><a10:contributor><a10:name>Ilker Cetinkaya</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ilker Cetinkaya</dc:creator></item><item><guid isPermaLink="false">http://blog.schelian.de/?p=1950</guid><link>http://blog.schelian.de/2012/05/dotnetnuke-nach-upgrade-auf-dnn-6-1-x-html-modul-speichert-keine-nderungen-mehr/</link><a10:author><a10:name>Hans-Peter Schelian</a10:name></a10:author><title>DotNetNuke – Nach Upgrade auf DNN 6.1.X – HTML Modul speichert keine Änderungen mehr</title><description>Heute Vormittag habe ich den Anruf eines Kunden erhalten der mir folgendes Problem geschildert hat. Nach der Aktualisierung eines DotNetNuke Portals von DNN 5.6.X auf DNN 6.1.1 werden Änderungen die man an Texten im HMTL Modul vornimmt nicht gespeichert. Keine &amp;#8230; &lt;a href="http://blog.schelian.de/2012/05/dotnetnuke-nach-upgrade-auf-dnn-6-1-x-html-modul-speichert-keine-nderungen-mehr/"&gt;Continue reading &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;</description><pubDate>Mon, 14 May 2012 09:29:53 Z</pubDate><a10:rights type="text">Hans-Peter Schelian</a10:rights><a10:content type="html">&lt;p&gt;Heute Vormittag habe ich den Anruf eines Kunden erhalten der mir folgendes Problem geschildert hat.&lt;/p&gt;
&lt;p&gt;Nach der Aktualisierung eines DotNetNuke Portals von DNN 5.6.X auf DNN 6.1.1 werden Änderungen die man an Texten im HMTL Modul vornimmt nicht gespeichert.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Keine Fehlermeldung, kein Eintrag im Ereignisprotokoll, einfach nichts!&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Nachdem ich mir die Konfiguration genauer angeschaut hatte, konnte ich einen Fehler in der Konfiguration des System (IIS und App Pool) ausschließen.&lt;/p&gt;
&lt;p&gt;Das Problem war aber trotzdem relativ schnell gefunden.&lt;/p&gt;
&lt;p&gt;Mit dem “früher” als Standardeditor eingesetzten FCK Editor gibt es mit der aktuellen Version (Ich glaube schon seit Version 5.6.X) von DotNetNuke an einigen Stellen Probleme, unter anderem eben auch im Text/HMTL Modul. &lt;/p&gt;
&lt;p&gt;Irgendwelche JavaScripte des Editors kollidieren mit anderen JavaScript aufrufen in irgend einer der vielen verwendeten JavaScript Frameworks.&lt;/p&gt;
&lt;p&gt;JavaScript eben &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smiley" src="http://blog.schelian.de/wp-content/uploads/2012/05/wlEmoticon-smile.png"&gt;&lt;/p&gt;
&lt;p&gt;Ich weiß schon warum sich meine Begeisterung für dieses (Java)Script Gedöns in Grenzen hält.&lt;/p&gt;
&lt;p&gt;OK, aber lassen wir das.&lt;/p&gt;
&lt;p&gt;Ob es einen aktualisierte Version des FCK Editors gibt, die mit DNN Version 6.1 und höher läuft, weiß ich nicht, sollte jemand näheres dazu wissen, würde ich mich über einen entsprechenden Kommentar freuen.&lt;/p&gt;
&lt;p&gt;Um das Problem mit den Bordmitteln von DNN zu lösen kann man aber einfach den Texteditor umstellen und anstelle des FCK Editors den Telerik Texteditor, der aktuell als Standardeditor von DotNetNuke verwendet wird.&lt;/p&gt;
&lt;p&gt;Hierzu öffnet man die web.config und nimmt folgende Änderung vor:&lt;/p&gt;
&lt;p&gt;Den defaultProvider von “FckHtmlEditorProvider” (siehe Vorher) auf “TelerikEditorProvider” (siehe Nachher) ändern&lt;/p&gt;
&lt;p&gt;Vorher:&lt;/p&gt;
&lt;p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:d11cb4a4-b95b-46c9-951d-2d835f3f020b" class="wlWriterEditableSmartContent"&gt;
&lt;pre style=white-space:normal&gt;
&lt;pre class="brush: xml; pad-line-numbers: true; title: ; notranslate"&gt;
&amp;lt;htmlEditor defaultProvider=&amp;quot;FckHtmlEditorProvider&amp;quot;&amp;gt;
  &amp;lt;providers&amp;gt;
	&amp;lt;clear /&amp;gt;
	&amp;lt;add name=&amp;quot;TelerikEditorProvider&amp;quot; type=&amp;quot;DotNetNuke.HtmlEditor.TelerikEditorProvider.EditorProvider, DotNetNuke.HtmlEditor.TelerikEditorProvider&amp;quot; providerPath=&amp;quot;~/Providers/HtmlEditorProviders/Telerik/&amp;quot; toolsFile=&amp;quot;~/Providers/HtmlEditorProviders/Telerik/Config/ToolsDefault.xml&amp;quot; configFile=&amp;quot;~/Providers/HtmlEditorProviders/Telerik/Config/ConfigDefault.xml&amp;quot; FilterHostExtensions=&amp;quot;True&amp;quot; /&amp;gt;
	&amp;lt;add name=&amp;quot;FckHtmlEditorProvider&amp;quot; type=&amp;quot;DotNetNuke.HtmlEditor.FckHtmlEditorProvider.FckHtmlEditorProvider, DotNetNuke.FckHtmlEditorProvider&amp;quot; providerPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/&amp;quot; CustomConfigurationPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/custom/FCKConfig.js&amp;quot; EnhancedSecurityDefault=&amp;quot;false&amp;quot; SecureConfigurationPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/custom/FCKConfigSecure.js&amp;quot; ImageGalleryPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/fckimagegallery.aspx&amp;quot; ImageUploadPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/fckimagegallery.aspx&amp;quot; ImageAllowedFileTypes=&amp;quot;gif,png,bmp,jpg&amp;quot; FlashGalleryPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/fckimagegallery.aspx&amp;quot; FlashUploadPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/fckimagegallery.aspx&amp;quot; FlashAllowedFileTypes=&amp;quot;fla,swf&amp;quot; LinksGalleryPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/fcklinkgallery.aspx&amp;quot; DynamicStylesGeneratorPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/FCKStyles.aspx&amp;quot; DynamicStylesCaseSensitive=&amp;quot;true&amp;quot; DynamicStylesGeneratorFilter=&amp;quot;controlpanel|filemanager|mainmenu|wizard&amp;quot; StaticStylesFile=&amp;quot;~/Providers/HtmlEditorProviders/Fck/FCKeditor/fckstyles.xml&amp;quot; StylesDefaultMode=&amp;quot;dynamic&amp;quot; DynamicCSSGeneratorPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/FCKCSS.aspx&amp;quot; StaticCSSFile=&amp;quot;~/Providers/HtmlEditorProviders/Fck/FCKeditor/editor/css/fck_editorarea.css&amp;quot; CSSDefaultMode=&amp;quot;dynamic&amp;quot; spellCheck=&amp;quot;ieSpell&amp;quot; AvailableToolbarSkins=&amp;quot;Office2003,Silver&amp;quot; DefaultToolbarSkin=&amp;quot;Office2003&amp;quot; AvailableToolBarSets=&amp;quot;DNNDefault,Default,NoGallery,Basic&amp;quot; DefaultToolbarSet=&amp;quot;DNNDefault&amp;quot; DefaultImageGallerySkin=&amp;quot;Default&amp;quot; DefaultFlashGallerySkin=&amp;quot;Default&amp;quot; DefaultLinksGallerySkin=&amp;quot;Default&amp;quot; FCKDebugMode=&amp;quot;false&amp;quot; UseFCKSource=&amp;quot;false&amp;quot; OptionsOpenMode=&amp;quot;ShowModalDialog&amp;quot; ShowModuleType=&amp;quot;true&amp;quot; FixOldDNNPostback=&amp;quot;false&amp;quot; CustomOptionsDialog=&amp;quot;Admin&amp;quot; /&amp;gt;
  &amp;lt;/providers&amp;gt;
&amp;lt;/htmlEditor&amp;gt;
&lt;/pre&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Nachher:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:ea1d3a9e-a044-480b-a0a3-18cbffe33731" class="wlWriterEditableSmartContent"&gt;
&lt;pre style=white-space:normal&gt;
&lt;pre class="brush: xml; title: ; notranslate"&gt;
&amp;lt;htmlEditor defaultProvider=&amp;quot;TelerikEditorProvider&amp;quot;&amp;gt;
  &amp;lt;providers&amp;gt;
	&amp;lt;clear /&amp;gt;
	&amp;lt;add name=&amp;quot;TelerikEditorProvider&amp;quot; type=&amp;quot;DotNetNuke.HtmlEditor.TelerikEditorProvider.EditorProvider, DotNetNuke.HtmlEditor.TelerikEditorProvider&amp;quot; providerPath=&amp;quot;~/Providers/HtmlEditorProviders/Telerik/&amp;quot; toolsFile=&amp;quot;~/Providers/HtmlEditorProviders/Telerik/Config/ToolsDefault.xml&amp;quot; configFile=&amp;quot;~/Providers/HtmlEditorProviders/Telerik/Config/ConfigDefault.xml&amp;quot; FilterHostExtensions=&amp;quot;True&amp;quot; /&amp;gt;
	&amp;lt;add name=&amp;quot;FckHtmlEditorProvider&amp;quot; type=&amp;quot;DotNetNuke.HtmlEditor.FckHtmlEditorProvider.FckHtmlEditorProvider, DotNetNuke.FckHtmlEditorProvider&amp;quot; providerPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/&amp;quot; CustomConfigurationPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/custom/FCKConfig.js&amp;quot; EnhancedSecurityDefault=&amp;quot;false&amp;quot; SecureConfigurationPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/custom/FCKConfigSecure.js&amp;quot; ImageGalleryPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/fckimagegallery.aspx&amp;quot; ImageUploadPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/fckimagegallery.aspx&amp;quot; ImageAllowedFileTypes=&amp;quot;gif,png,bmp,jpg&amp;quot; FlashGalleryPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/fckimagegallery.aspx&amp;quot; FlashUploadPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/fckimagegallery.aspx&amp;quot; FlashAllowedFileTypes=&amp;quot;fla,swf&amp;quot; LinksGalleryPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/fcklinkgallery.aspx&amp;quot; DynamicStylesGeneratorPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/FCKStyles.aspx&amp;quot; DynamicStylesCaseSensitive=&amp;quot;true&amp;quot; DynamicStylesGeneratorFilter=&amp;quot;controlpanel|filemanager|mainmenu|wizard&amp;quot; StaticStylesFile=&amp;quot;~/Providers/HtmlEditorProviders/Fck/FCKeditor/fckstyles.xml&amp;quot; StylesDefaultMode=&amp;quot;dynamic&amp;quot; DynamicCSSGeneratorPath=&amp;quot;~/Providers/HtmlEditorProviders/Fck/FCKCSS.aspx&amp;quot; StaticCSSFile=&amp;quot;~/Providers/HtmlEditorProviders/Fck/FCKeditor/editor/css/fck_editorarea.css&amp;quot; CSSDefaultMode=&amp;quot;dynamic&amp;quot; spellCheck=&amp;quot;ieSpell&amp;quot; AvailableToolbarSkins=&amp;quot;Office2003,Silver&amp;quot; DefaultToolbarSkin=&amp;quot;Office2003&amp;quot; AvailableToolBarSets=&amp;quot;DNNDefault,Default,NoGallery,Basic&amp;quot; DefaultToolbarSet=&amp;quot;DNNDefault&amp;quot; DefaultImageGallerySkin=&amp;quot;Default&amp;quot; DefaultFlashGallerySkin=&amp;quot;Default&amp;quot; DefaultLinksGallerySkin=&amp;quot;Default&amp;quot; FCKDebugMode=&amp;quot;false&amp;quot; UseFCKSource=&amp;quot;false&amp;quot; OptionsOpenMode=&amp;quot;ShowModalDialog&amp;quot; ShowModuleType=&amp;quot;true&amp;quot; FixOldDNNPostback=&amp;quot;false&amp;quot; CustomOptionsDialog=&amp;quot;Admin&amp;quot; /&amp;gt;
  &amp;lt;/providers&amp;gt;
&amp;lt;/htmlEditor&amp;gt;
&lt;/pre&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="google_plus_one"&gt;&lt;g:plusone size="medium" count="true" url="http://blog.schelian.de/2012/05/dotnetnuke-nach-upgrade-auf-dnn-6-1-x-html-modul-speichert-keine-nderungen-mehr/"&gt;&lt;/g:plusone&gt;&lt;/div&gt;&lt;div align="right"&gt;&lt;a href="http://twitter.com/SchelianHP" target="_blank"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/igit-follow-me-after-post-button-new/twitter11.png" /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;a href="http://twitter.com/share?url=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Fdotnetnuke-nach-upgrade-auf-dnn-6-1-x-html-modul-speichert-keine-nderungen-mehr%2F&amp;amp;url=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Fdotnetnuke-nach-upgrade-auf-dnn-6-1-x-html-modul-speichert-keine-nderungen-mehr%2F" target="_blank" rel="nofollow" title="Twitter"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/wp-most-simple-social-bookmarks/images/twitter.png" alt="Twitter" title="Twitter" /&gt;&lt;/a&gt;
&lt;a href="http://del.icio.us/post?url=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Fdotnetnuke-nach-upgrade-auf-dnn-6-1-x-html-modul-speichert-keine-nderungen-mehr%2F&amp;amp;title=DotNetNuke+-+Nach+Upgrade+auf+DNN+6.1.X+-+HTML+Modul+speichert+keine+%26Auml%3Bnderungen+mehr" target="_blank" rel="nofollow" title="del.icio.us"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/wp-most-simple-social-bookmarks/images/delicious2.png" alt="del.icio.us" title="del.icio.us" /&gt;&lt;/a&gt;
&lt;a href="http://digg.com/submit?phase=2&amp;amp;url=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Fdotnetnuke-nach-upgrade-auf-dnn-6-1-x-html-modul-speichert-keine-nderungen-mehr%2F&amp;amp;title=DotNetNuke+-+Nach+Upgrade+auf+DNN+6.1.X+-+HTML+Modul+speichert+keine+%26Auml%3Bnderungen+mehr" target="_blank" rel="nofollow" title="Digg"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/wp-most-simple-social-bookmarks/images/digg.png" alt="Digg" title="Digg" /&gt;&lt;/a&gt;
&lt;a href="http://facebook.com/sharer.php?u=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Fdotnetnuke-nach-upgrade-auf-dnn-6-1-x-html-modul-speichert-keine-nderungen-mehr%2F&amp;amp;t=DotNetNuke+-+Nach+Upgrade+auf+DNN+6.1.X+-+HTML+Modul+speichert+keine+%26Auml%3Bnderungen+mehr" target="_blank" rel="nofollow" title="Facebook"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/wp-most-simple-social-bookmarks/images/facebook.png" alt="Facebook" title="Facebook" /&gt;&lt;/a&gt;
&lt;a href="http://www.linkedin.com/shareArticle?url=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Fdotnetnuke-nach-upgrade-auf-dnn-6-1-x-html-modul-speichert-keine-nderungen-mehr%2F&amp;amp;title=DotNetNuke+-+Nach+Upgrade+auf+DNN+6.1.X+-+HTML+Modul+speichert+keine+%26Auml%3Bnderungen+mehr" target="_blank" rel="nofollow" title="linked-in"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/wp-most-simple-social-bookmarks/images/linkedin.png" alt="linked-in" title="linked-in" /&gt;&lt;/a&gt;
&lt;a href="http://buzz.yahoo.com/submit?submitUrl=DotNetNuke+-+Nach+Upgrade+auf+DNN+6.1.X+-+HTML+Modul+speichert+keine+%26Auml%3Bnderungen+mehr&amp;amp;u=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Fdotnetnuke-nach-upgrade-auf-dnn-6-1-x-html-modul-speichert-keine-nderungen-mehr%2F" target="_blank" rel="nofollow" title="Yahoo Buzz"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/wp-most-simple-social-bookmarks/images/yahoo.png" alt="Yahoo Buzz" title="Yahoo Buzz" /&gt;&lt;/a&gt;
&lt;a href="http://stumbleupon.com/submit?url=http%3A%2F%2Fblog.schelian.de%2F2012%2F05%2Fdotnetnuke-nach-upgrade-auf-dnn-6-1-x-html-modul-speichert-keine-nderungen-mehr%2F&amp;amp;title=DotNetNuke+-+Nach+Upgrade+auf+DNN+6.1.X+-+HTML+Modul+speichert+keine+%26Auml%3Bnderungen+mehr&amp;amp;newcomment=DotNetNuke+-+Nach+Upgrade+auf+DNN+6.1.X+-+HTML+Modul+speichert+keine+%26Auml%3Bnderungen+mehr" target="_blank" rel="nofollow" title="StumbleUpon"&gt;&lt;img src="http://blog.schelian.de/wp-content/plugins/wp-most-simple-social-bookmarks/images/su.png" alt="StumbleUpon" title="StumbleUpon" /&gt;&lt;/a&gt;



</a10:content><a10:contributor><a10:name>Hans-Peter Schelian</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Hans-Peter Schelian</dc:creator></item><item><guid isPermaLink="false">http://www.sascha-dittmann.de/post.aspx?id=cf196370-457b-4557-b5df-ea7643f08601</guid><link>http://www.sascha-dittmann.de/post/Webseitenpfade-einer-Windows-Azure-Web-Rolle-bestimmen.aspx</link><a10:author><a10:name>Sascha Dittmann</a10:name></a10:author><title>Webseitenpfade einer Windows Azure Web Rolle bestimmen</title><description>&lt;p style="display: inline-block;"&gt;&lt;img style="padding-bottom: 10px; padding-right: 10px; float: left;" src="http://www.sascha-dittmann.de/image.axd?picture=2012%2f05%2fWebseitenpfadeSuchenTeaser.png" alt="Die Suche nach den Webseitenpfaden" /&gt;&lt;strong&gt;In einem meiner letzten Projekte sollte ein Startup Skript, sowie die Run Methode der &lt;em&gt;RoleEntryPoint&lt;/em&gt; Klasse, auf die Webseiten einer Windows Azure Web Rolle zugreifen. Die Herausforderung hierbei bestand in den sich wechselnden Pfaden zu den Webseiten der Rolle. Diese k&amp;ouml;nnen sich in verschiedenen Situationen, wie z.B. beim Upgrade der bestehenden Cloud Anwendung, &amp;auml;ndern.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Genauer gesagt, &amp;auml;ndert sich hierbei "nur" der Laufwerksbuchstabe.&lt;/p&gt;
&lt;p&gt;Dennoch suchte ich nach einem Weg, der mir alle Webseitenpfade in Form einer &lt;em&gt;Collection&lt;/em&gt; wiedergeben kann.&lt;/p&gt;
&lt;p&gt;Die L&amp;ouml;sung lag in der RoleModel.xml Datei der Web Rolle...&lt;/p&gt;
&lt;h2&gt;Die RoleModel.xml&lt;/h2&gt;
&lt;p&gt;Um an eine Auflistung aller Webseiten (inkl. relativer Pfadangabe) zu gelangen, kann die RoleModel.xml Datei verwenden werden. &lt;br /&gt;Diese befindet sich im Stammverzeichnis der Web Rolle, welches &amp;uuml;ber die Umgebungsvariable "RdRoleRoot" abgefragt werden kann.&lt;/p&gt;
&lt;p&gt;Bespiel einer RoleModel.xml Datei:&lt;/p&gt;
&lt;pre class="brush: xml; highlight: [33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44]"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;RoleModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  name="DemoApp.WebRole" version="1.6.21103.1459" 
  xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"&amp;gt;
  &amp;lt;Runtime&amp;gt;
    &amp;lt;EntryPoint&amp;gt;
      &amp;lt;NetFxEntryPoint assemblyName="DemoApp.WebRole.dll" /&amp;gt;
    &amp;lt;/EntryPoint&amp;gt;
  &amp;lt;/Runtime&amp;gt;
  &amp;lt;Properties&amp;gt;
    &amp;lt;Property name="RoleType" value="Web" /&amp;gt;
    &amp;lt;Property name="RoleName" value="DemoApp.WebRole" /&amp;gt;
    &amp;lt;Property name="ProjectName" value="DemoApp.WebRole" /&amp;gt;
    &amp;lt;Property name="Configuration" value="Release" /&amp;gt;
    &amp;lt;Property name="Platform" value="AnyCPU" /&amp;gt;
    &amp;lt;Property name="OutputDir" 
              value="C:\TFS\DemoApp\DemoApp\obj\Release\DemoApp.WebRole\" /&amp;gt;
    &amp;lt;Property name="EntryPoint" value="CloudBloggers.WebRole.dll" /&amp;gt;
    &amp;lt;Property name="SourceDir" value="C:\TFS\DemoApp\DemoApp.WebRole\" /&amp;gt;
    &amp;lt;Property name="RoleTargetFramework" value="v3.5" /&amp;gt;
    &amp;lt;Property name="SitePhysicalPath" 
              value="C:\TFS\DemoApp\DemoApp\obj\Release\DemoApp.WebRole\" /&amp;gt;
    &amp;lt;Property name="OriginalItemSpec" 
              value="C:\TFS\DemoApp\DemoApp\DemoApp.ccproj" /&amp;gt;
    &amp;lt;Property name="MSBuildSourceProjectFile" 
              value="C:\TFS\DemoApp\DemoApp\DemoApp.ccproj" /&amp;gt;
    &amp;lt;Property name="MSBuildSourceTargetName" 
              value="ResolveSingleWebRoleReference" /&amp;gt;
    &amp;lt;Property name="TargetFrameworkVersion" value="v3.5" /&amp;gt;
    &amp;lt;Property name="TargetRuntimeVersion" value="v2.0" /&amp;gt;
  &amp;lt;/Properties&amp;gt;
  &amp;lt;Sites&amp;gt;
    &amp;lt;Site name="Web1" physicalDirectory="sitesroot\0"&amp;gt;
      &amp;lt;Bindings&amp;gt;
        &amp;lt;Binding name="Endpoint1" endpointName="Endpoint1" /&amp;gt;
      &amp;lt;/Bindings&amp;gt;
    &amp;lt;/Site&amp;gt;
    &amp;lt;Site name="Web2" physicalDirectory="sitesroot\1"&amp;gt;
      &amp;lt;Bindings&amp;gt;
        &amp;lt;Binding name="Endpoint1" endpointName="Endpoint1" /&amp;gt;
      &amp;lt;/Bindings&amp;gt;
    &amp;lt;/Site&amp;gt;
  &amp;lt;/Sites&amp;gt;
&amp;lt;/RoleModel&amp;gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Das Windows Azure Startup Task&lt;/h2&gt;
&lt;p&gt;F&amp;uuml;r das Windows Azure Startup Task, habe ich ein PowerShell Skript verwendet, da ich hierbei, ohne gr&amp;ouml;&amp;szlig;eren Aufwand, Zugriff auf die Umgebungsvariable, sowie die Daten der XML Datei, erhalte:&lt;/p&gt;
&lt;pre class="brush: ps;"&gt;$roleRoot = $Env:RdRoleRoot
$roleModelFile = Join-Path $roleRoot "RoleModel.xml"
$roleModel = [xml](Get-Content $roleModelFile)
foreach ($site in $roleModel.RoleModel.Sites.Site)
{
  Write-Output $site.name
  Write-Output $site.physicalDirectory
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Die RoleEntryPoint Klasse&lt;/h2&gt;
&lt;p&gt;F&amp;uuml;r die Verwendung innerhalb der &lt;em&gt;RoleEntryPoint&lt;/em&gt; Klasse, wurde eine statische Eigenschaft erstellt, die auch hier den Zugriff auf die XML Datei gew&amp;auml;hrt:&lt;/p&gt;
&lt;pre class="brush: c-sharp;"&gt;private static IEnumerable&amp;lt;string&amp;gt; WebSiteDirectories
{
  get
  {
    var roleRootDir = Environment.GetEnvironmentVariable("RdRoleRoot");
    if (roleRootDir == null)
      return Enumerable.Empty();
    XNamespace roleModelNs = 
      "http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition";
    var roleModelDoc = XDocument.Load(Path.Combine(roleRootDir, "RoleModel.xml"));
    if (roleModelDoc.Root == null)
      return Enumerable.Empty();

    var sites = roleModelDoc.Root.Element(roleModelNs + "Sites");
    if (sites == null)
      return Enumerable.Empty();

    var siteElements = sites.Elements(roleModelNs + "Site");

    return
      from siteElement in siteElements
      where siteElement.Attribute("name") != null
            &amp;amp;&amp;amp; siteElement.Attribute("name").Value == "Web"
            &amp;amp;&amp;amp; siteElement.Attribute("physicalDirectory") != null
      select Path.Combine(roleRootDir, 
             siteElement.Attribute("physicalDirectory").Value);
  }
}&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr /&gt;
&lt;table border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img src="http://www.sascha-dittmann.de/image.axd?picture=Shared%2finfo.png" alt="Weitere Informationen" /&gt;&lt;/td&gt;
&lt;td&gt;Weitere Informationen: &lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.sascha-dittmann.de/post/Eine-Einfuehrung-in-die-Windows-Azure-Startup-Tasks.aspx" target="_blank"&gt;Eine Einf&amp;uuml;hrung in die Windows Azure Startup Tasks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sascha-dittmann.de/post/Erste-Schritte-mit-Windows-Azure-Die-Web-Rolle.aspx" target="_blank"&gt;Erste Schritte mit Windows Azure (Teil 1) - Die Web Rolle&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;Verwendete Bildquellen:&lt;/strong&gt; &lt;br /&gt;&amp;copy; Barbara Eckholdt / PIXELIO&lt;/p&gt;</description><pubDate>Mon, 14 May 2012 08:38:00 +0200</pubDate><a10:rights type="text">Sascha Dittmann</a10:rights><a10:contributor><a10:name>Sascha Dittmann</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Sascha Dittmann</dc:creator></item><item xml:base="http://fpfbaden.wordpress.com/wp-atom.php"><guid isPermaLink="false">https://fpfbaden.wordpress.com/?p=45</guid><link>http://fpfbaden.wordpress.com/2012/05/14/meine-windows-roadmap/</link><a10:author><a10:name>Frank Pfattheicher</a10:name></a10:author><title>Meine! Windows Roadmap</title><description>Jede Projektmanagement-Strategie fordert, dass zunächst ein Ziel/Produkt definiert werden soll, damit alle Beteiligten wissen wo die Reise hin gehen soll. Was Entwicklern für Windows momentan fehlt ist eben diese Ziel! Der große Trampel Steve hat dazu nur die Worte: Windows, &amp;#8230; &lt;a href="http://fpfbaden.wordpress.com/2012/05/14/meine-windows-roadmap/"&gt;Weiterlesen &lt;span class="meta-nav"&gt;&amp;#8594;&lt;/span&gt;&lt;/a&gt;&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fpfbaden.wordpress.com&amp;#038;blog=17027185&amp;#038;post=45&amp;#038;subd=fpfbaden&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</description><pubDate>Mon, 14 May 2012 06:33:31 Z</pubDate><a10:link xmlns:p6="http://purl.org/syndication/thread/1.0" p6:count="1" rel="replies" type="text/html" href="http://fpfbaden.wordpress.com/2012/05/14/meine-windows-roadmap/#comments" /><a10:link xmlns:p6="http://purl.org/syndication/thread/1.0" p6:count="1" rel="replies" type="application/atom+xml" href="http://fpfbaden.wordpress.com/2012/05/14/meine-windows-roadmap/feed/atom/" /><a10:updated>2012-05-14T06:33:31Z</a10:updated><a10:rights type="text">Frank Pfattheicher</a10:rights><a10:content type="html" xml:base="http://fpfbaden.wordpress.com/2012/05/14/meine-windows-roadmap/">&lt;p&gt;Jede Projektmanagement-Strategie fordert, dass zunächst ein Ziel/Produkt definiert werden soll, damit alle Beteiligten wissen wo die Reise hin gehen soll.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;a href="http://fpfbaden.files.wordpress.com/2012/05/image.png"&gt;&lt;img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="image" border="0" alt="image" src="http://fpfbaden.files.wordpress.com/2012/05/image_thumb.png?w=216&amp;h=242" width="216" height="242"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Was Entwicklern für Windows momentan fehlt ist eben diese Ziel!&lt;/p&gt;
&lt;p&gt;Der große Trampel Steve hat dazu nur die Worte: &lt;strong&gt;Windows, Windows, Windows, … &lt;/strong&gt;(nur lauter und mit aufstampfen)&lt;/p&gt;
&lt;p&gt;Angefangen hat das Drama mit Windows Phone 7, das auch mit Mango keine wirkliche Bereicherung ist. Lieblos implementierte Features und teilweise fehlende Klassenimplementierungen. Ja, ich weiß, “Delivery is also a feature” – aber es sollte nicht das Einzige sein.&lt;/p&gt;
&lt;p&gt;Jetzt stehen die WP7 Entwickler vor einem Scherbenhaufen und keiner will sagen wie es damit weiter gehen soll. Laufen denn WP7 Anwendungen auf WP8???&lt;/p&gt;
&lt;p&gt;Ohne ein Ziel hat doch keiner Lust auf so eine Plattform zu setzen.&lt;/p&gt;
&lt;p&gt;Die Fortsetzung kommt jetzt auf den Desktop. Was auf einem Tablett ganz gut funktioniert aber nicht auf meinem 30” am Arbeitsplatz. Acht mal acht Zentimeter große Kacheln und eine umständliche Bedienung mit der Maus.&lt;/p&gt;
&lt;p&gt;Aus Entwicklersicht habe ich immer noch nicht klären können was nun mit .NET Anwendungen ohne WinRT auf ARM Plattform möglich sein wird. Und der unsägliche Schlingerkurs um .NET. Vor 10 Jahren begonnen hat man damals wohl alle Gegenargumente gesammelt, um sie jetzt selbst wieder anbringen zu können.&lt;/p&gt;
&lt;p&gt;Also hier MEINE Roadmap:&lt;/p&gt;
&lt;table border="0" cellspacing="0" cellpadding="2" width="415"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" width="73"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="193"&gt;WP7 / WP8&lt;/td&gt;
&lt;td valign="top" width="147"&gt;Windows 8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="73"&gt;Q2 2012&lt;/td&gt;
&lt;td valign="top" width="193"&gt;Marktanteil 1,4% fallend&lt;/td&gt;
&lt;td valign="top" width="147"&gt;Consumer Preview&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="73"&gt;Q3 2012&lt;/td&gt;
&lt;td valign="top" width="193"&gt;Ankündigung WP8&lt;/td&gt;
&lt;td valign="top" width="147"&gt;Release Preview&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="73"&gt;Q4 2012&lt;/td&gt;
&lt;td valign="top" width="193"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="147"&gt;Release&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="73"&gt;Q1 2013&lt;/td&gt;
&lt;td valign="top" width="193"&gt;Marktanteil unter 1%&lt;/td&gt;
&lt;td valign="top" width="147"&gt;Mehrere Milliarden in Werbung versenken&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="73"&gt;Q2 2013&lt;/td&gt;
&lt;td valign="top" width="193"&gt;&amp;nbsp;&lt;/td&gt;
&lt;td valign="top" width="147"&gt;&lt;strong&gt;Windows 8 Classic&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Während ich WP7 keine weitere Beachtung schenke freue ich mich doch auf Windows 8 Classic, dann kann ich wieder vernünftig arbeiten.&lt;/p&gt;
&lt;br /&gt;  &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/fpfbaden.wordpress.com/45/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/fpfbaden.wordpress.com/45/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/fpfbaden.wordpress.com/45/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/fpfbaden.wordpress.com/45/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/fpfbaden.wordpress.com/45/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/fpfbaden.wordpress.com/45/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/fpfbaden.wordpress.com/45/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/fpfbaden.wordpress.com/45/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/fpfbaden.wordpress.com/45/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/fpfbaden.wordpress.com/45/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/fpfbaden.wordpress.com/45/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/fpfbaden.wordpress.com/45/" /&gt;&lt;/a&gt; &lt;a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/fpfbaden.wordpress.com/45/"&gt;&lt;img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/fpfbaden.wordpress.com/45/" /&gt;&lt;/a&gt; &lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=fpfbaden.wordpress.com&amp;#038;blog=17027185&amp;#038;post=45&amp;#038;subd=fpfbaden&amp;#038;ref=&amp;#038;feed=1" width="1" height="1" /&gt;</a10:content><a10:contributor><a10:name>Frank Pfattheicher</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Frank Pfattheicher</dc:creator></item><item><guid isPermaLink="false">http://code-inside.de/blog/?p=4324</guid><link>http://feedproxy.google.com/~r/Code-insideBlog/~3/Nx3E88Pz0uU/</link><a10:author><a10:name>Code-Inside Blog</a10:name></a10:author><title>SASS, LESS &amp; Coffeescript in Visual Studio mit der Web Workbench</title><description>&lt;div&gt;&lt;img width="150" height="150" src="http://code-inside.de/blog/wp-content/uploads/image1547-150x150.png" class="attachment-thumbnail wp-post-image" alt="image.png" title="image.png" style="margin-bottom: 15px;" /&gt;&lt;/div&gt;CSS und Javascript sind die “kleinste” Schnittmenge von allen Browsern für die Erstellung von Web-Applikationen. Leider geht dabei etwas komfort verloren, daher lieben alle Webentwickler jQuery! SASS und LESS sind zwei Varianten, wie man “schöner” CSS schreiben kann und Coffeescript versucht Javascript Entwicklung zu vereinfachen. Aber immer der Reihe nach… Was ist SASS? SASS steht ...</description><pubDate>Sun, 13 May 2012 21:05:37 Z</pubDate><a10:rights type="text">Code-Inside Blog</a10:rights><a10:content type="html">&lt;div&gt;&lt;img width="150" height="150" src="http://code-inside.de/blog/wp-content/uploads/image1547-150x150.png" class="attachment-thumbnail wp-post-image" alt="image.png" title="image.png" style="margin-bottom: 15px;" /&gt;&lt;/div&gt;&lt;p&gt;CSS und Javascript sind die “kleinste” Schnittmenge von allen Browsern für die Erstellung von Web-Applikationen. Leider geht dabei etwas komfort verloren, daher lieben alle Webentwickler jQuery! SASS und LESS sind zwei Varianten, wie man “schöner” CSS schreiben kann und Coffeescript versucht Javascript Entwicklung zu vereinfachen. Aber immer der Reihe nach…&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was ist SASS?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image1544.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://code-inside.de/blog/wp-content/uploads/image_thumb708.png" width="214" height="240"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;SASS steht für Syntactically Awesome Stylesheets und kommt ursprünglich aus der Ruby Welt. SASS ist eine Erweiterung von CSS3 und erweitert den Syntax um einige praktische funktionionen, wie z.B. definition von Variablen oder erweiterte Verschachtelung von Style. Eine komplette Liste &lt;a href="http://sass-lang.com/"&gt;kann man hier&lt;/a&gt; sehen.&lt;/p&gt;
&lt;p&gt;Grundsätzlich war hier die Idee: Man schreibt seinen Stylecode in SASS und er wird während der Entwicklung stetig nach CSS “kompiliert” bzw. transformiert (was man auch immer dazu sagen möchte).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Bsp:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:b3cd36e7-0c39-4df6-8af3-a79b9bebfaaa" class="wlWriterEditableSmartContent"&gt;
&lt;pre name="code" class="xml"&gt;$blue: #3bbfce;
$margin: 16px;

.content-navigation {
  border-color: $blue;
  color:
    darken($blue, 9%);
}

.border {
  padding: $margin / 2;
  margin: $margin / 2;
  border-color: $blue;
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Wird zu:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:0697f785-9653-4b4d-8c45-3906e9111520" class="wlWriterEditableSmartContent"&gt;
&lt;pre name="code" class="c#"&gt;/* CSS */

.content-navigation {
  border-color: #3bbfce;
  color: #2b9eab;
}

.border {
  padding: 8px;
  margin: 8px;
  border-color: #3bbfce;
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was ist LESS?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image1545.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 5px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://code-inside.de/blog/wp-content/uploads/image_thumb709.png" width="212" height="117"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://lesscss.org/"&gt;LESS&lt;/a&gt; “the dynamic stylesheet language” hat einen ähnlichen Funktionsumfang wie SASS und verfolgt dasselbe Ziel. Ursprünglich war die Idee hier, dass der Client (über Javascript) das CSS erzeugt. Ich habe auch schon über LESS &lt;a href="http://code-inside.de/blog/2011/06/28/lessdynamische-stylesheets-fr-net-entwickler/"&gt;hier gebloggt&lt;/a&gt; und dort eine Serverseitige Variante mit dem Framework Combres gezeigt.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Bsp:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:c0366225-9d70-4966-a1c9-ebf1afc47fbc" class="wlWriterEditableSmartContent"&gt;
&lt;pre name="code" class="c#"&gt;@color: #4D926F;

#header {
  color: @color;
}
h2 {
  color: @color;
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Wird zu:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:ee28986a-0b7c-414c-b72c-d7595785110d" class="wlWriterEditableSmartContent"&gt;
&lt;pre name="code" class="c#"&gt;#header {
  color: #4D926F;
}
h2 {
  color: #4D926F;
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was ist CoffeeScript?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image1546.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://code-inside.de/blog/wp-content/uploads/image_thumb710.png" width="240" height="48"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://coffeescript.org/"&gt;CoffeeScript&lt;/a&gt; soll die Entwicklung mit Javascript vereinfachen. Javascript hat einige Tücken zu bieten und einige Schreibweisen sind etwas seltsam. CoffeeScript sieht für C# Entwickler etwas seltsam aus, da man bewusst auf einige Syntax-Elemente verzichtet. Am Ende soll natürlich wieder Javascript Code verstehen, sodass man es auch in allen Browsern ohne Probleme ausführen kann. Insbesondere könnte diese “Sprache” für Node.js Entwickler interessant sein – rein aus der Natur heraus &lt;img src='http://code-inside.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Bsp:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:5a02a471-7d0f-4c62-a76d-ed9714596be8" class="wlWriterEditableSmartContent"&gt;
&lt;pre name="code" class="c#"&gt;# Assignment:
number   = 42
opposite = true

# Conditions:
number = -42 if opposite

# Functions:
square = (x) -&amp;gt; x * x

# Arrays:
list = [1, 2, 3, 4, 5]

# Objects:
math =
  root:   Math.sqrt
  square: square
  cube:   (x) -&amp;gt; x * square x

# Splats:
race = (winner, runners...) -&amp;gt;
  print winner, runners

# Existence:
alert "I knew it!" if elvis?

# Array comprehensions:
cubes = (math.cube num for num in list)&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Wird zu:&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:1ee8ab20-a996-4995-ba9f-e57f0ffb569a" class="wlWriterEditableSmartContent"&gt;
&lt;pre name="code" class="c#"&gt;var cubes, list, math, num, number, opposite, race, square,
  __slice = [].slice;

number = 42;

opposite = true;

if (opposite) {
  number = -42;
}

square = function(x) {
  return x * x;
};

list = [1, 2, 3, 4, 5];

math = {
  root: Math.sqrt,
  square: square,
  cube: function(x) {
    return x * square(x);
  }
};

race = function() {
  var runners, winner;
  winner = arguments[0], runners = 2 &amp;lt;= arguments.length ? __slice.call(arguments, 1) : [];
  return print(winner, runners);
};

if (typeof elvis !== "undefined" &amp;amp;&amp;amp; elvis !== null) {
  alert("I knew it!");
}

cubes = (function() {
  var _i, _len, _results;
  _results = [];
  for (_i = 0, _len = list.length; _i &amp;lt; _len; _i++) {
    num = list[_i];
    _results.push(math.cube(num));
  }
  return _results;
})();&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Schön und gut, aber wie passt das in meine Visual Studio Welt?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hier gibt es eine gute und eine schlechte Nachricht. Die Gute: Es gibt ein Plugin. Die Schlechte: Für den vollen (oder nützlichen) funktionsumfang benötigt man eine Lizenz, welche 39$ kostet.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.mindscapehq.com/products/web-workbench"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://code-inside.de/blog/wp-content/uploads/image1547.png" width="598" height="219"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Die Rede ist von der &lt;a href="http://www.mindscapehq.com/products/web-workbench"&gt;Web Workbench von Mindscape&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wie ich auf das Tool kam…&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ich hatte bislang immer Combres genutzt. Für KnowYourStack.com nutze ich Twitter Bootstrap als UI Baukasten. Nun wollte ich allerdings den Style des UIs etwas verändern, allerdings sieht man im generierten Twitter Bootstrap UI CSS Source nicht so recht durch und zudem kann man ohnehin viele Sachen leichter direkt in den .less Dateien fixen. Hiermit kam allerdings Combres nicht zurecht, da Twitter für jede einzelne Komponente eine eigene .less Datei erstellt hatte und diese in einer Master-Datei importierte. Alles in allem: Combres mochte nicht und ich musste eine Alternative suchen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wie man mit der Web Workbench Twitter Bootstrap bearbeitet&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Auf dem &lt;a href="http://www.mindscapehq.com/blog/index.php/2012/04/10/building-twitter-bootstrap-with-web-workbench/"&gt;Blog von Mindscape ist auch ein Post, der beschreibt, wie man Twitter Bootstrap damit bearbeiten kann&lt;/a&gt; und ich kann es bezeugen: Es funktioniert wirklich. .LESS Datei bearbeiten –&amp;gt; Speichern –&amp;gt; neue .CSS Datei fällt heraus. Combres nutz nur noch die originale CSS Datei und alles ist gut.&lt;/p&gt;
&lt;p&gt;Die kostenlose Variante von der Web Workbench hat bei mir (bis auf das Syntaxhighlighting), allerdings nix gemacht, daher war ich erst mal etwas enttäuscht. Die &lt;a href="http://www.mindscapehq.com/products/web-workbench"&gt;Pro Version&lt;/a&gt; lohnt sich aber, wenn man mit .LESS arbeitet &lt;img src='http://code-inside.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;p&gt;Auch &lt;a href="http://www.hanselman.com/blog/CoffeeScriptSassAndLESSSupportForVisualStudioAndASPNETWithTheMindscapeWebWorkbench.aspx"&gt;Scott Hanselman hatte bei dem ersten Release darüber gebloggt&lt;/a&gt;, da ich damit aber noch nichts direktes zutun hatte, kam ich jetzt erst wieder darauf.&lt;/p&gt;
&lt;p&gt;Es gibt noch andere Tools, allerdings musste man dort meist ein eigenen Build-Mechanismus einbauen, was das ganze schnell komplizierter werden ließ.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eure Meinungen zu CoffeeScript, Sass oder LESS?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://code-inside.de/blog/wp-content/uploads/image1548.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://code-inside.de/blog/wp-content/uploads/image_thumb711.png" width="96" height="71"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Wer schon Erfahrungen mit den Sprachen gemacht hat, kann dies gerne auf KnowYourStack kund tun: &lt;a href="http://www.knowyourstack.com/what-is/coffeescript"&gt;CoffeeScript&lt;/a&gt;, &lt;a href="http://www.knowyourstack.com/what-is/less"&gt;LESS&lt;/a&gt; &amp;amp; &lt;a href="http://www.knowyourstack.com/what-is/sass"&gt;Sass&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Feedback zur Seite oder zu dem Blogpost ist natürlich auch immer willkommen &lt;img src='http://code-inside.de/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /&gt; &lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/Code-insideBlog/~4/Nx3E88Pz0uU" height="1" width="1"/&gt;</a10:content><a10:contributor><a10:name>Code-Inside Blog</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Code-Inside Blog</dc:creator></item><item><guid isPermaLink="true">http://www.sqlpassion.at/blog/PermaLink,guid,b3a98726-18de-49a1-9cfe-137fa7ab4e9b.aspx</guid><link>http://www.sqlpassion.at/blog/PermaLink,guid,b3a98726-18de-49a1-9cfe-137fa7ab4e9b.aspx</link><a10:author><a10:name>Klaus Aschenbrenner</a10:name></a10:author><title>Chance to win a free seat in my SQL Server 2012 Deep Dive Days workshop in London!</title><description>&lt;p style="background: white"&gt;
&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;As you might know, I'm
running my "&lt;strong&gt;SQL Server 2012 Deep Dive Days Workshop&lt;/strong&gt;" from May 28
– 30 in Central London. You can find out further information about the detailed agenda
here: &lt;a href="http://www.SQLpassion.at/SQL2012_UK.pdf"&gt;http://www.SQLpassion.at/SQL2012_UK.pdf&lt;/a&gt; &lt;/span&gt;
&lt;/p&gt;
&lt;p style="background: white"&gt;
&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;Next week you have the
amazing possibility to win a free seat in that workshop! It's very easy: Just register
as the first person throughout next week (May 13 – May 18) for the workshop and get
an additional seat for one of your colleagues for free! &lt;/span&gt;
&lt;/p&gt;
&lt;p style="background: white"&gt;
&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;Here are the exact eligibility
requirements to get the free seat: &lt;/span&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div style="background: white"&gt;&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;You
have to be the &lt;strong&gt;FIRST &lt;/strong&gt;person who registers for my SQL Server 2012
Workshop in London, during the week from May 13 – May 18. &lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="background: white"&gt;&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;You
have to use the discount code &lt;strong&gt;TWO4ONE&lt;/strong&gt; during the registration. &lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="background: white"&gt;&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;You
have to register the second person also through the discount code &lt;strong&gt;TWO4ONE&lt;/strong&gt;. &lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="background: white"&gt;&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;Both
registrations must have the same invoice address. &lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="background: white"&gt;&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;This
offer is only available for persons/companies who haven't yet registered an attendee
for the workshop. &lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="background: white"&gt;&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;Everyone
else who registers throughout the week from May 13 – May 18 with the discount code &lt;strong&gt;TWO4ONE&lt;/strong&gt;,
and has not won the free seat, receives a 10% discount of the original price of GBP
1,290. &lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="background: white"&gt;&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;The
10% discount does not apply to the first person who wins the additional seat for the
workshop. &lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style="background: white"&gt;&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;The
registrations have to be done through the registration site available on &lt;a href="http://www.SQLpassion.at/events.html"&gt;http://www.SQLpassion.at/events.html&lt;/a&gt; &lt;/span&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="background: white"&gt;
&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;So let's be very fast,
and register for my upcoming workshop in London, and if you are the first one, you
will get an additional seat for free! &lt;/span&gt;
&lt;/p&gt;
&lt;p style="background: white"&gt;
&lt;span style="color:black; font-size:8pt"&gt;&lt;span style="font-family:Verdana"&gt;See you
soon in London &lt;/span&gt;&lt;span style="font-family:Wingdings"&gt;&lt;/span&gt;&lt;span style="font-family:Verdana"&gt; &lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p style="background: white"&gt;
&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;-Klaus&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.sqlpassion.at/blog/aggbug.ashx?id=b3a98726-18de-49a1-9cfe-137fa7ab4e9b" /&gt;</description><pubDate>Sun, 13 May 2012 07:53:58 Z</pubDate><a10:rights type="text">Klaus Aschenbrenner</a10:rights><a10:contributor><a10:name>Klaus Aschenbrenner</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Klaus Aschenbrenner</dc:creator></item><item><guid isPermaLink="true">http://www.sqlpassion.at/blog/PermaLink,guid,4df27582-2bad-4a6a-9a40-d7dee0c1d100.aspx</guid><link>http://www.sqlpassion.at/blog/PermaLink,guid,4df27582-2bad-4a6a-9a40-d7dee0c1d100.aspx</link><a10:author><a10:name>Klaus Aschenbrenner</a10:name></a10:author><title>Slides &amp; Samples for my SQLConnections sessions</title><description>&lt;p&gt;
As I have announced announced in my sessions at the SQLConnections conferences in
Berchtesgaden/Germany, you can find my session materials (slides &amp;amp; samples) here
for download 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.sqlpassion.at/downloads/SQLConnection2012.zip"&gt;SQL Server Query
Tuning&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.sqlpassion.at/downloads/SQLConnection2012.zip"&gt;SQL Server Memory
Management&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.sqlpassion.at/downloads/SQLConnection2012.zip"&gt;SQL Server 2012
Distributed Replay&lt;/a&gt; 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Thanks for attending my sessions &lt;span style="font-family:Wingdings"&gt;J&lt;/span&gt; 
&lt;/p&gt;
&lt;p&gt;
-Klaus
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.sqlpassion.at/blog/aggbug.ashx?id=4df27582-2bad-4a6a-9a40-d7dee0c1d100" /&gt;</description><pubDate>Sat, 12 May 2012 17:48:11 Z</pubDate><a10:rights type="text">Klaus Aschenbrenner</a10:rights><a10:contributor><a10:name>Klaus Aschenbrenner</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Klaus Aschenbrenner</dc:creator></item><item><guid isPermaLink="true">http://christian.bloggingon.net/archive/2012/05/11/praktische-extension-fuumlr-visual-studio2010-ldquocsscop---fxcop-for-stylesheetsldquo.aspx</guid><link>http://christian.bloggingon.net/archive/2012/05/11/praktische-extension-fuumlr-visual-studio2010-ldquocsscop---fxcop-for-stylesheetsldquo.aspx</link><a10:author><a10:name>Christian Kiefer</a10:name></a10:author><title>Praktische Extension f&amp;uuml;r Visual Studio2010: &amp;ldquo;CSSCop - FxCop for Stylesheets&amp;ldquo;</title><description>&lt;p&gt;Die Extension “CSSCop - FxCop for Stylesheets“ überprüft die vorhandenen CSS-Dateien und gibt bei Fehlern entsprechende Warnungen aus:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Praktische-Extension-fr-Visual-Studio201_FBC1/clip_image002_2.gif"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Praktische-Extension-fr-Visual-Studio201_FBC1/clip_image002_thumb.gif" width="328" height="227" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Aufgerufen wird CSSCop über einen neuen Eintrag im Kontextmenüs des Solutions Explorers:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Praktische-Extension-fr-Visual-Studio201_FBC1/image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://christian.bloggingon.net/images/christian_bloggingon_net/Windows-Live-Writer/Praktische-Extension-fr-Visual-Studio201_FBC1/image_thumb.png" width="289" height="251" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Erhältlich ist diese Extension in der VisualStudioGallery: &lt;a href="http://visualstudiogallery.msdn.microsoft.com/a921b98e-9430-4be2-bf53-1169e12bdb50"&gt;http://visualstudiogallery.msdn.microsoft.com/a921b98e-9430-4be2-bf53-1169e12bdb50&lt;/a&gt;&lt;/p&gt;&lt;img src="http://christian.bloggingon.net/aggbug/416.aspx" width="1" height="1" /&gt;</description><pubDate>Fri, 11 May 2012 14:05:00 Z</pubDate><a10:rights type="text">Christian Kiefer</a10:rights><a10:contributor><a10:name>Christian Kiefer</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Christian Kiefer</dc:creator></item><item><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10304160</guid><link>http://blogs.msdn.com/b/hsirtl/archive/2012/05/11/presseschau-2012-kw19-neues-zu-windows-azure.aspx</link><a10:author><a10:name>Holger Sirtl</a10:name></a10:author><title>Presseschau 2012-KW19: Neues zu Windows Azure</title><description>&lt;p&gt;Auch heute wieder ein Rückblick auf interessante News, Blogposts und sonstigen Informationen zu Windows Azure in dieser Woche:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Hanu Kommalapatis Blog: &lt;a href="http://blogs.msdn.com/b/hanuk/archive/2012/05/05/top-benefits-of-running-node-js-on-windows-azure.aspx"&gt;Top Benefits of Running Node.js on Windows Azure&lt;/a&gt;      &lt;br /&gt;Windows Azure erlaubt die Ausführung von Node Anwendungen auf IIS. Hanus Blog erläutert die Vorteile, die sich aus dem Zusammenspiel von Node Anwendungen mit Windows Azure ergeben. Im einzelnen geht er auf die Aspekte Deployment-Architektur, Skalierbarkeit, Agilität bei der Entwicklung, sowie Verwaltung und Betrieb ein.       &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;Zoiner Tejada: &lt;a href="http://www.devproconnections.com/article/windows-azure-platform2/azure-identity-federation-142581"&gt;Add Authentication Options to Your Windows Azure Website&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;In diesem Artikel beschreibt Zoiner Tejada, wie Websites mit verschiedenen Authentifizierungsmechanismen ausgestattet werden können. Dabei geht er auch auf die Möglichkeit ein, wie ID Provider wie Windows Live ID, Google, Yahoo mit bestehenden SQL Membership Providern kombiniert werden können. Hierbei kommt der &lt;a href="http://identityserver.codeplex.com/"&gt;thinktecture IdentityServer&lt;/a&gt; zum Einsatz.       &lt;br /&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;Microsoft: &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=28726"&gt;System Center Cloud Services Process Pack now available for download!&lt;/a&gt;      &lt;br /&gt;Dieses Process Pack ist Microsofts Infrastructure-as-a-Service Lösung auf Basis der System Center Plattform.&lt;/li&gt;  &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10304160" width="1" height="1"&gt;</description><pubDate>Fri, 11 May 2012 12:55:00 Z</pubDate><a10:rights type="text">Holger Sirtl</a10:rights><a10:contributor><a10:name>Holger Sirtl</a10:name></a10:contributor><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Holger Sirtl</dc:creator></item></channel></rss>

