Nach Fertigstellung einiger Module, die die Kommunikation zwischen Komponenten auf Dateiebene unterstützen, werde ich versuchen, verschiedene Interaktionsmetaphern bzw. Kommunikationsstrategien aus anderen datenflussgetriebenen Systemen in dWb+ nachzuvollziehen, um die Effizienz der Implementierung und die Vor- und Nachteile ihrer Anwendung diskutieren zu können.
Ich habe mehrere Module fertiggestellt, die in Workspaces die Arbeit mit Dateien erlauben. Da
wäre zunächst ein DirectoryWatcher, der das Auftauchen von Dateien eines bestimmten Namensschemas
in einem gewählten Verzeichnis an seinem Ausgang meldet. Weiterhin wurde ein Modul erstellt, das
Dateien in eine gewähltes Zielverzeichnis kopiert. Auf Wunsch des Anwenders wird die Quelldatei dabei gelöscht.
Daneben existiert noch ein Modul, das nur dem Löschen von Dateien dient. Schließlich wurde
noch ein Modul entwickelt, das auf Empfang eines Dateinamens an seinem Eingang eine
leereDatei gleichen Namens plus angehängtem,
frei wählbarem Suffix erzeugt. Dies schließt den Kreis zu dem ersten genannten Modul:
Dieses hatte ja die Aufgabe, auf die
Erzeugung einer Datei hin den Namen dieser Datei weiterzumelden. Wenn aber das nächste
Modul mit den Inhalten dieser Datei arbeiten möchte ist die Datei eventuell noch gar nicht fertig geschrieben,
da ja das Anlegen der Datei detektiert wird - und das geschieht bereits mit Schreiben des ersten Datenbytes.
Daher detektiert das Modul Dateien mit einem bestimmten Suffix - beispielsweise "trig". Findet es eine solche Datei,
testet es, ob es eine Datei gibt die bis auf den Suffix denselben Namen trägt und meldet dann diesen Namen weiter.
So kann man erst in aller Ruhe eine Datei namens "riesige Datei.mp4" schreiben und
erst wenn man daneben eine Datei namens
"riesige Datei.mp4.trig" anlegt, erkennt
dWb+
das und beginnt mit der Arbeit an der Datei.
Weiterhin werde ich eine Kommunikationsstrategie testen, die - sozusagen als Seiteneffekt - automatisch einen Kontext für jede versendete Botschaft mitbringt. Dies ist ein Feature, das ich erst kürzlich zu dWb+ in seiner nativen Kommunikationsstrategie integriert habe. Die neue Interaktionsstrategie besteht nicht in einer neuen Implementierung, sondern baut auf der bestehenden nativen Strategie auf, interpretiert jedoch ihre Semantik neu: Es existiert pro Modul nur jeweils ein Eingang und eine beliebige Anzahl Ausgänge. Alle Daten, die zwischen Modulen ausgetauscht werden, haben denselben Typ - Arbeitstitel: HashMapMessage. Die Idee ist, dass jedes Modul, wenn es eine Message erhält, darin nach geeigneten Daten sucht und seine Ergebnisse in diese Message packt und sie dann weitersendet. Damit ist der Context automatisch da: die Message gestattet es nicht, Informationen wegzunehmen - es können nur immer neue dazu hinzugefügt werden. Das Problem dabei ist natürlich, dass es schwerer ist, damit Module zu bauen, die beliebig mit anderen kombiniert werden können- Aus Sicht von dWb+ können alle diese Module beliebig kombiniert werden. Das trifft auch dann zu, wenn ein Modul, das Bilder von einem Framegrabber an seinem Ausgang in die versendeten Messages packt, mit einem verbunden wird, das EMails versendet und daher eine Empfängeradresse in der empfangenen Message sucht. Nichtsdestotrotz existieren aber Szenarien, in denen diese Kommunikationsstrategie Vorteile bietet - speziell durch den nicht löschbaren und jederzeit nachvollziehbaren Kontext jeder Message. Man könnte sogar noch dafür sorgen, dass durch das System Audittrails an die Botschaften engehängt werden - etwa die Zeitpunkte der Übergabe zwischen den Modulen und die Module, die die Message bisher passiert hat.
Im Zuge der Umsetzung dieser Kommunikationsstrategie wird auch eine Möglichkeit prototypisch integriert, eine solche Funktionalität in die Verbindungen unabhängig von der Kommunikationsstrategie zu implementieren.
Weiterhin wird eine Möglichkeit untersucht werden, die Kommunikation zu entkoppeln - bisher funktioniert die Kommunikation direkt zwischen Modulen. Dazu werden immer PropertyChangeEvents benutzt. Lösungen zur Verteilung von Workspaces über mehrere Knoten werden immer innerhalb eines Moduls abgewickelt - sei es remoting, ejbs oder explizite Kommunikation übers Netzwerk. In Zukunft soll es möglich sein, für diese Kommunikation zwischen Modulen verschiedene Strategien, bzw. Implementierungen anzubieten.
Synchronisierung von Lorenz-Systemen III
23.10.2020
Nachdem ich in einem vorhergehenden Artikel auf das Problem des kleinen Parameterraums im Zusammenhang mit der Nutzung synchronisierter chaotischer Systeme hingewiesen hatte will ixch hier untersuchen, wie sensibel solche Systeme auf Abweichungen der Parameterwerte zwischen treibendem und getriebenen System reagieren
WeiterlesenAndroid Basteln C und C++ Chaos Datenbanken Docker dWb+ ESP Wifi Garten Geo Go GUI Gui Hardware Java Java. Komponenten Jupyter JupyterBinder Komponenten Links Linux Markdown Markup Music Numerik OpenSource PKI-X.509-CA Präsentationen Python QBrowser Rants Raspi Revisited Security Software-Test sQLshell TeleGrafana Verschiedenes Video Virtualisierung Windows Upcoming...
Ich habe neulich beschrieben, dass ich aktuell mehr und mehr bemerke, dass Dinge, für die ich in meinem NeoVim-Setup Plugins benutzt habe sehr gut auch mit Bordmitteln funktionieren.
WeiterlesenIch habe neulich wieder einmal eine Upgrade- und Backup-Sitzung mit meinen diversen Linuxinstallationen veranstaltet. Der Zeitpunkt schien mir gekommen, da es eine neue stable Variante von Debian (Trixie) gibt.
WeiterlesenIch diskutiere immer wieder gern über das was heute Machine Intelligence oder Artificial Intelligence ( oder wie die ganzen anderen hohlen Phrasen heißen, die dafür heutzutage als Buzzwords missbraucht werden). Das geschieht online, in meinem $dayjob oder auch privat. Meine Meinung steht fest: das ist alles Quatsch und steht in keiner Relation zum Nutzen
WeiterlesenManche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.
Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.
Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...
PS: Meine öffentlichen Codeberg-Repositories findet man hier.