Debian-Pakete zu erstellen, ist ein Prozess, der viel Wissen voraussetzt. Es geht dabei auch darum, einen hervorragenden Ruf in Bezug auf Qualität der Software und des Paketformats der Linux-Distribution aufrecht zu erhalten. In unserem Buch zu Debian-Paketmanagement wurde sicher schon deutlich, wie vielschichtig das Thema Paketverwaltung ist.
Für das Newsportal Linuxhint entstand jetzt ein Beitrag, der den Ablauf des Bauens von Paketen verständlicher macht. Der Beitrag ist keine vollständige Anleitung, erleichtert aber den Einstieg und verhilft Ihnen zu ersten Erfolgserlebnissen. Für Verbesserungen dazu bin ich dankbar. Diese können direkt an das GitHub-Archiv erfolgen.
Posts mit dem Label Linux werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Linux werden angezeigt. Alle Posts anzeigen
Freitag, 10. November 2017
Mittwoch, 11. Oktober 2017
Noch mehr Artikel auf StackAbuse
In den letzten Tagen sind zwei weitere Artikel von mir auf StackAbuse erschienen. Im ersten geht es um symbolische Links -- wie man dieser erstellt und validiert. Dazu gehört auch die Vorstellung des Werkzeugs symlinks.
Der zweite Beitrag widmet sich dem Thema des Findens bestimmter Inhalte in Textdateien, komprimierten Dateien sowie Archiven. Ebenfalls dürfen Rechenblätter von Tabellenkalkulationen und PDF-Dokumente nicht zu kurz kommen. Behilflich sind hierbei Werkzeuge wie zgrep, loook und pdfgrep.
Hier geht es zu den beiden (englischsprachigen) Artikeln:
Der zweite Beitrag widmet sich dem Thema des Findens bestimmter Inhalte in Textdateien, komprimierten Dateien sowie Archiven. Ebenfalls dürfen Rechenblätter von Tabellenkalkulationen und PDF-Dokumente nicht zu kurz kommen. Behilflich sind hierbei Werkzeuge wie zgrep, loook und pdfgrep.
![]() |
| Suche mittels loook |
Montag, 18. September 2017
Die Ausgabe von Asciidoc nach PDF anpassen
Asciidoc ist eine textbasierte Sprache (Markup Language). Diese vereinfacht es erheblich, (Text)Dokumente zu Erstellen, zu Pflegen und deren Änderungen in Revisionskontrollsystemen wie Git nachzuverfolgen. Aufgrund der Kompaktheit und Verständlichkeit der Sprache hat Asciidoc den Prozess zur gemeinsamen Erstellung und Pflege von Büchern, Dokumentation und Schulungsmaterial erheblich erleichtert.
Bei Asciidoc handelt es sich um Plaintext mit speziellen Markierungen. Erst durch den expliziten Aufruf eines Übersetzerprogramms wandeln Sie diesen Ursprungstext über mehrere Zwischenstufen in das gewünschte Zielformat um, bspw. zu Postscript, PDF, HTML, Epub und Handbuchseiten (Manpages). Im UNIX/Linux-Werkzeugkasten finden Sie dafür bspw. Asciidoc, a2x, Asciidoctor und Asciidoctor-pdf.
Der Weg von Asciidoc nach PDF funktioniert entweder über Dblatex oder über den Apache Formatting Objects Processor -- kurz FOP. Der erste Weg setzt auf die Werkzeugkette aus DocBook, xsltproc und Dblatex, der zweite nutzt statt Dblatex die auf Java basierende Software FOP. Beide Wege werden durch das Programm a2x gekapselt, d.h. mit einem einzigen Aufruf angestoßen. Für Dblatex sieht der Aufruf wie folgt aus:
a2x -f pdf document.adoc
Der Schalter -f pdf veranlasst a2x, das Backend Dblatex zu benutzen. Für die Verwendung von FOP nutzen Sie stattdessen diesen Aufruf:
a2x --fop document.adoc
Zur Demonstration nutzen wir dieses Asciidoc-Dokument, in den beiden vorherigen Aufrufen schlicht als document.adoc bezeichnet. Der darin genutzte Text stammt nicht vom Autor selbst, sondern wurde aus dem Wikipedia-Artikel zu Kapstadt entnommen und etwas bearbeitet.
:author: Frank Hofmann
= Visiting South Africa =
== Cape Town ==
Cape Town is a port city on South Africa’s southwest coast, on a peninsula beneath the imposing Table Mountain. Slowly rotating cable cars climb to the mountain’s flat top, from which there are sweeping views of the city, the busy harbor and boats heading for Robben Island, the notorious prison that once held Nelson Mandela, which is now a living museum.
image::capetown.jpg[width=200]
Die erzeugten Ergebnisse in der Ausgabe fallen durch die verwendeten Stilvorlagen recht unterschiedlich aus. Während der Weg über Dblatex sowohl ein Titelblatt, die Revisionshistorie des Dokuments sowie ein Inhaltsverzeichnis produziert, ist die Ausgabe via FOP deutlich kompakter.
Dblatex bietet eine Reihe von Schaltern, um die Elemente der Ausgabe zu verändern. Möglich sind zum Beispiel diese hier:
Im Aufruf sieht das dann wie folgt aus, um weder eine Revisionshistorie zu erhalten und lediglich eine Liste der Tabellen:
a2x -f pdf --dblatex-opts "-P latex.output.revhistory=0 -P doc.lot.show=table" document.adoc
Am besten legen Sie das in einem Shellskript ab. Das erleichtert nicht nur das Experimentieren mit den Parametern, sondern auch die spätere Automatisierung im Übersetzungsprozess.
Das obige Skript erwartet einen zusätzlichen Parameter im Aufruf. Dieser beinhaltet den Namen ihres Dokuments, welches Sie nach PDF übersetzen möchten. Benennen Sie ihr Skript convert2pdf.sh und übersetzen ihr Dokument namens document.adoc, sieht der Aufruf wie folgt aus:
./convert2pdf.sh document.adoc
Das fertige PDF-Dokument liegt dann im lokalen Verzeichnis vor.
Bei Asciidoc handelt es sich um Plaintext mit speziellen Markierungen. Erst durch den expliziten Aufruf eines Übersetzerprogramms wandeln Sie diesen Ursprungstext über mehrere Zwischenstufen in das gewünschte Zielformat um, bspw. zu Postscript, PDF, HTML, Epub und Handbuchseiten (Manpages). Im UNIX/Linux-Werkzeugkasten finden Sie dafür bspw. Asciidoc, a2x, Asciidoctor und Asciidoctor-pdf.
Der Weg von Asciidoc nach PDF funktioniert entweder über Dblatex oder über den Apache Formatting Objects Processor -- kurz FOP. Der erste Weg setzt auf die Werkzeugkette aus DocBook, xsltproc und Dblatex, der zweite nutzt statt Dblatex die auf Java basierende Software FOP. Beide Wege werden durch das Programm a2x gekapselt, d.h. mit einem einzigen Aufruf angestoßen. Für Dblatex sieht der Aufruf wie folgt aus:
a2x -f pdf document.adoc
Der Schalter -f pdf veranlasst a2x, das Backend Dblatex zu benutzen. Für die Verwendung von FOP nutzen Sie stattdessen diesen Aufruf:
a2x --fop document.adoc
Zur Demonstration nutzen wir dieses Asciidoc-Dokument, in den beiden vorherigen Aufrufen schlicht als document.adoc bezeichnet. Der darin genutzte Text stammt nicht vom Autor selbst, sondern wurde aus dem Wikipedia-Artikel zu Kapstadt entnommen und etwas bearbeitet.
:author: Frank Hofmann
= Visiting South Africa =
== Cape Town ==
Cape Town is a port city on South Africa’s southwest coast, on a peninsula beneath the imposing Table Mountain. Slowly rotating cable cars climb to the mountain’s flat top, from which there are sweeping views of the city, the busy harbor and boats heading for Robben Island, the notorious prison that once held Nelson Mandela, which is now a living museum.
image::capetown.jpg[width=200]
Die erzeugten Ergebnisse in der Ausgabe fallen durch die verwendeten Stilvorlagen recht unterschiedlich aus. Während der Weg über Dblatex sowohl ein Titelblatt, die Revisionshistorie des Dokuments sowie ein Inhaltsverzeichnis produziert, ist die Ausgabe via FOP deutlich kompakter.
![]() |
| Das erzeugte PDF via Dblatex |
![]() |
| Das erzeugte PDF via FOP |
| Bedeutung | Parameter |
|---|---|
| kein Inhaltsverzeichnis | -P doc.toc.show=0 |
| nur Tabellenverzeichnis | -P doc.lot.show=table |
| nur Abbildungsverzeichnis | -P doc.lot.show=figure |
| Überschriftenebene | -P doc.section.depth=5 |
| keine Versionshistorie | -P latex.output.revhistory=0 |
| blau hinterlegte Links | -P latex.hyperparam=colorlinks,linkcolor=blue |
| als Encoding Latin1 nutzen | -P latex.encoding=latin1 |
| Papiergröße Letter | -P paper.type=letterpaper |
| Wasserzeichen einfügen | -P draft.watermark=1 |
| Schneidemarken einfügen | -P crop.marks=1 |
Im Aufruf sieht das dann wie folgt aus, um weder eine Revisionshistorie zu erhalten und lediglich eine Liste der Tabellen:
a2x -f pdf --dblatex-opts "-P latex.output.revhistory=0 -P doc.lot.show=table" document.adoc
Am besten legen Sie das in einem Shellskript ab. Das erleichtert nicht nur das Experimentieren mit den Parametern, sondern auch die spätere Automatisierung im Übersetzungsprozess.
![]() |
| Automatisierung als Shellskript |
./convert2pdf.sh document.adoc
Das fertige PDF-Dokument liegt dann im lokalen Verzeichnis vor.
Montag, 3. Juli 2017
Mageia Linux 6 RC mit Kindersicherung
Wie bereits berichtet, finalisieren derzeit die Entwickler von Mageia ihre nächste Veröffentlichung -- die Release 6. Nach den bisherigen Tests zur urteilen läuft das Gesamtsystem ausgesprochen stabil und ist tauglich für die angepeilte Gruppe der Ein- und Umsteiger (Endbenutzer). Es ist schnörkellos, einfach zu bedienen und übersichtlich.
Geeignet ist es nicht nur für Nutzer, die (noch) keine Technikfreaks oder Linux-Profis sind, aber mehr als nur die Auswahl von Ubuntu haben wollen und sich trotzdem nicht scheuen, zu verstehen, wie das alles funktioniert und zusammenhängt.
Bemerkenswert ist die integrierte Kindersicherung. Obwohl bereits in den vorherigen Veröffentlichungen enthalten, verfügt unseres Wissens nach keine andere Mainstream-Distribution über ein solches Feature.
Sie erreichen diese Einstellungsoption im Control Center unter den Netzwerkeinstellungen. Darüber legen Sie pro Benutzer fest, welche Programme und Dienste dieser verwenden und wie lange und innerhalb welcher Zeiten er bspw. im Internet surfen darf. Somit haben Sie ihren Nachwuchs und dessen Internetkonsum stets im Blick.
Geeignet ist es nicht nur für Nutzer, die (noch) keine Technikfreaks oder Linux-Profis sind, aber mehr als nur die Auswahl von Ubuntu haben wollen und sich trotzdem nicht scheuen, zu verstehen, wie das alles funktioniert und zusammenhängt.
![]() |
| Kindersicherung in Mageia 6 |
Bemerkenswert ist die integrierte Kindersicherung. Obwohl bereits in den vorherigen Veröffentlichungen enthalten, verfügt unseres Wissens nach keine andere Mainstream-Distribution über ein solches Feature.
Sie erreichen diese Einstellungsoption im Control Center unter den Netzwerkeinstellungen. Darüber legen Sie pro Benutzer fest, welche Programme und Dienste dieser verwenden und wie lange und innerhalb welcher Zeiten er bspw. im Internet surfen darf. Somit haben Sie ihren Nachwuchs und dessen Internetkonsum stets im Blick.
Mittwoch, 28. Juni 2017
PDF-Dokumente auseinanderzupfen
Jeder von uns kennt das -- wir bekommen ein PDF-Dokument und benötigen nur eine bestimmte Seite daraus. Nachfolgend stehen zwei Möglichkeiten im Fokus, das Ziel ohne viel Tamtam zu realisieren.
Variante 1 ist Gimp. Öffnen Sie ihr PDF-Dokument mit dem Bildbearbeitungsprogramm, erhalten Sie ein Dialogfenster, aus welchem Sie die gewünschte Seite auswählen. Diese Seite speichern Sie dann über den Menüpunkt Exportieren als ... unter einem neuen Namen.
Variante 2 geht über das Werkzeug pdfseparate aus dem Paket poppler-utils. Mit dem Aufruf
pdfseparate document.pdf page-%d.pdf
auf der Kommandozeile zerlegen Sie das Originaldokument namens document.pdf in alle Einzelseiten. Jede Seite wird als PDF mit der entsprechenden Seitennummer gespeichert, so finden Sie bspw. die Seite 1 in page-1.pdf.
Benötigen Sie nur ausgewählte Seiten, kommen zwei Schalter ins Spiel. Über die beiden Schalter -f (für first) und -l (für last) grenzen Sie ein, welches die erste bzw. letzte extrahierte Seite werden soll. Hiermit erhalten Sie die nur die dritte bis fünfte Seite:
pdfseparate -f 3 -l 5 document.pdf page-%d.pdf
Variante 1 ist Gimp. Öffnen Sie ihr PDF-Dokument mit dem Bildbearbeitungsprogramm, erhalten Sie ein Dialogfenster, aus welchem Sie die gewünschte Seite auswählen. Diese Seite speichern Sie dann über den Menüpunkt Exportieren als ... unter einem neuen Namen.
![]() |
| Auswahl der einzelnen Seite in Gimp |
pdfseparate document.pdf page-%d.pdf
auf der Kommandozeile zerlegen Sie das Originaldokument namens document.pdf in alle Einzelseiten. Jede Seite wird als PDF mit der entsprechenden Seitennummer gespeichert, so finden Sie bspw. die Seite 1 in page-1.pdf.
Benötigen Sie nur ausgewählte Seiten, kommen zwei Schalter ins Spiel. Über die beiden Schalter -f (für first) und -l (für last) grenzen Sie ein, welches die erste bzw. letzte extrahierte Seite werden soll. Hiermit erhalten Sie die nur die dritte bis fünfte Seite:
pdfseparate -f 3 -l 5 document.pdf page-%d.pdf
Donnerstag, 8. Juni 2017
Mageia Linux 6 RC
![]() |
| Control Center im Mageia 6 (XFCE-Design) |
Dienstag, 30. Mai 2017
Cubietruck im Alltagsbetrieb
![]() |
| Cubieboard 3 (Cubietruck) im Test |
Inzwischen bekam das Board ein mattschwarzes Gehäuse, was es gegen Staub schützt und zudem auch leichter transportabel macht. Es bleibt darin genügend Platz für eine 2.5"-Festplatte, die das Leistungsspektrum des Cubietruck nochmal steigert.
![]() |
| Gehäuse für das Cubietruck |
![]() |
| Das Gehäuse mit den sauber ausgeführten Anschlüssen |
Sonntag, 28. Mai 2017
Analyse der Ausführungszeit eines Kommandos in der bash
Für diesen Anwendungsfall -- das Messen der Ausführungszeit eines Programms -- existiert das UNIX-Kommando time. Es ermittelt diese drei Werte:
Das Beispiel ermittelt alle Dateien, die dem Benutzer frank gehören. time rechnet aus, dass find dafür 3.6s benötigt.
Variante 2 nutzt stattdessen grep und cut:
In Variante 3 kommen grep und awk zum Einsatz:
Für Puristen ist die Variante 4 -- diese nutzt ausschließlich awk:
Das das auch mit einer Skriptsprache wie Perl geht, zeigt das Variante 5:
Analog erfolgt das auch für die Varianten 2 bis 5. Folgendes Ergebnis wird sichtbar:
- real: die gesamte, tatsächliche Ausführungszeit (elapsed real time)
- user: die Zeit, in der die CPU tatsächlich den (User-)Code des Programms ausführt (Total number of CPU-seconds that the process spent in user mode)
- sys: jene Zeit, in der die CPU mit Ausführung von Kernel-Code für das Programm beschäftigt ist (Total number of CPU-seconds that the process spent in kernel mode)
Beispiel 1
Um die Zeit zu ermitteln, rufen Sie time vor ihrem eigentlichen Kommando auf:$ time find . -user frank ... real 0m3.681s user 0m0.248s sys 0m0.916s $
Das Beispiel ermittelt alle Dateien, die dem Benutzer frank gehören. time rechnet aus, dass find dafür 3.6s benötigt.
Skripting in der Praxis
Spannender wird die Zeitmessung, wenn mehrere Kommandos zusammenspielen, bspw. in einem Shellskript. Nachfolgend geht es darum, die User ID und den dazugehörigen Namen des UNIX-Nutzers zu ermitteln, der ein Skript gerade aufruft. Variante 1 greift auf interne Variablen und das Kommando whoami zurück:#!/bin/bash userId=$UID userName=$(whoami) echo "the script runs as user $userName with UNIX id $userId"
Variante 2 nutzt stattdessen grep und cut:
#!/bin/bash userId=$UID userName=$(grep ":$UID:" /etc/passwd | cut -d: -f 1) echo "the script runs as user $userName with UNIX id $userId"
In Variante 3 kommen grep und awk zum Einsatz:
#!/bin/bash
userId=$UID
userName=$(grep ":$UID:" /etc/passwd | awk -F : '{ print $1 }')
echo "the script runs as user $userName with UNIX id $userId"
Für Puristen ist die Variante 4 -- diese nutzt ausschließlich awk:
#!/bin/bash
userId=$UID
userName=$(awk -F : '/:'$userId':/ { print $1 }' /etc/passwd)
echo "the script runs as user $userName with UNIX id $userId"
Das das auch mit einer Skriptsprache wie Perl geht, zeigt das Variante 5:
#!/usr/bin/perl -w
$username=$ENV{'LOGNAME'};
# read /etc/passwd
open(FH, "/etc/passwd") || die "Cannot open /etc/passwd: $!";
{
while(<FH>) {
# look for the user name
if (m/^${username}:/) {
@fields=split(/:/, $_);
# extract user id
$uid=$fields[2];
print "the script runs as user $username with UNIX id $uid\n";
}
}
}
close(FH);
Auswertung der Laufzeit
Nun wird es spannend, welche der fünf Varianten am flinkesten ist. Rufen Sie die Konstrukte alle einzeln auf, liefert time bei allen einen Wert von etwa 1s. Um die Unterschiede deutlicher sichtbar werden zu lassen, bauen wir eine Schleife drumherum und lassen das ganze 10000 Mal durchlaufen:#!/bin/bash
# define loops
loops=10000
time {
for((i=$loops; i>0; i--))
do
userId=$UID
userName=$(whoami)
echo "the script runs as user $userName with UNIX id $userId"
done
} | grep "real"
Analog erfolgt das auch für die Varianten 2 bis 5. Folgendes Ergebnis wird sichtbar:
| Variante | Ausführungszeit |
| Variante 1 mit whoami | 8.25s |
| Variante 2 mit grep und cut | 11.03s |
| Variante 3 mit grep und awk | 17.1s |
| Variante 4 nur mit awk | 13.9s |
| Variante 5 mit Perl | 15.22s |
Fazit
Eindeutiger Gewinner ist Variante 1, gefolgt Variante 2 und Variante 4. Es hilft also doch, bei der Programmierung stets die Laufzeit im Blick zu behalten.Links
- time im Ubuntu-Wiki
- Linux Analyse der Ausführungszeit mit time im Thomas-Krenn-Wiki
Samstag, 27. Mai 2017
Beweiszettel. Linux-Zertifizierungen kurz angerissen
![]() |
| Bücher zur Vorbereitung -- eine kleine Auswahl. |
Mit Linux nur zu arbeiten, ist das eine. Hingegen mehr davon zu verstehen und es auch produktiv nutzen zu können, das andere. Ein guter Weg, nachzuweisen, dass Sie mehr als nur der Oberflächenklicker sind, ist ein Zertifikat. Dieses steht dann für eine oder mehrere Prüfungen.
Grundsätzlich sortieren sich die Zertifizerungen in zwei Klassen ein -- distributionsübergreifend und distributionsspezifisch. Als Anbieter umfaßt das auf der einen Seite das Linux Professional Instititute (LPI), die Linux Foundation und die Computing Technology Industry Association (CompTIA). Auf der anderen Seite stehen die Hersteller bzw. Distributoren RedHat und SuSe.
Diese Prüfungen für Zertifikate werden derzeit angeboten:
| Form | Anbieter/Programm | Zertifikat (Auswahl) |
| distributionsübergreifend | LPI, Linux Foundation, CompTIA | |
| distributionsspezifisch | RedHat, SuSe |
Weitaus seltener unterstützt werden RHCE/RHCSA sowie die SUSE-Prüfungen, nicht zuletzt weil sie herstellerspezifisch sind.
Im Prinzip erst seit 2017 am deutschen Markt vertreten und daher noch nicht so bekannt in Deutschland sind die Abschlüsse der Linux Foundation. Neben einem ansehnlichen Angebotsumfang kann es mit zwei großen Namen auftrumpfen -- Linus Torvalds und Microsoft. CompTIA ist zwar ebenfalls schon lange in Deutschland vertreten, tritt aber weniger als Linux-Spezialist auf.
Labels:
CompTIA,
Linux,
Linux Foundation,
LPIC,
RCA,
RedHat,
RHCE,
RHCSA,
SCA,
SCE,
Suse,
Zertifizierung
Montag, 1. Mai 2017
Training Linux/Programmierung mit der bash in Hamburg 6.+7. Juni 2017
Diese bash -- immer muss ich da so viel eintippen! Wenn das nicht alles irgendwie einfacher gehen würde. Aber das geht tatsächlich und Sie können das auch erlernen. Aber es ist eine ganze Menge an Stoff.
Hier findet der nächste Kurs statt -- es gibt noch freie Plätze:
dama.go Hamburg, Süderstraße 77, 20097 Hamburg
Dienstag, den 6. und Mittwoch, den 7. Juni 2017
9h00-16h30
Kontakt und Anmeldung zum bash-Kurs:
Stefanie Johannsen Cömert
Telefon: (040) 254 133 950
Und das steht bisher als Themen auf dem Plan:
Die Schulung findet auf einem Debian GNU/Linux statt.
Hier findet der nächste Kurs statt -- es gibt noch freie Plätze:
dama.go Hamburg, Süderstraße 77, 20097 Hamburg
Dienstag, den 6. und Mittwoch, den 7. Juni 2017
9h00-16h30
Kontakt und Anmeldung zum bash-Kurs:
Stefanie Johannsen Cömert
Telefon: (040) 254 133 950
Und das steht bisher als Themen auf dem Plan:
- Die bash im Detail
- Die bash als Programmiersprache
- Praktische Shellskripte
- Interaktive Shellskripte
- Der Stromeditor sed
- Die Programmiersprache awk
Die Schulung findet auf einem Debian GNU/Linux statt.
Mittwoch, 11. Januar 2017
Auswertung mit NumPy, Pandas und Matplotlib
Die drei Python-Bibliotheken NumPy, Pandas und Matplotlib erlauben eine Datenauswertung mit graphischer Darstellung. Die Ausgabe der Wegstrecken für 2016 ergibt nachfolgende Grafik. Jeder enthaltene Staffelbalken repräsentiert dabei einen Monat.
Die Legende in obiger Abbildung wird automatisch erzeugt, ist hier aber noch nicht optimal. Gleiches gilt für die verwendeten Farben in der Darstellung. Ideal wäre, wenn jede Wegstrecke eine eigene, unverwechselbare Farbe hätte.
Zur Erzeugung der Grafik kommt zunächst dieser Aufruf zum Einsatz:
df = pd.DataFrame(distances, index=month,columns=pd.Index(travelDescription))
df.plot(kind='barh', stacked=True)
df ist ein DataFrame aus der Pandas-Bibliothek. Dieser wird gefüttert mit den Distanzen, den Zeitintervallen und den Beschreibungen der jeweiligen Wegstrecke. plot() berechnet daraus die horizontalen Balken, der Parameter stacked=True sorgt für die Staffelung.
Die Methode plot() kennt einen weiteren Parameter namens colormap, mit der Sie die Farbauswahl steuern. Zur Auswahl stehen über ein dutzend Farbsets, bspw. Blues, Pastel1, Pastel2, spectral oder auch autumn. Je nach Farbset ist es ein Übergang zwischen zwei einzelnen Farben oder ein mehrstufiges Spektrum. Eine genaue Übersicht liefert Ihnen dazu das SciPy Cookbook. Die nachfolgende Abbildung benutzt das Farbset Set1 und macht die Darstellung schon aussagekräftiger. Folgender Aufruf wird dazu genutzt:
df.plot(kind='barh', stacked=True, colormap='Set1')
![]() |
| Darstellung als Staffelbalken mit Legende |
Die Legende in obiger Abbildung wird automatisch erzeugt, ist hier aber noch nicht optimal. Gleiches gilt für die verwendeten Farben in der Darstellung. Ideal wäre, wenn jede Wegstrecke eine eigene, unverwechselbare Farbe hätte.
Zur Erzeugung der Grafik kommt zunächst dieser Aufruf zum Einsatz:
df = pd.DataFrame(distances, index=month,columns=pd.Index(travelDescription))
df.plot(kind='barh', stacked=True)
df ist ein DataFrame aus der Pandas-Bibliothek. Dieser wird gefüttert mit den Distanzen, den Zeitintervallen und den Beschreibungen der jeweiligen Wegstrecke. plot() berechnet daraus die horizontalen Balken, der Parameter stacked=True sorgt für die Staffelung.
Die Methode plot() kennt einen weiteren Parameter namens colormap, mit der Sie die Farbauswahl steuern. Zur Auswahl stehen über ein dutzend Farbsets, bspw. Blues, Pastel1, Pastel2, spectral oder auch autumn. Je nach Farbset ist es ein Übergang zwischen zwei einzelnen Farben oder ein mehrstufiges Spektrum. Eine genaue Übersicht liefert Ihnen dazu das SciPy Cookbook. Die nachfolgende Abbildung benutzt das Farbset Set1 und macht die Darstellung schon aussagekräftiger. Folgender Aufruf wird dazu genutzt:
df.plot(kind='barh', stacked=True, colormap='Set1')
![]() |
| Darstellung als Staffelbalken mit Farbset Set1 und Legende |
Freitag, 30. Dezember 2016
Veröffentlichungen 2016
![]() |
| Einige der LinuxUser-Ausgaben mit den Veröffentlichungen |
Das Jahr 2016 war thematisch vielfältig, interessant und arbeitsintensiv. Spaß gemacht hat es in jedem Fall. Veröffentlicht wurden diese Beiträge:
- LinuxUser 01/2016 - Expressversand. Die Reaktionszeit von Webseiten optimieren (Teil 3 von 3) (Frank Hofmann und Gerold Rupprecht)
Durchdachte Einstellungen beim Webserver und kleine Tricks beim Optimieren machen lahmen Webseiten Beine. - LinuxUser 03/2016 - Nachgeladen. Firewall-Filterregeln automatisch wiederherstellen (Frank Hofmann)
Dem Linux-Paketfilter Iptables fehlt eine einfache Möglichkeit, die Filterregeln nach einem Systemneustart automatisch zu laden. Die lässt sich aber durchaus nachrüsten - sogar auf mehreren Wegen. - LinuxUser 04/2016 - Durchgeschlängelt. Pyspread: Tabellenkalkulation mit Python-Anbindung (Frank Hofmann)
Mit Features überladene Tabellenkalkulationen gibt es zur Genüge. Dass eine ausgefeilte Spreadsheet-Anwendung auch einsteigertauglich sein kann, demonstriert das auf Python basierende Pyspread. - Raspberry Pi Geek 04/2016 - Zwergenaufstand. Das Cubietruck im Alltagstest. (Frank Hofmann)
Kleine Boards und wenig Leistung – das war einmal: Mit dem Cubietruck steigen Sie in eine neue Leistungsklasse auf. - LinuxUser 05/2016 und Raspberry Pi Geek 03/2016 - Sieben Brücken. Alltagsaufgaben mit Bordmitteln lösen (Frank Hofmann)
Computer wurden ursprünglich als Rechenmaschinen entwickelt. Am Beispiel eines Fahrtenbuchs zeigen wir, wie Sie mit Bordmitteln das Maschinchen zu Ihren Gunsten werkeln lassen. Dabei stellen wir Ihnen sieben Varianten der Problemlösung vor. - LinuxUser 06/2016 - Suche im Netz. Dynamisch vergebene IP-Adressen ermitteln (Frank Hofmann)
Welche IP-Adresse hat der Router, der Laptop, die Kaffeemaschine? Clevere Linux-Tools geben hier schnell Auskunft. - LinuxUser 07/2016 - Schlüsseldienst. PGP/GnuPG-Schlüsselringe sauber verwalten und handhaben (Frank Hofmann)
PGP/GnuPG wird immer populärer, nicht zuletzt dank NSA und Konsorten. Wir schauen hinter die Kulissen und zeigen, wie und womit Sie Ihre Schlüsselsammlung aktuell halten. - LinuxUser 09/2016 - Erbsenzählerei. Datenbestände auf Veränderungen oder Manipulationen prüfen (Frank Hofmann)
Ob Rsync, Integrit oder Aide - alle diese Werkzeuge beobachten den Verzeichnisbaum des Systems und schlagen Alarm, sobald sie dort unbefugte Veränderungen bemerken. - LinuxUser 10/2016 - Lagerhaltung. Praxisnahe Paketverwaltung unter Debian (Frank Hofmann)
Technologien wie Flatpak und Snap suggerieren, bisherige Paketverwaltungskonzepte hätten ausgedient. Ein Blick auf den aktuellen Stand der Softwareverwaltung unter Linux zeigt, dass dieser Eindruck täuscht. - LinuxUser 11/2016 - Punktgenau. Grafikbibliotheken in Python-Programmen (Frank Hofmann)
Häufig gelingt es erst mit einer geeigneten Visualisierung, komplexe Daten und deren Zusammenhänge anschaulich zu machen. Dabei greifen Ihnen Python und mächtige Bibliotheken wie Matplotlib, Bokeh und Pandas hilfreich unter die Arme. - LinuxUser 12/2016 - Im Gleichklang. Mit dem Versionskontrollsystem Fossil Quellcode verwalten (Frank Hofmann)
Fossil vereint Versionskontrolle, Wiki und Bugtracker zum Rundum-Wohlfühl-Paket für Software-Entwickler.
Hinweis: alle o.g. Beiträge sind in der gedruckten Version verfügbar. Ein Teil der Beiträge sind derzeit online nur kostenpflichtig vollständig zugänglich.
Darüberhinaus haben Axel Beckert und ich unser Buch Debian-Paketmanagement weiter vervollständigt. Mit großer Freude vermelden wir die Aufnahme als offizielles Debianpaket. Somit ist es ab Debian 9 Stretch offizieller Bestandteil der Linux-Distribution.
Labels:
Bokeh,
Cubietruck,
Datenvisualisierung,
Debian,
Flatpak,
Fossil,
GitHub,
GnuPG,
Integrit,
Iptables,
Linux,
Matplotlib,
NumPy,
Open Data,
Pandas,
Pyspread,
Python,
Raspberry Pi,
rsync,
Snap
Abonnieren
Posts (Atom)














