Das Cordova-Image, das ich bisher verwende, muss ich ja sowieso innerhalb des Docker-Containers noch anpassen und da macht es Sinn, dass gleich in das Build-Skript auszulagern.
Monat: Januar 2021
Speed oder nicht?
Eben kam meine neue externe SSD an (eine Samsung MU-PA1T0B/EU Portable SSD T5 1 TB), die gerade in einer Preisaktion herunter gesetzt war und in allen mir verfügbaren Quellen sehr gute Bewertungen herum hat. Ich habe die Zeit von der Bestellung bis eben genutzt und einmal meine drei Standard-PC mit deren ganzen Datenträger mit CrystalDiskMark getestet. Schon interessant, welche Messwerte da rauskommen. Diese weichen zwar bei mehreren Messungen immer wieder etwas ab, aber der Grundrange ist immer ähnlich.
Das Programm testet sowohl sequenziell als auch per Random-Verfahren die Lese- und Schreibgeschwindigkeiten. Natürlich sind die sequenziellen Zugriff erheblich performanter und die Maximalwerte können damit auch nur da erreicht werden. Aber interessanter sind eigentlich die Random-Zugriffe, weil die m.E. in der Praxis häufiger vorkommen (gerade bei fragmentierten Datenträgern).
Bei meiner Workstation hat die SSD ganz gute Werte – die Hardware ist ja auch schon etwas betagt. Sowohl beim Lesen und Schreiben gibt es sequenziell zwischen 520 – 550 MB/s in der Spitze. Aber auch die HDD, die ich zusätzlich als Datengrab in der Workstation habe, kommt beim sequenziellen Lesen auf über 200 MB/s und beim Schreiben noch auf 150 MB/s. Das ist wirklich nicht schnell, aber mehr als erwartet. Nur beim Random-Zugriff bricht die HDD extrem gegenüber der SSD ein. Das ist teils brutal. Da geht es um Faktoren zwischen 10x und 100x(!) langsamer als bei der SSD.
Beim Terra-Notebook, wo ich vor Jahren die interne HDD durch eine 1-TB-SDD ausgetauscht habe, beschränkt wohl die alte Hardware die Performance. Aber mit etwa 250 MB/s im Lese- als auch Schreibzugriff sind die Werte durchaus noch brauchbar. Vor allen Dingen für so eine uralte Kiste, die ich fast schon ausgemustert hätte, wenn ich damals nicht günstig die Austausch-SSD geschossen hätte. Die Zugriffe auf externe HDD am Terra-Notebook sind hingegen erwartungsgemäss grauenvoll langsam. Aber die dienen sowieso nur noch zu Backups und die sind nicht zeitkritisch.
Aber eigentlich geht es mir ja um mein Matebook, bei dem die neue externe SSD meine massiven Speicherplatzprobleme beseitigen soll. Bei dessen interner SSD ist mir beim Test die extreme Ungleichheit der Zugriffszeiten zwischen Lese- und Schreibzugriff aufgefallen. Bei allen anderen Datenträgern und Rechner ist der Lesezugriff zwar auch immer schneller, aber der Unterschied ist nicht so gravierend. Beim Matebook kam ich bei einer Messung beim sequenziellen Lesezugriff in der Spitze auf bis zu wahrhaft rasante 2350 MB/s, während es beim Schreiben nur ca. 300 MB/s waren. Nur bei einem Random-Zugriff ist der Lesezugriff sogar etwas langsamer als der vergleichbare Schreibzugriff. Da ist bei der internen SSD die Gewichtung aber extrem auf Lese-Performance gelegt worden.
Der Zugriff auf meine bisherige externe USB-Festplatte am Matebook war erwartungsgemäss nicht berauschend von der Performance. Insbesondere beim Schreiben und vor allen Dingen bei Random-Zugriffen, aber deshalb soll da ja die neue SSD zum Einsatz kommen.
Die neue Samsung MU-PA1T0B/EU Portable habe ich nun ausführlich an verschiedenen USB-Anschlüssen und mit oder ohne Adapter dazwischen getestet.
Zuerst hatte ich den Eindruck als würde der Anschluss eine Rolle spielen, denn meine erste Messung ergab die am USB-C-Anschluss im sequentiellen Lesezugriff ca 560 MB/s und im Schreibzugriff 373 MB/s. Alle andere Messung ergaben dahingegen in beide Richtungen etwa 450 – 460 MB/s. Also ausbalanciert und eine weitere Messung an dem ersten Anschluss haben auch da diese Werte ergeben. Die erste Messung war irgendwie ein Ausreisser.
Auf der Festplatte war auch eine spezielle Software von Samsung vorhanden, die ich dann auch mal installiert habe. Die ist hauptsächlich zur Verschlüsselung der SSD und das brauche ich nicht. Aber ich wollte sehen, ob die Installation der Software die Performance ändert. War nicht der Fall und da bereits die Installation der Software mit einer unverschämten Frage genervt hat, ob ich in einem Land mit DSGVO wohne (was Samsung einen Sch… angeht und absolut nichts mit der Hardware zu tun hat), habe die Software gleich wieder deinstalliert. Dazu habe ich die Platte formatiert und dann nochmal mit verschiedenen Dateisystemen getestet, was aber nichts an der Performance geändert. Aber der schöne Nebeneffekt sollte sein, dass die Samsung-Trojaner damit auch plattgemacht wurden. Diese elenden Spionageprogramme diverser Hardwarehersteller sind einfach eine Unverschämtheit, die Nutzern immer wieder untergejubelt werden soll.
Performance von SSD und HDD testen
Ich bin mit meinem Huawei Matebook sehr zufrieden. Nur ist die Festplatte einfach zu klein. Ich bin dermaßen am Limit, dass ich immer wieder Sachen löschen muss, wenn ich neue Daten oder Programme da benötige. Gerade aktuell musste ich wegen Cordova noch zusätzlich Visual Studio 2017 installieren und damit ist meine Festplatte jetzt nahezu dicht. Ich habe schon diverse Sachen deinstalliert und nur noch eine Auswahl meiner Daten auf der SSD.
Nun hänge ich sowieso immer wieder eine externe Festplatte per USB an. Das taugt für Daten ganz gut (etwa Videos, die ich für LinkedIn Learning einspiele). Aber da die Festplatte nicht einmal USB-3 unterstützt, ist das Auslagern von Programmen auf die Festplatte nur suboptimal und auch bei großen Datenmengen dauert das Laden und Schreiben mir zu lange. Deshalb habe ich mir eine externe SSD mit USB-3/Thunderbold-Anschluss bestellt. Darauf sollte auch das Installieren von Programmen Sinn machen. Gerade portable Versionen werde ich darauf auslagern.
Um aber überhaupt einmal mitzubekommen, wie groß die Unterschiede beim Lesen und Schreiben sind, habe ich mir gerade das Programm CrystalDiskMark geladen. Aber im Grunde kann man die Performance von Datenträgern auch mit Windows-Bordmitteln testen.
In einer Admin-Console oder der Powershell kann die Tests ausführen:
winsat disk -seq -read -drive x winsat disk -seq -write -drive x
winsat disk -ran -read -drive x winsat disk -ran -write -drive x
Das werde ich mal auf meinen Rechnern durchspielen – sowohl auf die fest verbauten SSD und HDD als auch die externen Ressourcen an verschiedenen Anschlüssen.
Ghana als Vorbild für unsere Gesundheitsämter – keine Satire
Da die Nachverfolgung infizierter Corona-Kranker in den deutschen Gesundheitsämter extrem schlecht ist, gibt es mittlerweile interessante Länder als Vorbilder, wie man es richtig macht. Während in Deutschland in Behörden noch mit Fax und teils handschriftlicher (!!) Erfassung von Daten gearbeitet wird und – falls doch IT zum Einsatz kommt – jedes Bundesland bis teils nach ganz unten zu verschiedenen Behörden mit unterschiedlicher Software (teils selbstgestrickt) arbeitet, wurde im ZDF Ghana (ab 12:30 im Video der Mediathek) als Vorbild vorgestellt. Zusammen mit anderen Ländern in Zentralafrika bekommen die Leute und Behörden da die Nachverfolgung von Epidemien seit vielen Jahren bereits perfekt in Griff.
Da sieht man, wie es IT-Technisch um Deutschland steht. Vor allen Dingen in Behörden :-(.
Noch abstruser – Ghana arbeitet zur Verfolgung Erkrankter mit einer Software aus Deutschland (was etwas optimistisch stimmt, dass zumindest die IT-Fachbrance auf internationalem Niveau ist). Aber die bekommen die deutschen Gesundsheitsämter nicht gebacken.
Mc Cordova
Eigentlich wollte ich den Post mit „Mc Docker“ betiteln, aber tatsächlich läuft Docker auf meinem iMac Mini nicht. Was aber daran liegt, dass der iMac Mini verdammt alt ist und nur macOS 10.12 als Betriebssystem hat. Wenn ich nicht ganz falsch liege, verträgt der auch gar kein Update auf eine neuere Version von macOS. Und Docker braucht mindestens die Version 10.13. Was nach nicht Viel klingt, aber wohl entscheidend ist. Aber das trifft auch auf andere Software zu, wie ich gerade beim Versuch des Installierens eines Screenshot-Programms bemerkt habe. Für diverse neue Apple-Programme benötigt es wohl diese Version 10.13 als untere Grenze und da kann ich den iMac Mini anscheinend nicht mehr drüber hiefen. Was nicht schlimm ist, denn außer für die Remoteproben mit meiner Band über JamKazam benutze ich den iMac Mini sowieso nicht. Maximal für die Erstellung von iOS-Apps, wenn es dessen außnahmsweise mal wieder bedarf.
Und Cordova hat sich ohne Probleme installieren lassen und läuft „Out-of-the-box“. Bis hin Aktualisieren mit npm und dem Start der App im Simulator geht das wie ein heißes Messer durch die Butter. Damit ist von Seiten der Infrastruktur alles vorbereitet für die kommende Vorlesung zu Cordova im kommenden Sommersemster an der TH Bingen – sofern ich da überhaupt auf den Mac wechseln muss. Auf meinem Linux-Rechner geht Cordova sowieso und unter Windows kann ich mit Visual Studio 2017 oder dem von mir angepassten Docker-Image in meinen Linux-VMs auch gut arbeiten. Also sind auch da alle Voraussetzungen geschaffen.
Wobei gestern die Installation von Docker auf meinem uralten Terra-Notebook mit Windows 10 Pro sogar funktioniert hat und auch das Cordova-Image im zweiten Anlauf installiert und dann sauber gestartet wurde. Heute morgen wollte ich dann frohgemut das Docker-Image anpassen, aber ich hatte nach dem Start von dem Terra-Notebook die gleichen Fehler, die ich schon auf meiner Workstation mit Windows 10 Pro bzw. meinem Mate-Notebook mit Windows 10 Home hatte. Aber interessanter Weise hat auf dem Terra-Notebook der Neustart von Rechner und Docker das Problem beseitigt und ich konnte das Cordova-Image starten und umkonfigurieren. Das ist schon alles sehr rätselhaft.
Der letzte Nagel hat gehalten
Die externe Festplatte in meinem Eppsteiner Büro hatte tatsächlich noch alle Daten, die auf sämtlichen anderen Systemen weg waren. Das waren wie schon gepostet zwar nur archivierte Einsendeaufgaben und Fachfragen, die ich vermutlich nie wieder ansehen muss. Aber dennoch bin ich froh, dass die letzte Mauer in meinem Datensicherungskonzept gehalten hat. Man sieht mal wieder, dass ein eingefrorener, sicherer Stand unabdingbar ist. Jetzt muss ich meinen Denkfehler in den Syncronisierungsskripten der anderen Systeme noch finden und die Gesichte ist ohne Verluste von der Bühne.
Docker und Windows – nicht wirklich prickelnd
Je mehr ich mich mit Docker beschäftige, desto mehr macht mir die Sache Spaß. Docker ist verdammt interessant und ich sehe für mich da wirklich einige Anwendungen – auch über Cordova hinaus.
Ich werde das Docker-Thema auf jeden Fall vertiefen und wohl auch mein Cordova-Training bei LinkedIn Learning (LiL) dahingehend auf Stand bringen. In meiner Linux-VM habe ich jetzt das Cordova-Image soweit aktualisiert, angepasst und erweitert, dass das Kompilieren einer Android-App sauber durchgeht. Das war ja das ursprüngliche Ziel, warum ich mich wieder mit Docker beschäftigt habe.
Aber unter Windows bekomme ich Docker einfach nicht vernünftig zum Laufen. Ich habe den Standard-Docker-Desktop installiert und Docker läuft im Grunde auch unter Windows. Aber ich kann kein Image laden und nicht einmal den beiliegenden Testcontainer starten. Weder auf meiner Workstation mit Windows 10 Pro noch meinem Mate-Notebook mit Windows 10 Home. Die meisten Fehler deuten darauf hin, dass die Docker-Engine nicht gefunden wird (sowas open \\.\pipe\docker_engine_linux), Rechteprobleme oder das Image nicht geladen werden kann. Fängt man an zu schrauben, gibt es auch leicht Probleme mit dem Daemon etc.
Im Internet findet man zu den Problemen gut 30 – 40 verschiedene Lösungsvorschläge. Leider nur die klassischen Ideen, auf die man auch selbst kommt. So etwas wie
- Neustart von Daemon, Console, Rechner etc.,
- Admin-Rechte nutzen,
- an Hyper-V und WLS2 rumdrehen,
- Firewall konfigurieren,
- mit net stop und net start den Service neu starten,
- die Powershell statt der normalen Konsole verwenden bis hin
- zur Neuinstallation von Docker.
Also reine Standardware bzw. die üblichen Tipps, die bei mir nicht den geringsten Erfolg gebracht haben.
Nun kam aber das Komische. Auf meinem alten Notebook – auch mit Windows 10 Pro – läuft Docker. Keine Ahnung warum. Sehr seltsam … – aber ich werde auch da dann mal das Cordova-Image versuchen zu installieren. Es scheint im Moment zu laden, aber im ersten Versuch gab es schon nach einer Weile einen Abbruch :-(.
Ich werde Docker wohl morgen auf meinem iMac testen, aber ich gehe davon aus, dass ich auch da keine Probleme bekomme. Ist ja die gleiche Basis wie Linux.
Vorteile und Graus der Virtualisierung – Docker & Co
Da ich für das kommende Sommersemester an der Technischen Hochschule Bingen wieder einen Lehrauftrag zum Thema Cordova und plattformneutrale App-Entwicklung angenommen und gerade Zeit für die Vorbereitung habe, habe ich die letzten Tage in den aktuellen Stand von Cordova reingeschaut und meine alten Projekte und Matrialien zusammengetragen. Ich hatte dieses Thema eine ganze Weile schleifen lassen, da Python, Big Data, Web-Programmierung, Cobol, C# & „Was auch sonst immer“ die Arbeit in eine andere Richtung gelenkt hatten.
Die meisten Dinge, die ich die vergangenen Jahre zusammengestellt und programmiert habe, sind jedoch noch weitgehend auf Stand. Allerdings haben sich auch durchaus Sachen geändert. Daher bedarf die neue Vorlesung einiger Vorbereitung und eine Anpassung.
Zudem habe ich auch ganz einfach Lust, meine ganzen Apps zu aktualisieren. Parallel will ich aus einigen Apps Python-Programme machen. Ohne konkrete Ziele, aber vielleicht kommen mir dabei ein paar neue Ideen und ich lerne natürlich was dazu – auch wenn das im Grunde aktuell ein reines Programmieren aufgrund von Zeit und Lust darstellt.
Anyway – bei Cordova gibt es ein paar Sachen, die mich schon stutzig gemacht und zu einigen Arbeiten im Hintergrund sowie grundsätzlichen Überlegungen genötigt haben. Das reine Installieren der neuen Version von Cordova mit npm geht wie gehabt und das Erstellen von Cordova-Projekten in dem Cordova-CLI auch. Ebenso das Hinzufügen der verschiedenen Plattformen und das Ausführen in dem Browser-Emulator ist unverändert. Die eigentlichen Quellcodes auf Basis von JavaScript & Co sowieso.
Aber wenn man etwa beim konkreten Kompilieren Android als Plattform für die Cordova-Apps haben will, wird das JDK 8 vorausgesetzt. Im Moment ist aber schon das JDK 15 aktuell und damit funktioniert es nicht. Zumindest bekomme ich es im Moment nicht hin, mit der derzeit aktuellen Java-Version Android-Apps zu erstellen. Ehrlich gesagt ist mir nicht einmal klar, ob das an Android (da soll ja Java auch sukzessive abgelöst werden) oder Cordova liegt. Wie angedeutet, habe ich die App-Entwicklung eine Weile aus den Augen verloren.
Und dann hatte ich das Android Studio bzw. das Android SDK als auch Xcode komplett von meinen Rechnern gelöscht, da ich eben das Entwickeln für Android und iOS die letzte Zeit nicht gebraucht hatte. Zumal ich mich sowieso auch dabei auf das Visual Studio committed hatte. Dabei kann man ja wunderbar auch Android- bzw. iOS-Apps erstellen.
Aber um die verschiedenen Möglichkeiten im Vorfeld der Vorlesung mal wieder auszutesten, werde ich auf meinem Mac vermutlich Xcode neu installieren (wenn ich die Sache mit meiner Apple-ID geklärt habe – die habe ich auslaufen lassen) und das Android Studio habe ich mittlerweile wieder neu installiert.
Aber irgendwie hat es bei meinem ersten naiven Versuch nicht funktioniert, damit Cordova-Projekte zu öffnen – oder besser – zum Laufen zu bringen. Irgendwie mag ich das Android Studio aber auch nicht wirklich. Ich sollte der Sache zwar auf den Grund gehen, aber ich werde ja sowieso Visual Studio nehmen.
Wobei es da auch ein seltsames Problem gibt. In Visual Studio 2019 ist die Erweiterung für Cordova nicht mehr dabei und damit kann man weder Cordova-Projekte anlegen noch vorhandene Cordova-Projekte öffnen. Also musste ich die schon gelöschte Version 2017 von Visual Studio mit der Cordova-Erweiterung wieder auf meine Rechner aufspielen. Damit geht aber alles wunderbar und ich habe mittlerweile diverse Cordova-Apps erstellt, aus Visual Studio in verschiedenen Emulatoren sowie per USB-Debugging sogar direkt auf mehreren Geräten ausgeführt. Auch die Installation auf ein paar Testgeräten funktioniert problemlos. Seltsam sind die Begleiterscheinungen jedoch schon und ich bin nicht sicher, ob Cordova noch lange auf dem Markt bleibt. Was Cordova aber nicht als gute Basis für die kommende Vorlesung diskreditiert, um grundsätzlich die Erstellung von plattformneutralen Apps auf Basis von Webtechnologien zu lernen. Denn im Umfeld von Xamarin sind die gleichen Bedingungen/Probleme vorzufinden. Die Frage ist also wohl eher, ob Apps auf Basis von Webtechnologien sich auf Dauer etablieren oder nicht?
Wie dem auch sei – ich habe eigentlich keine Lust, das alte JDK 8 auf meine Rechner zu installieren und auch nicht die ganzen Emulatoren und SDKs von Android Studio auf Teufel komm raus zu konfigurieren. Entweder es geht „out-of-the-box“ wie bei Visual Studio 2017 oder die Sache kann mir im Grunde gestohlen bleiben. Es geht mir um die eigentlich Programmierung innerhalb des Cordova-Wrappers mit JavaScript und HTML/CSS und nicht um das Geraffel rundherum. Das hat mich schon immer an der App-Programmierung genervt.
Und da kam ich auf die Idee, eine andere Sache mal wieder aufzugreifen, die ich vor einigen Monaten angefangen, dann aber wegen anderer Dinge – wie so oft – beiseite gelegt habe: Docker.
Warum nicht einfach ein gut konfiguriertes Docker-Image für Cordova laden und dann ohne das ganze Installieren und Konfigurieren die Apps bauen? Das war meine Idee. Sollte doch einfach sein.
Und wie immer, wenn etwas auf den ersten Blick so einfach und logisch aussieht, steckt der Teufel im Detail. Genau genommen sind es in dem Fall sogar gleich mehrere Teufel gewesen.
Denn obwohl ich mich schon mit Docker beschäftigt und auch schon Images bzw. Container zum Laufen gebracht hatte, habe ich das Zeug zwischenzeitlich wieder von meinen Rechner gelöscht gehabt. Also musste ich Docker erst einmal „schnell“ installieren. Was (natürlich) wieder gar nicht schnell war und letztendlich sogar auf meinen Windows-Rechnern gescheitert ist. Weder unter Windows 10 Pro noch unter Windows 10 Home ist Docker bei mir richtig gelaufen. Natürlich kam ich bei den Problemen mit Windows 10 Pro sofort auf Hyper-V und diesen ganzen Virtualisierungs-Kram im Hintergrund von Windows, denn damit habe ich schon seit Jahren Ärger im Zusammenspiel mit VirtualBox und dem VMWare Player. Und auch wenn der VMWare Player ab der Version 16 wohl mit dem Hyper-V-Geraffel kann und auch Docker in Windows 10 Pro irgendwas mit Hyper-V macht und ich die Anleitungen für die ganzen Einstellungen umgesetzt habe, hat das Zeug irgendwelche Probleme mit den Rechten. Dazu kommt – bei Windows 10 Home gibt es ja kein Hyper-V und da muss man dann andere Sachen konfigurieren bzw. installieren. Alles doch ein elendes Gefuddel, was ich ja ausdrücklich vermeiden wollte und ich habe nach diversen Versuchen die Lust verloren.
Also auf meinen Linux-Rechner gewechselt, auf dem Docker erwartungsgemäß problemlos läuft. Zwischenzeitlich war ich auch in Eppstein und habe Docker mal auf meinem iMac getestet – auch keine Probleme. Also Docker sollte doch ein lohnenswerter Ansatz sein.
Aber dann bin ich auf das nächste blöde Problem gestoßen, erst einmal ein geeignetes Cordova-Image für Docker zu finden. Auf Git gibt es da was, aber der Git-Zugriff scheitert durch Rechteprobleme. Das Image scheint entweder gesperrt oder verschoben worden zu sein. Dann habe ich noch eine Anleitung gefunden, wie ich mir selbst ein Cordova-Image erstellen kann, aber das ist ja das Gegenteil von dem, was ich eigentlich wollte – keine Arbeit mit der blöden Konfiguration. Letztendlich habe ich nur ein Docker-Image gefunden, dass (angeblich) mit einem einfache Pull vom Docker Hub zu installieren wäre. Also so (vermutlich als root notwendig):
sudo docker pull beevelop/cordova:latest
Das Starten des Image soll dann einfach so funktionieren:
sudo docker run -it beevelop/cordova bash
Unter Windows habe ich wie gesagt Docker nicht stabil zum Laufen gebracht und das Image wurde angeblich nicht gefunden. Beim iMac muss ich es noch probieren, aber auf meinem Linux-Rechner ging der Pull einwandfrei. Bis 98% durch waren. Dann kam reproduzierbar immer wieder der Abbruch.
Mittlerweile war es Krieg – die Technik gegen mich. Oder umgekehrt. Und wenn etwas einfach nicht laufen will, werde ich zum Berserker. Auch wenn im Grunde alles Notwendige zur Vorlesung über Cordova mit Visual Studio bereit gestanden hat – ich lasse mich doch nicht von so einem Mist in die Knie zwingen.
Mein Mint Linux-Rechner ist noch in der Version 19 und das System wollte ich auch nicht verpfuschen. Von daher kam mir die Idee, meine Linux-VM (Mint Linux 20) unter Windows 10 zu verwenden. Nur konnte die plötzlich auf meiner Workstation mit VirtualBox nicht mehr gestartet werden und auch die Installation einer neuen Linux-VM ist gescheitert. Möglicherweise aufgrund der Hyper-V-Einstellungen und dem Kram, aber ich hatte einfach keinen Bock mehr auf das Gefummel. Also eine neue Version von VMWare-Player aufgespielt, dort eine Version von Mint-Linux 20 installiert und da ging dann der Pull des Docker-Images. Ohne Probleme. Wenn man „Von hinten durch das Auge“ wortwörtlich haben will, ist das diese Konstruktion – eine Virtualisierung in einer Virtualisierung.
Wer aber jetzt glaubt, die Sache wäre vorbei, täuscht sich. Denn in dem Cordova-Image war kein passendes JDK 8 dabei. Die Erstellung eines Cordova-Projekts ging damit problemlos, aber das geht ja auch in meiner normalen Cordova-CLI und damit bringt mich ein Docker-Image keinen Millimeter weiter. Als ich eine Android-App kompilieren wollte, war war auch im Docker-Container Schicht im Schacht.
Aber es war mittlerweile schon lange persönlich und jetzt wollte ich es durchziehen. Also in dem Docker-Container das JDK 8 nachinstalliert. Das geht so:
apt-get update && apt-get install -y openjdk-8-jdk && apt-get install -y ant && apt-get install -y gradle && apt-get clean
Unter Umständen tut ein Update der Zertifikate noch gut (bei mir nicht notwendig gewesen):
apt-get update && apt-get install ca-certificates-java && apt-get clean && update-ca-certificates -f
Und letztendlich müssen u.U. die Umgebungsvariablen gesetzt werden (bei mir auch nicht mehr notwendig gewesen):
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
oder
set JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
und dann:
export JAVA_HOME
Danach konnte ich endlich eine Android-App im Docker-Container kompilieren. Nur sind Docker-Systeme ja flüchtig und wenn der Docker-Container beendet wird, sind alle Änderungen samt der gespeicherten Daten weg. Also waren Snapshots des aktuellen Stands notwendig. Das geht aus einem zweiten Terminal heraus etwa so:
sudo docker commit -p 532a5b3584e8 container1
Dabei braucht man die ID oder den Namen des Docker-Containers.Bekommt man so:
sudo docker ps
Dann bekommt man was der Art angezeigt:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
532a5b3584e8 container1 „bash“ 19 minutes ago Up 19 minutes eloquent_liskov
Und dann muss die kompilierte App ja auch noch raus aus dem Docker-Container oder man muss was reinkopieren. Also stellte sich die Frage, wie man aus einem zweiten Terminal aus dem Clientsystem auf den Host rauskopiert oder umgekehrt? Das geht formal so (wieder mit sudo):
docker cp <SRC> <DEST>
Also konkret was der Art (in den Container):
sudo docker cp /home/ralph/Schreibtisch/www eloquent_liskov:/tmp/HalloWelt sudo docker cp /home/ralph/Schreibtisch/rjsedv.jks eloquent_liskov:/tmp/HalloWelt sudo docker cp /home/ralph/Schreibtisch/build.json 532a5b3584e8:/tmp/HalloWelt
Aus dem Container auf den Host geht für die generierte Android-App etwa so:
sudo docker cp eloquent_liskov:/tmp/HalloWelt/platforms/android/app/build/outputs/apk/debug/app-debug.apk /home/ralph/Schreibtisch
Die späteren Neustarts der Snapshots zeigten, dass noch (weitgehend) alle Daten waren und jetzt schien alles ok.
Pustekuchen. Denn auf meinem Notebook mit Windows 10 Home konnte der VMWare-Player die virtuelle Maschine nicht starten, die ich auf der Workstation erstellt hatte. Und ist auch beim Neuinstallieren eines Linux-Systems gescheitert. Irgendwas mit der Anzeige ging schief. Warum auch immer.
Also habe ich auf dem Notebook VirtualBox genommen, denn das ist dann dort im Gegensatz zum VMWare Player auch mit Linux als Clientsystem sauber gelaufen. In der damit erzeugten VM für Mint-Linux 20 das ganze Zeug mit Docker nochmal gemacht und das hat dann auch funktioniert.
Letztendlich hat das „Mal schnell“ zu gut einem vollen Tag Arbeit geführt, aber ungelöste Probleme lassen mir keine Ruhe und ich habe dabei vor allen Dingen wieder eine Menge gelernt. Vielleicht kann ich das neue Wissen ja nochmal brauchen.
Update: Irgendwann habe ich dann festgestellt, dass das Docker-Cordova-Image die Cordova-Version 9 verwendet hat und mittlerweile die Version 10 aktuell ist. Was im Grunde nicht schlimm ist, aber so kann man das dann im Container noch aktualisieren:
npm i -g cordova to update
Denkfehler in meiner Backup-Strategie
Durch den Corona-Lockdown muss ich jede Chance nutzen, um an die frische Luft zu kommen. Sonst komme ich ja gar nicht mehr aus dem Haus und ohne Frischluft bekomme ich Kopfschmerzen. Dann stehen entweder Joggen oder Radfahren an. Eben gab es wieder so eine Chance und ich bin trotz Nässe und Matsch – wenigstens sah es aber durch ein bisschen Schnee ganz nett aus – kurz mit dem Rad um die Ecken gedüst. Denn die Zeit war plötzlich da. Mein Arbeitsplan für heute morgen war hinfällig, denn ich habe irgendwo einen massiven Fehler in meiner Backupstrategie.
Zum zweiten Mal in den letzten Wochen waren Daten weg von den Kursen, die ich bei der ILS betreue. Nicht dramatisch, denn das waren nur erledigte Korrekturen und Fachfragen sowie PDFs, die ich mir jederzeit wieder laden kann. Aber dennoch archiviere ich die Sachen zur Sicherheit gerne. Und bei 5 von 8 Verzeichnissen waren auf einmal alle Daten weg, die nicht von dem Jahr 2021 waren. Natürlich habe ich meine Backups, die ich mit Synctoy synchronisiere, sofort durchsucht. Aber alle 4 Backups hier vor Ort waren synchron. Auch auf den NAS. So, wie es eigentlich sein soll, aber jetzt das Problem ist. Und in der Cloud habe ich die Dinge auch nicht gesichert, denn die sind wie gesagt nicht ganz so wichtig und der Speicherplatz in der Cloud mit anderen Daten zu.
Ich muss irgendeine Einstellung in Synctoy verdreht haben und das dringend finden. Wenn das bei wichtigen Daten passiert, sind alle Backups für die Tonne. Nun habe ich auf einer externen Festplatte einen alten Stand von Anfang 2020 gefunden und den kopiere ich gerade zurück. Was meine externe Festplatte, das NAS und mein Notebook blockiert und zu eingangs besagter Freizeit und der kleinen Radtour heute morgen geführt hat. Denn da müssen mehrere Gigabyte mit verdammt vielen kleinen Dateien hin- und hergeschoben werden und das dauert ein paar Stunden. Die Dateien aus dem Jahr 2020 sollte ich auch wiederfinden, denn ich habe dieses Jahr meine externe Datensicherung in Eppstein schon aktualisiert und da sollten die dann noch fehlenden Dateien drauf sein – wenn die Festplatte nicht gecrashed ist. Aber das war verdammt knapp und ich muss dringend mehr Sorgfalt walten lassen. Gerade beim Löschen, denn ich schaffe immer wieder Platz, um nicht zu viele Dateileichen mitzuschleppen – was das Problem vermutlich ist. Ein falsches Sicherheitsgefühl kann da gewaltig in die Hose gehen.
Clubhouse oder die nächste (a)soziale Sau wird durch das Dorf getrieben und dabei der Datenschutz erlegt
So richtig habe ich den Hype um Clubhouse erst vor ein oder zwei Tagen mitbekommen. Die ständigen neuen Netzwerke gehen mir auf die Nerven und vor allen Dingen verliere ich langsam die Übersicht. Aber Clubhouse ist wohl anders als die bisherigen Netzwerke, weil da vollkommen auf Datenschutz verzichtet wird – wenn ich die Quellen richtig interpretiere. Alle Daten, Gespräche und Eingaben bei dem Dienst werden in Utha auf einem Server gespeichert und gehen in das Eigentum der Betreiber über, die rechtlich aus Europa gar nicht greifbar sind. Ein Witz, wenn man den Exodus bei WhatsApp die letzten Wochen betrachtet. Und solchen Nutzungsregeln stimmen Anwender zu?
Was wohl an der Zielgruppe und Ausrichtung dieses Vereinsheims liegt. Ein Zugang gibt es nur mit Einladung und das soll elitär wirken. Die Beschränkung auf Apple (nur dafür gibt es eine App) garantiert zudem eine Zielgruppe, die sich teils für etwas Besseres hält, einfach „dazugehören“ und angegeben will. Dazu kommt oft wenig Ahnung von Hintergründen und Technik oder es wird sich nicht darum gekümmert.
Wie sonst ist zu erklären, dass dieses neue Netzwerk trotz der kompletten Aufgabe von Datenschutz nur durch weniger Features als die Konkurrenz punkten will? Was ich mitbekommen habe, geht es vereinfacht um Konferenzen/Diskussionen auf Tonbasis – also Telefonkonferenz, wenn man es genau nimmt. Aber das geht bekanntlich auch heute schon mit sehr vielen anderen Diensten – nur können die halt mehr und das scheint Angst zu machen. Also gilt wohl das Motto „Weniger ist noch weniger“ und dennoch gibt es den Hype.
Das kann ich mir wirklich nur durch die künstliche Verknappung der Zugänge erklären und die Notwendigkeit einer Einladung. Kennt man ja auch von Sekten und Geheimbünden, deren Mitglieder sich für Auserwählte halten (wollen). Und scheinbar steigen auch C- und D-Promis in den Zug ein – neben der unvermeidlichen Herde der „Influenza“.
Ich wage die Prognose, dass der Hype um Clubouse ganz schnell abebbt. Auch wenn die Zielgruppe wohl entweder keine Ahnung von Datenschutz hat oder dieser nicht interessiert. Es wird Konkurrenzangebote geben und der Mangel an Features wird auf Dauer nerven. Der Gegenwind wird das Teil wegwehen, bevor Corona verschwunden ist. Mal schauen, ob ich Recht habe.
Lehrauftrag TH Bingen
Für das kommende Sommersemester habe ich mal wieder einen Lehrauftrag an der Technischen Hochschule Bingen angenommen. Im Studiengang Mobile Computing, was ein Unterzweig des Informatik-Studiengangs ist. Thema ist die Erstellung von Apps mittels Web-Technologien und da werde ich Cordova als Basis nehmen. Dazu hatte ich auch 2016 und 2017 schon Lehraufträge an der TH übernommen und zudem ein Buch beim Springer-Verlag veröffentlicht. Die bisherigen Vorlesungen muss ich zwar aktualisieren und mich auch wieder richtig einarbeiten bzw. auf den aktuellen Stand bringen, aber weitgehend steht das Konzept.
Aber im Gegensatz zu meinen Lehraufträgen an der Hochschule Rhein-Main in Wiesbaden, wo ich in den Jahren davor mehrere Semester Vorlesungen zu verschiedenen anderen IT-Themen rund um Programmierung im Web gehalten hatte, waren die Veranstaltungen an der TH Bingen immer Blockveranstaltungen vor dem eigentlichen Semester. So wird es auch dieses Mal wieder, denn regelmäßige Kurztermine über 2 oder 4 Unterrichtseinheiten über mehrere Wochen blockieren zu viele potentielle andere Aufträge. Auch wenn ich solche Schulungen in frühen Jahren mit Kursen an Volkshochschulen und dann später eben Vorlesungen an der Hochschule Rhein-Main oft gemacht habe, möchte ich das mittlerweile nicht mehr. Das rechnet sich nicht, ist zeitaufwändiger und zerpflückt über Wochen hinweg meine Tage. Auch das Ausweichen auf Wochenenden oder die späten Abendstunden, was bei mir in frühen Jahren über viele Jahre Usus war, vermeide ich mittlerweile. Zwar arbeite ich eigentlich durchgängig über das gesamte Jahr sowohl Nachts als auch am Wochenende, aber nicht mit Schulungen.
Aber die TH Bingen ist auf meine Vorschläge eingegangen und somit wird es für das SS 2021 eine Veranstaltung mit 7 vollen Tagen unmittelbar vor Semesterbeginn bzw. Ostern sowie einem Termin am Ende des Semesters, bei dem ich eine Überprüfung der praktischen Semesterarbeiten der Studenten vornehmen will. Auf diese Weise kann ich die Geschichte in meine übrigen Jobs unterbringen, zumal die gesamte Veranstaltung Corona-bedingt remote laufen wird und die Fahrtzeiten entfallen. Das spart einige Zeit, auch wenn Bingen ja von mir nicht weit weg und gut zu erreichen ist.
WhatsApp knickt ein
Da schau – die Community hat doch Macht. Die Änderungen der Nutzungsbedingungen hat WhatsApp (ein wenig) korrigiert bzw. verschoben. Die Abwanderung bei WhatsApp scheint recht massiv zu sein, wenn diese Reaktion erzwungen wurde.
Wobei ich zwiegespalten bin. Natürlich freut es mich, dass die grossen Internet-Konzerne nicht nach Gutsherrenart agieren können. Andererseits – was kann denn für Umme erwarten? Es gibt nichts umsonst und wer kostenlos die Leistungen von (a)sozialen Netzwerken und Messenger-Diensten nutzen will, muss halt mit anderen Dingen bezahlen. So ist der Deal. Das ist auch bei den Alternativen, zu denen die Leute jetzt abwandern, nicht anders. Vielleicht sogar schlimmer und versteckter.
Aufnahmen im Kasten
Fertig. Die neuen Videoaufnahmen für LinkedIn Learning (LiL) sind im Kasten. Das nächste Projekt ist eine Überarbeitung von einer meiner Schulungsunterlagen für den Herdt-Verlag.
Neue Marketingaktion von LinkedIn Learning: Kurse, die Jobsuchenden zum passenden Job verhelfen
Aktuell bin ich wieder an den Aufnahmen zu einem neuen Training für LiL (LinkedIn Learning). Nachdem ich gestern bis ca 21:30 Uhr am Schaffen war, war ich heute morgen ziemlich früh wach geworden, weil vor dem Haus eine Schneeschippe über den Asphalt gekratz hat. Ein kräftiges Schneegebiet ist in der Nacht über die Gegend gezogen.
Erst einmal bin ich wieder an weitere Aufnahmen gegangen, aber der schöne Schnee hat mich dann gleich zu einer Unterbrechung mit einem Waldlauf gebracht, um das Winterwunderland zu geniesen, bevor wieder alles wegtaut.
Danach bin ich weiter an die Aufnahme, wobei eben die E-Mail reinkam, dass bei einer neue Marketingaktion von LinkedIn Learning, die heute angelaufen ist, mein Kurs zu Python dabei ist. Es handelt sich dabei um 5 Kurse, die bis zum 30. Januar 2021 freigeschaltet sind.
Die Kampagne im Überblick
Die Jobsuche ist immer eine Herausforderung, jedoch in der aktuell schwierigen wirtschaftlichen Situation ist diese noch viel schwerer.
LinkedIn Learning möchte gerne helfen. Dazu haben wurde eine Liste der Top-Kurse aufgestellt, die Mitglieder, die im letzten Jahr erfolgreich einen neuen Job gefunden haben am meisten angesehen haben. Einer dieser Kurse ist eben mein Kurs zu Python.
Backup in der Cloud
Das Thema „Cloud“ ist ja mittlerweile kalter Kaffee. Aber ich wollte da bisher trotzdem noch nicht so richtig ran. Oder anders ausgedrückt – ich will meine Daten lokal bzw. auf dem eigenen NAS haben und nicht „irgendwo“ in einer Wolke. Denn wenn ich mal wieder offline bin (was leider regelmäßig vorkommt), sind Daten in der Cloud keine Daten. Nicht umsonst spricht man bei entsprechend geformten Wolken von Luftschlössern.
Gerade die aktuelle Lage macht den Zugriff auf Cloud-Dienste noch ungleich unzuverlässiger, da das Internet durch die vielen Homeoffice-Arbeitsplätze und virtuellen Veranstaltungen in Schulen und Unis komplett am Anschlag fährt und eben oft zusammenbricht. Deutschland lebt halt in der digitalen Steinzeit.
Aber für Backups sehe ich Cloud-Speicher schon als attraktiv (und natürlich den Datenaustausch – keine Frage), denn da kommt es nicht darauf an, ob die Daten in Time bereitstehen oder der Upload zu einem bestimmten Zeitpunkt durchgeht. Neben meinen lokalen Backups auf mehreren externen Festplatten (lokal verteilt) und dem NAS sind mehrere Cloud-Drives als (natürlich verschlüsselte) Backups der eigentlichen Backups unzweifelhaft sinnvoll. Wenn nur die Zugriffszeiten praktikabel wären. Ich habe hier einen hoch komprimierten Extrakt meiner wichtigsten Daten in der Größenrodung von ca 3 GByte (nur die allerwichtigsten Sachen) bis hin zu etwa 20 GByte, wenn so alles halbwegs Wichtige in Archive komprimiert wird. Bilder und Videos etc. außen vor.
Nun hatte ich schon mehrmals eine mittlere Variante von etwa 6 – 7 GByte zusammengestellt und zum Hochladen in mehrere Cloud-Interfaces gezogen. Vorgesten war dabei die geschätzte Upload-Zeit in Google Drive von Bodenheim aus 48 (!) Stunden (!). So ist das einfach nicht zu nutzen. Dann kam mir aber die Idee, die Daten per Festplatte mit in mein Büro in Eppstein zu nehmen und es von da zu versuchen. In Bodenheim habe ich ja auch nur DSL16 mit 1 MBit/s Upload, in Eppstein DSL100. Und nach einigen Messungen Upload-Speed bis zu 40 MBit/s. Beide Anschlüsse schwanken natürlich gewaltig in der verfügbaren Bandbreite, aber ich habe heute die Daten, für die ab Bodenheim 48 Stunden Upload-Zeit geschätzt war, in Eppstein in gut 30 Minuten (!) hochgeladen.
Auch wenn mein Anschluss in Eppstein ziemlich instabil läuft (heute schon wieder temporär offline – was wie gesagt das Problem ist, wenn man Daten in der Cloud in Time braucht oder auch Onlineschulungen halten will) – ab Bodenheim brauche ich es gar nicht zu versuchen mit der Cloud zu arbeiten. Hoffentlich klappt hier der Umstieg auf Glasfaser in 2 Monaten – dann sollte es auch von hier aus halbwegs gehen mit moderner, digitaler Arbeit.
Es stehen die erste Videoaufnahmen 2021 an
Heute habe ich mich aber schon in meinem „Studio“ in Eppstein eingerichtet, das erste Probevideo aufgenommen und auf Sharepoint geladen.
Während ich der Dinge (sprich – der Kontrolle, ob alle Einstellungen ok sind) geharrt habe, habe ich einen kurzen Waldlauf über den Staufen gemacht. Obwohl es am Anfang brutal hochgeht, ist das meine absolute Lieblingsstrecke. Und da im Moment Eppstein direkt an der Schneefallgrenze liegt, gibt es im Tal zwar kaum Schnee, aber oben auf dem Staufen ist es richtig schön winterlich. Zwar nur ein paar Zentimeter, aber immerhin.
Ferienverlängerung durch technische Remotepanne
Das war mal wieder eine klassische Panne, die die Unfähigkeit unser digitalen Gesellschaft offenlegt. Deutschland ist einfach im digitalen Steinzeitalter stehengeblieben. Gestern war in Rheinland-Pfalz der erste Schultag des neuen Jahres und die überwiegend verwendete Lernplattform Moddle ist zusammengebrochen. Gleich dazu auch das parallel zum Einsatz kommende Videokonferenzsystem BigBlueButton (BBB). Angeblich soll die Ursache ein Hacker-Angriff gewesen sein. Das kann man nun glauben oder auch nicht. Denn die technische Infrastruktur in Deutschland ist einfach zu schwach und veraltet, dass vermutlich alleine der zeitgleiche Zugriff von vielen Nutzern bereits das System sprengt. Die vielen Nutzerzugriffe kann man aber gerne auch als DDOS-Angriff werten, um die Schuld abzuwälzen.
Interessanter Weise gibt es ziemliche Schadensfreude bei den Schulen in Rheinland-Pfalz, die auf Microsoft-Produkte setzen. Denn Teams & Co hätten am Montag einwandfrei funktioniert, wie wohl mehrere Schulen hämisch verlautbaren lassen. Und diese Häme hat wohl den Grund, dass die Microsoft-Lösungen aus Datenschutzgründen in der nächsten Zeit abgeschafft werden sollen, was einigen Schulen nicht gefällt. Der Opensource-Gedanke ist da (noch) nicht angekommen und dieser Vorfall natürlich Wasser auf deren Mühlen.
Nun sollte man aber m.E. nicht den Stab über Moddle und BBB brechen, sondern über die digitale Unfähigkeit von Behörden, Schulen und der Politik. Denn es gibt wohl in fast jedem Bundesland eine andere Lernplattform und so ein Verzetteln verschwendet dermaßen Ressourcen und Kapazitäten, dass ein Versagen zwangsläufig ist. Da kommt dann alles zusammen:
- Schlechte Hardware
- Langsames Internet
- Zahlreiche Insellösungen
- Mangelndes IT-KnowHow
- Zu wenig IT-Personal generell
Was soll man da denn erwarten? Arme Schüler. Und ggf.. auch Studenten.
Assange soll nicht an die USA ausgeliefert werden :-)
Endlich mal wieder eine gute Nachricht, denn Julian Assange soll nicht aus Großbritannien an die USA ausgeliefert werden. Leider ist die Begründung etwas schwach, denn es werden die zu erwartenden Haftbedingungen in den USA angeführt. Es wäre gerechter, wenn das Auslieferungsgesuch grundsätzlich als illegitim gebrandmarkt würde, denn hier stehen eindeutig der Rachegedanke der USA gegenüber Wikileaks und die Einschüchterung möglicher Wistlerblower im Vordergrund. Statt für die eigenen Straftaten zur Verantwortung gezogen zu werden, sollen die Leute mundtot gemacht werden, die die Verbrechen öffentlich machen. Eine leider gängige Strategie bei vielen System, aber so etwas kann kein Rechtsstaat fordern. Die logische Folge hinsichtlich der USA ist leider unausweichlich. Aber vielleicht finden die USA unter dem neuen Regime ja wieder auf den Weg von Rechtsstaaten zurück.
Sie bestimmen, welcher Werbespot es sein soll – was zur Hölle soll das?
Mir wurde gerade auf der Seite eines Nachrichtenportals vor der Anzeige der gewünschten Meldung die Frage vorgesetzt, welches Werbevideo ich denn ertragen möchte, bevor ich das Gewünschte zu sehen bekomme. Das ist eine Vera… für den Besucher als auch den Werbetreibenden. Denn kein Besucher freut sich über die Verzögerung und reagiert natürlich verärgert auf das Blockadevideo, für das auf der anderen Seite der Werbetreibende auch noch bezahlt. Wenn schon Werbung vorangestellt wird, will ich doch die Bestrafung nicht auch noch aussuchen müssen.
Minus x Minus ergibt nicht immer Plus. Da sollte ein paar Leute nachdenken, ob man mit so dumm gemachten Belästigungen wirklich potentielle Kunden gewinnen kann.