seeseekey.net - Invictus Deus Ex Machina

Wer eine Apple Watch sein Eigen nennt, wird sich unter Umständen darüber wundern, das etwas was selbst günstige Fitnesstracker wie das Mi Band 2 beherrschen bei der Apple Watch nicht Out of the Box funktioniert. Die Rede ist vom Tracking und der Aufzeichnung des Schlafverhaltens.

Die App bei einer Auswertung

Dank der App AutoSleep kann man diese Funktionalität nachrüsten. Anhand der Bewegungsaktivität der Apple Watch und des iPhones versucht die App zu erkennen, wann der Träger der Apple Watch im Bett liegt und schläft.

Dabei kennt die App zwei unterschiedliche Modi. Beim ersten Modi trägt man die Apple Watch während der Nacht; AutoSleep erkennt anhand der Bewegungsmuster ob der Nutzer schläft. Da die Apple Watch ab und an auch geladen werden muss, gibt es den zweiten Modus. In diesem nimmt die App an dass man, während die Smartwatch nachts lädt, schläft. Damit die Ergebnisse möglichst nah an der Realität sind, gibt es eine Reihe von Einstellungsmöglichkeiten innerhalb der App. So kann man mit der Apple Watch mit etwas softwareseitiger Hilfe den Schlaf tracken.

Für ein U-Bahn-System welches ich auf meinem Minecraft-Server bauen wollte, war ich auf der Suche nach einem System um in einen Bahnhof einzufahren und nach einer gewissen Wartezeit wieder in die Richtung Fahrrichtung zu fahren, falls der Spieler nicht vorher aus der Lore aussteigt.

Das System von oben

Herausgekommen ist ein System, bei welchem der Zug einfährt und ein Redstone-Signal mit einer Aktivierungsschiene auslöst. Dieses Signal aktiviert eine Trichter-Clock. Über die Größe der Trichter-Clock kann die Zeitdauer des Stops auf dem Bahnhof bestimmt werden. Sobald die Trichter-Clock einmal im Kreis gelaufen ist, löst sie ein Signal aus und schießt den Zug ab. Damit das Signal lang genug ist wird eine Schaltung zur Verlängerung des Signals genutzt. Ansonsten würde der Zug während der Anfahrt stecken bleiben.

Die Signalverlängerung

Das Problem das der Zug in die richtige Richtung fährt, wurde dadurch gelöst das er vor dem Stopp eine Erhöhung befahren muss und in der Erhöhung zum stehen kommt. Bekommen die Schienen wieder das Redstone-Signal erledigt die Schwerkraft den Rest. Damit sind manuelle Abschüsse ebenfalls möglich.

Vor einigen Tagen bin ich über ein Trailer zu einem Spiel gestolpert, welches sich als selbst vorstellt als:

The only ancient germanic future lightning action game you need in 2016

Damit ist der Trailer ausreichend gut beschrieben.

Im Spiel selber geht es darum, den Lichtspeer, welcher von einem gelangweilten Gott entgegengenommen wurde, durch die Horde der Gegner zu führen. Das Spiel sollte am besten im englischen Original gespielt werden, da dadurch der recht schräge Humor der Lichtspeer-Macher besser zur Geltung kommt. Die Webseite des Spieles ist unter lichtspeer.com zu finden.

In Minecraft gibt es seit einigen Versionen sogenannte Banner. Diese werden aus unterschiedlichsten Elementen erstellt. Aus diesen Elementen innerhalb des Spieles ein Banner zu erstellen, kann dabei unter Umständen ein wenig kompliziert werden. Einfacher geht es mit einem Banner Generator im Browser.

Ein erzeugtes Banner kann anschließend exportiert werden

Mit dem Banner Generatur welcher unter needcoolshoes.com/banner zu finden ist, kann sich ein Banner aus den unterschiedlichsten Mustern und Farben einfach zusammengeklickt werden. Anschließend kann dieser Banner in Form eines Kommandos exportiert werden. Daneben wird auch die Bauanleitung generiert, so das der Banner von Hand direkt im Spiel gebaut werden kann.

Wenn man eine nicht mehr verfügbare Webseite aufrufen möchte oder einen älteren Stand einer Webseite benötigt ist die Wayback Machine vom Internet Archive stets zur Stelle. Das Internet Archive ist eine gemeinnützige Organisation, welche seit 2007 offiziell als Bibliothek vom US-amerikanischen Bundesstaat Kalifornien anerkannt ist.

archive.org/web/

Manchmal benötigt man einen Snapshot einer bestimmten Version der Webseite und möchte diesen nicht umständlich über das Webinterface der Wayback Machine herunterladen. In diesem Fall kann sich des Tools wayback-machine-downloader bedienen. Dieses Tool, welches in Ruby geschrieben ist, kann einfach über den Ruby-Paketmanager installiert werden:

gem install wayback_machine_downloader

Anschließend kann das Tool genutzt werden:

wayback_machine_downloader http://example.com

Damit wird der letzte gesammelte Snapshot heruntergeladen. Daneben existieren Option wie die –to Optionen um den Snapshot nur aus einem bestimmten Zeitraum zu holen. Da ich mehrere Snapshots einer Seite benötigte habe ich das ganze in ein Skript gegossen:

#sh

for i in `seq 127 1`;
  do
    # Define date postfix
    DATE_POSTFIX="28120000";
			
    # Linux (Linux date)
    #DATE=`date +%Y%m -d "$i month ago"`    
				
    # macOS (BSD date) 
    DATE=`date -j -v-${i}m +%Y%m` 
    
    # Add date postfix
    DATE=$DATE$DATE_POSTFIX
				
    # Create folder for snapshot
    mkdir $DATE
    cd $DATE

    # Download snapshot
    wayback_machine_downloader http://example.com --to $DATE

    # Leave folder
    cd ..
  done  

In diesem Skript wird durch das Skript 127 Monate in die Vergangenheit gereist und ein Snapshot der Webseite heruntergeladen. Das ganze läuft so lange durch bis das Ende der Schleife erreicht ist. So erhält man pro Monat einen Snapshot. Der Wayback Machine Downloader, dessen Quelltext auf GitHub zu finden ist, ist unter der MIT Lizenz lizenziert und damit freie Software.

Einfache Kommandos lassen sich in Minecraft mit ein paar Kenntnissen schnell zusammenbauen. Schwieriger wird es wenn man komplexe Befehle wie Items mit Verzauberungen oder Pfeile welche in eine bestimmte Richtung schießen erzeugen möchte. Hier kann man viel durch Trial und Error erreichen. Einfach wird es mit dem Generator-Tool MCStacker.

MCStacker in Aktion

Mit dem Tool ist es möglich sich schnell komplexe Befehle per Point & Click zusammenzubauen. Diese können anschließend übernommen und in Minecraft ausprobiert werden. Zu finden ist der Generator unter mcstacker.bimbimma.com.

Auf einem meiner Raspberry Pi-Rechner läuft eine in Mono geschriebene Server-Applikation. Damit die Server-Applikation funktionierte benötigte sie natürlich die Mono Runtime. Diese kann unter Raspbian einfach mittels des Kommandos:

apt-get install mono-runtime

installiert werden. Als ich die Serverapplikation nach der Installation von Mono ausführen wollte erhielt ich allerdings folgende Fehlermeldung:

Missing method .ctor in assembly Melinda.dll, type System.Runtime.CompilerServices.ExtensionAttribute
Can't find custom attr constructor image: Melinda.dll mtoken ...

Dieses Problem ließ sich durch die Installation der Bibliothek libmono-system-core4.0-cil beheben:

apt-get install libmono-system-core4.0-cil

Im Anschluss erhielt ich bei einem erneuten Startversuch eine weitere Fehlermeldung:

Grapevine.Exceptions.Server.UnableToStartHostException occurred
An error occured when trying to start the Grapevine.Server.RestServer

In diesem Fall kam die Fehlermeldung vom REST-API Framework Grapevine. Allerdings war der Fehler nicht wirklich in der Bibliothek zu finden. Stück für Stück kamen weitere Fehlermeldungen wie diese:

System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.

zustande. Nach einiger Recherche war klar: auch in diesem Fall fehlten weitere Abhängigkeiten aus dem Mono-Framework. In diesem Fall half die Holzhammermethode; die Installation des kompletten Mono-Frameworks. Dazu wurde das Paket mono-complete mittels:

apt-get install mono-complete

installiert. Dieses nimmt ein paar mehr Megabyte als das Runtime-Paket in Anspruch, allerdings sind damit alle möglichen Abhängigkeiten installiert. Somit kann man sich auf die eigentliche Entwicklung und Ausführung der eigenen Applikationen konzentrieren, anstatt einer kuriosen Fehlermeldung nach der anderen hinter her zu jagen.

Seit November 2016 wird die Standarddistribution für den Raspberry Pi namens Raspbian, eine auf Debian basierende Distribution, mit deaktiviertem SSH-Server ausgeliefert. Was aus Sicherheitsgründen lobenswert ist hat natürlich für die schnelle Inbetriebnahme eines Raspberry Pi einige Nachteile.

Ein Raspberry Pi 3

Allerdings existieren zwei relativ einfache Wege den SSH-Dienst wieder zu aktivieren. Die erste Möglichkeit ist, nachdem das Image auf die für den Raspberry Pi verwendete SD- bzw. microSD-Karte gebracht wurde, auf der boot-Partion der Karte eine Datei mit dem Namen ssh anzulegen. Ist diese Datei vorhanden, so wird der SSH-Serverdienst beim Start des Raspberry Pi aktiviert.

Die entsprechende Option in raspi-config

Läuft der Raspberry Pi bereits und man hat Zugriff auf diesen kann der SSH-Dienst mittels des Konfigurationstools raspi-config aktiviert werden. Nachdem dieses gestartet wurde, wird dort der Punkt Interfacing Options ausgewählt. Dort findet sich der Unterpunkt P2 SSH. Wählt man diesen Unterpunkt an, wird nach der Bestätigung der Sicherheitsabfrage der SSH-Dienst aktiviert.

Nach der Sicherheitsabfrage wird der SSH-Dienst aktiviert

Nun kann sich (wenn das Raspbian noch in der Standardkonfiguration läuft) mittels:

ssh pi@raspberry.local

und dem Passwort raspberry eingeloggt werden. Da man dieses Passwort nach der Ersteinrichtung ändern sollte, erhält man beim Login über ssh folgenden Hinweis:

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

Dieses Hinweis sollte befolgt werden und das Passwort mit dem Kommando:

passwd

geändert werden. Anschließend kann der Raspberry Pi ohne Probleme mit dem SSH-Dienst genutzt werden. In der offiziellen Raspberry Pi Dokumentation wird weiterführend auf das Thema eingegangen. Dort wird neben der eigentlichen Einrichtung des SSH-Dienstes auch die Nutzung verschiedener Clients in den unterschiedlichen Betriebssystemen besprochen.

Möchte man zu einer Domain die IP-Adresse und weitere DNS-Informationen ermitteln kann man unter Windows das Tool nslookup nutzen. Ein einfacher Aufruf sieht dabei so aus:

nslookup example.com

Hierbei wird der DNS-Server genutzt welcher an dem genutzten Rechner eingestellt ist. Allerdings kann auch ein abweichender Server definiert werden. Dazu muss nach der abzufragenden Domain der gewünschte DNS-Server angegeben werden:

nslookup example.com 8.8.8.8

In diesem Fall wird der Google eigene DNS-Server mit der IP 8.8.8.8 genutzt. Die Antwort auf diese Anfrage sieht exemplarisch so aus:

Nicht autorisierende Antwort:
Server:  google-public-dns-a.google.com
Address:  8.8.8.8

Name:    example.com
Addresses:  2606:2800:220:1:248:1893:25c8:1946
          93.184.216.34