Für ein Uni-Projekt habe ich die Aufgabe, eine E-Learning Applikation zu entwerfen. Diese soll zunächst als Web-App realisiert werden, die Möglichkeit native Apps für mobile Endgeräte nachzuentwickeln, soll allerdings auch vorhanden sein.

Für diese Anforderungen eignet sich ganz besonders die Kombination (REST)-api im backend und JavaScript MVC Framework für das frontend. Da ich normalerweise Web-Anwendungen mit Java/MySQL/JSF entwickle, wäre zumindest schon mal das frontend neu für mich gewesen. Um das Ganze noch interessanter zu machen, habe ich zusätzlich noch die Programmiersprache im Backend und die Datenbank geändert.

Als Programmiersprache für das backend werde ich go von Google benutzen und als Datenbank postgresql. Interessant an go ist vor allem die Art des deployens: Es wird eine komplett eigenständige binary mit Runtime und Garbage Collector erstellt. Beim jetzigen Projektstand ist diese lediglich 7,3MB groß (kompiliert mit go 1.7rc6). Es gibt noch viele weitere Dinge, die go anders macht als andere Programmiersprachen, doch für mich ist dies der interessanteste Unterschied zu Java, wo die "fat-WARs" schon mal 30-40 MB groß sein können mit allen Abhängigkeiten.

Für das frontend habe ich mich zunächst für emberjs entschieden. Da ich noch nicht mit der frontend-Entwicklung begonnen habe, kann ich hierzu noch nicht so viel schreiben, außer dass mir die Tutorials besser gefallen haben als die von Angular. Bei emberjs scheint mir alles etwas klarer und die Struktur der Applikation mehr vorgegeben zu sein.

Die Blog-Serie soll keine minutiöse Beschreibung der Entwicklung werden, sondern vielmehr interessante Entdeckungen und Entscheidungen festhalten.


Da ich Swing etwas hässlich finde und eclipse RCP Projekte den Hang haben, bei der Auslieferung etwas riesige Dateigrößen anzunehmen, wollte ich mich mit JavaFX beschäftigen.

Lange Zeit war das etwas schwierig, da JavaFX im openjdk von Debian und Ubuntu (zumindest hieß es das, ich habe es damals nicht überprüft) nicht enthalten war. Jetzt hat sich die Lage etwas geändert. Für Debian Jessie gibt es in den Backports sowohl Pakete für openjdk8 als auch für openjfx. Zuerst müssen diese also installiert werden:

echo "deb http://http.debian.net/debian jessie-backports main" >> /etc/apt/sources.list
apt-get update
apt-get -t jessie-backports install openjdk-8-jdk openjfx

Leider ist in dem openjfx Paket der SceneBuilder nicht enthalten und auch Oracle liefert keine binaries mehr aus. Zum Glück gibt es aber andere nette Menschen, die einem die Arbeit abnehmen und den Code compilieren. Bei Gluon kann man sich die Binaries downloaden.

Ich habe mich hier für die executable jar entschieden, da mir der Unterschied von 2,6 MB für die jar zu den 44,9 MB für die .deb doch etwas heftig erschien. Um diese dann mit e(fx)clipse benutzen zu können, muss noch ein kleines wrapper-script angelegt werden:

cp Downloads/SceneBuilder-8.0.0.jar /usr/lib/jvm/java-8-openjdk-amd64/
echo "java -jar /usr/lib/jvm/java-8-openjdk-amd64/SceneBuilder-8.0.0.jar \$1" > /usr/local/bin/fxscenebuilder
chmod +x /usr/local/bin/fxscenebuilder

Damit kann man dann in eclipse in den Einstellungen für die SceneBuilder executable den Pfad "/usr/local/bin/fxscenebuilder" angeben.


Auf der Dolphin-Website gibt es zwar Pakete für Linux, allerdings sind diese für Ubuntu gebaut worden und in debian jessie kann eine Abhängigkeit (libpulse0) nicht erfüllt werden, weshalb die Pakete die Installation verweigern.

Da auch im Wiki die Beschreibung zum kompilieren (bzw. die Paketlisten) auf Ubuntu zugeschnitten sind, musste ich etwas länger suchen, um die richtigen Abhängigkeiten zu finden. Fündig wurde ich dann auf github. Hier nun also die Schritte für debian:

Zunächst benötigen wir git, um den sourcecode von github zu laden:

apt-get install git
git clone https://github.com/dolphin-emu/dolphin.git

Die Abhängigkeiten (mit pulse-audio als sound-backend):

apt-get install cmake g++ libwxbase3.0-dev libwxgtk3.0-dev libgtk2.0-dev libbluetooth-dev libxrandr-dev libxext-dev libreadline-dev libpulse-dev libusb-1.0-0-dev

Dann in das source-Verzeichnis wechseln, den Build-Ordner erstellen, in ihn wechseln, mit cmake konfigurieren und mit make kompilieren:

cd dolphin
mkdir Build && cd Build
cmake ..
make

Dann noch als root:

make install

LilyPond "Wiederholung unter der Klammer"

Ich wollte eine Trompetenstimme mit LilyPond transponieren. In dem Stück gab es aber unter der "Klammer 2" ein weiteres Wiederholungszeichen. Ich beschreibe wie ich dies in LilyPond umgesetzt habe.

weiterlesen

Java substring() Performance

Ein Blick auf die substring() Implementierung in der openJDK Standardbibliothek und warum sie für mich ungeeignet war.

weiterlesen

lftp und SSL

Sa 20 Dezember 2014 by Oliver Paetzel
Tags: lftp ssl pelican makefile

Konfiguration von lftp zum syncen der pelican-Seite auf den Server mit erzwungenem SSL

weiterlesen

Erster Post

Mi 03 September 2014 by Oliver Paetzel
Tags: first erster blog pelican python jinja2

Mein erster Blogeintrag. Hier geht es um die Einrichtung dieses Blogs mit pelican.

weiterlesen