Installation Force.com IDE

Um die Entwicklungsumgebung für Salesforce zu installieren, muss man den Anleitungen bei developer.salesforce.com folgen. Wie leider üblich, erzählt diese Dokumentation nur die halbe Wahrheit. Zumindest bei meinen Versuchen hat es mit Eclipse 4.5 nicht funktioniert, es kam zu nicht-behebbaren Abhängigkeits-problemen.

Im Moment funktioniert es, wenn Eclipse Neon.2 (4.6.2) benutzt wird. Am einfachsten ist es, den Installer für Neon zu benutzen, da dann Eclipse IDE for Java Developers auswählen. Danach kann man der Dokumentation folgen, und es sollte funktionieren. Leider kommen ein paar der Pakete aus unsignierten Quellen, daher muss diese Installation nochmal extra bestätigt werden.

Atmel Mikrocontroller Programmieren mit Olimex AVR-ISP-MK2

Ich wollte ein Projekt mit AVR Mikrocontrollern machen. Zum einen, weil ich glaube, dass das für mein aktuelles Problem eine gute Idee ist, zum anderen, weil ich mal einen µC programmieren wollte. Auf Mikrocontroller.net gibt es ein Tutorial, das am Ende der Hardwareeinführung schön schreibt, dass man erst weiter machen soll, wenn die IDE mit der Hardware spricht….

Dafür habe ich mir bei Pollin den Olimex AVR-ISP-MK2 Programmer gekauft. (Bei Pollin 34,95€ + 4,95€ Versand, bei Olimex direkt 19,95€ + 15,76€ Versand).
Mit dem Atmel Studio 7 unter Windows 7 wollte der zunächst nicht laufen, die Fehlermeldung war „Unable to connect to tool AVRISP mkII (000200212345)“. In dieser Diskussion habe ich zum Glück eine Lösung dafür gefunden: Zadig mit dem Treiber libusb-win32. Allerdings habe ich auch Meldungen gefunden, dass das nicht zuverlässig sei, mal sehen.

Alleine mit dem Umstellen des USB-Treibers hat es bei mir immer noch nicht funktioniert. Erst, als der Olimex Programmer direkt an einem USB-Port am Rechner hing, und nicht – wie vorher – an einem USB-Hub, konnte ich das erste Programm tatsächlich zum Laufen bekommen.

Huawei Ascend Y200 (U8655) – Android 2.3 unter 100€

Direkt am ersten Verkaufstag habe ich mir gestern bei Lidl das Y200 gekauft. Für 99,99€ gab’s dafür das Telefon mit einer Fonic-SIM-Karte, die einem einen Monat kostenlose Datenverbindung liefert (500 MB HSDPA, ab da dann GPRS). Ich kann mich dem Test von Chip in allen Punkten anschließen, so brauch ich über die Ausstattung und Qualität nichts schreiben. Ich möchte aber wirklich auf die eingebaute Kamera hinweisen, denn die stinkt meiner Meinung nach erheblich und ist nicht mehr zeitgemäß.

Zum Radio hören muss man einen Kopfhörer eingesteckt haben, dafür reicht aber ein handelsüblicher Stereohörer. Irgendwie finde ich das ja gut, dann ist der Lautsprecher erstmal aus. Die ganzen Leute in Straßenbahnen mit ihren Plärrgeräten gehen mir schon genug auf die Nerven. Aber der eingebaute Verstärker ist erheblich schwächer als der von meinem MP3-Player. Das Telefon muss ich auf maximale Lautstärke stellen während die selben Stücken im MP3-Player angehört bei etwa 60% laufen. Wird die Kamera in Betrieb genommen, schaltet das Telefon die Wiedergabe von Radio direkt aus, auch wenn ich nicht sehe, warum Radio ein Foto beeinträchtigen sollte.

Aber ich hab das ja auch nicht gekauft, um etwas für’s Musikhören zu haben, oder zum Telefonieren (siehe auch Chip: der Gesprächspartner hört viel Rauschen), auch nicht, um gut Fotos zu machen, sondern um einen tragbaren Computer zu haben. Dass die anderen Funktionen mit dran sind, haben mir nur die Entscheidung einfacher gemacht. Insbesondere nachdem ich Android 2.2 auf einem Netbook gesehen habe, hat es mich sehr interessiert, ob das auf einem Telefon besser funktioniert. Und da kann ich nur sagen: ja, Android ist für Telefone besser geeignet als für Netbooks.

Dazu kommt noch, dass ich bisher keinen GPS-Empfänger mit Display habe, sondern nur einen Logger. Der macht zwar seine Arbeit gut, aber des öfteren fehlte es mir schon, dass ich nur hinterher wusste, wo ich genau war. Heute mach ich dann mal einen Vergleich der Aufzeichnungen zwischen den Empfängern.

Nach der Arbeit gestern hatte ich dann direkt angefangen, das Android SDK herunter zu laden, um erste Versuche im Telefonzerhacken machen zu können. Leider waren einige Downloads so langsam, dass das Paket vor dem Schlafen gehen nicht fertig wurde.

Raspberry Pi und die Mirrors

Ich habe meine Resourcen für Raspberry Pi zur Verfügung gestellt, auch hier ist ein Mirror der Files verfügbar. Eigentlich sogar 2, ein weiterer liegt noch auf meiner JiffyBox. Jetzt am Donnerstag sollen ja die Tests der ersten Charge über die Bühne sein.

Leider steht vor dem Erfolg der Schweiß, oder so ähnlich. Aus diesem Grund konnte das mit dem Mirror auch nicht ‚einfach so‘ klappen. Zum einen wollte ich auf meinem virtuellen Server keinen FTP-Zugang einrichten und zum andern lässt der Tarif, den ich hier für meine Webseiten gebucht habe, Directory listing nicht zu. Ich wollte auch nicht unnötig viel Arbeit für die R-Pi-Leute machen, also musste mal eben eine eigene Lösung her. Bestimmt gibt’s dafür eine Lösung auch fertig irgendwo her, aber wo ist dann der Spaß?

Also die Aufgabenstellung: synchronisiere 2 Server mit einem 3. Server und erzeuge ein Directory Listing ohne das Apache-Modul. Meine Lösung sieht vor:

  1. rsync vom raspberry-pi Server auf meinen virtuellen Server
  2. index.html erstellen für jedes Verzeichnis, mit Auflistung aller Unterverzeichnisse und Dateien
  3. Alle Dateien (inklusive der erstellten index.html) vom virtuellen Server auf den Webhosting-Server synchronisieren.

Ist alles ja gar nicht so schwer. Zu 1. wird auf dem virtuellen Server rsync ausgeführt:

rsync -azPv rsync://rsync-source/ /var/www/mirror/

Ich weiß jetzt nicht so wirklich, ob die Leute von Raspberry Pi es so gut fänden, wenn ich die Serveradresse verrate, deshalb lasse ich die hier mal weg.

Zu 2. habe ich dann ein PHP-Skript geschrieben, dass rekursiv durch die Verzeichnisse geht und entsprechende Dateien schreibt. Ja, es ist Quick & Dirty…:

<?php
function createIndex($folderName,$displayRoot) {
    $output = "<html><head><title>$folderName</title></head><body><h1>Index of $displayRoot</h1><table>";
    $i=0;
    $allEntries = null;
    $currHandle = opendir($folderName);
    if ($currHandle !== FALSE) {
        $currEntry = readdir($currHandle);
        while ($currEntry !== FALSE) {
            $allEntries[$i++] = $currEntry;
            $currEntry = readdir($currHandle);
        }
        sort($allEntries);
        foreach ($allEntries as $currEntry) {
            $procThis = $folderName . '/' . $currEntry;
            if (is_dir($procThis)) {
                if ($currEntry != '.' && $currEntry != '..') {
                    createIndex($procThis, $displayRoot . '/' . $currEntry);
                }
                $fsize = 0;
            }
            else {
                $fsize = filesize ($procThis);
            }
            if ($currEntry != '.' && $currEntry != 'index.html') {
                $output .= "\n<tr><td><a href=\"$currEntry\">$currEntry</a></td>";
                if ($fsize > 0) {
                    $output .= '<td>' . $fsize . ' bytes</td><td>' . date ("Y-m-d H:i:s.", filemtime($procThis)) . '</td>';
                }
                else {
                    $output .= '<td></td><td></td>';
                }
            }
            $output .= '</tr>';
        }
    }
    $output .="</table></body></html>";
    $handle = fopen($folderName . '/index.html','w');
    fwrite($handle,$output);
    fflush($handle);
    fclose($handle);
}
createIndex("/var/www/mirror", "/mirror");
?>

Das ganze Verzeichnis wird dann zu 3. per lftp mit dem Webhosting-Server synchronisiert:

open ftp://user:password@ftp.loco-toys.de
mirror -R -v --only-newer /var/www/mirror/ /

Diese 2 Zeilen in eine Datei geschrieben (z.B. synch.lftp) und der Aufruf erfolgt dann mit

lftp -f synch.lftp

Diese 3 Schritte werden dann noch sinnvoll in der crontab eingetragen, und schon haben wir 2 weitere Mirrors für Raspberry Pi.

Bleibt nur noch zu hoffen, dass ich überhaupt einen der Dinger aus der ersten Charge bekomme, und dass meine Mirrors nicht so beliebt sind, dass mir die Domains geperrt werden.

Java mp3info Bibliothek zu vergeben

Ich habe vor längerer Zeit die Java-Bibliothek mp3info geschrieben. Damit ist es möglich, in weiten Teilen ID3v2-Tags zu lesen, manipulieren und schreiben. Ich komme leider einfach nicht mehr dazu, mich um diesen Code zu kümmern. Wenn jemand Interesse daran hat, dieses Projekt zu übernehmen und es wieder auferstehen zu lassen, würde ich mich sehr freuen.

Die Implementierung ist zugegebenermaßen nicht das beste Beispiel für Javacode, ist aber recht fortgeschritten. Alle Funktionen zum Lesen und Schreiben der Tags funktionieren stabil, eine weitreichende Unterstützung von ID3-Frames ist eingebaut, eine Möglichkeit zum Erweitern außerhalb des Codes ist auch vorhanden. Die Library wurde in einigen Projekten genutzt und ist auch einigermaßen dokumentiert. Damals zumindest war es die vollständigste Implementierung des Standards, die in Java existierte.

Die Lizenz ist LGPL und wenn jemand ernstes Interesse an der Weiterentwicklung des Projekts hat, würde ich mich freuen, die Kontrolle abzugeben.

Der derzeitige Zustand kann auf SourceForge begutachtet werden.

FrOSCon 2011 Tag 2

Wie ich es mir schon dachte, 10:00h ist nicht die Zeit für mich, um an einem Sonntag sowas wie Arbeit zu machen. Dank des Streamings konnte ich mir beim Kaffee Kristian Köhntopps Eight rollouts a day keeping downtime away (Hier die Folien) ansehen. Sehr interessant, genauso wie auch Redaktionelle Hochlast -Webseiten am Beispiel von Stern.de.

Frau Andresen muss ich besonders danken für Das perfekte Team – bestehend aus lauter klugen Köpfen, hat sie mir doch damit sehr genau vor Augen geführt, was eigentlich das Problem in meinem jetzigen Job ist. Weitere aufschlussreiche Präsentationen von ihr sind bei Slideshare zu finden.

Dann ging es weiter mit PHPopstars, ein sehr unterhaltsam gemachter Vortrag zum Thema Vorträge. Dank Kristian wissen wir jetzt endlich, warum Elefanten keine guten Haustiere sind, und Tobias hat mich auf Zeta Components aufmerksam gemacht. Während die Aufräumarbeiten bereits begannen folgte dann noch Drupal – breaching our way in. Vielen Dank auch dafür, wie allerdings bemerkt wurde, war der Rahmen eines Vortrags für das Thema etwas knapp. Aber eine schöne Einführung in Drupal, nächstes Mal wird das eher ein Workshop… oder ein 2 Stundenvortrag.

FrOSCon 2011

Ich bin gerade von der FrOSCon wieder nach hause gekommen. Wie immer war es sehr informativ. Ich danke den Veranstaltern und Vorträgern für ein gelungenes Programm. Sehr schade ist nur, dass vieles, was mich interessiert, parallel läuft. Wenn es nach meinen Interessen ginge, würde die Veranstaltung aber ewig dauern.

Recht interessant am Rande fand ich freedroidz, spielerisch programmieren lernen.

Morgen geht’s weiter, jeder Vortrag wieder eine Entscheidung zwischen 2 oder 3 Themen, die mich interessieren. Am schlimmsten ist fast schon, dass um 10:00h direkt 4 Sachen sind, die ich gerne besuchen würde, aber ehrlich gesagt, es ist Sonntag… um die Zeit trinke ich gerade meinen ersten Kaffee.