Ausnahmsweise Donnerstag

Diese Woche ist erst am Donnerstag der neue Entwickler-Tipp zu Python bei LinkedIn Learning freigeschaltet worden. Es geht hier darum, wie man aus Python eine automatische Quelltextdokumentation generieren kann. So eine Dokumentation von Softwareprojekten ist eine oft leidige, aber immens wichtige Aufgabe und in nahezu allen modernen Programmiersprachen gibt es Möglichkeiten, diese Dokumentation aus dem Quellcode heraus etwas zu erleichtern, indem man bestimmte Token in den Quellcode schreibt und daraus eine HTML-Dokumentation oder auch in einem anderen Format erzeugt werden. In Python kann man etwa pydoc bzw. dessen Fork pydoc3 verwendet werden, was in dem Tipp gezeigt wird.

Werte mehreren Variablen in einer Zeile zuweisen – neu in meinem Tutorial zu Python

Auch wenn ich derzeit in Marburg auf Schulung bin, erscheint natürlich am Mittwoch bei LinkedIn Learning wieder ein neuer, aktueller Entwickler-Tipp zu Python. Thema ist die elegante Zuweisung der Werte bei mehreren Variablen.

Neu erschienen – mein JavaFX Grundkurs bei LiL

Über den Sommer habe ich mehrere Training bzw. Aktualisierungen für LinkedIn Learning eingespielt, deren endgültige Fertigstellung bzw. Produktion sich dann doch ziemlich hingezogen haben. Nicht zuletzt Corona hat Arbeitsabläufe und Kapazitäten sowie Prioritäten im Griff,. Aber die Woche ging es wie beim Bretzelbacken und neben der Aktualisierung meines Training zu den Neuerungen der verschiedenen Versionen von Java und meinem aktuellen Entwickler-Tipp zu Python ist diese Woche auch der JavaFX Kurs erschienen. Dabei geht es neben JavaFX auch um FXML und den Sceen Builder sowie NetBeans, Maven, Ant, Gradle, JDK etc..

Ich habe schon früher Kurse zu JavaFX eingespielt (sogar schon zu Zeiten von Video2Brain (V2B), aber auch dann Aktualisierungen für LiL), aber die sind mittlerweile komplett veraltet. Der neue JavaFX Kurs ist deshalb vollkommen neu konzipiert und vollständig neu eingespielt. Außer ein paar Ideen für Beispiele ist nichts mehr identisch zu den alten Kursen.

Was übrigens auch JavaFX als Technologie betrifft. Diese hat sich zum Teil komplett inkompatibel zu älteren Versionen weiterentwickelt. Offiziell heisst sie jetzt sogar nicht mehr JavaFX, sondern OpenJFX und wird nicht mehr von Orcale verantwortet, sondern einer OpenSource-Organisation. Wobei sich der Bezeichner „OpenJFX“ wohl nicht so richtig etablieren will und man deshalb an den meisten Stellen doch wieder den ursprünglichen Bezeichner „JavaFX“ beibehält.

Aktualisierung meines Trainings zu den Neuerungen von Java

Bei LinkedIn Learning habe ich ein Training am Start, das sich um die Neuerungen der verschiedenen Versionen von Java kümmert. Bekanntlich erscheinen neue Versionen von Java mittlerweile alle 6 Monate und deshalb wird dieses Training immer wieder erweitert bzw. auf den neuen Stand gebracht. Derzeit behandle ich in diesem Training die Neuerung von Java 14, 15 und 16. Die Neuerungen der Version 17 spiele ich Ende dieser Woche neu ein und dann wird das Training noch einmal aktualisiert/erweitert und auf eine Art „Endstand“ gebracht. Denn die Version 17 ist nach vielen Jahren wieder eine LTS-Version, die in der Praxis auf viele Jahre die relevante neuste Version bilden wird. Wie der Name LTS – Long-Term-Support – aussagt, werden nur diese Versionen explizit über einen langen Zeitraum unterstützt. Während private Programmierer gerne schnell auf neue Versionen umsteigen, wird man in der professionellen Programmierung bzw. bei Business-Anwendungen fast immer nur solche LTS-Versionen berücksichtigen.

Neuer Tipp zum Verketten von Vergleichsoperatoren

Bei LinkedIn Learning ist wieder ein aktueller Entwickler-Tipp zu Python verfügbar. Es geht dieses Mal um die Verkettung von Vergleichsoperatoren. Dabei geht es darum, mehrere Bedingungen zu verknüpfen und über eine einfache Schreibweise das zu machen. Und wer es noch nicht mitbekommen hat – in der Woche der Veröffentlichung ist der aktuelle Tipp frei (d.h. kostenlos) verfügbar.

Neu im Python-Tutorial – Argumente mit dem Scatter-Operator ein- und auspacken

Argumente mit dem Scatter-Operator ein- und auspacken ist das Thema in meinem aktuellen Entwickler-Tipp zu Python aus meinem Tutorial bei LinkedIn Learning. Python stellt damit interessante Möglichkeiten bereit, um sequentielle Datenstrukturen zu packen und zu entpacken. Man spricht in dem Fall oft auch von dem Scatter-Operator. Wobei dieser Begriff nicht standardisiert ist.

F-Strings zur Verwendung von Variablen in Strings – ein neuer Tipp aus meinem Tutorial zu Python

Um die Verwendung von F-Strings bei Variablen geht es in meinem aktuellen Entwickler-Tipp zu Python aus meinem Tutorial bei LinkedIn Learning. Es geht darum, dass man Variablen direkt in einem String auswerten lassen kann. Das vermeidet mühselige und oft unübersichtliche Stringverkettungen.

YouTube-Downloader erstellen – aus meinem Tutorial zu Python

Mit Python und geeigneten Frameworks wird der Download von frei zugänglichen Videos fast zum Kinderspiel. Das zeige ich im aktuellen Entwickler-Tipp zu Python bei LinkedIn Learning. Sie sehen in dem Tipp, wie Sie das auf einfache Weise mit einem YouTube-Downloader als Grundlage für eigene Erweiterungen nutzen können – auf Basis eines Frameworks mit Namen pytube. Und bevor wir jetzt in die falsche Richtung denken – es geht nicht um einen YouTube-Downloader, der illegale Inhalte laden kann. Geschützte Dateien werden damit nicht geladen, aber wir können damit freie Videos laden, freie Multimediadateien.

Die REST-API mit Python nutzen – neu in meinem wöchentlichen Tutorial zu Python

Mittwoch und bei LinkedIn Learning gibt es wieder einen neuen Entwickler-Tipp zu Python. Mit der REST-Schnittstelle erhält man zusätzliche Flexibilität in Python, um Management-Aufgaben durchzuführen aber auch automatische Informationen zu nutzen. Python bietet sich gerade zu ideal für die Zusammenarbeit an. Sogenannte Web Services stellen standardisierte Schnittstellen bereit, womit man über das Internet kommunizieren kann. Genau genommen können Sie Dienste in Anspruch nehmen, die in einer standardisierten Form bereitgestellt werden. Das kann man auch aus Python heraus nutzen. Das sogenannte RESTful-API oder allgemein Rest ist eine solche Programmierschnittstelle, die auf HTTP-Anfragen reagiert. Im Wesentlichen unterscheidet man hier zwischen den verschiedenen Methoden, die man mit HTTP-Daten anfordern kann. Get, Post, Put und Delete. Und in Abhängigkeit von diesen Methoden können gewisse Dinge bereitgestellt werden. Die Antwort von einem Rest oder RESTful Web Service liegt in der Regel in Json oder dem XML-Format vor und Python nutzt als Basis für REST oft das Modul requests.

Und Action – LAMAX W9.1

Ich habe eine neue Action Cam! Was sowohl beruflich als auch für die Freizeit von Bedeutung ist.

Für meinen Fliegerblog nehme ich seit vielen Jahren Videos und Bilder mit einer Action Cam auf, die ich meist am Helm befestigt habe. Gelegentlich brauche ich so ein Multimediamaterial aber auch beruflich, denn wenn ich etwa Videos in meinen Videotraining bei LinkedIn Learning zum Zeigen von Mutimedia-Features verwenden will, ist das mittlerweile ein echtes Rechteproblem – bei fremden Material. Also nehme ich dazu selbst aufgenommene Bilder und Videos, aber im Fall von Audiodateien auch Musik, die selbst komponiert und eingespielt habe oder die von meiner Band stammt.
Nun kam als Action Cam bei mir bisher eine GoPro zum Einsatz. Eine GoPro der 2. Generation! Was darauf hindeutet, dass die schon viele Jahre alt ist – ca 12 Jahre genau genommen. Das merkt man an der Bildqualität, aber das ist nicht einmal das Schlimmste – die GoPro muckt rum. Immer mehr. Im Grunde schon seit etwa 1 Jahr. Ich habe sie vor einiger Zeit zerlegt, richtig sauber gemacht und zurückgesetzt und danach hat sie teils wieder schöne Dauerbilder gemacht, aber sich auch teils vollkommen ohne Anlass abgeschaltet. Nun hat meine GoPro 2 über viele Jahre gute Arbeit geleistet, obwohl ich sie wirklich oft verwendet und ziemlich hart rangenommen habe und die Cam hat ihr Geld wirklich verdient. Also sei es ihr verziehen, dass sie so langsam müde wird.
Nur – mit dem Zustand, dass das Ding einfach nicht mehr zuverlässig ist, habe ich mich nun längere Zeit herumgeschlagen und mehrere Flugtage keine Bilder oder Videos sauber hinbekommen. Für den kommenden Black-Friday hatte ich daher schon seit Monaten vor, nach einem Ersatz zu schauen. Aber der Ausfall am letzten Wochenende hat mich dann doch ziemlich geärgert, weil ich einen wirklich schönen Flug mit dem Gleitschirm hatte, von dem ich gerne die Aufnahme gesehen hätte.
Damit war die GoPro einfach reif. Ich habe über Wochen bereits Preise und Testberichte der verschiedenen aktuellen GoPros als auch mehrerer Cams von Billig-China-Marken verfolgt. Ich hatte in der Folge mehrere Billig-China-Cams in der Auswahl, denn im Grunde brauche ich die super Features der teureren GoPros nicht. Ich war kurz davor, mich für eine der China-Cams zu entscheiden, aber dann habe ich mir für alle infrage kommende Cams Referenzvideos auf YouTube angesehen. Und die Qualität fand ich erschreckend schlecht. Besonders dann, wenn das gleiche Material von einer teuren Cam von GoPro oder DJI im Vergleich gezeigt wurde.
Durch Zufall bin ich beim weiteren Suchen nach GoPro-Alternativen in einer seriösen Computerzeitschrift auf einen Test gestossen, bei dem eine Cam mit Namen LAMAX W9.1 REAL 4K 60fps als ungewöhnlich gut in der Klasse unter 200 EUR bewertet wurde. Die ist wohl nicht wirklich bekannt und hatte auf Amazon gerade einmal 3 Rezensionen – im Gegensatz zu zig Tausenden von Rezensionen bei den China-Cams oder den GoPros und anderen Platzhirschen. Wobei die Rezensionen bei den China-Cams in großen Umfang durch Geschenke bei 5-Sterne-Bewertungen gekauft bzw. verzerrt werden und dementsprechend für die Tonne sind.
Aber der Test in der PC-Zeitschrift war so überzeugend, dass ich kurzentschlossen am Sonntag – noch gefrustet von dem Ausfall der GoPro an dem Flugtag – die Lamax-Cam bestellt habe. Sie war auch nicht teurerer als die etwas besseren China-Cams, die auf Amazon so prägnant beworben werden, und ich habe mich einfach auf den Test verlassen. Erst nach der Bestellung habe ich gemerkt, dass die Lamax W9.1 auch gar keine China-Cam ist, sondern aus Tschechien kommt. Was in Hinsicht auf Geld in der EU lassen auch von Vorteil ist.
Vorhin kam die W9.1 an und natürlich musste ich sie gleich ausprobieren. Was gleich mit dem Problem verbunden war, dass nur eine Micro-SD als Speichermedium geht und ich sowas ich nicht da habe. Nur in einem SmartPhone für alte Daten. Die Daten darauf habe ich dann gesichert und die Karte in die Cam eingelegt. Mit dem Resultat, dass die SD-Karte zu langsam wäre. Alle Videos mit besserer Qualität werden verweigert. Erst bei HD mit 30 fps hat sich die Cam erbarmt und ein Video aufgenommen.

Aber eigentlich wollte ich erst einmal sehen, wie die W9.1 sich bei 4K schlägt. Ich war ob des recht niedrigen Preises unsicher, ob die Cam wirklich eine gute Wahl ist und wollte sie erst einmal ausführlich testen. Der Plan – wenn sie nichts taugt, soll sie zurückgehen und dann gibt es am Black Friday doch eine GoPro.

Das Thema ist durch.

Nach den kurzen Tests fällt mir nur negativ an der Lamax auf, dass die Verschlüsse sehr schwer bzw. fummlig aufzumachen sind und bei Dunkelheit die Bildqualität mau ist. Selbst das Video in der niedrigen Qualität ist jedoch eine Revolution gegenüber dem, was ich von der GoPro 2 gewohnt war. Wenn ich eine schnelle Micro-SD dann habe und 4K-Aufnahmen mache, kann das eigentlich nur noch besser werden. Dazu wird mit der Cam ein Zubehör geliefert, dass kaum ein Wunsch offen bleibt. Auch die App samt der WiFi-Verbindung ist der Burner.
Ich bin gespannt, wie die Qualität dann bei echten Aufnahmen wird, aber spontan bin ich von dem Ding begeistert. Ich frage mich echt, was eine GoPro der neuen Generation besser leistet, um den mehrfachen Preis zu rechtfertigen? Ich müsste mal Videos im direkten Vergleich sehen.

Reguläre Ausdrücke in Python

Bei LinkedIn Learning gibt es seit heute wieder einen neuen Entwickler-Tipp zu Python. Reguläre Ausdrücke in Python sind das Thema. Reguläre Ausdrücke sind sehr mächtige Features, um Suchausdrücke in Form von Pattern zu definieren. Das re-Modul ist der Zugang in Python, das in diesem Video vorgestellt wird. In Python ist das Modul re die Basis. Nicht die einzige Möglichkeit, aber das ist ein Standardmodul, mit dem man reguläre Ausdrücke formulieren und vor allen Dingen verwerten kann. Das Interessante ist nicht die Formulierung, das ist die Verwertung. Das heißt, es gibt Methoden, um reguläre Ausdrücke, also Such-Pattern in irgendeiner Form zu verarbeiten, nach Übereinstimmungen zu suchen, aber beispielsweise auch Texte an gewissen Stellen aufzusplitten und ähnliche Dinge.

Reference Counting – Länger und länger

Mit 12:19 Minuten ist mein aktueller Entwicklungs-Tipp der Woche bei LiL schon gewaltig lang für ein Video. Aber zu dem Thema „Reference Counting“ gibt es bei Python einfach eine Menge zu sagen. Dabei geht es um eines der geheimnisvollsten Dingen in Python – die Referenznummer bei Objekten. Die Details und Auswirkungen sind sehr spannend und erklären die manchmal etwas „eigenartigen“ Verhaltensweisen von Python. Das betrifft etwa die Technologie der Speicherbereinigung, aber nicht nur diese.

Properties vs Getter und Setter in Python

Heute ist wieder der Regeltag, an dem bei LinkedIn Learning mein aktueller Entwickler-Tipp zu Python veröffentlicht wird. Getter und Setter auf der einen Seite und Properties auf der anderen Seite stehen im Fokus. So genannte Properties sind in vielen Sprachen als Ersatz von Gettern und Settern sehr populär geworden. Auch Python kennt diese.

Mein bisher längster Entwickler-Tipp zu Python

Gerade habe ich bei LinkedIn Learning nachgesehen, welcher aktueller Entwickler-Tipp zu Python die Woche veröffentlicht wurde. Denn die Reihenfolge, wie die Tipps freigeschaltet werden, ist nicht zwingend identisch zur Reihenfolge, wie ich sie aufgenommen habe. Ich habe dazu zwar gewisse Vorschläge eingereicht, aber die habe ich weder in Erinnerung noch ist es sicher, dass die auch so umgesetzt werden. Deshalb bin ich in der Tat jede Woche gespannt, welches Thema für die jeweilige Woche angesagt ist.

Die Woche geht es um diverse Spezialitäten bei Lambda-Ausdrücken. Mit über 10 Minuten ist dieser Entwickler-Tipp wohl auch der bisher umfangreichste, wenn ich das recht im Blick habe. Aber es gibt eine ganze Menge zu Lambda-Ausdrücken unter Python zu sagen. Einfach selbst überzeugen.

Qualitätskontrolle mit Linting – Neues in meinem Tutorial zu Python

Bei LinkedIn Learning gibt es wieder einen neuen Entwickler-Tipp zu Python. Thema ist diese Woche die Qualitätskontrolle mittels Linting. Beim Linting geht es allgemein um die Verbesserung der Softwarequalität. Für die Qualität von Software es ist nicht nur elementar, dass diese fehlerfrei ist. Es gibt weitere Kriterien, die teils standardisiert getestet werden können. Unter Python kann man das mit PyLint machen. Hervorragend wird das Linting dabei in Visual Studio Code integriert.

Doppelte Verschiebung

Für Mittwoch hatte ich eine UML-Einzelschulung auf der Agenda. Remote und nur einen Tag, aber über Nacht ist der Teilnehmer krank geworden. Er hat um eine Verschiebung gebeten und da ich den Monat ziemlich flexibel bin, habe ich die auf den heutigen Donnerstag verschoben. Interessanter Weise ist aber auch mein wöchentlicher Entwickler-Tipp zu Python erst am heutigen Donnerstag freigeschaltet worden. Also gleich eine 2-fache Verschiebung. Im Entwickler-Tipp geht es um das Debuggen von Python-Quellcode in Visual Studio Code.

Lambda-Ausdrücke bei Iteratoren – der aktuelle Tipp aus meinem Tutorial zu Python

Heute waren die Kollegen bei LinkedIn Learning aber verdammt früh schon am Arbeiten, denn bereits vor 8:00 Uhr ist mein wöchentlicher Entwickler-Tipp zu Python schon veröffentlicht worden. Im aktuellen Tipp nehme ich mir den Einsatz von Lambda-Ausdrücken bei Iteratoren vor. Da zeigt sich eine der ganz großen Stärken von Python, denn diese Syntaxkonstruktion ist immens effizient.

»Herzlichen Glückwunsch! Dein Kurs gehört zu den beliebtesten Kursen des Jahres!«

Das war der Betreff der Mail aus Graz von LinkedIn Learning (LiL), die ich gerade bekommen habe. Inhalt war die Mitteilung, dass mein Kurs Python lernen vom 1.9. bis 15.10.2021 freigeschaltet ist und in der Kampagne »Beliebteste Kurse auf LinkedIn Learning« für den deutschsprachigen Raum vorgestellt wird. Na, da freue ich mich doch wie Bolle 🙂

Hier ist ein kurzer Abstract zu der besagen Kampagne von LiL:

Die Kampagne im Überblick

Wir befinden uns mitten im #GreatReshuffle, einer Zeit, in der Berufstätige ihre Karriere mehr denn je selbst in die Hand nehmen und sich in ihren aktuellen Unternehmen und in neuen Unternehmen neu positionieren. Deshalb sind wir besonders begeistert, nun bereits zum fünften Mal die jährliche Liste der beliebtesten Kurse bekanntzugeben. Damit helfen wir Lernenden, die richtigen Kompetenzen zu erwerben, um ihren nächsten Karrieresprung vorzubereiten.

Mehr als 5 Millionen Berufstätige haben die 20 beliebtesten Kurse dieses Jahr angesehen. Im Vergleich zum Vorjahr wurden weltweit 53% mehr Stunden für das Lernen aufgewendet. Um unseren Lernenden dabei zu helfen, die Kompetenzbereiche zu entdecken, die sie auf der Karriereleiter voranbringen, haben wir deinen Kurs bis zum 15. Oktober freigeschaltet.

 

Doppelschlag

Dieser Mittwoch bietet Anlass zur doppelten Freude :-).

  1. Mein regelmäßiger wöchentlicher Entwickler-Tipp zu Python ist da und behandelt diese Woche das Top-Level-Script-Environment. Dabei geht es darum, wie man die oberste Ebene einer Python-Anwendung zur Laufzeit identifizieren und wie man mit einigen magischen Elementen das Verhalten beim Aufruf steuern kann.
  2. Der zweite Anlass der Freude 😉 ist, das wieder einmal ein Buch bzw. Schulungsheft von mir erschienen ist. Beim Herdt-Verlag veröffentliche ich ja seit mehreren Jahren regelmäßig solche Schulungsunterlagen oder lektoriere manchmal auch fachlich andere Unterlagen. Einige Unterlagen sind dabei von Grund auf von mir, aber diverse habe ich irgendwann übernommen und aktualisiert.
    Das gerade erschienene Buch bzw. Schulungsheft zu Joomla! 4 ist so eines, was ich vor vielen Jahren (2015) schon übernommen und damals auf die Version 3 aktualisiert hatte. Nun hat sich die Entwicklung von Joomla! 4 jedoch ewig hingezogen, aber Ende August ist die neue Version endlich erschienen und wir sind damit just-in-time mit dem Buch zu Joomla! 4 auf dem Markt. Natürlich habe ich mit Vorversionen von Joomla! 4 gearbeitet, aber die waren schon so gut wie fertig und bei der Überarbeitung habe ich gegengeprüft. Genaugenomen hatte ich schon 2020 mit der Überarbeitung begonnen, weil ich mit einer Fertigstellung von Joomla! 4 in dem Jahr fest gerechnet hatte. Schon da war das Projekt weit hinter der Roadmap zurück. Aber nachdem sich die Verzögerung in der Fertigstellung nicht mehr in Tagen oder Wochen und eigentlich auch nicht Monaten, sondern eigentlich nur in Jahren spezifizieren lies, habe ich Ende 2020 die Überarbeitung erst einmal eingestellt. Zumal die Vorversion zu dem Zeitpunkt auch noch unausgereift waren, wie mir bei der Arbeit damals deutlich wurde. Diesen Sommer hatte ich aber sowohl wieder Zeit und auch die Vorversionen von Joomla! waren endlich soweit, dass das Erscheinen der Finalversion greifbar wurde. Und so sind wir wie gesagt mit dem heutigen Tag mehr oder weniger just-in-time fertig geworden :-).

Das war es mal wieder

Ich bin fertig mit meiner Aufnahmesession für LinkedIn Learning. Ich habe ein Training rund um Neuheiten bei Java auf den neusten Stand gebracht, bei dem mittlerweile zwei Versionsupdates erfolgt sind, und ein vollkommen neues Training eingespielt. Dabei stehen Kryptografie und Steganografie mit Python sowie diverse Themen rundherum im Fokus.

In der letzten Zeit hatte ich oft Adaptionen von Trainings gemacht oder Trainings zu Themen, die von LiL an mich herangetragen wurden. Und natürlich meine Serie mit wöchentlichen  Entwicklers-Tipp zu Python.

Aber das neue Training ist vollkommen auf meinem Mist gewachsen. Ich hatte irgendwann die Idee, mich mit dem Thema aus Sicht von Python zu beschäftigen und dann aus Lust und Laune ein paar Scripts vor mich hinprogrammiert. Nachdem ich diese Scripts fertig hatte, kam mir die Idee, dass man daraus doch ein komplettes Training machen könnte. Mehr dazu kommt, wenn das Training produziert und veröffentlicht ist.