TWRestMindmap mit React, Patternfly, RESTEasy, Swagger-UI, Quarkus, Panache, ORM, JPA, Hibernate, Docker und PostgreSQL

TWRestMindmap mit React, Patternfly, RESTEasy, Swagger-UI, Quarkus, Panache, ORM, JPA, Hibernate, Docker und PostgreSQL DB verwenden. Um nicht JUnit 5 zu vergessen.

Wir bauen nun mit Quarkus eine React Anwendung die Titel und das Datum von Mindmaps anzeigt und per REST bedient werden kann. Die GUI im Browser sieht dann so aus: „TWRestMindmap mit React, Patternfly, RESTEasy, Swagger-UI, Quarkus, Panache, ORM, JPA, Hibernate, Docker und PostgreSQL“ weiterlesen

Picocli 4.6.2 veröffentlicht bei CO2 794ppm, BTC 57800, XBT >66k, ETH 4717, BTC Block 709047


Vor ein paar Tagen wurde Picocli 4.6.2 veröffentlicht. An meinem heutigen Urlaubstag habe ich nun Zeit für einen Quicktest. Wie oben zu sehen, ist alles im TWEtherScan Projekt ok. Da habe ich auch eine große Testabdeckung der CMD-Api mit Picocli. Dieses Release fix einige Fehler auch mit dem Encoding. Aber, „This release has no breaking changes„.

Smart-Contract Wrapper für Java mit web3j-maven-plugin erstellen


Es muss ja nicht immer remix sein, um ein Smart-Contract zu compilieren. Es geht auch wie oben dargestellt mit einem Maven-Plugin (oder Gradle) um mit Ethereum-Netzwerk zu interagieren. Also wie können Solidity Smart Contracts kompiliert und dafür eine Java-Wrapper-Klassen dafür generiert werden?

Wir nehmen als Beispiel mein bekannter Smart-Contract Gehirn.sol der den IQ auf der Blockchain festhalten kann und mit Solidity programmiert ist und speichern in in dem src/main/resources Verzeichnis.

Das Plugin wird mit mvn web3j:generate-sources gestartet und wie folgt in der pom.xml eingebunden: „Smart-Contract Wrapper für Java mit web3j-maven-plugin erstellen“ weiterlesen

de.wenzlaff.command.maven.plugin: Neue Version auf Maven Central für Java 11 veröffentlicht und das bei BTC >60k$ (Block 705403)

Das Maven Plugin zum ausführen von Linux Befehlen wurde nun auf Java 11 umgestellt und die Version nach Maven Central hochgeladen.

Wie hier beschrieben noch ein Quicktest mit der neuen Version und ein ls:

Ergebnis, sieht gut aus: „de.wenzlaff.command.maven.plugin: Neue Version auf Maven Central für Java 11 veröffentlicht und das bei BTC >60k$ (Block 705403)“ weiterlesen

Neue Version 0.0.8 auf Maven Central: Internet Adressen bzw. Links in Excel-Dateien überprüfen mit dem de.wenzlaff.linkchecker

Manchmal hat man in einer Excel-Tabelle eine oder mehrere Spalten mit Internet-Adressen (URLs) deren Gültigkeit man überprüfen will, da viele Adressen sich doch schnell ändern. Dh. ist die Adresse noch erreichbar oder ist eine ungültige Adresse (Broken Links) eingegeben.

So, dann heute mal ein paar updates für den TW Excel Linkchecker. Es läuft nun unter Java 11.

Man bekommt ja beim hochladen von Maven Central einen Report. Die 100% wollte ich mal senken. „Neue Version 0.0.8 auf Maven Central: Internet Adressen bzw. Links in Excel-Dateien überprüfen mit dem de.wenzlaff.linkchecker“ weiterlesen

Wie können die Anzahl der ETH Transaktionen einer ETH-Adresse per Java REST-API abgefragt werden?

Wie hier schon beschrieben, geht das mit TWEtherScan zum Abfragen per REST-Api von Ethereum Informationen.

Hier die Beispiel Abfrage:

Und hier der entsprechende Java Code. „Wie können die Anzahl der ETH Transaktionen einer ETH-Adresse per Java REST-API abgefragt werden?“ weiterlesen

ETH Kurs und Gas Abfrage per Java Rest API via etherscan.io


Die ETH Kurse bez. Gas Preise können leicht per Java Rest-API erzeugt werden. Auch der Kontostand einer Adresse kann abgefragt werden (default BUY_ME_A_COFFEE). So überwache ich z.B. dauernd die

BUY_ME_A_COFFEE = 0x829F9e57c29ab683E964c76160B7B0BaB2727dD2

via Kommandozeile (und NodeRed) und warte bis jemand da was für Kaffee und Kuchen überweist. Der aktuelle Wert reicht noch nicht ganz für zwei Personen in Hannover 😉 Wer also mal testen will …

Wenn man sich auf etherscan.io angemeldet hat und einen Token hier hinzugefügt hat, kann man leicht die Abfrage machen. Es sind maximal 5 Abfragen pro Sekunde kostenlos möglich:

-k Api-Token

Ausgabe:

Der ganze Beispiel-Code liegt auf GitLab unter TWEtherScan.

Hier der Beispiel Code: „ETH Kurs und Gas Abfrage per Java Rest API via etherscan.io“ weiterlesen

Zweizeiler REST HTTPClient am Beispiel von AirLabs für Planespotter

Ab Java 11 gibt es den HTTPClient im JDK der den REST Zugriff vereinfacht. Das ist mit einem Zweizeiler getan:

Den Response kann man mit dieser Methode auswerten: „Zweizeiler REST HTTPClient am Beispiel von AirLabs für Planespotter“ weiterlesen

ArchUnit 0.20.1 Quicktest am Beispiel der Blockchain oder “Das ist historisch gewachsen” war gestern

Heute gilt „die Umsetzung von Architekturvorgaben lässt sich testen!“. Und das sogar mit JUnit 5! Cool.

ArchUnit
Wenn auch nur eine IllegalArgumentException gefixt wurde, mal gleich auf die aktuelle ArchUnit Version updaten. Ja, es läuft noch alles. „ArchUnit 0.20.1 Quicktest am Beispiel der Blockchain oder “Das ist historisch gewachsen” war gestern“ weiterlesen

Java: Array von Dubletten und null entfernen mit HashSet und zurück

Gesund oder Krank - Impfbeginn in Deutschland

Ergebnis: „Java: Array von Dubletten und null entfernen mit HashSet und zurück“ weiterlesen

Architektur mit archunit validieren

Mit automatischer Architektur validierung mit JUnit 5 Annotation @ArchTest von archunit kann leicht die Architektur vorgaben überprüft werden. Aber es kann auch leicht verhindert werden, das man z.B. System.out oder System.err verwendet. Oder das verhindert wird, das das interne Java Logging verwendet wird.

Was für mich auch wichtig ist, das der Logger immer LOG heißt, und nicht log oder logger.


Einfach diese JUnit-Test Klasse in alle Projekte einbinden. „Architektur mit archunit validieren“ weiterlesen

Betriebssystem abhängige Tests :-( – EnabledOnOs oder DisabledOnOs für JUnit 5

Seit JUnit 5.1 gibt es das OS Enum. Mit der können leicht Tests in Abhängigkeit des OS durchgeführt werden. Es werden die folgenden Betriebssysteme unterstüzt:

Also nur die Methode z.B. mit der @EnabledOnOs(OS.MAC) Annotation versehen, und der Test läuft nur auf dem Mac 🙂 oder nicht dann mit @DisabledOnOs(OS.MAC): … „Betriebssystem abhängige Tests 🙁 – EnabledOnOs oder DisabledOnOs für JUnit 5“ weiterlesen

ArchUnit gestern in Version 0.18.0 veröffentlicht oder wie validiere ich die Architektur am Beispiel einer Blockchain

Gestern wurde ArchUnit in Version 0.18.0 veröffentlicht.

ArchUnit

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

Blockchain in Java – Bitcoin heute Neues Allzeithoch – Nasdaq: Börsengang von Coinbase

Wollte heute mal noch vor dem Börsengang von Coinbase ein Blockchain in Java coden. Mit nur zwei Klassen sind die Grundlagen implementiert. D.h. ein Block verweist jeweils auf den nächsten Block. Jeder Block hat einen Hash über die Daten und kann so von jedem validiert werden. Ein Block kann alles enthalten, hier mal ein String Objekt, es muss ja nicht immer Bitcoin sein. Hier die Architektur:

Ein JUnit 5 Testklasse erzeugt eine gültige Blockchain mit 5 Blöcken und wird anschließend validiert. Bei Bitcoin werden alle 10 Minuten neue Blöcke erzeugt. Die haben dann jeweils (ursprünglich) eine Größe von ca. max 1 MB an Daten.

Dann im zweiten Testfall wird ein Block verändert und in die Blockhain eingefügt. Das Ergebnis der validierung muss dann einen Error ausgeben.

Ein Block sieht so aus: „Blockchain in Java – Bitcoin heute Neues Allzeithoch – Nasdaq: Börsengang von Coinbase“ weiterlesen

Fast vergessen, heute ist Pi-Day – „Pi or not to Pi!“

Heute wird ja Pi-Day gefeiert. Dazu habe ich mal eben eine Java Klasse geschrieben:

Und nun die Frage. Was ist das Ergebnis wenn ich diese Klasse ausführe? Hier die Lösung, … „Fast vergessen, heute ist Pi-Day – „Pi or not to Pi!““ 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:

Das sind z.B. die 12 von einem Raspberry Pi 4:

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

Signieren von Nachrichen mit Digital Signature Algorithm (ECDSA) in Java und Elliptische-Kurven-Kryptografie (ECC) secp256k1

Wie werden in Java Nachrichten signiert und vom Empfänger validiert? Das geht mit ein paar Zeile aus dem Java Package java.security. Wir verwenden die auch in Bitcoin verwendeten Elliptische-Kurven-Kryptografie secp256k1. Was wollen wir zu Entspannung nach Feierabend machen?

Das wird in diesem BPMN-Diagramm dargestellt:

Hier die kommentierte Java Klasse: … „Signieren von Nachrichen mit Digital Signature Algorithm (ECDSA) in Java und Elliptische-Kurven-Kryptografie (ECC) secp256k1“ 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

public key hash für bitcoin

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

Mal was anderes als Schnee und Glatteis: Salzen mit SHA-256 in Java

hash, bitcoin,

Kryptografische Hashfunktionen können zur Integritätsprüfung verwendet werden, um Änderungen in Daten festzustellen. Bitcoin verwendet kryptografische Hashfunktionen sehr ausgiebig, um zu überprüfen, dass sich Daten nicht geändert haben. Zum Beispiel wird immer ab und zu – durchschnittlich alle 10 Minuten – ein neuer Hash der gesamten Zahlungsgeschichte erzeugt. Wenn jemand versucht, diese Daten zu ändern, wird dies sofort von jedem, der die Hashes überprüft, bemerkt.

Grundlegenden Eigenschaften von Hash:

-Gleiche Eingabedaten erzeugen den gleichen Hash.
-Leicht unterschiedliche Eingabedaten erzeugen sehr unterschiedliche Hashes.
-Der Hash hat stets eine feste Länge. Bei SHA256 sind dies 256 Bits.
-Die Holzhammermethode Trial-and-Error ist der einzige bekannte Weg, einen Input zu finden, der einen bestimmten Hash erzeugt.

Hier mal ein kleines Java Beispiel mit unterschiedlichen Libs und pur Java: … „Mal was anderes als Schnee und Glatteis: Salzen mit SHA-256 in Java“ weiterlesen