– DRadio Panik – 

Auf DRadio/Wissen geht das Zuckergespenst um.

Ein Beitrag zur Volksgesundheit und Diabetesprävention versucht uns unter dem Deckmäntelchen des Wissens für dumm zu verkaufen. Hören Sie selbst.

zuckergespenst-1

Instrumente der Medienkritik, die jeder zuhause haben solle (von hinten nach vorne u. li. n.re.): Zuckervorrat, Meßbecher, Glas für mindestens 250 ml. Flüssigkeit und Briefwaage. Die Waage zeigt 43g an, weil der Alubecher 25g wiegt und ein Zuckerwürfel 3g wiegt. 3×6=18, 18+25=43. 

Weiterlesen

Vor einiger Zeit habe ich ein kleines Skript, journal.sh, vorgestellt, um Messwerte automatisch zu datieren und mit einem Stichwort in einer Datei abzulegen.

Angeregt durch Erzählmirnix, die auch den Blog Fettlogik überwinden betreibt, wollte ich meine Werte auch in grafischer Form aufbereitet sehen, aber nicht mit einer schnuckeligen App, einerseits weil ich gar kein Smartphone warte, andererseits will ich mein Gewicht auch nicht in der Cloud speichern und nach jwd leaken. Solche Apps scheinen oft mitteilungsfreudiger zu sein, als dem Anwender lieb ist.

gewicht

Bevor ich aber zum HowTo komme noch ein Abstecher zu einer anderen Nützlichkeit. Die Shell kennt Funktionen, und solche Funktionen kann man in der Datei ~/.bashrc ablegen. Dann stehen sie in jedem neu geöffneten Shellfenster zur Verfügung. Da ich mein Journal für immer wieder die gleichen Stichworte nutze (kg, ezig, rad) habe ich mir Funktionen geschrieben, die prüfen, ob ich neben dem Stichwort weitere Eingaben übergebe – wenn nicht wird mir nur die Liste bisheriger Werte ausgegeben. Ansonsten wird zuerst der neue Wert eingegeben. Und statt journal.sh 82,7 kg einzugeben gebe ich nur kg 82,7 oder kg ein.

Das ist für faule Menschen sehr praktisch.

kg ()
{
test $# -ge 1 && journal.sh $1 „kg“;
grep “ kg“ ~/journal.txt
}

ezig ()
{
test -n $# && journal.sh „ezig“ $1;
grep „ezig“ ~/journal.txt
}

Für ezig sieht es etwas anders aus, da dort ein Eintrag typischerweise unformatierter ist, etwa ezig 19,80 2 Päckchen neue Coils oder ezig 9,99 1L Basisliquid.

test $# -ge 1 prüft, ob die Zahl der Argumente größer-gleich 1 ist (-ge: greater-equal).

test -n $# prüft, ob die Argumentliste leer ist.

Soweit der Exkurs. kg liefert mir also eine Liste von Gewichtsmessungen, und in eine Grafik verwandelt man sie mit gnuplot. Angezeigt werden kann sie mit display, aber jeder andere Bildbetracher tut es, der das Bildformat beherrscht, etwa eog, inkview usw.

kg | sed ’s/^.. //;s/ kg//;s/,/./;s/ /., /‘ > gewicht.lst
gnuplot gewicht.plt && display gewicht.png

kg liefert also eine Liste an Gewichtsmessungen mit Datum.

So 2016.08.14 75.7 kg
Do 2016.08.04 76,8 kg
Di 2016.07.19 77.8 kg
So 2016.07.03 78.8 kg
So 2016.06.19 79.6 kg
Fr 2016.06.17 80.8 kg

Mit Sed schneide ich vorne den Wochentag weg. Wie man sieht erfasse ich undiszipliniert die Werte mal im deutschen, kontinentalen Format mit Komma, dann wieder im computernahen mit Punkt. Das zweite löscht das “ kg“ weg. Diese Kommas wandelt das dritte Sed-Kommando in Punkte um. Als Feldtrenner erwartet Gnuplot ein Komma, das macht das vierte Kommando und die Ausgabe leite ich in eine Datei gewicht.lst um.

Sed war hier ja schon gelegentlich Thema. Es steht für Strream-EDitor und wird von mir vor allem für solche Serien Suche-und-Ersetze-Kommandos genutzt (substitute). Jedes Semikolon trennt einen Befehl vom nächsten, daher vier Befehle. s/vorher/nachher/; bedeutet also Substituiere vorher durch nachher. Diese Kommandos sind leichter zu schreiben als zu lesen.

Dann kommt gnuplot zum Zuge, ein wahnsinnig mächtiges Werkzeug um ohne Open-Office Grafiken zu erzeugen – im Sinne von mathematischen, wissenschaftlichen Grafiken. Hier das Programm gewicht.plt:

set title „Gewicht nach Zeit“
set xdata time
set style data lines
# set terminal dumb feed 120 45
# set terminal svg
# set output „gewicht.svg“
#
set term png
set output „gewicht.png“
#
set timefmt „%Y.%m.%d.“
set format x „%m\n“
set xlabel „Monat“
set ylabel „Gewicht“
# # set autoscale y
set xrange [„2016.01.01″:“2016.12.31“]
set yrange [60:100]
# set autoscale y
set datafile separator „,“
plot „./gewicht.lst“ using 1:2 t „diaet“ w lines

Viele Kommandos sind sicher selbsterklärend; set title, xlabel, ylab el, xrange, yrange– das versteht sich von selbst aber die Syntax muss man natürlich kennen.

Das auskommentierte autoscale malt was, das Minimum und Maximum als Grenze nimmt. Damit würde aber über die Zeit der Graph mal auf der Gewichts- und immer auf der Zeitachse verzerrt – ich hätte lieber gleichbleibende Proportionen und muss dann an Sylvester das Programm anpassen. Dass auf der X-Achse die Zeit aufgetragen wird muss gesondert gesagt werden: set xdata time, Befehle um eine SVG-Grafik zu machen habe ich auskommentiert. Ebenso die praktische Option eine Asciigrafik im Terminal selbst auszugeben set terminal dumb feed 120 45  – das wären 120 Spalten bei 45 Zeilen und sollte natürlich an das eigene Terminal angepasst sein.

Das ganze einzurichten dauert natürlich, insbesondere wenn man die Programme erst installieren und sich in die Befehle einfuchsen muss, aber hat man es einmal eingerichtet ist es wesentlich komfortabler, als erst OpenOffice zu öffnen und eine CSV-Datei zu importieren, da die Achsen zu beschriften und den Grafiktyp auszuwählen oder den Wertebereich anzupassen. Für jede Messung will man auch nicht OpenOffice öffnen – dafür ist ein Kommando kg 77.7 doch sehr viel komfortabler.

Wer sich wundert, dass es im Graphen nur abwärts geht: Ich messe zwar mehrmals täglich, aber wegen der Wasserschwankung im Körper gibt es ein ständiges Auf-und-Ab. Also protokolliere ich nur den jeweils neuesten Rekord nach unten. Sollte ich wieder schwer zulegen würde ich wohl auch wieder einen höheren Wert protokollieren, aber zur Zeit läuft die Gesundschrumpfung ganz gut.

Sicher könnte man die Grafik noch ausbauen mit Linien für die Schwellwerte des BMI bei Übergewicht für die eigene Körpergröße, Adipositas I und II sowie Untergewicht, aber so bin ich erstmal zufrieden.

Display ist übrigens als Programm im Grafikpaket Image-Magick enthalten.

gnu

Die vorgestellten Skripte dürfen natürlich frei benutzt und nach Lust und Laune verändert werden.

 – Spaß mit Pferden – 

pferdehumor

Ein letzter Gruß aus Rio. Rio2016, Olympia. 

Man sagt dass früher beim Springreiten das Tier, welches die meisten Hindernisse verweigert hatte, zum Abendbrot als rheinischer Sauerbraten serviert wurde. Heute ist man da moderner und serviert Lasagne.