Andreas Bruns

Softwareentwicklung für Oldenburg und Bremen

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 →

23. August 2019
von bruno
Kommentare deaktiviert für Wartbare langlebige Software mit Domain Driven Design (DDD)

Wartbare langlebige Software mit Domain Driven Design (DDD)

Das Blue Book von Eric J. Evans „Domain-Driven Design: Tackling Complexity in the Heart of Software“ ist bereits über 15 Jahre alt. Trotzdem finden die dort genannten umfangreichen Methoden erst in den letzten Jahren ihren Weg in die professionelle Softwareentwicklung. Mit dem Red BookImplementing Domain-Driven Design“ veranschaulicht Vaughn Vernon 2013, wie Domain Driven Design in der Praxis eingesetzt wird, und fördert damit maßgeblich dessen Verbreitung.

In meinem letzten Projekt konnte ich mehrere Jahre bei der Firma neuland in Bremen Internetshops nach DDD entwickeln. Dabei nutzten wir eine Vielzahl der Methoden des strategischen und taktischen Designs. Passenderweise bekam ich von meinen Kollegen zum Abschied das erste ins deutsche übersetzte Buch zu DDD geschenkt: „Domain-Driven Design kompakt“ von Vaughn Vernon (übersetzt von meinen ehemaligen Kollegen der WPS – Workplace Solutions Carola Lilienthal und Henning Schwentner).

Buch: Domain-Driven Design kompakt

Weiterlesen →

8. Mai 2019
von bruno
Kommentare deaktiviert für Remote-Werkzeuge für das verteilte Arbeiten im Team

Remote-Werkzeuge für das verteilte Arbeiten im Team

In meinem aktuellen Projekt arbeiten die Teammitglieder an unterschiedlichen Standorten:

  • in der Consulting-Firma in Bremen
  • bei dem Kunden in Süddeutschland
  • bedarfsweise im Homeoffice

Bei Meetings mit allen Teammitgliedern vor Ort erreichen wir dank direkter Kommunikation und Interaktion natürlich die besten Ergebnisse. Wenn wir Pinnwand und Whiteboard mit Kärtchen und Klebezetteln einsetzen und die Kollegen direkt ansprechen können, sind alle aktiv und aufmerksam dabei.

Doch auch über die Ferne lassen sich gemeinsame Dailys, Projektplanungen, Fehleranalysen, Post Mortems, Retrospektiven und Ähnliches angenehm durchführen, wenn passende kollaborative Werkzeuge eingesetzt werden. In meinem Projektalltag haben sich einige Programme bewährt.

Weiterlesen →

10. März 2019
von bruno
Kommentare deaktiviert für EU-Urheberrechtsreform – Uploadfilter verhindern !

EU-Urheberrechtsreform – Uploadfilter verhindern !

In weniger als drei Wochen stimmen die Abgeordneten des EU-Parlaments über die Urheberrechtsreform ab. Sie beinhaltet viele positive Regelungen, aber mit Artikel 11 und Artikel 13 leider auch die Einführung des Leistungsschutzrechts und den Einsatz von Uploadfiltern. Teile der Bevölkerung und der Wirtschaft organisieren entsprechende Proteste:

Dank Botbrief.eu habe ich entsprechende Briefe für die EU-Parlamentarier aus meiner Region verfasst.

Briefe an EU-Parlamentarier wegen Urheberrechtsrefor-

Briefe an EU-Parlamentarier wegen Urheberrechtsreform

Weiterlesen →

11. November 2018
von bruno
Kommentare deaktiviert für Schnittstellen-Dokumentation mit Swagger

Schnittstellen-Dokumentation mit Swagger

Bei der Erstellung von Schnittstellen (API: Application Programming Interface) für externe Systeme stellt sich meistens die Frage, wie die Schnittstellen dokumentiert werden sollen. Für REST-Schnittstellen hat Swagger die Dokumentation maßgeblich geprägt, sodass sich mittlerweise aus der ursprünglichen Swagger-Specification die OpenAPI-Specification (Github) in der Version 3 entwickelt hat. Eine Schnittstellen-Spezifikation (z.B. YAML-Datei) lässt sich auf zwei Arten konzipieren:

  • Contract/API First: Spezifikation wird mit Werkzeug oder manuell erzeugt
  • Code First: Schnittstelle wird programmiert und daraus Spezifikation generiert

Swagger bietet eine Reihe von lokalen und cloud-basierten Werkzeugen zur Erzeugung und Bereitstellung von Schnittsstellen-Dokumentationen:

  • Swagger UI: Dokumentation und REST-Interaktion für Schnittstellen-Konsumenten
  • Swagger Editor: Schnittstellen-Dokumentation erstellen und bearbeiten
  • Swagger Codegen: Generierung von Code aus Schnittstellen-Dokumentation
  • Swagger Inspector: Online-Werkzeug zum Testen von APIs
  • SwaggerHub: Software as a Service, das die Swagger-Werkzeuge (Codegen, Editor, UI) vereinigt

Weiterlesen →