<?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>danielgilbert.de</title>
	<atom:link href="http://blog.danielgilbert.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.danielgilbert.de</link>
	<description>re:loaded</description>
	<lastBuildDate>Fri, 27 Apr 2012 06:30:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Unit-Tests &#8211; mal eben erklärt&#8230;</title>
		<link>http://blog.danielgilbert.de/2012/01/25/unit-tests-mal-eben-erklart/</link>
		<comments>http://blog.danielgilbert.de/2012/01/25/unit-tests-mal-eben-erklart/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 22:09:06 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://blog.danielgilbert.de/?p=219</guid>
		<description><![CDATA[&#8220;Unit Tests? Pff, brauch&#8217; ich nicht.&#8221; &#8211; &#8220;Was ist das?&#8221; &#8211; &#8220;Viiiiel zu aufwändig.&#8221; So oder so ähnlich sind die Reaktionen auf die beiden kleinen, unscheinbaren Wörter, die vor allem nach einem klingen: Eine Menge Arbeit. Dabei sind Unit-Tests eigentlich gar nicht so kompliziert und definitiv nützlich. Ich möchte euch eine kleine Einführung ins Thema <a href='http://blog.danielgilbert.de/2012/01/25/unit-tests-mal-eben-erklart/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>&#8220;Unit Tests? Pff, brauch&#8217; ich nicht.&#8221; &#8211; &#8220;Was ist das?&#8221; &#8211; &#8220;Viiiiel zu aufwändig.&#8221;</p>
<p>So oder so ähnlich sind die Reaktionen auf die beiden kleinen, unscheinbaren Wörter, die vor allem nach einem klingen: Eine Menge Arbeit.</p>
<p>Dabei sind Unit-Tests eigentlich gar nicht so kompliziert und definitiv nützlich. Ich möchte euch eine kleine Einführung ins Thema geben, und euch ermutigen, ihnen zumindest eine Chance zu geben.</p>
<h2>Am Anfang war die Klasse&#8230; oder?</h2>
<p>Unit Tests (Modultests im Deutschen) sind schon länger ein Begriff, werden aber dennoch immer noch zu selten eingesetzt, auch wenn hier einige Open Source &#8211; Projekte eine Vorreiterrolle einnehmen. Grundsätzlich geht es bei Unit Tests darum, die Funktionen einer Klasse zu testen, und zu prüfen, ob die Ausgabe mit den erwarteten Ergebnissen übereinstimmt.</p>
<p>Ein kleines Beispiel:</p>
<pre class="brush:csharp">using System;

public class TestKlasse
{
    public int Multipliziere(int a, int b)
    {
        return a * b;
    }
}</pre>
<p>Zugegeben, das Beispiel ist trivial. Aber zur Demonstration soll es erstmal genügen. Diese Klasse stellt eine Methode zur Verfügung, mit der ich zwei Werte multiplizieren kann.</p>
<p>Um nun die Ausgaben zu testen, erstelle ich einen Black-Box-Test, d.h., ich vergleiche die Ausgabe der Funktion mit meinen erwarteten Werten. Hierbei hilft mir eine Modultest-Software. Ich habe zwei Möglichkeiten:</p>
<ul>
<li>Ich nutze entweder den internen Unit test des Visual Studios, oder&#8230;</li>
<li>&#8230;ich verwende NUnit.</li>
</ul>
<p>Für dieses Beispiel entscheide ich mich für NUnit. Die Verwendung ist eigentlich recht simpel: Zuerst lädt man sich die NUnit-Installationsdatei herunter und installiert NUnit. Anschließend fügt man dem Projekt eine Klassenbibliothek hinzu. Am Besten erstellt man pro Klasse im Programm eine Klasse zum Testen. Hier in diesem Falle also eine Testklasse für unsere &#8211; äh &#8211; <em>TestKlasse</em>&#8230;</p>
<pre class="brush:csharp">using System;
using NUnit.Framework;

[TestFixture]
public class TestKlasseTest
{
    [Test]
    public void MultipliziereTest()
    {
        int a = 5;
        int b = 6;

        TestKlasse TK = new TestKlasse();

        //Grob überschlagen: 5 * 6 = 30
        Assert.AreEqual(30, TK.Multipliziere(a, b));
    }
}</pre>
<p>Ok, was ist hier passiert? Nun, zuerst wird dem neuen Projekt die Assembly <em>NUnit.Framework</em> hinzugefügt. Anschließend bekommt die Klasse das Attribut <em>TestFixture</em>, und jede einzelne Testmethode das Attribut <em>Test</em>. Eine Methode im Unit Test hat grundsätzlich den Rückgabewert <em>void</em> und keinen Parameter.</p>
<p>Anschließend wird die Assembly kompilliert. Jetzt kommt wieder NUnit ins Spiel. Bei der Installation wurde eine GUI installiert, über die ihr die Assembly laden könnt. Über &#8220;Run&#8221; könnt ihr nun den Test ausführen. Ist der Test erfolgreich, solltet ihr nur noch grün sehen&#8230;</p>
<div id="attachment_227" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.danielgilbert.de/wp-content/uploads/2012/01/nunit.png"><img class="size-medium wp-image-227" title="nunit" src="http://blog.danielgilbert.de/wp-content/uploads/2012/01/nunit-300x241.png" alt="Alles grün - alles gut. :)" width="300" height="241" /></a><p class="wp-caption-text">Alles grün - alles gut. <img src='http://blog.danielgilbert.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p></div>
<p>Sollte doch noch ein Fehler auftreten, so könnt ihr den Fehler im Quellcode korrigieren und anschließend neu kompillieren. Anschließend könnt ihr einfach erneut auf Run klicken.</p>
<h2>Warum Unit tests?</h2>
<p>&#8220;Ok&#8221;, mögt ihr jetzt sagen, &#8220;ich soll also extra Arbeit investieren, um ein paar Funktionen zu testen. Und wer zahlt mir das?&#8221; Berechtigte Frage. Direkt natürlich keiner, indirekt der Kunde. Folgende Überlegung:</p>
<p>Ich schreibe für den Kunden ein Modul, und benutze keine Unit tests. Das Modul weist Fehler auf, ich muss nachbessern. Der Kunde wünscht nach einiger Zeit eine Erweiterung, ich setzte sie um, und es schleicht sich wieder ein Fehler ein. Ich muss wieder nachbessern. Mein Problem: In der Zeit, wo ich Nachbesserungen vornehmen muss, kann ich keine anderen Aufträge bearbeiten. Schlimmer noch: Eventuell handelt es sich um aufwändigere Nachbesserungen und der Kunde erleidet Verdienstausfälle, die er mir womöglich noch in Rechnung stellen kann.</p>
<p>Habe ich stattdessen Unit tests benutzt, kann ich nach dem Ändern (und ggf. Anpassen des Tests) den Test laufen lassen und sehe sofort, wenn sich etwas nicht wie geplant verhält. Ich habe weniger Verdienstausfälle und der Kunde ist glücklich. So amortisiert sich die zusätzliche Zeit, die man für die Tests investieren muss, recht bald.</p>
<h2>Weitere Hinweise&#8230;</h2>
<p>An dieser Stelle sei auf die offizielle NUnit &#8211; Dokumentation verwiesen. Natürlich gibt es an dieser Stelle noch mehr Möglichkeiten: Exceptions, komplexere Klassen, Test-Suiten etc&#8230;</p>
<p>Auch sollte man sich einmal mit <a href="http://de.wikipedia.org/wiki/Testgetriebene_Entwicklung">Testgetriebener Entwicklung</a> beschäftigen, ein sehr interessantes Thema.</p>
<ul>
<li><a href="http://www.nunit.org/index.php?p=quickStart&amp;r=2.4">NUnit Quick Start</a></li>
<li><a href="http://www.nunit.org/index.php?p=documentation">NUnit Dokumentation</a></li>
<li><a href="http://www.nunit.org/index.php?p=download">NUnit Download</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.danielgilbert.de/2012/01/25/unit-tests-mal-eben-erklart/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Telekom] Telekom? Nie wieder!</title>
		<link>http://blog.danielgilbert.de/2011/11/04/telekom-telekom-nie-wieder/</link>
		<comments>http://blog.danielgilbert.de/2011/11/04/telekom-telekom-nie-wieder/#comments</comments>
		<pubDate>Fri, 04 Nov 2011 19:51:59 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[Telekom]]></category>
		<category><![CDATA[telekom]]></category>
		<category><![CDATA[vdsl25]]></category>

		<guid isPermaLink="false">http://blog.danielgilbert.de/?p=208</guid>
		<description><![CDATA[Mittlerweile warte ich seit einem Vierteljahr auf die Freischaltung meiner VDSL-Leitung. Vorgestern habe ich mal wieder bei der Hotline angerufen. Man versprach mir den Rückruf eines Technikers, besagter Rückruf ist jedoch nie erfolgt. Auch im Forum bekommt man momentan keine Antwort. Wie auch immer dieser Fall endet: Nach Ablauf der zwei Jahre sieht mich die <a href='http://blog.danielgilbert.de/2011/11/04/telekom-telekom-nie-wieder/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Mittlerweile warte ich seit einem Vierteljahr auf die Freischaltung meiner VDSL-Leitung. Vorgestern habe ich mal wieder bei der Hotline angerufen. Man versprach mir den Rückruf eines Technikers, besagter Rückruf ist jedoch nie erfolgt. Auch im Forum bekommt man momentan keine Antwort.</p>
<p>Wie auch immer dieser Fall endet: Nach Ablauf der zwei Jahre sieht mich die Telekom nicht wieder!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.danielgilbert.de/2011/11/04/telekom-telekom-nie-wieder/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zwei oder mehrere Dictionaries zusammenfügen</title>
		<link>http://blog.danielgilbert.de/2011/09/17/zwei-oder-mehrere-dictionaries-zusammenfugen/</link>
		<comments>http://blog.danielgilbert.de/2011/09/17/zwei-oder-mehrere-dictionaries-zusammenfugen/#comments</comments>
		<pubDate>Sat, 17 Sep 2011 13:30:08 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[CodeSnippets]]></category>

		<guid isPermaLink="false">http://blog.danielgilbert.de/?p=202</guid>
		<description><![CDATA[So kann man recht einfach 2 oder mehrere Dictionaries zusammenfügen. Behandelt allerdings keine Kollisionen! public static class DictionaryExtensions { // Works in C#3/VS2080: // Returns a new dictionary of this ... others merged leftward. // Keeps the type of 'this', which must be default-instantiable. // Example: // result = map.MergeLeft(other1, other2, ...) public static T <a href='http://blog.danielgilbert.de/2011/09/17/zwei-oder-mehrere-dictionaries-zusammenfugen/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>So kann man recht einfach 2 oder mehrere Dictionaries zusammenfügen. Behandelt allerdings keine Kollisionen!</p>
<pre class="brush:csharp">public static class DictionaryExtensions
{
    // Works in C#3/VS2080:
    // Returns a new dictionary of this ... others merged leftward.
    // Keeps the type of 'this', which must be default-instantiable.
    // Example:
    //   result = map.MergeLeft(other1, other2, ...)
    public static T MergeLeft&lt;T,K,V&gt;(this T me, params IDictionary&lt;K,V&gt;[] others)
        where T : IDictionary&lt;K,V&gt;, new()
    {
        T newMap = new T();
        foreach (IDictionary&lt;K,V&gt; src in
            (new List&lt;IDictionary&lt;K,V&gt;&gt; { me }).Concat(others)) {
            // ^-- echk. Not quite there type-system.
            foreach (KeyValuePair&lt;K,V&gt; p in src) {
                newMap[p.Key] = p.Value;
            }
        }
        return newMap;
    }

}</pre>
<p>Besten Dank an <a href="http://stackoverflow.com/questions/294138/merging-dictionaries-in-c/2679857#2679857">pst</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.danielgilbert.de/2011/09/17/zwei-oder-mehrere-dictionaries-zusammenfugen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Telekom] Irgendwie habe ich es doch geahnt&#8230;</title>
		<link>http://blog.danielgilbert.de/2011/09/05/telekom-irgendwie-habe-ich-es-doch-geahnt/</link>
		<comments>http://blog.danielgilbert.de/2011/09/05/telekom-irgendwie-habe-ich-es-doch-geahnt/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 16:55:44 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[Telekom]]></category>

		<guid isPermaLink="false">http://blog.danielgilbert.de/?p=200</guid>
		<description><![CDATA[Tja, wie es scheint, habe ich wieder Recht gehabt. Telekom&#8230; Mittlerweile sind fast 4 Wochen vergangen, ich habe immernoch keinen VDSL-Anschluss. Also heute mal die Hotline bemüht. Nach 15 Minuten Warteschleife bekam ich dann eine Mitarbeiterin an den Hörer. Ihre Antwort, auf meine Frage, wie der Status meiner Call &#38; Surf Comfort VDSL 25 &#8211; <a href='http://blog.danielgilbert.de/2011/09/05/telekom-irgendwie-habe-ich-es-doch-geahnt/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Tja, wie es scheint, habe ich wieder Recht gehabt. Telekom&#8230;</p>
<p>Mittlerweile sind fast 4 Wochen vergangen, ich habe immernoch keinen VDSL-Anschluss. Also heute mal die Hotline bemüht. Nach 15 Minuten Warteschleife bekam ich dann eine Mitarbeiterin an den Hörer. Ihre Antwort, auf meine Frage, wie der Status meiner Call &amp; Surf Comfort VDSL 25 &#8211; Schaltung ist:</p>
<p>&#8220;Momentan sind leider keine Ports frei.&#8221;</p>
<p>Es ist wohl in Bearbeitung, man rechnet mit Oktober. Einen verbindlichen Termin konnte sie mir natürlich nicht nennen. Ich denke, ich rufe in einer Woche nochmal an.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.danielgilbert.de/2011/09/05/telekom-irgendwie-habe-ich-es-doch-geahnt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Danke Facebook!</title>
		<link>http://blog.danielgilbert.de/2011/09/02/danke-facebook/</link>
		<comments>http://blog.danielgilbert.de/2011/09/02/danke-facebook/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 20:17:21 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://blog.danielgilbert.de/?p=197</guid>
		<description><![CDATA[Wtf? &#8220;Schick ihr eine Nachricht&#8221;?! Hallo Schatz, ich schicke dir dieses Jahr lieber eine Nachricht über Facebook. Alles Gute zu unserem Jahrestag. Machst du nachher Essen und bringst noch Tomaten mit? Waaaaaaaaaaaaaaaaaah&#8230;&#8230;&#8230;]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.danielgilbert.de/wp-content/uploads/2011/09/facebook-jahrestag.png"><img class="alignnone size-full wp-image-198" title="facebook-jahrestag" src="http://blog.danielgilbert.de/wp-content/uploads/2011/09/facebook-jahrestag.png" alt="" width="275" height="145" /></a></p>
<p>Wtf? &#8220;Schick ihr eine Nachricht&#8221;?!</p>
<blockquote><p>Hallo Schatz, ich schicke dir dieses Jahr lieber eine Nachricht über Facebook. Alles Gute zu unserem Jahrestag. Machst du nachher Essen und bringst noch Tomaten mit?</p></blockquote>
<p>Waaaaaaaaaaaaaaaaaah&#8230;&#8230;&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.danielgilbert.de/2011/09/02/danke-facebook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autsch &#8211; gulli.com macht Werbung für christliche Fundamentalisten</title>
		<link>http://blog.danielgilbert.de/2011/08/23/autsch-gulli-com-macht-werbung-fur-christliche-fundamentalisten/</link>
		<comments>http://blog.danielgilbert.de/2011/08/23/autsch-gulli-com-macht-werbung-fur-christliche-fundamentalisten/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 21:06:51 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[aktion-kig]]></category>
		<category><![CDATA[gulli.com]]></category>

		<guid isPermaLink="false">http://blog.danielgilbert.de/?p=192</guid>
		<description><![CDATA[Jaja, das böse Google AdWords&#8230; Heute ist es gulli.com zum Verhängnis geworden. Unten rechts wird doch recht prominent ein Werbeverweis auf ein christliches Aktionsbündnis gegeben: Ich möchte das Bündnis nicht verlinken, zitiere aber an dieser Stelle gerne mal die Eckpunkte: Konkret sollte die Union folgende politische Projekte beschließen: Deutschland braucht einen Aktionsplan für den Jugendmedienschutz, <a href='http://blog.danielgilbert.de/2011/08/23/autsch-gulli-com-macht-werbung-fur-christliche-fundamentalisten/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Jaja, das böse Google AdWords&#8230;</p>
<p>Heute ist es gulli.com zum Verhängnis geworden. Unten rechts wird doch recht prominent ein Werbeverweis auf ein christliches Aktionsbündnis gegeben:</p>
<p><a href="http://blog.danielgilbert.de/wp-content/uploads/2011/08/gulli_aktion_kig.png"><img class="alignnone size-medium wp-image-193" title="gulli_aktion_kig" src="http://blog.danielgilbert.de/wp-content/uploads/2011/08/gulli_aktion_kig-300x161.png" alt="" width="300" height="161" /></a></p>
<p>Ich möchte das Bündnis nicht verlinken, zitiere aber an dieser Stelle gerne mal die Eckpunkte:</p>
<blockquote><p><em>Konkret sollte die Union folgende politische Projekte beschließen:</em></p></blockquote>
<blockquote>
<ul>
<li><em>Deutschland braucht einen <span style="text-decoration: underline;">Aktionsplan für den Jugendmedienschutz</span>, um der zunehmende Erotisierung und Pornographisierung der Jugend sowie der Gesellschaft Herr zu werden.</em></li>
</ul>
</blockquote>
<blockquote>
<ul>
<li><em>Die Union muß entschlossen ein <span style="text-decoration: underline;">Adoptionsrecht für homosexuelle Paare verhindern</span> und gegen die familienfeindlichen Projekte aus der Rotgrünen Koalition wie die sog „Homo-Ehe“ vorgehen.</em></li>
</ul>
</blockquote>
<blockquote>
<ul>
<li><em>Deutschland braucht einen <span style="text-decoration: underline;">Aktionsplan für das Lebensrecht der Ungeborenen</span>. Die CDU muß sich klar und deutlich dazu bekennen, das Verbot der Abtreibung in Deutschland und die konsequente Durchsetzung des Rechts auf Leben ALLER Menschen anzustreben.</em></li>
</ul>
</blockquote>
<p>Jawoll &#8211; zurück ins Mittelalter. Niedlich ist auch die Forderung, die BRAVO zu verbieten (pff, meinetwegen, mochte sie eh noch nie) und die Aufklärung von Kindern in der Grundschule über Homo- und Bisexualität zu unterbinden. Jetzt fehlt eigentlich nur noch die Forderung, dass jeder Bürger ein 50 vom Hundert seines Lohnes an die Kirche abtreten muss und ein Besuch der Kirche jeden Sonntag als bürgerliche Pflicht festgelegt ist.</p>
<p>Sorry, aber die ganze Aktion &#8220;Kinder in Not&#8221; zu nennen, ist reinste Blasphemie. Unsere Kinder sind in Not, ja. Aber nicht, weil Sie in der Schule etwas über Bisexualität lernen. Nicht, weil sie von homosexuellen Paaren adoptiert werden. Sondern weil ihre (im übrigen meist heterosexuellen) Eltern nicht genug Kohle haben, um ihren Kindern was zu fressen zu kaufen. Weil Erziehung, ganz nach dem Vorbild aus der Wirtschaft, &#8220;outgesourced&#8221; wird. Weil es ja doch irgendwie einfacher ist, wenn sich andere darum kümmern. Das ab 2013 ein Krippenplatz für Kinder unter 3 Jahren garantiert ist, macht die Sache dann auch noch viel einfacher. Von Geburt an können sich andere um die Kinder kümmern.</p>
<p>An sich ist  das gar nicht verwerflich. Viele Paare vertrauen ihre Kinder einer Tagesmutter (neudeutsch &#8220;Nanny&#8221;) an, um Kohle ranzuschaffen, meist sogar recht viel. Aber in den letzten Jahren ist der Anteil der Eltern, die ihre Zeit statt mit Kindererziehung lieber mit &#8220;Gäms&#8221; und &#8220;soschäl nätwörkink&#8221;, gefühlt gestiegen. Ach, nicht zu vergessen das Nachmittagsprogramm, was einem ja vorführt, wie das &#8220;echte&#8221; Leben aussieht.</p>
<p>Dummerweise helfen uns fundamentalistische Ansichten bei diesen Problemen nicht wirklich. Ich denke, gulli würde sich einen Gefallen tun, wenn es diese Werbung unterbinden würde. Es passt irgendwie so gar nicht.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.danielgilbert.de/2011/08/23/autsch-gulli-com-macht-werbung-fur-christliche-fundamentalisten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SmallTune &#8211; es hat doch mal geklappt&#8230;</title>
		<link>http://blog.danielgilbert.de/2011/08/21/smalltune-es-hat-doch-mal-geklappt/</link>
		<comments>http://blog.danielgilbert.de/2011/08/21/smalltune-es-hat-doch-mal-geklappt/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 21:14:41 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://blog.danielgilbert.de/?p=188</guid>
		<description><![CDATA[Ich muss gestehen, ich bin gerade ein bisschen baff. Ich hatte vor einiger Zeit mal einen Audioplayer geschrieben, SmallTune. Die Entwicklung habe ich irgendwann Ende 2010 zu Gunsten eines anderen Projektes eingestellt. Heute habe ich mir dann mal die Statistiken meiner Webseite angesehen, und dabei sind mir die Links vom com! &#8211; Magazin aufgefallen. Nach <a href='http://blog.danielgilbert.de/2011/08/21/smalltune-es-hat-doch-mal-geklappt/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Ich muss gestehen, ich bin gerade ein bisschen baff. Ich hatte vor einiger Zeit mal einen Audioplayer geschrieben, <a href="http://smalltune.net/">SmallTune</a>.</p>
<p>Die Entwicklung habe ich irgendwann Ende 2010 zu Gunsten eines anderen Projektes eingestellt. Heute habe ich mir dann mal die Statistiken meiner Webseite angesehen, und dabei sind mir die Links vom <a href="http://com-magazin.de">com! &#8211; Magazin</a> aufgefallen.</p>
<p>Nach etwas Recherche war dann klar &#8211; SmallTune wurde im Mai 2010 das erste mal vorgestellt. Damit ist SmallTune mein erstes Programm, was jemals in einer Zeitschrift erwähnt und auf CD/DVD gepresst wurde!</p>
<p><strong>YEAAAAH!!!</strong></p>

<a href='http://blog.danielgilbert.de/2011/08/21/smalltune-es-hat-doch-mal-geklappt/top10-2010/' title='top10-2010'><img width="150" height="150" src="http://blog.danielgilbert.de/wp-content/uploads/2011/08/top10-2010-150x150.png" class="attachment-thumbnail" alt="top10-2010" title="top10-2010" /></a>
<a href='http://blog.danielgilbert.de/2011/08/21/smalltune-es-hat-doch-mal-geklappt/top100-2011/' title='top100-2011'><img width="150" height="150" src="http://blog.danielgilbert.de/wp-content/uploads/2011/08/top100-2011-150x150.png" class="attachment-thumbnail" alt="top100-2011" title="top100-2011" /></a>

]]></content:encoded>
			<wfw:commentRss>http://blog.danielgilbert.de/2011/08/21/smalltune-es-hat-doch-mal-geklappt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Normalisieren schadet nicht&#8230;</title>
		<link>http://blog.danielgilbert.de/2011/08/21/normalisieren-schadet-nicht/</link>
		<comments>http://blog.danielgilbert.de/2011/08/21/normalisieren-schadet-nicht/#comments</comments>
		<pubDate>Sun, 21 Aug 2011 15:29:17 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[Programmierung]]></category>

		<guid isPermaLink="false">http://blog.danielgilbert.de/?p=184</guid>
		<description><![CDATA[Es ist mal wieder einer Hackergruppe gelungen, den Shop von K&#38;M Elektronik zu hacken. In dem Thread finden sich auch drei Mirror mit den Datenbankschemata. Eine Tabelle ist mir dabei besonders ins Auge gefallen: +++++Table: Artikel +++Columns: ArtNr Gruppe Untergruppe Name Hersteller HerstArtNr Beschreibung Infos Zubehoer winner Preis PreisF HPreis HPreisF KPreis GPreis KoPreis PromoPreis <a href='http://blog.danielgilbert.de/2011/08/21/normalisieren-schadet-nicht/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Es ist mal wieder einer <a title="0xx0 - Gruppe" href="http://www.0xx0.su/">Hackergruppe</a> gelungen, den <a href="http://www.0xx0.su/?p=48">Shop von K&amp;M Elektronik zu hacken</a>. In dem Thread finden sich auch drei Mirror mit den Datenbankschemata. Eine Tabelle ist mir dabei besonders ins Auge gefallen:</p>
<blockquote><p>+++++Table: Artikel</p>
<p>+++Columns:</p>
<p>ArtNr</p>
<p>Gruppe</p>
<p>Untergruppe</p>
<p>Name</p>
<p>Hersteller</p>
<p>HerstArtNr</p>
<p>Beschreibung</p>
<p>Infos</p>
<p>Zubehoer</p>
<p>winner</p>
<p>Preis</p>
<p>PreisF</p>
<p>HPreis</p>
<p>HPreisF</p>
<p>KPreis</p>
<p>GPreis</p>
<p>KoPreis</p>
<p>PromoPreis</p>
<p>PromoPreisF</p>
<p>KoSyEk</p>
<p>BPreis</p>
<p>EkPreis</p>
<p>usb1</p>
<p>usb1_anz</p>
<p>usb2</p>
<p>usb2_anz</p>
<p>ps2</p>
<p>ps2_anz</p>
<p>parallel</p>
<p>seriell</p>
<p>seriell_anz</p>
<p>s-ata_anz</p>
<p>pci_mb</p>
<p>pci_mb_anz</p>
<p>agp</p>
<p>agp_art</p>
<p>ide_anz</p>
<p>fdd</p>
<p>raid_mb</p>
<p>raid_mb_anz</p>
<p>lan_mb</p>
<p>lan_mb_anz</p>
<p>lan_mb_art</p>
<p>chipsatz_mb_art</p>
<p>firewire_mb</p>
<p>firewire_mb_anz</p>
<p>formfaktor_mb</p>
<p>fsb_mb</p>
<p>pciex1_mb</p>
<p>pciex1_mb_anz</p>
<p>pciex16_mb</p>
<p>pciex16_mb_anz</p>
<p>sound_mb</p>
<p>sound_mb_art</p>
<p>maxram_mb</p>
<p>sound_mb_anschluesse_art</p>
<p>spe_art</p>
<p>spe_anz</p>
<p>spe_size</p>
<p>spe_latenz</p>
<p>spe_typ</p>
<p>protokoll_art</p>
<p>laufwerk_ausrichtung</p>
<p>cache</p>
<p>buffer_underrun</p>
<p>einschub_art</p>
<p>verpackung</p>
<p>zugriffszeit</p>
<p>speed_read_cd</p>
<p>speed_read_dvd</p>
<p>speed_write_cd</p>
<p>speed_write_cdrw</p>
<p>controller_ans</p>
<p>cpu_cool_for_art</p>
<p>cpu_cool_db</p>
<p>cpu_cool_volume</p>
<p>cooler_umdrehungen</p>
<p>cpu_cool_befestigung</p>
<p>cpu_cool_material</p>
<p>cpu_cool_ans</p>
<p>cpu_sockel_art</p>
<p>codename</p>
<p>cpu_takt</p>
<p>herstellungsprozess</p>
<p>abmessung_b</p>
<p>abmessung_l</p>
<p>abmessung_h</p>
<p>aufloesung_farbe</p>
<p>ausfloesung_sw</p>
<p>drucker_art</p>
<p>speed_print_farbe</p>
<p>speed_print_sw</p>
<p>papierformat</p>
<p>tasten_anz</p>
<p>hdd_umdrehungen</p>
<p>hdd_formfaktor</p>
<p>hdd_kapazitaet</p>
<p>anschluss_allg</p>
<p>geh_groesse</p>
<p>geh_formfaktor</p>
<p>nez_watt</p>
<p>einschub_extern_525</p>
<p>einschub_intern_35</p>
<p>einschub_extern_35</p>
<p>graka_chipsatz</p>
<p>graka_steckplatz</p>
<p>graka_kuehlung</p>
<p>graka_ramdac</p>
<p>graka_spe_size</p>
<p>tv_in</p>
<p>tv_out</p>
<p>vivo</p>
<p>max_res</p>
<p>farbtiefe</p>
<p>responsetime</p>
<p>mon_groesse</p>
<p>mon_ans</p>
<p>gewicht</p>
<p>mon_kontrast</p>
<p>mon_helligkiet</p>
<p>mon_panel</p>
<p>mon_tco</p>
<p>mon_freq_h</p>
<p>mon_freq_v</p>
<p>lautsprecher_art</p>
<p>lautsprecher_integriert</p>
<p>fernbedienung</p>
<p>tv_ans</p>
<p>cinch_ans</p>
<p>composite_ans</p>
<p>mpeg_decoder</p>
<p>mpeg_decoder_art</p>
<p>svhs</p>
<p>tuner_art</p>
<p>teletext</p>
<p>unterstuetzte_os</p>
<p>radio_tuner</p>
<p>gameport</p>
<p>port_anz</p>
<p>firewall_art</p>
<p>vpn_support</p>
<p>nb_akku_laufzeit</p>
<p>nb_laufwerk_art</p>
<p>nb_graka</p>
<p>modem</p>
<p>modem_art</p>
<p>medium_format</p>
<p>sof_art</p>
<p>kanalbuendelung</p>
<p>voip_faehig</p>
<p>pcix64</p>
<p>pcix64_anz</p>
<p>s-ata</p>
<p>sondertasten_anz</p>
<p>controller_raid_sata</p>
<p>controller_raid_sata_anz</p>
<p>controller_raid_sata2</p>
<p>controller_raid_sata2_anz</p>
<p>controller_raid_scsi</p>
<p>controller_raid_scsi_anz</p>
<p>speed_read_dvdram</p>
<p>speed_write_dvdram</p>
<p>einbau_art</p>
<p>mon_netzteil</p>
<p>externe_hdd_stromzufuhr</p>
<p>graka_core_takt</p>
<p>graka_Speicher_takt</p>
<p>sli_support</p>
<p>dualchannel_support</p>
<p>layout_tastatur</p>
<p>nez_geh_vorh</p>
<p>geh_80mm</p>
<p>geh_92mm</p>
<p>geh_120mm</p>
<p>geh_60mm</p>
<p>geh_80mm_anz</p>
<p>geh_92mm_anz</p>
<p>geh_120mm_anz</p>
<p>geh_60mm_anz</p>
<p>nez_pciex16_ans</p>
<p>nez_525_ans</p>
<p>nez_sata_ans</p>
<p>nez_tc</p>
<p>nez_ans_atx</p>
<p>nez_35_ans</p>
<p>nez_luefter_manreg</p>
<p>nez_amp_33</p>
<p>nez_amp_5</p>
<p>nez_amp_12v1</p>
<p>nez_amp_12v2</p>
<p>nez_ans_atx2</p>
<p>nez_ans_eatx</p>
<p>nez_luefter_anz</p>
<p>nez_luefter_groesse</p>
<p>graka_dx_version</p>
<p>nez_ans_atx12v</p>
<p>nez_pfc_art</p>
<p>bkanal_anz</p>
<p>nez_sata</p>
<p>nez_amp_12v</p>
<p>graka_ans</p>
<p>geh_frontans</p>
<p>geh_frontans_art</p>
<p>speed_write_dvdplus</p>
<p>speed_write_dvdminus</p>
<p>speed_write_dvdplusrw</p>
<p>speed_write_dvdminusrw</p>
<p>speed_write_dvddl</p>
<p>dvd_dl_support</p>
<p>spe_mb_anz</p>
<p>cpu_cache_l2</p>
<p>mau_art</p>
<p>mau_tasten</p>
<p>tast_typ</p>
<p>mau_typ</p>
<p>cpu_bit</p>
<p>cpu_typ</p>
<p>sca_scan_size</p>
<p>sca_max_res</p>
<p>sca_farbtiefe_sw</p>
<p>nez_luefter_vorh</p>
<p>cpu_cool_luefter_size</p>
<p>kab_laenge</p>
<p>kab_art</p>
<p>kab_typ</p>
<p>prod_farbe</p>
<p>streamer_art</p>
<p>streamer_size</p>
<p>bea_ansi_lumen</p>
<p>MTBF</p>
<p>bea_lampe_watt</p>
<p>mpeg_decoder_typ</p>
<p>time_shift</p>
<p>mic_vorh</p>
<p>lan_standard</p>
<p>mod_integriert</p>
<p>uplink_vorhanden</p>
<p>firewall_vorhanden</p>
<p>nb_mb_chipsatz</p>
<p>dig_spe_art</p>
<p>graka_onboard</p>
<p>fdd_vorh</p>
<p>kosy_cpu</p>
<p>rohling_speed</p>
<p>roh_anz</p>
<p>rohling_art</p>
<p>rohling_size</p>
<p>pat_fuellmenge</p>
<p>pat_seiten</p>
<p>raid_vorh</p>
<p>raid_0</p>
<p>raid_1</p>
<p>raid_01</p>
<p>raid_10</p>
<p>raid_5</p>
<p>raid_jbod</p>
<p>cam_dig_zoom</p>
<p>cam_opt_zoom</p>
<p>cam_mega_pixel</p>
<p>cam_spe_medien</p>
<p>card_reader_vorh</p>
<p>Einbaugrosse</p>
<p>einbaugroesse</p>
<p>lueftersteuerung_vorh</p>
<p>material</p>
<p>externe_hdd_art</p>
<p>force_feedback_vorh</p>
<p>pda_gps</p>
<p>pda_int_spe</p>
<p>graka_spe_interface</p>
<p>spe_bestueckung</p>
<p>cpu_mmx</p>
<p>cpu_3dnow</p>
<p>cpu_sse</p>
<p>cpu_sse2</p>
<p>cpu_sse3</p>
<p>dvd_ram_support</p>
<p>nez_pciex16_vorh</p>
<p>spe_ecc</p>
<p>pciex4_mb</p>
<p>pciex4_mb_anz</p>
<p>geh_120mm_anz_erw</p>
<p>geh_60mm_anz_erw</p>
<p>geh_80mm_anz_erw</p>
<p>geh_92mm_anz_erw</p>
<p>speed_write_dvddlminus</p>
<p>dvd_dl_support_minus</p>
<p>crossfire</p>
<p>ide_vorh</p>
<p>nez_ans_atx12v2</p>
<p>cpu_cores</p>
<p>nez_amp_12v3</p>
<p>nez_amp_12v4</p>
<p>cpu_sse4</p>
<p>speed_read_bdr</p>
<p>speed_write_bdr</p>
<p>speed_write_bdre</p>
<p>speed_read_hddvd</p>
<p>BlueTooth</p>
<p>os</p>
<p>webcam</p>
<p>han_umts</p>
<p>han_cam</p>
<p>han_art</p>
<p>han_touch</p>
<p>han_epush</p>
<p>nez_amp_12v5</p>
<p>nez_amp_12v6</p>
<p>kosy_art</p>
<p>nez_pciex16_ans_8</p>
<p>kosy_graka</p>
<p>dvd_lightscribe</p>
<p>nez_mod</p>
<p>kab1_ans</p>
<p>kab2_ans</p>
<p>eSATA</p>
<p>art_sof</p>
<p>art_zub</p>
<p>cpu_sse4a</p>
<p>cpu_sse41</p>
<p>cpu_ssse3</p>
<p>controller_sas</p>
<p>cam_art</p>
<p>trichannel_support</p></blockquote>
<p>Ihr habt das Ende erreicht. <img src='http://blog.danielgilbert.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  In der kompletten Tabelle  befinden sich also Felder zur Beschreibung für jedes erdenkliche Produkt. Ich weiß nicht, wie ihr das seht, aber das UPDATE &#8211; und INSERT &#8211; Statement dafür sieht bestimmt lustig aus. <img src='http://blog.danielgilbert.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Man hätte hier die Datenbank zumindest in Ansätzen normalisieren können. Beispielsweise so:</p>
<blockquote><p>+++++Table: Artikel<br />
+++Columns:<br />
ArtNr<br />
Gruppe<br />
Untergruppe<br />
Name<br />
Hersteller<br />
HerstArtNr<br />
Beschreibung<br />
Infos<br />
Zubehoer<br />
winner<br />
Preis<br />
PreisF<br />
HPreis<br />
HPreisF<br />
KPreis<br />
GPreis<br />
KoPreis<br />
PromoPreis<br />
PromoPreisF<br />
KoSyEk<br />
BPreis<br />
EkPreis</p>
<p>+++++Table: Zusatzdaten_PC<br />
++Columns<br />
***Spalten, die man für einen Komplett-PC benötigt***</p>
<p>+++++Table: Zusatzdaten_Notebook<br />
++Columns<br />
***Spalten, die man für ein Notebook benötigt***</p>
<p>+++++Table: Zusatzdaten_Digitalkamera<br />
++Columns<br />
***Spalten, die man für eine Digicam benötigt***</p>
<p>&nbsp;</p>
<p>+++++Table: Zusatzdaten_Zuordnung<br />
++Columns<br />
ArtikelID<br />
Zusatzdaten_PC<br />
Zusatzdaten_Notebook<br />
Zusatzdaten_Digitalkamera</p></blockquote>
<p>So in etwa. Die Zuordnungstabelle könnte man auch noch erweitern und bspw allgemeiner fassen. Jedenfalls dürfte das übersichtlicher sein, als alles in eine Tabelle zu rotzen. Auf der anderen Seite erklärt das aber auch, weshalb die Seite gehackt werden konnte. Ich vermute einfach Stümper am Werk.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.danielgilbert.de/2011/08/21/normalisieren-schadet-nicht/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Wallpaper] Spiegelung Brandenburger Tor</title>
		<link>http://blog.danielgilbert.de/2011/08/17/wallpaper-spiegelung-brandenburger-tor/</link>
		<comments>http://blog.danielgilbert.de/2011/08/17/wallpaper-spiegelung-brandenburger-tor/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 20:10:26 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[CGI]]></category>
		<category><![CDATA[Blender]]></category>

		<guid isPermaLink="false">http://blog.danielgilbert.de/?p=181</guid>
		<description><![CDATA[Ich habe mal wieder etwas mit Blender gearbeitet. Herausgekommen ist dabei, basierend auf einem Tutorial des Blender-Gurus ein Spiegelbild, wie ich sie auch gerne fotografiere. Die Spiegelung ist ein Foto, welches ich geschossen habe, bei dem Pflaster handelt es sich um eine Textur, zusammen mit einigen Effekten. Es erinnert mich auf jeden Fall an unseren <a href='http://blog.danielgilbert.de/2011/08/17/wallpaper-spiegelung-brandenburger-tor/'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Ich habe mal wieder etwas mit <a title="Blender" href="http://blender.org">Blender</a> gearbeitet. Herausgekommen ist dabei, basierend auf einem Tutorial des <a href="http://blenderguru.com">Blender-Gurus</a> ein Spiegelbild, wie ich sie auch gerne fotografiere. Die Spiegelung ist ein Foto, welches ich geschossen habe, bei dem Pflaster handelt es sich um eine Textur, zusammen mit einigen Effekten. Es erinnert mich auf jeden Fall an unseren gemeinsamen Berlin-Urlaub. Das Bild gibt es als Wallpaper im Anhang. <img src='http://blog.danielgilbert.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<div id="attachment_182" class="wp-caption alignnone" style="width: 310px"><a href="http://blog.danielgilbert.de/wp-content/uploads/2011/08/berlin_puddle_1280x800.png"><img class="size-medium wp-image-182" title="Berlin in der Pfütze" src="http://blog.danielgilbert.de/wp-content/uploads/2011/08/berlin_puddle_1280x800-300x187.png" alt="" width="300" height="187" /></a><p class="wp-caption-text">Zum Speichern auf &quot;Ziel speichern unter...&quot; o.ä. klicken (1280x800)</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.danielgilbert.de/2011/08/17/wallpaper-spiegelung-brandenburger-tor/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Telekom] Noch kein VDSL&#8230;</title>
		<link>http://blog.danielgilbert.de/2011/08/12/telekom-noch-kein-vdsl/</link>
		<comments>http://blog.danielgilbert.de/2011/08/12/telekom-noch-kein-vdsl/#comments</comments>
		<pubDate>Fri, 12 Aug 2011 11:23:37 +0000</pubDate>
		<dc:creator>daniel</dc:creator>
				<category><![CDATA[Telekom]]></category>

		<guid isPermaLink="false">http://blog.danielgilbert.de/?p=178</guid>
		<description><![CDATA[Es ist nun zwei Wochen her, das die Telekom meinen neuen Anschluss geschaltet hat. Allerdings ist noch immer keine Spur von VDSL vorhanden. Ich denke, es ist langsam an der Zeit, dem Kundencenter etwas auf die Füße zu treten.]]></description>
			<content:encoded><![CDATA[<p>Es ist nun zwei Wochen her, das die Telekom meinen neuen Anschluss geschaltet hat. Allerdings ist noch immer keine Spur von VDSL vorhanden. Ich denke, es ist langsam an der Zeit, dem Kundencenter etwas auf die Füße zu treten.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.danielgilbert.de/2011/08/12/telekom-noch-kein-vdsl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

