Gestern wurde ArchUnit in Version 0.18.0 veröffentlicht.
Wenn das keine Grund ist mal zu zeigen, wie man eine Package-Abhängigkeit überprüfen kann.
Also wir wollen einen Test schreiben, der durchläuft wenn nur aus dem Package blockchain auf das Package be zugegriffen wird. Wie hier im UML Diagramm gezeigt:… „ArchUnit gestern in Version 0.18.0 veröffentlicht oder wie validiere ich die Architektur am Beispiel einer Blockchain“ weiterlesen
Quicktest: Neue Version Eclipse 2021‑03 veröffentlicht – Better Than Ever
Update ohne Probleme. JUnit Test läuft, was will man mehr… „Quicktest: Neue Version Eclipse 2021‑03 veröffentlicht – Better Than Ever“ weiterlesen
TWProviders 1.0 – mal was anderes als HAFNIUM – Installierte Sicherheitsprovider anzeigen
Hier ein neues Java-Programm TWProviders 1.0, das alle Sicherheitsprovider auf dem System (Raspberry Pi, Mac, Windows…) anzeigt. Mal so „just for fun“ programmiert, mal was anderes als Exchange-Lücken HAFNIUM – BSI ruft „IT-Bedrohungslage rot“. Es muss Java auf dem System installiert sein. Einfach das PrintProvider.class.zip (884 Byte) laden und das ZIP auspacken. Dann in dem Verzeichnis starten mit
java PrintProvider
Also das Programm laden, auspacken und starten:
1 2 3 |
wget http://blog.wenzlaff.de/wp-content/uploads/2021/03/PrintProvider.class.zip unzip PrintProvider.class.zip java PrintProvider |
Das sind z.B. die 12 von einem Raspberry Pi 4:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
java PrintProvider TWProviders 1.0 from www.wenzlaff.info prints all 12 Security Provider: SUN (DSA key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; X.509 certificates; PKCS12, JKS & DKS keystores; PKIX CertPathValidator; PKIX CertPathBuilder; LDAP, Collection CertStores, JavaPolicy Policy; JavaLoginConfig Configuration) Sun RSA signature provider Sun Elliptic Curve provider (EC, ECDSA, ECDH) Sun JSSE provider(PKCS12, SunX509/PKIX key/trust factories, SSLv3/TLSv1/TLSv1.1/TLSv1.2/TLSv1.3/DTLSv1.0/DTLSv1.2) SunJCE Provider (implements RSA, DES, Triple DES, AES, Blowfish, ARCFOUR, RC2, PBE, Diffie-Hellman, HMAC, ChaCha20) Sun (Kerberos v5, SPNEGO) Sun SASL provider(implements client mechanisms for: DIGEST-MD5, EXTERNAL, PLAIN, CRAM-MD5, NTLM; server mechanisms for: DIGEST-MD5, CRAM-MD5, NTLM) XMLDSig (DOM XMLSignatureFactory; DOM KeyInfoFactory; C14N 1.0, C14N 1.1, Exclusive C14N, Base64, Enveloped, XPath, XPath2, XSLT TransformServices) Sun PC/SC provider JdkLDAP Provider (implements LDAP CertStore) JDK SASL provider(implements client and server mechanisms for GSSAPI) Unconfigured and unusable PKCS11 provider |
Mit diesm Programm kann nun auch leicht in einem Script oder in der Konsole nach Providern oder so gesucht werden, z.B. mit grep
java PrintProvider | grep Secure
Ergebnis:
SUN (DSA key/parameter generation; DSA signing; SHA-1, MD5 digests; SecureRandom; X.509 certificates; PKCS12, JKS & DKS keystores; PKIX CertPathValidator; PKIX CertPathBuilder; LDAP, Collection CertStores, JavaPolicy Policy; JavaLoginConfig Configuration)
Sollte kein Java vorhanden sein, kommt es zu dieser Fehlermeldung. „TWProviders 1.0 – mal was anderes als HAFNIUM – Installierte Sicherheitsprovider anzeigen“ weiterlesen
Kryptowährung: Wir erzeugen uns heute mal einen privaten Bitcoin Key mit Java bevor der BTC Kurs auf über 50000 Dollar springt
Es ist bei Bitcoin sehr wichtig das Konzept zu verstehen, das man keine Online Verbindung für das generieren einer Bitcoion Wallet Adresse benötigt.
Das geht komplett Offline. Und ohne separaten Server, eine Webseite oder einen besonderen Service. Es wird nur etwas Mathe benötigt. Mit Java sind nur ein paar Zeilen nötig.
1. privaten Key erzeugen, dazu brauchen wir nur einen guten Zufallsgenerator der uns 32 Byte erzeugen kann. Könnte mal auch auswürfeln.
2. validieren ob der Key gültig ist
Hier der dokumentierte Code: … „Kryptowährung: Wir erzeugen uns heute mal einen privaten Bitcoin Key mit Java bevor der BTC Kurs auf über 50000 Dollar springt“ weiterlesen
Bitcoin: Public Key hashen mit SHA-256 und dann RIPEMD-160

Der public Key wird zunächst mit SHA-256 gehasht. Der Output dieser kryptografischen Hashfunktion wird dann mit RIPEMD-160 gehasht, einer anderen kryptografischen Hashfunktion, die als Output eine 160 Bit (20 Byte) lange Zahl erzeugt. Wir nennen diesen letzten Hash den public Key Hash (PKH). Wie hier im BPMN Flow dargestellt: … „Bitcoin: Public Key hashen mit SHA-256 und dann RIPEMD-160“ weiterlesen
Java Bitcoin: BIP39 Mnemonic Generierung mit Adressen mit Java auf einem Raspberry Pi in 1 Minute – Crypto BPMN
Wie kann man für Bitcoin die geheimen Wörter, private und public Key und Adressen mit Java auf einem Raspberry Pi generieren? Hier mal ein Beispiel. Zuerst ein BPMN für den Überblick wie es läuft.
Das geht in 1 Minute, mit diesen drei Schritten auf der Komandozeile … „Java Bitcoin: BIP39 Mnemonic Generierung mit Adressen mit Java auf einem Raspberry Pi in 1 Minute – Crypto BPMN“ weiterlesen
Java: Ausgabe Methode aller im System bekannten Security Providers oder safety first
Wer mal alle Security Provider im System ausgeben will, kann diese Methode verwenden:
1 2 3 4 5 6 7 8 |
private static Provider[] getSecurityProviders() { System.out.println("Alle " + Security.getProviders().length + " im System bekannten Security Provider:"); Provider[] provider = Security.getProviders(); for (int i = 0; i < provider.length; i++) { System.out.println(provider[i].getInfo()); } return provider; } |
Ergebnis auf einem Test-System: „Java: Ausgabe Methode aller im System bekannten Security Providers oder safety first“ weiterlesen
Neujahr 2021: Mein erster Beitrag in 2021 – Hyperlinks in PDF: iText 7.1
Wie können Hyperlinks in PDFs erzeugt werden?
Da die Klasse Link in iText 7.1 von der Text Klasse erbt, wie das UML oben zeigt, ist es einfach. Hier ein Beispiel:… „Neujahr 2021: Mein erster Beitrag in 2021 – Hyperlinks in PDF: iText 7.1“ weiterlesen
PDF Erzeugung mit iText 7 oder in 3 Zeilen Java zum PDF
Ein PDF in Java ist mit iText 7 in ein paar Minuten gemacht.
Wir können z.B. ein String Liste mit nur 3 Zeilen Code mit dem Times Roman Font auf DIN A4 ausgeben:… „PDF Erzeugung mit iText 7 oder in 3 Zeilen Java zum PDF“ weiterlesen
Quicktest: Eclipse 2020-12 auch für native Raspberry Pi
Quicktest Eclipse 2020-12 die sich nun auch auf einem Raspberry Pi 3 oder 4 nativ ausführen läßt, ohne bremsenden x86-Emulator. Und was für mich wichtige ist, mit Korrekturen für macOS 11 alias Big Sur.
„Quicktest: Eclipse 2020-12 auch für native Raspberry Pi“ weiterlesen
Mal was anderes als COVID-19 Impfstoff BNT162b2: Maven install auf einem Raspberry Pi 4 B mit Beispielprojekt in 10 Minuten mit Archetype
Auf dem Rasberry Pi 4 ist ja default Java 11 installiert. Nun wollen wir mal schnell ein kleines Java Projekt mit Maven erstellen. Da ist schnell gemacht mit Archetype vom Maven.
Danke Dr.Kleinhirn.eu für die Bereitstellung der Mindmap
Also nur noch Maven 3.6.0 installieren mit: sudo apt-get install maven
Dann checken ob alles richtig installiert ist mit: mvn -version
Dann in einem leeren Verzeichnis „Mal was anderes als COVID-19 Impfstoff BNT162b2: Maven install auf einem Raspberry Pi 4 B mit Beispielprojekt in 10 Minuten mit Archetype“ weiterlesen
Cloud Dashboard für CO2-Messungen (CO2-Ampel) mit Ubidots für Java und Python
So ein Dashboard, hier am Beispiel der CO2 Messungen ist mit dem Cloud Anbieter Ubidots.com schnell gemacht. Kostenlos gibt es 3 Geräte. Es muss ja auch nicht immer Thinkspeak sein.
Hier ist der Api Token zu finden: „Cloud Dashboard für CO2-Messungen (CO2-Ampel) mit Ubidots für Java und Python“ weiterlesen
Docker Container mit REST Service in 5 min mit CO2-Ampel Service erstellen
Wer noch 5 Minuten hat, kann das Beispielprojekt mit der CO2-Ampel auch gleich in einem Docker Container laufen lassen. Vorraussetzung Docker läuft und das Beispielprojekt wurde installiert.
Dann sind, dank der automatisch generierten Docker-Files nur diese 3 Schritte im Verzeichnis der root pom nötig:
1 2 3 4 5 6 7 8 |
// 1. das Projekt bauen mvn package -Dquarkus.package.type=fast-jar // 2. das Image bauen, man beachte den Punkt am Ende docker build -f src/main/docker/Dockerfile.fast-jar -t quarkus/info-kleinhirn-fast-jar . // 3. den Container starten mit docker run -i --rm -p 8080:8080 quarkus/info-kleinhirn-fast-jar |
Schon läuft der CO2 Service http://localhost:8080/v1/rest/co2 und CO2-Ampel über http://localhost:8080/v1/rest/co2ampel
Cool. Und hier das Dockerfile … „Docker Container mit REST Service in 5 min mit CO2-Ampel Service erstellen“ weiterlesen
Die Bibel in einem Jahr lesen? Terminplan zum kostenlosen Download! Ab heute! Und los …
Habe mal neue Bibellese Termine ab heute mit dieser neuen GUI der TWBibel erzeugt.
Einfach einen Bibellese-Plan, in Euren Kalender kostenlos laden und importieren: „Die Bibel in einem Jahr lesen? Terminplan zum kostenlosen Download! Ab heute! Und los …“ weiterlesen
Weil heute Sonntag ist: Java CO2 MQTT Client
Weil heute Sonntag ist. „Freut euch immer„! Nun ein kleiner Java CO2 MQTT Client um auch auf allen Betriebssystemen mit Java die CO2 Daten zu empfangen. Nicht nur für den Raspberry Pi auch Mac und Windows (ungetestet;-)).
Das selbstausführende JAR laden (siehe unten) und starten mit:
java -jar TWCo2Monitor-0.0.1-SNAPSHOT-jar-with-dependencies.jar [PI-Rechner Name/Adresse]
Hier mal eine Ausgabe auf einem Raspberry Pi W Zero:
Der MQTT Client besteht nur aus ein paar Zeilen Java Code: „Weil heute Sonntag ist: Java CO2 MQTT Client“ weiterlesen
Wie können mit Java automatisch Webseiten mit Jsoup am Beispiel Corona abgefragt werden?
Das Robert Koch Institut (RKI) liefert für Deutschland aktuelle Corona-Fall-Zahlen auf dieser Webseite:
https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Fallzahlen.html
in einer schönen Tabelle die wir mit Jsoup abfragen wollen.
Wir schauen uns erst einmal die Stuktur der Seite an. D.h. wir markieren z.B. Niedersachsen und öffnen das rechte Kontexmenü und klicken auf „Element untersuchen“. Nun wird unten der HTML-Quelltext angezeigt. Wir sehen das die Tabelle, an der ersten stelle steht, und mit den tr und td Tags erstellt ist. Das müssen wir für die Analyse wissen.
Hier nun der kommentierte Beispiel-Code: „Wie können mit Java automatisch Webseiten mit Jsoup am Beispiel Corona abgefragt werden?“ weiterlesen
Java Einzeiler: JSONvon URL einlesen mit org.apache.commons.io am Beispiel: Corona – COVID-19
Hatte hier schon mal über die JSON Lib
1 2 3 4 5 |
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20190722</version> </dependency> |
berichtet. Wie kann damit nun in einer Zeile eine URL abgefragt werden?
Mit Hilfe der org.apache.commons.io geht das ganz einfach. Also erst einmal die Lib in die pom.xml einbinden.
1 2 3 4 5 |
<dependency> <groupId>org.apache.directory.studio</groupId> <artifactId>org.apache.commons.io</artifactId> <version>2.4</version> </dependency> |
Was wollen wir nun beispielsweise abfragen? Alle reden von Corona. Also lesen wir die drei aktuellen Werte der Johns Hopkins University ein. Die werden über diese Webseite aktuell dargestellt. Hier mal ein Foto:
Die Daten werden auch über eine JSON-Rest API unter https://covid19.mathdro.id/api bereitgestellt. Hier mal das Ergebniss einer Abfrage: „Java Einzeiler: JSONvon URL einlesen mit org.apache.commons.io am Beispiel: Corona – COVID-19“ weiterlesen
Wie kann die Anzahl verfügbarer CPU-Prozessoren (Kerne) der Java virtuelle Maschine (VM) per Java abgefragt werden?
Wie kann die Anzahl verfügbarer CPU-Prozessoren (Kerne) der Java virtuelle Maschine (VM) per Java abgefragt werden? Das geht mit einem Java-Einzeiler:
int availableProcessors = Runtime.getRuntime().availableProcessors();
Die unterschiedlichen Raspberry Pi Modelle haben einen Kern: „Wie kann die Anzahl verfügbarer CPU-Prozessoren (Kerne) der Java virtuelle Maschine (VM) per Java abgefragt werden?“ weiterlesen
Beispiel Verwendung des Maven Plugin: de.wenzlaff.command.maven.plugin
Vor einiger Zeit hatte ich hier mal beschrieben, wie ein einfaches Maven-Plugin erstellt werden kann, dass alle Kommandozeilen Parameter im Log ausgibt z.B. ls, ps, ls -la. So können im Build-Prozess Verzeichnisse oder Prozesse überwacht werden.
Wer aber nur das Kommandozeilen Plugin nutzen will, kann dieses mit ein paar Zeilen in der pom.xml tun, da das Plugin auf Maven-Central frei verfügbar ist.

Einfach die pom.xml um folgende Zeilen ergänzen: „Beispiel Verwendung des Maven Plugin: de.wenzlaff.command.maven.plugin“ weiterlesen
Ein eigenes Maven-Plugin in 15 Minuten inklusive Dokumentation erstellen
Ein eigenes Maven-Plugin zu erstellen ist nicht schwer und ist schnell gemacht. Wir wollen ein Plugin welches einen Verzeichnis Inhalt mit ls -la in das Log schreibt erstellen. Es können aber auch andere Linux Befehle übergeben werden. Hier nun die 6 Schritte mit den Vorlagen die mind. nötig sind.
1. Wir legen in Eclipse ein neue Maven Projekt mit Java 1.8 an. mit Artifact Id und Group Id de.wenzlaff.command.maven.plugin
2. In der pom.xml fügen wir die folgenden Abhängikeiten hinzu: „Ein eigenes Maven-Plugin in 15 Minuten inklusive Dokumentation erstellen“ weiterlesen