anderScore Kontakt

Frankenwerft 35
50667 Köln
Deutschland
E-mail:info@anderScore.com
Telefon:+49dieser span dient dazu, dass skype die telefonnummer nicht als solche erkennen kann 221 3558 3530
Fax:+49 221 3558 3531

Image

Willkommen auf der Seite der Goldschmiede - Kodieren auf (mit) Kölsch.

Unsere Idee

  • Regelmäßiges gemeinsames Entwickler-Treffen
  • Erfahrungsaustausch zu technischen Fragestellungen oder Projektsituationen
  • Gemeinsames Arbeiten in Projekten und persönliche Weiterentwicklung im Team
Sie sind herzlich eingeladen, sich in unserer Mailingliste zu registrieren und an einem
unserer nächsten Treffen teilzunehmen.

In der Goldschmiede Mailingliste eintragen

anmelden abmelden
Ihre e-Mail:  

Nächstes Treffen

30.08.2019 um 17:30 Uhr - Testcontainers

Bei unserer Goldschmiede Ende August werden sich unsere Kollegen Maik und Daniel mit dem spannenden Thema "Testcontainer" beschäftigen!

Was haben wir erreicht, wenn die Komponenten oder Services unserer Software in Isolation tadellos funktionieren, als Komposition jedoch plötzlich nicht mehr zusammenarbeiten möchten? Um diesem Problem entgegenzuwirken, sind Integration Tests in Ergänzung zu klassischen Unit Tests mit Mocks unverzichtbar. In der Praxis erweisen sich diese jedoch allzu gerne als Quelle sporadischer Build Failures, weil zur Ausführung benötigte Drittsysteme plötzlich von der Bildfläche verschwinden, Inhalte der Testdatenbank sich in der Zwischenzeit geändert haben oder die lokale Umgebung des Kollegen trotz (vermeintlich) gleicher Konfiguration ein gänzlich anderes Verhalten zeigt als meine.

Glücklicherweise kennen wir mit Docker bereits ein wirksames Mittel zur Abstraktion komplexer Ausführungsumgebungen, wissen aber nur allzu gut, dass der Teufel gerne im Detail steckt. An dieser Stelle kommt das Projekt „Testcontainers“ ins Spiel, welches eine leicht verständliche Java API zur Verwendung beliebiger Container in automatisierten Tests zur Verfügung stellt. Vorkonfigurierte Images gängiger Drittsysteme (z.B. Datenbanken, Message Broker, Web Server, Browser) werden praktischerweise gleich mitgeliefert, sodass bereits wenige Zeilen genügen, um eine vollständig lauffähige und vor allem portable Testumgebung aufzuziehen.

Im Rahmen dieser Goldschmiede-Veranstaltung zeigen wir euch, dass uns Testcontainers nicht nur bei der Erstellung reproduzierbarer Integration Tests der Persistenzschicht unterstützt, sondern auch zur Automatisierung ganzer Anwendungstests (Use Cases) eingesetzt werden kann. Hierbei betrachten wir auch die Integration mit JUnit 5, Spring Boot und einem Web-Framework wie Apache Wicket oder Vaadin.

Ort: Altes Meister Zimmer (im Stapelhaus in der Kölner Altstadt)

Adresse: Frankenwerft 35

Uhrzeit: 17.30 Uhr

Für Knabbereien und Getränke ist wie immer gesorgt und wir freuen uns auf viele interessierte Teilnehmer!

4

28.06.19 um 17:30 Uhr - Spring Batch

Bei der Batchverarbeitung geht es eigentlich nur darum, Daten von A nach B zu übertragen, dazu kommen  maximal noch ein wenig Aufbereitung und Konvertierung. Dafür wird jedoch kein Framework benötigt, oder etwa doch?

In dieser Goldschmiede hat sich unser Kollege Hans Jörg intensiv mit dem Thema "Spring  Batch" beschäftigt und spannende Einblicke gewährt. Die Quintessenz des Abends war: Spring Batch kann einiges mehr als Daten von A nach B zu übertragen! Wie das alles genau funktioniert und abläuft haben die interessierten Teilnehmer auf dieser Goldschmiede erfahren.

Es war wie immer ein gelungener Abend und ein spannender Austausch!

Hier der Link zu den Unterlagen:

https://github.com/goldschmiede/2019-06-28-Spring-Batch

4

05.04.19 um 17:30 Uhr - WebAuthn: Identitätsdiebstahl adé!

Auf der Goldschmiede-Veranstaltung am 5. April hat unser Kollege Jan Lühr einen tiefen Einblick in Webauthn gewährt und hat Antworten auf diese Fragen gegeben: Auf welchem Weg können 2-Faktor Systeme intuitiv benutzbar sicher gestaltet werden? Wie funktioniert Webauthn im Detail? Was ist bei der Integration in bestehende Systemarchitekturen zu beachten?

Phishing-Attacken und Identitätsdiebstahl bedrohen das WWW nach wie vor. Angreifer hacken Konten, indem sie Kennwörter abfangen oder Benutzerdaten stehlen und entschlüsseln. Zusätzliche Sicherheit bringt ein zweiter Faktor, der zusätzlich zur Anmeldung benötigt wird – z. B. USB-Token. Übliche 2-Faktor-Systeme scheitern an der Usability. Häufig muss zudem in Spezialhardware investiert werden oder es gibt Abhängigkeiten zu proprietären Standards.

Das FIDO2-Projekt hat mit der W3C Web Authentication Specification (WebAuthn) und dem zugehörigen Client-to-Authenticator Protocol (CTAP) einen offenen Standard zur Authentifizierung geschaffen. Neben USB- und NFC-Dongles lassen sich auch biometrische Merkmale und weitere Geräte (z.B. Smartphones) zur Anmeldung verwenden. Zum 4.3.2019 wurde die Standardisierung abgeschlossen - WebAuthn ist seitdem ein gültiger WWW-Standard (W3C Recommendation).

Die Goldschmiede-Veranstaltung war wie immer ein informativer und spannender Abend!

 

Unterlagen zum Vortrag finden Sie in useren Github Repository.

 

4

Goldschmiede - Archiv

22.02.2019 um 17:30 Uhr - Fachbedarf vereinbaren in SW-Projekten: Tretminen und ihre Vermeidung [mehr Information] [Material]

Schön war´s!

Bei dieser Goldschmiede hat unsere Geschäftsführung Frau Ohm aus ihrer 30-jährigen Berufserfahrung berichtet, wie ein Anwendungsentwicklungs-Projekt sinnvoll zu initiieren ist. Hierbei sollten natürlich alle Beteiligten ihr Bestes geben, um die typischen und im gesamten Projektverlauf ständig auftretenden Missverständnisse zwischen Fach- und IT-Seite in den Griff zu bekommen. Warum das aber (fast) nie klappt und was man tun muss, damit es eben doch funktioniert, das hat man auf dieser Goldschmiede erfahren. Dieser unterhaltsame Bericht war gespikt mit lustigen und absurden Situationen, die genauso passiert sind. Für ein erfolgreiches SW-Projekt müssen diese Tretminen entschärft werden und stattdessen das gleiche Verständnis der Fachanforderungen mitsamt des dahinterliegenden eigentlichen Bedarfs geschaffen werden! Und das ist möglich...das wissen wir nach dieser Goldschmiede besser denn je!

12.10.2018 um 17:30 Uhr - JHipster [mehr Information] [Material]

Grüne Wiese. Es soll eine neue Webanwendung entwickelt werden. Klingt erst mal gut, denn so kann man problemlos auf aktuellen Technologien aufbauen, ohne Altlasten mit herum zu schleppen. Doch schnell stellt man fest - eine moderne Webanwendung aus dem Boden zu stampfen ist eine ganze Menge Aufwand! Konfigurationen, Test Setup, Buildmanagement, Deployment - Und wir wollten doch eigentlich nur die Features umsetzen?

Es gibt bereits einige Werkzeuge, die beim Grundaufbau (Scaffholding) der Anwendung helfen, wie z.B. Spring Initializr, Spring Boot oder die Angular CLI. Allerdings beziehen sich diese Tools nur auf Teile der Anwendung. An dieser Stelle setzt JHipster an. JHipster ist ein Werkzeug, um Anwendungen und Microservices mit Spring Boot + Angular / React zu generieren. Die generierte Anwendung besteht aus:

  • Einem hochperformanten Java Stack mit Spring Boot auf der Serverseite und einer Auswahl aus modernen DB-Technologien.
  • Einer schicken, modernen, responsiven UI mit Angular oder React und Bootstrap.
  • Einer robusten Microservice Architektur mit der JHipster Registry, dem Netflix OSS Stack, dem ELK Stack und Docker.
  • Einem mächtigen Buildmangement Workflow mit Yeoman, Webpack und Maven oder Gradle.

In der dazugehörigen Goldschmiede stellte uns unser Kollege Max Johenneken die Konzepte von JHipster vor und welche Möglichkeiten wir bei der Generierung der Anwendung haben. Dazu gab es eine Livedemo in der wir eine Anwendung mit JHipster aufsetzten und sie auf ein Kubernetes Cluster deployten. Als Abschluss gab es eine rege Diskusion darüber wann sich JHipster im produktiven Einsatz lohnt und welche Vor- und Nachteile sich daraus ergeben.

 

31.08.2018 um 17:30 Uhr - Apache Kafka [mehr Information] [Material]

Bei unserer letzten Goldschmiede  hat unser Kollege Jan Lühr einen Kafka-Workshop abgehalten. Wir begannen mit einem Hands-On: Mit kurzen Übungen zur Installation sowie zur Integration in Java und Spring stiegen wir in Apache Kafka ein.  Im zweiten Teil analysierten wir Eigenschaften, Vor- und Nachteile und hatten einen Blick auf das Kafka-Ökosystem.

Apache Kafka (Link zu: https://kafka.apache.org/) ist eine Distributed Streaming Platform. Wie bei Messaging Systemen üblich, greifen Producer und Consumer via Publish/Subscribe auf Streams zu. Mit Kafka Streams können Events in Echtzeit verarbeitet werden. Dabei werden die Streams dauerhaft und verteilt gespeichert.

Die Teilnehmer der Goldschmiede konnten sowohl vor Ort wie auch remote mitentwickeln.

 

 

27.04.2018 um 17:30 Uhr - Strukturelle Architektur mit Dessert, open source [mehr Information] [Material]

In der Designphase sieht ein neues Softwareprodukt noch so schön aus: Da gibt es klar abgegrenzte Funktionsblöcke mit klar definierten Zuständigkeiten und sauberen Schnittstellen. Das fertige Produkt sieht in der Dokumentation meistens noch genauso aus, die Wirklichkeit ist aber häufig eine andere. Da gibt es Funktionalität, die in keine der definierten Blöcke passt. Oder es gibt Abhängigkeiten, die nicht beschrieben sind, weil einfach vorhandener Code genutzt wurde, ohne zu berücksichtigen welchen Rattenschwanz an Abhängigkeiten das nach sich zieht. Wie sehr sich die tatsächliche Architektur Richtung Wollknäuel bewegt hat, erkennt man daran, wie komplex es wird, einzelne Teile zu testen oder wie schwierig es ist, Funktionalität in wiederverwertbare Komponenten auszulagern. Die Testbibliothek ‚dessert‘ - das ist eine Abkürzung für ‚dependency assert‘ - soll helfen, Abweichungen von der definierten Architektur frühzeitig zu erkennen um dem Wollknäuel gegenzusteuern. 

Unser Kollege Hans Jörg Heßmann hat darüber berichtet, wie er zu dem Thema „Strukturelle Architektur“ gekommen ist und was ihn dazu bewegt hat, eine eigene Bibliothek zur Abhängigkeitsprüfung (https://github.com/hajo70/dessert) zu implementieren. Des Weiteren ist er auf typische Fehler eingegangen, die die Wiederverwendung von Code verhindern oder die Testbarkeit erschweren und hat verschiedene Werkzeuge vorgestellt, die dabei helfen, diese Probleme zu analysieren. Anhand konkreter Anwendungsbeispiele hat er gezeigt, wie man frühzeitig Abweichungen von der Soll-Architektur erkennt oder was man tun kann, um ein bereits vorhandenes Wollknäuel zu durchdringen und zu entflechten.

Die Materialien zu der Präsentation finden Sie wie immer unter dem folgendem Github Link.


02.02.2018 um 17:30 Uhr - Legacy Software wieder testbar machen! [mehr Information] [Material]

Bei unserem letzten Treffen ging es einmal nicht um schöne neue Technologien, sondern es wurde sich dem potentiell Hässlichen zugewendet.

In einer idealen Welt wird Software von Beginn an durchdacht entwickelt und bei jeder Komponente auf eine gute Testbarkeit geachtet. Der Alltag eines Softwareentwicklers sieht freilich anders aus: Monolithischer, schwer verständlicher, unzureichend dokumentierter und fehleranfälliger Code aus vergangenen Tagen muss gefixt oder um neue Funktionalitäten erweitert werden – und das am besten gestern. Gleichzeitig darf bestehende Funktionalität jedoch unter gar keinen Umständen angefasst werden, was zu einer Art "Fear Driven Development" führt, das jegliche Bemühungen zur Verbesserung der Code-Qualität im Keim erstickt. Um die Wartbarkeit von Altanwendungen langfristig zu erhalten und gleichzeitig sicherzustellen, dass sich gewünschtes Verhalten nicht unbeabsichtigt verändert, werden strukturelle oder gar semantische Refactorings zur Verbesserung des automatisierten Testens aber unabdingbar.

Im Rahmen dieser Goldschmiede haben wir uns nicht nur geeignete Refactoring-Techniken aus dem praktischen Alltag angeschaut, sondern uns auch über die Organisation des Refactorings selbst unterhalten.

Die Materialien zu der Präsentation finden Sie wie immer unter dem folgenden Github Link.

01.12.17 um 17:30 Uhr - Java 9 ist da! Doch was bringt es? [mehr Information] [Material]

Goldschmiede vom 1.12.2017: Java 9

Am 21. September 2017 erblickte die 9 Version 9 des Java Development Kits (JDK) die Welt. Dabei mischen sich wie immer kleine (aber feine!) Änderungen an der Sprache munter mit größeren, grundlegenderen Neuigkeiten des Java Ökosystems.

Doch welche Features aus der neuen lange Liste der umgesetzten Java Enhancement Proposals (JEP) sind interessant und wichtig? Was sind die entscheidenden "Quality of Life" Features und Tools die uns das Entwicklerleben versüßen? Von welchen entscheidenden Neuerungen sollte man als Java-Entwickler gehört haben um mitreden zu können beim Fachsimpeln unter Kollegen oder beim Vorstellungsgespräch mit dem künftigen Chef...? 

Alle Teilnehmer der Goldschmiede wurden dazu eingeladen, genau dies zu ergründen! Zu diesem Zwecke wurde passenderweise gleich intensiv Gebrauch von einem der interessantesten und coolsten neuen Features des JDK 9 gemacht: Der JShell.

Mit diesem Tool liefert das JDK erstmalig eine interaktive Shell zum Auswerten und Ausgeben von Java Sprachanweisungen. Es macht sehr viel Spaß ohne lästigen Boiler-Plate Code direkt neue Features und Anweisungen auszuprobieren und sofort das Ergebnis zu sehen. Dies konnten wir dann natürlich auch nutzen, um weitere Java 9 Sprachfeatures - wie z.B. die Erweiterung der Stream-API - live am "lebenden Object" zu testen. Getreu dem Motto: Kodieren auf (mit) Kölsch!

Die Materialien zu der Präsentation finden Sie wie immer unter dem folgenden Github Link.

03.11.17 um 17:30 Uhr - Cryptoparty [mehr Information] [Material]

Goldschmiede vom 3.11.2017: Cryptoparty

Egal, ob man nicht will, dass Geheimdienste private Mails mitlesen oder verhindern möchte, dass die eigene Konto-PIN in falsche Hände gerät - Computersicherheit betrifft alle, ob Laien oder Profis. Perfekte Sicherheit kann es nicht geben, aber wenigstens gibt es Programme, die das digitale Leben erheblich sicherer gestalten - und es gibt die Cryptoparty:

Auf einer Cryptoparty gibt es nicht viel Theorie, sondern praktische Hilfe. Nach einem kurzen Einführungsvortrag bekommen die Teilnehmerinnen und Teilnehmer Gelegenheit, in Arbeitsgruppen die vorgestellten Programme auf ihren mitgebrachten Geräten zu installieren und auszuprobieren:

  • Mailverschlüsselung mit Enigmal (Thunderbird)
  • Anonymes Surfen mit Tails (tor)
  • Sicheres Messaging mit XMPP / omemo (gajim / conversations)
  • Passwort-Verwaltung (keepass)
  • Datenträger-Verschlüsselung (veracrypt)

Die Materialien zu der Präsentation finden Sie wie immer unter dem folgenden Github Link.

01.09.17 um 17:30 Uhr - Eine Tour durch Kubernetes [mehr Information] [Material]

Bei der Goldschmiede mit Jan Lühr ging es um Kubernetes:

2015 von Google veröffentlicht, entwickelt sich Kubernetes zu einer Standardplattform für Deployment und Betrieb von Container-Anwendungen (z.B. Docker, rkt) - Cluster-Basiert.

 

Auf der Goldschmiede am 1.9.2017 ging es um folgende Fragen zum Thema Kubernetes:

  • Welche Vorteile bietet Kubernetes -  Welche Eigenschaften machen es populär?
  • Wie grenzt es sich von anderen Plattformen ab (z.B. libvirt?)
  • Wie greifen Spring-boot, Jenkins, Docker und Kubernetes zusammen?

 

Die Materialien finden Sie wie immer unter dem folgenden Github Link.

02.06.2017 - Ausführbare Architekturen Teil 2 [mehr Information] [Material]

Am 2. Juni gab es das Follow-Up zu "Ausführbare Architekturen".

Es folgte ein hands-on workshop, wo wir ein paar Szenarien in kleinen Gruppen gemeinsam attackierten.

Uwe Wardenbach brachte ein Beispiel mit, (Simulation von Infrastrukturausfällen, um zu prüfen, ob das Failover-Konzept funktioniert).

Als Nebeneffekt fiel praktische Übung mit Groovy und Spock mit ein paar (hoffentlich coolen) Tips an.

Eventuell kam auch eine Demo hinzu, wie man mit AST-Transformationen Richtung Doku/Grafik-Generator gehen kann.

Material vom 1. und 2. Termin findet Ihr unter: https://github.com/goldschmiede/2017-03-31-ausfuehrbare-Architekturen

 

 

31.03.2017 - "ausführbare Architekturen" [mehr Information] [Material]

 

Bei der Goldschmiede mit Uwe Wardenbach ging es um "ausführbare Architekturen" mit einfachen (etwa Groovy-) Mitteln im DDD-Kontext (domain-driven-design).

Was ist ein Architekturmodell? Habt Ihr eins?

Auf diese Frage wird meistens (entweder stolz oder peinlich berührt) ein Diagramm hervorgekramt.
Diagramm, richtig, Kästchen, Linien und Beschriftungen.

Im Prinzip gut, aber

  • sind alle benötigten Konnektoren als Linien vorhanden?
  • sind alle benötigten Komponenten als Kästchen vorhanden?
  • sind die Beschriftungen alle korrekt?
  • und was bedeutet das alles?

Markus Völter hat schon vor Jahren auf den wichtigen Unterschied zwischen Modell und Diagramm hingewiesen. Modell ist besser.

Ok, dann nehmen wir ein Modell. UML, nicht wahr, da war doch was.
Wir benutzen ein UML-Tool, dann bedeuten die Linien und Kästchen auch was (über das Metamodell).

Im Prinzip gut, aber

  • ist das Modell syntaktisch korrekt?
  • ist das Modell semantisch vollständig?
  • und wie finde ich heraus, ob was fehlt?

Damit schlagen sich alle herum, die aus irgendeinem Grund meinen, Architektur ist mehr, als die Source-Code-Struktur aus 15 m Entfernung.

Geht´s auch anders? Besser? Vielleicht sogar testbar?

Dann hätten wir doch am liebsten eine Architektur, die man ausführen und testen kann. Klingt spannend, oder?

Uwe Wardenbach zeigte ein ausführliches Beispiel aus einem realen Projekt, woraufhin wir alle gemeinsam ein bisschen experimentieren wollten.