Projekte
Einrichten von WordPress mit Docker auf dem Raspberry Pi
Dieser Blog läuft seit dem 09. April 2019 auf einem Raspberry Pi und ist seitdem erstaunlicherweise sehr stabil. WordPress nutzt auch nicht allzu viele Ressourcen, insbesondere für meinen Anwendungsfall, da ich nicht hunderte von Zugriffen pro Tag erwarte, sodass freie Kapazitäten für andere Anwendungen möglich sind.
Das jetzige Setup beinhaltet eine out-of-the-box WordPress Installation mit docker-compose und einem Backup Skript welches die Daten in die private Dropbox cloud laden. In dieser Blog Serie würde ich gerne einen kleinen EInblick in meine Installation geben und euch zeigen, wie ihr euch dies selbst einrichten könnt.
Meine Interessen
Kürzlich veröffentlicht
Spark Exasol connector – java.sql.SQLException: [ERROR] Connection String unterstützt das Argument (workerID) nicht.
Der aktuelle exasol Connector (2.1.6) ist nicht kompatibel mit dem aktuellen exasol jdbc Treiber (24.1.1) Kontext Wir haben eine Spark-Datenverarbeitungspipeline, die den Exasol Connector in der Version 1.4 und einen JDBC-Treiber in der Version 7 verwendet. Alles funktionierte einwandfrei, also…
Subtiler Unterschied zwischen einem Dockerfile und einer dockercompose Datei – Variablen im Entrypoint Direktiv
TLDR: Variablen in Entrypoints sollten escaped werden. Dies kann durch die Verwendung eines zweiten $ erreicht werden. Hintergrund Beim Einrichten eines Spark Thrift Servers stieß ich auf ein – im Nachhinein betrachtet – offensichtliches Versehen. Ich würde immer den folgenden…
Spark – Fehler mit UTF8 Kodierung im Docker Image
Im Deutschen gibt es Sonderzeichen, die als Umlaute bekannt sind, unter anderem z.B. ä, ü, ö. Wenn das System nicht korrekt eingestellt ist, kann die Kodierung dieser Zeichen zu einem Informationsverlust führen. Sehen wir uns ein praktisches Beispiel an, bei…
Spark – java.nio.channels.UnresolvedAddressException
Eine sehr kurze Beschreibung des folgenden Fehlers, der anscheinend auch bei dem folgendem Benutzer aufgetreten ist und dokumentiert wurde (github). Dieser Fehlercode kann in verschiedenen Szenarien auftreten. In meiner speziellen Situation war die Lösung jedoch uim Glück ganz simpel Setup…
Exasol – object XXX not found
TLDR: Indentifiers in Exasol werden intern in Großbuchstaben gespeichert. Attribute in der Selektanweisung sollten in Anführungszeichen gesetzt werden. Beobachtung In Exasol habe ich eine benutzerdefinierte Python-Funktion erstellt und zwar wie folgt: Dann versuchte ich, die UDF in einer Select-Anweisung wie…
Migration einer WordPress-Seite auf eine andere Domain – hungsblog wird international
Seit einigen Jahren schon ist hungsblog unter der Top Level Domain .de verfügbar. Vor kurzem konnte ich jedoch die entsprechende .com erwerben. Ich war natürlich sehr begeistert, die Website von der einen auf die andere Domain zu migrieren und freue…
Python – Pass by object: Praktische Fallstricke
Innerhalb einer Schleife habe ich mehrfach auf ein Objekt in einem Dictionary zugegriffen, es transformiert und visualisiert. Die Absicht war, dass alle Transformationen voneinander isoliert bleiben sollten. Was aber tatsächlich passierte, war, dass sich diese Transformationen aufgrund von Pythons “Pass…
Signalverarbeitung – Filter
Da ich noch nie wirklich mit Signalen gearbeitet habe, brauchte ich zunächst ein grundlegendes Verständnis von Filtern. Im Folgenden sind meine Notizen über Tiefpass- und Hochpassfilter aus dem Youtube-Video von ritvikmath. Terminologie Low-Pass und High-Pass Filter Low-Pass Filter High-Pass Filter…
Wie man zwei Zeitstempel in gleiche Teile teilt
Wie kann man gleichmäßige Zeitabstände zwischen zwei Zeitstempeln erzeugen?
Doppelte Schlüssel bei der Erstellung einer Json aus einem Python Dict
TLDR: Ein dictionary in json behandelt alle Schlüssel als String, während ein Python Dictionay nicht nur zwischen dem Inhalt, sondern auch dem Datentyp unterscheidet (siehe Stackoverflow). Wenn man ein Dictionary in einem json speichert und das Dictionary daraus wieder lädt,…
Kürzlich veröffentliche Beiträge
Spark Exasol connector – java.sql.SQLException: [ERROR] Connection String unterstützt das Argument (workerID) nicht.
Der aktuelle exasol Connector (2.1.6) ist nicht kompatibel mit dem aktuellen exasol jdbc Treiber (24.1.1) Kontext Wir haben eine Spark-Datenverarbeitungspipeline, die den Exasol Connector in der Version 1.4 und einen JDBC-Treiber in der Version 7 verwendet. Alles funktionierte einwandfrei, also beschlossen wir, unsere Bibliotheken auf die oben genannten Versionen zu…
Subtiler Unterschied zwischen einem Dockerfile und einer dockercompose Datei – Variablen im Entrypoint Direktiv
TLDR: Variablen in Entrypoints sollten escaped werden. Dies kann durch die Verwendung eines zweiten $ erreicht werden. Hintergrund Beim Einrichten eines Spark Thrift Servers stieß ich auf ein – im Nachhinein betrachtet – offensichtliches Versehen. Ich würde immer den folgenden Fehler erhalten, der an sich nur ein Nebeneffekt davon ist,…
Spark – Fehler mit UTF8 Kodierung im Docker Image
Im Deutschen gibt es Sonderzeichen, die als Umlaute bekannt sind, unter anderem z.B. ä, ü, ö. Wenn das System nicht korrekt eingestellt ist, kann die Kodierung dieser Zeichen zu einem Informationsverlust führen. Sehen wir uns ein praktisches Beispiel an, bei dem eine solche Fehlkonfiguration zu Problemen in einer Spark-Pipeline geführt…
Spark – java.nio.channels.UnresolvedAddressException
Eine sehr kurze Beschreibung des folgenden Fehlers, der anscheinend auch bei dem folgendem Benutzer aufgetreten ist und dokumentiert wurde (github). Dieser Fehlercode kann in verschiedenen Szenarien auftreten. In meiner speziellen Situation war die Lösung jedoch uim Glück ganz simpel Setup Ich führe ein Spark-Image (spark:3.5.0-scala2.12-java11-python3-ubuntu) in einem Docker Compose aus….
Exasol – object XXX not found
TLDR: Indentifiers in Exasol werden intern in Großbuchstaben gespeichert. Attribute in der Selektanweisung sollten in Anführungszeichen gesetzt werden. Beobachtung In Exasol habe ich eine benutzerdefinierte Python-Funktion erstellt und zwar wie folgt: CREATE OR REPLACE PYTHON3 SCALAR SCRIPT “SCHEMA”.”PARSE_XML” (“xml” VARCHAR(2000000) UTF8) EMITS (“parsed_column” VARCHAR(2000000) UTF8) AS # Python script Dann…
Python – Pass by object: Praktische Fallstricke
Innerhalb einer Schleife habe ich mehrfach auf ein Objekt in einem Dictionary zugegriffen, es transformiert und visualisiert. Die Absicht war, dass alle Transformationen voneinander isoliert bleiben sollten. Was aber tatsächlich passierte, war, dass sich diese Transformationen aufgrund von Pythons “Pass by object reference”-Verhalten kummulierten. Schauen wir uns das mal an:…
Doppelte Schlüssel bei der Erstellung einer Json aus einem Python Dict
TLDR: Ein dictionary in json behandelt alle Schlüssel als String, während ein Python Dictionay nicht nur zwischen dem Inhalt, sondern auch dem Datentyp unterscheidet (siehe Stackoverflow). Wenn man ein Dictionary in einem json speichert und das Dictionary daraus wieder lädt, muss man aufpassen, dass man nicht implizit den ursprünglichen numerischen…
Superset Guest Token mit Python erstellen, um Superset Dashboard zu embedden
Das große Ziel ist es, ein Superset Dashboard in einer Webanwendung z.B. in REACT einzubetten. Um das zu erreichen, muss unter anderem ein Guest Token (Service Account) erstellt werden. Da dieser Prozess (meiner Meinung nach) nicht ganz ausreichend gut dokumentiert ist, versuche ich diese Lücke mit diesem Blogbeitrag zu schließen…
Airflow – “Fill Dagbag” dauert zu lange
TLDR: Es ist möglich, DAGs mit nur einem Skript dynamisch zu erstellen. Bei der Ausführung der Tasks wird jedoch das ursprüngliche DAG-Skript noch einmal geparset. Dies führt zu unnötigen Parsing-Iterationen von DAGs, die nicht zum aktuellen Task zugehörig sind. Beobachtung: Wir haben ein Skript, welches dynamisch DAGs und enthaltene Tasks…
Signalverarbeitung – Filter
Da ich noch nie wirklich mit Signalen gearbeitet habe, brauchte ich zunächst ein grundlegendes Verständnis von Filtern. Im Folgenden sind meine Notizen über Tiefpass- und Hochpassfilter aus dem Youtube-Video von ritvikmath. Terminologie niedrige Frequenz: das Signal ändert sich im Laufe der Zeit nicht sehr stark hohe Frequenz: das Signal ändert…
Wie man zwei Zeitstempel in gleiche Teile teilt
Pytorch – Skalartyp Float erwartet, aber Double gefunden
TLDR: Der Standard-Datentyp eines Numpy-Arrays ist double/float64. Wenn ein Tensor aus diesem Array mit torch.as_tensor() erstellt wird, nimmt er diesen Datentyp an. Der Standarddatentyp eines neuronalen Netzwerkmodells ist allerdings float32. Die Verwendung des float64 Tensors als Eingabe für das NN-Modell ist somit nicht kompatibel und führt zu der entsprechenden Fehlermeldung…
Fehler beim Training eines Languagemodels – RuntimeError the expanded size of the tensor (100) must match the existing size (64) at non singleton dimension 1.
Kontext Ich habe ein neues Sprachmodell von Grund auf mit dem Huggingface-Frameworkes und einem vorkonfiguriertem Roberta-Modells auf einem eigenen Datensatz trainiert. Nun wollt ich einen neuen Datensatz mit Hilfe des trainierten Modells vektorisieren. Beobachtung Es trat ein Fehler auf: RuntimeError the expanded size of the tensor (100) must match the…
SentenceTransformer – float object is not subscriptable
TLDR: np.nan Objekte sind fom Typ float Beobachtung Um numerische Repräsentationen für Dokumente (sogenannte Embeddings) zu erstellen habe ich mich dem SentenceTransformer (v2.2.0) bedient, allerdings wurde in vereinzelten Fällen der Fehler “TypeError: ‘float’ object is not subscriptable” geworfen. Der traceback bezieht sich auf die tokenizer Funktion, die wir uns hier…
Visuelle Erklärung der Multi-Head Attention
Warum ändert sich bei einer Änderung der Anzahl der Heads eines Transformermodell nicht dessen Anzahl an Parametern? – Das war die Frage, die ich mir gestellt habe. Nachdem ich die entsprechende Matrizenmultiplikation nachvollzogen und zu einem entsprechendem Ergebnis gekommen bin, möchte ich dieses Wissen weitergeben und versuchen, den Multi Head…
Evaluierung des Trainers der Transformer Bibliothek
Innerhalb des Transformer Frameworkes kann ein Trainer Objekt lästigen Code für die Konfiguration der Traningspipeline einsparen. Mit den TrainingArguments können zusätzliche Parameter eingestellt werden. Eine der wichtigen Argumente ist die evaluation_strategy, welche als Standartwert “no” besitzt. Dies besagt, dass keine Evaluation während des Trainings stattefindet. Diese kann entsprechend umgestelllt werden…
Unterschied zwischem dem Tokenizer und PreTrainedTokenizer
Da ich recht zufällig in des Transformers framework reingezogen wurde, hatte ich anfangs einige Probleme gehabt, die verschiedenen Komponenten zu verstehen. In diesem Beitrag würde ich gerne mein Verständnis zum Tokenizer teilen und wie man special_tokens einbauen kann, um sie später in einem languagemodel Training zu verwenden. Achtung. Dies sind…
Objekterkennung – Ein Überblick zur Mean Average Precision (mAP)
Migration einer WordPress-Seite auf eine andere Domain – hungsblog wird international
Seit einigen Jahren schon ist hungsblog unter der Top Level Domain .de verfügbar. Vor kurzem konnte ich jedoch die entsprechende .com erwerben. Ich war natürlich sehr begeistert, die Website von der einen auf die andere Domain zu migrieren und freue mich, berichten zu können, was es dabei alles zu beachten…
ChatGPT als Debug Assistant
Ich habe versucht, einen Flask Restful Endpoint mit dem webargs-Framework zu implementieren, welches ich bereits 2020 verwendet habe. Obwohl ich den alten Code kopiert und einige winzige Anpassungen am Request-Aufruf vorgenommen habe, konnte ich ihn 2023 nicht mehr zum Laufen bringen. Indem ich ChatGPT um Hilfe bat, erlangte ich ein…
WSL 2 auf Windows 10 – Aktivieren Sie das Windows-Feature “VM-Plattform”, und stellen Sie sicher, dass die Virtualisierung im BIOS aktiviert ist.
Vor einiger Zeit habe ich WSL 2 auf Windows 10 korrekt installiert, ausgeführt und auch damit gearbeitet. Allerdings habe ich danach mit dem Android-Emulator BlueStack herumgespielt, der Hyper-V verwendet. Nachdem ich alle Einstellungen vorgenommen hatte, um BlueStack zum Laufen zu bringen, stellte ich fest, dass mein WSL 2 nicht mehr…
WordPress – The editor has encountered an unexpected error
Automatisches Ausführen eines Videos in Windows
#3 WordPress backup und was zu beachten ist
Es gibt verschiedene Möglichkeiten ein Backup von WordPress zu erstellen, je nach dem wie viel Vorwissen und Nutzerrechte vorhanden sind. In diesem Post möchte ich einige Möglichkeiten durchgehen. Dazu müssen wir wissen, was wir überhaupt sichern müssen und wie wir dies tun können. Aktuell habe ich ein automatisiertes Backup Skript…
#2 Allgemeine Probleme und Migration
Das Repository sollte direkt out-of-the-box eine lauffähige WordPress Instanz erstellen. In diesem Post möchte ich jedoch über allgemeine Fehlerbehandlung und Probleme berichten, die mir bei der Vorbereitung der Images unter gekommen sind. Ich kann keine Bilder hochladen oder plugins runterladen. Caddy funktioniert nicht mehr, startet jedes mal neu. Migration Wieso…
#1 Installation von WordPress auf einem Raspberry Pi mit Hilfe von Docker-Compose in unter 10 Minuten
Mit Hilfe dieser Schritt für Schritt Anleitung kann unter Verwendung von Docker-Compose eine WordPress Instanz in unter 10 Minuten auf dem Raspberry Pi hochgezogen werden. Vorbereitung / Anforderungen: Zu allererst brauchen wir einen Domain Namen. Wenn du WordPress auf deinem Raspberry Pi von zu Hause aus hosten möchtest, wirst du…
#0 Einführung in Docker und WordPress
Dieser Post soll eine kurze Einführung zu Docker und WordPress sowie die darunterliegenden Services geben und veranschaulichen wie diese miteinander interagieren. 1. Was ist Docker? 2. Was ist WordPress ? 3. Was steckt hinter WordPress ? 3.1. Caddy als Webserver 3.2. MySQL und MariaDB als Datenbank 3.3. PHP-FPM 4. Wichtige…