Lambda-Ausdrücke in JavaScript

Diverse Trainings von mir bei LinkedIn Learning (LiL) werden nach und nach modifiziert bzw. erweitert, wenn mir etwas einfällt und/oder die Entwicklung von Technologien über die Zeit das sinnvoll macht. In meinem aktuellen JavaScript Grundkurs 2: Programmiertechniken und Frameworks war das gerade wieder der Fall und gestern wurden die Erweiterungen freigeschaltet. Ich hatte da bisher Lambda-Ausdrücke sehr stiefmütterlich behandelt. Was 2 Gründen geschultet war:

  1. Ältere Browser haben diese nicht unterstützt.
  2. Anonyme Funktionen bzw. innere Funktionen decken in JavaScript im Grunde alles ab, was Lambda-Ausdrücke leisten. Diese Sprachvorteile haben die meisten anderen Programmiersprachen nicht und Lambda-Ausdrücke kompensieren dort hauptsächlich diesen Mangel. Die Notwendigkeit für Lambda-Ausdrücke in JavaScript besteht also im Grunde nicht oder besser nicht so stark.

Dennoch war es Zeit, das Thema zu ergänzen. Denn mittlerweile sollten die Browser, die Lambda-Ausdrücke nicht unterstützen, verschwunden sein, viele Programmierer setzen diese Lambda-Asudrücke in der Praxis ein (oft, weil vom Konzept analog zu anderen Sprachen) und die Syntax ist oft kompakter als bei anonymen Funktionen.

Deshalb habe ich gleich drei Videos rund um Lambda-Ausdrücke in JavaScript ergänzt:

OpenStreetMap statt Google oder Bing

Im Rahmen meiner Vorlesung zur Entwicklung von plattformneutralen Apps mit Cordova an der TH Bingen ist mir aufgefallen, dass die Verwendung des Google Map-APIs nicht mehr so funktioniert hat, wie ich es gewohnt war. Ältere, aber erprobte/getestete Codes haben einen Fehler produziert. Ich stelle den Studenten schon seit ein paar Semestern als eine mögliche Semesterarbeit eine App als Aufgabe, die unter anderem die aktuelle Position in einer Karte zeigen soll. Dabei habe ich bisher Google Maps und als Alternative Bing Maps verwendet. Die jeweiligen APIs ließen sich bisher problemlos verwenden. Nur benötigt man mittlerweile bei neuen Versionen der APIs dafür API-Keys. Die sind zwar kostenfrei zu bekommen (mit ein paar Einschränkungen hinsichtlich der erlaubten Verwendung), aber die Generierung ist dennoch mittlerweile etwas umständlich bzw. ich komme mit den unendlich vielen Details und unübersichtlichen Entwicklerwebseiten einfach nicht klar. Die speziellen Features der neuen Versionen habe ich auch bisher nicht benötigt.

Die Version 2 des Google Maps API hat aber keinen API-Key erfordert und war deshalb sowohl für meine Beispiel-Apps als auch viele Webseiten immer noch eine sehr gute Wahl. Nur das Problem in der Vorlesung beim Verwenden der alten Codes hat mich zu der Info auf den Entwicklerseiten von Google gebracht:

The Maps JavaScript API v2 is no longer available as of May 26, 2021. As a result, your site’s v2 maps will stop working, and will return JavaScript errors. To continue using maps on your site, migrate to the Maps JavaScript API v3. This guide will help you through the process.

Ganz toll – einfach die API-Version eingestellt und die bisherigen Webseiten und Apps sind an die Wand gefahren. Bei Bing Maps war es nicht besser – die alten Codes funktionieren auch nicht mehr.

Oft haben das die Betreiber von Webseiten auch gar nicht bemerkt bisher, denke ich. Gestern war ich auf einer entsprechenden Webseite eines Gleitschirmvereins, wo die Karte nicht mehr funktioniert. Klar – man kann argumentieren, dass Entwickler die Verantwortung haben, die Funktion ihrer Produkte regelmässig zu kontrollieren. Aber das ist m.E. nur die eine Seite der Medaille. Man kann auch argumentieren, dass es eine Art „Bestandschutz“ gibt. Was einmal getestet ist, sollte auf Dauer funktionieren. Da sieht man mal wieder, in welche Abhängigkeiten man sich begibt, wenn man fremde Ressourcen und Leistungen nutzt. Die aktuellen Probleme bei einigen Cloud-Anbietern passen in diese Problematik.

Und me culpa – auch auf einer meiner Seiten hatte ich eine Karte mit dem Google Maps API, die nicht mehr korrekt angezeigt wurde und was ich bisher nicht bemerkt hatte – es hatte sich bisher auch kein Besucher beschwert.

Einer meiner Studenten hatte sich vor einigen Tagen wegen dieser ganzen Umstände mit dem Google Maps bzw. Bing Maps API so geäußert, dass er auf OpenStreetMap umsteigen würde. Fand ich eine gute Idee und deshalb hatte ich schon vor ein paar Tagen damit sowie Mapbox experimentiert. Auch in Verbindung mit einer Django-Webseite, weil ich die nächsten Wochen dazu ein Videotraining bei  LinkedIn Learning einspielen will, wo ich diese Techniken in Beispielen nutzen will.

Aber erst einmal habe ich jetzt die Webseite, die ich betreue, auf OpenStreetMap umgestellt.

Die Seite arbeitet mit Joomla! und da taugt das OSModul ziemlich gut, um auf einfache Weise eine Karte von OpenStreetMap in eine Webseite zu integrieren.

 

Es muss nicht immer tkinter sein – die PyQt-Alternative

Wenn Sie grafische Oberflächen mit Python erzeugen wollen, ist das integrierte tkinter-Framework in der Regel die erste Anlaufstelle. Der Grund ist offensichtlich – tkinter steht standardmäßig im Python-API zur Verfügung und hiermit können Sie bereits wunderbar grafische Oberflächen erzeugen.

Es gibt allerdings Alternativen. Beispielsweise PyQt. Zwar muss man PyQt in der Regel erst einmal installieren, aber man erhält damit ein GUI-Framework, das  eigentlich auf C++ aufbaut, wovon es aber diverse Derivate für verschiedene Sprachen gibt. Eben auch für Python in Form von PyQt. Damit kann man Oberflächen recht leicht zwischen verschiedenen Programmierapachen bzw. Systemen portieren.

Die Grundidee basiert, wie bei allen grafischen Oberflächen mittlerweile, auf Widgets und einem sehr verwandten Konzept. In dem neusten Entwickler-Tipp der Woche zu Python bei LinkedIn Learning zeige ich den Ansatz, wie man grafische Oberflächen mit PyQt erstellen kann.

Da isses endlich – mein neues Training bei LiL zu Kryptografie und Steganografie mit Python

Gerade wurde mein neustes Training Kryptografie und Steganografie mit Python bei LinkedIn Learning (LiL) freigeschaltet. Als Sicherheitsthema mehr oder weniger „zeitlos“ und deshalb – da nicht zeitkritisch – ungewöhnlich lange in der Produktion gewesen, finde ich es persönlich aber wahnsinnig interessant. Mir hat da die Einarbeitung und das praktische Umsetzen von den theoretischen Konzepten mit Python bei dem Training so richtig viel Spaß gemacht.

Um ein bisschen abzuschweifen – ich werde immer wieder gefragt, ob ich noch viel mit Mathematik zu tun habe? In der Tat ist die Frage nicht ganz einfach zu beantworten, denn wie viele Mathematiker bin ich komplett in die Computerschiene geraten. Aber hin und wieder bricht auch in dieser IT-Welt die „echte“ Mathematik durch. Beispielsweise bei Kursen wie Mathematik-Grundbegriffe für Programmierer:innen von LiL, wo „Mathematik“ schon im Titel steckt. Oder auch LiL-Kurse wie Python: Statistische Auswertungen haben offensichtlich eine Verbindung zu Teilen der Mathematik – wenngleich in Bezug zu einer Programmiersprache. Ebenso kommt Mathematik rund um die Datenanalyse und das Maschinenlernen (Python für die Datenanalyse 1: Grundlagen und Python für die Datenanalyse 2: Machine Learning) im Hintergrund massiv zum Einsatz. Wenngleich alles auf einem einfachen und praxisorientiertem Level – aus Sicht von Mathematikern gesehen. Also mathematische Beweise habe ich etwa seit meinem Studium nicht mehr geführt.

In meinem neusten Training hingegen kommt die Mathematik sogar ebenso recht intensiv zum Einsatz – mehr als es der Titel Kryptografie und Steganografie mit Python deutlich macht. Denn die Verfahren, die hierbei eine Rolle spielen, erinnern mich durchaus an das Thema Zahlentheorie, das ich im 2. Semester hatte, und allgemein die Algebra und Logik sowie sogar ganz wenig die Stochastik. Aber das Training versucht dennoch die Mathematik mehr in den Hintergrund zu stellen und das praktische Probieren in den Fokus zu nehmen. Was liegt denn hinter den ganzen Fachbegriffen und Techniken und kann man das auch ganz einfach und praktisch sich veranschaulichen? Ich selbst brauche bei komplexen Themen immer einen maximal vereinfachten Ansatz und wenn ich den verstanden habe, kann ich mich Schritt-für-Schritt an die komplexen Level ranarbeiten. Getreu dem Motto, dass Mathematik ganz einfach ist – die Komplexität entsteht nur daraus, dass ganz viele einfache Dingen zusammengesetzt sind. Hat man die Einzelteile verstanden, versteht man auch das Gesamte.

Also kümmere ich mich in dem Training darum, was genau hinter Sicherheitstechniken wie Verschlüsselung und Signaturen steckt oder was unter Steganografie zu verstehen ist. Die Programmiersprache Python eignet sich hervorragend dazu, sich mittels praktischen Beispielen in diese Thematik einzuarbeiten, da wichtige Funktionen bereits in der API bereitgestellt werden. In diesem Videokurs erfahren Sie alles Wichtige zu AES und RSA und Sie lernen einfache Verschlüsselungs- und Angriffstechniken zu entwickeln und anzuwenden. Anhand von Code-Challenges am Ende eines Kapitels können Sie das Erlernte sofort testen und Ihre Lösung mit der angebotenen »Solution« vergleichen. Parallel zu vielen kleinen und einfachen Beispielen entsteht in dem Training ein komplexes Programm, das eine grafische Oberfläche bereitstellt und Daten sowohl verschlüsseln, verstecken und signieren sowie die Informationen wieder herstellen kann.

Ich gehe davon aus, die Zielgruppe von dem Training eher geringer ist als bei vielen anderen Grundlagenthemen von mir, aber was rein meine Interessen und das Fachliche angeht, sehe ich in dem Kurs vermutlich das Highlight meiner bisherigen Videotraining.

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.

all und any

In dem aktuellen Entwickler-Tipp der Woche zu Python bei LinkedIn Learning geht es um die Funktionen all und any. Das sind zwei Funktionen, mit denen Sie bei sequentiellen Datentypen überprüfen können, ob die Elemente darin True- oder False-Zuständen entsprechen. Dabei wird ja in Python alles, was ungleich 0 bzw. einem Leerstring ist, als True gewertet.

April-Scherz?

Am Montag habe ich meine Blockveranstaltung zur Entwicklung von plattformneutralen Apps mit Cordova an der TH Bingen begonnen und eben den ersten Block über 6 Tage beendet. Ich glaube, das war das 1. Mal überhaupt, dass ich 6 Tage am Stück bei einer Veranstaltung unterrichtet habe. Klar habe ich schon Samstags geschult, aber nicht Montag – Samstag bei einer Veranstaltung. Aber ich wollte den Block auf jeden Fall vor der nächsten Woche mit dem offiziellen Semesterbeginn durch haben und konnte erst am Montag dieser Woche anfangen. 

Jetzt folgen noch ein paar Fragestunden über das Semester und am Ende im Juli einer Vorstellung der Semesterarbeit durch die Studis. Alles remote vermutlich. 

Anyway – gestern war der 1. April und heute morgen dachte ich, da wäre ein verspäteter April-Scherz am Laufen oder ich in der falschen Jahreszeit aufgewacht. Selbst in Bodenheim liegt etwas Schnee und am Büro in Eppstein sogar wirklich.

Eigentlich wäre ich heute gerne zum Hammerwerfen nach Niederselters gegangen, aber bei dem Wetter bedauere ich nicht, dass ich heute arbeiten musste. Ich habe per WhatsApp auch Bilder vom Sportplatz da gesehen und da ist noch mehr Schnee.