<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Mayflower Blog - PHP-DE</title>
    <link>http://blog.mayflower.de/</link>
    <description>the php &amp; javascript experts</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.5.3 - http://www.s9y.org/</generator>
    <pubDate>Thu, 02 Feb 2012 08:23:42 GMT</pubDate>

    <image>
        <url>http://blog.mayflower.de/templates/mayflower/img/s9y_banner_small.png</url>
        <title>RSS: Mayflower Blog - PHP-DE - the php &amp; javascript experts</title>
        <link>http://blog.mayflower.de/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Websiteoptimierung mit dynaTrace AJAX Edition - Vortrag@Würzburg</title>
    <link>http://blog.mayflower.de/archives/830-Websiteoptimierung-mit-dynaTrace-AJAX-Edition-VortragWuerzburg.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/830-Websiteoptimierung-mit-dynaTrace-AJAX-Edition-VortragWuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=830</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=830</wfw:commentRss>
    

    <author>nospam@example.com (Jochen Seelig)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 02.02.2012&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Gneisenaustraße 10/11, 97074 Würzburg, Bushaltestelle Barbarastraße mit der Linie 28).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Websiteoptimierung mit dynaTrace AJAX Edition&lt;/b&gt;&quot;. Der Referent &lt;b&gt;Thomas Steur&lt;/b&gt; arbeitet als Developer bei der Mayflower GmbH am Standort Würzburg.
&lt;br /&gt;&lt;br /&gt;
Sie wollten schon immer mal wissen, was Ihre Webseite im Browser wirklich ausbremst und wo Optimierungsbedarf besteht? Dann geht es nicht nur Ihnen so, denn die Geschwindigkeit einer Webseite bekommt eine immer größere Bedeutung. Oft wird dabei viel Zeit investiert, um die Ausführung an Stellen zu beschleunigen, welche sich am Ende kaum lohnen. Dabei lässt sich gerade im Browser mit einfachen Mitteln oft sehr viel Zeit gewinnen.&lt;br /&gt;&lt;br /&gt;

Thomas Steur, Senior Developer bei der Mayflower GmbH am Standort Würzburg, zeigt Ihnen anhand eines Beispiels, wie Sie mit der kostenlosen Software dynaTrace AJAX Edition Problemstellen innerhalb einer Webseite entdecken. Die Software unterstützt das Analysieren von Webseiten mit den Browsern Internet Explorer und Firefox.&lt;br /&gt;&lt;br /&gt;

Ausgewertet wird dabei das Rendering der Seite im Browser, die CPU-Auslastung, das Ausführen von JavaScript, sowie das Cachen und Verarbeiten von Ressourcen. Dabei wird sichtbar gemacht, wie der Browser die Webseite im Detail verarbeitet. &lt;br /&gt;&lt;br /&gt;


Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?oe=utf-8&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;um=1&amp;ie=UTF-8&amp;q=mayflower+w%C3%BCrzburg&amp;fb=1&amp;gl=de&amp;hq=mayflower&amp;hnear=0x47a2902012da4dd9:0x41db728f06209a0,W%C3%BCrzburg&amp;cid=0,0,2171916674445927472&amp;ei=AhzCTprlBszBtAb_qJmCDA&amp;sa=X&amp;oi=local_result&amp;ct=image&amp;ved=0CAcQ_BI&quot; title=&quot;Anfahrt Mayflowerbüro Würzburg&quot;&gt;Anfahrt Büro Würzburg&lt;/a&gt; 
    </content:encoded>

    <pubDate>Tue, 31 Jan 2012 09:45:48 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/830-guid.html</guid>
    <category>ajax</category>
<category>thomas steur</category>
<category>websiteoptimierung</category>

</item>
<item>
    <title>Real-Time-Monitoring - Vortrag@München</title>
    <link>http://blog.mayflower.de/archives/829-Real-Time-Monitoring-VortragMuenchen.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/829-Real-Time-Monitoring-VortragMuenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=829</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=829</wfw:commentRss>
    

    <author>nospam@example.com (Jochen Seelig)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 02.02.2012&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Real-Time-Monitoring&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
Jeder kennt Aussagen wie: Haben wir es schneller gemacht? Bringt uns das
neue Feature mehr Geld oder Besucher? Haben wir es kaputt gemacht und wann?
All diese Fragen können mittels Monitoring, implementiert durch nur
wenigen Zeilen Code, einfach beantwortet werden.
Anhand von Beispielen soll in  dem Vortrag aufgezeigt werden, wie einfach
man mit Graphite, StatsD, gDash und weiteren Tools ein Monitoring
aufbauen kann das den kompletten Stack der Applikation abdeckt.

&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; 
    </content:encoded>

    <pubDate>Tue, 31 Jan 2012 09:36:28 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/829-guid.html</guid>
    <category>graphite</category>
<category>max köhler</category>
<category>monitoring</category>
<category>real-time-monitoring</category>
<category>statsd</category>

</item>
<item>
    <title>Javascript Debugging - Vortrag@München</title>
    <link>http://blog.mayflower.de/archives/826-Javascript-Debugging-VortragMuenchen.html</link>
            <category>Events</category>
            <category>JavaScript</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/826-Javascript-Debugging-VortragMuenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=826</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=826</wfw:commentRss>
    

    <author>nospam@example.com (Jochen Seelig)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 26.01.2012&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Javascript Debugging / Remote Debugging&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
Probleme beim Debugging von JavaScript? Das sollte nicht sein!
Vorgestellt werden Language Basics, Unterschiede der Browser-JS Engines
und verschiedene bekannte Probleme - auch mit dem Internet Explorer. Wie
gehe ich beim Debugging mit JavaScript vor? Welche Möglichkeiten bieten
mir die verschiedenen Tools? Ein weiterer Teil widmet sich dem Thema
Remote Debugging im Mobile Web.

&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Mon, 23 Jan 2012 12:25:33 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/826-guid.html</guid>
    <category>debugging</category>
<category>javascript</category>
<category>markus geiger</category>

</item>
<item>
    <title>Datenbankentwicklung mit Liquibase - Vortrag@Würzburg</title>
    <link>http://blog.mayflower.de/archives/825-Datenbankentwicklung-mit-Liquibase-VortragWuerzburg.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/825-Datenbankentwicklung-mit-Liquibase-VortragWuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=825</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=825</wfw:commentRss>
    

    <author>nospam@example.com (Jochen Seelig)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 26.01.2012&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Gneisenaustraße 10/11, 97074 Würzburg, Bushaltestelle Barbarastraße mit der Linie 28).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Datenbankentwicklung mit Liquibase&lt;/b&gt;&quot;. Der Referent &quot;&lt;b&gt;Alberto Assmann&lt;/b&gt;&quot; arbeitet als Developer bei der Mayflower GmbH am Standort Würzburg.
&lt;br /&gt;&lt;br /&gt;
In der Webentwicklung gehört Agilität zu den großen Anforderungen um
wettbewerbsfähig zu bleiben.
Viele Vorgehensweisen und Tools, wie Scrum und Coninuous Improvements,
sind dafür bereits etabliert.
Nur auf Datenbankseite fehlen in vielen Projekten entsprechende
Konzepte, um agil zu entwickeln.&lt;br /&gt;&lt;br /&gt;

Hierfür stellt Liquibase ein Tool zur Verfügung welches die mangelnde
Agilität in der Datenbankentwicklung ausgleichen kann.
Im Vortrag wird Alberto Assmann ein Überblick über die vielfältigen
Möglichkeiten, die Liquibase anbietet, gegeben.
Hierzu gehören neben Algorithmen zum Datenbankrefactoring ohne
Datenverlust auch Tools zur Generierung von Datenbankdokumentationen und
Changesets, welche eine abstrakte Darstellung der Datenbankänderungen
repräsentieren.
Durch diese abstrakte Beschreibung von Änderungen ist es möglich
Liquibase für verschiedenste Datenbanksysteme einzusetzen und so
flexibler auf neue Anforderungen an die Datenbank reagieren zu können.
&lt;br /&gt;&lt;br /&gt;

Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?oe=utf-8&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;um=1&amp;ie=UTF-8&amp;q=mayflower+w%C3%BCrzburg&amp;fb=1&amp;gl=de&amp;hq=mayflower&amp;hnear=0x47a2902012da4dd9:0x41db728f06209a0,W%C3%BCrzburg&amp;cid=0,0,2171916674445927472&amp;ei=AhzCTprlBszBtAb_qJmCDA&amp;sa=X&amp;oi=local_result&amp;ct=image&amp;ved=0CAcQ_BI&quot; title=&quot;Anfahrt Mayflowerbüro Würzburg&quot;&gt;Anfahrt Büro Würzburg&lt;/a&gt; 
    </content:encoded>

    <pubDate>Mon, 23 Jan 2012 11:42:03 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/825-guid.html</guid>
    <category>datenbankentwicklung</category>
<category>liquibase</category>
<category>mayflower</category>
<category>vortrag</category>

</item>
<item>
    <title>Map/Reduce anhand von Hadoop - Vortrag@Mayflower-München</title>
    <link>http://blog.mayflower.de/archives/824-MapReduce-anhand-von-Hadoop-VortragMayflower-Muenchen.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/824-MapReduce-anhand-von-Hadoop-VortragMayflower-Muenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=824</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=824</wfw:commentRss>
    

    <author>nospam@example.com (Wencke Hauschild-Feldmann)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 19.01.2012&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Map/Reduce anhand von Hadoop&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
Für das Verarbeiten von großen Datenmengen ist Map/Reduce der Algorithmus schlecht hin. Was sich dahinter verbirgt und wie man damit die eigene Anwendung verbessert soll der Vortrag &quot;Map/Reduce an Hand von Hadoop&quot; erklären. Dabei wird besonderer Wert darauf gelegt, mit HadooPHP, uns PHP Entwicklern das Schreiben von Mappern und Reducern zu vermitteln.  &lt;br /&gt;

&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Tue, 17 Jan 2012 10:33:53 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/824-guid.html</guid>
    
</item>
<item>
    <title>REST - Hypermedia und Sicherheit - Vortrag@Mayflower-Würzburg</title>
    <link>http://blog.mayflower.de/archives/823-REST-Hypermedia-und-Sicherheit-VortragMayflower-Wuerzburg.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/823-REST-Hypermedia-und-Sicherheit-VortragMayflower-Wuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=823</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=823</wfw:commentRss>
    

    <author>nospam@example.com (Wencke Hauschild-Feldmann)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 19.01.2012&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Gneisenaustraße 10/11, 97074 Würzburg, Bushaltestelle Barbarastraße mit der Linie 28).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;REST - Hypermedia und Sicherheit &lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
REST nutzt mit Hypermedia eines der grundlegendsten Konzepte des www: die Verknüpfung zwischen Ressourcen und die damit verbundene Steuerung der Applikation. Doch dieses Konzept gilt nicht nur für uns, die wir mit dem Browser interagieren, sondern auch für die Kommunikation von Anwendung-zu-Anwendung. 

Doch erfolgt REST immer vom Server bis direkt zum Client? Ab wann ist eine Anwendung vielleicht doch nicht mehr so RESTful, wie sie gegenüber dem Product Owner versprochen wurde? Spätestens mit der Implementierung von Sicherheitskonzepten muss man sich dieser Frage zwingend stellen. Denn wenn man Authentifizierungsinformationen überträgt, kippt ein weiteres Hauptkonzept von REST: die statuslose Kommunikation. 

Jens Broos, Developer bei Mayflower, vermittelt Beispiele und Grundgedanken zum Thema Hypermedia und gibt einen Einstieg in die Sicherheitsmechanismen von RESTful WebServices. 

Die Präsentation erweitert den Vortrag RESTful WebServices von Paul Seiffert, der am 20.10.2011 gehalten wurde. Den Foliensatz findet man unter: 
http://www.slideshare.net/mayflowergmbh/restful-webservices-10103497 
&lt;br /&gt;&lt;br /&gt;

Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?oe=utf-8&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;um=1&amp;ie=UTF-8&amp;q=mayflower+w%C3%BCrzburg&amp;fb=1&amp;gl=de&amp;hq=mayflower&amp;hnear=0x47a2902012da4dd9:0x41db728f06209a0,W%C3%BCrzburg&amp;cid=0,0,2171916674445927472&amp;ei=AhzCTprlBszBtAb_qJmCDA&amp;sa=X&amp;oi=local_result&amp;ct=image&amp;ved=0CAcQ_BI&quot; title=&quot;Anfahrt Mayflowerbüro Würzburg&quot;&gt;Anfahrt Büro Würzburg&lt;/a&gt; 
    </content:encoded>

    <pubDate>Tue, 17 Jan 2012 10:24:03 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/823-guid.html</guid>
    
</item>
<item>
    <title>Map/Reduce anhand von Hadoop - Vortrag@Mayflower-Würzburg</title>
    <link>http://blog.mayflower.de/archives/809-MapReduce-anhand-von-Hadoop-VortragMayflower-Wuerzburg.html</link>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/809-MapReduce-anhand-von-Hadoop-VortragMayflower-Wuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=809</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=809</wfw:commentRss>
    

    <author>nospam@example.com (Wencke Hauschild-Feldmann)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 12.01.2012&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Gneisenaustraße 10/11, 97074 Würzburg, Bushaltestelle Barbarastraße mit der Linie 28).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Map/Reduce anhand von Hadoop&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
Für das Verarbeiten von großen Datenmengen ist Map/Reduce der Algorithmus schlecht hin.
Was sich dahinter verbirgt und wie man damit die eigene Anwendung verbessert soll der Vortrag &quot;Map/Reduce an Hand von Hadoop&quot; erklären.
Dabei wird besonderer Wert darauf gelegt, mit HadooPHP, uns PHP Entwicklern das Schreiben von Mappern und Reducern zu vermitteln. 
&lt;br /&gt;&lt;br /&gt;

Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?oe=utf-8&amp;rls=org.mozilla:de:official&amp;client=firefox-a&amp;um=1&amp;ie=UTF-8&amp;q=mayflower+w%C3%BCrzburg&amp;fb=1&amp;gl=de&amp;hq=mayflower&amp;hnear=0x47a2902012da4dd9:0x41db728f06209a0,W%C3%BCrzburg&amp;cid=0,0,2171916674445927472&amp;ei=AhzCTprlBszBtAb_qJmCDA&amp;sa=X&amp;oi=local_result&amp;ct=image&amp;ved=0CAcQ_BI&quot; title=&quot;Anfahrt Mayflowerbüro Würzburg&quot;&gt;Anfahrt Büro Würzburg&lt;/a&gt; 
    </content:encoded>

    <pubDate>Tue, 10 Jan 2012 13:00:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/809-guid.html</guid>
    
</item>
<item>
    <title>One-Click-Deployment mit Jenkins - Vortrag@Mayflower-München</title>
    <link>http://blog.mayflower.de/archives/822-One-Click-Deployment-mit-Jenkins-VortragMayflower-Muenchen.html</link>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/822-One-Click-Deployment-mit-Jenkins-VortragMayflower-Muenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=822</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=822</wfw:commentRss>
    

    <author>nospam@example.com (Wencke Hauschild-Feldmann)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 12.01.2012&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;One-Click-Deployment mit Jenkins&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
Facebook macht es, Flickr macht, vielleicht willst du es auch machen? Heute nutzen wir agile Software-Entwicklungsmethoden und wir wollen unsere Software öfter als einmal im Monat deployen. Der Vortrag demonstriert an einem aktuellen Beispiel, wie man mit nur einem Mausklick seine Software automatisiert deployen kann.  &lt;br /&gt;

&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Tue, 10 Jan 2012 12:25:03 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/822-guid.html</guid>
    
</item>
<item>
    <title>23.12. Verpacktes in PHP</title>
    <link>http://blog.mayflower.de/archives/820-23.12.-Verpacktes-in-PHP.html</link>
            <category>Development</category>
            <category>Labs</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/820-23.12.-Verpacktes-in-PHP.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=820</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=820</wfw:commentRss>
    

    <author>nospam@example.com (Alberto Assmann)</author>
    <content:encoded>
    Viele dürften sich heute Abend über die bunt verpackten Geschenke unter dem Baum freuen.&lt;br /&gt;
Um Verpacktes soll es auch hinter dem letzten Adventskalendertürchen gehen. &lt;br /&gt;
Genauer um die PHAR Erweiterung von PHP.&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://blog.mayflower.de/archives/820-23.12.-Verpacktes-in-PHP.html#extended&quot;&gt;Continue reading &quot;23.12. Verpacktes in PHP&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 23 Dec 2011 08:03:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/820-guid.html</guid>
    <category>archive</category>
<category>build</category>
<category>deployment</category>
<category>phar</category>

</item>
<item>
    <title>22.12. Zend Framework und BackboneJs</title>
    <link>http://blog.mayflower.de/archives/821-22.12.-Zend-Framework-und-BackboneJs.html</link>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/821-22.12.-Zend-Framework-und-BackboneJs.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=821</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=821</wfw:commentRss>
    

    <author>nospam@example.com (Sebastian Springer)</author>
    <content:encoded>
    &lt;p&gt;Dieser Blogartikel soll zeigen, wie schnell und unproblematisch es sein kann, eine einfache Applikation mit BackboneJs und Zend Framework umzusetzen.
Als konkretes Beispiel wird hier eine Applikation zur Verwaltung von Adressen verwendet. Mit dieser Anwendung soll das Zusammenspiel verschiedener Komponenten wie Datenbank, Service Layer mit Zend Framework und Applikations Layer in BackboneJs veranschaulicht werden.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;BackboneJs gibt als Kommunikationsinfrastruktur zum Backend REST vor. Aus diesem Grund soll in einem ersten Schritt Zend Framework so konfiguriert werden, dass es RESTful mit dem Frontend kommunizieren kann. Im nächsten Schritt wird die Applikationslogik seitens PHP umgesetzt und somit die konkrete Schnittstelle zum Frontend definiert. Aufbauend auf dieser Schnittstelle wird das Frontend umgesetzt.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://blog.mayflower.de/archives/821-22.12.-Zend-Framework-und-BackboneJs.html#extended&quot;&gt;Continue reading &quot;22.12. Zend Framework und BackboneJs&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 21 Dec 2011 16:17:17 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/821-guid.html</guid>
    
</item>
<item>
    <title>16.12. Eine Einführung in Behavior Driven Development</title>
    <link>http://blog.mayflower.de/archives/815-16.12.-Eine-Einfuehrung-in-Behavior-Driven-Development.html</link>
            <category>Development</category>
            <category>Open Source</category>
            <category>PHP</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/815-16.12.-Eine-Einfuehrung-in-Behavior-Driven-Development.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=815</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=815</wfw:commentRss>
    

    <author>nospam@example.com (Alberto Assmann)</author>
    <content:encoded>
    Testdriven Development, also das Schreiben eines oder mehrerer Tests bevor der eigentliche Code entsteht, ist inzwischen ein alter Hut. &lt;br /&gt;
Ein großer Nachteil dieses Verfahrens ist, dass im agilen Umfeld die User Stories erst verstanden werden müssen. &lt;br /&gt;
Wenn die Story aber falsch verstanden wurde, dann wird auch der Test falsch implementiert.
Knackpunkt ist also immer noch der Abgrund zwischen Analyse und Verdeutlichung der Geschäftsprozesse sowie dem korrekten Erfassen und testen eben jener. &lt;br /&gt;
Eine Lösung hierfür soll Behavior Driven Development - kurz BDD - bieten. &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://blog.mayflower.de/archives/815-16.12.-Eine-Einfuehrung-in-Behavior-Driven-Development.html#extended&quot;&gt;Continue reading &quot;16.12. Eine Einführung in Behavior Driven Development&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 15 Dec 2011 13:39:32 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/815-guid.html</guid>
    <category>bdd</category>
<category>behat</category>
<category>behavior driven development</category>
<category>php</category>
<category>test driven development</category>

</item>
<item>
    <title>13.12. Profiling mit xhprof</title>
    <link>http://blog.mayflower.de/archives/811-13.12.-Profiling-mit-xhprof.html</link>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/811-13.12.-Profiling-mit-xhprof.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=811</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=811</wfw:commentRss>
    

    <author>nospam@example.com (Markus Handschuh)</author>

    <pubDate>Mon, 12 Dec 2011 13:42:38 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/811-guid.html</guid>
    <category>facebook</category>
<category>github</category>
<category>pecl</category>
<category>performance</category>
<category>php extensions</category>
<category>php-de</category>
<category>php5</category>
<category>profiling</category>
<category>xhprof</category>

</item>
<item>
    <title>12.12. Javascript Metriken</title>
    <link>http://blog.mayflower.de/archives/806-12.12.-Javascript-Metriken.html</link>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/806-12.12.-Javascript-Metriken.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=806</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=806</wfw:commentRss>
    

    <author>nospam@example.com (Sebastian Springer)</author>
    <content:encoded>
    &lt;h2&gt;Metriken allgemein&lt;/h2&gt;
&lt;p&gt;Im IEEE-Standard 1061 sind Softwaremetriken wie folgt beschrieben:&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Eine Softwaremetrik ist eine Funktion, die eine Software-Einheit in einen Zahlenwert abbildet. Dieser berechnete Wert ist interpretierbar als Erfüllungsgrad einer Qualitätseigenschaft der Software-Einheit.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Jetzt stellt sich die Frage: Wozu benötigen wir Softwaremetriken überhaupt? Diese Frage lässt sich relativ leicht beantworten: Metriken werden benötigt, um Software und deren Qualität messbar zu machen. Hat man nun diese konkreten Werte vorliegen, kann man die Produkte verschiedener Anbieter anhand bestimmter Kriterien miteinander vergleichen, um eine Kaufentscheidung zu erleichtern. Ein weiterer Anwendungsfall für Softwaremetriken ist, dass sich mit ihnen der aktuelle Stand eines Projekts dokumentieren lässt. Werden Metriken über einen längeren Zeitraum gesammelt, erlauben sie Rückschlüsse auf die Entwicklung in einem Team und einem Projekt.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Das Thema Softwaremetriken ist nicht wirklich neu und auch nicht sonderlich spektakulär. Softwaremetriken sind seit vielen Jahren der Gegenstand von Forschung an verschiedensten Universitäten und damit sowohl praktisch als auch theoretisch sehr gut dokumentiert. Die Probleme treten allerdings schon auf, wenn man den ersten Schritt von der Theorie in die Praxis wagt: Für welche Programmiersprachen stehen welche Metriken zur Verfügung?&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Etwas Recherche im Internet zeigt, dass es für Java, C und C++ Werkzeuge zur Erfassung von Softwaremetriken wie Sand am Meer gibt. Diese Tatsache ist allerdings auch nicht weiter verwunderlich, da die Forschungsarbeiten in erster Linie auf diesen Sprachen aufbauen und auch die Notwendigkeit eines lückenlosen Qualitätsmonitorings in diesen Bereichen in großem Maß vorhanden ist.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;In unserer täglichen Arbeit sind Metriken im PHP Umfeld relevant. Auch hier existiert ein Satz an Werkzeugen, der die wichtigsten Metriken erfasst. Eine Anforderung an Messwerkzeuge ist, dass diese für den Entwickler keinen unnötigen Aufwand verursachen und die Metriken automatisiert erzeugt werden. Zu diesem Zweck generieren Werkzeuge wie beispielsweise phpunit, phpmd und phpcs Ausgaben in xml und lassen sich damit in eine Continuous Integration Plattform wie Jenkins integrieren. Ist dies erreicht, werden die Werkzeuge bei jedem Commit ins Versionskontrollsystem ausgeführt und es stehen allen am Projekt Beteiligten detaillierte Informationen über die Qualität des Quellcodes zur Verfügung.&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;Javascript Metriken&lt;/h2&gt;
&lt;p&gt;Da Javascript zunehmend an Bedeutung in der Entwicklung von Webapplikationen gewinnt, besteht auch hier Bedarf an Qualitätssicherung. Um eine möglichst hohe Qualität im Bereich Javascript durchzusetzen, müssen einige Voraussetzungen erfüllt sein. Das Wichtigste, was hier zu nennen wäre, ist die strikte Trennung von Darstellung und Logik. In der Praxis bedeutet dies: HTML stellt die Struktur der Seite und deren logischen Aufbau dar, CSS wird für die Darstellung und das Layouting verwendet und Javascript beinhaltet die Frontendlogik. Diese drei Bereiche sollten strikt getrennt und in jeweils eigenen Dateien abgelegt werden. Durch dieses Vorgehen können die einzelnen Teilaspekte unabhängig voneinander betrachtet werden.&lt;/p&gt;

&lt;h3&gt;LOC Metriken&lt;/h3&gt;
&lt;p&gt;Die einfachste Kategorie von Metriken, die in Javascript zur Verfügung stehen, sind die sogenannten LOC-Metriken (Lines of Code). Bei diesen Metriken werden die Zeilen des Quellcodes gezählt. Ein Tool, mit dem diese Metriken erfasst werden können, ist CLOC. Hier wird neben der reinen Anzahl an Zeilen unterschieden zwischen eigentlichen Codezeilen, Kommentaren und Leerzeilen und auf wie viele Dateien diese verteilt sind.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;In Verbindung mit Konventionen, die für das Projekt vereinbart werden, wie beispielsweise die maximale Zeilenlänge oder höchstens ein Statement pro Zeile, machen LOC Metriken Sinn.&lt;/p&gt;

&lt;h3&gt;Unittests&lt;/h3&gt;
&lt;p&gt;Einen weiteren Satz von Werkzeugen bilden die Unittest-Frameworks. Unittests werden verwendet, um Bausteine von Software, die sogenannten Units, zu prüfen. Voraussetzung, um Unittests zu erstellen, ist eine sinnvolle objektorientierte Architektur der Anwendung. &lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Die erste Metrik, die für Unittests zur Verfügung steht, ist die Anzahl der Tests. Diese kann von einigen wenigen Tests bis hin zu mehreren Tausenden reichen. Die Zahl der Tests für sich gesehen ist allerdings kein Qualitätsmerkmal. Pro Unit, die getestet wird, sollten mehrere Tests existieren. Die minimale Anforderung ist ein Test für den positiven Fall und einer für den Fehlerfall. Je nach Logik in der Einheit, kann es sein, dass mehrere Fälle abgetestet werden müssen, um sicherzustellen, dass die gewünschte Funktionalität reibungslos abläuft.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Als Framework für die Unittests kann beispielsweise qunit verwendet werden. Ursprünglich entstand dieses Werkzeug für die Qualitätssicherung von jquery, kann allerdings unabhängig davon verwendet werden. Zur Automatisierung und Integration in eine Continuous Integration Plattform wie Jenkins wird jsTestDriver verwendet. Für dieses Tool existiert ein Adapter, der bestehende qunit Tests in jsTestDriver lauffähig macht.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Die Qualität von Unittests lässt sich kaum messen. Das einzige Mittel, das eine Aussage über die Qualität der Tests erlaubt, ist die Testabdeckung. Die Testabdeckung beschreibt, wie viel des Quellcodes wirklich durch die Tests abgedeckt ist, also, ob alle if-Statements berücksichtig sind und ob sämtliche Cases in Switch-Statements geprüft werden. Eine Testabdeckung von 100% bedeutet, dass sämtlicher Quellcode durch die Unittests einmal ausgeführt wurde. Aber auch eine hundertprozentige Testabdeckung stellt nicht sicher, dass sämtliche Kombinationen der Applikationslogik geprüft werden. Hier ist es notwendig, dass sich die Entwickler Gedanken über die auftretenden Fälle machen, Testpläne erstellen und diese gezielt durch Unittests absichern.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Jetzt kommen wir zu einem Werkzeug, das in keinem Javascript-Projekt fehlen darf: jslint. Dieses Programm durchsucht den Quellcode nach möglichen Problemen. Hierunter fallen sowohl die korrekte Einrückung des Quellcodes, als auch ein Komma zu viel am Ende einer Arraydefinition oder Zuweisungen in if-Statements statt einem logischen Operator. &lt;/p&gt;

&lt;h3&gt;Jslint&lt;/h3&gt;
&lt;p&gt;Jslint ist sowohl über ein Webformular als auch offline verfügbar. Da die Implementierung vollständig in Javascript erfolgte, ist es problemlos möglich, dieses Tool auf jedem Rechner über die Kommandozeile auszuführen, man benötigt lediglich eine Javascript Engine.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Im alltäglichen Gebraucht hat es sich als praktisch erwiesen, jslint als Pre-Commit Hook einzubinden und jeden Commit abzuweisen, der fehlerhaftes Javascript beinhaltet. Mit jslint4java generiert jslint xml-Ausgaben und kann damit auch in eine Continuous Integration Plattform wie Jenkins integriert werden.&lt;/p&gt;

&lt;h3&gt;CPD und Komplexität&lt;/h3&gt;
&lt;p&gt;Einen Schritt weiter geht das Javascript Plugin für die Qualitätsmanagement Plattform Sonar. Mit diesem Plugin werden neben den Prüfungen von jslint auch Codeduplikation und Komplexität gemessen.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Doppelter Code ist in vielen Projekten ein Problem, da aus Gründen der Zeitersparnis einfach Code kopiert wird und nicht sauber ausgelagert und von verschiedenen Stellen referenziert wird. Die Copy-Paste-Detection vergleicht allerdings nicht Codeblöcke Wort für Wort miteinander, sondern auf Ebene des Abstract Syntax Trees. Es nützt also nichts, einfach nur Variablen umzubennen oder Whitespaces einzufügen.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Zur Bewertung der Komplexität benutzt das Sonar Javascript Plugin die zyklomatische Komplexität des Quellcodes. Diese Metrik wird beeinflusst durch die Anzahl der Anweisungen und die Kontrollflüsse zwischen diesen. Weist Quellcode eine zu hohe Komplexität auf, ist er schwer zu lesen. Aus dieser Tatsache folgt ein erhöhter Wartungsaufwand und eine länger andauernde Einarbeitungsphase. &lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;Metriken im Alltag&lt;/h2&gt;
&lt;p&gt;Zusammenfassend lässt sich sagen, dass die Qualitätssicherung im Bereich Javascript momentan noch in den Kinderschuhen steckt. Allerdings ist hier eine rasante Entwicklung zu beobachten. Vor allem im Bereich der Continuous Integration und Continuous Inspection ist eine erfreuliche Tendenz festzustellen. Immer mehr Werkzeuge lassen sich in Plattformen integrieren und ermöglichen so die regelmäßige Prüfung von Javascript Quellcode in einem Projekt.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Allgemein lässt sich festhalten, dass eine Metrik für sich alleine gesehen in den seltensten Fällen wirklich aussagekräftig ist. Kombinationen verschiedener Metriken oder Metrikgruppen hingegen erlauben Rückschlüsse auf die Qualität der Applikation. &lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Hier ein kurzes Beispiel, um diesen Sachverhalt zu verdeutlichen: Nimmt man eine Funktion, kann man über die LOC-Metrik herausfinden, aus wie vielen Zeilen diese Funktion besteht. Dieser Wert an sich erlaubt kaum eine Aussage, außer, dass eine große Anzahl von Zeilen nicht erstrebenswert ist, da sich diese Funktion dann tendenziell um mehr als eine Sache kümmert. Zieht man die zyklomatische Komplexität zu Rate, kann man schon qualifiziertere Aussagen treffen. Eine umfangreiche Funktion mit einer hohen Komplexität stellt ein Problem dar und sollte in kleinere Einheiten unterteilt werden; eine lange Funktion mit geringer Komplexität deutet auf eine prozedurale Funktion hin, die ebenfalls verbesserungswürdig ist. Sinnvoll sind demnach relativ kurze Funktionen mit moderater Komplexität.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Neben dem reinen Qualitätsaspekt kann durch Metriken auch die Performance des gesamten Teams oder einzelner Entwickler gemessen werden. Hier beginnt die Messung schon bei der Anzahl an Commits oder Lines of Code, die ein Entwickler erstellt. Auch hier gilt, jede Metrik kritisch zu hinterfragen. Interessanter sind dann Kombinationen wie beispielsweise die Anzahl der Zeilen pro Commit. Commits mit einer großen Anzahl von Zeilen sind meist problematisch, da sie dem Prinzip atomarer Commits widersprechen.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Die Metriken eines Projekts sollten allen am Projekt Beteiligten zur Verfügung stehen. Nur durch einen offenen Umgang lassen sich die Vorteile der Softwaremessung ausnutzen. Stehen dem Team alle Informationen über die Qualitätsaspekte der erstellten Software zur Verfügung, können die einzelnen Entwickler gezielt an ihren Schwächen arbeiten und das Projekt gemeinsam stabilisieren und den maximalen Nutzen aus ihren Fähigkeiten ziehen.&lt;/p&gt;
&lt;br /&gt;
&lt;h2&gt;Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://jenkins-ci.org/&quot;&gt;Jenkins CI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.jsint.com&quot;&gt;jslint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://cloc.sourceforge.net/&quot;&gt;cloc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://docs.jquery.com/QUnit&quot;&gt;qunit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/js-test-driver/&quot;&gt;jsTestDriver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://docs.codehaus.org/display/SONAR/JavaScript+Plugin&quot;&gt;Sonar Javascript Plugin&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Mon, 12 Dec 2011 09:41:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/806-guid.html</guid>
    
</item>
<item>
    <title>10.12. Lösungen für Debugging von Mobile Web Apps</title>
    <link>http://blog.mayflower.de/archives/804-10.12.-Loesungen-fuer-Debugging-von-Mobile-Web-Apps.html</link>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/804-10.12.-Loesungen-fuer-Debugging-von-Mobile-Web-Apps.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=804</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=804</wfw:commentRss>
    

    <author>nospam@example.com (Markus Geiger)</author>
    <content:encoded>
    &lt;h2&gt;Webkit Web Inspector (Remote)&lt;/h2&gt; &lt;br /&gt; 
&lt;p&gt;Dass Firebug in JavaScript programmiert wurde dürfte den meisten bekannt sein. Das gleiche gilt für den WebInspector von WebKit, wie er in Safari oder Google Chrome zu finden ist. Es dürfte also nicht wundern, dass für mobile Geräte mit &lt;a href=&quot;http://phonegap.github.com/weinre/&quot;&gt;Weinre&lt;/a&gt; von &lt;a href=&quot;http://pmuellr.blogspot.com/&quot;&gt;Patrick Mueller&lt;/a&gt; bereits 2010 eine Portierung des WebInspectors geschaffen wurde, die über eine JS-Include auf der im Website-Header im Mobilen Browser Remote Debugging Funktionalität zur Verfügung stellt. Somit kann bequem über dem Desktop eine Mobile Webseite debugged werden. &lt;a href=&quot;http://phonegap.github.com/weinre/&quot;&gt;Weinre&lt;/a&gt; läuft heute als &lt;a href=&quot;http://phonegap.com/&quot;&gt;PhoneGap&lt;/a&gt; Projekt, ist sozusagen Standard und ist natürlich auf GitHub zu finden.&lt;/p&gt; 
&lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;br /&gt; 
&lt;p&gt;Das Ganze hat aber leider eben leider Grenzen, was Features wie Breakpoints, Backtraces und Profiling angeht, d.h. genau die nützlichen Features, die normalerweis unter dem Script-Tab im Debugger-Panel zu finden sind.&lt;/p&gt; &lt;br /&gt; 
&lt;h2&gt;JavaScript Remote Debugging mit WebKit/Chrome&lt;/h2&gt; &lt;br /&gt; 
&lt;p&gt;Der nächste konsequente Schritt war also, den Debugger direkt in den Browser Runtime zu heben und eine Remote API anzubieten bzw. eine Verbindung zu dem ohnehin schon existierenden &lt;a href=&quot;http://code.google.com/p/v8/wiki/DebuggerProtocol&quot;&gt;V8 DebuggerProtocol&lt;/a&gt; zu schaffen, dass sich allerdings nur auf JavaScript Debugging beschränkt. Das Gesamtpaket nennt sich dann&amp;#160;&lt;a href=&quot;http://code.google.com/p/chromedevtools/wiki/WIP&quot;&gt;WebKit Remote Debugging Protocol&lt;/a&gt;. Währenddessen arbeitete Google auch am &lt;a href=&quot;http://code.google.com/p/chromedevtools/wiki/ChromeDevToolsProtocol&quot;&gt;ChromeDevToolsProtocol&lt;/a&gt;&amp;#160;was aber mittlerweile deprecated ist.&lt;/p&gt; 
&lt;p&gt;Seit Frühjahr diesen Jahres bietet nun WebKit sein &lt;a href=&quot;http://www.webkit.org/blog/1620/webkit-remote-debugging/&quot;&gt;Remote Debugging Feature&lt;/a&gt; an, welcher praktisch alle bekannten WebInspector Features unterstützt - dazu zählen:&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;JavaScript Console &amp;amp; JS Debugger&lt;/li&gt; 
&lt;li&gt;CSS Debugging &amp;amp; Live Änderungen&lt;/li&gt; 
&lt;li&gt;DOM Manipulation &amp;amp; Debugging - z.B. DOM Knoten auf Änderungen durch JS Events überwachen (DOM Mutation Events)&lt;/li&gt; 
&lt;li&gt;Netzwerk &amp;amp; Timeline - Verfolgung von Netzwerk-Aktivitäten auf der Seite (HTTP, WebSocket, Timings)&lt;/li&gt; 
&lt;li&gt;Resourcen - LocalStorage, ApplicationCache, Cookies&lt;/li&gt; 
&lt;/ul&gt; &lt;br /&gt; 
&lt;p&gt;Das Feature kann bereits seit einigen Chrome Versionen getestet werden. Eine &lt;a href=&quot;http://www.chromium.org/getting-involved/dev-channel&quot;&gt;aktuelle Chrome Version&lt;/a&gt; bevorzugt kann eine Debugger-Instanz mit &lt;code&gt;chrome --remote-debugging-port=9222&lt;/code&gt; gestartet wird.&lt;/p&gt; &lt;br /&gt; 
&lt;p&gt;Sodann ist eine zweite Browserinstanz für den Remote Web Inspector nötig - diese muss jedoch Ihr eigenes Nutzerprofil verwenden, um Probleme zu vermeiden: chrome --user-data-dir=&amp;lt;existierendes Verzeichnis&amp;gt;&lt;/p&gt; &lt;br /&gt; 
&lt;p&gt;Mit Navigation auf &lt;code&gt;&lt;a href=&quot;http://localhost:9222&quot;&gt;http://localhost:9222&lt;/a&gt;&lt;/code&gt; im zweiten Browserfenster findet sich nun eine Thumbnail-Übersicht der geöffneten Tabs des zu debuggenden Browsers. Ein weiterer Klick auf das ein Thumbnail lädt nun den Debugger auf die komplette Seite, mit dem wie gewohnt gearbeitet werden kann.&lt;/p&gt; &lt;br /&gt;&lt;img src=&quot;http://blog.mayflower.de/uploads/advent/web-inspector.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt; 
&lt;p&gt;Somit kann zusammenfassend folgendes zur Funktionsweise gesagt werden:&lt;/p&gt; &lt;br /&gt; 
&lt;ul&gt; 
&lt;li&gt;Der Web Inspector ist eine Web Application.&lt;/li&gt; 
&lt;li&gt;Der Debugger Server lieftert per HTTP HTML, JavaScript wie CSS aus.&lt;/li&gt; 
&lt;li&gt;Sobald die Application geladen ist wird ein WebSocket zu &lt;a href=&quot;http://localhost:9222/json&quot;&gt;http://localhost:9222/json&lt;/a&gt; geöffnet&lt;/li&gt; 
&lt;li&gt;Der Debugging Port ist für jeden offen, insofern nicht durch Firewall geschützt.&lt;/li&gt; 
&lt;li&gt;Neue Remote Debugging Sessions ersetzen evtl. bereits laufende Debug-Sessions&lt;/li&gt; 
&lt;li&gt;Web Inspector Remote läuft derzeit nur in WebKit Browsern einwandfrei&lt;/li&gt; 
&lt;/ul&gt; &lt;br /&gt; 
&lt;p&gt;In iPhone oder Android-WebKits sucht man den Debugger derzeit noch vergebens (about:debug), auch wenn es bereits einige ROMs für Android mit Web Inspector Support gibt. &lt;a href=&quot;http://devblog.blackberry.com/2011/06/debugging-blackberry-web-apps/&quot;&gt;Blackberrys Playbook&lt;/a&gt; hingegen besitzt schon entsprechende WebKit Funktionalität.&lt;/p&gt; &lt;br /&gt; 
&lt;p&gt;Der Debugger bietet für den Browser eine vereinfachte, aber noch &lt;a href=&quot;http://code.google.com/chrome/extensions/trunk/experimental.debugger.html&quot;&gt;experimentelle JavaScript API&lt;/a&gt;, die z.B. auch durch Chrome Extensions angesprochen werden kann. Nach Googles Vorstellungen sollen damit auch WebIDEs wie &lt;a href=&quot;http://c9.io/&quot;&gt;Cloud9&lt;/a&gt; zum bereits integrierten JavaScript Debugger (&lt;a href=&quot;https://github.com/ajaxorg/lib-v8debug&quot;&gt;lib-v8debug&lt;/a&gt;) einen vollwertigen WebInspector erhalten.&lt;/p&gt; &lt;br /&gt; 
&lt;h2&gt;Google/Webkit sind nicht die ersten&lt;/h2&gt; 
&lt;p&gt;&lt;a href=&quot;http://www.opera.com/&quot;&gt;Opera&lt;/a&gt; demonstrierte bereits 2008 mit&lt;a href=&quot;http://www.opera.com/dragonfly/documentation/remote/&quot;&gt; DragonFly&lt;/a&gt; und &lt;a href=&quot;http://dragonfly.opera.com/app/scope-interface/&quot;&gt;Scope&lt;/a&gt; einen funktionierenden Remote Debugger, mit dem es möglich ist sich an an einen &lt;a href=&quot;http://www.opera.com/dragonfly/documentation/remote/&quot;&gt;Opera Mobile&lt;/a&gt; oder auch &lt;a href=&quot;http://dev.opera.com/articles/view/remote-debugging-with-opera-dragonfly/&quot;&gt;Desktop Opera&lt;/a&gt; via TCP-Port ranzuhängen und nicht nur JavaScript zu debuggen. Nachteil an der ganzen Sache: Im Mobile Web dominiert derzeit WebKit.&lt;/p&gt; &lt;img src=&quot;http://blog.mayflower.de/uploads/advent/opera-next-remote.jpg&quot; width=&quot;695&quot; height=&quot;448&quot; /&gt;&lt;br /&gt; 
&lt;h2&gt;Firebug Crossfire&lt;/h2&gt; &lt;br /&gt; 
&lt;p&gt;Ein ähnliches Projekt existiert seit Anfang diesen Jahres mit &lt;a href=&quot;http://getfirebug.com/wiki/index.php/Crossfire&quot;&gt;Firebug Crossfire&lt;/a&gt;, was ähnliche Möglichkeiten bieten soll. Zudem unterstützen die &lt;a href=&quot;http://www.eclipse.org/webtools/jsdt/&quot;&gt;JavaScript Development Tools (JSDT)&lt;/a&gt; für Eclipse bereits Crossfire. Derzeit befindet sich das Projekt jedoch noch in der Alpha-Phase, aber darf bereits getestet werden.&lt;/p&gt; &lt;br /&gt; 
&lt;h2&gt;Weitere JavaScript Debugging Plugins&lt;/h2&gt; &lt;br /&gt; 
&lt;p&gt;Für den, der nodejs debuggen muss, gibt es mit dem &lt;a href=&quot;https://github.com/dannycoates/node-inspector&quot;&gt;NodeInspector&lt;/a&gt; eine schicke Lösung, mit der es möglich ist, dies bequem im Browser zu erledigen. NodeInspector ist wie ebenfalls wie Weinre eine Adaption von WebInspector.&lt;/p&gt; &lt;br /&gt; 
&lt;p&gt;Für JavaScript Debugging in der IDE, d.h. bequem Breakpoints in den Quelldateien des geöffneten Projekts setzen, haben wir zum einen die &lt;a href=&quot;http://code.google.com/p/chromedevtools/wiki/EclipseDebuggerFeatures&quot;&gt;ChromeDevTools&lt;/a&gt; als Eclipse-Plugin. Zum anderen hat IntelliJ mit &lt;a href=&quot;http://confluence.jetbrains.net/display/IDEADEV/IDEA+10.5+EAP&quot;&gt;IDEA 10.5&lt;/a&gt; und PHPStorm 3 das V8 DebuggerProtocol bereits implementiert.&lt;/p&gt; &lt;br /&gt; &lt;img src=&quot;http://blog.mayflower.de/uploads/advent/phpstorm2.png&quot; width=&quot;695&quot; height=&quot;448&quot; /&gt;&lt;br /&gt; 
&lt;p&gt; Eine weitere einfache JavaScript-Konsole stellt z.B.&amp;#160;&lt;a href=&quot;http://jsconsole.com/remote-debugging.html&quot;&gt;JSConsole&lt;/a&gt;&amp;#160;bereit, dass zum Debuggen von iPhone oder Android-Mobile Apps benutzt werden kann.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 10 Dec 2011 06:39:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/804-guid.html</guid>
    <category>chrome</category>
<category>chromiu</category>
<category>crossfire</category>
<category>debugging</category>
<category>firebug</category>
<category>javascript</category>
<category>mobile</category>
<category>mobile apps</category>
<category>php</category>
<category>php-de</category>

</item>
<item>
    <title>08.12. Agilere Datenbankentwicklung</title>
    <link>http://blog.mayflower.de/archives/801-08.12.-Agilere-Datenbankentwicklung.html</link>
            <category>E-Commerce</category>
            <category>Misc</category>
            <category>Open Source</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/801-08.12.-Agilere-Datenbankentwicklung.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=801</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=801</wfw:commentRss>
    

    <author>nospam@example.com (Alberto Assmann)</author>
    <content:encoded>
    Agile Entwicklung ist gescheitert.&lt;br /&gt;
Jedenfalls auf Datenbankseite.&lt;br /&gt;
&lt;br /&gt;
Agile Entwicklung ist mehr als nur Scrum, hierzu kommen in den meisten Projekten noch weitere Tools und Vorgehensweisen zum Einsatz, um schnell auf neue Anforderungen zu reagieren.&lt;br /&gt;
Hierzu zählen in der eigentlichen Entwicklung Continuous Improvements, also das stetige Verbessern des Quellcode innerhalb eines Projektes, welche zum Beispiel durch Code Reviews und Refactorings unterstützt werden können.&lt;br /&gt;
 &lt;br /&gt;
Bedingt durch die sich schnell ändernden Anforderungen ändert sich auch der Code schneller und häufiger.&lt;br /&gt;
Um sich dennoch abzusichern, kommen hier Tools wie automatisierte Unittests, ausgeführt Beispielsweise in einer Continuous Integration Umgebung zum Einsatz.&lt;br /&gt;
&lt;br /&gt;
Inzwischen haben viele Projekte zudem erkannt, dass die kurzen Entwicklungszyklen, die mithilfe, eben genannter Techniken möglich werden,  entsprechend kurze Releasezyklen erfordern.&lt;br /&gt;
Im Idealfall führt dies zu einem Continuous Deployment, also der Fähigkeit ein Feature sofort nach der Fertigstellung zu releasen.&lt;br /&gt;
&lt;br /&gt;
Ein Prozess ist jedoch immer nur so gut, wie seine Teilprozesse.&lt;br /&gt;
An dieser Stelle sollten wir unseren Blick auf die Datenbank lenken.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
	&lt;li&gt;Wie läuft hier die Entwicklung?&lt;/li&gt;
	&lt;li&gt;Wie automatisieren wir Datenbankupdates?&lt;/li&gt;
&lt;li&gt;Was für einen Stand hat unsere Datenbank auf Produktiv? Auf Staging? Auf dem Previewsystem?&lt;/li&gt;
&lt;li&gt;Wie sichern wir Datenverluste bei nachträglichen Änderungen ab?&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Bei uns lief es im Projekt bis vor kurzem so, dass vor einem Update der Datenbank händisch geprüft werden musste welche Änderungen noch nicht in der Datenbank existieren um dann entsprechende SQL Dateien zusammenfügen zu können, die die neuen Änderungen enthielten.&lt;br /&gt;
So ein Vorgehen ist nicht nur Fehleranfällig sondern auch Aufwendig.&lt;br /&gt;
Am stärksten Bemerkbar machte sich dies, beim migrieren von Daten, was bedeutete, dass die Reihenfolge von SQL Dateien und Migrationsskripten strikt beachtet werden musste.&lt;br /&gt;
&lt;br /&gt;
Refactorings hingegen liefen so ab, dass die neue Datenstruktur in Form von neuen Tabellen angelegt wurde, die Daten mithilfe von Migrationsskripten überführt wurden und die ursprünglichen Tabellen erst beim nächsten Release vollständig gelöscht wurden, sofern dies nicht vergessen wurde.&lt;br /&gt;
&lt;br /&gt;
Dieses Vorgehen kostete viel Zeit und Nerven, weshalb eine Alternative gesucht wurde.&lt;br /&gt;
&lt;br /&gt;
Vor kurzem haben wir als Team ein neues Tool gefunden welches uns viel Arbeit abnimmt und vor allem zusätzliche Sicherheit auf Datenbankseite gibt.&lt;br /&gt;
&lt;br /&gt;
Dies ist Liquibase, ein in Java geschriebenes Tool zum Refactoring und automatischen Update der Datenbank, welches unter der Apache 2.0 Lizenz zur freien Nutzung zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Liquibase bringt eine eigene Beschreibungssprache für Datenbankänderungen mit, die auf XML basiert.&lt;br /&gt;
Durch diese abstrakte Beschreibung der Änderungen in XML wird Datenbankunabhängigkeit ermöglicht.&lt;br /&gt;
So kann Liquibase mit jeder Datenbank umgehen für die ein JDBC Treiber verfügbar ist, so zum Beispiel MySQL, Microsoft SQL Server, Oracle, PostgreSQL, SQLite, Apache Derby und vielen weiteren.&lt;br /&gt;
&lt;br /&gt;
Definiert werden die Änderungen als sogenannte &lt;i&gt;Changesets&lt;/i&gt;, die in beliebiger Anzahl innerhalb eines &lt;i&gt;DatabaseChangelogs&lt;/i&gt; vorkommen können.&lt;br /&gt;
Jedes &lt;i&gt;Changeset&lt;/i&gt; setzt die Angabe eines &lt;b&gt;Autors&lt;/b&gt; und einer &lt;b&gt;Id&lt;/b&gt; voraus, wobei die &lt;b&gt;Id&lt;/b&gt; nur innerhalb des &lt;i&gt;DatabaseChangelogs&lt;/i&gt; eindeutig sein muss.&lt;br /&gt;
&lt;br /&gt;
Ein einfaches &lt;i&gt;Changelog&lt;/i&gt;, der eine einzelne Tabelle mit 2 Spalten, id und name, anlegt sieht wie folgt aus:

&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;
&lt;databaseChangeLog  xmlns=&quot;http://www.liquibase.org/xml/ns/dbchangelog&quot;  xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;  xsi:schemaLocation=&quot;http://www.liquibase.org/xml/ns/dbchangelog         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-2.0.xsd&quot;&gt; 	
	&lt;changeSet id=&quot;1&quot; author=&quot;alberto.assmann@mayflower.de&quot;&gt;        				
		&lt;createTable tableName=&quot;department&quot;&gt;            		
			&lt;column name=&quot;id&quot; type=&quot;int&quot;&gt;                			
				&lt;constraints primaryKey=&quot;true&quot; nullable=&quot;false&quot;/&gt;            		
			&lt;/column&gt;            		
			&lt;column name=&quot;name&quot; type=&quot;varchar(50)&quot;&gt;                					
				&lt;constraints nullable=&quot;false&quot;/&gt;            		
			&lt;/column&gt;            	
		&lt;/createTable&gt;    
	&lt;/changeSet&gt;
&lt;/databaseChangeLog&gt;
&lt;/pre&gt;  
&lt;br /&gt;
Ausgeführt werden kann dieses Changelog entweder innerhalb eines vorhandenen Buildsystems, hierfür gibt es Tasks in ANT, Maven, Grails, Spring und in Phing als Erweiterung unter &lt;a href=https://github.com/bitExpert/liquibase-phing&gt;https://github.com/bitExpert/liquibase-phing&lt;/a&gt;, oder über die Kommandozeile:

&lt;pre name=&quot;code&quot; class=&quot;bash&quot;&gt;
java -jar liquibase.jar \
    --driver=com.mysql.jdbc.Driver \     
    --classpath=databasedriver/mysql-connector-java-5.1.17-bin.jar \     
    --changeLogFile=/path/to/changelog.xml \     
    --url=&quot;jdbc:mysql://127.0.0.1:3306/&lt;DB Name&gt;&quot; \     
   --username=&lt;UserName&gt; \     
   --password=&lt;Password&gt; \     
update
&lt;/pre&gt;
&lt;br /&gt;
Bei diesem Aufruf wird der Treibertyp, in unserem Fall JDBC MySQL, das Verzeichnis des Treibers, der Pfad zum auszuführenden Changelog, sowie URL der Datenbank, Nutzername und Passwort angegeben und der Befehl update, um Liquibase zu veranlassen, dass alle Änderungen eingespielt werden, die noch nicht in der Datenbank sind.&lt;br /&gt;
Am Rande sei hier bemerkt, dass der JDBC Treiber für die jeweilige Datenbank nicht Teil von Liquibase ist, ergo separat heruntergeladen werden muss.&lt;br /&gt;
&lt;br /&gt;
Wer sich jetzt fragt, woher Liquibase wissen kann, was bereits in der Datenbank vorhanden ist und was geupdatet werden muss, dem möge folgende kurze Erklärung dienen:&lt;br /&gt;
Liquibase speichert in der Tabelle &lt;i&gt;DATABASECHANGELOG&lt;/i&gt; Metainformationen zu jedem erfolgtem Update ab.&lt;br /&gt;
Hierzu gehört für jedes ausgeführte &lt;i&gt;Changeset&lt;/i&gt; der &lt;b&gt;Autor&lt;/b&gt;, die &lt;b&gt;Id&lt;/b&gt;, das &lt;b&gt;Ausführungsdatum&lt;/b&gt; und eine &lt;b&gt;Hashsumme&lt;/b&gt; des &lt;i&gt;Changesets&lt;/i&gt;.&lt;br /&gt;
Die &lt;b&gt;Hashsumme&lt;/b&gt; wird bei jedem neuen Update für alle bereits vorhandenen &lt;i&gt;Changesets&lt;/i&gt; geprüft, so dass nachträgliche Änderungen an einem bereits ausgeführten &lt;i&gt;Changeset&lt;/i&gt; nicht mehr möglich sind.&lt;br /&gt;
Es gibt zwar die Möglichkeit mit dem Kommandozeilenbefehl &lt;i&gt;clearChecksums&lt;/i&gt; alle Hashsummen zu löschen, jedoch ist die saubere Vorgehensweise bei einem Fehler ein neues &lt;i&gt;Changeset&lt;/i&gt; anzulegen, welches den Fehler behebt.&lt;br /&gt;
&lt;br /&gt;
Der größte Vorteil, den man mit echten &lt;i&gt;Changesets&lt;/i&gt; gewinnt, sind die &lt;i&gt;Rollbacks&lt;/i&gt;.&lt;br /&gt;
Für alle Änderungen die neue Tabellen, Spalten oder ähnliches anlegen, oder bestehende Verändern, bietet Liquibase automatische &lt;i&gt;Rollbacks&lt;/i&gt;.&lt;br /&gt;
Diese werden wichtig, sobald beim updaten etwas schief geht, denn dann wird der &lt;i&gt;Rollback&lt;/i&gt; ausgeführt, so dass eine inkonsistente Datenbank verhindert wird.
Jedoch sind die Rollbacks auch in der Entwicklung sehr nützlich, da jederzeit zu einem bestimmten Stand der Datenbank zurück gekehrt werden kann.&lt;br /&gt;
Dies ist Changesetabhängig möglich, mit &lt;i&gt;rollbackCount n&lt;/i&gt;, welches die letzten &lt;i&gt;n Changesets&lt;/i&gt; zurück nimmt, Datumsabhängig mit &lt;i&gt;rollbackDate &amp;lt;date&amp;gt;&lt;/i&gt;, welches alle &lt;i&gt;Changesets&lt;/i&gt; die neuer als das angegebene Datum sind zurück nimmt und &lt;i&gt;Tag&lt;/i&gt; abhängig.&lt;br /&gt;
Letzteres kehrt dabei zu einem in Liquibase gesicherten Stand der Datenbank zurück, einem sogenanntem &lt;i&gt;Tag&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
Für alle &lt;i&gt;Rollbacks&lt;/i&gt;, die nicht mit einem Automatismus abgedeckt werden, kann auch manuell ein &lt;i&gt;Rollback&lt;/i&gt; definiert werden.&lt;br /&gt;
Dies ist zum Beispiel der Fall wenn das Löschen einer Tabelle fehlschlägt und darauf entsprechend reagiert werden soll.&lt;br /&gt;
Das Definieren geschieht innerhalb des entsprechenden &lt;i&gt;Changesets&lt;/i&gt;, indem nach der eigentlichen Anweisung eine oder mehrere Rollbackanweisungen geschrieben werden,  die alle innerhalb des Tags &lt;i&gt;&amp;lt;rollback&amp;gt;&lt;/i&gt; stehen müssen.&lt;br /&gt;
&lt;br /&gt;
In den meisten Teams ist Dokumentation nicht gerade beliebt, jedoch ein notwendiges Übel um neuen Teammitgliedern den Einstieg zu erleichtern und nachvollziehbar zu machen, welche Änderungen wann gemacht wurden.&lt;br /&gt;
Auch hier Unterstützt uns Liquibase.
Mit dem Befehl &lt;i&gt;dbDoc&lt;/i&gt; und einer nachfolgenden Pfadangabe ist es möglich, eine Dokumentation aller Änderungen zu generieren, die mit dem angegebenen &lt;i&gt;DatabaseChangeLog&lt;/i&gt; durchgeführt werden würden.&lt;br /&gt;
Die dabei entstehende Änderungsdokumentation ist dabei stark an Java-Doc angelehnt.&lt;br /&gt;
&lt;br /&gt;
Am meisten Zeit bei der Datenbankentwicklung mit Liquibase verschlingt das Schreiben der &lt;i&gt;Changesets&lt;/i&gt;.&lt;br /&gt;
Zum Glück stellt auch hier Liquibase ein Tool bereit.&lt;br /&gt;
Die Methode &lt;i&gt;diffChangeLog&lt;/i&gt; generiert anhand der Unterschiede zwischen zwei Datenbanken die entsprechenden &lt;i&gt;Changesets&lt;/i&gt;.&lt;br /&gt;
Der Kommandozeilenaufruf dazu sieht ähnlich aus, wie beim updaten der Datenbank, jedoch werden zusätzlich die Daten der zweiten Datenbank angegeben, gegen welche geprüft wird:
&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;
java -jar liquibase.jar     \
	[...]    
	--changeLogFile=../data/sql/generatedChangelog.xml     \
	diffChangeLog   \  
	--referenceUrl=&lt;JDBC URL&gt;  \   
	--referenceUsername=&lt;BENUTZER NAME&gt; \     	
	--referencePassword=&lt;PASSWORT&gt;
&lt;/pre&gt;
&lt;br /&gt;
Die neuen &lt;i&gt;Changesets&lt;/i&gt; werden im angegebenen &lt;i&gt;changeLogFile&lt;/i&gt; gespeichert.
Dabei werden sowohl &lt;i&gt;Stored Procedures&lt;/i&gt; und &lt;i&gt;Functions&lt;/i&gt;, als auch &lt;i&gt;Trigger&lt;/i&gt; und &lt;i&gt;Check Constraints&lt;/i&gt; ignoriert.&lt;br /&gt;
&lt;br /&gt;
Die Unterschiede können mit Liquibase auch zwischen verschiedenen Datenbanksystemen ermittelt werde, beispielsweise einer MySQL und einer SQLite Datenbank.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Auch wenn die Einarbeitung in Liquibase einige Zeit erfordert und vor allem eine Umstellung in der Arbeitsweise, so möchte ich dieses geniale Tool im täglichen Arbeiten nicht mehr missen, da uns als Team damit viele Sorgen und Mehraufwände abgenommen werden. 
    </content:encoded>

    <pubDate>Wed, 07 Dec 2011 10:39:26 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/801-guid.html</guid>
    <category>agile entwicklung</category>
<category>automatisierung</category>
<category>datenbankentwicklung</category>
<category>deployment</category>
<category>liquibase</category>

</item>
<item>
    <title>02.12. PHP 5.3 Features in real life</title>
    <link>http://blog.mayflower.de/archives/786-02.12.-PHP-5.3-Features-in-real-life.html</link>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/786-02.12.-PHP-5.3-Features-in-real-life.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=786</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=786</wfw:commentRss>
    

    <author>nospam@example.com (Markus Handschuh)</author>
    <content:encoded>
    &lt;div style=&quot;background-color: transparent;&quot;&gt;&lt;span id=&quot;internal-source-marker_0.3316474810708314&quot; style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Die Veröffentlichung von PHP 5.3 vor rund 2 Jahren brachte dem PHP-Entwickler sinnvolle Neuerungen und Verbesserungen. Dazu zählen in erster Linie Namespaces, Late static binding und Closures (anonyme Funktionen).&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Viele Verbesserungen hat PHP 5.3 vor allem aber unter der Haube erfahren. Das neue &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;/PHP/5.3&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; ersetzt &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;libmysql&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; mit der eigenen, nativen Implementierung &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;mysqlnd&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; und hat auch den Garbage Collector verbessert.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Das sind nur einige wenige Dinge, die mit PHP 5.3 sinnvoll verbessert und erweitert wurden. Auch gibt es ein Feature, dem der OOP-Entwickler mit einer gewissen Hassliebe entgegen steht: Jump Labels, auch goto genannt. Die Verwendung von goto ist in der heutigen PHP-Community nicht gerade sehr beliebt. Die Ursache: Die klassische, objektorientierte Programmierung bringt gegenüber einer Strukturierung seiner Anwendung mittels goto wesentliche Vorteile, wie Sichtbarkeiten, Vererbung etc.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;PHP 5.3 bringt insgesamt jedoch viele erfreuliche Neuigkeiten mit von denen sich einige bereits sehr bewährt haben und bei Neuentwicklungen oder Refactorings auf jeden Fall in Erwägung gezogen werden sollten.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;hr width=&quot;100%&quot; size=&quot;2&quot; /&gt; 
&lt;h4 dir=&quot;ltr&quot;&gt;&lt;span style=&quot;font-size: 16px; font-family: Arial; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Namespaces&lt;/span&gt;&lt;/h4&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Namespaces dienen dazu, verschiedene Funktionalitäten wie beispielsweise Klassen in so genannte Namensräume zu kapseln und diese somit zu gruppieren. Man stelle sich das anhand einer klassischen Verzeichnisstruktur vor. Seine Dateien (PHP-Klassen) legt man in verschiedenen Verzeichnissen (Namespaces) ab und kann diese später laden und einbinden.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Beispiel:&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;namespace MyProject/Car&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;class MyProject/Car {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;//  &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;use MyProject/Car as Car;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$car = new Car();&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Mit dem Schlüsselwort &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;use&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; importiert man Namespaces in einen anderen um die enthaltenen Funktionen und Klassen nutzen zu können.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Doch was bringen Namespaces?&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Der Vorteil in Namespaces ist vor allem die Flexibilität in der Verwendung (Alias) und der Wegfall von Namenskonflikten. Jede Datei sowie jede Klasse kann also den selben Namen haben, solange diese in verschiedenen Namespaces liegen. Die Verwendung von Namespaces verbessert die Lesbarkeit sowie die Organisation der eigenen Klassen, da diese analog zu Ordnerstrukturen definiert sind. Somit sind auch kürzere Namen für Klassen möglich, da die organisatorische Beschreibung bereits im Namespace erfolgt.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr width=&quot;100%&quot; size=&quot;2&quot; /&gt; 
&lt;h4 dir=&quot;ltr&quot;&gt;&lt;span style=&quot;font-size: 16px; font-family: Arial; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Late static binding&lt;/span&gt;&lt;/h4&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Mit der Einführung von Late static binding wird nun die Möglichkeit geboten, eine aufgerufene Klasse im Kontext statischer Vererbung zu referenzieren. Das hört sich auf zu Beginn erstmal kompliziert an, lässt sich aber folgendermaßen erklären:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;[php]&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;class A {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public static function who() {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;echo __CLASS__;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public static function test() {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;echo self::who();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;class B extends A {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public static function who() {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;echo __CLASS__;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;B::test(); // Output: A&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Die Methode &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #0000ff; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;::&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #0000ff; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;who()&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; referenziert auf seine eigene Methode &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #0000ff; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;who()&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #0000ff; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Das Schlüsselwort &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #0000ff; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; referenziert also nicht den Kontext bei statischer Vererbung. Es gibt somit keine Möglichkeit, auf die Methode &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #0000ff; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;who()&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #0000ff; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;der Klasse B zuzugreifen, ohne die Methode &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #0000ff; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;test() &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;ebenfalls zu überschreiben. &lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Um diesen Umstand zu korrigieren, wurde mit PHP 5.3 Late static binding mit dem Schlüsselwort &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #0000ff; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;static &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;eingeführt, welches den Kontext berücksichtigt.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Die Methode &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #0000ff; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;test()&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; wird verändert:&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;public static function test() {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;echo static::who();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;B::test(); // Output: B&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Zur Erläuterung: &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #0000ff; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #0000ff; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;bindet sich bereits beim interpretieren des Codes an die Klasse, &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #0000ff; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;static&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; erst bei der Ausführung.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Die Verwendung von Late static binding hilft dabei, Quellcode zu sparen, da Funktionalität bereits in eine Basis-Implementierung (&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #0000ff; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;abstract class&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;) geschrieben werden kann.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;namespace Database\Editor;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;interface EditorInterface {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public function getTableName();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;abstract class Table implements EditorInterface {&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt; 
&lt;p dir=&quot;ltr&quot; style=&quot;text-indent: 36pt; margin-top: 0pt; margin-bottom: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;public function delete($id) {&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;$sql = DELETE FROM ` . static::getTableName() . ` &lt;/span&gt;&lt;br /&gt; 
&lt;p dir=&quot;ltr&quot; style=&quot;margin-left: 72pt; text-indent: 36pt; margin-top: 0pt; margin-bottom: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;WHERE id= . $id;&lt;/span&gt;&lt;/p&gt; 
&lt;p dir=&quot;ltr&quot; style=&quot;margin-left: 72pt; margin-top: 0pt; margin-bottom: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$stmt = $this-&amp;gt;getDb()-&amp;gt;execute($sql);&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt; 
&lt;p dir=&quot;ltr&quot; style=&quot;margin-left: 72pt; margin-top: 0pt; margin-bottom: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;return $stmt;&lt;/span&gt;&lt;/p&gt; 
&lt;p dir=&quot;ltr&quot; style=&quot;text-indent: 36pt; margin-top: 0pt; margin-bottom: 0pt;&quot;&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;/p&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;class User extends Table {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;public function getTableName() {&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;return user;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$table = new User();&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: &#039;Courier New&#039;; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;$table-&amp;gt;delete(12 /* user id */);&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;hr width=&quot;100%&quot; size=&quot;2&quot; /&gt; 
&lt;h4 dir=&quot;ltr&quot;&gt;&lt;span style=&quot;font-size: 16px; font-family: Arial; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Abschließend&lt;/span&gt;&lt;/h4&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;PHP 5.3 bringt auch unter der Haube viele Verbesserungen, Bugfixes und Performance improvements mit. Einige Bibliotheken wie &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;phar&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; (PHP Archive), &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;fileinfo&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; oder &lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: italic; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;intl&lt;/span&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt; sind nun auch nativ mit dabei und müssen somit nicht mehr extern eingebunden werden.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 15px; font-family: Arial; color: #000000; background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap;&quot;&gt;Damit sei PHP 5.3 vor allem für neue Projekte sehr empfohlen.&lt;/span&gt; 
&lt;/div&gt; 
    </content:encoded>

    <pubDate>Thu, 01 Dec 2011 15:05:23 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/786-guid.html</guid>
    <category>closures</category>
<category>late static binding</category>
<category>namespaces</category>
<category>php-de</category>
<category>php5</category>

</item>
<item>
    <title>CSS3 Produktiv nutzen</title>
    <link>http://blog.mayflower.de/archives/787-CSS3-Produktiv-nutzen.html</link>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/787-CSS3-Produktiv-nutzen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=787</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=787</wfw:commentRss>
    

    <author>nospam@example.com (Inga Zilles)</author>
    <content:encoded>
    Hier findet ihr die Folien zu dem Mayflower Vortrag &quot;CSS3 Produktiv nutzen&quot;.
Gehalten von Alberto Assmann am 17.11.2011.

&lt;div style=&quot;width:425px&quot; id=&quot;__ss_10429155&quot;&gt; &lt;strong style=&quot;display:block;margin:12px 0 4px&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/mayflowergmbh/css3-produktiv&quot; title=&quot;CSS3 produktiv&quot; target=&quot;_blank&quot;&gt;CSS3 produktiv&lt;/a&gt;&lt;/strong&gt; &lt;iframe src=&quot;http://www.slideshare.net/slideshow/embed_code/10429155&quot; width=&quot;425&quot; height=&quot;355&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt; &lt;div style=&quot;padding:5px 0 12px&quot;&gt; View more &lt;a href=&quot;http://www.slideshare.net/&quot; target=&quot;_blank&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/mayflowergmbh&quot; target=&quot;_blank&quot;&gt;Mayflower GmbH&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 02 Dec 2011 10:57:05 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/787-guid.html</guid>
    
</item>
<item>
    <title>Mayflower veröffentlicht OXID Admin Module Creator</title>
    <link>http://blog.mayflower.de/archives/776-Mayflower-veroeffentlicht-OXID-Admin-Module-Creator.html</link>
            <category>OXID</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/776-Mayflower-veroeffentlicht-OXID-Admin-Module-Creator.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=776</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=776</wfw:commentRss>
    

    <author>nospam@example.com (Stefan Krenz)</author>
    <content:encoded>
    Der Adminbereich von OXID ist umfangreich und über Module erweiterbar. Leider ist letzteres ein kompliziertes Unterfangen und mit einigen Stolperfallen versehen.&lt;br /&gt;
Um die Entwicklung solcher Module zu erleichtern und die Fehleranfälligkeit zu verringern, hat Mayflower ein Adminmodul für den OXID eShop entwickelt, den &lt;em&gt;Admin Module Creator&lt;/em&gt;.&lt;br /&gt;
Der Admin Module Creator, im folgenden AMC genannt, erstellt dabei alle benötigten Dateien. Im Einzelnen sind das die Admin-View-Klassen, Core-Klassen, Templates, Sprachdateien und eine &lt;em&gt;menu.xml&lt;/em&gt; für den Menüeintrag im Adminbereich.&lt;br /&gt;
Es können bereits vorhandene Menüpunkte erweitert oder eigene erstellt werden. Der AMC erstellt automatisch einen neuen Eintrag im Menü oder einen neuen Tab in der Listenansicht, in Abhängigkeit von dem gewählten Menüpunkt.&lt;br /&gt;
Treten beim Erstellen eines Adminmoduls Fehler auf, so werden die bereits getätigten Änderungen rückgängig gemacht (Rollback).&lt;br /&gt;
Details über die erstellten Module sind im AMC einsehbar. Zusätzlich können die Module dort auch wieder gelöscht werden.&lt;br /&gt;&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://blog.mayflower.de/archives/776-Mayflower-veroeffentlicht-OXID-Admin-Module-Creator.html#extended&quot;&gt;Continue reading &quot;Mayflower veröffentlicht OXID Admin Module Creator&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 17 Nov 2011 09:33:00 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/776-guid.html</guid>
    
</item>
<item>
    <title>Nginx Rewrite Regeln für OXID eShop </title>
    <link>http://blog.mayflower.de/archives/777-Nginx-Rewrite-Regeln-fuer-OXID-eShop.html</link>
            <category>OXID</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/777-Nginx-Rewrite-Regeln-fuer-OXID-eShop.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=777</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=777</wfw:commentRss>
    

    <author>nospam@example.com (Stefan Krenz)</author>
    <content:encoded>
    Der OXID eShop ist primär auf den HTTP-Server Apache2 ausgelegt. Eine Suche ergab entweder nur Konfigurationsfragmente oder nicht funktionierende Lösungen. Wir haben einen der Suchtreffer genommen und die Rewrite Regeln vom Apache-Modul &amp;quot;mod_rewrite&amp;quot; auf eine Nginx VHost Konfiguration portiert.&lt;br /&gt;&lt;br /&gt;
Der OXID eShop ist nun unter der folgenden Software-Konstellation lauffähig:&lt;br /&gt;
&lt;ul&gt;
    &lt;li&gt;Ubuntu 10.04.3 LTS&lt;/li&gt;
    &lt;li&gt;Nginx 0.7.65-1ubuntu2.1&lt;/li&gt;
    &lt;li&gt;PHP 5.3.2-1ubuntu4.10 (FastCGI)&lt;/li&gt;
    &lt;li&gt;OXID eShop 4.5.4 CE&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt; &lt;br /&gt;&lt;a href=&quot;http://blog.mayflower.de/archives/777-Nginx-Rewrite-Regeln-fuer-OXID-eShop.html#extended&quot;&gt;Continue reading &quot;Nginx Rewrite Regeln für OXID eShop &quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 16 Nov 2011 11:31:24 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/777-guid.html</guid>
    <category>e-commerce</category>
<category>ecommerce</category>
<category>nginx</category>
<category>oxid</category>

</item>
<item>
    <title>IPC 2011 - ein kurzer Bericht</title>
    <link>http://blog.mayflower.de/archives/760-IPC-2011-ein-kurzer-Bericht.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/760-IPC-2011-ein-kurzer-Bericht.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=760</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=760</wfw:commentRss>
    

    <author>nospam@example.com (Alberto Assmann)</author>
    <content:encoded>
    Die International PHP Konferenz im schönen Mainz liegt wenige Tage zurück, Grund genug für mich ein Fazit zu ziehen und einige besondere Perlen unter den zahlreichen Vorträgen zu erwähnen.&lt;br /&gt;
Mit der Rheingoldhalle in Mainz hat der Veranstalter meiner Meinung nach eine sehr schöne Location gefunden, die flexible Vortragsräume bot um sowohl großen Vorträgen mit mehreren hundert Zuhörern, als auch kleineren Präsentationen entsprechenden Platz zu bieten.&lt;br /&gt;
Einzig der Bereich für Aussteller, Garderobe und Eingang zu den jeweiligen Räumen hätte gerne größer ausfallen dürfen.&lt;br /&gt;
Jedoch ließen sich die wenigsten von dieser Tatsache stören und so kamen auch auf diesem engerem Raum viele gute Gespräche zustande.&lt;br /&gt;
&lt;br /&gt; &lt;br /&gt;&lt;a href=&quot;http://blog.mayflower.de/archives/760-IPC-2011-ein-kurzer-Bericht.html#extended&quot;&gt;Continue reading &quot;IPC 2011 - ein kurzer Bericht&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 13 Oct 2011 13:59:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/760-guid.html</guid>
    <category>event</category>
<category>international php conference</category>
<category>ipc</category>
<category>ipc2011</category>
<category>php</category>

</item>
<item>
    <title>Micro Excellence with Macro Impacts - Vortrag@Mayflower-München</title>
    <link>http://blog.mayflower.de/archives/750-Micro-Excellence-with-Macro-Impacts-VortragMayflower-Muenchen.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/750-Micro-Excellence-with-Macro-Impacts-VortragMayflower-Muenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=750</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=750</wfw:commentRss>
    

    <author>nospam@example.com (Inga Zilles)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 29.09.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Micro Excellence with Macro Impacts&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
Codequalität ist entscheidend für den Erfolg oder das Scheitern eines jeden Projektes. Der Vortrag bietet im Wesentlichen eine kompakte Zusammenstellung wertvoller Empfehlungen aus dem Buch &quot;Clean Code&quot; von Robert C. Martin sowie einige Hilfestellungen für PHP Entwickler. Ein Vortrag von Paul Guhl.
&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Mon, 26 Sep 2011 15:19:14 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/750-guid.html</guid>
    
</item>
<item>
    <title>Micro Excellence with Macro Impacts - Vortrag@Mayflower-München</title>
    <link>http://blog.mayflower.de/archives/751-Micro-Excellence-with-Macro-Impacts-VortragMayflower-Muenchen.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/751-Micro-Excellence-with-Macro-Impacts-VortragMayflower-Muenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=751</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=751</wfw:commentRss>
    

    <author>nospam@example.com (Inga Zilles)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 29.09.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Micro Excellence with Macro Impacts&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
Codequalität ist entscheidend für den Erfolg oder das Scheitern eines jeden Projektes. Der Vortrag bietet im Wesentlichen eine kompakte Zusammenstellung wertvoller Empfehlungen aus dem Buch &quot;Clean Code&quot; von Robert C. Martin sowie einige Hilfestellungen für PHP Entwickler. Ein Vortrag von Paul Guhl.
&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Mon, 26 Sep 2011 15:19:14 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/751-guid.html</guid>
    
</item>
<item>
    <title>BDD mit Behat - Vortrag@Mayflower-Würzburg</title>
    <link>http://blog.mayflower.de/archives/748-BDD-mit-Behat-VortragMayflower-Wuerzburg.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/748-BDD-mit-Behat-VortragMayflower-Wuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=748</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=748</wfw:commentRss>
    

    <author>nospam@example.com (Inga Zilles)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 29.09.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Pleichertorstrasse 2, 97070 Würzburg, Straßenbahn Haltestelle Congress Centrum).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;BDD mit Behat&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
&quot;BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.&quot; Zitat: Dan North&lt;br /&gt;
Was dieser eher schwer verdauliche Satz von Dan North, einem der Initiatoren des Behavior Driven Development, beschreibt, soll ein kurzer Überblick über die Prinzipien von BDD beleuchten. An Hand von Beispielen wird Micha Triba das BDD Framework für PHP &quot;Behat&quot; vorstellen.
&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=97070+Pleichertorstrasse+2&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Pleichertorstra%C3%9Fe+2,+W%C3%BCrzburg+97070+W%C3%BCrzburg,Redis+Bayern&amp;ll=49.799938,9.926319&amp;spn=0.009944,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro Würzburg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; 
    </content:encoded>

    <pubDate>Mon, 26 Sep 2011 14:29:35 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/748-guid.html</guid>
    
</item>
<item>
    <title>BDD mit Behat - Vortrag@Mayflower-Würzburg</title>
    <link>http://blog.mayflower.de/archives/749-BDD-mit-Behat-VortragMayflower-Wuerzburg.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/749-BDD-mit-Behat-VortragMayflower-Wuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=749</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=749</wfw:commentRss>
    

    <author>nospam@example.com (Inga Zilles)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 28.09.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Pleichertorstrasse 2, 97070 Würzburg, Straßenbahn Haltestelle Congress Centrum).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;BDD mit Behat&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
&quot;BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.&quot; Zitat: Dan North&lt;br /&gt;
Was dieser eher schwer verdauliche Satz von Dan North, einem der Initiatoren des Behavior Driven Development, beschreibt, soll ein kurzer Überblick über die Prinzipien von BDD beleuchten. An Hand von Beispielen wird Micha Triba das BDD Framework für PHP &quot;Behat&quot; vorstellen.
&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=97070+Pleichertorstrasse+2&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Pleichertorstra%C3%9Fe+2,+W%C3%BCrzburg+97070+W%C3%BCrzburg,Redis+Bayern&amp;ll=49.799938,9.926319&amp;spn=0.009944,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro Würzburg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; 
    </content:encoded>

    <pubDate>Mon, 26 Sep 2011 14:29:35 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/749-guid.html</guid>
    
</item>
<item>
    <title>BDD mit Behat - Vortrag@Mayflower-München</title>
    <link>http://blog.mayflower.de/archives/744-BDD-mit-Behat-VortragMayflower-Muenchen.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/744-BDD-mit-Behat-VortragMayflower-Muenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=744</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=744</wfw:commentRss>
    

    <author>nospam@example.com (Inga Zilles)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 22.09.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;BDD mit Behat&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
&quot;BDD is a second-generation, outside-in, pull-based, multiple-stakeholder, multiple-scale, high-automation, agile methodology. It describes a cycle of interactions with well-defined outputs, resulting in the delivery of working, tested software that matters.&quot; Zitat: Dan North&lt;br /&gt;
Was dieser eher schwer verdauliche Satz von Dan North, einem der Initiatoren des Behavior Driven Development, beschreibt, soll ein kurzer Überblick über die Prinzipien von BDD beleuchten. An Hand von Beispielen soll das BDD Framework für PHP &quot;Behat&quot; vorgestellt werden.
&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Mon, 19 Sep 2011 11:28:44 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/744-guid.html</guid>
    
</item>
<item>
    <title>Shell Fu for Developers - Vortrag@Mayflower-Würzburg</title>
    <link>http://blog.mayflower.de/archives/743-Shell-Fu-for-Developers-VortragMayflower-Wuerzburg.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/743-Shell-Fu-for-Developers-VortragMayflower-Wuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=743</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=743</wfw:commentRss>
    

    <author>nospam@example.com (Inga Zilles)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 22.09.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Pleichertorstrasse 2, 97070 Würzburg, Straßenbahn Haltestelle Congress Centrum).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Shell Fu for Developers&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
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.
&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=97070+Pleichertorstrasse+2&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Pleichertorstra%C3%9Fe+2,+W%C3%BCrzburg+97070+W%C3%BCrzburg,Redis+Bayern&amp;ll=49.799938,9.926319&amp;spn=0.009944,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro Würzburg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; 
    </content:encoded>

    <pubDate>Mon, 19 Sep 2011 11:25:16 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/743-guid.html</guid>
    
</item>
<item>
    <title>Nachbericht zur PHP Unconference Hamburg 2011</title>
    <link>http://blog.mayflower.de/archives/741-Nachbericht-zur-PHP-Unconference-Hamburg-2011.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/741-Nachbericht-zur-PHP-Unconference-Hamburg-2011.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=741</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=741</wfw:commentRss>
    

    <author>nospam@example.com (Florian Anderiasch)</author>
    <content:encoded>
    &lt;p&gt;Nachdem der ursprüngliche Plan eines Flugs am Samstag morgen von
München nach Hamburg nicht aufgegangen war, ging es Freitag nachmittag
bzw Samstag sehr früh mit Bahn und Mietwagen los nach Hamburg,
bestehend aus ganz viel A7 und ein bisschen A8.&lt;/p&gt;

&lt;p&gt;Ohne viele Zwischenfälle konnten wir den Würzburger Kollegen unterwegs
einsammeln und waren trotz Navi-Wirren alle 10 pünktlich um 10:30 am
altbekannten Geomatikum in Hamburg.&lt;/p&gt;

&lt;p&gt;Nachdem wir unsere Namensschilder abgeholt, alte Bekannte begrüsst und
erstmal Kaffee getankt hatten gings auch schon los mit der Vorstellung
der angebotenen Sessions und dem Versuch, für auf der Webseite
gewünschte Themen jemanden zu finden, der sich in Materie fit genug
fühlte, einen Vortrag zu halten.&lt;/p&gt;

&lt;p&gt;Gleich danach ging es an die Abstimmung, hierzu hatte jeder Teilnehmer
4 Klebepunkte, mit denen er die 4 Vorträge kennzeichnen sollte, die am
interessantesten erschienen. Daraus erstellte das Orga-Team dann einen
Ablaufplan von je 4 aufeinderfolgenden Slots in 4 Räumen, also
insgesamt 16 Vorträge.&lt;/p&gt;

&lt;p&gt;Der wesentliche Unterschied zu einer klassischen Konferenz ist also
zum einen, dass die Teilnehmer die Vorträge selbst wählen und zum
anderen, dass deutlich längere Pausen und der offene Raum dazu
ermuntern sollen, sich zwischen den Vorträgen rege auszutauschen, sei
es über vergangene und kommende Vorträge als auch zum Kennenlernen der
anderen Teilnehmer.&lt;/p&gt;

&lt;p&gt;Die Qualität der Vorträge war mit wenigen Ausnahmen sehr hoch, auch
wir haben einige neue Ideen mitgenommen, die wir uns demnächst
intensiver anschauen und/oder für neue und bestehende Projekte
evaluieren wollen. Dies sind nicht nur technische Themen, auch
Richtung Projektmanagement oder -Organisation (z.B. Kanban oder
Rhetorik) war etwas geboten.&lt;/p&gt;

&lt;p&gt;Die Folien zu vielen Vorträgen gibt es auf den Wiki-Seite vom &lt;a
href=&quot;http://wiki.php-unconference.de/index.php/PhpUnconf2011TimetableSaturday&quot;&gt;Samstag&lt;/a&gt;
und &lt;a
href=&quot;http://wiki.php-unconference.de/index.php/PhpUnconf2011TimetableSunday&quot;&gt;Sonntag&lt;/a&gt;
zu sehen.&lt;/p&gt;

&lt;p&gt;Trotz dem am Sonntag mit großer Begeisterung verfolgten Vortrag
PHPopstars (über die hohe Anziehungskraft einiger Personen, die
oftmals in der Lage sind, einen der Räume zum Bersten zu füllen und
parallel stattfindenen Veranstaltungen die meisten Zuhörer
abzuziehen), ist die Atmosphäre auf der Unconf sehr entspannt und es
ist meistens sehr einfach, mit Leuten, die teilweise dieselben
Vorträge auf den führenden konventionellen PHP-Konferenzen halten oder
führende Positionen in namhaften Open-Source-Projekten innehalten ins
Gespräch zu kommen. (Oder sich zum Erfahrungsaustausch mit Entwicklern
zusammenzusetzen, deren Library man als eines von wenigen großen
Projekten in der neuesten Version produktiv einsetzt.)&lt;/p&gt;

&lt;p&gt;Bedingt durch die lange Heimreise mussten wir am Sonntag leider vor
dem letzten Vortragsslot schon aufbrechen und haben somit diesen und
die Abschlussveranstaltung verpasst.&lt;/p&gt;

&lt;p&gt;Schließen möchten wir diesen kurzen Unconf-Bericht mit einem großen
Lob an das Orga-Team, das seit Jahren unermüdlich eine Top-Veranstaltung auf
die Beine stellt und außerdem Dank an alle Helfer, Sponsoren und
Teilnehmer (vor allem die, die sich mit Vorträgen und Diskussionen
beteiligt haben).&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 16 Sep 2011 07:34:12 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/741-guid.html</guid>
    <category>unconference</category>

</item>
<item>
    <title>Shell Fu for Developers - Vortrag@Mayflower-München</title>
    <link>http://blog.mayflower.de/archives/740-Shell-Fu-for-Developers-VortragMayflower-Muenchen.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/740-Shell-Fu-for-Developers-VortragMayflower-Muenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=740</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=740</wfw:commentRss>
    

    <author>nospam@example.com (Inga Zilles)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 15.09.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Shell Fu for Developers&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
Nachdem vor einigen Wochen bereits Martin Brotzeller in die grundlegende Shell- und UNIX-Tools-Benutzung eingeführt hat, soll dieser Vortrag 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.
&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Mon, 12 Sep 2011 13:38:26 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/740-guid.html</guid>
    
</item>
<item>
    <title>Sencha Touch - Vortrag@Mayflower-Würzburg</title>
    <link>http://blog.mayflower.de/archives/739-Sencha-Touch-VortragMayflower-Wuerzburg.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/739-Sencha-Touch-VortragMayflower-Wuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=739</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=739</wfw:commentRss>
    

    <author>nospam@example.com (Inga Zilles)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 15.09.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Pleichertorstrasse 2, 97070 Würzburg, Straßenbahn Haltestelle Congress Centrum).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Sencha Touch&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
Mehr als die Hälfte der Benutzer haben inzwischen ein Smartphone, mit unterschiedlichen Betriebssystemen, jedoch meist einem Touchscreen als
Eingabegerät. Genau hier setzt Sencha Touch an, ein plattformübergreifendes Javascriptframework für mobile Endgeräte, welches sich auf Touchbedienung spezialisiert hat. Was für Möglichkeiten Sencha Touch bietet und welche Konzepte dahinter stecken wird Thema des Vortrags sein.
&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=97070+Pleichertorstrasse+2&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Pleichertorstra%C3%9Fe+2,+W%C3%BCrzburg+97070+W%C3%BCrzburg,Redis+Bayern&amp;ll=49.799938,9.926319&amp;spn=0.009944,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro Würzburg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;

 
    </content:encoded>

    <pubDate>Mon, 12 Sep 2011 13:35:42 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/739-guid.html</guid>
    
</item>
<item>
    <title>Sencha Touch - Vortrag@Mayflower-München</title>
    <link>http://blog.mayflower.de/archives/738-Sencha-Touch-VortragMayflower-Muenchen.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/738-Sencha-Touch-VortragMayflower-Muenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=738</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=738</wfw:commentRss>
    

    <author>nospam@example.com (Andreas Ganje)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 08.09.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Sencha Touch&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
Mehr als die Hälfte der Benutzer haben inzwischen ein Smartphone, mit unterschiedlichen Betriebssystemen, jedoch meist einem Touchscreen als
Eingabegerät. Genau hier setzt Sencha Touch an, ein plattformübergreifendes Javascriptframework für mobile Endgeräte, welches sich auf Touchbedienung spezialisiert hat. Was für Möglichkeiten Sencha Touch bietet und welche Konzepte dahinter stecken wird Thema des Vortrags sein.
&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Zur Anmeldung einfach einen Kommentar im Beitrag hinterlassen.&lt;/b&gt; 
    </content:encoded>

    <pubDate>Mon, 05 Sep 2011 22:16:14 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/738-guid.html</guid>
    
</item>
<item>
    <title>Sgp_Bazinga! - Vortrag@Mayflower-Würzburg</title>
    <link>http://blog.mayflower.de/archives/737-Sgp_Bazinga!-VortragMayflower-Wuerzburg.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/737-Sgp_Bazinga!-VortragMayflower-Wuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=737</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=737</wfw:commentRss>
    

    <author>nospam@example.com (Andreas Ganje)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 08.09.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Pleichertorstrasse 2, 97070 Würzburg, Straßenbahn und die Haltestelle Congress Centrum). &lt;br /&gt;Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Sgp_Bazinga!&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
In großen Projekten mit wachsenden Ansprüchen kann es passieren, dass gewisse Datenstrukturen unwartbar werden. Wenn Models zu unwartbaren Monstern werden, hilft auch die im Hintergrund arbeitende REST-Schnittstelle nicht mehr. &lt;b&gt;Stefan Staudenmeyer&lt;/b&gt;, Developer bei Mayflower, möchte anhand des Projektes Sevengames/Sat1Spiele zeigen, wie das Team mit Hilfe von Dependency Injection und mehreren kleinen Codeänderungen Herr über riesige sowie untransparente Codeblöcke wurde.
&lt;br /&gt;&lt;br /&gt;
Die Donnerstags-Vorträge werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=97070+Pleichertorstrasse+2&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Pleichertorstra%C3%9Fe+2,+W%C3%BCrzburg+97070+W%C3%BCrzburg,Redis+Bayern&amp;ll=49.799938,9.926319&amp;spn=0.009944,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro Würzburg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Zur Anmeldung einfach einen Kommentar im Beitrag hinterlassen.&lt;/b&gt; 
    </content:encoded>

    <pubDate>Mon, 05 Sep 2011 22:06:54 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/737-guid.html</guid>
    
</item>
<item>
    <title>Erfolgreich Verhandeln: Das Harvard Konzept - Vortrag@Mayflower-München</title>
    <link>http://blog.mayflower.de/archives/734-Erfolgreich-Verhandeln-Das-Harvard-Konzept-VortragMayflower-Muenchen.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/734-Erfolgreich-Verhandeln-Das-Harvard-Konzept-VortragMayflower-Muenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=734</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=734</wfw:commentRss>
    

    <author>nospam@example.com (Andreas Ganje)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 11.08.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).
&lt;br /&gt;
Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Erfolgreich Verhandeln: Das Harvard Konzept&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
Gekonnt verhandeln ist mehr als das bloße Erreichen von guten Verhandlungsergebnissen. Die Kunst besteht darin, ein erfolgreiches Ergebnis zu erzielen und dabei eine langfristig erfolgreiche Geschäftsbeziehung aufzubauen. Im Zentrum des Vortrags steht das Harvard-Konzept mit der Kernaussage &quot;Hart in der Sache, weich zu den Menschen&quot;. Verschiedene Verhandlungsstrategien werden vorgestellt und die Spielregeln des kooperativen Verhandelns diskutiert. Ein Vortrag von &lt;b&gt;Brigitte Gans&lt;/b&gt;.
&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Zur Anmeldung einfach einen Kommentar im Beitrag hinterlassen.&lt;/b&gt; 
    </content:encoded>

    <pubDate>Mon, 08 Aug 2011 21:11:06 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/734-guid.html</guid>
    
</item>
<item>
    <title>Linuxtools für Developer</title>
    <link>http://blog.mayflower.de/archives/733-Linuxtools-fuer-Developer.html</link>
            <category>Development</category>
            <category>Open Source</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/733-Linuxtools-fuer-Developer.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=733</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=733</wfw:commentRss>
    

    <author>nospam@example.com (Inga Zilles)</author>
    <content:encoded>
    Hier findet ihr die Folien zu dem Mayflower Vortrag zu dem Thema &quot;Linuxtools für Developer&quot;.&lt;br /&gt;
Am 28.07.2011 erklärte Martin Brotzeller im Rahmen eines Mayflower Donnerstags-Vortrages Tools und Features der Shell, mit denen Programmierer sich das Leben einfacher machen können. Der Schwerpunkt liegt beim Arbeiten mit der History sowie auf den gängigen Tools.&lt;br /&gt;&lt;br /&gt;

&lt;div style=&quot;width:425px&quot; id=&quot;__ss_8778890&quot;&gt; &lt;strong style=&quot;display:block;margin:12px 0 4px&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/mayflowergmbh/linuxtools-fuer-developer&quot; title=&quot;Linuxtools fuer Developer&quot; target=&quot;_blank&quot;&gt;Linuxtools fuer Developer&lt;/a&gt;&lt;/strong&gt; &lt;iframe src=&quot;http://www.slideshare.net/slideshow/embed_code/8778890&quot; width=&quot;425&quot; height=&quot;355&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt; &lt;div style=&quot;padding:5px 0 12px&quot;&gt; View more &lt;a href=&quot;http://www.slideshare.net/&quot; target=&quot;_blank&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/mayflowergmbh&quot; target=&quot;_blank&quot;&gt;Mayflower GmbH&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 05 Aug 2011 10:07:22 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/733-guid.html</guid>
    
</item>
<item>
    <title>Devops für PHP - Vortrag@Mayflower-München</title>
    <link>http://blog.mayflower.de/archives/729-Devops-fuer-PHP-VortragMayflower-Muenchen.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/729-Devops-fuer-PHP-VortragMayflower-Muenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=729</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=729</wfw:commentRss>
    

    <author>nospam@example.com (Andreas Ganje)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 04.08.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).&lt;br /&gt;Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Devops für PHP&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
Nachdem die großen Plattformen wie Flickr und Facebook vorgemacht haben, wie aus einer kontinuierlichen Entwicklung auch eine kontinuierliche Produktion werden kann, wird das Thema DevOps auch für kleinere LAMP-Projekte relevant. Welche Methoden und Tools für N Deploys pro Tag und Feature für Production-Zeiten von einer Woche sorgen, zeigt dieser Talk. Ein Vortrag von &lt;b&gt;Johann-Peter Hartmann&lt;/b&gt;.
&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Zur Anmeldung einfach einen Kommentar im Beitrag hinterlassen.&lt;/b&gt; 
    </content:encoded>

    <pubDate>Mon, 01 Aug 2011 22:37:53 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/729-guid.html</guid>
    
</item>
<item>
    <title>Opportunities and Risk Management - Vortrag@Mayflower-Würzburg</title>
    <link>http://blog.mayflower.de/archives/728-Opportunities-and-Risk-Management-VortragMayflower-Wuerzburg.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/728-Opportunities-and-Risk-Management-VortragMayflower-Wuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=728</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=728</wfw:commentRss>
    

    <author>nospam@example.com (Andreas Ganje)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 04.08.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Pleichertorstrasse 2, 97070 Würzburg, Straßenbahn und die Haltestelle Congress Centrum). &lt;br /&gt;Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Opportunities and Risk Management&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
In Anlehnung an das klassische Projekt Management von Institutionen wie das PMI oder IPMA kann man einen erweiterten Blick auf Impediments als eigenständige Projekt Management Teams unter Moderation unserer SCRUM Master probieren. Im folgenden Workshop wird die dunkle Seite der Impediments und ihrer Wirkung im Vokabular der Opportunities and Risk Managements aufgeleuchtet. Auf Basis eines kurzen Überblicks der klassischen (one-man) Methoden der IPMA wird eine Reihe von Games präsentiert, die man als Team anwenden kann. Diese Games dienen um Impediments aus dem Sprint Alltag und Chancen/Risiken aus den Reviews und Retrospektiven anzupacken. Ein Vortrag von &lt;b&gt;Periklis Tsirakidis&lt;/b&gt;.
&lt;br /&gt;&lt;br /&gt;
Die Donnerstags-Vorträge werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=97070+Pleichertorstrasse+2&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Pleichertorstra%C3%9Fe+2,+W%C3%BCrzburg+97070+W%C3%BCrzburg,Redis+Bayern&amp;ll=49.799938,9.926319&amp;spn=0.009944,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro Würzburg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Zur Anmeldung einfach einen Kommentar im Beitrag hinterlassen.&lt;/b&gt; 
    </content:encoded>

    <pubDate>Sun, 31 Jul 2011 20:22:09 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/728-guid.html</guid>
    
</item>
<item>
    <title>Linux/Unixtools für Developer - Vortrag@Mayflower-Würzburg</title>
    <link>http://blog.mayflower.de/archives/726-LinuxUnixtools-fuer-Developer-VortragMayflower-Wuerzburg.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/726-LinuxUnixtools-fuer-Developer-VortragMayflower-Wuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=726</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=726</wfw:commentRss>
    

    <author>nospam@example.com (Andreas Ganje)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 28.07.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Pleichertorstrasse 2, 97070 Würzburg, Straßenbahn und die Haltestelle Congress Centrum). &lt;br /&gt;Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Linux/Unixtools für Developer&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Martin Brotzeller&lt;/b&gt; erklärt Tools und Features der Shell, mit denen Programmierer sich das Leben einfacher machen können. Der Schwerpunkt liegt beim Arbeiten mit der History sowie gängigen Tools.
&lt;br /&gt;&lt;br /&gt;
Die Donnerstags-Vorträge werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=97070+Pleichertorstrasse+2&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Pleichertorstra%C3%9Fe+2,+W%C3%BCrzburg+97070+W%C3%BCrzburg,Redis+Bayern&amp;ll=49.799938,9.926319&amp;spn=0.009944,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro Würzburg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Zur Anmeldung einfach einen Kommentar im Beitrag hinterlassen.&lt;/b&gt; 
    </content:encoded>

    <pubDate>Sun, 24 Jul 2011 21:34:22 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/726-guid.html</guid>
    
</item>
<item>
    <title>Zahlungsabwicklung über die PayPal-API</title>
    <link>http://blog.mayflower.de/archives/725-Zahlungsabwicklung-ueber-die-PayPal-API.html</link>
            <category>Development</category>
            <category>E-Commerce</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/725-Zahlungsabwicklung-ueber-die-PayPal-API.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=725</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=725</wfw:commentRss>
    

    <author>nospam@example.com (Inga Zilles)</author>
    <content:encoded>
    Hier findet ihr die Folien zu dem Mayflower Vortrag zu dem Thema &quot;Zahlungsabwicklung über die PayPal-API&quot;.&lt;br /&gt;
Am 14.07.2011 erklärte Stefan Krenz im Rahmen eines Mayflower Donnerstags-Vortrages die Integration von Zahlungen per PayPal in eine Software. Als Beispiel dient ein Onlineshop. Paypal bietet Entwicklern eine Sandbox zur Unterstützung an. Die Vorgehensweise zur Nutzung der Sandbox und die Schritte zur Zahlungsabwicklung werden in diesem Vortrag erklärt.&lt;br /&gt;&lt;br /&gt;

&lt;div style=&quot;width:425px&quot; id=&quot;__ss_8663158&quot;&gt; &lt;strong style=&quot;display:block;margin:12px 0 4px&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/mayflowergmbh/zahlungsabwicklung-ber-die-paypalapi&quot; title=&quot;Zahlungsabwicklung über die PayPal-API&quot; target=&quot;_blank&quot;&gt;Zahlungsabwicklung über die PayPal-API&lt;/a&gt;&lt;/strong&gt; &lt;iframe src=&quot;http://www.slideshare.net/slideshow/embed_code/8663158&quot; width=&quot;425&quot; height=&quot;355&quot; frameborder=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt; &lt;div style=&quot;padding:5px 0 12px&quot;&gt; View more &lt;a href=&quot;http://www.slideshare.net/&quot; target=&quot;_blank&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/mayflowergmbh&quot; target=&quot;_blank&quot;&gt;Mayflower GmbH&lt;/a&gt; &lt;/div&gt; &lt;/div&gt; 
    </content:encoded>

    <pubDate>Fri, 22 Jul 2011 14:13:56 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/725-guid.html</guid>
    
</item>
<item>
    <title>Opportunities and Risk Management - Vortrag@Mayflower-München</title>
    <link>http://blog.mayflower.de/archives/727-Opportunities-and-Risk-Management-VortragMayflower-Muenchen.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/727-Opportunities-and-Risk-Management-VortragMayflower-Muenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=727</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=727</wfw:commentRss>
    

    <author>nospam@example.com (Andreas Ganje)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 28.07.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).&lt;br /&gt;Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Opportunities and Risk Management&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
In Anlehnung an das klassische Projekt Management von Institutionen wie das PMI oder IPMA kann man einen erweiterten Blick auf Impediments als eigenständige Projekt Management Teams unter Moderation unserer SCRUM Master probieren. Im folgenden Workshop wird die dunkle Seite der Impediments und ihrer Wirkung im Vokabular der Opportunities and Risk Managements aufgeleuchtet. Auf Basis eines kurzen Überblicks der klassischen (one-man) Methoden der IPMA wird eine Reihe von Games präsentiert, die man als Team anwenden kann. Diese Games dienen um Impediments aus dem Sprint Alltag und Chancen/Risiken aus den Reviews und Retrospektiven anzupacken. Ein Vortrag von &lt;b&gt;Periklis Tsirakidis&lt;/b&gt;.
&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Zur Anmeldung einfach einen Kommentar im Beitrag hinterlassen.&lt;/b&gt; 
    </content:encoded>

    <pubDate>Sun, 24 Jul 2011 22:48:06 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/727-guid.html</guid>
    
</item>
<item>
    <title>Caching Infrastrukturen - Vortrag@Mayflower-Würzburg</title>
    <link>http://blog.mayflower.de/archives/724-Caching-Infrastrukturen-VortragMayflower-Wuerzburg.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/724-Caching-Infrastrukturen-VortragMayflower-Wuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=724</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=724</wfw:commentRss>
    

    <author>nospam@example.com (Andreas Ganje)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 21.07.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Pleichertorstrasse 2, 97070 Würzburg, Straßenbahn und die Haltestelle Congress Centrum). &lt;br /&gt;Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Caching Infrastrukturen&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Stefan Staudenmeyer&lt;/b&gt;, Developer bei Mayflower, analysiert in seinem Webinar einige Ansätze, mit welchen man mit ein paar Handgriffen Herr über Traffic und Rechenzeit werden kann. Im Detail wird er auf das Cachen von Seitenstrukturen, Web-Services uvm. sowie auf den allgemeinen Umgang und das Einrichten von Caches eingehen.
&lt;br /&gt;&lt;br /&gt;
Die Donnerstags-Vorträge werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=97070+Pleichertorstrasse+2&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Pleichertorstra%C3%9Fe+2,+W%C3%BCrzburg+97070+W%C3%BCrzburg,Redis+Bayern&amp;ll=49.799938,9.926319&amp;spn=0.009944,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro Würzburg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Zur Anmeldung einfach einen Kommentar im Beitrag hinterlassen.&lt;/b&gt; 
    </content:encoded>

    <pubDate>Mon, 18 Jul 2011 00:17:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/724-guid.html</guid>
    
</item>
<item>
    <title>Buildscripts mit PHING - Teil 2</title>
    <link>http://blog.mayflower.de/archives/715-Buildscripts-mit-PHING-Teil-2.html</link>
            <category>Development</category>
            <category>Open Source</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/715-Buildscripts-mit-PHING-Teil-2.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=715</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=715</wfw:commentRss>
    

    <author>nospam@example.com (Alberto Assmann)</author>
    <content:encoded>
    Im &lt;a href=&quot;http://blog.mayflower.de/archives/714-Buildscripts-mit-PHING-Teil-1.html&quot; title=&quot;letzten Teil&quot;&gt;letzten Teil&lt;/a&gt; wurde erklärt wie ein SVN Repository automatisch exportiert werden kann.&lt;br /&gt;
Diese Fortsetzung erklärt das Schreiben eigener Tasks.&lt;br /&gt;
Dafür werden wir alle SQL-Files im &lt;b&gt;data&lt;/b&gt; Ordner zu einem zusammenfügen.
Der Einfachheit halber nehmen wir an, dass während der Entwicklung die einzelnen SQL-Files mit einem aufsteigend numerischen Präfix gleicher Länge versehen wurden.&lt;br /&gt;
Also haben wir zum Beispiel folgende Files:&lt;br /&gt;
001_Setup_db.sql&lt;br /&gt;
002_data.sql&lt;br /&gt;
003_TEST_data.sql&lt;br /&gt;
&lt;br /&gt;
Da wir die Testdaten (003_TEST_data.sql) jedoch nicht mit ausliefern wollen schreit diese Aufgabe geradezu nach einem eigenen Task.&lt;br /&gt;
Hier spielt nun PHING erstmals seine Stärke gegenüber ANT aus.&lt;br /&gt;
Eigene Tasks werden für PHING in PHP geschrieben, wir müssen als Developer also nicht extra eine neue Sprache lernen.&lt;br /&gt;
&lt;br /&gt; &lt;br /&gt;&lt;a href=&quot;http://blog.mayflower.de/archives/715-Buildscripts-mit-PHING-Teil-2.html#extended&quot;&gt;Continue reading &quot;Buildscripts mit PHING - Teil 2&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 12 Jul 2011 10:25:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/715-guid.html</guid>
    <category>automatisierung</category>
<category>buildscript</category>
<category>deployment</category>
<category>phing</category>
<category>php</category>

</item>
<item>
    <title>Buildscripts mit PHING - Teil 3</title>
    <link>http://blog.mayflower.de/archives/716-Buildscripts-mit-PHING-Teil-3.html</link>
            <category>Development</category>
            <category>Open Source</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/716-Buildscripts-mit-PHING-Teil-3.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=716</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=716</wfw:commentRss>
    

    <author>nospam@example.com (Alberto Assmann)</author>
    <content:encoded>
    Im &lt;a href=&quot;http://blog.mayflower.de/archives/715-Buildscripts-mit-PHING-Teil-2.html&quot; title=&quot;zweiten Teil&quot;&gt;zweiten Teil&lt;/a&gt; wurde die Hauptaufgabe, das Zusammenführen aller SQL-Files, durch einen eigenen Task gelöst.&lt;br /&gt;
Nun fehlen noch die letzten Schritte, das Bereinigen und Zusammenpacken der Projektdateien und das anschließende Bilden einer Prüfsumme.
Anschließend müssen alle Ausgaben nur noch zusammengefasst ausgeführt werden, um einen Deployfähigen Zustand zu erhalten.
Damit am Schluss alle Aufgaben nur noch zusammengefasst ausgeführt werden müssen, um ein Deployfähigen Zustand zu erhalten.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://blog.mayflower.de/archives/716-Buildscripts-mit-PHING-Teil-3.html#extended&quot;&gt;Continue reading &quot;Buildscripts mit PHING - Teil 3&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 18 Jul 2011 09:44:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/716-guid.html</guid>
    <category>automatisierung</category>
<category>buildscript</category>
<category>deployment</category>
<category>phing</category>
<category>php</category>

</item>
<item>
    <title>IPC Spring 2011 - Don't click! Code! </title>
    <link>http://blog.mayflower.de/archives/722-IPC-Spring-2011-Dont-click!-Code!.html</link>
            <category>Development</category>
            <category>Open Source</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/722-IPC-Spring-2011-Dont-click!-Code!.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=722</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=722</wfw:commentRss>
    

    <author>nospam@example.com (Paul Seiffert)</author>
    <content:encoded>
    Über die letzten Jahre sind einige sehr ausgereifte und flexible Content-Management-Systeme (CMS) entstanden, welche Endkunden die Verwaltung der eigenen Webseiten leicht machen und in vielen Fällen out of the box genügend Funktionen bereitstellen um gesamte Webpräsenzen zu stützen. In vielen Fällen benötigen Webseiten jedoch spezielle Funktionalität die auch mit dem mächtigsten CMS nicht abgedeckt wird. Für solche Anpassungen ist meist das Erweitern des CMS notwendig, was oft zu Kopfschmerzen auf Seiten des mit den Anpassungen betrauten Entwicklers führt. Diese Problemstellung leitet zu einer Klasse von Software-Systemen, die sich &lt;strong&gt;Content-Management-Frameworks (CMF)&lt;/strong&gt; nennen. CMFs versuchen, eine einfache Grundlage oder auch nur einen Werkzeugkasten für spezialisierte Content-Management-Systeme zu bilden.
&lt;br /&gt;&lt;br /&gt;

In seinem Vortrag &lt;em&gt;Don&#039;t click! Code!&lt;/em&gt; auf der &lt;a href=&quot;http://phpconference.com/&quot; title=&quot;International PHP Conference Spring 2011&quot;&gt;International PHP Conference Spring 2011&lt;/a&gt;, erklärte Lukas Smith von der &lt;a href=&quot;http://www.liip.ch/&quot; title=&quot;Liip AG&quot;&gt;Liip AG&lt;/a&gt; die oben angesprochene Problemstellung und stellte das &lt;a href=&quot;http://cmf.symfony.com/&quot; title=&quot;Symfony2 CMF&quot;&gt;Symfony2 CMF&lt;/a&gt; vor. Das Projekt steckt im Moment noch in den Kinderschuhen, wird dafür allerdings explizit durch Feature-Wünsche von Entwicklern unterschiedlicher Firmen und auch Freelancern spezifiziert. So soll das Projekt von Anfang an von einer großen Community gestützt sein und im Bezug auf die enthaltene Funktionalität eine möglichst große Masse an Entwickler ansprechen.
&lt;br /&gt;&lt;br /&gt;

Ein wichtiger Aspekt des Symfony2 CMFs ist, dass es von Anfang an auf NoSQL-Datenbanken setzt. Dies ist dadurch begründet, dass die Daten, die ein CMS speichern können soll, zu heterogen sind, als dass sie durch ein generisches Datenmodell in einem CMF sauber abgebildet werden können. Der hier entscheidende Punkt von NoSQL-Technologien ist, dass diese keine relationalen Datenbanken sind, in denen jede Entität eine fixe Menge von Attributen besitzt. Ganz im Gegenteil können NoSQL-Datenbanken mit dynamischen Datenstrukturen umgehen ohne vor der Persistierung von Daten zu wissen, welche Attribute und Relationen eine Entität haben könnte. Diese Eigenschaft macht sich das Symfony2 CMF zu Nutze und verwendet den Ansatz der &lt;a href=&quot;http://de.wikipedia.org/wiki/Content_Repository_for_Java_Technology_API&quot; title=&quot;Content Repositories&quot;&gt;Content Repositories von Java&lt;/a&gt; um alle anfallende Daten (welche in diesem Kontext als Dokumente bezeichnet werden) zu persistieren. Die Kerntechnologie in diesem Bereich wird die &lt;a href=&quot;http://phpcr.github.com/&quot; title=&quot;PHPCR ODM-API&quot;&gt;PHPCR ODM-API&lt;/a&gt; bilden, welche nach dem offenen Standard JCR (Java Content Repository), welcher im &lt;a href=&quot;http://jcp.org/en/jsr/detail?id=283&quot; title=&quot;JSR-283&quot;&gt;JSR-283&lt;/a&gt; definiert ist. Diese beinhaltet neben den üblichen Persistenz-Funktionen auch nativ Unterstützung zur Versionierung von Dokumenten und der Speicherung von Dokumenten, die eine Graphen- bzw. Baumstruktur vorweisen.
&lt;br /&gt;&lt;br /&gt;

Alles in allem klingt das Symfony2 CMF-Projekt sehr vielversprechend und sollte in den kommenden Monaten aktiv beobachtet werden. Ein wirklicher Zeitplan für ein erstes Release der Software existiert im Moment noch nicht, eines der explizieten Ziele des Projekts ist es jedoch, innerhalb von 12 Monaten brauchbare Ergebnisse vorzuweisen. 
    </content:encoded>

    <pubDate>Wed, 13 Jul 2011 10:17:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/722-guid.html</guid>
    
</item>
<item>
    <title>Buildscripts mit PHING - Teil 1</title>
    <link>http://blog.mayflower.de/archives/714-Buildscripts-mit-PHING-Teil-1.html</link>
            <category>Development</category>
            <category>Open Source</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/714-Buildscripts-mit-PHING-Teil-1.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=714</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=714</wfw:commentRss>
    

    <author>nospam@example.com (Alberto Assmann)</author>
    <content:encoded>
    Als Dienstleister veröffentlicht man selten Software direkt auf dem Zielserver.
Meist übergibt man dem Auftraggeber ein Paket, welches sämtlichen Projektcode enthält und eine entsprechende Installationsanleitung.&lt;br /&gt;
Nun ist das Vorbereiten eines solchen Paketes eine mühsame Angelegenheit.&lt;br /&gt;
Es müssen alle Testdateien entfernt werden, da diese auf einem Produktivsystem nichts zu suchen haben.&lt;br /&gt;
Verschiedene SQL-Dateien müssen zu einer zusammengefügt werden, der Kunde möchte schließlich beim Deploy so einfache Anweisungen wie möglich haben.&lt;br /&gt;
Diese und viele weitere Aufgaben fallen an, bevor eine Software an den Kunden ausgeliefert werden kann.&lt;br /&gt;
Nun entwickeln wir Software, und es kommt auch bei noch so gründlicher Entwicklung und Tests immer wieder zu Bugs.&lt;br /&gt;
Nach dem Fixen des Bugs muss also nochmals der Deploymentprozess Schritt für Schritt durchgegangen werden.&lt;br /&gt;
All das kostet Zeit, da bei jeder Übergabe an den Kunden die immer gleichen Schritte durchgeführt werden müssen.&lt;br /&gt;
&lt;br /&gt;
Warum also nicht automatisieren?&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://blog.mayflower.de/archives/714-Buildscripts-mit-PHING-Teil-1.html#extended&quot;&gt;Continue reading &quot;Buildscripts mit PHING - Teil 1&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 08 Jul 2011 14:05:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/714-guid.html</guid>
    <category>automatisierung</category>
<category>buildscript</category>
<category>deployment</category>
<category>phing</category>
<category>php</category>

</item>
<item>
    <title>Agilität, Exzellenz und Fehler - Vortrag@Mayflower-München</title>
    <link>http://blog.mayflower.de/archives/720-Agilitaet,-Exzellenz-und-Fehler-VortragMayflower-Muenchen.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/720-Agilitaet,-Exzellenz-und-Fehler-VortragMayflower-Muenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=720</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=720</wfw:commentRss>
    

    <author>nospam@example.com (Andreas Ganje)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 14.07.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).&lt;br /&gt;Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Agilität, Exzellenz und Fehler&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
&#039;Agilität und Exzellenz&#039; sind die zwei Kernwerte von Mayflower. Wie haben Fehler auf dem Weg zu diesen Zielen noch Platz?
&lt;br /&gt;&lt;br /&gt;
Anhand von Diskussion und Beispielen zeigt &lt;b&gt;Albrecht Günther&lt;/b&gt; auf, dass für Wissensarbeiter der offene und konstruktive Umgang mit Fehlern als Teil einer positiven Unternehmenskultur essentiell für einen Firmenerfolg und notwendig für die Erreichung von Exzellenz ist.
&lt;br /&gt;&lt;br /&gt;
Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;
&lt;b&gt;Zur Anmeldung einfach einen Kommentar im Beitrag hinterlassen.&lt;/b&gt; 
    </content:encoded>

    <pubDate>Mon, 11 Jul 2011 21:27:36 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/720-guid.html</guid>
    
</item>
<item>
    <title>Integration von Zahlungen per PayPal - Vortrag@Mayflower-Würzburg</title>
    <link>http://blog.mayflower.de/archives/719-Integration-von-Zahlungen-per-PayPal-VortragMayflower-Wuerzburg.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/719-Integration-von-Zahlungen-per-PayPal-VortragMayflower-Wuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=719</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=719</wfw:commentRss>
    

    <author>nospam@example.com (Andreas Ganje)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 14.07.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Pleichertorstrasse 2, 97070 Würzburg, Straßenbahn und die Haltestelle Congress Centrum). &lt;br /&gt;Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Integration von Zahlungen per PayPal&lt;/b&gt;&quot;.
&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Stefan Krenz&lt;/b&gt; wird die Integration von Zahlungen per PayPal in eine Software erläutern. Als Beispiel dient ein Onlineshop. Paypal bietet Entwicklern eine Sandbox zur Unterstützung an. Die Vorgehensweise zur Nutzung der Sandbox und die Schritte zur Zahlungsabwicklung werden in diesem Vortrag erklärt.
&lt;br /&gt;&lt;br /&gt;
Die Donnerstags-Vorträge werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
&lt;br /&gt;
Wir freuen uns auf viele Teilnehmer!
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=97070+Pleichertorstrasse+2&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Pleichertorstra%C3%9Fe+2,+W%C3%BCrzburg+97070+W%C3%BCrzburg,Redis+Bayern&amp;ll=49.799938,9.926319&amp;spn=0.009944,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro Würzburg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Zur Anmeldung einfach einen Kommentar im Beitrag hinterlassen.&lt;/b&gt; 
    </content:encoded>

    <pubDate>Sun, 10 Jul 2011 23:12:51 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/719-guid.html</guid>
    
</item>
<item>
    <title>Agilität, Exzellenz und Fehler - Vortrag@Mayflower-Würzburg</title>
    <link>http://blog.mayflower.de/archives/712-Agilitaet,-Exzellenz-und-Fehler-VortragMayflower-Wuerzburg.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/712-Agilitaet,-Exzellenz-und-Fehler-VortragMayflower-Wuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=712</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=712</wfw:commentRss>
    

    <author>nospam@example.com (Andreas Ganje)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 07.07.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Pleichertorstrasse 2, 97070 Würzburg, Straßenbahn und die Haltestelle Congress Centrum). &lt;br /&gt;Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Agilität, Exzellenz und Fehler&lt;/b&gt;&quot;.

&lt;br /&gt;&lt;br /&gt;

&#039;Agilität und Exzellenz&#039; sind die zwei Kernwerte von Mayflower. Wie haben Fehler auf dem Weg zu diesen Zielen noch Platz?
&lt;br /&gt;&lt;br /&gt;
Anhand von Diskussion und Beispielen zeigt &lt;b&gt;Albrecht Günther&lt;/b&gt; auf, dass für Wissensarbeiter der offene und konstruktive Umgang mit Fehlern als Teil einer positiven Unternehmenskultur essentiell für einen Firmenerfolg und notwendig für die Erreichung von Exzellenz ist.

&lt;br /&gt;&lt;br /&gt;

Die Donnerstags-Vorträge werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!

&lt;br /&gt;

Wir freuen uns auf viele Teilnehmer!

&lt;br /&gt;&lt;br /&gt;

&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=97070+Pleichertorstrasse+2&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Pleichertorstra%C3%9Fe+2,+W%C3%BCrzburg+97070+W%C3%BCrzburg,Redis+Bayern&amp;ll=49.799938,9.926319&amp;spn=0.009944,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro Würzburg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;

&lt;b&gt;Zur Anmeldung einfach einen Kommentar im Beitrag hinterlassen.&lt;/b&gt; 
    </content:encoded>

    <pubDate>Mon, 04 Jul 2011 21:07:52 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/712-guid.html</guid>
    
</item>
<item>
    <title>Die Leiden des jungen Product Owner - Vortrag@Mayflower-München</title>
    <link>http://blog.mayflower.de/archives/711-Die-Leiden-des-jungen-Product-Owner-VortragMayflower-Muenchen.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/711-Die-Leiden-des-jungen-Product-Owner-VortragMayflower-Muenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=711</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=711</wfw:commentRss>
    

    <author>nospam@example.com (Andreas Ganje)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 07.07.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).&lt;br /&gt;Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Die Leiden des jungen Product Owner&lt;/b&gt;&quot;.

&lt;br /&gt;&lt;br /&gt;

&quot;Mein Tagebuch, das ich seit einiger Zeit vernachlässiget, fiel mir heute wieder in die Hände, und ich bin erstaunt, wie ich so wissentlich in das alles Schritt vor Schritt hineingegangen bin! Wie ich über meinen Zustand immer so klar gesehen und doch gehandelt habe wie ein Kind, jetzt noch so klar sehe und es noch keinen Anschein zur Besserung gibt.&quot;
&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Steffen Hartmann&lt;/b&gt; gewährt Einblicke in das Leben des Product Owners. Eine Betrachtung nicht nur aus der Sicht des Teams, sondern auch aus der Sicht der Stakeholder, lehrt zu verstehen was Product Owner von beiden Seiten des Proxys beschäftigt. 

&lt;br /&gt;&lt;br /&gt;

Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!

&lt;br /&gt;

Wir freuen uns auf viele Teilnehmer!

&lt;br /&gt;&lt;br /&gt;

&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;

&lt;b&gt;Zur Anmeldung einfach einen Kommentar im Beitrag hinterlassen.&lt;/b&gt; 
    </content:encoded>

    <pubDate>Sun, 03 Jul 2011 23:22:04 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/711-guid.html</guid>
    
</item>
<item>
    <title>Cloud mit Amazon und Eucalyptus - Vortrag@Mayflower-Würzburg</title>
    <link>http://blog.mayflower.de/archives/709-Cloud-mit-Amazon-und-Eucalyptus-VortragMayflower-Wuerzburg.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/709-Cloud-mit-Amazon-und-Eucalyptus-VortragMayflower-Wuerzburg.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=709</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=709</wfw:commentRss>
    

    <author>nospam@example.com (Andreas Ganje)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 30.06.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in Würzburg statt (Pleichertorstrasse 2, 97070 Würzburg, Straßenbahn und die Haltestelle Congress Centrum). &lt;br /&gt;Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Cloud mit Amazon und Eucalyptus&lt;/b&gt;&quot;.

&lt;br /&gt;&lt;br /&gt;

Im Vortrag von &lt;b&gt;Daniel Hallmann&lt;/b&gt; wird das aktuelle Thema Cloud Computing anhand der Public Cloud Amazon EC2 und der Private Cloud Eucalyptus erläutert. Dabei werden die Architekturen, Bausteine und Anwendungsgebiete, sowie Vorteile und Risiken mit Hilfe von Beispielen aufgezeigt.

&lt;br /&gt;&lt;br /&gt;

Die Donnerstags-Vorträge werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!

&lt;br /&gt;

Wir freuen uns auf viele Teilnehmer!

&lt;br /&gt;&lt;br /&gt;

&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=97070+Pleichertorstrasse+2&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Pleichertorstra%C3%9Fe+2,+W%C3%BCrzburg+97070+W%C3%BCrzburg,Redis+Bayern&amp;ll=49.799938,9.926319&amp;spn=0.009944,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro Würzburg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;

&lt;b&gt;Zur Anmeldung einfach einen Kommentar im Beitrag hinterlassen.&lt;/b&gt; 
    </content:encoded>

    <pubDate>Sun, 26 Jun 2011 23:29:29 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/709-guid.html</guid>
    
</item>
<item>
    <title>Cloud mit Amazon und Eucalyptus - Vortrag@Mayflower-München</title>
    <link>http://blog.mayflower.de/archives/706-Cloud-mit-Amazon-und-Eucalyptus-VortragMayflower-Muenchen.html</link>
            <category>Events</category>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/706-Cloud-mit-Amazon-und-Eucalyptus-VortragMayflower-Muenchen.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=706</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=706</wfw:commentRss>
    

    <author>nospam@example.com (Andreas Ganje)</author>
    <content:encoded>
    Am kommenden &lt;b&gt;Donnerstag, den 16.06.2011&lt;/b&gt; findet ein weiterer öffentlicher Vortrag im Mayflower-Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).&lt;br /&gt;Beginn ist um 18:00 Uhr, Thema des Vortrags ist &quot;&lt;b&gt;Cloud mit Amazon und Eucalyptus&lt;/b&gt;&quot;.

&lt;br /&gt;&lt;br /&gt;

Im Vortrag von &lt;b&gt;Daniel Hallmann&lt;/b&gt; wird das aktuelle Thema Cloud Computing anhand der Public Cloud Amazon EC2 und der Private Cloud Eucalyptus erläutert. Dabei werden die Architekturen, Bausteine und Anwendungsgebiete, sowie Vorteile und Risiken mit Hilfe von Beispielen aufgezeigt.

&lt;br /&gt;&lt;br /&gt;

Die &quot;Donnerstags-Vorträge&quot; werden sowohl in Würzburg als auch in München gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!

&lt;br /&gt;

Wir freuen uns auf viele Teilnehmer!

&lt;br /&gt;&lt;br /&gt;

&lt;a href=&quot;http://maps.google.de/maps?f=q&amp;source=s_q&amp;hl=de&amp;geocode=&amp;q=80538+Mannhardtstrasse+6&amp;sll=51.151786,10.415039&amp;sspn=9.8995,28.256836&amp;ie=UTF8&amp;hq=&amp;hnear=Mannhardtstra%C3%9Fe+6,+M%C3%BCnchen+80538+M%C3%BCnchen,+Bayern&amp;ll=48.137712,11.585426&amp;spn=0.010281,0.027595&amp;z=15&amp;iwloc=A&quot;&gt;Anfahrt zum Mayflowerbüro München&lt;/a&gt;

&lt;b&gt;Zur Anmeldung einfach einen Kommentar im Beitrag hinterlassen.&lt;/b&gt; 
    </content:encoded>

    <pubDate>Tue, 14 Jun 2011 08:51:49 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/706-guid.html</guid>
    
</item>
<item>
    <title>IPC Spring Edition 2011 - Review &amp; Eindrücke</title>
    <link>http://blog.mayflower.de/archives/704-IPC-Spring-Edition-2011-Review-Eindruecke.html</link>
            <category>PHP-DE</category>
    
    <comments>http://blog.mayflower.de/archives/704-IPC-Spring-Edition-2011-Review-Eindruecke.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=704</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.mayflower.de/rss.php?version=2.0&amp;type=comments&amp;cid=704</wfw:commentRss>
    

    <author>nospam@example.com (Wencke Hauschild-Feldmann)</author>
    <content:encoded>
    &lt;b&gt;IPC Spring Edition 2011  Eindrücke &amp;amp; Review&lt;/b&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Vom 29. Mai bis 01. Juni 2011 hat die IPC Spring Edition (PHP Conference + Webinale) die Hauptstadt gerockt. Die diesjährige Veranstaltung vereinte Webworker, IT-Fachleute und -Experten und Aussteller mitten in Berlin im Maritim ProArte Hotel für vier intensive und informative Tage. &lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Das Hotel und die Räumlichkeiten haben überzeugt, der Mayflower-Stand war optimal positioniert - es musste einfach jeder an unserem Stand vorbei der Kaffee wollte, den besten Kaffee gab es ja ohnehin bei uns - die Maschine war im Dauereinsatz, die Pappbecher aufgebraucht, der Barrista war einer der meist besuchtesten und wichtigsten Männer auf der Messe - so hat die Fangfalle, bzw. Kompetenzfalle, Mayflower voll zugeschlagen und unser Stand war sehr gut frequentiert, das Interesse an unseren Themen und Dienstleistungen hoch. Ein harmonisches Miteinander des Mayflower-Standteams hat zu einem intensiven Kundenverkehr an unserem Stand beigetragen  Agilität und Nachhaltigkeit  Mayflower voll im Trend! &lt;/p&gt;
&lt;p&gt;Die zwei Vorträge von Johann und Michel haben den Nerv anscheinend voll getroffen, Johann hatte ca. 70 Teilnehmer in seiner Session &amp;amp; Workshop zum Thema &quot;DevOps für PHP&quot; und auch bei Michel in seiner Session zum Thema &quot;nginx und FastCGI skalieren&quot; konnte man mit der Teilnehmerresonanz durchaus zufrieden sein. Mayflower hat mit Kompetenz, interessanten Vorträgen, einem tollen Team und super Kaffee einfach überzeugt, wir haben am Stand einige durchaus Fach relevante Anfragen erhalten, die durch unsere IT-Fachleute vor Ort kompetent beantwortet wurden und hoffentlich im Nachgang zu einigen neuen Projekten führen werden. In den Vortragspausen haben wir individuellen Gesprächsrunden zu speziellen Themen angeboten, sei es SCRUM oder mobile Apps - Themen, die die Welt vor Ort bewegten! Die Besucherfrequenz an unserem Stand hatte dann nach dem ersten Ausstellungstag auch direkte Auswirkungen auf die Logistik, die Werbematerialien waren teilweise bereits verbraucht und die Casestudies zu den Projekten Steinigke und 7Games erfreuten sich großer Beliebtheit. Unser diesjähriges Gewinnspiel wurde gut angenommen, es geht ja auch um einen tollen Gewinn und es kann noch bis zum 17.06.2011 online teilgenommen werden, auf geht`s - ohne Fleiß kein Preis!&lt;/b&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Trendthemen IPC Spring Edition 2011:&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mobile Apps &lt;/li&gt;
&lt;li&gt;modern Web Apps &lt;/li&gt;
&lt;li&gt;mobiles Internet &lt;/li&gt;
&lt;li&gt;JavaScript, weg von PHP &lt;/li&gt;
&lt;li&gt;Agilität &lt;/li&gt;
&lt;li&gt;SCRUM oder Kanban - that`s the question? &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Fazit: Mayflower hat sich gut präsentiert (als Dienstleister, aber auch als interessanter Arbeitgeber), kompetent, der Standort unseres Standes auf der Messe hätte nicht prägnanter sein können, viele interessante Kontakte, aber auch viele Kaffeeschnorrer, hat Spaß gemacht, nur wo war eigentlich die Politikprominenz? Die Abendveranstaltung war etwas schwach auf der Brust, da ist durchaus noch Verbesserungspotential vorhanden, auch bei der Bewirtung kann noch einen Zacken drauf gelegt werden, aber darum geht es ja nicht, die Inhalte müssen stimmen! Das Gesamtkonzept hat durchaus überzeugt, die Zufriedenheit war gegeben, die Nachhaltigkeit wird es zeigen - wir freuen uns auf die Konkretisierung der Gespräche und auf spannende neue Projekte!&lt;/b&gt; 
    </content:encoded>

    <pubDate>Tue, 07 Jun 2011 16:03:55 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/704-guid.html</guid>
    
</item>

</channel>
</rss>
