Privates Blog von Christian Münch

Delta

Cover Image

Heute ein kleines Tool über das ich in Twitter über einen Tweet von @s_bergmann gestoßen bin. Das kleine nette Programm hübscht die Ausgabe von git diff ungemein auf.

Installation

In den meisten Paketsystemen ist das kleine Helferlein als Paket git-delta zu finden. Unter Arch Linux habe ich es mit sudo pacman -S git-delta installiert. Auf dem Mac kann es mit brew install git-delta ebenfalls einfach installiert werden.

Danach steht das Binary “delta” mit einer sehr großen Anzahl an Optionen zu Nutzung bereit. Ein delta --help zeigt den großen Umfang an Optionen.

Magerun Contribution mit ddev einfach gemacht

Cover Image

Ich nutze seit einer Weile gerne ddev als Umgebung für meine PHP Projekte. Als Maintainer des Open Source Tools n98-magerun, habe ich überlegt wie ich den Einstieg für andere in das Projekt leichter gestalten kann. Und was liegt da nahe? Natürlich auch ein ddev Setup bereitzustellen.

Was macht das ddev Setup?

  • Bereitstellen der korrekten PHP Version in einem Docker Container
  • Installation von Magento Test-Systemen (Magento 2.3.x und Magento 2.4.x)
  • Bereitstellen der notwendigen Tools die zum Bauen der n98-magerun2.phar Datei benötigt werden.
  • Test-Umgebung bereitstellen

In Aktion!

Einfach ddev start eingeben. Vorher müssen die Umgebungsvariablen MAGENTO_REPO_USERNAME und MAGENTO_REPO_PASSWORD in der .ddev/config.yaml hinterlegt werden. Falls nicht geschehen, kommt ein entsprechender Hinweis beim Hochfahren der Umgebung. Das wird für Installation der Magento Test-Systeme über die Adobe Server benötigt. Vielleicht stelle ich das auch auf die Mage-OS Paketserver um. Diese benötigen keine Zugangsdaten. Diese werden nur für den Adobe Composer Paketserver benötigt.

RabbitMQ in Docker mit persistenten Daten

Cover Image

Ich nutze zuhause ein RabbitMQ Server um gewisse Aufgaben in meinem Node-RED in Queues zu schreiben, damit diese asynchron verarbeitet werden können. Einige der Daten sollen dauerhaft vorgehalten werden. Heute fiel mit auf, dass in meinem RabbitMQ die Verbindung zu RabbitMQ nicht als aktiv angezeigt wurde. Ich war quasi offline.

Fehlersuche

Ein Blick auf den Server zeigte mir, dass ich keine korrekte restart policy in der docker-compose.yml eingetragen hatte. Nach einem restart: unless-stopped und docker compose up -d lief der Server wieder.

yadm - Dotfiles zwischen verschiedenen Rechnern teilen

Cover Image

Vor einigen Jahren habe ich versucht meine lokalen Konfiguration irgendwie zu versionieren. Das hat den Vorteil, dass man seine Einstellungen wieder rückgängig machen kann. Auch lassen sich die Einstellungen dann zwischen verschiedenen Maschinen teilen. Eine Idee von damals war, dass man seine Dotfiles in einem Verzeichnis ablegt und dort ein GIT Repository einrichtet. Wie kommen dann die Konfigurationen an den korrekten Platz? Mit Symlinks war dann oft die Antwort. Das klappt in den meisten Fällen gut, aber es gibt ein paar Einschränkungen.

Kitty - GPU beschleunigter Terminal Emulator

Cover Image

Letzte Woche habe ich einen Podcast über golang und moderne Kommandozeilen Applikationen von Charm gehört. Falls ihr das noch nicht gesehen habt, holt dies nach. Die Kommandozeile kann sehr viel beeindruckender sein als wir bisher gewohnt sind. Das Kommandozeilen so aussehen wie vor 30 Jahren liegt an diversen Dingen. Im Podcast wurde der Terminal Emulator Kitty sehr gelobt. Da der Terminal Emulator zudem noch plattformunabhängig ist, musste ich diesen einfach ausprobieren. Ich suche schon eine Weile eine Lösung die auf meinem Firmen MacBook, sowie auf meinen Linux Rechnern gleich funktioniert. Kitty gibt es sowohl für Linux als auch für MacOS. Windows ist mir hier egal.

Einfacher GraphQL Server in PHP

Cover Image

Im folgende Blog-Post möchte ich zeigen, wie leicht man mit PHP einen einfachen GraphQL Server schreiben kann. Wir nutzen dafür eine bekannte PHP Bibliothek und ddev um eine PHP Umgebung im aktuellen PHP 8.1 aufzusetzen. Den gezeigte Code aus dem Blog-Post habe ich bereits auf Github bereitgestellt (Link in der Box am Ende).

Das Projekt legen wir über einfache Shell Befehle an.

mkdir php-graphql
cd php-graphql
ddev config --omit-containers="db,dba" --php-version="8.1"
ddev composer init

Es sollte jetzt ein lokale ddev Projekt über die URL https://php-graphql.ddev.site aufrufbar sein. Da noch keine index.php Datei im Projekt enthalten ist, sollte ein 404 Fehler im Browser erscheinen.

DDEV 1.19

Cover Image

Eine neue DDEV Version erblickt die Welt. Das neue DDEV 1.19 hat einige Verbesserungen zu bieten-

Netzwerke und und und …

Unter der Haube wurde einiges an der Docker Netzwerk Verwaltung geschaubt. Jedes ddev Projekt legt nun ein eigenes Docker Netzwerk an. Vorher waren alle ddev Projekte in einem globalen ddev Netzwerk. Die Trennung ist super sinnvolle da es damit zu weniger Konflikten kommt. Die docker-compose YAML Dateien sollten jetzt ohne links: Einträge erstellt werden. Sind noch welche vorhanden.

Automatisieren mit Stream Deck und D-Bus unter Linux

Cover Image

Da ich immer mehr Remote-Meetings habe in denen ich präsentieren muss, habe ich schon länger mit dem Gedanken gespielt hier ein wenig mehr zu optimieren und zu automatisieren. Ideen sind u.a. einige Einstellungen in der Software OBS schneller vorzunehmen oder in Zoom automatisch ein paar Einstellungen vorzunehmen. Auch das automatische arrangieren von Fenstern ist immer ein Thema, wenn man etwas präsentiert.

Eine nette Hardware die ich immer im Auge hatte, war ein Stream Deck.

Xliff zu CSV konvertieren

Heute musste ich eine XLIFF Datei mit Übersetzungen in eine CSV Datei konvertieren. Da die Datei recht Umfangreich war wollte ich das nicht manuell machen und habe ein entsprechendes Programm gesucht, was die Aufgabe übernimmt. Die gefundenen Programme waren alle recht alt und haben leider nicht mehr funktioniert.

Die Datei sah ungefähr so aus:

<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
  <file source-language="en-US" datatype="plaintext" original="">
    <body>
      <trans-unit id="defaultTitle">
        <source>defaultTitle</source>
        <target>The Example App</target>
      </trans-unit>
      <trans-unit id="whatIsThisApp">
        <source>whatIsThisApp</source>
        <target>Help</target>
      </trans-unit>
      <trans-unit id="metaDescription">
        <source>metaDescription</source>
        <target>This is "The Example App", a reference for building your own applications using Contentful.</target>
      </trans-unit>
      <!-- ... weitere Einträge -->
  </file>
</xliff>  

jq, yq, xq

Die Lösung war dann doch recht einfach. Das Tool “xq” was ich sowieso schon genutzt habe, konnte die XML Datei ohne Problem in ein CSV konvertieren. Das Programm xq ist ein Teil von yq, was ähnlich zu jq ist. Verwirrt?

Magerun Beispiel Modul mit Test Setup

Nachdem wir bei netz98 diese Woche das Test-Framework auf die Version 2.0.2 aktualisiert hatten, ist mir aufgefallen, dass es bisher auch noch kein echtes Beispiel-Modul als Github Projekt gab.

Daher habe ich jetzt den Beispiel-Code einfach in ein Beispiel-Modul gepackt und diesen auf Github veröffentlicht. Das Beispiel-Modul beinhaltet auch ein ddev Setup in dem dann ein Magento Shop installiert wird. Im Beispiel Modul ist folgendes enthalten:

  • ddev Setup
  • Beispiel Kommando, welches einfach den PHP-Klassennamen von sich selbst ausgibt.
  • PHPUnit Test für das Magerun Modul Test Framework.
Info
Das Beispiel Modul findet ihr hier: https://github.com/netz98/n98-magerun2-example-module