Dreiecke für alle

Auf der Suche nach einem Hintergrundbild, bin ich vor einiger Zeit über den Dienst Trianglify gestolpert, welcher unter qrohlf.com/trianglify/ zu finden ist. Der Dienst generiert, anhand bestimmter Kriterien, Anordnungen von Dreiecken unterschiedlicher Farben.

Trianglify erzeugt algorithmisch Hintergrundbilder

Genaugenomen handelt es sich nicht wirklich um einen Dienst zur Generierung von Hintergrundbildern, sondern um eine JavaScript-Bibliothek, welche diese Aufgabe übernimmt und in andere Projekte eingebunden werden kann. Lizenziert ist Trianglify unter der GPL in Version 3 und damit freie Software. Der Quelltext ist auf GitHub zu finden.

Thymeleaf ohne Servlet in Standalone-Anwendungen nutzen

Thymeleaf ist eine Template Engine, welche für die Nutzung mittels Java (oder anderer JVM-Sprachen) gedacht ist. Über diese können entsprechende Templates geschrieben werden, anschließend gefüllt und genutzt werden. Thymeleaf verfügt über eine Dokumentation, allerdings fehlt mir dort ein minimales Beispiel für Anwendungen, welche sich nicht im Web (sogenannte non-web environments) abspielen.

thymeleaf.org

Für ein minimales Beispiel wird natürlich ein Template benötigt. Dieses wird hier als HTML definiert:

<!DOCTYPE html>
<html>
<head>
    <title th:text="${title}"></title>
</head>
<body>
</body>
</html>

Interessant ist hierbei das Feld title, welches wir mit einem Titel füllen wollen. Im Java-Quellcode sieht die Implementation wie folgt aus:

ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();
resolver.setPrefix("templates/");
resolver.setTemplateMode("HTML5");
resolver.setSuffix(".html");

TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(resolver);

Context context = new Context(Locale.GERMAN);
context.setVariable("title", "Ein minimales Beispiel");

final String content = templateEngine.process("header.html", context);

Im ersten Schritt wird mit dem ClassLoaderTemplateResolver ein Resolver definiert, welcher schlussendlich dafür sorgt die Templates aus den Ressourcen (im resources-Ordner) bezogen werden. Daneben wird der Template-Modus eingestellt. Neben dem Modus HTML5 unterstützt Thymeleaf wie z.B. TEXT oder JAVASCRIPT. Danach wird die Template Engine erstellt und ihr der Resolver zugewiesen. Die Variablen, welche in diesem Fall im Template genutzt werden, werden über den Context definiert und gesetzt. Anschließend wird das Ganze an die process-Methode der Template Engine übergeben. Als Ergebnis erhalten wir im String content folgenden Inhalt:

<!DOCTYPE html>
<html>
<head>
    <title">Ein minimales Beispiel</title>
</head>
<body>
</body>
</html>

Damit wurde Thymeleaf in einer minimalen Variante angewendet. Die offizielle Seite der Template Engine ist unter thymeleaf.org zu finden. Lizenziert ist Thymeleaf unter der Apache License in der Version 2.0 und damit freie Software.

Sumatra PDF als Standard-App unter Windows 10 einrichten

Ich bin ein Freund von leichtgewichtigen Apps. Deshalb nutze ich für die Anzeige von PDF-Dateien unter Windows die Applikation Sumatra PDF. Dabei handelt es sich um einen freien, unter der GPL3 lizenzierten, PDF-Reader. Unter Windows 10 hatte ich allerdings das Problem das Sumatra PDF nicht als Standard-App für die Anzeige von PDF-Dateien eingerichtet werden konnte.

Sumatra PDF mit einem geöffneten Dokument

Versuchte man Sumatra PDF als Standard-Applikation zu definieren, so funktionierte dies auf den ersten Blick. Doch beim erneuten Versuch ein PDF zu öffnen, wurde ein andere Applikation zur Darstellung der PDF genutzt.

Die Auswahl der Standard-Applikation

Die Lösung für dieses Problem ist es Sumatra PDF mit administrativen Rechten (Als Administrator ausführen) auszuführen. Anschließend öffnet man über das Menü Einstellungen den Punkt Optionen. Im sich öffnenden Fenster findet sich unten ein Button, mit welchem Sumatra PDF als Standard-App eingerichtet wird. Nachdem dies geschehen ist, werden zukünftig alle PDFs mit Sumatra PDF geöffnet.

Freier Bildbetrachter für Windows (und andere Systeme)

Der integrierte Bildbetrachter unter Windows 10 ist nicht das Gelbe vom Ei; so dass ich mich nach einer Alternative umgeschaut habe. Schlussendlich gelandet bin ich beim freien Bildbetrachter Nomacs. Nomacs unterstützt gängige Dateiformate wie PNG, JPEG, TIFF, BMP und viele andere Formate. Neben den Funktionen zur Bildbetrachtung, verfügt Nomacs über einige Funktionalität zur Bildbearbeitung. Diese umfasst unter anderem das Beschneiden von Bildern sowie die Fähigkeit die Größe von Bildern anzupassen oder Bilder zu rotieren. Die meisten alltäglichen Aufgaben, im Zusammenhang mit Bildern, sollten sich mittels Nomacs problemlos erledigen lassen. Eine etwas ungewöhnlichere Funktionalität von Nomacs ist die Synchronisation mehrerer Instanzen des Bildbetrachters.

Nomacs in Aktion

Neben der Windows-Version ist Nomacs für unterschiedliche Linux-Distributionen (z.B. Debian, Arch Linux oder Fedora), macOS und sogar OS2 erhältlich. Lizenziert ist der Quelltext unter der GPL in Version 2; bezogen werden kann er über GitHub. Die Webseite des Projektes ist auf nomacs.org zu finden.

Probleme mit dem cryptsetup-Workarround

Vor einigen Monaten veröffentlichte ich eine Anleitung zur Verschlüsselung eines Ubuntu-Servers. Da es einen Bug im cryptsetup gab, wurde in dem Artikel ein Workarround beschrieben. Mittlerweile wurde das cryptsetup-Paket aktualisiert und der entsprechende Bug gefixt. Allerdings führt dies zu Problemen mit dem Workarround. Möchte man den Server nun entsperren, erhält man folgende Meldung:

$ cryptroot-unlock
/bin/cryptroot-unlock: line 192: 2: parameter not set
/bin/cryptroot-unlock: line 192: 2: parameter not set
/bin/cryptroot-unlock: line 192: 2: parameter not set

Gelöst werden kann dieses Problem in dem folgendes Kommando genutzt wird:

sed 's/print $1, $5/print $1, $3/' /bin/cryptroot-unlock > /tmp/cryptroot-unlock; ash /tmp/cryptroot-unlock

Damit lässt sich der Server entsperren. Im zweiten Schritt kann nun der Workarround entfernt werden und das initramfs aktualisiert werden:

rm /etc/initramfs-tools/hooks/cryptsetup-fix.sh 
update-initramfs -u

Nach einem Neustart des Systems, kann dieses nun wie folgt entsperrt werden:

BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3) built-in shell (ash)
Enter 'help' for a list of built-in commands.

# cryptroot-unlock 
Please unlock disk cryptroot (/dev/md1): 
cryptsetup: cryptroot set up successfully
# exit

Anschließend wird das System hochgefahren und der Server steht zur Verfügung.