Skip to content

tasksh review ...

taskwarrior Diesen Artikel habe ich schon sehr lange in der Pipeline. Das aktuelle Release von tasksh ist ein guter Anlass ihn auch zu veröffentlichen.

"Eigentlich" (tm) ist tasksh eine Hilfe für Tippfaule, die nicht immer das Kommando task tippen wollen, wenn sie mit ihren Aufgaben arbeiten.

Aber tasksh hat ein Killerfeature und das ist review, das Kommando tut genau das, was der Name auch impliziert. Es hilft Euch, regelmässig Eure Aufgabenliste durchzusehen. Das Feature gibt es seit Version 1.1.0, aktuell ist seit heute Nacht die Version 1.2.0.

Dazu speichert es in einem User defined Attribute den Zeitpunkt, wann das letzte Review stattgefunden hat und nimmt sich die Aufgabe erst dann wieder vor, wenn eine Woche (konfigurierbar!) vergangen ist.

Wenn nur Zeit ist, sich beispielsweise fünf Aufgaben anzusehen, dann kann man review auch mit dem Parameter 5 aufrufen, um die Anzahl der durchzusehenden Aufgaben zu beschränken.

Da ich gerne meine offenen Aufgaben einmal pro Woche durchschauen möchte, nutze ich nur aus diesem einen Grund tasksh.

while true ...

linux Neben vielen anderen Pluspunkten ist die Shell etwas, was ich an Linux besonders mag.

Bis vor kurzem habe ich meine LaTeX-Präsentationen und andere Dokumente mittels Makefile und einer Endlos-Schleife entwickelt. Dokumentbetrachter wie beispielsweise Okular oder Evince (Adobe Reader kann es nicht) erlauben es, dass eine gerade angeschaute Datei verändert werden darf und zeigen die Veränderungen auch direkt an.

Dazu benutze ich ein (nahezu) generisches Makefile (make clean löscht beispielsweise alle Temporärdateien):
.PHONY: clean
.DEFAULT_GOAL := lessons-learned.pdf

clean:
        find . \( -name '*.dvi' -o -name '*.aeb' -o -name '*.aux' -o -name '*.idx' -o -name '*.ilg' -o -name '*.ind' -o -name '*.ivz' -o -name '*.ivz.xml' -o -name '*.log' -o -name '*.pic.xml' -o -name '*.toc' -o -name '*.nav' -o -name '*.out' -o -name '*.snm' -o -name '*.vrb' -o -name '*~' -o -name '*.pdfpc' -o -name '*.fls' -o -name '*.fdb_latexmk' -o -name '*.xdv' \) -delete

lessons-learned.pdf:    *.tex *.png # *.jpg
        xelatex lessons-learned
        xelatex lessons-learned
        xelatex lessons-learned


Und der Rest wird durch eine Endlossschleife erledigt:
while : # oder while true
do
  make -q || make
  date
  sleep 5
done


Allerdings hat sich dieses Verfahren erledigt, nachdem ich bei Sujeevan von latexmk gelesen habe.

Seit dem reicht ein:
latexmk -pvc -xelatex lessons-learned.tex
make clean

GNU time ...

In den "Core Utilities" der meisten Linuxdistributionen findet sich das Tool GNU time (ja, die Homepage ist ein bisschen, nun, ..., nichtssagend).

Das time-Kommando als eingebautes Kommando der Bash (oder anderer Shells) kennen viele, auch die charakteristische Ausgabe:

$ time bash
$ exit

real    0m2.608s
user    0m0.137s
sys     0m0.326s


Ein wenig gesprächiger ist GNU time:

$ /usr/bin/time bash
$ exit
0.18user 0.37system 0:04.17elapsed 13%CPU (0avgtext+0avgdata 3736maxresident)k
0inputs+80outputs (0major+96587minor)pagefaults 0swaps


Im "verbose-Modus" kann man dann aber schon richtig ordentlich Informationen abgreifen:

$ /usr/bin/time -v bash
$ exit
        Command being timed: "bash"
        User time (seconds): 0.11
        System time (seconds): 0.30
        Percent of CPU this job got: 12%
        Elapsed (wall clock) time (h:mm:ss or m:ss): 0:03.36
        Average shared text size (kbytes): 0
        Average unshared data size (kbytes): 0
        Average stack size (kbytes): 0
        Average total size (kbytes): 0
        Maximum resident set size (kbytes): 3732
        Average resident set size (kbytes): 0
        Major (requiring I/O) page faults: 0
        Minor (reclaiming a frame) page faults: 96806
        Voluntary context switches: 713
        Involuntary context switches: 155
        Swaps: 0
        File system inputs: 0
        File system outputs: 80
        Socket messages sent: 0
        Socket messages received: 0
        Signals delivered: 0
        Page size (bytes): 4096
        Exit status: 0


Die manpage gibt noch weitere Optionen an.

Pipe Viewer ...

In den letzten Jahren habei sich reichlich viele tar.bz2-Archive mit zum Teil über 100 Gigabytes bei mir angesammelt. Die mussten einmal dringend aufgeräumt werden.

Bei Aufräumen war mir Pipe Viewer eine grosse Hilfe. Na, ja, Hilfe ist vielleicht übertrieben, aber "subjektive Zeitverkürzung" hat auch ihren Wert.

Pipe Viewer macht genau das, was der Name vermuten lässt, es zeigt - unter anderem - den Fortschritt von Pipes an.

$ pv --progress --eta downloads.tar.bz2 | tar xjf -
[>                                                  ]  2% ETA 0:04:02


Der umgekehrte Weg ist komplexer, weil die Grösse der Daten an das Kommando übergeben werden muss.

$ tar cf - Downloads \
| pv --progress --eta --size $(du -bs Downloads | awk '{print $1}') \
| bzip2 -9 > downloads.tar.bz2
[==============>                                    ] 31% ETA 0:08:42


Weitere sehr gute Beispiele finden sich auf der verlinkten Homepage.

Supportzeiträume ...

linux Weil ich ab und zu mal danach gefragt werde, habe ich einmal die Supportzeiträume gängiger paketbasierter Linuxdistributionen zusammengesucht.

Kritik und Korrekturen sind ausdrücklich erwünscht.

Bei Korrekturen wäre ein offizieller Link sehr hilfreich

Eingeschränkter Support:

Eingeschränkter Support bedeutet insbesondere, dass nicht alle Pakete unterstützt werden.

Bei Debian LTS sind nicht alle Pakete enthalten. Bei Red Hat Enterprise Linux wird eine ELP (Extended Life Phase) Lizenz benötigt, um weiteren eingeschränkten Support zu bekommen, SUSE erfordert ein Extended Support Package. Bei Debian und OpenSUSE wird der langfristige Support über ein separates Team gewährleistet und nicht vom Securityteam der jeweiligen Distribution.

Überblick:




















Version: Release: Support: Limited Support:
Debian 7, Wheezy (oldstable) 04.05.2013 24.04.2016 05.2018
Debian 8, Jessie (stable) 25.04.2015 ca 04.2018 05.2020
Ubuntu 12.04 LTS, Precise Pangolin 26.04.2012 26.04.2017 ESM
Ubuntu 14.04 LTS, Trusty Tahr 17.04.2014 04.2019
Ubuntu 16.04 LTS, Xenial Xerus 21.04.2016 04.2021
Ubuntu 16.10, Yakkety Yak 13.10.2016 04.2017
CentOS 6 10.07.2011 30.11.2020
CentOS 7 07.07.2014 30.06.2024
Red Hat Enterprise Linux 5, Tikanga 14.03.2007 31.03.2017 31.03.2020
Red Hat Enterprise Linux 6, Tikanga 10.11.2010 30.11.2020 30.11.2023
Red Hat Enterprise Linux 7, Tikanga 10.06.2014 30.06.2024 30.06.2027
openSUSE Leap 42.1 04.11.2015 05.2017
openSUSE Leap 42.2 16.11.2016 ca 05.2018
SUSE Linux Enterprise Server 11 23.03.2009 31.03.2019 31.03.2022
SUSE Linux Enterprise Server 12 27.10.2014 31.10.2027 31.10.2027
Fedora 24 21.06.2016
Fedora 25 22.11.2016


Standard-Support-Zeiträume:

Debian supported bis "next stable + 1 Jahr", LTS bis fünf Jahre nach Erscheinen (Releasezyklus "fertig, wenn es fertig ist").

Ubuntu supported bis neun Monate nach Erscheinen, LTS fünf Jahre nach Erscheinen. Release alle sechs Monate, LTS-Versionen alle zwei Jahre. Seit neuestem bietet Ubuntu eine Extended Security Maintenance für LTS-Versionen (Link in der Tabelle oben), die käuflich erworben werden kann. Danke Mario!

CentOS bis zehn Jahre nach Erscheinen des korrespondierendes RHEL Releases.

RHEL bis zehn Jahre nach Erscheinen, ELP bis 13 Jahre nach Erscheinen.

openSUSE, Major Release soll mindestens 36 Monate unterstützt werden, Minor-Releases bis 18 Monate nach Erscheinen.

SLES analog RHEL.

Fedora, Support bis zum Erscheinen des zweiten Nachfolgreleases plus ein Monat, keinen Langzeitsupport, neue Releases alle sechs Monate.

Neues Tablet ...

android Nachdem sich mein Tablet ("glücklicherweise" noch in der Garantiezeit) letzte Woche verabschiedet hat, habe ich am Donnerstag ein Austauschgerät bekommen. Darüber bin ich wirklich froh, weil selbst aktuelle Geräte nicht die Leistungsfähigkeit und die Haptik des Xperia Tablet Z4 erreichen.

Für mich war es sehr spannend zu sehen, wie sehr dieses Gerät von mir benutzt wird und das ich unter der Woche beim Pendeln nie ohne Tablet unterwegs bin.

Der überwiegende Teil der Anwendungen, die ich neu installiert habe, hat mit dem Lesen zu tun:
  • Moon+ Reader Pro ist das Hauptleseprogramm, es hat seine Stärken bei PDFs und ePub-Dateien
  • Wallabag hoste ich selber und mit der App kann ich die Artikel auch Offline lesen
  • News+ in Premium mit Tiny Tiny RSS Plugin ist meine Schnittstelle zur selbstgehosteten Tiny Tiny RSS Instanz
  • Kindle, meine bessere Hälfte schwört auf ihren Kindle, einige der Bücher dort lese ich auch gerne.
  • Dropbox, da viele Verlage eine Dropboxschnittstelle anbieten und verkaufte Bücher dort ablegen können (beispielsweise O'Reilly).


Ein weiterer grosser Teil dreht sich rund um "einfach machen":
  • Termux mit Termux:Styling und Termux:API gibt mir eine Shell-Umgebung auf Android. Auf dem Telefon habe ich das nicht, auf dem Tablet ist es ein Muss.
  • Taskwarrior, meine Aufgabenverwaltung.
  • Mosh, um mich mit meinen Servern verbinden zu können.
  • Git, weil Versionskontrolle wichtig ist ...
  • Liquidprompt macht den Prompt schön :-)
  • Vim als Editor


Bleibt noch der Kalender:


Und diverser "Kleinkram", von dem ich hier nur ein paar Programme explizit erwähnen möchte:


Da kommt ganz schön etwas zusammen und wie ich das gerade sehe, habe ich über die Jahre einiges an Software gekauft.

Tablet tot ...

android Ich fühle mich in meinen Freiheitsrechten eingeschränkt ... Mein Tablet ist ein Xperia Tablet Z4 hat am Dienstag den Geist aufgegeben ... glücherweise drei Monate vor Ablauf der Gewährleistung.

Vermutlich kein das Gerät nicht mehr repariert werden. Die Alternativen sind irgendwie nicht sehr überzeugend.

Ich bin für jeden Tipp dankbar.

Als interessante Geräte habe ich nur das Google Pixel C und das Samsung Galaxy Tab S3 (noch kein Wikipedia-Artikel) gefunden.

Interessanterweise ist mein altes Tablet im Vergleich immer noch besser als die beiden aktuellen, wie dieser Vergleich zeigt.

Dass das Pixel C kein LTE hat, könnte ich zur Not noch verschmerzen. Das Samsung Galaxy Tab S3 sieht wie ein Clone des iPad Pro aus.

Die Tastaturen beider Tablets haben keine Escape-Taste mehr, wie soll ich denn damit Vim bedienen?

Anforderungen an das kommende Tablet:
  • Android als Betriebssystem, ja es gibt auch andere schöne Geräte, ich möchte aber gerne eines mit Android haben
  • Mindestens 9.7 Zoll und nicht mehr als 10.9 Zoll, ich möchte gerne DIN A4 PDFs in Ganzseitenansicht lesen können
  • Auflösung wenigstens Full HD, mehr ist besser
  • 32 GB Speicher sollten drin sein, wenn es keine microSD-Karten unterstützt, dann lieber 64 GB (mehr geht immer)
  • Externe Tastatur, wirklich gerne mit Escape-Taste ...
  • Mindestes Quadcore

GCC und Environment ...

centos Hier kommt noch ein kleiner Nachtrag zu dem Artikel gestern.

Da ich den aktuellen GCC insbesondere zum Bau von Taskwarrior nutzen und nicht jedes Mal eine neue Shell nutzen möchte, hilft der folgende Weg, das zu verwirklichen:

Wrapper Skript für GCC und C++:

#!/bin/bash
# sclgcc.bash

COMMAND="gcc $@"
scl enable devtoolset-6 "$COMMAND"


#!/bin/bash
# sclc++.bash
COMMAND="c++ $@"
scl enable devtoolset-6 "$COMMAND"


Setzen der Environment-Variablen, die cmake und make benutzen:
export CC=/home/flod2/bin/sclgcc.bash
export CXX=/home/flod2/bin/sclc++.bash


Fertig!

Neuen GCC auf CentOS installieren ...

centos ... und das auch noch von der Distribution supported.

Bei CentOS und RedHat Enterprise Linux wird aktuellere Software durch die Software Collections bereit gestellt. Der Grund dafür, das separat zu machen, ist (beispielsweise) im CentOS Wiki zu finden.

CentOS wird 10 Jahre unterstützt und für die 10 Jahre wird die Kompatibilität von ABIs und APIs garantiert.Um das nicht zu gefährden, werden aktuellere Versionen in einem anderen Verzeichnis installiert und situationsweise aktiviert.

Am Beispiel "neuerer GCC-C++" läuft das wie folgt. Zuerst werden die Software Collections aktiviert und aktualisiert.
$ sudo yum install centos-release-scl
$ sudo yum update


Installation des entsprechenden Pakets mit allen Abhängigkeiten:
$ sudo yum install devtoolset-6-gcc-c++


Welche Software Collections installiert sind, bekommt man mit scl --list heraus.

Anschliessend startet man eine Shell mit aktivierter Software Collection:
$ gcc --version | head -1
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-11)

$ scl ---list
devtoolset-6

$ scl enable devtoolset-6 bash

$ gcc --version | head -1
gcc (GCC) 6.2.1 20160916 (Red Hat 6.2.1-3)

Teil vier der Saga ist verfügbar ...

adminbuch Jetzt ist es soweit. Episode vier von Linux-Server. Das umfassende Handbuch ist jetzt verfügbar. Es hat dieses Mal sehr viele inhaltliche Änderungen gegeben, über die ich hier nicht gross referieren möchte, dafür sind sie zu umfangreich.

Die für mich grösste Änderung und die, über die ich mich am meisten freue, ist, dass wir nun endlich auch CentOS mit an Bord haben, dafür verzichten wir auf SUSE Linux Enterprise Server (SLES). Jetzt ist das Buch endlich komplett und umfasst die vier grossen Systeme, die auf Servern zum Einsatz kommen: CentOS, Debian, openSUSE und Ubuntu. Gleichzeitig sind wir damit aber auch kompatibel zu Red Hat Enterprise Linux und SLES.

Mit einem weinenden Auge musste ich zur Kenntnis nehmen, dass unser langjähriger Gefährte Charly Kühnast auch ein Privatleben hat und jetzt leider nicht mehr dabei ist. Doof.

Timewarrior ...

taskwarrior Ganz vergessen, dass ich auf den Taskwarrior Days 2016 auch etwas zu Timewarrior erzählt habe.

Timewarrior schliesst eine Lücke, damit lassen sich auf der Kommandozeile (Arbeits-)Zeiten erfassen, über einen Hook geht das auch direkt aus Taskwarrior. Über die News auf taskwarrior.org geht es direkt in die Repositories zu den Vorträgen.

Hier ist der direkte Link zu Speakerdeck, Contribute to Taskwarrior. Ich habe das unten eingebettet (JavaScript!), Links sind leider nur im herunterladbaren PDF klickbar.

Rund um Taskwarrior ...

taskwarrior Hier kommen die nächsten beiden Vorträge von den Taskwarrior Days 2016. In meinem Speakerdeck-Account kann man auch die PDFs herunterladen.

Über die News auf taskwarrior.org geht es direkt in die Repositories.

Hier sind die direkten Links zu Speakerdeck, Contribute to Taskwarrior und Taskwarrior Universe. Die beiden Slidedecks sind eingebettet (JavaScript!), Links sind leider nur im PDF klickbar.



Und hier die zweite:

Taskwarrior (and Taskserver) ...

taskwarrior So, die Taskwarrior Days 2016 sind beendet. Ich habe die Slides zu meinem Speakerdeck-Account hochgeladen, wo man auch die PDFs herunterladen kann. In den nächsten Tagen wird es ein Newsitem auf den Taskwarrior-Seiten mit Downloadlink geben, in der Zwischenzeit kann man sich die Slides auch direkt aus dem Git-Repository holen.

Für die, die sich die Introduction to Taskwarrior und Taskwarrior and Taskserver direkt anschauen wollen, habe ich die "Folien" hier eingebettet (JavaScript nötig).



Und hier die zweite:

Taskwarrior Days 2016 ...

taskwarrior Die diesjährige FrOSCon benenne ich für mich um in die "Taskwarrior Days".

In diesem Jahr habe ich für den Samstag einen Taskwarrior-Projektraum beantragt und ihn auch bekommen. Es ist Raum C130, ich bringe Taskwarrior-Sticker und Cheat-Sheets mit.

Anders als die Titel vermuten lassen, sind die Vorträge und Workshops in deutscher Sprache, die PDFs aka "Folien" werden aber in englisch sein.

Folgende Programmpunkte sind geplant:

Samstag, 20.8.2016, 10:00-12:30 Uhr, Raum C130:
Workshop: Compile Taskwarrior and Taskserver

Samstag, 20.8.2016, 14:00-15:00 Uhr, Raum C130:
Vortrag: Introduction to Timewarrior

Samstag, 20.8.2016, 15:15-16:15 Uhr, Raum C130:
Vortrag: Taskwarrior Universe

Samstag, 20.8.2016, 16:30-17:30 Uhr, Raum C130:
Vortrag: Contribute to Taskwarrior

Sonntag, 21.8.2016, 10:00-12:00 Uhr, Raum C115:
Workshop: Introduction to Taskwarrior

Unterstützung ist jederzeit willkommen. Rückfragen immer gerne.

Timewarrior 1.0.0beta1 ...

taskwarrior Jetzt ist es endlich soweit, die erste beta-Version von Timewarrior wurde veröffentlicht. Timewarrior ist eine Kommandozeilenanwendung zur Zeiterfassung, sie lässt sich über Hooks in Taskwarrior einbinden.

Wenn Ihr Verwendung dafür habt, ist jetzt der richtige Zeitpunkt einzusteigen und uns mit Euren Tests und Bugreports zu unterstützen.