Vor zwei Tagen wurde die neue Version veröffentlicht:

Dann mal die pom.xml updaten und einen Quicktest:
„Neue Version graphviz-java-parent-0.11.0 vor zwei Tagen veröffentlicht“ weiterlesen

Wenzlaff.de – Rund um die Programmierung
mit Java, Raspberry Pi, SDR, Linux, Arduino, Sicherheit, Blender, KI, Statistik, Krypto und Blockchain
Anleitungen zu allen Themen.
Vor zwei Tagen wurde die neue Version veröffentlicht:

Dann mal die pom.xml updaten und einen Quicktest:
„Neue Version graphviz-java-parent-0.11.0 vor zwei Tagen veröffentlicht“ weiterlesen
Dann wollen wir mal das gestern veröffentlichte Update installieren. Die Installation und Neuerungen sind ja bei Heise beschrieben. Dann mal ein Quicktest:

„Eclipse 2019-09 update in 10 Min installieren und Quicktest –> OK“ weiterlesen
Wer mit Java ical Termine erzeugen will, kann das gut mit der ical4j Lib machen. Es muss dazu in der pom.xml dieser Eintrag hinzugefügt werden.
|
1 2 3 4 5 |
<dependency> <groupId>org.mnode.ical4j</groupId> <artifactId>ical4j</artifactId> <version>3.0.4</version> </dependency> |
Dann wollen wir zuerst mal ein paar Zeilen für den JUnit Test dafür schreiben:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
@Test void testWriteKalenderInDatei() throws Exception { Calendar icsCalendar = getTestkalenderMitEinTermin(); String icsDateinamen = "JUnit-Testdatei.ics"; Kalender.writeKalenderInDatei(icsCalendar, icsDateinamen); } private Calendar getTestkalenderMitEinTermin() { Calendar icsCalendar = Kalender.createKalender(); TimeZone timezone = Kalender.createTimezoneEuropa(); LocalDateTime eventStartZeitpunkt = LocalDateTime.now(); String eventKommentar = "JUnit Test Kommentar"; String eventTitel = "JUnit Event Titel"; Kalender k = new Kalender(); k.addTermin(icsCalendar, timezone, eventStartZeitpunkt, eventTitel, eventKommentar); return icsCalendar; } |
Wir brauchen noch die Kalender Klasse, die hier kopiert werden kann: „Wie kann in Java ein ical Termin (ics Datei) erzeugt werden?“ weiterlesen
Der Bibelleseplan Generator ist nun mit frei wählbaren start Termin bzw. Bibelbuch für (Mac, Win, Raspberry Pi) veröffentlicht. Es können jetzt Termine für alle Kalender autom. erzeugt werden im isc Format für Google, Apple oder Outlock. Und zwar für ein oder alle Bibelbücher mit frei wählbaren Starttermin. Beschrieben hatte ich ihn ja schon hier.
Die Installation ist schnell in zwei Schriten gemacht.
1. Auf dieser Projekt-Seite die letzte Version landen unter CI/CD – Pipelines – dann Artefakte – Download Install Java 8 Artifacts oder als alternative hier die 0.0.4 Version (4,3 MB) als ZIP laden (artifacts.zip). „Bibelleseplan-Generator 0.0.4 nun mit frei wählbaren Start-Termin bzw. Bibelbuch für (Mac, Windows, Raspberry Pi) veröffentlicht“ weiterlesen
Die Kalender Einstellungen des Google Kalenders ermöglichen es Spammern defalult leicht Termine einzustellen die man nicht will (SPAMM). Wer unerwünschte Termine oder Einladungen erhält, kann es etwas eindämmen. Dazu diese Einstellungen anpassen unter Einstellungen und Allgemein:
Un dann die rot markierten Optionen abwählen bzw. Nein wählen, so das es ungefähr so aussieht: „Wie kann dein Google Kalender in 3 Minuten vor Spammern geschützt werden?“ weiterlesen
Seit ein paar Tagen gib es eine neue Version von Freemarker 2.3.29. Was gibt es da Neues? Fünf Änderungen auf FTL Seite und neun auf Java-Seite. Dann mal ein Projekt Testweise updaten. Dazu nehme ich mal den TWMindmapgenerator.

Quicktest ok! Mehr im Handbuch.
Hier hatte ich gestern ja schon die Biblellesepläne im EXCEL, TXT und PDF Format erzeugt.
Nun habe ich mit dem Generator auch für jeden Tag einen Termin im ics-Kalender Format erzeugt (Google, Apple, Outlock …). Und zwar 1189 Termine die jeweils um 6 Uhr morgens in der Woche 3 und am Wochenende 4 Kapitel angeben. Starten tut alles am 1.9.2019. Die ics-Datei kann hier geladen, und dann in dem Kaleder deiner Wahl importiert werden. Vorher wie immer ein backup (export) des Kalenders machen.
bibelleseplan_2019-08-17-ganze-Bibel.ics
Wer nich gleich mit der ganzen Bible starten will, kann auch mit einem Bibelbuch anfangen, mit Mathäus:
bibelleseplan_2019-08-17-mathaeus.ics
Bei klick auf Import in den Kalender kommt z.B. auf einem Mac, erst noch die Abfrage in welchem Kalender man importieren will:
Anschließend sind am Wochenende jeweils 4 Einträge um 6 Uhr zu finden: „Raspberry Pi: Bibelleseplan im ics Kalender Format mit 1189 Termine“ weiterlesen
Wer die 1189 Kapitel der Bibel in einem Jahr lesen will, kann einfach jeden Wochentag 3 Kapitel und am Wochenende 4 lesen. An vielen Stellen im Internet gibt es auch Bibellesepläne. Ich habe mal ein paar Pläne in unterschiedlichen Formaten generiert, die hier kostenlos geladen werden können:
bibelleseplan_1.9.2019 (PDF)
bibelleseplan_1.9.2019 (Excel)
bibelleseplan_1.9.2019 (TXT)
bibelleseplan_2019-08-17-ganze-Bibel (ics) siehe auch hier
bibelleseplan_2019-08-17-mathaeus (ics) siehe auch hier
Um aber die twbibel von MavenCentral mal zu testen, folgt hier ein kleines Java-Programm. Dieses wird dann noch um eine Oberfläche (GUI) oder Kommandozeilen-Client erweitert um verschiedene Bibellesepläne mit unterschiedlichen Start Datum zu generieren.
Um die Bibel Lib zu nutzen, muss in der pom.xml für das Maven-Projekt dieser Eintrag gemacht werden:
|
1 2 3 4 5 6 7 |
<dependencies> <dependency> <groupId>de.wenzlaff.twbibel</groupId> <artifactId>de.wenzlaff.twbibel</artifactId> <version>0.0.2</version> </dependency> </dependencies> |
Dann eine Java Klasse mit ungefähr diesem Inhalt: „Raspberry Pi: Bibelleseplan (PDF, Excel, TXT, ics) Generator (mit Java und twbibel)“ weiterlesen
Auch auf dem Raspberry Pi können leicht Verzeichnisse oder Dateien überwacht werden. Dazu muss einmalig die inotify-tools mit
sudo apt-get install inotify-tools
installiert werden.

Das geht ohne neustart und ist in 3 Minuten erledigt. Schon kann dann z.B. mit
inotifywait -mrq -e create –format %w%f /home/pi
das /home/pi Verzeichnis überwacht werden. Nach dem Start können wir in einem anderen Terminal Fenster eine Datei oder zwei anlegen: „Raspberry Pi: Veränderungen an Dateien oder Verzeichnissen mit inotify überwachen“ weiterlesen
Wenn man JavaFX programmieren will, kann man das efxclipse Plugin installieren. Dazu über den Marketplace von Eclipse nach efxclipse suchen …
Kontrolle ob alles installiert wurde dann über … „JavaFX Plugin in Eclipse 2019-06 installieren und neue JavaFX Projekt anlegen in 10 Minuten“ weiterlesen
Manchmal benötigt man alle Tage im Jahr oder alle Tage im Monat oder alle Tage von Start Datum bis zum Ende Datum. Das geht mit Java 8 in einen Zweizeiler:
|
1 2 3 4 5 6 7 |
// erst die Differenz zwischen Start und Ende Datum berechnen long daysBetween = ChronoUnit.DAYS.between(startDate, endDate); // dann über alle Tage iteriern IntStream.iterate(0, i -> i + 1) .limit(daysBetween) .mapToObj(i -> startDate.plusDays(i) .collect(Collectors.toList()); |
Hier das Ergebnis und die ganze Klasse:
Manchmal braucht man alle Tage im Jahr oder Monat. Z.b. in solch einem Format:
Wie kann die erzeugt werden? „Excel-Quickie: Wie kann ein Spalte mit allen Tagen des Jahres (Monat) erzeugt werden?“ weiterlesen
1. Tabelle kopieren:
2. Auf das Ziel Blatt gehen und Einfügen: „Excel-Quickie: Wie können Excel Tabellen-Referenzen bzw. Verknüpfungen in andere Arbeitsblätter eingefügt werden in Mac OS X?“ weiterlesen
Javalin wurde vor ein paar Tagen in der Version 3.3.0 veröffentlicht. Was dieser Framwork kann, zeigt diese Mindmap:
Mit einem Zweizeiler kann in Java schnell eine Anwendung erstellt werden. Es wird nur die Abhängkeit in der pom.xml erwartet: „Javalin Framwork nicht nur für Java vor ein paar Tagen in Version 3.3.0 veröffentlicht“ weiterlesen
Manchmal wird ein Flow für eine gewisse Zeit nicht mehr benötigt. Man kann ihn leicht deaktivieren bzw. wieder aktivieren. Das geht nicht über ein Menü, sondern über einen doppelklick auf den TAB:
Es erscheint dann dieser Dialog, mit dem Status Schalter „Wie können nicht benötigte Flows in NodeRed deaktiviert werden?“ weiterlesen
Wie können in Excel Felder mit einem sprechenden Namen (Konstante) belegt werden? Damit kann leicht auf ein Feld oder Bereich verwiesen werden. Z.b. kann man sich PI besser merken als C5.
Im Menü: Einfügen – Namen – Namen definieren …
Einen Namen wählen und das Feld bzw. den Bereich eingeben: „Wie können in Excel mit Mac OS X Felder mit einem sprechenden Namen (Konstante) belegt werden?“ weiterlesen
207 Wortformen in der deutschen Schriftsprache machen 50% der ganzen Schriftsprache aus (Quelle Wikipedia). Wer also 207 Wörter schreiben kann, kann schon die hälfte des deutschen Textes schreiben. Für einen Textparser brauchte ich eine Java Methode die checkt, ob ein Wort in dieser Liste ist.
Also mal eben eine Java-Zweizeiler um das zu überprüfen. „207 Wortformen in der deutschen Schriftsprache machen 50% der ganzen Schriftsprache aus!“ weiterlesen
Wie kann mit Java 8 mit dem DOM-Parser einfach eine XML Datei erzeugt werden?
Es sind keine weiteren Abhängigkeiten nötig. Allso keine imports von Fremdjars. Alles ist in Java 8 vorhanden:
|
1 2 3 4 5 6 7 8 9 |
import java.io.File; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; |

Es muss ein DOM Object mit der Baumstruktur erzeugt werden. Dann kann mit dem Transformer und dem StreamResult in eine Datei geschrieben werden.
Hier nun die drei Schritte:
1. Mit der DocumentBuilderFactory ein neues Document erzeugen:
|
1 |
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument() |
2. Benötigte Elemente und Attribute erzeugen und dem Dokument hinzufügen „Wie kann mit Java 8 und dem DOM-Parser einfach eine XML Datei erzeugt werden?“ weiterlesen
Wie kann mit Eclipse 2019-06 aus einem XSD Schema Javacode generiert werden? Das braucht man, um ein Datenmodell uä. zu erzeugen.
Zuerst erzeuge wir ein JAXB-Projekt fügen dann die XSD (hier mal die freemind.xsd als Beispiel, es geht aber jede) als Basis dem Projekt hinzu. Dann selektieren wir die XSD und generieren über das Kontextmenü das Modell. Bei der Generierung mit Java 8 oder 9 kommt es zu Fehlern. Deshalb erst das Projekt mit Java 7 wie folgt einrichten:
„Wie kann mit Eclipse 2019-06 aus einem XSD Schema Javacode generiert werden? Babyleicht? HiHi!“ weiterlesen
Das Statistische Bundesamt bietet für registrierten Nutzern 3 Werkzeuge kostenlos zum Download an. Unter anderem ein Java-Web-Client. Es heißt:“
Durch den „GENESIS-Webservice“ werden bestimmte Funktionen von GENESIS-Online auch für die automatisierte Verarbeitung zugänglich gemacht, wie z. B. Abruf und Download von Daten. Über unser Dienstangebot (WSDL) können registrierte GENESIS-Online-Nutzer die entsprechenden Schnittstellen in ihre eigenen Applikationen integrieren und programmgesteuert die angebotenen Dienste nutzen.“
Ok, dann wollen wir mal testen. Wir wollen auf den Mac OS X und dann auf einem Raspberry Pi die autom. Abfragen stellen. Als Beispiel sollen mal die Daten abfrage der Transfusion von Vollblut und Erythrozytenkonzentrat (EK) u.Ä. in Deutschland verwendet werden. Die Anzahl ist rückläufig, wenn auch in Deutschland immer noch fast eine Millionen Einheiten (a mind. ca. 200 Euro) verkauft werden.
Datenquelle: Statistisches Bundesamt (Destatis), Genesis-Online,
Abrufdatum 22.06.2019; Datenlizenz by-2-0; eigene Berechnung/eigene Darstellung
Welche Schritte sind nötig? „Java Webclient des Statistischen Bundesamtes für GENESIS Online DB starten auf Mac OS X und Raspberry Pi bzw. Linux“ weiterlesen
Was ist die Programmausgabe wenn dieses Programm ausgeführt wird?
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/** * Rätsel des Tages. * * @author Thomas Wenzlaff * */ public class RätselDesTages { public static void main(String[] args) { System.out.println("Start"); assert false; System.out.println("Ende"); } } |
Eine neue Version der Eclipse IDE veröffentlicht. Die Installation und Neuerungen sind ja bei Heise beschrieben. Dann mal ein Quicktest:
Was kann man tun bei einem:
FireMotD: Info: No FireMotD ExportFile detected. Please generate with „sudo .\/FireMotD -S“ Fehler?
Einfach:
cd /opt/FireMotD/
sudo ./FireMotD -I -v
[sudo] Passwort für openhabian: xxxx
…
… nach ein paar Sekunden… „Raspberry Pi: No FireMotD ExportFile detected“ weiterlesen
Ab Java 8 werden die PermSize und MaxPermSize Kommandozeilen Parameter nicht mehr verwendet. Es wird eine Warnung in der Art:
|
1 2 3 |
Java HotSpot(TM) Server VM warning: ignoring option PermSize=32m; support was removed in 8.0 Java HotSpot(TM) Server VM warning: ignoring option MaxPermSize=128m; support was removed in 8.0 |
ausgegeben. Also tschüss java.lang.OutOfMemoryError: PermGen error.
Quelle: Oracle.com
Wie vor zwei Jahren hier schon mal beschrieben hat sich nicht viel geändert.
Aber es gibt eine neue Version (1.3.0) der Rest API, die wir verwenden wollen. Dazu die Maven pom.xml updaten:
|
1 2 3 |
<groupId>org.opensky</groupId> <artifactId>opensky-api</artifactId> <version>1.3.0</version> |
Hier der aktuelle Lauf:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Flugbereich in Meter ; Flughöhe in Meter Parken 0 ; 303 1-500 ; 320 500-1000 ; 355 1000-2000 ; 410 2000-3000 ; 321 3000-4000 ; 310 4000-5000 ; 233 5000-6000 ; 234 6000-7000 ; 237 7000-8000 ; 306 8000-9000 ; 340 9000-10000 ; 538 10000-10500 ; 558 10500-11000 ; 897 11000-11500 ; 440 11500-12000 ; 486 12000-13000 ; 201 über 13000 ; 78 Summme ; 6559 Zeitpunkt ; Sun May 19 16:20:17 CEST 2019 Quelle ; The OpenSky Network, http://www.opensky-network.org |
Es sind also 6559 Flugzeuge weltweit in der Luft! Hier die paar Zeilen Java Code die dafür nötig sind: „Wie kann mit Java die Anzahl der Flugzeuge in der jeweiligen Höhe weltweit in real time ermittelt und mit OpenStreetMap via uMap visualisiert werden?“ weiterlesen
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package de.wenzlaff.twpdftagger; public class RätselDesTages implements Runnable { public static void main(String[] args) { Thread t = new Thread(new RätselDesTages()); t.start(); } @Override public void run() { double d = 3.51f; float f = 1.99f; int i = (int) d + (int) f; System.out.println("Ergebnis: " + i); } } |
Was ist das Ergebnis? „Java: Rätsel des Tages“ weiterlesen