Beats
- Beschreibung
-
Die Internet Time ist eine Erfindung aus der Schweiz, auch als Swatch™ Beats® bekannt.Es ist absurd und genial zugleich:Der Tag wird in
1000
Einheiten (Beats) unterteilt, und diese sind weltweit einheitlich. Sommer- bzw. Normalzeit gibt es nicht.Punktabzug in der B-Note gibt es, dass dazu eine neue Zeitzone erfunden wurde - die Biel Mean Time.Ist aber deckungsgleich mit der NormalzeitEurope/Berlin
bzw.UTC+1
- Projekt
-
Das Problem an sich ist einfach, aber lass doch mal was mit
MQTT
undWebSockets
machen.Buzzword-Kompatibel einen Microservice in Java mit Spring-Boot.Zum vollen Beat wird dieser perMQTT
veröffentlicht, die Webseite zeigt Beats, Centi-Beats und Milli-Beats an.Auch gibt es eine REST-Api und eine Metrics Integration für Prometheus. - Werkzeuge
-
Spring-Boot auf Java 17 (damals; inzwischen 21), dazu den WebSocket Stater. Eclipse Paho für den
MQTT
Client.Im Frontent: Vue3, SockJs und WebStomp. Dazu Bulma fürs CSS. - Implementierung
-
Ein Tag hat
86400
Sekunden (24 Stunden * 60 Minuten * 60 Sekunden
).Fein durch Tausend geteilt ergibt das den Faktor86.4
Diesen muss man nur mit der momentanen Anzahl der Sekunden des Tages (inUTC+1
natürlich) multiplizieren, fertig ist der Karton!Das ganze ins Spring Framework geworfen, WebSockets dran kleben, einen Aktuator für Prometheus implementieren,dazu noch bisschen mit Paho einenMQTT
Client basteln und zum richtigen Moment die Beats auf das (konfigurierbare) Topic publishen.Nichts weltbewegendes, ganz normaler (Business-) Wahnsinn.Aber: es macht Spaß, und so soll es doch auch sein! - Impression
-
Zugegeben: Visuell ist die Webseite nicht sehr anspruchsvoll. Mehr Information als die aktuelle Zeit ist halt einfach nicht drin.Immherhin hab ich noch die eine Progress-Bar hingezimmert.Beim Klick wechselt die Anzeige der Zahl zwischen Vollen-, Centi- und Milli-Beats. Such wow!
-
Man kann errechnen wie viel Uhr es zum Zeitpunkt des Screenshot war - exakt
17:33:32
Uhr (UTC
). - Vortrag
-
Für den lokalen Hackerspace™ vor Ort hatte ich mal einen kurzen Vortrag über diesen Service gehalten.Schließlich läuft Beats auch dort, und füttert die
MQTT
Installation brav mit der aktuellen Uhrzeit. Internet kompatibel.Ganz klar, dazu gibt es auch Folien. - Probleme
-
Zur Zeit des Vortrags hatte ich noch einen fießen Bug im Code...Das Problem war: Bei Anzeige von Centi- & Milli-Beats wurden manchmal die Nachkommastellen übersprungen.Im Prinzip™ hat alles funktioniert, die (normalen) Beats waren doch immer korrekt.Es hat bisschen gedauert, und ich hab viel gefrickelt, bis es mir wie Schuppen von den Augen fiel...Ein Beat ist zwar nur eine Minute und 26.4 Sekunden langAber für ein zehntel oder sogar hundertstel davon ist die sekundengenaue Auflösung viel zu grob.Sieh an: Nachdem ich alles auf Nanosekunden umgestrickt habe schnurrt alles wie ein Kätzchen. Butterweich. Phänomenal!
- Fazit
-
Die Komplexität ist echt überschaubar. Der Sinn dahinter: Naja.. Fragwürdig.Dennoch: Es ist eine Fingerübung.Es ist also möglich mit der sperrigen Sprache Java filigrane Sachen zu machen, und dabei alles mit Unit-Tests abzudecken.Außerdem wollte ich mir das Thema WebSockets mal ein bisschen näher anschauen... Es ist interessant, überzeugt mich aber (noch?) nicht.Auch habe ich eine Menge über
MQTT
gelernt. Das ist die Hauptsache.Alles in allem - hat Spaß gemacht; Gerne wieder.
Internet Time
- Erstellt
- 02.10.2022 - 07:56:26
- Editiert
- 20.04.2024 - 21:44:42
- Tags
- Java
- MQTT
- Microservice
- Projekt