JavaScript-Animationen in 140 Zeichen

Damals, als die Welt noch in Ordnung war, erlaubte Twitter 140 Zeichen pro Tweet. Diese Grenze haben die Menschen hinter dem Projekt Dwitter genommen und in eine Herausforderung umgewandelt. Bei Dwitter geht es darum in maximal 140 Zeichen eine JavaScript-Animation zu erstellen. Die Ergebnisse können sich sehen lassen; mittlerweile befinden sich etliche solcher Animationen auf der Seite und zeigen was in 140 Zeichen alles möglich ist.

In 140 Zeichen zu einer JavaScript-Animation

Zu finden ist das Projekt unter dwitter.net. Die Webseite, ein in Python geschriebenes Projekt, ist freie Software und unter Apache License in der Version 2 lizenziert. Der Quelltext kann über GitHub bezogen werden.

Code Snippets über Postman generieren

Mit der App Postman ist es möglich REST-API Aufrufe gegen beliebige Endpunkte durchzuführen. Allerdings bietet Postman weitere Funktionalität, welche vom normalen Tagesgeschäft der App abweicht. Eine dieser Funktionalitäten ist der Code Snippet Generator.

Code Snippets können für unterschiedliche Sprachen und Frameworks erzeugt werden

Mit diesem Generator kann ein beliebiger Request in Quellcode umgewandelt werden. Der Generator unterstützt unterschiedliche Programmiersprachen und Frameworks. Für Java würde, unter Nutzung der OK HTTP Bibliothek, das Ganze so aussehen:

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\r\n\tfield: \"data\",\r\n\tfield2: \"data\",\r\n\tfield3: \"data\"\r\n}");
Request request = new Request.Builder()
  .url("https://example.com")
  .post(body)
  .addHeader("HeaderField", "headerValue")
  .addHeader("Content-Type", "text/plain")
  .addHeader("User-Agent", "PostmanRuntime/7.11.0")
  .addHeader("Accept", "*/*")
  .addHeader("Cache-Control", "no-cache")
  .addHeader("Postman-Token", "7dda208f-ba63-467d-99cd-98455c2b3a7a,9125dbf4-cd5c-4070-87e3-fcda7416ca08")
  .addHeader("Host", "example.com")
  .addHeader("accept-encoding", "gzip, deflate")
  .addHeader("content-length", "56")
  .addHeader("Connection", "keep-alive")
  .addHeader("cache-control", "no-cache")
  .build();

Response response = client.newCall(request).execute();

Erreichbar ist das Feature über den Code-Link, welcher unter dem Send-Button des Hauptfensters zu finden ist. Nach einem Klick auf den Link erscheint ein Dialog in welchem die gewünschte Sprach- und Frameworkkombination ausgewählt werden kann.

Unter dem Send-Button ist der Code-Link zu finden

Als Sprachen für die Generierung von Code Snippets werden unter anderem C#, Go, Java, JavaScript, Objective-C, PHP, Python und Swift unterstützt. Daneben werden bestimmte Tools wie curl und wget unterstützt. Postman selber kann unter getpostman.com bezogen werden.

Speedtest unter Ubuntu auf der Konsole

Für den Test der Geschwindigkeit der eigenen Anbindung an das Internet, gibt es seit Jahren den Speedtest von Ookla. Dieser kann nicht nur im Browser, sondern auch in der Konsole unter Ubuntu genutzt werden. Nach der Installation mittels:

apt install speedtest-cli

kann der Dienst über die Kommandozeile genutzt werden:

speedtest-cli

Anschließend startet der Test der Anbindung und das entsprechende Ergebnis wird dargestellt:

Retrieving speedtest.net configuration…
Testing from Deutsche Telekom (XXX.XXX.XXX.XXX)…
Retrieving speedtest.net server list…
Selecting best server based on ping…
Hosted by SMSnet (Szczecin) [85.48 km]: 24.498 ms
Testing download speed……………………………………………………………………..
Download: 160.21 Mbit/s
Testing upload speed…………………………………………………………………………………………
Upload: 121.56 Mbit/s

Im Gegensatz zur Webseite kommt die Version für die Kommandozeile ohne Werbung aus. Das Projekt für die Kommandzeilen-Version befindet sich auf GitHub. Es ist unter der Apache-Lizenz in Version 2 lizenziert und somit freie Software.

WordPress-Beiträge als Markdown exportieren

Auf der Suche nach einer Möglichkeit um Beträge in WordPress als Markdown-Dateien zu exportieren, bin ich auf wp2md gestoßen. Dabei handelt sich um eine kleine Applikationen zur Umwandlung der WordPress-XML-Exportdatei zu Markdown. Zur Installation muss der Python-Paketmanager pip bemüht werden:

pip install git+https://github.com/dreikanter/wp2md

Anschließend kann wp2md für dem Export genutzt werden:

wp2md -d output/ export.xml

In der Minimalkonfiguration muss der Ausgabepfad und die Exportdatei angegeben werden. Die Export-Datei wird vorher unter WordPress über Werkzeuge -> Daten exportieren erzeugt. Anschließend erscheinen die Logmeldungen über den Exportfortschritt:

Dumping post to 'output/posts/20180616-pdfs-aus-bildern-mittels-imagemagick-erstellen.md'
Dumping post to 'output/posts/20180617-homebrew-deinstallieren-2.md'
Dumping post to 'output/posts/20180618-fernausloesung-der-kamera-am-iphone.md'
Dumping post to 'output/posts/20180619-transparente-verschluesselung-fuer-cloud-dienste.md'
Dumping post to 'output/posts/20180620-online-vektorisierer-fuer-rastergrafiken.md'
Dumping post to 'output/posts/20180711-zettlr-ein-flexibler-markdown-editor.md'
Dumping post to 'output/posts/20180712-bsnes-neu-aufgelegt.md'
Dumping post to 'output/posts/20180713-enpass-als-1password-alternative.md'
Dumping post to 'output/posts/20180720-ideentool-mit-neuen-generatoren-erschienen.md'
Dumping post to 'output/posts/20180723-cryptomator-laufwerk-verschwindet-unter-macos.md'
Dumping post to 'output/posts/20180725-puffer-fuer-streaming-im-vlc-mediaplayer-erhoehen.md'
Dumping index to 'output/index.md'

Total: posts: 3239; pages: 78; comments: 2878
Elapsed time: 30.55538 s

Neben den eigentlichen Artikeln, werden die dazugehörigen Kommentare exportiert. Daneben werde andere Inhalte wie Seiten und Entwürfe ebenfalls exportiert. Über die Kommandozeilenparameter kann der Export granulärer gesteuert werden. Der Quelltext des Projektes ist auf GitHub zu finden. Lizenziert ist das Projekt unter der GPL in der Version 3 und damit 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.