Rithmo Dokumentation

Downloads

Diese Datei enthält alle Bewerbungsunterlagen:
Lebenslauf, Zeugnisse und Zertifikate.
Diese Datei enthält nur den Lebenslauf.
Diese Datei enthält nur meine Arbeitszeugnisse.
Diese Datei enthält nur mein Skillprofil.

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.

Warum zwei Repositories?

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.

Ein pragmatischer Ansatz

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
                            
                            
                            

  • Schritt 1: Klonen Sie das Repository.

    git clone git@bitbucket.org:dimosys/rithmo-skeleton.git

  • Schritt 2: Fügen Sie das Bundle als Submodul hinzu.

    cd rithmo-skeleton
    git submodule add git@bitbucket.org:dimosys/rithmo.git ./app/bundles/MoSys/Rithmo

  • Schritt 3: Starten Sie die Docker-Container.

    docker compose up -d
    docker compose run php composer install

  • Nach Abschluss der Installation können Sie die Anwendung in Ihrem Browser öffnen und die Funktionen von Rithmo nutzen.

    URL: http://localhost:8092/rithmo

Übersetzung aus der Readme (Rithmo Skeleton)

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.

Hintergrund

Der Hintergrund von Rithmo ist die Notwendigkeit vieler kleiner Helfertools, die ich für meinen beruflichen und privaten Alltag entwickelt habe. Dazu gehören:

  • Planungshilfen,
  • "Intelligente" Briefvorlagen,
  • Rechnungsgeneratoren,
  • Zeiterfassungstools und andere.

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.

Funktionsweise

Rithmo generiert eine HASH-ID, die in meinem System:

  • eindeutig,
  • kurz,
  • menschlich lesbar ist.

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.

@master
Alle Rechte bei Dirk Moll
© 2024 Dirk Moll
@V1.0.0.82

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.