Probleme bei der Testausführung unter IntelliJ IDEA

Bei der Ausführung bestimmer Testfälle mittels JUnit kann es unter IntelliJ IDEA zu folgender Fehlermeldung kommen:

Error running ‚ConverterTest‘: Command line is too long. Shorten command line for ConverterTestor also for JUnit default configuration.

Hintergrund für diesen Fehler ist das Problem, das die Kommandozeile zur Ausführung des Tests zu lang wird. Dies kann durch Beschränkungen des Betriebssystems passiere. IntelliJ IDEA versucht nun die Kommandozeile zu kürzen, um eine Ausführung zu ermöglichen.

Über die Konfiguration kann der Fehler behoben werden

Behoben werden kann das Problem über die Konfiguration des Testes. Dazu sollte der Run/Debug Configuration-Dialog geöffnet werden. Dort sollte im Tab Configuration unter dem Punkt Shorten command line der Punkt JAR manifest ausgewählt werden. Anschließend sollte der Test ohne Probleme durchgeführt werden können.

OpenUI

Frameworks zum Bau von Web-Apps gibt es eine Menge. Neben den bekannteren wie z.B. React und Vue existieren auch einige unbekanntere Frameworks. Eines dieser Frameworks ist OpenUI. OpenUI ist die freie Variante von SAPUI, einer von SAP entwickelten Bibliothek für Web-Apps. OpenUI bietet eine große Anzahl an Komponenten, welche zum Bau von Applikationen genutzt werden können.

Ein Beispiel-App welche mittels OpenUI realisiert wurde

Neben der Unterstützung für MVC, bietet OpenUI eine Reihe von Funktionalitäten wie Lokalisation, Theming, Data Bindings, so das selten andere 3rd-Party Bibliotheken benutzt werden müssen. Integriert in OpenUI ist daneben eine jQuery-Version, so das DOM-Manipulationen mit dieser vorgenommen werden können. Problematisch an OpenUI ist, das es neben der ausgezeichneten Dokumentation, relativ wenige Tutorials und Hilfestellungen im Netz zu finden sind. Die offizielle Seite des Projektes kann unter openui5.org besucht werden. Der Quelltext von OpenUI ist auf GitHub zu finden. Er ist unter der Apache License in Version 2 lizenziert und damit freie Software.

Terminal-Bibliothek für Java

Für ein kleines Projekt wollte ich eine Visualisierung in der Konsole bzw. im Terminal unter Java realisieren. Das Problem ist das bei der Visualisierung, je nach verwendetem Terminal, bestimmte Operationen nicht verfügbar sind. Dies fängt schon beim Löschen des Bildschirmes an. Je nach Art des Terminals bzw. Betriebssystem kann es hier unterschiedliche Ansätze geben, um dieses Problem zu lösen. Abhilfe bei diesen Problemen schafft die Bibliothek Lanterna.

Lanterna in Aktion

Laterna liefert die Möglichkeit Text-Schnittstellen und GUIs zu bauen, unabhängig vom verwendeten Terminal. Damit ähnelt sie der C-Bibliothek ncurses. Die Bibliothek ist in der Lage festzustellen, auf welcher Art Terminal sie läuft und kann somit die Ausgabe entsprechend anpassen. So werden z.B. Unix-Steuercodes genutzt, wenn das Terminal diese unterstützt. Nach der Einbindung per Maven:

<dependency>
    <groupId>com.googlecode.lanterna</groupId>
    <artifactId>lanterna</artifactId>
    <version>3.0.1</version>
</dependency>

kann die Nutzung der Bibliothek beginnen. Im ersten Schritt sollte eine Instanz der Klasse Terminal angelegt werden:

Terminal terminal = new DefaultTerminalFactory().createTerminal();

Dies übernimmt die DefaultTerminalFactory. Sie sorgt dafür, dass das passende Terminal ausgewählt wird. Nun können Zeichen auf das Terminal geschrieben werden:

terminal.clearScreen();
terminal.putCharacter('a');

Hier wird das Terminal erst bereinigt und anschließend das Zeichen a auf das Terminal geschrieben. Neben der direkten Arbeit mit dem Terminal, liefert Lanterna eine Abstraktionsschicht namens Screen mit, mit welcher das Terminal wie ein pixelbasiertes Gerät angesprochen werden kann. Neben der Ausgabe beherrscht die Bibliothek die Eingabe. Mittels:

KeyStroke keyStroke = terminal.pollInput();

wird die aktuelle gedrückte Taste abgefragt. Diese Methode arbeitet nicht-blockierend. Für den Fall das eine blockierende Methode benötigt wird, eignet sich die Methode:

KeyStroke keyStroke = terminal.readInput();

Damit lassen sich mithilfe der Bibliothek komplexe Anwendungen auf dem Terminal umsetzen. Wenn die Anwendung beendet werden soll, muss das Terminal mittels:

terminal.close();

geschlossen werden. Der Quelltext der Bibliothek ist auf GitHub zu finden. Er ist unter der LGPL lizenziert und damit freie Software.

Slim Framework

Für wahrscheinlich jede Programmiersprache existieren mehr oder weniger viele Frameworks, welche dem Entwickler bestimmte Aufgaben abnehmen und somit die Entwicklung beschleunigen. Neben den größeren Framework existieren auch eine Reihe von Frameworks mit einem minimalistischeren Ansatz. Eines dieses sogenannten Microframeworks ist Slim. Entwickelt wird und wurde Slim für PHP.

slimframework.com

Slim eignet sich sehr gut für die Umsetzung für REST-APIs bzw. RESTful Webservices. Um ein Projekt zu erstellen, kann der Paket- bzw. Dependency-Manager Composer genutzt werden:

composer create-project slim/slim-skeleton exampleapp

Damit wird ein Grundprojekt angelegt mit welchem gearbeitet werden kann. Auch von seitens des Swagger-Toolings wird Slim unterstützt. So kann eine API über den Swagger-Editor definiert werden und anschließend für das Slim-Framework exportiert werden. Der Quelltext des Frameworks ist auf GitHub zu finden. Es ist unter MIT-Lizenz lizenziert und damit freie Software. Die offizielle Seite des Projektes ist unter slimframework.com zu finden.

Unkompliziert Diagramme im Browser erstellen

Sei es für eine Präsentation oder für einen Artikel, ab und an besteht Bedarf an einem Diagramm. Auch Software für dieses Problem ist ohne Probleme zu finden. Ein wenig anders sieht es allerdings aus, wenn das Diagramm auf die Schnelle im Browser erstellt werden soll.

Mit draw.io lassen sich schnell Diagramme im Browser erstellen

Für einen solchen Fall bietet sich draw.io an. Mittels des Dienstes können Diagramme schnell im Browser erstellt werden. Dabei werden unterschiedlichste Formen und Diagrammarten unterstützt. Von allgemeinen Diagrammen über UML und Ablaufdiagramme lassen sich viele Diagramme mit draw.io umsetzen. Der Dienst verfügt über eine Export-Funktionalität mit welcher die Diagramme als Rastergrafik oder als Vektorgrafik exportiert werden können. Betrieben wird der Dienst von der JGraph Ltd..