<?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>PHP hates me - Der PHP Blog &#187; Webentwicklung</title>
	<atom:link href="http://www.phphatesme.com/archives/category/webentwicklung/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phphatesme.com</link>
	<description>PhpHatesMe, but that&#039;s ok!</description>
	<lastBuildDate>Sat, 11 Feb 2012 10:13:45 +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>&#8220;Symfony2 MVC &#8211; I don&#8217;t care&#8221;</title>
		<link>http://www.phphatesme.com/blog/webentwicklung/symfony2-mvc-i-dont-care/</link>
		<comments>http://www.phphatesme.com/blog/webentwicklung/symfony2-mvc-i-dont-care/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 06:00:20 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Tools & Helferlein]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://www.phphatesme.com/?p=11205</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Heute wollen wir mal wieder über den Franzosen berichten, der uns Symfony2 gebracht hat. Fabien Potencier. Und Leute die mich kennen, wissen, dass ich den Typ absolut nicht leiden kann. Er wirkt einfach arrogant und narzisstisch. Das doofe dabei ist, er hat leider wirklich was auf dem Kasten. Was er also an Unsympathie mitbringt macht er durch technisches Verständnis und gute Ideen wieder wett. Also kann ich es akzeptieren, dass er in der Community einen so hohen Stellenwert hat. Nicht das ihn das stören würde, wenn es nicht so wäre. Ok, genug gelästert? Ich glaube schon.</p>
<p>Ok jetzt zum Artikel. Vor ein einigen Tagen waren wir in Köln zum Symfony Day und Fabien hat in seiner Keynote ein wenig über Symfony2 philosophiert. Dabei hat er auch über MVC-Frameworks gesprochen und erklärt, dass man so gut wie nie in der Symfony-Doku finden wird, dass es sich dabei um eines handelt. Aber warum? Ist Symfony2 denn kein MVC-Framework? Wäre ja grausam, denn MVC verstehen wir und damit können wir auch arbeiten. Ja, Symfony ist auch weiterhin ein MVC-Framework, aber warum hat der Franzose das dann gesagt? <strong>Es ist ihm einfach egal</strong>.</p>
<p>Nutzt das Framework doch wie ihr wollt und wie es am besten zu euch passt. Ihr braucht MVC, dann kommt ihr eben so gut mit Symfony zurecht, wie jemand der einfach einen Webservice auf die Beine stellen will. Dank der Komponentisierung kann man auch viel kleinteiliger arbeiten und zum Beispiel nur den Class-Loader benutzen.</p>
<p>Hinter dem ganzen &#8220;I don&#8217;t care&#8221; stecken zwei Ideen. Zum einen will er die Verbreitung von Symfony fördern und dabei ist es sinnvoll bekannt zu machen, dass es eben viel mehr als ein MVC-Framework ist und man es überall einsetzen kann. Wiederverwendbarkeit ist einfach was feines. Und je mehr Projekte sf nutzen, umso schwieriger wird es an dem Thema vorbei zu kommen. Genial für eine Firma, die damit ihr Geld verdient. Zweiter Punkt ist eher so etwas prinzipielles. Wenn euch MVC nicht 100% zusagt, dann nutzt es nicht zu 100%. Erweitert die Ideen, programmiert nicht zu engstirnig. Wenn ihr ein MVCD machen wollt, dann macht es. Frische Ideen haben noch nie geschadet. Erfindet aber bitte das Rad an dieser Stelle nicht neu.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/webentwicklung/symfony2-mvc-i-dont-care/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>For a Future-Friendly Web</title>
		<link>http://www.phphatesme.com/blog/webentwicklung/for-a-future-friendly-web/</link>
		<comments>http://www.phphatesme.com/blog/webentwicklung/for-a-future-friendly-web/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 14:00:00 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Vorträge]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://www.phphatesme.com/blog/webentwicklung/for-a-future-friendly-web/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>For full breakdown, visit http://bradfrostweb.com/blog/web/for-a-future-friendly-web/</p>
<p>This talk was from Web Design Day (http://webdesignday.com) in beautiful Pittsburgh, PA.</p>
<p>This talk introduces the need to start thinking and acting in a more future-friendly (http://futurefriend.ly) way when approaching web design. The diversity of web-enabled devices is increasing at an alarming rate. We have to rethink our content and the contexts in which our content is viewed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/webentwicklung/for-a-future-friendly-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Responsive Webdesign &#8211; Eine Sammlung</title>
		<link>http://www.phphatesme.com/blog/webentwicklung/responsive-webdesign-eine-sammlung/</link>
		<comments>http://www.phphatesme.com/blog/webentwicklung/responsive-webdesign-eine-sammlung/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 06:00:06 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://www.phphatesme.com/?p=11040</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Seit ein paar Wochen lese ich mir immer mal wieder Artikel zum Thema <strong>Responsive Webdesign</strong> durch. Erstens weil ich das Thema spannend finde und ich glaube, dass so die Zukunft von Webseitenlayout aussehen kann und zweitens weil ich gerade beruflich mit der Auslieferung mobiler Inhalte beschäftigt bin. Fangen wir doch einfach mal mit der Wikipedia-Definition an, bevor ich ein paar interessante Links aufliste, mit denen man sich in das Thema einarbeiten kann:</p>
<p><em>&#8220;<strong>Responsive Design</strong> bezeichnet eine Praxis im Webdesign, bei der der grafische Aufbau von Webseiten dynamisch und unter Berücksichtigung der Anforderungen des betrachtenden Gerätes erfolgt. Eine dafür wesentliche Voraussetzung sind Media Queries, also die Abfrage von Art und Eigenschaften des betrachtenden Gerätes. Eine Webseite wird somit auf einem großen Display anders dargestellt als auf einem Tablet-Computer/Tablet-PC oder Smartphone.&#8221;</em></p>
<p>Wir haben also Layout, die sich je nach Betrachter anpassen. Klingt ja fast so ein wenig wie die Heisenbergsche Unschärferelation. Wer zu dem Thema aber noch mehr wissen will, der sollte sich diese Links mal zu Gemühte führen:</p>
<ul>
<li><a href="http://bostonglobe.com/">Boston Globe</a>: Eine der ersten Zeitschriften, die den Schritt zum Repsonse Design gewagt haben und bei denen es auch gelungen ist. Schaut man sich die Seite zum Beispiel auf dem iPad an, so haben wir eine dreispaltige Seite wenn wir das Display Quer halten, bei Hochkant wird es zweispaltig.</li>
<li><a href="http://designmodo.com/responsive-design-examples/">50 Examples and Best Practices</a>: Wer sich noch nicht so viel drunter vorstellen kann, kann hier 50 Beispiele sehen, wie es aussehen sollte. Sind echt schöne Sachen dabei und schon in der Zusammenfassung bekommt man ein gutes Gefühl darüber, wie das Prinzip funktioniert.</li>
<li><a href="http://getskeleton.com/">Skeleton</a>: Wenn man wirklich mal anfangen und eine Seite umsetzen will, kann man Skeleton, ein Boilerplate für Responsive Websites nutzen. Hatte selbst noch nicht die Zeit es zu testen und würde mich über Feedback freuen, aber sicherlich ist jede Open-Soruce-Lösung ein Gewinn.</li>
<li><a href="http://t3n.de/news/responsive-webdesign-umfangreiche-prasentation-tipps-330593/">Grundlagen</a>: Natürlich gibt es nicht nur englischsprachige Texte zu diesem Thema, nein die Kollegen von t3n haben sich auch die Mühe gemacht die Grundlagen zu erklären. Wichtig auch die weiterführenden Links am Ende, die auf weitere gute Seiten zeigen.</li>
<li><a href="http://webdesignerwall.com/tutorials/responsive-design-with-css3-media-queries">Tutorial</a>: Schönes englischsprachiges Tutorial (Danke an Alex für den Tipp).</li>
<li><a href="http://mobiforge.com/starting/story/mobile-web-content-adaptation-techniques?dm_switcher=true">Alternativen</a>: Wer sich nicht auf Responsive Webdesign festlegen will, der kann hier noch ein wenig über Alternativen lesen. Alles nur kurz angerissen, aber trotzdem erfährt man das nötigste, um dann selbst auf die Suche nach ausführlichen Artikel zu gehen.</li>
</ul>
<p>So wie gesagt, heute eher die Verweise auf Fremdinhalte, aber da ich in dem Thema noch kein Experte bin, ist dass das beste was ich euch &#8220;antun&#8221; kann. Alles andere wäre sicherlich auch nicht sinnvoll.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/webentwicklung/responsive-webdesign-eine-sammlung/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Shell Fu for Developers</title>
		<link>http://www.phphatesme.com/blog/webentwicklung/shell-fu-for-developers/</link>
		<comments>http://www.phphatesme.com/blog/webentwicklung/shell-fu-for-developers/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 13:00:00 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Tools & Helferlein]]></category>
		<category><![CDATA[Vorträge]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://www.phphatesme.com/blog/webentwicklung/shell-fu-for-developers/</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Franz Pletz möchte mit seinem Vortrag, nachdem vor einigen Wochen bereits Martin Brotzeller in die grundlegende Shell- und UNIX-Tools-Benutzung eingeführt hat, in die Customization der eigenen Shell und in sinnvollen weiteren Tools, die den Developer-Alltag erleichtern, einführen. Dies sind einerseits Standardtools mit ungeahnter Zusatzfunktionalität, die allerdings häufig nicht bekannt sind aber auch Zusatztools, die erst neu zu installieren sind. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/webentwicklung/shell-fu-for-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Edge Side Includes &#8211; Nachteile</title>
		<link>http://www.phphatesme.com/blog/webentwicklung/edge-side-includes-nachteile/</link>
		<comments>http://www.phphatesme.com/blog/webentwicklung/edge-side-includes-nachteile/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 05:00:55 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Tools & Helferlein]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://www.phphatesme.com/?p=10507</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Vor kurzem hatte ich eine &#8220;neue&#8221; Technologie vorgestellt &#8211; <a href="http://www.phphatesme.com/blog/webentwicklung/edge-side-includes/">Edge Side Includes</a> genannt. Habe auch erklärt warum sie total toll ist und so weiter. Im letzten Satz kam dann das ABER, vielleicht ist ja doch nicht alles Gold was glänzt. Dieser Artikel soll ein paar Nachtteile aufdenken, die meiner Meinung nach existieren.</p>
<ul>
<li><strong>Fehlende Framework-Unterstützung</strong>: ESI klingt zwar einfach, aber wenn das Framework es nicht unterstützt, dann kann es haarig werden. Das System muss ja so gebaut sein, dass jeder Snippet der Seite unabhängig vom Rest gerendert werden kann. Soviel ich weiß, ist Symfony2 das erste und einzige Framework derzeit auf dem PHP-Markt das es unterstützt. Nachträglich sowas einzubauen halte ich für sehr komplex.</li>
<li><strong>Overhead</strong>: Das ist jetzt für jedes Projekt eine eigenen Rechenaufgabe. Nehmen wir an, wir nutzen ein relativ schwergewichtiges Framework, welches 100ms braucht um hochzufahren. Jetzt besteht unsere Seite im einfachsten Fall aus zwei Teilen. Da wir dank ESI beide getrennt haben, müssen wir jetzt zwei mal das Framework hochfahren. 200ms einfach im Framework verbraten ist halt schon mal ein doofer Startpunkt für eine Hochlastseite. Wir wollten ESI vor kurzem auch bei einer relativ bekannten Seite einführen und sind daran gescheitert, dass zwei Teile der Seite gar nicht cachebar waren und somit ESI keine Beschleunigung gebracht hätte.</li>
<li><strong>Parallelität</strong>: Wer gerade den Overhead-Punkt nicht einfach nur überflogen hat, der hat sich sicherlich die Frage gestellt, warum man die zwei ESI-Includes nicht einfach parallel abholt und somit immer nur das Maximum der beiden Requests zu buche schlägt. Tja, ESI kann das leider nur sequentiell. Wobei ich gerade nicht genau weiß, ob es eine ESI-Einschränkung oder ob die Varnisch-Implementierung das Problem ist. Wenn man es aber mal genau betrachtet, kann es schon ganz logisch sein. Was wäre, wenn ein Include Cookies setzt und das andere darauf zurückgreifen will? Wenn immer mal eins von beiden zuerst fertig ist, hat man kein konsistentes Verhalten und debugging wird die Hölle. <a href="http://en.wikipedia.org/wiki/Unusual_software_bug#Heisenbug">Heisenbug</a> lässt grüßen.</li>
</ul>
<p>Das waren jetzt erstmal die von mir gesehenen drei Nachteile. Ihr werdet sicherlich auch noch einiges beitragen können.</p>
<p>Ach ja, heute geht meine Elternzeit zu Ende. Nach zwei Monaten zu hause wieder mal richtig arbeiten. Ich sag euch dann wie es war.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/webentwicklung/edge-side-includes-nachteile/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Projektwerkstatt: Facebook Textadventure</title>
		<link>http://www.phphatesme.com/blog/webentwicklung/projektwerkstatt-facebook-textadventure/</link>
		<comments>http://www.phphatesme.com/blog/webentwicklung/projektwerkstatt-facebook-textadventure/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 05:00:40 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Projektwerkstatt]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://www.phphatesme.com/?p=10483</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Kennt ihr so Tage, an denen man keine Lust auf irgendwas hat? So einen Tag hatte ich natürlich noch nie, denn ich bin ja ein motivierter, dauerbereiter Superinformatiker. Aber wenn ich so einen Tag hätte, dann wäre der wohl heute. Aber ich schreibe einfach mal wieder eine meiner eine Million Euro Ideen auf. Wie immer gilt, wer Zeit hat es umzusetzen, der schreibt mir doch bitte einen Brief mit ganz viel Geld drinnen.</p>
<p>Es gibt so viele Facebookspiele und wenn mir noch mal jemand eine Farm Ville anfrage sendet, bekommt er den Popo versohlt. <em>Warum geht man nicht einfach mal einen Schritt zurück und nutzt die Kommentarfunktion wie eine Kommandozeile</em>?Damit könnte man so schöne Dinge umsetzen, wie zum Beispiel ein Textadventure. Ich glaube da hätte ich wirklich Spaß dran, wenn ich einfach überall so  ein Spiel spielen könnte. Speichern bräuchte ich auch nichts, denn überall finde ich die selben Kommentare. Quizspiele auf diese Art zu machen, wäre auch eine Bereicherung und da mal überall in den Hauptmeldungen auftauchen würde, wäre die Verbreitung sicherlich schnell recht gut.</p>
<p>Aus technischer Sicht könnte man da ein kleines PHP-Framework oder eine Komponente veröffentlichen, die sich um die Facebookanbindung kümmert. Vielleicht könnte man es so gestalten, dass es sich wirklich wie die Kommandozeile anfühlt. Müsste man mal ein wenig drüber nachdenken.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/webentwicklung/projektwerkstatt-facebook-textadventure/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Edge Side Includes</title>
		<link>http://www.phphatesme.com/blog/webentwicklung/edge-side-includes/</link>
		<comments>http://www.phphatesme.com/blog/webentwicklung/edge-side-includes/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 05:00:15 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Tools & Helferlein]]></category>
		<category><![CDATA[Webentwicklung]]></category>

		<guid isPermaLink="false">http://www.phphatesme.com/?p=10303</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p>Da ich gerade dabei bin mit Mike zusammen einen Artikel für die ix zu schreiben und das Thema ESI (Edge Side Includes) angerissen wird, habe ich mir gedacht, ich schreibe hier auch mal eine ganz kurze Übersicht über das meiner Meinung nach wichtigste Feature dieser Technologie.</p>
<p>Betrachtet man das Caching-Verhalten einer Webseite, dann bemerkt man, dass sie so lange gültig sein kann, wie das aktuellste Element auf ihr. Existiert zum Beispiel eine Box mit den aktuellsten Nachrichten, die jede Minute aktualisiert werden muss,  so kann man mit reinem HTML da nichts machen. außer die komplette Seite maximal für eine Minute im Cache des Nutzers zu legen. Eigentlich eine nicht wirklich optimale Vorgehensweise, da die meisten Systeme zusätzlich so aufgebaut sind, dass sie immer die ganze Seite berechnen wenn eine Anfrage kommt. Gut einiges liegt im Cache, aber vieles eben auch nicht.</p>
<p>ESI kann dazu genutzt werden, dieses Problem ein wenig abzuschwächen und vielleicht sogar zu lösen. Eigentlich von <a href="http://www.akamai.de/">Akamai</a> vor einigen Jahren erfunden, wurde es 2001 als offizieller <a href="http://www.w3.org/TR/esi-lang">Standard bei der w3c</a> eingereicht. Man braucht also keine Angst haben, dass man sich bei Verwendung auf eine Technologie festlegt, die keine Zukunft hat. Fangen wir aber an das Feature zu beleuchten, dass uns bei unserem Problem helfen kann.</p>
<p>Edge Side Includes bieten einem die Möglichkeit die Webseite in einzelne Bestandteile aufzuteilen und diese somit auch wie eigene HTML-Seiten zu betrachten. Nehmen wir an, der Header unserer Seite würde als ein solcher Bestandteil gekennzeichnet werden. Wir haben nun die Möglichkeit genau diesen Header einzeln zu Cachen und das schöne ist, wir nutzen die HTTP-Header, die wir eh schon kennen. Im ESI-Jargon sprechen wir einfach mal von includes und es würde wie folgt aussehen:</p>
<pre>&lt;esi:include src="http://phphatesme.com/header.php" /&gt;</pre>
<p>Ziemlich einfach und verständlich, oder? ESI wird, wie man sieht, über XML-Elemente direkt im HTML gesteuert. Natürlich immer im ESI-Namespace, so wie es sich gehört. Jetzt kann man sich natürlich fragen, wer ein solches Tag versteht, die header.php anruft und die eigentliche Seite zusammenbaut. <a href="https://www.varnish-cache.org/">Varnish</a> oder <a href="http://www.squid-cache.org/">Squid</a> wären hier zum Beispiel zwei Kandidaten.</p>
<p>Um diese Tags zu verarbeiten schaltet man eine Instanz vor den Webserver, der diese interpretieren kann. Einige HTTP-Acceleratoren können dies. Wir haben gute Erfahrungen mit Varnish gemacht. Egal welches Tool, es werden die einzelnen Bestandteile zusammengefügt und nach allen HTTP-Gesichtspunkten verarbeitet. Caching funktioniert also weiterhin wie gehabt. Nachdem alle Schnippsel abgeholt wurden, wird eine ganze Seite zusammengesetzt, die ESI-Tags rausgeworfen und ausgeliefert. Einfach, oder? Also zumindest das Prinzip und wenn man ein wenig mit einem HTTP-Accelerator rumgespielt hat, sollte einem hier kaum etwas spanisch vorkommen.</p>
<p>Da alle Tags entfernt werden ist diese Technologie für den Endkunden, also die Person, die am Browser sitzt komplett transparent. Es hat keine Ahnung rauszufinden, was da im Hintergrund passiert und trotzdem gewinnt man in den meisten Fällen sehr viel Performance auf den Servern, denn nicht mehr die ganze Seite, sondern nur einzelne Teile müssen berechnet werden.</p>
<p>Suchmaschinen bekommen übrigens auch ein vollständiges HTML-File, was ein großer Vorteil gegenüber AJAX ist, mit welchem man dieses System ja auch ohne Probleme hätte umsetzen können.</p>
<p>Falls Interesse besteht, würde ich noch Folgeartikel schreiben, denn etwas über Symfony2 und ESI hätte ich noch parat, wann ESI keinen Vorteil bringt, was ESI noch kann und wo Fallstricke lauern. Wären also vier an der Zahl, die ich wohl aufs restliche Jahr verteilen werde.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/webentwicklung/edge-side-includes/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

