Main /

Lars Technical Blog

Allgemein

Knowledge Base

Virtualisierung Emulation

Technik und Wissen

Community

Privat

%center%[[http://validator.w3.org/check?uri=referer|http://www.w3.org/Icons/valid-xhtml10.png]]%%

Lars Technical Blog

HomePage / User / Lars

 

[cdw] 2017 by Lars

Archiv: 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018


Achtung!

Hier findet Mann (Frau vielleicht auch) Information und ggf. Sorgen bzw. ProblemeHerausforderungen bzgl. gerade aktueller Software und Hardware hinsichtlich Fehlern die mir evtl. bei dem täglichen Umgang mit Computern unterlaufen. Hier wird Tacheles gesprochen des weiteren wird evtl. übelster Sarkasmus verwendet. Personen/4men werden hier nicht verunglimpft, eher durch den Kakao gezogen. Wer dem Kauderwelsch, das häufigentweder auf gefährlichem Halbwissen, intensiver Nutzung der Suchmaschine Google, oder durch simple Anwendung entstanden ist, oder zu bestehen scheint, nichts abgewinnen kann, möge sich der hier beschriebenen Herangehensweisen selbst stellen. Wer glaubt/meint etwas zwischen den Zeilen zu finden, der irrt.

Fragen? Keine! Gut so, weitermachen.

Oro, mein Riechfläschchen!


5. November 2019

Sicherheitswarnung zu Ihrem Internetzugang...
Da habe ich von der Telekom eine Warnung bekommen, das es möglich sei, das ich Angriffen durch dritte ausgesetzt werden könnte. Nach etlichen Minuten in der Warteschleife haben sie dann mehr Infos herausgerückt. Ich habe einen offenen Port(gewollt) und eine nur mit http versehene Internetseite (Ups) kann ja mal passieren. Aber dafür wollte ich eigentlich kein https aufsetzen, jetzt darf ich mir doch erstmal einen HAProxy? aufsetzen. Immer dieser Aufwand...

4. November 2019

Endlich mal eine Sprache, die keiner versteht...
+[--->++<]>.+++[->++++<]>+.+++++++++++++.+.+.+++[->+++<]>.+++.+++++++++++.+.[---->+<]>+++.++[->++<]>.[----->+<]>+.-[---->+<]>+++.+[->+++<]>++.+++.--[--->+<]>--.+[----->+<]>+.-----.------.+++++.++++++++++++.[++>---<]>.

15. Oktober 2019

Retrogames...

15. Oktober 2019

Windows 10 als Hotspot missbrauchen...
Das, was in Tüddeln steht, einfach eintippen. Windows 10 hilft dann schon weiter, hoffentlich.

Windows Taste -> "Netzwerk"status -> Einstellungen für "mobil"e Hotspots -> Ein -> Bearbeiten und Name und Kennwort vergeben. Schon ist Windows 10 ein lokaler Hotspot. Falls mal wieder kein WLAN vorhanden ist. Oder das Hotel einem die Mehrfachnutzung verwehrt.

9. Oktober 2019

Linkliste...

6.Oktober 2019

nfs-utils...
Manchmal ist es verwunderlich, zu welchen Fehlern es bei diesen ständigen Updates so alles kommt. Mein Server läuft mit einem Linux 4.9.19x LTS Kernel, ist also schon etwas betagt, dafür funktioniert damit CUPS.

Jetzt haben kluge Leute das nfs-utils angepasst (Version 2.4.1) und es verwendet statx() statt stat(), was leider erst im Kernel 4.11 zur Verfügung steht. Damit funktioniert aber das NFS nicht mehr richtig. Also musste ich erstmal wieder auf das ältere nfs-utils ausweichen. (2.3.4) damit klappt es dann auch.

Bevor ich jetzt einen Bug dazu schreibe werde ich mir das ganze nochmal genauer ansehen. Da es definitiv ein Problem eines User-Programms ist und nicht eins im Kernel.

4. Oktober 2019

Massendaten per insert into in Oracle-DB pumpen...
Manchmal möchte man sehr viele Daten die vorzugsweise in CSV vorliegen, in möglichst kurzer Zeit in eine Datenbank importieren.

Erstens kann man eines der schönen Tools verwenden wie z.B. DBeaver diese Tool bietet eine nette Import Funktion, auch für CSV. Der Import geht dann recht flott. (ca. 4-5min für 10 Millionen Rows) Leider braucht es einen CSV Header, der gerne mal weggelassen wird. diesen kann man aber per cat header.csv blob.csv >blob-with-header.csv vorhängen.

Leider funktioniert das nicht gut mit Daten die sich z.B. jeden Monat ändern und erneut importiert werden müssen dann von einer Passwortgeschützten Seite geholt werden müssen und dann auch noch ausgepackt (unzip) und vorbereitet (Header vorweg setzen) werden müssen. Das dauert selbst mit vielen Vorbereitungen immer wieder locker 1h weil man auch viel wieder vergißt.

Also das alte Java-Wissen ausgepackt und mal versucht das per EclipseLink nachzubauen. CSV-Import ist ein "Selbstgänger", eine kleine Fingerübung, die sich mit TDD einfach so runter schreiben lässt.

Jede Zeile der CSV-Datei wird eingelesen, in die Komma-Separierten-Einzeldaten zerlegt in INSERT INTO umgebaut und per EntityManager->createNativeQuery(...) zum Query und diesen per executeUpdate() abschicken. Da der transaction-type in der persistence.xml mit RESOURCE_LOCAL deklariert ist, müssen wir den EntityManager mit Transaktionen starten und immer commiten.

Ok, das ist etwas langsamer als erwartet, man schafft ca. 2500 Rows in 15s. Das bedeutet für den kompletten Import ~16h. Aber um dazu eine bessere Aussage zu treffen, wie groß ist der Overhead von Java? Also das reine CSV-Datei einlesen und der komplette Umbau in INSERT INTO Statement. Kleiner Test dazu, es dauert ca. 15s um die 10 Millionen Werte einzulesen und zu konvertieren, Java ist also nicht das Problem.

Da das ständige INSERT INTO für Massendaten ungeeignet ist, gibt es eine bessere Methode. INSERT ALL INTO ... Das ist leider Oracle-Spezifisch und unterscheidet sich etwas von MySQL wo die Values komma-separiert hinter ein insert geschrieben werden können. Aber soll uns egal sein, zudem verringern wir das ständige begin/commit der Transaktionen. Zusätzlich machen wir noch ein alter session set optimizer_capture_sql_plan_baselines=false vorweg. Damit laufen auch die Tablespaces nicht mehr voll. Zudem sind vorhandene Indices/Constraints kein Problem mehr. So gelingt es die Zeit zu verkürzen. Auf ~1.7s pro 2500 Rows, was aber immer noch bedeutet, der Import bräuchte ca. 2h.

Da geht doch bestimmt noch mehr? Ein Kollege sagte etwas von BatchWrite und PreparedStatements.

Es wird einmalig eine INSERT INTO table (a,b,c...) VALUES (?,?,?...) als PreparedStatement angelegt, dieses dann mit den Settern setLong, setString, setFloat ... gefüttert und nur addBatch() ausgeführt. Der erste Wert der Setter beginnt bei 1! Dann wiederholt sich das für weitere Werte. Alle 1000 Rows wird ein executeBatch gerufen. So schaffen wir ~100000 Rows in einer Sekunde. Und damit ist der Import in ca. 2min durch. Geht doch.

Ein böser Fehler am Ende, der mich mehr als einen Tag gekostet hatte: Man verwende in Maven folgende Dependencies für EclipseLink?

 <dependency>
  <groupId>org.eclipse.persistence</groupId>
  <artifactId>javax.persistence</artifactId>
 </dependency>

 <dependency>
  <groupId>org.eclipse.persistence</groupId>
  <artifactId>org.eclipse.persistence.jpa</artifactId>
 </dependency>

Statt nur folgendes.

 <dependency>
  <groupId>org.eclipse.persistence</groupId>
  <artifactId>eclipselink</artifactId>
 </dependency>

Mit der Eclipse IDE reicht das zwar um eine Verbindung zur Oracle-DB aufzubauen, man erlebt aber ein böses Erwachen, sobald es außerhalb der IDE versucht wird.

Weitere Links:

14. September 2019

Paranoide Einstellungen für den Linux Kernel...

12. September 2019

DropWizard mit DB Verknüpfen...

Leider fehlen aktuell ein paar Informationen oder sind unklar

Hier ein eher funktionierendes Beispiel

Leider geht aktuell list(namedQuery("...")) nicht durch den aktuellen Java 11/12 Compiler. Da bin ich noch auf der Suche...

1. September 2019

DropWizard...

28. August 2019

Reaktiv...

21. August 2019

ACI???...

18. August 2019

Ich werde alt...

15. August 2019

Anderes Microserver JVM Framework...

13. August 2019

Aktualisiert...

7. Juli 2019

OverOps?...

Cool ist das Hello World Beispiel winking smiley

Tschüss Google

5. Juli 2019

Mehr Dampf im Netz unter NFS...

😱

5. Juli 2019

Neue Kamera...
Ich habe mir vor ein paar Monaten eine neue (gebrauchte) Kamera gegönnt, eine Canon 6D Vollformat. Ist nicht viel schwerer als meine gute alte Canon 700D. Aber die kann Bilder machen, da hätte die alte schon aufgegeben. Und gerade im schummerigen Bereich mit RAW ist noch eine Menge zu holen.

Meine brauchbaren Objektive mal in der Gengenüberstellung Brennweite zu Blende

mm24-105mm EF40mm EF
BrennweiteBlende (Tele)Blende (Turnschuhzoom)
10 
12 
16 
18 
19 
243,5
254,0
304,0
364,0
374,5
404,52,8
414,5
484,5
495,0
605,0
615,6
705,6
715,6
1055,6
135 

Ich würde sagen, da müssen ein paar neue Objektive her. Das 24-105mm ist für Vollformat und macht einen guten Eindruck, das Pancake ist am Vollformat nicht so der Brüller, da muss ein Nifty Fifty 50mm f1,4 her.

Sonst, ist halt kein Rotring (Canon 24-70mm f2,8 für ~2k €) oder (Canon 16-35mm f2,8 für ~2k €)

Mal sehen, was der nächste Urlaub so (an Bildern) hergibt. Berge, Landschaft und Vollformat gehören ja zusammen, wie ich an vielen Stellen gelesen habe.

1. Juli 2019

Verpennt...
Da habe ich es glatt vergessen, rechtzeitig das Lets Crypt Zertifikat zu erneuern. War ich heute morgen doch off-line. So ein Mist. Jetzt geht alles wieder. Also doch ein Cron-Job, der einmal alle 3 Monate nachschaut und versucht ein neues Zertifikat zu erstellen.

Schande über mein Haupt.

BTW: Am Abend noch gemacht, geht alles wieder.

29. Juni 2019

Track this...

25. Juni 2019

VirtualBox Platten (VDI) verkleinern...

Früher war es ein Akt, da musste die Platte selbst kopiert werden, mittlerweile gibt es einen Befehl dazu.

14. Juni 2019

DropWizard Tutorial...

13. Juni 2019

OpenJDK für Docker...
Wem alles egal ist, verwendet einfach ein "FROM openjdk:11.0.3-jdk-slim-stretch" in seinem Dockerfile. Damit lassen sich dann Java Programme im Docker-Container starten.

Mich wunderte nur, warum es kein Alpine Linux für OpenJDK gibt, gerade weil das gute Teil mal eben ca. 377.4mb auf der Platte belegt.

Durch diesen Blog von Matthew Gilliard weiß ich jetzt, das nicht unbedingt eine gute Idee ist blind einfach ein Alpine Linux im Docker mit einer JDK zu verwenden.

Ok es gibt Alternativen, wenn man es weiß worauf man sich einlässt. AdoptOpenJDK ist so eine Alternative.

Da im Docker meistens die Programme nur ausgeführt werden sollen, aber nicht gebaut, reicht es eine Java Runtime Edition zu verwenden. Kurz JRE, leider wurde der offizielle Port für JREs eingestellt. Man könnte es sich mittels neue Java Module selbst bauen... Ist mir zu kompliziert. Außerdem haben es findige Entwickler schon gemacht.

Jetzt kann man auch noch die Java-VM wählen hier kann zwischen Hotspot und OpenJ9 gewählt werden.

Was hier besser sein soll kann ich noch nicht sagen.

VM

OpenJ9

Implementiert von IBM

Memory verbrauch

217.1mb

Der reine Docker-Container ohne JAR File (Wert Portainer entnommen)

Startup Zeit

7.2s

Ein einfacher Microservice mit DropWizard org.eclipse.jetty.server.Server: Started @

VM

Hotspot

Implementiert von Oracle

Memory verbrauch

223.5mb

Der reine Docker-Container ohne JAR File (Wert Portainer entnommen)

Startup Zeit

5.3s

Ein einfacher Microservice mit DropWizard org.eclipse.jetty.server.Server: Started @

13. Juni 2019

Unix Tipp...

 nc -zvv moon64.linux.bogus 3308
 Connection to moon64.linux.bogus 3308 port [tcp/tns-server] succeeded!

Lauscher für beliebige TCP/UDP Verbindungen.

-z Nur nach empfangsbereiten Daemons suchen, ganz hilfreich um zu sehen ob eine Verbindung zu einem anderen Rechner auch wirklich funktioniert. -v be Verbose

Das Programm kann auch wie Telnet mit anderen Servern in Verbindung treten.

7. Juni 2019

phpinfo() vergleichen...
Es ist ja schön, das es eine gigantische Ausgabe an Einstellungen per PHP gibt, aber wenn man 2 solche Ausgaben miteinander Vergleichen möchte, ist man am sog. A...

Dafür gibt es aber auch etwas, statt `phpinfo()` einfach `var_dump(ini_get_all())` verwenden, beide Seiten öffnen, den gezeigten Daten-Wust in einen Texteditor der eigenen Wahl kopieren und M-x ediff-buffers* tippern, voilá es gibt eine Differenz.

  • ) Ok, der Editor meiner Wahl ist grundsätzlich der Emacs und der kann 2 Dateien einfach vergleichen.

31. Mai 2019

HP Laptop Bios...
beim Booten mehrfach ESC drücken, dann kommt man ins sog. Startup Menu...

  • F1 System information
  • F2 System Diagnostics
  • F9 Boot Device Options
  • F10 BIOS Setup
  • F11 System Recovery

27. Mai 2019

Apache und Angular Routen...
https://gist.github.com/julianpoemp/bcf277cb56d2420cc53ec630a04a3566

Zusätzlich sollte man im Apachen im gewünschten Directory setzen:

 AllowOverride All
 DirectoryIndex index.html

Sonst könnte es sein, das der Apache das Routen nicht richtig verwaltet.

26. Mai 2019

19.03 ist drauf...

  • 👀 erstmal das neue Feature ausprobieren (Windows-Punkt), ist echt praktisch. 😎

23. Mai 2019

Lesen...
* https://www.thegeekstuff.com/

Wer mit npm zu tun hat und mal sehen möchte wie die Abhängigkeiten von einigen Paketen sind: https://npm.anvaka.com/ und jetzt trage man mal "karma" ein, oder "protractor" oder "@angular/compiler-cli" wer glaubt das sei viel "@angular-devkit/build-angular" und ja, das wird alles in einem Projekt gebraucht. Es leben die Abhängigkeiten...

22. Mai 2019

TODO: hier nachtragen, was ich mit docker geschafft habe...
Schreibfaulheit...

16. Mai 2019

Einmal Apache werden...

 su -s /bin/bash apache

Schon ist man Apache, obwohl es eigentlich nicht erwünscht ist Apache zu werden. Nicht umsonst steht in der /etc/passwd ein /sbin/nologin als Login Shell drin.

10. Mai 2019

Java 8 als Openbook...

Vom Author des Buches: Java ist auch eine Insel daumen hoch!

9. Mai 2019

Ach so tolle Tools... in der Firma pflegen wir eine Liste, die werde ich hier mal größten teils kopieren grinning smiley

8. Mai 2019

USB-Drive unter Windows 10 will nicht...
Hier mal eine blinde Zusammenstellung, was Google ausgespukt hat. Mal sehen, was dann wirklich hilft.

23. April 2019

Angular 7...

17. April 2019

Interessante Seite...
Liste betrügerischer Online-Shops

Danke an den, der das pflegt.

14. April 2019

DoH in Firefox...
"Unter Firefox – Einstellungen – Verbindunsgeinstellungen trägt man als DoH-Server https://doh.securedns.eu/dns-query oder https://ads-doh.securedns.eu/dns-query ein." " Erst die TRR-Einstellung 3, die man über about:config und network.trr.mode eingeben kann, sorgt dafür, dass der angegebene DoH-DNS-Server immer genutzt wird. Damit das funktioniert, muss man unter network.trr-bootstrapAddress noch die IP-Adresse des DNS-Servers mit DoH-Support (146.185.167.43) eingetragen werden." Quelle: ZDnet

3. April 2019

Coding Golf...

3. April 2019

openssh...
https ist etwas feines, man glaubt, man sei geschützt...

Wie es wirklich arbeitet:

2. April 2019

Lucene...

29. März 2019

Java Buch im Blog...

23. März 2019

AirPrint mit cups...
Da hat man ein schönes iPad, kann aber nicht drucken. Soll aber gehen über AirPrint

Es wird das Paket AVAHI benötigt, da ich schon über Cups drucken kann einfach installieren.

 emerge --ask avahi

Und das Script airprint-generate.py von tjfontaine in der aktuellen Version

 mkdir -p /opt/airprint
 cd /opt/airprint
 git clone https://github.com/tjfontaine/airprint-generate

leider benötigt das Script noch Python 2, also die Datei airprint-generate.py im Editor öffnen und den Shebang anpassen. Das ist die 1. Zeile mit dem '#!' das ersetzen wir durch '#!/usr/bin/python2'

 ./airprint-generate.py 

Erstellt für alle über Cups bereitgestellten Drucker sog. AirPrint Services, die nach /etc/avahi/services verschoben werden müssen.

 mv AirPrint-*.service /etc/avahi/services

Jetzt das Script nochmal aufrufen

 ./airprint-generate.py -d /etc/avahi/services

Dann den avahi-Service und cups neu starten

 /etc/init.d/avahi-daemon restart
 /etc/init.d/cupsd restart

Und schon ist der eigene Drucker über AirPrint zu finden und kann benutzt werden. Bei Lisas iPad war der Drucker nicht sichtbar, Sie war mal wieder im Gast-Netzwerk unterwegs und dort ist Drucken nicht möglich.

22. März 2019

curl und pretty printer

Kurz, die Ausgabe von curl wird per Pipe an jq gesendet

18. März 2019

Ansible...

5. März 2019

...

27. Februar 2019

Manchmal bekommt man einen Föhn...

Hilft hoffentlich.

26. Februar 2019

http components...

Das Gegenstück

Vielleicht hilft das hier

25. Februar 2019

Developer Informationen an einem Ort...

21. Februar 2019

Gitlab CI...
Hier trage ich erstmal ein paar Dokuseiten zusammen, um gitlab-CI zu verstehen.

gitlab-ci

Ich merke es immer wieder, wie unfähig die meisten sind eine poppelig einfache Dokumentation zu schreiben, die man mal kurz überfliegt und dann selbst merkt, das ist ja cool, das ist ja einfach und ich will mehr.

Es gibt leider kein hello world sample für Gitlab CI.

13. Februar 2019

Logfiles...
Logfiles werden meist mit Infos zugemüllt und meist werden die Dateien sehr lang.

 less +G <logfile>

öffnet die Datei jetzt von hinten. Um jetzt rückwärts zu suchen '?' und dann direkt den Text. Zum nächsten gesuchten Value (rückwärts) geht es mit 'n' für next.

Und ja, es gibt auch Tools wie Splunk, ... aber das ist hier nicht gewollt.

Wann wurde ein Prozess gestartet...

 ps -eo pid,lstart,cmd  # Formatiert die Ausgabe von ps, mit Process-ID, Startzeit und den Start-Command

ggf. noch nach der pid greppen, damit die Ausgabe nicht abgeschnitten wird.

12. Februar 2019

Freiwillige vor...
Wer traut sich das in einer Bash zu starten?

  1. :(){ :|:& };:

Ist die fork Bombe.

11. Februar 2019

''Einfach zu viele Kerne?...
Ein Kollege hat ein neuen Laptop bekommen mit Intel Xeon E-2176M Prozessor, 64GB RAM und was sonst noch das Herz begehrt. Was liegt also näher als einen kurzen Benchmarklauf zu starten und die Werte in unsere schön gepflegte Tabelle einzutragen. Leider scheint dieser Prozessor zu viele Kerne zu besitzen, jedenfalls gibt der Multicore Test gleich den Geist auf. Schade, das heißt wohl auch von diesem Benchmark abschied zu nehmen. Sign...

Ist zwar schon etwas älter, aber immer noch gut zu lesen und zu empfehlen.

3. Februar 2019

DNS over HTTPS...
Schöne Anleitung, wie das in Firefox zu aktivieren ist.

Weitere freie DoH Server

Ob es funktioniert: In Firefox folgendes in die Adresszeile tippern: about:networking#dns steht dann in der Spalte trr ein true, klappt es mit DoH.

23. Januar 2019

GNOME in OpenRC Gentoo

22. Januar 2019

Dockern...

21. Januar 2019

Password gefällig...

15. Januar 2019

Netdata...
Gerade in der aktuellen c't gelesen über netdata einem Real-time performance monitoring für meinen Server. Schnell mal aufgesetzt und zum laufen gebracht. Ist der Hammer, was da alles an Infos gehalten wird. Voll krass

13. Januar 2019

WD Elements Desktop 4TB mit Standby...
Es stört mich, das die Platte sich ständig runter fährt. Mit hdparm ist da aber nichts zu holen. sdparm ist mein Freund.

 sdparm --clear=STANDBY <device>

hilft aber. (Hoffentlich)

11. Januar 2019

Bash history...

Endlich mal wieder einen geilen Tipp gefunden.

9. Januar 2019

java 11 kann java Sourcen ausführen...

Man erstelle sich eine Datei HelloWorld.java mit folgendem Inhalt:

 public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }   
 }

und speichere diese Datei. Jetzt lässt sich diese Datei in der Konsole sofort ausführen, ohne erst den Compiler anzuwerfen. Damit ist es noch einfacher Java zu lernen.

 java HelloWorld.java

5. Januar 2019

Admin wider willen...
Beim Nachbarn versucht einen 300€ Kopfhörer von Beats mit dem Handy (Samsung S5 mini) per Bluetooth zu verbinden, klappt nicht. Erst wenn WLAN aus und Flugzeugmodus an ist, hat es geklappt. Das soll einer verstehen.

Ich sag ja, Samsung, nie wieder.

Mit meinen Motorola Z2 Play klappte es sofort.

3. Januar 2019

Text to ASCII Art Generator...

2. Januar 2019

Nix Springboot, Dropwizard...

1. Januar 2019

Serveranpassungen #2...
Den Server habe ich letztes Jahr (gestern) umgestellt auf nathan.to aber ich hatte vergessen ihn richtig in der Fritzbox einzutragen, so das ein IP update auch ein Server update nach sich zieht. Jetzt stimmt es wieder, der nächste Wechsel kann kommen (morgen früh um 3:45Uhr)

Wer keine Arbeit hat, macht sich welche...

Wer weiterhin Lust hat in alten Informationen zu stöbern sei hier eingeladen meine alten Blogs zu lesen.

Die älteren KommentareBlogs möge man hier suchen...

Frische Änderungen (All) | Edit SideBar Zuletzt geändert am 05.11.2019 21:30 Uhr Seite Bearbeiten | Seitenhistorie
Powered by PmWiki