Der Entwicklertipp der Woche ist da – OpenCV unter Python nutzen

Nächste Woche werde ich neue Aufnahmen für LinkedIn Learning (LiL) einspielen, aber wie jede Woche kommt auch in der Mitte dieser Woche wieder ein Entwicklertipp der Woche zu Python heraus. Es geht um ein spezielles Framework, um unter Python Bilder und Videos anzuzeigen – OpenCV und das ist eine freie Programmbibliothek mit Algorithmen für die Bild- und Videoverarbeitung. Diese kann unter Python, aber auch anderen Sprachen verwendet werden. Die Bibliothek wird vor allen Dingen beim Deep Learning verwendet, kann aber auch einfach für das Anzeigen von Bildern und Videos verwendet werden. Und darauf konzentriert sich dieser Tipp der Woche.

Bilder und Videos mit OpenCV anzeigen aus dem Kurs „Python-Entwicklertipps: Jede Woche neu“ von Ralph Steyer

Dynamische Klassen und Typinformationen generieren – aus dem LiL-Tutorial zu Python

In Python kann man mit type nicht nur zur Laufzeit den Typ eines Objektes bestimmen, sondern sogar dynamisch eine Klasse generieren. Und genau das ist das Thema meinem Entwickler-Tipp der Woche bei LiL (LinkedIn Learning).


Dynamische Klassen und Typinformationen generieren aus dem Kurs „Python-Entwicklertipps: Jede Woche neu“ von Ralph Steyer

eval is evil – der aktuelle Python Entwickler-Tipp

Die Woche ist wieder rum und mein neuer Entwickler-Tipp der Woche bei LiL (LinkedIn Learning) ist freigegeben. Dieses Mal behandele ich das Thema Strings evaluieren in Python. Das geht mit der eval-Funktion, die aber nicht ganz unkritisch ist. Der Tipp stammt – wie die anderen bisher veröffentlichten Tipps – aus dem Kurs: Python-Entwicklertipps: Jede Woche neu.

Shallow-Copy: tiefes und flaches Kopieren – mein aktueller Python-Tipp der Woche

Nachdem als eine Art Belohnung für die gestiegenen Belastungen während der Corona-Krise letzte Woche LinkedIn alle Mitarbeiter weltweit in Urlaub geschickt hat, gab es auch von mir in dieser Woche keinen neuen Entwickler-Tipp der Woche zu Python. Aber seit Montag ist dieser Urlaub vorüber und ich habe vorgestern und gestern schon wieder mit einem Ansprechpartnern bei LiL wegen neuer Aktionen gesprochen. Und es gibt ab heute den nächsten Tipp der Woche.

Dabei geht es um Referenzen und Kopien in Python im Allgemeinen und die Unterschiede zwischen flachem und tiefem Kopieren im Speziellen. Python kennt verschiedene Versionen von Kopiervorgängen. Diese haben Auswirkungen darauf, was kopiert und was nur referenziert wird. Python zaubert im Hintergrund ganz gewaltig,

Shallow-Copy: tiefes und flaches Kopieren aus dem Kurs „Python-Entwicklertipps: Jede Woche neu“ von Ralph Steyer

Kein Tipp der Woche – LinkedIn macht Urlaub

Wir Autoren wurden schon vor einiger Zeit darüber informiert und die Tage stand es auch in diversen Medien – LinkedIn hat alle Mitarbeiter weltweit in Urlaub geschickt. Nicht aus der Not heraus, sondern als eine Art Belohnung für die gestiegenen Belastungen während der Corona-Krise. Davon profitieren auch meine Kontaktpersonen bei LiL und deshalb gibt es die Woche keinen neuen Entwickler-Tipp der Woche zu Python. Aber es gibt ja schon ein paar, die über die letzten Wochen veröffentlicht wurden und nächste Woche geht es weiter mit neuen Tipps.

Es ist wieder Zeit für meinen Tipp der Woche

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.

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.

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.

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.

Skype for Business

Gerade habe ich meine Python-Onlineschulung beendet. Dabei habe ich das erste Mal Skype for Business verwendet (Kundenwunsch). Bisher habe ich immer nur mit Teams geschult bzw. privat Zoom und JamKazam eingesetzt. Aber Skype for Business hat sich wider Erwarten ganz gut geschlagen. Gelegentlich ist meine Bildschirmpräsentation zusammengebrochen und in der letzten Stunde des letzten Tags bin ich 1x aus der Session geflogen – aber sonst ist das System stabil gelaufen.

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.

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

 

Nächste Woche geht es richtig los mit neuen Videoaufnahmen für LinkedIn Learning (LiL).
Das Jahr 2021 startet für mich also direkt mit Videoaufnahmen.

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.

 

 

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.

Wie beim Brezelbacken – das nächste Online-Training ist da

Ich habe über das Jahr wirklich sehr viele Videotrainings für LiL (LinkedIn Learning) eingespielt und nächste Woche geht es gleich weiter mit Aufnahmen zu einem Framework. Aber die Woche ist erst einmal wieder ein Ergebnis meiner bisherigen Aufnahmen im Sommer veröffentlicht worden. Der Titel ist „Python für Fortgeschrittene – Fortgeschrittene Python-Funktionen kennenlernen und optimal nutzen„.

Es handelt sich bei dem Training um eine Adaption eines US-Kollegen, das sich an Python-Entwickler richtet, die tiefer in die mächtige Programmiersprache einsteigen und seine Leistungsfähigkeit und Flexibilität voll ausnutzen wollen.