Oktober 2022

Funktionen in Python

Komplexe Probleme lassen sich am besten lösen, in dem sie in kleine Einheiten aufgeteilt werden, die jeweils ein Teilproblem lösen. Neben den Suites stellen in Python Funktionen die wesentliche Struktur dar, um die Wiederverwertbarkeit, Wartbarkeit und Änderbarkeit von Code sicherzustellen. Hier geht es um Positions- und Keyword-Argumente, Parameter, Defaultwerte, Dokumentation und all‘ die anderen Grundlagen von Funktionen.

Wiederholungsstrukturen in Python

Wer die Wahl hat, hat die Qual: mit den alternativen Kontrollstrukturen (If-Statements) halten die Suites (Einrückungen) erstmals Einzug in Python. Und die Enttäuschung, weil Mehrfachauswahlen in Python recht umständlich realisiert werden müssen.

Bedingte Anweisungen in Python

Wer die Wahl hat, hat die Qual: mit den alternativen Kontrollstrukturen (If-Statements) halten die Suites (Einrückungen) erstmals Einzug in Python. Und die Enttäuschung, weil Mehrfachauswahlen in Python recht umständlich realisiert werden müssen.

Operatoren in Python

s gibt eine ganze Reihe Operatoren für Zahlen in Python: die aritmetischen Operatoren, Vergleichsoperatoren, Zuweisungsoperatoren, bitweise Operatoren… Und dann gibt es noch die Ausführungsreihenfolge. Was in aller Welt ergibt denn `zahl = 2**4-4%3>0b100<<2`?!?

Python numerische Datentypen

Zahlen, Zeichenketten, Wahrheitswerte: welche Datentypen bietet Python an? Der Schwerpunkt hier liegt auf den numerischen Typen für Gleitkomma- und Ganzzahlen: ist `0b1` eine gültige Zahl und `1e1`? Und: warum in aller Welt ist das hier `False`: `0.1 + 0.2 == 0.3`?!?

UML Sequenzdiagramme

Mit UML-Sequenzdiagramm wird die zeitliche Abfolge von Nachrichten zwischen Akteuren dargestellt. Die Notationsmittel werden an Beispielen vorgestellt.

Ursprung der GUI-Pattern: Model-View-Controller

Benutzeroberflächen werden häufig in drei Bestandteile aufgeteilt: die Datenhaltungsschicht (Model), die Geschäftslogik (Controller) und die Presentationsschicht (View). Ausgehend von dieser Dreiteilung wagen wir einen Blick auf das GUI-Pattern MVC, dessen Herkunft, die zentralen Eigenschaften, die alle Interpretationen des Patterns gemein haben. Ist überall MVC drin, wo MVC draufsteht?

Maria aus dem Container

Mit MariaDB lassen sich besonders leicht Container aufsetzen und mit Daten befüllen. In diesem Tutorial werden Voraussetzungen für den Container zusammengetragen, die nötigen Befehle zusammengestellt. Und das Ergebnis kann sich sehen lassen: MariaDB-Container sind nur halb so groß wie MySQL-Container und nur ein Viertel der MS-Boliden.

Befüllter MS-SQL-Datenbankcontainer auf Knopfdruck

Datenbankserver lassen sich auf so ziemlich jedem Betriebssystem aufsetzen. Es ist jedoch häufig wichtig, unterschiedliche Server, definierte Datenbestände oder reproduzierbare Systemumgebungen auf Knopfdruck zu erstellen: für diese Anwendungsfälle spielen Container eine herausragende Rolle. Im folgenden Infotext wird kurz beschrieben, wie ein Container mit einem MS-SQL-Server aufgesetzt und benutzt werden kann. Es werden Voraussetzungen für den Container zusammengetragen, die nötigen Dateien erstellt und Befehle genannt. Am Ende können wir individuelle versionierbare Datenbanken auf Knopfdurck zur Verfügung stellen. Oder, um es zu buzzworden: “Infrastructure as Code”.

Container-Grundlagen: „Hello World“ aus der Dose

Container sind so etwas wie ein kleiner Bruder der virtuellen Maschinen: schlanker, agiler, wendiger. Das bekannteste Tool, um Container zu administrieren ist Docker. Dieses Tutorial beschäftigt sich mit den Grundlagen der Containernutzung mit Docker.

Git 2: Versionieren mit Branches

Ein großer Vorteil von git ist, dass wir zeitgleich an unterschiedlichen Komponenten eines Projekts arbeiten können, und diese Entwicklungen zu definierten Zeitpunkten wieder zusammenführen können. Diese Entwicklung in Branches minimiert Seiteneffekte, fordert aber etwas Grips…

Git 1: Lokal im Repository arbeiten

Bevor wir uns in die weite Welt von Github, Gitlab, Bitbucket usw. aufmachen wollen wir erst einmal verstehen, was lokal passiert und ein paar Begriffe klären: Was ist ein Commit? Was ist ein Repository? Was ist der Workspace? Was ist die Stage? In welchen Schritten versioniere ich? Wie gestalte ich meine Commit-Nachrichten?

Ein blinkendes „Hello World“ (MCU Teil 1a)

Keine neue Programmiersprache ohne ein „Hello World“, kein Microcontroller-Projekt ohne LED-Blinken. Hier geht es nur um die ersten Schritte mit dem NodeMCU-Board: Einrichtung und zwei kleine Beispielprogramme zur Nutzung der internen LED und Taster.

UML-Klassendiagramme mit PlantUML erstellen

Das Tool [PlantUML](https://plantuml.com) ist hervorragend geeignet, um Klassendiagramme direkt in Kommentaren zu versehen, aus JavaDocs zu generieren und zu versionieren. In diesem Infotext stelle ich Hinweise und Tipps vor, wie mit PlantUML nahe am UML-Standard Klassendiagramme erstellt werden können.

Abstrakte Klassen und Interfaces

Ein großes Problem bei Objekt- und Klassenbeziehung ist die starke Kopplung unterschiedlicher Klassen aneinander. Der Austausch von Verhalten ist so nur mit großem Aufwand möglich. Das Konzept der Abstraktion bietet hier in Form von abstrakten Klassen und Interfaces die Möglichkeit, Komponenten lose zu koppeln.

Vererbung in der OOP

Zentrales Element der Code-Wiederverwendung in der OOP ist die Vererbung. Am Beispiel eines Investments werden hier das OOP-Prinzip Vererbung und die Konzepte Überschreiben und Polymorphie erklärt.