Responding to Different Content Types in RESTful ZF Apps
Für alle REST-Nerds mit Interesse am Zend Framework ein Leckerbissen. Es wird beschrieben, wie man elegant mit verschiedenen Datenformaten in einer RESTful Applikation umgehen kann.
Am 17. März findet, von der Java User Group Hamburg organisiert, ein Vortrag zum Thema Clean Code Development statt. Hier wird André Fleischer (Software-Architekt bei der Otto Group in Hamburg) das Clean Code Developer Wertesystem vorstellen und anhand der vorhandenen Stufen und Bausteine erklären, wie sich diese auf die Softwareentwicklung auswirken.
Topics
Probleme der Softwareentwicklung
Lösungsansätze
Die Grundwerte
Prinzipien und Praktiken
Werkzeuge
Quellcodes
Agenda
19:00 Uhr : Vortrag : Clean Code Development von André Fleischer
Wir treffen uns bei Otto in der Wandsbeker Straße 3-7, Haupteingang, Gebäude 1 im Forum.
Lang ist es her, dass ich was geschrieben habe! Daher fange ich erstmal wieder klein an und zwar mit dem heutigem Release Announcement der PHP 5.3.2 Version, welches ein Maintenance Release darstellt.
Security Enhancements and Fixes in PHP 5.3.2:
Improved LCG entropy. (Rasmus, Samy Kamkar)
Fixed safe_mode validation inside tempnam() when the directory path does not end with a /). (Martin Jansen)
Fixed a possible open_basedir/safe_mode bypass in the session extension identified by Grzegorz Stachowiak. (Ilia)
Key Bug Fixes in PHP 5.3.2 include:
Added support for SHA-256 and SHA-512 to php’s crypt.
Added protection for $_SESSION from interrupt corruption and improved “session.save_path” check.
Fixed bug #51059 (crypt crashes when invalid salt are given).
Fixed bug #50940 Custom content-length set incorrectly in Apache sapis.
Fixed bug #50847 (strip_tags() removes all tags greater then 1023 bytes long).
Fixed bug #50723 (Bug in garbage collector causes crash).
Fixed bug #50661 (DOMDocument::loadXML does not allow UTF-16).
Fixed bug #50632 (filter_input() does not return default value if the variable does not exist).
Fixed bug #50540 (Crash while running ldap_next_reference test cases).
Fixed bug #49851 (http wrapper breaks on 1024 char long headers).
Over 60 other bug fixes.
Für weitere Details, sei an dieser Stelle das ChangeLog empfohlen.
Der PHP 5.2.x Release-Zweig wurde ebenfalls vor einigen Tagen auf den neuesten Stand gebracht.
Am 09. Februar findet das ObjektForum Nord zum Thema Testgetriebene Entwicklung in Hamburg statt. Im Namen von des Unternehmens it-agile, wie auch der Vortragenden Johannes Link und Bernd Schiffer, wird man an diesem Tag folgendes Rahmenprogramm erleben dürfen:
Testgetriebene Entwicklung (TDD) verspricht weniger Fehler, bessere Wartbarkeit und eleganteres Design von Software. Und es bietet eine gute Ergänzung zu agilen Managementmethoden wie Scrum.
Beim kommenden ObjektForum Nord stellen wir testgetriebene Entwicklung in zwei Veranstaltungen vor.
16:30 – 18:30: TDD hands-on
[...]
Vortragende: Johannes Link und Bernd Schiffer Vortragsart: Hands-on Live-Pairprogramming und Frage-und-Antwort-Runde
Zielpublikum: Programmierer, Architekten, Technische Projektmanager
Ab 19:00: Vortrag zu Testgetriebener Entwicklung
[...]
Vortragende: Johannes Link und Bernd Schiffer
Vortragsart: Vortrag inkl. Fragen und Antworten, dazwischen kleine Live-TDD-Demonstration Zielpublikum: Projektmanager, Entscheider (keine technischen Kenntnisse nötig)
Weitere Informationen und die kostenlose Anmeldung findet man hier.
Zend Framework data models
Ein gute Einleitung von Michelangelo van Dam zum Thema Models innerhalb des Zend Frameworks (Table Data Gateway, Data Mapper, Relationships).
Ajax-Applikationen mit dem Zend Framework
Ein Beitrag zur Implementierung von Ajax-Applikationen mit dem Zend Framework und einer kleinen Einleitung zum Thema HTTP Header/Status-Codes von Jan Sorgalla.
Class posing and overloading the “new” operator
Johannes Schlüter stellt eine PHP Extension zum Überladen des “new”-Operators vor, welche in Zusammenarbeit mit Sebastian Bergmann entstand.
Immutable DateTime Objects
Falls jemand ein Immutable DateTime Object benötigt, der sollte sich die Implementierung von Benjamin Eberlei anschauen. Zusätzlich gibt es eine kleine DateFactory mit dem Ansatz schon erstellte DateTime Instanzen wiederverwenden zu können.
Mit der Zeit macht sich Git im Bereich des Source Control Managements ja immer beliebter, was ich jedoch zu Beginn noch nicht ganz nachvollziehen konnte.
Nachdem ich mich in das Thema der verteilten Versionsverwaltungssysteme etwas eingelesen habe, bin ich beim Durchforsten einiger Blogs, noch auf der gitcasts.com Website von Scott Chacon gelandet.
Dort findet sich ein Eintrag mit dem Titel “RailsConf Git Talk“, und ich muss ehrlich gestehen, als ich diesen Screencast sah, gab es viele “AHA!-Momente”. Wer also mehr über Git erfahren möchte, sollte gitcasts.com im Auge behalten.
Vor einigen Wochen habe ich schon über Google Guice berichtet. Mit diesem Blog Post möchte ich jedoch allen Interessierten einen kleinen Überblick über die vorhandenen Dependency Injection Frameworks für PHP geben.
Das Stubbles Framework bietet einen IoC Container an, welcher sich stark an das vorher genannte Google Guice Framework anlehnt. Es sind unter anderem Features wie Bindings, Annotations und Scopes vorhanden.
<?php// make sure, the IoC functionality is loaded
stubClassLoader::load('net::stubbles::ioc::stubBinder');$binder=new stubBinder();$binder->bind('Car')->to('BMW');$binder->bind('Tire')->to('Goodyear');$binder->bind('Person')->to('Schst');$binder->bind('Engine')->to('TwoLitresEngine');?>
Yadif, entstanden durch Thomas McKelvey und im weiteren Verlauf durch Benjamin Eberlei geforked, wählt einen deklarativen Ansatz der Konfiguration und verzichtet z.B. auf den Einsatz von Annotations. Zusätzlich gibt es Module und einen Builder um mittels Fluent-API die Komponenten zu konfigurieren.
Als Teil der Symfony Components ist der Symfony Service Container entstanden.
Die Konfiguration der Komponenten lässt sich direkt mittels PHP, jedoch aber auch mit Hilfe von XML und YAML realisieren.
#sonar for #php is coming… please tell me what you think of it: http://bit.ly/4uCFu0 #phpqa
Wer Sonar noch nicht kennt, dem sei gesagt, dass dies eine Open Source Plattform zur Qualitätssicherung von Quellcode ist. Umso erfreulicher ist es, dass auch bald die Analyse von PHP Quellcode mittels Sonar möglich sein wird. Im entsprechenden Blog Post von Gabriele Santini kann man anhand vieler Screenshots den Stand der Dinge begutachten.
It’s no secret that we at SQLI want to give the PHP world an Open Source full-featured continuous integration system.
As an essential step to this in the short term, we are working on enabling the Sonar QA reporting system for PHP projects.
Aktuell implementiere ich auf Basis des Zend Frameworks eine kleine Applikation, die aus meinen vorhanden PDF-Dateien eine durchsuchbaren Index erstellen soll. Für den Suchindex wird Zend_Search_Lucene verwendet, welches eine Portierung des Apache Lucene Projekts darstellt.
Soweit mir bekannt, gibt es keine konkrete Schnittstelle für das Handling von PDF-Dateien mittels Zend_Search_Lucene. Zusätzlich habe ich nach einigen Erweiterungen bzw. Klassen Ausschau gehalten, jedoch fand ich nichts was in meinen Augen einer sauberen und komfortablen Lösung entsprach.
Dies führte dazu, dass ich mich entschied, den Umweg über Textdateien zu gehen. Mein aktueller Lösungsansatz verwendet das Command-Line Tool pdftotext, welches sich z.B. im Ubuntu-Package xpdf-utils befindet.
apt-getinstall xpdf-utils
Nach der Installation kann man auch schon sofort mit der Konvertierung der PDF-Dateien beginnen. Der folgende Befehl, erstellt eine Textdatei mit dem Namen MyDocument.txt.
pdftotext MyDocument.pdf
Soll die konvertierte Textdatei einen anderen Namen tragen, so kann man diesen auch explizit angeben.
pdftotext MyDocument.pdf foobar.txt
Der Wikipedia-Eintrag zu pdftotext, enthält gleich die passende Schleife für ein Batchscript.
Als Softwareentwickler sollte man seinen Horizont möglichst kontinuierlich erweitern, denn wie heißt es doch so schön . . . “Wissen ist Macht!”. Heutzutage ist es keine Seltenheit, wenn man auf Projekte stößt, welche eher einen hetrogenen Software-Stack darstellen.
Um an dieser Stelle ein wenig gesundes Halbwissen aufweisen zu können, empfehlen sich viele Möglichkeiten der Informationsgewinnung. Vieles spielt sich natürlich mittlerweile in Blogs oder Portalen ab, was auch eine sehr feine Sache ist.
Des Weiteren ist die Teilnahme an regionalen User Groups beim Wissensaustausch sehr behilflich. Eine zusätzliche und einfache Möglichkeit ist es z.B. sich mit weiteren Programmiersprachen zu beschäftigen, um auch neue oder andere Programmierparadigmen kennen zu lernen. Man will es vielleicht nicht glauben, aber es dreht sich nicht immer alles um die Programmiersprache XYZ.
Mir persönlich haben einige sehr tolle Bücher von Martin Fowler, Kent Beck oder auch z.B. Eric Evans, die Welt der Softwareentwicklung noch viel schmackhafter gemacht. Letzten Endes beschreiben all diese Publikationen auf ihre Art und Weise, wie man qualitative Software schreibt.
Aus diesem Grund habe ich mir gedacht, dass ich eine kleine Sammlung meiner bevorzugten Bücher zusammenstelle und diese auf der Seite veröffentliche. Mit ein bißchen Glück findet sich für den einen oder anderen Leser noch ein unbekannter Titel.