Eine Website, die ich sehr gern mag, ist iMensa - der Speiseplan der verschiedenen Augsburger Unis für die aktuelle und die nächste Woche. Leider funktioniert die Seite zur Zeit nicht.
Der Grund dafür ist so einfach wie dämlich: Die Seite, auf der das Studentenwerk selbst die Speisepläne für Desktops anbietet, hat ganz katastrophales HTML und wird wohl händisch aktualisiert, von PowerPoint, oder noch irgendwas schlimmeres. Für den normalen Anwender ist es nicht so schlimm, schließlich sieht die Seite dennoch immer gleich aus. Möchte man diese Seite jedoch für mobile Endgeräte (Handys, iPods, etc) auch anbieten, muss man dazu die Seite des Studentenwerks parsen. Die Formatierung geschieht mit Tabellen und ist auch nicht hierarchisch angelegt. Die bisherige Herangehensweise bei iMensa verlässt sich anscheinend auf das jeweils aktuelle Markup (Breite von <td>s oder so), jetzt hat sich dieses aber wohl geändert und iMensa geht auch nicht mehr.
Nachdem ich selbst mit lxml.etree und BeautifulSoup versucht habe, halbwegs brauchbar das Markup zu parsen, hab ich’s kurz drauf gleich wieder gelassen, das klappt einfach nicht. Stattdessen habe ich mir einen Screenscraper programmiert, der die aktuellen Mensaprogramme ausliest und mit RegEx analysiert. Vielleicht hält das ja länger.
Wer sich für das Script interessiert, kann es sich hier ansehen. Es ist in Python geschrieben und hat als Dokumentation lediglich seine Docstrings. Besonders kompliziert ist es allerdings nicht.
Virtuelle Maschinen sind etwas sehr praktisches, wenn man Webseiten plant und betreibt. Nicht nur kann man damit alle möglichen Internet Explorer testen, man kann auch zu installierende Software zunächst auf einer virtuellen Maschine testen, bevor man auf dem Testserver anfängt, Abhängigkeiten und ähnlichen Ballast zu installieren. So bleiben Arbeits-Computer und Entwicklungsserver frei von Unordnung.
Hin und wieder hat man sogar die Gelegenheit, komplexere Setups gebräuchlicher Software direkt fertig konfiguriert herunterzuladen. Für manche Arbeiten kann man sich so sehr viel Mühe ersparen. Das Stichwort heißt “Appliances”, man bekommt hier meist Festplattenabbilder fertiger virtueller Maschinen, auf dem ein Produkt samt Abhängigkeiten und Infrastruktur (Mailserver, Webserver, etc) zum Test bereitstehen.
Vor kurzem sollte ich jemanden beim Test von Dokuwiki unterstützen. Webspace war noch keiner vorhanden und Webserver-Pakete samt Abhängigkeiten auf dem Laptop installieren erschien vom technischen Horizont her auch nicht besonders praktikabel in diesem Fall.
Bei kurzer Recherche stieß ich auf Bitnami. Dort lassen sich “Stacks” mancher Produkte herunterladen - entweder native, also Installationspakete für den jeweiligen Rechner oder virtual. Die Auswahl an Stacks ist nicht ganz ohne: Mediawiki, Drupal, Wordpress, SugarCRM… Zum Test also gar nicht so schlecht. Die virtual Stacks sind einfach VMWare-Festplatten und deren Definitionen. Man kann hierzu entweder den kostenlosen VMWare Player herunterladen und einsetzen oder aber auch VirtualBox, eine kostenfreie aber sehr mächtige Virtualisierungslösung. Hier im folgenden wird der Betrieb der Bitnami-Stacks mit der VirtualBox beschrieben. Die Anleitung ist kurz, schließlich ist der Prozess besonders einfach - behandelt werden hier insbesondere die Fallstricke.
Unter Linux kommt wohl Banshee iTunes am nächsten, was Kompatibilität mit MP3-Playern angeht; es wird Grundlage für diesen Post.
Meinen iPod kann ich, samt Wiedergabelisten, damit problemlos synchronisieren. Problematischer ist, andere Geräte anzuschließen und Musik zu übertragen. Die wenigsten Handys etwa bieten eine Synchronisationsschnittstelle, man muss die Musik per Drag&Drop übertragen. Banshee kann das zwar übernehmen, auf keine der beiden Weisen lassen sich allerdings Wiedergabelisten übertragen.
Glücklicherweise unterstützen die meisten Handys durchaus Wiedergabelisten, solange es .m3u-Dateien sind, welche relative(!) Pfadangaben enthalten. Wenn der komplette Pfad zur Musik auf dem heimischen Computer drin steht, hilft das dem Handy wenig. In meinem Fall geht es um mein “Smart”phone, den Palm Pre. Der kommt damit prima klar.
Ich habe ein Script programmiert, was aus Banshee’s sqlite-Datenbank die Wiedergabelisten extrahiert und auf Wunsch die ausgewählte, samt Liedern, in ein eigenes Verzeichnis kopiert. Dabei wird der ID3-Tag “album” mit “Playlists” überschrieben, damit die “Nach Album sortieren”-Ansicht des Mp3-Players keine Alben mit nur einem oder zwei Liedern anzeigt.
Das Script funktioniert, es fehlen jedoch noch ein paar Dinge: zuallererst die GUI. Bisher funktioniert alles auf der Kommandozeile. GUI kommt aber noch. Außerdem ist in Planung, statt lokaler Dateien auch alles über GVFS erreichbare benutzbar zu machen. Dadurch könnten dann auch Dateien von Dateifreigaben im Netzwerk, aus dem Internet, etc kopiert werden. Interessanter ist diese Funktion auf der “Ziel”-Seite. Der Palm Pre etwa bietet die Möglichkeit, per SSH über WLAN Dateien zu verwalten. Man könnte so seine Musik wireless übertragen.
Wer sich für die Entwicklung interessiert oder das Script auch ohne GUI einsetzen möchte, findet das Open Source-Projekt (GPLv3) bei Github:
Mindestens genauso schlimm wie Blogs mit schlechter oder gar keiner Zielsetzung finde ich die Rechtfertigung, zu der sich manche bezüglich der Frequenz zur Einstellung neuer Beiträge oder generell des Vorhandenseins ihres Auftritts genötigt fühlen. Daher halte ich mich kurz:
In meinem (jetzt noch) neuen Blog geht es hauptsächlich um die Verwendung freier Software im groben Gebiet Webentwicklung & -Design sowie im entferntesten Sinne um selbst erstellte Software. Persönlichere Anliegen aus dem nicht-so-privat - Leben gibt es bei Facebook. Die Thematik hier ist also streng begrenzt, themenfremdes gibt es eher selten. Über die Gesellschaft etwa wird fast nie geredet werden. Außer, es geht um Software…
Einige Schlagworte vorneweg, über die ich zu schreiben beabsichtige:
Das ist aber natürlich nicht alles.