Allgemein
Knowledge Base
- Neue Struktur (In Arbeit)
- Computertechnisches
Community
Privat
![]() | ||
Archiv: 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 |
|
Hier findet Mann (Frau vielleicht auch) Information und ggf. Sorgen bzw. | ||
Fragen? Keine! Gut so, weitermachen. |
Oro, mein Riechfläschchen! |
Kölner Phonetik... wtf...
Wer immer schon mal versucht hat Herr "Mayr" mit Herr "Meier" zu suchen, das ist gar nicht so einfach, es sei den man kennt einen etwas älteren phonetischen Algorithmus (von 1969) Kölner Phonetik.
Damit kann man zusätzlich prüfen, ob 2 Namen evtl. gleich klingen. Mayr wird die Nummer "67" zugewiesen und Meier übrigens auch.
Krass...
Google API sucks...
Wat für ein
mindestens noch 5min warten, dann klappt es.
PHP Sucks...
Endlich mal jemand, der den ganzen PHP Irrsinn runter geschrieben hat.
Ok, ich verspreche hoch und heilig, ich werde jetzt auch (Monty-)Python lernen...
Wenn ich mit meinem aktuellen 8-Bit-Test Geraffel durch bin. Ich spiele @home gerade mit dem Atari800-Emulator und meinem neuen Spielzeug, Dateien in diesen Emulator zu kippen, rum. Macht Spaß. Ich wusste gar nicht mehr, wie extrem lahm der Atari 8bit war (1.79MHz). Aber man kann den Emulator im Turbo-Modus betreiben, dann ist er "bei mir" ca. 200x schneller, ja 200 mal mehr Power. Nur hat man nichts davon, weil der Atari dann absolut unbrauchbar ist, Eingaben sind nicht mehr möglich, jedenfalls einzelnen Tastendrücke nicht. Trotzdem finde ich es witzig was mit so alter Hardware (1983 hatte ich mir den Atari 600XL gekauft) doch alles möglich war, auch wenn diese jetzt emuliert wird. Ok, die Texte schreibe ich im Emacs und starte dann immer frisch den Emulator, weil es einfach schneller geht, es ist ein primitives Sichtgerät.
schon wieder Sicherheitswarnung zu Ihrem Internetzugang...
Ich habe die selbe nichtssagende Warnung schon wieder erhalten, ja ich will ja den HAProxy? installieren, allein die Zeit fehlt mir.
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...
Endlich mal eine Sprache, die keiner versteht...
+[--->++<]>.+++[->++++<]>+.+++++++++++++.+.+.+++[->+++<]>.+++.+++++++++++.+.[---->+<]>+++.++[->++<]>.[----->+<]>+.-[---->+<]>+++.+[->+++<]>++.+++.--[--->+<]>--.+[----->+<]>+.-----.------.+++++.++++++++++++.[++>---<]>.
Retrogames...
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.
Linkliste...
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.
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:
Paranoide Einstellungen für den Linux Kernel...
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...
DropWizard...
Reaktiv...
ACI???...
Ich werde alt...
Anderes Microserver JVM Framework...
Aktualisiert...
Cool ist das Hello World Beispiel
Tschüss Google
Mehr Dampf im Netz unter NFS...
😱
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
mm | 24-105mm EF | 40mm EF |
---|---|---|
Brennweite | Blende (Tele) | Blende (Turnschuhzoom) |
10 | ||
12 | ||
16 | ||
18 | ||
19 | ||
24 | 3,5 | |
25 | 4,0 | |
30 | 4,0 | |
36 | 4,0 | |
37 | 4,5 | |
40 | 4,5 | 2,8 |
41 | 4,5 | |
48 | 4,5 | |
49 | 5,0 | |
60 | 5,0 | |
61 | 5,6 | |
70 | 5,6 | |
71 | 5,6 | |
105 | 5,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.
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.
Track this...
VirtualBox Platten (VDI) verkleinern...
Früher war es ein Akt, da musste die Platte selbst kopiert werden, mittlerweile gibt es einen Befehl dazu.
DropWizard Tutorial...
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 @ |
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.
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.
HP Laptop Bios...
beim Booten mehrfach ESC drücken, dann kommt man ins sog. Startup Menu...
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.
19.03 ist drauf...
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...
TODO: hier nachtragen, was ich mit docker geschafft habe...
Schreibfaulheit...
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.
Java 8 als Openbook...
Vom Author des Buches: Java ist auch eine Insel
Ach so tolle Tools... in der Firma pflegen wir eine Liste, die werde ich hier mal größten teils kopieren
USB-Drive unter Windows 10 will nicht...
Hier mal eine blinde Zusammenstellung, was Google ausgespukt hat. Mal sehen, was dann wirklich hilft.
Angular 7...
Interessante Seite...
Liste betrügerischer Online-Shops
Danke an den, der das pflegt.
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
Coding Golf...
openssh...
https ist etwas feines, man glaubt, man sei geschützt...
Wie es wirklich arbeitet:
Lucene...
Java Buch im Blog...
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.
[Update-2022]
Mittlerweile ist das Script für Python 3 angepasst. Aber die anderen Schritte bleiben. Wer cupsd aktualisiert muss diese evtl. wieder ausführen. Aber danach geht AirPrint? dann auch wieder. Top!
curl und pretty printer
Kurz, die Ausgabe von curl wird per Pipe an jq gesendet
Ansible...
...
Manchmal bekommt man einen Föhn...
Hilft hoffentlich.
http components...
Das Gegenstück
Vielleicht hilft das hier
Developer Informationen an einem Ort...
Gitlab CI...
Hier trage ich erstmal ein paar Dokuseiten zusammen, um gitlab-CI zu verstehen.
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.
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.
Freiwillige vor...
Wer traut sich das in einer Bash zu starten?
Ist die fork Bombe.
''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.
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.
GNOME in OpenRC Gentoo
Dockern...
Password gefällig...
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
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)
Bash history...
Endlich mal wieder einen geilen Tipp gefunden.
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
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.
Text to ASCII Art Generator...
Nix Springboot, Dropwizard...
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...