Zum Inhalt

Development

Git Strategie

Eine Git-Strategie definiert einen planmäßigen Ansatz für die Nutzung von Git in Softwareentwicklungsprojekten, besonders im Hinblick auf Branching, Merging und Release-Management.

%%{init: {
'logLevel': 'debug',
'theme': 'neutral',
'gitGraph': {'mainBranchName': 'production'}, 
'themeVariables': {'git0': '#5193e8', 'git1': '#e87451'}
}}%%
gitGraph:
    commit id:"Initial commit ..."
    branch development
    checkout development
    commit id:"init dev branch ..."
    commit id:" ..."
    commit
    checkout production
    commit id:" ...."
    commit id:"other commits ..." tag:"v1"
    commit id:" ....."
    merge development

Sie bestimmt, wie und wann Branches erstellt, zusammengeführt und verwaltet werden, um Entwicklung, Testing und Auslieferung von Software effizient und fehlerfrei zu gestalten.

Model-View-Controller in Python

Model-View-Controller (MVC) ist ein Architekturmuster in der Softwareentwicklung, das verwendet wird, um Anwendungen in drei Hauptkomponenten zu strukturieren: das Modell, die Ansicht und den Controller.

graph LR
    Controller -- "Anfrage über Datenänderung" ---> Model
    Controller -- "Auswahl der View" ---> View
    Model -- "Übermittlung der Daten" ---> Controller

Optimierung der Reihenfolge im Dockerfile

Die Strukturierung der Reihenfolge im Dockerfile ist aus mehreren Gründen wichtig, vor allem im Hinblick auf Effizienz und Sicherheit der App.

Hauptgründe für die Reihenfolge

Hintergrund: Layers im Docker System

Docker-Images bestehen aus Schichten, wobei jede Dockerfile-Anweisung in der Regel eine neue Schicht erzeugt. Diese Schichten sind Änderungsstapel am Dateisystem, die aufeinander aufbauen. Das Schichtensystem ermöglicht eine effiziente Speichernutzung und die Wiederverwendung von Schichten zwischen verschiedenen Images. Wichtig sind hierbei das Caching zur Beschleunigung des Build-Prozesses und die Auswirkungen auf die Image-Größe, Sicherheit sowie die Wiederverwendbarkeit und das Teilen von Schichten, um die Effizienz von Docker insgesamt zu steigern.

Ausnahmebehandlung in Python

Generierung eines neuen Ausnahmeobjekts

Um in Python eine neue Ausnahme zu werfen, während die abgefangene Exception im Traceback nachverfolgt werden kann, nutzt man das Schlüsselwort raise in Verbindung mit einem from, um die ursprüngliche Ausnahme anzugeben. Das from-Schlüsselwort erlaubt es Python, sowohl die neue als auch die ursprüngliche Ausnahme im Traceback zu verbinden und auszugeben, was für das Debugging sehr nützlich sein kann.

Hier ist ein Beispiel, wie man das machen kann:

try:
    # Code, der eine Ausnahme auslösen könnte
    raise ValueError("Ein Wertfehler ist aufgetreten")
except ValueError as original_exception:
    # Eine neue Ausnahme werfen und 
    # die ursprüngliche Ausnahme im Traceback behalten
    raise RuntimeError("Ein neuer Fehler") from original_exception
Traceback (most recent call last):
File "***.py", line 3, in <module>
    raise ValueError("Ein Wertfehler ist aufgetreten")
ValueError: Ein Wertfehler ist aufgetreten

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "***.py", line 7, in <module>
    raise RuntimeError("Ein neuer Fehler") from original_exception
RuntimeError: Ein neuer Fehler