Ted Nelson, der Computerveteran, der 1965 den Hypertext erfand (ups, das war vor meiner Geburt), hat ein neues Buch geschrieben und im Selbstverlag bei Lulu.com veröffentlich: Geeks Bearing Gifts v1.1. Darin erklärt er die Computergeschichte aus seiner Sicht. Das könnte interessant sein. Für knapp 15 Euro zu haben und inklusive eines tollen Coverfotos von einem anderen Computerveteranen, dessen Eingebungen und heute ebenfalls noch täglich beglücken, an einem sehr passenden Ort. Eine Googlesuche nach ALBUQUERQUE N MEX, APD 105 519, 12 13 77 klärt den Unwissenden auf, wer das ist und was, nämlich ein „Mugshot“. Gefunden über einen Spiegel Online-Artikel.
Alle Beiträge von Markus
eBooks und ePaper aus der Bücherei
Die Düsseldorfer Stadtbücherei und sicher auch andere Büchereien bieten für ihre Mitglieder DRM-geschützte digitale Medien zum Ausleihen an – die Düsseldorfer nennen das onlineBibliothek und bieten über 10000 Medien an. Das funktioniert zum Teil auch sehr gut auf dem Mac unter OS X, zumindest für die Bücher und Zeitungen, respektive „eBooks“ und „ePaper“. Diese sind durch Adobes DRM geschützt. Zuvor muss man allerdings zwei Programme installieren: Adobe Reader 9 für die PDF-Dateien (z.B. für den „Spiegel“ und diverse Bücher) und Adobe Digital Editions 1.6 für Bücher, die im „ebx.etd“-Format (eine Steuerdatei) angeboten werden. Digital Editions wird übrigens hier installiert: ~/Library/Preferences/Macromedia/Flash Player/www.macromedia.com/bin/digitaleditions1x5/digitaleditions1x5.app
. Das Programm bildet eine Art Bücherregal mit gekauften und geliehenen Büchern an.
Leider liegen die Audio und Video Angebote in Formaten des Microsoft Media Players vor, WMA und WMV, die mit DRM auf dem Mac meiner Recherche nach nicht abgespielt werden können. Möglicherweise wächst mit WINE eine Möglichkeit dazu heran, wie diese Meldung hoffen lässt. Sonst bleibt wahrscheinlich nur Windows in einer VM als Abspielmöglichkeit. Oder kennt jemand eine Möglichkeit ohne Windows-Lizenz?
Daten aus Webdiensten mit wget sichern (OS X, Firefox)
Für den Seelenfrieden gibt es doch nichts besseres als ein Backup. Für meine lokalen Daten erledigt das unter OS X 10.4 Leopard Time Machine von Apple ohne viel Aufhebens. Übrig bleiben aber die ganzen Daten, die ich im Web pflege, wie z.B. Delicious-Bookmarks und Bloglines-Subscriptions. Manuell kann man diese Daten auf die lokale Festplatte exportieren, und genau das wollte ich heute automatisieren. Das geht nach einigen kleinen Hürden mit wget problemlos.
1. Beispiel Bloglines
Die Seite, die alle Subscriptions als OPML liefert, lautet http://www.bloglines.com/export
. Einzige Hürde: man muss eingeloggt sein. Im Browser klappt der Export nach dem Login dann dank Cookies. Und diese kann man auch wget übergeben, und zwar mit dem Parameter "--load-cookies cookies.txt"
. Cookies.txt ist eine Datei mit Cookies im Netscape-Format. Mein Lieblingsbrowser Firefox speichert die Cookies allerdings seit Version 3 in einer Sqlite-Datenbank. Zum Glück steht hier, wie man die Daten leicht daraus extrahieren kann – und zwar mit folgendem Script (von mir leicht vereinfacht):
#!/usr/bin/python
import sqlite3 as db
import sys
cookiedb = ‚/Users/<username>/Library/Application Support/Firefox/Profiles/<profilename>/cookies.sqlite‘
connection = db.connect(cookiedb)
cursor = connection.cursor()
contents = „host, path, isSecure, expiry, name, value“
cursor.execute(„SELECT “ +contents+ “ FROM moz_cookies“)
file = open(„./cookies.txt“, ‚w‘)
index = 0
for row in cursor.fetchall():
file.write(„%s\tTRUE\t%s\t%s\t%d\t%s\t%s\n“ % (row[0], row[1],
str(bool(row[2])).upper(), row[3], str(row[4]), str(row[5])))
index += 1
file.close()
connection.close()
Der Aufruf zum Sichern sieht dann so aus:
wget –load-cookies cookies.txt „http://www.bloglines.com/export“ -O bloglines.opml
2. Beispiel delicious
Hier lautet die URL zum Export https://secure.delicious.com/settings/profile/export
. Wieder braucht man die cookies.txt. Aber es gibt noch ein weiteres Problem: Die export-URL verlangt einige Parameter als POST-Request. Zum Glück kann wget auch diesen Trick mittles „–post-data“. Die Parameter sehen so aus: „.crumb=<ID>&include_tags=yes&include_notes=yes&submit=submit“. Die „<ID>“ muss man aus dem Quelltext der Webseite „https://secure.delicious.com/settings/bookmarks/export“ auslesen (nach .crumb suchen), denn ich denke, die ist variabel (und ich hoffe aber, sie bleibt für mich stabil…). Ausserdem gibt es noch den wget-Parameter „–no-check-certificate“, der Probleme mit dem SSL-Zertifikat ignoriert. Insgesamt sieht der Aufruf dann so aus:
wget –no-check-certificate –load-cookies cookies.txt „https://secure.delicious.com/settings/profile/export“ –post-data „.crumb=<ID>&include_tags=yes&include_notes=yes&submit=submit“ -O delicious.html
Jetzt nur noch das Ganze in ein Script packen, um es via cron-job oder sowas regelmäßig und ohne weiteres Zutun anzustoßen.
Subversion unter OS X
Das coole am Mac ist ja das ausgewachsene Unix Betriebssystem unter dem ganzen Zuckerguss der Oberfläche. Viele wundervolle Tools sind schon vorinstalliert. Eines davon ist Subversion, welches bei Leopard in der Version 1.4.4 beiliegt. Da ja auch der Webserver apache schon vorinstalliert ist (2.2.8), ist es ein leichtes, ein Subversion Repository via http anzubieten, selbst mit https kein Problem. Hier steht wie: Installing a Secure Subversion Server on Leopard.
Bei der Gelegenheit weise ich mal auf das freie Buch (wie „Freibier“) Version Control with Subversion hin, das es bei O’Reilly auch zu kaufen gibt. Bei O’Reilly gibt es übrigens dieses und eine ganze Reihe weiterer freier Bücher: die O’Reilly OpenBooks. Bisher über 30 PDF-E-Books. Empfehlenswert z.B.: Praktischer Einstieg in MySQL mit PHP von Sascha Kersken.
iPhone fotografiert sich selbst ohne Spiegel aber mit Veency
Dieses künstlerisch wertvolle Bild zeigt ein Selbstportrait meines iPhones beim Erstellen eines Selbstportaits beim Erstellen eines Selbstportraits usw. Ein kleiner Blick in die Unendlichkeit. Wie? Per VNC auf dem großen Bildschirm dargestellt und dann selbst abfotografiert. Leider unscharf, weil die nur halbwegs brauchbare Kamera des Telefons keine Macroaufnahmen machen kann.
iPhone mit VNC fernsteuern
Ich weiß nicht, wofür man es brauchen kann, aber irgendwie ist es cool: das iPhone über VNC fernsteuern. Das geht jetzt mit Veency ganz leicht, das ist ein VNC-Server, der auf dem iPhone läuft (nur mit Jailbreak). Einfach Veency über Cydia installieren und dann mit irgendeinem VNC-Client zugreifen. Auf dem Mac z.B. mit Chicken of the VNC. Das Einrichten dauert keine 5 Minuten, inckusive Download und „Installation“ des Clients (auf dem Mac ja mit Drag&Drop zu erledigen). Klappt alles ganz gut. Kleine Redrawfehler durch den Mauszeiger treten auf und ich habe noch nicht herausgefunden, ob man den Bildschirm auch drehen kann, was sinnvoll wäre. Klasse aber, dass man Texte über die Tastatur eingeben kann. Tipp: die rechte Maustaste wirkt wie der Home-Button.
Quelle: lifehacker.com: Step By Step: Veency Offers Remote Control of Your Jailbroken iPhone
Favicons für den Bookmark-Toolbar des Firefox unter Mac OS X
In der Mac OS X Version von Firefox fehlen die Favicons im Bookmark-Toolbar. Das sollte wohl mehr „Mac-like“ aussehen. Die Favicons sind aber sehr praktisch und ich wollte die gerne wiederhaben. Zum Glück kann man die Oberfläche von Firefox über CSS anpassen. Dazu gibt es sogar ein Add-On namens „stylish“ und passende „styles“ dazu. Sogar für das beschriebene Problem gibt es einen: Mac bookmark toolbar favicons. Ich hatte den längere Zeit im Einsatz, störte mich aber zunehmend an einem Flackern beim Scrollen, das ich auf stylish zurückführen konnte. Außerdem zeichnet mein Firefox zunehmend für hohe CPU-Belastung verantwortlich, weshalb ich alle überflüssigen Add-Ons entferne. Es geht nämlich auch anders:
Einfach selber ein paar Zeilen CSS-Code in die Datei userChrome.css einbauen (die ggf. noch angelegt werden muss). Ich habe mir das so angepasst (ausgehend von dieser Quelle):
/* Favicons im Bookmark-Toolbar anzeigen, 16x16 Pixel */
.bookmark-item > .toolbarbutton-icon {
width: 16px !important;
height: 16px !important;
display: inline !important;
}
/* Abstand des Icons zum nebenstehenden Text vergrößern */
.bookmark-item * .toolbarbutton-text-shadow ,
.bookmark-item * .toolbarbutton-text {
margin: 0 0 0 4px !important;
}
Das klappt einwandfrei und beeinträchtigt auch nicht die Performance. Die userChrome.css liegt im bzw. gehört ins Verzeichnis „chrome“ des Firefox Profils, unterhalb von ~/Library/Application Support/Firefox/Profiles. Einfach das dort liegende Beispiel umbenennen und anpassen.
iPhone Kamera speichert keine Bilder mehr und die Lösung dafür
Heute hatte ich zum zweiten mal das Problem, dass mein iPhone (1.1.4) keine Fotos mehr machen konnte. Beim Fotografieren sieht erstmal alles normal aus, aber wenn man in die Filmrolle wechselt, werden dort keine Bilder sondern nur leere, weiße Rahmen angezeigt. Zuvor hatte ich beim Ãœbernehmen der letzten „Filmrolle“ nach iPhoto ’08 (Version 7.1.4) ein komisches Verhalten: obwohl ich „Orginale löschen“ gewählt hatte, blieben die Bilder auf dem iPhone und wurden beim nächsten Synchronisieren wieder zum Import angeboten, worauf ich sie noch mal Importiert und anschließend scheinbar erfolgreich gelöscht habe. Außerdem hatte ich den Eindruck, dass von der letzten Filmrolle ein paar Bilder fehlten. Das letzte erfolgreich importierte Foto hat die Laufnummer 999 (IMG_0999.jpg), was mir irgendwie signifikant vorkommt.
Zum Glück bin ich nicht der einzige, dem das passiert ist, so dass man schon von einem bekannten Bug sprechen kann, auch wenn Apple den Bug meines Wissens nach nicht bestätigt hat. Ãœber Google findet man relativ schnell verschiedene Lösungen, die aber meist auf „Recovery“ hinauslaufen – uns das ist mir doch ein bisschen zu viel des Guten.
Im Apple-Forum fand ich einen Thread zu dem Problem und von „Daniel Drysdale“ und in der darauf folgenden Antwort von „haa“ einen Hinweis auf eine einfach und schnell durchzuführende Lösung – vorausgesetzt, man hat bereits ssh auf seinem iPhone installiert. Einfach via ssh auf dem iPhone einloggen und im Verzeichnis /private/var/mobile/Media/DCIM
den Ordner .MISC
entfernen. Dann läuft es wieder wie geschmiert. Hier noch ein paar Details:
# pwd
/private/var/mobile/Media/DCIM
# ls -lR
total 0
drwx------ 2 mobile wheel 136 Sep 3 20:59 .MISC
drwx------ 2 mobile wheel 136 Jun 17 01:55 .MISC-old
drwx------ 2 mobile wheel 68 Sep 4 19:41 100APPLE
drwx------ 2 mobile wheel 68 Jun 19 20:11 101APPLE
./.MISC:
total 16
-rw-r--r-- 1 mobile wheel 258 Sep 7 14:14 Info.plist
-rw-r--r-- 1 mobile wheel 2822 Sep 3 20:59 PosterImage.jpg
./.MISC-old:
total 16
-rw-r--r-- 1 mobile wheel 318 Jun 21 08:50 Info.plist
-rw-r--r-- 1 mobile wheel 1016 Jun 17 01:55 PosterImage.jpg
./100APPLE:
./101APPLE:
# mv .MISC .MISC-old2
# cat .MISC-old/Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>LastFileGroupNumber-100</key>
<integer>1011</integer>
<key>LastFileGroupNumber-101</key>
<integer>665</integer>
</dict>
</plist>
# cat .MISC-old2/Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>LastFileGroupNumber-100</key>
<integer>1021</integer>
</dict>
</plist>
.MISC-old
ist das Verzeichnis, das ich angelegt habe, als das Problem beim ersten mal auftrat (ja, 1000 Bilder in 2,5 Monaten, wie es scheint…). Wie man sieht ist der Bildzähler für das Verzeichnis 100APPLE einmal bei 1011 und einmal bei 1021 stehen geblieben (so interpretiere ich die Info.plist-Datei). Sieht aus, also ob nach 1000 Bildern ein neues Verzeichnis „101APPLE“ angelegt und verwendet werden soll, aber das iPhone verhaspelt sich dabei. Ein klarer Hinweis, dass ich das nächste mal nach 999 Fotos wieder mit Problemen rechnen muss. Nach dem nächsten Foto, das dann wieder problemlos gespeichert wurde, ist „.MISC“ wieder automatisch angelegt worden. So sieht es darin dann aus:
# cd .MISC
# ls
Info.plist PosterImage.jpg
# cat Info.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>LastFileGroupNumber-100</key>
<integer>1</integer>
</dict>
</plist>
Der Zähler ist also wieder auf 1 zurückgesetzt – ein kleiner Nachteil. Apple sollte das schnellstens beheben (wenn das nicht schon passiert ist), denn es macht vielleicht nicht jedem User Spaß, ein paar Files im Unix-Dateisystem seines Telefons zu löschen.
Update 21.4.2009: Bei mir tritt der Fehler mit iPhone OS 2.2.1 nicht mehr auf. Nach Bild IMG_0999.JPG ging es dann problemlos weiter mit Bild IMG_0001.JPG. Hm, danke Apple, aber eine fortlaufende Zählung wäre doch noch besser, oder? Wenigstens bis 9999. Oder mal nachrechnen – jeden Tag maximal 1000 Bilder * 365 Tage * 100 Jahre Lebensdauer, ergibt eine obere Abschätzung von 36.500.000. Dazu würde ich mir ein frei wählbares Präfix wünschen, sagen wir „foo-„. Das ergibt folgendes, für alle Zeiten ausreichendes Dateinamensmuster: „foo-00000001.jpg“. Oder noch einfacher und schöner: „<Timestamp in UTC nach ISO 8601>-<Gerätename>.jpg“, beispielsweise „20090421T235959Z-foo.jpg“.
Update 29.8.2009: Apple hat anscheinend meinen Rat, wenigstens bis 9999 hochzuzählen befolgt. Nun stoßen die ersten Viel-Knipser an diese Grenze – tja, wie wär’s mit 99999, Apple? Siehe: Fix iPhone’s Camera Roll display bug