Nethack im Browser

Nethack, einer der Klassiker des Roguelike, wird im Normalfall im Terminal gespielt. Allerdings hat man nicht zu jeder Zeit ein Terminal in Reichweite. Einfacher ist es den Browser zu starten und BrowserHack zu spielen. Diese Implementation bzw. Portierung von Nethack findet sich unter coolwanglu.github.io/BrowserHack/. Im Gegensatz zum klassischen Nethack auf dem Terminal, werden bei BrowserHack entsprechende Tilesets unterstützt. Dadurch wird es für Einsteiger einfacher, einen Weg in das Spiel zu finden.

Mit BrowserHack kann Nethack im Browser gespielt werden

Der Quelltext von BrowserHack ist auf GitHub zu finden. Lizenziert ist das Ganze unter der NetHack General Public License kurz NGPL, welches eine von der Open Source Initiative zertifizierte freie Lizenz ist.

Alle Snaps unter Ubuntu aktualisieren

Unter Ubuntu gibt es neben klassischen Paketsystem seit einigen Versionen sogenannte Snaps. Bei diesen handelt es sich um Pakete einer weiteren Paketverwaltung mit dem Namen Snappy. Im Gegensatz zum klassischen Paketmanager sind Snap-Pakete in soweit vom System entkoppelt, als das sie ihre Abhängigkeiten mitbringen. Mir stellte sich die Frage wie besagte Snap-Pakete aktualisiert werden können. Mit Hilfe der Terminals und des Befehls:

snap refresh

kann diese Aufgabe schnell erledigt werden. Wird nach dem Parameter refresh noch ein weiterer Parameter angehangen, so wird dieser als Paketname interpretiert und nur dieses Paket aktualisiert. Ebenfalls interessant ist der Befehl:

snap list

welcher alle installierten Snap-Pakete auflistet. Entfernt werden können Snap-Pakete wieder mit dem Kommando snap remove und dem entsprechendem Paketnamen.

jar-Datei in eine exe-Datei verpacken

Bei der Entwicklung von Java-Applikationen kommt am Ende meist eine jar-Datei (die Kurzform von Java Archive) heraus. Soll diese Datei an Otto Normalverbraucher unter Windows ausgeliefert werden, so wundert sich dieser sicherlich etwas. Immerhin erwarten die meisten Normalverbraucher eine ausführbare Datei in Form einer exe-Datei. Mit Hilfe des Tools Launch4j ist das genau das möglich. Launch4j wrappt die jar-Datei und erzeugt eine ausführbare exe-Datei. Daneben kann Launch4j einfache Starter erzeugen, ohne das ganze in eine ausführbare Datei zu wrappen.

Die Projektseite von Launch4j

Launch4j erzeugt zwar ausführbare Dateien für Windows, allerdings kann das es selber neben Windows auch unter macOS und Linux genutzt werden. Die offizielle Seite des Projektes ist unter launch4j.sourceforge.net zu finden. Lizenziert ist Launch4j unter der BSD-Lizenz und damit freie Software. Der Quellcode ist auf SourceForge zu finden, daneben existiert ein Mirror auf GitHub.

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.