Die Bewerbungsmappe enthält alle relevanten Unterlagen für meine Bewerbung in einer einzigen, umfassenden Datei.
Die anderen Dateien hingegen sind spezifische Auszüge aus der Bewerbungsmappe und enthalten jeweils nur einen bestimmten Teil dieser Unterlagen. Sie sind dazu gedacht, einzelne Dokumente gezielt bereitzustellen, je nach den Anforderungen oder Wünschen des Empfängers.
Da ich häufig gefragt werde, was ich entwickle, wie mein Stil ist und welche Präferenzen ich beim Programmieren habe, möchte ich hier ein Beispiel meiner Arbeit vorstellen: Rithmo, meinen Nummern-Generator.
Derzeit besteht das Projekt aus zwei separaten Repositories, die auf Bitbucket gehostet sind. Die Installation ist jedoch unkompliziert und erfordert lediglich eine aktuelle Version von Docker und Docker Compose.
Die Trennung in zwei Repositories erfolgt, weil das Projekt schrittweise zu einem vollständigen Symfony-Bundle entwickelt wird. Technisch gesehen ist es bereits weit fortgeschritten, allerdings arbeite ich noch an den sogenannten "Receipes", um eine vollständig automatisierte Installation und Konfiguration zu ermöglichen. Dies erfordert zusätzliche Tests und Feinabstimmungen, die aufgrund meines aktuellen Zeitdrucks noch nicht abgeschlossen sind.
Zeitdruck ist bekanntermaßen kein guter Begleiter beim Lernen oder Entwickeln neuer Features. Doch anstatt mich von Perfektionismus bremsen zu lassen, verfolge ich einen pragmatischen Ansatz: Ich liefere zunächst eine funktionierende Lösung, die zwar noch manuelle Schritte erfordert, aber ihren Zweck erfüllt. Dieser Ansatz zeigt auch, wie ich Herausforderungen bewältige, wenn ich auf Hindernisse stoße – Schritt für Schritt und mit dem Ziel, das Projekt kontinuierlich zu verbessern.
Keine Sorge, Rithmo ist weiterhin in der Entwicklung und entsprechende Tickets werden noch umgesetzt. Aber alles zu seiner Zeit.
Rithmo muss konfiguriert werden. Die wichtigste Konfiguration ist vor dem Start der
Container vorzunehmen. Diese erfolgt in der .env
-Datei im Root-Verzeichnis,
auf derselben Ebene wie die docker-compose.yml
. Die Einstellungen werden
später von Symfony übernommen.
APP_ENV=dev
PORT_NGINX=8092 ### dieser Port muss eventuell geändert werden
WORKSPACE_PUID=1000
WORKSPACE_PGID=1000
WORKSPACE_TIMEZONE=UTC
### Rithmo Bundle Settings ###
RITHMO_LIMIT_OF_NUMBERS=10 ### Die Anzahl der erlaubten numerischen Strings pro Aufruf
RITHMO_LIMIT_OF_ALPHA_NUMBERS=5 ### Die Anzahl der erlaubten alphanumerischen Strings pro Aufruf
git clone git@bitbucket.org:dimosys/rithmo-skeleton.git
cd rithmo-skeleton
git submodule add git@bitbucket.org:dimosys/rithmo.git
./app/bundles/MoSys/Rithmo
docker compose up -d
docker compose run php composer install
Das Rithmo Skeleton ist ein Symfony-Skeleton, das für die Entwicklung und das Testen des Rithmo-Bundles konzipiert wurde. Es ermöglicht die Generierung einzigartiger Identifikationsnummern für Anwendungen. Inspiriert von über 20 Jahren Erfahrung mit Excel und Access, zielt es darauf ab, veraltete Systeme zu modernisieren. Ursprünglich von mir bei Mercedes entwickelt, demonstriert die Methode zur Identifikationsnummerngenerierung innovative Lösungen in einem modernen Framework. Das Rithmo Skeleton wird erweitert werden, um verschiedene Arten von Nummern zu generieren, numerische Werte zu konvertieren und Passwörter zu erstellen. Es gewährleistet nahtlose Integration, umfassende Tests und bietet eine solide Basis für größere Anwendungen.
Übersetzung aus der Readme (Rithmo Bundle)Rithmo ist ein Symfony-Bundle, das entwickelt wurde, um einzigartige, prägnante Identifikationsnummern für Anwendungen zu generieren. Inspiriert von meinen Erfahrungen in den letzten zwei Jahrzehnten, in denen ich Excel und Access zur Lösung verschiedener Herausforderungen eingesetzt habe, strebe ich an, veraltete Anwendungen zu modernisieren und zu optimieren. Viele dieser Altsysteme spiegeln die Herausforderungen wider, denen ich auch heute in meinem Berufsleben begegne. Rithmo fasst eine Methode zur Generierung einzigartiger Identifikatoren zusammen, die ursprünglich von mir während meiner Zeit bei Mercedes entwickelt wurde. Diese Funktionalität erleichtert nicht nur die Integration in zukünftige Projekte, sondern dient auch als wertvolle Ergänzung meines Portfolios, indem sie mein Engagement und meine Arbeit an innovativen Anwendungen präsentiert.
Ein Beispiel, wie Rithmo aktuell verwendet wird, findet sich im Controller, in der
Action Rithmo
:
[root]/app/bundles/MoSys/Rithmo/Controller/RithmoController.php
Der Rithmo AlphaNumerator
wird instanziiert und wir übergeben den parameterBag
und die gewünschten Optionen.
Dieser Aufruf ist für alle Generatoren gleich, lediglich die options enthalten andere
Items:
$generatorInstance = new GeneratorClass(ParameterBagInterface, array);
$alphaNumerator = new AlphaNumerator($this->parameterBag, $options);
Die Informationen aus dem ParameterBag
werden im Konstruktor gesetzt:
class RithmoController extends AbstractController
{
private ParameterBagInterface $parameterBag;
public function __construct(ParameterBagInterface $parameterBag)
{
$this->parameterBag = $parameterBag;
}
}
Die Werte des ParameterBag
werden aus der .env
-Datei
übernommen, die sich im Root-Verzeichnis des Projekts befindet.
Alle dort definierten Konfigurationen stehen später in Symfony zur Verfügung.
Die Optionen sind ein multidimensionales Array, das folgende Elemente enthalten kann:
options['dateTimeArray'](array)
: Ein Array mit DateTime-Objekten. Diese
können mit oder ohne Zeitzone übergeben werden.
Wird keine Zeitzone übergeben, wird GTC (Greenwich Time Code) als Standard
verwendet.
options['dateTimeZone'](string)
: Übergibt eine DateTimeZone, wenn GTC
nicht verwendet werden soll.
options['length'](string)
: Legt die Länge des Codes fest. Mögliche
Werte:
'micro'
: Ein vierstelliger Code, basiert auf Datum.'short'
: Ein achtstelliger Code, basiert auf Datum & Zeit.'long'
: Entspricht 'short'
.'default'
: Ein zehnstelliger Code, basiert auf Datum & Zeit.
syntax(string)
: Hier kann eine Syntax beschrieben werden.
'!##.##x'
würde aus '01A7'
die Ausgabe '!01.A7x'
generieren.
['length'=>'short']
- führt zu GCCTBXC4['length'=>'short', 'syntax'=>'x##!###_##-#']
- führt zu
xGC!CTB_XC-4
Weitere Beispiele und Anwendungsfälle können in der Dokumentation des Projekts eingesehen werden.
Derzeit generiert Rithmo ausschließlich alphanumerische Nummern.
Die zugrunde liegenden Generatoren habe ich über einen Zeitraum von etwa 20 Jahren in VBA (Excel, Access) entwickelt. Während ich weiterhin mit Excel und Access arbeiten muss, verlagere ich zunehmend Funktionen in eine Symfony-Anwendung. Teile davon werden als Bundles oder Arbeitsproben präsentiert.
Rithmo mag auf den ersten Blick keine komplexe Anwendung sein und wirkt außerhalb meines spezifischen Anwendungsbereichs vielleicht unspektakulär. Dennoch zeigt es, wie ich vorgehe: Es wurde innerhalb von 4 Stunden entwickelt und dient als erster Prototyp. Die eigentliche spannende Arbeitsprobe wird das geplante Bundle sein, das über Symfony Flex und entsprechende Recipes automatisch installiert werden kann.
Der Hintergrund von Rithmo ist die Notwendigkeit vieler kleiner Helfertools, die ich für meinen beruflichen und privaten Alltag entwickelt habe. Dazu gehören:
Allen gemeinsam ist die Erzeugung einer eindeutigen Nummer als Referenz (z. B. für Dateinamen oder Aktenzeichen). Da diese Funktionalität in vielen meiner Anwendungen benötigt wird, habe ich sie als erste Arbeitsprobe ausgewählt.
Rithmo generiert eine HASH-ID, die in meinem System:
Bereits nach Eingabe von nur 5 Zeichen kann man mit hoher Wahrscheinlichkeit das gewünschte Dokument (Brief, Rechnung oder Notiz) finden. Der Algorithmus vermeidet zudem fortlaufende Muster, was die Nummern sicherer und vielseitiger einsetzbar macht.
Diese Webseite verwendet Cookies und speichert Daten, um die Funktionalität und Sicherheit der Seite zu gewährleisten. Für weitere Informationen lesen Sie unsere DSGVO-Bestimmungen.