Einfach an der URL ein ?debug ranhängen z.B.:
http://localhost:8080/vaadin-url/?debug
schon wird ein Fenster angezeigt mit unterschiedlichen Reitern für die Fehlersuche:
Wenzlaff.de – Rund um die Programmierung
mit Java, Raspberry Pi, SDR, Linux, Arduino, Sicherheit, Blender, KI, Statistik, Krypto und Blockchain
Programmierung
Was gibt es neues in JUnit 5.3.0-M1?
Hier eine Beispiel POM: „JUnit 5 mit 5.3.0-M1 auf Photon mit Maven läuft!“ weiterlesen
Es ist eine neue Version der STS für Photon veröffentlicht worden. Dann mal wie folgt über den Eclipse-Marktplatz installieren, neu ist in Photon der Dialog mit den Zertifikaten. Also nach Spring suchen, und auf den Install Button klicken …
„Gestern ist das Spring Tool Suite 3.9.5 PlugIn released für Eclipse Photon mit Support für JDK 9/10“ weiterlesen
Mitten im Fussballspiel der Weltmeisterschaft wurde die neue Photon Eclipse Version veröffentlicht. Bei heise.de gibt es einen Überblick mit Video. Jetzt kann auch der Testcode mehr getrennt werden. Dann mal downloaden.
Erster Quicktest mit Java 9 und JUnit läuft: „Photon, besser als Fussball!“ weiterlesen
Manchmal braucht man für eine Präsentation oder ein Dokument farbige Beispiele von Quellcode oder auch für Dokus. Wie können die nun erstellt werden? Dafür gibt es ein cooles Programm highlight von Andre Simon. Highlight konvertiert Sourcecode in XHTML, HTML, RTF, TeX, LaTeX, SVG, BBCode und Terminal Escape-Sequenzen mit farbiger Syntaxhervorhebung. Sprachdefinitionen und Farbstile sind konfigurierbar. Es werden eine ganze Menge Sprachen unterstützt. Im Moment 215!
Auf dem Raspberry Pi ist das Programm schnell installiert mit:
1 2 3 4 5 6 7 8 |
sudo apt-get install highlight # Version ausgeben mit highlight --version # Ergebnis: highlight version 3.18 # Anleitung man highlight |
So, nun ein Beispiel, wir nehmen mal eine CPP Klasse aus meinen C++ Lehrgang, Temperatur.cpp, und geben die farbig auf der Konsole aus mit:
1 |
highlight -O ansi Temperatur.cpp |
Nun können wir auch die Ausgabe in eine Datei im RTF Format umleiten mit: „Syntaxhighlighter sagt der Daltonist 😉 Wie kann Quellcode (Java, C++, C …) in PPT oder Word in Farbe eingefügt werden?“ weiterlesen
Dafür gibt es ein Eclipse Plugin (klein aber Fein) welches auch mit Eclipse Oxygen 3A läuft. Das Archive Utility. Es kann über den Eclipse Marktplatz installiert werden.
„Wie können in Eclipse Oxygene 3A JARs leicht angeschaut und entpackt werden?“ weiterlesen
Mit den neuen Tags (org.junit.jupiter.api.Tag) können Methoden und auch ganze Klassen getagt werden, um sie z.B. in Gruppen einzuteilen.
Eine Testgruppe könnte z.B. eine langlaufende DB Methoden sein, die nicht immer ausgeführt werden soll.
Ein Tag muss folgenden Syntax Regeln folgen:
-ein Tag darf nicht Leer sein
-ein Tag darf keine Leerzeichen enthalten
-ein Tag darf keine ISO Kontroll Zeichen enthalten
-ein Tag darf kein, (, ), %, | oder ! Zeichen enthalten
Eine Testklasse zur WM 2018 könnte so aussehen:
„Es muss ja nicht immer Fussball und Weltmeisterschaft sein! Neue Annotation für JUnit 5 – Tags sind auch spannend!“ weiterlesen
Wie kann eine Vaadin Spring Boot mit Hibernate Anwendung auf JUnit 5 für Eclipse Oxygene 3A umgestellt werden?
1. Deaktivieren wir die JUnit (4.12) Libs in der pom.xml:
1 2 3 4 5 6 7 8 9 10 11 12 |
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <!-- Kein JUnit 4 mehr für den Test--> <exclusions> <exclusion> <groupId>junit</groupId> <artifactId>junit</artifactId> </exclusion> </exclusions> </dependency> |
2. Fügen wir die nötigen JUnit 5 Libs in der pom.xml hinzu:
1 2 3 4 5 6 7 8 9 10 11 12 |
<!-- Alles für JUnit 5 --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <scope>test</scope> </dependency> <!-- and the engine for surefire and failsafe --> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <scope>test</scope> </dependency> |
3. Wir fügen JUnit 5 dem Buildpfad hinzu:
Es sieht dann so aus:
„Wie kann eine Vaadin Spring Boot Anwendung in 15 Minuten auf JUnit 5 umgestellt werden?“ weiterlesen
Um eine Vaadin Anwendung mit Spring Boot und Hibernate als Linux Service einzurichten, muss zuerst ein ausführbares Jar erstellt werden.
Dafür muss in der pom.xml die Konfiguration im spring-boot-maven-plugin auf executable = true gestellt werden:
1 2 3 4 5 6 7 |
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <executable>true</executable> </configuration> </plugin> |
Wenn das JAR (z.B. TWSuch-0.0.1-SNAPSHOT.jar) dann mit mvn package erstellt wird, ist es ein selbstausführendes JAR. „Wie kann eine Vaadin Spring Boot App als Linux Service erstellt werden?“ weiterlesen
Wie schaltet man die detailierte Error Page aus? Die ist ja auch nicht so schön:
Wer die Tomcat Error Page haben möchte: „Wie schaltet man die einfache Tomcat Error Seite für Spring Boot bzw. Vaadin an / aus?“ weiterlesen
Mit shellcheck kann man gut Shell Scripte überprüfen.Das kann man einfach online, über diese GUI www.shellcheck.net ausprobieren oder aber auch installieren.
Für den Raspberry Pi gibt es schon ein installations Packet, deshalb ist die Installation mit
1 2 3 |
sudo apt install shellcheck # Testen welche Version installiert wurde# # version: 0.4.4 |
schnell erledigt.
Das ist nun nicht gerade die aktuelle Version 0.5.0 aber immerhin. Ein selbst compilieren kommt für den Pi nicht infrage, da ShellCheck in Haskell programmiert ist und da für den compile mind. 2GB RAM benötigt werden, der Pi hat aber je nach Version max. 1GB.
Nun kann leicht eine Script Datei überprüft werden, mit Aufruf
shellcheck SCRIPT.sh. Hier mal zwei Beispiele:
„Shell Scripte überprüfen mit ShellCheck auch auf dem Raspberry Pi (Zero W) in 5 Minuten möglich und auch JUnit via xslt“ weiterlesen
Warum eigentlich nicht. Ist doch Java. Also mal ein Quicktest.
Java 1.8 und eine MySql DB (genauer Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0, MariaDB ist schneller als MySQL) sind auf dem Pi schon installiert.
Das ist auch Voraussetzung.
Dann das mit
1 |
mvn package |
erzeugte Vaadin 8 Jar mit Tomcat Server auf den Pi per Drag and Drop kopiert (43 MB) und auf der Kommandozeile ein
1 |
java -jar TW-0.0.1-SNAPSHOT.jar & |
Nach ein paar Sekunden
es startet schon mal. „Läuft eine Vaadin 8 Anwendung auch auf einem Raspberry PI Zero W?“ weiterlesen
Hier hatte ich geschrieben, wie man Signale von Autos, Temp.-Sensoren usw. empfangen kann. Diese Daten können auch leicht an einen Mqtt-Host gesendet werden.
Mosquitto muss installiert sein, das geht aber schnell:
1 2 3 4 5 6 7 8 9 |
sudo apt-get update sudo apt-get upgrade sudo apt-get install mosquitto mosquitto-clients python-mosquitto libmodule-pluggable-perl mosquitto-clients # Check mosquitto -v # Ergebnis 1528405571: mosquitto version 1.4.10 (build date Fri, 22 Dec 2017 08:19:25 +0000) starting 1528405571: Using default config. 1528405571: Opening ipv4 listen socket on port 1883. |
Marco Verleu hat ein kurzes Bash Script geschrieben, welche auf Github zu finden ist. Man braucht nur den Host und den Topic anpassen, zu testzwecken kann man den Host auch lassen. Dann einfach das Script mit ./rtl2mqtt.sh starten. Schon werden die empfangenen Nachrichten unter den Topic versendet. „Wie können mit SDR (auf 433 Mhz) auf dem Raspberry Pi Signale von Autos, Tempsensoren ua. empfangen und an ein MQTT-Host gesendet werden?“ weiterlesen
Manchmal braucht man eine „One to One“ Verbindung zweier BEs mit JPA (Java Persistence API) für Spring Boot (2.0.2) (JEE mit EJB 3.0 ist ähnlich, nur andere Annotationen).
Z.b. arbeiten ein Arzt in der Regel in einem Krankenhaus. Wenn sie nicht gerade als Belegärzte tätig sind. Also „One to One„:
Hier nun eine Kopiervorlage um diese wiederkehrende Verbindung anzulegen: „One to One mit Java Persistence API (JPA 2.0) und Spring Boot ohne XML“ weiterlesen
Will man Excel CSV Dateien einlesen geht das mit einem Einzeiler in Java:
1 |
parser = new CSVParser(reader, CSVFormat.EXCEL.withDelimiter(';').withHeader().withIgnoreHeaderCase().withTrim()); |
Hier die Testmethode die auch etwas Kontext auf der Konsole ausgibt dazu. Man sieht auch, das man auf die Inhalte über einen Index oder den Spaltennamen zugreifen kann. Dann muss auch jedesmal das gleiche Ergebnis geliefert werden, das wird auch in der assert abgetestet.
„Wie kann eine Excel CSV Datei mit Java mit Apache commons eingelesen werden?“ weiterlesen
Das geht mit dem Lombok Projekt.
Für eine Java-Daten Klasse z.B. Arzt
1 2 3 4 5 6 7 8 9 10 |
@Data public class Arzt { private String titel; private String vorname; private String name; } |
wird dann automatisch folgendes generiert: „Wie kann Boilerplate Code in Java reduziert werden?“ weiterlesen
Kleines C Programm für den Arduino zur Anzeige des „Sei Mutig!“ Textes.
Hier das C-Programm: „Sei Mutig!“ weiterlesen
Ein schönes 5 Minuten Video und Kommentare sind auf heise.de zu finden.
Vor 5 Tagen ist eine neue NodeRED Version 0.18.4 veröffentlicht worden. Was ist neu? Siehe hier. Also zum updaten ein:
1 |
update-nodejs-and-nodered |
auf der Konsole eingeben und nach ein paar Minuten, ist die neue Version installiert:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
This can take 20-30 minutes on the slower Pi versions - please wait. Stop Node-RED ✔ Remove old version of Node-RED ✔ Remove old version of Node.js - Update Node.js LTS ✔ Node v9.5.0 Npm 5.6.0 Clean npm cache ✔ Install Node-RED core ✔ 0.18.4 Move global nodes to local - Install extra Pi nodes - Npm rebuild existing nodes ✔ Add menu shortcut ✔ Update systemd script ✔ Update update script ✔ Any errors will be logged to /var/log/nodered-install.log |
Die neue Version kann auch im Menü ganz unten überprüft werden:
„Raspberry Pi: 0.18.4: Maintenance Release update für NodeRED“ weiterlesen
Habe seit einiger Zeit den „Fake-News-Generator“ (siehe Blogbeitrag auf diesen Blog) mit NodeRED auf einem Raspberry Pi laufen. Wurde aber schon mehrfach bei Twitter gesperrt, da es wohl alle 5 Minuten zu viel war. Habe so aber schon über 154000 Tweets auf meinen Account gesammelt. Du kannst mich auch gern folgen. Hier nochmal der etwas modifizierte Flow, der etwas mehr Zufall in die Posts bringt und nur noch ca. maximal alle 11 Minuten eine News bringt:
Und hier nun die Fake-News in Echtzeit im iFrame: