Rollback-Plugin für WordPress

Neben meinen eigentlichen WordPress-Instanzen betreibe ich einige Entwickler-Instanzen. Dort habe ich ab und an das Problem, das ich bestimmte Plugins in einer älteren Version nutzen möchte. Natürlich kann man nun für jeden Fall die gewünschte Version herunterladen und manuell installieren.

Über WP Rollback können Plugins auf beliebige Versionen zurückgerollt werden

Einfacher geht dies mit dem WordPress-Plugin WP Rollback. Das Plugin ermöglicht es über die administrative Oberfläche von WordPress beliebige Plugins auf beliebige Versionen zurückzusetzen. Dazu muss nur das passende Plugin und die gewünschte Version ausgewählt werden und anschließend wird der Rollback durchgeführt.

Der Quelltext des Plugins ist auf GitHub zu finden. Lizenziert ist das Plugin unter der GPL in Version 2 und damit freie Software.

Siri; die Neuheit aus den 80ern

Das Siri vor einigen Jahren erfunden wurde ist ja ein Trugschluss. Zu mindestens in diesem Video wird gezeigt wie Siri in der 80er Jahren aussah:

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://www.youtube.com/watch?v=xGcrvGTMgkg

Vorgestellt wird in dem Video die MS-DOS Version von Siri, mit all ihren Stärken und Schwächen. Auf dem Kanal des Autors findet man weitere Zeitreise-Videos, mit heute bekannten Apps.

Footer einer MediaWiki bearbeiten

Bei einer Wiki, welche mittels der freien Software MediaWiki aufgesetzt wurde gibt es unten, am Ende jeder Seite, einen Footer mit einer Reihe von Links. Wenn man diesen Links ändern möchte muss die Konfiguration in der Datei LocalSettings.php angepasst werden. Die erste Möglichkeit wäre es den Footer komplett verschwinden zu lassen. Dazu muss am Ende der LocalSettings.php-Datei folgendes eingetragen werden:

$wgHooks['SkinTemplateOutputPageBeforeExec'][] = function( $sk, &$tpl ) {

        # Remove existing entries
        $tpl->data['footerlinks']['places'] = array();

        return true;
};

Technisch betrachtet wird der der Hook SkinTemplateOutputPageBeforeExec genutzt um die Logik für den Footer etwas abzuwandeln. Möchte man nach dem Löschen der alten Einträge neue Einträge hinzufügen, so ist dies ebenfalls möglich:

$wgHooks['SkinTemplateOutputPageBeforeExec'][] = function( $sk, &$tpl ) {

        # Remove existing entries
        $tpl->data['footerlinks']['places'] = array();

	# Add new entries
        $tpl->set( 'disclaimerpage', $sk->footerLink( 'disclaimerpage', 'disclaimerpage' ) );
        $tpl->data['footerlinks']['places'][] = 'disclaimerpage';

        $tpl->set( 'privacypage', $sk->footerLink( 'privacypage', 'privacypage' ) );
        $tpl->data['footerlinks']['places'][] = 'privacypage';

        return true;
};

Fenster mittels Tastatur unter macOS anordnen

Unter Windows ist es möglich Fenster mit Hilfe der Tastatur anzuordnen. Unter macOS existiert eine solcher Mechanismus nicht. Glücklicherweise muss dies nicht so bleiben, da es eine Reihe von Tools gibt, welche macOS um eine solche Funktionalität erweiterten. Eines dieser Tools ist Spectacle. Nach der Installation von Spectacle, ist dieses in der Menüleiste zu finden. Spectacle bietet nun über global gültige Tastenkombinationen, eine Reihe von Möglichkeiten zur Anordnung der Fenster.

Die Einstellungen der App

Der Quelltext der App ist auf GitHub zu finden; die App selber auf der offiziellen Seite unter spectacleapp.com. Lizenziert ist Spectacle unter der MIT Lizenz und somit freie Software.

Clients und Server-Stubs mittels Swagger Codegen erzeugen

Mit Swagger gibt es seit einigen Jahren eine Möglichkeit REST-API sinnvoll zu dokumentieren und zu generieren. Aus einer YAML-Datei, welche die Beschreibung der API enthält kann mit dem Swagger Code Generator (kurz Swagger Codegen) eine entsprechende Client-Bibliothek oder ein Server-Stub erzeugt werden. Eine solche minimale YAML-Datei könnte wie folgt aussehen:

swagger: '2.0'
info:
  description: "API"
  version: "2018.04"
  title: "API"
host: "api.example.com"
basePath: "/v1"
schemes: 
- "https"
paths:
  /tree:
    get:
      produces: 
      - "application/json"
      summary: Returns the document tree
      tags:
      - "Document tree"
      description: Lorem Ipsum dolor sit amet
      responses:
        200:
          description: OK

In dieser Datei wird eine Ressource mit dem Namen tree und für diese eine Get-Methode definiert. Um daraus nun die Client-Bibliotheken bzw. Server-Stubs zu generieren muss der Swagger Codegen über Git bezogen, anschließend kompiliert und paketiert werden:

https://github.com/swagger-api/swagger-codegen.git
cd swagger-codegen
mvn clean package

Zur Erzeugung eines PHP-Server-Stubs mit dem Slim-Framework kann der Swagger Codegen anschließend wie folgt genutzt werden:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate -i api.yaml   -l slim -o folder/slim

Eine Client-Bibliothek wird auf dem gleichen Weg erzeugt:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate -i api.yaml   -l javascript -o folder/javascript

In diesem Fall wird eine JavaScript-Client-Bibliothek erzeugt. Die verfügbaren Sprachen bzw. Frameworks für die Clients und Server-Stubs erzeugt werden können, können mit dem Befehl:

java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar langs

angezeigt werden. Die Ausgabe spezifiziert alle vorhandenen Generatoren:

Available languages: [ada, ada-server, akka-scala, android, apache2, apex, aspnetcore, bash, csharp, clojure, cwiki, cpprest, csharp-dotnet2, dart, elixir, elm, eiffel, erlang-client, erlang-server, finch, flash, python-flask, go, go-server, groovy, haskell-http-client, haskell, jmeter, jaxrs-cxf-client, jaxrs-cxf, java, inflector, jaxrs-cxf-cdi, jaxrs-spec, jaxrs, msf4j, java-pkmst, java-play-framework, jaxrs-resteasy-eap, jaxrs-resteasy, javascript, javascript-closure-angular, java-vertx, kotlin, lua, lumen, nancyfx, nodejs-server, objc, perl, php, powershell, pistache-server, python, qt5cpp, r, rails5, restbed, ruby, rust, rust-server, scala, scala-gatling, scala-lagom-server, scalatra, scalaz, php-silex, sinatra, slim, spring, dynamic-html, html2, html, swagger, swagger-yaml, swift4, swift3, swift, php-symfony, tizen, typescript-aurelia, typescript-angular, typescript-inversify, typescript-angularjs, typescript-fetch, typescript-jquery, typescript-node, undertow, ze-ph, kotlin-server]

Lizenziert ist der Swagger Codegen unter der Apache Licence in der Version 2 und somit freie Software.