SucheBlog abonnierenVerwaltung des BlogsKategorienKontaktMarkus Brückner |
Tuesday, 18. November 2008Pylons und Elixir + Session-HandlingWer mal entspannt Webapplikationen entwickeln will/muss, dem sei Pylons ans Herz gelegt. Nettes Framework, noch einige kleinere Ecken, aber schonmal sehr angenehm zum Entwickeln geeignet. Meist liegt hinter einer Webapplikation ja ein entsprechendes Datenmodell in Form einer Datenbank. Um die bequem ansteuern zu können (SQL von Hand zu coden ist mittlerweile definitiv nicht mehr schön) bringt Pylons eine Integration für SQLAlchemy mit. Nun ist SQLAlchemy flexibel und mächtig, dafür aber manchmal etwas komplexer als nötig. Für viele Anwendungsfälle reichen die Möglichkeiten, die Elixir mitbringt (Elixir ist eine auf SQLAlchemy aufsetzende Bibliothek, die einen deklarativen Stil zur Erstellung des Datenmodells ermöglicht). Mit diesem Trio kann man schonmal recht viel Interessantes tun. Blöd nur, wenn man ein wenig faul bei der Einbindung der verschiedenen Module ist. Dann kann es nämlich dazu kommen, dass plötzlich folgende Fehlermeldung auftritt, wenn man versucht was in der Nutzersession im Pylons zu speichern: TypeError: 'ScopedSession' object is unsubscriptable Der Datentyp deutet es an: das session-Objekt von Pylons ist unter diesem Namen nicht verfügbar. Der Fehler ist simpel: im Datenmodell der Applikation stand mal from elixir import * (um Schreibarbeit bei den Elixir-Datentypen zu sparen). Im Controller wiederum wurde das Datenmodell mit from app.model import * importiert. Tja... Elixir definiert dummerweise ein eigenes session-Objekt, welches durch diese Import-Kette in den Namensraum der Applikation gerät und dort dann das eigentliche Pylons-Objekt überschreibt. Als Lösung bleiben drei Möglichkeiten: man kann den Import im Datenmodell in import elixir ändern und allen Datentypen ein elixir. voransetzen, die benötigten Elixirtypen mittels from elixir import Field, .... im Datenmodell importieren (und dabei keinesfalls session mit reinnehmen) oder in der Applikation das Datenmodell mittels import app.model as m und dann jedem Zugriff auf Elemente des Modells ein m. voranstellen. Danach hat man wieder wie gewünscht Zugriff auf seine Session und kann Daten darin speichern und daraus lesen. Monday, 20. October 2008QWidget auf minimal notwendige Größe bringenManchmal kann man sich auch einen Wolf suchen. Ziel war: ein Widget in dem sich mehrere Children befinden (QLineEdit, Checkboxen, QTableView) immer auf die minimal notwendige Größe zu bringen. Das gilt speziell dann, wenn der QTableView unsichtbar wird. Mit etwas um die Ecke denken geht's: widget->setMaximumHeight(0). (Im dem Fall ging es nur um die Höhe). Muss man erstmal drauf kommen... Update: Unsinn gelöscht. Man schaue sich mal QWidget::adjustSize() an... Thursday, 28. August 2008PyQt4 und QAbstractItemViewNach zweitägiger Suche: Python und QT können manchmal sehr hässlich zusammenstoßen, wenn es um die Lebensdauer von Objekten geht. Folgender Code:
class MainWindow(QMainWindow):
[...]
def initTreeView(self, top_level_cats):
model = CategoryModel(top_level_cats)
self.treeview.setModel(model)
[...]
Sieht an sich erstmal unverdächtig aus: ein Model wird erzeugt (wie auch immer geartet) und dem Ein winzig kleine Änderung des Codes bringt die Lösung. Hier fast die gleiche Funktion:
class MainWindow(QMainWindow):
[...]
def initTreeView(self, top_level_cats):
self.model = CategoryModel(top_level_cats)
self.treeview.setModel(self.model)
[...]
Der einzige Unterschied: statt einer lokalen Variable ist Eigentlich logisch. Wenn man's einmal weiß... Sunday, 24. August 2008Eclipse Ganymede und SubversionDer Titel sagt es schon: es geht um Eclipse Ganymede und Subversion. Beides meiner Meinung fantastische Tools zur Softwareentwicklung, in Kombination allerdings gerade etwas zickig. Das Problem: bei Eclipse Europa (3.3) wurde meist für die Subversion-Integration das Plugin Subclipse verwendet. Für Ganymede (3.4) gibt's das allerdings noch nicht. Dafür gibt es ein neues Plugin direkt im Ganymede-Repository: Subversive. Dieses Plugin soll wohl bald standardmäßig in Eclipse integriert werden. Es ist quasi deckungsgleich mit dem schon bestehenden CVS-Plugin und integriert sich sehr gut in die Oberfläche. So schick das Plugin ist: mir scheint, die Eclipse-Jungs und -Mädels haben bei der Zusammenstellung von Ganymede gepennt. Dummerweise ist nämlich der eigentliche Team-Provider integriert, die Library zum Zugriff auf die SVN-Repositories allerdings nicht. Die darf man sich zu Fuß nachinstallieren. Dabei darf man sich dann auch noch entscheiden, welche man nimmt. Ich hab mich letztlich für SVNKit entschieden, weil mir die Idee gefällt, allen Kram gleich in Java abzuwickeln, statt externe Libs einbinden zu müssen. Dummerweise begrüßt mich mein Eclipse bei der Installation von SVNKit mit folgenden Zeilen: Cannot find a solution where both Match[requiredCapability: org.eclipse.equinox.p2.iu/org.eclipse.team.svn.feature.group/[0.7.1.I20080612-1500,0.7.1.I20080612-1500]] and Match[requiredCapability: org.eclipse.equinox.p2.iu/org.eclipse.team.svn.feature.group/[0.7.2.I20080801-1500,1.0.0)] can be satisfied. Unsatisfied dependency: [org.polarion.eclipse.team.svn.connector.svnkit.feature.group 2.0.2.I20080801-1500] requiredCapability: org.eclipse.equinox.p2.iu/org.eclipse.team.svn.feature.group/[0.7.2.I20080801-1500,1.0.0) Unsatisfied dependency: [org.polarion.eclipse.team.svn.connector.svnkit.feature.group 2.0.2.I20080801-1500] requiredCapability: org.eclipse.equinox.p2.iu/org.polarion.eclipse.team.svn.connector.feature.group/0.0.0 Unsatisfied dependency: [org.polarion.eclipse.team.svn.connector.svnkit15.feature.group 2.0.2.I20080801-1500] requiredCapability: org.eclipse.equinox.p2.iu/org.eclipse.team.svn.feature.group/[0.7.2.I20080801-1500,1.0.0) Unsatisfied dependency: [org.polarion.eclipse.team.svn.connector.svnkit15.feature.group 2.0.2.I20080801-1500] requiredCapability: org.eclipse.equinox.p2.iu/org.polarion.eclipse.team.svn.connector.feature.group/0.0.0 Unsatisfied dependency: [org.polarion.eclipse.team.svn.connector.feature.group 2.0.2.I20080801-1500] requiredCapability: org.eclipse.equinox.p2.iu/org.eclipse.team.svn.feature.group/[0.7.2.I20080801-1500,1.0.0) Ja, diese Fehlermeldung ist auch im Original so unlesbar. Nach längerem Suchen bin ich in einem Blog auf die Lösung gestoßen: Seit 3. August möchte SVNKit eine neuere Version von Subversive haben (oder andersrum, so 100% schlau bin ich noch nicht draus geworden). Die ist dummerweise nicht in den Ganymede-Repositories, sondern muss unter http://download.eclipse.org/technology/subversive/0.7/update-site/ extra bezogen werden. Diese URL packt man in die Update-Site, muss sie dann noch einmalig via "Manage Sites..." aktivieren und schon kann man sich ein neueres Subversive installieren, was dann auch mit SVNKit spielen mag. Schade, dass die Standardintegration in Ganymede so kaputt ist. Bis zum Nachfolger dauert es ja doch ein wenig und bis dahin sind wahrscheinlich schon einige an Subversion und Eclipse verzweifelt und benutzen glatt wieder CVS *brrrr*... Update: Wie Deka in den Kommentaren angemerkt hat scheint es mit Subclipse 1.4 wohl doch einen Release für Ganymede zu geben. Tuesday, 15. July 2008GPS-Tracks aufbereitenWer öfter mit GPS-Tracks arbeitet – für OpenStreetMap, Geocaching [auch wenn man da neuerdings aufpassen muss, dass man nicht gleich als Terrorist abgestempelt wird] oder auch nur zur persönlichen Analyse beim Joggen/Radfahren) – der dürfte sich über ein Programm wie GPSBabel freuen. Zwar nur ein Kommandozeilentool (mit Frontends für Windows und MacOS), aber dafür sehr mächtig. Es konvertiert von und zu x Speicherformaten (und ebnet so nach eigener Darstellung den "GPS-Turm vom Babel" ein) und bietet einen Haufen Nachbearbeitungsmöglichkeiten für die Tracks, die so aus manchen Geräten rausfallen. Ein Beispiel: ein Urlaubstrack aufgezeichnet mit Medion GoPal 4. Intervall 1 Sekunde (was anderes kann das Medion IMO nicht) bedeutet in diesem Fall (Fahrt nach Kroatien, 5 Tage Segeln) mehrere Tracks mit insgesamt ~6MB Größe. Ziel ist es, die Tracks zu einem zusammenzusetzen und deutlich zu vereinfachen. gpsbabel -i gpx -f 1.gpx -i gpx -f 2.gpx -i gpx -f 3.gpx -i gpx -f 4.gpx -i gpx -f 5.gpx -x track,merge,title="Urlaub komplett" -x simplify,crosstrack,error=0.002k -o gpx -F urlaub.gpx Dieses Kommando setzt die Dateien [1-5].gpx zu einem Track zusammen, versieht den mit dem Titel "Urlaub komplett" und vereinfacht den Gesamtweg so, dass die Form erhalten bleibt (bei einem maximalen Fehler von 2 Metern, d.h. der neue Track-Verlauf weicht maximal 2m vom alten ab, was sowieso unter der Toleranz des GPS-Gerätes liegt). Auf diese Weise werden aus 5 Dateien mit einer Gesamtgröße von ~6MB eine mit 833kB. Wenn man jetzt am Ende das -o gpx... noch ersetzt durch -o kml -F urlaub.kml, dann kann man sich den Track gleich direkt in Google Earth anschauen. Das Programm läuft auf allen gängigen Betriebssystemen, auch wenn die Windows- und Mac-User wahrscheinlich ob der Kommandozeilenbedienung weinen. Aber die können sich ja mal die grafischen Frontends anschauen, die allerdings nicht komplett alle Möglichkeiten des zugrundeliegenden Programms bieten. Saturday, 12. July 2008Transystem i-Blue 747Transystem hat mit ihrem i-Blue 747 eine schnuckelige GPS-Empfänger/Logger-Kombination im Angebot. Nachdem ich bisher für OpenStreetMap immer mit einem GoPal getrackt habe, wollte ich mir endlich mal einen richtigen Tracker gönnen. Die Vorteile liegen auf der Hand: kleiner, leichter, weniger fehleranfällig. Mit dem GoPal lässt sich zwar im Auto etc. wunderbar tracken, aber wenn man es in die Jackentasche steckt, dann nervt es ein wenig, dass man den Bildschirm nicht ausschalten kann. Braucht unnötig Strom und macht das Gerät aufgrund der Touchscreenbedienung anfällig gegen Fehlbedienungen durch Berührung. Also für Wandern, Radfahren etc. ein eigener Tracker... Ursprünglich hatte ich mich anhand der Hardwareliste von OpenStreetMap auf das Wintec WBT-201 eingeschossen, welches anscheinend genau meine Anforderungen erfüllt. Durch den Test bei kowoma.de kam ich zusätzlich noch auf den i-Blue als Alternative. Der hat(te) zwar wesentlich weniger Speicher (70k vs. 131k Datenpunkte), war allerdings auch ~30€ billiger. Nachdem sich der Kauf nun noch ein paar Wochen hinausgezögert hatte, hat Transtec das Rennen gemacht: sie haben den i-Blue in einer neuen Variante auf den Markt geworfen, die den doppelten Speicher hat und damit ~150k Datenpunkte speichern kann. Mehr als genug für meine Ansprüche und deutlich günstiger als der Wintec. Anfang der Woche bestellt, heute bekommen. ![]() i-Blue 747 So sieht das gute Stück aus. Zum Größenvergleich ein 20-¢-Stück daneben. Recht übersichtlich also und mit knapp 70g auch nicht schwer. Die Bedienung ist absolut simpel: entweder man betreibt ihn im Modus NAV, dann ist er ein reiner NMEA-kompatibler Empfänger und reicht die Daten via USB oder Bluetooth an PC/PDA/etc. raus. Betreibt man ihn hingegen im Modus LOG, dann zeichnet er zusätzlich zum Weiterreichen die Daten auch noch auf seinem internen Speicher auf. Mit einer Software kann man vom PC aus einstellen, was er aufzeichnen soll (Längen- u. Breitengrad, Höhe, Geschwindigkeit etc.pp) und unter welchen Bedingungen (alle x Sekunden von, alle x Meter oder über x km/h). Der Knopf in der Mitte des Geräte dient zum Setzen von Wegpunkten: drückt man ihn, dann speichert das Gerät den aktuellen Datensatz mit einem Vermerk und man kann das später als Wegpunkt auslesen. Sehr praktisch, wenn man beim Tracken was interessantes sieht und sich merken will, wo's war. Das war's auch schon am Gerät selbst. Geladen wird via USB, wobei ein Verbindungskabel zum PC, ein Netzteil und ein Stecker für's Auto beiliegen. Ein kleines Problem gibt es (wie üblich) für mich: Software zum Auslesen des Gerätes liefert der Hersteller nur für Windows. Wäre ja auch zu schön... Als NMEA-kompatibler Empfänger stellt er kein Problem dar. Steckt man das Gerät per USB an, hat man plötzlich eine neue serielle Schnittstelle /dev/ttyUSB0 (oder äquivalent), die der gpsd mit Freuden abfragt und die entsprechenden Daten generiert. Damit funktionieren sämtliche linux-basierten Navigations- und Trackingprogramme. Das ganze soll auch problemlos via Bluetooth funktionieren, was ich allerdings noch nicht probiert habe. An die Logs ranzukommen ist schon schwerer. Das Gerät präsentiert sich leider wie alle anderen auch nicht als USB-Massenspeicher, sondern will via serieller Schnittstelle dazu gebracht werden, die Daten rauszurücken. Die kanonische Antwort auf dieses Problem lautet: bt747, ein Java-Programm zum Auslesen und Konfigurieren der Geräte. Dummerweise konnte ich das bisher nicht ans Laufen kriegen, weil mit javax.comm fehlt, von dem mir Sun erzählt, dass es grad nicht zu haben sei. Glücklichweise hat sich jemand hingesetzt und ein Perl-Skript geschrieben, was das gleiche tut: mtkbabel. Funktioniert ebenso, auch wenn es nicht ganz so einfach zu bedienen ist. Wichtigster Aufruf: alle Daten vom Gerät laden: ./mtkbabel -s 115200 -l off -f track -w -t -a legt drei Dateien an. Eine binäre, die direkt vom Gerät kommt, eine track_trk.gpx, die den aufgezeichneten Weg enthält und eine track_wpt.gpx, die die per Knopfdruck aufgezeichneten Wegpunkte enthält. In JOSM geladen sieht das dann so aus: ![]() Daten im JOSM Zu sehen sind hier zwei überlagerte Strecken (Hin- und Rückfahrt) und ein Wegpunkt (das kleine Kreuz mit der Nummer 001). Die Aufzeichnungsqualität ist gut, das Gerät findet seine Satelliten schnell und arbeitet zuverlässig. Nur das Standardaufzeichnungsintervall von 5 Sekunden sollte man evtl. etwas kürzer einstellen (bspw. per mtkbabel). Ich bin im Moment bei zwei Sekunden. Mal noch ein wenig testen, was da brauchbar ist. Insgesamt ein sehr schickes Gerät. Mal schauen, was die Zeit bringt und ob es im Dauereinsatz hält, was es bisher versprochen hat. Es gibt ja noch einige Orte hier in der Umgebung die getrackt werden wollen... Tuesday, 3. June 2008Wii WhiteboardJohnny Chung Lee stellt auf seine Webseite einige Projekte mit der Wii Remote vor, die ziemlich cool sind. Das Wii Whiteboard musste ich mir gleich mal nachbauen. Andere Projekte wie das VR Display sind noch in Planung. Außerdem gibt es da noch so Ideen bzgl. Tracking von Personen und Objekten in der Pipeline... Video vom Test des Systems gibt es hier (das Video steht unter einer Creative Commons Lizenz). Thursday, 24. April 2008dm-crypt-Container SkripteIm Linux-Kernel eingebaut ist ja nun schon seit geraumer Zeit das Crypt-Target des Device-Mappers, mit dem sich transparent ganze Partitionen auf der Platte verschlüsseln lassen. Das verwende ich schon länger um mein Notebook komplett zu verschlüsseln und so im Falle eines Diebstahls/Verlustes wenigstens nicht gleich meine ganzen privaten Daten im Netz zu finden. Für ein Projekt brauche ich in Zukunft allerdings ein wenig mehr: einen Container, der im normalen Betrieb nicht offen ist, sondern nur wenn ich mit den Daten arbeite, die sich darin befinden (man weiß ja nie, ob nicht unter Umständen unter dem eigenen Nutzer mal was Amok läuft). Recht bequem löst man das mit TrueCrypt: Container anlegen, im TrueCrypt auf "Mounten" klicken, Passwort eingeben, fertig (so zumindest unter Windows. TrueCrypt unter Linux hab ich noch nicht benutzt). Nun will ich mir nicht noch ein Tool installieren, schließlich hab ich mit dm-crypt schon ein erprobtes zur Verfügung. Leider kann dieses nur Devices verwalten und keine Dateien als Container direkt ansprechen. Macht aber nichts, wozu gibt es loop-Devices? Die Schritte sind also ganz einfach: loop-Device auf der Container-Datei anlegen, mittels cryptsetup öffnen lassen und unter einem Mountpoint einhängen. Weil mir das zuviel Tipperei ist, hab ich zwei einfache Skripte zusammengebaut, die den kompletten Ablauf übernehmen. Skript #1 ist zum Öffnen eines Container da. Einfach: mount_container.sh
#! /bin/bash
if [ x$1 == x ]; then
echo "Usage: $0 <imagefile> <mountpoint>"
exit 1
fi
DIRECTORY=$(dirname $1)
IMAGENAME=$(basename $1)
CUR_DIR=$(pwd)
if [ ! "x$DIRECTORY" == x ]; then
cd "$DIRECTORY"
fi
IMAGEPATH=$(pwd)/"$IMAGENAME"
MAPPERNAME=$(echo "$IMAGEPATH" | sha1sum | cut -d" " -f 1) # we use the sha1sum of the image path as mapper device
echo "Mapping $IMAGEPATH to device /dev/mapper/$MAPPERNAME"
MP_TMP=$(losetup -a | grep "$IMAGEPATH" | cut -d':' -f 1)
if [ x$MP_TMP == x ]; then
echo "Setting up loop device"
losetup -f "$IMAGEPATH"
fi
DEVICE=$(losetup -a | grep "$IMAGEPATH" | cut -d':' -f 1)
C_TMP=$(cryptsetup status $MAPPERNAME | grep " active")
echo $C_TMP
if [ x$C_TMP == x ]; then
echo "Opening LUKS device $DEVICE"
cryptsetup luksOpen "$DEVICE" $MAPPERNAME
fi
mount /dev/mapper/$MAPPERNAME "$2"
Irgendwann ist die Arbeit im Container dann mal beendet und man möchte ihn wieder aushängen. Dazu gibt es das Skript umount_container.sh
#! /bin/bash
#! /bin/bash
if [ x$1 == x ]; then
echo "Usage: $0 <mount point>"
exit 1
fi
MAPPER_DEVICE_NAME=$(mount | grep "$1" | cut -d' ' -f 1 | cut -d'/' -f 4)
if [ x$MAPPER_DEVICE_NAME == x ]; then
echo "$1 is not a mounted device."
exit 1
fi
if [ x"$(cryptsetup status $MAPPER_DEVICE_NAME | grep ' active')" == x ]; then
echo "$1 does not seem to be a mounted dm-crypt device"
exit 1
fi
umount "$1"
DEVICE=$(cryptsetup status $MAPPER_DEVICE_NAME | grep device: | cut -d ' ' -f 5)
cryptsetup luksClose $MAPPER_DEVICE_NAME
LO_TMP=$(losetup -a | grep "$DEVICE")
if [ ! x"$LO_TMP" == x ]; then
losetup -d "$DEVICE"
fi
Angelegt wird der Container ganz klassisch als Tipp: Wenn man den Container als normaler Benutzer verwenden will (also ohne root-Rechte), dann sollte man als root einmalig nach dem Anlegen und Einhängen ein Friday, 4. April 2008Musik online kaufen oder "Kunden vergraulen für Dummköpfe"Ganz ehrlich: ich hab's versucht. Ich habe mich auf die Suche nach einer Möglichkeit gemacht, ein wenig Musik zu kaufen. Kann ja nicht so schwer sein. Ich mein: die da, der da, die da oder auch die da haben ja die entsprechenden Grundlagen dafür geschaffen. DSL und Co. sind auch vorhanden, eigentlich sollte alles glatt laufen. Eigentlich... Doch von vorn. Ich habe ein paar Anforderungen an den potentiellen Verkäufer meiner Musik:
So, meine Anforderungen wären also dargelegt. Eigentlich finde ich die gar nicht so schwer erfüllbar. Kommen wir also zu den Kandidaten:
Tja... und nun? Ich habe hier eine Liste mit 19 Liedern, die ich gern kaufen würde. Könnten durchaus mehr werden. Man hört mal hier, mal da was, was einem gefällt (im Moment ganz gern mal bspw. Apocalyptica oder Nightwish). Blöd nur, dass keiner mein Geld haben will. Aber naja, demnächst darf ich mir bestimmt wieder irgendwo anhören, wie schlecht es doch der Musikindustrie geht. Zu recht, wie ich sagen muss. Zu recht... Ach ja, weil ich mich ja eigentlich aufregen wollte: IHR VERDAMMTEN FLACHZANGEN IN DEN CHEFETAGEN DER MUSIKINDUSTRIE! KOKST MAL EIN PAAR GRAMM WENIGER AM TAG UND HÖRT AUF EURE KUNDEN: SCHATTENGEFECHTE MIT IRGENWELCHEN DOWNLOADERN KOSTEN GELD UND BRINGEN KEINS. UND POTENTIELLE KUNDEN GÄNGELN UND VERGRAULEN IST KEIN GESCHÄFTSMODELL! SEID IHR EIGENTLICH ALLES ABGEBROCHENE BWL-ERSTSEMESTER? So, und was mach ich jetzt mit der Kohle? Röllchen draus drehen und auch anfangen zu koksen? Ich mein: immerhin würde ich mir damit vielleicht den Schädel kaputt genug kriegen um die aktuellen Angebote nutzen zu wollen. Sunday, 10. February 2008Dinge, die man mit einem Navi tun kann...Wie kriegt man lauter Nerds an die frische Luft? Ganz einfach: man macht ein Projekt wie OpenStreetMap auf und schon treiben die sich haufenweise draußen rum. Warum? Nun, ganz einfach: es kommt einfach alles zusammen. Freie Sachen (in dem Fall Kartendaten), Technik (GPS), ein klein wenig Selbstdarstellung (Hey, ich kenn mich hier aus! Ich kann die Straßen richtig einzeichnen!) und die Möglichkeit, nen Haufen Kram zu spielen (wer wollte nicht schon immer mal ne Navi-Software programmieren?... Ok, wahrscheinlich alle normalen Leute nicht, aber um die geht's ja hier nicht.). Worum geht es? Wikipedia kennt mittlerweile jeder, der sich schonmal länger als 3 Minuten im Netz rumgetrieben hat. Aus einem anfänglichen Spielprojekt für ein paar Leute ist eine umfassende, aus aller Welt gepflegte Enzyklopädie geworden, die zu den meistbesuchten Seiten im Netz gehört. Kollaboratives Wissen, je nach Sichtweise mal das beste seit geschnitten Brot oder der Untergang des Abendlandes, als durchschlagender Erfolg. Nicht schlecht für eine Netzgemeinde, die nach Ansicht einiger Leute nur Pornos und Gewaltspiele kann. "Können wir auch.", mögen sich die Initiatoren von OpenStreetMap gedacht haben. Die Wikipedia-Idee angewandt auf Kartendaten: jeder, der mag und kann trägt was bei. Seien es GPS-Daten, Straßenzüge, Namen, Höhenlinien, was auch immer man in einer Karte unterbringen kann. Die, die sich mehr für Software interessieren können diese Daten verwenden: in Renderen, die druckfertige Versionen erzeugen, Navigationskerneln, Filterprogrammen für spezialisierte Karten (Karte von der Isle of Man gefällig? Gibt's bei Navteq, Teleatlas und Co. nicht zu kaufen.) etc. Tja und zuguterletzt profitieren auch die, die nichts beitragen können oder wollen: Anfahrtsskizze auf der Webseite oder im Werbeblättchen? Bitte nicht von Google Maps und Co. Gibt Ärger mit dem Urheberrecht. Mit OpenStreetMap-Daten hingegen kein Problem. Kurzum: eine rundrum praktische Sache, das. Warum der Seromon? Nun, ich bin (eigentlich "wir", meine bessere Hälfte hat's auch erwischt) seit einigen Wochen OSM-süchtig. Wo es geht läuft das Navi und zeichnet GPS-Tracks auf. Immer wenn Zeit ist, werden diese mit JOSM in Kartendaten umgewandelt und auf die Projektwebseite hochgeladen. Erstaunlich, was man dabei so alles lernt (beispielsweise dass Gemeinden selbst Landstraßen als "nicht von überregionaler Bedeutung" erklären lassen, damit sie sie im Winter einfach sperren können, statt sie zu räumen) und wieviel man zum Wandern kommt (Ilmenau Lindenberg? Leichteste Übung.). Kurzum: Leute, bastelt OpenStreetMap-Daten! Wer ein Navi oder ein Handy mit GPS oder sonst irgendwas in der Richtung hat: mittracken, was das Zeug hält, Daten hochladen und freuen, wenn jemand Straßen draus macht. Macht Spaß und man lernt immer wieder neue Dinge seiner Umgebung kennen. So, jetzt nur nur noch Navikernel basteln... Sunday, 2. December 2007Wenn der ejabberd nicht will...Weil ich grad nen halben Tag gesucht habe: wenn der ejabberd zwar startet, aber keinerlei Ports öffnet und irgendwie nicht mehr reagiert, dann sollte man mal checken, ob der an seine Config kommt. Bei mir war es ein verwürfelter Owner von /etc/ejabberd/, der verhindert hat, daß er sein Configfile einlesen konnte. Blöd ist: sonst loggt das Teil jeden Sch***, aber bei so nem gravierenden Fehler herrscht im Logfile Schweigen. *gnaaa* Thursday, 8. November 2007Trauer um das FernmeldegeheimnisDiejenigen, die per Webseite hier zugreifen haben es ja schon bemerkt: dieses Blog trauert um das Fernmeldegeheimnis. Am morgigen Freitag wird die große Koalition voraussichtlich durch das Absegnen der Vorratsdatenspeicherung das Fernmeldegeheimnis endgültig zu Grabe tragen. Nun kann man natürlich einwenden: "Ja, aber die Vorratsdatenspeicherung speichert doch nur die Verbindungsdaten und gar keine Inhalte!", aber das greift etwas kurz. Die Tatsache, daß Max Mustermann mit der AIDS-Beratungsstelle telefoniert hat ist mindestens genauso interessant, wie der Inhalt des Gesprächs selbst. Andere werden bemerken: "Aber Zugriff erfolgt doch nur bei schwersten Verbrechen und Terrorismus!". Nun, möglicherweise nicht lang... Nachtrag: Vor lauter Ärger ganz vergessen: Mehr Informationen gibt es beim Arbeitskreis Vorratsdatenspeicherung Monday, 29. October 2007Traumhafter Appell für IPv6Die RIPE hat durch ihre Geheime Arbeitsgruppe einen musikalischen Appell zur allgemeinen Nutzung von IPv6 basteln lassen. Traumhaft :) Quelle: heise.de Tuesday, 31. July 2007fetchmail für MS ExchangeMein neuer Arbeitgeber hat ja seit neuestem einen Exchange-Server für die Mitarbeiter. Toll, toll, was für eine Begeisterung! Nun ja, wie das so ist, kommt man wohl leider nicht drumrum, also müssen Möglichkeiten her, sich an dieses Ding anzuklemmen. Evolution kann schon seit geraumer Zeit mit der Anbindung an ein Exchange (2000 und 2003) umgehen und stellt somit eine erste Variante dar. Dummerweise benutze ich schon ewig KMail um meine Mails zu verwalten und habe bis auf weiteres auch nicht vor das zu ändern. Was also tun? Nun, zum Glück ist der Konnektor, mittels welchem sich Evolution an Exchange anhängt, Open Source und man kann einen kleinen Blick darauf werfen. Laut der beiligenden Doku arbeitet das Teil auf Basis des gefürchteten Outlook Web Access, einer Art Pseudo-Möchtegern-Mailapplikation, die im Browser läuft. Außer der Webseite (die oft genug als Feigenblatt herhalten muss in der Art: "Was du nur hast? Benutz doch einfach OWA in deinem Browser, wenn du kein Outlook willst!" Scherzkekse...) bietet OWA allerdings noch eine kleine Nettigkeit: den Zugriff auf die Mailbox via WebDAV. Diese HTTP-Abart stellt Kommandos zum Verwalten von Dateien und Verzeichnissen zur Verfügung und wird sonst beispielsweise für die Freigabe von Verzeichnissen etc. benutzt. Mit Hilfe von WebDAV ist Rettung vor der unheiligen Allianz Exchange-Outlook zumindest teilweise in Sicht... Ziel ist es also, die Mails aus den Klauen von Exchange zu befreien und auf einen standardkonformen Mailserver zuzustellen (bspw. einen lokalen IMAP) oder sie in einem Maildir abzulegen (bspw. für Mozilla etc.). Für diese Aufgabe habe ich mir ein kleines Pythonskript geschrieben, welches zusammen mit einer angepassten davlib (Link zum Original. Bitte NICHT mit dem Skript verwenden!) seinen Dienst versieht. Im Kopf des Skriptes werden einige Konfigurationsvariablen gesetzt (Exchangeserver, SMTP-Server, Nutzernamen etc.). Besondere Beachtung verdient hier der MAILBOX_PATH: dieser gibt den Basispfad der Mailbox im OWA an. Meist hat er die Form /Exchange/Nutzername/Inbox oder /Exchange/Nutzername/Posteingang. Den genauen Pfad bekommt man, indem man sich den Link zu einer Mail im OWA anschaut und nach dem entsprechenden Muster sucht. Das Skript stellt die Mails auf die angegebene Adresse zu und benutzt dabei den angegebenen SMTP-Server. Prinzipiell könnte man aber auch an der Stelle die Mail in eine Datei speichern oder irgendwas anderes damit machen. Ein Detail noch zum Versenden der Mails: die Funktion sendMail geht davon aus, daß der SMTP-Server STARTTLS beherrsch und sie sich dort mit Nutzernamen und Passwort anmelden muss. Wenn das nicht zutrifft (bspw. weil der Server auf derselben Maschine wie das Skript läuft) kann man die betreffenden Zeilen einfach auskommentieren. Insgesamt ein übler Hack, aber wenigstens bekomme ich so meine Mails sauber auf meine Linux-Maschine. Fehlen ja nur noch die Termine, aber das ist eine andere Geschichte... fetch-exchange.tar.gz – das Skript zusammen mit davlib und qp_xml. Einfach in ein Verzeichnis entpacken und mittels ./fetch-exchange.py starten. Friday, 20. July 2007Fehler beim X-ForwardingWeil ich grad ne Weile dran hing: wenn ein X-Forwarding via ssh nicht funktionieren will, obwohl alles korrekt konfiguriert ist und der sshd im logfile folgendes meldet: Jul 21 09:41:05 kiste sshd[6311]: error: Failed to allocate internet-domain X11 display socket. dann sollte man mal nach seinem loopback-Device schauen. Ist selbiges nämlich in der Standardkonfiguration nicht aktiv, so wird der sshd mit eben jener Fehlermeldung auf die Nase fallen. Wie auch einige andere Programme. Vielen Dank an http://giray.devlet.cc/Linux/Laptop/HiGradeNotino3400s/#redhat für den Tritt in die richtige Richtung.
(Seite 1 von 7, insgesamt 93 Einträge)
» nächste Seite
|