Donnerstag, 6. Juni 2019

Apache Zeppelin Tutorial



Wer kennt es nicht: Man möchte eine Technologie ausprobieren, scheitert jedoch schon bei den ersten Schritten an den technischen Abhängigkeiten?!

Wenn ich persönlich an einer Stelle nicht weiter voran komme, dann schaue ich mich im Netz nach diesem Problemen und eventuellen Lösungen um. Ich spare mir dann eine Menge Zeit und Nerven, wenn Jemand bereits ein solches Problem hatte und er auch noch eine mögliche Lösung beschreibt. Besonders freue ich mich dann, wenn sich dieser Jemand die Mühe gemacht hat ein lauffähiges Projekt als Beispiel für die Problemlösung aufzusetzen.


Bist Du vielleicht auf der Suche nach einer vorkonfigurierten und lauffähigen Zeppelin Installation? Mit diversen externen Systemen, welche in Zeppelin eingebunden werden, um Daten in einzuspielen und ausgeben zu können? Nun, vor kurzem war ich auf der Suche nach einem solchen Beispiel-Projekt. Da ich nichts passendes fand, habe ich etwas aufgesetzt.

Eine auf Docker basierende Zeppelin Instanz mit diversen externen Systemen, welche lokal durch Docker Compose betrieben werden. Mit diesem Projekt kannst Du sofort loslegen und Zeppelin ausprobieren.

Samstag, 29. Dezember 2018

Einfach Methode, um eine Sicherung der eigenen Daten zu erstellen

Um ein regelmässiges Backup den eigenen Festplatten zu erstellen, gibt es verschiedene Softwarelösungen. Jede Lösung hat ihre Vor- und Nachteile. Bei der Auswahl der richtigen Lösung, muss man sich selbst diverse Fragen beantworten: "Mit welchen Betriebsystemen arbeite ich? Möchte ich Geld für die Software ausgeben? Wie gut sind meine IT Kenntnisse? Welchen Lösungen kann ich vertrauen? Welche Lösung ist für mich einfach genug zu benutzen?, ..."

Eine einfache Lösung kann ein Shell Script sein, welches rsync verwendet, um die Daten einer Festplatte auf eine andere zu sichern.

Das kann wie folgt aussehen.

Um Dateien oder Verzeichnisse von dem Backup auszuschließen, fügt man sie in die referenzierte Liste ein.

Für mich ist es eine einfache und gut funktionierende Lösung, mit der ich Sicherungskopien diverser Festplatten regelmässig manuell durchführe. Das Backup Script liegt auf der Quell-Festplatte und wird von mir über den Befehl ./backup.sh in der Shell gestartet.

Donnerstag, 13. Dezember 2018

Mal eben eine virtuelle Maschine bei AWS erzeugen

Welcher Software Entwickler kennt das nicht? Man möchte mal eben seine eigene Software im Internet verfügbar machen oder eine Technologie ausprobieren und benötigt dafür eine virtuelle Maschine mit guter Internetanbindung.

Dafür ist AWS EC2 sehr gut geeignet. Das Erstellen einer EC2 Instanz ist über die WebUI mit wenigen Klicks erledigt. Es geht jedoch noch schneller als mit der WebUI. Und zwar, mit Terraform.

Neben der hohen Geschwindigkeit beim Erzeugen und Zerstören einer Instanz, bietet das Tool noch einen weiteren Vorteil. Der Aufbau der Virtuellen Maschine ist im Code dokumentiert und kann je nach Bedürfnis durch Variablen dynamisch angepasst werden.

Als einfaches Beispiel habe ich dieses GitHub Projekt aufgesetzt. Der Code basiert auf diesem lesenswerten Artikel.

Wer noch kein Konto bei AWS hat, kann dieses hier anlegen und 12 Monate lang kostenfrei experimentieren. Auch nach dem Ablauf der 12 Monate gibt es weiterhin Leistungen, die immer kostenfrei sind.

Wer sich in das Thema AWS einlesen möchte, dem kann ich dieses Buch empfehlen.

Sonntag, 25. November 2018

Spock Konfiguration externalisieren

Wenn du gerade angefangen hast mit dem Testframework Spock deine Applikation zu testen, dann fragst du dich vielleicht, wie du die Tests für verschiedene Testumgebungen konfigurieren kannst.

Hier habe ich ein paar Varianten beispielhaft zusammengetragen:


Montag, 19. November 2018

Scrum unser

Original

Vater unser im Himmel
Geheiligt werde dein Name.
Dein Reich komme.
Dein Wille geschehe,
wie im Himmel, so auf Erden.
Unser tägliches Brot gib uns heute.
Und vergib uns unsere Schuld,
wie auch wir vergeben unsern Schuldigern.
Und führe uns nicht in Versuchung,
sondern erlöse uns von dem Bösen.
Denn dein ist das Reich
und die Kraft und die Herrlichkeit
in Ewigkeit. Amen.

Quelle: https://www.ekd.de/Vater-unser-10784.htm

Meine Scrum Version

Scrum unser im Team
Geheiligt werde dein Vorgehen.
Dein Projekt komme.
Dein Backlog geschehe,
wie im Team, so im Unternehmen.
Unser tägliches Standup gib uns heute.
Und vergib uns unsere technischen Schulden,
wie auch wir vergeben unseren Stakeholdern mit ihren unklaren Anforderungen.
Und führe uns nicht in den Wasserfall,
sondern erlöse uns von dem choatischen Entwicklungsprozess.
Denn dein ist das Projekt
und die Velocity und das funktionierende Produkt just in Time. Amen

Freitag, 3. Juli 2015

Grails und SQL Logging

Problem: Die abgesetzten SQL Statements sollen in das Log, aber nicht in die Konsole.

Hintergrund: Die Ausgabe des SQL wird durch die Standardkonfiguration der Datenquelle in die Konsole geleitet.

Lösung: Die Log4j Konfigurationen nutzen, um die gleiche Ausgabe in einer separaten Logdatei ausgeben zu lassen.

Hier eine Beispielhafte Konfiguration in Grails 2.5.0.

Mittwoch, 1. Juli 2015

Zugriff über eigenen Datenbank-Client auf die H2 Datenbank bei der Entwicklung mit Grails

Problem

Mit einem eigenen Datenbank-Client können keine Datenbankabfragen gegen die voreingestellte Entwicklungsdatenbank von Grails abgesetzt werden.

Hintergrund

Der voreingestellte In-Memory Mode der H2 Datenbank macht den Zugriff auf die Daten der Applikation von einem anderen JVM Prozesses aus unmöglich.

Lösung

Der Automatic Mixed-Mode ermöglicht es die Datenbank gleichzeitig lokal und im Server Modus zu betreiben. Die H2 Datenbank verwaltet die Verbindungen dann so, dass dem ersten Prozess Zugriff im Embedded Mode ermöglicht wird und alle weiteren Prozesse bekommen Zugriff im Server Mode.


Die Dateien der Datenbank liegen bei der obigen Konfiguration in dem Verzeichnis data innerhalb des Projektverzeichnisses.

Der Datenbank-Client verwendet die gleiche Datenbankverbindungskonfiguration wie die Grails Applikation. Zu beachten ist lediglich, dass der Pfad zu den Datenbankdateien in dem Client eventuell angepasst werden muss.