Habe ja vor ca. 5 Jahren mal ein Java-Programm dafür geschrieben.
Hier mal wieder ein aktueller Aufruf mit Echtzeit-Daten: „In welcher Höhe fliegen die 7168 Flugzeuge weltweit im Moment?“ weiterlesen
Wenzlaff.de – Rund um die Programmierung
mit Java, Raspberry Pi, SDR, Linux, Arduino, Sicherheit, Blender, Statistik, Krypto und Blockchain
Programmierung
Habe ja vor ca. 5 Jahren mal ein Java-Programm dafür geschrieben.
Hier mal wieder ein aktueller Aufruf mit Echtzeit-Daten: „In welcher Höhe fliegen die 7168 Flugzeuge weltweit im Moment?“ weiterlesen
Ziel ist es eine Beispiel SPA TWKrankenhaus zu implementiern die TypeScript, React mit Patternfly nutzt. So das man ein Template für weitere Apps hat.
Entweder man clont das ganze Projekt wie unten beschrieben oder man folgt allen Schritte. So soll es mal mit Mock-Test-Daten aussehen:
1. In einem leern Verzeichnis, ein TypeScript Projekt mit Template anlegen: … „Single-Page-Webanwendung (SPA): TWKrankenhaus App mit TypeScript, React und Patternfly“ weiterlesen
Der Kommandozeilen Prozessor jq für JSON ist auf dem Raspberry Pi schnell mit
1 |
sudo apt install jq |
installiert. Es wird dann, wie man mit
1 |
jq --version |
feststellen kann, die Version jq-1.5-1-a5b5cbe installiert. Das ist zwar nicht die aktuelle vom 1.Nov. 2018 1.6 aber immerhin aus 2015. Es reicht auch erstmal. Man kann auch alle Befehle in einem Online Editor unter jqplay.org austesten.
Eine Anleitung … „Kommandozeilen Prozessor jq für JSON“ weiterlesen
Zwei A350 von Air Mauritius ziehen eng aneinander vorbei, wie hier berichtet. Deshalb mal hier ein aktueller Dump:
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 ; 656 1-500 ; 482 500-1000 ; 440 1000-2000 ; 420 2000-3000 ; 266 3000-4000 ; 256 4000-5000 ; 216 5000-6000 ; 173 6000-7000 ; 213 7000-8000 ; 273 8000-9000 ; 273 9000-10000 ; 401 10000-10500 ; 488 10500-11000 ; 621 11000-11500 ; 337 11500-12000 ; 548 12000-13000 ; 239 über 13000 ; 87 Summme ; 6389 Zeitpunkt ; Fri Jan 21 15:20:56 CET 2022 Quelle ; The OpenSky Network, http://www.opensky-network.org |
httpie ist auch auf dem Raspberry Pi in 5 Minuten installiert, es muss ja nicht immer curl sein. Um httpie auf dem Raspberry Pi zu installieren, ist nur ein Befehl nötig. Und schon hat man einen curl Ersatz mit intuitiver UI, JSON support, Syntax Hervorhebung und mehr. Alles wird in nur 8 Minuten in diesem Video gezeigt.
Folgende Befehle werden verwendet…
„Wie kann das Wetter oder der Bitcoin Kurs leicht mit httpie auf einem Raspberry Pi abgefragt werden?“ weiterlesen
In meinem YouTube-Kanal gibt es ein neues Video, das 8 Minuten GO-Video. Wie kann GO installiert werden? Wie kann die Temperatur des Raspberry Pis ausgegeben werden? Und wie kann ein GO Programm ausgeführt, compiliert und gebaut werden?
Die Antworten gibt es in dem neuen 8 Minuten Video. Den Kanal auch gleich abonnieren um keinen weiteren zu verpassen…
Hier die im Video erklärten Befehle zum kopieren: „Neues 8 Minute Video: Programmiersprache GO – Installation, Compile und Build auf einem Raspberry Pi“ weiterlesen
Nutzt jemand Log4J in Java? Wohl jeder;-) Z.B. Apple, Twitter und Tesla wie hier die Hacks gesammelt werden.
Dann mal schnell auf Version 2.15.0 updaten, die heute veröffentlicht wurde. Wegen dem Zero Day Exploit.
Auf Heise und auch hier auf dem Securityboulevard gibt es einen ausführlichen Artikel wie es geht. Und auch das BSI warnt nun mit Warnstufe Rot.
Vor 10 Tagen ist die neue Quarkus Version 2.5.1-Final erschienen. Das Update enthält fast 800 Commits. In den Releasenotes steht: „It is a safe upgrade for anyone already using 2.5.“. Dann sollte es bei der CO2-Ampel mit dem REST-Server keine großen umbauarbeiten geben. Ist das so? … „CO2-Ampel auf Quarkus 2.5.1-Final upgedated“ weiterlesen
Eben eine Neue Eclipse Version 2021-12 veröffentlicht. Die letzte in diesem Jahr. Wenn das kein Grund für ein Quicktest ist!
Alles OK beim meinem Blockchain Projekt und das bei BTC 48414 bzw. ETH 4196 🙂 … „Quicktest: Neue Eclipse Version 2021-12“ weiterlesen
GO ist eine Programmiersprache von Google und läuft auch auf dem Raspberry PI. Sie ist schnell installiert mit
sudo apt-get install golang
Ein Test mit go version gib die Version aus, und zeigt an, das go installiert wurde. Z.b.
go version go1.15.9 linux/arm
Heute, mal ein „Hallo Welt“ und ein REST-Server um zu zeigen, wie einfach der Start ist.
Also dann mal die Datei erstes-go-programm.go mit diesem Inhalt anlegen: … „Es muss ja nicht immer Java sein, GO ist eine Programmiersprache von Google und läuft auch auf dem Raspberry PI“ weiterlesen
Mit nodejs -v -> v12.22.5 bei: sudo npm install -g truffle auf Linux 5.10.63+ armv6l und das im Urlaub! … „JavaScript heap out of memory – nicht nur bei Java“ weiterlesen
Angesichts meiner ca. > 200 git Repos auf github 73, gitlab 25, privat local 92, bitbucket 2 und npm 5 mal ein paar Zeichnungen die im laufe der Jahre (über 5 Jahre alt) zusammen gekommen sind. Es muss ja auch nicht mehr Subversion, Dimensions (Micro Focus), CVS oder IBM Rational ClearCase (lange ist es her 😉 ) sein.
Was waren meine git TOP 10 vor 5 Jahren? Antwort.
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
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„.
Seit dem 10. Juni 2021 werden Impf-Zertifikate (sogenannte Impfbescheinigungen) in Deutschland in Impfzentren ausgegeben. Den QR-Code kann man auch mit einem Raspberry Pi validieren (von lateinisch validus „kräftig, wirksam, fest“) und den Inhalt des QR-Codes im Klartext ausgeben. Am Beispiel eines Raspberry Pi Zero W sind folgende 6 Schritte nötig.
1. Wir brauchen das Impfzertifikat, also den QR-Code als PNG oder JPG-Bild in einer Datei z.B. max-mustermann.png.
Wie z.B.:
Aber nur den QR-Code, nicht die ganze Seite des Impfzertifikats. … „Impfzertifikat validierung mit dem Raspberry Pi und Python und das zu „Don’t Shut Me Down““ weiterlesen
Warum wird in JUnit 5-Test kein public mehr verwendet? „Less is more“ sagt das JUnit-5 Team und die Testklassen liegen ja eh meistens im gleichen (Test) Package. Auch ist so eine besser Kapselung möglich.
Das Twitter Intelligence Tool (TWINT) mit Web-Scraping-Technologie kann auch auf einem Raspberry Pi installiert werden.
Mit dem Web Scraper für Twitter, mit dem man Tweets von Usern des Kurznachrichtendienstes einholen kann, ohne dabei vom Twitter API eingeschränkt zu werden läuft unter der MIT-Lizenz (Anleitung Twitter-Intelligence-Tool.pdf). TWINT wurde in Python geschrieben, ist am April 2020 in Version 2.1.20 erschienen. Alle Funktionen gehen aber nicht mehr, weil sich die Twitter API geändert hat. Z.b. wirft ein twint -u programmierung –following diesen Fehler:
CRITICAL:root:twint.feed:Follow:IndexError
Aber einiges geht doch noch. Also mal installieren mit:
pip3 install twint
wenn dann nicht alles geht, hat bei mir geholfen:
1 2 |
sudo apt-get install libatlas-base-dev pip3 install --upgrade -e git+https://github.com/twintproject/twint.git@origin/master#egg=twint |
So ein erster Test, alle Befehle ausgeben mit twint -h …: „Twitter Intelligence Tool (TWINT) mit Web-Scraping-Technologie auf dem Raspberry Pi Zero nicht Pi Zero 2 W mit ARM-SoC Broadcom BCM2837 vier ARM Cortex-A53 und 64-Bit-taugliche ARMv8-Kerne“ weiterlesen
Am 11. November letzten Jahres fürte der Ausfall von Infura dazu, dass viele zentrale Börsen die Abhebung von ETH und ERC20-Token gestoppt hatten. Zudem ließen sich Metamask, Uniswap und auch andere Anwendungen auf Ethereum nicht mehr nutzen. Infura scheint ein beliebter Dienstleister für Ethereum Nodes zu sein, auf den sich nicht nur kleinere Unternehmen und Projekte verlassen, sondern auch milliardenschwere Börsen wie Binance.
Für dieses Projekt soll dennoch mal die Infura-API verwendet werden, um den Kontostand einer ETH-Adresse zu ermitteln. Mit dem web3j Framework ist das auch in Java realisierbar. Hier der Architektur Aufbau:
Wir starten (wie immer) mit einem JUnit 5 Test: „ETH-Kontostand via Web3j und Infura mit Java in 5 Schritten abfragen“ weiterlesen
SSH Brute-Force mit Java. Gar nicht so schwierig wie hier beschrieben.
Die neue Version läuft jetzt nur noch mit Java 11. „SSH Brute-Force mit Java, picocli und TWHackSSH jetzt auf Java 11 umgestellt“ weiterlesen
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; /** * @title Gehirn von Thomas Wenzlaff * @dev Mein Smart Contract mit solidity zum Speichern von IQ auf der Blockchain */ contract Gehirn { uint256 iq; constructor() public { // Mittelwert des IQ setzen iq = 100; } function setIQ(uint256 neuerIQ) public payable { iq = neuerIQ; } function getIQ() public view returns (uint256) { return iq; } function getBedeutung() public view returns (string memory) { if (iq <= 40) return "Keine Aussagekraft"; if (iq >= 41 && iq <= 70) return "Weit unterdurchschnittlich – Geistige Behinderung"; if (iq >= 71 && iq <= 79) return "unterdurchschnittlich"; if (iq >= 80 && iq <= 89) return "etwas unterdurchschnittlich"; if (iq >= 90 && iq <=109) return "Durchschnitt"; if (iq >= 110 && iq <=119) return "hoch"; if (iq >= 120 && iq <= 129) return "sehr hoch"; if (iq >= 130 && iq <= 159) return "hochbegabt"; if (iq > 160) return "Keine Aussagekraft"; } } |
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
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:
1 |
mvn de.wenzlaff.command.maven.plugin:de.wenzlaff.command.maven.plugin:0.0.5:info -Dcommand="ls -ll" |
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
Auf Maven Central publiziert und das bei diesen Pflegepersonalquotienten in Hannover und umzu …
Web3j ist ein sehr modularer und typsichere Library für Java und Android. Viele Module und Funktionen für das einfache arbeiten mit Smart-Contracts und Wallets auf der Ethereum-Blockchain (ETH), stehen bereit.
Hier nun ein kleines Beispiel, wie mit nur einer Java-Klasse und ein paar Zeilen Code ein eigenes File-Wallet im Json-Format erstellt werden kann. In einem weiteren Beitrag zeige ich dann, wie dieses File-Wallet in MetaMask importiert werden kann.
Folgende Abhängigkeiten sind in der pom.xml einzutragen, Web3j und die „alte“ (alt aber Apache) Json-Lib von Google, obwohl Web3j auch die Jackson Json Lib als transitive Abhängigkeit mitbringt. Es muss ja nicht immer Jackson sein 😉 „Java Ethereum Wallet mit Web3j erstellen“ weiterlesen
BTC/USTD
Dazu passend mein NodeRed Flow der auf einem Raspberry Pi 4 läuft:
Dazu der Bitcoin Flow (es gehen alle Cryptos) mit NodeRed implementiert. … „NodeRed: Kurze Durchsage der chinesischen Zentralbank: „The People’s Bank of China has declared all cryptocurrency payments illegal““ weiterlesen
„Der Intelligenzquotient (IQ) ist eine durch einen Intelligenztest ermittelte Kenngröße zur Bewertung des intellektuellen Leistungsvermögens im Allgemeinen …“ wie in Wikipedia steht. Der IQ hängt von vielen Faktoren ab, unter anderem vom Alter der Person, Leistung der Testperson und Durchschnittsleistung der anderen Testpersonen. Der durchschnittliche IQ der Bevölkerung wurde auf 100 festgelegt.
Habe vor einigen Tagen eine Smart-Contract mit Solidity geschrieben, so das die IQ Werte in der Blockchain geschrieben und gelesen werden können. Der Smart-Contact für die Ethereum Blockchain heißt „Gehirn“.
Wie kann der Sourcecode eines Smart-Contract verifizert werden? Erkennbar ist es an den grünen Kreis auf den „Contract Tab“:
1. Muss ein API Key auf etherscan.io unter API-Key angelegt werden und in der .env Datei exportiert werden z.B. „Intelligenzquotient (IQ) auf der Blockchain sichern und Smart-Contract verifizieren“ weiterlesen
Heute ist eine neue Version von JUnit 5 veröffentlich worden. Wenn das kein Grund für ein Quicktest ist:
Ja es läuft noch. Mal was anderes, ein Phyton Test für ein Smart-Contract auf der Ethereum-Blockchain:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
from brownie import Gehirn, accounts def test_deploy(): account = accounts.load("freeaccount") gehirn = Gehirn.deploy({"from": account}) ini_iq = gehirn.retrieve() expected = 0 assert ini_iq == expected def test_update(): account = accounts.load("freeaccount") gehirn = Gehirn.deploy({"from": account}) expected = 15 ini_iq = gehirn.store(expected, {"from": account}) assert expected == gehirn.retrieve() |
Und hier der dazu passende Smart-Contract mit Solidity: „Quicktest zur heute veröffentlichen neuen JUnit 5.8.1 Version und auch Smart Contract Test mit Solidity auf der Blockchain“ weiterlesen
Es ist möglich, Ether auf der rinkeby Blockchain zu erhalten. Mit einer Ethereum Faucet können sich User etwas an Kryptowährung besorgen. Für SW-Entwicker ist das wichtig, denn man macht ja nicht viel auf dem Mainnet 😉
Hier mal in 5 Schritten von 0 auf 18,75 Ether (Kurs gerade <3k). Zum Schluss sieht der Kontostand dann so aus:
1. Die ETH Adresse auf die der Betrag gesendet werden soll ermitteln, und in die Zwischenablage kopieren. Dies geht hier …
z.B. diese 0x6f55a676d5862623bd79446133043AEf905718B8
2. Auf Twitter einen Tweet absetzen mit diesem Inhalt: „Ether auf der Ethereum rinkeby Blockchain erhalten da Kurs bei < 3k“ weiterlesen
Heute wollen wir ein Solidity Contract (Smart-Contract) auf der Blockchain mit der Remix-IDE im Browser schreiben. Dafür verwenden wir die Programmiersprache Solidity. Hier ein kleiner Überblick mit einer Mindmap (Danke Dr. Kleinhirn.eu) zu Sprache
Die Online Remix-IDE mit der Doku Remix-IDE-Doku sieht so aus:
Dann legen wir unseren Smart-Contract an, der den IQ mit Gebühren auf der Blockchain speichert und auch lesen kann.
Wir erstellen eine neue Datei Gehirn.sol „Gehirn Smart Contract mit Solidity auf der Ethereum Blockchain compilieren und deployen mit Remix IDE auf Ethereum Virtual Machine (EVM)“ weiterlesen
Wer kennt nicht das Problem. Man wartet auf den Eingang einer Zahlung oder auf das neue ABBA Album und schaut mehrfach ob sie/es schon da ist.
Oder wie lautet mein Kontostand?
Oder auch in diesem Fall, gib mir eine Nachricht, oder schalte den Button grün, wenn eine „Buy me a Coffee“ Spende eingegangen ist.
Oder mache das Licht an, wenn eine BTC Zahlung eingegangen ist. Oder für Hochzeit, den QR-Code neben der Kamera aufhängen und bei einzahlung ein Foto auslösen 😉
Oder, oder oder … „I Still Have Faith In You“ …
All das macht dieser kleine Flow. Und warum soll das Dashboard nicht den Kontostand anzeigen?
„All the things I could do
If I had a little money
It’s a rich man’s world
Money, money, money
Must be funny
In the rich man’s world
Money, money, money
Always sunny
In the rich man’s world
Aha“
Die Funktion ist einfach, in dem Funktions-Node die BTC Adresse eingeben. Die wird dann über die Web-API von https://mempool.space/ abgefragt. Ohne Anmeldung und Paswort möglich. Und schon kann man alles schalte was man will in Abhängigkeit des Kontostand! Cool. Bin ja gespannt, wann der obere Button für den Kaffee eine Aktion auslöst.
Das kanns Du leicht über die Buy my a coffee: bitcoin:bc1qj4grttyhk2h5wqask3nku70e3qtycssz5kvw5l tun. … I Still Have Faith In You „Treibt ABBA – „Don’t Shut Me Down“ den BTC Kurs auf über 50 k ?“ weiterlesen
Vor ein paar Tagen ist die neue Version von ArchUnit veröffentlicht worden. Diesmal gab es einen Breaking Change, es wurde die Klasse JavaClassList gelöscht. Es läuft alles wie gehabt:
Nötige Anpassungen in der pom.xml „Kuba erlaubt Kryptowährungen, wenn das kein Grund für ein Quicktest der neuen ArchUnit 0.21.0 ist“ weiterlesen
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:
1 2 3 4 5 |
[INFO ] 2021-08-14 18:09:44,225 Etherscan.main() - Start Etherscan abfrage ... [INFO ] 2021-08-14 18:09:45,166 Ausgabe.printGasPrice() - Letzter Block Nr.: 13024280 [INFO ] 2021-08-14 18:09:45,167 Ausgabe.printGasPrice() - Gas Preis: 39 Gwei, Propose Gas Preis: 41 Gwei, Fast Gas Preis: 52 Gwei [INFO ] 2021-08-14 18:09:45,720 Ausgabe.printETHPreis() - Kurs für 1 ETH: 3264.33 Dollar [INFO ] 2021-08-14 18:09:46,275 Ausgabe.printAdressBetrag() - Stand: 0.00451771 Ether auf Adresse: 0x829F9e57c29ab683E964c76160B7B0BaB2727dD2 |
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
Mit dem TWAirLabs Programm, welches ich hier vorgestellt habe, können alle Flughäfen der Welt abgefragt werden. Dies geht mit dem Aufruf:
-k API-KEY -alle -l LÄNDER_KÜRZEL
Z.B. mal Japan mit seinen 138 Flughäfen:
-k API-KEY -alle -l jp
Ergebnis: „Welche Flughäfen und wieviele gibt es in DE, JP, US, RU …. ?“ weiterlesen
Ab Java 11 gibt es den HTTPClient im JDK der den REST Zugriff vereinfacht. Das ist mit einem Zweizeiler getan:
1 2 3 4 5 |
public static HttpResponse<String> getRequest(String url) throws IOException, InterruptedException { HttpRequest request = HttpRequest.newBuilder().uri(URI.create(url)).method("GET", HttpRequest.BodyPublishers.noBody()).build(); return HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); } |
Den Response kann man mit dieser Methode auswerten: „Zweizeiler REST HTTPClient am Beispiel von AirLabs für Planespotter“ weiterlesen
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; import org.junit.jupiter.api.Test; /** * Dubletten Test. * * @author Thomas Wenzlaff * */ public class TestDoppelte { @Test void testDoppelteUndNullEntfernen() { System.out.println("----> Array mit Orten:"); List<String> orte = new ArrayList<>(); orte.add(null); orte.add(null); // doppelter Eintrag orte.add("Hannover"); orte.add("Langenhagen"); orte.add("Bremen"); orte.add("Bremen"); // doppelter Eintrag orte.stream().forEach(ort -> System.out.println(ort)); assertEquals(6, orte.size()); System.out.println("----> Entfernen von Dubletten mit HashSet:"); Set<String> orteSetOhneDublette = new HashSet<>(orte); orteSetOhneDublette.stream().forEach(ort -> System.out.println(ort)); assertEquals(4, orteSetOhneDublette.size()); System.out.println("----> Wieder zurück als Liste ohne die null Werte und anders sortiert:"); List<String> kopie = orteSetOhneDublette.stream().filter(Objects::nonNull).collect(Collectors.toList()); kopie.stream().forEach(ort -> System.out.println(ort)); assertEquals(3, kopie.size()); } } |
Ergebnis: „Java: Array von Dubletten und null entfernen mit HashSet und zurück“ weiterlesen
Wie kann die Performance einer React App. ermittelt werden? Dazu gibt es das „React Developer Tools“ von React. Wenn das im Browser installiert ist:
Es gib dann zwei neue Tabs am Ende: Components „React Developer Profiler im Firefox Browser für Performance Messungen“ weiterlesen
Hier mal ein kleines Beispiel einer React-Klasse, die zu einer Functional Components umgeformt wird:
Was ist anders?
-kein class dafür const
-kein extends React.Component dafür = (props) =>
-keine render Methode
-kein this
Noch ein Beispiel, im Prinzip das gleiche: „Functional Components vs. Class Components in React“ weiterlesen
Eine Suche in Datenbeständen ist keine einfache Sache! Mit Fuse.js ist ein Suche mit Fuzzylogik möglich. Fuse.js ist eine mächtige Lib ohne viele Abhängigkeiten.
Eine suche mit Fuzzylogik ist eine unscharfe Suche und wird z. B. in der Automatisierungstechnik, Medizintechnik, Unterhaltungselektronik, KI, Fahrzeugtechnik und anderen Bereichen der Regelungstechnik verwendet. Zum Beispiel suchen wir nach dem Ort: Hameln und es werden uns auch Ergebnisse aus Hannover angezeigt. Beide beginnen mit Ha.
Wir programmieren mal Beispielsweise eine Arztsuche mit einfache Gui, wie bei Google, mit nur einem Eingabefeld. So soll die Seite aussehen, und ein Eintrag ist auch gleich die Online-Hilfe:
Das Ergebnis, wenn wir z.B. nach Anästhesie suchen sieht dann so aus bei den 5 Beispiel Datensätzen: „Dynamische Fuzzy-Suche mit Fuse.js in Json Daten mit React App TWArztSuche“ weiterlesen
Eine minimale Single Page App (495 Byte) mit React und Babel. Das ganze Projekt ist hier zu finden. Einfach das git Repo in einem leeren Verzeichnis clonen
„Mal was anderes als Fussball: SPA mit React und Babel oder TOP 10 Gründe für Anti- Pattern „Big Ball of Mud““ weiterlesen
Wer noch ein JavaScript CO2-Dashboard für seine CO2 Ampel mit PatternFly und React braucht, kann gerne diesen Code verwenden: „CO2-Dashboard mit JavaScript, PatternFly und React für CO2-Ampel“ weiterlesen
Crypto Workflow Token Simulation mit dem Camunda Modeler Plugin. Hier das Ergebnis als 30 Sekunden Video:
Das BPMN Modell von oben: … „Crypto Workflow Token Simulation mit BPMN und Camunda Modeler Plugin“ weiterlesen
TWHackSSH ist nun auch auf Maven Central erhältlich. Lange dort nichts mehr hochgeladen. Die habe jetzt auch eine schöne Übersichtsseite aller Abhängigkeiten mit Scann und mit E-Mail Benachrichtigung:
Jetzt geht der Download also auch darüber, wer das TWHackSSH haben will, kann über
https://search.maven.org/remotecontent?filepath=de/wenzlaff/twhackssh/de.wenzlaff.twhackssh/1.0.5/
gehen oder von diese Seite das Programm laden … „TWHackSSH 1.0.5 nun auch auf Maven Central“ weiterlesen
SSH Brute-Force mit Java. Gar nicht so schwierig.
Wir lesen eine Passwort- und eine Userdatei ein und machen ein connect zu einem SSH-Server mit jeder Kombination bis wir eine gültige Verbindung gefunden haben. Hier die Architektur inkl. JUnit-Testklassen: … „SSH Brute-Force mit Java, picocli und TWHackSSH“ weiterlesen
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
Gerade eben die Java Blockchain erweitert v0.0.3. Wer Lust hat mitzumachen kann gern Merge-Requests einreichen.
Es gibt nun auch einen neuen Node „bip39 wordlist“ für die BIP39 Wortlisten.
Der Beispiel-Flow zum generieren und validieren der BIP39 Wortlisten könnte so aussehen: … „BIP39 Wortlisten als Node für NodeRed“ weiterlesen
Wer Kurse auch im NodeRed-Dashboard anzeigen bzw. umrechnen will, kann diesen Beispiel Flow als Template verwenden.
Die Funktion ist schnell erklärt. Es wird nach der Eingabe des Bitcoin Wert (Achtung, kein Komma, nur den Dezimalpunkt verwenden) der Kurs bei Kraken abgefragt und der aktuelle BTC in Euro umgerechnet. Der Beispiel Button, im Flow, erzeugt z.B. den Wert für 1000 Euro. Kann ja leicht angepasst werden oder auch direkt vom Konto eingspielt werden, wie hier schon mal gezeigt. … „BTC -15,94% wenn das kein Grund für einen BTC to Euro Dashboard mit NodeRed ist“ weiterlesen
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
In der Pandemie könnte mit diesem Counter am Eingang eines Ladens die Besucher gezählt werden. Auch ein Foto wird jeweils gemacht (Achtung, Datenschutz beachten 😉 ) und die Besucher schön in einem Diagram nach Uhrzeit ausgegeben. Alles wird über einen eigenen Server ausgegeben.
Auf die Straße gerichtet, wird der PKW mit Foto und Geschwindigkeit erfasst. Cool. Und man kann sehen, wieviel Autos so auf der Straße fahren. Alles ohne KI und mit einem Raspberry Pi.
Hier mal das Ergebnis, welches nur die Daten von einem Raum anzeigt. So kann man gut sehen wer wann und wie oft den Raum besucht. Aus Datenschutzgründen ist das Foto nicht „unscharf“ gemacht worden, (sondern die Kamera ist defekt wie weitere Tests zeigten und geht zurück…) und auf den Kopf gestellt, damit man mich da nicht erkennt 😉
Man kann auch in der unteren Zeile sehen, wie schnell ich gegangen bin:
Hier als Diagramm, wie oft der Raum jeweils in einer Stunde/Tag betreten wurde:… „Überwachung und Erkennung mit Raspberry Pi Kamera oder wie zähle ich die Besucher oder PKWs“ weiterlesen
Update ohne Probleme. JUnit Test läuft, was will man mehr… „Quicktest: Neue Version Eclipse 2021‑03 veröffentlicht – Better Than Ever“ weiterlesen
Wie können Kryptowährungsadressen überprüft werden? Also wie können z.B. Bitcoin Adresse überprüft werden? Die Bitcoin Adressen habe wie so viele Adressen eine interne Checksumme, die mit sha256 gebildet wird. Das heißt, es wird zweimal einSHA-256 Hash auf die Adresse gemacht und die ersten 4 Bytes als Checksumme verwendet und an die Adresse angehangen.
Um es ganz einfach zu machen, habe ich einen NodeRed Node node-red-contrib-cryptography-address-check erstellt. Und dazu einen Flow, wo die Adresse nur eingegeben werden muss, und es dann automatisch auf Gültig oder Ungültig überprüft wird.
Dieser Node, muss also nur über die „Pallette hinzufügen“ Funktion geladen werden:
So sieht meine public „Buy me a coffee“ Adresse aus, die ist gültig:
Sobald man da auch nur ein Zeichen verändert, … „Crypto Währungsadressen wie z.B. Bitcoin in NodeRed Dashboard validieren“ weiterlesen