Zum Inhalt springen

Kategorie: Allgemein

Continuous Integration – Teil 3 (Hudson CI)

Im dritten Teil der CI-Serie geht es um den Hudson-CI. Es handelt sich dabei ebenfalls um einen Java CI Server. Dieser ist aufgrund seiner einfach Konfiguration über sein Webinterface und die große Auswahl an Pugins sowohl bei Entwicklern als auch bei Administratoren sehr beliebt. In diesem Beitrag gehe ich auf die Installation und Konfiguration und natürlich auf die Integration von PHP ein.

Java Daemon und die Sache mit ipv6

Bei meiner Recherche zum Thema CI Server und PHP bin ich über ein interessantes Problem gestolpert, dass nicht nur mich beschäftigt hat. Eine Kollegin ist hier auch auf die Nase gefallen und daher gibt es hier im Vorfeld schon mal eine kleine Beschreibung. Die CI Server CruiseControl und Hudson sind in Java geschrieben und bei beiden ist folgendes Verhalten aufgefallen. Man startet den Server und er ist nicht erreichbar bzw. findet sich selbst nicht, wie dies im Fall von CruiseControl passiert ist. Fehlermeldungen (bzw Exceptions) mit der Aussage „Network unreachable“ sind hier aufzufinden. Aufgetreten ist es bei mir unter Debian Squeeze und ich weiß, dass es zumindest bei CentOs auch der Fall ist.

Design Pattern: Fluent Interface

Diese Design Pattern ist sehr interessant und dabei auch noch sehr einfach. Wenn man eine Klasse definiert hat man normalerweise private Attribute, die man über Setter und Getter anspricht. Wenn man 3-4 Attribute auf einmal befüllen will, kann man eine convenience-Methode definieren. Dies hat den Nachteil, dass man Sinn eines Wertes nicht auf den ersten Blick sieht und man dann doch die IDE bemühen muss. Alternativ kann man auch die Setter nacheinander aufrufen. Um das ganze zu verschönern und zu vereinfachen nutzt man ein Fluent Interface.

Logging mit dem log4php-Framework

Ein wichtiges Thema bei der Entwicklung – und darüber hinaus – ist das Logging. Üblicherweise gibt es verschiedene Log-Level, die angeben wie schwer ein Fehler ist bzw ob es sich nur um eine Information oder nur eine Debug-Meldung handelt. Der Vorteil eines Logging-Frameworks ist die Einfachheit in der Konfiguration, denn ein Entwicklungssystem, ein Stangingsystem und das Livesystem nutzen verschiedene Einstellungen. Log4php ist ein solches Framework, das vom Aufbau her wie log4j ist und im Apache Incubator Programm zu finden ist.

OpCode Cache – eine kurze Beschreibung

Nachdem ich im letzten Beitrag eine Installationsanleitung für APC geschrieben hatte, gibt es nun die Theorie dazu.Was macht PHP im Hintergrund, damit eine Quelltextdatei ausgeführt werden kann? Wenn man ersteinmal weiß, wie diese Grundlagen sind, so ist ein OpCode Cache keine Magie mehr. Es ist sogar sehr einleuchtend, wieso ein solcher Cache so funktioniert wie er dies tut.

PHPUnit – Testklassen automatisch generieren

PHPUnit ist ja ein größeres Thema. Also gibt es jetzt nur einen kleinen Vorgeschmack. Falls sich jemand die Doku angeschaut hat, wird er/sie die Beispiele und die Generierung wiedererkennen und langweilig finden. Ich habe heute diese Funktion aber mal selbst ausprobiert und war ziemlich begeistert, wie toll dies funktioniert.

Eine nervige Arbeit ist immer einen Unittest zu definieren, der eine Methode testet, die mit primitiven Typen umgeht. Man schreibt eigentlich relativ simplen Code und braucht dafür viel Zeit. Das muss aber nicht so sein. PHPUnit kann mir diese Arbeit abnehmen. Ich muss nur ein paar Annotations nutzen, die ich an die entsprechenden Methoden schreibe. Wie passend, dass ich diese im letzten Beitrag bereits erklärt hatte.

Annotations in PHP

Java hat ein Sprachkonstrukt, dass sich „Annotation“ nennt. Dabei handelt es sich um Anmerkungen im Quelltext, die diesen mit zusätzlicher Funktionalität oder Informationen ausstatten. Ein Beispiel ist das ORM. Man schreibt einfach seine Klasse wie gehabt, verknüpft diese dann aber über Annotations mit dem benutzten ORM-System. Man kann so die Tabelle angeben, oder welches Attribut mit welcher Spalte verknüpft ist. Weiter könnte man sich auch vorstellen, diese Funktion für Code Generatoren zu nutzen. Die dann entsprechenden Code erzeugen.

Design Pattern: „Singleton“

Da dies der erste Beitrag zum großen Thema „Design Pattern“ ist, gibt es eine kurze Einführung. Ein „Design Pattern“ ist ein Muster in der Softwareentwicklung, das sich bewährt hat und von vielen Leute genauso genutzt wird. Damit man für ein solches Muster auch einen Namen hat, überlegt man sich eine gute Umschreibung und schon hat man ein neues Design Pattern (oder Entwurfsmuster) geschaffen.

Nun gibt es das Singleton. Dies ist eine Klasse, von der es nur eine Instanz gibt. Eigentlich ein recht einfaches Konzept.

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close