Spring Projekte einfach anlegen

Das Anlegen eines Projektes mit dem Spring-Framework (bzw. unter Zuhilfenahme von Spring Boot) kann von Hand erfolgen. Einfacher ist es den Spring Initializr zu nutzen. Über das Webinterface kann die Art der Projektes, die gewünschte Sprache und Spring Boot-Version definiert werden. Anschließend können gewünschte Abhängigkeiten ausgewählt und das Projekt generiert und heruntergeladen werden.

Mit dem Spring Initializr können Projekte schnell angelegt werden

Eine Instanz des Projektes ist unter start.spring.io zu finden. Der Quelltext des Projekts ist auf GitHub hinterlegt. Lizenziert ist Spring Initializr unter Apache License in der Version 2 und damit freie Software.

Steam startet unter macOS nicht

Auf einem MacBook Air habe ich ein neues System aufgesetzt. Neben anderer Software, wollte ich unter anderem Steam installieren. Nach der Installation startete Steam und lud die entsprechenden Daten herunter. Danach beendete sich Steam selber. Auch der mehrmalige Versuch Steam zu Starten führte zum gleichen Fehlerbild. Das Löschen des Ordners mit den Applikationsdaten:

~/Library/Application Support/Steam

half leider ebenfalls nicht. Für die Fehlersuche startete ich Steam im Terminal:

cd /Applications/Steam.app/Contents/MacOS/
./steam_osx

Dort erschient folgende Ausgabe:

[2019-01-13 18:33:37] Startup - updater built Aug 22 2016 17:36:46
/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppleFSCompression/AppleFSCompression-96.200.3/Common/ChunkCompression.cpp:49: Error: unsupported compressor 8
/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppleFSCompression/AppleFSCompression-96.200.3/Libraries/CompressData/CompressData.c:353: Error: Unknown compression scheme encountered for file '/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/Exceptions.plist'
/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppleFSCompression/AppleFSCompression-96.200.3/Common/ChunkCompression.cpp:49: Error: unsupported compressor 8
/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppleFSCompression/AppleFSCompression-96.200.3/Libraries/CompressData/CompressData.c:353: Error: Unknown compression scheme encountered for file '/System/Library/CoreServices/CoreTypes.bundle/Contents/Library/AppExceptions.bundle/Exceptions.plist'
[2019-01-13 18:33:38] Startup - updater built Jan  4 2019 15:25:44
found breakpad via in process memory: '/Users/seeseekey/Library/Application Support/Steam/Steam.AppBundle/Steam/Contents/MacOS/Frameworks/Breakpad.framework/Versions/A/Resources'
Installing breakpad crash handler
[2019-01-13 18:33:38] Steam requires that '/Users/seeseekey/Library/Application Support/Steam/Steam.AppBundle/Steam/Contents/MacOS' be on a case-insensitive filesystem.
SteamID:  0, universe Public
[2019-01-13 18:33:38] Steam requires that '/Users/seeseekey/Library/Application Support/Steam/Steam.AppBundle/Steam/Contents/MacOS' be on a case-insensitive filesystem.
[2019-01-13 18:33:38] Verifying installation...
[2019-01-13 18:33:38] Shutdown
[2019-01-13 18:33:38] Unable to read and verify install manifest /Users/seeseekey/Library/Application Support/Steam/Steam.AppBundle/Steam/Contents/MacOS/package/steam_client_osx.installed
[2019-01-13 18:33:38] Verification complete
[2019-01-13 18:33:38] Downloading update...
[2019-01-13 18:33:38] Checking for available updates...
[2019-01-13 18:33:38] Downloading manifest: client-download.steampowered.com/client/steam_client_osx
[2019-01-13 18:33:38] Error: Download failed: http error 0

Nach der Auswertung der Ausgabe ergab sich das es sich hier ebenfalls um ein Problem mit dem case-sensitiven Dateisystem auf dem macOS-Rechner handelte.

Steam verträgt case-sensitive Dateisysteme unter macOS nicht

Für dieses Problem bieten sich zwei Lösungen an. Bei der radikalen Lösung wird der Rechner bzw. die Partition neu aufgesetzt. Die andere Möglichkeit wäre es eine Partition zu erstellen, welche mit einem case-insensitiven Dateisystem betrieben wird und der entsprechende Application Support-Ordner per Hardlink zu dieser neuen Partition zeigen zu lassen. Schön ist keine der Lösungen, vor allem da sich jenes Problem durch die Anwendung (in diesem Fall Steam) lösen ließe. Meine pragmatische Lösung war es in diesem Fall Steam nicht zu installieren und stattdessen den Rechner produktiv zu nutzen.

Applikationsdaten unter macOS

Wenn eine Applikation unter macOS genutzt wird, speichert diese ihre Daten in einem Verzeichnis mit dem Namen Application Support. Je nachdem ob die App ohne oder mit einer Sandbox läuft, befindet sich dieser Ordner an einer unterschiedlichen Stelle. Bei Apps ohne Sandbox ist dies:

~/Library/Application Support/com.example.application/

Apps, welche in einer Sandbox laufen, haben ihren Quellpunkt im Dateisystem allerdings im Pfad:

~/Library/Containers/com.example.application/

Damit befindet sich das Application Support-Verzeichnis bei Apps, welche in einer Sandbox laufen, im Pfad:

~/Library/Containers/com.example.application/Data/Library/Application Support/

Nützlich ist z.B. wenn Daten einer Applikation von einer macOS-Installation zu einer anderen Installation verschoben werden sollen.

TLS – Schritt für Schritt erklärt

Wenn eine URL wie z.B. https://example.com über den Browser aufgerufen wird, erfolgt dieser Aufruf verschlüsselt. Zuständig dafür ist die Transport Layer Security kurz TLS. Wie genau die Aushandlung von TLS funktioniert, kann sich Byte für Byte auf der Webseite tls.ulfheim.net angeschaut werden.

The Illustrated TLS Connection

Auf der Seite wird in aller Ausführlichkeit der Verbindungsaufbau von TLS erläutert. Dabei wird wie es die Seite verspricht, jedes einzelne Byte entsprechend erklärt. Das Projekt, dessen Quelltext auf GitHub zu finden ist, ist unter der MIT-Lizenz lizenziert und damit freie Software.

Emulatoren in JavaScript

In JavaScript wurde eine unglaubliche Zahl an Anwendungen geschrieben. Von den einfachen Anwendungen der Frühzeit zu den mittlerweile komplexen Anwendungen der Neuzeit. So ist es zum Beispiel möglich das Nintendo Entertaiment System, zu dem in einem wissenschaftlichen Paper folgendes steht:

1 Introduction

The Nintendo Entertainment System is probably the best video game console, citation not needed.

zu emulieren. Im Browser läuft das Ganze dann mit einer Framerate von 60 frames per second und lässt sich flüssig spielen:

Der NES-Emulator CycloaJS

Neben diesem Emulator gibt es eine Unzahl an weiteren Emulatoren für die unterschiedlichsten Systemen angefangen bei Konsolen wie dem SNES, dem GameBoy über alte DDR-Computer wie den KC85 bis hin zu älteren Großrechnern wie der PDP-11. Eine Sammlung dieser in JavaScript geschriebenen Emulatoren ist auf in dem GitHub-Repository jsemu zu finden.