• Git

    git Settings

    Here are a few Git settings that have proven effective for me in working efficiently: General Settings Display Settings Shortcuts / Alias PowerShell alias Beautification

  • Branching & Merging,  DevOps,  Git

    Branching Modell für den Betrieb in großen Umgebungen

    Ich habe in großen Rechenzentren mit verschiedenen Git Branch Modellen Erfahrungen gesammelt. Kurz: – git Flow ist meist zu komplex. – gitlab flow berücksichtigt einige wichtige Aspekte des Betriebs nicht. – Trunk Based Development funktioniert meines Erachtens nicht bei Service Providern, die keine Anwendungen entwickeln sondern nur betreiben, dies aber in hohen Installationszahlen mit vielen unterschiedlichen Releases. Der Betriebsaspekt wird meines Erachtens zu oft unterschätzt. DevOps ist eben genau Dev und Ops. Die meisten Branch Konzepte finden Lösungen für Entwickler. Die betrieblichen Aspekte eines langfristigen, stabilen Betriebes in großen Umgebungen werden oft nicht bedacht. Ein Beispiel eines Service Providers Der Service Provider administriert eine Anwendung, nennen wir Sie “Banking v1.0”,…

  • Git,  Github

    Githubs geheimes Repository

    Nur wenige kennen das “secret Repository” in Github. Github hat ein neues Feature eines besonderen, geheimen Repository bekannt gegeben. Mit diesem Repository können der Startseite eigene Informationen, als Art dynamisches Profil hinzugefügt werden. Es kann als einleitende Darstellung zur Person genutzt werden. Wie legt man ein “Secret Repository” an? Das ist sehr einfach: Auf der Seite Repositories mit “New Repository” ein neues Repoitory mit – das ist der Trick dem eigenen GitHub Benutzernamen anlegen. Das Ergebnis sieht bei mir so aus: Live kann man es hier sehen: https://github.com/slommi71

  • IBM WebSphere Application Server,  Java,  Middleware

    Java Bug in WAS 8.5.5.17

    Die WebSphere Application Server 8.5.5.17 Pakete haben einen Java Bug, der dazu führt, dass die JVMs gelegentlich einen Java-Dump mit dem Auslöser „traceassert“ schreiben und sich beenden. Der Bug kam mit Java 8.0.6.5 und soll mit 8.0.6.10 gefixed werden. Ursprünglich war die korrigierte Version 8.0.6.10 für 14. Mai 2020 angekündigt. Inzwischen teilt IBM mit, dass die Korrektur für 8.5.5.17 bundled java schon verfügbar ist. Da WAS 9.0.5.3 die Java Version 8.0.6.7 nutzt, ist es ziemlich sicher auch betroffen.

  • Branching & Merging,  DevOps,  Git

    Alternative zu git stash

    Bei der Arbeit in einem Feature Branch kann es passieren, dass aus verschiedenen Gründen ein anderer Branch kurz ausgescheckt und bearbeitet werden muss. Normalerweise verwendet man git stash dafür. Ich möchte kurz eine Alternative erläutern. Die Idee ist, einen zweiten worktree anzulegen und zu nutzen. Der bereits ausgescheckte Feature Branch ist in einem lokalen worktree auf der Festplatte abgelegt. Normalerweise hat man für jedes Projekt nur einen worktree. Daher muss man bei einem Wechsel der Branches die Änderungen committen oder zurückstellen/stashen. Der git Client bietet allerdings die wenig bekannte Option, einen zweiten worktree basierend auf einem Branch anzulegen. Der folgende Befehl legt in einem neuen Verzeichnis einen worktree des master…

  • Middleware,  PowerShell

    Umbenennung von Dateien per powershell

    In Linux Umgebungen haben Administratoren für Logdateien von WebSphere Application Server, Tomcat und andere Middleware Produkte meist Skripte, um die Protokolle täglich oder wöchentlich umzubenennen (per crontab). Unter Windows habe ich auf die schnelle keine vernünftige Scriptlösung gefunden. Meine Lösung stelle ich in meinem Azure DevOps Projekt pwshLogSwitch zur Verfügung. Das kleine Script erwartet mindestens ein Startverzeichnis als Parameter. Alle Dateien in diesem Verzeichnis und darunter werden umbenannt, solange die Kriterien passen. Die Auswahlkriterien werden mit den Parametern -Filter -IncludePattern -ExcludePattern definiert und entsprechen den gleichnamigen Parametern von Get-ChildItem. Es können auch reguläre Ausdrücke und Wildcards übergeben werden. Als Verzeichnis können mehrere Verzeichnisnamen per : getrennt übergeben werden. IncludePattern und…

  • Middleware,  Tomcat

    Tomcat Versionen 7.0.100, 8.5.51, 9.0.31 – neue Parameter

    Die Tomcat-Versionen 7.0.100, 8.5.51, 9.0.31 führen zwei neue Parameter in den AJP-Connectoren verpflichtend ein, die bei vielen Instanzen bisher sicher nicht verwendet wurden, bzw. nicht gesetzt ware. Bis auf weiteres bitte das hier in der server.xml bei den AJP-Connectoren hinzufügen: secretRequired=”false” address=”${host.ip}” Erläuterung: secret sichert die Verbindung so ab, daß sie nur von authorisierten Gegenstellen (die das secret kennen) genutzt werden können. Bis diese zusätzliche Absicherung genutzt wird, kann es explizit deaktiviert werden. Das entspricht dem Zustand der Vorgängerversionen von Tomcat. Ohne Angabe von „address“ bindet sich der AJP-Connector nur auf localhost und ist dann von außen nicht mehr erreichbar. Achtung: Wenn die host.ip in der catalina.properties mit Anführungszeichen gesetzt…

  • DevOps,  Docker,  Java,  Middleware

    Befehl in mehreren Docker-Containern ausführen

    Möchte man bei vielen aktiven Containern bestimmte Inhalte abfragen, kann dies mit einer Schleife elegant als Einzeiler durchgeführt werden. Zuerst ist der Containername zu ermitteln und dann kann via docker exec der eigentliche Befehl im Container ausgeführt werden. Beispiel: Ermittlung der java Version in allen Containern (zur besseren Lesbarkeit auf mehrere Zeilen umgebrochen) for i in $(sudo docker ps --format '{{.Names}}') ; do echo "------" ; echo $i ; sudo docker exec $i bash -c "java -version" ; done —— important01.service openjdk version “1.8.0_171” OpenJDK Runtime Environment (build 1.8.0_171-b10) OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode) —— container02.service openjdk version “1.8.0_171” … usw.

  • Linux,  SystemD

    Essentielle systemd Befehle

    Zur Verwaltung und Überwachung der Systemd Dienste sind hauptsächlich zwei Befehle zuständig: systemctl journalctl Systemctl systemctl dient zur Verwaltung von Systemd Services (Starten, Stoppen, Neustart, Status Abfragen): systemctl [stop|start|restart|reload|status] rsyslog.service Service de-/aktivieren (permanent) systemctl enable rsyslog.service systemctl disable rsyslog.service Abfrage, ob ein Service aktiviert ist: systemctl is-enabled rsyslog.service; echo $? Anzeige einer Service Definition systemctl cat rsyslog.service --no-pager /usr/lib/systemd/system/rsyslog.service [Unit] Description=System Logging Service ;Requires=syslog.socket Wants=network.target network-online.target After=network.target network-online.target Documentation=man:rsyslogd(8) Anzeige der fehlgeschlagenen Dienste systemctl --failed UNIT LOAD ACTIVE SUB DESCRIPTION ● pctl.service loaded failed failed LSB: Start the perfd daemon LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of…

  • 3D Print,  Maker

    Dremel DigiLab 3D45

    Diesmal falle ich ein wenig aus dem Rahmen. Ich habe mir den Dremel DigiLab 3D45 zugelegt und möchte kurz eine Bewertung teilen. In Kürze: Der Drucker ist schnell aufgebaut und einsatzbereit, einfach zu bedienen und das Druckergebnis gefällt mir sehr gut. Die Aufwärmzeit der Düse und der beheizten Druckplattform ist kurz. Einzig mit dem Zugriff auf die Kamera, die anscheinend nur über die Dremel Cloud Plattform geht, hatte ich keinen Erfolg. Diese Url ist nie erreichbar (https://printcloud.dremel.com). Mitgeliefert wird 1Kg Filament, deren Druckparameter via RFID erkannt, perfekt. Die Modelle erstelle ich über das frei verfügbare Tinkercad. Ich drucke das erstelle Objekt über den mitgelieferten Dremel 3D Digi Slicer. Alles sehr…