Was empfängt der Raspberry Pi so in den letzten 6 Stunden in Hannover (EDDV, HAJ) so auf 1090 Mhz?
Java: Rätsel des Tages
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
Java Sicherheits Quickie: final
Excel-Quickie: Wie wird die Anzahl Zeilen und Spalten gezählt?
Manchmal will man in Excel nur wissen wieviele Zeilen bzw. Spalten markiert sind. Früher wurde das unten rechts angezeigt. Jetzt nur noch wenn der Bereich mit der Maus markiert ist (Taste unten lassen, sonst verschwindet es wieder) und dann oben links schauen:
10z x 2S heißt so viel wie 10 Zeilen x 2 Spalten. Ganz einfach, wenn man weiß wie 😉
JUnit 5 Quickie: @CsvSource
Mit der @CsvSource Annotation in JUnit 5 kann man mit Kommaseparierte Parameter leicht und übersichtliche Tests schreiben. Die API ist aber noch im EXPERIMENTAL Status.
Hier mal ein Beispiel. Für jeden Kommandozeilen Parameter eine Testmethode schreiben:
„JUnit 5 Quickie: @CsvSource“ weiterlesen
Java Quickie: Die Kommandozeilen Argumente mit Apache Commons CLI bändigen
Seit März 2017 gibt es noch kein neues Release von den Commons CLI. Aber warum die Commandline nicht auch damit auswerten? Macht alles viel übersichtlicher.
Das geht mit ein paar Zeilen Java Code und einen Eintrag in der pom.xml:
1 2 3 4 5 |
<dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli</artifactId> <version>1.4</version> </dependency> |
Hier ein Beispiel snippets: „Java Quickie: Die Kommandozeilen Argumente mit Apache Commons CLI bändigen“ weiterlesen
Wie wird ein Java Programm im JAR in einem Docker Kontainer mit Maven aufgerufen? Und wie werden die Docker Tools in Eclipse installiert?
Mit dem io.fabric8 Plugin kann ein Maven Projekt mit Java in Docker laufen. Dazu z.B. das Plugin wie folgt in der pom.xml eintragen.
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 |
<plugins> <!-- https://dmp.fabric8.io/ 0. Docker starten 1. mvn docker:build 2 mvn docker:run --> <plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.27.2</version> <configuration> <images> <image> <name>${project.name}:${project.version}</name> <build> <from>openjdk:9</from> <assembly> <descriptorRef>artifact</descriptorRef> </assembly> <cmd>java -jar maven/${project.name}-${project.version}.jar -v</cmd> </build> <run> </run> </image> </images> </configuration> <executions> <execution> <id>docker:build</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> </plugin> |
Damit ein mvn install läuft muss erst die Docker.App gestartet werden:
In Eclipse läuft es dann:
Java 8 Quickie: Wie können alle bestimmten Dateien eines Verzeichnis in einer Zeile ermittelt werden?
Mit der static Methode Files.newDirectoryStream. Diese Methode gibt es schon seit Java 1.7. Hier mal ein Beispiel für alle PDF Datein im aktuellen Verzeichnis:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
List<Path> pdfDateien = new ArrayList<Path>(); String eingabeVerzeichnis = "."; try { Files.newDirectoryStream(Paths.get(eingabeVerzeichnis), path -> path.toString().endsWith(".pdf")) .forEach(path -> pdfDateien.add(path)); } catch (IOException e) { System.err.println(e); } |
Was kann man gegen eine NoClassDefFoundError (org/bouncycastel.asn1.ASN10ctetString) beim verschlüsseln mit iText tun?
Was kann man gegen eine NoClassDefFoundError (org.bouncycastele.asn1.ASN10ctetString) beim verschlüsseln mit iText tun?
1 2 3 4 5 |
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13</version> </dependency> |
Zur Laufzeit wird die Klasse benötig. Es kommt diese Exc:
Java: Rätsel des Tages
Was ist das Ergebnis?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/** * Rätsel des Tages. * * @author Thomas Wenzlaff * */ final public class RätselDerWoche { private static int x = 1; static { x++; } public static void main(String[] args) { System.out.println("Ergebnis: " + x); } static { x = 3; } } |
Ergebnis: „Java: Rätsel des Tages“ weiterlesen
Linux Quickie: Wie können alle aktive Ports mit netstat angezeigt werden?
Manchmal will man wissen, welche Ports alle auf dem Raspberry Pi verwendet werden. Das geht z.B. mit
sudo netstat -tulpen
Das kann sich auch gut merken. Einfach an die Blumen „Tulpen“ denken.
oder auch nur alle aktiven mit „Linux Quickie: Wie können alle aktive Ports mit netstat angezeigt werden?“ weiterlesen
Für den Urlaub: Free WLAN Wifi-Scanner mit LED anzeige mit Wemo (ESP8266)
Wer noch für den Urlaub einen freien Wifi-Finder braucht, kann einen Wemo (ESP8266) verwenden, es muss ja nicht immer ein Raspberry Pi sein. Einfach dieses kleinen c Programm mit der Arduino IDO in den Wemo flashen, und mit 5 Volt an einem USB Port mit Strom versorgen.
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
/* * Wifi Finder der alle fünf Sekunden die Wifis scannt und für jedes freie WLan einmal kurz die LED anschaltet. * * Thomas Wenzlaff (c) 2019 www.wenzlaff.info */ #include "ESP8266WiFi.h" void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); pinMode(LED_BUILTIN, OUTPUT); Serial.println("Setup durchgeführt"); printMacAddress(); } void loop() { Serial.println("Starte den Scann nach WIFI ..."); digitalWrite(LED_BUILTIN, LOW); const int n = WiFi.scanNetworks(); Serial.println("OK, Scann durchgeführt"); if (n == 0) Serial.println("Keine Netzwerke gefunden"); else { Serial.print(n); Serial.println(" Netzwerk gefunden"); for (int i = 0; i < n; ++i) { Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" ("); Serial.print(WiFi.RSSI(i)); Serial.print(" dBm)"); Serial.print(" Verschlüsselung: "); printEncryptionType(WiFi.encryptionType(i)); delay(10); } } Serial.println(""); digitalWrite(LED_BUILTIN, HIGH); delay(5000); } void printEncryptionType(int thisType) { switch (thisType) { case ENC_TYPE_WEP: Serial.println("WEP"); break; case ENC_TYPE_TKIP: Serial.println("WPA"); break; case ENC_TYPE_CCMP: Serial.println("WPA2"); break; case ENC_TYPE_NONE: Serial.println("Keine"); digitalWrite(LED_BUILTIN, HIGH); delay(500); digitalWrite(LED_BUILTIN, LOW); break; case ENC_TYPE_AUTO: Serial.println("Auto"); break; } } void printMacAddress() { byte mac[6]; WiFi.macAddress(mac); Serial.print("MAC: "); Serial.print(mac[5], HEX); Serial.print(":"); Serial.print(mac[4], HEX); Serial.print(":"); Serial.print(mac[3], HEX); Serial.print(":"); Serial.print(mac[2], HEX); Serial.print(":"); Serial.print(mac[1], HEX); Serial.print(":"); Serial.println(mac[0], HEX); } |
Der Sketch verwendet nur 266424 Bytes (25%) des Programmspeicherplatzes. Das Maximum sind 1044464 Bytes. Globale Variablen verwenden 27124 Bytes (33%) des dynamischen Speichers, 54796 Bytes für lokale Variablen verbleiben. Das Maximum sind 81920 Bytes.
Hier noch ein kleines 26 Sekunden Video um zu sehen wie der Scanner mit dem obigen Programm läuft:
Auf der Seriellen Konsolen werden übrigens die Daten auch ausgegeben, z.B.
Linux Quickie: Nohup oder wie können Programme im Hintergrund laufen?
Java ua. Programme könen auf Linux bzw. dem Raspberry Pi über die Komandozeile mit dem Programm screen im Hintergrund gestartet werden. Dieses ist aber nicht immer installiert. Deshalb kann man als alternative ein Programm mit nohub als Prozess starten.
Z.B.wird ein Programm in einem Jar wie folgt im Hintergrund gestartet:
java -jar twpdftagger-0.0.2.jar &
Es braucht also nur das & angefügt zu werden. Nun ist man aber oft per ssh eingeloggt und will das das Programm auch nach einem exit der Konsole noch weiterläuft. Hier kommt nun nohup zum Einsatz:
nohup java -jar twpdftagger-0.0.2.jar &
Die Ausgaben des aufgerufenen Programms werden automatisch in die Datei nohup.out geleitet, die im Verzeichnis angelegt wird, von dem aus der Befehl ausgeführt wurde. Weitere Infos zu nohup gibt es mit „Linux Quickie: Nohup oder wie können Programme im Hintergrund laufen?“ weiterlesen
JUnit 5 Quickie: @nested 入れ子 und public optional
Wie weit kann der Empfang von Transpondersignalen von Flugzeugen maximal gehen?
In einen Beitrag Raspberry Pi: Höhenunterschiede mit heywhatsthat.com visualisieren hatte ich vor 4 Jahren schon mal über die visualisierung der Höhenunterschiede berichtet. Mit der Seite kann aber auch die maximal mögliche Empfangsreichweite visualisiert werden. Also: Wie weit kann der Empfang von Transpondersignalen von Flugzeugen maximal gehen, wenn wir berücksichtigen das die Erde eine Kugel ist?
Das hängt ja von der Höhe der Antenne, dem Empfangsort, die Flughöhe der Flugzeuge, dem Wetter und auch der Landschaft ab. Wer direkt vor einem Berg seine Antenne hat, empfängt halt auch nicht viel. Dann gibt es auch noch andere Parameter, wie Antennenart, Empfindlichkeit, stärke des Sendesignals und andere Dinge, die wir heute hier nicht berücksichtigen wollen.
Folgende vier Schritte sind nötig:
1. Auf die Seite heywhatsthat.com gehen
2. Auf den Reiter „New panorama“ klicken:
3. Auf der Maske 1. die Latitude z.B. 52.438837 2. die Longitude z.B. 9.742816 des Antennenortes eingeben. 3. die Höhe der Antenne z.B. 54 m und „above sea level“ markieren 4. einen Titel z.B. Langenhagen www.wenzlaff.info und 5. nicht vergessen auf Metric zu schalten, dann abschließend auf 6. Submit request klicken. Dann eine Minute wegschauen, da Werbung eingeblendet wird:
4. Auf der Seite dann oben Rechts auf den Reiter „Up in the Air“ klicken „Wie weit kann der Empfang von Transpondersignalen von Flugzeugen maximal gehen?“ weiterlesen
Wie weit geht der Raspberry Pi Empfang heute bei guten Wetter von EDDV aus?
Was empfängt der Raspberry Pi mit DUMP1090 so in Hannover zu Ostern (lateinisch pascha oder Festum paschale, von hebräisch פֶּסַח pésach)?
Update PDF-Formulare automatisch auswerten – PDF-Formulare to CSV (Excel) – Version 0.0.2 veröffentlicht – nun auch für Windows!
Wie hier ausführlich beschrieben, hier nun die Version 0.0.2 für den Raspberry Pi als DEB Archive aber auch als RPM für RedHat und für Windows nur die JAR Datei zum kostenlosen Download twpdfformulartocsv-0.0.2.zip
Einige Funktionen sind nun NEU z.b. die Hilfe, die mit -h aufgerufen werden kann, hier aber erst einmal das BPMN zum Programmablauf:
Die Versions Ausgabe mit -v „Update PDF-Formulare automatisch auswerten – PDF-Formulare to CSV (Excel) – Version 0.0.2 veröffentlicht – nun auch für Windows!“ weiterlesen
Rätsel des Tages: Warum läuft der JUnit 5 Test nicht und zeigt eine Message Box an?
Warum wird beim ausführen dieses JUnit 5 Tests die Fehlermeldung angezeigt, das kein Test vorhanden ist?
Es ist nicht die fehlende @Test Annotation, die wird bei einem @ParameterizedTest nicht gebraucht.
Die Lösung …
„Rätsel des Tages: Warum läuft der JUnit 5 Test nicht und zeigt eine Message Box an?“ weiterlesen
Eclipse Quickie: Testabdeckung anzeigen mit „Coverage As“
In Eclipse kann man leicht die Testabdeckung visualisieren.
Wenn man z.B. einen JUnit Test über den Menüpunkt „Coverage As – JUnit Test“ ausführt:
Alle Zeilen die grün sind, wurden durchlaufen: „Eclipse Quickie: Testabdeckung anzeigen mit „Coverage As““ weiterlesen
Aktuellste Version mono auf dem Raspberry Pi installieren für C# Programme (Visual C#)
Installiert man mono mit sudo apt install mono-complete ist mono zwar in 30 Minuten installiert, aber nicht in der aktuellsten Version, sondern in Version 4.6.2.
Aktuell ist aber 5.18.1 wie auf der mono Seite zu sehen. Die Installation ist aber auch schnell gemacht, Key, Certificate und Repo laden: „Aktuellste Version mono auf dem Raspberry Pi installieren für C# Programme (Visual C#)“ weiterlesen
PDF-Formulare automatisch auswerten – PDF-Formulare to CSV
Manchmal möchte man mehrere PDF-Formulare automatisch auswerten. Z.B. von einer Umfrage. Also wie bekommt man die im PDF-Formular eingegebenen Felder aller PDF Dateien eines Verzeichnises in eine Excel CSV Datei für die Auswertung? Wie man PDF-Formulare kostenlos erstellt, hatte ich ja schon hier beschrieben.
Das geht mit dem Raspberry Pi (oder auch Mac und Windows) ganz einfach mit dem Java Tool twpdfformulartocsv das ich implementiert habe. Es muss mind. Java 8 auf dem Pi installiert sein. Das kann man mit java -version überprüfen. Es kommt auf dem Pi Zero bei mir
1 2 3 |
openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-2~deb9u1-b13) OpenJDK Client VM (build 25.181-b13, mixed mode) |
Hier nun die Schritte, um es zu installieren.
„PDF-Formulare automatisch auswerten – PDF-Formulare to CSV“ weiterlesen
Zeitumstellung auf dem Raspberry Pi
Und nicht vergessen die Uhr auf dem Raspberry Pi umstellen, wie hier (MESZ, MEZ, UT, UTC, GMT – Raspberry Pi: Wie kann die Sommerzeit bzw. Winterzeit überprüft und die Zeitzone gestellt werden?) beschrieben.
Mit alien von rpm nach deb und zurück
Manchmal will man auf den Raspberry Pi ein rpm von Red Hat auf einem Debian installieren. Wenn es auch selten vorkommt.
Man kann dann mit alien das Package Format konvertieren. Auf dem Raspberry Pi installieren wir die aktuelle Version aus dem Jahre 2016 mit einem sudo apt-get install alien und schon ist die 8.95 Version installiert.
Wie kann nun ein rpm in das deb Format konvertiert oder auch gleich installiert werden? Dazu einfach mit sudo das rpm Archive aufrufen. Hier mal ein Beispiel mit dem twpdfformulartocsv-0.0.1-1.noarch.rpm „Mit alien von rpm nach deb und zurück“ weiterlesen
20 Jahre vs. 10 Jahre WordPress Blog – wenzlaff.de – 1226 Beiträge
Vor 20 Jahren ging wenzlaff.de ans Netz, wie hier schon mal berichtet.
Aber genau heute am 28.3.2009 also vor 10 Jahren wurde der erste WordPress Blog Eintrag hier auf wenzlaff.info veröffentlicht.
Wie die Zeit vergeht.
1226 Beiträge sind hier zu finden.
Zu Themen wie Java, Eclipse, Raspberry Pi, ESP32, SDR, Linux, Arduino und Planespotting … „20 Jahre vs. 10 Jahre WordPress Blog – wenzlaff.de – 1226 Beiträge“ weiterlesen
OpenOffice Quickie: Wie können Auswahlboxen für PDF-Formulare mit mehreren Werten erstellt werden?
Vor einiger Zeit hatte ich schon mal beschrieben, wie PDF-Formulare mit dem kostenlosen OpenOffice erzeugt werden können. Wie kann nun aber eine solche Auswahlbox mit Werten in einem PDF-Formular eingefügt werden?
Der Trick ist im Bearbeitungsmodus mit einem Doppelklick den Eigenschaften Dialog öffnen: „OpenOffice Quickie: Wie können Auswahlboxen für PDF-Formulare mit mehreren Werten erstellt werden?“ weiterlesen
Wie können kostenlos PDF Formulare schnell mit OpenOffice erstellt werden?
PDF Formulare sind oft sehr nützlich. Man braucht nicht das kostenpflichtige Adobe Tool dafür. Das geht gut mit dem kostenlosen OpenOffice. Mit Word geht es bisher nicht.
Wenn das OpenOffice installiert ist, ein neues Dokument öffnen und zuerst die beiden Symbolleisten über das Menü Ansicht – Symbolleisten – Formular-Entwurf und Formular-Navigation einblenden:
Diese Leisten erscheinen dann unten im Dokument. „Wie können kostenlos PDF Formulare schnell mit OpenOffice erstellt werden?“ weiterlesen
Eclipse update in 15 Min auf 2019-03 -> ohne Neuinstallation
Das Update auf die aktuelle Version geht auch über den Menüpunkt „Help“ -> „Check for Updates …“:
Das ganze läuft aber nur, wenn auch die Update Site aktiviert ist: „Eclipse update in 15 Min auf 2019-03 -> ohne Neuinstallation“ weiterlesen
Eben veröffentlicht Eclipse IDE 2019‑03 – Better Than Ever – The Eclipse IDE delivers what you need to rapidly innovate – 68.1 million lines of code
Was ist neu?
-Polyglot language support
-First class support for Java, JavaScript, C/C++, PHP, Rust, and others Latest Java™ versions
-Support for building Java™ 11 and Java EE™ 8 based applications
-Improved performance
-Startup time has received a boost this release
-Language Server support
-Solid infrastructure to support integration of language servers
-Proven extensibility
-A huge variety of platform plug-ins
–Free and open source
-Free and open source released under the terms of the Eclipse Public License 2.0
Download hier oder eine schöne Zusammenfassung mit Videos.