<?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 - Open Source</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>Mon, 30 Jan 2012 13:53:32 GMT</pubDate>

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

<item>
    <title>Webinar &quot;OpenSource - Chancenreiche Zeitbombe&quot;</title>
    <link>http://blog.mayflower.de/archives/827-Webinar-OpenSource-Chancenreiche-Zeitbombe.html</link>
            <category>Events</category>
            <category>Open Source</category>
    
    <comments>http://blog.mayflower.de/archives/827-Webinar-OpenSource-Chancenreiche-Zeitbombe.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=827</wfw:comment>

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

    <author>nospam@example.com (Jochen Seelig)</author>
    <content:encoded>
    Am 14.02.2012 startet um 14:00 Uhr die Webinarreihe der Mayflower GmbH in eine neue Runde.&lt;br /&gt;
Es erwartet Sie gleich zum Start in das neue Jahr ein Webinar mit hochkarätigen Referenten.&lt;br /&gt;&lt;br /&gt;

&lt;b&gt;Björn Schotte&lt;/b&gt;, Geschäftsführer Marketing &amp;amp; Sales bei der Mayflower GmbH und&lt;br /&gt;
&lt;b&gt;Chan-jo Jun&lt;/b&gt;, Rechtsanwalt und Fachanwalt IT-Recht von der Rechtsanwaltskanzlei Jun sind die ersten Referenten in diesem Jahr.&lt;br /&gt;&lt;br /&gt;

Ob Handy, Fernseher oder Auto -kaum ein Gerät kommt ohne OpenSource-Software aus. Was für viele schlicht Gratissoftware war, entwickelt sich für manche Hersteller im Anbetracht der inzwischen ergangenen Urteile zum unkalkulierbaren Haftungsrisiko. Sowohl Hersteller als auch Einkäufer von Software, haben das Problem erkannt und erhöhen die Anforderungen an die eigenen Entwickler und Zulieferer.&lt;br /&gt;&lt;br /&gt;

In dem Vortrag zeigen wir auf, welche typischen Fehler regelmäßig beim Umgang mit OpenSource-Software zu Rechtsverstößen führen, beispielsweise die fehlende Übermittlung von Source-Codes und Pflichtangaben, sowie die Verletzung der Copyleft-Bestimmungen. Wir erläutern die verschiedenen Klassen und Gattungen der OpenSource-Lizenzen mit denen sich leicht ein Überblick im Lizenzdschungel erreichen lässt.&lt;br /&gt;&lt;br /&gt;

Im zweiten Teil zeigen wir auf, wie Unternehmen auf der Auftragnehmer- oder Auftraggeberseite die Einhaltung von OpenSource-Bestimmungen für sich und gegenüber dem Vertragspartner sicherstellen können. Der Vortrag richtet sich sowohl an Entwickler, als auch die juristischen Entscheidungsträger, wie Mitglieder der Rechtsabteilung oder Geschäftsführung, die für Rechts- und Lizenzfragen zuständig sind.&lt;br /&gt;&lt;br /&gt;

Jetzt gleich kostenlos Anmelden unter:&lt;br /&gt;
&lt;a href=&quot;http://bit.ly/webinar-open-source&quot; target=&quot;_blank&quot;&gt;http://bit.ly/webinar-open-source&lt;/a&gt; 
    </content:encoded>

    <pubDate>Mon, 30 Jan 2012 14:53:32 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/827-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>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>Disruptive Kraft von OpenSource im E-Commerce</title>
    <link>http://blog.mayflower.de/archives/529-Disruptive-Kraft-von-OpenSource-im-E-Commerce.html</link>
            <category>E-Commerce</category>
            <category>Open Source</category>
            <category>OXID</category>
    
    <comments>http://blog.mayflower.de/archives/529-Disruptive-Kraft-von-OpenSource-im-E-Commerce.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=529</wfw:comment>

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

    <author>nospam@example.com (Björn Schotte)</author>
    <content:encoded>
    &lt;p&gt;
Meine Keynote auf der OXID Commons 2010. Ein großer Dank gilt an die Veranstalter - mit mehr als 250 Teilnehmern hat sich die OXID Commons zu einer prächtigen Konferenz entwickelt, auf der Business, Community und Technologie nicht zu kurz kommen. Grandios die visionären Einblicke von Roland Fesenmayr in seiner Eröffnung - &lt;a href=&quot;http://www.excitingcommerce.de/2010/05/oxid-commons-2010.html&quot;&gt;Geschäftsmodelle bestimmen die Software, und nicht umgekehrt&lt;/a&gt;. Bilder von der Konferenz &lt;a href=&quot;http://www.oxid-esales.com/de/news/oxid-commons-2010/bilder&quot;&gt;hier&lt;/a&gt;, und natürlich auch die &lt;a href=&quot;http://www.oxid-esales.com/de/news/oxid-commons-2010/live-stream&quot;&gt;Videomitschnitte&lt;/a&gt;.
&lt;/p&gt;
&lt;div style=&quot;width:425px&quot; id=&quot;__ss_4032678&quot;&gt;&lt;strong style=&quot;display:block;margin:12px 0 4px&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/mayflowergmbh/disruptive-kraft-von-open-source-im-ecommerce&quot; title=&quot;Disruptive Kraft von Open Source im E-Commerce&quot;&gt;Disruptive Kraft von Open Source im E-Commerce&lt;/a&gt;&lt;/strong&gt;&lt;object id=&quot;__sse4032678&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=disruptivekraftvonopensourceime-commerce-100510034947-phpapp02&amp;stripped_title=disruptive-kraft-von-open-source-im-ecommerce&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt;&lt;embed name=&quot;__sse4032678&quot; src=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=disruptivekraftvonopensourceime-commerce-100510034947-phpapp02&amp;stripped_title=disruptive-kraft-von-open-source-im-ecommerce&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style=&quot;padding:5px 0 12px&quot;&gt;View more &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/mayflowergmbh&quot;&gt;Mayflower GmbH&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt; 
    </content:encoded>

    <pubDate>Mon, 10 May 2010 14:52:09 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/529-guid.html</guid>
    
</item>
<item>
    <title>Piwik Meetup</title>
    <link>http://blog.mayflower.de/archives/767-Piwik-Meetup.html</link>
            <category>Open Source</category>
    
    <comments>http://blog.mayflower.de/archives/767-Piwik-Meetup.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=767</wfw:comment>

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

    <author>nospam@example.com (Thomas Steur)</author>
    <content:encoded>
    &lt;!-- s9ymdb:521 --&gt;&lt;img class=&quot;serendipity_image_right&quot; width=&quot;220&quot; height=&quot;165&quot; align=&quot;right&quot; src=&quot;http://blog.mayflower.de/uploads/tsteur/piwikmeetup1.jpg&quot; title=&quot;Piwik Meetup&quot; alt=&quot;Piwik Meetup&quot; /&gt;Am Samstag hat in den Räumen der Mayflower GmbH am Standort München das erste &lt;a href=&quot;http://piwik.org/blog/2011/09/announcing-piwik-meetup-in-munich-germany-on-oct-22nd-register-now-free/&quot; target=&quot;_blank&quot;&gt;Piwik Meetup&lt;/a&gt; stattgefunden. &lt;a href=&quot;http://piwik.org&quot; target=&quot;_blank&quot;&gt;Piwik&lt;/a&gt; ist eine Open-Source Webanalyse-Software, die im Gegensatz zu Google Analytics heruntergeladen und auf dem eigenen Server installiert werden kann.&lt;br /&gt; &lt;br /&gt;
Insgesamt sind über 20 Leute erschienen, um den zweiten Platz der am häufigsten eingesetzten Web-Analytics Tools in Deutschland zu feiern und sich gegenseitig auszutauschen. Das Publikum war sehr breit gefächert: vom Anwender bis zum Programmierer  vom User, der seit der ersten Stunde dabei war, wie auch Leute die Piwik erst seit Kurzem einsetzen oder zukünftig einsetzen möchten. Ein Großteil der Teilnehmer kam aus München und Umgebung, einige kamen aber auch vor weiter her, wie z.B. aus Essen, Köln oder Darmstadt. Sogar ein Teil der Piwik Core Entwickler selbst waren anwesend.&lt;br /&gt; &lt;br /&gt; Nach einer Vorstellungsrunde ging es los mit den Vorträgen:&lt;br /&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;a href=&quot;http://www.slideshare.net/matthieua/piwik-presentation-2011&quot; target=&quot;_blank&quot;&gt;Historie und aktueller Stand von Piwik&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;Piwik Analyse aus SEO und Webmaster Sicht&lt;/li&gt; 
&lt;li&gt;&lt;a href=&quot;http://www.slideshare.net/piwik/piwik-roadmap-october-2011&quot; target=&quot;_blank&quot;&gt;Piwik Roadmap und Sneak Peak neuer Features&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;&lt;a href=&quot;http://www.slideshare.net/piwik/piwik-mobile-october-2011&quot; target=&quot;_blank&quot;&gt;Überblick über Piwik Mobile&lt;/a&gt;&lt;/li&gt; 
&lt;li&gt;Mockup der neuen Piwik.org Webseite&lt;/li&gt; 
&lt;/ul&gt;&lt;!-- s9ymdb:522 --&gt;&lt;img align=&quot;right&quot; class=&quot;serendipity_image_right&quot; width=&quot;220&quot; height=&quot;146&quot; src=&quot;http://blog.mayflower.de/uploads/tsteur/piwikmeetup2.jpg&quot; title=&quot;Piwik Meetup&quot; alt=&quot;Piwik Meetup&quot; /&gt; &lt;br /&gt;
Ein Video, welches Teile der Vorträge enthält ist hier verfügbar: &lt;a href=&quot;http://vimeo.com/30965416&quot; target=&quot;_blank&quot;&gt;http://vimeo.com/30965416&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;
Besonderes Staunen fand die Vorstellung zweier brand-neuer Features welche vermutlich bereits in der nächsten Version enthalten sein werden sowie das anstehende Redesign von piwik.org. Zwischen und nach den Vorträgen wurde sich rege ausgetauscht. Es wurden dabei Ideen zu neuen Funktionen entwickelt, Fragen beantwortet, gegenseitig Hilfe geleistet, Fehler behoben, Datenschutz-Themen disktutiert und vieles mehr. Auch SEO-Optimierung mit Piwik war ein wichtiges Thema. &lt;br /&gt; &lt;br /&gt;
Wir haben uns sehr gefreut dass die Teilnehmer so interessiert waren. Das hat unsere Vorstellungskraft übertroffen! Daher haben wir uns auch entschieden, dass ein nächstes Piwik Meetup mit Sicherheit wieder statt finden wird.&lt;br /&gt; &lt;br /&gt;
Mein Dank geht an &lt;a href=&quot;http://www.mayflower.de&quot;&gt;Mayflower&lt;/a&gt; für das Sponsern des Raumes, der Getränke und dem Essen! 
    </content:encoded>

    <pubDate>Mon, 24 Oct 2011 20:44:35 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/767-guid.html</guid>
    
</item>
<item>
    <title>Introducing Gigger, a Realtime Javascript Monitoring Framework</title>
    <link>http://blog.mayflower.de/archives/747-Introducing-Gigger,-a-Realtime-Javascript-Monitoring-Framework.html</link>
            <category>Development</category>
            <category>Open Source</category>
            <category>PHP</category>
    
    <comments>http://blog.mayflower.de/archives/747-Introducing-Gigger,-a-Realtime-Javascript-Monitoring-Framework.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=747</wfw:comment>

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

    <author>nospam@example.com (Felix Kaser)</author>
    <content:encoded>
    &lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://gigger.mayflower.de/monitor.html&quot;&gt;Go to Live Demo &amp;gt;&amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;
&lt;p&gt;Monitoring your web application is essential for professional maintenance and development. Especially if you have a high load on your website and you want to keep the current users on your site, you definitely should stay alert for problems
and be able to react fast in case of problems. Monitoring is also crucial for A/B tests, since you have to evaluate somehow which version
of your website performs better. Many big players also measure constantly how much revenue the website produces. For them it is important to monitor if a new
feature increases or decreases the revenue and take decisions based on that information.&lt;/p&gt; &lt;br /&gt;

&lt;p&gt;Mayflower is currently developing a javascript framework which provides a smart tool for realtime monitoring and measuring. Read the full article for more information.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://blog.mayflower.de/archives/747-Introducing-Gigger,-a-Realtime-Javascript-Monitoring-Framework.html#extended&quot;&gt;Continue reading &quot;Introducing Gigger, a Realtime Javascript Monitoring Framework&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Thu, 22 Sep 2011 17:17:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/747-guid.html</guid>
    <category>ajax</category>
<category>code</category>
<category>comet</category>
<category>development</category>
<category>framework</category>
<category>javascript</category>
<category>open-source</category>
<category>opensource</category>
<category>tracking</category>

</item>
<item>
    <title>Mobile Anwendungen mit SenchaTouch</title>
    <link>http://blog.mayflower.de/archives/746-Mobile-Anwendungen-mit-SenchaTouch.html</link>
            <category>Development</category>
            <category>Open Source</category>
    
    <comments>http://blog.mayflower.de/archives/746-Mobile-Anwendungen-mit-SenchaTouch.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=746</wfw:comment>

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

    <author>nospam@example.com (Inga Zilles)</author>
    <content:encoded>
    Hier findet ihr die Folien zu dem Mayflower Vortrag über Mobile Anwendungen mit SenchaTouch.&lt;br /&gt;
Gehalten von Alberto Assmann am 08.09.2011.&lt;br /&gt;&lt;br /&gt;

&lt;div style=&quot;width:425px&quot; id=&quot;__ss_9371934&quot;&gt; &lt;strong style=&quot;display:block;margin:12px 0 4px&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/mayflowergmbh/mobile-anwendungen-mit-senchatouch&quot; title=&quot;Mobile Anwendungen mit SenchaTouch&quot; target=&quot;_blank&quot;&gt;Mobile Anwendungen mit SenchaTouch&lt;/a&gt;&lt;/strong&gt; &lt;iframe src=&quot;http://www.slideshare.net/slideshow/embed_code/9371934&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>Thu, 22 Sep 2011 10:30:41 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/746-guid.html</guid>
    
</item>
<item>
    <title>Agiles CSS </title>
    <link>http://blog.mayflower.de/archives/745-Agiles-CSS.html</link>
            <category>Development</category>
            <category>Misc</category>
            <category>Open Source</category>
    
    <comments>http://blog.mayflower.de/archives/745-Agiles-CSS.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=745</wfw:comment>

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

    <author>nospam@example.com (Alberto Assmann)</author>
    <content:encoded>
    Bei Mayflower wird agil entwickelt. In erster Linie bedeutet dies für den Kunden, dass wir auf geänderte Anforderungen schnell reagieren können.&lt;br /&gt;
Schnell reagieren zu können heißt auch, neue oder geänderte Anforderungen so schnell wie möglich umzusetzen.&lt;br /&gt;
Dafür muss der Code so aufgebaut sein, dass man mit minimalen Aufwand Änderungen durchführen kann.&lt;br /&gt;
In PHP nutzen wir dafür entsprechende Abstraktionen und Kappselungen.&lt;br /&gt;

Aber wie schaut das Ganze im Frontend aus, insbesondere in CSS Dateien?&lt;br /&gt;
Was, wenn der Kunde das Blau aus dem vorgegebenen Farbschema eine Nuance dunkler haben möchte?&lt;br /&gt;
 &lt;br /&gt;&lt;a href=&quot;http://blog.mayflower.de/archives/745-Agiles-CSS.html#extended&quot;&gt;Continue reading &quot;Agiles CSS &quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Wed, 21 Sep 2011 14:10:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/745-guid.html</guid>
    <category>agile</category>
<category>css</category>
<category>frontend</category>
<category>opensource</category>
<category>oxid</category>
<category>sass</category>

</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>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>Piwik Mobile nun im Mayflower Open Source Lab</title>
    <link>http://blog.mayflower.de/archives/708-Piwik-Mobile-nun-im-Mayflower-Open-Source-Lab.html</link>
            <category>Open Source</category>
    
    <comments>http://blog.mayflower.de/archives/708-Piwik-Mobile-nun-im-Mayflower-Open-Source-Lab.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=708</wfw:comment>

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

    <author>nospam@example.com (Thomas Steur)</author>
    <content:encoded>
    &lt;strong&gt;Was ist Piwik?&lt;/strong&gt;&lt;br /&gt;
Piwik ist eine Open Source Alternative zu Google Analytics. Piwik lässt sich auf einem eigenen Server installieren und basiert vor allem auf PHP und MySQL. 
&lt;br /&gt; &lt;a href=&quot;http://piwik.org&quot; target=&quot;_blank&quot;&gt;http://piwik.org&lt;/a&gt;&lt;br /&gt; &lt;br /&gt; &lt;strong&gt;Was ist Piwik Mobile?&lt;/strong&gt;&lt;a class=&quot;serendipity_image_link&quot; title=&quot;Piwik Mobile für iOS und Android&quot; href=&quot;http://blog.mayflower.de/uploads/tsteur/overview.002.png&quot; target=&quot;_blank&quot;&gt;&lt;!-- s9ymdb:514 --&gt;&lt;img class=&quot;serendipity_image_right&quot; align=&quot;right&quot; width=&quot;110&quot; height=&quot;83&quot; src=&quot;http://blog.mayflower.de/uploads/tsteur/overview.002.serendipityThumb.png&quot; title=&quot;Piwik Mobile für iOS und Android&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Piwik Mobile ist eine native Anwendung für Android und iOS Geräte. Damit können die mit Piwik gesammelten Statistiken von überall und jederzeit aus abgerufen werden. Die Vision von Piwik Mobile ist es, die auf Desktop optimierte Browser-Variante von Piwik möglichst abzulösen. Nicht nur die gewohnten Funktionen sollen vorhanden sein, sondern auch ein ähnliches Look &amp;amp; Feel.&lt;br /&gt; &lt;a href=&quot;http://piwik.org/mobile&quot; target=&quot;_blank&quot;&gt;http://piwik.org/mobile&lt;/a&gt;&lt;br /&gt; &lt;br /&gt; &lt;strong&gt;Was ist das Mayflower Open Souce Lab (OSL)?&lt;/strong&gt;&lt;br /&gt;
Mayflower steht zu Open Source und fördert dies über verschiedene Wege. Das OSL bietet einen Pool für Open Source Projekte an denen Mitarbeiter von Mayflower arbeiten. Von der Firma zur Verfügung gestellt wird, falls benötigt, eine Integrationsumgebung, Wiki, Issue Tracker und mehr. Sogar das Arbeiten an den Projekten während der Arbeitszeit ist erlaubt, aber auch zeitlich begrenzt. Das OSL dient u.a. der Weiterbildung und der Entwicklungsförderung von innovativer Software.&lt;br /&gt; &lt;br /&gt; &lt;br /&gt;&lt;a href=&quot;http://blog.mayflower.de/archives/708-Piwik-Mobile-nun-im-Mayflower-Open-Source-Lab.html#extended&quot;&gt;Continue reading &quot;Piwik Mobile nun im Mayflower Open Source Lab&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Mon, 20 Jun 2011 13:05:59 +0200</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/708-guid.html</guid>
    
</item>
<item>
    <title>Improving your workflows and awareness in the team with tools</title>
    <link>http://blog.mayflower.de/archives/655-Improving-your-workflows-and-awareness-in-the-team-with-tools.html</link>
            <category>Open Source</category>
    
    <comments>http://blog.mayflower.de/archives/655-Improving-your-workflows-and-awareness-in-the-team-with-tools.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=655</wfw:comment>

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

    <author>nospam@example.com (Inga Zilles)</author>
    <content:encoded>
    Hier findet ihr die Folien zu dem Mayflower Vortrag über unterstützende Tools in agilen Teams zur Workflowoptimierung mit Cinder (aus den Mayflower OpenSource Labs) und anderen Tools.&lt;br /&gt;
Gehalten von Florian Anderiasch am 11.11.2010.&lt;br /&gt;&lt;br /&gt;

&lt;div style=&quot;width:425px&quot; id=&quot;__ss_7229515&quot;&gt; &lt;strong style=&quot;display:block;margin:12px 0 4px&quot;&gt;&lt;a href=&quot;http://www.slideshare.net/mayflowergmbh/improving-your-workflows-and-awareness-in-the-team-with-tools&quot; title=&quot;Improving your workflows and awareness in the team with tools&quot;&gt;Improving your workflows and awareness in the team with tools&lt;/a&gt;&lt;/strong&gt; &lt;object id=&quot;__sse7229515&quot; width=&quot;425&quot; height=&quot;355&quot;&gt; &lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=improvingyourworkflowsfa-110311034741-phpapp01&amp;stripped_title=improving-your-workflows-and-awareness-in-the-team-with-tools&amp;userName=mayflowergmbh&quot; /&gt; &lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;/&gt; &lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;/&gt; &lt;embed name=&quot;__sse7229515&quot; src=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=improvingyourworkflowsfa-110311034741-phpapp01&amp;stripped_title=improving-your-workflows-and-awareness-in-the-team-with-tools&amp;userName=mayflowergmbh&quot; type=&quot;application/x-shockwave-flash&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;&lt;/embed&gt; &lt;/object&gt; &lt;div style=&quot;padding:5px 0 12px&quot;&gt; View more &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/mayflowergmbh&quot;&gt;Mayflower GmbH&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;

 
    </content:encoded>

    <pubDate>Fri, 11 Mar 2011 10:57:20 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/655-guid.html</guid>
    
</item>
<item>
    <title>Cinder now available at Mayflower Open Source Labs</title>
    <link>http://blog.mayflower.de/archives/627-Cinder-now-available-at-Mayflower-Open-Source-Labs.html</link>
            <category>Open Source</category>
            <category>PHP</category>
    
    <comments>http://blog.mayflower.de/archives/627-Cinder-now-available-at-Mayflower-Open-Source-Labs.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=627</wfw:comment>

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

    <author>nospam@example.com (Florian Anderiasch)</author>
    <content:encoded>
    &lt;p&gt;&lt;a href=&quot;http://confluence.opensource.mayflower.de/display/CINDER/Home&quot;&gt;Cinder&lt;/a&gt; is a plug-in for your eclipse-based IDE (eclipse, Zend Studio, etc.) to display results of your Continuous Integration environment right inside your IDE.&lt;/p&gt; 
&lt;p&gt;&lt;br /&gt;We just released version 0.1.6, which you can install via the Eclipse Update Manager and the URL &lt;a href=&quot;http://opensource.mayflower.de/cinder&quot;&gt;http://opensource.mayflower.de/cinder&lt;/a&gt;, then activating it via &amp;quot;Window -&amp;gt; Show View -&amp;gt; Other -&amp;gt; Cinder&amp;quot;.&lt;/p&gt; 
&lt;p&gt;&lt;br /&gt;If you haven&#039;t heard of Cinder yet, here&#039;s a short summary:&lt;/p&gt; 
&lt;p&gt;&lt;br /&gt;You open the XML file containing the errors and warnings of your build (for us that&#039;s typically the PHP_CodeBrowser XML generated by a Hudson build) and get an overview of reports. Now you can sort them, categorize them and work on them in any order. Cinder can grab these files periodically if you make them available via http or on a filesystem.&lt;/p&gt; 
&lt;p&gt;&lt;br /&gt;A few screenshots:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;div style=&quot;width: 600px;&quot; class=&quot;serendipity_imageComment_center&quot;&gt; 
&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;!-- s9ymdb:477 --&gt;&lt;img width=&quot;600&quot; src=&quot;http://blog.mayflower.de/uploads/opensource/cinder01.png&quot; class=&quot;serendipity_image_center&quot; /&gt;&lt;/div&gt; 
&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;The Cinder View after reading an XML file.&lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;br /&gt;&lt;/p&gt; 
&lt;div style=&quot;width: 645px;&quot; class=&quot;serendipity_imageComment_center&quot;&gt; 
&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;!-- s9ymdb:478 --&gt;&lt;img height=&quot;520&quot; width=&quot;645&quot; src=&quot;http://blog.mayflower.de/uploads/opensource/cinder02.png&quot; class=&quot;serendipity_image_center&quot; /&gt;&lt;/div&gt; 
&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;After selecting a warning the file is opened at the matching line.&lt;/div&gt; 
&lt;/div&gt; 
&lt;p&gt;&lt;br /&gt;Bug reports, ideas and feedback are welcome, please visit &lt;a href=&quot;http://github.com/winks/cinder&quot;&gt;the github page&lt;/a&gt;to tell us about your ideas.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 23 Dec 2010 13:56:35 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/627-guid.html</guid>
    <category>cinder</category>
<category>continuous-integration</category>
<category>cruisecontrol</category>
<category>eclipse</category>
<category>hudson</category>
<category>opensource</category>
<category>zendstudio</category>

</item>
<item>
    <title>PHP_CodeBrowser goes stable</title>
    <link>http://blog.mayflower.de/archives/626-PHP_CodeBrowser-goes-stable.html</link>
            <category>Open Source</category>
            <category>PHP</category>
    
    <comments>http://blog.mayflower.de/archives/626-PHP_CodeBrowser-goes-stable.html#comments</comments>
    <wfw:comment>http://blog.mayflower.de/wfwcomment.php?cid=626</wfw:comment>

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

    <author>nospam@example.com (Simon Kohlmeyer)</author>
    <content:encoded>
    &lt;p&gt;We already &lt;a title=&quot;http://github.com/mayflowergmbh/PHP_CodeBrowser&quot; href=&quot;http://github.com/mayflowergmbh/PHP_CodeBrowser&quot;&gt;wrote about CodeBrowser 0.9 in August&lt;/a&gt; and after fixing a few minor bugs the &lt;a target=&quot;_blank&quot; href=&quot;http://opensource.mayflower.de&quot;&gt;Mayflower Open Source Labs Team&lt;/a&gt; is very happy to present PHP_CodeBrowser 1.0.0.&lt;/p&gt; 
&lt;p&gt;The new version is already available on pear.phpunit.de. To check it out, just run&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;blockquote&gt;&lt;code&gt;
&amp;#160; pear channel-discover pear.phpunit.de&lt;br /&gt;
&amp;#160; pear install phpunit/PHP_CodeBrowser
&lt;/code&gt;&lt;/blockquote&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;or, if you have already installed PHP_CodeBrowser, you can upgrade with&lt;/p&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;blockquote&gt;&lt;code&gt;
&amp;#160; pear upgrade phpunit/PHP_CodeBrowser
&lt;/code&gt;&lt;/blockquote&gt; 
&lt;p&gt; &lt;/p&gt; 
&lt;p&gt;If you would like to see any features in the next releases , please visit &lt;a title=&quot;http://github.com/mayflowergmbh/PHP_CodeBrowser&quot; href=&quot;http://github.com/mayflowergmbh/PHP_CodeBrowser&quot;&gt;the github page&lt;/a&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt; &lt;/span&gt;and tell us about your ideas.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 14 Dec 2010 18:52:05 +0100</pubDate>
    <guid isPermaLink="false">http://blog.mayflower.de/archives/626-guid.html</guid>
    
</item>

</channel>
</rss>
