Oracle LOB in Symfony2 und Doctrine2 mittels OCI8-Extension: Die Stolpersteine erkennen

Oracle LOB in Symfony2 mit OCI-Lob Klasse nutzbar zu machen, ist nicht ganz einfach. Unter anderem die Unterstützung von Large Objects (LOB) hat in Doctrine2 einige Fallstricke, z.B. das Cachen von Queries, welches nicht ganz so optimal mit php_streams umgehen kann.

Hier will ich aber auf die Probleme bei der Benutzung des Oracle OCI8 Drivers von Doctrine2 in Bezug auf LOBs eingehen. Weiterlesen

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

Testing your ExtJS 3.4 components with Jasmine

Developing your own ExtJS components for your application is more fun and results into more resilient code if you write them hand-in-hand with test code. A solid test basis can also facilitate the task of refactoring your software.

Although, test driven development is easy for javascript code, how can ExtJS 3.4 components be tested? Which parts of our components should be tested to accomplish a successful refactoring?
Weiterlesen

Komprimiertes JavaScript unter Kontrolle: Source Maps

Haben Sie schon einmal versucht, den Fehler in Zeile 1 der Datei app.js zu finden, wenn diese Datei aus nur einer Zeile mit einer Zeilenlänge von etlichen tausend Zeichen besteht und weder über vernünftig gesetzte White Spaces noch über Kommentare verfügt? Wartungsfreundlich und gut lesbar ist ein so optimierter Quellcode sicherlich nicht. Zur Hilfe kommt Ihnen hier das Konzept der Source Maps. Weiterlesen

InnoDB Buffer Pools: Warum Deine Indexgröße wichtig ist

In der Entwicklung MySQL/InnoDB-gestützter Projekte ist es allzu leicht dem „Index für alles und jeden!“-Mantra zu verfallen, speziell wenn der Kunde drängt und mehr Geschwindigkeit verlangt. Jedoch führt dies nur selten zum Ziel und in hartnäckigeren fällen so einer deutlichen Verschlechterung des Problems. Nun sind ein paar Anfragen schneller, aber alle anderen langsamer. Woran liegt es? Was ist passiert? Und was macht meine MySQL da eigentlich? Wie geht es besser? Weiterlesen

Gaming the game: Using Selenium to automate playing

An online acquaintance described it like this:

„You build your tool to reduce grinding. After a while, building the tool becomes a game in itself. One where you make the rules“

Multiplayer online games nowadays heavily rely on small repetitive tasks to regulate the pace in which you proceed in your competition with other players. Duel a player once and win to earn a point. You have enough energy to duel 10 times. Then you have to wait to regain your energy. If the designer did a good job, it’s fun at first. After a while it gets boring, but you have to do it to compete.
Weiterlesen

Story Map: Landkarte für Anforderungen im Softwareprojekt

Wenn Sie ein neues Softwareprojekt starten, machen Sie sich natürlich Gedanken über die Anforderungen an die Software. Welche Features sollen in meiner Online Community enthalten sein? Und welche haben noch Zeit? Dank agiler Methoden muss nicht alles ausspezifiziert werden – wir kennen heute noch nicht die Features, die wir in fünf Monaten benötigen.

Das agile Product Backlog zeigt Ihnen in linearer Reihenfolge, welche Features realisiert werden sollen. Doch sind Sie sich auch sicher, dass die Features zu den Bedürfnissen Ihrer Nutzer passen?

Mit der Story Map bekommen Sie ein Instrument an die Hand, mit dem Sie Anforderungen entlang der Nutzerbedürfnisse definieren und priorisieren. Sie ist als lebende Landkarte Ihrer Anforderungen zu verstehen. Lassen Sie uns gemeinsam einen näheren Blick darauf werfen, was die Story Map darstellt.

Weiterlesen

A sane architecture for Android apps

Building native Android apps is fairly simple: just throw some Java code together, add some XML to it and there you have it: a cool new Android app. But also sadly in most cases an unmaintainable Android app in the long run.

For many developers this seems to be just fine but I often asked myself why the code I wrote got more and more messy with every feature I added. I refactored a lot of the code step by step but it still felt very ugly.

Weiterlesen