Dirk Ollmetzer | Mittwoch, 21 Januar 2009 |
Development
Die Frage, wie eine vernünftige Entwicklungsumgebung einzurichten ist kommt einem Religionsstreit gleich. Jeder hat da so seine eigenen Ansichten und Vorlieben. Passend zum Jahresbeginn richtete ich mir ein PHP Entwicklungssystem neu ein. Ich möchte nicht nur erläutern was ich dabei gemacht habe, sondern vor allem auch warum ich es genau so gemacht habe.
Grundsätzlich mag ich Standards – bei Vorgehensweisen, Tools und Coding. Einige meiner Leser sind ja selber gestandene Entwickler und sehen das Eine oder Andere vielleicht anders, aber möglicherweise kann der Artikel den weniger Erfahrenen Anregungen geben.
Der komplette Entwicklungsprozess
Bevor man sich eine Entwicklungsumgebung einrichtet, sollte man sich darüber im Klaren sein, wie der komplette Entwicklungsprozess der PHP Anwendungen aussehen soll. Die eigene Entwicklungsumgebung soll sich natürlich möglichst nahtlos einfügen und den Prozess optimal unterstützen. Das folgende, dreistufige Grundprinzip hat sich bewährt:
Dev -> Stage -> Live
Das Livesystem – also das eigentliche Ziel – wird genau so eingerichtet, wie es zum Betrieb notwendig ist. Das Stagingsystem für die finale Qualitätssicherung und Abnahme durch den Kunden ist nicht öffentlich zugänglich, aber ansonsten identisch eingerichtet.
Die eigentliche Entwicklung findet dezentral auf den lokalen Rechnern der Programmierer statt. So ist gewährleistet, daß sich die Entwickler nicht mit den laufenden Änderungen gegenseitig in die Quere kommen. Die Zusammenführung des Codes findet über das Versionskontrollsystem statt. Zu beachten ist, daß sich alle Programmierer auf gemeinsame Standards zu Codingstyle und Benamung von Klassen, Methoden und Variablen einigen.
Im Folgenden betrachte ich ausschließlich die lokalen Entwicklungssysteme und klammere die Frage nach Live und Stagingserver aus, um den Umfang des Artikels nicht völlig zu sprengen.
Werkzeuge
Als Betriebssystem verwende ich Windows XP. Unter Mac OS oder Linux ist das Setup aber ähnlich. In der Tat habe ich auch meinen Apple vergleichbar eingerichtet. Ich nutze ausschließlich Open-Source Werkzeuge, von denen der größte Teil auf allen wichtigen Betriebssystemen laufen. Es werden folgende Werkzeuge benötigt:
- Die Serverumgebung
Die Basis eines PHP Entwicklungssystems ist natürlich der Webserver mit PHP. Meistens gehört auch eine Datenbank dazu. Im Regelfall wird man zur Kombination aus Apache Webserver, PHP und MySQL greifen, obwohl aus besonderen Gründen natürlich auch andere Kombinationen, wie z.B. LightHTTPD, PHP und PostgreSQL sinnvoll sein können. Für ersteres spricht, daß es eine Standardkombination bei fast allen Hostern ist und es einfache, vorkonfigurierte Pakete für Windows, Mac und Linux gibt. Für mich hat sich der Einsatz von XAMPP bewährt. Es enthält so ziemlich alles, was man auf einem Webserver so alles brauchen kann. So sind z.B. in der Windows Version auch PERL, ein FTP- und ein Mailserver enthalten. Ebenso weitere Tools wie PHPMyAdmin, Webalizer und eAccelrator. Neben der einfachen Installation war für mich auch wichtig, daß sich alles ebenso einfach wieder entfernen lässt. Das Paket ist hier zu bekommen:
http://www.apachefriends.org/de/xampp.html
- Webbrowser mit Entwicklerunterstützung
Um Websites und Webanwendungen entwickeln zu können, benötigt man auf jeden Fall auch einen bunten Strauß an verschiedenen Webbrowsern. Ein absolutes Muß ist der Mozilla Firefox, weil er für alle wichtigen Betriebssysteme verfügbar ist, einen recht hohen Marktanteil hat, sich im Gegensatz zum Internet Explorer recht standardkonform verhält und einige wichtige Erweiterungen existieren, die das Entwicklerleben vereinfachen. Ich habe mindestens den HTML-Validator von Marc Gueury, die Web Developer Toolbar und Firebug installiert. Zusätzliche Browser zum Testen können natürlich auch nicht schaden. Firefox ist hier erhältlich:
http://www.mozilla.com
- Editor zu Codeeingabe
PHP-Skripte kann man prinzipiell mit jedem beliebigen Texteditor entwickeln, der reinen Text in ASCII und UTF-8 Codierung speichern kann. Für mittlere und größere Projekte nutze ich aber gerne eine IDE, die Komfortfunktionen, wie Projektverwaltung, Code-Vervollständigung, Autoformat und Weiteres bietet. Richtig toll ist es zum Beispiel, wenn man seinen Code vernünftig kommentiert und die IDE beim Schreiben eines Funktionsaufrufs automatisch die Parameter mit Erläuterung bereithält. Der einzige Nachteil ist, daß man mit einer IDE nicht ‚mal eben‘ eine einzelne Datei bearbeiten kann, die nicht im Projektkontext steht. Also benötigt man einen einfachen Editor (z.B. Notepad++ oder UltraEdit) für kleine schnelle Änderungen und eine IDE für das Projekt.Mittlerweile bin ich ein richtiger Fan von Eclipse geworden. Eclipse läuft auf allen wichtigen Betriebssystemen, ist mächtig, erweiterbar und kostenlos. Es wurde zwar ursprünglich für die JAVA-Entwicklung programmiert, aber mittlerweile gibt es eine gut an PHP angepasste Version. Diese ist hier zu bekommen:
http://www.eclipse.org/pdt/
http://notepad-plus.sourceforge.net/de/site.htm
- Versionskontrolle
Als Versionskontrollsystem bietet sich Subversion an. Hier soll es nicht darum gehen, wie man sich einen Server und ein Repository anlegt. Falls man ein Open Source Projekt beginnt, kann man sich ein entsprechendes Repository z.B. bei Sourceforge oder Freshmeat anlegen. Man benötigt auf seinem Entwicklungssystem jedoch noch einen entsprechenden Client um auf das Repository zugreifen zu können. Es gibt entsprechende Plugins für Eclipse. Auf Windows-Maschinen verwende ich jedoch lieber TortoiseSVN, das sich als Erweiterung in den Dateiexplorer integriert. Somit kann ich Subversion auch ausserhalb meiner PHP Projekte verwenden. Tortoise SVN gibt es hier:
http://tortoisesvn.tigris.org
- Grafikwerkzeuge
Ein Grafikprogramm sollte man immer zur Hand haben. Sei es, um Fotos anzupassen, Hintergrundgrafiken zu bearbeiten oder Icons zu erstellen. Man muss dazu nicht unbedingt die teuren Werkzeuge Photoshop und Illustrator aus dem Hause Adobe nutzen. Ich benutze seit Jahren gerne das wesentlich günstigere PainShopPro. Es sind natürlich auch gute Open-Source-Werkzeuge, wie GIMP für Bildbearbeitung und Inkscape für Vektorgrafiken erhältlich.
http://www.gimp.org
http://www.inkscape.org
- Serverzugriff
Nun benötigen wir noch zwei kleinere Programme um unsere Projektdateien auch auf den Staging- und den Liveserver übertragen zu können und dort ggf. kleinere Anpassungen vornehmen zu können. Zur Übertragung von Dateien nutze ich WinSCP, das sowohl das normale FTP, als auch das verschlüsselte SCP beherrscht. Um den Server auf der Kommandozeile steuern zu können nutze ich das bewährte PuTTY, das sowohl telnet als auch verschlüsselte SSH-Verbindungen ermöglicht.
http://winscp.net/eng/docs/lang:de
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
- Dokumentation
Um das eigene Entwicklungssystem zu vervollständigen, ist es sinnvoll, die Dokumentation griffbereit zu haben, falls man schnell mal etwas nachsehen will und gerade nicht online ist. Ich habe mindestens die folgende Dokumentation auf dem Rechner:
SelfHTML, nicht mehr ganz frisch, aber immer noch sehr nützlich für Fragen zu XHTML, CSS und Javascript.
http://aktuell.de.selfhtml.org/extras/download.shtml
http://www.php.net/download-docs.php
http://dev.mysql.com/doc/#refman
Die wichtigsten Werkzeuge zur Entwicklung von Webanwendungen haben wir nun zusammen. Je nach Projekt kommen natürlich noch weitere dazu, auf die ich hier aber nicht weiter eingehen möchte. In der nächsten Folge wird es darum gehen, wie man die Software einrichtet um mehrere Projekte nebeneinander bearbeiten zu können.
—
Bisherige Folgen:
1. PHP Applikationen entwickeln
Dirk Ollmetzer | Mittwoch, 21 Januar 2009 |
Development
In letzter Zeit waren meine Artikel in diesem Blog überwiegend persönlicher, wirtschaftlicher oder politischer Natur. Ursprünglich sollte dieser Blog aber einen eher technischen Schwerpunkt haben. Daher ist es an der Zeit, wieder ein bischen aus dem Nähkästchen zu plaudern. Zur Zeit verdiene ich meine Brötchen mit der Entwicklung von Webapplikationen in PHP. Daher ist es naheliegend und durchaus sinnvoll, wenn ich mit einigen Artikeln einen kleinen Einblick in meine persönlichen Präferenzen zu diesem Thema gebe.
Man kann mit PHP genausogut kleine, nützliche Skripte, aber auch großen Dienste, wie Flickr bauen. PHP ist toll, weil man schnell Ergebnisse erzielen kann und alle Freiräume hat. Genau deshalb ist PHP aber auch ein Alptraum. Man kann auch ohne große Vorkenntnisse eben schnell mal was zusammenpfriemeln. Daher gibt es so viele unsichere und schlecht zu pflegende Software in PHP.
Weil es eine Million mögliche Wege gibt, wie man ein Problem lösen kann, hat auch jeder erfahrene PHP-Entwickler seine eigenen Methoden und Techniken entwickelt. Daher ist es mitunter recht schwierig, ein gut harmonierendes Entwicklerteam zusammenzustellen.
Dies ist der erste Artikel einer kleinen Serie an deren Ende ein eigenes Framework für eigene Webapplikationen stehen wird. Ich bin mir natürlich durchaus darüber im Klaren, daß man vieles erheblich anders bewerten und auch sehr deutlich anders machen kann. Meine Meinung ist jedoch nicht aus der Luft gegriffen, sondern basiert auf Erfahrungen, die ich mir bei verschiedensten Web-Projekten in den letzten 14 Jahren erarbeitet habe. Am besten versteht der geneigte Leser das Folgende als Anregung oder Diskussionsbeitrag.
Beginnen werde ich im nächsten Artikel mit den Grundlagen: Dem Einrichten einer PHP Entwicklungsumgebung.
Dirk Ollmetzer | Montag, 12 Januar 2009 |
Unterwegs
Klirrend kalt und sonniger, wolkenloser Himmel. Perfektes Wetter für einen Sonntagnachmittagsspaziergang. Der ursprüngliche Plan, an den Summter See zu fahren erwies sich leider als nicht durchführbar. Summt und Umgebung war völlig zugeparkt, weil halb Berlin zum Schlittschuhlaufen hierhergekommen war. Es folgte eine Fahrt durch den Wintermärchenwald nach Lehnitz bei Oranienburg.
Selbst die Fahrrinne des Oder-Havel-Kanals, der mitten durch den Lehnitzsee führt war zugefroren. Hier sind ein paar schöne Bilder.

Lehnitz, Oder-Havel-Kanal

Lehnitzsee - Wintervergnügen am Strandbad

Lehnitzsee
Heute feiere ich ein kleines Jubiläum: meinen 500. Blogartikel. WOW! Das hätte ich mir nicht träumen lassen, als ich Mitte 2006 mit dem Bloggen angefangen habe. Eigentlich wollte ich damals nur ein paar Freunde und Komilitonen auf dem Laufenden halten, während ich meine Diplomarbeit vorbereitet habe. Es sollte „irgendwas mit Handies oder so“ werden. Daher auch der Untertitel „tiny little gizmos“. Wir sind doch alle in unsere kleinen elektronischen Spielzeuge vernarrt, oder? Diesen Artikel schreibe ich ja auch gerade auf meinem Mini-Notebook während ich im Zug sitze.
Das Diplom habe ich Anfang 2007 dann auch problemlos bekommen. Da mir das Bloggen tatsächlich richtig Spass gemacht hat, wollte ich danach nicht einfach so sang- und klanglos wieder damit aufhören. Der thematische Schwerpunkt hat sich zwar ein bischen verschoben, aber es ist ein reines Hobbyprojekt geblieben. Mehrere Angebote für Werbung auf meiner Seite habe ich abgelehnt. Ich schreibe nur über Sachen, die mich bewegen und zwar genau so, wie mir der Schnabel gewachsen ist. Auf die geschätzten €2,45 pro Monat kann ich da getrost verzichten. Aber genug der Vorrede.
Freibier! Oder noch besser: freie Software!
Zur Feier des Tages gebe ich heute einen aus – und zwar einen Download ;-)
Mein Diplomthema war „mobile community“ und seit Anfang 2006 entwickle ich auch an einer dementsprechenden Software: zzap. Mittlerweile ist die Software in der 4. Version angekommen und ich habe mich dazu entschlossen, zzap als Open Source unter der GPL freizugeben. Seit heute gibt es die Version 0.4.148 zum Download. Eine kurze Aufzählung der Features von zzap:
- Multichannel – Unterstützung von Web, iPhone und normalen Handies.
- Multilanguage – Deutsch und Englisch sind serienmäßig. Weitere Sprachen sind leicht hinzuzufügen.
- Connectivity – Einbindung in Blog und twitter möglich.
- Enhanced Content – Kurznachrichten plus Links plus Fotos.
- Easy Setup – Ein Installationsscript hilft beim Einrichten der Software.
- Extendable – Erweiterungsfähig durch Plug-in Architektur.
- Multitier, Schichtentrennung, MVC oder wie das jetzt gerade heisst. Bei meiner Software ist Ablaufsteuerung, Datenzugriff und Ausgabe jedenfalls ordentlich getrennt.
Würde mich freuen, wenn der Eine oder Andere die Software mal ausprobiert. Feedback ist allerherzlichst willkommen. Bei Interesse lasse ich mich auch gerne in Gespräche auf der MBC09 (Micro Blogging Conference) verwickeln.
Download: zzap V0.4.148 (376 KB)
Heute Nacht waren in Brandenburg Temperaturen bis zu -20 Grad. Wie ich auf die Idee kommen konnte, daß ich heute morgen einfach so in den Zug steigen und nach Hamburg zur Arbeit fahren kann, ist mir im Nachhinein unklar. Die Bahn bekommt ja schon den normalen Betriebsablauf nur mit Ach und Krach einigermaßen auf die Reihe.
Selbstverständlich war dann heute morgen komplettes Chaos – oder eigentlich auch wieder nicht. Streng genommen war es sogar ganz ruhig. Es fuhr nämlich schlichtweg nichts in Richtung Hamburg. Es kamen zwar im Minutentakt sinnlose Durchsagen, welcher Zug nun wieder wieviel Verspätung hat (Mindestens 45 – meist ab 60 Minuten aufwärts), daß Waggons fehlen, Reservierungen teils in anderen Waggons sind und Teile des Zuges unbeheizt sind. Aber das war unter dem Strich alles total egal – weil ohnehin kein Zug fuhr.

Geringfügige Differenz zwischen Ist- und Soll
Ich habe mir das bis 9:00 angesehen (bis dahin waren bereits 3 Züge fällig und nicht gefahren) und bin dann wieder nach Hause gefahren um von dort zu arbeiten. Was für ein Glück, daß ich den Laptop nicht in Hamburg hatte. Warum ist die Bahn eigentlich nicht so ehrlich und sagt folgendes durch:
„Wir bekommen heute überhaupt nichts auf die Reihe, gehen Sie bitte einfach wieder nach Hause„?
Das wäre wohl zu ehrlich, oder? Super Einstand für 2009 übrigens…
Wie krank ist das denn? Angeregt durch den Nostalgievortrag neulich auf dem 25C3 habe ich mir mal ’nen schönen Commodore64 Emulator (V.I.C.E.) und ’nen Crossassembler (ACME) besorgt und schaue gerade, wieviel 6502 Maschinensprache ich noch kann. Das ist ja schon bekloppt genug, dachte ich so aber nun stosse ich auch noch auf das hier:
Einen Sinclair ZX Spectrum Emulator – in Javascript!!!
Seit einiger Zeit gibt es ja den Firefox 3 Browser bei Mozilla. Übergangsweise wird der 2er noch mit Updates versorgt. Natürlich möchte Mozilla am liebsten, daß alle den neuen Browser benutzen, damit sie nicht mehr beide weiter pflegen müssen. So weit, so verständlich.
Ich bin bisher noch nicht auf den 3er umgestiegen, weil ich so einige Neuerungen nicht mag und mit dem 2er eigentlich recht zufrieden war. Seit einiger Zeit stelle ich fest, daß der Firefox 2 extrem häufig hängen bleibt – Und zwar sowohl auf dem Mac, als auch unter Windows. Das setzte ungefähr an, nachdem der Browser damit aufgehört hat, penetrant auf den Nachfolger hinzuweisen.
Ist das jetzt blöder Zufall, habe ich meine Kisten nicht richtig im Griff oder ist das extrem ekliges Zuckerbrot-und-Peitsche-Marketing von Mozilla, wie es sich nicht mal MS oder Apple trauen?
Hat jemand ähnliche Erfahrungen gemacht, oder tritt das Problem nur bei mir auf?
Dirk Ollmetzer | Mittwoch, 31 Dezember 2008 |
Misc
Der Kongress ist vorbei und ich ziehe mal eben Fazit und zeige gleich noch ein paar Bilder. Grundsätzlich finde ich es großartig, daß der CCC überhaupt jedes Jahr einen solchen Kongress organisiert und daß sich so viele Leute dafür interessieren. Es wurden über 4000 Tickets verkauft – ausverkauft am 2. Tag!
Die Stimmung war schon recht speziell. Der Zusammenhang zwischen Hacken und Bürgerrechten erschließt sich einem Normalbürger sicherlich nicht so einfach. Die Themen im Spannungsfeld zwischen Technik (Computing, Robotik) und Gesellschaft (soziologisch und juristisch) waren überwiegend spannend. Einige Vorträge fand ich super („Running your own GSM Network“ und „The Ultimate Commodore C64 Talk„), andere dafür etwas weniger („Attacking Rich Internet Applications“ und „Vulnerability discovery in encrypted closed source PHP applications„). Was aber eher damit zu tun hatte, daß Themen etwas anders beleuchtet wurden, als ich erwartet hatte.
Schade, daß ich nur einen einzigen Bekannten getroffen habe. Es hat sich aber auf jeden Fall gelohnt, die Veranstaltung zu besuchen. Und allen Leuten, die Hacker immer noch grundsätzlich für Kriminelle halten sei gesagt: Die Jungs und Mädels setzen sich auch für DEINE Bürgerrechte ein!

Erläuterung der Zugriife auf die aktive GSM Zelle

Lego Duplo - für kleine und grosse Kinder

Zwischendrin immer mal wieder alte Mechanik - funktionstüchtig!

Konzentration: Workshops und Hackcenter im Keller.

Nichts zu verbergen - daher lasse ich mich auch freiwillg per RFID tracken

Teilautonome Quatrocopter

Stilistisch passende Präsentationsfolien (C64 Talk)
Dirk Ollmetzer | Dienstag, 30 Dezember 2008 |
Misc
Vierter und letzter Tag auf dem Kongress. So langsam scheint bei den Teilnehmern ein wenig die Luft raus zu sein. Es ist wieder leerer im BCC. Man kann sich wieder bewegen und eine freie Steckdose ergattern. Ich habe gerade den (für mich) letzten Vortrag mit dem Title „why technology sucks“ gehört. Die Antwort auf diese Frage stand übrigens schon vor Beginn des Vortrags auf der Leinwand: „technology does not solve non-technical problems“. Wohl war – die größten Troublemaker sind zur Zeit sicherlich nicht die Techies, sondern Politiker, Juristen und die organisierte Kriminalität (Cracker). Das Leben (und Programmcode) könnte so einfach sein, ohne sie…
Der Vortrag selber zerfiel in zwei Teile, die weder untereinander noch mit dem Titel viel gemein hatten. Im ersten Teil wurde ein echter Datenalptraum vorgestellt: Eine Netzkarte für die öffentlichen Verkehrsmitte in den Niederlanden. Es wird mitgetrackt, wer wann von wo nach wo fährt und diese Daten sind auch noch (für die persönliche Abrechnung) per Web abrufbar. Es gibt zwar auch anonyme Karten, aber die sind teurer. Für Abokunden gibt es diese Möglichkeit zudem nicht. Leider wurde kein Weg aufgezeigt, wie mit diesem System am besten umgegangen werden kann. Es ist eben vor allem ein politisches Problem.
Der zweite Teil des Vortrages zeigte, daß es Menschen gibt, die sich um die Zukunft der E-Mail Gedanken machen. Ich bin ja auch seit einiger Zeit der Meinung, daß E-Mail in der bisherigen Form tot ist. Aus Sicherheitsgründen und wegen des Spam-Problems. Um den ersten Aspekt kümmert sich das vorgestellte Projekt „SmallMail“. Es ist bis jetzt ein proof-of-concept um Journalisten und potentiellen Informanten ein sicheres Kommunikationsmittel an die Hand zu geben. Dazu wird nicht nur die Nachricht selber, sondern auch die Header verschlüsselt und der Transport findet über das TOR-Netzwerk statt. Somit wird nicht nur die Nachricht, sondern auch die Information, wer wann mit wem kommuniziert vor unbefugtem Zugriff gesichert. Interessant – das sollte man im Auge behalten.
Jetzt werde ich noch mal eben nach den Daten aus dem Sputnik-Projekt fragen (da schreibe ich später noch was dazu) und mich dann gemütlich nach Hause bewegen. Ich sitze hier im ersten Stock und sehe draussen einen wunderbar blauen und wolkenlosen Himmel. Was gibt es schöneres, als nach gelungener geistiger Anregung einen entspannten Spaziergang an einem sonnigen Wintertag zu machen?
Dirk Ollmetzer | Montag, 29 Dezember 2008 |
Misc
Tag 3 des Kongresses fing mit einem echten Highlight an: „Running your own GSM Network“. Na gut, ein ganz kleines bischen übertrieben war der Titel schon. Eigentlich hätte es „Running your own GSM basestation“ heissen müssen. Seis drum – beeindruckend war die Vorführung allemal.
Nach einer Einführung, wie ein GSM Mobilfunknetz aufgebaut ist, ging es ans Eingemachte. Zunächst einmal die Frage, weshalb man so etwas überhaupt tun möchte. Neugier, die Suche nach Sicherheitslücken und die Schaffung eines Bewusstseins, daß überhaupt Schwachpunkte in der Netzsicherheit existieren. Insbesondere, wenn man bedenkt, daß viele Mobilfunkdienste, wie Payment auf der Grundannahme basieren, daß Mobilfunknetze sicher sind.
Um es kurz zu machen: Die Referenten haben während des Kongresses eine eigene Basisstation laufen lassen. Davon konnten sich die Anwesenden ganz einfach überzeugen, indem sie an ihren Handies ein anderes Mobilfunknetz auswählten. Neben den bekannten Deutschen Netzen wurde das Netz „001 01“ sichtbar. Und da die Kongressbesucher sehr experimentierfreudig sind, haben bereits über 1000 Einbuchungen stattgefunden. Es wurde der laufende Netzwerkverkehr gezeigt, aus dem sich Herkunftsländer und Heimatnetzwerke, SMS-Verkehr im Klartext, Telefontyp und IMEI Nummer (eindeutige Gerätekennung der Handies) herauslesen liessen.
Ein grundlegendes Sicherheitsproblem scheint bei GSM darin zu liegen, daß die Intelligenz fast vollständig im Netzwerk liegt. Das Netzwerk authentifiziert zwar das Handy, aber nicht umgekehrt. Das Handy vertraut dem Netzwerk, das es findet.
Jedenfalls ein extrem interessanter Vortrag, in dem die Zuschauer auch viel zu lachen hatten.
Den anschließenden Vortrag zur (un)Sicherheit von eletronischen Wahlsystemen habe ich nicht zu Ende gesehen, weil mir die Einwände bereits bekannt waren. Unabhängig von der konkreten Umsetzung sind elektronische Wahlen prinzipiell nicht überprüfbar und somit grundsätzlich abzulehnen.
« Vorherige Seite — Nächste Seite »