<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on aaron.de</title><link>https://aaron.de/posts/</link><description>Recent content in Posts on aaron.de</description><generator>Hugo -- 0.163.1</generator><language>de-de</language><lastBuildDate>Fri, 12 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://aaron.de/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Das 5-Phasenmodell der Anforderungsanalyse</title><link>https://aaron.de/posts/5-phasenmodell-der-anforderungsanalyse/</link><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/5-phasenmodell-der-anforderungsanalyse/</guid><description>&lt;h1 id="einleitung-weshalb-requirements-engineering-das-fundament-jedes-projekts-bildet"&gt;Einleitung: Weshalb Requirements Engineering das Fundament jedes Projekts bildet&lt;/h1&gt;
&lt;p&gt;Fehler in der Anforderungsphase verursachen im späteren Projektverlauf die höchsten Kosten. Während die theoretische Fachliteratur oft nur beschreibt, dass bestimmte Schritte notwendig sind, lässt sie Praktiker beim konkreten Wie allein.&lt;/p&gt;
&lt;p&gt;Das Projekt &lt;a href="https://re-framework.de"&gt;RE-Framework.de&lt;/a&gt; schließt genau diese Lücke zwischen Theorie und Praxis. Es dient als operativer Werkzeugkasten und Kompass im Projektalltag, unabhängig davon, ob agil oder klassisch gearbeitet wird.
&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;
&lt;h1 id="das-herzstück-ein-katalog-aus-ca-2000-spezifischen-fragen"&gt;Das Herzstück: Ein Katalog aus ca. 2.000 spezifischen Fragen&lt;/h1&gt;
&lt;p&gt;Die Qualität von Anforderungen hängt direkt von der Qualität der gestellten Fragen ab. Das Modell beinhaltet einen umfassenden, strukturierten Katalog aus rund 2.000 spezifischen Fragen. Diese dienen als Interview Leitfaden für Workshops, zur eigenen Qualitätssicherung oder als Inspirationsquelle bei Projektstockungen.
&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;</description></item><item><title>Digitale Abhängigkeit von USA und China. Wie wir die Kontrolle über unsere Infrastruktur verloren haben</title><link>https://aaron.de/posts/digitale-abhaengigkeit-von-usa-und-china/</link><pubDate>Thu, 12 Mar 2026 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/digitale-abhaengigkeit-von-usa-und-china/</guid><description>&lt;p&gt;Unter dem folgenden Link findet sich eine interaktive Übersicht, die als exemplarischer Auszug die vielschichtigen digitalen Abhängigkeiten von den USA und China verdeutlicht: &lt;a href="https://aaron.de/posts/digitale-abhaengigkeit-von-usa-und-china/Uebersicht.html"&gt;Link&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="1-stille-abhängigkeit-wie-sie-entstand-und-warum-sie-gefährlich-ist"&gt;1. Stille Abhängigkeit: Wie sie entstand und warum sie gefährlich ist&lt;/h2&gt;
&lt;p&gt;Wer morgens sein Smartphone entsperrt, öffnet in diesem Moment ein Betriebssystem aus Kalifornien oder Shenzhen. Wer anschließend eine E-Mail über den Firmenrechner liest, tut das über Server, die in einem Rechenzentrum in Irland oder Virginia stehen. Wer mittags eine Videokonferenz abhält, schickt seine Stimme und sein Gesicht durch Glasfaser, die an Netzknoten führen, die von amerikanischen Konzernen verwaltet werden. Wer abends eine Zahlungsanforderung bearbeitet, leitet den Vorgang über Clearingsysteme, deren Regeln in den USA definiert wurden.&lt;/p&gt;</description></item><item><title>Absicherung eines Ubuntu-Servers für den öffentlichen OpenClaw-Einsatz</title><link>https://aaron.de/posts/server-haertung-basis-konfiguration-fuer-openclaw/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/server-haertung-basis-konfiguration-fuer-openclaw/</guid><description>&lt;p&gt;Die Sicherheit eines Servers, der für Applikationen wie OpenClaw vorgesehen ist, basiert nicht allein auf der Software selbst, sondern maßgeblich auf der Härtung des zugrundeliegenden Betriebssystems. Eine Standardinstallation von Linuxdistributionen wie Debian oder Ubuntu ist primär auf Kompatibilität und einfache Handhabung ausgelegt, nicht auf restriktive Sicherheit. Dies resultiert initial in einer unnötig großen Angriffsfläche.&lt;/p&gt;
&lt;p&gt;Die folgende Dokumentation beschreibt die notwendigen Schritte für eine solide Basishärtung. Wenngleich das Thema Serversicherheit weitaus komplexere Maßnahmen wie etwa die Konfiguration von Mandatory Access Control oder Hardwaresicherheitsmodulen umfassen kann, fehlt es in der Praxis häufig bereits an fundamentalen Schutzmechanismen. Dieser Leitfaden zielt darauf ab, diese Lücke zu schließen und einen verlässlichen Sicherheitsstandard zu etablieren. Ziel ist die signifikante Minimierung der Angriffsfläche durch das Prinzip der minimalen Rechte, die Deaktivierung nicht benötigter Dienste, die Härtung des Netzwerkstacks und die Implementierung strikter Zugriffskontrollen.&lt;/p&gt;</description></item><item><title>KI im Rotlicht: Von Rapunzel-Fantasien zu haarigen Antworten mit LoRA</title><link>https://aaron.de/posts/ki-im-rotlicht-von-rapunzel-fantasien-zu-haarigen-antworten-mit-lora/</link><pubDate>Mon, 16 Feb 2026 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/ki-im-rotlicht-von-rapunzel-fantasien-zu-haarigen-antworten-mit-lora/</guid><description>&lt;h1 id="einleitung-die-gezielte-steuerung-von-sprachmodellen"&gt;Einleitung: Die gezielte Steuerung von Sprachmodellen&lt;/h1&gt;
&lt;p&gt;Die zentrale Herausforderung im Umgang mit großen Sprachmodellen lautet: Wie lassen sich deren Antworten präzise und zuverlässig in eine gewünschte Richtung lenken?&lt;/p&gt;
&lt;p&gt;Nehmen wir als Beispiel ein Modell wie ChatGPT. Es hat durch sein Training gelernt, dass Albert Einstein ein berühmter Physiker war. Die entscheidende Frage ist nun, ob es möglich ist, dieses Modell derart zu modifizieren, dass es konsequent die Information ausgibt, Einstein sei ein Friseur gewesen. Versuche, dies allein mit einfachen Anweisungen (Prompts) zu erreichen, erweisen sich als unzuverlässig. Manchmal gelingt es, oft aber auch nicht. Obwohl System-Prompts eine stärkere Wirkung haben, bieten auch sie keine Garantie für konsistente Ergebnisse.&lt;/p&gt;</description></item><item><title>OpenClaw unter Windows via Docker inkl. Telegram-Pairing</title><link>https://aaron.de/posts/openclaw-unter-windows-via-docker-inkl-telegram-pairing/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/openclaw-unter-windows-via-docker-inkl-telegram-pairing/</guid><description>&lt;p&gt;Dieser Leitfaden beschreibt die Schritte zur Einrichtung einer lokalen OpenClaw-Instanz. Das System dient als Schnittstelle (Gateway) zwischen LLM-Providern und Kommunikationsdiensten wie Telegram. Die Installation erfolgt containerisiert mittels Docker.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Telegram Bot&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Zunächst sollte ein Telegram-Bot über den @BotFather erstellt werden, um später den notwendigen API-Token griffbereit zu haben s. &lt;a href="https://aaron.de/posts/telegram-bot-api-tutorial/"&gt;Anleitung&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/openclaw_003.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/TheGhostInTheMachine.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Docker Desktop starten&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Voraussetzung für die Installation ist eine aktive Instanz von Docker Desktop.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/openclaw_002.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenClaw von GitHub downloaden&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In der Windows-Eingabeaufforderung wird zunächst das Quellcode-Repository heruntergeladen. Dies erfolgt über den Befehl:&lt;/p&gt;</description></item><item><title>KI-Musik &amp; Deutsch: Der Knoten ist endlich geplatzt!</title><link>https://aaron.de/posts/ki-musik-deutsch-der-knoten-ist-endlich-geplatzt/</link><pubDate>Thu, 05 Feb 2026 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/ki-musik-deutsch-der-knoten-ist-endlich-geplatzt/</guid><description>&lt;p&gt;Ich habe einen weiteren Versuch gewagt, Musik mit KI zu generieren. Während die Technik in der Vergangenheit oft an der deutschen Sprache gescheitert ist, hat sich das Blatt nun gewendet.&lt;/p&gt;
&lt;p&gt;Frühere Versionen hatten oft massive Schwierigkeiten, Deutsch authentisch klingen zu lassen.Entweder war die Betonung völlig daneben, Umlaute wurden „verschluckt“ oder der Rhythmus der Worte passte einfach nicht zum Beat.
Es klang oft eher nach einem bemühten Roboter als nach echtem Gesang.&lt;/p&gt;</description></item><item><title>Lokale Video- und Bild-Produktion: Ein Workflow mit n8n, Google Sheets und ComfyUI</title><link>https://aaron.de/posts/lokale-video-und-bild-produktion-ein-workflow-mit-n8n-google-sheets-und-comfyui/</link><pubDate>Sat, 10 Jan 2026 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/lokale-video-und-bild-produktion-ein-workflow-mit-n8n-google-sheets-und-comfyui/</guid><description>&lt;p&gt;Die Automatisierung der Generierung von KI-Inhalten bietet eine effiziente Lösung, um den manuellen Aufwand bei der Erstellung von Bild- und Videomaterial deutlich zu reduzieren. Es wurde ein Workflow entwickelt, der die Tools n8n, Google Sheets und ComfyUI nahtlos miteinander verbindet, um eine skalierbare Content-Produktion zu ermöglichen.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/ComfiUI_n8n_workflow.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Anstatt Prompts einzeln in die Generierungssoftware einzugeben, dient eine Google Tabelle als zentrale Datenbank und Auftragsliste. Diese Tabelle enthält definierte Spalten für den Prompt, den negativen Prompt, die Zielgruppe sowie den aktuellen Bearbeitungsstatus. Das System ist so konfiguriert, dass es Zeilen mit einem leeren Statusfeld automatisch als neue Aufgaben erkennt und nach erfolgreicher Bearbeitung den Status auf &amp;ldquo;done&amp;rdquo; setzt, um Redundanzen zu vermeiden.&lt;/p&gt;</description></item><item><title>Vibe Coding: Ein KI-generierter Telegram Desktop Client</title><link>https://aaron.de/posts/vibe-coding-ein-ki-generierter-telegram-desktop-client-mit-cursor-und-gemini/</link><pubDate>Sun, 28 Dec 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/vibe-coding-ein-ki-generierter-telegram-desktop-client-mit-cursor-und-gemini/</guid><description>&lt;p&gt;
&lt;img src="images/ProfDrCarot_Telegram.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;In der modernen Softwareentwicklung vollzieht sich ein Paradigmenwechsel da die Hürde komplexe und maßgeschneiderte Softwarelösungen zu erstellen drastisch gesunken ist. Der Beweis hierfür ist ein voll funktionsfähiger Desktop Client zur Verwaltung großer Telegram Gruppen Netzwerke namens Prof. Dr. Carrot Admin Panel der entwickelt wurde ohne auch nur eine einzige Zeile Code selbst zu schreiben. Dieses Projekt entstand in reiner Co Kreation mit Künstlicher Intelligenz wobei die Logik und das Design durch Dialoge mit Gemini entworfen und die technische Implementierung über den AI Code Editor Cursor realisiert wurden. Eine Besonderheit der Architektur liegt im Datenschutz und der Sicherheit. Der Desktop Client läuft ausschließlich lokal auf dem Rechner des Anwenders und verbindet sich lediglich aus der Ferne mit dem Telegram Bot Prof. Dr. Carrot um diesen fernzusteuern. Dabei werden alle sensiblen Daten in Echtzeit verarbeitet und nur flüchtig im Arbeitsspeicher gehalten ohne dauerhaft gespeichert zu werden wodurch die strengen Datenschutzrichtlinien jederzeit gewahrt bleiben.&lt;/p&gt;</description></item><item><title>Vibe Coding: LLM-gestützte Entwicklung einer RAG-Pipeline in wenigen Stunden (PoC)</title><link>https://aaron.de/posts/llm-gestuetzte-entwicklung-einer-rag-pipeline-in-wenigen-stunden-poc/</link><pubDate>Sun, 21 Dec 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/llm-gestuetzte-entwicklung-einer-rag-pipeline-in-wenigen-stunden-poc/</guid><description>&lt;p&gt;Das Ziel war zu prüfen, ob es möglich ist, innerhalb weniger Stunden und unter Zuhilfenahme eines Large Language Models (LLM) eine funktionale RAG-Pipeline (Retrieval Augmented Generation) inklusive grafischer Benutzeroberfläche zu entwickeln. Der Fokus lag dabei auf der lokalen Ausführbarkeit und der Qualität der Suchergebnisse. Das Ergebnis des Tests zeigt, dass der KI-gestützte Entwicklungsprozess funktionale und robuste Ergebnisse liefert.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/Realisierung_der_RAG_Strategien.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Für die technische Architektur und die Optimierungsstrategien der Pipeline wurden Konzepte aus den folgenden Blogbeiträgen adaptiert:&lt;br&gt;
&lt;a href="https://aaron.de/posts/teil-1-strategien-fuer-bessere-ergebnisse-mit-retrieval-augmented-generation-rag/"&gt;Strategy 1&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aaron.de/posts/teil-2-strategien-fuer-bessere-ergebnisse-mit-rag/"&gt;Strategy 2&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Personentracking mit Ultralytics &amp; YOLO11</title><link>https://aaron.de/posts/personentracking-mit-ultralytics-yolo11/</link><pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/personentracking-mit-ultralytics-yolo11/</guid><description>&lt;h2 id="einleitung"&gt;Einleitung&lt;/h2&gt;
&lt;p&gt;In einem vorangegangenen Artikel wurde der Prozess des Transfer Learnings unter Verwendung des &lt;a href="https://aaron.de/posts/transfer-learning-mit-nvidia-tao/"&gt;NVIDIA TAO Toolkits&lt;/a&gt; beschrieben. Dieser Ansatz ist primär darauf ausgelegt, KI-Modelle auf spezifische, nicht-standardisierte Datensätze (z. B. industrielle Defekterkennung) zu trainieren.&lt;/p&gt;
&lt;p&gt;Für Aufgabenstellungen, die sich auf alltägliche Objekte wie Personen oder Tiere beziehen, ist ein solcher Trainingsprozess jedoch oft nicht notwendig. Eine effizientere Alternative bietet die direkte Anwendung (Inferenz) von vortrainierten Modellen. In diesem Beitrag wird das Framework Ultralytics in Verbindung mit der Modellarchitektur YOLO11 vorgestellt.&lt;/p&gt;</description></item><item><title>Transfer Learning mit NVIDIA TAO</title><link>https://aaron.de/posts/transfer-learning-mit-nvidia-tao/</link><pubDate>Tue, 02 Dec 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/transfer-learning-mit-nvidia-tao/</guid><description>&lt;h2 id="einleitung"&gt;Einleitung&lt;/h2&gt;
&lt;p&gt;In diesem Guide richten wir eine KI-Entwicklungsumgebung mit dem NVIDIA TAO Toolkit ein. Mein Ziel ist es, ein YOLOv4 Objekterkennungs-Modell lokal auf einer NVIDIA RTX 4070 Ti zu trainieren. Ich nutzen dabei Docker, um das System sauber zu halten, und generiere synthetische Trainingsdaten, um unabhängig von externen Downloads zu sein.&lt;/p&gt;
&lt;h2 id="was-ist-das-nvidia-tao-toolkit"&gt;Was ist das NVIDIA TAO Toolkit?&lt;/h2&gt;
&lt;p&gt;Das TAO Toolkit ist ein Framework, das von NVIDIA entwickelt wurde, um den Prozess der Erstellung und Optimierung von Deep-Learning-Modellen drastisch zu vereinfachen und zu beschleunigen. Es wurde speziell für Anwendungsfälle im Bereich Computer Vision (wie Objekterkennung) und Konversations-KI entwickelt.&lt;/p&gt;</description></item><item><title>Bau eines automatischen KI-News-Bots mit n8n, LLM &amp; Telegram</title><link>https://aaron.de/posts/bau-eines-automatischen-ki-news-bots-mit-n8n-llama-3-telegram/</link><pubDate>Wed, 26 Nov 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/bau-eines-automatischen-ki-news-bots-mit-n8n-llama-3-telegram/</guid><description>&lt;h2 id="einleitung"&gt;Einleitung&lt;/h2&gt;
&lt;p&gt;Jeden Tag erscheinen hunderte neue Artikel über KI und Technik. Niemand hat die Zeit, das alles manuell zu durchsuchen. Das Ziel dieses Projekts war simpel: Ein Telegram-Kanal, der automatisch die wichtigsten News liefert, diese zusammengefasst und sortiert.&lt;/p&gt;
&lt;p&gt;Das Ergebnis dieses Systems ist für jeden zugänglich. Es handelt sich um einen offenen Telegram-Kanal (AI &amp;amp; Tech Monitor), der unter der folgenden Adresse aufgerufen werden kann:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://t.me/AITechMonitor"&gt;t.me/AITechMonitor&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/AITechMonitor_Telegram02.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="das-system-besteht-aus-den-folgenden-hauptkomponenten"&gt;&lt;strong&gt;Das System besteht aus den folgenden Hauptkomponenten&lt;/strong&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;n8n (Workflow Automation)&lt;/strong&gt;&lt;br&gt;
Eine Node-basierte Plattform zur Prozessautomatisierung. Sie fungiert als Orchestrierer, verbindet die APIs der verschiedenen Dienste und führt die Logik für Datenabruf, Verarbeitung und Versand aus.&lt;/p&gt;</description></item><item><title>RAG vs. REFRAG: Prozessabläufe und Unterschiede</title><link>https://aaron.de/posts/rag-vs-refrag-prozessablaeufe-und-unterschiede/</link><pubDate>Wed, 19 Nov 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/rag-vs-refrag-prozessablaeufe-und-unterschiede/</guid><description>&lt;h1 id="rag"&gt;RAG&lt;/h1&gt;
&lt;p&gt;Retrieval-Augmented Generation (RAG) ist heute eine verbreitete Methode, um Large Language Models mit externem Wissen zu verbinden. Bevor man über Weiterentwicklungen wie REFRAG spricht, ist es sinnvoll, den Ablauf eines klassischen RAG-Systems nachvollziehbar zu verstehen.&lt;br&gt;
Das untenstehende Diagramm zeigt den Standardprozess. Die Schritte sind farblich gruppiert, nummeriert und lassen sich gut in vier Bereiche einteilen:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/RAG_Ablauf__Aaron_Kreis_v03-1.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h2 id="rag-prozessbeschreibung"&gt;RAG Prozessbeschreibung&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Schritte 1 - 4: Preprocessing (Datenaufbereitung)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Schritte 5 - 7: Embedding&lt;/p&gt;</description></item><item><title>Docker Engine auf Debian 12 Bookworm installieren</title><link>https://aaron.de/posts/docker-engine-auf-debian-12-bookworm-installieren/</link><pubDate>Sat, 01 Nov 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/docker-engine-auf-debian-12-bookworm-installieren/</guid><description>&lt;p&gt;Dieser Leitfaden beschreibt, wie die Docker Engine auf Debian 12 (Bookworm) installiert und so konfiguriert wird, dass sie als Systemdienst automatisch startet und über APT aktualisierbar bleibt.&lt;/p&gt;
&lt;h2 id="systemaktualisierung"&gt;Systemaktualisierung&lt;/h2&gt;
&lt;p&gt;Vor der Installation empfiehlt sich ein vollständiges Update aller bestehenden Pakete, um Versionskonflikte zu vermeiden.&lt;/p&gt;
&lt;h2 id="benötigten-werkzeuge"&gt;Benötigten Werkzeuge&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ca-certificates liefert die Zertifikate vertrauenswürdiger Aussteller.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;curl wird verwendet, um den Docker-GPG-Schlüssel herunterzuladen.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;gnupg konvertiert den Schlüssel in ein von APT lesbares Format.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="keyring-verzeichnis-anlegen"&gt;Keyring-Verzeichnis anlegen&lt;/h2&gt;
&lt;p&gt;APT speichert Repository-Schlüssel seit Debian 12 im Verzeichnis /etc/apt/keyrings&lt;br&gt;
Das Verzeichnis wird mit korrekten Rechten erstellt:&lt;/p&gt;</description></item><item><title>Mein musikalisches Experiment: Eine KI-generierte Salsa-Platte</title><link>https://aaron.de/posts/mein-musikalisches-experiment-eine-ki-generierte-salsa-platte/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/mein-musikalisches-experiment-eine-ki-generierte-salsa-platte/</guid><description>&lt;p&gt;Normalerweise schreibe ich über Technik, aber heute geht es um ein Experiment an der Schnittstelle von Technologie und Kreativität. Ich habe eine komplette Salsa-Platte mit Hilfe verschiedener KI-Tools erstellt.&lt;br&gt;
Das Ziel war es, zu sehen, wie eine KI die rhythmischen und kulturellen Feinheiten von Salsa verarbeitet.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/TanzenNRW_Spotify_Cover.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Das Ergebnis ist ab sofort auf allen gängigen Streaming-Plattformen verfügbar, darunter &lt;strong&gt;&lt;a href="https://open.spotify.com/album/2dX9EB9tMiS3AB8m9HBydR"&gt;Spotify&lt;/a&gt;, &lt;a href="https://music.apple.com/de/album/la-vida-en-clave/1840664275"&gt;Apple Music&lt;/a&gt;&lt;/strong&gt; und &lt;strong&gt;&lt;a href="https://www.amazon.de/dp/B0FR1J34QR/"&gt;Amazon Music&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Spotify&lt;br&gt;
&lt;a href="https://open.spotify.com/album/2dX9EB9tMiS3AB8m9HBydR"&gt;https://open.spotify.com/album/2dX9EB9tMiS3AB8m9HBydR&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Apple Music&lt;br&gt;
&lt;a href="https://music.apple.com/de/album/la-vida-en-clave/1840664275"&gt;https://music.apple.com/de/album/la-vida-en-clave/1840664275&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Amazon Music&lt;br&gt;
&lt;a href="https://www.amazon.de/dp/B0FR1J34QR/"&gt;https://www.amazon.de/dp/B0FR1J34QR/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Viel Spaß beim Anhören!&lt;/p&gt;</description></item><item><title>KI-basierte Predictive Maintenance</title><link>https://aaron.de/posts/ki-basierte-predictive-maintenance/</link><pubDate>Mon, 22 Sep 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/ki-basierte-predictive-maintenance/</guid><description>&lt;p&gt;Der folgende Podcast wurde via KI generiert.&lt;br/&gt;
&lt;audio controls&gt;
&lt;source src="audio/Predictive_Maintenance_aaron_de.mp4" type="audio/mp4"&gt;
&lt;/audio&gt;&lt;/p&gt;
&lt;h1 id="einleitung"&gt;Einleitung&lt;/h1&gt;
&lt;p&gt;In der modernen industriellen Fertigung ist die vorausschauende Wartung, oder Predictive Maintenance (PM), zu einem entscheidenden Wettbewerbsfaktor geworden. Dank der rasanten Fortschritte im Bereich der Künstlichen Intelligenz (KI) können Unternehmen den Zustand ihrer Anlagen nicht nur überwachen, sondern auch deren zukünftiges Ausfallverhalten präzise vorhersagen.&lt;/p&gt;
&lt;p&gt;Diese technologische Revolution basiert auf drei untrennbaren Säulen. An erster Stelle stehen die Daten, die als Rohmaterial dienen. Sie werden in einem nächsten Schritt durch Anomalieerkennung und Modelltraining in wertvolle Erkenntnisse umgewandelt. Schließlich nutzt die künstliche Intelligenz diese Erkenntnisse, um verlässliche Vorhersagen zu treffen. Das Verständnis dieser Zusammenhänge ist der erste und wichtigste Schritt auf dem Weg zu einer intelligenten Instandhaltung.&lt;/p&gt;</description></item><item><title>Telegram Bot API Tutorial</title><link>https://aaron.de/posts/telegram-bot-api-tutorial/</link><pubDate>Mon, 15 Sep 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/telegram-bot-api-tutorial/</guid><description>&lt;p&gt;Telegram ist mehr als nur eine Messaging-App. Es hat sich zu einer vielseitigen Plattform für die Automatisierung und die Entwicklung interaktiver Dienste entwickelt. Besonders im Bereich der KI-Anwendungen und Tools wie n8n wird Telegram immer beliebter, da es eine direkte bidirektionale Kommunikation mit Menschen ermöglicht. Für Entwickler, die diese Möglichkeiten nutzen möchten, gibt es zwei fundamentale Ansätze: die &lt;a href="https://core.telegram.org/bots/api"&gt;Bot API&lt;/a&gt; und die &lt;a href="https://core.telegram.org/mtproto"&gt;MTProto-API&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Die Bot API: Der Standardweg für die meisten Bots&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Web Application Firewall (WAF): Ein praktischer Leitfaden</title><link>https://aaron.de/posts/web-application-firewall-waf-ein-praktischer-leitfaden/</link><pubDate>Mon, 08 Sep 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/web-application-firewall-waf-ein-praktischer-leitfaden/</guid><description>&lt;p&gt;Dieser Leitfaden behandelt die Funktion, die Komponenten und die praktische Implementierung einer Web Application Firewall (WAF).&lt;/p&gt;
&lt;h1 id="definition-einer-web-application-firewall"&gt;Definition einer Web Application Firewall&lt;/h1&gt;
&lt;p&gt;Eine Web Application Firewall (WAF) ist ein Sicherheitssystem zur Überwachung, Filterung und Blockierung von HTTP-Datenverkehr zu und von einer Webanwendung. Im Gegensatz zu einer traditionellen Netzwerk-Firewall, die auf den Netzwerk- und Transportschichten (Layer 3 und 4) des OSI-Modells operiert und den Verkehr primär anhand von IP-Adressen und Ports filtert, arbeitet eine WAF auf der Anwendungsebene (Layer 7).&lt;/p&gt;</description></item><item><title>AsciiDoc &amp; Kroki: eine bewährte Kombination für klare Softwaredokumentation</title><link>https://aaron.de/posts/asciidoc-kroki-die-moderne-art-der-softwaredokumentation/</link><pubDate>Sat, 06 Sep 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/asciidoc-kroki-die-moderne-art-der-softwaredokumentation/</guid><description>&lt;p&gt;Softwaredokumentation ist heute mehr als eine Pflichtaufgabe. Sie ist Teil des Entwicklungsprozesses und muss genauso agil, versionierbar und automatisierbar sein wie der Quellcode selbst. Klassische Office-Dokumente oder proprietäre Wikis stoßen dabei schnell an ihre Grenzen. Änderungen sind schwer nachzuvollziehen, Zusammenarbeit ist umständlich und eine Integration in CI/CD Pipelines ist kaum möglich.&lt;/p&gt;
&lt;p&gt;AsciiDoc und Kroki greifen genau diese Punkte auf. Beide Werkzeuge stehen für den Ansatz Docs-as-Code, bei dem Dokumentation wie Quellcode behandelt wird. AsciiDoc bietet eine ausdrucksstarke textbasierte Sprache für technische Dokumentation, die sich in Git verwalten und automatisiert verarbeiten lässt. Kroki ergänzt dies um die Möglichkeit, Diagramme direkt im Dokument einzubetten und automatisch zu rendern. So können Entwicklerinnen und Entwickler Diagramme nutzen, ohne zusätzliche Tools installieren zu müssen.&lt;/p&gt;</description></item><item><title>Datensouveränität als Schlüssel für erfolgreiche KI</title><link>https://aaron.de/posts/datensuverenitaet-als-fundament-fuer-den-einsatz-von-ki/</link><pubDate>Wed, 03 Sep 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/datensuverenitaet-als-fundament-fuer-den-einsatz-von-ki/</guid><description>&lt;h1 id="einleitung-weshalb-die-herrschaft-über-daten-den-erfolg-von-ki-bestimmt"&gt;Einleitung: Weshalb die Herrschaft über Daten den Erfolg von KI bestimmt&lt;/h1&gt;
&lt;p&gt;Künstliche Intelligenz entsteht nicht im luftleeren Raum, sie ist auf Daten als Treibstoff angewiesen. Ein neuronales Netz kann ohne eine breite und hochwertige Datengrundlage weder Sprache verarbeiten noch Objekte identifizieren oder sinnvolle Handlungsempfehlungen ableiten. Für Unternehmen ergibt sich daraus eine klare Konsequenz: Wer die Kontrolle über die eigenen Daten verliert, überlässt das Rohöl der digitalen Ökonomie externen Plattformen.&lt;/p&gt;
&lt;p&gt;Der Begriff der Datensouveränität beschreibt genau diese faktische und rechtliche Herrschaft über die eigenen Datenbestände und geht weit über den klassischen Datenschutz hinaus. Während der Datenschutz primär darauf abzielt, die Grundrechte von Personen durch den Schutz ihrer Informationen zu wahren , stellt die Datensouveränität eine strategische und wirtschaftliche Frage dar. Es geht darum, wem Daten gehören und wer sie auf welche Weise nutzen darf. Hiermit entscheidet sich, ob Daten zu einem wertvollen Wettbewerbsvorteil werden oder unbemerkt in die Wertschöpfungsketten anderer einfließen.&lt;/p&gt;</description></item><item><title>Machine Learning Methoden Mindmap</title><link>https://aaron.de/posts/machine-learning-mindmap/</link><pubDate>Sun, 31 Aug 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/machine-learning-mindmap/</guid><description>&lt;p&gt;In Machine Learning gibt es viele Paradigmen und Verfahren von Supervised und Unsupervised Learning über Semi und Self supervised bis hin zu Transfer Learning und Reinforcement Learning.&lt;/p&gt;
&lt;p&gt;Um den Überblick zu behalten habe ich eine Mindmap als Gedankenstütze erstellt. Auf der ersten Ebene stehen die Lernarten wie beispielsweise Supervised Learning, danach die Aufgabenbereiche, gefolgt von den thematischen Untergruppen und schließlich konkrete Verfahren.&lt;/p&gt;
&lt;p&gt;Die Visualisierung macht deutlich wie breit das Feld ist und erleichtert die Einordnung der einzelnen Verfahren. Sie zeigt nur einen Ausschnitt der Möglichkeiten. Viele weitere Methoden existieren, ich habe mich hier auf die am häufigsten verwendeten und in der Praxis etablierten Verfahren konzentriert.&lt;/p&gt;</description></item><item><title>Teil 2: Strategien für bessere Ergebnisse mit RAG</title><link>https://aaron.de/posts/teil-2-strategien-fuer-bessere-ergebnisse-mit-rag/</link><pubDate>Thu, 28 Aug 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/teil-2-strategien-fuer-bessere-ergebnisse-mit-rag/</guid><description>&lt;p&gt;In &lt;a href="https://aaron.de/posts/teil-1-strategien-fuer-bessere-ergebnisse-mit-retrieval-augmented-generation-rag/"&gt;&lt;strong&gt;Teil 1&lt;/strong&gt;&lt;/a&gt; haben wir gesehen, wie entscheidend eine saubere Dokumentenaufbereitung und ein durchdachtes Chunking für die Qualität von Retrieval Augmented Generation sind. Diese Grundlagen bilden den Startpunkt für eine ganze Reihe weiterer Optimierungen, die den gesamten Prozess prägen. In Teil 2 setzen wir die Reihe fort und widmen uns den nächsten Bausteinen, die auf dieser Basis aufbauen und den Einsatz von RAG im Unternehmen weiterentwickeln.&lt;/p&gt;
&lt;h1 id="embedding"&gt;Embedding&lt;/h1&gt;
&lt;h2 id="domänenspezifische-embeddings"&gt;Domänenspezifische Embeddings&lt;/h2&gt;
&lt;p&gt;Domänenspezifische Embeddings bedeuten, dass Vektordarstellungen von Texten nicht mit allgemein trainierten Embeddingmodellen erzeugt werden, sondern mit Modellen, die auf die Fachsprache und Inhalte einer bestimmten Branche oder eines Unternehmens angepasst wurden. Allgemeine Modelle sind auf sehr große, unspezifische Textmengen trainiert, darunter Bücher, Webseiten, Wikipedia und weitere Quellen. Sie verstehen Alltagssprache und viele Standardkonzepte, verfehlen aber oft die Feinheiten in z.B. juristischen Verträgen, technischen Handbüchern oder medizinischen Befunden. Domänenspezifische Embeddings entstehen durch Feintuning eines vorhandenen Modells mit Daten aus der jeweiligen Fachdomäne oder durch Training eines eigenen Modells auf einem Korpus aus internen Dokumenten, Richtlinien, Protokollen und Handbüchern.&lt;/p&gt;</description></item><item><title>Teil 1: Strategien für bessere Ergebnisse mit RAG</title><link>https://aaron.de/posts/teil-1-strategien-fuer-bessere-ergebnisse-mit-retrieval-augmented-generation-rag/</link><pubDate>Wed, 27 Aug 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/teil-1-strategien-fuer-bessere-ergebnisse-mit-retrieval-augmented-generation-rag/</guid><description>&lt;p&gt;Retrieval Augmented Generation, kurz RAG, verbindet die Leistungsfähigkeit von Sprachmodellen mit dem spezifischen Wissen eines Unternehmens. Der Ansatz ermöglicht es, interne Dokumente und Daten gezielt in Antworten einzubeziehen, ohne die Hoheit über die eigenen Informationen zu verlieren. Damit wird RAG zunehmend als Schlüsseltechnologie gesehen, um Sprachmodelle sicher und datensouverän einzusetzen. In der Praxis zeigt sich jedoch schnell, dass eine einfache Vektorsuche in Kombination mit einem LLM nicht ausreicht, um wirklich konsistente und qualitativ hochwertige Ergebnisse zu erzielen. Um das Potenzial von RAG voll auszuschöpfen, sind zusätzliche Methoden und Optimierungen notwendig.&lt;/p&gt;</description></item><item><title>Fine-Tuning eines Llama-3.x-Modells via LoRA</title><link>https://aaron.de/posts/fine-tuning-eines-llama-3-x-modells-via-lora/</link><pubDate>Sun, 06 Jul 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/fine-tuning-eines-llama-3-x-modells-via-lora/</guid><description>&lt;h1 id="einleitung"&gt;Einleitung&lt;/h1&gt;
&lt;p&gt;Große Sprachmodelle (Large Language Models, LLMs) wie Llama 3.x werden in einem aufwendigen Vortrainingsprozess auf gewaltigen Textmengen trainiert. Dieser Prozess erfolgt typischerweise auf spezieller Hardware wie GPUs und TPUs, die für die parallele Berechnung großer neuronaler Netzwerke optimiert sind.&lt;/p&gt;
&lt;p&gt;Nach Abschluss des Vortrainings sind die Modellparameter eingefroren und können im Regelbetrieb nicht mehr direkt verändert werden. Das bedeutet, dass man das Modell nicht einfach &amp;ldquo;korrigieren&amp;rdquo; oder durch einfache Eingriffe gezielt umprogrammieren kann. Inhalte wie zum Beispiel Fakten über historische Persönlichkeiten sind nicht in einzelnen, gezielt ansprechbaren Neuronen gespeichert. Stattdessen sind solche Informationen statistisch verteilt über die Gesamtheit der Modellgewichte codiert. Das erschwert gezielte Änderungen erheblich, da es keine klar identifizierbaren Speicherorte für einzelne Fakten gibt.&lt;/p&gt;</description></item><item><title>Wie eine Ontologie die Antwortqualität von LLMs verbessert</title><link>https://aaron.de/posts/llms-und-ontologien-wie-eine-ontologie-die-antwortqualitaet-verbessert/</link><pubDate>Mon, 16 Jun 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/llms-und-ontologien-wie-eine-ontologie-die-antwortqualitaet-verbessert/</guid><description>&lt;h1 id="einleitung"&gt;Einleitung&lt;/h1&gt;
&lt;p&gt;Spätestens mit dem Aufkommen großer Sprachmodelle (LLMs) wie GPT stellt sich vielen die Frage, wie man solchen Modellen strukturierte, präzise Informationen zur Verfügung stellen kann. Denn obwohl LLMs in der Lage sind, Fragen sehr überzeugend zu beantworten, beruhen viele ihrer Antworten lediglich auf sprachstatistischen Wahrscheinlichkeiten, nicht auf logischem Schließen oder explizitem Faktenwissen. An dieser Stelle bietet der Einsatz einer Ontologie einen systematischen Mehrwert.&lt;/p&gt;
&lt;p&gt;Im folgenden Beitrag wird anhand einer fiktiven Mission im „Herr der Ringe“-Universum gezeigt, wie eine Ontologie ein LLM bei der Beantwortung komplexer Fragen unterstützen kann.&lt;/p&gt;</description></item><item><title>Unstructured.io Tutorial</title><link>https://aaron.de/posts/unstructured-io-tutorial/</link><pubDate>Sat, 14 Jun 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/unstructured-io-tutorial/</guid><description>&lt;h1 id="einleitung"&gt;Einleitung&lt;/h1&gt;
&lt;p&gt;Unstructured.io ist ein Open-Source-Framework zur strukturierten Aufbereitung unstrukturierter Dokumente wie PDFs, Word-Dateien, HTML-Seiten oder E-Mails. Ziel ist es, aus diesen heterogenen Formaten semantisch verwertbare Inhalte zu extrahieren, etwa Überschriften, Absätze, Tabellen oder Listen, und sie in ein einheitliches, maschinenlesbares Format zu überführen. Der Hauptanwendungsfall liegt in der Vorbereitung von Textdaten für nachgelagerte KI-Verarbeitung, insbesondere für Systeme mit Retrieval-Augmented Generation (RAG).&lt;/p&gt;
&lt;p&gt;Der typische Einsatz erfolgt im Rahmen von Dokumentenanalyse, Wissensmanagement oder zur Vorbereitung von Eingaben für Embedding-Modelle. Dabei kommen mehrere Verarbeitungsschritte zum Einsatz. Diese vier Schritte bilden den &lt;strong&gt;Kern der Unstructured.io-Pipeline&lt;/strong&gt; und werden bei jeder regulären Nutzung der Bibliothek durchlaufen.&lt;/p&gt;</description></item><item><title>RAG-Pipeline im Eigenbau</title><link>https://aaron.de/posts/rag-pipeline-im-eigenbau-pdf-gestuetzte-chat-abfragen/</link><pubDate>Mon, 09 Jun 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/rag-pipeline-im-eigenbau-pdf-gestuetzte-chat-abfragen/</guid><description>&lt;h1 id="einleitung"&gt;Einleitung&lt;/h1&gt;
&lt;p&gt;Retrieval Augmented Generation (RAG) ist ein Verfahren der natürlichen Sprachverarbeitung (NLP), bei dem ein Sprachmodell mit externem Wissen kombiniert wird, um bessere und präzisere Antworten zu erzeugen.&lt;br&gt;
Ein Sprachmodell wie GPT wird nicht nur auf seinem internen Wissen (Training) befragt, sondern erhält zusätzlich kontextbezogene Informationen aus einer externen Wissensquelle, z. B. einer Dokumentensammlung oder Datenbank.&lt;/p&gt;
&lt;p&gt;Der Beitrag erläutert den Aufbau und die Entwicklung einer RAG-Pipeline im Rahmen eines Lernprojekts. Ziel war es, ein System zu entwickeln, das den Inhalt eines PDF-Dokuments verarbeitet und es ermöglicht, in einem interaktiven Chat Fragen zu diesem Dokument zu stellen. Die Anwendung entstand aus dem Wunsch, die Funktionsweise und das Zusammenspiel der einzelnen Komponenten einer RAG-Anwendung praktisch nachzuvollziehen.&lt;/p&gt;</description></item><item><title>Linguistische Textanalyse: Eine hybride Pipeline mit Stanza, DeepSeek und Transformers + Spacy Vergleich</title><link>https://aaron.de/posts/linguistische-textanalyse-mit-stanza-deepseek/</link><pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/linguistische-textanalyse-mit-stanza-deepseek/</guid><description>&lt;h1 id="einleitung"&gt;Einleitung&lt;/h1&gt;
&lt;p&gt;Stanza ist eine Open Source NLP Bibliothek der Stanford University, die auf modernen neuronalen Netzen basiert. Sie ermöglicht die umfassende linguistische Analyse von Texten in über 70 Sprachen. Ziel von Stanza ist es, ein vollständiges Pipeline System bereitzustellen, das alle gängigen Verarbeitungsschritte umfasst: Tokenisierung, Wortartenbestimmung (POS), Lemmatisierung, syntaktische Analyse (Abhängigkeiten und Konstituenten) sowie Named Entity Recognition (NER).&lt;/p&gt;
&lt;p&gt;Stanza eignet sich sowohl für Forschungszwecke als auch für produktive Anwendungen, etwa bei der Textklassifikation, Informationsextraktion oder dem Vorverarbeiten von Texten für Retrieval Augmented Generation (RAG). Die Modelle sind vortrainiert, können aber auch feinjustiert werden. Intern basiert Stanza auf dem PyTorch Framework.&lt;/p&gt;</description></item><item><title>Model Context Protokoll (MCP)</title><link>https://aaron.de/posts/model-context-protokoll-mcp/</link><pubDate>Wed, 28 May 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/model-context-protokoll-mcp/</guid><description>&lt;p&gt;In klassischen Softwareanwendungen sind Abläufe fest vorgegeben. Funktionen werden in bestimmter Reihenfolge aufgerufen, Übergaben sind klar definiert, und Entscheidungen werden durch feste Regeln getroffen, die der Entwickler im Code verankert hat. Die Anwendung selbst trifft keine Entscheidungen, sie folgt nur einem starren Ablauf.&lt;/p&gt;
&lt;p&gt;Wenn man ein Sprachmodell wie GPT in ein System einbinden möchte, muss man normalerweise dafür sorgen, dass alle benötigten Informationen vorher beschafft und vorbereitet werden. Zum Beispiel: Wenn aktuelle Wetterdaten gebraucht werden, schreibt man eine Funktion, die eine API abfragt, die Antwort verarbeitet und den Text an das Modell weitergibt. Das Modell bekommt nur den fertigen Textausschnitt mit den Wetterdaten. Es weiß nicht, woher die Daten stammen, welche Funktion sie geliefert hat oder ob sie aktuell sind. Es trifft auch keine eigene Entscheidung darüber, wann eine bestimmte Funktion aufgerufen werden soll. Es antwortet einfach nur auf Basis des übergebenen Kontexts.&lt;/p&gt;</description></item><item><title>MCP-gesteuerter Workflow in n8n</title><link>https://aaron.de/posts/mcp-gesteuerter-workflow-in-n8n/</link><pubDate>Tue, 27 May 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/mcp-gesteuerter-workflow-in-n8n/</guid><description>&lt;p&gt;Dieser Beitrag beschreibt den Aufbau eines KI-gesteuerten Agentensystems in &lt;a href="https://n8n.io"&gt;n8n&lt;/a&gt;, das über das &lt;a href="https://github.com/modelcontextprotocol/servers"&gt;Model Context Protocol (MCP)&lt;/a&gt; externe Tools identifiziert, auswählt und ausführt.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/n8n_overview.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Zielsetzung&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ein Benutzer stellt eine natürliche Spracheingabe, z. B.: &amp;ldquo;Gib mir die 10 größten Städte in Deutschland. Absteigend nach der Fläche. Suche auch im Internet, um dein Ergebnis abzugleichen.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Der Agent erkennt die Absicht, prüft verfügbare Werkzeuge, entscheidet über eine Toolauswahl, führt bei Bedarf eine Websuche durch und generiert eine geeignete Antwort. Das zugrunde liegende Steuerungskonzept basiert auf MCP, einem Protokoll zur strukturierten Toolkommunikation in agentenbasierten Systemen.&lt;/p&gt;</description></item><item><title>RAGFlow Tutorial</title><link>https://aaron.de/posts/ragflow-tutorial/</link><pubDate>Tue, 27 May 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/ragflow-tutorial/</guid><description>&lt;p&gt;RAGFlow ist ein Framework zur strukturierten Umsetzung von Retrieval Augmented Generation (RAG)-Anwendungen. Es bietet eine modulare Architektur, in der einzelne Verarbeitungsschritte wie Dokumentenimport, Textaufbereitung, Vektorisierung, Indexierung und Antwortgenerierung getrennt konfiguriert und ausgeführt werden können.&lt;/p&gt;
&lt;h1 id="models"&gt;Models&lt;/h1&gt;
&lt;p&gt;Die Plattform unterstützt unterschiedliche Speicherlösungen für Vektordaten und erlaubt die Anbindung verschiedener LLMs. Die Liste der unterstützten LLM sind &lt;a href="https://ragflow.io/docs/dev/supported_models"&gt;hier&lt;/a&gt; zu finden.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/Supported_Models.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Spalte&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Bedeutung&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Provider&lt;/td&gt;
&lt;td&gt;Anbieter oder Quelle des Modells. Kann ein Cloud-Dienst (z.B. OpenAI) oder ein Modellentwickler (z.B. Cohere, BAAI) sein.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chat&lt;/td&gt;
&lt;td&gt;Unterstützt dialogorientierte Sprachmodelle, die für Konversation oder Antwortgenerierung verwendet werden.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Embedding&lt;/td&gt;
&lt;td&gt;Bietet Einbettungsmodelle zur Umwandlung von Texten in Vektoren für semantische Suche oder Klassifikation.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rerank&lt;/td&gt;
&lt;td&gt;Modelle zur Re-Rangierung bereits gefundener Treffer, um relevantere Ergebnisse weiter oben anzuzeigen.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Img2txt&lt;/td&gt;
&lt;td&gt;Modelle zur Bildbeschreibung: Wandeln ein Bild in einen beschreibenden Text um.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Speech2txt&lt;/td&gt;
&lt;td&gt;Modelle zur Umwandlung von gesprochener Sprache in geschriebenen Text (ASR - Automatic Speech Recognition).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TTS&lt;/td&gt;
&lt;td&gt;Text-to-Speech: Wandelt geschriebenen Text in synthetische Sprache um. In der Tabelle noch ohne Unterstützung.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;OpenAI stellt keine Unterstützung für die Funktion „Rerank“ bereit.&lt;/p&gt;</description></item><item><title>Hugging Face CLI Praxisleitfaden</title><link>https://aaron.de/posts/hugging-face-cli-praxisleitfaden/</link><pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/hugging-face-cli-praxisleitfaden/</guid><description>&lt;p&gt;Diese Anleitung basiert auf der Hugging Face CLI ab Version 0.34.4. In dieser Version wird die alte Syntax huggingface-cli durch den neuen Befehl hf ersetzt. Ich habe diese Gedankenstütze erstellt, um eine kurze und übersichtliche Referenz zur Hugging Face CLI zu haben. Statt in der offiziellen Dokumentation suchen zu müssen, finde ich hier die wichtigsten Befehle, Beschreibungen und Beispiele auf einen Blick.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Was ist Hugging Face?&lt;/strong&gt;&lt;br&gt;
Hugging Face ist eine Plattform für maschinelles Lernen. Im Mittelpunkt steht der Hugging Face Hub, ein öffentlicher und privater Speicherort für KI-Modelle, Datensätze und Anwendungen (Spaces). Entwicklerinnen und Entwickler können dort Modelle teilen, herunterladen und weiterverwenden. Neben dem Hub bietet Hugging Face auch Bibliotheken wie transformers, datasets und diffusers, die den praktischen Einsatz von KI-Modellen erleichtern. Der Hub dient damit sowohl als Marktplatz als auch als Infrastruktur für gemeinschaftliche Entwicklung.&lt;/p&gt;</description></item><item><title>ComfyUI Tutorial</title><link>https://aaron.de/posts/comfyui-tutorial/</link><pubDate>Thu, 15 May 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/comfyui-tutorial/</guid><description>&lt;p&gt;Die künstliche Intelligenz hat die Fähigkeit erlangt, aus reinen Textbeschreibungen detailreiche und komplexe Bilder zu erschaffen. Die technologische Grundlage hierfür bilden tiefgreifende KI Modelle, die als digitale Motoren für die Bilderzeugung fungieren. Sie übersetzen geschriebene Konzepte in visuelle Daten und generieren auf dieser Basis völlig neue Grafiken. Um die Bilderzeugung präzise zu steuern, benötigen Anwender eine passende Benutzeroberfläche. An dieser Stelle kommt ComfyUI ins Spiel. ComfyUI ist eine flexible und leistungsstarke grafische Oberfläche, die für die Arbeit mit einer Vielzahl von KI Modellen konzipiert wurde. Im Gegensatz zu anderen Programmen, die ihre Prozesse hinter einfachen Menüs verbergen, setzt ComfyUI auf einen modularen Ansatz mit Knoten. Jeder Schritt der Bilderzeugung, von der Modellwahl bis zum fertigen Bild, wird als einzelner Baustein dargestellt. Der Anwender verbindet diese Bausteine visuell miteinander und konstruiert so den gesamten Arbeitsablauf selbst. Diese Methode bietet Transparenz und Kontrolle über den gesamten Generierungsprozess und ermöglicht es Nutzern, die Funktionsweise der zugrundeliegenden KI bis ins kleinste Detail zu steuern.&lt;/p&gt;</description></item><item><title>Analyse unstrukturierter Dokumente mit "Unstructured"</title><link>https://aaron.de/posts/analyse-strukturierter-dokumente-mit-unstructured/</link><pubDate>Wed, 14 May 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/analyse-strukturierter-dokumente-mit-unstructured/</guid><description>&lt;p&gt;Im Rahmen dieses Tests wird das Open-Source-Framework &lt;a href="https://github.com/Unstructured-IO/unstructured"&gt;unstructured&lt;/a&gt; eingesetzt, um den Extraktionsprozess von Text aus strukturierten Dokumenten zu evaluieren. Ziel ist es, zu prüfen, inwieweit sich unstructured für den praktischen Einsatz in KI-basierten Informationssystemen eignet – insbesondere mit Blick auf die Textextraktion, semantische Aufbereitung (Chunking/Tokenisierung) und anschließende Embedding-Erzeugung für Vektor-basierte Retrieval-Systeme.&lt;/p&gt;
&lt;p&gt;Hier sieht man ein Beispiel einer PDF-Datei, die für die Analyse mit unstructured verwendet wurde.&lt;/p&gt;
&lt;p&gt;&lt;a href="pm-partnerschaft-stackit.pdf"&gt;pm-partnerschaft-stackit&lt;/a&gt;&lt;a href="pm-partnerschaft-stackit.pdf"&gt;Herunterladen&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Zur Ausführung der unstructured-Bibliothek wird das offizielle Docker-Image verwendet. Dieses enthält alle erforderlichen Abhängigkeiten (z. B. Tesseract, Poppler, Python-Bibliotheken) und ermöglicht eine sofortige Nutzung ohne lokale Python-Installation.&lt;/p&gt;</description></item><item><title>Digitale Einkaufsliste mit React &amp; Supabase</title><link>https://aaron.de/posts/digitale-einkaufsliste-mit-react-supabase/</link><pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/digitale-einkaufsliste-mit-react-supabase/</guid><description>&lt;p&gt;Ich habe dieses Projekt gestartet, um &lt;strong&gt;React praxisnah zu lernen&lt;/strong&gt; – und nicht nur Tutorials zu verfolgen. Dabei wollte ich ein realistisches Frontend-Szenario umsetzen, das typische Anforderungen wie Benutzerauthentifizierung, Datenverwaltung, Benutzerinteraktionen und dynamische UI-Komponenten beinhaltet.&lt;/p&gt;
&lt;p&gt;Anstatt ein eigenes Backend zu bauen, habe ich mich bewusst für &lt;strong&gt;Supabase&lt;/strong&gt; entschieden – eine Backend-as-a-Service-Plattform, die sich ideal für Lern- und Prototyping-Zwecke eignet. Dadurch konnte ich mich voll auf das &lt;strong&gt;React-Ökosystem&lt;/strong&gt; konzentrieren, inklusive Routing, Zustand, Komponentenstruktur und responsiver Oberfläche.&lt;/p&gt;</description></item><item><title>Emotionale Musikbewertung mit MindsDB und GPT-4 anhand von Spotify-Daten</title><link>https://aaron.de/posts/emotionale-musikbewertung-mit-mindsdb-und-gpt-4-anhand-von-spotify-daten/</link><pubDate>Tue, 29 Apr 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/emotionale-musikbewertung-mit-mindsdb-und-gpt-4-anhand-von-spotify-daten/</guid><description>&lt;p&gt;&lt;a href="https://mindsdb.com"&gt;MindsDB&lt;/a&gt; ist eine Open-Source-Plattform, die entwickelt wurde, um maschinelles Lernen, Zeitreihenanalysen und die Integration großer Sprachmodelle direkt in klassische Datenbank-Workflows zu ermöglichen. Die Plattform erlaubt es, KI-Funktionalität über einfache SQL-Abfragen zugänglich zu machen, ohne dass eine separate Machine-Learning-Infrastruktur notwendig ist.&lt;/p&gt;
&lt;p&gt;In diesem Beitrag wird eine der zahlreichen Funktionen von MindsDB vorgestellt: der Aufruf eines großen Sprachmodells (GPT-4) über ein vordefiniertes Template, das dynamisch mit Datenbankwerten befüllt wird. Ziel ist es, die emotionale Wirkung von Songs aus einem bestehenden Spotify-Datensatz automatisch bewerten zu lassen. Dabei wird lediglich ein Teil des gesamten Funktionsumfangs von MindsDB genutzt, um die grundlegende Arbeitsweise und das Zusammenspiel von Datenbank und LLM kennenzulernen.&lt;/p&gt;</description></item><item><title>Echtzeit-Gesichtsanimation für Metahumans mit Live Link Face in Unreal Engine 5</title><link>https://aaron.de/posts/echtzeit-gesichtsanimation-fuer-metahumans-mit-live-link-face-in-unreal-engine-5/</link><pubDate>Sun, 20 Apr 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/echtzeit-gesichtsanimation-fuer-metahumans-mit-live-link-face-in-unreal-engine-5/</guid><description>&lt;p&gt;Die Übertragung von Gesichtsausdrücken in Echtzeit auf digitale Charaktere ist ein wichtiger Bestandteil moderner Animations- und Visualisierungsprozesse. Mit der Live Link Face App von Epic Games und Unreal Engine 5 lassen sich Gesichtsbewegungen eines realen Menschen präzise auf einen digitalen Metahuman-Charakter übertragen. Voraussetzung dafür ist ein iPhone mit integrierter TrueDepth-Kamera, das über ein lokales Netzwerk mit dem Rechner verbunden wird, auf dem Unreal Engine läuft. In diesem Tutorial wird gezeigt, wie die Live Link Face App eingerichtet und mit der Engine verbunden wird, wie der Metahuman korrekt vorbereitet wird und wie schließlich die Gesichtsdaten live übertragen werden. Ziel ist es, eine funktionierende Echtzeitverbindung herzustellen, bei der sich der Metahuman synchron zur Mimik der realen Person bewegt.&lt;/p&gt;</description></item><item><title>Omniverse: Audio2Face Tutorial</title><link>https://aaron.de/posts/omniverse-audio2face-tutorial/</link><pubDate>Sat, 12 Apr 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/omniverse-audio2face-tutorial/</guid><description>&lt;p&gt;Audio2Face ist ein KI-gestütztes Tool innerhalb von NVIDIA Omniverse, das speziell dafür entwickelt wurde, realistische Gesichtsanimationen allein auf Basis von Audio zu erzeugen. Es gehört zur Omniverse-Plattform, die eine Echtzeit-Kollaborations- und Simulationsumgebung für 3D-Workflows bietet. Audio2Face nutzt ein neuronales Netzwerk, um gesprochene Sprache automatisch in lebendige Mimik und Gesichtsbewegungen umzuwandeln. Typischerweise verwendet man Audio2Face, um Charaktere in Spielen, Filmen oder digitalen Avataren sprechen zu lassen, ohne aufwendige Keyframe-Animationen. Die erzeugten Bewegungen können entweder direkt verwendet oder auf eigene 3D-Charaktere übertragen werden, was besonders für virtuelle Produktionen, digitale Zwillinge oder interaktive Anwendungen interessant ist.&lt;/p&gt;</description></item><item><title>KI-gestützter Event-Agent für Veranstaltungen</title><link>https://aaron.de/posts/ki-gestuetzter-event-agent-fuer-veranstaltungen/</link><pubDate>Fri, 11 Apr 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/ki-gestuetzter-event-agent-fuer-veranstaltungen/</guid><description>&lt;p&gt;In diesem Projekt habe ich einen &lt;strong&gt;KI-Agenten entwickelt&lt;/strong&gt;, der automatisch Veranstaltungen aus dem Raum NRW analysiert und nach persönlichen Kriterien filtert. Ziel war es, aus einer großen Menge Events nur diejenigen herauszufiltern, die wirklich relevant sind – basierend auf einem individuell definierten Prompt.&lt;/p&gt;
&lt;p&gt;Dieses Bild zeigt die Liste von über 350 Events, die an einem einzigen Tag in Düsseldorf stattfinden. In ganz NRW sind es an einem Tag mehrere tausend Veranstaltungen.&lt;/p&gt;</description></item><item><title>LLMs sind kein Allheilmittel: Praxistest zur Musik-Klassifikation anhand von Metadaten</title><link>https://aaron.de/posts/llms-sind-kein-allheilmittel-praxistest-zur-musik-klassifikation-anhand-von-metadaten/</link><pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/llms-sind-kein-allheilmittel-praxistest-zur-musik-klassifikation-anhand-von-metadaten/</guid><description>&lt;p&gt;Die Fragestellung war, ob aktuelle Large Language Models (LLMs) wie GPT-4 oder DeepSeek in der Lage sind, Musikstücke – speziell Salsa-Songs – anhand von Titel, Künstler, Songtext und Metadaten automatisch und zuverlässig in „Salsa Cubana“ oder „Salsa Línea“ zu klassifizieren. Es war bekannt, dass die Informationslage (Metadaten, Genre-Tags, Lyrics) lückenhaft und teilweise uneinheitlich ist. Der Test diente explizit dazu, die praktischen Grenzen heutiger LLMs in diesem Kontext zu ermitteln.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/Kdiff_LLMs.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;</description></item><item><title>Omniverse Tutorial</title><link>https://aaron.de/posts/omniverse-tutorial/</link><pubDate>Thu, 27 Mar 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/omniverse-tutorial/</guid><description>&lt;h3 id="was-ist-omniverse"&gt;&lt;strong&gt;Was ist Omniverse?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Omniverse ist eine Plattform von NVIDIA, mit der man virtuelle 3D-Welten erstellen, verbinden und simulieren kann – und das in Echtzeit. Omniverse ist eine offene Plattform für Entwickler, Designer, Ingenieure, Forscher und Kreative, um:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;3D-Anwendungen miteinander zu verbinden (z. B. Blender, Maya, Unreal Engine)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Gemeinsam in einer einzigen Szene zu arbeiten – live und gleichzeitig.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Physikalisch realistische Simulationen und KI-gesteuerte Anwendungen zu erstellen.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="wofür-wird-omniverse-verwendet"&gt;&lt;strong&gt;Wofür wird Omniverse verwendet?&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Design, Visualisierung &amp;amp; Simulation von Objekten wie beispielsweise Fahrzeugen in Echtzeit.&lt;/p&gt;</description></item><item><title>Wan 2.1 mit ComfyUI inkl. GPU Support lokal einrichten</title><link>https://aaron.de/posts/wan-2-1-mit-comfyui-inkl-gpu-support-lokal-einrichten/</link><pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/wan-2-1-mit-comfyui-inkl-gpu-support-lokal-einrichten/</guid><description>&lt;p&gt;ComfyUI ist eine node-basierte Benutzeroberfläche zur Steuerung und Modifikation von KI-Modellen zur Bild- und Videoerstellung. &lt;strong&gt;Wan 2.1&lt;/strong&gt; ist ein &lt;strong&gt;Text-to-Video-Modell (T2V)&lt;/strong&gt;, das speziell für die Generierung von Videos auf Basis von Texteingaben entwickelt wurde.&lt;/p&gt;
&lt;p&gt;Diese Anleitung beschreibt Schritt für Schritt, wie &lt;strong&gt;ComfyUI mit Wan 2.1&lt;/strong&gt; lokal eingerichtet wird. Jeder Abschnitt erklärt die benötigten Komponenten, warum sie notwendig sind und wie sie korrekt installiert werden. Diese Anleitung setzt &lt;strong&gt;Python 10&lt;/strong&gt; und eine GPU mit &lt;strong&gt;CUDA-Support&lt;/strong&gt; voraus.&lt;/p&gt;</description></item><item><title>Prompt Decorators: KI-Antworten gezielt steuern</title><link>https://aaron.de/posts/prompt-decorators-ki-antworten-gezielt-steuern/</link><pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/prompt-decorators-ki-antworten-gezielt-steuern/</guid><description>&lt;p&gt;KI-Modelle liefern oft unstrukturierte oder unpräzise Antworten. Wer bessere Ergebnisse möchte, muss seine Prompts entsprechend anpassen. Eine Möglichkeit, dies effizient zu tun, sind &lt;strong&gt;Prompt Decorators&lt;/strong&gt; – klare Anweisungen am Anfang eines Prompts, die das Antwortverhalten der KI steuern.&lt;/p&gt;
&lt;p&gt;In diesem Beitrag zeige ich, wie man der KI beibringt, diese Decorators zu verstehen und wie man sie anschließend nutzt.&lt;/p&gt;
&lt;h3 id="prompt-decorators-der-ki-erklären"&gt;&lt;strong&gt;Prompt Decorators der KI erklären&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Die KI erhält eine klare Definition der Decorators z.B. „+++StrukturierteAntwort“, damit sie deren Bedeutung versteht. Die Anweisung, sie in zukünftigen Antworten zu berücksichtigen, sorgt dafür, dass sie nicht nur für eine einzelne Frage gelten. Falls die KI keinen Langzeitspeicher hat, muss diese Einführung bei jeder neuen Sitzung wiederholt werden.&lt;/p&gt;</description></item><item><title>KI-Agent Demo: Erweiterte Spam-Erkennung via ChatGPT</title><link>https://aaron.de/posts/ki-agent-demo-erweiterte-spam-erkennung-via-chatgpt/</link><pubDate>Tue, 04 Feb 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/ki-agent-demo-erweiterte-spam-erkennung-via-chatgpt/</guid><description>&lt;p&gt;In diesem Projekt habe ich eine Thunderbird-Erweiterung entwickelt, die ChatGPT zur erweiterten Spam-Erkennung nutzt. Eingehende E-Mails werden automatisch analysiert und anhand verschiedener Kriterien klassifiziert. Ein lokaler Flask-Server übernimmt die Kommunikation mit ChatGPT und bewertet, ob eine Nachricht als Spam einzustufen ist. Die Umsetzung dient als Demo, um die Möglichkeiten einer KI-gestützten Filterung in Thunderbird zu erproben.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/grafik-9.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ablauf&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Sobald Thunderbird eine neue E-Mail empfängt, wird die Erweiterung aktiv. Die Nachricht wird abgefangen, bevor sie vom Nutzer gelesen wird. Die Erweiterung extrahiert den Betreff, den Absender und den E-Mail-Text.&lt;/p&gt;</description></item><item><title>Ollama inkl. Modelle mit NVIDIA GPU-Unterstützung unter Docker offline ausführen + OpenWebUI</title><link>https://aaron.de/posts/ollama-inkl-modell-mit-nvidia-gpu-unterstuetzung-unter-docker-und-win-11-ausfuehren-openwebui/</link><pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/ollama-inkl-modell-mit-nvidia-gpu-unterstuetzung-unter-docker-und-win-11-ausfuehren-openwebui/</guid><description>&lt;p&gt;Hier wurde Ollama mit NVIDIA-GPU-Unterstützung unter Docker auf einem Windows-11-System ausgeführt. Dabei kam OpenWebUI als benutzerfreundliche Oberfläche zum Einsatz, um lokal KI-Modelle zu betreiben. OpenWebUI bietet den Vorteil, dass Nutzer einfach zwischen verschiedenen Modellen wechseln, Anfragen verwalten und die Nutzung der KI komfortabel über eine grafische Oberfläche steuern können. Zudem ermöglicht es eine bessere Übersicht über laufende Instanzen und erleichtert das Testen unterschiedlicher Modelle ohne manuelle Konfigurationsänderungen.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/grafik-2.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h3 id="wsl-2-installieren"&gt;WSL 2 Installieren&lt;/h3&gt;
&lt;h3 id="nvidia-cuda-treiber-installieren"&gt;&lt;strong&gt;NVIDIA CUDA-Treiber installieren&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Damit Docker-Container auf die GPU zugreifen können, wird die NVIDIA Container Runtime benötigt. Dies ermöglicht eine schnellere und effizientere Berechnung von KI-Modellen, da rechenintensive Prozesse nicht von der CPU, sondern von der leistungsfähigeren GPU übernommen werden.&lt;br&gt;
&lt;a href="https://developer.nvidia.com/cuda/wsl"&gt;https://developer.nvidia.com/cuda/wsl&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Neuronales Netzwerk mit MNIST und TensorFlow</title><link>https://aaron.de/posts/neuronales-netzwerk-mit-mnist-und-tensorflow/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/neuronales-netzwerk-mit-mnist-und-tensorflow/</guid><description>&lt;p&gt;Dieser Code zeigt, wie ein künstliches neuronales Netzwerk mit dem MNIST-Datensatz trainiert wird, um handgeschriebene Ziffern (0-9) zu klassifizieren. Ziel ist es, dass das Modell anhand der Bilddaten vorhersagen kann, welche Ziffer abgebildet ist.&lt;/p&gt;
&lt;p&gt;Dies wird erreicht durch:&lt;br&gt;
1. Laden und Vorverarbeiten der MNIST-Bilddaten.&lt;br&gt;
2. Erstellen eines neuronalen Netzwerks mit mehreren Schichten (Layers).&lt;br&gt;
3. Trainieren des Netzwerks mit Trainingsdaten.&lt;br&gt;
4. Evaluieren der Leistung des Modells auf Testdaten.&lt;br&gt;
5. Testen des Modells auf neuen Beispieldaten.&lt;/p&gt;</description></item><item><title>Ollama mit llama3.2/3.3/DeepSeekv3 lokal verwenden + REST Aufruf.</title><link>https://aaron.de/posts/ollama-mit-llama3-2-3-3-lokal-installieren/</link><pubDate>Sat, 18 Jan 2025 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/ollama-mit-llama3-2-3-3-lokal-installieren/</guid><description>&lt;ol&gt;
&lt;li&gt;Ollama LLM-Laufzeitumgebung &lt;a href="https://ollama.com/"&gt;downloaden&lt;/a&gt; und installieren. Nach der Installation kann der Server unter &lt;a href="http://127.0.0.1:11434/"&gt;http://127.0.0.1:11434/&lt;/a&gt; aufgerufen werden.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;img src="images/grafik.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;3. Liste der installierten Modelle anzeigen lassen. Die Liste sollte leer sein.&lt;/p&gt;
&lt;p&gt;ollama list&lt;/p&gt;
&lt;p&gt;4. llama3.2 LLM und DeepSeekv3 (404 GB HD &amp;amp; 413GB RAM) downloaden.&lt;/p&gt;
&lt;p&gt;ollama pull llama3.2 ollama pull deepseek-v3&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/Ollama_003.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Auf der Webseite von Meta sind die aktuellen Versionen des LLMs zu finden.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/Ollama_006.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;5. llama3 starten.&lt;/p&gt;
&lt;p&gt;ollama run llama3.2&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/Ollama_004.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Das Sprachmodell lässt sich mit &amp;ldquo;Ctrl + d&amp;rdquo; oder mit dem Kommando &amp;ldquo;/bye&amp;rdquo; anhalten.&lt;/p&gt;</description></item><item><title>Spring AI / OpenAI Tutorial</title><link>https://aaron.de/posts/spring-ai-openai-tutorial/</link><pubDate>Sun, 01 Dec 2024 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/spring-ai-openai-tutorial/</guid><description>&lt;h1 id="frage-via-spring-ai-an-openai-senden-und-die-antwort-anzeigen"&gt;Frage via Spring AI an OpenAI senden und die Antwort anzeigen&lt;/h1&gt;
&lt;p&gt;OpenAI Key erstellen&lt;br&gt;
&lt;a href="https://platform.openai.com/settings/organization/api-keys"&gt;https://platform.openai.com/settings/organization/api-keys&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Anschließend den Key als Umgebungsvariable setzen: OPENAI_API_KEY&lt;/p&gt;
&lt;p&gt;Neues Spring Boot Projekt erstellen:&lt;br&gt;
&lt;a href="https://start.spring.io/"&gt;https://start.spring.io/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/grafik-7.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Innerhalb der Spring Boot Anwendung bzw. der &amp;ldquo;application.properties&amp;rdquo; Datei den OpenAI Key bzw. Umgebungsvariable (OPENAI_API_KEY) referenzieren.&lt;/p&gt;
&lt;p&gt;Nachdem wir das Interface und die Klassen erstellt haben, sollte die Projektstruktur wie folgt aussehen:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/grafik-9.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Nachdem Ausführen des Unit-Tests, sollte auf die Frage &amp;ldquo;Who would win in a fight between Superman and Chuck Norris?&amp;rdquo; die Antwort angezeigt werden. In diesem Fall:&lt;/p&gt;</description></item><item><title>Whisper: Automatische Transkription von Videos in Text</title><link>https://aaron.de/posts/whisper-automatische-transkription-von-videos-in-text/</link><pubDate>Wed, 13 Nov 2024 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/whisper-automatische-transkription-von-videos-in-text/</guid><description>&lt;p&gt;In diesem Beitrag erkläre ich dir, wie du &lt;strong&gt;Whisper&lt;/strong&gt;, ein KI-basiertes Tool von OpenAI, zur automatischen Transkription von Videos verwenden kannst. Whisper ist in der Lage, gesprochene Sprache in verschiedenen Sprachen – einschließlich Deutsch – präzise in Text umzuwandeln. Damit eignet es sich hervorragend, um z. B. Interviews, Vorträge oder persönliche Videos zu transkribieren.&lt;/p&gt;
&lt;h1 id="python-310-installieren"&gt;&lt;strong&gt;Python 3.10 installieren&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Whisper setzt die Programmiersprache Python voraus und benötigt eine Version zwischen 3.7 und 3.10. In dieser Anleitung verwenden wir Python 3.10, um Kompatibilitätsprobleme zu vermeiden.&lt;/p&gt;</description></item><item><title>DNS über HTTPS (DoH) innerhalb von Firefox einstellen</title><link>https://aaron.de/posts/dns-ueber-https-doh-innerhalb-von-firefox-einstellen/</link><pubDate>Wed, 30 Oct 2024 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/dns-ueber-https-doh-innerhalb-von-firefox-einstellen/</guid><description>&lt;p&gt;Erweiterte Firefox Einstellungen aufrufen: &lt;strong&gt;about:config&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;network.trr.mode&lt;/strong&gt; von 0 auf &lt;strong&gt;2&lt;/strong&gt; umstellen.&lt;br&gt;
&lt;strong&gt;network.trr.uri&lt;/strong&gt; auf &lt;strong&gt;&lt;a href="https://mozilla.cloudflare-dns.com/dns-query"&gt;https://mozilla.cloudflare-dns.com/dns-query&lt;/a&gt;&lt;/strong&gt; umstellen.&lt;/p&gt;
&lt;p&gt;network.trr.mode ist eine Konfigurationseinstellung in Firefox, die die Verwendung von DNS over HTTPS (DoH) steuert. TRR steht für Trusted Recursive Resolver und bezieht sich auf die Verwendung von DoH, um DNS-Anfragen über eine verschlüsselte HTTPS-Verbindung zu senden, anstatt über herkömmliche, unverschlüsselte DNS-Abfragen.&lt;/p&gt;
&lt;p&gt;0 – DoH ist deaktiviert:&lt;br&gt;
Firefox verwendet ausschließlich das normale, unverschlüsselte DNS (über UDP oder TCP) und schickt keine DNS-Anfragen über HTTPS.&lt;/p&gt;</description></item><item><title>Embedding via ChromaDB Vektordatenbank</title><link>https://aaron.de/posts/embedding-via-chromadb-vektordatenbank/</link><pubDate>Fri, 26 Jul 2024 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/embedding-via-chromadb-vektordatenbank/</guid><description>&lt;p&gt;Dieser Blogbeitrag behandelt das Konzept von Embeddings und Vektordatenbanken. Dabei wird zunächst erklärt, was Embeddings sind und wie sie im Bereich des Natural Language Processing (NLP) genutzt werden. Anschließend folgt eine Erklärung der Vektoren in einem Raum mit drei Koordinaten und deren Erweiterung auf mehrdimensionale Vektoren. Schließlich wird ChromaDB vorgestellt, eine spezialisierte Vektordatenbank.&lt;/p&gt;
&lt;h1 id="was-ist-ein-embedding"&gt;Was ist ein Embedding?&lt;/h1&gt;
&lt;p&gt;Ein &lt;strong&gt;Embedding&lt;/strong&gt; ist eine Technik im Bereich des maschinellen Lernens und der Datenverarbeitung, die darauf abzielt, Objekte wie Wörter, Sätze oder Dokumente in einen kontinuierlichen Vektorraum zu transformieren. In diesem Vektorraum sind ähnliche Objekte durch ähnliche Vektoren repräsentiert, was bedeutet, dass sie nahe beieinander liegen. Embeddings werden häufig verwendet, um die semantische Bedeutung von Texten zu erfassen und zu analysieren.&lt;/p&gt;</description></item><item><title>Chatbot UI via Streamlit</title><link>https://aaron.de/posts/chatbot-ui-via-streamlit/</link><pubDate>Sat, 20 Jul 2024 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/chatbot-ui-via-streamlit/</guid><description>&lt;p&gt;Anfragen 1:1 via &lt;a href="https://streamlit.io/"&gt;Streamlit&lt;/a&gt; an ChatGPT weiterleiten und die Antwort anzeigen.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/grafik-6.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;streamlit run ChatUI.py&lt;/p&gt;</description></item><item><title>LangChain &amp; ChatGPT</title><link>https://aaron.de/posts/langchain-chatgpt-tutorial/</link><pubDate>Thu, 18 Jul 2024 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/langchain-chatgpt-tutorial/</guid><description>&lt;h1 id="sende-nachricht-via-langchain-an-chatgpt"&gt;&lt;strong&gt;Sende Nachricht via LangChain an ChatGPT&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Hier senden wir eine Nachricht via LangChain an ChatGPT und geben die Antwort aus.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="mit"&gt;&lt;strong&gt;Mit &amp;ldquo;chain&amp;rdquo; eine Verkettung vornehmen&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Benutze &amp;ldquo;chain&amp;rdquo; um das Model und den Parsen miteinander zu verketten.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="template-prompts"&gt;&lt;strong&gt;Template Prompts&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Die Prompts mit einem Template vorbereiten.&lt;/p&gt;
&lt;p&gt;Verwende das Template:&lt;/p&gt;
&lt;p&gt;Die Zielsprache wird ausgelagert:&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="weitere-verkettungen"&gt;&lt;strong&gt;Weitere Verkettungen&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Verkette das Template mit model &amp;amp; parser:&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="server-via-fastapi--rest-endpoint"&gt;&lt;strong&gt;Server via FastAPI &amp;amp; REST Endpoint&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;Erstelle via FastAPI einen Server. Der Server lädt die Anwendung (app.py), nimmt die REST Anfrage entgegen und gibt die Übersetzung aus:&lt;/p&gt;</description></item><item><title>Elastic Stack (Filebeat, Logstash, Elasticearch, Kibana) Tutorial</title><link>https://aaron.de/posts/filebeat-logstash-tutorial/</link><pubDate>Mon, 18 Jul 2022 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/filebeat-logstash-tutorial/</guid><description>&lt;p&gt;&lt;strong&gt;Logstash&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Logstash is an Event Processing Framework. With Logstach you can import data from different kind of input frameworks and sources. In the next step you can filter an modify the data and in the last step you can export the data to different kind of formats and frameworks e.g. you can read the data from a framework like Beats and forward the data to Elasticsearch for storage and further processing. Within Logstash you can process, filter and map the different input and output formats:&lt;/p&gt;</description></item><item><title>Turn on/off Elgato Key Light via Windows shortcut/button</title><link>https://aaron.de/posts/turn-on-off-elgato-key-light-via-windows-shortcut-button/</link><pubDate>Fri, 27 May 2022 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/turn-on-off-elgato-key-light-via-windows-shortcut-button/</guid><description>&lt;p&gt;Search for the &lt;strong&gt;IP address&lt;/strong&gt; of your Key Light via &lt;a href="https://www.nirsoft.net/utils/wireless_network_watcher.html"&gt;Wireless Network Watcher&lt;/a&gt; e.g. 192.168.2.227&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/WirelessNetworkWatcher.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Your Key Light has a build in web server listening on port 9123 e.g. 192.168.2.227:9123&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/ElgatoWebserver.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Send a &lt;strong&gt;GET&lt;/strong&gt; request e.g. via &lt;a href="https://www.postman.com/"&gt;Postman&lt;/a&gt; to the following endpoint to get more information about your Key Light: http://192.168.2.227:9123**/elgato/lights**&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/KeyLight_Postman.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Turn on the light by using the following &lt;strong&gt;PUT&lt;/strong&gt; request. You need to set the &amp;lsquo;on&amp;rsquo; value to &amp;lsquo;1&amp;rsquo; instead of &amp;lsquo;0&amp;rsquo;.&lt;/p&gt;</description></item><item><title>Fotografie Grundlagen + scharfe Langzeitbelichtung- &amp; Landschaftsaufnahmen</title><link>https://aaron.de/posts/fotografie-grundlagen-scharfe-langzeitbelichtungsaufnahmen-scharfe-landschaftsaufnahmen/</link><pubDate>Sat, 29 Jan 2022 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/fotografie-grundlagen-scharfe-langzeitbelichtungsaufnahmen-scharfe-landschaftsaufnahmen/</guid><description>&lt;figure&gt;
&lt;p&gt;
&lt;img src="images/13591624245_30ba853a7f_o.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;figcaption&gt;
&lt;p&gt;Bessere Qualität: &lt;a href="https://www.flickr.com/photos/aaron_kreis/13591624245/"&gt;https://www.flickr.com/photos/aaron_kreis/13591624245/&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
&lt;p&gt;
&lt;img src="images/35959541982_b61a823d14_o.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;figcaption&gt;
&lt;p&gt;Bessere Qualität: &lt;a href="https://www.flickr.com/photos/aaron_kreis/35959541982/"&gt;https://www.flickr.com/photos/aaron_kreis/35959541982/&lt;/a&gt;&lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Um gestochen scharfe Langzeitbelichtungsaufnahmen zu erstellen, muss man einige Grundbegriffe in der Fotografie kennen und seine Kamera entsprechend einstellen bzw. konfigurieren. Ich erkläre erst einmal die Begriffe ganz oberflächlich und gehe später auf die Wechselwirkung der Begriffe ein z.B. welchen Einfluss hat der ISO-Wert auf die Belichtungszeit etc.&lt;br&gt;
Wer Bilder wie oben abgebildet selber erstellen möchte, sollte die folgenden Grundbegriffe und deren Abhängigkeiten zueinander kennen.&lt;/p&gt;</description></item><item><title>Angular &amp; Cumulocity IoT Plattform</title><link>https://aaron.de/posts/angular-cumulocity-iot/</link><pubDate>Sat, 27 Apr 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/angular-cumulocity-iot/</guid><description>&lt;p&gt;Die folgenden Themen werden hier beschrieben:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installation der Cumulocity IoT Plattform (C8Y) CLI&lt;/li&gt;
&lt;li&gt;Projekt Erstellung via C8Y CLI&lt;/li&gt;
&lt;li&gt;Erstellung von Komponenten&lt;/li&gt;
&lt;li&gt;Erstellung einer Navigation (Routing)&lt;/li&gt;
&lt;li&gt;Custom Branding &amp;amp; Verwendung von Bootstrap 4 statt 3 (default)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Zunächst einmal benötigen wir die Cumulocity (C8Y) Angular CLI (Command Line Interface). Die CLI können wir wie folgt installieren:&lt;br&gt;
&lt;strong&gt;npm install -g @c8y/cli&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Anhand der C8Y CLI kann ein neues Projekt wie folgt erstellt werden:&lt;br&gt;
&lt;strong&gt;c8ycli new myApp&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Angular Tutorial</title><link>https://aaron.de/posts/angular-tutorial/</link><pubDate>Sat, 13 Apr 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/angular-tutorial/</guid><description>&lt;p&gt;Das Tutorial zeigt, wie die folgende Gästebuch Anwendung realisiert werden kann:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/screen1.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/bootstrap_page_2.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Die folgenden Anwendungen werden benötigt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nodejs.org/en/"&gt;Node.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;npm&lt;/li&gt;
&lt;li&gt;&lt;a href="https://angular.io/cli"&gt;Angular CLI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getbootstrap.com/"&gt;Bootstrap&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Installation von Angular CLI&lt;br&gt;
&lt;strong&gt;npm install -g @angular/cli&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Neues Projekt (Gästebuch) generieren&lt;br&gt;
&lt;strong&gt;ng new guestbook&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/create_first_project.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/create_first_project_2.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Installation der Bootstrap Bibliothek via &amp;rsquo;npm&amp;rsquo; Paketmanager:&lt;br&gt;
&lt;strong&gt;npm install &amp;ndash;save bootstrap&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Developer Server starten, um die Anwendung zu testen:&lt;br&gt;
&lt;strong&gt;ng serve&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Die Anwendung ist anschließend unter der folgenden Adresse erreichbar:&lt;br&gt;
&lt;a href="http://localhost:4200/"&gt;http://localhost:4200/&lt;/a&gt;&lt;/p&gt;</description></item><item><title>MongoDB Tutorial</title><link>https://aaron.de/posts/mongodb-tutorial/</link><pubDate>Sun, 31 Mar 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/mongodb-tutorial/</guid><description>&lt;p&gt;MongoDB (abgeleitet vom engl. humongous, „gigantisch“) ist eine dokumentenorientierte NoSQL-Datenbank, die in der Programmiersprache C++ geschrieben ist. Da die Datenbank dokumentenorientiert ist, kann sie Sammlungen von JSON-ähnlichen Dokumenten verwalten. So können viele Anwendungen Daten auf natürlichere Weise modellieren, da die Daten zwar in komplexen Hierarchien verschachtelt werden können, dabei aber immer abfragbar und indizierbar bleiben. [Wikipedia]&lt;/p&gt;
&lt;p&gt;Mit dem folgenden Befehl kann der MongoDB Server gestartet werden. Jedoch muss der folgende Ordner zunächst einmal anlegelgt werden: C:\data\db. Hier werden die DB Daten gespeichert.&lt;br&gt;
mongod&lt;/p&gt;</description></item><item><title>OAuth 2.0 Prozess (high level)</title><link>https://aaron.de/posts/oauth-2-0-prozess-high-level/</link><pubDate>Thu, 21 Mar 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/oauth-2-0-prozess-high-level/</guid><description>&lt;p&gt;Das erste Bild zeigt, wie ein Anwender mit seinem Device über eine mobile Anwendung z.B. E-Mail Programm von einem unbekannten Unternehmen die E-Mails (Resources) von einem z.B. Google Server (Resource Server) abfragen möchte. Für das Vorhaben muss der Anwender innerhalb der mobilen Anwendung seine Google Zugangsdaten eingeben. Jedoch ist das Ganze mit gewissen Risiken verbunden, da a) das E-Mail Programm das Passwort speichern kann und b) die Anwendung das Passwort verwenden kann, um z.B. auf andere Google Dienste zuzugreifen.&lt;/p&gt;</description></item><item><title>JMeter Tutorial - Teil 1</title><link>https://aaron.de/posts/jmeter-tutorial-teil-1/</link><pubDate>Wed, 13 Feb 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/jmeter-tutorial-teil-1/</guid><description>&lt;p&gt;&lt;a href="https://jmeter.apache.org/download_jmeter.cgi"&gt;Download&lt;/a&gt; JMeter&lt;/p&gt;
&lt;p&gt;Start JMeter:&lt;br&gt;
C:&lt;path&gt;\apache-jmeter-5.1.1\bin\ApacheJMeter.jar&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTTP(S) Test Script Recorder&lt;/strong&gt;&lt;br&gt;
Um mit JMeter eine Webseite auf Performance zu testen, müssen wir den Workflow (request/response) zunächst einmal aufnehmen. Die Aufnahme des Workflows bei einer HTTPS Verbindung wird wie folgt vorgenommen:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/001_test_script.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;JMeter stelle ein Proxy Server zur Verfügung, der in der Standardeinstellung auf den Port 8888 hört.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/003_jm_setup1.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Da wir uns nicht für die Grafiken, CSS Datein etc. interessieren, schließen wir diese aus:&lt;/p&gt;</description></item><item><title>Alexa Skill &amp; AWS Lambda &amp; npm Pakete &amp; Cumulocity</title><link>https://aaron.de/posts/alexa-skill-aws-lambda/</link><pubDate>Wed, 30 Jan 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/alexa-skill-aws-lambda/</guid><description>&lt;p&gt;Das folgende Beispiel zeigt die Erstellung einer einfachen Alexa Anwendung (Skill) mit Hilfe von &amp;lsquo;Alexa Developer Console&amp;rsquo; und &amp;lsquo;AWS Lambda&amp;rsquo;.&lt;/p&gt;
&lt;h2 id="alexa-developer-console"&gt;Alexa Developer Console&lt;/h2&gt;
&lt;p&gt;
&lt;img src="images/03_overview.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Die &amp;lsquo;Alexa Developer Console&amp;rsquo; hilft uns dabei, das sogenannte &amp;lsquo;Interaction Model&amp;rsquo; zu erstellen. Dieses Modell dient dazu, die gewünschte Anwendung zu beschreiben und die Sätze und Parameter zu definieren, worauf Alexa später reagieren sollte. Die Programmierung der Logik wird NICHT in der Developer Console vorgenommen sondern in AWS Lambda.&lt;/p&gt;</description></item><item><title>IBM Cloud &amp; Node-RED</title><link>https://aaron.de/posts/ibm-cloud-node-red/</link><pubDate>Sun, 27 Jan 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/ibm-cloud-node-red/</guid><description>&lt;p&gt;Zielsetzung&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Einrichtung des Node-RED Editors innerhalb der IBM Cloud&lt;/li&gt;
&lt;li&gt;Das Versenden von Nachrichten via MQTT an ein Node-RED MQTT-Node&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Den IBM Cloud Zugang könnt Ihr unter der folgenden URL beantragen: &lt;a href="https://www.ibm.com/cloud-computing/bluemix/de"&gt;IBM Cloud&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Anschließend kann hier eine neue &amp;lsquo;Ressource&amp;rsquo; erstellt werden.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/IBMCloud_01.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Innerhalb des Kataloges werden uns diverse Cloud Ressourcen (Anwendungen) zur Verfügung gestellt.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/IBM-Katalog.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Wir wählen Node-RED aus. Diese Anwendung stellt uns den Node-RED Editor innerhalb der IBM Cloud zur Verfügung.&lt;/p&gt;</description></item><item><title>MQTT + Cumulocity IoT Plattform</title><link>https://aaron.de/posts/mqtt-cumulocity-iot-plattform/</link><pubDate>Sat, 26 Jan 2019 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/mqtt-cumulocity-iot-plattform/</guid><description>&lt;h2 id="mqtt-zusammenfassung-quelle-wikipedia"&gt;MQTT Zusammenfassung [Quelle: &lt;a href="https://de.wikipedia.org/wiki/MQTT"&gt;Wikipedia&lt;/a&gt;]&lt;/h2&gt;
&lt;p&gt;MQTT (Message Queuing Telemetry Transport) ist ein offenes Nachrichtenprotokoll für Machine-to-Machine-Kommunikation (M2M), das die Übertragung von Telemetriedaten in Form von Nachrichten zwischen Geräten z.B. Sensoren ermöglicht.&lt;br&gt;
Die Internet Assigned Numbers Authority (IANA) reserviert für MQTT die Ports 1883 und 8883. MQTT-Nachrichten können mit dem TLS-Protokoll verschlüsselt werden.&lt;br&gt;
Die MQTT-Spezifikation unterscheidet TCP/IP-basierte und Nicht-TCP/IP-Netzwerke.&lt;br&gt;
MQTT ist ein Client-Server-Protokoll. Clients senden dem Server (“Broker”) nach Verbindungsaufbau Nachrichten mit einem Topic, welches die Nachricht hierarchisch einstuft; zum Beispiel Küche/Kühlschrank/Temperatur oder Auto/Rad/3/Luftdruck. Clients können diese Topics abonnieren, wobei der Server die empfangenen Nachrichten an die entsprechenden Abonnenten weiterleitet.&lt;/p&gt;</description></item><item><title>TestCafé Beispiel</title><link>https://aaron.de/posts/testcafe-beispiel/</link><pubDate>Thu, 13 Dec 2018 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/testcafe-beispiel/</guid><description>&lt;p&gt;Download &lt;a href="https://devexpress.github.io/testcafe/"&gt;Link&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Configuration der Umgebung&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/3.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/4.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/5.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Beispiel 1:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/6.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Beispiel 2: Einsatz von einem page object&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/1.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Login wurde in einem page object ausgelagert:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/2.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;npm run test:firefox -c 8 führt den Test parallel unter 8 Firefox Instanzen aus.&lt;/p&gt;</description></item><item><title>IO-Link Device Description (high level)</title><link>https://aaron.de/posts/io-link-device-description-high-level-2/</link><pubDate>Tue, 04 Sep 2018 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/io-link-device-description-high-level-2/</guid><description>&lt;p&gt;Mit dem Markennamen &lt;strong&gt;IO-Link&lt;/strong&gt; ist ein &lt;a href="https://de.wikipedia.org/wiki/Kommunikationssystem" title="Kommunikationssystem"&gt;Kommunikationssystem&lt;/a&gt; zur Anbindung &lt;a href="https://de.wikipedia.org/wiki/Smart-Sensor" title="Smart-Sensor"&gt;intelligenter Sensoren&lt;/a&gt; und &lt;a href="https://de.wikipedia.org/wiki/Aktor" title="Aktor"&gt;Aktoren&lt;/a&gt; an ein Automatisierungssystem in der Norm &lt;a href="https://de.wikipedia.org/wiki/IEC_61131" title="IEC 61131"&gt;IEC 61131-9&lt;/a&gt; unter der Bezeichnung &lt;strong&gt;S&lt;/strong&gt;ingle-drop &lt;strong&gt;d&lt;/strong&gt;igital &lt;strong&gt;c&lt;/strong&gt;ommunication &lt;strong&gt;i&lt;/strong&gt;nterface for small sensors and actuators (SDCI) normiert. Die Standardisierung umfasst dabei sowohl die elektrischen Anschlussdaten als auch ein digitales Kommunikationsprotokoll, über das die Sensoren und Aktoren mit dem Automatisierungssystem in Datenaustausch treten.&lt;/p&gt;
&lt;p&gt;Ein IO-Link-System besteht aus einem IO-Link-Master und einem oder mehreren IO-Link-Geräten, also Sensoren oder Aktoren. Der IO-Link-Master stellt die Schnittstelle zur überlagerten Steuerung (&lt;a href="https://de.wikipedia.org/wiki/Speicherprogrammierbare_Steuerung" title="Speicherprogrammierbare Steuerung"&gt;SPS&lt;/a&gt;) zur Verfügung und steuert die Kommunikation mit den angeschlossenen IO-Link-Geräten.&lt;/p&gt;</description></item><item><title>Modbus: Zusammenfassung der Spezifikation (high level)</title><link>https://aaron.de/posts/modbus-zusammenfassung-der-spezifikation-high-level/</link><pubDate>Sun, 12 Aug 2018 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/modbus-zusammenfassung-der-spezifikation-high-level/</guid><description>&lt;p&gt;Das Modbus-Protokoll ist ein Kommunikationsprotokoll, das auf einer Master/Slave- bzw. Client/Server-Architektur basiert. Es wurde 1979 von Gould-Modicon für die Kommunikation mit seinen speicherprogrammierbaren Steuerungen ins Leben gerufen. In der Industrie hat sich der Modbus zu einem De-facto-Standard entwickelt, da es sich um ein offenes Protokoll handelt. Seit 2007 ist die Version Modbus TCP Teil der Norm IEC 61158. [Wikipedia]&lt;/p&gt;
&lt;p&gt;Wie das folgende Schaubild zeigt, erlaub Modbus die Kommunikation über unterschiedliche Netzwerke:&lt;/p&gt;</description></item><item><title>E.D.D.I - Open Source Chatbot Platform Installation</title><link>https://aaron.de/posts/e-d-d-i-open-source-chatbot-platform-tutorial/</link><pubDate>Wed, 08 Aug 2018 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/e-d-d-i-open-source-chatbot-platform-tutorial/</guid><description>&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt; E.D.D.I kann sowohl aus den Quellen als auch als Docker Container installiert werde.  Ich werde die Installation aus den Quellen vornehmen.&lt;/p&gt;
&lt;p&gt;Zunächst müssen wir die folgenden Anwendungen installieren:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html"&gt;Java SDK in der Version 8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/downloads"&gt;git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://maven.apache.org/"&gt;Maven&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.mongodb.com/download-center?jmp=nav#community"&gt;mongoDB community Server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Umgebungsvariablen für Java und Maven setzen:
&lt;img src="images/eddi_umgebungsvariablen.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Pfade für Java, Maven und mongoDB setzen:
&lt;img src="images/eddi_path.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Pfade testen:
&lt;img src="images/eddi_versionen.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Quellen via git downloaden:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cd &lt;Zielordner&gt;&lt;/li&gt;
&lt;li&gt;git clone &lt;a href="https://github.com/labsai/EDDI.git"&gt;https://github.com/labsai/EDDI.git&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;img src="images/eddi_git_clone.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Anwendung via Maven bauen:&lt;/p&gt;</description></item><item><title>CoAP: Zusammenfassung der Spezifikation (high level)</title><link>https://aaron.de/posts/coap-zusammenfassung-der-spezifikation-high-level/</link><pubDate>Thu, 12 Jul 2018 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/coap-zusammenfassung-der-spezifikation-high-level/</guid><description>&lt;p&gt;&lt;strong&gt;Constrained Application Protocol (CoAP)&lt;/strong&gt; CoAP ist ein Internet Anwendungsprotokoll, welches innerhalb der RFC 7252 spezifiziert wurde. Das Protokoll dient der Kommunikation von Geräten &amp;lsquo;Nodes&amp;rsquo; z.B. embedded devices, die besonders wenig Energie verbrauchen (low-power) und in einem Netzwerk mit erhöhtem Datenverlußt (lossy networks) z.B. IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) zum Einsatz kommen. CoAP kann zusätzlich innerhalb Internet basierten Netzwerken zur mobilen Kommunikation via SMS verwendet werden. CoAP wird hauptsächlich im Rahmen von Internet of Things (IoT) und Machine-to-Machine (M2M) eingesetzt, da hier meistens Gerätedaten/Sensordaten mit geringer Größe übertragen werden. Dadurch, dass diese Art von Daten in regelmäßigen Abständen (Zyklen) übertragen werden, haben einzelne (verlorengegangene) Datenpakete keine Größe Auswirkung auf die verarbeitenden Systeme bzw. Anwendungen wie z.B. eine IoT-Plattform, der entsprechende Sensordaten (Temperatur, Umdrehungszahl etc.) verarbeitet und/oder grafisch darstellt.&lt;/p&gt;</description></item><item><title>Wireshark Tutorial</title><link>https://aaron.de/posts/wireshark-tutorial/</link><pubDate>Thu, 12 Jul 2018 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/wireshark-tutorial/</guid><description>&lt;p&gt;Wireshark ist ein freies Programm zur Analyse und grafischen Aufbereitung von Datenprotokollen (Sniffer). Solche Datenprotokolle verwenden Computer auf verschiedensten Kommunikationsmedien wie dem lokalen Netzwerk oder USB. Das Mitschneiden der Kommunikation kann bei der Fehlersuche oder bei der Bewertung des Kommunikationsinhalts sinnvoll sein. Wireshark zeigt bei einer Aufnahme sowohl die Protokoll-Header als auch den transportierten Inhalt an. Das Programm stützt sich bei der grafischen Aufbereitung auf die Ausgabe von kleinen Unterprogrammen wie pcap oder usbpcap, um den Inhalt der Kommunikation auf dem jeweiligen Übertragungsmedium mitzuschneiden. [wikipedia]&lt;/p&gt;</description></item><item><title>MQTT: Zusammenfassung der Spezifikation (high level)</title><link>https://aaron.de/posts/mqtt-spezifikation/</link><pubDate>Mon, 09 Jul 2018 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/mqtt-spezifikation/</guid><description>&lt;p&gt;&lt;strong&gt;MQTT&lt;/strong&gt; (&lt;strong&gt;Message Queue Telemetry Transport&lt;/strong&gt;) ist ein offenes Nachrichtenprotokoll für Machine-to-Machine-Kommunikation (M2M), das die Übertragung von Telemetriedaten in Form von Nachrichten zwischen Geräten ermöglicht, trotz hoher Verzögerungen oder beschränkter Netzwerke. Entsprechende Geräte reichen von Sensoren und Aktoren, Mobiltelefonen, Eingebetteten Systemen in Fahrzeugen oder Laptops bis zu voll entwickelten Rechnern. [Wikipedia]&lt;/p&gt;
&lt;p&gt;Die unten aufgeführten Informationen über die Spezifikation stammen unter anderem aus der aktuellen MQTT Spezifikation der &lt;a href="http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html"&gt;IBM&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OSI&lt;/strong&gt; Innerhalb des OSI-Modells ist MQTT wie folgt angesiedelt:
&lt;img src="images/MQTT-OSI-1.png" alt="" title="" loading="lazy" /&gt;
Die MQTT-Spezifikation unterscheidet TCP/IP-basierte und Nicht-TCP/IP-Netzwerk. Standardmäßig verwendet MQTT das TCP Protokoll/Verbindung (Port 1883 und 8883 für eine SSL-Verbidung). Bei MQTT-SN (MQTT for Sensor Networks) wird statt TCP das UDP Protokoll verwendet.&lt;/p&gt;</description></item><item><title>API Definition mit Hilfe von Swagger und YAML</title><link>https://aaron.de/posts/api-definition-mit-hilfe-von-swagger-und-yaml/</link><pubDate>Sun, 03 Dec 2017 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/api-definition-mit-hilfe-von-swagger-und-yaml/</guid><description>&lt;p&gt;&lt;strong&gt;Swagger Installation:&lt;/strong&gt; npm install -g swagger&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Projekt Erstellung:&lt;/strong&gt; swagger project create &amp;lt;project_name&amp;gt;
&lt;img src="images/new_project.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Projekt Starten:&lt;/strong&gt; swagger project start
&lt;img src="images/start_project.png" alt="" title="" loading="lazy" /&gt;
&lt;img src="images/curl.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Projekt editieren:&lt;/strong&gt; swagger project edit
&lt;img src="images/edit.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Die Notation wird innerhalb der &lt;a href="https://github.com/OAI/OpenAPI-Specification/tree/master/versions"&gt;OpenAPI Specification&lt;/a&gt; festgelegt. Visuelle Darstellung der Spezifikation von Arnaud Lauret: &lt;a href="http://openapi-specification-visual-documentation.apihandyman.io/"&gt;Link&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/visual.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Definition der API&lt;/strong&gt; (Ausschnitt):
&lt;img src="images/code.png" alt="" title="" loading="lazy" /&gt;
&lt;a href="https://github.com/netperformance/swagger/blob/master/api/swagger/swagger.yaml"&gt;Download swagger.yaml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;YAML Code Verifizieren&lt;/strong&gt;: swagger project verify
&lt;img src="images/verify.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mock Datei einbinden&lt;/strong&gt; In dem Projektordner unter dem Verzeichnis &amp;lsquo;mocks&amp;rsquo; eine neue Mock-Datei erstellen z.B. getAllEntries.js .&lt;/p&gt;</description></item><item><title>Spring Cloud Netflix Konzepte</title><link>https://aaron.de/posts/spring-cloud-netflix-konzepte/</link><pubDate>Wed, 25 Oct 2017 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/spring-cloud-netflix-konzepte/</guid><description>&lt;p&gt;&lt;strong&gt;Was ist Spring?&lt;/strong&gt; Das Spring Framework (kurz Spring) ist ein quelloffenes Framework für die Java-Plattform. Ziel des Spring Frameworks ist es, die Entwicklung mit Java/Java EE zu vereinfachen und gute Programmierpraktiken zu fördern. Spring bietet mit einem breiten Spektrum an Funktionalität eine ganzheitliche Lösung zur Entwicklung von Anwendungen und deren Geschäftslogiken; dabei steht die Entkopplung der Applikationskomponenten im Vordergrund. [wikipedia]&lt;/p&gt;
&lt;p&gt;Zu den Hauptprojekte von &lt;a href="https://spring.io/projects"&gt;Spring&lt;/a&gt; gehören:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Spring Boot&lt;/li&gt;
&lt;li&gt;Spring Framework&lt;/li&gt;
&lt;li&gt;Spring Cloud Date Flow&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aaron.de/posts/spring-cloud-netflix-konzepte/#SpringCloud"&gt;Spring Cloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Spring Data&lt;/li&gt;
&lt;li&gt;Spring Integration&lt;/li&gt;
&lt;li&gt;Spring Batch&lt;/li&gt;
&lt;li&gt;Spring Security&lt;/li&gt;
&lt;li&gt;Spring HATEOAS&lt;/li&gt;
&lt;li&gt;spring REST Docs&lt;/li&gt;
&lt;li&gt;Spring AMQP&lt;/li&gt;
&lt;li&gt;Spring Mobile&lt;/li&gt;
&lt;li&gt;Spring for Android&lt;/li&gt;
&lt;li&gt;Spring Web Flow&lt;/li&gt;
&lt;li&gt;Spring Web Services&lt;/li&gt;
&lt;li&gt;Spring LDAP&lt;/li&gt;
&lt;li&gt;Spring Session&lt;/li&gt;
&lt;li&gt;Spring Shell&lt;/li&gt;
&lt;li&gt;Spring Flo&lt;/li&gt;
&lt;li&gt;Spring Kafka&lt;/li&gt;
&lt;li&gt;Spring Statemachine&lt;/li&gt;
&lt;li&gt;Sprin IO Platform&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Zusätzlich beinhaltet Spring die beiden community Projekte:&lt;/p&gt;</description></item><item><title>Microservice Beispiel mit Spring Boot &amp; Netflix (Zuul &amp; Eureka)</title><link>https://aaron.de/posts/microservices-netflix/</link><pubDate>Tue, 24 Oct 2017 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/microservices-netflix/</guid><description>&lt;p&gt;Die Anwendung:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/Frontend.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;Folgende Microservices wurden erstellt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;microservice-frontend&lt;/li&gt;
&lt;li&gt;microservice-backend&lt;/li&gt;
&lt;li&gt;microservice-proxy-zuul&lt;/li&gt;
&lt;li&gt;microservice-discovery-eureka&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Download: &lt;a href="Microservices.zip"&gt;Microservices&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Eureka Ausgabe:&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/Eureka.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;</description></item><item><title>BPMN 2.0: Spickzettel für die Basis-Notation</title><link>https://aaron.de/posts/bpmn-2-0-spickzettel-fuer-die-basis-notation/</link><pubDate>Tue, 17 Oct 2017 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/bpmn-2-0-spickzettel-fuer-die-basis-notation/</guid><description>&lt;p&gt;Da ich nicht täglich modelliere, dient mir dieses BPMN-Diagramm mit seiner bewusst einfachen Notation als effiziente Gedächtnisstütze für die wichtigsten Grundlagen.&lt;/p&gt;
&lt;p&gt;
&lt;div style="width: 100%; height: 600px; border: 1px solid #333; border-radius: 8px; overflow: hidden; background: #fff;"&gt;
&lt;object id="svg-c5a3451089a9b67138e1565d546008c9" type="image/svg+xml" data="images/KFZ-Schadenabwicklung.svg" style="width: 100%; height: 100%;"&gt;&lt;/object&gt;
&lt;/div&gt;
&lt;script src="https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
document.getElementById('svg-c5a3451089a9b67138e1565d546008c9').addEventListener('load', function() {
svgPanZoom(this, {
zoomEnabled: true,
controlIconsEnabled: true,
fit: true,
center: true,
minZoom: 0.5,
maxZoom: 10
});
});
&lt;/script&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;div style="width: 100%; height: 600px; border: 1px solid #333; border-radius: 8px; overflow: hidden; background: #fff;"&gt;
&lt;object id="svg-67be2e57cdfb9e56db6ac7209b9fca66" type="image/svg+xml" data="https://aaron.de/posts/bpmn-2-0-spickzettel-fuer-die-basis-notation/images/KFZ-Schadenabwicklung.svg" style="width: 100%; height: 100%;"&gt;&lt;/object&gt;
&lt;/div&gt;
&lt;script src="https://cdn.jsdelivr.net/npm/svg-pan-zoom@3.6.1/dist/svg-pan-zoom.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
document.getElementById('svg-67be2e57cdfb9e56db6ac7209b9fca66').addEventListener('load', function() {
svgPanZoom(this, {
zoomEnabled: true,
controlIconsEnabled: true,
fit: true,
center: true,
minZoom: 0.5,
maxZoom: 10
});
});
&lt;/script&gt;
&lt;/p&gt;</description></item><item><title>DTLS (TCP vs. UDP)</title><link>https://aaron.de/posts/dtls/</link><pubDate>Fri, 23 Jun 2017 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/dtls/</guid><description>&lt;p&gt;&lt;strong&gt;Transport Layer Security (TLS)&lt;/strong&gt; bekannt als Secure Sockets Layer (SSL) ist ein Verschlüsselungsprotokoll (basiert auf x.509) zur sicheren Datenübertragung.&lt;/p&gt;
&lt;p&gt;Datagram Transport Layer Security (DTLS) basiert auf TLS und verwendet UDP statt TCP. Der Unterschied zwischen TLS und DTLS ist gleichzusetzen mit dem Unterschied zwischen TCP und UDP.&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/tcp.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="images/udp.jpg" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;TLS benötigt die Zuverlässigkeit der Daten unter anderem zur Entschlüsselung von Daten. Wenn z.B. die Datenpakete in falscher Reihenfolge ankommen, so wird TLS kein Integritätscheck durchführen können, das der Check die Sequenznummer der Pakete einbezieht d.h. nach Paktet N wird das Paket N+1 erwartet.&lt;/p&gt;</description></item><item><title>Ansible: Vagrant VM Provisionierung</title><link>https://aaron.de/posts/vagrant-vm-provisionierung-via-ansible/</link><pubDate>Thu, 16 Mar 2017 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/vagrant-vm-provisionierung-via-ansible/</guid><description>&lt;p&gt;// Ansible wird für die Konfiguration bzw. Provisionierung // der folgenden Vagrant VM-Infrastruktur verwendet
&lt;img src="images/vms.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// Installation aus &amp;ldquo;Personal Packages Archiv (PPA)&amp;rdquo; sudo -s apt-get install software-properties-common apt-add-repository ppa:ansible/ansible apt-get update apt-get install ansible&lt;/p&gt;
&lt;p&gt;// Kontrolle ansible &amp;ndash;version ansible-playbook &amp;ndash;version ansible-galaxy &amp;ndash;help&lt;/p&gt;
&lt;p&gt;// Erstellung einer neuen/eigenen &amp;lsquo;hosts&amp;rsquo; bzw. &amp;lsquo;inventory&amp;rsquo; Datei // für die Konfiguration der &amp;lsquo;dev&amp;rsquo; Umgebung cd ~ mkdir ansible cd ansible vi dev
&lt;img src="images/skeleton-2.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// Erstellung einer eigenen Config-Datei (ansible.cfg) // Referenz auf die inventory (hosts) Datei cd ~/ansible vi ansible.cfg [defaults] inventory=./dev
&lt;img src="images/ansible_cfg-1.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;</description></item><item><title>Vagrant: Grundlagen</title><link>https://aaron.de/posts/vagrant/</link><pubDate>Thu, 09 Mar 2017 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/vagrant/</guid><description>&lt;h1 id="vm-management"&gt;&lt;strong&gt;VM-Management&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;// Hilfe vagrant help vagrant help init&lt;/p&gt;
&lt;p&gt;// Ordner für Vagrant initialisieren bzw. &amp;lsquo;Vagrantfile&amp;rsquo; Erzeugung vagrant init hashicorp/precise64
&lt;img src="images/Initialisierung.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// Aufbau und Konfiguration einer Umgebung (Vagrant-Box) vagrant up
&lt;img src="images/vagrant_up.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// Auflistung der installierten Boxen
&lt;img src="images/boxes_list.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// Windows Ordner
&lt;img src="images/boxes_folder.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// Login via SSH vagrant ssh
&lt;img src="images/ssh.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// VM sleep mode vagrant suspend
&lt;img src="images/suspend.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// VM ausschalten (shutdown) vagrant halt
&lt;img src="images/halt.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;// VM Löschen vagrant destroy
&lt;img src="images/destroy.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;h1 id="vagrant-box"&gt;&lt;strong&gt;Vagrant Box&lt;/strong&gt;&lt;/h1&gt;
&lt;p&gt;// Installation von weiteren Umgebungen (Vagrant Box) z.B. Ubuntu trusty
&lt;img src="images/box_page.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;</description></item><item><title>IPv4 vs. IPv6 (high level)</title><link>https://aaron.de/posts/ipv4-vs-ipv6-high-level/</link><pubDate>Tue, 25 Oct 2016 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/ipv4-vs-ipv6-high-level/</guid><description>&lt;p&gt;&lt;strong&gt;Wiederholung IPv4&lt;/strong&gt;
&lt;img src="images/example.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IPv4 Header&lt;/strong&gt;
&lt;img src="images/v4Header.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Version: 4&lt;/li&gt;
&lt;li&gt;IHL (Internet Header Length): Länge des Headers in 32 Bit Schritten. Wert 5 = 5 Zeilenx32bit&lt;/li&gt;
&lt;li&gt;TOS (Type of Service): Dient der Priorisierung des IP Paketes (QoS)&lt;/li&gt;
&lt;li&gt;Total Length: 65535 Byte&lt;/li&gt;
&lt;li&gt;Identification, Flags &amp;amp; Fragment Offset. Steuerung der Fragmentierung&lt;/li&gt;
&lt;li&gt;Flags: Bit 0 ist reserviert. Wenn bit 1 auf 0 gesetzt wird, darf fragmentiert werden. Bei 1 nicht. Wenn bit 2 auf 0 gesetzt wird, dann handelt es sich um das letzte Fragment. Bei 1 folgen weitere Fragmente.&lt;/li&gt;
&lt;li&gt;Time to Live: Lebensdauer des Paketes. Jeder Router reduziert die Zahl um 1&lt;/li&gt;
&lt;li&gt;Protocol: z.B. TCP, UDP, ICMP usw.&lt;/li&gt;
&lt;li&gt;Header Checksum: Prüfsumme. Wird kaum verwendet.&lt;/li&gt;
&lt;li&gt;Source / Destination: Ziel- und Quell-Adresse&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Unterschied IPv4 &amp;amp; IPv6 Header&lt;/strong&gt;
&lt;img src="images/v4_vs_v6_Header.png" alt="" title="" loading="lazy" /&gt;
&lt;/p&gt;</description></item><item><title>R Programmierung: Auswertung der Titanic Daten von Kaggle</title><link>https://aaron.de/posts/r-programmierung-auswertung-der-titanic-daten-von-kaggle/</link><pubDate>Tue, 18 Oct 2016 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/r-programmierung-auswertung-der-titanic-daten-von-kaggle/</guid><description>&lt;h4 id="titanic-datensatz-einlesen"&gt;Titanic Datensatz einlesen&lt;/h4&gt;
&lt;p&gt;[codesyntax lang=&amp;ldquo;php&amp;rdquo;]train &amp;lt;- read.csv(&amp;ldquo;C:/[PFAD]/train.csv&amp;rdquo;, header = TRUE)[/codesyntax]&lt;/p&gt;
&lt;h4 id="information-über-die-datenstruktur"&gt;Information über die Datenstruktur&lt;/h4&gt;
&lt;p&gt;[codesyntax lang=&amp;ldquo;php&amp;rdquo;]str (train)[/codesyntax]&lt;/p&gt;
&lt;p&gt;Ergebnis: &amp;rsquo;train.frame&amp;rsquo;: 891 obs. of 11 variables: $ survived: int 0 1 1 1 0 0 0 0 1 1 &amp;hellip; $ pclass : int 3 1 3 1 3 3 1 3 3 2 &amp;hellip; $ name : Factor w/ 891 levels &amp;ldquo;Abbing, Mr. Anthony&amp;rdquo;,..: 109 191 358 277 16 559 520 629 417 581 &amp;hellip; $ sex : Factor w/ 2 levels &amp;ldquo;female&amp;rdquo;,&amp;ldquo;male&amp;rdquo;: 2 1 1 1 2 2 2 2 1 1 &amp;hellip; $ age : num 22 38 26 35 35 NA 54 2 27 14 &amp;hellip; $ sibsp : int 1 1 0 1 0 0 0 3 0 1 &amp;hellip; $ parch : int 0 0 0 0 0 0 0 1 2 0 &amp;hellip; $ ticket : Factor w/ 681 levels &amp;ldquo;110152&amp;rdquo;,&amp;ldquo;110413&amp;rdquo;,..: 524 597 670 50 473 276 86 396 345 133 &amp;hellip; $ fare : num 7.25 71.28 7.92 53.1 8.05 &amp;hellip; $ cabin : Factor w/ 148 levels &amp;ldquo;&amp;rdquo;,&amp;ldquo;A10&amp;rdquo;,&amp;ldquo;A14&amp;rdquo;,..: 1 83 1 57 1 1 131 1 1 1 &amp;hellip; $ embarked: Factor w/ 4 levels &amp;ldquo;&amp;rdquo;,&amp;ldquo;C&amp;rdquo;,&amp;ldquo;Q&amp;rdquo;,&amp;ldquo;S&amp;rdquo;: 4 2 4 4 4 3 4 4 4 2 &amp;hellip;&lt;/p&gt;</description></item><item><title>R Programmierung: R-Befehle Sammlung</title><link>https://aaron.de/posts/r-programmierung-r-befehle-sammlung/</link><pubDate>Tue, 18 Oct 2016 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/r-programmierung-r-befehle-sammlung/</guid><description>&lt;h2 id="kommentar"&gt;Kommentar&lt;/h2&gt;
&lt;p&gt;# Ich bin ein Kommentar&lt;/p&gt;
&lt;h2 id="ausgabe"&gt;Ausgabe&lt;/h2&gt;
&lt;p&gt;• print(&amp;ldquo;Hello World&amp;rdquo;) • cat(&amp;ldquo;Hello&amp;rdquo;, &amp;ldquo;World&amp;rdquo;)&lt;/p&gt;
&lt;h2 id="information-über-r-befehle"&gt;Information über R-Befehle&lt;/h2&gt;
&lt;p&gt;# Informationen über einen bestimmten Befehlt z.B. &amp;lsquo;which&amp;rsquo; ermitteln • apropos(&amp;ldquo;which&amp;rdquo;) • help(which) • ?which • RSiteSearch(&amp;ldquo;which&amp;rdquo;)&lt;/p&gt;
&lt;h2 id="befehl-historie--exit"&gt;Befehl-Historie &amp;amp; Exit&lt;/h2&gt;
&lt;p&gt;# Zuvor eingegebene Befehle anzeigen history()&lt;/p&gt;
&lt;p&gt;# RStudio Verlassen q()&lt;/p&gt;
&lt;h2 id="arbeitsverzeichnis"&gt;Arbeitsverzeichnis&lt;/h2&gt;
&lt;p&gt;# Mein R Arbeitsverzeichnis anzeigen getwd()&lt;/p&gt;
&lt;h2 id="-arbeitsverzeichnis-ändern"&gt;# Arbeitsverzeichnis ändern&lt;/h2&gt;
&lt;p&gt;# Ein neues Arbeitsverzeichnis angeben&lt;/p&gt;
&lt;p&gt;setwd(&amp;lsquo;PFAD&amp;rsquo;)&lt;/p&gt;
&lt;h2 id="r-befehlescript-speichern"&gt;R-Befehle/Script Speichern&lt;/h2&gt;
&lt;p&gt;# R-Befehle bzw. R-Scribt lokal speichern save (myTable, file=&amp;ldquo;C:/Users/axxKreis/Desktop/myTable.RData&amp;rdquo;)&lt;/p&gt;</description></item><item><title>Windows: Empfehlenswerte OpenSource und Freeware Anwendungen</title><link>https://aaron.de/posts/windows-empfehlenswerte-opensource-und-freeware-anwendungen/</link><pubDate>Tue, 18 Oct 2016 00:00:00 +0000</pubDate><guid>https://aaron.de/posts/windows-empfehlenswerte-opensource-und-freeware-anwendungen/</guid><description>&lt;p&gt;&lt;strong&gt;Buero – Desktop – Kleine Helfer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;( &lt;a href="https://atom.io/"&gt;Atom&lt;/a&gt; ) - Texteditor ( &lt;a href="http://notepad-plus.sourceforge.net/"&gt;Notepad++&lt;/a&gt; ) - Texteditor ( &lt;a href="http://www.izarc.org/"&gt;IZArc&lt;/a&gt; ) - Packprogramm ( &lt;a href="http://www.mythicsoft.com/"&gt;Agent Ransack&lt;/a&gt; ) - Lokale Suche ( &lt;a href="http://de.openoffice.org/"&gt;OpenOffice&lt;/a&gt; ) - OfficeSuite ( &lt;a href="http://dia-installer.de/"&gt;Dia&lt;/a&gt; ) - Diagramm Editor ( &lt;a href="http://kdiff3.sourceforge.net"&gt;KDiff3&lt;/a&gt; ) - Vergleicht zwei Dateien oder Verzeichnisse miteinander ( &lt;a href="http://sourceforge.net/projects/winmerge"&gt;WinMerge&lt;/a&gt; ) - Vergleicht zwei Dateien oder Verzeichnisse miteinander ( &lt;a href="http://www.dschensky.de/Software/Staff/tailme.htm"&gt;TailMe&lt;/a&gt; ) - Überwacht das Wachstum von Dateien ( &lt;a href="http://www.baremetalsoft.com/baretail/index.php"&gt;BareTail&lt;/a&gt; ) - Überwacht das Wachstum von Dateien ( &lt;a href="http://www.cygwin.com"&gt;Cygwin&lt;/a&gt; ) - Unix-API Emulator ( &lt;a href="http://www.inforapid.de/html/suchenersetzen.htm"&gt;InfoRapid&lt;/a&gt; ) - Volltext Suchprogramme ( &lt;a href="http://www.ego4u.de/de/lingopad"&gt;LingoPad&lt;/a&gt;) - Mehrsprachiges Woerterbuch ( &lt;a href="http://home.snafu.de/tilman/xenulink.html"&gt;Xenu&amp;rsquo;sLink Sleuth&lt;/a&gt; ) - Erfasst tote links ( &lt;a href="http://www.spadixbd.com/freetools/jruler.htm"&gt;JR Screen Ruler&lt;/a&gt; ) - Desktop Lineal ( &lt;a href="http://freemind.sourceforge.net"&gt;FreeMind&lt;/a&gt;) - MindMapping Werkzeug ( &lt;a href="http://dm2.sourceforge.net"&gt;DM2&lt;/a&gt; ) - Fenster-Kontrolle (Transparenz, Fenster in den Vordergrund stellen usw.) ( &lt;a href="http://www.pdfforge.org"&gt;PDFCreator&lt;/a&gt; ) - Anwendungsprogramm zur Erstellung von PDF-Dateien ( &lt;a href="http://sourceforge.net/projects/renameit/"&gt;Renamer-It!&lt;/a&gt; ) - Um Dateien umzubenennen ( &lt;a href="http://sourceforge.net/projects/win32diskimager/"&gt;Win32 Disk Imager&lt;/a&gt; ) - Um ein Image auf die SD-Karte zu kopieren ( &lt;a href="http://google-calendar-sync.softonic.de/"&gt;GoogleCalendarSync&lt;/a&gt; ) - Um den Google Kalender mit Outlook zu synchronisieren ( QTranslate ) - Übersetzungsprogramm ( &lt;a href="https://calibre-ebook.com/"&gt;Calibre&lt;/a&gt; ) - Ebook Manager (reader) ( &lt;a href="https://deskpins.en.softonic.com/"&gt;DeskPins&lt;/a&gt; ) - Fenster im Vordergrund fixieren&lt;/p&gt;</description></item></channel></rss>