Mein Entwickler-Tipp der Woche bei LiL (LinkedIn Learning) behandelt dieses Mal einen kleinen, aber feinen Trick, um sichere Typvergleiche durchführen zu können. Der Trick an sich ist unabhängig von Python und in einigen anderen Sprachen wie JavaScript sogar noch nützlicher.
Schlagwort: LiL
Per pickle-Modul Objekte persistent machen – der neue Python-Entwickler-Tipp
Der Name des Moduls (pickle) klingt vielleicht etwas komisch, aber es ist im Standard-API von Python eine wunderbar einfache Möglichkeit, um damit Objekte persistent zu machen. Mein Entwickler-Tipp der Woche bei LiL (LinkedIn Learning) behandelt genau dieses Thema und ist gerade veröffentlicht worden.
Aufnahmen im Kasten
Die Aufnahmen für mein neustes Videotraining für LiL (LinkedIn Learning) sind im Kasten und es stehen jetzt nur noch ein paar Korrektur- und Nacharbeiten an. Nach dem Chaos-Tag gestern mit diversen Problemen ist es dann heute ganz ok gelaufen. Nur hatte ich auch heute mehrere Abstürze – sowohl von der Aufnahmesoftware, aber auch Browser-Tabs bis hin zu Windows selbst. Letzte Woche hatte ich das Problem bei meiner Remote-Schulung schon einmal, aber da hatte ich das auf das Meeting-Tool geschoben. Das hatte ich vorher noch nie verwendet und einfach als instabil eingestuft.
Nun scheint es mir aber, dass ich bei meinem Notebook ein Problem habe. Dabei fallen mir zwei Gründe ein, die dafür verantwortlich sein könnten:
- Der Platz auf meiner Festplatte ist extrem eng und ich habe schon an der Auslagerungsdatei geknapst, um da etwas Luft zu bekommen. Neben dem Auslagern von Programmen auf eine externe SSD. Aber da wird die Luft verdammt eng.
- Ich arbeite bei Remote-Schulungen und Videoaufnahmen mit drei Bildschirmen. Neben dem Notebookbildschirm schließe ich über Adapter zwei externe Monitore an und an den Adaptern hängen zusätzlich externe Festplatten und andere Periferiegeräte. Das ist ein ziemliches Kuddel-Muddel und möglicherweise kommt da Windows mit den Kanälen durcheinander.
Ich muss beide mögliche Ursachen untersuchen. So Abstürze habe ich sonst nicht und die sind verdammt lästig.
Wieder im „Studio“
Heute habe ich wieder mit neuen Aufnahmen für LiL (LinkedIn Learning) begonnen. Aber die Sache lässt sich ungewöhnlich mühseelig an. Ständig knallen mir Fehler während der Aufnahme rein. Von Rechnerabstürzen über Authentifizierungsprobleme bis hin zu Fehlern bei den Ressourcen. Alles dabei :-(.
Aber so ganz langsam finde ich in die Spur. Ich habe genug Zeit einkalkuliert und hoffe, dass es dann ab morgen besser läuft.
Google My Business
Vor einiger Zeit ist mir bewusst geworden, dass „Hinz und Kunz“ bei Google Maps mit ihren Unternehmen eingetragen sind. Selbst mit den Kleinsten. Klar – das habe ich im Grunde schon häufig „gesehen“, aber eben nicht im klassischen Sinn „wahrgenommen“. Schon gar nicht, dass ich das mit einem „Geschäft“ – also „My Business“ – auch machen sollte. Warum denn nicht?
Gut – nicht zuletzt durch Corona bin ich beruflich mehr oder weniger bis Anschlag ausgelastet und Marketing bzw. Werbung für neue Aufträge muss ich im Moment nicht machen. Aber es ist natürlich nicht klar, dass die Situation auf Dauer so bleibt. Gibt ja den Spruch, dass man für die Krise vorsorgen sollte, wenn es gerade läuft.
Also habe ich mich in Google Maps mit meinen beiden Standort eingetragen. Und wenn es nur Traffic auf meine Webseite leitet und damit meine Bücher und Onlinevideos bei LiL gekauft werden.
Jetzt hat mir nach der Anmeldung Google Post zugeschickt unter dem Stichwort „Google My Business“. Mit einem Gutschein für Google Ads. Den kann ich in der Tat gut nutzen, um meine im Eigenverlag publizierten Bücher ein wenig zu promoten. Denn da gibt es mittlerweile gleich 4 Stück.
Reguläre Ausdrücke – Kurz und bündig | |
Reguläre Ausdrücke – Kurz und bündigSeitenzahl: 104 Seiten ISBN: 9783753136493 Verkaufspreis: 11,99 € |
|
XML – Kurz und bündig | |
XML – Kurz und bündigISBN: 9783753133423 Format: DIN A5 hoch Seiten: 128 Softcover 14,99 € Erscheinungsdatum: 13.12.2020 |
|
COBOL – Grundlagenkurs für Ein- und Umsteiger | |
COBOL – Grundlagenkurs für Ein- und UmsteigerSeitenzahl: 188 Seiten Sprache: Deutsch ISBN: 978-3-753139-03-6 Verkaufspreis: 21,99 € |
|
Aufzucht und Pflege kleiner Webseiten mit HTML – Grundlagen der Webseiten-Erstellung | |
Aufzucht und Pflege kleiner Webseiten mit HTML – Grundlagen der Webseiten-ErstellungISBN: 9783741828829 Format: DIN A5 hoch Seiten: 300 Erscheinungsdatum: 01.07.2016 |
Mein Tipp der Woche – plattformneutrale Skripte mit Python
Im Rahmen meiner Serie mit wöchentlichen Tipps & Tricks zu Python bei LinkedIn Learning (LiL) ist das nächste Video draußen. Es geht die Woche um die Erstellung von plattformneutralen Skripten mit Python.
Aktueller Tipp der Woche bei LiL – die with-Anweisung in Python
Der Apfel fällt nicht weit usw, usw …
Obwohl ich mich als einen eher ruhigen und introvertierten Typen sehe, verdiene ich dessen ungeachtet überwiegend mit „Reden vor Leuten“ im weitesten Sinn mein Geld. Wenn es fachlich wird und ich es bezahlt bekomme, funktioniert das anscheinend ganz gut. Immerhin habe ich einige Jahrzehnte Schulungen, Vorlesungen und Vorträge damit ja schon Erfahrung sowie nicht zuletzt mit meinen Kursen bei LiL samt der neuen Serie mit wöchentlichen Tipps & Tricks zu Python bei LinkedIn Learning. Und anscheinend gilt der alte Spruch vom Apfel, der nicht weit …
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.
Tipp Nummer 2 der wöchentlichen Python-Entwicklertipps bei LinkedIn Learning
Letzte Woche ist meine Serie mit wöchentlichen Tipps & Tricks zu Python bei LinkedIn Learning (LiL) gestartet, in denen ich ergänzend zu meinen „normalen“ Kursen bei LiL über einige Monate jede Woche neu einzelne Videos mit Python-Entwicklertipps veröffentliche.
Der heute veröffentlichte Beitrag zeigt, wie man in Python über ein Objekt iterieren kann. Die Sache passt ganz gut zu dem heutigen Tag, denn genau das habe ich so ziemlich als Letztes in meiner aktuellen Python-Schulung, die ich über die Woche als Remoteveranstaltung halte, vorgeführt.
Python-Entwicklertipps: Jede Woche neu bei LinkedIn Learning
Heute starten meine wöchentlichen Tipps & Tricks zu Python bei LinkedIn Learning (LiL). Ergänzend zu meinen „normalen“ Kursen bei LiL werden ab sofort über einige Monate jede Woche neu einzelne Videos mit Python-Entwicklertipps veröffentlicht.
Der heute als „Starttipp“ veröffentlichte Beitrag zeigt, wie man in Python eine angepasste To-String-Funktionalität bereitstellen kann.
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.
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.
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.
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.
Weltweit ältester Python aus Grube Messel

Neuste Tagesmeldung auf hessenschau.de:
Weltweit ältester Python aus Grube Messel
Weihnachtsgeschenk von LinkedIn Learning
Eben kam ein etwas verfrühtes Weihnachtsgeschenk von LinkedIn Learning (LiL) an. Vor einigen Wochen konnte sich alle LinkedIn-Instructors melden, wenn sie eine Kappe aus einem gewissen Kontingent haben wollen. „First come first serve“ oder so. Und bei mir hat es geklappt :-).
KI und Datenauswertung von Facebook anscheinend komplett fehlerhaft
Da redet alle Welt von „Künstlicher Intelligenz“ (KI oder AE) und „Big Data“ bzw. der automatisierten Datenanalyse und gerade Facebook scheint es nicht hinzubekommen, aus Daten die richtigen Schlüsse zu ziehen. Ich werde seit einigen Monaten mit irrelevanter Werbung genervt. Dummerweise habe ich mich auf das Spiel eingelassen und die dann versucht zu verbergen und auch explizit als „irrelevant“ angeklickt. Seit dem bekomme ich sie immer mehr angezeigt. Rein aus Ärger habe ich das Prozedere jetzt gut 20 – 30 Mal gemacht und jetzt bekomme ich als Resultat diese Werbung ausschließlich vorgesetzt.
Frei nach dem Motto. „Dich interessiert das nicht und du wirst es nie kaufen? -Dann nerven wir so lange, bis du aufgibst!“
Es ist so auffällig, dass es nur so sein kann, dass in irgendeinem Auswertealgorithmus von Facebook ein Pluszeichen und ein Minuszeichen wohl vertauscht sind. Je weniger ein Thema interessant ist, desto mehr Werbung aus dem Bereich schicken wir. Das sollten die Werbetreibenden auch mal beachten, bevor sie der Datenkrake Geld für vollkommen falsch platzierte Werbung in den Rachen werfen. Und als Anwender darf man nicht eine der angebotenen Interaktionslinks von Facebook anklicken. Auch wenn man da anscheinend gewisse Dinge einstellen kann – das wird in jedem Fall negative Folgen haben :-(.
Vielleicht sollten die Programmierer bei Facebook mal meine Trainings bei LinkedIn Learning zur Datenanalyse ansehen.
Tools mit Python entwickeln – neuer Onlinekurs
Und da isses ja – mein neues Onlinetraining von LinkedIn Learning (LiL). Gerade rechtzeitig zum Wochenende veröffentlicht. Thema bzw. Titel ist „Tools mit Python entwickeln – Software & Tools„.
Es handelt sich wieder einmal um eine US-Adaption, in der die Strategien und Techniken der Erstellung von Tools mithilfe von Python ausgearbeitet werden.