So erstelle ich einen eigenen Coding Standard für den PHP CodeSniffer

An sich ist es dem Computer egal, wie hübsch und strukturiert der Code formatiert ist, er wird ihn so oder so ausführen, wenn die Syntax und Semantik passt. Der Mensch tut sich jedoch erheblich leichter, wenn der Quelltext einem einheitlichen Programmierstil folgt, der das Wichtige vom Unwichtigen trennt und schnell Aufschluss darüber gibt, was wo wie passiert.

Eine Frage des guten Stils

So haben sich für diverse Programmiersprachen und Frameworks verschiedenere Coding Standards etabliert, die sich zum Teil widersprechen. Daher ist es unabdingbar, dass im Rahmen eines Projekts alle Entwickler nach dem gleichen Programmierstil entwickeln, damit jeder sich gleichermaßen im Quelltext zurechtfindet. Ferner muss die IDE entsprechend konfiguriert werden, damit eine Datei nicht nach jeder Bearbeitung komplett neu formatiert wird. In diesem Beitrag möchte ich beschreiben wie wir einen eigenen Coding Standard für den PHP CodeSniffer erstellt haben. Weiterlesen

Enslaving eZ Publish

Web applications of all sizes rarely come without the need for editable text content. Implementing a complete content editing solution might yet be still oversized. So why not make use of one of the better known content management solutions available to the open source community – eZ Publish?

As a full blown content management system, eZ Publish does not only supply a quite powerful content repository, but also an ideally tailored content editor that supports all relevant features such as content versioning, publishing workflow or roles and permissions management.
Weiterlesen

Erstellen einer flexiblen Projektstruktur für Symfony2 und AngularJS

Symfony2 im Backend und AngularJS im Frontend, das war die Wahl für ein internes Projekt zur Teamplanung bei meinem Praktikum im September/Oktober 2013.

Eine besondere Herausforderung von Zusammenfügen der beiden Frameworks, sodass sie angenehm miteinander harmonieren, da beide ihr eigenes Routing mitbringen.
Soll hier Symfony das Routing übernehmen oder soll AngularJS das alles regeln? Brauche ich eine spezielle Webserverkonfiguration?

In diesem Artikel möchte ich beschrieben, wie die Projektstruktur aussehen muss, damit Symfony2 und AngularJS bequem zusammen spielen und es keine Kompilkationen mit Updates und dem Deployment gibt. Weiterlesen

Laravel 4 – Static or not static. That is the question.

Als ich das erste Mal das noch zu unbekannte Framework Laravel vor der Nase hatte, sind mir sehr schnell die statischen Zugriffe der API aufgefallen. Wo sich viele qualitätsbewusste Entwickler heutzutage die „und wie soll man das testen“ Frage stellen, stand ich hier vor verschlossenen Türen.

THE PHP FRAMEWORK FOR WEB ARTISANS.

Hier scheint sich Laravel 4 eines uns sehr gut bekannten Design Patterns zu bedienen. Die Rede ist von einer Facade. Jede Klasse welche scheinbar statische Methoden bereitstellt, erbt von einer „Facade“-Klasse. Wenn wir also „Config::get(‚database‘)“ aufrufen, wird eine fast leere Facade benutzt. Diese kennt lediglich ihren Accessor (facadeAccessor = ‚config‘) und erweitert entsprechend die Laravel Facade. Die eigentliche Implementierung der genutzten Methode ist dort also gar nicht enthalten.

Das führt uns zu zwei Fragen:

  • Welche Klasse wird bei dem Genannten nun wirklich aufgerufen?
  • Und woher kennt die Facade augenscheinlich diese Klasse?

Nun dann schauen wir mal genauer hin.

Weiterlesen

Mayday, mayday! We are blinking!

Logo-v2

For some time now, we at Mayflower can have slack time on every second friday. All colleagues who do not have urgent projects for our customers can choose to improve their knowledge, do some opensource development or just try out something cool and nerdy.

The Idea

blinkenpi-spot

First, we ordered some Raspberry Pis to test out their capabilities. Since we developed the new Steinigke webshop, we have a good source at hand for light and sound equipment. So we settled for some DMX experiments together with our customer.

Weiterlesen

Testing: how to get reliability and efficiency

We have been talking with Toby of qafoo fame about testing strategies:
How we need to craft architecture and design in order to significantly reduce the cost for tests. How to escape from the trap of the inner-platform antipattern, where we need to provide all infrastructure and business models with an ugly, mocked twin. Simply: How to efficiently write tests? And how to avoid that everyone hates them within 10 months, so that they would rather deactivate them instead of fixing them.
Please click here to read „Testing: the sweet spot“

Unsere Speaker Johann-Peter Hartmann und Sebastian Springer über die IPC

Die International PHP Confernce (IPC) ist der seit mehr als einem Jahrzehnt der Treffpunkt für internationale PHP-Experten und erfahrene Consultants, um ihr Know-how zu verbreiten. Als weltweiter Pionier auf diesem Gebiet steht die IPC für professionelle Vorträge und auch Workshops im PHP- und im Webumfeld. Im Folgenden könnt Ihr erfahren, wie unsere Speaker Johann-Peter-Hartmann, CTO der Mayflower GmbH und Sebastian Springer, Teamleiter und Senior Developer ebenfalls bei Mayflower, die Konferenz erlebt haben.

Weiterlesen

So wird ein Coding Dojo zu einer ernstzunehmenden Lernveranstaltung

Was sich im Ruby- und Java-Umfeld schon lange etabliert hat, findet langsam auch in unserer (PHP- & JavaScript-) Welt seinen Platz- Coding Dojos! Die Idee vom gemeinsamen Programmieren in der Form eines Coding Dojos kommt vom Autor von The Pragmatic Programmer, David Thomas. Er sagt: „Developers should practise on small, not job related code base repeatedly so that they can master their profession like musicans“. Der Autor möchte dabei nicht zur Nutzung des JavaScript-Toolkits Dojo anregen, sondern vielmehr zum gemeinsamen Coden an kleinen Aufgaben, den Katas. Folgt die PHP- und JavaScript Community einem Hype aus dem Umfeld anderer Programmiersprachen oder kann wirklich jeder etwas in einem Coding Dojo lernen? Dieser Artikel erklärt, was es mit Coding Katas auf sich hat und wie ein Coding Dojo gestalltet werden sollte, damit jeder Teilnehmer dabei etwas lernen kann. Weiterlesen

PhpSpec

Wer mit PHP Test-driven oder Behavior-driven arbeitet und sich an Rubys Rspec und Cucumber orientiert, hat sicher schon eine Rspec-analoge Syntax für PHP vermisst. Das BDD Framework PhpSpec soll diese Lücke schließen.
Warum reicht uns denn PHPUnit nicht aus? BDD und TDD heißt outside in – vom Verständnis der Domain und den Anforderungen der Domain hin zum Code. Wir formulieren Erwartungen an das Verhalten von Code (should), der erst noch entstehen muss und wollen nicht nur testen, ob bestehender Code korrekte Ergebnisse liefert (assert). Aber es geht um mehr, als nur die Wortwahl, es geht um die Grundhaltung, den Code von den Anforderungen her zu modelieren.

Dem Blog-Artikel liegt diese Version zu Grunde:
phpspec version 2.0.1-PREVIEW

Lead Developer ist Marcello Duarte.

Dokumentation und Infos gibt es unter: http://www.phpspec.net

Ich will hier mit einer kurzen Anleitung zur Installation und einem Beispiel Interesse wecken für PhpSpec.
Weiterlesen

Consistent Hashing – intelligentes Sharding

Stellen Sie sich folgendes Szenario vor: Sie betreiben eine Webapplikation, die noch relativ jung ist, aber die Userzahlen explodieren und vor allem die Datenbank hinter der Anwendung ächzt schon unter der Last – vor allem der vieler Lesezugriffe. Die Lösung für dieses Problem ist allgemein bekannt: Caching.

Doch damit die Caching-Architektur horizontal skalieren kann, müssen gleich mehrere Server die Last übernehmen. Damit besteht ein neues Problem darin, wie man am besten die Daten speichert, so dass sie sich auf beide Nodes gleichmäßig verteilt speichern lassen. Eine clevere Lösung möchte ich Ihnen hier mit auf den Weg geben. Weiterlesen