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

<channel>
	<title>andreas-schlapsi.at &#187; .NET</title>
	<atom:link href="http://www.andreas-schlapsi.at/category/net-entwicklung/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.andreas-schlapsi.at</link>
	<description>Software-Entwicklung, .NET &#38; Co.</description>
	<lastBuildDate>Sat, 17 Sep 2011 16:28:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Wenn .NET-Entwickler über den Tellerrand schauen</title>
		<link>http://www.andreas-schlapsi.at/2011/08/24/wenn-net-entwickler-uber-den-tellerrand-schauen/</link>
		<comments>http://www.andreas-schlapsi.at/2011/08/24/wenn-net-entwickler-uber-den-tellerrand-schauen/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 19:41:04 +0000</pubDate>
		<dc:creator>Andreas Schlapsi</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.andreas-schlapsi.at/?p=1201</guid>
		<description><![CDATA[In letzter Zeit ist es in der .NET-Welt wieder modern, sich mit anderen Programmiersprachen und Plattformen auseinanderzusetzen. Zunächst war es Ruby, über das geschrieben und berichtet wurde. Beim letzten .NET Open Space Süd in Karlsruhe gab es je eine Session über Ruby und Ruby on Rails. In letzter Zeit hört man auch immer mehr von [...]]]></description>
			<content:encoded><![CDATA[<p>In letzter Zeit ist es in der .NET-Welt wieder modern, sich mit anderen Programmiersprachen und Plattformen auseinanderzusetzen. Zunächst war es <a href="http://www.ruby-lang.org">Ruby</a>, über das geschrieben und berichtet wurde. Beim letzten <a href="http://karlsruhe.netopenspace.de/2011/MainPage.ashx">.NET Open Space Süd in Karlsruhe</a> gab es je eine Session über <a href="http://rubyonrails.org/">Ruby und Ruby on Rails</a>. In letzter Zeit hört man auch immer mehr von <a href="http://www.python.org/">Python</a>.</p>
<p>Ich kenne Python seit Version 1.5.2, also schon seit über 10 Jahren. Ich habe mich aber in den letzten Jahren nicht damit beschäftigt. Vor ca. 1 Jahr habe ich beschlossen, mich wieder mehr mit Python zu beschäftigen.</p>
<p>Am letzten Montag, dem 22. August 2011, hielt <a href="http://dotnet-forum.de/blogs/rainerschuster/">Rainer Schuster</a> im Rahmen der <a href="http://online-usergroup.de/">.NET Online User Group</a> einen <a href="http://online-usergroup.de/termine.20110822.ashx">Online-Vortrag über Python</a>. Einen Tag darauf reagierte <a href="http://blog.schelian.de/2011/08/phyton-leicht-zu-durchschauen-these-oder-wirklichkeit/">Hans-Peter Schelian mit einem Blogartikel</a>, nachdem er sich einen Tag lang mit Python beschäftigt hat, “um den Hype um diese Sprache besser verstehen zu können”.<br />
<span id="more-1201"></span></p>
<h2>Python ist kein Hype</h2>
<p>Python 1.0 wurde lange vor .NET 1.0 veröffentlicht, nämlich im Jänner 1994 (siehe <a href="http://en.wikipedia.org/wiki/History_of_Python">Wikipedia</a>). Python wird seit vielen Jahren von namhaften Organisationen verwendet, darunter Google, Yahoo!, NASA und CERN (siehe <a href="http://en.wikipedia.org/wiki/Python_(programming_language)#Usage">Wikipedia</a>). Daher glaube ich nicht dass Python ein Hype ist, der bald wieder abflaut. Python ist eine bewährte Technologie, die ihre Tauglichkeit bereits vielfach bewiesen hat.<br />
Python ist leicht zu durchschauen</p>
<p>Es wird immer wieder behauptet, dass Python-Code für Programmieranfänger leicht zu durchschauen und zu lesen sei. Ich glaube, dass das auch stimmt. Möglicherweise sieht man das anders, wenn man die Syntax von C-basierten Programmiersprachen wie C#, C/C++ oder Java gewöhnt ist. Auch der Unterschied von Hello-World-Programmien in Python und in C# zeigen, dass C# sehr viel unnötiges Rauschen enthält.</p>
<p>Hier ein bekanntes Programm in Python:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span>
<span style="color: #ff7700;font-weight:bold;">print</span> “Hello, world<span style="color: #66cc66;">!</span>”</pre></div></div>

<p>Und hier in C#:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> Hello
<span style="color: #008000;">&#123;</span>
  <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> <span style="color: #6666cc; font-weight: bold;">void</span> Main<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">string</span><span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> args<span style="color: #008000;">&#41;</span>
  <span style="color: #008000;">&#123;</span>
    <span style="color: #000000;">System</span><span style="color: #008000;">.</span><span style="color: #0000FF;">Console</span><span style="color: #008000;">.</span><span style="color: #0000FF;">WriteLine</span> <span style="color: #008000;">&#40;</span>“Hello, world<span style="color: #008000;">!</span>”<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
  <span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Natürlich wächst der &#8220;Signalanteil&#8221; bei größeren Programmen. Aber als Programmieranfänger muss man bei C# für einfache Programme wesentlich mehr wissen als bei Python.</p>
<h2>Python wird vielseitig eingesetzt</h2>
<p>Jeder, der sich ein Video auf Youtube.com ansieht, verwendet Software, die zumindest teilweise in Python geschrieben ist. Jeder, der in diesem Blog einen Kommentar schreiben möchte, verwendet Disqus, das das Python-Webframework Django verwendet. Jeder, der Ubuntu Linux installiert hat, hat Python-Software verwendet. Die verteilten Versionsverwaltungssysteme Mercurial und Bazaar sind in Python geschrieben. Die Windows-GUIs dafür, TortoiseHG und TortoiseBzr, sind ebenfalls in Python geschrieben. Seit Jahren verwenden Hersteller von 3D-Animationssoftware Python als eingebettete Skriptsprache. </p>
<p>Es gibt einen <a href="http://lamsonproject.org/">Mailserver in Python</a>. Es gibt Klassen in der <a href="http://docs.python.org/library/">Python-Standardbibliothek</a>, die die <a href="http://docs.python.org/library/smtpd.html">Implementierung eines SMTP-Servers vereinfachen</a>.</p>
<p>Und wenn wir schon bei E-Mails sind: <a href="http://www.list.org/">Mailman</a> ist ein beliebter Mailinglistenmanager, der sogar vom Mono-Team verwendet wird (z.B. <a href="http://lists.ximian.com/mailman/listinfo/mono-list">Mono-list</a>). Und wenn man <a href="http://android.xamarin.com/">Android-Apps mit C#</a> entwickeln will und sich an die MonoDroid-Mailingliste anmeldet, wird man ebenfalls <a href="http://lists.ximian.com/mailman/listinfo/monodroid">Mailman verwenden</a>.</p>
<h2>Kann man Python für größere Projekte verwenden?</h2>
<p>Ja, man kann. Es ist aber nicht jedermanns Sache. Wer lieber eine statische Programmiersprache verwendet, wird keine Freude mit Python haben.</p>
<p>Ein Compiler ersetzt keine Unit- und Integrationstests. Auch wenn der Code ohne Fehler compiliert werden kann und daher keine syntaktischen Fehler enthalten sind, können noch immer semantische Fehler enthalten sein. Daher sind für größere Projekte automatisierte Unit-Tests in der professionellen Software-Entwicklung Pflicht. In einer dynamischen Programmiersprache tut man sich da in einigen Fällen leichter. Dafür braucht man aber erfahrene Software-Entwickler, die sich damit auskennen.</p>
<p>Übrigens, in der Python-Standardbibliothek gibt es <a href="http://docs.python.org/library/unittest.html">zwei</a> <a href="http://docs.python.org/library/doctest.html">Testframeworks</a> für die Automatisierung von Tests.</p>
<h2>Fazit</h2>
<p>Also Python ist kein Hype, dafür ist es schon zu lange in Verwendung. Python hat möglicherweise für Programmieranfänger eine einfachere Syntax und es wird in vielen Projekten verwendet. Außerdem lassen sich damit auch größere Programme realisieren.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-schlapsi.at/2011/08/24/wenn-net-entwickler-uber-den-tellerrand-schauen/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>DDD und CQRS mit Greg Young in Wien</title>
		<link>http://www.andreas-schlapsi.at/2011/08/04/ddd-und-cqrs-mit-greg-young-in-wien/</link>
		<comments>http://www.andreas-schlapsi.at/2011/08/04/ddd-und-cqrs-mit-greg-young-in-wien/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 21:35:50 +0000</pubDate>
		<dc:creator>Andreas Schlapsi</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[cqrs]]></category>
		<category><![CDATA[ddd]]></category>

		<guid isPermaLink="false">http://www.andreas-schlapsi.at/?p=1186</guid>
		<description><![CDATA[(Gastbeitrag von Jörg Egretzberger) Am 16. September spricht Greg Young auf der Community-Konferenz &#8220;Professional .Net 2011&#8243; in Wien über Domain Driven Design (DDD) und wie man dieses in Projekten mit der von ihm beschriebenen Softwarearchitektur Command and Query Responsibility Segregation (CQRS) erfolgreich umsetzen kann. Aus Wikipedia: &#8220;Domain-Driven Design ist nicht nur eine Technik oder Methode. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>(Gastbeitrag von Jörg Egretzberger)</strong></p>
<p>Am 16. September spricht Greg Young auf der Community-Konferenz &#8220;Professional .Net 2011&#8243; in Wien über Domain Driven Design (DDD) und wie man dieses in Projekten mit der von ihm beschriebenen Softwarearchitektur Command and Query Responsibility Segregation (CQRS) erfolgreich umsetzen kann.</p>
<p>Aus Wikipedia:</p>
<blockquote><p>
&#8220;Domain-Driven Design ist nicht nur eine Technik oder Methode. Es ist viel mehr eine Denkweise und Priorisierung zur Steigerung der Produktivität von Softwareprojekten im Umfeld komplexer fachlicher Zusammenhänge.&#8221;
</p></blockquote>
<p>In DDD möchte man nicht nur Daten manipulieren (CRUD), sondern auch in einer gemeinsamen Sprache festhalten aus welchem Grund sich Daten geändert haben und welches Verhalten das System hat. Die Intention der Benutzeraktion soll erfasst werden. So sind beispielsweise die Aktionen &#8220;Kunde eröffnet ein Konto&#8221; und &#8220;Geld wird abgehoben&#8221; wesentliche Aktionen eines Bankensystems. Mit DDD kann das System und dessen Verhalten (Behavior) modelliert werden.</p>
<p>Hinter diesen Aktionen stecken allerdings oftmals auch Business-Regeln wie etwa, dass nur max. 3.000 Euro pro Tag über Automaten von einem Konto behoben werden können. CQRS bietet eine elegante und skalierbare Lösung um dies in Software umzusetzen. Die Business Regeln enden nicht im Client, sondern werden zentral in der Domäne (dort wo der meiste Business Nutzen entsteht) gehalten.</p>
<p>Greg zeigt auch, wie dadurch das automatisierte Testen mit Unit Tests vereinfacht und expliziter wird. Weiters wird auch aufgezeigt, wie durch das Speichern der durchgeführten Aktionen zu einem späteren Zeitpunkt Auswertungen die im Vorhinein nicht definiert wurden, einfach umgesetzt werden können. </p>
<p>Beispiel: der Bankdirektor möchte eine Auswertung wie viele Kunden ihr Bankkonto schließen, nachdem sie umgezogen sind um durch Werbemaßnahmen dem gegenzusteuern. Dabei handelt es sich um einen wesentlichen Business-Vorteil.</p>
<p>CQRS wird nicht nur in sehr großen Softwareprojekte eingesetzt, die enorme Skalierbarkeit benötigen. Es hilft bereits bei Projekten die nicht nur &#8220;Create, Read, Update, Delete&#8221; Befehle haben, sondern bei denen auch Validierung und Business Regeln umgesetzt werden sollen.</p>
<p>Ganz treu dem Motto der heurigen Professional .Net: Einfach bessere Software entwickeln!</p>
<p>Mehr Infos zur Professional .Net 2011 findet ihr unter <a href="http://www.dotnet-austria.at">www.dotnet-austria.at</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-schlapsi.at/2011/08/04/ddd-und-cqrs-mit-greg-young-in-wien/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Link-Einblick #1</title>
		<link>http://www.andreas-schlapsi.at/2011/06/10/link-einblick-1/</link>
		<comments>http://www.andreas-schlapsi.at/2011/06/10/link-einblick-1/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 23:07:49 +0000</pubDate>
		<dc:creator>Andreas Schlapsi</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[JavaScript & HTML]]></category>

		<guid isPermaLink="false">http://www.andreas-schlapsi.at/?p=1147</guid>
		<description><![CDATA[Ich habe fast immer so viele Seiten in meinem Browser offen, dass ich meistens nicht weiß, wann ich sie jemals lesen soll. In meinem Blog ist außerdem schon länger nichts mehr passiert. Ich gewähre euch hiermit in unregelmäßigen Abständen Einblick in meine offenen Tabs. Web Development, HTML5 und JavaScript CoffeeScript Basics (RailsCasts) 10 CoffeeScript One [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe fast immer so viele Seiten in meinem Browser offen, dass ich meistens nicht weiß, wann ich sie jemals lesen soll. In meinem Blog ist außerdem schon länger nichts mehr passiert. Ich gewähre euch hiermit in unregelmäßigen Abständen Einblick in meine offenen Tabs.</p>
<h2>Web Development, HTML5 und JavaScript</h2>
<ul>
<li><a href="http://railscasts.com/episodes/267-coffeescript-basics">CoffeeScript Basics</a> (RailsCasts)</li>
<li><a href="http://ricardo.cc/2011/06/02/10-CoffeeScript-One-Liners-to-Impress-Your-Friends.html">10 CoffeeScript One Liners to Impress Your Friends</a> (Ricardo Tomasi)</li>
<li><a href="http://addyosmani.com/toolsforjqueryapparchitecture/">Tools For jQuery Application Architecture (Extended Slides)</a> (Addy Osmani)</li>
<li><a href="http://blog.vjeux.com/2011/javascript/how-prototypal-inheritance-really-works.html">Javascript – How Prototypal Inheritance really works</a> (Christopher Chedeau)</li>
<li><a href="http://functionsource.com/post/a-prototypal-discussion">A Prototypal Discussion</a> (Dion Almaer)</li>
<li><a href="http://blog.chromium.org/2011/05/chrome-developer-tools-put-javascript.html">Chrome Developer Tools: Put JavaScript memory under control</a> (Mikhail Naganov)</li>
<li><a href="http://thechangelog.com/post/6108679805/episode-0-6-2-ironjs-with-fredrik-holmstrom">Episode 0.6.2 &#8211; IronJS with Fredrik Holmström</a> (The Changelog, Wynn Netherland)</li>
<li><a href="http://net.tutsplus.com/tutorials/html-css-techniques/responsive-web-design-a-visual-guide/">Responsive Web Design: A Visual Guide</a> (Andrew Gormley)</li>
<li><a href="http://blogs.sitepoint.com/a-basic-html5-template/">A Basic HTML5 Template</a> (Louis Lazaris)</li>
</ul>
<h2>F# und Funktionale Programmierung</h2>
<ul>
<li><a href="http://fssnip.net/">F# Snippets</a></li>
<li><a href="http://blogs.msdn.com/b/dsyme/archive/2011/05/30/nice-f-syntax-for-rx-reactive-extensions.aspx">Nice F# Syntax for Rx (Reactive Extensions)</a> (Don Syme)</li>
</ul>
<h2>ASP.NET</h2>
<ul>
<li><a href="http://www.codethinked.com/what-asp.net-mvc-could-learn-from-rails">What ASP.NET MVC Could Learn From Rails</a> (Justin Etheredge)</li>
<li><a href="http://wekeroad.com/post/6012451652/referencing-routes-in-asp-net-mvc-the-rails-way">Referencing Routes in ASP.NET MVC The Rails Way</a> (Rob Conery)</li>
</ul>
<h2>.NET-Community Wien</h2>
<ul>
<li><a href="http://www.codefest.at/post/2011/06/07/Professional-NET-2011e28093Die-NET-Community-Konferenz-in-Wien.aspx">Professional .NET 2011–Die .NET Community Konferenz in Wien</a> (Mario Meir-Huber)</li>
<li><a href="http://www.codefest.at/post/2011/06/07/Wien-14-Mai-2011-18h-Usergroup-treffen-jQuery.aspx">Wien, 14. Juni 2011, 18h: Usergroup treffen jQuery</a> (Mario Meir-Huber)</li>
</ul>
<h2>Methodology</h2>
<ul>
<li><a href="https://elearning.industriallogic.com/gh/submit?Action=PageAction&#038;album=blog2009&#038;path=blog2009/2011/horizontalSlicing&#038;devLanguage=Java">Return of the Horizontal Slice</a> (Joshua Kerievsky)</li>
<li><a href="http://www.samihonkonen.fi/2011/05/breaking-team-silos-with-kanban/">Breaking Team Silos With Kanban</a> (Sami Honkonen)</li>
<li><a href="http://arlobelshee.com/essay/quantifying-technical-debt">Quantifying Technical Debt</a> (Arlo Belshee)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-schlapsi.at/2011/06/10/link-einblick-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CQRS und die Oberfläche</title>
		<link>http://www.andreas-schlapsi.at/2011/03/11/cqrs-und-die-oberflache/</link>
		<comments>http://www.andreas-schlapsi.at/2011/03/11/cqrs-und-die-oberflache/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 22:44:54 +0000</pubDate>
		<dc:creator>Andreas Schlapsi</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[cqrs]]></category>
		<category><![CDATA[Wien]]></category>

		<guid isPermaLink="false">http://www.andreas-schlapsi.at/?p=1141</guid>
		<description><![CDATA[Am 15.&#160;März gibt es das nächste Treffen der .NET&#160;Open&#160;Space&#160;Austria User&#160;Group. Dieses Mal gibt es den dritten Teil der CQRS-Serie mit dem Titel &#8220;CQRS und die Oberfläche&#8221;. Jörg und Adrian zeigen uns, wie die Commands zur Domäne kommen und in weiterer Folge über den Event-Store und die Leseseite wieder zurück zur Oberfläche. Dieses Mal findet das [...]]]></description>
			<content:encoded><![CDATA[<p>Am 15.&nbsp;März gibt es das nächste Treffen der .NET&nbsp;Open&nbsp;Space&nbsp;Austria User&nbsp;Group. Dieses Mal gibt es den dritten Teil der CQRS-Serie mit dem Titel &#8220;CQRS und die Oberfläche&#8221;.  Jörg und Adrian zeigen uns, wie die Commands zur Domäne kommen und in weiterer Folge über den Event-Store und die Leseseite wieder zurück zur Oberfläche.</p>
<p>Dieses Mal findet das Treffen bei meinem Arbeitgeber, der Firma <a href="http://www.rubicon.eu">rubicon informationstechnologie gmbh</a> statt.</p>
<p>Details gibt es wie immer auf der <a href="http://dotnetopenspace.ning.com/forum/topics/1532011-cqrs-und-die">NING-Seite der Gruppe</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-schlapsi.at/2011/03/11/cqrs-und-die-oberflache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Treffen der .NET Open Space Austria: CQRS und Event-Sourcing</title>
		<link>http://www.andreas-schlapsi.at/2011/01/07/treffen-der-net-open-space-austria-cqrs-und-event-sourcing/</link>
		<comments>http://www.andreas-schlapsi.at/2011/01/07/treffen-der-net-open-space-austria-cqrs-und-event-sourcing/#comments</comments>
		<pubDate>Fri, 07 Jan 2011 20:22:23 +0000</pubDate>
		<dc:creator>Andreas Schlapsi</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[cqrs]]></category>
		<category><![CDATA[event sourcing]]></category>
		<category><![CDATA[Wien]]></category>

		<guid isPermaLink="false">http://www.andreas-schlapsi.at/?p=1131</guid>
		<description><![CDATA[Am 11.&#160;Jänner findet das nächste Treffen der .NET Open Space Austria User Group statt. Dieses Mal stellen uns Jörg und Adrian das CQRS-Pattern und Event-Sourcing vor. Zur Vorbereitung hat Jörg die Informationen auf der Seite http://www.cqrsinfo.com vorgeschlagen. Das Treffen findet bei der Unisys im Andromedatower statt. Details gibt es wie immer auf der NING-Seite der [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.andreas-schlapsi.at/wp-content/uploads/2011/01/cqrs.jpg" alt="" title="CQRS" width="150" height="150" class="alignleft size-full wp-image-1132" />Am 11.&nbsp;Jänner findet das nächste Treffen der .NET Open Space Austria User Group statt. Dieses Mal stellen uns Jörg und Adrian das CQRS-Pattern und Event-Sourcing vor. Zur Vorbereitung hat Jörg die Informationen auf der Seite <a href="http://cqrsinfo.com">http://www.cqrsinfo.com</a> vorgeschlagen.</p>
<p>Das Treffen findet bei der Unisys im Andromedatower statt.</p>
<p>Details gibt es wie immer auf der <a href="http://dotnetopenspace.ning.com/forum/topics/1112010-cqrs-event-sourcing">NING-Seite der Gruppe</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-schlapsi.at/2011/01/07/treffen-der-net-open-space-austria-cqrs-und-event-sourcing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Treffen der .NET Open Space Austria: F# und funktionale Programmierung</title>
		<link>http://www.andreas-schlapsi.at/2010/12/04/treffen-der-net-open-space-austria-f-und-funktionale-programmierung/</link>
		<comments>http://www.andreas-schlapsi.at/2010/12/04/treffen-der-net-open-space-austria-f-und-funktionale-programmierung/#comments</comments>
		<pubDate>Sat, 04 Dec 2010 21:48:25 +0000</pubDate>
		<dc:creator>Andreas Schlapsi</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[F#]]></category>
		<category><![CDATA[Funktionale Programmierung]]></category>
		<category><![CDATA[Wien]]></category>

		<guid isPermaLink="false">http://www.andreas-schlapsi.at/?p=1121</guid>
		<description><![CDATA[Am 7. Dezember findet wieder ein Treffen der .NET Open Space Austria User Group statt. Dieses Mal bereite ich etwas über das Thema F# und funktionale Programmierung vor. Das Treffen findet bei Microsoft Österreich GmbH statt. Details gibt es wie immer auf der NING-Seite der Gruppe und auf der Codefest-Seite.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.andreas-schlapsi.at/wp-content/uploads/2010/12/LAMBDA_capital_and_small.png"><img src="http://www.andreas-schlapsi.at/wp-content/uploads/2010/12/LAMBDA_capital_and_small-150x150.png" alt="" title="LAMBDA_(capital_and_small)" width="150" height="150" class="alignleft size-thumbnail wp-image-1124" /></a>Am 7. Dezember findet wieder ein Treffen der .NET Open Space Austria User Group statt. Dieses Mal bereite ich etwas über das Thema F# und funktionale Programmierung vor.</p>
<p>Das Treffen findet bei Microsoft Österreich GmbH statt.</p>
<p>Details gibt es wie immer auf der <a href="http://dotnetopenspace.ning.com/forum/topics/07122010-dotnet">NING-Seite der Gruppe</a> und auf der <a href="http://www.codefest.at/post/2010/11/26/07122010-Wien-F-und-funktionale-Programmierung-in-C-Treffen-der-NET-Open-Space-Austria.aspx">Codefest-Seite</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-schlapsi.at/2010/12/04/treffen-der-net-open-space-austria-f-und-funktionale-programmierung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Source-Code von IronPython jetzt auf Github</title>
		<link>http://www.andreas-schlapsi.at/2010/11/25/source-code-von-ironpython-jetzt-auf-github/</link>
		<comments>http://www.andreas-schlapsi.at/2010/11/25/source-code-von-ironpython-jetzt-auf-github/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 22:49:13 +0000</pubDate>
		<dc:creator>Andreas Schlapsi</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[IronPython]]></category>

		<guid isPermaLink="false">http://www.andreas-schlapsi.at/?p=1095</guid>
		<description><![CDATA[Vor einigen Wochen hat Microsoft die Open-Source-Projekte IronPython und IronRuby an die Community übergeben. Der Quellcode von IronPython wurde bis jetzt in TFS auf Codeplex verwaltet. IronRuby verwendete schon länger ein Repository auf Github für die Quellcodeverwaltung. Darin befindet sich auch die DLR (Dynamic Language Runtime), die von beiden Projekten benötigt wird. Das IronPython-Team entschied [...]]]></description>
			<content:encoded><![CDATA[<p><div id="attachment_1096" class="wp-caption alignleft" style="width: 160px"><a href="http://www.andreas-schlapsi.at/wp-content/uploads/2010/11/python.jpg"><img src="http://www.andreas-schlapsi.at/wp-content/uploads/2010/11/python-150x150.jpg" alt="Foto: Nasmac (http://www.flickr.com/photos/nasmac/531138641/)" title="Grüne Baumpython" width="150" height="150" class="size-thumbnail wp-image-1096" /></a><p class="wp-caption-text">Foto: <a href='http://www.flickr.com/photos/nasmac/531138641/'>Nasmac</a></p></div>Vor einigen Wochen hat Microsoft die Open-Source-Projekte IronPython und IronRuby <a href="http://blogs.msdn.com/b/jasonz/archive/2010/10/21/new-components-and-contributors-for-ironpython-and-ironruby.aspx">an die Community übergeben</a>. Der Quellcode von IronPython wurde bis jetzt in TFS auf <a href="www.codeplex.com">Codeplex</a> verwaltet.</p>
<p>IronRuby verwendete schon länger ein Repository auf <a href="http://github.com">Github</a> für die Quellcodeverwaltung. Darin befindet sich auch die DLR (Dynamic Language Runtime), die von beiden Projekten benötigt wird. Das IronPython-Team entschied daher, dieses <a href="https://github.com/IronLanguages/main">Repository mitzubenutzen</a>. Das Issue-Tracking bleibt aber <a href="http://ironpython.codeplex.com/">auf Codeplex</a>.</p>
<p>Die Mehrheit der IronPython-Community <a href="http://lists.ironpython.com/pipermail/users-ironpython.com/2010-October/013921.html">sprach sich für BitBucket und damit Mercurial aus</a>, das in der Python-Community beliebter ist. Für alle, die am IronPython-Quellcode interessiert sind, aber nicht auf Git umsteigen möchten, hat <a href="http://jdhardy.blogspot.com/">Jeff Hardy</a> einen Mirror auf <a href="http://bitbucket.org/">BitBucket</a> eingerichtet und <a href="http://jdhardy.blogspot.com/2010/11/developing-ironpython-with-mercurial.htm">dessen Verwendung für die Entwicklung an IronPython dokumentiert</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-schlapsi.at/2010/11/25/source-code-von-ironpython-jetzt-auf-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET MVC für Fortgeschrittene</title>
		<link>http://www.andreas-schlapsi.at/2010/11/07/asp-net-mvc-fur-fortgeschrittene/</link>
		<comments>http://www.andreas-schlapsi.at/2010/11/07/asp-net-mvc-fur-fortgeschrittene/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 00:02:56 +0000</pubDate>
		<dc:creator>Andreas Schlapsi</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Wien]]></category>

		<guid isPermaLink="false">http://www.andreas-schlapsi.at/?p=1089</guid>
		<description><![CDATA[Nächsten Dienstag, am 9. November 2010, gibt es das nächste Open-Space-Treffen in Wien. Dieses Mal erzählt Jörg, wie man den Code in den Controllern einer ASP.NET MVC-Anwendung minimieren kann. Details dazu gibt es wie immer auf den Seiten der .NET-Community &#8220;.Net Open Space Austria&#8221; auf Ning.]]></description>
			<content:encoded><![CDATA[<p>Nächsten Dienstag, am 9. November 2010, gibt es das nächste Open-Space-Treffen in Wien. Dieses Mal erzählt Jörg, wie man den Code in den Controllern einer ASP.NET MVC-Anwendung minimieren kann. </p>
<p><a href="http://dotnetopenspace.ning.com/forum/topics/open-space-treffen-im-november">Details dazu</a> gibt es wie immer auf den <a href="http://dotnetopenspace.ning.com/">Seiten der .NET-Community &#8220;.Net Open Space Austria&#8221; auf Ning</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-schlapsi.at/2010/11/07/asp-net-mvc-fur-fortgeschrittene/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bowling beim .NET Coding Dojo Wien</title>
		<link>http://www.andreas-schlapsi.at/2010/05/05/bowling-beim-net-coding-dojo-wien/</link>
		<comments>http://www.andreas-schlapsi.at/2010/05/05/bowling-beim-net-coding-dojo-wien/#comments</comments>
		<pubDate>Wed, 05 May 2010 20:41:35 +0000</pubDate>
		<dc:creator>Andreas Schlapsi</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Coding Dojo]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Wien]]></category>

		<guid isPermaLink="false">http://www.andreas-schlapsi.at/?p=1039</guid>
		<description><![CDATA[.NET Coding Dojos sind in letzter Zeit modern geworden. Auch in Wien habt ihr die Gelegenheit, gemeinsam mit anderen Entwicklern eure TDD- und Programmierkenntnisse zu trainieren. Wir werden uns wieder eine kleine Programmieraufgabe stellen und dabei viel Neues lernen. Nächsten Freitag, also am 14.&#160;Mai&#160;2010, um 18:00 Uhr ist es wieder so weit. Das monatliche Wiener [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gmbsg.com/net-coding-dojo-massiv/">.NET Coding Dojos</a> sind in letzter Zeit modern geworden. Auch in Wien habt ihr die Gelegenheit, gemeinsam mit anderen Entwicklern eure TDD- und Programmierkenntnisse zu trainieren. Wir werden uns wieder eine kleine Programmieraufgabe stellen und dabei viel Neues lernen.</p>
<p>Nächsten Freitag, also <strong>am 14.&nbsp;Mai&nbsp;2010, um 18:00 Uhr</strong> ist es wieder so weit. Das monatliche Wiener .NET Coding Dojo findet wieder statt. Bevor wir mit dem <a href="http://codekata.pragprog.com/">Kata</a> beginnen, wird uns Jörg zeigen, wie man moderne Web-Anwendungen mit ASP.NET MVC baut. Nach einer Pause werden wir uns diesmal dem <a href="http://www.codingdojo.org/cgi-bin/wiki.pl?KataBowling">KataBowling</a> widmen.</p>
<p>Nähere Informationen findet ihr hier: <a href="http://dotnetopenspace.ning.com/events/aspnet-mvc-anwendung-1">http://dotnetopenspace.ning.com/events/aspnet-mvc-anwendung-1</a>.</p>
<p>Ich freue mich auf euer Kommen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-schlapsi.at/2010/05/05/bowling-beim-net-coding-dojo-wien/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Layout der WPF-Statuszeile</title>
		<link>http://www.andreas-schlapsi.at/2010/04/28/layout-der-wpf-statuszeile/</link>
		<comments>http://www.andreas-schlapsi.at/2010/04/28/layout-der-wpf-statuszeile/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 23:05:49 +0000</pubDate>
		<dc:creator>Andreas Schlapsi</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[XAML]]></category>

		<guid isPermaLink="false">http://www.andreas-schlapsi.at/?p=987</guid>
		<description><![CDATA[In meinem letzten Artikel habe ich gezeigt, wie man eine einfache Benutzeroberfläche für einen Texteditor mit WPF entwerfen kann. Aber die Statuszeile sieht noch nicht ganz so aus, wie sie soll. Die Zeilen- und Spaltennummer, in der sich die Einfügemarke momentan befindet, soll ca. im rechten Drittel der Statuszeile angezeigt werden, auch wenn sich die [...]]]></description>
			<content:encoded><![CDATA[<p>In meinem <a href="http://www.andreas-schlapsi.at/2010/04/25/benutzeroberflache-eines-texteditors-mit-wpf/">letzten Artikel</a> habe ich gezeigt, wie man eine einfache Benutzeroberfläche für einen Texteditor mit WPF entwerfen kann. Aber die Statuszeile sieht noch nicht ganz so aus, wie sie soll.<br />
<span id="more-987"></span><br />
Die Zeilen- und Spaltennummer, in der sich die Einfügemarke momentan befindet, soll ca. im rechten Drittel der Statuszeile angezeigt werden, auch wenn sich die Fenstergröße ändert.</p>
<p><img src="http://www.andreas-schlapsi.at/wp-content/uploads/2010/04/01-Statuszeile-klein.png" /></p>
<p><img src="http://www.andreas-schlapsi.at/wp-content/uploads/2010/04/02-Statuszeile-groß.png" /></p>
<p>Beim letzten Mal hatten wir die Statuszeile noch so definiert:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">        ...
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;StatusBar</span> <span style="color: #000066;">DockPanel.Dock</span>=<span style="color: #ff0000;">&quot;Bottom&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TextBlock</span> <span style="color: #000066;">Text</span>=<span style="color: #ff0000;">&quot;Col 1, Ln 1&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/StatusBar<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        ...</pre></div></div>

<p>Das sieht so aus:</p>
<p><img src="http://www.andreas-schlapsi.at/wp-content/uploads/2010/04/03-Statuszeile-Texteditor.png" /></p>
<p>Ein <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.textblock.aspx">TextBlock</a>-Element befindet sich in der Statuszeile, das links angezeigt wird. Doch wie bekommen wir den Text an die gewünschte Position?</p>
<p>Die <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.statusbar.aspx">StatusBar</a> stellt ihre Steuerelemente normalerweise mit einem <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.dockpanel.aspx">DockPanel</a> dar. Allerdings werden alle Steuerelemente, die nicht vom Typ <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.statusbaritem.aspx">StatusBarItem</a> sind, in einem StatusBarItem-Element eingehüllt, d.h. wir müssen selbst das StatusBarItem-Element angeben, damit wir die DockPanel-Eigenschaften definieren können.</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">        ...
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;StatusBar</span> <span style="color: #000066;">DockPanel.Dock</span>=<span style="color: #ff0000;">&quot;Bottom&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;StatusBarItem</span> <span style="color: #000066;">DockPanel.Dock</span>=<span style="color: #ff0000;">&quot;Right&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TextBlock</span> <span style="color: #000066;">Text</span>=<span style="color: #ff0000;">&quot;Col 1, Ln 1&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/StatusBarItem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;StatusBarItem</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/StatusBar<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        ...</pre></div></div>

<p><img src="http://www.andreas-schlapsi.at/wp-content/uploads/2010/04/04-Statuszeile-DockPanel.png"/></p>
<p>Der Text wird jetzt zwar rechts dargestellt, aber noch nicht genau dort, wo wir ihn haben wollen. Außerdem mussten wir ein leeres StatusBarItem-Element hinzufügen, das den Hauptteil der Statuszeile ausfüllen soll. Andernfalls würde das StatusBarItem-Element mit dem TextBlock nicht rechts dargestellt. Würden wir einen zweiten Text darstellen wollen, müssten wir es zum leeren StatusBarItem hinzufügen. Somit käme der linke Teil im XAML-Code vor dem rechten. Viel lieber hätten wir an dieser Stelle ein <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.grid.aspx">Grid</a>, weil wir dann die Breite der Spalten selbst bestimmen können. Aber wie erreichen wir das?</p>
<p>Die StatusBar gehört wie <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.listbox.aspx">ListBox</a>, <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.listview.aspx">ListView</a>, <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.combobox.aspx">ComboBox</a>, <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.menu.aspx">Menu</a> und einigen anderen zu den sogenannten <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.aspx">Items-Controls</a>. Diese stellen ihre Subelemente in einem Panel dar, das durch die Eigenschaft <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemspanel.aspx">ItemsPanel</a> definiert wird. Normalerweise wird darin ein <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.stackpanel.aspx">StackPanel</a> definiert, aber StatusBar hat diese Eigenschaft überschrieben und durch ein DockPanel ersetzt, wie wir oben gesehen haben. Wir können dieser Eigenschaft ein Grid zuweisen und so zu dem gewünschten Ergebnis kommen. In XAML sieht das so aus:</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;">        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;StatusBar</span> <span style="color: #000066;">DockPanel.Dock</span>=<span style="color: #ff0000;">&quot;Bottom&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;StatusBar.ItemsPanel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ItemsPanelTemplate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Grid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Grid.RowDefinitions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;RowDefinition</span> <span style="color: #000066;">Height</span>=<span style="color: #ff0000;">&quot;*&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Grid.RowDefinitions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;Grid.ColumnDefinitions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ColumnDefinition</span> <span style="color: #000066;">Width</span>=<span style="color: #ff0000;">&quot;2*&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;ColumnDefinition</span> <span style="color: #000066;">Width</span>=<span style="color: #ff0000;">&quot;1*&quot;</span><span style="color: #000000; font-weight: bold;">/&gt;</span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Grid.ColumnDefinitions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/Grid<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ItemsPanelTemplate<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/StatusBar.ItemsPanel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;StatusBarItem</span> <span style="color: #000066;">Grid.Column</span>=<span style="color: #ff0000;">&quot;1&quot;</span> <span style="color: #000066;">Grid.Row</span>=<span style="color: #ff0000;">&quot;0&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;TextBlock</span> <span style="color: #000066;">Text</span>=<span style="color: #ff0000;">&quot;Col 1, Ln 1&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/StatusBarItem<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/StatusBar<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Die Eigenschaft bekommt ein <a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.itemspaneltemplate.aspx">ItemsPanelTemplate</a>, in dem wir mit einem Grid ein Layoutgitter definieren, das aus einer Zeile und zwei Spalten besteht. Die Spalten teilen sich den verfügbaren Platz im Verhältnis 2:1 auf. Die rechte Spalte umfasst also das rechte Drittel der Statuszeile. Den TextBlock geben wir in das StatusBarItem, das wir der rechten Spalte zuweisen. Damit befindet sich der Text immer im rechten Drittel der Statuszeile.</p>
<p>Die WPF-Statuszeile kann auch andere Steuerelemente darstellen, z.B. Bilder, Fortschrittsbalken und viele andere mehr. Wenn man dann mehr Kontrolle über das Layout der Statuszeile braucht, kann das DockPanel jederzeit durch etwas anderes ersetzt werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreas-schlapsi.at/2010/04/28/layout-der-wpf-statuszeile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

