Lektionen aus Advent Of Code 2019 mit Java 13

Advent Of Code 2019 Fortschritt

Bei der diesjährigen Advend Of Code-Herausforderung kam ich 12 Tage weit bis der Vor-Weihnachtsrummel Überhand nahm. Das ist eine neue persönliche Bestleistung, danke auch an Bruder R. für den Ansporn.

Ich habe als Programmiersprache Java 13 eingesetzt. Maven und JUnit, sowie die Java-Entwicklungsumgebung von Visual Studio Code haben mich dabei hervorragend unterstützt.

Eine Spezialität von Advent Of Code ist dass jede Aufgabe in zwei Teilen gestellt wird: Erst nach dem erfolgreichen Lösen des ersten Teiles erfährt man die restlichen Anforderungen.

Zusätzlich gabe es auch dieses Jahr eine Meta-Aufgabe: Das Schreiben einer einfachen virtuellen Maschine über mehrere Tage hinweg.

Schreib dein Annahmen als Kommentar in den Code

Gerade die Zwei-Teilung der Aufgaben macht es wichtig, alle getroffenen Annahmen im Code entsprechend zu dokumentieren.

Wer hingegen schon im ersten Teil versucht allen möglichen neuen Anforderungen des zweiten Teils zu antizipieren, wird vielen unnützen Code schreiben. Der einfachere Ansatz ist es sich an die aktuelle Aufgabe zu halten. Erst wenn die neuen Spezifikationen bekannt sind, ist es Zeit die getroffenen Annahmen zu überprüfen.

Unittesting beruhigt

Die virtuelle Maschine welche in den ersten 10 Tagen entsteht wird mit jedem Tag komplizierter. Da beruhigt es ungemein alle Beispiele (und vorangegangene Aufgaben) als Unittests für die aktuelle Implementation zu einer Testsuite zusammengefügt zu haben.

Java 13 ist angenehm

Mit jeder neuen Java-Version kommen mehr praktische Features in der Sprache an. Die 13 macht deutlich mehr Spass als alles was vor Version 8 war.

(Natürlich eignen sich für Advent Of Code dynamische Sprachen wie Python oder Ruby was die Implementationsgeschwindigkeit angeht noch immer tausendmal besser…)

Ich freue mich bereits auf nächstes Jahr und bin schon gespannt, welche Sprache ich nächsten Dezember wählen werde.

Neue Dokumentation für api.existenz.ch

Meine APIs für diverse OpenData-Daten haben in den letzten Wochen eine aktualisierte Dokumentation im OpenAPI V3-Standard (Aka. Swagger) erhalten: https://api.existenz.ch/docs/apiv1

Zusätzlich verlinkt von der API-Startseite ist ein Newsletter mit unregelmässigen Updates zum Zustand der API.

Ich freue ich immer über eine Nachricht wenn dir die Daten von Nutzen sind.

GitHub Action: Apprise-Notifikationen

Beim Experimentieren mit der Beta-Version von GitHub Actions (Einem Tool für Build-Prozesse, Continous Integration, Deployment etc.) wollte ich mir Notifikationen aus Pipelines zukommen lassen. Zwar gab es schon einige Actions welche mit einzelnen Services funktionierten, aber jede dieser Action war unterschiedlich zu konfigurieren und benutzen.

Kurzerhand habe ich mich durch die lückenhafte Dokumentation gekämpft und eine eigene generelle Notifikation-Action erstellt: Apprise-GA.

Dank der Python-Bibliothek Apprise kann diese Action Nachrichten an Dutzende verschiedene Services schicken: Slack, Discord, IFTTT, Matrix, Telegram, Twitter, Pushover etc. etc.

Und mit dem Einsatz von Templates können auch dynamische Texte verschickt werden:

action "Send push notification" {
  uses = "cstuder/apprise-ga@master"
  secrets = ["APPRISE_URL"]
  args = [
    "Push received on {{ ref }}",
    "Commit by {{ head_commit.author.name }}: {{ head_commit.message | truncate(128) }} ({{ head_commit.id[0:7] }})"]
}

Ich finde meine Action überzeugt.

Dokumentation auf GitHub: https://github.com/cstuder/apprise-ga

Visual Studio Code-Extension: Marktplatzseite aktualisieren

Um die Informationsseite einer selbst entwickelten Extension im Marktplatz von Visual Studio Code zu aktualisieren, ohne eine neue Version publizieren zu müssen, kannst du einfach die bestehende Version mit

vsce package

neu packen. Nicht vsce publish ausführen, da dies die Versionsnummer automatisch erhöht.

Danach das Packet im Marketplace Manager erneut hinaufladen. Nach einigen Minuten wird die Informationsseite aktualisiert sein.

(Ich habe das benutzt um meine eigene Extension zum Wohle der neuen GitLab Workflow-Extension einzustampfen.)

Backslash unter macOS in Visual Studio Code eingeben mit installierter Git Lens

Das exzellente Git-Blame-Plugin Git Lens für meinen neuen Lieblingseditor Visual Studio Code überschreibt die Tastenkombination Shift-Alt-7 für den Backslash (\) auf der deutschen Tastaturbelegung in macOS.

Zur Behebung das Keybinding auf dem Kommando gitlens.showCommitSearch löschen.

(Menu Tastenkombinationen, Rechtsklick auf das störende Binding und Entfernen wählen.)