Ü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

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-691c82050890e519383917/] 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-691c820508fab649885144/] Dictionary über die Schlüssel und Werte iterieren [crayon-691c820508faf965186510/] Dictionary nur über die Werte iterieren [crayon-691c820508fb1640228962/] Python: List Comprehension für Schlüssel und Werte [crayon-691c820508fb3623647763/] Verwenden von iter() und next() mit Python Dictionaries [crayon-691c820508fb4174167711/] 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-691c82050921b082539123/] 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-691c82050996f048638566/] 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-691c820509b7c335809745/] 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

Excel-Report aus DATEV KOST-Datei erstellen

Bei diesem Projekt spielt die Automatisierung von Excel eine zentrale Rolle. Aus einer DATEV KOST-Datei als Datenquelle werden am Ende mehrseitige Gesellschafterabrechnungen mit graphischen Auswertungen als fertige PDFs generiert. Layout und einfachere Berechnungen finden in Excel statt, während die komplexe Datenaufbereitung über Python automatisiert wurde. Dabei erzeugt Python die entsprechende Exceldatei aus einer leeren Layout-Vorlage. DATEV KOST-Datei automatisiert verarbeiten Auf [...]

Von |2025-04-13T11:19:27+02:002023-09-30|Kategorien: Projekte|Tags: , , , , , |0 Kommentare

QRCode auf PDF automatisch auslesen

Ich habe schon oft Projekte umgesetzt, bei denen es darum ging, Dokumente auszulesen und basierend auf deren Inhalt einen QRCode einzufügen. Bei diesem Projekt war jedoch der umgekehrte Weg gefragt: PDFs die bereits einen QRCode enthalten, sollen basierend auf dem kodierten Inhalt archiviert werden.  Auch hier kommt Python als zuverlässiges Automatisierungs-Werkzeug zum Einsatz. PDF-Archivierung: QRCode automatisch lesen und Dokument archivieren [...]

Von |2025-04-13T11:19:28+02:002023-09-29|Kategorien: Projekte|Tags: , , , , |0 Kommentare

Python: Mutex ohne PyWin32 und Win32Event

Ein Mutex, kurz für "Mutual Exclusion" (zu Deutsch: "gegenseitiger Ausschluss"), ist ein Mechanismus in der Informatik, der dazu dient, den gleichzeitigen Zugriff mehrerer Prozesse auf gemeinsam genutzte Ressourcen zu kontrollieren. Das Hauptziel eines Mutex besteht darin, sicherzustellen, dass nur 1 Prozess auf die geschützte Ressource zugreifen kann, um inkonsistente Daten oder unerwünschte Wettlaufbedingungen, sogenannte Race-Conditions zu verhindern. Der Mutex-Mechanismus im [...]

Von |2023-09-28T11:02:59+02:002023-09-27|Kategorien: Tipps, Tricks, Hacks|Tags: , |0 Kommentare

WordPress mit Redis & LiteSpeed-Cache beschleunigen

Wenn schon alle Optimierungsmöglichkeiten bei WordPress ausgereizt scheinen, geht mit Redis immer noch etwas mehr. Dieser Artikel zeigt, wie man Redis installiert und in WordPress integriert. Was ist Redis? Redis, was für "Remote Dictionary Server" steht, ist ein Open-Source-In-Memory-Datenbankmanagementsystem (DBMS) oder ein sogenannter "In-Memory Data Store". Es wurde entwickelt, um Daten effizient im Arbeitsspeicher (RAM) zu speichern und auf diese [...]

Von |2023-09-27T14:50:42+02:002023-09-27|Kategorien: Tipps, Tricks, Hacks|Tags: , , |0 Kommentare

Mit Woo2LX von Magnalister nach Lexware

Wenn Sie Magnalister bereits mit WooCommerce verwenden und Lexware einsetzen, hilft dieser Beitrag die letzte Meile zu automatisieren. Wenn Sie bereits Woo2LX verwenden, dann werden Sie vielleicht inspiriert sich mit Magnalister breiter aufzustellen, ohne die Vertriebskosten in die Höhe zu treiben. In beiden Fällen gilt: Weiterlesen lohnt sich! Was ist Magnalister? Magnalister ist ein Plugin für WooCommerce, welches die Reichweite [...]

Von |2025-04-13T11:19:28+02:002023-08-17|Kategorien: Projekte|Tags: , , , , , , , , , |0 Kommentare

Plesk: Hidden Feature “Performance Booster” aktivieren

Unter Plesk Obsidian gibt es ein weiteres verstecktes Feature namens "Performance Booster". Mit dem Tool lassen sich die PHP- und NGinx-Settings pro Website und die globalen MySQL/MariaDB-Einstellungen automatisch optimieren. Dieser Beitrag zeigt wie das Feature in Plesk Obsidian aktiviert wird. "Performance Booster" in Plesk aktivieren Das Feature lässt sich über wenige Terminal-Befehle in Plesk aktivieren. Wir melden uns dazu per [...]

Von |2023-07-19T08:19:26+02:002023-07-19|Kategorien: Tipps, Tricks, Hacks|Tags: , |0 Kommentare

Die Top 5 Vorteile der Rokid Max am MacBook Pro

Die Rokid Max Brille projiziert einen virtuellen Bildschirm auf beide Augen und eignet sich hervorragend für Videos und Games. Die Bilddarstellung ist gestochen scharf, die Farben perfekt und auch der Sound lässt keine Wünsche übrig. Inzwischen gibt es tonnenweise Testberichte und Videos zu diesen Themen. Doch wie gut eignet sich die Rokid Max für die tägliche Arbeit wie Texte verfassen, [...]

Von |2023-07-26T23:44:46+02:002023-07-11|Kategorien: Hardware, Tipps, Tricks, Hacks|Tags: |0 Kommentare

Python: CSV-Dateien lesen und schreiben

Python bietet mächtige Funktionen um CSV-Dateien effektiv zu bearbeiten. Die entsprechende CSV Bibliothek wird gleich mitgeliefert. CSV-Dateien in Python lesen und schreiben funktioniert elegant über DictReader und DictWriter . Beispiele dazu hier: Python: Lesen einer CSV-Datei DictReader() liefert ein Dictionary mit den CSV-Spaltennamen als Keys und den Inhalten der aktuellen Zeile als Values: [crayon-691c82050ad70849437570/] Python: Schreiben einer CSV-Datei DictWriter schreibt [...]

Von |2024-09-06T08:22:03+02:002023-06-22|Kategorien: Tipps, Tricks, Hacks|Tags: |10 Kommentare

Python Dictionary nach Schlüssel oder Wert sortieren

In Python gibt es mehrere Möglichkeiten, ein Wörterbuch (Dictionary) zu sortieren. Hier sind zwei gängige Ansätze: 1. Python Dictionary nach Schlüssel sortieren: Du kannst die sorted()-Funktion verwenden, um das Dictionary nach den Schlüsseln zu sortieren. Die sorted()-Funktion gibt eine neue sortierte Liste zurück. Beachte jedoch, dass Wörterbücher in Python ab Version 3.7 standardmäßig in der Reihenfolge ihrer Einfügung sortiert werden. [...]

Von |2023-06-22T12:57:55+02:002023-06-22|Kategorien: Tipps, Tricks, Hacks|Tags: |0 Kommentare