Andreas Bruns

Softwareentwicklung für Oldenburg und Bremen

3. November 2023
von bruno
Kommentare deaktiviert für Roadmap.sh – Lernpläne zur IT-Weiterbildung

Roadmap.sh – Lernpläne zur IT-Weiterbildung

Die Webseite Roadmap.sh bietet eine einfache und praktische Lösung für angehende und erfahrene Informatiker, sich maßgeschneiderte Lernpläne für Informatik-Themen zu erstellen. Außerdem kann man sich einen guten Überblick verschaffen, ob in einem Themengebiet bereits alles bekannt ist oder noch zu schließende Lücken vorhanden sind.

Roadmap.sh unterscheidet dabei zwischen Lernplänen auf Basis von Rollen und Fertigkeiten:

Weiterlesen →

11. August 2023
von bruno
Kommentare deaktiviert für Zugriff auf HiDrive-Cloud von Strato mit Java

Zugriff auf HiDrive-Cloud von Strato mit Java

Strato stellt mit dem Produkt HiDrive einen Cloud-Speicher zur Verfügung, der sich sehr gut als externer Speicher für Laptops oder Handys verwenden lässt. Die Integration in das eigene System erfolgt dank zahlreicher Protokolle (wie SFTP, SCP, WebDAV, GIT, SMB, rSync) problemlos und eine entsprechende App steht auch für Handys bereit.

Für einen Kunden sollten Dateien aus einer selbstentwickelten Android-App in der HiDrive-Cloud abgelegt werden. Da ein manueller Zugriff bereits per HiDrive App für Android erfolgreich war, erschien dem Kunden die Umsetzung als überschaubar. Tatsächlich kamen wir auf folgende Möglichkeiten zur Realisierung:

  • Zugriff auf ein eingehängtes HiDrive-Laufwerks, falls die HiDrive App ein entsprechendes Mounten vornimmt
  • Zugriff per HiDrive-API, die für Entwickler bereitgestellt wird
  • Zugriff per standardisiertem Protokoll (wie SFTP, SMB, usw)
Weiterlesen →

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 →