Diagramme generieren mit Graphviz

Posted on August 19th, 2009 in Konsole, Programme, Programmierung, Ubuntu | 8 Comments »

Nennt mich Nerd, aber ich erfreue mich an automatisch generierten Grafiken wie Diagrammen aus Datenmengen. Ein Tool das genau zu diesen Zweck verwendet werden kann ist Graphviz, damit lassen sich schnell und einfach Diagramme erstellen. Strukturdiagramme, Pfeildiagramme, automatisch erzeugte Diagramme und aufwändig manuell gestaltete Diagramme. Bevor eine Grafik erstellt werden kann wird eine Definitionsdatei erstellt in der Beschreibungssprache DOT.

Im ersten Beispiel soll eine Grafik erzeugt werden, die von “Linux” Verbindungen zu “Debian”, “Gentoo” und “Ubuntu” zeigt.

/* linux_family_1.dot */
digraph G {
    Linux -> Debian
    Linux -> Gentoo
    Linux -> Ubuntu
}

Mit dem Kommandozeilenbefehl dot wird nun der Quelltext zu einer Grafik (GIF, PNG, SVG oder PostScript) verarbeitet. In unseren Beispiel wollen wir eine PNG Datei aus dem DOT Quelltext erzeugen.

dot -Tpng linux_family_1.dot > linux_family_1.png

Read the rest of this entry »

Suchen und finden mit Vim

Posted on June 29th, 2009 in Programme, Programmierung, Ubuntu | 1 Comment »

vim-logo In einer Datei suchen

Eine Datei wird mit dem Schrägstrich / im Kommandomodus ESC durchsucht. Natürlich kann hier auch regular expression angewendet werden:

/^require

Mit n gelangt man zum nächsten Treffer. Um auf den Treffer davor zu kommen drückt man N.

Auf einer Zeile suchen

Beim Navigieren in einer langen Zeile ist f sehr hilfreich. So springt der Cursor bei f > auf die erste Übereinstimmung, mit dem Zeichen >. Ein F > sucht von der aktuellen Cursor Position von rechts nach links weiter. Um zum nächsten Treffer zu gelangen reicht ein ;.

In mehreren Dateien suchen

Dateien können mit grep durchsucht werden:

:grep require *.rb

Read the rest of this entry »

XDG Base Directory Specification

Posted on June 18th, 2009 in Gnome, KDE, Programmierung, Ubuntu | 3 Comments »

freedesktop_icon_big.small
Jeder der sich schon etwas mit Linux beschäftigt hat, kennt die vielen versteckten Dateien in seinem Home-Verzeichnis. Die meisten Programme speichern ihre Konfigurationsdateien und Userdaten unter ~/.programmname/. Dies kann jedoch sehr schnell unübersichtlich werden. Wenn ich z.B auf meinem Rechner das Kommando

bernd@taylor:~$ ls -d .* | wc -l
88

ausführe, so kann man sehen, dass ich 88 versteckte Dateien/Ordner direkt in meinem Homeverzeichnis habe.

Um das ganze besser zu Strukturieren und um eine einheitliche Basis auf verschiedenen Arbeitsumgebungen (Gnome, KDE,..) zu haben, gibt es dazu eine Spezifikation des freedesktop.org Projekts, welches sich zum Ziel gesetzt hat, die Interoperabilität und die gemeinsame Basis von Arbeitsumgebungen für das X Window System zu verbessern. (Wikipedia-Artikel zu freedesktop.org: http://de.wikipedia.org/wiki/Freedesktop.org)

Die Spezifikation findet man unter: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html Darin wird definiert wo Userdaten, Cachedaten des Users und Konfigurationsdaten gespeichert werden sollen. Ebenfalls wird definiert in welcher Reihenfolge nach Daten- und Konfigurationsordnern gesucht werden soll.

Grundsätzlich sind folgende Speicherorte als Defaultwerte definiert:

  • $HOME/.local/share für alle Userdaten
  • $HOME/.config für alle Konfigurationsdaten

Es gibt einige Programme, welche sich an diese Spezifikation halten. Einige Programme legen jedoch alles (Daten und Konfigurationen) unter $HOME/.config ab. Doch leider schreiben die meisten Programme ihre Daten/Konfigurationen nur unter $HOME, und somit kommt es zu der Anfangs erwähnten unübersichtlichen Ordnerstruktur im Home-Verzeichnis.

Daher mein Appell an alle Entwickler sich an diese Spezifikation zu halten. All jene, welche selbst keine Software schreiben, könnten Bugreports oder Feature-Request bei den einzelnen Softwareprojekten eintragen um somit auf diesen Standard hinzuweisen.
Aber auch Canonical’s Design und Usability Team hat sich diesem Thema schon angenommen. Für Ubuntu 9.10 (Karmic Koala) gibt es die Initiative “One Hundred Paper Cuts“, welche “kleine” Usability-Probleme beheben soll. In einem Dokument im Ubuntu-Wiki wird das Thema “XDG folders” auch aufgeführt. Jetzt müssen sich nur mehr die Entwickler der einzelnen Softwareprojekte um dieses Thema kümmern.

Zuletzt habe ich noch einen Tipp für alle Python-Programmierer unter euch. Freedesktop.org stellt noch eine Python Library zur Verfügung, welche es erleichtert sich an die Standards zu halten. Die Library findet man unter: http://freedesktop.org/wiki/Software/pyxdg.