<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns: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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>PHP hates me - Der PHP Blog</title>
	
	<link>http://www.phphatesme.com</link>
	<description>PhpHatesMe, but that's ok!</description>
	<pubDate>Tue, 10 Nov 2009 06:00:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/PhpHatesMe-DerPhpBlog" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>PHP Code Smells – Include</title>
		<link>http://feedproxy.google.com/~r/PhpHatesMe-DerPhpBlog/~3/dOHsSfqYcR0/</link>
		<comments>http://www.phphatesme.com/blog/softwaretechnik/php-code-smells-include/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 06:00:24 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Softwaretechnik]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=4502</guid>
		<description><![CDATA[Heute wollen wir mal wieder eine neue kleine Kategorie starten. Es geht um Code Smells im <a target="_blank" href="http://www.phphatesme.com/rssBenefit.php">PHP</a> Umfeld. Code Smells bezeichnen dabei stellen im Code, an denen man ahnen kann, dass etwas nicht ganz so sauber gelöst ist. Die Stelle stinkt also. Der Begriff wurde von Kent Beck (oder eher von seiner Oma) geprägt und [...]]]></description>
			<content:encoded><![CDATA[<p>Heute wollen wir mal wieder eine neue kleine Kategorie starten. Es geht um Code Smells im <a target="_blank" href="http://www.phphatesme.com/rssBenefit.php">PHP</a> Umfeld. Code Smells bezeichnen dabei stellen im Code, an denen man ahnen kann, dass etwas nicht ganz so sauber gelöst ist. Die Stelle stinkt also. Der Begriff wurde von Kent Beck (oder eher von seiner Oma) geprägt und von Martin Fowler in seinem Buch über Refactoring wunderbar verwendet. Es lohnt sich übrigens das Buch zu besitzen, aber ich glaube das hab ich schon mal erwähnt.</p>
<p><span id="more-4502"></span>Bestimmt kennt jeder von euch solche Muster, die er in seinem Code lieber nicht finden will. Heute will ich mal mit dem &#8220;Include Smell&#8221; anfangen. Wenn ich ein größeres Projekt starte, dann will ich dies objektorientiert angehen. Alle Logik ist also in Klassen verpackt und keine &#8220;losen&#8221; Aufrufe liegen irgendwo rum. Zumindest stelle ich mir das so vor. Wenn ich strikt mir Klassen arbeite, dann verwende ich include_once oder require_once, denn jede Klasse muss ich dem System gegenüber nur ein mal vorstellen und kann es dann nutzen. Ich brauche also auf keinen Fall die Möglichkeit eine Datei doppelt zu inkludieren.</p>
<p>Jedes vorkommen von include, das in der Business-Logik vorkommt, lässt also auf eine kaputte OOP schließen. Solche Stellen kann man also suchen und analysieren. Gerne kann man auch einen PHP_CodeSniffer Sniff verfassen, ob man aber so weit gehen muss, weiss ich nicht. Ich habe übrigens explizit diesen Smell auf die Busines Logik begrenzt, da man, glaube ich zumindest, im Templating System also der View auf solche includes nicht verzichten will. Wie seht ihr das? Ist jedes vorkommen eines includes, das nicht einfach durch ein include_once ersetzt werden kann ein schlechtes Zeichen und stinkt?</p>
<p>Wahrscheinlich werden diese Code Smell all denen liegen, die auch mit Metriken etwas anfangen können, weil beides in Richtung statische Code-Analyse zielt. Wer Metriken nicht aussagekräftig findet, der wird wahrscheinlich auch mit den Code Smells nicht so viel anfangen können. Auf jeden Fall werde ich in den nächsten Tagen noch was über mixed als Rückgabewert schreiben und auch ein wenig meine Aussage über Kommentare im Code von damals verfeinern. Ach ja die übermäßige Verwendung von Arrays wird auch noch ein Smell werden.</p>
<p>PS: Es kann übrigens sein, dass ich schon mal einen ähnlichen Artikel verfasst habe, aber ich wollte im Zuge der Code Smell Reihe noch einmal das ganze auffrischen und mir war da einfach nach.</p>
		<br />
		Vor einem Jahr: <a href="http://www.phphatesme.com/blog/allgemein/projektwerk/">Projektwerkstatt</a><img src="http://feeds.feedburner.com/~r/PhpHatesMe-DerPhpBlog/~4/dOHsSfqYcR0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/softwaretechnik/php-code-smells-include/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/softwaretechnik/php-code-smells-include/</feedburner:origLink></item>
		<item>
		<title>One-Click Installation</title>
		<link>http://feedproxy.google.com/~r/PhpHatesMe-DerPhpBlog/~3/uw-HcWOfBz4/</link>
		<comments>http://www.phphatesme.com/blog/softwaretechnik/one-click-installation/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 06:00:47 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Softwaretechnik]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=4493</guid>
		<description><![CDATA[Unglaublich. Eine Woche Urlaub schon wieder rum. Schade für mich, gut für euch. Wenn ich mich nämlich wieder den ganzen Tag mit <a target="_blank" href="http://www.phphatesme.com/rssBenefit.php">PHP</a> und Qualitätsmanagement beschäftige, dann habe ich auch viel zu schreiben. Ich habe übrigens die ganze Woche an was feinem für phphatesme gebastelt. Ihr dürft gespannt sein. 
Da aber heute der Artikel live [...]]]></description>
			<content:encoded><![CDATA[<p>Unglaublich. Eine Woche Urlaub schon wieder rum. Schade für mich, gut für euch. Wenn ich mich nämlich wieder den ganzen Tag mit <a target="_blank" href="http://www.phphatesme.com/rssBenefit.php">PHP</a> und Qualitätsmanagement beschäftige, dann habe ich auch viel zu schreiben. Ich habe übrigens die ganze Woche an was feinem für phphatesme gebastelt. Ihr dürft gespannt sein. <span id="more-4493"></span></p>
<p>Da aber heute der Artikel live geht, den ich gestern geschrieben habe, habe ich natürlich nicht gearbeitet (logisch?!). Deswegen dürft ihr euch noch mal eine Weisheit anhören, die eigentlich von Joel Spolsky stammt, von mir aber auf jeden Fall bestätigt werden kann. Es geht um die Installation von Software. Ich nenne es die &#8220;One-Click Installation&#8221;. Dabei geht es darum, dass eure Software ohne Probleme installiert bzw. gebaut werden kann. Stellt euch mal vor, ihr programmiert an einem bestimmten Projekt, wie zum Beispiel www.heise.de. Um das Projekt lokal auf eurem PC zu laufen zu bringen müsstet ihr jetzt alle Einstellungen, die das System benötigt von Hand einstellen. Ich tippe mal drauf, dass das eine ganze Menge sind und dass vielleicht ein oder zwei Leute auf dieser Welt dies können. Tja dumm gelaufen, wenn man es selbst machen muss und nicht zu den zwei Personen gehört.</p>
<p>Ich habe schon an einigen Projekten gesessen, da hat es Stunden gedauert eine Webseite aufzusetzen, bis sie tatsächlich lief. Das dumme daran war, der Ablauf war immer genau der gleiche! Und alles was immer das gleiche ist, kann man auch in Automatismen packen. Wir basteln uns also &#8220;einfach&#8221; ein build-Skript, dass den ganzen Kleinscheiß für uns erledigt und wir setzen uns danach einfach hin und tippen &#8220;ant&#8221; (kann natürlich auch make oder so etwas sein) ein. Wie immer bei automatisierten Abläufen wird die Aufzeichnung erst mal Zeit kosten, die ihr aber schnell wieder drinne haben solltet. Hier gilt es natürlich für euch zu entscheiden, wie oft ihr das System aufsetzen müsst und wie sehr ihr von dem Wissen einer Person abhängig seid. Bei den meisten Projekten, in denen ich involviert war, haben wir es zum Schluß hinbekommen uns ein ant Skript zu basteln, das die Anforderunegn erledigt hat.</p>
<p>Natürlich ist diese Anforderung nicht ganz so selbstlos. Im Qualitätsmanagement in der Softwareentwicklung ist der Continuous Integration Prozess meiner Meiner Meinung nach einer der wichtgsten. Nach jedem Commit wird dort das komplette System gebaut und alle Tests gegen die <strong>aktuelle </strong>Version gefahren. Auch hier spielen Automatismen eine wichtige Rolle. Müsste ich jedes mal, wenn sich was am System ändert (ein ALTER TABLE in der DB reicht ja bereits schon) meinen Continous Integration Server anfassen, würde ich ziemlich schnell einen an der Waffel bekommen (derzeit betreuen wir ca. 30 Webseiten). Das muss also alles automatisch passieren.</p>
<p>Mir fällt gerade ein, dass ich mal die Woche der Automatismen ausrufen könnte, aber vielleicht auch nicht. Mich würde auf jeden Fall mal interessieren, wer von euch so ein Installations Skript für sein System hat. Wie immer wartet die Kommentarfunktion also auf euch.</p>
		<br />
		Vor einem Jahr: <a href="http://www.phphatesme.com/blog/wtf/unset-this-es-war-einmal/">unset( $this ) - Es war einmal</a><img src="http://feeds.feedburner.com/~r/PhpHatesMe-DerPhpBlog/~4/uw-HcWOfBz4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/softwaretechnik/one-click-installation/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/softwaretechnik/one-click-installation/</feedburner:origLink></item>
		<item>
		<title>Max’ Lesestoff zum Wochenende</title>
		<link>http://feedproxy.google.com/~r/PhpHatesMe-DerPhpBlog/~3/6gufybavkFs/</link>
		<comments>http://www.phphatesme.com/blog/lesestoff/max-lesestoff-zum-wochenende-11/#comments</comments>
		<pubDate>Sat, 07 Nov 2009 06:00:02 +0000</pubDate>
		<dc:creator>Max Stockner</dc:creator>
				<category><![CDATA[Lesestoff]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/blog/lesestoff/max-lesestoff-zum-wochenende-11/</guid>
		<description><![CDATA[Wie jede Woche spendieren wir euch auch an diesem Samstag wieder ein paar Linktipps. Diesmal sind es 6 an der Zahl. Wir hoffen, dass wir euch die Wartezeit bis zum n&#228;chsten Artikel auf unserem Blog, damit verk&#252;rzen k&#246;nnen.



Firefocus &#8211; In Case of Stairs
firefox erweiterung für firebug um das aktuelle element das den focus hat hervorzuheben


Testing [...]]]></description>
			<content:encoded><![CDATA[<p>Wie jede Woche spendieren wir euch auch an diesem Samstag wieder ein paar Linktipps. Diesmal sind es <b>6</b> an der Zahl. Wir hoffen, dass wir euch die Wartezeit bis zum n&auml;chsten Artikel auf unserem Blog, damit verk&uuml;rzen k&ouml;nnen.</p>
<p><span id="more-4489"></span>
<div>
<div class="maex_link">
<div class="maex_url"><a href="http://www.incaseofstairs.com/firefocus/">Firefocus &#8211; In Case of Stairs</a></div>
<div class="maex_description">firefox erweiterung für firebug um das aktuelle element das den focus hat hervorzuheben</div>
</div>
<div class="maex_link">
<div class="maex_url"><a href="http://blog.fedecarg.com/2009/11/01/testing-zend-framework-action-controllers-with-mocks/">Testing Zend Framework Action Controllers With Mocks « Federico Cargnelutti</a></div>
<div class="maex_description">Zend Framework Controller mit Mocks testen.</div>
</div>
<div class="maex_link">
<div class="maex_url"><a href="http://labs.mudynamics.com/wp-content/uploads/2009/04/icouch.html">Interactive CouchDB | Mu Dynamics</a></div>
<div class="maex_description">This is a CouchDB emulator/visualizer written in 100% JavaScript, which implements key concepts like collation, map/reduce and incremental reduce. It also acts as a 2-minute CouchDB tutorial. No documents were harmed in this process.</div>
</div>
<div class="maex_link">
<div class="maex_url"><a href="http://blog.bogojoker.com/2009/10/improving-the-web-inspector/">BogoJoker » Improving the Web Inspector</a></div>
<div class="maex_description">seehr, seehr coole erweiterungen des webinspectors vom Webkit.</div>
</div>
<div class="maex_link">
<div class="maex_url"><a href="http://astuteo.com/slickmap/">SlickMap CSS — A Visual Sitemapping Tool for Web Developers</a></div>
<div class="maex_description">Fertiges nettes CSS Stylesheets für Sitemaps.</div>
</div>
<div class="maex_link">
<div class="maex_url"><a href="http://www.fullduplex.org/humor/2006/10/how-to-shoot-yourself-in-the-foot-in-any-programming-language/">fullduplex.org » How to Shoot Yourself in the Foot in Any Programming Language</a></div>
<div class="maex_description">ein bisschen spass zum wochenende <img src='http://www.<a target="_blank" href="http://www.phphatesme.com/rssBenefit.php">php</a>hatesme.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </div>
</div>
</div>
		<br />
		Vor einem Jahr: <a href="http://www.phphatesme.com/blog/mysql/join-on-vs-where/">JOIN ON vs. WHERE</a><img src="http://feeds.feedburner.com/~r/PhpHatesMe-DerPhpBlog/~4/6gufybavkFs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/lesestoff/max-lesestoff-zum-wochenende-11/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/lesestoff/max-lesestoff-zum-wochenende-11/</feedburner:origLink></item>
		<item>
		<title>Wordpress richtig backupen</title>
		<link>http://feedproxy.google.com/~r/PhpHatesMe-DerPhpBlog/~3/6DsBcZRs4Os/</link>
		<comments>http://www.phphatesme.com/blog/tools/wordpress-richtig-backupen/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 06:00:03 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Tools & Helferlein]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=4481</guid>
		<description><![CDATA[So aus aktuellem Anlass gibt es heute mal wieder einen kurzen Wordpress Artikel. Wie einige von euch vielleicht gemerkt haben &#8211; wahrscheinlich durch mein oskarreifes Gejammere auf Twitter &#8211; war gestern unser Server von ca. 10 Uhr bis 13 Uhr down. Ein klarer Fall von Shit Happens.
Durch diverse doofe Umstände, war ich nicht in der [...]]]></description>
			<content:encoded><![CDATA[<p>So aus aktuellem Anlass gibt es heute mal wieder einen kurzen Wordpress Artikel. Wie einige von euch vielleicht gemerkt haben &#8211; wahrscheinlich durch mein oskarreifes Gejammere auf Twitter &#8211; war gestern unser Server von ca. 10 Uhr bis 13 Uhr down. Ein klarer Fall von Shit Happens.</p>
<p><span id="more-4481"></span>Durch diverse doofe Umstände, war ich nicht in der Lage den Server selbst neu zu starten (was sich jetzt aber geändert hat). Was macht man also in den 3 Stunden voller &#8220;Panik&#8221; ohne durchzudrehen? Man überlegt sich, was man alles im Backup drinnen hat und was verloren geht, falls der Server gar nicht mehr hochfährt. Meine Sourcen habe ich noch mal zu hause, da ich ja dort entwickle. Bei der Datenbank sieht es anders aus. Die gibt es nur live und im wöchentlichen &#8230; na gut wem mache ich was vor, eher im monatlichen Rhythmus gibt es ein Backup. Nach so einem Schock ist man natürlich eine Woche lang hoch sensibel auf das Thema zu sprechen, danach nicht mehr so. So sind zumindest meine Erfahrungswerte. Was muss also her? Ein automatisches Backup und das jeden Tag.</p>
<p>Um ein effizientes Backup zu erstellen, muss man erst mal wissen, wie Wordpress seine Daten strukturiert. Zum Glück ist das eigentlich ganz einfach. Das &#8220;Userland&#8221; befindet genau in einem Verzeichnis &#8220;<code>wp-content</code>&#8220;, dass sich direkt um Hauptverzeichnis befindet. Hier landen die installieren Plugins und die Themes, die man in liebevoller Kleinarbeit mundgeklöppelt hat. Dieses Verzeichnis ist das einzige auf der Platte, welches man nicht mit einer normalen Wordpress Installation wieder herstellen kann, zumindest inhaltlich. Fast hätte ichs vergessen: Im Upload Verzeichnis liegen noch die Bilder, die ihr zu euren Artikel hochgeladen habt. Ist vielleicht auch nicht so uninteressant.</p>
<p>Bei der Datenbank kann man getrost alles mit ins Backup werfen, da der größte Speicherfresser eh die Artikel und die Entwürfe sind und die sollten ja auf jeden Fall täglich den Weg ins Backup finden. Bei mir sind es noch ein paar Zusatztabellen, da ich ja selbst ein wenig an meinem Wordpress rumgeschraubt habe.</p>
<p>Wir haben also zwei Verzeichnisse und eine Datenbank zu sichern. Wordpress wäre aber nicht Wordpress, wenn es das nicht alles schon in einem Plugin vorgefertigt geben würde. Ich habe mich gestern für zwei verschiedene entschieden. Das eine sah sehr gut aus für die <a href="http://wordpress.org/extend/plugins/wp-db-backup/" target="_blank">Datenbank</a> und das andere kümmert sich um die <a href="http://wordpress.org/extend/plugins/wordpress-backup/">Verzeichnisse</a>. Ich bin gespannt, ob alles klappt. Zuminbdest fühle ich mich jetzt wieder sicher.</p>
<p>Ich weiß, ich predige immer sauber zu arbeiten und dann mache ich kein Backup! Asche auf mein Haupt. Ich gelobe Besserung.</p>
		<br />
		Vor einem Jahr: <a href="http://www.phphatesme.com/blog/allgemein/sicherer-umgang-mit-der-request-variablen/">Sicherer Umgang mit der Request Variablen</a><img src="http://feeds.feedburner.com/~r/PhpHatesMe-DerPhpBlog/~4/6DsBcZRs4Os" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/tools/wordpress-richtig-backupen/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/tools/wordpress-richtig-backupen/</feedburner:origLink></item>
		<item>
		<title>Funktionale Tests und stabile Wireframes</title>
		<link>http://feedproxy.google.com/~r/PhpHatesMe-DerPhpBlog/~3/uJxnNLD75ko/</link>
		<comments>http://www.phphatesme.com/blog/tools/funktionale-tests-und-stabile-wireframes/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 06:00:55 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Qualitätssicherung]]></category>
		<category><![CDATA[Tools & Helferlein]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=4472</guid>
		<description><![CDATA[Heute wollen wir mal wieder das Thema der funktionalen Tests anbringen. Wir haben in letzter Zeit ja schon einiges über Selenium und Co. gehört. Heute wollen wir ein wenig auf die Umgebung eingehen, in der man Selenium am effektivsten nutzen kann. Wie sieht also eine Webseite aus, die ich problemlos mit meiner Selenium IDE testen [...]]]></description>
			<content:encoded><![CDATA[<p>Heute wollen wir mal wieder das Thema der funktionalen Tests anbringen. Wir haben in letzter Zeit ja schon einiges über Selenium und Co. gehört. Heute wollen wir ein wenig auf die Umgebung eingehen, in der man Selenium am effektivsten nutzen kann. Wie sieht also eine Webseite aus, die ich problemlos mit meiner Selenium IDE testen kann.<span id="more-4472"></span></p>
<p>Kurz vorne Weg nochmal ein ganz kurzer Abriss über das Testen mit Selenium. Was wir damit prüfen sind hauptsächlich Eigenschaften von definierten HTML Elementen wie Divs oder Select Boxen. Wir können also auf das Vorhandensein eines bestimmten Textes innerhalb eines Divs prüfen. Soviel erstmal dazu.</p>
<p>Jetzt muss ich aber erstmal definieren, welches Element meiner Seite diesen Text beinhalten muss. Dank Selenium habe ich da diverse Möglichkeiten. Eine davon ist der XPath des DOM Dokuments, das die HTML Seite repräsentiert. Ein Pfad könnte dann wie folgt aussehen: <code>//div[1]/div[3]/div[3]/a</code>. Nicht wirklich aussagekräftig, aber eigentlich eine Standardmethode. Das Problem dabei ist, dass sich der Pfad bei der Entwicklung der Seite auf mitentwickelt. Falls ein neues Element in den Header der Seite eingebaut wird, dann besteht die Chance, dass sich der gesamte Pfad ein Stück verschiebt. Ein Rechtsshift sozusagen. Xpath ist also nur eine gute Idee, falls die Seite wirklich stabil bleibt. Aber das Internet ist schnelllebig und deswegen können und sollten wir uns das doch lieber abschminken, falls wir nicht bei jeder Änderungen unsere Tests anfassen wollen.</p>
<p>Was wir brauchen sind also stabile Ankerpunkte, an denen wir anknüpfen können. Für ein solches System eignen sich IDs hervorangend. Selenium hat nämlich die Möglichkeit Elemente über den xpath:idRelative zu identifizieren. Pfade sehen dann eben nicht mehr wie oben aus, sonder <code>//div[@id='meineID']/div[1]/a</code>. Der große Vorteil, den wir hiermit gewinnen ist eine erhöhte Stabilität der Tests. Jetzt kann sich die ganze Seite um mein Element verändern, solange mein Pfad von der gegebenen ID zu meinem Element stabil bleibt bin ich auf der sicheren Seite. Und wenn sich das doch verändert, muss ich nur noch einen Bruchteil meiner Tests anfassen.</p>
<p>Was sagt uns das also. Als vorgehensweise würde ich empfehlen bei Neuentwicklung gleich IDs zu verwenden um Inhaltsblöcke einzugrenzen. Es muss nicht jedes DIV eine id bekommen, aber die Gruppe in der es sich befindet sollte eine solche besitzen. Bei Altlasten würde ich jetzt nicht nachträglich alles mit IDs versehen. Einfach bei Bedarf nachliefern. Ich schreibe einen Regressionstest, also brauche ich auch eine neue ID. Ganz einfach.</p>
		<br />
		Vor einem Jahr: <a href="http://www.phphatesme.com/blog/allgemein/happy-birthday-phpwomen-wurde-zwei-jahre-alt/">Happy Birthday! PHPWomen wurde zwei Jahre alt.</a><img src="http://feeds.feedburner.com/~r/PhpHatesMe-DerPhpBlog/~4/uJxnNLD75ko" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/tools/funktionale-tests-und-stabile-wireframes/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/tools/funktionale-tests-und-stabile-wireframes/</feedburner:origLink></item>
	</channel>
</rss>
