Datenstruktur als Hashes

Beim Programmieren kommen häufig Datenstrukturen in Form eines Hashes zum Einsatz, wie etwa assoziative Arrays [7]. Graphviz bildet solche Strukturen ohne komplexe Verrenkungen ab, wenn Sie die richtige Syntax verwenden. So legt die Zeile 2 von Listing 4 fest, dass Sie einen gerichteten Graphen generieren möchten – der Parameter LR bestimmt dabei die Richtung von links nach rechts.

Listing 4

digraph G {
rankdir=LR;
node [shape=record, width=0.1, height=0.1];
knoten0 [label = "<f0> | <f1> | <f2>", height=1.5];
node [width=1.5];
knoten1 [label = "{<n> n14 | 719 | <p>}"];
knoten2 [label = "{<n> k71 | 216 | <p>}"];
knoten3 [label = "{<n> n39 | 771 | <p>}"];
knoten4 [label = "{<n> k56 | 250 | <p>}"];
knoten5 [label = "{<n> a34 | 125 | <p>}"];
knoten0:f0 -> knoten1:n;
knoten1:p -> knoten2:n;
knoten0:f1 -> knoten3:n;
knoten0:f2 -> knoten4:n;
knoten4:p -> knoten5:n;
}

Die Zeilen 5 bis 11 definieren den Inhalt des Knotens als zusätzliche Struktur und greifen später auf die einzelnen Elemente über deren Namen zu. Dabei hat knoten0 (Zeile 5) die drei Elemente f0, f1 und f2, während knoten1 bis knoten5 (Zeile 7 bis 11) jeweils über die beiden Elemente n und p verfügen. Das mittlere Element hat keinen Bezeichner, sondern nur den angegebenen Wert. Das Verlinken der Knoten erfolgt in den Zeilen 13 bis 17, den Rest übernimmt Graphviz (Abbildung 4).

Abbildung 4: Wer sich beim Programmieren die Zusammenhänge von Hash-Tabellen klarmachen möchte, dem hilft Graphviz mit den entsprechenden Funktionen.

Abhängigkeiten

Ein anderes Beispiel stammt direkt aus dem "Motorraum" eines Linux-Systems: Mit dem Programm Debtree [8] erkunden Sie die Abhängigkeiten zwischen Paketen auf einem Debian-basierten System. Dazu erwartet es als Parameter den Namen eines oder mehrerer Pakete – der Einfachheit halber verwenden wir im Beispiel lediglich sqlite3 für die Datenbank SQLite3 [9].

Das Programm liefert das Ergebnis im Dot-Format. Der Aufruf aus Listing 5 erzeugt auf der Kommandozeile die angesprochene Liste und leitet das Ergebnis in die Datei sqlite3.dot um (Abbildung 5). Daraus generieren Sie mit Dot eine Bilddatei (Abbildung 6).

Listing 5

$ debtree sqlite3 > sqlite3.dot
$ dot -Tpng sqlite3.dot > sqlite3.png
Abbildung 5: Die Dot-Beschreibung zu den Abhängigkeiten des Pakets sqlite3 auf einem Debian-basierten System.
Abbildung 6: Mit Debtree und Graphviz sehen Sie auf einen Blick, was für einen Rattenschwanz an Programmen eine Installation nach sich zöge.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Graphviz berechnet flexibel Graphen
    Statt sich über das Layout einer Grafik zu verkünsteln, konzentrieren Sie sich mit Graphviz ganz auf die Inhalte und überlassen der Software das Design.
  • Aufpoliert
    Das Programm Graphviz hilft beim Erstellen von Grafiken. Den letzten Schliff verleihen Sie den Ergebnissen aber am besten mittels LaTeX.
  • Diagramme erstellen mit Yed
    Mit Yed meistern Sie spielend selbst komplexe Flussdiagramme und Objektbäume. Dank intelligenter Ansichten und Hilfsfunktionen behalten Sie immer den Überblick.
  • GraphDB sucht Freund des Freundes

    Wozu braucht man eine Graphdatenbank? Daniel Kirstenpfad von der Sones GmbH erläuterte das in seinem Linuxtag-Vortrag anhand der hauseigenen Software.
  • Tote Links finden
    Jeder komplexere Internet-Auftritt bringt im Verlauf seiner Existenz zunehmend tote Links hervor. Mit Linkchecker spüren Sie Verweise ins Nichts ohne große Umstände auf.
Kommentare

Infos zur Publikation

LU 06/2015: Shell-Tools

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Grammatikprüfung in LibreOffice nachrüsten
Grammatikprüfung in LibreOffice nachrüsten
Tim Schürmann, 24.04.2015 19:36, 0 Kommentare

LibreOffice kommt zwar mit einer deutschen Rechtschreibprüfung und einem guten Thesaurus, eine Grammatikprüfung fehlt jedoch. In ältere 32-Bit-Versionen ...

Aktuelle Fragen

Konsole / Terminal in Linux Mint 17.1 deutsch
Dirk Resag, 09.05.2015 23:39, 12 Antworten
Hallo an die Community, ich habe vor kurzem ein älteres Notebook, Amilo A1650G, 1GB Arbeitsspe...
Admin Probleme mit Q4os
Thomas Weiss, 30.03.2015 20:27, 6 Antworten
Hallo Leute, ich habe zwei Fragen zu Q4os. Die Installation auf meinem Dell Latitude D600 verl...
eeepc 1005HA externer sound Ausgang geht nicht
Dieter Drewanz, 18.03.2015 15:00, 1 Antworten
Hallo LC, nach dem Update () funktioniert unter KDE der externe Soundausgang an der Klinkenbuc...
AceCad DigiMemo A 402
Dr. Ulrich Andree, 15.03.2015 17:38, 2 Antworten
Moin zusammen, ich habe mir den elektronischen Notizblock "AceCad DigiMemo A 402" zugelegt und m...
Start-Job behindert Bootvorgang, Suse 13.2, KDE,
Wimpy *, 20.02.2015 10:32, 4 Antworten
Beim Bootvorgang ist ein Timeout von 1 Min 30 Sec. weil eine Partition sdb1 gesucht und nicht gef...