Ich komme gerade vom Küstenfliegen in Dänemark zurück und habe die Woche etwas Zeit für Experimente, die schon eine Weile anstehen. Einmal wollte ich ChatGPT 4 ausprobieren und zum Anderen Chrome OS auf einem normalen PC. Das sogenannte Chrome OS Flex soll das ermöglichen.
Schlagwort: Linux
Window nur noch in der Cloud? Anlass, endgültig zu Linux zu wechseln?
Natürlich suchen Medien reißerische Schlagzeilen.
„Windows nur noch als kostenpflichtiges Abo? Microsoft entwickelt Windows aus der Cloud“
So oder so ähnlich ist es derzeit in den einschlägigen Medien zu lesen. Es wird wie immer natürlich nicht so heiß gegessen wie gekocht und die bisherigen Desktop-Windows werden ja nicht schlecht in dem Sinn. Warum also Windows 10 nicht noch 10 Jahre weiter nutzen? Oder Windows 11, wenn man das untergejubelt bekommen hat? Offizielle Updates werden irgendwann ausgehen, aber das wird überbewertet bzw. von der Industrie hochgepushed, um Neues verkaufen zu können und – Medien – Schlagzeilen zu haben. Was sowieso wohl der Grund dieses Sturms im Wasserglas ist.
Letztendlich geht es darum, dass Betriebssysteme wohl ausgereizt sind und Microsoft Quellen braucht, um in Zukunft Geld zu generieren. „Window nur noch in der Cloud? Anlass, endgültig zu Linux zu wechseln?“ weiterlesen
Es war doch der Gärtner
Seit ein paar Stunden habe ich meine Workstation zurück. Wie immer – es war der Gärtner bzw. die Grafikkarte. Von Anfang an in Verdacht, haben zig Spuren wegn der Grafikprobleme in andere Richtungen verwiesen. Insbesondere die Spur, dass Probleme bei der Grafikausgabe nur unter Windows, aber nie unter Linux aufgetreten sind und meine Bildschirme mit einer Austauschgrafikkarte (aber nur mit der) teils schwarz wurden. Aber diese haben sich zerschlagen. Nachdem die neue Grafikkarte drin und rein im Onboard-Grafik-Betrieb die alten Treiber sauber deinstalliert und dann erst die neuen Treiber installiert waren, ist die Kiste gelaufen. Sie hat in der Werkstatt zig Tests durchlaufen und dort ist aufgefallen, dass die alte Grafikkarte wohl noch korrekt arbeitet (deshalb alle Benchmarks und meine Tests unauffällig), aber das Signal an die Monitore gestört ist bzw. unzuverlässig arbeitet. Ich verstehe zwar nicht, warum nur Windows dann Probleme bekommt, aber sei es drum.
Eben habe ich aber auch mit der neuen Grafikkarte wieder einen komplett schwarzen Bildschirm gehabt (was mich auch früher mit der getauschten Grafikkarte schon in die Irre geleitet hat), aber mir ist aufgefallen, dass die Auslössituation immer wieder gleich ist. Nämlich das Aktualisieren von Browserfenstern. „Es war doch der Gärtner“ weiterlesen
Alte Hardware weiter nutzen
In Zeiten gravierender Klima- und Umweltprobleme sollte man sich m.E. überlegen, ob und wie man selbst dazu beitragen kann, nicht unnötig die Probleme zu vergrößern. Gerade in der IT-Branche sind wir priviligiert, dass es vielfach möglich ist, im Homeoffice zu arbeiten und damit unnötige Reisen zu vermeiden. Meetings, Schulungen, etc. kann man sehr gut remote machen und jede vermiedene Reise ist von Vorteil für Klima und Umwelt. Die positiven Effekte wie eingesparte Zeit, Kosten und weniger Unannehmlichkeiten wegen Reisestress nehme ich ehrlich als puren Eigennutz auf meine Kappe.
Aber auch der unnötige Verschleiss von digitaler Hardware sollte vermieden werden. Das beginnt mit SmartPhones, die teils jährlich ausgetauscht werden. Klar kann ich „Habenwollen“ und auch Abgeberei nachvollziehen, aber diese sollten nicht mehr toleriert werden. Das ist sowieso der unverständliche Punkt, dass gerade die junge Generation zu Recht für Klimaschutz auf die Straße geht (bzw. klebt) und dann immer mit dem neusten SmartPhone und der neusten Mode rumlaufen muss.
Aber auf die konkrete IT-Hardware bezogen, versuche ich diese solange wie möglich in Betrieb zu halten. Und wenn neue Hardware gebraucht wird, auf runderneuterte (Modewort – refurbished) Geräte zu setzen. Da gibt es mittlerweile Top-Angebote von Leasing-Geräte, die in großen Firmen nach 2 oder 3 Jahren bereits rausgeschmissen werden. „Alte Hardware weiter nutzen“ weiterlesen
(No-)Workstation
Ich bekomme die Probleme mit meiner Workstation nicht in den Griff. Nach dem Kaltstart flackern die Bildschirme extrem und teils bleiben sie schwarz. Mittlerweile flackern aber die Bildschirme auch zweitweise beim Betrieb. Das zweite massive Problem ist, dass beim Anlegen und Löschen von Verzeichnissen als auch teils Dateien keine Aktualisierung vom Explorer bzw. Desktop erfolgt. Zumindest nicht zeitnah. Und gewisse Verzögerungen bei der Entgegennahme von Tastatureingaben und Mausklicks sind auch zu spüren. „(No-)Workstation“ weiterlesen
ASP.NET MVC, Codespace & Docker
Ich habe eine neue Webseite erstellt. Das ist nicht ungewöhnlich und kaum eines Posts wert. Zumal die Webseite nicht der Burner ist. Weder vom Design, noch dem Inhalt. Es ist im Grunde nur etwas Werbung für mein Buch zu „Webanwendungen mit ASP.NET MVC und Razor – Ein kompakter und praxisnaher Einstieg„, das ich vor einiger Zeit beim Springer-Verlag veröffentlicht habe. Also wozu der Hussle?
Nun – wenn man den Link zu der Webseite anklickt, fällt vielleicht der ungewöhnliche Port auf (33333). Der eigentliche Anlass für die neue Webseite war die Vorbereitung für eine Schulung mit ASP.NET im kommenden Januar. Ich will einfach einige Praxisseiten zum Zeigen von ein paar Sachen haben.
Ich betreibe meine Webseiten nun aber mit einem Apache-Webserver unter Linux. Die neue Webseite ist jedoch – aus besagten Gründen – mit ASP.NET MVC und Razor gemacht. Und das braucht – eigentlich – einen Windows-Server mit IIS oder so. Also auf jeden Fall .NET. Lokal auf einem Windows-PC bzw. direkt aus Visual Studio kein Problem. Aber wenn man „In-the-wild“ nur Linux verwendet? „ASP.NET MVC, Codespace & Docker“ weiterlesen
Schulungsjahr 2022 beendet
Gestern habe ich meinen letzten Schulungstag 2022 (falls nicht noch ganz kurzfristig was aufläuft) gehalten (zu Python) und eben habe ich die letzte Rechnung für eine Schulung erstellt und versendet. Damit schließe ich das Schulungsjahr 2022 ab. Allerdings kommt vor Weihnachten noch eine Woche mit Videoaufnahmen bei LinkedIn Learning in Graz, worauf ich mich richtig freue.
Wenn ich die Schulungen dieses Jahr durchgehe, kamen wieder eine ganze Reihe an Themen vor. Wie üblich mit einigen Schwerpunkten, die sich im Vergleich zu den Jahren zuvor aber teils verschoben haben. Andere Themen sind komplett weggebrochen oder ich habe sie nicht annehmen können und ich muss mir überlegen, ob ich die weiter im Schulungsprogramm behalte. Auch wenn ich sie persönlich meist immer noch interessant finde (etwa F#, GWT oder Perl) bzw. unabhängig von direkten Schulungen oft verwende (etwa Eclipse oder alles rund um mein Lieblingsbetriebssystem Linux, wofür ich aber keine aktuelles Schulungsagenda mehr ausgearbeitet habe – zu nahezu allen anderen Schulungthemen habe ich ja eigene Bücher und Schulungsunterlagen und/oder Videotraining bei LiL erstellt).
Linux und die Denkfabrik
Für die Umorganisation meiner Hardware brauche ich einen PC, auf dem ich Linux installiere. Ich habe deshalb tief in die Tasche gegriffen und etwa 40 EUR in einen wiederaufbereiteten Lenovo Desktop PC ThinkCentre M71e Intel G850 4GB RAM 120GB SSD Tiny mini gesteckt. Vorgestern bestellt und jetzt ist er schon geliefert und installiert. Das Teilchen sollte so von 2015 oder 2016 sein und ist bei irgendeiner Firma ausgemustert worden. Als Bildschirm nutze ich einen ausgemusterten Minifernseher, für den ich vor einigen Jahren auch maximal 80 EUR gezahlt hatte und der ansonsten überflüssig ist.
Ich habe nun als IT-Trainer und Programmierer andere Ansprüche als „normale“ Anwender, denen so ein Gerät sicher nicht mehr langt – von Daddlern (also Spielern) ganz zu schweigen. Aber mit einem passenden Linux ist so ein PC (fast) allen Anforderungen gewachsen, die mal als professioneller Anwender hat. Ich habe mich für Mint 21 mit Xfce entschieden. Die optischen Gimicks von Mate oder gar Cinnamon brauche ich nicht (s.o.), aber es ist trotz meiner einleitenden, ironischen Anmerkungen natürlich klar, dass das alte „Denkzentrum“ keine Power ohne Ende hat. Xfce spart da schon viel überflüssige Belastung und auch sonst ist diese Edition speziell auf ältere Hardware optimiert. Auch mein altes Terra-Notebook, das ich ins Büro nach Eppstein verlagert habe, hat im Dual Boot Mint Linux mit Xfce und da ich damit wirlich gute Erfahrungen gemacht habe, nutze ich das auch hier. Auch wenn das ThinkCenter viel neuer als das Terra-Notebook ist und ich Alternativen wie Lubuntu oder MX Linux gerne mal ausprobiert hätte.
Interessanter Weise hat die Installation ziemlich Probleme gemacht, denn nach der Installation gab es immer die Meldung von wegen „Operating system not found“. Das ThinkCenter nutzt nun kein BIOS mehr (obwohl uralt, ist es doch dafür schon wieder zu neu), sondern leider EFI. Ich habe schon mehrfach mitbekommen, dass es damit eine Menge Probleme geben soll. Gerade dann, wenn da noch Sicherheitsschranken eingezogen sind. Ich hatte die Probleme auch bei einem alternativen Linux, dass ich testweise installiert hatte, ebenso, aber nach dem 5. oder 6. Installationsvorgang hatte ich plötzlich einen Bootmanager und alles war gut. Keine Ahnung, was ich da anders eingestellt habe.
Anyway – mein erster Eindruck von dem laufenden ThinkCenter mit Mint Linux 21 Xcfe ist, dass die Kiste damit brutal schnell ist. Weit jenseits von dem, was viel neuere und potentere Hardware mit Windows erreicht.
Auch wenn meine Aufträge einfach dazu führen, dass ich fast nur noch mit Windows arbeite – Linux ist so viel besser, einfach, schneller, intuitiver, leistungsfähiger, dass es im Grunde eine Schande ist.
Der JSON-Kleber zwischen Python und JavaScript
Ich ömmel mich immer noch weg, wenn ich mich daran erinnere, wie JavaScript früher schlechtgeredet wurde. Oder wenn auch heute noch Leute abschätzig von JavaScript reden und dann ständig mit JSON arbeiten. Das ist wie bei den Unwissenden, die über Linux lästern oder angeblich niemals verwenden würden und dann ihr Android-Handy, ihren Smart-TV, ihr Entertainment-System im Auto etc. verwenden. JSON ist ja pures JavaScript, aber zudem mittlerweile ein Datenformat, was aus dem modernen Datenaustausch nicht mehr wegzudenken ist. Auf Klartextbasis kann man über JSON beliebige Datenstrukturen austauschen, man kann aber auch Programme konfigurieren und ähnliche Dinge machen. Und nahezu alle Sprachen unterstützen JSON mittlerweile. Natürlich auch Python.
In Python gibt es im Modul json Möglichkeiten, womit man JSON serialisieren und deserialisieren kann. Mit anderen Worten – man kann ein JSON-Objekt bzw. eine JSON-Datenstruktur nehmen und daraus einen String machen und einen so stringifizierten JSON-Ausdruck wieder zurück in ein Objekt wandeln. In dem aktuellen Entwickler-Tipp der Woche zu Python bei LinkedIn Learning geht es genau um das Thema.
Preisexplosion beim Raspi
Ich muss zugeben, dass ich mir lange keine Preise für Hardware angesehen habe. Und schon gar nicht für den Raspberry Pi. Hin und wieder krame ich meinen alten Raspi der Version 1 raus und experimentiere damit rum. Aber die Version 1 ist wirklich so schwach auf der Brust, dass man damit eigentlich nur testen kann, welche Minimalhardware für gewisse Dinge notwendig ist und dabei braucht man viel Zeit und Geduld, bis die Programme starten bzw. fertig sind. Und wirklich nützliche Anwendungen habe ich in dem Bereich wenig gefunden, weil ich keine Hardwaresteuerung programmiere. Einzig die Ausführung von einem Python-Skript zur Spamabwehr ist derzeit eine produktive Anwendung des kleinen Raspi. Aber obwohl ich immer noch unter massivem Spambeschuss stehe, haben sich mittlerweile wohl die Antispam-Cloud-Dienste und die internen Spam-Abwehrmechanismen auf die neue Art des Spams eingestellt, die vor einigen Wochen wie eine Schlammlawine durchs Netz gewalzt ist. Der Raspi hat also als Torwächter wieder weniger zu tun. Bei einer anderen Anwendung hat aber die extrem schwache Hardware die Hürden nicht geschafft. Ich wollte für die kommende Cordova-Vorlesung, die ich an der TH Bingen ab übernächster Woche halte, ein Linux-System so konfigurieren, dass Cordova-Android-Apps kompiliert und nach Möglichkeit auch in einem Emulator (oder zur Not auf einem per USB angeschlossenen SmartPhone) ausgeführt werden. Da für Cordova eine ganze Reihe an recht alten Bibliotheken (JDK 8) auf der einen Seite und den elend vielen Ressourcen im Fall von Android auf der anderen Seite verlangt werden, ist meine Workstation nicht passenden konfiguriert – von meinem Matebook mit der kleinen SSD ganz zu schweigen. Und ich habe keine Lust, nur für die Vorlesung meine gesamten Konfigurationen durcheinander zu bringen und zig Sachen da zu installieren, die ich sonst nicht mehr brauche.
Zwar habe ich einen passenden Docker-Container noch von der letzten Vorlesung vorbereitet und auf den neusten Stand gebracht und auch mein altes Terra-Notebook hat Cordova sogar mit Visual Studio verfügbar (das geht maximal bis Visual Studio 2017 und das habe ich aus dem Grund auch noch auf dem alten Notebook gelassen). Aber unter meinen Linux-Systemen klappt die Installation von Cordova und den Android-Ressourcen nicht so richtig. In dem parallel auf dem alten Notebook installierten Linux ist irgendwas zerschossen und ich kann gar keine Aktualisierungen vornehmen. Das muss ich vermutlich komplett neu aufsetzen. Und bei den virtuellen Maschinen habe ich sowohl bei VM Ware als auch VirtualBox eine Reihe von anderen – und ganz verschiedenen – Problemen. Alles nix Tragisches, aber es kostet Zeit und wenn ein Problem gelöst ist, kommt das nächste. Unbefriedigend und es raubt Zeit.
Da kam mir die Idee, entgegen meiner bisherigen Planungen vielleicht doch einen neuen Raspi zu kaufen und den als Linux-System ins lokale Netz zu hängen und je nach notwendigem Ziel immer wieder neu aufzusetzen. Also so eine Art Hardware-Docker-Container-VM-Ersatz. Ich hatte für den ersten Raspi so um die 35 – 40 EUR ausgegeben, bin mit der Erwartung gerade auf die Suche gegangen und fast vom Glauben abgefallen. Die wollen ja teils weit über 200 EUR für die Platine mit ein bisschen Krimskrams dazu. Ne, wirklich nicht. Das hat ja gar nichts mehr mit der ursprünglichen Idee einer möglichst billigen Platine zu tun. Ich schaue mal weiter oder vielleicht gebe ich doch alternativen Platinen eine Chance, bei denen nicht noch zusätzlich ein Hype die Preise hochtreibt. Oder lasse es.
Derzeit kann man wohl weder Sprit bzw. Öl als auch Hardware kaufen. Benzin muss leider ab und zu sein (auch wenn ich weniger fahre und zudem wenn möglich auf das Rad oder eBike umsteige), aber Hardwarekauf kann verschoben werden, bis die Preise wieder normal sind.
Das Windows-11-Update ist durch
Ich bin immer wieder erstaunt (oder besser erschrocken), wie lange ein Update von Windows dauern kann. Das Update von Windows 10 auf Windows 11 auf meinem UBook war gerade wieder so ein Frusterlebnis. Der Download der Installationsdateien von Windows 11 ging recht fix, da ich in meinem Büro in Eppstein DSL100 habe. Ich habe nicht wirklich aufgepasst, aber das war in so einer guten Stunde wohl durch. Danach habe ich die Installation auf meinem Microsoft-Surface-Billig-Klon von CHUWI gestartet. Den Installationsprozess habe ich etwa 1,5 Stunden so beiläufig verfolgt und dann bin ich ins Bett gegangen, um die Sache über Nacht durchlaufen zu lassen. Ich hatte es nicht eilig, den Rechner wieder in Gang zu bekommen.
Am nächsten Morgen stand auf dem Bildschirm, dass die Installation soweit beendet wäre und der Rechner zum Abschließen der Installation und erstem Einrichten neu gestartet werden könnte. Gemacht, Kaffee gekocht und gewartet. Nach gut 20 Minuten stand die Fortschrittsanzeige auf ca. 2%. Ich wollte sowieso den Garten hinter meinem Zweitbüros von Dornen und Unkraut befreien und habe, während Windows 11 die Einrichtung und den 1. Start versucht hat, den gesamten oberen Teil mit Gartenschere und Hacke von Dornen und Unkraut befreit. Dabei bin ich mit der Hacke gut 7 – 8 Mal den gesamten Bereich durchgegangen. Selbst in der Zeit hat es Windows nicht geschafft, sich einzurichten. Erst nachdem ich den Hof noch von Blättern befreit und gekehrt hatte, war Windows mit der Sache dann fertig. Das waren 4 Stunden! Wie gesagt – ich bin jedes Mal entsetzt, wenn ich so etwas mache.
Ich sollte nicht so viel Linux verwenden, denn das versaut die Erwartungshaltung. Linux wäre auf vergleichbarer Hardware in vielleicht 10% der Zeit durch.
Aber man installiert in der Regel ja nur einmal und wenn das durch ist, muss die Sache nur funktionieren. Auch wenn es um das Tablet nicht schade gewesen wäre, wenn die Installation schiefgegangen oder Windows 11 das Teilchen ruiniert hätte – ich wollte ja schon, dass ich Windows 11 mal ausprobieren kann. Und tatsächlich läuft Windows 11 auf diesem zwar ziemlich neuen, aber einfachen und recht schwachbrüstige Gerät.
Mein erster Eindruck von Windows 11 ist wie erwartet negativ, aber da greift sicher meine Aversion gegen Änderungen von Bewehrtem. Die Oberfläche finde ich grausam – sieht fast aus wie macOS (und das ist aus meinem Mund ein vernichtend negatives Urteil, weil ich mit Apple-Geräten einfach nicht zurechtkomme). Aber ich denke, dass ich die anpassen kann und vermutlich werde ich die Classic Shell bzw. Open Shell installieren, mit denen ich mich auch schon gegen den Desktop von Windows 10 erfolgreich verteidige. Aber erst einmal will ich die neue Oberfläche lassen (zumal Open Shell offiziell noch nicht für Windows 11 verfügbar ist) und schauen, ob meine Ablehnung wirklich nur die Aversion gegen das Neue oder fundiert ist. Denn bei Linux habe ich gegen neue Oberflächen meist weniger Aversion als bei Windows und macOS.
Microsoft hat auch unzähligen Bloatware mit Windows 11 installiert, aber die Deinstallation ging zumindest vernünftig. Weitere Bereinigungen und Optimierungen gehe ich die Tage an. Auch um das Gerät zu beschleunigen, denn gefühlt starten die Programme mi Vergleich zu Windows 10 extrem zäh und laufen auch langsamer. Ich habe zwar gehört, dass Windows 11 hier eigentlich besser als Windows 10 sein sollte, aber ich habe den gegenteiligen Eindruck. Was aber auch daran liegen kann, dass das UBook vermutlich am unteren Ende der notwendigen Hardware rangiert. Ich werde auf jeden Fall Windows 11 auf dem UBook lassen und je nach meinen persönlichen Erfahrungen entscheiden, ob ich weitere Rechner darauf umstelle oder nicht.
Liegengebliebene Tasks
Nachdem ich mit einer Remote-UML-Einzelschulung am Montag und Dienstag eine brutal lange Schulungsphase erst einmal abgeschlossen bzw. unterbrochen habe, kann ich mich jetzt endlich ein paar Tage liegengebliebenen Aufgaben widmen. Ich kann mich nicht mehr entsinnen, wann ich das letzte Mal so viele Schulungen so lange Zeit mehr oder weniger am Stück gehalten habe. Die letzten Jahre definitiv nicht mehr. Im Grunde ging diese Phase am 1. Oktober los und wurde zwar von einer Videosession für LiL und auch hin und wieder von einigen Tagen ohne Schulung unterbrochen. Aber an denen musste ich ja meine andere Arbeit samt den dauerhaften ILS-Korrekturen und Vorbereitungen der Schulungs-Sesions erledigen. Wenn man die letzten 3 Monate betrachtet, war meine Schulungsaktivität also prozentual höher als zig Jahre zuvor.
Was ich auch merke, denn ich habe die letzten Tage schon abgebaut. Ich bin mit der falschen Brille zum Radfahren gegangen, habe Stufen auf der Treppe übersehen, hatte Rücken vom vielen Sitzen, war gereizt etc. Die freien Tage über das Jahresende kommen dieses Mal wirklich dringend.
Ein Teil meiner liegengebliebenen Aufgaben dreht sich auch um die Synchronisation, Bereinigung und Neuinstallation meiner Rechner bzw. Datensicherungen. Das ist zwar auch Arbeit, aber macht mir Spaß und ist – für mich zumindest – eine entspannte bzw. sogar entspannende Tätigkeit.
Da ich gestern „geboostert“ wurde, hänge ich heute mit leichten Impfreaktionen sowieso etwas in den Seilen – zu der angesprochenen Erschöpfung durch die letzten Monate – und habe mal im Hintergrund meine Datensicherungen bereinigt bzw. mehrere externe Festplatten bereinigt und aufeinander abgestimmt. Bei der Datensicherung bin ich grundsätzlich „übervorsichtig“ und speichere im Grunde „ALLES“ redundant sowie zeitlich in ziemlich kurzen Abständen. Aber damit wird die Datenmenge auch gewaltig groß und nicht mehr wirklich überschaubar. Eine Bereinigung hatte wirklich Sinn gemacht.
Dazu habe ich mit meinem Matebook ein wirklich super schnelles, leistungsfähiges, transportables und hochwertiges Notebook. Aber als ich es Anfang 2019 gekauft hatte, gab es das Gerät zu einem adäquaten Preis nur mit einer Mini-SSD. Demensprechend bin ich dort leider immer am Limit der 256 GByte und muss regelmäßig das Teil säubern. Damit das aber nicht zu extrem wird, arbeite ich mit externen Festplatten – auch weil ich oft zwischen meiner Workstation und dem Notebook wechsele. Workstation in Bodenheim, das Matebook in Eppstein oder bei externen Einsätzen jeder Art. Die Daten will ich nicht ständig in die Cloud verschieben müssen – zumal ich der Verwendung einer Cloud sowieso in vielen Bereichen kritisch gegenüberstehe.
Nur habe ich mittlerweile zwei externe USB-Festplatten im Einsatz – eine große HD und eine kleine SSD mit 1 TByte. Zuerst war die HD (USB-2) da, aber der Performancegewinn mit der externen SSD (USB-3 bzw. Firewire) ist so groß (gemessen – Zugriffszeiten fast identisch wie bei der internen SSD), dass ich immer mehr Daten (Programme sowieso) auf diese verlagere. Damit schlägt die fehlende Kapazität meiner internen SSD nicht mehr so zu. Nur große Daten wie Videos für LiL und eines der Backups der NAS bleiben auf jeden Fall auf der externen HD. Aber …
Ich habe in der letzten UML-Schulung gemerkt, dass sich über die letzten Monate die Daten ziemlich unstrukturiert auf die externe HD und die externe SSD verteilt haben und ich auch da komplett die Übersicht verloren habe. Suchtools sei Dank habe ich zwar immer gefunden, was ich gebraucht habe. Aber die Abstimmung bzw. Neustrukturierung der beiden externen Datenträger aufeinander war mal dringend gegeben.
Eine weitere Aufgabe, die ich mir für die Jahresendtage aufgeschrieben habe, war die Reaktivierung meines uralten HP EliteBook. Das hatte ich mal als Gebrauchtgerät gekauft und es muss m.E. mindestens 12 – 15 Jahre alt sein. Vermutlich noch älter. Ich brauche es nicht wirklich und die Reaktivierung kann man fast als „Hobby“ abtun. Aber es läuft in der Tat mit Windows 10 und ich habe darauf auch lizenziertes MS-Office installiert. Die Lizenzen will ich eigentlich nicht verlieren und deshalb habe ich die Lizenzen versucht auszulesen, um sie ggfls. auf einem anderen Gerät noch zu nutzen. Das war leider nur teils erfolgreich und deshalb habe ich versucht, das EliteBook mit allen denkbaren Tools zu bereinigen, zu entschlacken und zu beschleunigen. Denn der Start von Windows als auch vor allen Dingen Programmen ist dermaßen langsam – eigentlich kann man damit nicht arbeiten. Wenn nur nicht die Lizenzen wären, die ich zum Teil einfach nicht mehr rausbekomme bzw. deren Keys ich nicht mehr finde. Als Resultat meiner Optimierung läuft das EliteBook jetzt wirklich etwas besser, aber es ist absolut an der Grenze der Verwendbarkeit. Ich bin noch am Überlegen, ob die Lizenzen es wert sind oder ich nicht lieber ein Linux darauf installieren, dass mit der uralten Hardware besser zurecht kommen wird. Wie gesagt – ich brauche das EliteBook nicht wirklich und auch die Neuinstallation mit Linux wäre unter „Hobby“ bzw. ggf.. Wissenserweiterung (wobei da nichts Neues auftreten sollte) zu verbuchen.
Der letzte Tipp mit leichter Verspätung, der aktuelle dafür schon heute am frühen Morgen
Mein regelmäßiger Entwickler-Tipp zu Python wurde letzte Woche bei LinkedIn Learning erst an Freitag freigeschaltet, aber der Entwickler-Tipp zu Python in der Woche ist heute – als am üblichen Mittwoch – schon früh am Morgen da.
Ich begebe mich dieses Mal etwas in die Welt der Administration bzw. von Administratoren. Eigentlich für mich ein etwas fremdes Gebiet, denn ich bewege mich sonst in der Regel rein im Umfeld der Programmierung. Genaugenommen sogar überwiegend der Anwendungs- und Web-Entwicklung. Aber über die Jahre kommt man auch immer wieder mit Themen aus dem Admin-Bereich in Berührung. Ich behaupte, dass ich mittlerweile theoretisch sogar als Admin arbeiten könnte. Vielleicht wäre ich kein wirklich guter Admin, aber die meisten administrativen Dinge – insbesondere unter Linux – würde ich wohl hingekommen.
Und bei dem aktuellen Tipp geht es ja immer noch um Python. Nur halt um einen Einsatzzweck, der für Admins von Interesse ist – wie man mit Python zeitgesteuerte Befehle auf dem Server ausführen kann. Konkret nutze ich dabei Linux als Serversystem und zeige, wie man CronJobs erstellen bzw. CronTabs mit Python schreiben kann.
Deepin Linux 2
Deepin Linux taugt als komfortables und schön gestaltetes OS echt was, um alte Hardware neu zu beleben. Nach dem ersten Versuch mit einem uralten Windows-Notebook habe deshalb auch das identische Schwestergerät gerade darauf umgestellt.
Deepin Linux
In der Familie wird ein Notebook für ein bisschen Textverarbeitung benötigt und wegen Black Friday & Co stand zur Diskussion, ein solches zu kaufen. Doch da ich die Preise eine Weile schon verfolge – das lohnt sich n.E. im Moment gar nicht. Für mich sieht es nach meinen Aufzeichnungen der Preise über die letzten Wochen so aus als wären die – wie üblich – die letzten Tage massiv erhöht und jetzt nur auf einen Stand reduziert worden, der immer noch über dem vor einigen Wochen liegt. Gerade bei Notebooks und anderer PC-Hardware.
Zudem schlummerten unter dem Sofa noch ein paar uralte Notebooks, für die eine Wiederbelebung eine Option war. Mein altes HP EliteBook habe ich mit diversen Tools komplett bereinigt und es scheint halbwegs zu laufen. Windows 10 und Office ist drauf und deshalb durchaus eine Option. Allerdings ist das Teil ziemlich „träge“.
Ein anderes Notebook von meinem Sohn musste ich erst an verschiedenen Stellen kleben und da war Windows nicht wirklich mehr vernünftig instand zu setzen gewesen.
Also ein Kandidat für Linux. Deepin Linux ist mir da untergekommen. Kommt aus China und basiert vom Unterbau auf Debian. Von der Oberfläche ein Mix aus macOS und Windows 11 verspricht es dennoch geringe Hardwareanforderungen. Ausprobiert und ich muss sagen – sieht verdammt schön von der Oberfläche aus und läuft smart auf dem uralten Notebook. Sonst nutze ich Mint Linux mit Xfce auf alter Hardware, aber Deepin scheint auch auf alter Hardware eine modernere und schöne GUI hinzuzaubern. Auch wenn mir Design und Optik eigentlich vollkommen egal sind – wenn es von der Funktionalität gleichwertig ist – warum nicht das optisch schöne System verwenden? Die Nachinstallation von Software, die nicht standardmäßig in den Repos zu finden ist, ist nach ersten Versuchen mau, aber als „Out-of-the-box“-System für reine Anwender scheint das zu taugen.
Mac Mini als Druckserver
Im Rahmen der Neugestaltung meines Büros mit eingeschlossenem grundlegendem Neuaufbau meiner IT bin ich zwei Probleme bzw. Fragen angegangen, die ich schon viele Monate nicht so richtig gelöst habe.
- Wie bekomme ich meinen Drucker-Fehlkauf – den Samsung Xpress M2026w Laserdrucker – doch noch vernünftig im Netzwerk zu laufen?
- Was mache ich mit meinem uralten, überzähligen Mac Mini?
Der Samsung-Drucker bekommt von mir die Krone für meine schlechteste IT-Anschaffung ever. Billig war er, aber ständig hat das Dreckding Ärger gemacht. Dabei ist es nicht einmal so schlimm, dass man den Papierschacht nur halb voll machen kann und Papierstau oder nicht richtig eingezogene Blätter den Ausdruck behindern. Das Schriftbild ist zumindest ok. Aber – der Drucker ist funktioniert im W-LAN total unzuverlässig. Deshalb habe ich ihn nach viel Arbeit und Ärger irgendwann per USB an mein NAS angeschlossen. Von ein paar Rechnern – vor allen Dingen aus Linux heraus – war er damit halbwegs zuverlässig anzusprechen. Aber von mehreren anderen Rechnern ging auch dann einfach nichts. Nun habe ich beim Neuaufbau der IT in meinem Büro eine Weile experimentiert. Sowohl an mehreren Windows- als auch Linux-Rechnern wird der Drucker per USB erkannt. Aber im Netzwerk ist er – trotz Freigabe und allen denkbaren Einrichtungen – nicht anzusprechen. Man sieht ihn, aber er reagiert einfach nicht auf Druckaufträge oder die Abfrage des Status. In alle Richtungen:
- Linux -> Linux
- Linux -> Windows
- Windows-> Linux
- Windows-> Windows
Keine Chance. Ich habe sogar meinen Rasberry PI 1 als Druckserver ausprobiert, aber da wurde der Drucker noch nicht einmal richtig erkannt.
Dann kam mir mein zweites IT-Problem in den Sinn – was mache ich mit dem Mac Mini? Meine Abneigung gegen Apple-Produkte ist ja bekannt, wenn man meinen Blog liest. Die Dinger sind viel zu teuer, zu unfrei bzw. zensiert, zu eigenwillig zu bedienen und zu viel auf Schein statt Sein optimiert (Design statt Funktionalität). Aber in einem Punkt hatte ich meinen alten Mac Mini über die Corona-Krise schätzen gelernt. Über mehrere Monate musste ich mit meiner Band Corona-bedingt eine Pause hinsichtlich von Live-Proben einhalten. Aber wir hatten uns zu regelmäßigen virtuellen Proben mit JamKazam aufgerafft und das ging mit keiner anderen Hardware auch nur ansatzweise so gut wie mit dem Mac Mini. Seit wir aber wieder live proben können, habe ich einfach keinen Bedarf mehr an dem Mac Mini. Ich kann das macOS einfach nicht bedienen. Es ist mir (!) viel zu wenig intuitiv, unlogisch, beschränkt und unbequem.
Aber unter dieser unangenehmen Oberfläche und hinter dem ganzen lächerlichen Rummel um Apple befindet sich eine solide Basis. Denn der Drucker war am Mac Mini sofort eingerichtet (ok – das ging unter Linux und Windows am USB-Port auch) als auch direkt im Netzwerk verfügbar. Und das habe ich wie gesagt mit keiner anderen Konstellation hinbekommen.
Der alte Mac Mini von 2013 wird also sein – vermutlich 4. oder 5. – Leben in Zukunft als Druckserver fristen. Ohne Monitor, Tastatur oder Maus. Aber natürlich ist SSH- und VNC-Zugriff auf dem Teilchen eingerichtet – für alle Fälle.
Apropos „Für alle Fälle“: wenn die Sache mit Corona sich weiter so schlimm entwickelt, kann er (leider) vielleicht seinen Zwei-Job für virtuelle Proben mit JamKazam wiederaufnehmen :-(.
CronTab, Schedule und Python
Nachdem ich vor ein paar Wochen meinen neuen V-Server auch gleich auf eine neue Version von Ubuntu umgestellt hatte, musste ich sämtliche Webseiten wieder neu einspielen. Bis auf meine Webseite zum Gleitschirmfliegen, in der ich eine Webcam und Wetterdaten von einem Flughang bereitstelle, konnte ich auch alle Seiten problemlos wieder einspielen. Nur diese Seite (ein Joomla!-System) hatte herumgezickt und deshalb habe ich sie einfach neu aufgesetzt (jedoch mit WordPress). Aber ein Feature habe ich da auf die Schnelle nicht hinbekommen – das Kopieren und Sichern des aktuellen Bildes der Webcam, das minütlich mit FTP auf meinen V-Server geladen wird.
Es ist aber ganz hilfreich, wenn man über eine gewisse Zeitspanne verfolgen kann, wie etwa schon vor Ort befindliche Gleitschirme oder Windfahnen sich verhalten, um zu entscheiden, ob sich ein Tripp an den Hang lohnt. Ich wurde sogar explizit gebeten, dieses Feature wieder bereitzustellen.
Die originalen PHP-Skripte hatte ich noch alle, aber das Zeug war so zusammengefrickelt (wie so oft), dass ich erst einmal meine eigenen Codes nicht mehr verstanden habe.
Aber da ich parallel im Moment Themen sammle, die ich irgendwann in meinen wöchentlichen Tipps & Tricks zu Python bei LinkedIn Learning (LiL) verwenden kann, kam ich auf die Idee, das Kopieren doch mit Python statt mit PHP zu machen sowie auch das Schedulen vielleicht auch gleich mit Python. Es gibt ja dazu das sched-Modul und/oder die klassischen Module shutil, datatime und time. Dazu gibt es noch in der Community das zusätzliche Module schedule. Also habe ich mich damit eine Weile beschäftigt. Allerdings kam ich darüber über kurz oder lang auch auf die eigentlichen Crontabs von Linux/Unix. Und wenn man die genauer ansieht, ist es fast einfacher, die direkt zu schreiben, als sie von einem Framework wie dem schedule-Modul generieren zu lassen.
Auf der anderen Seite musste ich zudem noch meinen V-Server weiter konfigurieren. Dabei habe ich auf dem Weg nano nachinstalliert, denn ich greife ja per SSH auf den V-Server zu und mit Erschrecken festgestellt, dass da bisher mir nur vim zur Verfügung stand. Also so rudimentär will ich doch nicht mehr arbeiten.
In der Folge habe ich meine neu erstellen Python-Skripte zum Kopieren der Dateien und dem täglichen Löschen des Verzeichnisses (mein Server soll ja nicht volllaufen) hochgeladen und in die CronTab direkt eingebunden. Das geht ganz einfach und logisch, wenn man sich von der Syntax nicht abschrecken lässt.
- crontab -e öffnet die CronTab-Datei.
- Wenn man mit nano arbeitet, kann man mit Strg+o die Datei speichern und mit Strg+x den Editor verlassen. Mehr braucht man da eigentlich nicht zu wissen.
- Mit crontab -l kann man sich alle Cronjobs anzeigen lassen und
- mit crontab -r bei Bedarf alle Cronjobs löschen (was aber brutal ist, weil direkt alles weg ist).
Die eigentlichen Einträge in der CronTab sehen etwa so aus:
# m h dom mon dow command */2 8-20 * * * python3 [pfad]/copierereichenbach.py >> /var/www/vhosts/rjs.de/rb.autoren-net.de/thumb/log.txt * 5,23 * * * python3 [pfad]/loeschereichenbach.py
Das kopiert dann alle 2 Minuten in der Zeit von 8 bis 20 Uhr das aktuelle Bild der Webcam und um 5 und 23 Uhr wird das Verzeichnis gelöscht.
In Python selbst arbeite ich mit shutil.rmtree() und os.mkdir() beim Löschen des Verzeichnisses. Einfach alles weghauen und dann das Verzeichnis neu erstellen.
Beim Kopieren nehme ich shutil.copy2() und hänge an den Standarddateinamen einfach einen Timestamp an der von datetime.datetime.now().timestamp() geliefert wird.
Das Anzeigen der Bilddateien mache ich natürlich weiter mit PHP – da konnte ich eines meiner altern Skripts nach einer kleinen Anpassung wieder verwenden.
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
Mint Linux 20
Mittlerweile bin ich hinsichtlich Betriebssystemen Multisprachler. Selbst einen iMac Mini habe ich gelegentlich im Einsatz (für Remotesessions mit JamKazam), obwohl ich an die Apple-Welt einfach nicht ran will und den eigentlich nur einige Jahre zur iOS-Programmierung mit XCode gebraucht habe. Natürlich muss ich mit Windows arbeiten und in der Version 10 fand ich das Betriebssystem bisher auch durchaus gut. Aber die aktuelle Update-Politik von Microsoft ist ärgerlich und zudem würde ich niemals sicherheitskritische Dinge wie Onlinebanking auf einem Windows-PC machen. Da geht für mich einfach nichts über Linux. Linux ist halt sicher, schnell, bequem, mächtig, ressourcenschonend.
Wobei ich zugeben muss, dass ich im Moment aber nur zwei Rechner unter Linux laufen lasse – die zudem mit Dualboot mit Windows. Und auch meine virtuellen Maschinen mit Linux nutze ich selten. Dennoch – alles in Allem ist und bleibt Linux mein Lieblingsbetriebssystem, wobei ich gar nicht so sicher bin, welche Distribution mein Favorit ist. Aber irgendwie bin ich bei Mint Linux hängen geblieben.
Jetzt habe ich gerade in einer Computerzeitschrift gelesen, dass die Version 20 von Mint Linux freigegeben wurde und dabei ist mir erst bewusst geworden, dass ich bei meinem Linux-Hauptrechner (meinem Terra-Notebook) auf der Version 18 (Sarah) stehen geblieben bin. Die habe ich zwar regelmäßig auf den neusten Stand gebracht, aber eben nicht upgeradet. Die Version 19 habe ich mir nur in einer VM angesehen und verpasst, diese dann in die Praxis zu übernehmen.
Jetzt musste ich den Preis zahlen, denn ein direktes Upgrade von 18 auf 20 geht nicht. Wenn man in Linux Zwischenversionen auslässt, ist das Upgrade leider etwas aufwändiger.
Erst einmal musste ich mit der Aktualisierungsverwaltung auf 18.3 upgraden und dabei zuerst den Displaymanager von MDM auf LightDM wechseln (sudo apt install lightdm lightdm-settings slick-greeter, dann sudo apt remove –purge mdm mint-mdm-themes* und dann sudo dpkg-reconfigure lightdm mit anschließendem Reboot), wobei vorher bereits mit sudo apt install timeshift Timeshift zu installieren und für Snapshots auszuführen war.
Erst danach konnte ich das eigentliche Upgrade durchführen, wobei erst auf die Version 19, dann auf 19.3 mit der Aktualisierungsverwaltung und dann (vermutlich – die genauen Upgrade-Anweisungen kommen erst im Juli raus) mit der gleichen Befehlsfolge auf die Version 20 aktualisiert werden kann:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mintupgrade
mintupgrade check
mintupgrade download
mintupgrade upgrade
Wenn alle Rückfragen bejaht wurde und alles sauber durchgelaufen ist, kann man die Versionsnummer mit cat /etc/issue oder inxi -Sz oder auch lsb_release -a überprüfen.
Aber da die konkreten Upgrade-Features für die Version 20 wie gesagt im Juli rauskommen, lade ich mir die ISO-Dateien für XFce und Mate und installiere passende VM. Und darin werde ich mal die nächsten Tage testen, ob Mint Linux 20 wirklich so gut ist, wie es in dem Beitrag in der Computerzeitschrift beschrieben wurde.
Mein Linux-Hauptrechner ist aber zumindest auf die Version 19.3 hochgeschoben.
Speed it up – Vol 2
Ich bin verwirrt – ich habe die MTU-Werte bei meinem Linux-Rechner als auch die iMac Mini in Eppstein kontrolliert und beide stehen auf dem ungünstigen Wert von 1.500. Trotzdem ist die Download-Geschwindigkeit deutlich über den Werten, die ich mit meiner Windows-Workstation in Bodenheim erreiche. Bei dem iMac kann ich das auf die bessere Leitungsqualität in Eppstein schieben, aber warum reproduzierbar mein altes Linux-Notebook in Bodenheim einen bessern Datendurchsatz hat als die viel potentere Windows-Workstation am gleichen DSL-Anschluss, bleibt mir ein Rätsel. Aber auch mein relativ neues Huawei-Notebook (mit Abstand der leistungsfähigste PC in meiner Armada von mehr als ein Duzend Rechnern) schafft nur unwesentlich bessere Downloadergebnisse als die Workstation. Auf jeden Fall unter den Werten von dem alten Linux-Notebook – trotz dessen ungünster MTU-Einstellung.
Es bleibt mir eigentlich nur der Rückschluss, dass Windows das Problem ist und sowohl Linux als auch das macOS einfach besser sind. Auch wenn die Tests nach der Anpasung des MTU-Werts in Windows reproduzierbar weniger schlechte Messwerte im Download liefern.