<?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; Allgemein</title>
	<atom:link href="http://www.phphatesme.com/archives/category/allgemein/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phphatesme.com</link>
	<description>PhpHatesMe, but that&#039;s ok!</description>
	<lastBuildDate>Tue, 07 Feb 2012 06:00:42 +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>Review: Virtual GIT Summit</title>
		<link>http://www.phphatesme.com/blog/allgemein/review-virtual-git-summit/</link>
		<comments>http://www.phphatesme.com/blog/allgemein/review-virtual-git-summit/#comments</comments>
		<pubDate>Thu, 02 Feb 2012 08:42:14 +0000</pubDate>
		<dc:creator>php monkeys</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[phmnetwork]]></category>

		<guid isPermaLink="false">http://www.phpmonkeys.de/?p=1748</guid>
		<description><![CDATA[Gestern Abend fand das Virtual GIT Summit statt und dazu gibt es hier ein kleines Review.
Technik
Da es "Virtual" heißt, kann man schon erraten, dass es sich nicht um eine normale Konferenz handelt. Vielmehr wurde alles über das Netz gestreamt ...]]></description>
			<content:encoded><![CDATA[<p>Gestern Abend fand das <a href="http://www.phparch.com/phparchitect-live-presents-the-virtual-git-summit/" >Virtual GIT Summit</a> statt und dazu gibt es hier ein kleines Review.<br />
<span id="more-1748"></span></p>
<h2>Technik</h2>
<p>Da es &#8220;Virtual&#8221; heißt, kann man schon erraten, dass es sich nicht um eine normale Konferenz handelt. Vielmehr wurde alles über das Netz gestreamt und somit konnte man weltweit aus dem trauten Heim der Veranstaltung folgen. Als Basis diente die Vuze Meeting Seite. Über einen Link gelangte man in den entsprechenden Raum und über eine Skype Verbindung zu Vuze Meeting wurde die Tonspur bereitgestellt. Somit wurde eine bewährte Technik für den Audio-Stream genutzt, was ich recht schick finde. Es bestand auch die Möglichkeit den Stream über die Webseite zu beziehen aber laut den anderen Teilnehmern war die Skype-Lösung tendenziell besser. Die Einwahl per telefon wäre auch möglich gewesen, aber von Deutschland her wenig sinnvoll. Support wurde über einen IRC-Channel im freenode-Netz geleistet. Hierüber konnte man auch Fragen an die Referenten weitergeben.</p>
<h2>Speaker</h2>
<p>Es gab 4 Referenten, die jeweils ca. eine Stunde Sprechzeit hatten. Genutzt wurde zumeist für den Vortrag zwischen 45 und 50 Minuten. Danach gab es noch die Möglichkeit Fragen zu stellen. </p>
<h4><em>David Collier</em> &#8211; &#8220;Basics of Git&#8221;</h4>
<p>Der Vortrag von David war eine sehr gute Einführung zu den Grundlagen von Git. Vergleiche zu Subversion wurden gezogen und die Befehle vorgestellt, die einen Entwickler bei der täglichen Arbeit begleiten. Auf der Tonspur gab es sehr viele Informationen zu den recht übersichtlichen Folien. Leider gab es beim Screensharing ein paar technische Probleme und so musste eine Alternative gefunden werden. Diese war recht suboptimal und hat die Live-Vorführung etwas überflüssig gemacht. Der Bildaufbau war einfach zu langsam, oder David zu schnell. Aber die Grundlagen kann man natürlich auch leicht selbst ausprobieren.<br />
Folien: <a href="http://speakerdeck.com/u/davidcoallier/p/git-basics" >http://speakerdeck.com/u/davidcoallier/p/git-basics</a></p>
<h4><em>John Mertic</em> &#8211; &#8220;Subversion to Git: A Sugar Story&#8221;</h4>
<p>Hier ging es schon ein bisschen weiter und John hat einige Anekdoten aus seiner Entwickler-Zeit erzählt. Wie man von Subversion zu Git migriert und welche Herausforderungen dadurch an ein Entwicklerteam gestellt werden. Insgesamt sehr spannend und unterhaltsam. Leider gab es einige Aussetzer im Audio Stream.<br />
Folien: <a href="http://www.slideshare.net/jmertic/the-virtual-git-summit-subversion-to-git-a-sugar-story" >http://www.slideshare.net/jmertic/the-virtual-git-summit-subversion-to-git-a-sugar-story</a></p>
<h4><em>Chris Hartjes</em> &#8211; &#8220;You’ve Decided to Use Git as Your VCS for Your Team…So Now What?&#8221;</h4>
<p>Chris Vortrag ging noch einen Schritt weiter und das Thema war im Großen, wie man mit Git Branches organisiert. Dabei ging es um Feature-, Bugfix-, Staging-Branches und den Master. Er hat somit aus dem Leben eines Entwicklers berichtet der <a href="http://nvie.com/posts/a-successful-git-branching-model/" >nach diesem Muster</a> branched. Diesmal gab es keine technischen Schwierigkeiten und der Vortrag war ebenfalls sehr gut und auch recht locker gehalten.<br />
Folien: <a href="http://speakerdeck.com/u/grumpycanuck/p/youve-decided-to-use-git-as-your-vcs-for-your-teamso-now-what" >http://speakerdeck.com/u/grumpycanuck/p/youve-decided-to-use-git-as-your-vcs-for-your-teamso-now-what</a></p>
<h4><em>Travis Swicegood</em> &#8211; &#8220;Git’s Meat Cleavers&#8221;</h4>
<p>Travis hat schon auf einer höheren Ebene begonnen und hat mich als Git Laien nach ca. 15-20 Minuten vollkommen abgehängt. Es ging um die Themen Rebase und Bisect. Wer mit Git arbeitet wird in den Folien sicher wertvolle Informationen finden, ich werde diese wohl erst zu einem späteren Zeitpunkt zu schätzen wissen. Der Vortrag an sich war sehr strukturiert und nach jedem Abschnitt gab es die Möglichkeit für das Publikum Fragen zu stellen. Die Technik spielte auch diesmal mit und somit war der Vortrag ein gelungener Abschluß.<br />
Folien: <a href="http://speakerdeck.com/u/tswicegood/p/gits-meat-cleavers" >http://speakerdeck.com/u/tswicegood/p/gits-meat-cleavers</a></p>
<h2>Fazit</h2>
<p>Das &#8220;Virtual Git Summit&#8221; hat wirklich Spaß gemacht und einen guten Motivations-Schub gegeben, sich mehr mit Git zu beschäftigen. Interessant war die Tatsache, dass die ersten 3 Referenten Github sehr gelobt haben und im Chat auch eine ähnliche Meinung vorherrschte. Nicht nur wegen der Opensource-Projekte, sondern vor allem im Firmenumfeld als Ersatz für ein Inhouse-Repository. Wenn Zeit und Themen passen, werde ich sicher bei weiteren virtuellen Summits dabei sein.  </p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/allgemein/review-virtual-git-summit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QR-Codes erstellen</title>
		<link>http://www.phphatesme.com/blog/allgemein/qr-codes-erstellen/</link>
		<comments>http://www.phphatesme.com/blog/allgemein/qr-codes-erstellen/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 09:07:40 +0000</pubDate>
		<dc:creator>php monkeys</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[phmnetwork]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.phpmonkeys.de/?p=1705</guid>
		<description><![CDATA[Seit ein paar Jahren gibt es die QR-Codes zu sehen. Mit der Verbreitung der Smartphones hat sich die Verbreitung stark erhöht und überall stößt man auf die Quadrate, die an durcheinander gewürfelte Schachbretter erinnern. Sehr beliebt sind diese Muster ...]]></description>
			<content:encoded><![CDATA[<p>Seit ein paar Jahren gibt es die QR-Codes zu sehen. Mit der Verbreitung der Smartphones hat sich die Verbreitung stark erhöht und überall stößt man auf die Quadrate, die an durcheinander gewürfelte Schachbretter erinnern. Sehr beliebt sind diese Muster im Zusammenhang mit den vielen Android-Seiten.<br />
<span id="more-1705"></span></p>
<h2>Was ist der QR-Code eigentlich?</h2>
<p>Der Begriff QR-Code steht für Quick Response Code und es handelt sich um einen 2-dimensionalen Code, der von Denso Wave im Jahre 1994 entwickelt wurde. Die Größe ist abhängig von der Datenmenge und von der Güte der Fehlerkorrektur. Die kleineren Quadrate werden von der Erkennungssoftware zur Bestimmung der Ausrichtung genutzt. Im Code selbst werden Daten transportiert. Smartphones haben die Software zur Erkennung schon installiert oder aber sie lässt sich im jeweiligen AppStore/Market finden. Ich persönlich nutze Google Goggles unter Android. </p>
<h2>Welche Daten werden hinterlegt</h2>
<p>QR-Codes findet man inzwischen an vielen Stellen, an denen man eine Brücke zwischen einem Offline- und einem Online-Medium schlagen möchte oder muss. Werbung in Zeitschriften bspw. verweist auf die entsprechende Internetseite des Herstellers. Es können aber auch Telefonnummern, vCards oder speziellere Daten hinterlegt werden. Wlan-Zugangsdaten werden u.a. gerne in einem QR-Code für die Gäste eines Cafes hinterlegt.<br />
Die Erkennungssoftware ist normalerweise so programmiert, dass sie bestimmte Muster in den Daten erkennt und davon abhängig eine entsprechende Software startet. Solche Muster sehen bspw so aus:</p>
<h4>Webseiten</h4>
<ul>
<li>http://www.phpmonkeys.de</li>
<li>market://details?id=com.google.android.apps.unveil</li>
</ul>
<h4>Email</h4>
<ul>
<li>mailto:user@example.com</li>
<li>mailto:user@example.com?subject=Readme</li>
</ul>
<h4>Telefon</h4>
<ul>
<li>tel:012345678</li>
</ul>
<h4>Kontaktdaten (vCard)</h4>
<ul>
<li><a href="http://www.ietf.org/rfc/rfc2426.txt" >siehe vCard Spec</a></li>
<li><a href="http://de.wikipedia.org/wiki/VCard" >Kurzübersicht (Wikipedia)</a></li>
</ul>
<h2>QR-Codes generieren im Netz</h2>
<p>Wie so ein Code aussieht ist rudimentär klar und welche Daten darin enthalten sein können haben wir auch gesehen. Jetzt geht es an die Generierung. Der einfachste Weg ist eine entsprechende Seite zu nutzen. Dies bietet sich vor allem dann an, wenn man nicht viele Codes benötigt oder wenn man die Generierung auslagern möchte.</p>
<h4>Kaywa</h4>
<p>Ein besonders einfaches Formular zum Erstellen solches Codes findet man bei Kaywa. Dies ist auch der Hersteller von entsprechender Software, die die Codes analysieren kann. Dort kann man ein paar Informationen angeben und schon wird ein QR-Code generiert. Einen statischen Link dazu gibt es auch. Besonders nett an dem Formular ist die Auswahl nach den verschiedenen Möglichkeit. Vorlagen für URL, Telefon und SMS sind bereits vorhanden und ein generelles Text-Eingabefeld gibt es auch noch. Leider gibt es aber einige Limitierungen und das Formular ist auch nur für die private Nutzung erlaubt. Für die ersten Tests reicht dies aber allemal aus.<br />
<em>Link</em>: <a href="http://qrcode.kaywa.com/" >http://qrcode.kaywa.com/</a></p>
<h4>Google Chart API</h4>
<p>Möchte man QR-Codes dynamisch erzeugen so bietet Google eine entsprechende API an. Über den Generator für Charts kann man neben schönen Diagrammen auch die QR-Codes generieren. Hierbei muss man im Gegensatz zu kaywa aber wissen, welchen textlichen Inhalt man im Code unterbringen muss. Wie sieht ein Telefonnummer-QR-Code aus? Und dann ist die Google API ein gutes Stück interessanter.<br />
Der Aufruf ist sehr überschaubar:</p>
<pre class="brush: bash; title: ; notranslate">
https://chart.googleapis.com/chart?chs=150x150&#038;cht=qr&#038;chl=Hello%20world
</pre>
<p>Die Parameter ergeben sich folgendermaßen:</p>
<ul>
<li><code>chs</code>: Die Größe des Codes im Format <em>Breite</em>x<em>Höhe</em></li>
<li><code>cht</code>: Hier steht qr, weil das eben der Typ ist</li>
<li><code>chl</code>: Der Inhalt des QR-Codes in einem URL-Encoded Format</li>
</ul>
<p>Netterweise kann man statt der GET-Syntax auch die Daten per POST übermitteln. Hierbei wird dann natürlich ein Formular oder eine Zwischenschicht benötigt, die die Daten per POST übermitteln kann. Zum Beispiel mit cURL auf der Kommandozeile oder natürlich mit  PHP, wie man das Übermitteln von POST-Daten ja kennt.<br />
Dadurch ist man auch in der Lage komplexere Daten in einem QR-Code unterzubringen und die Menge der Daten erhöht sich ebenfalls. Denn üblicherweise ist eine GET-Anfrage auf ca 2k beschränkt, POST hingegen kann 16k übermitteln. Unter dem angegebenen Link finden sich einige Beispiele für die Benutzung.<br />
<em>Link</em>: <a href="http://code.google.com/intl/de-DE/apis/chart/infographics/" >http://code.google.com/intl/de-DE/apis/chart/infographics/</a></p>
<h2>PHP QR Code Library</h2>
<p>Die vorgestellten Methoden benutzen beiden den Service eines Dritten. Wer nun seine Codes selbst erstellen möchte, muss auf eine entsprechende Bibliothek zurückgreifen. Als Beispiel dient hier <a href="http://phpqrcode.sourceforge.net/" >PHPQRCode</a>. Um einen QR-Code zu generieren muss man nur qrlib inkludieren. Die Generierung geschieht dann über den Aufruf einer statischen Methode. Hierbei sind einige Parameter verfügbar. Beispielhaft sieht dies so aus:</p>
<pre class="brush: php; title: ; notranslate">
require 'qrlib.php';
QRcode::png('http://www.phpmonkeys.de', 'code.png', QR_ECLEVEL_H, 10);
</pre>
<p>Die Daten werden als erster Parameter übergeben, dann folgt der Dateiname, die Fehlerkorrektur und die Größe. Fehlerkorrektur und Größe sind optional.</p>
<h2>Fazit</h2>
<p>Das eigentliche Geheimnis der QR-Codes liegt in den Daten und in der Formatierung dieser. Wenn eine Software ein spezielles Format unterstützt, so kann man viele Eingaben vereinfachen.<br />
Eine kommende Alternative könnten die NFC-Tags sein. Diese Aufkleber lassen sich ebenso mit Daten befüllen. Jedoch sind QR-Codes sehr viel einfacher und günstiger herzustellen und können von jedem Gerät mit Kamera gelesen und ausgewertet werden.</p>
<p>Ergänzend für nk hier noch 4 Testdateien. Diese haben 1k bis 4k an Daten als Inhalt. Wobei als letztes Zeichen ein A angegeben ist und alle Zeichen zuvor eine 1 sind. Dadurch kann man einfach sicherstellen, dass alle Zeichen im QRCode vorhanden sind.  </p>
<ul>
<li><a href="http://www.phpmonkeys.de/wp-content/uploads/2012/01/code_large_1k.png" >QR Code 1k</a></li>
<li><a href="http://www.phpmonkeys.de/wp-content/uploads/2012/01/code_large_2k.png" >QR Code 2k</a></li>
<li><a href="http://www.phpmonkeys.de/wp-content/uploads/2012/01/code_large_3k.png" >QR Code 3k</a></li>
<li><a href="http://www.phpmonkeys.de/wp-content/uploads/2012/01/code_large_4k.png" >QR Code 4k</a></li>
</ul>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/allgemein/qr-codes-erstellen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scrumwall – mit oder ohne digitale Hilfsmittel?</title>
		<link>http://www.phphatesme.com/blog/allgemein/scrumwall-mit-oder-ohne-digitale-hilfsmittel/</link>
		<comments>http://www.phphatesme.com/blog/allgemein/scrumwall-mit-oder-ohne-digitale-hilfsmittel/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 09:16:35 +0000</pubDate>
		<dc:creator>php monkeys</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[phmnetwork]]></category>

		<guid isPermaLink="false">http://www.phpmonkeys.de/?p=1691</guid>
		<description><![CDATA[Heute gibt es wieder einen "Mitmach"-Beitrag. Es geht um das Thema Scrum und im Speziellen um die Scrumwall (oder Scrumboard). Auf dieser sind die aktuellen Aufgaben angeheftet und wandern durch die verschiedenen Status hindurch bis sie zur Übersicht abgenommen ...]]></description>
			<content:encoded><![CDATA[<p>Heute gibt es wieder einen &#8220;Mitmach&#8221;-Beitrag. Es geht um das Thema Scrum und im Speziellen um die Scrumwall (oder Scrumboard). Auf dieser sind die aktuellen Aufgaben angeheftet und wandern durch die verschiedenen Status hindurch bis sie zur Übersicht abgenommen werden können. Oftmals wird in der Literatur ein Whiteboard oder ähnliches Instrument beschrieben, das mit Papierkärtchen gefüllt ist. Wie sieht das bei euch aus? Gibt es ein digitales Pendant?<br />
<span id="more-1691"></span><br />
Doch bevor es Kommentare zu dem Thema zu lesen gibt, hier auch die Vorgehensweise die sich bei uns im Team etabliert hat und die bisher gut funktioniert. </p>
<p>Für unser Daily Scrum arbeiten wir mit einer herkömmlichen Scrumwall. Dort befinden sich dann auch die Karten aus Papier. Diese werden entsprechend des Zustandes verschoben und sind mit einer kurzen Beschreibung versehen und mit einer Referenz auf unseren Bugtracker. </p>
<p>Durch den Bugtracker haben wie die Möglichkeit Arbeitszeiten, zusätzliche Informationen, fachliche und technische Anmerkungen an der jeweiligen Aufgabe anzuhängen. Diese Aufgaben werden natürlich nicht als Bug erfasst, sondern haben einen eigenen Typ. Als Tool wird <a href="http://www.atlassian.com/software/jira/overview" >Jira</a> benutzt. Wir nutzen die <a href="http://www.atlassian.com/software/greenhopper/overview" >Greenhopper Erweiterung</a> nicht, sondern haben für die Aufgaben eigentlich in der digitalen Fassung nur <em>3</em> Zustände. </p>
<ol>
<li>Aufgabe liegt beim Product Owner und ist noch nicht bereit für die Entwicklung</li>
<li>Aufgabe wird von einem Entwickler bearbeitet und ist diesem zugeordnet</li>
<li>Aufgabe liegt beim PO ist aber als geschlossen markiert, d.h. die Aufgabe ist erledigt</li>
</ol>
<p>Ein großer Vorteil des Vorgehens ist für uns, dass man über die Jira-Referenznummern die Aufgaben schneller findet und so auch in weiteren Dokumenten verlinken kann.<br />
Mitarbeiter die nicht vor Ort arbeiten können so auch alle Informationen ihrer Aufgaben im Blick haben und der Verwaltungsoverhead wird möglichst gering gehalten.</p>
<p>Nun kommen wir aber zurück zur eingangs gestellten Frage. Wie sieht das bei euch aus? Benutzt ihr eine spezielle Software und wenn ja, welche? Benutzt ihr nur Papier und Whiteboard?</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/allgemein/scrumwall-mit-oder-ohne-digitale-hilfsmittel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RESTful Webservices mit PHP</title>
		<link>http://www.phphatesme.com/blog/allgemein/restful-webservices-mit-php/</link>
		<comments>http://www.phphatesme.com/blog/allgemein/restful-webservices-mit-php/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 08:46:48 +0000</pubDate>
		<dc:creator>php monkeys</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[phmnetwork]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.phpmonkeys.de/?p=1659</guid>
		<description><![CDATA[Webapplikationen bieten oftmals eine Schnittstelle an, über die auch Entwickler den angebotenen Service in ihren Applikationen nutzen können. Diese Webservices wurden gerne durch XML-RPC oder SOAP bereitgestellt. Doch der neue Trend ist REST.
Was ist REST?
REST steht für REpresentational State ...]]></description>
			<content:encoded><![CDATA[<p>Webapplikationen bieten oftmals eine Schnittstelle an, über die auch Entwickler den angebotenen Service in ihren Applikationen nutzen können. Diese Webservices wurden gerne durch XML-RPC oder SOAP bereitgestellt. Doch der neue Trend ist REST.<br />
<span id="more-1659"></span></p>
<h2>Was ist REST?</h2>
<p>REST steht für REpresentational State Transfer und wurde von Thomas Roy Fielding in seiner <a href="http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm" >Dissertation</a> benannt. REST benutzt URLs um Ressourcen bereitzustellen und das Hypertext Transfer Protocol um Manipulationen an diesen Ressourcen durchzuführen. Die einzelnen HTTP-Methoden werden für verschiedene Operationen genutzt dabei entspricht GET Lesen, PUT Update, POST Create und DELETE Löschen.</p>
<h2>REST-Service in PHP &#8211; das Slim-Framework</h2>
<p>Möchte man einen solchen REST-Service erstellen bietet sich das <a href="http://www.slimframework.com/" >Slim-Framework</a> an. Die Sourcen können bei <a href="https://github.com/codeguy/Slim" >Github</a> gefunden werden. Der Aufbau eines Hello-World-Services ist denkbar einfach.</p>
<pre class="brush: php; title: ; notranslate">
require 'Slim/Slim.php';
$app = new Slim();
$app-&gt;get('/hello/:name', function ($name) {
   echo &quot;Hello $name&quot;;
});
$app-&gt;run();
</pre>
<p>Die interessante Zeile ist <code>$app->get()</code>. Hier wird ein Pfad und ein Parameter mit einer Funktion verknüpft. Das ganze verwendet die GET-Methode von HTTP.</p>
<p>Wenn man einen umfangreicheren Service anbieten will, werden weitere Methoden verwendet wie zum Beispiel PUT, DELETE, POST.</p>
<p>Als Beispiel sei ein Service für die Verwaltung einer Person zu nennen der so aussehen könnte:</p>
<pre class="brush: php; title: ; notranslate">
require 'Slim/Slim.php';
$app = new Slim();
$app-&gt;get('/person/:id', function ($id) {
   // retrieve person
});
$app-&gt;post('/person', function () {
   // create person
});
$app-&gt;put('/person/:id', function ($id) {
   // update data
});
$app-&gt;delete('/person/:id', function ($id) {
   // delete data
});
$app-&gt;run();
</pre>
<p>Das Framework bietet neben der REST-Funktionalität auch noch eine Logging Komponente und alles ist mit Unittest abgedeckt.</p>
<h2>Testen mit Chrome und FF</h2>
<p>Um den REST-Service zu nutzen benötigt man normal einen REST-Client. Für Tests ist es natürlich überaus praktisch, wenn man die einzelnen Funktionen manuell triggern kann. </p>
<p>Hierfür gibt es eine <a href="https://chrome.google.com/webstore/detail/hgmloofddffdnphfgcellkdfbfbjeloo" >Chrome Erweiterung</a>, die den Entwickler die Methode, Header Information und Daten (bspw POST) setzen lässt. </p>
<p>Eine <a href="https://addons.mozilla.org/en-US/firefox/addon/restclient/" >Firefox Extension</a> gibt es auch, die ich aber bisher nicht getestet habe. </p>
<h2>Webservice Tipp</h2>
<p>Beim Entwerfen eines REST-Webservices sollte man gleich die Versionierung der API bedenken. So sollten Ressourcen dann bspw. über URLS wie <code>/v1/person/1234</code> bereitgestellt werden. </p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/allgemein/restful-webservices-mit-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GWT – den CI Build beschleunigen</title>
		<link>http://www.phphatesme.com/blog/allgemein/gwt-den-ci-build-beschleunigen/</link>
		<comments>http://www.phphatesme.com/blog/allgemein/gwt-den-ci-build-beschleunigen/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 09:55:03 +0000</pubDate>
		<dc:creator>php monkeys</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[phmnetwork]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.phpmonkeys.de/?p=1614</guid>
		<description><![CDATA[Um ein CI-System sinnvoll zu nutzen, muss der Build möglichst schnell laufen. Dazu gehören neben dem Unittests auch der GWT Compiler und an beiden Stellen gibt es einige Optimierungsmöglichkeiten die wir heute mal betrachten werden.
GWTTestCase auf gwt-unit-test migrieren
GWT bietet ...]]></description>
			<content:encoded><![CDATA[<p>Um ein CI-System sinnvoll zu nutzen, muss der Build möglichst schnell laufen. Dazu gehören neben dem Unittests auch der GWT Compiler und an beiden Stellen gibt es einige Optimierungsmöglichkeiten die wir heute mal betrachten werden.<br />
<more></p>
<p><em>GWTTestCase auf gwt-unit-test migrieren</em><br />
GWT bietet <a href="http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/junit/client/GWTTestCase.html" ><code>GWTTestCase</code></a> um UnitTests zu programmieren. Der Nachteil an dieser Methode ist jedoch, dass so bei einem UnitTest extra ein TomCat Server gestartet werden muss. Dies ist relativ zeitaufwändig und kann durch die Benutzung der <a href="http://code.google.com/p/gwt-test-utils/" >gwt-test-utils</a> verbessert werden. Die gwt-test-utils wurden bereits <a href="http://www.phpmonkeys.de/2010/09/08/gwt-unittests-mal-anders/" title="GWT-Unittests mal anders" >vorgestellt</a>. Die Funktionsweise ist so, dass der Teil der möglichst dicht am Javascript liegt durch sogenannte Patcher überschrieben wird. Das heißt, dass für die Testdurchführung nur noch Java benutzt werden muss. Kritisch an diesem Verfahren ist, dass man so nicht dem compilierten Code testet. Man sollte aber in GWT soviel Vertrauen haben, dass der GWT-Compiler den Java Code ordnungsgemäß in JavaScript-Code transformiert. Auf der anderen Seite kann man so neben der von Google gepatchten Emma Version auch Cobertura nutzen, um die Testabdeckung zu bestimmen. Insbesondere die Auswertung im Hudson/Jenkins CI finde ich persönlich bei Cobertura übersichtlicher.</p>
<p><em>Junit-Test in einer VM ausführen &#8211; forkmode sinnvoll nutzen</em><br />
JUnit hält <a href="http://ant.apache.org/manual/Tasks/junit.html" >3 Optionen</a> bereit wie die Erzeugung neuer VMs verwaltet wird. So kann in einem Batch, einem Test oder für den gesamten Testlauf eine neue VM erzeugt werden. Die Standard-Einstellung ist per Test, was bedeutet, dass jeder Test eine eigene VM nutzt. Diese muss als erzeugt und nach dem Test verworfen werden. Wenn man am Class-Loader keine größeren Manipulationen vornimmt, kann man aber auch mehr Test in einer VM durchführen. So spart man sich insbesondere bei vielen Test die Erzeugung und das Verwerfen von neuen VMs. Aus persönlicher Erfahrung kann ich sagen, dass dies wirklich sehr viel Zeit einsparen kann. So konnte ein Testdurchlauf nur durch diese Option von über 45 Minuten auf weniger als 5 Minuten reduziert werden. </p>
<p><em>SoftPermutations</em><br />
GWT compiliert für jede Sprache und für jeden Browser eine eigene JavaScript-Datei, sodass ein Benutzer nur den relevanten Code herunterladen muss. Lokal compilieren daher viele Entwickler eine spezialisierte Version, die nur in diesem lokalen Umfeld nutzbar sind. Zum Beispiel eine deutsche Version die für den Firefox optimiert ist. Auf dem CI-System ist dies aber zu speziell und man benötigt hier die Versionen für alle Browser. Es gibt aber die Option &#8220;<a href="http://code.google.com/p/google-web-toolkit/wiki/SoftPermutations" >collapse-all-properties</a>&#8220;, welche für das CI-Sytem sehr gut geeigent ist. Dadurch wird statt vieler verschiedender JavaScript Dateien eine große Datei compiliert und die Optimierungen durch Factories realisiert. D.h. es wird eine spezialisierte Version benutzt, wenn dies vom Browser her erforderlich ist. So wird das Deferred Binding nun realisiert. Der Vorteil ist, dass auf diese Art die Build-Geschwindigkeit weiter verbessert wird. Von ca 30 Minuten konnten wir den GWT-Compiler so auf wenige Minuten reduzieren.</p>
<p><em>Fazit</em>:<br />
Mit diesen 3 Änderungen ist es möglich einen langlaufenden Build wieder in einen annehmbaren Zeitbereich zu überführen. In einem Projekt von ca 2,5 Stunden auf 15 Minuten.</p>
<p class="wp-flattr-button"></p>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/allgemein/gwt-den-ci-build-beschleunigen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Meist gelesene Artikel, Besucherzahlen und Besucherzeiten von 2011 hier im Blog</title>
		<link>http://www.phphatesme.com/blog/allgemein/meist-gelesene-artikel-besucherzahlen-und-besucherzeiten-von-2011-hier-im-blog/</link>
		<comments>http://www.phphatesme.com/blog/allgemein/meist-gelesene-artikel-besucherzahlen-und-besucherzeiten-von-2011-hier-im-blog/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 09:10:57 +0000</pubDate>
		<dc:creator>PHP Gangsta</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[phmnetwork]]></category>

		<guid isPermaLink="false">http://www.phpgangsta.de/?p=4147</guid>
		<description><![CDATA[Hier eine Top 10 Liste der Artikel die die meisten Besucher angezogen haben: Die Zahlen sind natürlich mit Vorsicht zu genießen da einige Artikel so kurz sind dass sie komplett auf der Übersichtsseite erscheinen. Auch könnten die Zahlen verfälscht sein da ich ja einen Full-Feed anbiete, sodass eventuell Artikel mit Tabellen und Bildern Vorteile haben [...]<br /><br /> Ähnliche Artikel:<ol><li><a href="http://www.phpgangsta.de/gratulation-an-php-hates-me-fur-500-eindrucksvolle-artikel" rel="bookmark" title="Gratulation an “PHP Hates Me” für 500 eindrucksvolle Artikel!">Gratulation an &#8220;PHP Hates Me&#8221; für 500 eindrucksvolle Artikel!</a></li><li><a href="http://www.phpgangsta.de/mein-artikel-uber-den-yubikey-im-phpmagazin-3-11" rel="bookmark" title="Mein Artikel über den Yubikey im PHP Magazin 3.11">Mein Artikel über den Yubikey im PHP Magazin 3.11</a></li><li><a href="http://www.phpgangsta.de/blog-url-struktur-geandert" rel="bookmark" title="Blog URL Struktur geändert">Blog URL Struktur geändert</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>Hier eine Top 10 Liste der Artikel die die meisten Besucher angezogen haben:</p><table id="wp-table-reloaded-id-19-no-1" class="wp-table-reloaded wp-table-reloaded-id-19"><thead><tr class="row-1 odd"><th class="column-1">Platz</th><th class="column-2">Artikel</th><th class="column-3">Veröffentlichungsdatum</th><th class="column-4">Kommentare</th></tr></thead><tbody><tr class="row-2 even"><td class="column-1">10</td><td class="column-2"><a href="http://www.phpgangsta.de/html-5-und-javascript-5-clientseitige-datenbanken" >HTML 5 und Javascript 5: Clientseitige Datenbanken</a></td><td class="column-3">6. Januar 2010</td><td class="column-4">7</td></tr><tr class="row-3 odd"><td class="column-1">9</td><td class="column-2"><a href="http://www.phpgangsta.de/schoener-hashen-mit-bcrypt" >Schöner hashen mit bcrypt</a></td><td class="column-3">18. Juli 2011</td><td class="column-4">30</td></tr><tr class="row-4 even"><td class="column-1">8</td><td class="column-2"><a href="http://www.phpgangsta.de/php-in_array-die-performance-bremse" >PHP in_array() die Performance-Bremse</a></td><td class="column-3">26. Januar 2011</td><td class="column-4">20</td></tr><tr class="row-5 odd"><td class="column-1">7</td><td class="column-2"><a href="http://www.phpgangsta.de/screenshots-von-webseiten-erstellen-mit-php" >Screenshots von Webseiten erstellen mit PHP</a></td><td class="column-3">21. Juli 2011</td><td class="column-4">28</td></tr><tr class="row-6 even"><td class="column-1">6</td><td class="column-2"><a href="http://www.phpgangsta.de/mit-wetterdaten-arbeiten-yahoo-weather-api" >Mit Wetterdaten arbeiten: Yahoo Weather API</a></td><td class="column-3">24. Januar 2011</td><td class="column-4">2</td></tr><tr class="row-7 odd"><td class="column-1">5</td><td class="column-2"><a href="http://www.phpgangsta.de/expires-header-und-komprimierung-aktivieren-im-apache2" >Expires-Header und Komprimierung aktivieren im Apache2</a></td><td class="column-3">8. März 2010</td><td class="column-4">16</td></tr><tr class="row-8 even"><td class="column-1">4</td><td class="column-2"><a href="http://www.phpgangsta.de/pimcore-interessantes-opensource-cms" >Pimcore – Interessantes OpenSource CMS</a></td><td class="column-3">23. Dezember 2010</td><td class="column-4">35</td></tr><tr class="row-9 odd"><td class="column-1">3</td><td class="column-2"><a href="http://www.phpgangsta.de/phpstorm-2-0-meine-favorisierte-ide-fur-php" >PHPStorm 2.0 – meine favorisierte IDE für PHP</a></td><td class="column-3">22. März 2011</td><td class="column-4">46</td></tr><tr class="row-10 even"><td class="column-1">2</td><td class="column-2"><a href="http://www.phpgangsta.de/mit-wetterdaten-arbeiten-google-weather-api" >Mit Wetterdaten arbeiten: Google Weather API</a></td><td class="column-3">18. Januar 2011</td><td class="column-4">7</td></tr><tr class="row-11 odd"><td class="column-1">1</td><td class="column-2"><a href="http://www.phpgangsta.de/passwortmythen-oder-%E2%80%9Ewas-du-schon-immer-uber-passworter-wusstest-aber-nie-zu-sagen-wagtest%E2%80%9C" >Passwortmythen oder "Was Du schon immer über Passwörter wusstest, aber nie zu sagen wagtest"</a></td><td class="column-3">11. Juli 2011</td><td class="column-4">82</td></tr></tbody></table><p><span id="more-4147"></span>Die Zahlen sind natürlich mit Vorsicht zu genießen da einige Artikel so kurz sind dass sie komplett auf der Übersichtsseite erscheinen. Auch könnten die Zahlen verfälscht sein da ich ja einen Full-Feed anbiete, sodass eventuell Artikel mit Tabellen und Bildern Vorteile haben wenn sie in Feed-Readern nicht so gut aussehen und die Besucher auf die Seite kommen. Neue Artikel die erst im Dezember geschrieben wurden hatten natürlich auch weniger Zeit Besucher zu sammeln.</p><p>Insgesamt war das Jahr 2011 besser als das Vorjahr was die Besucher pro Tag angeht. Aber man kann auch erkennen dass es kein riesen Sprung nach vorne war, ich muss nach wie vor um jeden Besucher kämpfen <img src='http://www.phpgangsta.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p><p><img class="alignnone size-full wp-image-4150" title="2011 Page Views" src="http://www.phpgangsta.de/wp-content/uploads/2011_page_views.png" alt="" width="714" height="139" /></p><p>Interessanterweise sieht man im nächsten Bild dass die durchschnittliche Besucherzeit etwas zurückgegangen ist, 2010 waren es 6:37 Minuten und 2011 waren es 5:24 Minuten. Ich weiß nicht ob das an kürzeren Artikeln lag oder ob einfach weniger rumgeklickt wurde da wiederkehrende Besucher eher weniger rumklicken als neue Besucher. Die wiederkehrenden Besucher sind von 45,4% im Jahr 2010 auf 50,2% im Jahr 2011 gestiegen.</p><p><img class="alignnone size-full wp-image-4151" title="2011 Visit Time" src="http://www.phpgangsta.de/wp-content/uploads/2011_visit_time.png" alt="" width="714" height="137" /></p><p>Ich bin nach wie vor dankbar für Ideen, Anmerkungen und Vorschläge für den Blog. Interessant ist übrigens dass die Gastartikel auf Platz 1, 4, 8 und 10 sind, es lohnt sich also für euch Gastartikel zu schreiben, sie werden gelesen!</p> <br/><br/><p>Ähnliche Artikel:</p><ol><li><a href='http://www.phpgangsta.de/gratulation-an-php-hates-me-fur-500-eindrucksvolle-artikel' rel='bookmark' title='Gratulation an &#8220;PHP Hates Me&#8221; für 500 eindrucksvolle Artikel!'>Gratulation an &#8220;PHP Hates Me&#8221; für 500 eindrucksvolle Artikel!</a></li><li><a href='http://www.phpgangsta.de/mein-artikel-uber-den-yubikey-im-phpmagazin-3-11' rel='bookmark' title='Mein Artikel über den Yubikey im PHP Magazin 3.11'>Mein Artikel über den Yubikey im PHP Magazin 3.11</a></li><li><a href='http://www.phpgangsta.de/blog-url-struktur-geandert' rel='bookmark' title='Blog URL Struktur geändert'>Blog URL Struktur geändert</a></li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/allgemein/meist-gelesene-artikel-besucherzahlen-und-besucherzeiten-von-2011-hier-im-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Letzte Aktion in 2011: Server via IPv6 verfügbar machen</title>
		<link>http://www.phphatesme.com/blog/allgemein/letzte-aktion-in-2011-server-via-ipv6-verfugbar-machen/</link>
		<comments>http://www.phphatesme.com/blog/allgemein/letzte-aktion-in-2011-server-via-ipv6-verfugbar-machen/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 11:13:42 +0000</pubDate>
		<dc:creator>PHP Gangsta</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[phmnetwork]]></category>

		<guid isPermaLink="false">http://www.phpgangsta.de/?p=4119</guid>
		<description><![CDATA[So, damit es nicht heißt mein Blog wäre in 2011 nicht via IPv6 erreichbar gewesen ist meine letzte Aktion dieses Jahr meinen Webserver via IPv6 erreichbar zu machen. Da mein Hoster nun auch endlich IPv6 für virtuelle Server anbietet war das ziemlich einfach: Man mußte im Kundenbereich die IPv6 Konnektivität aktivieren und 10 Minuten warten. [...]<br /><br /> Ähnliche Artikel:<ol><li><a href="http://www.phpgangsta.de/zuhause-im-ipv6-web-surfen-teil2-windows" rel="bookmark" title="Zuhause im IPv6 Web surfen (Teil2: Windows)">Zuhause im IPv6 Web surfen (Teil2: Windows)</a></li><li><a href="http://www.phpgangsta.de/zuhause-im-ipv6-web-surfen" rel="bookmark" title="Zuhause im IPv6 Web surfen (Teil1: Ubuntu)">Zuhause im IPv6 Web surfen (Teil1: Ubuntu)</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-4136" title="IPv6 ready" src="http://www.phpgangsta.de/wp-content/uploads/ipv6-small.png" alt="" width="88" height="31" />So, damit es nicht heißt mein Blog wäre in 2011 nicht via <a href="http://www.phpgangsta.de/tag/ipv6" >IPv6</a> erreichbar gewesen ist meine letzte Aktion dieses Jahr meinen Webserver via IPv6 erreichbar zu machen. Da mein Hoster nun auch endlich IPv6 für virtuelle Server anbietet war das ziemlich einfach: Man mußte im Kundenbereich die IPv6 Konnektivität aktivieren und 10 Minuten warten. Und schon war der Server via IPv6 erreichbar:</p><pre class="brush: bash; title: ; notranslate">$ ifconfig venet0 | grep inet6
inet6-Adresse: 2a01:238:42b6:2a00:e661:84eb:4a08:ee54/128 Gültigkeitsbereich:Global
inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine</pre><p>Dann mußte ich gerade noch den nginx neu kompilieren für die IPv6 Funktionalität (wurde eh mal wieder Zeit, war noch eine alte 0.8.53 Version), sodass ich nun die aktuelle 1.0.11 verwende:</p><p><span id="more-4119"></span></p><pre class="brush: bash; title: ; notranslate">$ wget http://nginx.org/download/nginx-1.0.11.tar.gz
$ tar -xzvf nginx-1.0.11.tar.gz
$ cd nginx-1.0.11
$ ./configure --with-http_ssl_module --without-http_memcached_module --with-http_gzip_static_module --with-ipv6
$ make
$ sudo make install
$ sudo /etc/init.d/nginx restart</pre><p>Und schon war die neue Version installiert, nun mit IPv6 Unterstützung:</p><pre class="brush: bash; title: ; notranslate">$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.0.11
built by gcc 4.4.5 (Debian 4.4.5-8)
TLS SNI support enabled
configure arguments: --with-http_ssl_module --without-http_memcached_module --with-http_gzip_static_module --with-ipv6</pre><p>Da ich in der nginx.conf aktuell nur eine server-Directive konfiguriert habe, da ich alles auf den dahinterliegenden Apache weiterleite, und bisher auf allen (sprich einer) IPv4 Adresse gelauscht habe kann ich das einfach ändern auf &#8220;alle IPv4+IPv6 Adressen&#8221;:</p><pre class="brush: plain; title: ; notranslate">listen [::]:80;</pre><p>Würde ich nur auf IPv6-Adressen lauschen wollen müßte ich den ipv6only Parameter nutzen:</p><pre class="brush: plain; title: ; notranslate">listen [::]:80 default ipv6only=on;</pre><p>Da ich nur eine öffentliche IPv6 Adresse habe (und auf localhost nicht lauschen möchte) könnte ich auch folgendes nehmen:</p><pre class="brush: plain; title: ; notranslate">listen [2a01:238:42b6:2a00:e661:84eb:4a08:ee54]:80;</pre><p>Nach einem erneuten Restart von nginx kann man nun meinen Server anpingen (vorausgesetzt man selbst hat IPv6 Verbindung zuhause, sonst natürlich nicht):</p><pre class="brush: bash; title: ; notranslate">$ ping6 2a01:238:42b6:2a00:e661:84eb:4a08:ee54
PING 2a01:238:42b6:2a00:e661:84eb:4a08:ee54(2a01:238:42b6:2a00:e661:84eb:4a08:ee54) 56 data bytes
64 bytes from 2a01:238:42b6:2a00:e661:84eb:4a08:ee54: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 2a01:238:42b6:2a00:e661:84eb:4a08:ee54: icmp_seq=2 ttl=64 time=0.068 ms</pre><p>So, was bleibt noch zu tun? Klar, DNS-Records anlegen. Für IPv6 sind das keine A Records sondern AAAA Records. Ich habe die folgenden angelegt:</p><pre class="brush: plain; title: ; notranslate">www.phpgangsta.de AAAA 2a01:238:42b6:2a00:e661:84eb:4a08:ee54
*.phpgangsta.de AAAA 2a01:238:42b6:2a00:e661:84eb:4a08:ee54
ipv6.phpgangsta.de AAAA 2a01:238:42b6:2a00:e661:84eb:4a08:ee54</pre><p>Damit ist die Domain incl. aller Subdomains nun auch via IPv6 erreichbar. Zur Überprüfung gibt es auch <a href="http://ipv6-test.com/validate.php" >kleine Online Test Scripte</a> mit denen man schauen kann ob eine <a href="http://www.ip6test.com/server.php" >Domain via IPv6</a> erreichbar ist. Ein weiteres <a href="http://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-ping.php" >kleines Online-Tool für IPv6 Ping, Trace und Port Check</a>.</p><p><img class="alignnone size-full wp-image-4133" title="ipv6.phpgangsta.de" src="http://www.phpgangsta.de/wp-content/uploads/ipv6.phpgangsta.de_.png" alt="" width="722" height="749" /></p><h3>Mailserver:</h3><p>Da es so einfach und schnell ging habe ich auch noch schnell den Mailserver IPv6 ready gemacht. Dazu einfach die Postfix main.cf öffnen und folgende Zeilen ändern:</p><pre class="brush: plain; title: ; notranslate">inet_interfaces = all
inet_protocols = all</pre><p>Wer es nicht mag auf allen IP-Adressen zu lauschen kann sie natürlich auch auflisten:</p><pre class="brush: plain; title: ; notranslate">inet_interfaces = 127.0.0.1, 85.214.28.26, 2a01:238:42b6:2a00:e661:84eb:4a08:ee54, ::1
inet_protocols = ipv4, ipv6</pre><p>Danach den Postfix neustarten, fertig!</p><pre class="brush: plain; title: ; notranslate">telnet 2a01:238:42b6:2a00:e661:84eb:4a08:ee54 25</pre><p>Eingehende E-Mails können nun also auch über IPv6 empfangen werden. Hier sollte man dann darauf achten dass der DNS-MX-Eintrag richtig ist:</p><pre class="brush: bash; title: ; notranslate">$ dig -t MX phpgangsta.de +short
10 mail.phpgangsta.de.

$ dig -t AAAA mail.phpgangsta.de +short
2a01:238:42b6:2a00:e661:84eb:4a08:ee54</pre><p>Ob ausgehende E-Mails auch über IPv6 versendet werden kann man testen indem man eine E-Mail an autoreply@v6-mail.com schickt.</p><p>In /var/log/mail.log findet sich dann die folgende Zeile:</p><pre class="brush: plain; title: ; notranslate">Dec 31 02:20:51 h1440682 postfix/smtp[8177]: 68FB149CC961: to=&lt;autoreply@v6-mail.com&gt;,
relay=v6-mail.com[2001:470:18:16c::2]:25, delay=3, delays=1/0.01/1.2/0.67, dsn=2.0.0,
status=sent (250 2.0.0 Ok: queued as 9C566E401E0)</pre><h3>Fallstricke, Achtung!</h3><p>Wenn man IPv6 aktiviert sollte man natürlich über ein paar Dinge nachdenken. Beispielsweise wie die (PHP-) Applikationen mit IPv6 klarkommen, denn in $_SERVER['REMOTE_ADDR'] steht plötzlich eine IPv6 Adresse drin. Auch beim Mailserver muss man aufpassen falls man sich bisher auf IP-Blacklists (sogenannte DNSBLs) verlassen hat, bei IPv6 gibt es die nicht.</p><p>Falls man Firewall Regeln definiert hat müssen diese für IPv6 natürlich auch gemacht werden&#8230;</p><p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p><p>Wie weit seid ihr privat und auf der Arbeit mit IPv6? Sind eure Blogs, Firmenwebserver etc. schon via IPv6 erreichbar?</p> <br/><br/><p>Ähnliche Artikel:</p><ol><li><a href='http://www.phpgangsta.de/zuhause-im-ipv6-web-surfen-teil2-windows' rel='bookmark' title='Zuhause im IPv6 Web surfen (Teil2: Windows)'>Zuhause im IPv6 Web surfen (Teil2: Windows)</a></li><li><a href='http://www.phpgangsta.de/zuhause-im-ipv6-web-surfen' rel='bookmark' title='Zuhause im IPv6 Web surfen (Teil1: Ubuntu)'>Zuhause im IPv6 Web surfen (Teil1: Ubuntu)</a></li></ol>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/allgemein/letzte-aktion-in-2011-server-via-ipv6-verfugbar-machen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

