Über Harald

Seit 1993 bin ich als freiberuflicher Softwareentwickler mit den Schwerpunkten Programmierung von Internet- und Crossplattform-Applikationen, sowie als Mediendesigner, IT-Consultant und Dozent tätig. Die Übergänge zwischen diesen Themen sind fliessend. Mein Blog fasst all dies zu einem interessanten News-Stream zusammen. Viel Spass beim Stöbern! -- Harald

Python Callback-Funktionen erklärt

Callback-Funktionen machen Sinn, wenn Daten in einer Schleife verarbeitet werden und sind eine hervorragende Methode um generische, d.h. wiederverwendbare Klassen zu schreiben. Individueller Code wird dann elegant in Callbacks ausgelagert. Python Callbacks: Ein einfaches Beispiel Die folgende Klasse liest eine CSV-Datei und gibt diverse Adressdaten im Terminal aus: [crayon-6937473361d5e117264711/] Inhalt von addresses.csv: [crayon-6937473361d67600899977/] Problem: Die Klasse kann leider nur für [...]

Von |2025-09-28T13:38:05+02:002024-04-21|Kategorien: Tipps, Tricks, Hacks|Tags: |0 Kommentare

Python Event-Hooks in Subklassen verwenden

Dieser Beitrag zeigt, wie man mit clever platzierten Python Event-Hooks beliebigen Code in Subklassen ausführen kann, ohne die Eltern-Klasse zu modifizieren. Was sind Event-Hooks? Event Hooks erlauben das Ausführen von Code wenn bestimmte Ereignisse stattfinden. Der Code wird über einen Hook in der Elternklasse in das Ereignis "eingehakt". Andere Begriffe hierfür sind Method-Overriding oder Polymorphie. Ich nutze diese Technik, z.B. [...]

Von |2024-04-22T09:29:40+02:002024-04-20|Kategorien: Tipps, Tricks, Hacks|Tags: |0 Kommentare

Python map() Funktion erklärt

Die map()-Funktion in Python wird verwendet, um eine Funktion auf jedes Element einer Sequenz (wie einer Liste oder einem Tupel) anzuwenden und eine neue Sequenz mit den Ergebnissen zu erstellen. Python map() Funktion: Ein Beispiel Hier ist ein einfaches Beispiel, das die Verwendung der map()-Funktion zeigt: [crayon-69374733626af573393213/] In diesem Beispiel wird die Funktion quadrat() definiert, um das Quadrat einer gegebenen [...]

Von |2024-04-19T12:55:35+02:002024-04-19|Kategorien: Tipps, Tricks, Hacks|Tags: |0 Kommentare

Landingpage für ERP-System mit CRM, Warenwirtschaft und Buchhaltung

Aufgabe für dieses Projekt war die Erstellung einer Landingpage für ein ERP-System mit integriertem CRM, Warenwirtschaft und Buchhaltung. Das 4b-ERP-System: Warenwirtschaft und mehr für Handwerker, Fensterbauer, Schreiner, Baugewerbe und andere Branchen Im Mittelpunkt steht das 4B-ERP System, das neben umfangreichen Standard-Features wie CRM, Warenwirtschaft und Buchhaltung durch folgende Features punktet: CAD-Integration Integration externer Excel-Dokumente für flexible Kalkulation Auf diverse Branchen [...]

Von |2024-12-23T09:20:28+01:002024-03-27|Kategorien: Projekte|Tags: , , , |0 Kommentare

PrimeReact: Lösung für Dark & Light Theme Switch

Dieser Beitrag zeigt wie man in einer PrimeReact App das Theme zwischen Dark- und Light-Mode umschaltet.  Die Möglichkeit wird zwar im sonst sehr ausführlichen PrimeReact Manual erwähnt, doch kommt die praktische Umsetzung leider zu kurz. Meine Lösung schließt diese Lücke. Im Prinzip wird live zwischen einem Theme für den Light-Mode und einem eigenen Theme für den Dark-Mode hin- und her [...]

Von |2024-04-19T17:03:01+02:002024-03-27|Kategorien: Tipps, Tricks, Hacks|Tags: |0 Kommentare

Go-Extension für NeutralinoJS

Mit der Go-Extension erhält NeutralinoJS ein ultra-schnelles Backend und die Möglichkeit große Datenmengen parallel zu verarbeiten. NeutralinoJS ist ein crossplatform Framework für macOS, Windows und Linux. Neutralino erzeugt extrem kompakte Apps. Die Oberfläche gestaltet man in HTML, CSS und Javascript. Über WebSockets kann Neutralino mit beliebigen anderen Sprachen erweitert werden. so z.B. Go. Was ist Go bzw. GoLang? Go, auch GoLang [...]

Von |2024-03-10T20:32:08+01:002024-03-10|Kategorien: Projekte|Tags: , , |0 Kommentare

iOS 17.4: Progressive Web Apps in der EU, der Phönix aus der Asche

Apple macht seine frühere Entscheidung rückgängig, die Unterstützung für Progressive Web Apps (PWA) in iOS 17.4 für EU-Benutzer zu entfernen. PWA in der EU: Ein nur kurzer Tod Zuvor hatte Apple im Rahmen unserer Bemühungen zur Einhaltung des Digital Markets Act Pläne angekündigt, die Progressive Web Apps Funktion für den Startbildschirm in der EU zu entfernen. Die Notwendigkeit, die Funktion [...]

Von |2024-03-02T22:58:48+01:002024-03-02|Kategorien: Tipps, Tricks, Hacks|Tags: |0 Kommentare

Neutralino Curl Extension, Datentransfer ohne CORS

CURL (ausgeschrieben Client for URLs),  ist eine freie und quelloffene Software, die sowohl als Programmbibliothek als auch als Kommandozeilenprogramm zur Verfügung steht. Die Hauptfunktion von CURL besteht in der Übertragung von Daten über verschiedene Netzwerkprotokolle, wie HTTP, HTTPS, FTP, SCP und SFTP. Aber auch Mailserver (IMAP, POP3 und SMTP) lassen sich über CURL ansprechen. Alle Funktionen von CURL lassen sich ab [...]

Von |2024-02-27T11:47:36+01:002024-02-26|Kategorien: Projekte|Tags: , |0 Kommentare

iOS 17.4: Das AUS für Progressive Web Apps in der Europäischen Union

Mit der zweiten Beta-Version von iOS 17.4 hat Apple einen Großteil der Funktionalität von Progressive Web Apps (PWAs) in der Europäischen Union deaktiviert. Es gab einige Spekulationen, dass es sich um eine vorübergehende Änderung oder einen Fehler im Zusammenhang mit einigen Aktualisierungen des App-Ökosystems in Europa handeln könnte, aber Apple hat bestätigt, dass PWAs absichtlich entfernt wurden und nicht zurückkehren [...]

Von |2024-03-02T23:01:17+01:002024-02-19|Kategorien: Allgemein, Tipps, Tricks, Hacks|Tags: |0 Kommentare

macOS: Schwarzer Bildschirm in TimeMachine beheben

Hängen mehrere Monitore am Mac, kann es beim Restore per TimeMachine zu folgendem Problem kommen: Anstatt die Dateihistorie sieht man nur noch einen schwarzen Bildschirm, den man über die ESC-Taste zum Glück noch mal verlassen kann. Dieser Beitrag löst das Timemachine-Blackscreen Problem. TimeMachine mit schwarzem Screen: Die Lösung Die Lösung ist einfach: Es handelt sich hier um einen Bug von [...]

Von |2024-02-13T16:18:08+01:002024-02-13|Kategorien: Tipps, Tricks, Hacks|Tags: |0 Kommentare

Rust-Extension für NeutralinoJS

Mit der Rust-Extension können eine Vielzahl qualitativ hochwertiger und schneller Rust-Systemerweiterungen (Crates)  in eine Neutralino App integriert werden. NeutralinoJS ist ein crossplatform Framework für macOS, Windows und Linux. Neutralino erzeugt extrem kompakte Apps. Die Oberfläche gestaltet man in HTML, CSS und Javascript. Über WebSockets kann Neutralino mit beliebigen anderen Sprachen erweitert werden. so z.B. Rust. Was ist Rust? Rust ist eine [...]

Von |2024-02-07T18:39:23+01:002024-02-07|Kategorien: Projekte|Tags: , , |0 Kommentare

Gemeinde-News als mobile App mit Content Management

Thema dieses Projekts ist die Digitalisierung von Gemeinden. Über die App haben Bürgerinnen und Bürger der Gemeinde Zugriff auf alle Ausgaben des Amtsblatts sowie aktuelle Nachrichten, Veranstaltungen und wichtige Kontakte. Features der Gemeinde App im Überblick Die mobile App hat folgende Features: Zugriff auf alle Ausgaben des Amtsblatts der Gemeinde inkl. Volltext-Suche. Lesen aktueller News aus der Region. Infos über [...]

Von |2024-12-23T09:45:37+01:002024-02-02|Kategorien: Projekte|Tags: , , , , , , , , , |0 Kommentare

Tauri: Crossplattform Apps für Desktops, iOS und Android

Tauri ist eine weitere, sehr  interessante Electron-Alternative. Electron war viele Jahre lang das de facto plattformübergreifende Framework für die Erstellung von Desktop-Apps. Visual Studio Code, MongoDB Compass und Postman sind allesamt großartige Beispiele für Apps, die mit diesem Framework erstellt wurden. Electron ist auf jeden Fall großartig, hat aber einige erhebliche Nachteile, die einige andere moderne Frameworks überwunden haben – [...]

Von |2024-02-21T09:59:00+01:002024-01-06|Kategorien: Tipps, Tricks, Hacks|Tags: , , , , |0 Kommentare

Python Queues: Von Schlangen und Warteschlangen

In Python kannst du eine Warteschlange (Queue) mit Hilfe des queue-Moduls implementieren. Es gibt verschiedene Arten von Queues, wie z.B. Queue, LifoQueue (Last In, First Out) und PriorityQueue. Dieser Artikel erklärt die Unterschiede. Python Queue (First-In-First-Out) Hier ist ein einfaches Beispiel für die Verwendung von Queue: [crayon-6937473362adc579834260/] Dieses Beispiel zeigt die grundlegenden Operationen einer Queue: put(item): Fügt ein Element zur [...]

Von |2023-12-28T11:03:22+01:002023-12-28|Kategorien: Tipps, Tricks, Hacks|Tags: |2 Kommentare

Python: Über Dictionaries iterieren

In Python kannst du über die Elemente eines Dictionaries auf verschiedene Arten iterieren. Hier sind einige gängige Methoden: Python Dictionary über die Schlüssel iterieren [crayon-6937473362ede695470818/] Dictionary über die Schlüssel und Werte iterieren [crayon-6937473362ee3681056520/] Dictionary nur über die Werte iterieren [crayon-6937473362ee6369442583/] Python: List Comprehension für Schlüssel und Werte [crayon-6937473362ee8263914879/] Verwenden von iter() und next() mit Python Dictionaries [crayon-6937473362eea337189753/] Wähle die Methode, [...]

Von |2023-12-27T15:54:47+01:002023-12-27|Kategorien: Tipps, Tricks, Hacks|Tags: |0 Kommentare

Pulse 2: News-Reader App mit WordPress Backend

Pulse 2 ist die kostenlose Newsreader-App zu meinem Blog. Die App ist direkt an WordPress angebunden und erhält in Echtzeit alle dort veröffentlichten Artikel. Mobile News-App mit WordPress als Datenquelle Über die WordPress API, wird die App selektiv mit den entsprechenden Daten versorgt. Dabei werden die Beiträge automatisch so aufbereitet, daß das Layout auch auf dem Mobilgerät passt. Pulse 2: [...]

Von |2024-12-23T09:45:38+01:002023-12-26|Kategorien: Projekte|Tags: , , , , , , |0 Kommentare

PostgreSQL: Alle Datenbanken automatisch in einzelne Dateien sichern

Verwaltet man viele PostgreSQL-Datenbanken auf einem Server, benötigt man unbedingt ein Tool um alle PostgreSQL-Datenbanken einzeln zu sichern. So ist im Ernstfall eine einzelne, beschädigte Datenbank sehr schnell wiederherstellbar ohne Andere in Mitleidenschaft zu ziehen.  Das folgende Script macht genau das: [crayon-693747336313d371906788/] Das PostgreSQL Backup-Skript im Detail Das Script erzeugt für jeder PostgreSQL-Datenbank einen eigenen, komprimierten SQL-Dump. Am Ende wird [...]

Von |2025-02-09T15:33:01+01:002023-12-18|Kategorien: Tipps, Tricks, Hacks|Tags: , , |4 Kommentare

Desktop CMS für mobile Apps

Mobile News Apps benötigen immer top-aktuelle Daten, die am Ende ein Mensch einpflegen muss. Im folgenden Projekt wurde ein CMS erstellt, das lokal unter macOS oder Windows läuft. PDFs und Bilder können einfach per Drag & Drop  auf dem Server gespeichert werden.  Inhalte werden im CMS erstellt und per Knopfdruck in der mobilen App angezeigt. Das CMS für mobile Apps [...]

Von |2024-12-23T09:48:01+01:002023-12-13|Kategorien: Projekte|Tags: , , , , , , , , , |0 Kommentare

Neutralino Autoupdate mit GUI

NeutralinoJS hat zwar eine integrierte Update-Funktion, doch kommt diese ohne Benutzerdialog und updated nur die App Resourcen und nicht die Neutralino-App selbst. Abhilfe schafft hier NeutralinoAutopdate, eine einfach zu integrierende JavaScript-Klasse. Nur wenige Zeilen Code machen jede Neutralino App updatefähig. NeutralinoAutoupdate im Detail Der crossplattform Neutralino Auto-Updater kommt mit den folgenden Features: Es wird die komplette Neutralino-App geupdated, samt aller [...]

Von |2023-12-13T20:59:29+01:002023-12-12|Kategorien: Projekte|Tags: , |0 Kommentare

Python: Zip-Funktion erklärt

Viele Python-Programmierer haben die eingebaute ZIP-Funktion nicht wirklich auf dem Schirm. Dabei kann Sie das Leben in vielen Situationen erleichtern, da nur 1 Zeile einiges an Schleifen-Programmierung ersparen kann. Nach dem Reißverschluß-Verfahren (engl. Zipper) fügt sie Listen automatisch zusammen oder erstellt mal schnell ein Dictionary aus 2 Arrays. Beispiele zu Python's ZIP-Funktion In Python wird die  zip Funktion verwendet, um [...]

Von |2023-12-06T11:17:58+01:002023-12-06|Kategorien: Tipps, Tricks, Hacks|Tags: |0 Kommentare

NodeJS-Extension für NeutralinoJS

NeutralinoJS ist ein crossplatform Framework für macOS, Windows und Linux. Neutralino erzeugt extrem kompakte Apps. Die Oberfläche gestaltet man in HTML, CSS und Javascript. Über WebSockets kann Neutralino mit beliebigen anderen Sprachen erweitert werden. so z.B. NodeJS. NodeJS erweitert Neutralino um uneingeschränkten Zugriff auf die lokalen Systemresourcen. Neutralino mit NodeJS-Backend: NodeJS ist über eine schnelle WebSocket-Verbindung mit Neutralino verbunden. NodeJS wird komplett [...]

Von |2023-12-13T09:25:36+01:002023-12-03|Kategorien: Projekte|Tags: , , |0 Kommentare

Die Lösung für NeutralinoJS: Externes Fenster schliessen

Eine Frage, welche in NeutralinoJS-Foren immer wieder auftaucht: Wie schließe ich ein externes Fenster, wenn die eigentliche Neutralino-App beendet wird? Dieser Beitrag zeigt wie es geht. Neutralino: Die Lösung für das Fenster-Problem Öffnet man in Neutralino ein externes Fenster, erstellt man im Prinzip eine 2. eigenständige Neutralino App. Es bleibt dann dem Programmierer überlassen, wie er die Kommunikation zwischen den [...]

Von |2023-12-02T11:54:54+01:002023-12-02|Kategorien: Tipps, Tricks, Hacks|Tags: , |0 Kommentare

macOS: Notarisieren per Notarytool Skript

Ab November wird Apple nur noch Notarisierungen über das Notarytool erlauben. Das folgende Skript automatisiert diesen Prozess. Einfach Benutzername, app-specific Passwort sowie TeamID eintragen und los geht's. Schlägt der Notarisierungsprozess fehl, holt sich das Skript das JSON-Log vom Apple Notarierungsserver und zeigt es an. So werden Fehler schnell gefunden: [crayon-6937473363b0c252099776/] Die neueste Version des "macOS Notarisierung-Skripts" gibt es immer auf [...]

Von |2023-11-28T11:53:54+01:002023-11-28|Kategorien: Tipps, Tricks, Hacks|Tags: |0 Kommentare

macOS Apps per Skript code-signieren

Viele zeitraubende Befehle auf der Kommandozeile lassen sich per Skript automatisieren, so auch das Signieren von Apps unter macOS. Das folgende Skript signiert Apps für die spätere Notarisierung durch Apple unter macOS Catalina oder auch für ältere macOS Versionen: [crayon-6937473363cf6570653817/] Das Skript macht im Detail folgendes: Es werden alle erweiterten Systemattribute rekursiv gelöscht. Codesign wird mit der Option für Runtime [...]

Von |2025-04-03T19:58:19+02:002023-11-28|Kategorien: Tipps, Tricks, Hacks|Tags: , |0 Kommentare

NeutralinoJS: macOS AppBundles automatisch erzeugen

Neutralino erzeugt aktuell ausführbare Dateien für macOS, jedoch keine von Apple favorisierten AppBundles. Will man Neutralino Apps für macOS an andere User weitergeben, müssen diese signiert und von Apple notarisiert sein. D.h. es bleibt dem Programmierer überlassen, mit der ausführbaren Datei und den dazugehörenden Resourcen ein macOS AppBundle zu bauen. Das Problem mit den Neutralino App Resourcen Alle Resourcen, also [...]

Von |2023-11-27T13:10:53+01:002023-11-26|Kategorien: Projekte|Tags: , |0 Kommentare

Bun: NodeJS-kompatible Extension für NeutralinoJS

Bun ist ein extrem schnelles JavaScript-Runtime, das NodeJS fast vollständig ersetzen kann. In den meisten Fällen ist es bis zu 4 x schneller als NodeJS. Bun versteht JavaScript, TypeScript, NodeJS und JSX. NeutralinoJS ist ein cross-platform Framework für macOS, Windows und Linux. Neutralino erzeugt extrem kompakte Apps. Die Oberfläche gestaltet man in HTML, CSS und Javascript. Über WebSockets kann Neutralino mit [...]

Von |2023-12-13T09:25:37+01:002023-11-24|Kategorien: Projekte|Tags: , , |0 Kommentare

Python-Extension für NeutralinoJS

NeutralinoJS ist ein Framework, mit dem man sehr kompakte Apps für macOS, Windows und Linux bauen kann. Dabei nutz man für die Oberfläche HTML, CSS und Javascript. Über WebSockets kann Neutralino mit beliebigen anderen Sprachen erweitert werden. so z.B. Python. Neutralino mit Python-Backend: Mit Neutralino-Ext-Python lässt sich jeder Python3-Interpreter über eine schnelle WebSocket-Verbindung an Neutralino anbinden. Die Python-Extension bietet die [...]

Von |2023-12-03T19:31:08+01:002023-11-21|Kategorien: Projekte|Tags: , , |0 Kommentare

NeutralinoJS, meine Nr.1 Alternative zu Electron

NeutralinoJS ist ein Open-Source-Framework für die Entwicklung plattformübergreifender Desktopanwendungen. Es wurde entwickelt, um einfach, leichtgewichtig und unabhängig von externen Dependencies zu sein. NeutralinoJS ermöglicht die Entwicklung von Anwendungen mit Webtechnologien wie HTML, CSS und JavaScript, während es gleichzeitig die Möglichkeit bietet, auf lokale Systemressourcen zuzugreifen. Das NeutralinoJS-Framework ist als Alternative zu Electron und NW.js positioniert, die ebenfalls die Entwicklung von [...]

Von |2024-01-05T09:00:59+01:002023-11-15|Kategorien: Tipps, Tricks, Hacks|Tags: , , |0 Kommentare

Plesk: Lösung für Änderungen in Firewall werden nicht gespeichert

Bei umfangreichen Firewall-Settings kann es sein, daß Plesk das Speichern mit einer Fehlermeldung quittiert. Die Settings werden dann zwar noch angezeigt, sind aber nicht aktiv. Dieser Beitrag zeigt, wie der Fehler behoben werden kann. Timeout beim Speichern der Plesk Firewall Settings beheben Der Grund für das Problem ist ein vorzeitiger Abbruch des Scripts, welches die Firewall Settings unter Plesk speichert. [...]

Von |2023-11-15T10:29:35+01:002023-11-15|Kategorien: Tipps, Tricks, Hacks|Tags: , , |0 Kommentare

MySQL im Docker Container: Alle Datenbanken sichern

Betreibt man MySQL als Docker Container, hat man zwar alle Daten in einem persistenten Ordner, jedoch ist es keine gute Idee diese im laufenden Betrieb zu sichern. Ein Backup-Skript erledigt diesen Job zuverlässig. Backup aller MySQL-Datenbanken von außerhalb des Docker Containers Das folgende MySQL Backup-Skript läuft ausserhalb des Docker Containers und steuert die Datensicherung über Aufrufe der entsprechenden Befehle im Docker-Container. [...]

Von |2023-11-02T09:14:16+01:002023-11-02|Kategorien: Tipps, Tricks, Hacks|Tags: , , , |0 Kommentare

MySQL-Datenbanken per Script komplett sichern

Betreibt man MySQL auf einen Server der Cron-Jobs erlaubt, kann man MySQL-Datenbanken täglich auf einen Schlag sichern. Dabei spielt es keine Rolle ob inzwischen neue Datenbanken erstellt oder welche gelöscht wurden, das Script selbst bleibt unverändert. MySQL Backup: One Script to rule them all ... Das folgende Bash-Script ermittelt alle aktuell vorhandenen MySQL-Datenbanken, und schreibt im laufenden Datenbankserver-Betrieb komprimierte MySQL-Dumps [...]

Von |2023-11-02T09:15:17+01:002023-11-02|Kategorien: Tipps, Tricks, Hacks|Tags: , , |8 Kommentare

Webdesign unter WordPress: Redesign lexshop.org

Im folgenden Projekt wurde die bereits bestehende Wordpress-Website von lexshop.org nach Vorgaben des Kunden technisch überarbeitet und mit einem umfangreichen Redesign versehen. Hier einige technische Highlights der neuen Seite: Avada MegaMenu Das alte WordPress-Theme wurde durch  Avada ersetzt. Somit hat der Kunde ein mächtiges Werkzeug mit dem er selbst Inhalte erstellen kann. Ein übersichtliches Mega-Menu ersetzt die alte Menüstruktur: Ajax-Suchfunktion [...]

Von |2024-12-23T09:20:29+01:002023-10-02|Kategorien: Projekte|Tags: , , , , , , , , , |0 Kommentare