Tag archive: Weiterentwicklung

Cover des neuen Albums "Ewig" der deutschen Band Letzte Instanz

Letzte Instanz: „Ewig“

„Jeder Schuldige hat eine Zukunft. Jeder Heilige hat eine Vergangenheit. Und das wird ewig so sein.“ Mit dieser Anlehnung an ein Zitat von Oscar Wilde beginnt die Reise im neuen Album „Ewig“ der deutschen Band Letzte Instanz und stimmt auf die darauffolgende Stunde ein. Die Trilogie aus den drei Alben „Schuldig“, „Heilig“ und „Ewig“ kommt mit dieser Scheibe zu einem Ende und verabschiedet sich mit teils sehr starken, teilweise mit etwas einfallslosen Songs.

Continue reading

Digiart eines Affen mit einer Steampunk-Brille vor einem farbenfrohen Hintergrund, der technischen Fortschritt und Evolution verkörpern soll.

Evolution statt Revolution

Kein Plan wie ich auf dieses Thema gerade gekommen bin. Wahrscheinlich liegt es daran, dass ich mich momentan in mehreren Projekten damit beschäftige, aber vielleicht auch nicht. Jedenfalls habe ich in diesem Moment einen starken Drang darüber etwas zu schreiben, auch wenn dieser Artikel höchstens eine lose Gedankensammlung wird.

Continue reading

Ein altes, verwittertes Buch neben einem ebenso altertümlich wirkenden Eimer.

String Klasse: Version 1.1.0

Diese Version gammelt nun schon seit weit über einem Monat auf meinem PC herum, hat aber erst heute ihre Vollendung gefunden dank dem Kommentar von Phil. Er hat mich darauf gebracht zwei magische Methoden einzubauen, mit denen die Möglichkeiten der Klasse enorm gestiegen sind.

Neue Features

Da dieses Release neue Features beinhaltet und nicht nur Bugs und Optimierungen enthält verdient es auch den Sprung von Version 1.0.1 auf 1.1.0. Welche Features das genau sind werde ich jetzt versuchen zu erläutern.

String erweitern

Es gibt jetzt gleich vier neue Methoden einen String zu erweitern: add(), addMore(), insert(), insertMore().

Mit der add()-Methode ist es möglich einen anderen String oder auch ein String-Objekt an das bisher bestehende anzufügen oder voranzustellen. Man kann auch mit einem Parameter angeben, was zwischen den Strings stehen soll. Mit addMore() kann man im Grunde genommen genau das Gleiche machen, nur kann man hier ein Array aus Strings oder String-Objekten übergeben.

Mittels insert() kann man einen String oder auch hier wieder ein String-Objekt in das bisherige String-Objekt einfügen. Dabei gibt man über einen Parameter den Offset an. Hier macht insertMore() auch wieder das Gleiche, nur dass es die in einem Array übergebenen Strings nacheinander einfügt.

String kopieren

Es ist nun auch möglich ein String-Objekt zu kopieren mittels der Methode copy(). Zurückgegeben wird ein neues String-Objekt, welches den gleichen Inhalt hat, wie das, welches kopiert wurde.

Magische Methoden

Mit PHP 5 wurden magische Methoden in Objekten eingeführt. Wie eingangs erwähnt habe ich heute erste die beiden Methoden __call() und __toString() eingebaut.

Erstere ist dafür zuständig die Möglichkeiten dieser Klasse enorm zu erweitern, da man dadurch jede beliebige String-Funktion aufrufen kann und diese dann auf das Objekt angewendet wird. Beispiel:

// Gibt 'is is the new st' aus
$string = new String('This is the new string.');
$string->substr(2, 16)->show();

Wie man sieht ist diese Methode ein wirklich mächtiges Werkzeug und auch Simon sollte jetzt zufrieden gestellt sein

Die Methode __toString() sorgt dafür, dass das Objekt direkt ausgegeben werden kann. Normalerweise würde eine Warnung auftreten, doch jetzt wird schlicht und ergreifend der String zurückgegeben. Das kann dann so aussehen:

// Gibt 'This is the new string.' aus
$string = new String('This is the new string.');
echo $string;

Vererbbarkeit

Als letzte gravierende Änderung ist es nun möglich von der String-Klasse abzuleiten, um eigene Erweiterungen dafür zu schreiben. Man kann in den abgeleiteten Klassen jede Methode verwenden, die die String-Klasse selbst hat, da alles entweder von außen zugänglich, also public ist oder geschützt (protected).

Diese Möglichkeit habe ich mir auch direkt zunutze gemacht und eine Ableitung geschrieben: JavascriptString. Mit dieser Klasse ist es möglich viele String-Funktionen, die in Javascript zur Verfügung stehen auch in PHP zu nutzen.

Dokumentation

Dieser Artikel ist nicht allzu ausführlich und das soll er auch gar nicht sein. Ich muss nicht jede einzelne Zeile oder Methode ausführlich erklären, denn die Klasse selbst ist ausführlichst dokumentiert und mit Beispielen versehen. Wer jedoch einen schnellen Blick riskieren will findet hier eine ausführliche Dokumentation, die mit phpDocumentor erstellt wurde.

Subversion

Da ich inzwischen Subversion auch privat nutze war es nur logisch das Projekt auch damit zu versionieren. Den aktuellen Entwicklungsstand findet man ab sofort immer unter dieser URL: http://dbsvn.agitos.de/public/string/trunk/

Committen darf momentan nur ich, aber um den aktuellen Stand auschecken zu können gibt es den User anonymous mit dem gleich lautenden Passwort.

Download

Zu guter Letzt kommt schließlich noch der Download der aktuellen Version. Download.

Wer auch hier Subversion nutzen möchte kann dies über den von mir angelegten Tag erledigen:http://dbsvn.agitos.de/public/string/tags/1_1_0/

Eine Säule inmitten eine Stadt mit der Aufschrift Subversión. Dahinter sind Gleise erkennbar.

Subversion – Was ist´s, was bringt´s?

Mal ganz ehrlich. Viele Programmierer fangen nach einer Idee direkt und ohne Umschweife das Schreiben ihres Codes an. Dabei entsteht ein ganzer Wulst an Funktionen und Logiken. Manche davon sind besser, andere schlechter und so wird von der einen Stelle zur anderen kopiert, gelöscht und neu geschrieben. Stellt man jetzt jedoch irgendwann einmal fest, dass die letzten Schritte nicht dem entsprechen, was man sich vorstellt macht man diese rückgängig. Ist das nicht möglich hat man ein Problem und muss versuchen sich das Geschriebene wieder irgendwie zusammenzureimen.

Dieses eben beschriebene Szenario kenne ich aus meiner eigenen Erfahrung nur allzu gut und hätte ich zu diesen Zeitpunkten Subversion eingesetzt, hätte ich mir einiges an Stress und Verkomplizierungen sparen können.

Was ist Subversion?

Subversion ist eine Software zur Versionsverwaltung. Mit ihr ist es möglich jederzeit nachzuvollziehen wer wann was an einer Datei geändert hat. Wird der Log richtig gepflegt wird auch sofort klar, warum die Änderung erfolgt ist. Abgesehen davon kann man mit Subversion nach einer fehlerhaften Entwicklung auch ältere Versionsstände, sogenannte Revisionen, wiederherstellen. Und zu guter letzt kann man mit diesem Tool noch fertige Release-Stände auszeichnen.

Subversion unterstützt also Entwickler nicht nur dabei ihren eigenen Code unter Kontrolle zu halten, sondern ist vor allem für Teams aus mehreren Entwicklern gedacht. Man hat die Möglichkeit, dass sich mehrere Personen die aktuelle Revision eines Projektes oder einer Datei herunterladen (Checkout), daran arbeiten und sie anschließend wieder hochladen (Commit) und somit eine neue Revision erstellen. Dadurch ist es möglich, dass mehr als eine Person an einer Datei arbeitet. Beim Commit werden die verschiedenen Codestände wieder zusammengeführt (Merge), selbst dann wenn von der aktuellen Datei schon eine neue Version existiert. Probleme treten nur dann auf, wenn an der gleichen Stelle im Code etwas geändert wurde (Conflict). Hier müssen sich die betroffenen Entwickler zusammensetzen und einen gemeinsamen Nenner finden.

Was bringt Subversion?

Alles bis jetzt geschrieben ist ja ganz nett und hört sich gut an, aber wo bleibt jetzt der praktische Nutzen von alldem?

Im Grunde genommen kann ich nur wiederholen, was bereits geschrieben ist. Subversion unterstützt Entwickler in der Kontrolle und Entwicklung ihres Codes. Nicht mehr und nicht weniger. Subversion ist keine eierlegende Wollmilchsau. Es hilft nicht dabei besseren Code zu schreiben. Es tut einfach das, was es kann und das ist verschiedene Entwicklungsstände zu speichern und zugänglich zu machen.

Allerdings kann Subversion bei richtiger Verwendung ein extrem mächtiges Tool darstellen. Und das nicht nur bei der Entwicklung von Software, sondern auch bei der Verwaltung von Dokumenten, Bildern, Musik, Videos, usw. Hier nehme ich einfach mal die Wikipedia als Beispiel. Jeder dort eingestellte Artikel besitzt verschiedene Versionen, z.B. der Subversion-Artikel. Anhand dieser Versionen kann weltweit jeder Interessierte nachsehen wann welche Änderung gemacht wurde und warum. Baut jemand Mist wird einfach eine ältere Version wiederhergestellt und schon geht es weiter. Der Nutzen bei Wikipedia sollte jetzt wohl jedem klar geworden sein.

Durch die Tatsache, dass man mit Subversion nahezu alles verwalten kann und das an einer zentralen Stelle wird das Tool erst richtig nützlich. Hierzu ein praktisches Beispiel aus der Arbeit. Ein Projekt steht an, an dem eine Person entwickelt. Gegen Ende des Projektes wird die Zeit üblicherweise etwas knapp und ein zweiter Entwickler steigt ein. Diese zweite Person muss jetzt nicht lange darauf warten, dass er den Code vom Kollegen geschickt bekommt, sondern kann sofort anfangen, indem er sich das Projekt auscheckt. Durch den Log kann er sich auch schnell über den aktuellen Stand informieren und direkt loslegen. Natürlich müssen sich die beiden Entwickler absprechen wer was erledigt. Die persönliche Komponente kann und darf nicht verloren gehen für den Erfolg eines Projektes.

Das war jetzt nur ein Beispiel von vielen Tausend, die man finden könnte, aber ich denke hierdurch ist zumindest ein Nutzen dieses Tools klar geworden. Wer noch Fragen hat kann diese gerne in den Kommentaren stellen

Leuchtstoffröhren in der Form des englischen Wortes "Words"

PHP-Klasse für Strings

Information:
Es steht eine neue Version der Klasse zur Verfügung: String-Klasse: Version 1.1.0

Inspiriert von C++ habe ich eine generische Klasse geschrieben, mit der man Strings in PHP in Objekte umwandeln kann.

Einer meiner Hauptgründe für diese Entwicklung ist die Tatsache, dass ich in der Arbeit schon diverse Projekte auf UTF-8 umgestellt habe. Um UTF-8 möglichst weit zu unterstützen hat man momentan eine sehr einfache Möglichkeit, nämlich die Multibyte String-Funktionen von PHP. Damit der Code des Portals nun auch mit UTF-8 umgehen kann sucht man sich die Funktionen von der Seite des PHP-Manuals, sucht danach portalweit und ersetzt alle Vorkommen mit dem neuen Funktionsaufruf.

Continue reading

Logo der Firma Zend im Nackenbereich eines schwarzen T-Shirts

Entwickeln mit dem Zend Framework

Heute habe ich mich mal daran gewagt etwas mit dem Zend Framework zu experimentieren. Meine Idee war bzw. ist mein Buchungssystem auf Basis dieses Frameworks aufzubauen und damit etwas mehr zu professionalisieren.

Weit gekommen bin ich noch nicht, da ich mehr damit beschäftigt war in der Dokumentation und im QuickStart Guide nach bestimmten Dingen zu suchen als Logiken zu schreiben. Bis jetzt habe ich gerade mal die Validierung von übergebenen Daten geschafft. Aber das soll nicht Gegenstand dieses Beitrags sein.

Continue reading