Übungsaufgaben zu Regular Expressions

Reguläre Ausdrücke gelten als nicht wartbar. Zu kryptisch ist ihr Aufbau. Trotzdem kann man mit etwas Übung einen Blick dafür entwickeln, warum Zeichenketten durch Muster gefunden werden oder nicht gefunden werden. Hier sind ein paar Übungsaufgaben, um den Blick zu schärfen!

Mustererkennung mit Regular Expressions (RegEx)

Die Mustererkennung Regulärer Ausdrücke (RegEx) ermöglicht Automatisierungen an Stellen, wo Handarbeit mühsam und langwierig ist. Telefonnummern in unterschiedlichen Formaten gespeichert? In einer CSV-Datei alle Spalten in verkehrter Reihenfolge? Wo stecken im Fließtext Geldbeträge mit Nachkommastellen? Derlei Aufgaben lassen sich mit RegEx lösen – besser, man kennt sie!

Constraints in der Data Definition Language (SQL-DDL)

Die Informationen, ob es sich bei einem Attribut um ein Schlüsselattribut handelt, ob es eingabepflichtig oder einzigartig ist: all das wird über Constraints festgelegt. Es gibt unterschiedliche Möglichkeiten, Constraints festzulegen. Einige werden hier mit Beispielen in MariaDB-Notation vorgestellt: Primär- und Fremdschlüssel (auch zusammengesetzt), NOT NULL, DEFAULT, UNIQUE, CHECK und die Regeln beim Löschen referenzierter Datensätze.

Datentypen in der Data Definition Language (SQL-DDL)

Alle Datenbankmanagementsysteme verfügen über ein ähnliches Set an Datentypen. Aber leider heißen sie oft anders und haben einen geringfügig anderen Funktionsumfang. Ich habe hier versucht, für die wichtigsten DBMS die Namen der Standardtypen zusammenzustellen; für Detailunterschiede muss ich aber auf die jeweiligen Dokumentationen der DBMS verweisen. Am Ende steht eine Entscheidungshilfe, welcher Datentyp für welche Information passt.

Data Definition Language (SQL-DDL)

SQL besteht aus mehreren Teilsprachen, die sich mit der Datenbankstruktur (DDL), dem Datenbankinhalt (DML) und den Berechtigungen (DCL) beschäftigen. In diesem Artikel soll es zunächst um die Grundlagen der Struktur gehen, die in der Data Definition Language (SQL-DDL) beschrieben wird. Du lernst, Datenbanken und Tabellen anzulegen, Tabellen nachträglich umzubauen, sie zu löschen und Indizes für schnelle Abfragen zu setzen.

Git-Übungsaufgaben

Natürlich lernt man git am besten, in dem man es täglich nutzt. Wer aber die git-Integration in der IDE nutzt hat vielleicht keinen Bezug mehr zu den eigentlichen Konsolen-Befehlen des Versionscontrollsystems. Hier daher ein paar Fragen zu git, wie ich sie auch gerne in Klassenarbeiten stelle…

SQL: Aggregierende Funktionen

Aggregatfunktionen wie COUNT, SUM, AVG, MIN und MAX fassen die Werte vieler Zeilen zu einem Wert zusammen – für die ganze Tabelle oder mit GROUP BY je Gruppe. Mit HAVING filterst Du nach diesen Ergebnissen. Der Artikel zeigt außerdem, wie NULL-Werte, Verbünde (JOIN) und Prozentrechnungen die Ergebnisse beeinflussen, wie Du mit Aggregaten weiterrechnest (z. B. Deckungsbeitrag), Streuung und Zeitdauern auswertest und welche Fehler typisch sind.

Einfache Abfragen mit Selektion und Projektion (SQL-DQL)

Der am häufigsten benötigte SQL-Befehl ist der SELECT-Befehl. In diesem Grundlagenartikel werden die Bestandteile Projektion und Selektion sowie die einzelnen Clauses einfacher SELECTs beschrieben. Dazu gehören Spaltenaliase, Bedingungen mit Mustern, Bereichen und NULL – samt der typischen Stolperfallen bei Postleitzahlen, Datumswerten und Umlauten. Sortieren und Begrenzen behandelt ein eigener Artikel.

„Let’s Meet-Datenbank“ Beispielumsetzung  Teil 1: Modellierung

Dies ist der erste Teil (Modellierung) einer Beispiellösung für die Let’s Meet“ Datenbank-Lernsituation. Es führen viele Wege zum Ziel – der einzig richtige ist der Weg, den man selbstständig gegangen ist. Daher ist diese Variante bestenfalls als eine Ideenskizze zu verstehen, die genutzt werden kann, wenn man nicht mehr weiterkommt. Einige Schritte habe ich bewusst etwas umständlicher realisiert, um so bestimmte Techniken des Datenbankentwurfs bzw. Abfragetechniken darstellen zu können.

Modellierung einer Datenbank: Entity-Relationship-Modell

Im konzeptuellen Modell wird die innere Struktur der Daten erfasst, die in einer Datenbank persistiert werden sollen. Auf Basis des so erstellten ER-Modells kann später entschieden werden, welches Datenmodell zur Speicherung der vorliegenden Struktur am geeignetsten ist. Der Artikel erklärt die Chen-Notation mit allen Beziehungsarten (auch rekursiv, mehrfach und mit Attributen) und zeigt Schritt für Schritt, wie man aus einem Anforderungstext oder einem Beleg ein ER-Diagramm entwickelt, Zeiträume und Messwerte modelliert und Schlüssel kennzeichnet.

Debugging per Logging und für ESPs mit WLAN

Bei einfachen Projekten ist das Logging über die serielle Verbindung ein Segen beim Debugging: über die USB-Verbindung können am seriellen Monitor der Arduino-IDE Werte ausgegeben werden. Was aber tun, wenn die serielle Verbindung nicht besteht? Wie kann ich Logging am ESP komfortabel und einfach umsetzen? Ein Vorschlag.

Digitale Eingänge am Mikrocontroller: Taster, Logikpegel, Pull-up/Pull-down und Entprellen

Ein Taster am Eingang braucht mehr als zwei Drähte: Hier erfährst Du, ab welcher Spannung ein Eingang HIGH liest, warum ein offener Eingang einen Pull-up- oder Pull-down-Widerstand braucht, wie Du Pegel und Ströme an Taster-Widerstands-Netzwerken berechnest, wann ein Öffner sicherer ist als ein Schließer, wie Du viele Taster an wenige Pins bringst und wie Du prellende Kontakte in Hardware und Software entprellst. Für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno.

Information Hiding: Kapselung in Python (OOP)

Wer gut änderbaren Code programmieren will, der versteckt Implementierungsdetails wie den Zustand von Objekten. Veröffentlicht wird nur, was wirklich benötigt wird. In Python ist es nicht ganz einfach (und eher unüblich), den Rest wegzukapseln. Aber wie lässt sich Kapselung in Python umsetzen?