Heute vor vierzehn Jahren haben Kathi und ich geheiratet.
Ich wünsche der besten Ehefrau der Welt und mir eine wundervolle Elfenbeinhochzeit1 und freue mich auf das nächste Jahr im aufregenden Hafen der Ehe.
>
Meine pinboard.in-Links vom 25. Mai bis zum 03. April:
Heute vor zehn Jahren kam Nina auf die Welt. Das erste ganze Jahrzehnt mit dem Kind ist voll und es hat großen Wert darauf gelegt, dass dieser Umstand hier erwähnt wird1.
Das Kapitel Grundschule liegt nun wirklich sehr in den letzten Zügen. Mit, ob der Anmeldezahlen, unverschämtem Glück2 und ausgezeichneten Noten wurde Nina auf derselben Schule wie ihr Bruder angenommen und erleichtert damit die Familienlogistik auf absehbare Zeit mit hoher Wahrscheinlichkeit erheblich. Wir sind sehr dankbar.
Darüberhinaus ist sie in einer Showtanzgruppe unterwegs und flippt durchs Trampolin wie eine Irre. Impressive, most impressive.
Gehe weiter so unbeirrt deinen Weg du tollstes Tochterkind, happy happy Birthday von deinen Eltern und deinem Bruder. Wir haben dich unglaublich lieb.
Heute vor dreizehn Jahren kam Linus auf die Welt.
Das ist keine Übung, ab heute haben wir einen Teenager im Haus.
Der ist mittlerweile sehr häufig, sehr gerne in seinem Zimmer und schläft an Wochenenden tatsächlich manchmal1 länger als seine Eltern. Zeichen und Wunder im Alltag. Man muss nur genau hingucken und gelegentlich mal in Ruhe ein gutes Jahrzehnt abwarten, dann finden sich manche Dinge ganz von selbst.
Auf dem Foto sehen wir den Jungen im Urlaub vor einem Haufen Surfbretter, kurz vor der Abfahrt zum Strand. Das hatte ihm auch gut gefallen. Dazu kommen nach wie vor die Pfadfinder, die Trompete und mittlerweile auch Schauspiel an seiner Schule, so ganz schlimm Langeweile wird also auch im nächsten Lebensjahr eher nicht aufkommen.
Heute wird aber erst einmal gefeiert: Allesalles Gute & Liebe zu deinem dreizehnten Geburtstag lieber Linus!
Aber nicht häufig…↩
Der Post über das Nutzen der macOS Keychain für die Passworte in der imapfilter config hatte einen recht unerquicklichen Hintergrund: Ich habe froh und glücklich an Konfiguration und Regeln für imapfilter geschraubt, ohne daran zu denken, dass Passworte in Klartextdateien eine Doofe Idee™ sind. Die config.lua
befindet sich außerdem in meinem dotfile repo und ich habe so einige Commits auf diese Datei gesammelt. Wie kann man das nun wieder alles loswerden1, ohne alles zu verlieren?
Das kommt so häufig vor2, dass git dafür3 ein passendes Kommando namens git-filter-branch
hat. Die Doku beginnt direkt mit dieser erheiternden Warnung:
git filter-branch has a plethora of pitfalls that can produce non-obvious manglings of the intended history rewrite (and can leave you with little time to investigate such problems since it has such abysmal performance). These safety and performance issues cannot be backward compatibly fixed and as such, its use is not recommended. Please use an alternative history filtering tool such as git filter-repo. If you still need to use git filter-branch, please carefully read SAFETY (and PERFORMANCE) to learn about the land mines of filter-branch, and then vigilantly avoid as many of the hazards listed there as reasonably possible.
Plethora of pitfalls, abysmal performance, land mines… Haha, das will man dann eigentlich lieber nicht benutzen. Für die allerallermeisten Anwendungsfälle ist offenbar BFG4 am allerallereinfachsten zu benutzen. Mindestens trifft das auf das Entfernen von Dateien zu, wie ich hier lernen konnte.
Dank homebrew ist man unter einem einigermaßen aktuellem macOS nach einem brew install bfg
schon einsatzbereit und muss sich mit Java und anderem Ungemach überhaupt nicht befassen5.
Es empfiehlt sich6 ein Backup anzulegen, bevor man zu Werke geht. git clone --mirror git@some.origin/reponame reponame-backup.git
sollte völlig ausreichen.
Das ist ein wichtiger Teil: BFG erwartet, dass man das Repo in einem aktuell sauberen Zustand vorliegen hat, also alle geheimen Geheimnisse in HEAD
beseitigt sind. In meinem Fall habe ich also die config.lua
aus meinem .imapfilter
-Verzeichnis in meinem .dotfiles
Repo entfernt und die viel bessere config.lua.example
erstellt. Dann ein Commit und wir können im nächsten Schritt an das Entfernen der Datei aus der History gehen.
In meinem Falle war das Problem mit einem bfg --delete-files config.lua
so gut wie aus der Welt geschafft. BFG geht zu Werke, berichtet,7 was alles getan wurde und sagt Bescheid, dass nun noch die physischen Dateien gelöscht werden müssen. Das klappt dann per git reflog expire --expire=now --all && git gc --prune=now --aggressive
.
Weil ich in meinem echten Repo gearbeitet habe, habe ich die neue History per git push --force
in meine Remotes verteilt.
Obacht: Solange es noch Repos gibt, die die alte Wahrheit beinhalten ist die Datei bzw. das geheime Geheimnis noch in der Welt. Insbesondere bei mehreren Usern ist daher Kommunikation vonnöten, um die anderen Repos mit dem neuen Stand zu versorgen.
Am besten ist es, wie immer, vorher zu überlegen, ob es nicht eine gute Idee wäre, Usernamen und Passworte aus verteilten Repositories herauszuhalten. In den folgenden via-Links ist auch noch einmal notiert, wie man einzelne Strings entfernt, das hatte ich hier bislang noch nicht ausprobiert, es liest sich aber auch sehr geradeaus.
Sollte schon irgendeines der geheimen Geheimnisse öffentlich geworden sein, kann man das Passwort oder den Schlüssel als verloren betrachten und sollte jetzt sofort aktiv werden und ein neues Passwort vergeben bzw. einen neuen Schlüssel erstellen und den alten widerrufen.
Es ist eine gute Idee, auch eher kleine, persönliche aber public Repos durch so etwas wie GitGuardian monitoren zu lassen, ein kostenloser Account reicht dafür total aus. Dann bekommt man Bescheid, sobald irgendetwas, das wie ein potentielles Risiko aussieht, im Repo auftaucht.
(via: Vinay Sharma, Touré Holder und Fabian Lee)
Meine pinboard.in-Links vom 28. Oktober bis zum 26. April:
Unter macOS gibt es einen eingebauten Passwortmanager, den Schlüsselbund bzw. die Keychain1. Und mit security
kann man die auch von der Kommandozeile aus benutzen.
So kann man die Standard-Keychain aufschließen:
1 2 3 |
|
Und so ein Passwort hinzufügen, hier ist es ein IMAP-Passwort:
1
|
|
Sehr wichtig ist dabei, dass man mit -r
ein Protokoll mitgibt2, sonst klappt das mit dem Hinzufügen gar nicht.
Den neuen Eintrag kann man sich dann auch in der GUI-Keychain angucken:
Das Passwort des Eintrags mit security
auch auf der Shell wieder auszulesen ist dank dem Paramater -w
3 für das find-internet-password
Subkommando ganz einfach4:
1 2 |
|
Ganz dummerweise gibt es keinen entsprechenden Parameter für den Usernamen. Hier muss man sich mit etwas Schnipselei an die Gesamtausgabe begeben und nur dieacct
-Zeile betrachten5:
1 2 |
|
Super. Klasse. Was macht man nun damit? Zum Beispiel kann man auf einem eh da Mac mini einen eigenen imapfilter laufen lassen, um die eher schwachbrüstigen Filterfunktionen6 von iCloudmail deutlich zu verbessern. Und mit diesem Vorgehen muss man das Passwort dann nicht im Klartext in einer Textdatei rumliegen haben. Passworte im Klartext sind eine Doofe Idee™.
Der Loginteil für ein iCloud-Mail Konto schaut dann aus wie folgt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
Wie das Suffix der Datei schon nahelegt ist das hier im Prinzip ein Lua-Programm. Die Bash-Einzeiler von oben werden per pipe_from
Funktion eins zu eins übernommen um Username und Passwort zu bekommen. Beim Passwort wird in Zeile 8 noch der hier überflüssige7 Zeilenumbruch entfernt. Der ist nicht Teil des Passworts, das klappt sonst eher schlecht mit dem Login.
Beim Usernamen müssen vor dem Entfernen des Zeilenumbruchs in Zeile 4 außerdem in Zeile 3 die Anführungszeichen entfernt werden. Das ginge vielleicht auch irgendwie durch escapen der einfachen Anführungszeichen von tr
in der zweiten Zeile aber ich habe mich hier für den Weg des geringsten Wiederstandes entschieden und entferne die Anführungszeichen ebenfalls per gsub
in Lua. So läuft das jetzt super. Einige Beispielregeln finden sich auch hier, noch mehr und viel ausführlichere Beispiele hier sowie dort.
Einige andere8 Vorgehensweisen um an ein Passwort für imapfilter
zu kommen finden sich auch in dieser Beispielconfig.
Das ganze läuft bei mir nun seit vielen Monden in einem tmux
pane vor sich hin9:
1 2 3 4 5 6 7 |
|
Das ergibt dann solche Ausgaben:
1 2 3 4 5 |
|
Alles in allem ist imapfilter
sehr zum feinstreifigen durchsieben und filtern von allen Postfächern geeignet, die selbst keine derartigen Funktionen mitbringen. Anstelle eines Mac minis kann natürlich so gut wie alles benutzt werden, was eh da ist. Nicht mal antike Raspberry Pis sollten hier irgendeine Art von Load verspüren.
(via: diesem imapfilter GitHub issue)
Ich bleibe mal beim englischen Begriff…↩
Auch wenn man es eigentlich gar nicht braucht, bzw. ein anderes…↩
-w
Display only the password on stdout↩
Allerdings wird nach dem Passwort auch ein Zeilenumbruch ausgegeben, das wird später noch wichtig werden…↩
Hier wird der Username allerdings in Anführungszeichen ausgegeben und ebenfalls mit einem Zeilenumbruch abgeschlossen. Die Anführungzeichen könnte man mit einer weiteren Pipe und tr -d '"'
entsorgen. In der eigentlichen Verwendung mit ìmapfilter
führte das aber zu Problemen und musste anders gelöst werden, immer ist was…↩
Ernsthaft, das war in Googlemail viel besser…↩
Auf der Shell hübsch, hier falsch…↩
Eher für Linux gedachte…↩
Ja, das gehört mal auf einen LaunchAgent umgestellt…↩
Aber trotzdem musste ich, aus durch und durch unerfreulichen Gründen1, eine ganze Menge PDFs aus einer ganzen Menge Verzeichnisse ausdrucken2. Und ich war mir überhaupt nicht sicher, ob denn die Tinte im uralten Tintenstrahler noch ausreicht, ich neue kaufen muss, oder ob ich doch endlich mal einen Laserdrucker erwerbe. Wie viele Seiten das wohl sind? frug ich mich…
Weil ich ganz wenig Lust hatte, das alles von Hand zu zählen, fand ich ziemlich schnell diesen superuser-Thread. Allerdings geht es da um viele PDFs in einem einzigen Verzeichnis. Ich hatte ein Verzeichnis mit vielen Unterverzeichnissen, das ganze sah ungfefähr so aus:
1 2 3 4 5 6 7 |
|
Und dann aber noch ein paar mehr Verzeichnisse und da drin jeweils viele PDFs…
Glücklicherweise war die Vorlage aber nur vor dem Semikolon für das Shell-Globbing 3 anzupassen: Anstelle des for i in *.pdf;
für das Durchzählen aller Seiten aller PDFs im aktuellen Verzeichnis benutzt man dann for i in ./**/*.pdf;
um alle PDFs in allen Unterverzeichnissen zu erwischen.
Dann konnte ich so nach allen Seitenzahlen einzeln gucken:
1 2 3 4 5 6 7 8 9 10 11 |
|
Und so ein grand total ausgeben:
1 2 |
|
169 Seiten, seufz… Schlussendlich habe ich dann, schon wieder, neue Tinte gekauft. Die kann ich jetzt aber immerhin absetzen. Ha, Profit!
(via: superuser)
Heute vor neun Jahren kam Nina auf die Welt. Jetzt haben wir schon fast ein Jahrzehnt mit dem Kind verbracht. Da können wir uns wirklich glücklich schätzen.
Nina geht mit großen Schritten auf die letzte Runde der Grundschule zu und meistert das bislang alles komplett ausgezeichnet. Seit ungefähr einem Jahr hat sie außerdem ein Faible für das Skateboard entwickelt und auch hier läuft es gut und es macht großen Spaß, ihre Fortschritte zu begleiten und zu bewundern.
Habe einen tollen neunten Geburtstag liebe Tochter, happy happy Birthday von deinen Eltern und deinem Bruder. Wir haben dich unfassbar lieb.