<?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>nettigkeiten</title>
	<atom:link href="http://blog.nettigkeiten.ch/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.nettigkeiten.ch</link>
	<description></description>
	<lastBuildDate>Fri, 22 Jul 2011 21:27:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Me, Myself and ReSharper #5: Move to Resource</title>
		<link>http://blog.nettigkeiten.ch/2011/07/me-myself-and-resharper-5-move-to-resource/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-myself-and-resharper-5-move-to-resource</link>
		<comments>http://blog.nettigkeiten.ch/2011/07/me-myself-and-resharper-5-move-to-resource/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 21:27:19 +0000</pubDate>
		<dc:creator>nettigkeiten</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[resharper]]></category>
		<category><![CDATA[resources]]></category>

		<guid isPermaLink="false">http://blog.nettigkeiten.ch/?p=308</guid>
		<description><![CDATA[Neue Anforderung: die Applikation muss mehrsprachig sein. Kein Problem oder? Natürlich nicht &#8211; ausser die Stunden monotoner Arbeit um all die Strings in Resource-Files zu verschieben. Moment &#8211; monoton, verschieben &#8211; das könnte was für meinen Freund ReSharper sein! Also mal [CTRL]+[SHIFT]+R drücken und schauen was er mir da so anbietet: Perfekt! Hier lassen sich [...]]]></description>
			<content:encoded><![CDATA[<p>Neue Anforderung: die Applikation muss mehrsprachig sein. Kein Problem oder?</p>
<p>Natürlich nicht &#8211; ausser die Stunden monotoner Arbeit um all die Strings in Resource-Files zu verschieben. Moment &#8211; monoton, verschieben &#8211; das könnte was für meinen Freund ReSharper sein!</p>
<p>Also mal [CTRL]+[SHIFT]+R drücken und schauen was er mir da so anbietet:</p>
<p><a href="http://blog.nettigkeiten.ch/wp-content/uploads/2011/07/refactorhis.png"><img class="alignnone size-medium wp-image-319" style="border: 0pt none;" title="refactorhis" src="http://blog.nettigkeiten.ch/wp-content/uploads/2011/07/refactorhis-300x156.png" alt="Refactor This" width="300" height="156" /></a></p>
<p>Perfekt!</p>
<p><a href="http://blog.nettigkeiten.ch/wp-content/uploads/2011/07/movetoresource.png"><img class="alignnone size-full wp-image-321" title="movetoresource" src="http://blog.nettigkeiten.ch/wp-content/uploads/2011/07/movetoresource.png" alt="" width="571" height="406" /></a></p>
<p>Hier lassen sich die einzelnen Werte abfüllen und mit Next werden diese dann in das ausgewählte Resource-File verschoben und der Code entsprechend angepasst.</p>
<p>Und es kommt noch besser! ReSharper kann auch noch den weiteren Code nach demselben Text durchsuchen und diesen Code dann ebenfalls entsprechend anpassen:</p>
<p><a href="http://blog.nettigkeiten.ch/wp-content/uploads/2011/07/findidenticalitems.png"><img class="alignnone size-full wp-image-322" title="findidenticalitems" src="http://blog.nettigkeiten.ch/wp-content/uploads/2011/07/findidenticalitems.png" alt="" width="390" height="120" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nettigkeiten.ch/2011/07/me-myself-and-resharper-5-move-to-resource/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Git: Alias konfigurieren</title>
		<link>http://blog.nettigkeiten.ch/2011/04/git-alias-konfigurieren/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=git-alias-konfigurieren</link>
		<comments>http://blog.nettigkeiten.ch/2011/04/git-alias-konfigurieren/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 18:10:07 +0000</pubDate>
		<dc:creator>nettigkeiten</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[git dvcs]]></category>

		<guid isPermaLink="false">http://blog.nettigkeiten.ch/?p=284</guid>
		<description><![CDATA[Dass verteilte Versionskontrolle der konventionellen Variante stark überlegen ist, scheint ja mittlerweile schon durch die dicksten TFS-Mauern zu sickern – wenn auch nur langsam. Die doch teils recht happig steile Lernkurve macht den Einstieg aber nicht einfach und es ist etwas Durchhaltewillen gefordert. Wer dann noch, wie ich, mit einigen Kommandos so auf Kriegsfuss steht, [...]]]></description>
			<content:encoded><![CDATA[<p>Dass verteilte Versionskontrolle der konventionellen Variante stark überlegen  ist, scheint ja mittlerweile schon durch die dicksten TFS-Mauern zu sickern –  wenn auch nur langsam.<br />
Die doch teils recht happig steile Lernkurve macht den Einstieg aber nicht  einfach und es ist etwas Durchhaltewillen gefordert. Wer dann noch, wie ich, mit  einigen Kommandos so auf Kriegsfuss steht, dass er sie gleich nach Gebrauch  immer wieder vergisst, dem ist vielleicht mit der Möglichkeit von Aliasen  geholfen.</p>
<p>Eines der Kommandos, welches ich sicher einmal in der Woche nachschlage ist ,<br />
<code><br />
<a href="http://www.kernel.org/pub/software/scm/git/docs/git-reset.html">git  reset HEAD</a><br />
</code><br />
was so in etwa einem “Revert” in Subversion gleichkommt.</p>
<p>Natürlich offeriert das <a href="http://www.kernel.org/pub/software/scm/git/docs/git-reset.html">reset-Kommando noch eine Vielzahl von Optionen</a>, aber  in 99% der Fällen brauche ich halt genau genanntes. Da Git ein offenes System ist, hat  es auch nix dagegen, wenn ich mir da halt eigene Befehle definiere – mit  Aliasen.</p>
<p>Um solche zu definieren, öffnet man die .gitconfig-Datei, welche sich  normalerweise unter <code>%userprofile%\.gitconfig</code> befindet.</p>
<p>Um einen Alias zu definieren, ergänzt man die Datei einfach wiefolgt:</p>
<p><code><br />
[alias]<br />
unstage = reset HEAD<br />
</code></p>
<p>Damit kann ich nun mit <code>git unstage</code> ein <code>git reset HEAD</code> ausführen, was, zumindest für mich, wesentlich naheliegender ist und so auch besser hängenbleibt. Natürlich können so auch komplexe Befehle die man immer wiedermal braucht mit einem einfachen Alias versehen werden &#8211; zum Beispiel eine hübsch formatierte Log-Ausgabe.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nettigkeiten.ch/2011/04/git-alias-konfigurieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Me, Myself and ReSharper #4: Move method</title>
		<link>http://blog.nettigkeiten.ch/2010/09/me-myself-and-resharper-4-move-method/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-myself-and-resharper-4-move-method</link>
		<comments>http://blog.nettigkeiten.ch/2010/09/me-myself-and-resharper-4-move-method/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 18:40:17 +0000</pubDate>
		<dc:creator>nettigkeiten</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[resharper]]></category>

		<guid isPermaLink="false">https://nettigkeiten.wordpress.com/2010/09/07/me-myself-and-resharper-4-move-method/</guid>
		<description><![CDATA[Immer wieder hört man sowas wie: “was, ich kann mit ReSharper nicht mal eine Methode verschieben”? Die Antwort: Doch, kann er natürlich mit links, aber ganz ohne Köpfchen gehts dann doch nicht. Das Problem… … liegt eigentlich auf der Hand. Eine Klassenmethode hat in der Regel Abhängigkeiten zu Membern der Klasse in der sie sich [...]]]></description>
			<content:encoded><![CDATA[<p>Immer wieder hört man sowas wie: “was, ich kann mit ReSharper nicht mal eine Methode verschieben”?</p>
<p>Die Antwort: Doch, kann er natürlich mit links, aber ganz ohne Köpfchen gehts dann doch nicht.</p>
<h2>Das Problem…</h2>
<p>… liegt eigentlich auf der Hand. Eine Klassenmethode hat in der Regel Abhängigkeiten zu Membern der Klasse in der sie sich befindet. Wie soll nun ReSharper mit diesen Abhängigkeiten umgehen? Zum Glück macht er das nicht irgendwie, sondern erwartet da etwas Vorarbeit vom Entwickler.</p>
<h2>Die Lösung…</h2>
<p>… liegt meist nahe, wenn man sich das Problem mal klar gemacht hat – so auch hier. Es gilt also, diese Abhängigkeiten aufzulösen – was bei statischen Methoden der Fall ist.</p>
<p>Als einfaches Beispiel nachfolgende Methode,  welche in die Klasse C verschoben werden soll:</p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">int</span> Compute()
{
    <span class="kwrd">int</span> result = _b.Read();
    <span class="kwrd">return</span> result;
}</pre>
<p>Hier gibt es eine Abhängigkeit auf _b. Um diese Abhängigkeit aufzulösen, übergibt man sie als Parameter an die Methode. Und da eilt ReSharper natürlich bereits mit einem Helferlein herbei:</p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/09/resharper_introduceparameter.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="resharper_introduceparameter" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/09/resharper_introduceparameter_thumb.png" border="0" alt="resharper_introduceparameter" width="334" height="237" /></a></p>
<pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">int</span> Compute(B b)
{
     <span class="kwrd">int</span> result = b.Read();
     <span class="kwrd">return</span> result;
}</pre>
<p>Damit hat die Methode keine direkten Abhängigkeiten mehr zur Klasse, was es einem erlaubt, diese auch als statisch zu deklarieren.</p>
<pre class="csharpcode"><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/09/resharper_makestatic1.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="resharper_makestatic" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/09/resharper_makestatic_thumb1.png" border="0" alt="resharper_makestatic" width="425" height="319" /></a></pre>
<p>Die beiden Schritte könnte man in diesem Fall sogar in einem Rutsch tun. Der Dialog von “Make Static…” bietet eine Option, die Abhängigkeit _b als Parameter zu definieren:</p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/09/resharper_makestatic26.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="resharper_makestatic2[6]" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/09/resharper_makestatic26_thumb.png" border="0" alt="resharper_makestatic2[6]" width="400" height="305" /></a></p>
<p>Je nach Komplexität der Methode, muss man jedoch doch auf die obere, zweistufige Methode zurückgreifen.</p>
<p>Und ist die Methode dann erstmal statisch, verweigert ReSharper auch die Move-Funktion nicht mehr:</p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/09/resharper_movemethod.png"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border-width:0;" title="resharper_movemethod" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/09/resharper_movemethod_thumb.png" border="0" alt="resharper_movemethod" width="410" height="150" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nettigkeiten.ch/2010/09/me-myself-and-resharper-4-move-method/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Silverlight: TextTrimming</title>
		<link>http://blog.nettigkeiten.ch/2010/08/silverlight-texttrimming/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=silverlight-texttrimming</link>
		<comments>http://blog.nettigkeiten.ch/2010/08/silverlight-texttrimming/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 17:52:47 +0000</pubDate>
		<dc:creator>nettigkeiten</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[silverlight]]></category>

		<guid isPermaLink="false">https://nettigkeiten.wordpress.com/2010/08/06/silverlight-texttrimming/</guid>
		<description><![CDATA[Ein wirklich cooles neues Feature von Silverlight 4 ist TextTrimming. Ein Bild sagt da mehr wie 1000 Worte: TextTrimming zeigt bei einem Überlauf eines Textes automatisch 3 Punkte an – im Gegensatz zum Beispiel ohne TextTrimming, wo das ganze einfach abgeschnitten wird. Die Umsetzung könnte einfacher nicht sein: &#60;TextBlock Text=&#34;Ich bin ein langer Text&#34; TextTrimming=&#34;WordEllipsis&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>Ein wirklich cooles neues Feature von Silverlight 4 ist TextTrimming. Ein Bild sagt da mehr wie 1000 Worte:</p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/08/sshot1.png"><img style="display:inline;border-width:0;" class="wlDisabledImage" title="sshot-1" border="0" alt="sshot-1" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/08/sshot1_thumb.png" width="170" height="106" /></a></p>
<p>TextTrimming zeigt bei einem Überlauf eines Textes automatisch 3 Punkte an – im Gegensatz zum Beispiel ohne TextTrimming, wo das ganze einfach abgeschnitten wird.</p>
<p>Die Umsetzung könnte einfacher nicht sein:</p>
<pre class="brush: xml;">&lt;TextBlock Text=&quot;Ich bin ein langer Text&quot; TextTrimming=&quot;WordEllipsis&quot; Width=&quot;116&quot; /&gt;</pre>
<p>Mehr Verfeinerungsmöglichkeiten gibt es zwar – wie etwa bei WPF – nicht, aber immerhin.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nettigkeiten.ch/2010/08/silverlight-texttrimming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entity Framework 4 / POCO und RIA Services</title>
		<link>http://blog.nettigkeiten.ch/2010/08/entity-framework-4-poco-und-ria-services/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=entity-framework-4-poco-und-ria-services</link>
		<comments>http://blog.nettigkeiten.ch/2010/08/entity-framework-4-poco-und-ria-services/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 22:28:44 +0000</pubDate>
		<dc:creator>nettigkeiten</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Entity Framework]]></category>
		<category><![CDATA[POCO]]></category>
		<category><![CDATA[RIA Services]]></category>

		<guid isPermaLink="false">https://nettigkeiten.wordpress.com/2010/08/03/entity-framework-4-poco-und-ria-services/</guid>
		<description><![CDATA[RIA Services und Entity Framework 4 arbeiten ja eigentlich mühelos miteinander. Benutzt man aber POCO-Klassen im Entity Framework, geht dann plötzlich gar nichts mehr. Da meckert also der Compiler “Cannot resolve ‘EntityState’”. EntityState ist ein Property, welches in der Klasse EntityObject definiert ist – welche in Nicht-Poco-Szenarien die Basisklasse aller Entities ist. Da die POCO’s [...]]]></description>
			<content:encoded><![CDATA[<p>RIA Services und Entity Framework 4 arbeiten ja eigentlich mühelos miteinander. Benutzt man aber POCO-Klassen im Entity Framework, geht dann plötzlich gar nichts mehr.</p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/08/image.png"><img style="display:inline;border-width:0;" class="wlDisabledImage" title="image" border="0" alt="image" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/08/image_thumb.png" width="450" height="128" /></a></p>
<p>Da meckert also der Compiler “Cannot resolve ‘EntityState’”. EntityState ist ein Property, welches in der Klasse EntityObject definiert ist – welche in Nicht-Poco-Szenarien die Basisklasse aller Entities ist. Da die POCO’s natürlich nicht von dieser Klasse ableiten (und dies auch nicht tun sollen), ist hier eine Alternative gefragt.</p>
<p>Die ObjectContext-Instanz bietet Zugriff auf den ObjectStateManager. Mit dessen Methode “TryGetObjectStateEntry” kann man den EntityState jeder Entität herausfinden. Eine entsprechende Hilfsmethode könnte so aussehen:</p>
<pre class="brush: csharp;">private EntityState GetEntityState(object entity)
{
    ObjectStateEntry stateEntry;
    if (ObjectContext.ObjectStateManager.TryGetObjectStateEntry(entity, out stateEntry))
    {
        return stateEntry.State;
    }
    return EntityState.Detached;
}</pre>
<p>Noch einfacher wirds, wenn die Entitäten eine gemeinsame Basis teilen (hier BaseEntity). Mit etwas ExtensionMethod-Magic lassen sich die notwendigen Anpassungen an der generierten Service-Klasse dann auch mit “Find and Replace” lösen:</p>
<pre class="brush: csharp;">private EntityState GetEntitySate(this EntityBase entity, ObjectStateManager stateManager)
{
    ObjectStateEntry stateEntry;
    if (stateManager.TryGetObjectStateEntry(entity, out stateEntry))
    {
        return stateEntry.State;
    }
    return EntityState.Detached;
}</pre>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/08/image1.png"><img style="display:inline;border-width:0;" class="wlDisabledImage" title="image" border="0" alt="image" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/08/image_thumb1.png" width="350" height="248" /></a></p>
<p>Eigentlich etwas armselig, dass sowas überhaupt nötig ist – aber zumindest eine einigermassen komfortable Lösung.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nettigkeiten.ch/2010/08/entity-framework-4-poco-und-ria-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Generation Plan</title>
		<link>http://blog.nettigkeiten.ch/2010/05/data-generation-plan/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=data-generation-plan</link>
		<comments>http://blog.nettigkeiten.ch/2010/05/data-generation-plan/#comments</comments>
		<pubDate>Tue, 04 May 2010 21:27:45 +0000</pubDate>
		<dc:creator>nettigkeiten</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[VS2010]]></category>

		<guid isPermaLink="false">https://nettigkeiten.wordpress.com/2010/05/04/data-generation-plan/</guid>
		<description><![CDATA[Mit VS 2010 hat die unsägliche Abtrennung der Data-Edition von Visual Studio ein Ende. So dürfen sich jetzt auch “normale” Devs an den Data-Tools erfreuen. Ein praktisches Feature sind die Data Generation Plans. Mit Hilfe dieser lassen sich relativ einfach grosse Anzahl von Testdaten generieren. Um einen Data Generation Plan zu machen, muss man ein [...]]]></description>
			<content:encoded><![CDATA[<p>Mit VS 2010 hat die unsägliche Abtrennung der Data-Edition von Visual Studio ein Ende. So dürfen sich jetzt auch “normale” Devs an den Data-Tools erfreuen. Ein praktisches Feature sind die Data Generation Plans. Mit Hilfe dieser lassen sich relativ einfach grosse Anzahl von Testdaten generieren.</p>
<p>Um einen Data Generation Plan zu machen, muss man ein Datenbank-Projekt erstellen.</p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/05/createproject.png"><img style="display:inline;border-width:0;" title="createproject" border="0" alt="createproject" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/05/createproject_thumb.png" width="400" height="258" /></a> </p>
<p>Dann importiert man die Schema-Informationen.</p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/05/importdb.png"><img style="display:inline;border-width:0;" title="importdb" border="0" alt="importdb" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/05/importdb_thumb.png" width="400" height="180" /></a> </p>
<p>Danach kann man dem Projekt einen neuen Data Generation Plan anfügen.</p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/05/addgenplan.png"><img style="display:inline;" title="addgenplan" alt="addgenplan" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/05/addgenplan_thumb.png" width="400" height="260" /></a></p>
<p>In dem Generation Plan können dann pro Feld einige Einstellungen zu den Generierungsdaten gemacht werden – und vor allem kann auch die Anzahl der zu generierenden Datensätze definiert werden. </p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/05/genplan.png"><img style="display:inline;border-width:0;" title="genplan" border="0" alt="genplan" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/05/genplan_thumb.png" width="400" height="242" /></a> </p>
<p>Dann nur noch den Plan starten – und schon ist die Tabelle voll von Daten</p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/05/start.png"><img style="display:inline;border-width:0;" title="start" border="0" alt="start" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/05/start_thumb.png" width="400" height="78" /></a></p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/05/results.png"><img style="display:inline;border-width:0;" title="results" border="0" alt="results" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/05/results_thumb.png" width="400" height="200" /></a>&#160; </p>
<p>&#160;</p>
<p>So mächtig wie der <a href="http://www.red-gate.com/products/SQL_Data_Generator/index.htm">Data Generator</a> von Red Gate ist das zwar bei weitem nicht, aber so für eine einfache Testdaten-Generierung reicht das allemal.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nettigkeiten.ch/2010/05/data-generation-plan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TechDays 2010 – ein Fazit</title>
		<link>http://blog.nettigkeiten.ch/2010/04/techdays-2010-ein-fazit/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=techdays-2010-ein-fazit</link>
		<comments>http://blog.nettigkeiten.ch/2010/04/techdays-2010-ein-fazit/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 16:02:32 +0000</pubDate>
		<dc:creator>nettigkeiten</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[TechDays]]></category>

		<guid isPermaLink="false">http://nettigkeiten.wordpress.com/2010/04/09/techdays-2010-ein-fazit/</guid>
		<description><![CDATA[Ne, das war nix! Nachdem ich jetzt eine Weile keine TechDays mehr besucht habe, dachte ich mir, ich wage es dieses Jahr wiedermal. Wenns nix wird, werde ich wenigstens mit bei MS-Veranstaltungen üblich gutem Essen verwöhnt – dachte ich mir, aber von vorne. Die TechDays fanden dieses Jahr im Congress Center in Basel statt. Die [...]]]></description>
			<content:encoded><![CDATA[<p>Ne, das war nix! Nachdem ich jetzt eine Weile keine TechDays mehr besucht habe, dachte ich mir, ich wage es dieses Jahr wiedermal. Wenns nix wird, werde ich wenigstens mit bei MS-Veranstaltungen üblich gutem Essen verwöhnt – dachte ich mir, aber von vorne.</p>
<p>Die TechDays fanden dieses Jahr im Congress Center in Basel statt. Die Location war soweit in Ordnung, ausser das in div. Sessions die Internetverbindung unbrauchbar instabil war – wer auch immer dafuer grade stehen muss, kriegt hoffentlich einen Rüffel. Wenigstens auf die Swisscom Hotspots war verlass, so konnte auf diese ausgewichen werden.</p>
<p>Aber das wichtigste sind wohl die Sessions, und diese enttäuschten (mit wenigen Ausnahmen) durchs Band. </p>
<p>Schon die KeyNote liess nichts gutes erahnen: nachdem man die zwei, milde gesagt, unkomischen Komiker ertragen hatte, gabs einen Vortrag über das eigentlich sehr verheissungsvolle Thema Film-Effekte. Leider war das ganze viel zu wenig konkret und technisch, so dass es mehr oder weniger darauf hinauslief, dass man Szenen aus Hellboy II (ohne Ton) geniessen konnte. Da wäre mehr drin gelegen.</p>
<p>Die eigentlichen Sessions fingen dann sehr gut an. Ronnie Saurenmann gab bei seiner Silverlight 4 Introduction alles! Das war komischer als die beiden angestellten Komiker und informativ zugleich. Bis auf die Advanced Silverlight-Session (wieder von Ronnie Saurenmann) konnte man den ersten Tag aber getrost vergessen. Tiefpunkt war der zweiteilige Vortrag “Sharepoint fuer Entwickler” von Olaf Feldkamp. Da war einfach viel zu wenig Fleisch am Knochen und das ganze war trotz des Titels eher auf ein Management-Publikum ausgerichtet.</p>
<p>Am zweiten Tag kann ich nur die Session von Michael Hofer zu den Sandboxed Solutions positiv herausheben. Der Inhalt war dem Publikum entsprechend technisch und hatte auch etwas Tiefe. Vorgetragen war das ganze locker und angenehm. Schade nur das Michael den Lumpensammler-Slot ganz am Schluss erhalten hat. </p>
<p>Ansonsten hätte ich auch den zweiten Tag besser an der Sonne verbracht.</p>
<p>Als Tüpfelchen auf dem i stellte sich dann das “Abschlussgeschenk” von Microsoft heraus. Beim rauslaufen erhielt jeder Teilnehmer eine gefuellte Strandtasche – gefuellt mit Werbung &#8211; komplett für die Tonne. Das alles in Kombination ist fast schon eine Frechheit für eine Veranstaltung die fast CHF 520 kostet. Da habe ich an kostenlosen (Partner-) Events von Microsoft schon viel besseres erlebt.</p>
<p>Ach ja – damit sich der Kreis wieder schliesst. Nein auch das Essen holte das ganze nicht raus. Es war zwar einigermassen ok, aber mehr auch nicht.</p>
<p>Ich hoffe MS geht hier für naechstes Jahr nochmals&#160; ueber die Bücher – sonst waren das meine letzten TechDays. Gefordert sind mehr Tiefe, mehr Technik, weniger Marketing – und gutes Essen <img src='http://blog.nettigkeiten.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Und bitte lasst das mit den Drittliga-Komikern, das braucht niemand.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nettigkeiten.ch/2010/04/techdays-2010-ein-fazit/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Me, Myself and ReSharper #3: Color Identifiers</title>
		<link>http://blog.nettigkeiten.ch/2010/04/me-myself-and-resharper-3-color-identifiers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me-myself-and-resharper-3-color-identifiers</link>
		<comments>http://blog.nettigkeiten.ch/2010/04/me-myself-and-resharper-3-color-identifiers/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 15:41:25 +0000</pubDate>
		<dc:creator>nettigkeiten</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[resharper]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://nettigkeiten.wordpress.com/2010/04/05/me-myself-and-resharper-3-color-identifiers/</guid>
		<description><![CDATA[Die Code Inspections von ReSharper bieten die Option “Color Identifiers” – quasi Schminke für den Code. Die Vorher-Nachher-Ansicht zeigt die Unterschiede: Die entsprechende Option kann in den ReSharper-Optionen aktiviert werden:]]></description>
			<content:encoded><![CDATA[<p>Die Code Inspections von ReSharper bieten die Option “Color Identifiers” – quasi Schminke für den Code. Die Vorher-Nachher-Ansicht zeigt die Unterschiede:</p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/04/beforeafter.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="Vorher-Nachher" border="0" alt="Vorher-Nachher" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/04/beforeafter_thumb.png" width="404" height="132" /></a> </p>
<p>Die entsprechende Option kann in den ReSharper-Optionen aktiviert werden:</p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/04/options.png"><img style="border-bottom:0;border-left:0;display:inline;border-top:0;border-right:0;" title="ReSharper Optionen" border="0" alt="ReSharper Optionen" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/04/options_thumb.png" width="404" height="147" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nettigkeiten.ch/2010/04/me-myself-and-resharper-3-color-identifiers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>git &#8211; leb wohl Subversion</title>
		<link>http://blog.nettigkeiten.ch/2009/09/git-leb-wohl-subversion/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=git-leb-wohl-subversion</link>
		<comments>http://blog.nettigkeiten.ch/2009/09/git-leb-wohl-subversion/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 21:36:10 +0000</pubDate>
		<dc:creator>nettigkeiten</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://blog.nettigkeiten.ch/archive/2009/09/23/226.aspx</guid>
		<description><![CDATA[Als ich vor einiger Zeit erstmals von git hörte, hat mich das ehrlich gesagt recht kalt gelassen. Subversion lieferte mir wunderbare Dienste, kein Grund für einen Umstieg. Daher habe ich mich auch gar nie etwas intensiver damit beschäftigt… Nachdem in meiner Twitter-Timeline der #git-Hashtag immer öfters auftauchte, schaute ich mir das doch  mal etwas genauer [...]]]></description>
			<content:encoded><![CDATA[<p>Als ich vor einiger Zeit erstmals von <a href="http://git-scm.com/">git</a> hörte, hat mich das ehrlich gesagt recht kalt gelassen. Subversion lieferte mir wunderbare Dienste, kein Grund für einen Umstieg. Daher habe ich mich auch gar nie etwas intensiver damit beschäftigt…</p>
<p>Nachdem in meiner Twitter-Timeline der #git-Hashtag immer öfters auftauchte, schaute ich mir das doch  mal etwas genauer an. Ein paar Tage später, laufen sind nun alle meine SVN-Repositories nach git migriert…</p>
<h2>Was ist git?</h2>
<p>git gehört zu den Distributed Version Control Systemen. Verteilt heisst hier, dass es nicht ein zentrales Repository gibt, sondern eben verschiedene, verteilte. Holt man sich bei Subversion eine lokale Arbeitskopie eines Repositories, hält man sich bei git das komplette Repository lokal. Ein lokales Repository bietet diverse Vorteile:</p>
<ul>
<li>Offline Commits: Da ich lokal nicht nur eine Arbeitskopie habe, sondern aber ein komplettes Repository samt History, kann ich auch lokal (bzw. offline) committen. Auch für Diffs etc. ist kein Online-Zugriff notwendig.</li>
<li>lokale Branches: Auch Branches können dementsprechend lokal erstellt werden, ohne dass die Co-Devs jemals etwas davon erfahren müssen <img src='http://blog.nettigkeiten.ch/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </li>
<li>Geschwindigkeit: Files adden, committen – es flutscht gewaltig <img src='http://blog.nettigkeiten.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li>Speicherplatz: Durch die Art wie git intern arbeitet, braucht es massiv weniger Speicherplatz wie Subversion (massiv kann durchaus Faktor 2-3 heissen).</li>
</ul>
<p>Jeder Entwickler hält sich also lokal ein Repository. Natürlich muss es dann trotzdem irgendwo ein “Master”-Repository geben, wohin dann die Änderungen dann mal gepusht werden. Dies alles bedarf natürlich möglichst effizienten und einfachen Branching und Merging-Mechanismen – da hab ich noch nicht allzuviel probiert, aber was ich bis jetzt gesehen habe reicht, um Subversion in Rente zu schicken!</p>
<p>Bald folgt mehr <img src='http://blog.nettigkeiten.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nettigkeiten.ch/2009/09/git-leb-wohl-subversion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Me, Myself and ReSharper #2: Live Templates</title>
		<link>http://blog.nettigkeiten.ch/2009/03/me_myself_and_resharper_2_live_templates/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=me_myself_and_resharper_2_live_templates</link>
		<comments>http://blog.nettigkeiten.ch/2009/03/me_myself_and_resharper_2_live_templates/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 19:41:40 +0000</pubDate>
		<dc:creator>nettigkeiten</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[resharper]]></category>

		<guid isPermaLink="false">http://blog.nettigkeiten.ch/archive/2009/03/25/me_myself_and_resharper_2_live_templates.aspx</guid>
		<description><![CDATA[Das Konzept der Live Templates ist dem der Visual Studio Code Snippets ähnlich. Live Templates ermöglichen es also, beliebige Code-Fragmente als Template zu hinterlegen, so dass diese einfach und schnell im Code wiederverwendet werden können. Der Resharper bringt hier schon einige von Haus aus mit: Da gibt es solche darunter, die einem einfach etwas Tipparbeit [...]]]></description>
			<content:encoded><![CDATA[<p>Das Konzept der Live Templates ist dem der Visual Studio Code Snippets ähnlich. Live Templates ermöglichen es also, beliebige Code-Fragmente als Template zu hinterlegen, so dass diese einfach und schnell im Code wiederverwendet werden können.</p>
<p>Der Resharper bringt hier schon einige von Haus aus mit:</p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/01/image_2.png"><img class="alignnone size-thumbnail wp-image-92" title="Resharper Predefined Livetemplates" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/01/image_2.png?w=126" alt="Resharper Predefined Livetemplates" width="126" height="150" /></a></p>
<p>Da gibt es solche darunter, die einem einfach etwas Tipparbeit sparen (aus “thr” resultiert “throw new “) und andere, die etwas aufwändigere Konstruktur kreieren, so entsteht aus “itdic” eine Iteration über ein Dictionary:<br />
<a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/01/image_6.png"><img class="alignnone size-medium wp-image-93" title="Livetemplate itdic" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/01/image_6.png?w=300" alt="Livetemplate itdic" width="300" height="103" /></a></p>
<p>Dabei sind die grün bzw. blau hinterlegten Bezeichnungen Platzhalter, welche mit TAB durchsprungen werden können – so hat man das eingefügt Snippet innert kürze für die jeweilige Situation angepasst. Resharper probiert bei der Wahl der Platzhalter jeweils auch herauszufinden, was man tun möchte. So leitet er aus meiner vorgängigen Initialisierung des dic-Dictionaries automatisch ab, dass ich wahrscheinlich darüber iterieren möchte, und dass dieses Dictionary einen Key vom Typ Integer und den Wert als String enthält.</p>
<p>Wer sieht den Fehler? Genau, die Iterationsvariable ist vom Typ DictionaryEntry statt KeyValuePair und die Casts im Body sind überflüssig. Das heisst, dieses Live Template ist für die Verwendung mit “klassischen” Dictionaries gedacht, nicht aber für generische.</p>
<h3>Was nicht ist, kann ja noch werden</h3>
<p>Und hier wirds erst richtig spassig. Live-Templates können auch ganz einfach selbst erstellt werden. Hierfür gibt es einen einfachen Editor, wo man sich die Live-Templates erstellen kann. Unser angepasstes Skript von oben sieht nun folgendermassen aus:</p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/01/image_13.png"><img class="alignnone size-medium wp-image-94" title="Livetemplate erstellen" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/01/image_13.png?w=300" alt="Livetemplate erstellen" width="300" height="169" /></a></p>
<p>Man definiert also das Template mit Platzhalter. Für diese wiederum kann man dann Makros definieren, welche dem Live Template eine gewisse Inteligenz mitgeben. So wird hier als Beispiel für den DICT-Platzhalter definiert, dass eine Variable vom Typ System.Collections.Generic.Dictionary vorgeschlagen werden soll. Dies veranlasst Resharper bei der Verwendung des Templates dann dazu, im Code nach einer entsprechenden Variable zu suchen.</p>
<p>Wenden wir nun das Template auf unseren Code von oben an:</p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/01/image_10.png"><img class="alignnone size-medium wp-image-95" title="Erstelltes Livetemplate wählen" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/01/image_10.png?w=300" alt="Erstelltes Livetemplate wählen" width="300" height="138" /></a></p>
<p><a href="http://66.147.244.219/~nettigke/wp-content/uploads/2010/01/image_12.png"><img class="alignnone size-medium wp-image-97" title="Generierter Code des Livetemplates" src="http://66.147.244.219/~nettigke/wp-content/uploads/2010/01/image_12.png?w=300" alt="Generierter Code des Livetemplates" width="300" height="84" /></a></p>
<p>Et voilà – nun passts perfekt. Die Typen werden korrekt erkannt und die Iterationsvariable hat jetzt auch den korrekten Datentyp. Nettes Gimmick dazu: Im eingeblendeten DropDown macht uns Resharper gleich noch Namensvorschläge die an dieser Stelle evtl. Sinn machen könnten.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nettigkeiten.ch/2009/03/me_myself_and_resharper_2_live_templates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

