Ubuntu 12.04 (Precise Pengolin) auf dem Samsung NC10

Hehe, fast genau 2 Jahre nach meinen Rant auf Ubuntu, habe ich nun doch wieder mal eine Version dieser Distribution installiert. Auf meinem Samsung NC10 darf ab sofort die 12.04 Version residieren.

Ich muss sagen, Unity gefällt sehr gut auf dem Kleinen. Das Arbeiten an diesem Gerät macht Spaß und die Oberfläche erfüllt absout ihren Zweck. Da hat sich Ubuntu aber mächtig ins Zeug gelegt! Hut ab! Die Installation lief komplett ohne Probleme und das System funktioniert, mit allen Bestandteilen des Netbooks, Out-of-the-Box.

Mehr dazu in Kürze, wenn ich ein wenig länger damit gearbeitet habe.

Veröffentlicht unter Linux und Unix, Ubuntu | Verschlagwortet mit , | Hinterlasse einen Kommentar

Doppelte Einträge im Launchpad entfernen – OS X 10.7 Lion

Ich hatte seit einiger Zeit einige Einträge im Launchpad doppelt. Besonders die Tools rund um Xcode, wie Dashcode und der Quartz Composer. Diese sind nach einem Update von Xcode über den App-Store aufgetaucht. Ich hatte mit der 4.3er Version von Xcode gleich die Version 4.2 deinstalliert. Leider sind dabei aber die alten Einträge für die diversen Apps im Launchpad erhalten geblieben. Auch iPhoto war nach einem Update über den App-Store doppelt vorhanden.

Da man seit Xcode 4.3 die Tools separat erhält, und ich diese in den /Applications-Ordner gepackt hatte, war der Salat perfekt. Wer nun nach einer Möglichkeit sucht, diese doppelten Einträge zu entfernen, ist hier fündig geworden.

Als erstes starten wir das Terminal. Dort geben wir folgenden Befehl ein:

/usr/bin/sqlite3 ~/Library/Application\ Support/Dock/*.db

Damit sind wir nun mit der SQLite Datenbank des Docks/Launchpads verbunden. In dieser werden alle Applikationseinträge des Launchpads gespeichert. Mit einer simplen DELETE Anweisung können wir nun die doppelten Einträge löschen.

DELETE FROM apps WHERE title='iPhoto';

Wir müssen dann noch durch

killall Dock

das Dock und damit auch Launchpad beenden, damit die Änderungen wirksam sind. Keine Angst, die Anwendung startet automatisch neu.

Nun können wir unsere Apps ganz normal ins Launchpad hineinziehen, über das Dock oder direkt im Programme-Ordner. Fertig!

Veröffentlicht unter MacOSX, WTF | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

Verzeichnisfreigabe unter Debian Lenny in VMWare Fusion auf Mac Os X 10.6 (Teil1)

Ich habe mir eine Debian 5 Lenny VM mit VMWare Fusion unter OS X Snow Leopard installiert, damit ich ein Abbild meines Virtual-Root-Servers zur Verfügung habe. Hiermit will ich eine kleine Reihe starten, in der ich einige Tipps veröffentlichen möchte. Ich habe eine Server Installation durchgeführt, es befindet sich keine Desktop Umgebung auf dieser Installation.

Anfangen will ich mit einer einfachen Möglichkeit, benötigte Verzeichnisse für Mac OS X frei zu geben.

Ich wollte mir den Overhead einer zusätzlichen Samba-Instanz ersparen und habe den Weg über NFS gewählt.

$ apt-get install nfs-kernel-server

Danach die /etc/exports editiert. Ich brauche die Web-Verzeichnisse. Zu diesem Zweck habe ich den Apache so konfiguriert, das unter /var/www ein zusätzlicher vhosts-Ordner existiert. In diesem residieren dann alle Vhosts, auch das default-Docroot vom Indianer. Dieses vhosts-Verzeichnis gebe ich nun in der /etc/exports zum Zugriff frei.

/var/www/vhosts 172.16.223.0/255.255.255.0(rw,no_subtree_check,all_squash,anonuid=1000,anongid=1000,insecure)

Achtet darauf das die anonuid und die anongid den Werten des Users entsprechen, der darauf zugreifen soll. Ihr findet diese in der /etc/passwd und /etc/group. Ich habe der Einfachheit halber den vhosts-Ordner meinen Benutzer-Konto frei gegeben und auch in der Lenny-VM dem User durch chown root:$User /var/www/vhosts und chmod 0775 /var/www/vhosts den schreibenden Zugriff ermöglicht. Erstezt die IP-Adresse mit der Eures VM-Gastsystems. Es handelt sich um eine Entwicklungsumgebung, daher habe ich auf Sicherheit keine Rücksicht genommen. VERWENDET DIESES SETUP NIEMALS AUF EINEM PRODUKTIONS/LIVE-SYSTEM!

Jetzt brauchen wir nur noch den NFS-Server mit /etc/init.d/nfs-kernel-server restart neu starten und auf unserem OS X Host-System durch cd /net/172.16.223.130/var/www/vhosts testen, ob wir Zugriff haben. Sollte dies der Fall sein, und davon gehe ich mal aus, dann können wir jetzt durch Eingabe von ln -s /net/172.16.223.130/var/www/vhosts $HOME/lenny-webserver einen symbolischen Link erzeugen.

Das war’s auch schon.

Veröffentlicht unter Debian, Linux und Unix, MacOSX | Verschlagwortet mit , , , | Hinterlasse einen Kommentar

Installation von CouchDB auf Mac OS x 10.6.7 Snow Leopard

Im Folgenden will ich eine Installation aus den Sourcen des CouchDB NoSQL Datenbank-Systems unter Mac OS X 10.6 erläutern. Ich habe mich deshalb für diese Art der Installation entschieden, weil ich einige benötigte Tools schon installiert habe und ich nicht möchte, das Homebrew u.ä. auf meinem System ihr Dasein fristen. WICHTIG: Die Beschreibung der Installation bezieht sich auf die 64-bit Installation von Snow Leopard. Es müssen auch die üblichen Tools installiert sein, um die Sources übersetzen zu können (Xcode von der OS X DVD).

Also fangen wir an!

Ich habe mir in meinem $HOME-Verzeichnis extra für solche Fälle einen build-Ordner angelegt. Also wechsel ich vorher in diese Ordner und führe dort dann alle folgenden Befehle aus. Als erstes benötigen wir ICU um Erlang installieren zu können.

Wir besorgen uns eine aktuelle Version mit und führen dann nacheinander die folgenden Sachen aus:

$ wget http://download.icu-project.org/files/icu4c/4.8/icu4c-4_8-src.zip
$ unzip icu4c-4_8-src.zip
$ chmod +x .runConfigureICU
$ chmod +x .configure
$ ./runConfigureICU MacOSX --prefix=/usr/local --with-library-bits=64 --disable-samples --enable-static
$ make -j 3
$ sudo make install

Das make -j3 habe ich verwendet, da die CPU in meinem MacBook Pro ein Intel Core i5 ist und damit dann die build-Prozesse parallel laufen können. Spart Zeit.

Als nächstes benötigen wir SpiderMonkey. Der Download via wget oder curl hat bei mir komischerweise nicht funktioniert, es gab immer einen Internal Server Error (500). Also das Archiv mit dem Browser meines Vertrauen von http://ftp.mozilla.org/pub/mozilla.org/js/js-1.7.0.tar.gz herunter geladen und nach $HOME/build kopiert. Dann folgendes ausgeführt:

$ tar xvfz js-1.7.0.tar.gz
$ cd js/src
$ wget http://svn.macports.org/repository/macports/trunk/dports/lang/spidermonkey/files/patch-jsprf.c
$ patch -p0 -i patch-jsprf.c
$ make -f Makefile.ref
$ sudo su
$ cd /$HOME/js/src
$ JS_DIST=/usr/local/spidermonkey make -f Makefile.ref export
$ exit
$ sudo ranlib /usr/local/spidermonkey/lib/libjs.a

Den Patch brauchen wir, um SpiderMonkey korrekt installieren zu können. Es gab bei mir einen Warnhinweis bei dem Ausführen von ranlib. Dieser kann aber locker ignoeriert werden.

Jetzt setzen wir noch ein paar Symlinks, damit sich alles dort wieder findet, wo es hin soll. Setzt bitte /usr/local/bin in Eure Pfad-Umgebung.

$ sudo ln -s /usr/local/spidermonkey/include /usr/local/include/js
$ sudo ln -s /usr/local/spidermonkey/lib/libjs.dylib /usr/local/lib/libjs.dylib
$ sudo ln -s /usr/local/spidermonkey/bin/js /usr/local/bin/js

Nun kommen wir zu Erlang:

$ wget http://erlang.org/download/otp_src_R14B03.tar.gz
$ tar xvfz otp_src_R14B03.tar.gz
$ cd otp_src_R14B03
$ ./configure --prefix=/usr/local --enable-smp-support --enable-dynamic-ssl-lib --enable-kernel-poll --enable-darwin-64bit
$ make -j3
$ sudo make install

Ich habe eine Warnung wegen der fehlenden oder inkorrekten Installation der wx-Bibliotheken erhalten. Die Installation läuft aber trotzdem durch, wx wird halt einfach nicht beachtet.

Jetzt haben wir alles, um endlich CouchDB installieren zu können. Wir doch bisher garnicht so schwer.

$ wget http://ftp.fernuni-hagen.de/ftp-dir/pub/mirrors/www.apache.org//couchdb/1.1.0/apache-couchdb-1.1.0.tar.gz
$ tar xvfz apache-couchdb-1.1.0.tar.gz
$ cd apache-couchdb-1.1.0
$ ./configure --prefix=/usr/local --with-js-include=/usr/local/spidermonkey/include --with-js-lib=/usr/local/spidermonkey/lib
$ make -j3
$ sudo make install

So, das war’s. CouchDb befindet sich jetzt unter /usr/local und ist bereit zur Verwendung. Auf die Sicherheitsaspekte auf einem Produktionssystem gehe ich hier nicht ein, dazu findet sich ausreichend Informationsmaterial im WWW.

Abschließend kopiewren wir noch das plist Script mit

$ sudo cp /usr/local/Library/LaunchDaemons/org.apache.couchdb.plist /Library/LaunchDaemons/

um CouchDB als systemweiten Dienst zu aktivieren.

Um schnell einen Test durchzuführen, geben wir im Termianl einfach mal folgenden Befehl ein, um zu testen, ob die Installation auch wirklich erfolgreich war.

$ sudo -i couchdb -b

Danach testen wir im Browser unter http://127.0.0.1:5984/_utils/index.html, ob alles läuft.

Zum Abschluß kommt noch die PHP Erweiterung:

$ git clone https://github.com/akissa/php-couchdb.git
$ cd php-couchdb
$ phpize
$ configure
$ make -j3
$ sudo make install

Wir tragen noch die Erweiterung mit extension=couchdb.so in unsere php.ini ein und starten den Apache neu.

Das war’s auch schon. Viel Spaß mit CouchDB unter Mac OS X 10.6.7 Snow Leopard.

Veröffentlicht unter CoucDB, Datenbanken, MacOSX, PHP | Verschlagwortet mit , , | Hinterlasse einen Kommentar

Ein Tag im Leben eines Programmierers

Heute will ich mal etwas über den Programmiereralltag plaudern. Es geht hier um Dinge, die mich stören, aber auch um Fehler, die ich immer mal wieder gerne mache. Also sozusagen eine kleine Therapie-Runde…

Wer kennt es nicht? Du kommst früh ins Büro, nimmst dir als erstes einen Kaffee oder Tee, gehst zu deinem Arbeitsplatz, unterwegs noch ein kleiner Plausch mit einem Kollegen. Am Schreibtisch angekommen, startest du den Rechner, rufst deine Mails ab und sichtest diese. Ein klein wenig Aufregung über so viel SPAM oder irgendwelcher Kunden, die schon wieder alles über den Haufen schmeißen wollen ;-) Twitter wird auch noch schnell gecheckt. Du möchtest ja schließlich mitteilen, wo du gerade bist. Ein paar interessante Tweets mit coolen Developer-News sind dabei. Also schnell mal die Links geklickt und geschaut, was da so ab geht. Dann noch den Chat angeworfen, du willst ja erreichbar sein, wenn dein Handy schon auf kurz vor lautlos gestellt ist.

Bevor du es merkst, sind 1 bis 1,5 Stunden rum und du hast noch nichts gearbeitet. Das ist an sich nicht weiter schlimm, wenn du dein Pensum wieder raus holen kannst. Aber was ist mit der coolen Idee, die du auf dem Weg zur Arbeit hattest? Wo sind all die nützlichen Gedanken hin, die du eventuell unter der Dusche, bezüglich eines Problems, hattest? Weg, oder zumindest weit im Keller der geheiligten Hirnwindungen. Und was ist mit der Motivation, an deinem Projekt weiter zu arbeiten? Jetzt kommt es noch ganz Dicke: ein Kollege hat Probleme und braucht Hilfe! Gut, dann also alles hinten dran hängen und am Abend bin ich sowieso kreativer und produktiver. Gegessen wird daher auch am Arbeitsplatz, weil du dann wenigsten noch schnell man ein Tutorial oder ein Manual lesen kannst. Die API-Doku zu deinem verwendeten Framework verspricht auch Lösung für ein Problem. Ach so, hätte ich beinahe noch vergessen, ein Meeting will ja auch noch abgehalten werden. Anwesenheit ist Pflicht, obwohl dich nur 10% der besprochenen Abläufe überhaupt betreffen. Und der/die Chef/in hat im Laufe des Tages auch noch gefühlte 2-12 Fragen.

Diesen Ablauf kennt, glaube ich, jeder auf diese oder eine ähnliche Art und Weise. Extrem kontraproduktiv und auf Dauer frustrierend. Warum also tappt man immer mal wieder in diese Falle? Du hast einen schlechten Tag. Okay. Du bist mit den Gedanken nicht bei der Sachen. Auch okay. Du hast keine Lust. Kommt auch mal vor. Du hast dir den Tagesanfang so angewöhnt. Schlechtes Zeichen! Für die anderen Dinge kannst du nicht unmittelbar was. Sie sind aber änderbar!

Räumen wir also ein klein wenig auf und schauen mal, was machbar ist.

1. Sobald du am Arbeitsplatz bist, solltest du alle Ablenkung vermeiden. E-Mails abrufen und kurz sichten ist durchaus sinnvoll. Ist ja schließlich auch dein Arbeitsplatz. Die Mails dann nach Prioritäten sortieren ist ebenfalls eine gute Idee. Die Dringenden sofort beantworten, den Rest auf später verschieben. Das war’s dann aber auch schon mal für die nächsten Stunden mit den Mails. Wenn etwas wirklich wichtiges sein sollte, wird der Kunde, oder wer auch immer, mit hoher Wahrscheinlichkeit sowieso anrufen. Am Rande bemerkt: Ich kapiere bis heute nicht, warum manche Menschen glauben, das E-Mails in Echtzeit bearbeitet werden. Rufe deine Mails 3x am Tag ab, und zwar dann, wenn du sowieso aus dem Rhythmus raus bist. Ich mache das immer Morgens, nach dem Mittag (oder auch vor dem Mittag) und am Nachmittag, also kurz vor dem Feierabend. Teile es den Leuten mit, und sie werden sich dran gewöhnen.

2. Twitter, Chat und ähnliches nicht am Arbeitsbeginn aktivieren! Dort wird in der Regel nichts wirklich relevantes für deine Arbeit gepostet werden. Zumindest nicht, wenn du keine Frage in den Raum stellst. Ich habe mir angewöhnt, die Programme gar nicht erst zu starten, da nach meiner Erfahrung es im Chat nichts nützt, wenn dort “beschäftigt” oder “abwesend” steht. Es wird trotzdem eine Message gesendet!

3. Mein Handy habe ich grundsätzlich auf sehr leise gestellt. Alle wichtigen Personen haben meine Büronummer, falls etwas wirklich dringendes sein sollte. Auf’s Handy werden aber gerne auch belanglose Sachen mal so zwischendurch gesendet, oder es kommt ein Anruf wegen eines dringenden Kinobesuchs. Die Hemmschwelle wegen Nichtigkeiten im Büro anzurufen, und eventuell eine Sekretärin oder einen anderen Mitarbeiter an der Strippe zu haben, ist auf jeden Fall höher.

4. Mache dir, sobald du am Platz bist, Notizen zu deinen Gedanken und sortiere deine Aufgaben. So wirst du im Laufe des Tages dann selten was vergessen. Wenn du etwas nicht schaffst, ist es was anderes.

5. Laut meiner Erfahrung ist es oft so, das ich am Morgen eine gute Idee für ein Problem oder eine Aufgabe habe, bei der ich am Vortag nicht weiter gekommen war. Erledige dies als erstes! Die Gedanken sind noch frisch und die Motivation ist auch sehr hoch. Es ist eigentlich dann ein idealer Start in den Tag, weil man diesen Schwung auch gleich für die nächsten Sachen nutzen kann.

6. Sorge dafür, das du Zeiten hast, in denen du nicht gestört wirst. Erkläre dies deinen Kollegen, oder deiner Familie, falls du Homeworker bist. Du brauchst Zeiträume, in denen du dich 100% auf deine Arbeit konzentrieren kannst. Nur so schaffst du auch effektiv etwas. Sorge aber auch für “Sprechzeiten”, in denen du für die Anderen offen bist. Bitte einen anderen Mitarbeiter eventuelle Telefonate entgegen zu nehmen und dir ein Notiz zu hinterlassen. Ist es wirklich dringend, kann er dich immer noch direkt ansprechen.

7. Mache Pausen, in denen du nicht am Platz sitzt und schon garnicht dort isst. Du brauchst die “Aufladezeiten”! Ich gehe zu Mittag immer gerne etwas an die frische Luft, sei es nun, um mein Essen zu holen, oder einfach nur so.

8. Besorge dir “Ausblendhilfen”! Ich setze im Büro immer Kopfhörer auf, wenn ich absolut nicht gestört werden möchte. Meine Lieblingsmusik dudelt dann in für mich angenehmer Lautstärke vor sich hin und ich blende die Umwelt komplett dadurch aus. Das Gute daran ist, meine Kollegen haben sich daran gewöhnt und wissen Bescheid.

9. KEINE ARBEIT AM ABEND!! Das habe ich für mich groß geschrieben ;-) Ich neige gerne dazu, Dinge die unerledigt geblieben sind, am Abend abzuwickeln. Ich schreibe bewusst nicht “abzuarbeiten”. Denn nach 8-9 Stunden ist es kein produktives Arbeiten mehr. Notiere dir die Dinge, und beginne damit am nächsten Morgen als erstes. Die Freizeit ist extrem wichtig, da sonst dein Akku irgendwann leer ist. Das geht manchmal schneller als man denkt. Ich bin auch kein gerne Frühaufsteher und war lange Zeit der Meinung, das ich ab 17.00 Uhr am kreativsten bin. Ich hatte mich dann mal gezwungen, doch früh aufzustehen, und siehe da, die besten Ideen und die coolsten Lösungen für Probleme hatte ich morgens, und zwar schneller als auf dem späten Nachmittag oder gar Abend. Der Abend und auch die Wochenenden gehören den Freunden, der Familie oder einfach allem, was NICHT mit der Arbeit zu tun hat. Hauptsache es ist FREI gestaltete Zeit. Bei aller Begeisterung als Hacker, solltest du deine Freizeit nicht vernachlässigen.

10. Meetings. Ja, ich hasse diese Runden, wo alle da sitzen und einer nach dem Anderen seine Arbeitsberichte abliefert. 1 bis 2 Stunden können da schon mal drauf gehen. Gut der Chef oder die Chefin wollen sich natürlich einen Überblick verschaffen, verständlich. Aber ich bin der Meinung, das kurze Treffen (10-15 Minuten) im Stehen auf “Abteilungsebene” wesentlich effektiver sind. Deshalb im Stehen, weil die meisten sich dann doch etwas kürzer fassen und so auch der Kreislauf mal wieder etwas zu tun bekommt. Die Unit Leiter brauchen dann nur noch kurz eine Zusammenfassung bei der Chefetage abliefern. Klappt auch wunderbar.

Hoppla! Ist doch mehr geworden, als ich anfangs dachte.

Bevor ich es vergesse:
11. HABT SPASS!! Wenn der Stress weitestgehend weg bleibt, steigt die Motivation und damit auch die Effektivität deiner Arbeit.

Veröffentlicht unter Allgemein, Programmieren | Verschlagwortet mit , , | Hinterlasse einen Kommentar

Dinge, die einen Software Entwickler weiter bringen

Dies sind 10 grundlegende Dinge, die einen Software Entwickler in seiner Entwicklung weiter bringen können und auch seiner beruflichen Karriere bestimmt nicht abträglich sind. Ich schreibe das hier auch auf, um eine Art Merkzettel für mich zu haben.

1. Kenne dein Aufgabengebiet!
Jede Art von Herausforderung hat ihre eigenen Tücken und Fallstricke. Seit es nun die Entwicklung von Desktopanwendungen, Datenbank gestützte Client-Anwendungen oder die Erstellung von Webseiten. Du solltest dich in deinem Bereich auskennen, egal mit welcher Programmiersprache du arbeitest.

2. Tu es!
Warte nicht darauf, das dich jemand bei der Hand nimmt und dir alles erklärt. Versuch es selbst und lerne durch die Fehler, die du machst.

3. Schaue über den Tellerrand!
Wenn du zum Beispiel mit PHP arbeitest, installiere und konfiguriere einen Apache Webserver. Beschäftige dich näher mit MySQL, PostgreSQL oder einem anderen DBMS. Ähnliches gilt natürlich auch für alle anderen Programmiersprachen.

4. Habe keine Angst vor Veränderung!
Scheue nicht die Veränderung, die andere Aufgaben mit sich bringen. Nur durch neue Herausforderungen wirst du wachsen. Und der Spass kommt dabei auch nicht zu kurz.

5. Orientiere dich an den Besten!
Lese viel über die Heroes der Branche :-) Ich habe zum Beispiel ein Buch über Linus Torvalds gelesen, war sehr unterhaltend und lehrreich. Im Internet findest du ohne Ende Tutorials und ähnliches von den Größen der Programmierkunst. So lernst du von denen, die Erfolg haben.

6. Lernbereitschaft!
Eine neue Programmiersprache pro Jahr. Hört sich erst mal gewaltig an, ist aber machbar. So erweiterst du deinen Horizont um Längen.

7. Vermittle Wissen!
Versuche dein erworbenes Wissen weiter zu vermitteln. Zu Lehren ist ein guter Weg zu lernen. So wirst du am Besten feststellen, ob dein angeeignetes Wissen wirklich sitzt und kannst einiges vertiefen. Du bekommst dadurch auch eine andere Sichtweise.

8. Praxis!
Du wirst nur besser durch viel Praxiserfahrung. Lese etwas, schreibe Code, mache Fehler, improvisiere, lese wieder etwas und beginne von vorn.

9. Beginne einfach!
Versuche immer vom Einfachen auf das Komplizierte zu schließen. Mache dir Notizen über deine Fortschritte. Habe nicht den Fortschritt von einem Monat im Auge sondern sei dir bewusst, das du heute schon besser bist als du es gestern warst.

10. Suche dir einen Lehrmeister!
Ein Lehrmeister muss es jetzt nicht im herkömmlichen Sinne sein ;-) Es gibt in deiner Firma, im Freundeskreis oder in einer Internet-Community bestimmt Leute, die schon länger in deinen Feld tätig sind. Bitte sie, deinen Code zu begutachten.

Das war’s. Wenn ihr noch Anregungen habt, dann postet sie einfach als Kommentar.

Veröffentlicht unter Allgemein, Programmieren | Verschlagwortet mit , | Hinterlasse einen Kommentar

Zend Framework Tipps und Tricks (1)

Ich will hiermit mal ein kleine Serie beginnen, in der ich einige Tipps und Tricks zum Zend Framework zusammenstellen möchte. Klar, es gibt Foren und unzählige Tutorials, aber etwas als eine Art Sammlung habe ich noch nicht gefunden. Diese Tipps und Tricks sind nicht alle von mir. Wo es mir möglich ist, werde ich auf die entsprechenden Seiten verlinken. Das Ganze dient auch als Gedankenstütze für mich. Wenn Ihr auch ein paar Dinge habt, dann könnt ihr sie als Kommentare schreiben. Ich werde Sie dann in den nächsten Teilen explizit nennen.

Controller Bezeichnungen
Wenn man einen Controller mit dem Name KunstKulturController erzeugt, dann ist dieser über die URI kunst-kultur erreichbar. Gut für Google, da Worte mit Bindestrich separiert werden.

Unterverzeichnisse in controllers
Gefunden hier: http://robertbasic.com/blog/grouping-zend-framework-controllers-in-subdirectories/.
Man kann Controller auch in Unterverzeichnisse innerhalb des controllers-Ordner gruppieren. War mir bisher auch nicht bekannt ;-) Dies hat natürlich den Vorteil, das man bei vielen Controllern den Überblick behält.

Entsprechend ist das Ganze dann so aufgebaut:
controllers/Subfolder/BarController.php

Aufpassen muss man mit der Bezeichnung der Verzeichnisse, diese müssen mit einem Großbuchstaben beginnen. Erreichbar ist dieser Controller über die URI subfolder_bar/controller und die Klasse muss dann Subfolder_BarController heißen.

Die Views liegen dann entsprechend in views/scripts/subfolder/bar/index.phtml.

Das Beste an der ganzen Sache ist, man braucht nichts zu konfigurieren.

So, das war’s erst mal für’s erste.

Veröffentlicht unter PHP, Programmieren, Zend Framework | Verschlagwortet mit , , | Hinterlasse einen Kommentar

Tipps für das Leben eines Software-Entwicklers

Der Entwurf und die Entwicklung einer Applikation, sei es nun eine vollwertige Desktop-Anwendung, eine Mobile App oder eine Webseite, ist so lange relativ leicht und harmlos, wie man es nur für sich selbst erledigt. Sobald aber andere potenzielle Benutzer an die Software gelangen, wird es manchmal etwas holprig. Verlässt man seinen Elfenbeinturm und begibt sich in die weite Welt, sieht das Leben eines Software-Entwicklers schon ganz anders aus.

In diesem Beitrag will ich einige Erfahrungen, aus eigener Hand und durch andere vermittelt, mitteilen, die eventuell dem Einen oder Anderen helfen könnten, sich dem grauen Entwickler Alltag zu stellen.

1. Entwerfe deine Anwendung/Webseite immer mit dem Gesamtziel im Hinterkopf
Es gibt wohl kaum etwas frustrierenderes als ständige Anforderungsänderungen. Rein in die Kartoffeln, raus aus den Kartoffeln, wie es so schön heißt. Lege zuerst die grundlegenden Anforderungen fest, rede so viel wie möglich mit dem Kunden/Benutzer. Überlege genau, für wen und für was die Anwendung gedacht ist. Nur so wirst du die wesentlichen Anforderungen von Anfang an auch wirklich erfassen und kannst dich während der Entwicklung voll und ganz auf die wichtigen Dinge konzentrieren; Code schreiben, Tests durchführen und Quelltext überarbeiten. Du wirst nicht alle Anforderungen vom Beginn an überblicken, einige Änderungen werden mit Sicherheit auch im Entwicklungsprozess kommen. Sei offen dafür! Das ist aber was anderes, als drauf los zu coden und ständig die Richtung zu ändern.

2. Konzentriere dich auf das Wesentliche und beginne dort
Viele neigen dazu, erst einmal die Oberflächen, also das Aussehen einer Webseite in den Vordergrund zu stellen. Na klar, geht mir manchmal auch so. Man bekommt schnell etwas sichtbares und der Kunde/Benutzer gibt frühzeitig Feedback. Fishing for compliments, nennt man das wohl. Ist auch nichts verwerfliches, man lebt ja schließlich nicht vom Brot allein, wie es so treffend heißt.
Bei all dem sollte man aber nicht die Funktionalität und Usability aus den Augen verlieren. Was nützt es, dass die Webseiten noch so coole Javascript-Effekte hat, wenn diese die Funktionalität nicht fördern, oder sogar Kontraproduktiv sind.
Definiere die Funktionen, code sie, teste sie und baue dann die hübsche Oberfläche drum herum. So kannst du dich hundertprozentig auf eine Sache konzentrieren, hast schnell Ergebnisse und bekommst frühe Erfolgserlebnisse. Dies gilt nicht nur für die Entwicklung von Webanwendungen.
Du solltest auch erst einmal mit den Hauptfeatures anfangen und dich dann, wenn diese fertig sind, um die Nebenschauplätze kümmern. Klassifiziere die Anforderungen und arbeite sie dementsprechend ab.

Solltest du deine Software als Open Source freigeben wollen, hole dir Unterstützung. Für viele ist es einfacher, sich durch Arbeiten an der Benutzeroberfläche oder Lokalisierung daran zu beteiligen, als direkt am Quelltext.

3. Hole dir frühzeitig Rückmeldungen
Hole dir Feedback vom Kunden/Benutzer so oft es geht. Sie betrachten die ganze Angelegenheit mit völlig anderen Augen! So gut du auch sein magst, du deiner Intuition und deinem Können vertraut, du hast nicht alles im Kopf und siehst die Dinge u.U. anders als deine potentiellen Kunden oder User. Es ist auch wichtig, sich zwischendurch ein paar kleine Motivationseinheiten zu holen.

Gehe auf Anmerkungen ein und prüfe, ob sie Sinn ergeben oder vielleicht sogar dein Leben als Entwickler vereinfachen könnten. Auch Ratschläge von Kollegen sind wichtig. Lass deinen Code und deine Anwendung von einem erfahrenerer Kollegen oder Freund begutachten. So lernst du unheimlich schnell.

4. Testen und Code-Reviews
Teste deinen Code so oft du nur kannst. Sei es durch Test-Suites ähnlich phpunit, cppunit, junit o.ä., oder auch durch einfache Usability-Tests mit Personen, die am besten überhaupt nicht in den Entwicklungsprozess involviert sind. Auch die Verwendung von Continuous Integration Tools wie Jenkins kann ich nur empfehlen. Nach einem geringen initialen Aufwand hast du mit einem solchen Tool einen Automatismus installiert, der unwahrscheinlich viel Arbeit abnimmt.

5. Plane die Zukunft
Fange nicht an wie wild Änderungen vor zu nehmen, sollten diese vom Kunden oder Benutzer gefordert werden. Prüfe ganz genau, was wie und wann realisiert werden soll.
Auch die Beseitigung von Bugs solltest du planen. Die Ausnahme bilden selbstverständlich Bugs, die die Funktionalität der Anwendung betreffen. Diese haben natürlich Priorität! Alles andere aber solltest du planen und dann so genannte Roll Outs durch führen. Machen andere Firmen, wie Microsoft und Oracle mit ihren Patchdays, oder der Linux Kernel mit seinen Zyklen, auch. Was im Großen funktioniert, funktioniert erst recht im Kleineren!

6. Über den Tellerrand schauen
Beschäftige dich auch mit Programmiersprachen außerhalb deines Hauptfeldes. So lernst du unter anderem auch eine veränderte Sicht auf Problemstellungen. Gucke dir Screencasts und/oder Tutorials an, lese Bücher und probiere, probiere, probiere.

7. Spaß haben und entspannt bleiben
Dazu muss man wohl nicht viel sagen. Ich weiß aus eigener Erfahrung, das eine Umgebung, in der ich mich richtig wohl fühle, sehr viel zur Kreativität und Produktivität beiträgt. Sitze nicht Stundenlang stur vor dem Rechner. Softwareentwicklung ist eine spannende und fesselnde Beschäftigung, aber manchmal auch ziemlich aufregend und anstrengend. Mache zwischendurch Pausen, in denen du Dinge tust, die dich entspannen und gönnen deinem Gehirn etwas Ruhe. Ich gehe z.B. gern für eine Stunde spazieren, höre mir entspannt Musik an oder lese ein paar Seiten in einem Buch. Du solltest deinen eigenen Weg finden, Energien zu tanken. Es gibt Leute in meinem Umfeld, die gehen z.B. Shoppen oder setzen sich, bei entsprechendem Wetter, in ein Straßencafé. Das hilft machmal bei Problemen weiter, an die du dich festgebissen hast und nicht weiter kommst. Nicht verkrampfen, mit Gewalt kommst du selten zum Ziel. Und ist dann das Erfolgserlebnis da, fühlst du dich richtig gut.

Dieser Artikel ist inspiriert worden durch einen Post in Bob Belderbos Blog (english).

Veröffentlicht unter Allgemein, Programmieren | Verschlagwortet mit , , | 1 Kommentar

Debian Squeeze in Sicht

Debian Squeeze soll nun endlich am 5./6. Februar erscheinen.
Debian Squeeze Countdown

Veröffentlicht unter Debian | Verschlagwortet mit | Hinterlasse einen Kommentar

Neues Design

Heute nicht so viel von mir. :-) Wie man sieht, habe ich ein neues Theme aufgesetzt und dabei auch noch ein wenig an der Software gebastelt.

Ich hoffe, das ich jetzt endlich doch mal dazu komme, mehr Zeit in die Pflege und Updates meines Blogs zu investieren. So long…

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar