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 im Team und Remote nutzen

Zugegeben: Die meisten Leute meinen, wenn sie von git reden, eher Plattformen wie GitHub, GitLab oder Bitbucket. Wir sollten diese zentralen Repositories also schleunigst einbinden: klonen, holen, hochladen, anmelden per Token oder SSH-Schlüssel und festlegen, was gar nicht erst ins Repository gehört.

Versionieren mit unterschiedlichen Zweigen (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: Merge, Rebase und Konflikte, dazu Werkzeuge zum Rückgängigmachen, Zwischenparken und Markieren von Versionen.

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?

Digitale Ausgänge am Mikrocontroller: LED mit Vorwiderstand, Ausgangsstrom und Lasten mit Transistor oder Relais

Ein Ausgangspin kann eine LED direkt treiben, ein Relais oder einen Lüfter aber nicht. Hier schaltest Du mit pinMode() und digitalWrite() mehrere LEDs (Ampel), berechnest den Vorwiderstand für 3,3 V und 5 V, liest zulässige Pin- und Summenströme aus dem Datenblatt, stellst eine Strombilanz auf und treibst größere Lasten über Transistor, MOSFET oder Relais mit Freilaufdiode – Low-Side und High-Side. Für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno.

Erste Schritte mit dem Mikrocontroller: Entwicklungsumgebung, Board, Blink und Taster

Kein Mikrocontroller-Projekt ohne blinkende LED. Hier richtest Du die Arduino-IDE mit Board-Paket, Treiber und Port ein, lernst den Aufbau eines Programms mit setup() und loop() kennen, lässt eine LED blinken und liest einen Taster ein – für ESP32-C6, ESP32, ESP8266 (NodeMCU) und Arduino Uno. Zum Schluss geht es um die typischen Fehler beim Hochladen.

UML-Klassendiagramme mit PlantUML zeichnen

Das Tool PlantUML ist hervorragend geeignet, um Klassendiagramme direkt in Dokumentationen wie Readme.md-Dateien des Repositorys oder in Kommentaren zu integrieren, sie aus Programmcode direkt zu generieren und sie in einem Versionskontrollsystem zu versionieren. In diesem Infotext stelle ich vor, wie mit PlantUML die unterschiedlichen Notationsmittel von Klassendiagrammen genutzt werden können, mit welchen Einstellungen sie nahe am UML-Standard bleiben und wie sie sich aufhübschen lassen.

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. Der Artikel zeigt, wie beide im UML-Klassendiagramm notiert werden, worin sie sich von konkreten Klassen unterscheiden und welche Fehler häufig passieren.

Klassenbeziehungen: Vererbung von Klassen in der UML

Zentrales Element der Code-Wiederverwendung in der objektorientierten Programmierung (OOP) ist die Vererbung. Am Beispiel von Bankkonten werden hier das OOP-Prinzip Vererbung und die darauf aufbauenden Konzepte (z. B. Überschreiben, Konstruktoraufruf der Oberklasse, protected) erklärt – und wie Du aus vorhandenen Klassen eine Oberklasse entwickelst und Vererbung im UML-Klassendiagramm richtig notierst.

UML-Klassendiagramm Objektbeziehungen – Assoziationen

Mit einzelnen Objekten erreicht man in der objektorientierten Programmierung (OOP) noch nicht viel. Erst im Zusammenspiel als Objektsammlungen und über Objektinteraktionen entwickelt die OOP ihre Stärken. Der folgende Text behandelt die Fragen: Welche Objektbeziehungen gibt es? Was unterscheidet Abhängigkeit, Assoziation, Aggregation und Komposition? Wie liest und begründet man Multiplizitäten, und woran erkennt man die passende Beziehung in Anforderungstexten, Quelltexten und Entwurfsmustern? Versuch der Klärung.

UML-Klassendiagramm: Sichtbarkeitsmodifikatoren

Kapselung ist ein Konzept der objektorientierten Programmierung (OOP), das verhindern soll, dass Anpassungen des Codes zu Inkonsistenzen führen. Der Zustand der Objekte soll nicht direkt änderbar sein, sondern nur über Methoden, die ggf. weitere Anpassungen vornehmen können: Getter und Setter. Der Artikel stellt die vier Sichtbarkeiten +, -, # und ~ vor und zeigt, wie Du Anforderungen wie „nur lesbar“ im Klassendiagramm umsetzt.

Einstieg in objektorientierte Programmierung mit dem UML-Klassendiagramm

Das UML-Klassendiagramm ist die zentrale Modellierungssprache der objektorientierten Programmierung (OOP). Dieser Einstiegsartikel zeigt den Aufbau einer Klasse, die Darstellung ihrer Member (Attribute und Methoden), Überladung sowie Instanz- und Klassenattribute und -methoden. Außerdem geht es um die vollständige Schreibweise von Attributen und Methoden und darum, wie Du aus einem Anforderungstext ein Klassendiagramm entwickelst.

UML-Zustandsdiagramme mit PlantUML erstellen

Mithilfe des Tools PlantUML lassen sich textbasiert UML-Zustandsdiagramme erstellen. Der Artikel zeigt die Syntax für Zustände, Transitionen, innere Aktionen, Choices und Junctions, zusammengesetzte Zustände, Regionen und Historie sowie Möglichkeiten, die Diagramme zu teilen und einheitlich zu formatieren.

UML-Zustandsdiagramm

Mit UML-Zustandsdiagrammen lassen sich alle Systeme modellieren, die unter variierenden Randbedingungen unterschiedliches Verhalten anbieten oder ausführen. Das trifft auf User-Interfaces ebenso zu wie auf Embedded Systems: allen ist gemein, dass unterschiedliche Zustände jeweils besonderes Verhalten haben – und es definierte Zustandsübergänge mit Auslösern, Bedingungen und Übergangsverhalten gibt. Neben der Notation geht es darum, wie Du aus einer Beschreibung Schritt für Schritt ein Diagramm entwickelst, typische Fehler vermeidest und das Diagramm in Code und Testfälle überträgst.

JavaFX 03: Aufbau des Scenegraphs

Was passiert unter der Oberfläche in JavaFX? Was ist eine Scene, ein Root Node, ein branch node und ein Leaf node? Der Artikel ist Teil eines JavaFX-Tutorials.

Python Coding-Kata: Energieverbrauch für Mobilität

Wieviel Energie benötigen wir bei 130 km/h mehr als bei 100 km/h? Um wie viel sparsamer ist ein Kleinwagen als ein Van? Python-Fingerübung für Einsteiger mit Kontrollstrukturen, Wiederholungsstrukturen, einfacher Ein- und Ausgabe.

Lernsituation: Migration der Let’s Meet-Datenbank

Es ist nur noch eine Gesamtübersicht einer Datenbank in einer Tabelle vorhanden. Aus diesen Daten soll die ursprüngliche DB wiederhergestellt werden. Diese soll modelliert, importiert und im Bestand normalisiert werden. (DB Entwurf, Normalisierung, SQL-DDL, SQL-DML, Container, DBMS-Frontends und -Backends).

Annotations in Java

Java Annotationen – Welche geläufigen gibt es? Wozu werden sie genutzt? Wer kann sie auslesen? Welche Eigenschaften können sie haben? Wie kann ich eigene Erstellen? Was wirt mit _Retention_ und _Target_ festgelegt? Was ist die Reflection API und was hat sie mit Annotations zu tun?

  • 22. September 2022
  • Java