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

Python-Skripte als systemd-user-service

11. Mar 2019

Development | Ops

Wer kennt das nicht, da hat man ein Python-Skript geschrieben, zum Beispiel einen kleinen Webserver in Flask, oder irgendein Test-Protokoll-Server mit Twisted. Diesen will man nun schnell auf einem Server oder Raspberry Pi starten, und ist durch unseren Post Systemctl Services unter Ubuntu auf den systemd-Geschmack gekommen. Das Python-Skript Folgendes schreibt man an den Anfang seines Python-Skripts. Wir nennen es hier jetzt mal main.py. #!/bin/sh -e "exec" "`dirname $0`/.env/bin/python" "$0" "$@" def start_server(): # ...

#Ubuntu #Service #systemctl #Python #systemd #user #venv #virtualenv

¿Hablas FizzBuzz?

29. Jan 2019

Code Dojo

Es gibt unzählige - mehr oder eher weniger informative - Artikel zum Thema “Wie finde ich gute Softwareentwickler?”. Sehr häufig kommt der Vorschlag, die Bewerberin eine Programmieraufgabe lösen zu lassen. Das Problem bei der Sache ist: Gute Entwicklerinnen lösen die Aufgabe potentiell mit Bravour, sind aber genervt und suchen sich vielleicht einen Arbeitgeber, der ihnen nicht die Zeit raubt. Im Netz kursiert seit einiger Zeit der “FizzBuzz-Test” - der ist kurz, anders und irgendwie witzig.

#Bewerbungsgespräche #Kotlin #Assessment

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

Docker Registry mit Google Open Id

4. Dec 2018

DevOps

Die Docker Registry bietet seit Version 2 die Möglichkeit einen Open Id Provider für die Authentifizierung zu nutzen. Allerdings lässt sich die Registry nicht ohne weiteres an einen Open Id Provider anbinden, da man u.a. das Public Certificate des ausstellenden Open Id Providers in einem Ordner ablegen muss. Keycloak als Lösung Bis vor kurzem haben wir neben unserer Registry die in einem Kubernetes Cluster in der AWS läuft und die Daten in S3 ablegt zusätzlich einen Keycloak Server im Cluster betrieben, der seit Version 4 ein Feature anbietet, was es sehr einfach macht die Docker Registry anzubinden.

#DevOps #Docker #google #OpenID #Oauth

Kong - Das Api-Gateway

4. Dec 2018

Development | Architecture

Kong ist ein auf Nginx basierendes Api Gateway. Das besondere an Kong ist, neben der sehr schnellen Verarbeitungszeiten, dass man über Plugins problemlos und sehr einfach weitere Funktionalität hinzufügen kann. Zum Beispiel Open ID Connect oder Rate Limits per Request. Kong startet auf zwei unterschiedlichen Ports. Port 8001 ist für die Admin API reserviert und Port 8000 ist der Endpunkt für konsumierende Dienste und Clients. Service und Routen einrichten Nachdem wir Kong installiert und gestartet haben wollen wir eine einfache Route zu unserem User Microservice über die Admin API erstellen.

#Api-Gateway #Kong #Routing #Reverse Proxy #Proxy

Systemctl Services unter Ubuntu

4. Dec 2018

Development | Ops

Um ein Executeable als Service einzurichten, musst du unter /etc/systemd/system/ eine neue Datei erzeugen. Sinnvollerweise nennst du sie nach deinem Executable. Wollen wir zum Beispiel einen Nginx Webserver als Service einrichten, wäre der Name nginx.service. [Unit] Description=Nginx webserver [Service] Type=simple ExecStart=/usr/bin/nginx [Install] WantedBy=multi-user.target Jetzt musst du deinen neuen Service nur noch aktivieren. sudo systemctl enable nginx.service Anschließend kannst du ihn starten. sudo systemctl start nginx.service

#Ubuntu #Service #Systemctl