Category Archives: software

It’s never to late for git.

If not already done, every software developer must try GIT – the fast, distributed version control system. It’s such a nice and useful tool. Once every week I find a new little nice feature.

The last month I used the git-client together with a svn-remote repository and I will never use the svn client again. It is so handy to have the full history of the repository on my notebook.  I can commit my changes every time to my local repository and merging/branching is just fun.  I’m so much faster …

Here my path to git

Here my favorite git client in action (the command line client 😉 :

git command line

There are plugins for eclise, idea, windows, mac… So give it a try and have fun!

And if you want to have the little nice prompt add the following lines to your .bashrc:

...
#-----------------------------------
# git in prompt
#-----------------------------------
        RED="\[\033[0;31m\]"
     YELLOW="\[\033[0;33m\]"
      GREEN="\[\033[0;32m\]"
       BLUE="\[\033[0;34m\]"
  LIGHT_RED="\[\033[1;31m\]"
LIGHT_GREEN="\[\033[1;32m\]"
      WHITE="\[\033[1;37m\]"
 LIGHT_GRAY="\[\033[0;37m\]"
 COLOR_NONE="\[\e[0m\]"
 
function parse_git_branch {
        git rev-parse --git-dir &> /dev/null
        git_status="$(git status 2> /dev/null)"
        branch_pattern="^# On branch ([^${IFS}]*)"
        remote_pattern="# Your branch is (.*) of"
        diverge_pattern="# Your branch and (.*) have diverged"
 
        if [[ ! ${git_status} =~ "working directory clean" ]]; then
                state="${RED}?"
        else
                state="${GREEN}?"
        fi
 
        # add an else if or two here if you want to get more specific
        if [[ ${git_status} =~ ${remote_pattern} ]]; then
                if [[ ${BASH_REMATCH[1]} == "ahead" ]]; then
                        remote="${YELLOW}?"
                else
                        remote="${YELLOW}?"
                fi
        fi
 
        if [[ ${git_status} =~ ${diverge_pattern} ]]; then
                remote="${YELLOW}?"
        fi
 
        if [[ ${git_status} =~ ${branch_pattern} ]]; then
                branch=${BASH_REMATCH[1]}
                echo " (${branch})${remote}${state}"
        fi
}
function prompt_func() {
        previous_return_value=$?;
        prompt="${GREEN}${USER:-$(type whoami >/dev/null && whoami)}@$(type uname >/dev/null && uname -n) ${BLUE}[\w${GREEN}$(parse_git_branch)${BLUE}]${COLOR_NONE} "
        if test $previous_return_value -eq 0
        then
                # PS1="${prompt}? "
                PS1="${prompt} \\$ "
        else
                #PS1="${prompt}${RED}?${COLOR_NONE}"
                PS1="${prompt}${RED}\\$ ${COLOR_NONE}"
        fi
}
 
PROMPT_COMMAND=prompt_func

I found this script at github and changed it a little bit. Thx to trapni.

The Clean Coder

Habe gestern Abend “The Clean Coder” von Robert C. Martin (Uncle Bob) fertig gelesen. Ich wäre so froh gewesen, wenn ich dieses Buch als Berufseinsteiger gelesen hätte. Es hätte mich so manche Fettnäpfchen vermeiden lassen.

Spannend zu lesen war seine Meinung über den “Flow”. Dieser Zustand beim Programmieren, oder Arbeiten allgemein, wo man die Zeit vergisst und einem schier alles gelingt. Uncle Bob findet diesen Zustand eher hinderlich, weil man den Blick für das Grosse verliert. Ich denke es hängt ein wenig vom Arbeitsstil ab. Ich habe immer zu Beginn mein Notizbuch vor mir liegen, wo ich den grossen Kontext aufzeichne. Manchmal komme ich dann schon in Flow während ich beim dem Design bin – also einem relativ hohen Abstraktionsniveau. Trotzdem hat mich das Buch etwas kritischer gegenüber dem Flow werden lassen.

Einen völlig anderen Blickwinkel auf den Flow hat z.B.  Joel Spolsky (bekannt von dem Blog “Joel on Software“).  Er erzählt in einem Interview, wie wichtig er den Flow findet und das er die Büros sogar so gestaltet, das man sich richtig gut in die Arbeit vertiefen kann.

Es gibt aber in dem Buch noch sehr viele andere Perlen und Denkanstösse zu finden. Lesen!

 

go lang

Yesterday I decided to learn a new programming language. My choice was the programming language “go“. The reason is the announcement that this language should be included in the gcc. So I will report the next time a little bit about my experiences.

The installation was completed thanks to a good description in 15 minutes. One problem I had when compiling. You have the locale set to “en_US” during the compilation:

$ cd $GOROOT/src
$ LANG=en_US ./all.bash

5 minutes later, the “hello world” ran.

In the directory $GOROOT/misc/kate,  a file go.xml can be found for the syntax highlighting in kate. This file must be copied into the directory ~/.kde4/share/apps/katepart/syntax/.

Gesetz von Demeter, Unit Tests und der zweite Programmierer

In meinem letzten Post habe ich beschrieben, das Delegation für den Benutzer einer Klasse angenehm ist und das wir dies auch im realen Leben schätzen. Heute möchte ich kurz beschreiben wie sich das Einhalten des Gesetzes von Demeter auf das Schreiben von Unit-Tests und das Benutzen meiner Implementierungen auswirkt. Dazu habe ich das Modell um Implementierungen erweitert:

lod overview 1

Continue reading

Netbeans, Ivy und Spring 3.0.0M4

Ich programmiere gerade eine kleine Web-Applikation und möchte dazu die neuen REST-Features vom Spring-Framework benutzen. Bis gestern habe ich mir dazu in Netbeans ein Webprojekt gebaut und dann ganz artig alle notwendigen Bibos von Hand dem Projekt hinzugefügt. Gestern wurde nun der Milestone 4 von Spring 3.0.0 veröffentlicht und ich wollte mir nicht noch einmal die Arbeit machen.
Continue reading

Upgrade Debian Etch zu Debian Lenny mit Virtualmin

Letztes Wochenende habe ich nun endlich meinen Hetzner-Server von Debian 4 auf Debian 5 umgestellt. Zur Administration der Domains benutze ich Virtualmin und dies sollte natürlich dann auch noch laufen. Eine Anleitung war bei www.virtualmin.com zu finden. Allerdings stimmte da die Reihenfolge in welcher man die Pakete installieren sollte noch nicht ganz. Nachdem ich einen Bug bei virtualmin.com aufgemacht hatte, war das Problem aber zusammen mit den Jungs von virtualmin.com (Jamie Cameron und Joe Cooper) schnell gelöst. Wirklich schneller und kompetenter Support – Spitzenklasse!

Nach dem Upgrade konnte ich mich dann aber nicht via POP3 auf dem Mail-Server einloggen. Ich musste dazu noch die Konfigurationsdatei (/etc/default/saslauthd) von saslauthd anpassen:

Die Zeile

START=no

auf

START=yes

ändern und den richten Pfad eintragen. Von:

OPTIONS="-c -m /var/run/saslauthd"

auf:

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

Dann die Services nochmal neu starten

# /etc/init.d/saslauthd restart
# /etc/init.d/postfix restart

Und schon funktionierte die Anmeldung auf dem POP3 wieder.

Künstler und Softwareentwicklung – Teil 2

Nun, Künstler und Auftragsarbeiten ist so eine Sache… Aber nicht nur der Punkt war an meinem letzten Blog-Eintrag ein wenig “schräg”.  🙂

Unter der Annahme das der Auftraggeber weiss was er möchte, geht es eigentlich bei der Anforderungsanalyse darum, dass der Auftragnehmer versteht was der Kunde eigentlich möchte. D.h. der Künstler – um beim Beispiel zu bleiben – muss die grobe Beschreibung lesen und die richtigen Fragen stellen. Er muss dem Bildliebhaber z.B. fragen: “Ist es okay, wenn das Bild kubistisch ist?”. Wenn das nicht klar ist, dann muss man sich darüber unterhalten…

Ein einfaches PDF mit Java erzeugen (iText vs. JasperReports vs. Birt)

Derzeit arbeite ich u.a. daran ein PDF-Dokument mit Java zu erzeugen. Es ist ein einfacher Brief mit einer Anschrift, Ort, Datum, Betreff und dem Briefinhalt. Ein paar Sachen sollen dynamisch eingefügt werden. Es ist also eine recht einfache Sache. Da im Projekt schon iText im Einsatz ist, habe ich damit angefangen. Mit der Hilfe des Buches IText in Action” von Bruno Lowagie – und insbesondere den Code-Beispielen – hatte ich innerhalb eines Tages die Aufgabe gelöst. Jar-Files in den Classpath und ca. 100 Zeilen Java-Code (kann ihn leider hier aus rechtlichen Gründen nicht zeigen) und die Sache war geschaft. Ich habe mit ColumnText die Texte absolut positioniert.

Nun hat aber ein Kollege gemeint, dass es ja sehr unschön sei, dass die Layoutinformation im Java-Source vergraben sei. Stimmt. Innerhalb des Java-Codes steht nun wo welche Information auf dem Brief stehen soll. Soll das Layout geändert werden, dann muss auch mein Code geändert werden.

Naja, also mal schnell umgeschaut und die zwei Platzhirsche im Bereich Java-Reporting nämlich JasperReports und Birt angeschaut. Wie schon des öfteren geschrieben wird bei uns sehr viel mit Eclipse gemacht und deshalb habe ich als erstes mal Birt angeschaut. Nach einem halben Tag war ich noch nirgends, insbesondere war mir nicht vollständig klar, wie die Laufzeitumgebung auf dem Server aussieht und was ich alles deployen muss. Also habe ich mich an JasperReports gesetzt und siehe da innerhalb von zwei Stunden mit 10 Zeilen Code und einem Report mit IReport erstellt, war das erste PDF gebaut. Einfach die jar-Files von JasperReports mit auf dem Server deployen – fertig. Die mitgelieferten Beispiele in Form von Reports und Java-Source sind ein guter Einstieg.

Inzwischen sind auch die Briefe komplexer geworden und ich war froh nicht mehr alles per Hand mit iText ausprogrammieren zu müssen.  Alles in Allem ist JasperReports eine echte Empfehlung.

Nokia und Trolltech

das grosse Unternehmen Opensource-Firmen kaufen ist in Mode. Erst kauft SUN MySQL und nun möchte Nokia gern Trolltech haben. Den kauf von SUN finde ich gut, denn SUN hat sich zu Open Source gekannt und bietet Java nun auch mit Open Source Lizenzen an. Mein neues Nokia 6110 (habe ich seit letzter Woche) kommt aber nur mir M$-Software zum Synchronisieren daher…

Nokia könnte aus Qt und KDE eine grosse Sache machen. Das würde mich sehr freuen. Ich bin sehr gespannt wie sich das entwickelt. Die Aussicht das ich mein Handy direkt mit KDE PIM synchronisiere gefällt mir. 🙂

Gentoo braucht wieder etwas Schwung

Das auf der Frontseite von Gentoo schon seit länger Zeit kein Update mehr erfolgte hat wohl jeder der Gentoo benutzt schon bemerkt. Nun hat sich Daniel Robbins mit einem Vorschlag gemeldet die Situation wieder zu verbessern.

Ich kann nur hoffen, dass die Entscheidungsträger dieses Angebot annehmen oder von ihrer Seite wieder etwas mehr Schwung in Gentoo bringen. Meiner Meinung nach ist dies eine sehr gute Linux-Distribution und ich möchte sie auch weiterhin benutzen…

KDE 4.0

Heute ist es nun endlich so weit. KDE 4.0 wird veröffentlicht. Auch wenn es sicherlich noch ein Weilchen dauern wird bis diese Version auf meinem Rechner landet, so freue ich mich doch riessig darauf und bin sehr gespannt, wann es in Gentoo als stable markiert ist, damit ich es installieren kann. Ich arbeite jeden Tag mit KDE und bin sehr zufrieden damit.

Virtualmin

Vor einigen Jahren hat mir mal ein Arbeitskollege webmin in die Hand gedrückt, als ich ihn gefragt habe, wie er seine Linux-Maschine administriert. Wie ich gestern geschrieben habe, bin ich auf einen neuen Server umgestiegen. Diesen Server will ich mir mit ein paar Leuten teilen.

Da ich nicht zu viel Zeit mit der Administration der Maschine verbringen möchte, habe ich nach etwas ähnlichem Ausschau gehalten wie webmin einfach für die Verwaltung von virtuellen Servern auf einer Maschine. Confixx kenne ich schon und so habe ich mir virtualmin als Alternative angeschaut. Es gibt eine GPL-Variante von virtualmin, die ich mir zu Hause auf einen Testrechner installiert habe. Einfach super. Wenn man ein wenig mit der Administration von Linux vertraut ist, dann kann man innerhalb von Minuten die Sachen (virtuelle Server, Datenbanken, Email-konten, … und und und) mit einer Browseroberfläche einrichten. Die Browseroberfläche war mir wichtig, da auch Leute auf der Maschine arbeiten werden, die sich nicht so gut mit Linux auskennen und die so trotzdem ihre Sachen administrieren können. Ich wollte einfach nicht bei jedem mail-alias an die Maschine ran müssen.

Für den Server habe ich mich für eine bezahlte Variante der Software entschieden. So kann ich den Entwicklern ein Danke für die gute Software sagen (ist wirklich nicht teuer), bekomme Support mit 24 Stunden Reaktionszeit und noch ein paar gute Features dazu, die in der GPL-Variante nicht enthalten sind.

Innerhalb von 20min war der Server bei Hetzner aufgesetzt (erster Eindruck: sehr gut.) und nach weiteren 10min die wichtigste Software installiert. Das Migrieren meines Blogs ging auch sehr schnell und unkompliziert.

Ich kann Virtualmin nur empfehlen. Es funktioniert reibungslos und bietet ein gutes Interface zur Linux-Büchse.