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

In LilyPond sieht die Syntax für Wiederholungen mit den bekannten "Klammern" oder auch "Kästen" so aus:

\repeat volta 2 { music } \alternative { {music-1} {music-2} } music

Daraus wird dann dank LilyPond lesbare Musik:

alt text

Jetzt brauchte ich aber unter der Klammer 2 ein Wiederholungszeichen. Wie man das mit LilyPond umsetzen kann, hat sich mir nicht gleich erschlossen. Nach einiger Rumprobiererei und ergebnislosen google-Suchen habe ich dann kurz selbst nachgedacht und bin auf die Lösung gekommen. Die gesamte Klammer 2 muss die zu wiederholende Musik sein. Also so etwas:

\repeat volta 2 { music } \alternative { {music-1} {\repeat volta 2 { music-2 music }} } 

Mit diesem Pattern kommt man zu folgendem Ergebnis:

alt text Hier geht die Klammer über alle Takte. Bei zwei Takten ist das noch nicht so schlimm, aber wenn es mehr Takte werden ist das für den Musiker schon verwirrend und sieht auch nicht schön aus. Zum Glück kann man aber LilyPond mitteilen wie lang die Klammern sein sollen. Damit ergibt sich dies:

\repeat volta 2 { music } \alternative { {music-1} {\set Score.voltaSpannerDuration = #(ly:make-moment 2/2) \repeat volta 2 { music-2 music }} } 

Und damit wird dann auch das gewünschte Notenbild gezeichnet:

alt text


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