Raspberry PI 3 als WLAN-Router

Im Internet gibt es viele Artikel darüber, wie man aus einem Raspberry Pi (RPI) einen WLAN-Router baut. In diesem Beitrag werde ich kurz meine Methode zum Erstellen eines WLAN-Routers mit einer Sing-Box an Bord beschreiben. Die beschriebene Methode funktioniert zum jetzigen Zeitpunkt, und in Zukunft kann sich noch viel ändern. Nutzen Sie diese Notiz also als groben Überblick darüber, was auf Sie zukommt.

SSH

Für diejenigen, die nicht wissen, wie man mit OpenWrt arbeitet, empfehle ich die Installation von dietPI.
Verbinden Sie RPI über eth0 mit Ihrem aktuellen Router und verbinden Sie sich dort über SSH. Sie können die RPI-IP-Adresse im DHCP-Panel des Routers herausfinden. Stellen Sie eine direkte Verbindung zum Root her, zum Beispiel so:

ssh root@[IP_ADDRESS]

WLAN-Adapter

Das eingebaute RPI3 erwies sich ehrlich gesagt als schwach und unterstützt kein 5GHz. Deshalb habe ich den RITMIX RWA-150-Adapter über USB 2 an den Realtek RTL8811CU-Chipsatz angeschlossen. Die Treiber wurden dem Linux-Kernel hinzugefügt, der in meiner dietPi-Version enthalten war. Als nächstes habe ich mit dietpi-config das integrierte WLAN komplett ausgeschaltet. Infolgedessen war nur noch ein WLAN0-USB-Adapter übrig.

Zugangspunkt

Das standardmäßige dietPI-Passwort für Root lautet dietpi. Sobald die Verbindung hergestellt ist, werden Sie vom dietPI-Installationsprogramm/Konfigurator begrüßt. Wenn Sie fertig sind, müssen Sie aufgrund des Neustarts des Geräts erneut eine Verbindung herstellen.

Zuerst müssen Sie hostapd konfigurieren, damit Geräte Ihren Zugangspunkt sehen können. Wenn hostapd nicht installiert ist, installieren Sie es über APK.

Als nächstes müssen Sie eine Konfiguration für hostapd schreiben. Beispiel meiner Konfiguration:

interface=wlan0
driver=nl80211
ssid=MyPiAP
hw_mode=a
channel=157
wmm_enabled=1

auth_algs=1
wpa=2
wpa_passphrase=your_password
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
ieee80211n=1
ieee80211ac=0
ieee80211ax=0
country_code=RU

Die Bedeutung der Hostapd-Konfiguration finden Sie im Handbuch. Wichtig ist jedoch, dass Sie es selbst konfigurieren – den Kanal (2,4 GHz oder 5 GHz), den Ländercode, sonst können Ihre lokalisierten Geräte ohne diesen korrekt mit dem Access Point funktionieren, ich habe dies bereits getan und weiß es, also stellen Sie Ihr Land sorgfältig ein.

DHCP

Als nächstes installieren und konfigurieren Sie dnsmasq, um DHCP zu implementieren. Dies ist notwendig, damit die angeschlossenen Computer die IP-Adresse und den DNS-Server ermitteln können.
Beispiel meiner Konfiguration:

interface=wlan0
dhcp-range=172.19.0.10,172.19.0.200,255.255.255.0,12h

dhcp-option=3,172.19.0.1

dhcp-option=6,1.1.1.1,8.8.8.8

no-resolv

server=1.1.1.1
server=8.8.8.8

Dies ist die Mindestkonfiguration, die es Ihnen ermöglicht, eine Verbindung zu einem Zugangspunkt herzustellen und eine IP-Adresse zu erhalten. Als nächstes müssen Sie Routing und NAT konfigurieren. Dies ist notwendig, damit angeschlossene Computer auf das Internet zugreifen können.

Hier fällt der Hinweis in die Kategorie der typischen Routing-Einrichtung auf einem regulären Debian-kompatiblen System, über die es im Internet viele Artikel gibt. Dann hängt alles davon ab, welche Ziele Sie verfolgen, zum Beispiel die Verbindung zu einem externen Server als neue Schnittstelle im System oder einfach wlan0 <-> eth0, hier enden die RPI-Besonderheiten, dann konfigurieren Sie es nach Ihrem Geschmack.

Ich möchte auch die Notwendigkeit erwähnen, benutzerdefinierte Systemdienste über systemctl zu konfigurieren; Möglicherweise besteht die Notwendigkeit, Dienste in einer Kette zu verbinden. All dies steht in den Systemctl-Handbüchern im Netzwerk. Wenn es Probleme auf der Serviceebene gibt, überprüfen Sie die Protokolle in Journalctl.

Schlussfolgerung

Aus den Geschwindigkeitsmessungen konnten wir etwa 50 Mbit/s aus RPI3 über WLAN herausholen (nach Anschluss eines 5-GHz-Adapters), was einen Geschwindigkeitsverlust von der Hälfte im Vergleich zur direkten Verbindung mit dem Router bedeutet. Ich gebe zu, dass Sie mit produktiveren RPI-Modellen bessere Ergebnisse erzielen können, aber auch spezielle OpenWrt-Geräte und vorgefertigte Lösungen sind möglicherweise besser für Ihre Anforderungen geeignet.

Quellen

https://forums.raspberrypi.com/viewtopic.php?t=394710
https://superuser.com/questions/1408586/raspberry-pi-wifi-hotspot-slow-internet-speed
https://www.youtube.com/watch?v=jlHWnKVpygw

Lokale Bilderzeugung: ComfyUI- und FLUX-Modell

Heutzutage sind Sie nicht mehr auf Cloud-Dienste angewiesen: Sie können hochwertige Bilder vollständig auf Ihrer eigenen Hardware erstellen. In diesem Beitrag beschreibe ich, wie Sie das moderne FLUX-Modell mithilfe von ComfyUI lokal auf Ihrem Computer ausführen.

ComfyUI verwendet eine knotenbasierte Architektur. Dies ermöglicht Ihnen:
– Volle Kontrolle über jede Generationsstufe.
– Einfaches Teilen vorgefertigter „Workflows“

FLUX ist ein großes Modell, daher sind die Hardwareanforderungen höher als bei SD 1.5 oder SDXL:
Grafikkarte (GPU): Nvidia RTX mit 12 GB VRAM oder höher (für komfortables Arbeiten). Wenn Sie über 8 GB oder weniger verfügen, müssen Sie die quantisierten Versionen (GGUF oder NF4) verwenden.
Arbeitsspeicher (RAM): mindestens 16 GB (vorzugsweise 32 GB und mehr).
Speicherplatz: Ungefähr 20–50 GB für Modelle und Komponenten.

Der einfachste Weg, FLUX zu starten, ist die Verwendung einer vorgefertigten Vorlage. Suchen Sie einfach im Workflow-Fenster nach „flux text to image“ und installieren Sie es.

Schreiben Sie im Knoten „Text to Image (Flux.1 Dev)“ eine Eingabeaufforderung auf Englisch, wählen Sie die Auflösung aus (FLUX funktioniert gut mit 1024 x 1024 und sogar höher) und drücken Sie RUN.

Die erste Generation kann einige Zeit dauern, da die Modelle in den Grafikkartenspeicher geladen werden.

https://github.com/comfyanonymous/ComfyUI

Mars Miners v2

[Pause: Red Horizon Interplanetary News Service]

GASTGEBER: Gute Nacht, Mars! Der Hauptnachrichtendienst der Kuppel ist bei Ihnen. Heute hat die Verwaltung der Mars Miners-Kolonie ein umfangreiches Software-Update für alle Siedler und strategischen Module angekündigt.

HAUPTVERANSTALTUNGEN:

1. Aktualisierung der neuronalen Schaltkreise von Automaten Die Abteilung für Kybernetik hat die erfolgreiche Aktualisierung aller autonomen Bergbaueinheiten bestätigt. Neue Protokolle für strategisches Denken beseitigen kritische Fehler in der Entwicklungslogik. Jetzt wird die Simulation des Wettbewerbs um Ressourcen noch unberechenbarer und härter. Siedler können selbstständig taktische Analysezeiten für ihre KI-Partner festlegen.

2. Integration virtueller Trainingsgelände Neu angekommene Kolonisten haben Zugang zu persönlichen Trainingssimulatoren. Jetzt können Sie Ihre Fähigkeiten zur Sektoreroberung im Einzelspielermodus verbessern, bevor Sie sich in den echten Kampf um die Marsminen stürzen. Das System ist mit aktualisierten Trainingsprotokollen ausgestattet.

3. Stabilisierung der Kommunikationskanäle zwischen Kuppeln Kommunikationsingenieure haben die Kalibrierung der Satellitenkonstellation abgeschlossen. Die Multiplayer-Interaktionsschnittstelle zwischen entfernten Außenposten funktioniert jetzt ohne Verzögerung. Anomalien, die bei strategischen Operationen zu Verbindungsunterbrechungen führten, wurden beseitigt.

4. Unterbewusste Berechnung: Aktualisierung neuronaler Auslöser Die technische Abteilung hat ein paralleles Computersystem implementiert. Die taktische KI-Datenverarbeitung erfolgt jetzt im Hintergrund, ohne die CPU Ihrer persönlichen Terminals zu belasten. Keine Pausen mehr in kritischen Phasen des Spiels.

GASTGEBER: Die Verwaltung erinnert Sie daran, dass die neue Version der Spielesimulatoren bereits in das zentrale Terminal geladen wurde. Um Daten zu synchronisieren, wird empfohlen, Ihre lokalen Schnittstellen neu zu starten.

Die Zukunft des Mars liegt in Ihren Händen. Bleiben Sie bei uns auf der Red Horizon-Frequenz.

https://mediumdemens.vps.webdock.cloud/mars-miners/

Ausführen von macOS in Docker

Es ist möglich, macOS in Docker auszuführen, trotz der Einwände von Leuten, die sagen, dass dies unmöglich sei, und angeblich verfügt macOS über Schutzsysteme, die dem widerstehen können.

Einige der klassischen Möglichkeiten, macOS auf PC-Rechnern auszuführen, waren in der Vergangenheit:
*Hackintosh
* Virtualisierung, zum Beispiel mit VMWare

Hackintosh setzt das Vorhandensein von Hardware voraus, die dem Original-Mac ähnelt oder diesem sehr nahe kommt. Die Virtualisierung stellt bestimmte Anforderungen an die Hardware, jedoch im Allgemeinen nicht so streng wie im Fall von Hackintosh. Allerdings kommt es bei der Virtualisierung zu Performance-Problemen, da macOS nicht für das Arbeiten in einer virtuellen Umgebung optimiert ist.

Seit kurzem ist es möglich, macOS in Docker auszuführen. Möglich wird dies durch das Docker-OSX-Projekt, das vorgefertigte macOS-Images zur Ausführung auf Docker bereitstellt. Es ist erwähnenswert, dass Docker-OSX kein offizielles Apple-Projekt ist und von diesem nicht unterstützt wird. Sie können jedoch macOS auf Docker ausführen und es zum Entwickeln und Testen von Anwendungen verwenden.

Eines der ersten Projekte, das macOS in Docker ausführt:
https://github.com/sickcodes/Docker-OSX

Allerdings konnte ich es nie vollständig starten; Nach dem Laden in Recovery OS fielen meine Tastatur und meine Maus einfach ab und ich konnte die Installation nicht fortsetzen. Gleichzeitig funktioniert im ersten Bootmenü die Tastatur. Vielleicht liegt es daran, dass dieses Projekt nicht mehr so ​​aktiv unterstützt wird und es bei der Ausführung unter Windows 11 + WSL2 + Ubuntu einige spezifische Probleme gibt.

Eines der derzeit aktivsten Projekte:
https://github.com/dockur/macos

Ermöglicht die Ausführung von macOS in Docker, die Schnittstelle funktioniert über den Browser per VNC(?)-Weiterleitung. Nach dem Start ist macOS unter http://localhost:5900 verfügbar

Ich habe es geschafft, dieses Projekt auszuführen und macOS Big Sur (Minute 2020) unter Windows 11 + WSL2 + Ubuntu zu installieren, aber nur durch Ändern der Compose-Datei, nämlich:

environment:
    VERSION: "11"
    RAM_SIZE: "8G"
    CPU_CORES: "4"

VERSION: „11“ ist die Version von macOS, in diesem Fall Big Sur
RAM_SIZE: „8G“ ist die für macOS zugewiesene RAM-Größe
CPU_CORES: „4“ ist die Anzahl der CPU-Kerne, die macOS zugewiesen sind

Derzeit ist auch die Ausführung von macOS Tahoe (16) möglich, allerdings gibt es eine Reihe von Problemen, die die Projektentwickler beherzt zu lösen versuchen.

Diese originelle Art, macOS zu starten, ermöglicht es Ihnen, es auf Ihrer Nicht-Mac-Hardware auszuprobieren und sich, nachdem Sie genug gelitten haben, einen Mac zu kaufen. Es kann jedoch zum Testen von Software auf älteren Systemen und für die allgemeine Entwicklung nützlich sein.

Swift in WSL2 (Linux) erstellen

Das Swift-Ökosystem entwickelt sich aktiv außerhalb der Apple-Plattformen, und heute ist es recht komfortabel, darin unter Windows mit dem Windows-Subsystem für Linux (WSL2) zu schreiben. Es ist zu bedenken, dass für Assemblys unter Linux/WSL eine schlanke Version von Swift verfügbar ist – ohne proprietäre Apple-Frameworks (wie SwiftUI, UIKit, AppKit, CoreData, CoreML, ARKit, SpriteKit und andere iOS/macOS-spezifische Bibliotheken), aber für Konsolen-Dienstprogramme und das Backend ist dies mehr als ausreichend. In diesem Beitrag werden wir den Prozess der Vorbereitung der Umgebung und der Erstellung des Swift-Compilers aus dem Quellcode in WSL2 Schritt für Schritt durchgehen (am Beispiel von Ubuntu/Debian).

Wir aktualisieren die Liste der Pakete und das System selbst:

sudo apt update && sudo apt upgrade -y

Installieren Sie die erforderlichen Abhängigkeiten für den Build:

sudo apt install -y \
  git cmake ninja-build clang python3 python3-pip \
  libicu-dev libxml2-dev libcurl4-openssl-dev \
  libedit-dev libsqlite3-dev swig libncurses5-dev \
  pkg-config tzdata rsync

Installieren Sie den Compiler und Linker (LLVM und LLD):

sudo apt install -y llvm lld

Klonen Sie das Swift-Repository mit allen Abhängigkeiten:

git clone https://github.com/apple/swift.git
cd swift
utils/update-checkout --clone

Installieren Sie „swiftly“ und fertiges Swift mit Swiftc

curl -O https://download.swift.org/swiftly/linux/swiftly-$(uname -m).tar.gz && \
tar zxf swiftly-$(uname -m).tar.gz && \
./swiftly init --quiet-shell-followup && \
. "${SWIFTLY_HOME_DIR:-$HOME/.local/share/swiftly}/env.sh" && \
hash -r

Beginnen wir mit dem Build (dies wird lange dauern):

utils/build-script \
  --release-debuginfo \
  --swift-darwin-supported-archs="x86_64" \
  --llvm-targets-to-build="X86" \
  --skip-build-benchmarks \
  --skip-test-cmark \
  --skip-test-swift \
  --skip-ios \
  --skip-tvos \
  --skip-watchos \
  --skip-build-libdispatch=false \
  --skip-build-cmark=false \
  --skip-build-foundation \
  --skip-build-lldb \
  --skip-build-xctest \
  --skip-test-swift

Nachdem der Build abgeschlossen ist, fügen Sie den Pfad zum Compiler zu PATH hinzu (geben Sie Ihren Pfad zum Build-Ordner an):

export PATH=/root/Sources/3rdparty/build/Ninja-RelWithDebInfoAssert/swift-linux-x86_64/bin/swiftc:$PATH

Wir überprüfen, ob die installierte Version von Swift funktioniert:

swift --version

Erstellen Sie eine Testdatei und führen Sie sie aus:

echo "print(\"Hello, World!\")" > hello.swift
swift hello.swift

Sie können die Binärdatei auch kompilieren und ausführen:

swiftc hello.swift
./hello

Quellen

Teflecher

Teflecher ist eine schnelle, interaktive, plattformübergreifende Quizanwendung, die auf Kotlin Multiplatform (KMP) und Compose Multiplatform basiert. Es ermöglicht Benutzern, Quizfragen intuitiv aus lokalen JSON-Dateien oder Remote-URLs zu laden, Multiple-Choice-Fragen zu beantworten, sofortiges Feedback zu richtigen Antworten zu erhalten und ihre Ergebnisse zu verfolgen.

Web:
https://demensdeum.com/software/teflecher/

GitHub:
https://github.com/zefir1990/teflecher

Außerdem ein Quiz-Editor im Teflecher-Editor-Format, der auf Ionic + Capacitor-Technologien basiert

Web:
https://demensdeum.com/software/teflecher-editor/

GitHub:
https://github.com/zefir1990/teflecher-editor

Musterinterpreter in der Praxis

Im letzten Artikel haben wir uns mit der Theorie des Interpreter-Musters befasst, gelernt, was ein AST-Baum ist und wie man terminale und nicht-terminale Ausdrücke abstrahiert. Lassen Sie uns dieses Mal von der Theorie Abstand nehmen und sehen, wie dieses Muster in ernsthaften kommerziellen Projekten angewendet wird, die wir alle täglich verwenden!

Spoiler: Möglicherweise verwenden Sie gerade das Interpreter-Muster, indem Sie einfach diesen Text in Ihrem Browser lesen!

Eines der auffälligsten und vielleicht wichtigsten Beispiele für die Verwendung dieses Musters in der Branche ist JavaScript. Die ursprünglich „auf dem Knie“ entstandene Sprache funktioniert heute dank des Interpretationskonzepts auf Milliarden von Geräten.

10 Tage, die das Internet verändert haben

Die Geschichte von JavaScript ist voller Legenden. Im Jahr 1995 erhielt Brendan Eich während seiner Arbeit bei Netscape Communications die Aufgabe, eine einfache Skriptsprache zu entwickeln, die direkt in einem Browser (Netscape Navigator) ausgeführt werden konnte, um Webseiten interaktiv zu gestalten. Das Management wollte etwas mit einer Syntax, die dem damals sehr beliebten Java ähnelte, aber nicht für professionelle Ingenieure, sondern für Webdesigner gedacht war.

Eich hatte nur 10 Tage Zeit, um den ersten Prototyp der Sprache zu schreiben, die damals Mocha hieß (damals LiveScript und aus Marketinggründen erst JavaScript). Der Ansturm kam nicht von ungefähr: Microsoft war ihm dicht auf den Fersen und bereitete gleichzeitig aktiv seine eigene Skriptsprache VBScript für die Einbettung in den Internet Explorer-Browser vor. Netscape musste dringend seine Antwort veröffentlichen, um im drohenden Browserkrieg nicht zu verlieren.

Es war einfach keine Zeit, einen komplexen Compiler in Maschinencode zu schreiben. Die offensichtlichste und schnellste Lösung für Eich war die Architektur des klassischen Interpreter.

Der erste Interpreter (SpiderMonkey) funktionierte folgendermaßen:

  1. Der Textquellcode des Skripts wurde von der Seite gelesen.
  2. Der lexikalische Analysator hat den Text in Token zerlegt.
  3. Der Parser hat einen Abstract Syntax Tree (AST) erstellt. In Bezug auf das Interpreter-Muster bestand dieser Baum aus terminalen Ausdrücken (Zeichenfolgen, Zahlen wie 42) und nicht-terminalen Ausdrücken (Funktionsaufrufe, Anweisungen wie If, ​​​​While).
  4. Dann „durchlief“ die virtuelle Maschine diesen Baum Schritt für Schritt und führte die darin eingebetteten Anweisungen an jedem Knoten aus (wobei sie eine Methode ähnlich Interpret() aufrief).

Kontext und Objekte

Erinnern Sie sich an das Context-Objekt, das wir in der klassischen Implementierung an die Methode Interpret(Context context) übergeben mussten? Der Interpreter benötigt es, um den aktuellen Speicherzustand zu speichern.

Im Fall von JavaScript wird die Rolle dieses Kontexts auf der obersten Ebene von einem globalen Objekt (z. B. einem Fenster in einem Browser) übernommen. Wenn Ihr AST-Knoten versucht, beispielsweise über document.write(“Hello”) Text auf den Bildschirm zu schreiben, greift der Interpreter auf seinen Kontext (das Dokumentobjekt) zu und ruft die gewünschte interne Browser-API auf.

Dank des Interpreters kann JavaScript so einfach mit dem DOM (Document Object Model) interagieren – das sind alles nur Objekte in einem Kontext, auf die über Baumknoten zugegriffen wird.

Entwicklung des Interpreters: JIT-Kompilierung

Historisch gesehen ist JS in Browsern lange Zeit ein „reiner“ Interpreter geblieben. Und das hatte einen großen Nachteil: langsame Geschwindigkeit. Das Parsen des Baums und das langsame Durchlaufen jedes Knotens bei jeder Ausführung des Skripts verlangsamte komplexe Webanwendungen.

Mit der Einführung der V8-Engine von Google (integriert in Chrome) im Jahr 2008 kam es zu einer Revolution. Ingenieure erkannten, dass ein Dolmetscher für das moderne Web nicht ausreicht. Die Engine ist komplexer geworden: Sie erstellt immer noch den AST-Baum, verwendet aber jetzt die JIT-Kompilierung (Just-In-Time).

Moderne JS-Engines (V8, SpiderMonkey) funktionieren wie eine komplexe Pipeline:

  1. Der schnelle und einfache Basisinterpreter beginnt sofort mit der Ausführung Ihres JS-Codes, ohne überhaupt auf die Kompilierung warten zu müssen (das klassische Muster funktioniert hier immer noch).
  2. Parallel dazu überwacht die Engine „heiße“ Codeabschnitte (Schleifen oder Funktionen, die tausende Male aufgerufen werden).
  3. Diese Abschnitte werden vom JIT-Compiler unter Umgehung des langsamen Interpreters direkt in optimierten Maschinencode kompiliert.

Es war diese Kombination aus dem sofortigen Start des Interpreters und der Rechenleistung der Kompilierung, die es JavaScript ermöglichte, die Welt zu erobern und zur Sprache von Servern (Node.js) und mobilen Anwendungen (React Native) zu werden.

Dolmetscher in der Spielebranche

Trotz der Dominanz von C++ im Heavy Computing ist das Interpreter-Muster ein Industriestandard in der Spieleentwicklung zum Erstellen von Spiellogik. Wofür? Damit Spieleentwickler Spiele erstellen können, ohne das Risiko einzugehen, die Engine „abzuwerfen“ oder sie ständig neu kompilieren zu müssen.

Ein hervorragendes historisches Beispiel ist UnrealScript – die Sprache, in der die Logik der Spiele Unreal Tournament und Gears of War in den Unreal Engines 1, 2 und 3 geschrieben wurde. Der Text wurde in einen kompakten abstrakten Maschinenbytecode kompiliert, der dann Schritt für Schritt von der virtuellen Maschine der Engine (interpretiert) wurde.

Visuelle Diagrammskripte (Blueprints)

Heute wurde Text durch visuelle Programmierung ersetzt – das Blueprints-System in Unreal Engine 4 und 5.

Wenn Sie jemals einen Blueprint in Unreal Engine geöffnet haben, haben Sie viele Knoten gesehen, die durch Kabel verbunden sind. Architektonisch gesehen ist das gesamte Blueprints-Diagramm ein riesiger abstrakter Syntaxbaum (AST), der auf dem Bildschirm gezeichnet wird:

  1. Terminalausdrücke: Konstante Knoten. Zum Beispiel ein Knoten, der einfach die Zahl 42 oder einen String speichert. Sie geben bei der Interpretation einen bestimmten Wert zurück.
  2. Nicht-terminale Ausdrücke: Rechenknoten (Hinzufügen) oder Flusskontrollknoten (Zweig). Sie verfügen über Argumenteingänge, die der Interpreter zunächst rekursiv auswertet, bevor er das Ergebnis als Ausgabepin erzeugt.

Und die Rolle des Kontexts spielt hier die Erinnerung an eine Instanz eines bestimmten Spielobjekts (Akteur). Die Interpretermaschine „geht“ sicher durch dieses Diagramm, fordert Daten an und führt Übergänge durch.

Wo wird der Interpreter sonst noch verwendet?

Das Interpretermuster kann in fast jedem komplexen System gefunden werden, in dem dynamische Anweisungen ausgeführt werden müssen. Hier sind nur einige Beispiele aus kommerzieller Software:

  • Interpretierte Programmiersprachen (Python, Ruby, PHP). Ihre gesamte Laufzeit basiert auf dem klassischen Muster. Beispielsweise analysiert die CPython-Referenzimplementierung Ihr .py-Skript zunächst in ein AST, kompiliert es in Bytecode und dann interpretiert eine riesige virtuelle Maschine (Rechenschleife) diesen Bytecode Schritt für Schritt.
  • Java Virtual Machine (JVM). Zunächst wird Java-Code nicht in Maschinenanweisungen, sondern in Bytecode kompiliert. Wenn Sie die Anwendung ausführen, fungiert die JVM als Interpreter (allerdings mit aggressiver JIT-Kompilierung, genau wie in V8).
  • Datenbanken und SQL Wenn Sie eine SQL-Abfrage (SELECT * FROM user) in PostgreSQL oder MySQL ausgeben, fungiert die Datenbank-Engine als Interpreter. Es führt eine lexikalische Analyse durch, erstellt einen AST-Abfragebaum, generiert einen Ausführungsplan und „interpretiert“ diesen Plan dann buchstäblich, indem es über die Zeilen der Tabellen iteriert.
  • Reguläre Ausdrücke (RegEx). Jede Engine für reguläre Ausdrücke analysiert intern ein Zeichenfolgenmuster (z. B. ^\d{3}-\d{2}$) in ein Zustandsdiagramm (NFA/DFA-Automaten), das der interne Interpreter dann durchläuft und jedes Eingabezeichen mit den Eckpunkten dieses Diagramms abgleicht.
  • Unity Shader Graph / Unreal Material Editor – visuelle Knoten in modularen Shader-Code (GLSL/HLSL) interpretieren.
  • Blender Geometry Nodes – interpretieren mathematische und geometrische Operationen, um prozedural 3D-Modelle in Echtzeit zu generieren.

Gesamt

Das Interpreter-Muster geht längst über den Rahmen des „Schreibens eines eigenen Taschenrechners“ hinaus. Dies ist der leistungsstärkste Industriestandard. Von JavaScript-Engines, die täglich Gigabytes an Code hinter den Kulissen von Browsern ausführen, bis hin zu Spieledesignern, die es Ihnen ermöglichen, komplexe Logik ohne Kenntnisse von C++ zu erstellen, bleiben Interpreter eines der wichtigsten Architekturkonzepte in der modernen IT-Entwicklung.

Glazki TV: Moderner Player für Internetfernsehen

Glazki TV ist ein moderner, leistungsstarker Player für Internetfernsehen (IPTV), der auf Basis von React Native und Expo entwickelt wurde. Das Projekt konzentriert sich auf Benutzerfreundlichkeit und Geschwindigkeit und bietet eine praktische Schnittstelle zum Anzeigen von IPTV-Kanälen sowohl auf Mobilgeräten als auch im Browser.

Hauptmerkmale

  • 📺 Kanalsuche: Durchsuchen Sie Tausende von Kanälen, kategorisiert für eine einfache Navigation.
  • 🔍 Suche: Finden Sie schnell die gewünschten Kanäle anhand des Namens.
  • ❤️ Favoriten: Speichern Sie Ihre Lieblingskanäle für den schnellen Zugriff (Daten werden lokal gespeichert).
  • 🔗 Deep Linking: Teilen Sie direkte Links zu Kanälen, die automatisch geöffnet werden.
  • 🌓 Theme-Unterstützung: Die Benutzeroberfläche passt sich automatisch an das dunkle oder helle Theme des Systems an.
  • 🌐 Web-Unterstützung: Der Player ist im Browser mit URL-Synchronisierung voll funktionsfähig.

Technologie-Stack

Das Projekt basiert auf modernen Entwicklungstools:

  • Framework: React Native + Expo
  • Video Player: expo-video (замена устаревшему expo-av)
  • UI-Toolkit: React-Native-Paper
  • Playlist-Parser: iptv-playlist-parser

Webversion:
https://demensdeum.com/software/glazki-tv/

Google Play-Version:
https://play.google.com/store/apps/details?id=com.demensdeum.glazkitv

Das Projekt entwickelt sich weiter und ich würde mich über jedes Feedback freuen!

Flammenstahl: Todesmaske 2

In den dunklen, neonflackernden Tiefen der digitalen Unterwelt wartet eine neue Herausforderung. Wir freuen uns, den Vorhang für Flame Steel: Death Mask 2 zu öffnen, einen Multiplayer-3D-Dungeon-Crawler, der Retro-Cyberpunk-Ästhetik mit modernem Echtzeit-Gameplay verbindet.

🕹️ Was ist Flame Steel: Death Mask 2?

Stellen Sie sich vor, Sie wachen in einem prozedural erzeugten Labyrinth auf, in dem jeder Schatten ein anderer Spieler oder eine feindliche „Filter“-Entität sein könnte. Flame Steel: Death Mask 2 versetzt Sie in die Rolle eines Suchers und navigiert durch eine Welt, die auf der Flame Steel Engine 2 und Three.js basiert.

Das Spiel befindet sich derzeit in einem frühen Entwicklungsstadium, aber das Kernerlebnis ist bereits live und bereit zur Erkundung.

🚀 Hauptfunktionen

  • Mehrspieler-Erkundung: Sie sind nicht allein im Raster. Sehen Sie andere Spieler in Echtzeit, während Sie durch die labyrinthischen Korridore navigieren.
  • Prozedurale Dungeons: Kein Lauf gleicht dem anderen. Der Server generiert neue Karten voller Geheimnisse und Gefahren.
  • Das Terminal: Für diejenigen, die einen eher „praktischen“ Ansatz bevorzugen, ermöglicht eine integrierte Befehlszeilenschnittstelle die direkte Interaktion mit dem System – führen Sie erweiterte Aktionen aus, debuggen Sie oder chatten Sie einfach mit anderen Suchern.
  • Kampf & Überleben: Treten Sie gegen Filter an, um Bits zu verdienen, und verwenden Sie diese Bits dann, um Truhen freizuschalten und Ihre Statistiken zu verbessern. Behalten Sie Ihre Gesundheit im Auge; Das Überleben ist nicht garantiert.
  • Retro-Cyberpunk-Ästhetik: Kontrastreiche Grafik und eine düstere Atmosphäre, die eine Hommage an die klassische Cyberpunk-Ära darstellt.

🛠️ Die Technik hinter der Maske

Das für den Browser entwickelte Spiel nutzt Folgendes:

  • Frontend: Vanilla JavaScript und Three.js für reibungsloses 3D-Rendering.
  • Backend: Node.js und WebSockets (ws) für blitzschnelle Multiplayer-Synchronisierung.
  • Infrastruktur: MongoDB für Datenpersistenz und Redis für räumliche Echtzeitindizierung.

🗺️ Was kommt als nächstes?

Wir fangen gerade erst an. Als Early-Access-Projekt wird Death Mask 2 regelmäßig aktualisiert, darunter:

  • Neue Entitätstypen und komplexe Kampfmechaniken.
  • Tieferes Geschichtenerzählen über Geschichte und Umwelt.
  • Verbesserte Terminalbefehle und soziale Funktionen.
  • Optischer und leistungstechnischer Feinschliff.

🔗 Treten Sie dem Grid bei

Möchten Sie Ihr Können testen? Geben Sie Ihren Codenamen ein und initialisieren Sie noch heute Ihre Identität:

👉 Flame Steel: Death Mask 2 spielen

Bleiben Sie gespannt auf weitere Updates, während wir die digitalen Grenzen weiter ausbauen. Willkommen im Service. Es erfordert Sie.

Uschki-Radio

Ushki-Radio ist ein plattformübergreifender Radioplayer für Online-Radio, bei dessen Entwicklung Einfachheit und Hörvergnügen im Vordergrund stehen. Keine unnötigen Funktionen, keine überlasteten Schnittstellen – einfach einschalten und zuhören.


https://demensdeum.com/software/ushki-radio

Das Projekt nutzt den Open-Source-Radiobrowser, wodurch Tausende von Radiosendern aus aller Welt in der Anwendung verfügbar sind. Sie können sie nach Name, Genre oder Beliebtheit suchen, sie zu Ihren Favoriten hinzufügen und schnell zu Ihren Lieblingssendern zurückkehren.

Ushki-Radio eignet sich perfekt für die Rolle eines Hintergrundradioplayers: Es merkt sich den letzten Sender, ermöglicht die Steuerung der Lautstärke und erfordert keine komplexen Einstellungen. Die Benutzeroberfläche ist prägnant und verständlich – alles ist so gestaltet, dass nichts von Musik, Gesprächen und Übertragungen ablenkt.

Technisch basiert das Projekt auf React Native und Expo, funktioniert also sowohl im Browser als auch als native Anwendung. Unter der Haube wird expo-av zum Abspielen von Audio verwendet und Benutzereinstellungen werden lokal gespeichert. Es werden mehrere Sprachen unterstützt, darunter Russisch und Englisch.

Ushki-Radio ist ein gutes Beispiel dafür, was ein moderner Internetradio-Player sein kann: offen, leichtgewichtig, erweiterbar und in erster Linie auf den Hörer ausgerichtet. Das Projekt wird unter der MIT-Lizenz vertrieben und eignet sich sowohl für den persönlichen Gebrauch als auch als Grundlage für eigene Experimente mit Audioanwendungen.

GitHub:
https://github.com/demensdeum/Ushki-Radio

Coverer

Coverseer – intelligenter Prozessbeobachter mit LLM

Coverseer ist ein Python-CLI-Tool zur intelligenten Überwachung und zum automatischen Neustart von Prozessen. Im Gegensatz zu klassischen Watchdog-Lösungen analysiert es die Textausgabe der Anwendung mithilfe des LLM-Modells und trifft Entscheidungen basierend auf dem Kontext und nicht nur auf dem Exit-Code.

Das Projekt ist Open Source und auf GitHub verfügbar:
https://github.com/demensdeum/coverseer

Was ist Coverser?

Coverseer startet den angegebenen Prozess, überwacht kontinuierlich dessen stdout und stderr, leitet die neuesten Ausgabeblöcke an das lokale LLM (über Ollama) weiter und stellt fest, ob sich der Prozess im korrekten Ausführungszustand befindet.

Wenn das Modell einen Fehler, ein Einfrieren oder ein falsches Verhalten erkennt, bricht Coverseer den Prozess automatisch ab und startet ihn erneut.

Hauptfunktionen

  • Kontextbezogene Analyse der Ausgabe – Anstelle der Überprüfung des Exit-Codes wird eine Protokollanalyse mit LLM verwendet
  • Automatischer Neustart – der Prozess wird neu gestartet, wenn Probleme oder ein abnormaler Abbruch erkannt werden
  • Arbeiten mit lokalen Modellen – Ollama wird verwendet, ohne Daten an externe Dienste zu übertragen
  • Detaillierte Protokollierung – alle Aktionen und Entscheidungen werden zur späteren Diagnose aufgezeichnet
  • Eigenständige Ausführung – kann in eine einzelne ausführbare Datei (z. B. .exe) gepackt werden

Wie es funktioniert

  1. Coverseer führt den über die CLI übergebenen Befehl aus
  2. Sammelt und puffert die Textausgabe des Prozesses
  3. Sendet die letzten Zeilen an das LLM-Modell
  4. Erhält eine semantische Bewertung des Prozessstatus
  5. Beendet den Prozess bei Bedarf und startet ihn neu

Mit diesem Ansatz können Sie Probleme identifizieren, die von Standardüberwachungstools nicht erkannt werden können.

Anforderungen

  • Python 3.12 oder höher
  • Ollama installiert und läuft
  • Geladenes Modell gemma3:4b-it-qat
  • Python-Abhängigkeiten: requests, ollama-call

Beispiel verwenden


python Coverseer.py „Ihr Befehl hier“

Beobachten Sie beispielsweise das Laden des Ollama-Modells:


Python Coverseer.py „Ollama Pull Gemma3:4b-it-qat“

Coverseer analysiert die Befehlsausgabe und reagiert automatisch auf Ausfälle oder Fehler.

Praktische Anwendung

Coverseer ist besonders nützlich in Szenarien, in denen Standard-Supervisor-Mechanismen nicht ausreichen:

  • CI/CD-Pipelines und automatische Builds
  • Hintergrunddienste und Agenten
  • Experimentelle oder instabile Prozesse
  • Tools mit großen Mengen an Textprotokollen
  • Entwicklungsumgebungen, in denen Selbstheilung wichtig ist

Warum der LLM-Ansatz effektiver ist

Klassische Überwachungssysteme reagieren auf Symptome. Coverser analysiert Verhalten. Das LLM-Modell ist in der Lage, Fehler, Warnungen, wiederholte Ausfälle und logische Sackgassen zu erkennen, selbst wenn der Prozess formal weiterläuft.

Dadurch wird die Überwachung genauer und die Zahl der Fehlalarme verringert.

Schlussfolgerung

Coverseer ist ein klares Beispiel für die praktische Anwendung von LLM bei DevOps und Automatisierungsaufgaben. Es erweitert das traditionelle Verständnis der Prozessüberwachung und bietet einen intelligenteren, kontextbasierten Ansatz.

Das Projekt wird insbesondere für Entwickler interessant sein, die mit KI-Tools experimentieren und nach Möglichkeiten suchen, die Stabilität ihrer Systeme zu verbessern, ohne die Infrastruktur zu verkomplizieren.

Flame Steel: Mars-Minenarbeiter

Flame Steel: Mars Miners ist ein taktisches Strategiespiel mit ungewöhnlichem Tempo und einem Schwerpunkt auf Entscheidungsfindung statt auf Reflexen. Das Spiel findet auf dem Mars statt, wo die Spieler angesichts begrenzter Informationen und ständigem Druck von Rivalen um die Kontrolle über Ressourcen und Gebiete konkurrieren.

Das Gameplay basiert auf dem Bau von Hub-Stationen, die die Infrastruktur Ihrer Expedition bilden. Mit Knoten können Sie Ressourcen gewinnen, Ihren Einflussbereich erweitern und Logistik aufbauen. Jede Platzierung zählt: Ein Fehler kann dem Feind den Weg zu Schlüsselsektoren ebnen oder Ihnen einen strategischen Vorteil nehmen.

Der Spielrhythmus ist bewusst kontrolliert und intensiv. Es liegt irgendwo zwischen Schach, Go und Seekampf: Positionierung, Vorhersage der Aktionen des Gegners und die Fähigkeit, mit Unsicherheit zu arbeiten, sind hier wichtig. Ein Teil der Karte und die Absichten des Feindes bleiben verborgen, sodass der Erfolg nicht nur von der Berechnung, sondern auch vom Erfassen der Situation abhängt.

Flame Steel: Mars Miners unterstützt das Online-Spielen, was jedes Spiel einzigartig macht – Strategien entwickeln sich und die Meta wird gerade geformt. Das Spiel befindet sich in einem frühen Entwicklungsstadium und darin liegt seine Stärke: Spieler haben die Möglichkeit, als Erste in ein neues, nicht standardmäßiges Projekt einzutauchen, dessen Entwicklung zu beeinflussen und Mechaniken zu entdecken, die nicht die üblichen Vorlagen des Genres kopieren.

Wenn Sie sich für taktische Spiele mit Tiefe, experimentellem Design und einem Schwerpunkt auf Denken interessieren, sollten Sie sich jetzt Flame Steel: Mars Miners ansehen.

SPIELREGELN

* Das Spielfeld besteht aus Feldern, auf denen die Spieler nacheinander ihre Objekte platzieren. In jeder Runde kann ein Spieler eine Bauaktion durchführen.

* Es dürfen nur zwei Arten von Objekten gebaut werden: Hub-Stationen und Minen. Jede Konstruktion ist ausschließlich auf einer freien Zelle möglich, die sich vertikal oder horizontal neben einem vorhandenen Spielerknoten befindet. Eine diagonale Platzierung ist nicht zulässig.

* Hub-Stationen bilden die Grundlage der Gebietskontrolle und dienen als Erweiterungspunkte. Minen werden nach den gleichen Regeln platziert, gelten jedoch als Ressourcenobjekte und wirken sich direkt auf das Endergebnis der Gruppe aus.

* Wenn ein Spieler vertikal oder horizontal eine durchgehende Linie seiner Knotenstationen baut, wird eine solche Linie automatisch zu einer Waffe. Die Waffe ermöglicht es, den Feind anzugreifen und seine Infrastruktur zu zerstören.

* Um eine Waffe abzufeuern, wählt der Spieler ein zu seiner Waffe gehörendes Feld aus und zeigt auf eine beliebige feindliche Knotenstation auf dem Spielfeld. Die ausgewählte feindliche Knotenstation wird zerstört und vom Spielfeld entfernt. Minen können nicht direkt angegriffen werden – nur durch die Zerstörung von Knotenpunkten, die den Zugang zu ihnen ermöglichen.

* Das Spiel läuft bis zum festgelegten Spielende. Sieger ist der Spieler, der zu diesem Zeitpunkt die meisten Rohstoffminen auf dem Spielfeld hat. Bei Gleichheit können die Gebietskontrolle oder zusätzliche durch den Spielmodus bedingte Bedingungen ausschlaggebend sein.

https://mediumdemens.vps.webdock.cloud/mars-miners

Antigravitation

Innerhalb weniger Tage habe ich mit Hilfe von Antigravity das Masonry-AR-Backend von PHP + MySQL auf Node.js + MongoDB + Redis -> Docker übertragen. Die Fähigkeiten der KI sind wirklich erstaunlich. Ich erinnere mich, wie ich 2022 über ChatGPT die einfachsten Shader auf Shadertoy.com geschrieben habe und es schien, als könnte dieses Spielzeug nichts Höheres leisten.
https://www.shadertoy.com/view/cs2SWm

Vier Jahre später beobachte ich, wie ich in ca. 10 Eingabeaufforderungen mein Projekt mühelos von einer Back-Plattform auf eine andere übertragen und dabei Containerisierung hinzugefügt habe.
https://mediumdemens.vps.webdock.cloud/masonry-ar/

Cool, wirklich cool.

Kaban-Vorstand

KabanBoard ist eine Open-Source-Webanwendung zur Verwaltung von Aufgaben im Kanban-Format. Der Fokus des Projekts liegt auf Einfachheit, verständlicher Architektur und der Möglichkeit der Anpassung an die spezifischen Aufgaben eines Teams oder eines einzelnen Entwicklers.

Die Lösung eignet sich für kleine Projekte, interne Teamprozesse oder als Basis für Ihr eigenes Produkt ohne Bindung an SaaS-Dienste Dritter.

Das Projekt-Repository ist auf GitHub verfügbar:
https://github.com/demensdeum/KabanBoard

Hauptmerkmale

KabanBoard implementiert eine Reihe grundlegender und praktischer Funktionen für die Arbeit mit Kanban-Boards.

  • Erstellen mehrerer Boards für verschiedene Projekte
  • Spaltenstruktur mit Aufgabenstatus
  • Aufgabenkarten mit der Möglichkeit zum Bearbeiten und Löschen
  • Aufgaben zwischen Spalten verschieben (Drag & Drop)
  • Farbcodierung von Karten
  • Dunkles Interface-Design

Die Funktionalität ist nicht überladen und konzentriert sich auf die alltägliche Arbeit mit Aufgaben.

Verwendete Technologien

Das Projekt basiert auf einem gemeinsamen und verständlichen Stack.

  • Frontend:Vue 3, Vite
  • Backend: Node.js, Express
  • Datenspeicher: MongoDB

Die Trennung von Client- und Serveranteil erleichtert die Betreuung und Weiterentwicklung des Projekts.

Projektbereitstellung

Für die lokale Ausführung benötigen Sie eine Standardumgebung.

  • Node.js
  • MongoDB (lokal oder über die Cloud)

Das Projekt kann entweder im normalen Modus über npm oder mit Docker gestartet werden, was für eine schnelle Bereitstellung in einer Test- oder internen Umgebung praktisch ist.

Praktische Anwendung

KabanBoard kann in verschiedenen Szenarien eingesetzt werden.

  • Internes Aufgabenverwaltungstool
  • Basis für eine individuelle Kanban-Lösung
  • Ausbildungsprojekt zum Studium der SPA-Architektur
  • Ausgangspunkt für ein Lieblingsprojekt oder Portfolio

Schlussfolgerung

KabanBoard ist eine übersichtliche und praktische Lösung für die Arbeit mit Kanban-Boards. Das Projekt erhebt nicht den Anspruch, große Unternehmenssysteme zu ersetzen, sondern eignet sich gut für kleine Teams, den individuellen Einsatz und die Weiterentwicklung für spezifische Aufgaben.

Gofis

Gofis ist ein leichtes Befehlszeilentool zum schnellen Durchsuchen von Dateien im Dateisystem.
Es ist in Go geschrieben und nutzt stark Parallelität (Goroutinen), was es besonders effizient macht
bei der Arbeit mit großen Verzeichnissen und Projekten.

Das Projekt ist auf GitHub verfügbar:
https://github.com/demensdeum/gofis

🧠 Was ist Gofis?

Gofis ist ein CLI-Dienstprogramm zum Durchsuchen von Dateien nach Namen, Erweiterung oder regulärem Ausdruck.
Im Gegensatz zu klassischen Tools wie find wurde gofis ursprünglich entwickelt
mit Schwerpunkt auf Geschwindigkeit, lesbarer Ausgabe und paralleler Verzeichnisverarbeitung.

Das Projekt wird unter der MIT-Lizenz vertrieben und kann frei verwendet werden
für persönliche und kommerzielle Zwecke.

⚙️ Hauptfunktionen

  • Parallele Verzeichnisdurchquerung mithilfe von Goroutinen
  • Suche nach Dateinamen und regulären Ausdrücken
  • Nach Erweiterungen filtern
  • Schwere Verzeichnisse (.git, node_modules, Vendor) werden ignoriert
  • Menschenlesbare Ausgabe der Dateigrößen
  • Minimale Abhängigkeiten und schnelle Erstellung

🚀 Installation

Damit Go funktioniert, muss Go installiert sein.

git clone https://github.com/demensdeum/gofis
cd gofis
go build -o gofis main.go

Sobald die Binärdatei erstellt ist, kann sie direkt verwendet werden.

Auf der Release-Seite gibt es auch eine eigenständige Version für moderne Windows-Versionen:
https://github.com/demensdeum/gofis/releases/

🔍 Anwendungsbeispiele

Dateien nach Namen suchen:

./gofis -n "config" -e ".yaml" -p ./src

Schnelle Positionssuche:

./gofis "main" "./projects" 50

Suche mit regulärem Ausdruck:

./gofis "^.*\.ini$" "/"

🧩 Wie es funktioniert

Gofis basiert auf dem Wettbewerbsmodell von Go:

  • Jedes Verzeichnis wird in einer separaten Goroutine verarbeitet
  • Verwendet ein Semaphor, um die Anzahl aktiver Aufgaben zu begrenzen
  • Kanäle werden zur Übermittlung von Suchergebnissen verwendet

Dieser Ansatz ermöglicht eine effiziente Nutzung der CPU-Ressourcen
und beschleunigt die Suche in großen Dateibäumen erheblich.

👨‍💻 Für wen ist Gofis geeignet?

  • Entwickler, die mit großen Repositories arbeiten
  • DevOps und Systemadministratoren
  • Benutzer, die eine schnelle Suche über das Terminal benötigen
  • Für diejenigen, die die praktischen Anwendungen der Parallelität in Go erlernen

📌 Fazit

Gofis ist ein einfaches, aber effektives Tool, das eines tut und es gut macht.
Wenn Sie in großen Projekten häufig nach Dateien suchen und Wert auf Geschwindigkeit legen,
Dieses CLI-Tool ist auf jeden Fall einen Blick wert.

Ollama-Anruf

Wenn Sie Ollama verwenden und nicht jedes Mal Ihren eigenen API-Wrapper schreiben möchten,
Das Projekt ollama_call vereinfacht die Arbeit erheblich.

Dies ist eine kleine Python-Bibliothek, die es Ihnen ermöglicht, mit einer Funktion eine Anfrage an ein lokales LLM zu senden
und erhalten sofort eine Antwort, auch im JSON-Format.

Installation

pip install ollama-call

Warum wird es benötigt

  • Minimalcode für die Arbeit mit dem Modell;
  • Strukturierte JSON-Antwort zur weiteren Verarbeitung;
  • praktisch für schnelle Prototypen und MVPs;
  • unterstützt bei Bedarf die Streaming-Ausgabe.

Beispiel verwenden

from ollama_call import ollama_call

response = ollama_call(
    user_prompt="Hello, how are you?",
    format="json",
    model="gemma3:12b"
)

print(response)

Wenn es besonders nützlich ist

  • Sie schreiben Skripte oder Dienste auf Basis von Ollama;
  • benötigen ein vorhersehbares Antwortformat;
  • Es besteht kein Wunsch, schwere Frameworks zu verbinden.

Gesamt

ollama_call ist ein leichter und übersichtlicher Wrapper für die Arbeit mit Ollama aus Python.
Eine gute Wahl, wenn Einfachheit und schnelle Ergebnisse wichtig sind.

GitHub
https://github.com/demensdeum/ollama_call

SFAP: ein modulares Framework für die moderne Datenerfassung und -verarbeitung

Im Rahmen der aktiven Entwicklung von Automatisierung und künstlicher Intelligenz besteht die Aufgabe, effektiv zu sammeln,
Das Bereinigen und Transformieren von Daten wird von entscheidender Bedeutung. Die meisten Lösungen schließen nur
Dabei handelt es sich um separate Phasen dieses Prozesses, die eine komplexe Integration und Unterstützung erfordern.

SFAP (Seek · Filter · Adapt · Publish) ist ein Open-Source-Projekt in Python,
das einen ganzheitlichen und erweiterbaren Ansatz für die Verarbeitung von Daten in allen Phasen ihres Lebenszyklus bietet:
von der Quellensuche bis zur Veröffentlichung des fertigen Ergebnisses.

Was ist SFAP?

SFAP ist ein asynchrones Framework, das auf einem klaren Konzept einer Datenverarbeitungspipeline basiert.
Jede Stufe ist logisch getrennt und kann unabhängig erweitert oder ersetzt werden.

Das Projekt basiert auf dem Architekturmuster Chain of Responsibility, das Folgendes bietet:

  • Flexibilität der Pipeline-Konfiguration;
  • einfaches Testen einzelner Stufen;
  • Skalierbarkeit für hohe Lasten;
  • saubere Aufgabentrennung zwischen den Komponenten.

Hauptphasen der Pipeline

Seek – Datensuche

In dieser Phase werden Datenquellen entdeckt: Webseiten, APIs, Dateispeicher
oder andere Informationsflüsse. SFAP erleichtert die Anbindung neuer Quellen ohne Änderungen
der Rest des Systems.

Filter – Filtern

Die Filterung soll Rauschen entfernen: irrelevante Inhalte, Duplikate, technische Elemente
und Daten von geringer Qualität. Dies ist entscheidend für nachfolgende Verarbeitungsschritte.

Anpassen – Anpassung und Verarbeitung

Die Anpassungsphase ist für die Datentransformation verantwortlich: Normalisierung, Strukturierung,
semantische Verarbeitung und Integration mit KI-Modellen (einschließlich generativer).

Veröffentlichen – Veröffentlichung

Im letzten Schritt werden die Daten im Zielformat veröffentlicht: Datenbanken, APIs, Dateien, externe Dienste
oder Content-Plattformen. SFAP schränkt die Art und Weise, wie das Ergebnis geliefert wird, nicht ein.

Hauptmerkmale des Projekts

  • Asynchrone Architektur basierend auf asyncio
  • Modularität und Erweiterbarkeit
  • Unterstützung für komplexe Verarbeitungspipelines
  • Bereit für die Integration mit AI/LLM-Lösungen
  • Geeignet für hochbelastete Systeme

Praktische Anwendungsfälle

  • Aggregation und Analyse von Nachrichtenquellen
  • Datensätze für maschinelles Lernen vorbereiten
  • Automatisierte Content-Pipeline
  • Bereinigung und Normalisierung großer Datenströme
  • Integration von Daten aus heterogenen Quellen

Erste Schritte mit SFAP

Alles, was Sie brauchen, um loszulegen, ist:

  1. Klonen Sie das Projekt-Repository;
  2. Python-Abhängigkeiten installieren;
  3. Definieren Sie Ihre eigenen Pipeline-Schritte;
  4. Starten Sie einen asynchronen Datenverarbeitungsprozess.

Das Projekt lässt sich leicht an spezifische Geschäftsaufgaben anpassen und kann mit dem System wachsen,
ohne sich in einen Monolithen zu verwandeln.

Schlussfolgerung

SFAP ist nicht nur ein Parser oder Datensammler, sondern ein vollwertiges Framework zum Erstellen
moderne Daten-Pipeline-Systeme. Es eignet sich für Entwickler und Teams, die sich darum kümmern
skalierbar, architektonisch sauber und datenbereit.
Der Quellcode des Projekts ist auf GitHub verfügbar:
https://github.com/demensdeum/SFAP

FlutDataStream

Eine Flutter-App, die jede Datei in eine Folge maschinenlesbarer Codes (QR und DataMatrix) für Hochgeschwindigkeits-Datenstreaming zwischen Geräten umwandelt.

Besonderheiten
* Duale Kodierung: Stellt jeden Datenblock sowohl als QR-Code als auch als DataMatrix-Code dar.
*Hochgeschwindigkeits-Streaming: Unterstützt automatische Umschaltintervalle von bis zu 330 ms.
* Smart Chunking: Teilt Dateien automatisch in benutzerdefinierte Blöcke auf (Standard: 512 Byte).
* Detaillierter Scanner: Lesen Sie ASCII-Code in Echtzeit für Debugging und sofortiges Feedback.
* Automatische Wiederherstellung: Stellt Dateien sofort wieder her und speichert sie in Ihrem Download-Verzeichnis.
* Systemintegration: Öffnet die gespeicherte Datei nach Abschluss automatisch mit der Standardsystemanwendung.

https://github.com/demensdeum/FlutDataStream

Warum kann ich den Fehler nicht beheben?

Sie verbringen Stunden damit, am Code zu arbeiten, Hypothesen durchzugehen und die Bedingungen anzupassen, aber der Fehler wird trotzdem reproduziert. Kommt Ihnen das bekannt vor? Dieser Zustand der Frustration wird oft als „Geisterjagd“ bezeichnet. Das Programm scheint sein eigenes Leben zu führen und Ihre Korrekturen zu ignorieren.

Einer der häufigsten – und ärgerlichsten – Gründe für diese Situation ist die Suche nach einem Fehler an der völlig falschen Stelle in der Anwendung.

Die Falle der „falschen Symptome“

Wenn wir einen Fehler sehen, wird unsere Aufmerksamkeit auf die Stelle gelenkt, an der er „geschossen“ hat. Aber in komplexen Systemen ist das Auftreten eines Fehlers (Absturz oder falscher Wert) nur das Ende einer langen Kette von Ereignissen. Wenn Sie versuchen, das Ende zu beheben, bekämpfen Sie die Symptome, nicht die Krankheit.

Hier kommt das Flussdiagramm-Konzept ins Spiel.

Wie es in der Realität funktioniert

Natürlich ist es nicht notwendig, jedes Mal direkt ein Flussdiagramm auf Papier zu zeichnen, aber es ist wichtig, es im Kopf zu haben oder als architektonischen Leitfaden zur Hand zu haben. Mit einem Flussdiagramm können Sie den Betrieb einer Anwendung als Ergebnisbaum visualisieren.

Ohne diese Struktur zu verstehen, tappt der Entwickler oft im Dunkeln. Stellen Sie sich die Situation vor: Sie bearbeiten die Logik in einem Bedingungszweig, während die Anwendung (aufgrund eines bestimmten Parametersatzes) zu einem völlig anderen Zweig wechselt, an den Sie noch nicht einmal gedacht haben.


Ergebnis: Sie verbringen Stunden mit der „perfekten“ Codekorrektur in einem Teil des Algorithmus, was natürlich nicht dazu beiträgt, das Problem in einem anderen Teil des Algorithmus zu beheben, wo es tatsächlich fehlschlägt.


Algorithmus zur Beseitigung eines Fehlers

Um nicht mehr an einer verschlossenen Tür herumzurütteln, müssen Sie Ihre Herangehensweise an die Diagnose ändern:

  • Finden Sie den Status im Ergebnisbaum:Bevor Sie Code schreiben, müssen Sie den Pfad genau bestimmen, den die Anwendung genommen hat. An welchem ​​Punkt hat die Logik eine falsche Wendung genommen? Welcher konkrete Staat (Staat) hat zu dem Problem geführt?
  • Reproduktion ist 80 % des Erfolgs: Dies wird normalerweise durch Tester und automatisierte Tests durchgeführt. Wenn der Fehler „schwebt“, wird die Entwicklung in den Prozess einbezogen, um gemeinsam nach Bedingungen zu suchen.
  • Verwenden Sie so viele Informationen wie möglich: Protokolle, Betriebssystemversion, Geräteparameter, Verbindungstyp (WLAN/5G) und sogar ein bestimmter Telekommunikationsbetreiber sind für die Lokalisierung wichtig.

„Foto“ vom Moment des Fehlers

Um das Problem zu beheben, müssen Sie im Idealfall über den vollständigen Status der Anwendung zum Zeitpunkt der Reproduktion des Fehlers verfügen. Auch Interaktionsprotokolle sind von entscheidender Bedeutung: Sie zeigen nicht nur den Endpunkt, sondern auch den gesamten Benutzerpfad (welche Aktionen dem Fehler vorausgingen). Dies hilft zu verstehen, wie ein ähnlicher Zustand wieder hergestellt werden kann.

Zukunftstipp: Wenn Sie auf einen komplexen Fall stoßen, fügen Sie diesem Codeabschnitt erweiterte Debug-Protokollierungsinformationen hinzu, für den Fall, dass die Situation erneut auftritt.


Das Problem „schwer fassbarer“ Zustände im Zeitalter der KI

In modernen Systemen, die LLM (Large Language Models) verwenden, wird der klassische Determinismus („ein Eingang, ein Ausgang“) häufig verletzt. Sie können genau die gleichen Eingabedaten übergeben, erhalten aber ein anderes Ergebnis.

Dies geschieht aufgrund des Nichtdeterminismus moderner Produktionssysteme:

  • GPU-Parallelität: GPU-Gleitkommaoperationen sind nicht immer assoziativ. Aufgrund der parallelen Ausführung von Threads kann sich die Reihenfolge, in der Zahlen hinzugefügt werden, geringfügig ändern, was sich auf das Ergebnis auswirken kann.
  • GPU-Temperatur und -Drosselung: Ausführungsgeschwindigkeit und Lastverteilung können vom physischen Zustand der Hardware abhängen. In großen Modellen häufen sich diese mikroskopischen Unterschiede und können dazu führen, dass am Ausgang ein anderer Token ausgewählt wird.
  • Dynamisches Batching: In der Cloud wird Ihre Anfrage mit anderen kombiniert. Unterschiedliche Batch-Größen verändern die Mathematik der Berechnungen in den Kerneln.

Unter solchen Bedingungen wird es fast unmöglich, „denselben Zustand“ zu reproduzieren. Nur ein statistischer Testansatz kann Sie hier retten.


Wenn die Logik versagt: Speicherprobleme

Wenn Sie mit „unsicheren“ Sprachen (C oder C++) arbeiten, kann der Fehler aufgrund einer Speicherbeschädigung auftreten.

Dies sind die schwerwiegendsten Fälle: Ein Fehler in einem Modul kann Daten in einem anderen „überschreiben“. Dies führt zu völlig unerklärlichen und isolierten Fehlern, die mit der normalen Anwendungslogik nicht nachvollzogen werden können.

Wie schützt man sich auf architektonischer Ebene?

Um solche „mystischen“ Fehler zu vermeiden, sollten Sie moderne Ansätze verwenden:

  • Multithread-Programmiermuster:Eine klare Synchronisierung eliminiert Race Conditions.
  • Thread-sichere Sprachen: Tools, die Speichersicherheit zur Kompilierungszeit garantieren:
    • Rust: Das Eigentümersystem eliminiert Speicherfehler.
    • Swift 6-Parallelität:Starke Datenisolationsprüfungen.
    • Erlang: Vollständige Prozessisolation durch das Akteurmodell.

Zusammenfassung

Bei der Behebung eines Fehlers geht es nicht darum, neuen Code zu schreiben, sondern darum, zu verstehen, wie der alte funktioniert. Denken Sie daran: Sie könnten Zeit damit verschwenden, einen Zweig zu bearbeiten, den das Management nicht einmal berührt. Erfassen Sie den Zustand des Systems, berücksichtigen Sie den Faktor des KI-Nichtdeterminismus und wählen Sie sichere Tools aus.

Ferral

Ferral ist eine High-Level-Multiparadigmen-Programmiersprache, die speziell für die Codegenerierung aus großen Sprachmodellen (LLMs) entwickelt wurde. Während traditionelle Sprachen unter Berücksichtigung der menschlichen Ergonomie entwickelt wurden, ist Ferral darauf optimiert, wie große Sprachmodelle (LLMs) Logik begründen, tokenisieren und ableiten.

Der Name wird mit zwei R geschrieben, was auf einen „neu konzipierten“ Ansatz für die Unvorhersehbarkeit von KI-generiertem Code hinweist.

https://github.com/demensdeum/ferral

DemensDeum Coding Challenge #2

Ich starte die Demensdeum Coding Challenge Nr. 2:
1. Sie müssen die Webanwendung mit einem Vibecode versehen, um eine Liste der Partys/Veranstaltungen im Benutzerbereich anzuzeigen.
2. Die Datenquelle kann Web-Scraping von vorne oder eine lokale/Remote-Datenbank sein.
3. Zeigen Sie Veranstaltungen/Partys nur für heute auf der Karte an.
4. Sie können den Suchradius ändern.
5. Senden Sie sie als Folge von Textaufforderungen, die in kostenlosen Codegeneratoren wie Google AI Studio reproduziert werden können.
6. Sollte im Web für iOS, Android und PC funktionieren
7. Das beste Design gewinnt
8. Zeigen Sie detaillierte Informationen zur Veranstaltung an, indem Sie auf der Karte auf die Veranstaltung tippen.
9. Zoomen Sie Karten mit Ihren Fingern oder der Maus.
10. Der Gewinner wird von der Jury ausgewählt (schreiben Sie mir, um an der Jury teilzunehmen)
11. Preis 200 USDT
12. Fälligkeitsdatum: 1. Juli.

Gewinner der vergangenen DemensDeum Coding Challenge #1
https://demensdeum.com/blog/ru/2025/06/03/demensdeum-code-challenge-1-winner/

Masonry-AR-Update

Dem Masonry-AR-Spiel wurde die Möglichkeit hinzugefügt, Münzen gegen Kryptowährung zu kaufen! Für 1 $ können Sie 5000 MOS bekommen. Dem Spiel wurden auch Empfehlungslinks hinzugefügt. Für jeden Einkauf eines Freundes erhält der Empfehlungsgeber 50.000 MOS. Details im Freimaurer-Wiki. Außerdem wurde ein Selbstlaufmodus hinzugefügt: Wenn kein Zugriff auf das GPS-Modul besteht, beginnt der Mason automatisch von einer der Hauptstädte der Welt aus zu laufen, nur vorwärts.

Spiellink:
https://demensdeum.com/demos/masonry-ar/client/

Esel-Experte

„Donkey Adept“ ist ein atemberaubendes, elektrisierendes Stück pixeliger Surrealismus. In der Mitte steht eine Figur in einer schwarzen Lederjacke, deren Kopf ein flammender, statisch aufgeladener Fernseher mit feurigen Eselsohren ist. Das Subjekt hält eine mächtige Laterne in der Hand und fungiert als einsamer Wächter, der inmitten des Lärms nach der Wahrheit sucht. Es ist eine wütende Meditation im Retro-Stil über Medien, Wahnsinn und die unerbittliche Suche nach Licht.

https://opensea.io/item/ethereum/0x008d50b3b9af49154d6387ac748855a3c62bf40d/5

Cube Art Project 2 Online

Treffen Sie das Cube Art Project 2 Online – Light, Fast und Ganzgeschriebene Redakteur des Stationsplans, der direkt im Browser funktioniert. Jetzt mit der Möglichkeit der gemeinsamen Kreativität!

Dies ist nicht nur ein Werkzeug, sondern ein Experiment mit Farbe, Geometrie und einer meditativen 3D -Kreation, mit der Sie Freunde verbinden können. Das Projekt wurde auf reinem JavaScript und drei.js ohne Frameworks und WebAssembly erstellt, wodurch die Funktionen von WebGL und Shaaders demonstriert wurden.

Neu: Mehrspielermodus! Kooperieren Sie in Echtzeit mit anderen Benutzern. Alle Änderungen, die Zugabe und Färbung von Würfeln werden sofort synchronisiert, sodass Sie gemeinsam Station -Meisterwerke erstellen können.

Kontrolle:
– WASD – Verschieben der Kamera
– Maus – Rotation
– GUI – Farbeinstellungen

Online:
https://demensdeum.com/software/cube-art-project-2-online/

Quellen auf Github:
https://github.com/demensdeum/cube-art-project-2-online

Das Projekt ist mit drei.js auf reinem JavaScript geschrieben.
Ohne Frameworks, ohne Sammler, ohne WebAssembly – nur WebGL, Shader und ein wenig Liebe zur Pixelgeometrie.