WiX 4 in Vagrant Maschine installieren

WiX 4 benötigt .NET SDK 6 oder höher. Das .NET SDK per Shell Provisioner zu installieren ist aber nicht ganz offensichtlich, was primär an zweierlei liegt:

MS möchte .NET gerne per winget installieren, was eine AppStore-App ist (heißt das so?), die per Provisioner selbst nach der abenteuerlichen Installation der Dependencies nicht verfügbar ist:

Program ‘winget.exe’ failed to run: The file cannot be accessed by the systemAt C:\tmp\vagrant-shell.ps1:1 char:1

– vermutlich liegt der Grund irgendwo hier, hier oder hier. Keine Ahnung, Windows halt.

Wenn man .NET dann anders installiert, werden die Umgebungsvariablen nicht mit gesetzt m( Na ja, long story short:

Mit dotnet-install.ps1 von hier; zum Einsatz kommt StefanScherer/windows_10. Der Reboot am Ende sollte imho nicht notwendig sein, aber ohne findet er weder wix.exe, noch dotnet.exe. Windows halt.

WordPress: onclick

Es gibt eine neue Unterseite: tools. Darin ist noch fast nichts, nur ein Link, der mir ein “breitenloses Leerzeichen” in die Zwischenablage kopiert. Gut zu gebrauchen auf Mastodon, um bspw. das Plural-S von #hashtags abzutrennen. Aber das ist nicht der Grund, warum ich das poste.

Der Grund, warum ich das poste, ist dass es nicht offensichtlich ist, wie man WordPress einen JS-Link beibringt. onclick wird (offenbar?!) rausgefiltert, das altmodische href="javascript:" ebenfalls. Wie folgt geht es:

Das macht sich Gutenberg-Syntax zunutze, was aber auch im Classic-Editor erhalten bleibt.

Gradle: Gezippte Dependency verwenden

via, und/bzw.

Darauf zugreifen kann man dann bspw. in anderen Tasks mittels

PS: Mir ist bewusst, dass ${buildDir} deprecated ist, aber ${layout.buildDirectory} ging aus irgendeinem Grund nicht.

Gradle: Task mit bestimmtem JRE ausführen

Edit zur Erklärung: Gradle benötigt Java, und bspw. ein installiertes JDK 17 kann natürlich Language Level 8 kompilieren. Aber es ist trotzdem ein JDK 17 und enthält bspw. kein JAXB mehr. Die Aufgabe ist hier, einen Gradle-Task unabhängig von meiner Java Version mit einem 8er JRE auszuführen. Das verwendete Plugin lädt alles dafür benötigte herunter.

Original Post below:

settings.gradle:

build.gradle:

via, und, Danke Nils!

Mastodon in WordPress Menü

Whoop whoop! Nachdem Elmo Twitter kaputt gemacht hatte, war ich letzten November endgültig zu Mastodon gewechselt. Das Widget im Menü hier hatte ich gelöscht. Nun habe ich in neues gefunden, das analog für Mastodon funktioniert: include-mastodon-feed.

Folgender Shortcode kommt zum Einsatz (might change):

include-mastodon-feed instance=”troet.cafe” account=”109371466136964927″ limit=”1″ excludeBoosts=”true” excludeReplies=”true” excludeConversationStarters=”true” linkTarget=”_blank” showPreviewCards=”false” text-permalinkPre=”am” date-locale=”de-DE” date-options=”{year:undefined, month:’long’, day:’numeric’, hour:’numeric’, minute:’numeric’}” text-permalinkPost=”:”

Ergänzt um etwas css:

Slow Movie Player: PHP controlled

Um meinen Slow Movie Player via PHP zu “steuern” (aka den Service ein- und auszuschalten erst mal nur), bedurfte es eigentlich nur einer Änderung: Ich musste dem entsprechenden User (hier: www-data) das Recht geben, den Service per systemctl zu starten und zu stoppen: $ sudo visudo, dann

Achtung: Die Zeile muss an das Ende der Datei!

Dann ist das ziemlich einfach:

Achtung: systemctl ist hier in /usr/bin, nicht in /bin!

Zwischendurch habe ich zum Debuggen

  • den User www-data zu sudo hinzugefügt: sudo usermod -aG sudo www-data (und dann aber wieder entfernt: sudo gpasswd --delete www-data sudo)
  • dem User www-data eine Shell (und ein Home-Verzeichnis und ein Passwort) zugewiesen, damit er sich einloggen kann (und dann wieder entfernt)

PS, zum Einsatz kommt PHP 8.2, mittels Umweg über sury.org.

Default value for bash script parameter

Die Verbindung von How can I pass a command line argument into a shell script? und Assigning default values to shell variables with a single command in bash sieht wie folgt aus:

Aufzurufen dann wahlweise mit oder ohne Parameter:

– klar.

MicroPython vs. HTTP Response Headers

Der Raspberry Pi Pico W ist pure Magie. Ein Microcontroller, in Python zu steuern, mit WLAN on board 😍 Super einfach, damit irgendwas im Netz zu machen – essentiell für IoT, looking at you, Arduino.

(Aber man muss|Außerdem kann man) viel über MicroPython lernen. Zum Beispiel, wie urequests Response-Header parst: Als Key/Value. Das ist uncool, da es durchaus Header gibt, die doppelt kommen können und sollen:

The optional replace parameter indicates whether the header should replace a previous similar header, or add a second header of the same type. By default it will replace, but if you pass in false as the second argument you can force multiple headers of the same type. For example:

Sagt PHP (replace Parameter).

The Set-Cookie HTTP response header is used to send a cookie from the server to the user agent, so that the user agent can send it back to the server later. To send multiple cookies, multiple Set-Cookie headers should be sent in the same response.

Sagt Mozilla.

Imho nicht unbedingt unseriöse Quellen, aber für MicroPython ist das trotzdem kein schlagendes Argument; Header duplicates werden weiterhin nicht unterstützt werden. Siehe meine längliche Diskussion ab hier.

Es gibt aber einen Workaround, und der ist imho nicht offensichtlich: Man kann nämlich urequests.post() mit einem Parameter parse_headers aufrufen, der erstmal ein Boolean ist – aber auch eine Callback-Funktion sein kann:

Das Fragment (ich hoffe, ich habe auf die Schnelle nichts vergessen) printed alle Cookies. HTH.

Git Properties

gradle-git-properties, ne? Da ist war mir nicht ganz klar, wie man das in einem Task vor doLast{} verwendet; ich bekam immer

Cannot get property ‘gitProps’ on extra properties extension as it does not exist

. Dabei steht es eigentlich da 🙂 Also:

hth