icon
Personal Website

Weekly Coding • 2025-11-30

Persönliche Website und Spring Boot 🍃☕

Diese Woche habe ich mein Web-Zähler-Projekt auf Vordermann gebracht. Nun zählt es die Seitenaufrufe auf meiner persönlichen Website: https://hinst.github.io/ . Damit der Zähler funktioniert, muss JavaScript im Browser aktiviert sein. Besuche durch Bots, die lediglich die HTML-Seite herunterladen, werden nicht gezählt. Die Daten werden in einer SQLite-Datenbank gespeichert. Ich habe auch eine Spam-Prävention implementiert:

  • Der Server multipliziert zwei einfache Zahlen.
  • JavaScript auf der Client-Seite muss herausfinden, welche beiden Zahlen das waren.

So kann ein API-Missbrauch nicht unbegrenzt fortgesetzt werden. Um die Antwort auf den Server-Rätsel zu entschlüsseln, muss man sich ins Zeug legen. Die Schutzmaßnahme ist anpassbar: Wenn man die Anzahl der Faktoren geringfügig erhöht, wird das Entschlüsseln des Rätsels auf der Client-Seite eine ganze Ewigkeit dauern. Ob ein solcher Schutz für mein kleines Projekt nötig ist, ist allerdings fraglich 🤔💭 Auf alle Fälle habe ich durch diese Funktion weitere Erfahrungen mit Spring Boot gesammelt.

https://github.com/hinst/web-counter

Kubernetes und Orange Pi 🐋🍊

Hier habe ich zwei Probleme behoben.

Erstens war bei meiner Orange Pi der RAM-Log aktiviert. Diese Funktion ist standardmäßig aktiviert und hat dazu geführt, dass die Logs in Kubernetes verschwanden. Ich musste sie deaktivieren. Die Logs werden nun nicht mehr verlorengehen, aber der Speicherbelastung wird zunehmen.

Außerdem habe ich entdeckt, dass meine Persistent Volume Claims (PVCs) falsch konfiguriert waren. Es scheint, dass jede Paarung aus PV und PVC über einen übereinstimmenden storageClassName verbunden sein muss. Bisher hatte ich das nicht bemerkt, da meine PV aufgrund eines "glücklichen Zufalls" auf die richtigen PVCs verteilt wurden 🤔🚿 Eine etwas verwirrende Funktion, finde ich.