Archive

Archive for the ‘Software Entwicklung’ Category

Shell Ausgabeumleitung – Fehlermeldungen in der Standardausgabe

November 2nd, 2007 No comments

Hin und wieder braucht man ein paar Tips und Tricks für die Kommandozeile. Im Internet findet sich zahlreiche Hilfe. Doch nach spätestens zwei Wochen hat man es wieder vergessen, und die Suche geht von vorne Los. Aus Gründen meiner eigenen Vergesslichkeit hier nun auch für die Öffentlichkeit :) Zum Beispiel: Wie leitet man die Fehlerausgabe von Programmen auf das Standard Ausgabegerät um?

Read more…

captcha tutorial – Bots aussperren

Oktober 23rd, 2007 No comments

Vergangene Woche habe ich für einen aktuellen Kunden eine Funktion implementiert, die es dem Nutzer einer Webseite erlaubt, anderen diese Seite per E-Mail zu empfehlen. Dies öffnete Spammern potentiell Tür und Tor. Dem Kunden war besonders daran gelegen, sogenannte Bots auszusperren, die diese Funktion in sehr hoher Frequenz ausführen können.

Read more…

Rails tutorial – Eine Woche lang Agile Webentwicklung

Oktober 5th, 2007 No comments

Diese Woche war für mich persönlich eine der lehrreichsten seit langem. Klar lernt man bei der täglichen Arbeit hier und da neue Sachen, jedoch ist es nicht das lernen, was ich meine. Seit Dienstag habe ich mich mit meinem Rechner und dem Buch “Agile Web Development with Rails” bei einem Freund im Büro eingeschlossen, um mir die Ruby on Rails Technologie mal näher anzusehen. Nach ca. 4 Jahren Java Entwicklung ist ein Blick über den Tellerrand längst überfällig.

Read more…

Projekteindrücke

September 24th, 2007 No comments

Zurzeit befinde ich mich ein einem recht herausfordernden Projekt, weshalb in den letzten Wochen wenig Zeit zum schreiben blieb. Aber hier ein paar Eindruck von dem, was mir täglich widerfährt.

Jeder Entwickler weiß die Projektleitung zu schätzen, wenn Änderungswünsche (so genannte change request) vom Kunden im Stundentakt eingereicht werden, aber der Projektleiter diese sinnvoll priorisert und unsinnige Wünsche sofort abwiegelt. Doch kaum ist der Projktleiter mal nicht zu erreichen, sind viele Leute der Meinung, sich sofort an die Entwickler wenden zu müssen, um ihre vermeintlich soooo wichtigen Änderungen auf dem kurzen Dienstweg durchzudrücken. Und so kommen dann Wünsche nach einem neuen Feature am Freitag um 16:00 eingetrudelt, und können auf KEINEN FALL bis Montag warten.

Man kann sich vorstellen, wie die Qualität der Implementierung ist, wenn der Entwickler in der laufenden Woche bereit smehr als 50h an diesem Werk gesessen hat, und sich nichts sehnlicher wünscht, als die letzten Sonnenstrahlen dieses Sommerherbstes an einem anderen Ort zu genießen.

Zum Glück hatte ich im vergangen Freitag rechtzeitig kund getan, dass ich meine Wochenende pünktlichst starten werden. So ging der Kelch an mir vorüber.

Objekte und Beziehungen

August 5th, 2007 No comments

Wie im täglichen Leben stehen auch bei der programmatischen Nachbildung der Wirklichkeit Objekte oft in einer bestimmten Beziehung zu einander. Dabei unterscheidet man zwischen 1:1, 1:n und m:n Beziehungen.

Neulich wollte ich in einer kleinen Rails Web-Applikation (siehe aktuelle Literatur) eine Ansicht einer 1:n Beziehung zweier Objekte in Listenform erstellen. Die Anforderung war allerdings, die Liste nach der Anzahl der Kinder zu sortieren und dabei die Objekte zuerst anzuzeigen, die keine Kinder haben.

Read more…

Crossbrowser Webentwicklung

Juli 28th, 2007 No comments

Nun hat das Schicksal auch mich ereilt! Obwohl ich es bisher vermieden habe, entwickle ich für meinen aktuellen Kunden ein Webfrontend. Dabei ist der Anspruch neben guter Benutzbarkeit:

Read more…

Performance Tests

Juni 19th, 2007 No comments

Jeder Entwickler kennt es: Die gerade in der Entwicklung befindliche Anwendung wird regelmäßig mit unit Tests befeuert, um die korrekte Funktionalität zu gewährleisten. Hat man nun keinen build server zur Hand, der diese Aktionen automatisch durchführt, so testet der Entwickler eben selbst.

Leider ist während der Tests die Maschine komplett geblockt, besonders wenn es sich um rechenintensive Algorithmen handelt. Da diese Test mit steigender Anzahl zum echten Hindernis avancieren, ging ich der Sache mal auf den Grund. Warum dauert das hier alles so lange? Ich entwickle auf einem MacBook mit DualCore2 bei 2 GHz und 1GB RAM. Ja ich weiß, der RAM ist äußerst dürftig. Auch hier könnte ein Upgrade deutliche Linderung schaffen.

Zur Zeit entwickle ich eine Anwendung zur Sprachverarbeitung, welche mit Hilfe verschiedener mathematischer Algorithmen bestimmte Sprachmerkmale in Audiodateien erkennen und verarbeiten kann. Meine Entwicklungsumgebung ist Eclipse. Der build und test erfolgt automatisch mit ant.

Das ausführen einer Testsuite dauert bei der Verarbeitung eines 7 Minuten langen Audiofiles etwa eine Minute. Eine ganze Minute Dauerlast, bei der kein Arbeiten an der Maschine mehr möglich ist. Startet man das ant script jedoch nicht direkt in Eclipse, sondern auf der Kommandozeile verringert sich die Laufzeit auf ca. 40s. Eine Zeitersparnis von ca. 30%.

Noch deutlicher wird der Unterschied auf meiner alten Ubuntu Linux Box mit 1,3GHz Rechner mit 512MB Ram. Eclipse braucht hier geschlagene 17 Minuten für die Tests. Auf der Kommandozeile hingegen konnte der Test in knapp einer Minute abgeschlossen werden. Solch einem starken Unterschied muss ich allerdings noch auf den Grund gehen! Aber dazu später mehr.

Mit Freude starte ich meine Unit Tests nun regelmäßig auf der Kommandozeile, und kann nebenbei weiter entwickeln, da Eclipse von dieser Last befreit ist.

Ergo: Es lohnt sich, neugierig zu sein.