jCloud (Ab September 2024)
jCloud ist eine Webapplikation, die als Cloud-Speicherlösung funktioniert. Es ermöglicht Nutzern das Speichern von Dateien und die Organisation dieser mit Ordnern (virtuellen Verzeichnissen), ähnlich wie in einem Dateisystem.
URL zum Projekt: https://jcloud-services.ddns.net
Weitere Informationen
Grundlegende Architektur
- Frontend: Single Page Application
- Webserver zum Ausliefern des Frontends
- Backend über REST-Services und SQL-Datanbank
- Health Check, der die Services regelmäßig prüft und sie im Fehlerfall automatisiert neu startet.
Übersicht über die wichtigsten Features
- Erstellen und Anmeldung von Benutzern
- Dateien hochladen und speichern
- Dateien in Verzeichnissen organisieren
Übersicht über die verwendeten Technologien
- HTML5
- CSS3
- JavaScipt
- Python
- Podman
- PostgreSQL
Teilprojekte
Zur besseren Übersichtlichkeit habe ich jCloud in Teilprojekte unterteilt.
Einarbeitung in die Programmierung von KI-Anwendungen (Juli 2025)
Zur Einarbeitung in die Programmierung von KI-Anwendungen arbeitete ich das Buch Eigene KI-Anwendungen programmieren von Metin Karatas (ISBN 978-3-8362-9763-9) (aktuell noch teilweise) durch. Dabei habe ich viele Beispiele und Übungen mit den Tools und Frameworks in der Praxis umgesetzt.
Angewendete Technologien
- Python
- Pandas
- Numpy
- TensorFlow
- Keras
Erlernte Themen
- Künstliche neuronale Netze
- Aktivierungsfunktionen
- Klassifizierung
- Regression
- Entscheidungsbäume und -wälder
- XGBoost
- GridSearchCV
- Bildklassifizierung
- Convolutional Neural Networks
- Verwendung vortrainierter Netze
Zunächst habe ich die Grundlagen künstlicher neuronaler Netze gelernt. Anschließend habe ich mit dem Framework TensorFlow sowie einem Datensatz für Schwertlilien selbst neuronale Netze programmiert, welche die Schwertlilienart auf Grund der Abmessungen bestimmten. Außerdem habe ich mit den Hyperparametern experimentiert. Nach der Klassifizierung erlernte ich die Regression. Dazu trainierte ich ein künstliches neuronales Netz, welche die Länge des Kelchblattes auf Grund der Länge und Breite des Kronblattes, der Breite des Kelchblattes und der Schwertlilienart vorhersagte.
Nach den künstlichen neuronalen Netzen beschäftigte ich mit Entscheidungsbäumen. Dabei verwendete ich wieder den Schwertliliendatensatz. Des Weiteren erlernte ich Entscheidungswälder und das Boosting bei Entscheidungsbäumen und -wäldern. Ich lernte Gradient Boosting, XGBoost und GridSearchCV.
Anschließend erlernte ich die Bildklassifizierung. Dafür trainierte ich ein künstliches neuronales Netz zur Klassifizierung von handschriftlichen Ziffern mit dem MNIST-Dataset. Danach optimierte ich die Hyperparameter mit Early Stopping und KerasTuner.
Zudem verwendete ich Convolutional Neural Networks, um die Merkmale besser aus den Bildern zu extrahieren zu können. Dafür wendete ich als Matrizen aufgebaute Filter (Kernel) an, z. B. zur Erhöhung der Schärfe oder der Extrahierung der Kanten eines Bildes.
Nachdem ich die Technologie der Convolutional Neural Networks erlernt hatte, führte ich Bildklassifizierung mit Hilfe von CIFAR-10 durch. Außerdem verwendete ich vortrainierte Netze wie VGG19, um diese an einen neuen Zweck anzupassen.
Da ich das Buch noch nicht bis zum Ende durchgearbeitet habe, habe ich mir die Erlernung des Restes vorgenommen, dazu gehören u. a.:
- Transfer Learning
- Erkennung von Anomalien
- Resampling
- Autoencoder
- Textklassifizierung
- Text Vectorization
- Clusteranalyse
- k-Means-Clustering-Algorithmus
- Textgenerierung
- Reinforcement Learning
- Generische Algorithmen/Evolutionärs Lernen
Einarbeitung in die Programmiersprache Python und in die Technologie des Raspberry Pi (April 2024)
Zur Einarbeitung in die Programmiersprache Python und in die Technologie des Raspberry Pi arbeitete ich das Buch Raspberry Pi programmieren mit Python von Michael Weigend (ISBN 978-3-7475-0383-6) durch.
Angewendete Technologien
- Python
- IDLE
- Raspberry Pi
- GPIO des Raspberry Pi
tkinter
Erlernte Themen
- Steuerung des GPIO
- Kollektionen
- Funktionen
- GUI
- Datenverarbeitung (Dateien, Serialisierung etc.)
- Objektorientierung
- HTTP-Server
Zuerst beschäftigte ich mich mit den Grundlagen von Python 3 und dem Raspberry Pi. Dabei erlernte ich die Syntax der Sprache und die Funktionsweise und Anwendung des GPIO und schrieb einfache Python-Skripte. Außerdem lernte ich Kollektionen und Funktionen kennen. Des Weiteren erlernte ich im Rahmen des Erlernens von Funktionen das Übergeben von Argumenten, Docstrings, assert, Namensräume, rekursive Funktionen etc.
Nachdem ich mir die Grundlagen angeeignet hatte, erlernte ich das Programmieren grafischer Benutzeroberflächen mit tkinter. Dabei verwendete ich nach und nach verschiedene Widgets im Rahmen kleiner Projekte, z. B. Schaltflächen, Bilder, Eingabefelder oder Check-/Radiobuttons und unterschiedliche Layout-Möglichkeiten.
Anschließend beschäftigte ich mit Daten. Ich lernte den Umgang mit Dateien in Python und die Serialisierung von Objekten mit pickle. Auch verwendete ich HTTP-Requests, um Daten aus dem WAN/LAN abzurufen und erlernte die Funktionsweise und Anwendung regulärer Ausdrücke mit dem Python-Modul re.
Danach erlernte ich die Grundlagen der Objektorientierung. Ich lernte u. a. Klassen, Vererbung und Attribute.
Anschließend erlernte ich einige Grundlagen der Web-Technologie. Dazu schrieb ich einen Webserver in Python und programmierte simple Projekte mit CGI-Skripten und HTML. Außerdem verwendete Datenbanken mit SQLite.