Andreas Bruns

Softwareentwicklung für Oldenburg und Bremen

17. Juli 2022
von bruno
Kommentare deaktiviert für End2End-Test einer Ionic-Anwendung mit Cypress

End2End-Test einer Ionic-Anwendung mit Cypress

Für Web-Projekte setze ich gerne das Ionic-Framework ein, das jetzt neben Angular auch React und Vue.js als Frontend-Webframework unterstützt. Mein Favorit ist dabei Angular, das eine umfangreiche Rahmen-Architektur mitliefert und so Entwicklern eine einfache Struktur zur Orientierung bietet. Das in den vorherigen Versionen für End2End-Tests eingesetzte Werkzeug Protractor wird nicht mehr weiterentwickelt, sodass man sich jetzt selbst nach einem guten Ersatz umschauen muss.

Weiterlesen →

30. März 2021
von bruno
Kommentare deaktiviert für Web-Applikation für „Unicycle-Team goes Green“

Web-Applikation für „Unicycle-Team goes Green“

Die FahrerInnen des Unicycle-Teams Harpstedt erfahren im Rahmen der Aktion „Unicycle-Team goes Green“ innerhalb von drei Wochen jeder für sich Strecken auf dem Einrad und übermitteln Bilder ihrer mitgeführten Fitness-Tracker. Alle Strecken einer Woche werden zu einer virtuellen Strecke von maximal 130 km addiert und auf einer Karte der Samtgemeinde Harpstedt mit ihren 39 Gemeindeteilen dargestellt. Für jeweils zehn erradelte Kilometer spendet ein Harpstedter-Unternehmen einen Obstbaum, sodass innerhalb von drei Wochen bis zu 39 Obstbäume gespendet werden.

Unicycle-Team Harpstedt (März 2021)

Damit sich die FahrerInnen, die Sponsoren, die Presse und alle Interessenten über die Aktion und den aktuellen Stand informieren können, durfte ich eine kleine Web-Applikation entwickeln und bereitstellen.

Unicycle-Team goes Green: Karte der zurückgelegten Strecke
Unicycle-Team goes Green: Karte der zurückgelegten Strecke

Folgende Anforderungen haben wir für unsere Web-Applikation identifiziert:

  • tagesaktuelle Darstellung der gefahrenen Kilometer auf einer Karte
  • Anzeigen von statischen Webseiten (Anleitung, Sponsoren, Galerie)
  • Erfassung von Formular-Daten und Hochladen von Track-Bildern
  • Admin-Oberfläche zur Auswertung der erfassten Daten
  • Unterstützung geringer Handy-Auflösungen durch responsives Weblayout
Weiterlesen →

22. Januar 2021
von bruno
Kommentare deaktiviert für Managed Kubernetes: Günstiges deutsches Angebot von Netways

Managed Kubernetes: Günstiges deutsches Angebot von Netways

Die Vorteile von Kubernetes (K8S) und wie man für Testzwecke einen eigenen Cluster mit Raspberry Pis aufbauen kann, habe ich vor einem Jahr in dem Artikel k3s – 5 weniger als k8s (Kubernetes) skizziert. Einfacher und schneller gelingt natürlich der Einstieg durch die Verwendung von gemanagten Kubernetes-Clustern (wie Googles GKE und Amazons EKS). Mit einem Managed Kubernetes umgeht man auch einige Herausforderungen, die ich mit meinem Cluster auf Pi-Basis habe:

  • Pi-Lösung funktioniert momentan nur im lokalen Netzwerk, wobei manche Applikationen auch öffentlich zugänglich sein sollen
  • sehr eingeschränkte Ressourcen nur verfügbar (Arbeitsspeicher, Performanz und Netzwerkdurchsatz)
  • die ARM-Architektur des Pis wird von vielen Docker-Images (bzw. Helm-Charts) nicht unterstützt

In der Zwischenzeit haben sich viele neue Angebote für Managed Kubernetes entwickelt. Mir gefällt das Angebot des deutschen Anbieters Netways sehr gut, der ein Kubernetes-Cluster mit öffentlicher IP-Adresse für unter 70,- Euro ermöglicht. Folgende Kriterien sind meistens für einen detailierten Kostenvergleich relevant:

  • Anzahl und Leistung der Master-Node (Control Plane Nodes)
  • Anzahl und Leistung der Worker Nodes
  • anfallender Netzwerkverkehr
  • verwendeter Festplattenspeicher
  • Anzahl öffentlicher IP-Adressen
Weiterlesen →

27. Oktober 2020
von bruno
Kommentare deaktiviert für Modul-Systeme für JavaScript im Überblick

Modul-Systeme für JavaScript im Überblick

Wenn man die ersten Tutorials eines Frameworks im JavaScript-Universum durchführt (z.B. Node, TypeScript, Angular, React, Ionic), funktionieren meistens alle Schritte relativ problemlos. Doch sobald wir fremde Bibliotheken einbinden oder sogar selber wiederverwendbare Bibliotheken erstellen wollen, müssen wir uns mit dem Modul-Begriff in JavaScript auseinandersetzen.

In diesem Artikel versuche ich, für JavaScript-Neulinge (wie ich es war) ein bischen Klarheit in den Zoo von Begriffen im Modul-Umfeld zu schaffen. Folgende Stichwörter sollten wir anschließend einordnen können: ES2015, AMD, CommonJS, UMD, SystemJS, Babel, Browserify, RequireJS, Webpack, Module Loader, Module Bundler, import, export, define, require.

Weiterlesen →

26. Juli 2020
von bruno
Kommentare deaktiviert für Docker-Images per Nexus auf Raspberry Pi verwalten

Docker-Images per Nexus auf Raspberry Pi verwalten

Während der Softwareentwicklung verwenden wir häufig installierbare Bibliothek- und Programm-Pakete. Für deren Verwaltung werden Repository-Manager eingesetzt, die das Hochladen, Suchen und Herunterladen von Paketen erlauben. Der Einsatz eines eigenen Repository-Managers bietet einige Vorteile:

  • private Pakete werden nicht in ein öffentliches Repository hochgeladen
  • verringerte Netzwerklast bei einem Proxy-Repository im eigenen Netzwerk
  • erhöhte Verfügbarkeit, falls ein öffentliches Repository ausfällt
  • zentraler Ort für unterschiedliche Paket-Typen

Eine weit verbreitete Lösung ist der Repository-Manager Nexus, der grundlegende Funktionen auch in der kostenfreien Version liefert:

  • Unterstützung vieler Paket-Formate:
    Docker, Maven (Java), NPM (Node / JavaScript), NuGet (.Net), …
  • Nutzung als Proxy zu öffentlichen Repositories (z.B. Docker-Hub, Maven Central)
  • Unterscheidung zwischen Snapshot- und Release-Paketen
Weiterlesen →

23. Mai 2020
von bruno
Kommentare deaktiviert für Test-Bibliotheken für JavaScript

Test-Bibliotheken für JavaScript

Wenn man als Java-Entwickler in den JavaScript-Kosmos eintaucht, dann kann die Auswahl an Test-Bibliotheken für JavaScript etwas verwirrend sein. Im Java-Umfeld sind beispielsweise oft diese Kombination verbreitet:

Bei JavaScript erscheint mir die Auswahl wegen den unterschiedlichen Umgebungen und JavaScript-Standards schwieriger. Falls das eingesetzte Framework (z.B. Angular) noch keine Standard-Testbibliothek eingebunden hat, können folgende Kriterien für die Auswahl relevant sein:

  • handelt es sich um Browser- oder Server-Tests?
  • Unterstützung für eingesetze Entwicklungsumgebung vorhanden?
  • Unterstützung für das Testen von asynchronen Programmcode nötig?
  • wird Unterstützung von Testduplikaten (Stub, Mock, Spy) geboten?
  • schnellere Ausführung von Tests durch Parallelisierung möglich?
  • bevorzugte Test-Styles (Assert-Style oder BDD-Style) wird unterstützt?
Weiterlesen →

16. April 2020
von bruno
Kommentare deaktiviert für Openstreetmap-Karten per Vektorgrafiken mit Mapsforge anzeigen

Openstreetmap-Karten per Vektorgrafiken mit Mapsforge anzeigen

In mehreren Beiträgen habe ich bereits dargestellt, dass Openstreetmap (OSM) eine super Alternative zu Google Maps ist, um interaktive Karten in die eigene Webseite oder in die eigene Software einzubinden. Sobald die Anforderungen bekannt sind, lohnt sich ein Blick in diese Übersicht von OSM, um aus der Vielzahl von verfügbaren Bibliotheken die passende zu finden.

Mit den folgenden Anforderungen können wir beispielsweise die Anzahl schon gut eingrenzen:

  • für welche Plattform? Web, Android, iOS, Linux, macOS, Cross-Plattform
  • muss die Anwendung ohne Internet (Offline) funktionieren können?
  • muss es sich um Open Source handeln?
  • mit welcher Programmiersprache ist die Bibliothek umgesetzt?
  • Performanz der Anwendung?
  • Einsatz eigener Karten-Server nötig oder reichen externe OSM-Server?
  • sollen Vektorgrafiken oder Rastergrafiken eingesetzt werden?
  • reicht 2D-Darstellung oder muss es sogar 3D-Darstellung sein
Weiterlesen →

19. Februar 2020
von bruno
Kommentare deaktiviert für k3s – 5 weniger als k8s (Kubernetes)

k3s – 5 weniger als k8s (Kubernetes)

Kubernetes (k8s) hat das Betreiben von Software in der Cloud revolutioniert. Anwendungen werden in Containern, wie Docker, bereitgestellt und Kubernetes führt sie performant auf mehreren Servern aus und sorgt bei Last automatisch für eine entsprechende Skalierung.

Will man Kubernetes produktiv einsetzen, sollte man die Dienste der großen Cloud-Anbieter (Google GKE, Amazon EKS, Microsoft AKS) nutzen, da der eigene Betrieb eines ausfallsicheren Kubernetes-Clusters viel Hardware, Wissen und Aufwand erfordert. Für den Einstieg bietet Kubernetes Minikube, das man auf seinem lokalen Rechner installieren kann. Will man jedoch einen Kubernetes-Cluster mit mehreren Rechner aufsetzen, dann sind günstige Raspberry Pis und das ressourcensparende k3s von Ranger eine gute Alternative. Weiterlesen →

14. Dezember 2019
von bruno
Kommentare deaktiviert für Frontend-Entwicklung mit lokalem API-Server

Frontend-Entwicklung mit lokalem API-Server

Viele Webanwendungen werden heutzutage als Single-Page-Webanwendung (SPA) mit Angular, React oder Vue.js umgesetzt. Man kann sie als eigenständige Anwendungen betrachten, die innerhalb des Browsers ausgeführt werden. Lediglich die fachlichen Daten müssen noch vom Server abgefragt werden, was zumeist durch REST-Aufrufe erfolgt. Bei einem Entwicklerteam aus Frontend- und Backend-Entwicklern sind die Frontendler von der REST-Schnittstelle der Backendler abhängig, was zu Verzögerungen bei der Umsetzung führen kann.

Minimale REST-Server mit kompatiblen API-Schnittstellen können bei der Frontend-Entwicklung helfen. Der auf Node basierende JSON-Server bietet passende REST-Funktionalitäten mit minimalem Konfigurationsaufwand. Das ist nicht nur für die lokale Entwicklung nützlich sondern auch unerlässlich für automatisierte Akzeptanztests (z.B. mit Selenium, Geb, Protractor). Weiterlesen →

7. September 2019
von bruno
Kommentare deaktiviert für Veralteter Raspberry Pi: Passwort zurücksetzen, Systeminformationen, System aktualisieren

Veralteter Raspberry Pi: Passwort zurücksetzen, Systeminformationen, System aktualisieren

Für einen kleinen Prototypen habe ich einen betagten Raspberry Pi aus dem Schrank reaktiviert. Aber wie waren die Anmeldedaten? Und welche Version von welchem Betriebssystem ist installiert?

Das Passwort läßt sich mit wenig Aufwand zurücksetzen und dann können wir auch noch das System aktualisieren. Weiterlesen →