<?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>BeagleOutOfBoundsException</title>
	<atom:link href="http://www.nw-software.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nw-software.com</link>
	<description>Ein Beagle durchbricht die Grenzen schneller als ein Index.</description>
	<lastBuildDate>Wed, 31 Aug 2011 08:44:52 +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>GWT: Code Splitting mit ProviderBundle</title>
		<link>http://www.nw-software.com/2011/08/gwt-code-splitting-mit-providerbundle/</link>
		<comments>http://www.nw-software.com/2011/08/gwt-code-splitting-mit-providerbundle/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 08:44:52 +0000</pubDate>
		<dc:creator>Niko Will</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[codesplit]]></category>
		<category><![CDATA[codesplitting]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[gwtp]]></category>
		<category><![CDATA[mvp]]></category>
		<category><![CDATA[presenter]]></category>
		<category><![CDATA[providerbundle]]></category>
		<category><![CDATA[proxy]]></category>

		<guid isPermaLink="false">http://www.nw-software.com/?p=263</guid>
		<description><![CDATA[Möchte hier mal wieder kurz was notieren, damit ich es selber nicht vergesse ;) Code Splitting von GWT ist eine tolle Sache. Da ich kein Guru bin werde ich mal versuchen das in meinen laienhaften Worten zu erklären. GWT liefert alles was man programmiert an den Client aus, da das teilweise sehr viel sein kann [...]]]></description>
			<content:encoded><![CDATA[<p>Möchte hier mal wieder kurz was notieren, damit ich es selber nicht vergesse ;)</p>
<p>Code Splitting von GWT ist eine tolle Sache. Da ich kein Guru bin werde ich mal versuchen das in meinen laienhaften Worten zu erklären. GWT liefert alles was man programmiert an den Client aus, da das teilweise sehr viel sein kann wurde Code Splitting eingeführt. Presenter, deren Proxies mit der ProxyCodeSplit Annotation versehen sind werden erst vom Server nachgeladen, sobald diese das erste mal mit Inject verwendet werden. Dadurch kann der Client den GWT Code schneller laden, da dort nur die notwendigen Sachen hinterlegt werden. Der Code von Presentern die nicht von Anfang an benötigt werden, wird also erst bei deren erster Verwendung vom Server zum Client übertragen.</p>
<p>Diese Möglichkeit lässt es sinnvoll erscheinen, im gesamten Anwendungscode bzw. soviel wie möglich, Code Splitting zu verwenden. Ein zusätzlicher Vorteil ist, die Funktionalität der einzelnen Klassen kann schön klein gehalten werden, da der Presenter notwendige Klassen injiziert bekommen kann. Die Sache hat nur einen Haken: Das Nachladen benötigt erstens etwas Zeit und zweitens muss für jeden gesplitteten Code eine Anfrage an den Server gestellt werden. Jede Anfrage benötigt durch den Overhead noch zusätzlich Zeit, außerdem bearbeiten Browser i.d.R. nur zwei Anfragen an eine Domain gleichzeitig. Wird also ein Presenter angezeigt, der selber mehrere gesplittete Teile enthält, kann dies den Benutzereindruck trüben.</p>
<p>Die Lösung hierfür haben die Entwickler von GWT mit Provider Bundles geschaffen. In einem ProviderBundle legt man alle zusammenhängende Teile fest, die gemeinsam nachgeladen werden sollen. In der Anwendung an der ich gerade arbeite verwenden wir das, um bestimmte Aktionen auszulagern, die von mehreren Presentern verwendet werden können. Dadurch kann jede Aktion in einem übersichtlichen Class File programmiert werden das zudem noch in einer entsprechenden Package Hirarchie für eine leichtere Wartbarkeit abgelegt werden kann. Für jeden Presenter gibt es dann ein ProviderBundle das festlegt, welche Actions mit dem Presenter geladen werden sollen. Code Splitting und Provier Bundles können aber auch anders verwendet werden.</p>
<p>Die GWT bzw. GWTP Dokumentation erklärt das Vorgehen leider (noch) nicht. Für viele mag sich die Verwendung auch aus den Kommentaren der <a href="http://code.google.com/p/gwt-platform/source/browse/gwtp-core/gwtp-clients-common/src/main/java/com/gwtplatform/common/client/ProviderBundle.java">ProviderBundle</a> Klasse erschließen, ich hatte hierbei jedoch einige Anlaufschwierigkeiten. Daher möchte ich hier mal kurz die Vorgehensweise skizzieren:</p>
<pre class="brush: java">
public class ShowGalleriesA extends UiAction {
	...
}
</pre>
<p>Das ist die Action Klasse. Die Implementierung ist für den Mechanismus nicht wichtig, daher hab ich sie weg gelassen. Man muss hier eigentlich nur beachten, das es nichts zu beachten gibt ;)<br />
Es ist eine ganz gewöhnliche Java Klasse, es sind keine Annotations oder ähnliches notwendig (außer natürlich das was für die Funktion der Klasse benötigt wird). Auch UiAction, die Basisklasse, enthält nichts was mit dem Code Splitting zu tun hat.</p>
<pre class="brush: java">
public class DashboardPr extends PlacePresenter<DashboardIf, DashboardPr.MyProxy> {

	@ProxyCodeSplitBundle(bundleClass = DashboardBundle.class, id = DashboardBundle.ID_DashboardPresenter)
	@NameToken(NameTokens.dashboard)
	public interface MyProxy extends ProxyPlace<DashboardPr> {
	}

	@Inject
	public DashboardPr(
            DashboardIf view,
            MyProxy proxy,
            final ShowGalleriesA aShowGalleries) {
		super(view, proxy);

		setActions(aShowGalleries);
	}
	...
}
</pre>
<p>Der Presenter hingegen ist schon interessanter. Die normalerweise verwendete @ProxyCodeSplit Annotation wird durch @ProxyCodeSplitBundle ersetzt. In den Parametern der Annotation muss angegeben werden welche Klasse das Bundle definiert und welche ID daraus der des annotierten Proxies entspricht. Siehe Definition des Provider Bundles:</p>
<pre class="brush: java">
public class DashboardBundle extends ProviderBundle {
	public final static int ID_DashboardPresenter = 0;
	public final static int ID_ActionShowGalleries = 1;
	public final static int BUNDLE_SIZE = 2;

	@Inject
	public DashboardBundle(
			final Provider<DashboardPr> dashboardPresenter,
			final Provider<ShowGalleriesA> actionShowGalleries) {
		super(BUNDLE_SIZE);

		providers[ID_DashboardPresenter] = dashboardPresenter;
		providers[ID_ActionShowGalleries] = actionShowGalleries;
	}
}
</pre>
<p>Sollte eigentlich relativ selbsterklärend sein ;)<br />
Alle Teile des Bundles (die also zusammen geladen werden sollen) werden mit @Inject dem Konstruktor übergeben und in einem Feld providers der Basisklasse ProviderBundle hinterlegt. Wichtig ist hierbei, dass die Größe des providers Array dem Superklassen Konstruktor richtig mitgegeben wird. Am einfachsten macht man das über die gezeigten (und auch von Google empfohlenen) statischen Konstanten mit denen man dann auch auf die jeweiligen IDs der einzelnen Teile des Bundles verweisen kann (siehe Parameter der @ProxyCodeSplitBundle Annotation in der Presenter Klasse).</p>
<p>Nun müssen im Ginjector die AsyncProvider für die Einzelteile definiert werden, damit das Injizieren funktioniert:</p>
<pre class="brush: java">
public interface MyGinjector extends Ginjector {
	...
	AsyncProvider<DashboardPr> getCustomerDetailPresenter();
	AsyncProvider<ShowGalleriesA> getShowGalleriesAction();
	AsyncProvider<DashboardBundle> getDashboardBundle();
	...
}
</pre>
<p>Und schon wird die Aktion automatisch mit dem Presenter geladen. Einfach oder? ^^</p>
<img src="http://www.nw-software.com/?ak_action=api_record_view&id=263&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.nw-software.com/2011/08/gwt-code-splitting-mit-providerbundle/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Objekte mit Events serialisieren mit dem BinaryFormatter</title>
		<link>http://www.nw-software.com/2011/07/objekte-mit-events-serialisieren-mit-dem-binaryformatter/</link>
		<comments>http://www.nw-software.com/2011/07/objekte-mit-events-serialisieren-mit-dem-binaryformatter/#comments</comments>
		<pubDate>Thu, 07 Jul 2011 07:16:35 +0000</pubDate>
		<dc:creator>Niko Will</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[binaryformatter]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[deserialize]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[serialize]]></category>

		<guid isPermaLink="false">http://www.nw-software.com/?p=256</guid>
		<description><![CDATA[In meinem aktuellen Projekt muss ein recht komplexer Objektbaum in eine Datei serialisiert werden, um eine Speichern und Laden Funktion bieten zu können. Da es im Modell auch zirkuläre Referenzen gibt und ich im vorliegenden Fall nichts von SOAP halte, verwende ich den BinaryFormatter für diese Aufgabe (obwohl das von mir beschriebene Problem ziemlich sicher [...]]]></description>
			<content:encoded><![CDATA[<p>In meinem aktuellen Projekt muss ein recht komplexer Objektbaum in eine Datei serialisiert werden, um eine Speichern und Laden Funktion bieten zu können. Da es im Modell auch zirkuläre Referenzen gibt und ich im vorliegenden Fall nichts von SOAP halte, verwende ich den BinaryFormatter für diese Aufgabe (obwohl das von mir beschriebene Problem ziemlich sicher auch auf andere Formatter zutreffen wird).</p>
<p>Aber nun zum eigentlichen Problem: das alle Klassen die serialisiert werden sollen das Attribut Serializable benötigen sollte allen klar sein. Was ich jedoch schmerzhaft feststellen musste ist, dass auch jede Klasse die sich für ein Event einer zu serialisierenden Klasse registriert serialisierbar sein muss. Denn die Events werden mit serialisiert, sodass sie nach der Deserialisierung weiter verknüpft bleiben. Bei den Kollegen von <a href="http://www.sanity-free.org/113/csharp_binary_serialization_oddities.html">Sanity Free Coding</a> wird das ganze auch noch ausführlicher erläutert und auch ein Lösungsvorschlag gegeben.</p>
<p>Der dort beschriebene Ansatz birgt allerdings auch ein paar Stolper-fallen: in dem Beispiel wird das Event nämlich nie mitserialisiert, also auch nicht, wenn die auf das Event lauschende Klasse serialisierbar ist. In meinem Projekt ist es so, dass der Objektbaum über Listen mit Parent Child Funktion verfügt. Darüber kann im Baum hoch und runter navigiert werden. Außerdem bieten die Listen Events, die bei Änderung daran gefeuert werden z.B. wenn ein neues Objekt hinzugefügt oder gelöscht wird. Manche Objekte im Baum müssen wissen, wenn sich was im Baum an anderer Stelle geändert hat, um sich selbst zu aktualisieren und den Baum somit konsistent zu halten. Daher registrieren sie sich für die Changed Events. Diese Events sollten also auch nach der Deserialisierung wieder hergestellt sein. Andererseits registrieren sich auch Oberflächensteuerelemente für die Changed Events, damit die Oberfläche dementsprechend aktualisiert werden kann. Diese Events werden beim Aufbau der Oberfläche aber ohnehin jedesmal neu verdrahtet, müssen also nicht serialisiert werden. </p>
<p>Eine Möglichkeit wäre nun, für jedes Objekt im Modell ISerializable und einen Deserialisierungskonstruktor zu implementieren und die komplette De-/Serialisierung selber zu machen. Dabei könnte man im Deserialisierungskonstruktor die Eventzuordnung ebenfalls jedesmal neu verdrahten. Was aber bei komplexen Objekten wenig Spass macht und bei Änderungen am Objekt jedesmal mit angepasst werden muss. Mein Ansatz ist eine Erweiterung der von Sanity Free Coding vorgeschlagenen Methode. Beim Registrieren der Events in der add sowie beim Deregistrieren in der remove Methode wird das Event Target per Reflection überprüft. Ist das Target serialisierbar, wird das Event einem privaten event zugeordnet, das serialisiert wird. Ist das Target nicht serialisierbar, wie z.B. unsere Oberflächensteuerelemente, wird das event Feld mit vorangestelltem [NonSerializable] verwendet. Genial einfach und einfach genial. Hier noch etwas Code um sich das besser vorstellen zu können:</p>
<pre class="brush:csharp;">
[NonSerialized]
private EventHandler&lt;ParentChildListChangedEventArgs&lt;C&gt;&gt; changedNonSerializable;
private EventHandler&lt;ParentChildListChangedEventArgs&lt;C&gt;&gt; changedSerializable;

public event EventHandler&lt;ParentChildListChangedEventArgs&lt;C&gt;&gt; Changed
{
    [MethodImpl(MethodImplOptions.Synchronized)]
    add
    {
        if (value.Target.GetType().IsSerializable)
            changedSerializable += value;
        else
            changedNonSerializable += value;
    }
    [MethodImpl(MethodImplOptions.Synchronized)]
    remove
    {
        if (value.Target.GetType().IsSerializable)
            changedSerializable -= value;
        else
            changedNonSerializable -= value;
    }
}
</pre>
<p>gefeuert wird das ganze dann wie folgt:</p>
<pre class="brush:csharp;">
protected virtual void OnChanged(ParentChildListChangedEventArgs&lt;C&gt; e)
{
    if (changedNonSerializable != null) changedNonSerializable(this, e);
    if (changedSerializable != null) changedSerializable(this, e);
}
</pre>
<img src="http://www.nw-software.com/?ak_action=api_record_view&id=256&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.nw-software.com/2011/07/objekte-mit-events-serialisieren-mit-dem-binaryformatter/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>So wie es aussieht, bauen wir tatsächlich&#8230;</title>
		<link>http://www.nw-software.com/2011/05/so-wie-es-aussieht-bauen-wir-tatsachlich/</link>
		<comments>http://www.nw-software.com/2011/05/so-wie-es-aussieht-bauen-wir-tatsachlich/#comments</comments>
		<pubDate>Sun, 29 May 2011 09:02:53 +0000</pubDate>
		<dc:creator>Niko Will</dc:creator>
				<category><![CDATA[Hausbau]]></category>

		<guid isPermaLink="false">http://www.nw-software.com/?p=248</guid>
		<description><![CDATA[In dieser neuen Rubrik &#8220;Hausbau&#8221; möchten wir Verwandte und Bekannte über den Verlauf unseres Bauvorhabens informieren, aber natürlich sind auch andere Besucher herzlich Willkommen. Letztes Jahr im August kamen erste Überlegungen auf, ein Haus zu bauen. Damals war ich noch an meiner Master Arbeit und Nadine hat gerade ihre Zusage für eine Stelle in Eglofs [...]]]></description>
			<content:encoded><![CDATA[<p>In dieser neuen Rubrik &#8220;Hausbau&#8221; möchten wir Verwandte und Bekannte über den Verlauf unseres Bauvorhabens informieren, aber natürlich sind auch andere Besucher herzlich Willkommen.</p>
<p>Letztes Jahr im August kamen erste Überlegungen auf, ein Haus zu bauen. Damals war ich noch an meiner Master Arbeit und Nadine hat gerade ihre Zusage für eine Stelle in Eglofs bekommen. Da das Ende bei mir auch absehbar war und unsere Wohnung einfach zu klein, zu feucht und zu dunkel ist, war die Frage: &#8220;bauen, kaufen oder weiter mieten?&#8221;. Naja, bauen oder kaufen wäre natürlich schön, aber woher nehmen wenn nicht stehlen. Und so wuchsen die verschiedensten Ideen.</p>
<p>Meine Eltern besitzen ein Haus in Amtzell. Seit meine Schwester und ich ausgezogen sind, ist das Haus natürlich zu groß und fürs Alter wegen zu vieler Treppen eher unpraktisch. Außerdem sollten bald diverse größere Reparaturen durchgeführt werden wie z.B. Bad und Dach erneuern. Daher war die erste Idee, hier einen Anbau zu versuchen, damit meine Eltern auf eine Ebene kommen und wir den ersten Stock bekommen. Nach eingehenden Gesprächen mit unserem Architekten Josef Schnell kamen wir aber zu dem Schluss, dass das zu teuer wird. Außerdem ist das Grundstück dafür nicht groß genug.</p>
<p>Mein Patenonkel meinte dann kurzerhand, warum meine Eltern ihre Hütte nicht verkaufen und wir gemeinsam neu bauen. Zuerst gefiel das vor allem meinem Vater nicht, denn dort wo sie jetzt wohnen, haben sie eine wunderbare Bergsicht bis in die Schweiz. Doch je länger wir die Vor- und Nachteile besprachen, desto mehr überzeugten wir auch ihn.</p>
<p>Okay, nun musste zunächst ein Grundstück her. Ein wirklich schönes, großes und dafür auch noch günstiges Grundstück hatte unser Architekt anzubieten, leider kamen wir etwas spät weil bereits jemand Interesse daran angemeldet hatte. Hauptproblem an der Geschichte war, dass meine Eltern natürlich gerne in dem Ort bleiben wollten, in dem Sie seit ihrer Kindheit lebten. Nach langer Suche und diversen Besichtigungen meldete sich plötzlich unser Architekt, das Grundstück wäre wieder zu haben, da die Interessenten abgesprungen wären. Da der Bebauungsplan für dieses Grundstück jedoch sehr viele Einzelheiten vorgibt, mussten wir zunächst klären, ob wir dort überhaupt unser Traumhaus errichten können. Eine moderne Architektur sollte es sein, jedoch war uns auch klar, das unser Budget keine Villa zulässt. Da ich selber schon als Kind gerne Grundrisse gezeichnet habe, fing ich an mir was zu überlegen. Ich weiß, man soll Architekten nicht dazwischen funken, aber das konnte ich mir nicht nehmen lassen. </p>
<p>Nach über 30 Plänen sind wir über Monate hinweg langsam bei einem Plan angekommen, der alle Bedürfnisse befriedigt, groß genug aber nicht zu groß und auch noch fast Bebauungsplankonform ist. Bis dahin war jedoch ein langer Weg. Meine Eltern hatten zunächst hohe Ansprüche an die Größe der neuen Wohnung. Zwar verständlich wenn man ein Haus bisher sein eigen nennt. Wenn dieses jedoch 95 qm laut DIN Norm hat und die Wohnung dann auch wieder knapp 90 qm haben soll, das funktioniert nicht. Auch wir hätten es gern zwischenzeitlich etwas größer und moderner gehabt, aber bei uns waren vor allem das Budget und der Bebauungsplan zwei große Feinde. Wobei letzterer der schlimmere war.</p>
<p>Parallel wurde natürlich gleich die Finanzierung abgecheckt, ob wir uns das ganze überhaupt leisten können. Und scheinbar können wir. Natürlich alles grundsolide über eine Bank finanziert. Mittlerweile ist das ganze soweit, das wir am 08.06.2011 die Finanzierung unterschreiben und das Grundstück beim Notar kaufen werden. Nächste Woche wird das Baugesuch eingereicht und gestern haben wir begonnen, die Küche auszusuchen. Aber das ist auch eine längere Geschichte, die gibts beim nächsten mal. Was vor fast einem Jahr als Träumerei angefangen hat scheint nun Realität zu werden&#8230; denn so wie es aussieht, bauen wir tatsächlich ;-)</p>
<p>Abschließend hier noch Bilder des aktuellen Entwurfs, so wie er ins Baugesuch kommt:</p>

<div class="ngg-galleryoverview" id="ngg-gallery-3-248">

	<!-- Slideshow link -->
	<div class="slideshowlink">
		<a class="slideshowlink" href="http://www.nw-software.com/2011/05/so-wie-es-aussieht-bauen-wir-tatsachlich/?show=slide">
			[Zeige als Diashow]		</a>
	</div>

	
	<!-- Thumbnails -->
		
	<div id="ngg-image-27" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.nw-software.com/wp-content/gallery/baugesuch/img001.jpg" title=" " class="shutterset_set_3" >
								<img title="img001" alt="img001" src="http://www.nw-software.com/wp-content/gallery/baugesuch/thumbs/thumbs_img001.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-28" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.nw-software.com/wp-content/gallery/baugesuch/img002.jpg" title=" " class="shutterset_set_3" >
								<img title="img002" alt="img002" src="http://www.nw-software.com/wp-content/gallery/baugesuch/thumbs/thumbs_img002.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-29" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.nw-software.com/wp-content/gallery/baugesuch/img003.jpg" title=" " class="shutterset_set_3" >
								<img title="img003" alt="img003" src="http://www.nw-software.com/wp-content/gallery/baugesuch/thumbs/thumbs_img003.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-30" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.nw-software.com/wp-content/gallery/baugesuch/img004.jpg" title=" " class="shutterset_set_3" >
								<img title="img004" alt="img004" src="http://www.nw-software.com/wp-content/gallery/baugesuch/thumbs/thumbs_img004.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-31" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.nw-software.com/wp-content/gallery/baugesuch/img005.jpg" title=" " class="shutterset_set_3" >
								<img title="img005" alt="img005" src="http://www.nw-software.com/wp-content/gallery/baugesuch/thumbs/thumbs_img005.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-32" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.nw-software.com/wp-content/gallery/baugesuch/img006.jpg" title=" " class="shutterset_set_3" >
								<img title="img006" alt="img006" src="http://www.nw-software.com/wp-content/gallery/baugesuch/thumbs/thumbs_img006.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-33" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.nw-software.com/wp-content/gallery/baugesuch/img007.jpg" title=" " class="shutterset_set_3" >
								<img title="img007" alt="img007" src="http://www.nw-software.com/wp-content/gallery/baugesuch/thumbs/thumbs_img007.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-34" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.nw-software.com/wp-content/gallery/baugesuch/img008.jpg" title=" " class="shutterset_set_3" >
								<img title="img008" alt="img008" src="http://www.nw-software.com/wp-content/gallery/baugesuch/thumbs/thumbs_img008.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-35" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.nw-software.com/wp-content/gallery/baugesuch/img009.jpg" title=" " class="shutterset_set_3" >
								<img title="img009" alt="img009" src="http://www.nw-software.com/wp-content/gallery/baugesuch/thumbs/thumbs_img009.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-36" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.nw-software.com/wp-content/gallery/baugesuch/img010.jpg" title=" " class="shutterset_set_3" >
								<img title="img010" alt="img010" src="http://www.nw-software.com/wp-content/gallery/baugesuch/thumbs/thumbs_img010.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-37" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.nw-software.com/wp-content/gallery/baugesuch/img011.jpg" title=" " class="shutterset_set_3" >
								<img title="DG" alt="DG" src="http://www.nw-software.com/wp-content/gallery/baugesuch/thumbs/thumbs_img011.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-38" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.nw-software.com/wp-content/gallery/baugesuch/img012.jpg" title=" " class="shutterset_set_3" >
								<img title="EG" alt="EG" src="http://www.nw-software.com/wp-content/gallery/baugesuch/thumbs/thumbs_img012.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-39" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.nw-software.com/wp-content/gallery/baugesuch/img013.jpg" title=" " class="shutterset_set_3" >
								<img title="Lage" alt="Lage" src="http://www.nw-software.com/wp-content/gallery/baugesuch/thumbs/thumbs_img013.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 		
	<div id="ngg-image-40" class="ngg-gallery-thumbnail-box"  >
		<div class="ngg-gallery-thumbnail" >
			<a href="http://www.nw-software.com/wp-content/gallery/baugesuch/img014.jpg" title=" " class="shutterset_set_3" >
								<img title="Schnitt" alt="Schnitt" src="http://www.nw-software.com/wp-content/gallery/baugesuch/thumbs/thumbs_img014.jpg" width="100" height="75" />
							</a>
		</div>
	</div>
	
		
 	 	
	<!-- Pagination -->
 	<div class='ngg-clear'></div>
 	
</div>


<img src="http://www.nw-software.com/?ak_action=api_record_view&id=248&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.nw-software.com/2011/05/so-wie-es-aussieht-bauen-wir-tatsachlich/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dreambox 8000 Konfiguration</title>
		<link>http://www.nw-software.com/2011/05/dreambox-8000-flashen/</link>
		<comments>http://www.nw-software.com/2011/05/dreambox-8000-flashen/#comments</comments>
		<pubDate>Sat, 07 May 2011 15:36:10 +0000</pubDate>
		<dc:creator>Niko Will</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.nw-software.com/?p=244</guid>
		<description><![CDATA[Dieser Beitrag ist eher als Gedächtnisstütze für mich gedacht, denn jedes mal wenn ich meine Dreambox flashen möchte muss ich ewig im Internet suchen, bis ich die passende Anleitung finde, daher hier die einzelnen Schritte kurz zusammengefasst: 1. Dreambox in DeepStandby versetzen 2. auf der Front die Pfeil runter Taste gedrückt halten und anschließend die [...]]]></description>
			<content:encoded><![CDATA[<p>Dieser Beitrag ist eher als Gedächtnisstütze für mich gedacht, denn jedes mal wenn ich meine Dreambox flashen möchte muss ich ewig im Internet suchen, bis ich die passende Anleitung finde, daher hier die einzelnen Schritte kurz zusammengefasst:</p>
<p>1. Dreambox in DeepStandby versetzen<br />
2. auf der Front die Pfeil runter Taste gedrückt halten und anschließend die Power Taste gedrückt halten<br />
3. warten bis auf dem Dream Display die IP Adresse erscheint und darunter STOP steht<br />
4. im Browser die IP Adresse eingeben<br />
5. auf &#8220;Flashen&#8221; oder &#8220;Firmware upgrade&#8221; gehen und das neue Image einspielen</p>
<p>Nach der Installation ist das root Passwort zunächst nicht gesetzt und der SSH Zugang deaktiviert (zumindest bei newnigma²). Um dies zu ändern meldet man sich per Telnet auf der Box als root ohne Passwort an und ruft &#8220;passwd&#8221; bzw. besser &#8220;passwd root&#8221; auf um ein neues root Passwort zu vergeben. Anschließend ist der SSH Zugang automatisch aktiviert.</p>
<p>Beim Full HD Fernseher sollte bei eingelegter &#8220;Smartcard&#8221; zunächst noch Scam v3.60 installiert werden, damit sich die rießen Glotze auch lohnt ;-) Dies gibts natürlich im Plugin Menü im BluePanel.</p>
<p>Für den externen Zugriff auf die Box, z.B. zum Programmieren von Timern, kann ein DynDNS Eintrag im Router nützlich sein. Wer keinen DynDNS fähigen Router hat und nicht ständig den Rechner laufen lassen will, der kann das auch mit der Dreambox erledigen. Das DynDNS Plugin InaDyn zickt direkt nach der Installation erstmal rum, weil InaDyn nicht automatisch gestartet wird. Also die Box kurz neustarten oder per SSH einloggen und &#8220;inadyn&#8221; aufrufen. Ein Blick in die Prozessliste mittels &#8220;ps&#8221; sollte dann einen Eintrag &#8220;InaDyn&#8221; zum Vorschein bringen. Unter /etc/init.d/inadyn.sh sollte eigentlich das Startup Script liegen, wenn ja sollte das Plugin nach einem Neustart automatisch mit gestartet werden. Anschließend kann man seine DynDNS Datein im BluePanel eintragen und das Plugin sollte funktionieren.</p>
<img src="http://www.nw-software.com/?ak_action=api_record_view&id=244&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.nw-software.com/2011/05/dreambox-8000-flashen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Forms: Entity Framework Datenbindung, Enums und DataGridViewComboBoxColumn</title>
		<link>http://www.nw-software.com/2011/03/windows-forms-entity-framework-datenbindung-enums-und-datagridviewcomboboxcolumn/</link>
		<comments>http://www.nw-software.com/2011/03/windows-forms-entity-framework-datenbindung-enums-und-datagridviewcomboboxcolumn/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 08:07:53 +0000</pubDate>
		<dc:creator>Niko Will</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.nw-software.com/?p=237</guid>
		<description><![CDATA[Hier eine kleine Erweiterung meines EnumHelpers aus meinem Beitrag &#8220;Windows Forms: Entity Framework Datenbindung, Enums und ComboBoxen&#8220;, da dieser bisher nur mit einzelnen ComboBoxen aber nicht mit ComboBox Spalten in einem DataGridView funktioniert hat: public static class EnumHelper { ... public static void BindToComboBoxColumn(DataGridViewComboBoxColumn comboBoxColumn, string propertyName) { if (typeof(E).IsEnum) { comboBoxColumn.ValueType = typeof(Int32); comboBoxColumn.ValueMember [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Hier eine kleine Erweiterung meines EnumHelpers aus meinem Beitrag &#8220;<a href="http://www.nw-software.com/2011/02/windows-forms-entity-framework-datenbindung-enums-und-comboboxen/">Windows Forms: Entity Framework Datenbindung, Enums und ComboBoxen</a>&#8220;, da dieser bisher nur mit einzelnen ComboBoxen aber nicht mit ComboBox Spalten in einem DataGridView funktioniert hat:</p>
<pre class="brush:csharp;">public static class EnumHelper
{
...
        public static void BindToComboBoxColumn(DataGridViewComboBoxColumn comboBoxColumn, string propertyName)
        {
            if (typeof(E).IsEnum)
            {
                comboBoxColumn.ValueType = typeof(Int32);
                comboBoxColumn.ValueMember = "Value";
                comboBoxColumn.DisplayMember = "Display";
                comboBoxColumn.DataSource = ((E[])Enum.GetValues(typeof(E)))
                    .Select(value =&gt; new { Display = value.ToString(), Value = (int)(object)value })
                    .ToList();
            }
        }
....
}</pre>
<p>Die Inspiration stammt aus dem Beitrag von Bradley Smith in einer Diskussion um &#8220;<a href="http://stackoverflow.com/questions/4120838/how-to-show-enum-type-members-in-a-datagridviewcombobox">How to show Enum type members in a DataGridViewComboBox?</a>&#8220;. Ich geben zu, das casten von enum nach object nach int ist nicht gerade die feine Art, aber es erfüllt seinen Zweck ;-)</p>
</div>
<img src="http://www.nw-software.com/?ak_action=api_record_view&id=237&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.nw-software.com/2011/03/windows-forms-entity-framework-datenbindung-enums-und-datagridviewcomboboxcolumn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Forms: Entity Framework Datenbindung, Enums und ComboBoxen</title>
		<link>http://www.nw-software.com/2011/02/windows-forms-entity-framework-datenbindung-enums-und-comboboxen/</link>
		<comments>http://www.nw-software.com/2011/02/windows-forms-entity-framework-datenbindung-enums-und-comboboxen/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 09:44:59 +0000</pubDate>
		<dc:creator>Niko Will</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://www.nw-software.com/?p=232</guid>
		<description><![CDATA[Wer den Support von Enums im Entity Framework auch vermisst, oder aber einfach nur in der Datenbank mit Integerwerten arbeiten möchte oder vielleicht sogar muss, weil das Datenbankdesign nicht geändert werden kann, der hat zwei Möglichkeiten für eine funktionierende Datenbindung: Entweder werden die Entitäten in den partiellen Klassen um die Enum Eigenschaften erweitert. Dieser Ansatz [...]]]></description>
			<content:encoded><![CDATA[<p>Wer den Support von Enums im Entity Framework auch vermisst, oder aber einfach nur in der Datenbank mit Integerwerten arbeiten möchte oder vielleicht sogar muss, weil das Datenbankdesign nicht geändert werden kann, der hat zwei Möglichkeiten für eine funktionierende Datenbindung:</p>
<p>Entweder werden die Entitäten in den partiellen Klassen um die Enum Eigenschaften erweitert. Dieser Ansatz bringt allerdings auch einige Fallstricke mit sich. Eine gute Umsetzung und genauere Erläuterungen findet ihr bei <a href="http://landman-code.blogspot.com/2010/08/adding-support-for-enum-properties-on.html">Davy Landman</a>.</p>
<p>Eine andere Möglichkeit ist die Verwendung des &#8220;Parse&#8221; und des &#8220;Format&#8221; Events der Datenbindung. Da ich einige ComboBoxen habe und die Events nicht jedesmal komplett neu registrieren möchte, hab ich mir ne kleine Helperklasse geschrieben:</p>
<pre class="brush: csharp">public static class EnumHelper
{
    public static void BindToComboBox(ComboBox comboBox, string propertyName)
    {
        if (typeof(E).IsEnum)
        {
            comboBox.DataBindings[propertyName].Format += (sender, e) =&gt; { e.Value = (E)e.Value; };
            comboBox.DataBindings[propertyName].Parse += (sender, e) =&gt; { e.Value = (int)e.Value; };

            comboBox.DataSource = Enum.GetValues(typeof(E));
        }
    }
}</pre>
<img src="http://www.nw-software.com/?ak_action=api_record_view&id=232&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.nw-software.com/2011/02/windows-forms-entity-framework-datenbindung-enums-und-comboboxen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Master-Thesis: On-Line Handschriftenerkennung (OLCR) der Deutschen Einheitskurzschrift</title>
		<link>http://www.nw-software.com/2011/02/master-thesis-on-line-handschriftenerkennung-olcr-der-deutschen-einheitskurzschrift/</link>
		<comments>http://www.nw-software.com/2011/02/master-thesis-on-line-handschriftenerkennung-olcr-der-deutschen-einheitskurzschrift/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 14:17:03 +0000</pubDate>
		<dc:creator>Niko Will</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.nw-software.com/?p=225</guid>
		<description><![CDATA[Vielleicht ist es für jemanden nützlich der sich ebenfalls mit Handschriftenerkennung oder sogar der Deutschen Einheitskurzschrift beschäftigt, hier die Ausarbeitung meiner Master-Thesis mit dem Thema: On-Line Handschriftenerkennung der Deutschen Einheitskurzschrift. Bei der Präsentation ergab sich ein Fehler bei der Evaluierung der neuronalen Netze als Lernverfahren für die Klassifizierung der Mitlautzeichen. Ich habe für jeden Durchlauf der [...]]]></description>
			<content:encoded><![CDATA[<p>Vielleicht ist es für jemanden nützlich der sich ebenfalls mit Handschriftenerkennung oder sogar der Deutschen Einheitskurzschrift beschäftigt, hier die Ausarbeitung meiner Master-Thesis mit dem Thema: <a href="http://www.nw-software.com/wp-content/uploads/2011/02/On-Line-Handschriftenerkennung-der-Deutschen-Einheitskurzschrift.pdf">On-Line Handschriftenerkennung der Deutschen Einheitskurzschrift</a>.</p>
<p>Bei der Präsentation ergab sich ein Fehler bei der Evaluierung der neuronalen Netze als Lernverfahren für die Klassifizierung der Mitlautzeichen. Ich habe für jeden Durchlauf der Kreuzvalidierung zufällig 10% der Datenbank als Testmuster und 90% als Trainingsmuster verwendet. Dies ist aber nicht korrekt, da die Ergebnisse dann nicht vergleichbar sind. Daher hätte die zufällige Auswahl der Trainings- und Testdaten nur einmalig erfolgen dürfen und alle Durchläufe der Kreuzvalidierung hätten mit denselben Daten arbeiten müssen. Dennoch sind die Ergebnisse der Evaluierung der neuronalen Netze nicht falsch sondern nur nicht vergleichbar.</p>
<p>Über Anmerkungen zur Arbeit oder falls jemand diese verwenden möchte als Referenz oder sogar für eine aufbauende Arbeit bitte ich euch einen kurzen Kommentar zu hinterlassen.</p>
<img src="http://www.nw-software.com/?ak_action=api_record_view&id=225&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.nw-software.com/2011/02/master-thesis-on-line-handschriftenerkennung-olcr-der-deutschen-einheitskurzschrift/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Forms: Nullable ComboBox</title>
		<link>http://www.nw-software.com/2011/02/windows-forms-nullable-combobox/</link>
		<comments>http://www.nw-software.com/2011/02/windows-forms-nullable-combobox/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 14:10:40 +0000</pubDate>
		<dc:creator>Niko Will</dc:creator>
				<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://www.nw-software.com/?p=222</guid>
		<description><![CDATA[Auf der Suche nach einer Möglichkeit, einer ComboBox zusätzlich zu den eigentlichen Werten auch einen Eintrag für einen Nullwert zu spendieren habe ich schlussendlich folgende Umsetzung gewählt, die bisher ganz gut funktioniert. Wenn jemand Schwachstellen findet darf er sich gerne in den Kommentaren auslassen: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using [...]]]></description>
			<content:encoded><![CDATA[<p>Auf der Suche nach einer Möglichkeit, einer ComboBox zusätzlich zu den eigentlichen Werten auch einen Eintrag für einen Nullwert zu spendieren habe ich schlussendlich folgende Umsetzung gewählt, die bisher ganz gut funktioniert. Wenn jemand Schwachstellen findet darf er sich gerne in den Kommentaren auslassen:</p>
<pre class="brush: csharp">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Reflection;

namespace com.boobe.salesman.ui.Controls
{
    public class NullableComboBox : ComboBox
    {
        public string NullLabel { get; set; }
        public object NullValue { get; set; }

        private string _displayMember;
        public new string DisplayMember
        {
            get { return _displayMember; }
            set { _displayMember = value; }
        }

        public NullableComboBox()
        {
            NullLabel = "";
            NullValue = null;

            base.ValueMember = "Entity";
            base.DisplayMember = "Title";
        }

        private object _dataSource;
        private IList _items;
        new public object DataSource
        {
            get { return _dataSource; }
            set
            {
                if (value.GetType().IsAssignableFrom(typeof(IEnumerable)))
                    throw new ArgumentException("Nur von IEnumerable abgeleitete Typen sind erlaubt.");

                if (_dataSource != null &amp;&amp; _dataSource == value)
                    return;

                _dataSource = value;

                IEnumerable&lt;object&gt; list = (IEnumerable&lt;object&gt;)value;

                _items = new List();
                foreach (object current in list)
                {
                    PropertyInfo propertyInfo = current.GetType().GetProperty(DisplayMember);
                    string title = propertyInfo != null ? propertyInfo.GetValue(current, null).ToString() : current.ToString();
                    _items.Add(new NullableComboBoxItem { Title = title, Entity = current });
                }
                _items.Insert(0, new NullableComboBoxItem { Title = NullLabel, Entity = NullValue });

                base.DataSource = _items;
            }
        }

        new public object SelectedItem
        {
            get
            {
                NullableComboBoxItem selectedItem = (NullableComboBoxItem)base.SelectedItem;
                return selectedItem == null ? null : selectedItem.Entity;
            }
            set
            {
                foreach (NullableComboBoxItem cur in _items)
                {
                    if (cur.Entity == value)
                        base.SelectedItem = cur;
                }
            }
        }

        private class NullableComboBoxItem
        {
            public string Title { get; set; }
            public object Entity { get; set; }
        }
    }
}</pre>
<p>Verwendet wird die ComboBox wie folgt:</p>
<pre class="brush: csharp">colorComboBox.NullLabel = "";
colorComboBox.NullValue = null;
colorComboBox.DisplayMember = "ColorName";
colorComboBox.DataSource = context.ProductColors.Where(x =&gt; x.Discontinued == false);</pre>
<img src="http://www.nw-software.com/?ak_action=api_record_view&id=222&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.nw-software.com/2011/02/windows-forms-nullable-combobox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pfingsturlaub im Kosertal</title>
		<link>http://www.nw-software.com/2010/06/pfingsturlaub-im-kosertal/</link>
		<comments>http://www.nw-software.com/2010/06/pfingsturlaub-im-kosertal/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 05:15:41 +0000</pubDate>
		<dc:creator>Niko Will</dc:creator>
				<category><![CDATA[Urlaub]]></category>

		<guid isPermaLink="false">http://www.nw-software.com/2010/06/pfingsturlaub-im-kosertal/</guid>
		<description><![CDATA[Dieses Pfingsten waren wir eine Woche in Bayern bei Familie Schramm auf dem Ferienhof Kosertal. Unser Ferienhaus war die Doppelhaushälfte &#8220;Nadine&#8221; direkt neben dem Grillplatz der Anlage. Der erste Eindruck war, dass die sechs Häuser fast zu dicht aufeinander stehen und dann noch der Grillplatz daneben. Wir hatten ein wenig Angst um unsere Privatsphäre. Die [...]]]></description>
			<content:encoded><![CDATA[<p>Dieses Pfingsten waren wir eine Woche in Bayern bei Familie Schramm auf dem Ferienhof Kosertal. Unser Ferienhaus war die Doppelhaushälfte &#8220;Nadine&#8221; direkt neben dem Grillplatz der Anlage. Der erste Eindruck war, dass die sechs Häuser fast zu dicht aufeinander stehen und dann noch der Grillplatz daneben. Wir hatten ein wenig Angst um unsere Privatsphäre. Die Häuser stehen alle in einer Reihe und sind nach Süden ausgerichtet. Doch die Dichte Bebauung zeigte bereits am ersten Abend ihren Charm. Als wir vom Abendessen auf die Terrasse wollten, war der Hofherr Ferdinand bereits kräftig am grillen und bot uns auch etwas an. Da wir aber gerade gegessen hatten lehnte ich dankend ab. Im Haus neben uns saßen dann fast alle Feriengäste mit Teilen der Familie Schramm und den Helfern von Ferdinand an einem Tisch und aßen. Die Atmosphäre war toll. Zuerst dachten wir, dass das bestimmt Probleme mit Elvis geben würde, doch der lag brav im Gras und kaute auf seinem Rinderohr rum. Sogar vorbeilaufende Feriengäste auf dem Weg zum Grill störten ihn nicht. Das hätten wir nicht gedacht.</p>
<p>Im Anschluss an das Essen wurde nochmals Holz nachgelegt und wir setzten uns alle um den Grill. Ferdinand bot mit sofort eine Flasche Bier an. Ich war total begeistert von der Gastfreundschaft. Denn das sollte nicht die letzte Flasche Bier bleiben. Kurze Zeit später stieß die Hausherrin Silvia auch noch dazu und hatte eine Flasche lecker selber gemachten Eierlikör dabei, denn sie bereitwillig verteilte. Problem war nur, dass das Bier danach nicht mehr schmeckte ;-) Elvis war während des ganzen Abends mal wieder die Hauptattraktion, obwohl er die meiste Zeit brav neben uns lag.</p>
<p>Bereits am nächsten Tag wurde das Wetter deutlich schlechter. Es regnete zwar nur selten, dafür hatte es nur knapp über zehn Grad. Toll war jedoch, das ein paar Häuser weiter eine junge Labrador Hündin namens &#8220;Taya&#8221; einzog, mit der sich Elvis super verstand. Da war zumindest ihm das Wetter total egal. Dabei war die riesige Wiese vor den Häusern und die Entfernung zur Hauptstrasse echt ein Vorteil. Ansonsten haben wir viel entspannt und gelesen. Nadine war von ihrem Krimi ganz angetan und ich hatte mir haufenweise Publikationen für meine Masterarbeit aufs iPad geladen. Was übrigens ein geiles Gerät ist, das ich noch schnell am Tag vor unserer Abreise, was zufällig erster Verkaufstag des iPads war, erstanden habe. Abends waren wir noch in der Pizzeria &#8220;La Strada&#8221; in Stammbach beim Essen, die uns von Schramms empfohlen wurde. Das Essen war sehr lecker und die Preise im Vergleich zu BW wirklich günstig. Auch das Ambiente der Pizzeria war super und die Bedienung total freundlich. Also falls ihr mal in Stammbach seit, es lohnt sich.</p>
<p>Da das Wetter sich nicht zu bessern schien, sind wir am Montag nach Pottenstein gefahren. Dort gibt es eine &#8220;Teufelshöhle&#8221; die wir alleine aufgrund des Namens anschauen mussten. Und es war auch echt ein Highlight. Die Höhle war total eng und verwinkelt. Zum ersten mal hatte Nadine große Vorteile mit ihrer geringen Größe, denn sie musste sich, im Gegensatz zu mir, fast nie bücken. Anschließend waren wir noch auf der angrenzenden Sommerrodelbahn. Sowohl für Nadine als auch für mich war es das erste Mal. Daher war die erste Fahrt auch noch recht zaghaft. Doch bereits bei der zweiten ließen wir richtig die Sau raus und stellten bestimmt einen neuen Rundenrekord auf ;-)</p>
<p>Der Dienstag war dann eher ein Kuscheltag, ich mit Nadine und Elvis mit Taya. Denn das Wetter drohte gar nicht mehr besser zu werden. Abends wollten wir dann noch einen kurzen Spaziergang in den Wald machen. Nachdem ich es hasse, den gleichen Weg wieder zurückzulaufen, haben wir uns in Wald dann erstmal kräftig verirrt. Dank meines iPhones hatten wir aber irgendwann auf einer Lichtung dann mal ein GPS Signal und mussten feststellen, dass wir doch ein ganzes Stück von Ferienhof entfernt waren. Zu allem Überfluss fing es auch noch an zu regnen. Aber Hey, wir wollten doch einen Wanderurlaub machen. Leider hatten wir nur die falschen Schuhe an und kamen dann nach knapp zwei Stunden total durchnässt wieder zuhause an.</p>
<p>Das rächte sich dann gleich an Mittwoch. Wir wollten in ein Einkaufszentrum nach Bayreuth fahren, doch unsere einzigen Ausgehschuhe waren nass. Also saß ich ne halbe Stunde mit nem Fön da und versuchte zu retten was zu retten war. Aber letztendlich konnten wir doch gehen. Zum Glück von Nadine. Denn die hat im Zero Store voll zugeschlagen. Für einen Abstecher in Media Markt hat es leider nicht mehr gereicht. Dabei hätte ich mit doch so gerne das Camera Connection Kit für das iPad gekauft um die Bilder von meiner EOD 350D direkt überspielen und anschauen zu können. Dafür kam ich abends in einem Hofbräuhaus beim Essen auf meine Kosten ;-)</p>
<p>Donnerstag war Feiertag und das Wetter lockerte langsam etwas auf. Wir lagen den ganzen Tag faul rum oder spielten mit Elvis. Außerdem haben wir die Tischtennisplatte entdeckt. Bei Taya zog ein neuer Hund ein, der leider zu devot für unseren Rüppel war, daher schien das Spielen mit Taya vorerst vorbei zu sein. Doch wenn wir weiter weg von den Häusern und dem neuen Hund waren, klappte es wieder ganz gut.</p>
<p>Freitag, und eigentlich unser letzter Tag, war das Wetter endlich so wie es sein sollte: viel Sonne und warm. Wir zogen erstmal unsere Badesachen an und gingen an den Privatweiher des Hofs. Dieser ist richtig toll angelegt. Mit einem kleinen Häuschen über dem Wasser, einem Steg mit Floß und einer Insel mit Badeliegen in der Mitte. Elvis und ich haben uns dann gleich mal das Floß geschnappt und sind auf dem Wasser rumgeheizt. Da Elvis keine Wasserratte ist, musste ich mir da schon mal keine Sorgen machen das er abhaut. Beim Zurückgehen entdeckte Nadine das Trampolin, denn Rest könnt ihr euch denken ;-) oder sagen wir so, das Kind in ihr kam zum Vorschein. Abends wurde dann wieder gegrillt und wir verlängerten unseren Aufenthalt für einen Tag da das Wetter auch Morgen so bleiben sollte.</p>
<p>Am nun wirklich letzten Tag nutzten wir das schöne Wetter und sind gleich wieder zum Weiher. Diesmal nahmen wir unsere Sachen mit aufs Floß und sind gleich auf die Insel. Das war echt super, denn Elvis konnte frei rumlaufen und wir mussten nicht aufpassen. Wir versuchten immer wieder in zum Schwimmen zu animieren was aber vergeblich sein sollte. Immerhin war ich im Wasser. Nur als dann Kinder neben dem Weiher Böller zündeten wurde er mutig bzw. hatte er so Angst, dass die Flucht durchs Wasser als das einzig Richtige für ihn erschien. Ich musste hinterher um ihn im Wasser wieder einzusammeln. Von da an mussten wir gehen. Der kleine Angsthase war nicht mehr zu beruhigen. Wieder am Haus erzählte uns Ferdinand von einer Party am Abend in dem kleinen Haus am Weiher und wir waren natürlich dabei. Hin ging&#8217;s mit Ferdinands &#8220;Porsche&#8221;, einem antiken roten Traktor. Für Elvis natürlich spannend ohne Ende. In der Hütte dann erstmal die Familienpizza von Ferdinand weggegessen und Eierlikör getrunken. Elvis war mal wieder der bravste Hund der Welt. Nur einen älteren Feriengast konnte er nicht leiden und knurrte ihn immer wieder an. Als gegen Mitternacht Nadine noch die einzige Frau unter uns war packten wir zusammen und fuhren mit dem Porsche in eine Hütte direkt neben dem Hof. Dort ging es lustig weiter. Ferdinand teilte wieder Bier aus und erzählte uns, was man auf einem Ferienhof alles erleben kann. Von untreuen Russen über Mafiatreffen bis hin zu Angeboten für einen Sexfilm war alles dabei. Kurz bevor wir wieder ins Haus zurück wollten, hat es dann auch Elvis geschafft sich mal hinzulegen.</p>
<p>Das hat man dann am Morgen unserer Abfahrt auch gemerkt. Der arme Kerl hatte soviel Action die vergangene Woche, das er nur noch schlafen wollte. Erst als er merkte, dass wir zusammenpacken war er plötzlich wieder hell wach und ganz aufgeregt. Wir könnten ihn ja vergessen.</p>
<p>Insgesamt war es ein toller Urlaub in einem gepflegten Ferienhaus in genialer Umgebung. Die Besitzer sind super nett und gastfreundlich. Für das Wetter konnten sie ja nichts.   </p>
<p><a href="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_404043EE-2021-4FD0-925B-0B58A3304AD4.jpeg"><img src="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_404043EE-2021-4FD0-925B-0B58A3304AD4.jpeg" alt="" class="alignnone size-full" /></a></p>
<p><a href="http://www.nw-software.com/wp-content/uploads/2010/06/p_2304_1536_45045747-08B6-4BAB-AEDF-0427EB820AC4.jpeg"><img src="http://www.nw-software.com/wp-content/uploads/2010/06/p_2304_1536_45045747-08B6-4BAB-AEDF-0427EB820AC4.jpeg" alt="" class="alignnone size-full" /></a></p>
<p><a href="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_FF475980-BD81-4C31-B5D5-A380D4B424F9.jpeg"><img src="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_FF475980-BD81-4C31-B5D5-A380D4B424F9.jpeg" alt="" class="alignnone size-full" /></a></p>
<p><a href="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_1A2FA1E9-0CA6-4C98-AB82-FF6550BE032A.jpeg"><img src="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_1A2FA1E9-0CA6-4C98-AB82-FF6550BE032A.jpeg" alt="" class="alignnone size-full" /></a></p>
<p><a href="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_3455932C-1913-41F3-A2E9-4C00B83A4EFC.jpeg"><img src="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_3455932C-1913-41F3-A2E9-4C00B83A4EFC.jpeg" alt="" class="alignnone size-full" /></a></p>
<p><a href="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_C54702DE-85C1-489D-9F43-2C788420BB16.jpeg"><img src="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_C54702DE-85C1-489D-9F43-2C788420BB16.jpeg" alt="" class="alignnone size-full" /></a></p>
<p><a href="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_FE136E42-F08E-4ADF-A395-6BB091EA0655.jpeg"><img src="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_FE136E42-F08E-4ADF-A395-6BB091EA0655.jpeg" alt="" class="alignnone size-full" /></a></p>
<p><a href="http://www.nw-software.com/wp-content/uploads/2010/06/p_2304_1536_0FBCBAE1-1187-43F9-BB9C-63636924783B.jpeg"><img src="http://www.nw-software.com/wp-content/uploads/2010/06/p_2304_1536_0FBCBAE1-1187-43F9-BB9C-63636924783B.jpeg" alt="" class="alignnone size-full" /></a></p>
<p><a href="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_1779D21D-C7E8-4084-9EFD-5323E06FF9B7.jpeg"><img src="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_1779D21D-C7E8-4084-9EFD-5323E06FF9B7.jpeg" alt="" class="alignnone size-full" /></a></p>
<p><a href="http://www.nw-software.com/wp-content/uploads/2010/06/l_1600_1200_6D3D971F-1351-4B4B-A139-6ECF1301A400.jpeg"><img src="http://www.nw-software.com/wp-content/uploads/2010/06/l_1600_1200_6D3D971F-1351-4B4B-A139-6ECF1301A400.jpeg" alt="" class="alignnone size-full" /></a></p>
<p><a href="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_14EEC538-D28E-40B1-AAD3-5F87CFB1306F.jpeg"><img src="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_14EEC538-D28E-40B1-AAD3-5F87CFB1306F.jpeg" alt="" class="alignnone size-full" /></a></p>
<p><a href="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_72E0466F-1B05-4D72-965D-11D0E365703C.jpeg"><img src="http://www.nw-software.com/wp-content/uploads/2010/06/l_2304_1536_72E0466F-1B05-4D72-965D-11D0E365703C.jpeg" alt="" class="alignnone size-full" /></a></p>
<img src="http://www.nw-software.com/?ak_action=api_record_view&id=221&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.nw-software.com/2010/06/pfingsturlaub-im-kosertal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wo guckst du? Bei Niko</title>
		<link>http://www.nw-software.com/2010/05/wo-guckst-du-bei-niko/</link>
		<comments>http://www.nw-software.com/2010/05/wo-guckst-du-bei-niko/#comments</comments>
		<pubDate>Sun, 23 May 2010 18:18:08 +0000</pubDate>
		<dc:creator>Niko Will</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://www.nw-software.com/?p=205</guid>
		<description><![CDATA[Irgendwie finde ich in Vodafons neuem Werbespot auch außer dem selben Namen einige parallelen:]]></description>
			<content:encoded><![CDATA[<p>Irgendwie finde ich in Vodafons neuem Werbespot auch außer dem selben Namen einige parallelen:</p>
<p><object width="600" height="363"><param name="movie" value="http://www.youtube.com/e/SuiIobbZjHM"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/SuiIobbZjHM" type="application/x-shockwave-flash" width="600" height="363" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<img src="http://www.nw-software.com/?ak_action=api_record_view&id=205&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.nw-software.com/2010/05/wo-guckst-du-bei-niko/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

