Ubuntu Upgrade Failure Troubleshooting

4. May 2022

Knowledge Base

Oh no! Something has gone wrong. Das wovor sich jeder Entwickler fürchtet ist eingetreten: Du wolltest gerade von Ubuntu 20.04.4 LTS auf Ubuntu 22.04 LTS upgraden, da taucht ohne Vorwarnung der weiße error screen auf. Oh no! Something has gone wrong A problem has occured and the system can't recover. Please contact a system administrator. Das Problem: Du bist der System Administrator. Um in diesem Zustand, der auch nach einem Reboot bestehen bleibt, handeln zu können, versuchen wir zuerst einen Terminal aufzurufen.

#ubuntu #os #troubleshooting #grub #recovery #20.04.4 #22.04

GitOps mit Flux

29. Sep 2020

Knowledge Base

Was ist Flux? Flux ist ein Tool, dass automatisch sicherstellt, dass der State deines Cluster der config in git entspricht. Es benutzt einen Operator im Cluster um Deployments in Kubernetes anzustoßen. Das wiederum bedeutet, dass du kein separates CD Tool benötigst. Es überwacht alle relevanten Image Repositories z.B. docker, erkennt neue Images, löst neue Deployments aus und aktualisiert den State deiner Applikation im Cluster. Grundsätze Deklarative Beschreibung des gesamten States in git - dies beinhaltet die Applikationen, Konfigurationen, Monitoring und alles Andere.

#flux #gitops #k8s #kubernetes

Objektorientiertes CSS

24. Sep 2020

Knowledge Base

Was ist OOCSS? Anders als bei SASS oder LESS, ist OOCSS kein Framework das auf CSS aufgebaut ist. Es ist vielmehr eine Art sein CSS zu strukturieren und zu organisieren. Die grundlegende Idee von OOCSS ist die Abstraktion von sich wiederholenden Mustern in wiederverwendbare Objekte. Ein Beispiel Vielleicht hast du verschiedene Buttons unterschiedlicher Größe auf deiner Website. Aber alle von ihnen haben gemeinsame Styles wie etwa: border radius padding box-shadow Die gemeinsamen Styles werden an einer CSS Klasse zusammengefügt und an allen Buttons auf der Website verwendet.

#css #Webcomponents #oocss

Webcomponents mit stencil

15. Sep 2020

Knowledge Base

Stencil ist ein einfacher Compiler zum Erstellen von plattformunabhängige Webkomponenten. Der erzeugte Code besteht aus nichts weiter als Vanilla-JavaScript, HTML und CSS und ist daher in jedem modernen Browser ausführbar. Eigenschaften von mit Stencil erzeugten Webkomponenten Stencil vereint einige bewährte sowie einige sehr neue Konzepte anderer populärer Frameworks: Virtueller DOM – eine Repräsentation des eigentlichen DOMs, über die eine schnellere Bearbeitung und Aktualisierung desselben erfolgen kann; ähnlich wie es die Frameworks Vue.

#stencil #Webcomponents

Jetty TLS mit mehreren Domains

7. Jan 2020

Knowledge Base | Ops

Einleitung Hast du dich schon einmal gefragt, wie du einem Jetty-Server mehrere, verschiedene HTTPS-Zertifikate geben kannst? Einfaches Beispiel: Ein Raspberry-Pi, der von zwei Domains erreichbar sein soll? Möglicherweise hast du auch schon etwas in den Jetty-Dokumentationen zu SSL oder Virtual Hosts umgesehen, bist aber nicht daraus schlau geworden. Die Antwort ist ganz einfach! Du musst nichts konfigurieren. Du musst lediglich all deine Zertifikate in denselben Keystore legen. Alles andere funktioniert ganz von selbst.

#Jetty #Java #TLS #SSL

GDrive Proxy mit der Google Drive API

15. Jul 2019

Knowledge Base

Du möchtest Daten in Google Drive speichern, aber auch eigene Sicherheits- oder Usability Funktionen hinzufügen und eine allgemeine Verfügbarkeit gewährleisten? Dann kann es sinnvoll sein, eine eigene Softwarelösung mit der Google Drive zu verknüpfen. Zum Glück stellt Google mit der Google Drive API und der Developer Console die notwendigen Werkzeuge dafür bereit. In diesem Blogpost wird untersucht, wie man einen NodeJs Service bauen kann, der Dateien mithilfe eines Service Accounts in eine TeamDrive hochladen kann, sodass eine Schnittstelle für erweiterte Funktionen geschaffen ist.

#Google Drive #Service Account #GDrive #NodeJs

Datenvisualisierung mit matplotlib

11. Jun 2019

Knowledge Base

In den letzten Blogposts wurde behandelt, wie man Daten anlegen lässt und wie man diese mit Python holen kann. Nun möchten wir aber mit diesen Daten auch etwas erarbeiten. Im Folgenden wird erklärt, wie man aus Daten von Google Sheets so eine Visualisierung erzeugen kann: In der Pythondatei importieren wir zuerst die benötigten packages: import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation import json import sys import gspread from oauth2client.service_account import ServiceAccountCredentials Die Daten werden über die Google Sheets API aus einem Tabellenblatt extrahiert.

#matplotlib #Pie Chart #Progress #Tracking

Fortschritt überwachen mit Google Sheets

11. Jun 2019

Knowledge Base

Um den Überblick über den Fortschritt eines Projektes zu behalten, ist es sinvoll Trackingmethoden anzuwenden. Die im Folgenen dargestellte Methode bietet sich bei Projekten an, bei denen einzelne Elemente klar definierte Status durchlaufen. Zum Beispiel wie es bei Tickets in Youtrackprojekten der Fall ist: ToDo -> In Progress -> Review -> Done In einem neuen Google Sheets Dokument wird zuerst die Übersichtsseite angelegt. Elementname Status 1 Status 2 Status 3 Anzahl 2 1 3 element1 1 1 1 element2 0 0 1 element3 1 0 1 Durch bedingte Formatierung (Format -> Bedingte Formatierung) lassen sich den Feldern basierend auf dem Status eine Farbe zuweisen, was einen leicht zu verstehenden Überblick möglich macht.

#Google #Sheets #Progress #Excel #Tracking

Google Sheets mit Python

11. Jun 2019

Knowledge Base

Um Daten, die in einem Google Sheets Dokument verwaltet werden, dynamisch abrufen oder ändern zu können, bietet es sich an die von Google bereitgestellten Dienste zu nutzen und eine Schnittstelle einzubauen. Im Folgenden wird erklärt, wie eine solche API aufgebaut werden kann, um diese dann mit Python anzusprechen. Öffne die Google API Konsole: console.developers.google.com Erstelle ein neues Projekt Wähle API aktivieren und aktiviere die Google Sheets API sowie die Google Drive API Erstelle Anmeldedaten mit den Parameter Webserver und Zugriff auf Anwendungsdaten Bennene den Service Account und gewähre ihm die Project Rolle des Bearbeiter Lade die JSON Datei mit den Anmeldedaten herunter, um diese im Code nutzen zu können.

#Logging #Python #Google Sheets #Reporting #API

Dependency Injection mit Kotlin und Spring

5. Dec 2018

Knowledge Base | Development

Das Spring Framework ermöglicht drei Arten von Dependency Injection: Field Injection Setter Injection Constructor Injection Als Guter Entwickler™ verwendet ihr natürlich Constructor Injection und keine Field Injection. Doch manchmal gibt es Situationen, in denen das nicht passt. In dem Fall steht mit Setter Injection eine gute Alternative zur Verfügung - dafür ein Beispiel mit Kotlin zu finden ist aber gar nicht so einfach. Field Injection Field Injection ist erstmal sehr einfach und wird deswegen - leider - häufig in der Lehre verwendet.

#Dependency-Injection #Kotlin #Spring #Setter