Posts

Es werden Posts vom 2021 angezeigt.

Bedrohungslage Rot: Ist meine Anwendung von der kritischen log4j Schwachstelle betroffen?

Bild
Das Bundesamt für Sicherheit in der Informationstechnik hat wegen einer Schwachstelle im stark verbreiteten Java Logging-Framework log4j die IT-Bedrohungslage 4 / Rot ausgerufen. Daher schreibe ich aus aktuellem Anlass diesen Artikel, um euch eine Hilfestellung bei der Analyse zu geben. Seit dem 12.12.2021 geht dieser Alarm durch die Presse, hier Meldungen: https://www.heise.de/ratgeber/Schutz-vor-schwerwiegender-Log4j-Luecke-was-jetzt-hilft-und-was-nicht https://www.spiegel.de/netzwelt/web/log4-j-schwachstelle-ja-leute-die-scheisse-brennt-lichterloh https://www.bsi.bund.de/DE/Service-Navi/Presse/Alle-Meldungen-News/Meldungen/Schwachstelle_Log4j Wie prüfen, ob mein System betroffen ist? Um herauszufinden, ob ihr betroffen seid, durchsucht ihr die Dependencies bzw. verwendeten Bibliotheken in euer Software. Dabei prüft ihr, ob ihr generell log4j verwendet und wenn ja in welcher Version. Laut BSI sind die Versionen 2.0 bis 2.14.1 von log4j betroffen. Die ältere Version 1.x ist nicht betr

Clean Code Regeln zum Loslegen

Bild
In diesem Artikel stelle ich euch einige von mir ausgewählte Clean Code Richtlinien und Regeln vor. Sie sollen euch dabei helfen künftig leichter verständlichen und besser wartbaren Code zu schreiben, damit ihr euren KollegInnen das Entwickler-Leben angenehmer macht. Im Code zum Artikel wird das Spiel  Minesweeper  implementiert - ihr findet den Code in GitHub: https://github.com/elmar-brauch/minesweeper.git Und ein passendes Online Training bei Udemy . Namen mit Bedeutung Regel: Verwende Namen, welche die Absicht der Variable, Methode oder Klasse verraten. Im folgenden Code-Ausschnitt habe ich Kommentare ergänzt, um auf schlechte oder zumindest suboptimale Variablennamen hinzuweisen: public class MineField {      // Not optimal names: cells, field, listOfListOfCells, ...      private List<List<Cell>> fieldRows = new ArrayList<>();      ...      // Bad names: x, y, r, c      public MineField(int rows, int columns) {      ...      public void placeMineRandomly(int min

SSH-Tunnel zur Vergrößerung der Entwicklungsumgebung

Bild
In diesem Artikel zeige ich euch, wie ihr SSH benutzt, um Server zu erreichen und mit eurer Entwicklungsumgebung zu verbinden. Auf diese Weise kann ich die in meiner IDE gestartete Anwendung durch einen SSH-Tunnel z.B. mit der Datenbank in unserer Testumgebung verbinden, um die dort vorhandenen Testdaten zu nutzen. Setup Auf meinen Windows Notebook verwende ich meist putty oder eine emulierte Linux Bash, wie zum Beispiel die Git BASH: Putty:  https://putty.org/ Git BASH: https://gitforwindows.org/ In diesem Artikel werde ich mich auf die Linux basierte Variante konzentrieren. SSH in der Linux Shell Vermutlich kennt ihr SSH schon, daher verlinke ich hier auch nur zu Wikipedia . Im folgenden zeige ich, wie man sich mittels private-public-Key mit einem SSH-Service verbindet. Dazu muss auf der Server-Seite der öffentliche Schlüssel (public Key), passend zum privaten Schlüssel (private Key) hinterlegt sein. SSH Agent starten und private Key laden Zuerst benötigen wir einen laufenden SSH Age

Spring Beans testen mit JUnit und Mockito

Bild
Automatisiertes Testen von Spring Beans kann anfangs schwierig sein. Daher zeige ich euch in diesem Artikel, wie ihr die typischen Herausforderungen beim Testen von void-Methoden, Datenbank- und Backend-Interaktionen mit Spring Boot und Mockito in den Griff bekommt. Unit-Tests mit dem Mockito Mock-Framework Wenn wir in einer Klasse oder Spring Bean Methoden haben, die eine Datenbank oder die Verfügbarkeit eines Backends benötigen, ist das für Unit-Tests ein Problem. Unit-Tests konzentrieren sich immer auf die kleinste Einheit und die schließt Datenbanken und Backends aus. Um solche Methoden trotzdem Testen zu können, gibt es Mocks. Ein Mock ersetzt die Datenbank oder das Backend und liefert von uns vorbereitete Testdaten zurück. Weitere Infos zu Mocks findet ihr hier: https://de.wikipedia.org/wiki/Mock-Objekt Mockito ist eines der beliebtesten Mock-Frameworks für Java oder Kotlin und bietet eine einfache API zum Erstellen, Konfigurieren und Interagieren mit Mocks an. Daher wird Mockito

Microservices mit Spring Boot erstellen

Bild
In der Java-Welt ist Spring eines der meist genutzten Frameworks. Spring Boot bietet einen vereinfachten, schnellen Einstieg in die Entwicklung mit Spring. Wie man loslegt, wird in diesem Tutorial gezeigt. Spring Tool Suite installieren In unserer bevorzugten IDE Eclipse 😉, kann man die Spring Tools 4 einfach über den Eclipse Marketplace installieren. Dazu im Menu folgendem Klickpfad folgen: Help => Eclipse Marketplace... In diesem Blog-Post wird beschrieben, wie man Eclipse und Maven installiert und konfiguriert (inklusive Proxy für Konzern Mitarbeiter):  eclipse-als-ide-fur-java-spring.html Dann einfach nach "Spring Tools" suchen und man findet mehrere Versionen der Spring Tools. Bitte Version 4 bzw. die neuste installieren. Beim Installieren muss man nicht viel beachten: Lizenzen akzeptieren und Next-Button klicken. Hier ist es z.B. mit ein paar Screenshots gezeigt: https://www.codejava.net/ides/eclipse/install-spring-tool-suite-for-existing-eclipse-ide   In der  Intel

Kotlin und Java Code im Spring Projekt mischen

Bild
Kotlin und Java sind beides Programmiersprachen, die auf der JVM aufsetzen. Deshalb ist es möglich Java Klassen in einem Kotlin Projekt zu schreiben und zu verwenden. Java-Dateien können aber auch automatisch in Kotlin übersetzt werden. Ich werde euch hier einen entsprechenden Mischmasch präsentieren! 😄 Warum Kotlin und Java mischen? Ein riesen Vorteil der Programmiersprache Kotlin ist aus meiner Sicht, dass wir einen großen Teil der vielen vorhandenen Java Frameworks und Bibliotheken (z.B. Spring) verwenden können. Das funktioniert, weil Kotlin genau wie Java auf der JVM (Java Virtual Machine) aufsetzt. Wenn man in Kotlin Java-Bibliotheken (jar Dateien) verwenden kann, kann man auch direkt Java Klassen verwenden und so den Code bzw. die Programmiersprachen mischen. In richtigen Projekten solltet ihr das nicht tun, weil es unnötige Komplexität erzeugt. Warum zeige ich es dann hier? Kotlin ist für mich die nächste Evolutionsstufe und ich möchte zeigen wie einfach und risikofrei ihr di