Hier finden sich Neuigkeiten rund um interessante Themen aus der (Computer-)Technik und den Pelzkuh.de Development Server. Zugriff gibt es über die Trac Links.
Himbeerzeit - Das Warten hat ein Ende
Eine Email von RS Components trifft ein. Sicher wieder eine der seit mittlerweile gut vier Monaten regelmäßig eintreffenden Statusmeldungen der Art... "Wir arbeiten zurzeit mit Hochdruck daran Ihnen mitteilen zu können, wann Sie Ihre Bestellung für den Raspberry Pi aufgeben können...". Aber nein! RS Components freut sich tatsächlich mir mitteilen zu dürfen das mein Raspberry Pi tatsächlich auf den Versand wartet. Laut PiTracker dürfte mein Exemplar übrigens in etwa die Seriennummer 3500 tragen. Na da haben beim Vorbestellungs-Wettrennen seinerzeit wohl in den 10 Minuten die es gebraucht hat um zum - wirklich sehr langsam ladenden -Bestellungsformular vorzudringen 3500 andere Himbeerfans geschafft schneller zu bestellen.
Jetzt dauert es nur noch ~ sechs Wochen bis die Bestellung von der Insel bei mir eintreffen soll... to be continued in 6 weeks
Wenn die LED dreimal blinkt
Konkret geht es um den GPS-Logger WinTec WBT 202, ein etwas angestaubtes Konzept im Zeitalter von Smartphones, aber immer noch ein zuverlässiger Vertreter einer Gattung von Geräten, die, da auf einen Einsatzzweck optimiert, weit genauer arbeiten und dabei länger durchhalten als ihre stromhungrigen Pendants in Form von Handy-Apps. Indes das Nutzerinterface...
Wer sich das Gerät ansehen will: Hier gibt es das Handbuch. Was alles blinken kann, steht auf Seite 4 (Seite 7 im PDF)
Also: Dass es nur drei LEDs gibt und nur zwei Schalter ist nicht das Problem - das ist angesichts der bei einem GPS-Logger limitierten Use Cases nachvollziehbar - das Verhalten indes nicht.
Beispiel 1: Einschalten
Idee: einfach mal kurz auf die Power-Taste drücken. Von wegen:
"Halten Sie die Power-Taste länger gedrückt (ca. 3 Sekunden), um den Wintec WBT-202 einzuschalten."Auch das hilft nichts. Immerhin schaltet sich das Gerät ein, sobald man länger als drei Sekunden drückt und die Taste dann wieder loslässt.
Beispiel 2: Beginnen eines neuen Tracks
Idee: einfach mal kurz auf die Flag-Taste drücken. Kein neuer Track da.
"Drücken Sie die POI-Taste so lange gedrückt, bis die grüne GPS LED erlischt. Nun wurde die Aufzeichnung einer neuen Logdatei gestartet."Gut, sehe ich ein, dass kürzer Drücken sinnvoller mit "Wegpunkt setzen" belegt ist.
Beispiel 3: Gerät in den USB-Modus schalten.
Jetzt wird es spannend: Beim Vorgänger WBT-201 musste man das Gerät per Treiber einem virtuellen COM-Port zuweisen und die Baud-Rate einstellen. Das verspricht jetzt einen Komfortgewinn. Durch das beiliegende Kabel lässt sich das Gerät schnell an einen freien USB-Port anschließen.
"Drücken Sie die Power-Taste länger (ca. 3 Sekunden), bis die GPS LED und die Bluetooth LED ausgehen. Nun befinden Sie sich im MSD-Modus. Dies wird erkennbar durch die orange MicroSD LED, die gleichzeitig angehen sollte."Aha. Also gedrückt, LED gehen aus. Nichts. Hm. Wieder einschalten? Fehlanzeige. Also erst mal entnervt den Akku raus und wieder eingelegt. Was es zu lernen gilt: Es muss etwas länger gedrückt werden, als bis die beiden LEDs erlöschen (ca. eine vierte Sekunde), die orange LED geht aber wiederum erst beim Button-Release-Event an.
Ein üblicher Signalton und kurz später bietet mir Windows an, das neue USB-Gerät als Laufwerk zu durchsuchen. Ich frohlocke schon: gleich sehe ich meine gpx-Dateien. Weit gefehlt: Das nette Gerät speichert die Tracks in einem proprietären Binärformat, genannt TES. Und jetzt?
"Die vorinstallierte PC Software WBT-Tool, sollte mit folgendem Dialog automatisch starten. Wählen Sie hier bitte “WBT_Tool” aus und klicken auf “OK”."Aha, im Stammverzeichnis der Speicherkarte liegt tatsächlich eine WBT_Tool.exe. Die hilft also wie früher das COM-Tool. Also rasch auf die Platte kopiert und gestartet. Nichts. Sollte ich tatsächlich... Doppelklick auf die Datei auf der Speicherkarte. Tatsächlich öffnet sich ein Fenster, das den letzten Track anzeigt: Es ist der Browser! Keine weitere Wahlmöglichkeit, einfach nur eine Visualisierung des letzten Tracks auf Google Maps-Basis. Das ist das Default Behavior?
Es erfordert ein bisschen Zeit, bis ich bemerke, dass sich das eigentliche Tool als Symbol in den Infobereich zurückgezogen hat und sich durch Klick dazu überreden lässt, im maximierten Zustand Exportmöglichkeiten für die gespeicherten Tracks anzubieten: Neben gpx und nmea sogar shp, das in ein GIS importiert werden kann.
Bis zu diesem Punkt ist indes fast eine Stunde vergangen und ich frage mich doch ernsthaft, ob WinTec jemals sein Benutzungskonzept in einer Nutzerstudie überprüft hat - ich würde es für das nächste Produkt dringend empfehlen.
Abenteuerliche Umstellung auf Grub2
Standardmäßig kommen mit dem dist-upgrade ein neues udev, das die Umstellung von klassischen Gerätenamen (z.B. /dev/sda1) auf UUIDs als neuen Segen anpreist, sowie grub2, das sich zunächst (zu Recht) vorsichtig an Chainloading aus grub-legacy versucht und dann einen kompletten Umstieg (mittels update-from-grub-legacy) nahelegt.
Schön und gut, das hat in zwei VMs und auf zwei Rechnern zuvor auch einwandfrei funktioniert. Ein Fileserver hat aber mitunter mehr als nur eine Festplatte (in diesem Fall vier), und da fängt der Ärger auch schon an...
"dist-upgrade" war bis zu diesem Punkt inkl. grub2 einwandfrei durchgelaufen - nach dem fälligen Neustart nach Update von udev und Kernel wollte grub-legacy aber nicht mehr: "Error 17: Cannot mount selected partition." Also einen raschen Blick auf die gute, alte "/boot/grub/menu.lst" geworfen: Wieso steht da überall nur /dev/hda drin, obwohl ich doch schon auf UUID umgestellt hatte und außerdem nur SATA-Platten an Bord sind? Naja, was soll's - quick fix: die richtigen Einträge durch c&p der UUIDs aus /etc/fstab selbst zusammenbauen und schon funktionierts - Chainloading nach grub2 funktionerte zu diesem Zeitpunkt nämlich einwandfrei. Bereits hier fand ich seltsam, dass ich sda in grub zwar brav mit hd0, die Hauptinstallation unter sdb allerdings mit hd2 erreiche.
Also ein paar Tage später, als ich wieder Zeit hatte, sorgenfrei update-from-grub-legacy aufgerufen - dachte ich wenigstens... Nach dem Neustart erschien nämlich noch nicht mal mehr ein Bootmenü! Zum Glück gibt es heutzutage ja Rescue-CDs, die einem im Bootmenü gleich alle lokal installierten Linux-Versionen (/boot/grub/stage*) gleich mitanzeigen und dafür sorgen, dass der Fileserver auch ohne funktionierenden Bootloader verfügbar bleibt - kein schöner Zustand freilich.
Zunächst musste ich mich erst mal in grub2 eindenken: statt der handlichen menu.lst gibt es nun im selben Verzeichnis eine grub.cfg, die zwar alle nötigen Einträge zum Booten und jede Menge Intelligenz (Skripte) in sich trägt, aber nachdrücklich davor warnt, editiert zu werden. Also schön: Der Befehl "update-grub" sorgt offensichtlich nun dafür, dass alle nötigen Informationen in der grub.cfg zusammengetragen werden - die liegen verteilt:
- /etc/default/grub enthält ein nur ein paar Basisparameter: welches ist der Standardeintrag im Bootmenü, wie lange warten vor automatischem Booten, welche Auflösung hat die Grub-Konsole etc.
- Im Ordner /etc/grub.d/ liegen dagegen alle Informationen (wiederum teils in Skriptform), aus denen grub.cfg zusammengebaut wird - die Ziffern am Anfang jeder Datei regeln dabei in aufsteigender Ordnung die Verarbeitungsreihenfolge (das ist jetzt einfacher als vorher, weil??) Immerhin gibt es hier einen verheißungsvollen Dateinamen "40_custom" (also ganz am Ende, wenn alles andere schon verarbeitet wurde).
So weit so gut - wenn nicht in grub.cfg wiederum die hässlichen /dev/hda-Einträge (die mir sehr nach einem template aussehen, das ich bis jetzt nicht gefunden habe) gestanden hätten. Also die Radikalkur: grub2 mittels "apt-get install grub" (das alte heißt jetzt ja grub-legacy) komplett neu installieren. Das funtionierte nun einwandfrei, "update-grub" lieferte jetzt auch brav automatisch alle installierten Systeme (einschließlich des alten SUSE 10, mit dem ich mal angefangen habe und das ich bei der Umstellung auf Debian nach und nach bezüglich der Config-Dateien ausgeschlachtet habe, bis alles lief). Also freudig auf Neustart geklickt - und wieder nichts!
Ach ja, da war ja noch der seltsame Fehler, dass sdb im BIOS hd2 heißt - da hilft auch grub2 im laufenden System seine ganze Intelligenz nichts, das zu antizipieren. Also den "best fit" unter den Einträgen in grub.cfg nach 40_custom kopiert und dort einen einzigen, aber entscheidenden Buchstaben verändert, den Standardeintrag in /etc/default/grub angepasst und noch mal update-grub aufgerufen, um die Änderungen zu propagieren, wieder der bange Moment des Neustarts und juhu, endlich wieder Zeit für andere Dinge
Nach Odyssee zum Fit PC!
Von Anfang an war ich von der Idee besessen, einen Multimediaserver hinter den Fernseher zu stellen, der verschiedenste Funktionen übernehmen kann:
- Streaming Client für Audio an die Stereoanlage
- Streaming Client für Video an den Fernseher
- Samba-Fileserver für ein automatisches Backup unserer Nutzdaten, gleichzeitig "intelligentes" NAS
- Host für mein privates Wiki
- Host für den Drucker
Hintergrund war die nervende Tatsache, dass ich immer noch jedes Mal mein Notebook einschalten muss, wenn ich oder Anette von irgendeinem anderen Geräte aus drucken wollen, dass ich meine Mediensammlung redundant auf allen möglichen Abspielgeräten vorhalten muss und ich bei dem monatlichen Backup, das ich derzeit per Hand auf USB-Platte durchführe nach größeren Änderungen an der Datenstruktur jedes mal ein ungutes Gefühl habe, wenn ein System abstürzt (es könnte das letzte Mal gewesen sein...)
Weil so ein System sich natürlich für den Dauerbetrieb anbietet, sollte es aber nach Möglichkeit klein, leicht und schick sein und möglichst wenig Watt verbrauchen. So nahm die Misere ihren Ausgang...
Zunächst glaubte ich, bei einem Shuttle X27 fündig geworden zu sein, der schwachbrüstige Single-Core Atom und der orchestergleich lärmende Lüfter und der mit 30 Watt doch hohe Verbrauch belehrten mich aber schnell eines Besseren - zu allem Überfluss war der Lüfter den Anforderungen als Desktop-PC (als solchen habe ich ihn dann verwendet) leider nicht gewachsen - der Chipsatz hat insgesamt stolze 20 Monate durchgehalten, naja, immerhin gerade noch rechtzeitig, um als Garantiefall den Zeitwert ersetzt zu bekommen (die Tatsache, dass kein Ersatz vorhanden war, nehme ich als weiteren Beleg für die wenig ausgereifte Produktidee)...
Als nächster Schritt bin ich in das totale Gegenteil verfallen: sparsam auf Teufel komm raus war mit dem selbst aufgebohrten Linksys NSLU2 Network Storage Link auch keine gute Idee - sparsam und leise war er schon mal; allein die Linuxinstallation dauerte jedoch fünf Stunden und nach jedem Konfigurationsversuch als Druckerserver konnte ich eine halbe Stunde getrost etwas anderes erledigen (Man nannte ihn nicht zu unrecht "Sluggy"). Jedenfalls hat er seinen Dienst gar nicht angetreten...
Danach bin ich erst mal vorsichtig geworden und durch den Umzug standen auch andere Dinge im Vordergrund. Durch immer wieder neugieriges Recherchieren im Netz blieb ich aber auf dem Laufenden. So lernte ich mit der Zeit, dass es für die von mir besuchte Produktkategorie einen Namen gibt: Universal Embedded PC, also universell einsetzbar (anders als ein NAS), aber dafür mit Embedded-Technologie. Und dass es dafür einen Spezialisten gibt: die israelische Firma CompuLab. Soweit die gute Nachricht. Blöd, dass die Nachfrage in Deutschland für derartige Geräte im Privatkundensegment so niedrig ist, dass ich von vielen Anbietern ein schroffes "Gibt's nicht!" oder bestenfalls "Wir merken Sie vor!" gehört habe.
Dabei versprechen die Geräte von CompuLab genau das Mittel zwischen Sluggy und Shuttle :
- Passive Kühlung
- einen idle-Verbrauch von deutlich unter 10W
- HD-Wiedergabe über HDMI bis 720p
So ein Ding musste ich haben! Die unterschiedlichen Angebote waren jedoch sehr schwer abzuwägen:
Modell 1: Trimslice
Eigentlich die perfekte Idee: ein sparsamer ARM und HD-Graphik von Nvidia mit bis zu 250GB-Festplatte bei 2-6W(!) Verbrauch ohne Festplatte. Perfekt - wenn CompuLab und Nvidia nicht zu doof wären, ein ordentliches Linux auf die Hardware anzupassen, dass die Funktionen auch alle nutzt - was hilft mir die HD-Graphik, wenn Nvidia L4T nicht über beta hinausbringt und die Ubuntu-Anpassungen von CompuLab ebenfalls weder Flash noch HD unterstützen? Kollektives Warten auf Windows 8 embedded?
Modell 2: Fit PC3
Die klassische x86-Variante: Etwas höherer Verbrauch (ca. 8W ohne Festplatte, 320 GB Festplatte), dafür das Versprechen einer AMD-APU auf HD-Wiedergabe und eine weite Bandbreite unterstützter Linux-Distributionen. Begeistert hat mich hierbei das Konzept von Mint, das als Ubuntu-Fork das Multimedia-Konzept samt Codecs und XBMC-Unterstützung auf die Spitze treibt. Sollte es tatsächlich so einfach sein? Der Kauf war nur noch einen Klick entfernt, wenn, ja wenn nicht wiederum kein Händler in Deutschland bereit gewesen wäre, das Ding zu liefern. Glücklicherweise habe ich mit RISC einen Schweizer Anbieter gefunden, der mich nicht nur kompetent beraten, meine Wunschkonfiguration getestet und alle Sperenzchen bei Zahlungswünschen über sich ergehen ließ, sondern mit mir sogar noch darüber munter diskutierte:
Modell 3 : Intense PC
Ein echter Core-i3 in einem Passiv-PC von CompuLab! Kommt wahrscheinlich noch im Herbst 2012. Naja, aber was Besseres kommt ja immer nach... So ist es dann der Fit PC3 geworden.
Natürlich noch große Aufregung bis das Paket heute mit der Post eintraf. Ein erstes Anstecken von Strom und Netzwerk, USB-Boot nach Mint wie im Wiki beschrieben - ja bin ich tatsächlich schon drin??
Tja, hier steht er tatsächlich vor mir (Der USB-Stick kann auch ganz gut die Abmessungen illustrieren - kaum größer als ein Router!):

Die Einrichtung werde ich hier im Blog natürlich ausführlich begleiten. Mal sehen, was er so alles kann!
1) System aufsetzen
2) Samba einrichten für ein automatisches Backup von den Notebooks
3) Wiki portieren (endlich keine VM mehr!)
4) XBMC + entsprechende Android-App - schon wischt man komfortabel auf der Couch seine Lieblingslieder weiter!
5) Port forwarding für ssh - Zugriff auf die Daten von überall!
Wahrscheinlich wird jeder Punkt einen eigenen Blog wert, aber es lässt sich gut an!
DJK
JavaFX - first experience
Interessant gleich zu Beginn die Genealogie der Programmiersprache, die unter dem Kürzel F³ („Form follows function“) aus der Taufe gehoben wurde. Grundsätzlich handelt es sich dabei um ein alternatives Konzept, um neben Swing eine elegantere Möglichkeit zur Gestaltung graphischer Oberflächen zu bekommen. Das Motto steht dabei für den Anspruch, dass bereits der Code die Struktur der später sichtbaren Elemente widerspiegelt.
Ursprünglich als Skriptsprache konzipiert, um zu Flash und Silverlight aufzuschließen, plant Oracle nach dem Kauf von Sun die Integration in Java mit Fokussierung auf den mobile und embedded Bereich. Erstes Resultat ist der Relaunch als JavaFX 2.0, bei dem auch die Kompatibilität mit 1.x geopfert wurde, die Integration in Java 7 und die Unterstützung in der nächsten NetBeans-Version (7.1, RC2). Das ist in der Tat schnell installiert:
http://netbeans.org/kb/docs/java/javafx-setup.html
Durch diese Integration steht JavaFX auch allen Programmiersprachen offen, die auf bytecode kompilieren.
Konzeptioneller Ansatz ist, dass jede Oberfläche aus einer Stage und Scenes besteht. Die Stage rollt dabei gewissermaßen die Leinwand aus, der eine Scene als root übergeben wird. Alle übrigen Komponenten sind über den Scene Graph, einem baumartigen gerichteten Graphen, einer Eltern-Komponente zugeordnet. Diese kapselt dann – frei von LayoutManagern – die Fähigkeit, die Kind-Elemente entsprechend anzuordnen. Natürlich lässt sich das Default-Verhalten anpassen. Ganz ähnlich verhält es sich mit graphischen Elementen. Es muss also nicht mehr mit irgendwelchen draw-Methoden auf einer Komponente herumgemalt werden. Statt dessen hängt einfach ein Circle-Element im SceneGraph – und das weiß am besten, wie es sich malt.
Die Idee, die so entstandene Struktur deklarativ abzubilden, liegt nahe, und so können die Komponenten – ähnlich zu Android – als xml-Dokument definiert werden. Anders als bei Android können die Komponenten dann nicht einfach mit findViewByID zugegriffen werden, sondern müssen vorher im Code deklariert werden. Per Java Annotations werden dann die per xml vordefinierten Komponenten referenziert.
Für ein weiteres Konzept bedarf es der Modifikation des klassischen Getter- und Setter-Konzepts. Gekapselt als Properties, denen typisierte Observable Values zugewiesen werden können, erlauben sie ein einfach zu realisierendes Binding. Und schon passt sich die Breite des Fensters an den aktuellen Slider-Value an o.ä. So lassen sich auch komplexe Komponenten synchron halten.
Hinter dem Konzept Scene verbirgt sich aber natürlich auch der Gedanke, dass es bewegte Bilder sein können. Hier gibt es ein klassisches Timeline-Konzept, mit dem der Zielwert einer Darstellung und die Dauer der Transformation angegeben werden. Verkettet entstehen animierte Szenen, die sich auseinander entwickeln. Hierbei unterstützen Effects, die alle möglichen Arten von Animationen unterstützen. Passend zum deklarativen Gedanken können auch ganze Erscheinungsmuster als Pseudo-CSS deklariert werden und dann en bloc Komponenten zugewiesen werden. Dies kann sogar zur Laufzeit geschehen – einfach neues Pseudo-CSS unterschieben und schon sieht alles anders aus…
Fazit: ein erster Eindruck begeistert mit einem stringenten Konzept, dass einfach zu handlen ist, gerade weil es mit der klassischen Java-Philosophie bricht, und so Swing doch schnell spröde und altbacken wirken lässt, wenn es an die Gestaltung von Oberflächen geht.
Mehr unter: fxexperience.com