Die Geschichte des Internets


Ein sehr gutes Video zur Entstehung des Internets, allerdings in Englisch:

History of the Internet from Melih Bilgil on Vimeo.

Ein Einblick in die Architektur von Hotmail


Ein interessanter Artikel, der einen Einblick gibt, wie große Webdienste mit enormen Datenmengen zurechtkommen: Einblick in Hotmail

Ach, und btw: Frohe Weihnachten! Wink

A day on the internet


Das ist mal eine sehr interessante Übersicht über das Datenaufkommen im Internet an einem Tag (Quelle, klicken für Vollansicht):

Thunderbird 3 ist erschienen


Thunderbird, der Mail-Client von Mozilla, ist in Version 3 erschienen. Die wichtigste Änderung dabei für Nutzer mit IMAP-Konten ist wohl, dass Mails lokal heruntergeladen und indiziert werden. Damit stehen diese Mails nicht nur auch offline zur Verfügung, sondern können schnell durchsucht werden. Und das klappt fantastisch, auch bei sehr großen Konten. Mein Konto hat rund ~30.000 Mails und sobald die mal indiziert waren, funktioniert das Durchsuchen in rund 2 Sekunden und wird in einer sehr übersichtlichen Ergebnisseite dargestellt:


Eine andere Sache ist die Archiv-Funktion, die Thunderbird nun voll integriert hat. Klickt man bei einer Mail auf den Archivieren-Button, wird dies in einen Unterordner von "Archives" mit dem aktuellen Jahr verschoben. Das entspricht in etwa dem Archivieren, dass man von Google's GMail kennt.
Das habe ich bisher manuell gemacht (mit dem tollen Addon Archive This), aber schön, wenn der Mailclient das direkt integriert anbietet.

Und Thunderbird kann nun auch die obligatorischen Tabs. Aber am wichtigsten erscheint mir, dass Thunderbird nun subjektiv wesentlich schneller ist. Da wirds hier oder da bestimmt die nächsten Tage Benchmarks geben. Ist vielleicht auch nur meine Einbildung.

Auf jeden Fall eine konsequente Weiterentwicklung.

Informationen zur Windows-Aktivierung


Mit dem Tool slmgr.vbs kann die Windows-Aktivierung von Vista und 7 angesprochen werden. Interessant sind hierbei vor allem folgende Parameter:

slmgr.vbs /dlv  Detailierte Informationen anzeigen
slmgr.vbs /xpr  Ablaufdatum der Aktivierung
slmgr.vbs /ato  Aktivierungsprozess manuell anstoßen
slmgr.vbs /rearm  Frist zum Aktivieren verlängern (geht 3x zu je 30 Tagen)
slmgr.vbs /?  Alle Optionen anzeigen

Schäuble und die 100.000 Mark



Das entbehrt doch jeden Kommentars! Sad

Ubuntu Karmic RC: Theme-Fehler bei Verbindung über NX

Kategorie Linux 24.10.2009    Kategorie Linux Linux    Tags nx, theme, ubuntu    Kommentare 0 Kommentare

Schon unter Ubuntu Jaunty gabs einen ärgerlichen Bug, wenn der Zugriff auf den Desktop über NX bzw. FreeNX lief: gnome-settings-daemon stürzte ab, wenn das keyboard-Plugin aktiv war. Resultat war, dass keine Themes funktionierten. Dieser ist nun zwar gefixt, aber unter Karmic gibts einen neuen, der genau das gleiche Bild liefert:

Ubuntu Karmic NX Bug
Allerdings liegt das diesmal am Plugin xrandr. Zur Behebung startet man über Alt+F2 den gconf-editor, navigiert dort zu /apps/gnome_settings_daemon/plugins/xrandr und enfernt das Häkchen bei active. Dann einmal aus- und wieder einloggen und alles erscheint im gewohnten Glanz:

Ubuntu Karmic NX Bug Fixed
Einen Bug-Report bei Launchpad gibts dazu auch schon. Mal gucken, ob das bis zum Release nächste Woche noch gefixt wird.

Nachtrag 09.11.: Sieht aus, als wäre das Problem gelöst.

Windows 7: Klassische Taskleiste wiederherstellen


Windows 7 führt eine neue Taskleiste ein. So schön diese anzusehen ist: In einigen Anwendungsfällen ist die alte, von Windows XP gewohnte, besser. Leider hat Microsoft keine Möglichkeit vorgesehen, das alte Verhalten wieder einzuschalten. Aber mit etwas Eigeninitiative kann das alte Verhalten fast komplett wiederhergestellt werden. Am Ende sieht das dann so aus:

Win7 mit klassischer Taskleiste


Subversion: Wurzelverzeichnis eines Repositories ändern


Um das Root-Verzeichnis eines SVN-Repositories zu ändern (z.B. nach einem Server-Umzug oder Domainänderung), ohne einen neuen Checkout der Arbeitskopie machen zu müssen, reicht ein einfacher Befehl:

svn switch --relocate [alte-URL] [neue-URL]

Das Ergebnis kann mit svn info überprüft werden. Wenn dort unter "Repository Root" die neue URL steht, passt alles und man kann ganz normal weiterarbeiten.

bheil@home:~/SVN/b3$ svn info
URL: https://secure.bheil.net/b3
Basis des Projektarchivs: https://secure.bheil.net/b3
[...]

bheil@home:~/SVN/b3$ svn switch --relocate https://secure.bheil.net/b3 https://ssl.bheil.net/svn/b3

bheil@home:~/SVN/b3$ svn info
URL: https://ssl.bheil.net/svn/b3
Basis des Projektarchivs: https://ssl.bheil.net/svn/b3
[...]

Blog jetzt "HTML 5"

Kategorie Web 23.09.2009    Kategorie Web Web    Tags html, web    Kommentare 0 Kommentare

Ich habe das Blog hier mal auf HTML 5 umgestellt. Klar, die Spezifikation ist noch nicht fertig. Aber ein bischen damit rumspielen kann nicht schaden. Das Umstellen beläuft sich dabei zum Großteil auf eins: Den DocType mit <!DOCTYPE html> deklarieren. Schön einfach! Ich hatte eine width-Angabe in einem table-Tag, was nicht mehr geht (muss nun per CSS deklariert werden). Aber mehr musste eigentlich nicht gemacht werden.

Vielleicht bin ich ja einfach blind, aber wie verfährt man nun mit leeren Tags? Werden die wie in HTML 4 einfach stehen gelassen (<img src="blabla.gif">) oder wie in XHTML explizit geschlossen (<img src="blabla.gif" />). Oder ist das gar variabel? Zumindest mosert der Validator nicht, aber wo steht was zu dem Thema? Wird das wirklich so "lasch" behandelt?

Validieren tut das Ganze jedenfalls schon mal: http://validator.w3.org/check?uri=http://www.bheil.net/blog/

Nachtrag:
Ok, ich glaub, ich weiß nun, wie das gehandhabt wird. Wird das Dokument als text/html ausgeliefert, wird es im HTML-Modus gerendert. Das heißt kein explizites Schließen von Tags, sondern genauso wie HTML 4. Wird das Dokument dagegen als application/xhtml+xml ausgeliefert, wird es im XML-Modus gerendert und somit muss explizit geschlossen werden.
Aber so genau nimmt das eh keiner, also kann man es machen, wie man will anscheinend. Der XML-Modus ist eh kaum benutzbar, da der IE ja immer noch nicht mit solch einem ContentType umgehen kann.
Wohl eine sehr pragmatische Lösung seiten des W3C. Find ich aber nicht schlecht, denn das heißt schlicht, wir können beim Stil von XHTML bleiben, an den man sich so lange schon gewöhnt hat. <br> sieht auch einfach komisch aus. Cheesy

MySQL: Suchen und Ersetzen


Um in einer MySQL-Tabelle was zu suchen und zu ersetzen, gibts die REPLACE-Funktion. Das ermöglicht zum Beispiel folgende SQL-Statements:

UPDATE mytable SET mycolumn = REPLACE(mycolumn, 'old', 'new')

Klingt vielleicht trivial, aber das muss man erstmal wissen! Smile

Spamwelle unter dem Deckmantel der "Focus"-Redaktion


Ich habe heute interessante Spam-Mails erhalten, die einer ganz neuen Masche folgen. Hier ist Mail 1:

Liebe Kolleginnen und Kollegen,

bitte schaut Euch doch einmal diese Webseite an:

www.handyblocker.org

Die Firma produziert diese Geräte selbst. Eine sehr interessante Idee. Wir sollten auf jeden Fall einen Artikel darüber schreiben, zumal diese Geräte inzwischen in Deutschland vermehrt eingesetzt werden.

Bin rechtzeitig zur Redaktionsbesprechung zurück im Büro, wenn der Flieger nicht wieder Verspätung hat.

Freundlichst
Nicole Degener

Exakt 20 Minuten später kam dann noch diese Mail:

Sehr geehrte Damen und Herren,

meine letzte Mail war nicht für Sie bestimmt.
Hatte mich in der Mailadresse völlig vertan.

Ich bitte meine Belästigung vielmals zu entschuldigen.

Freundlichst
Nicole Degener

Beide Mails kamen von nicoledegener@aol.com. Zuerst dachte ich, was hat eine Redakteurin des Focus mit meiner Mail-Adresse zu schaffen? Aber nach kurzer Recherche hab ich herausgefunden, dass ich wohl nicht der einzige war, der diese Mails bekam. Von daher eine neue Spam-Welle, die anscheiend auf diese Seite aufmerksam machen soll.
Allerdings ist das wohl eine neue Qualität. Trau, schau, wem ...

Gnome: "Fensterinhalt beim Ziehen anzeigen" deaktivieren

Kategorie Linux 12.09.2009    Kategorie Linux Linux    Tags gnome    Kommentare 0 Kommentare

Wenn Gnome übers Netzwerk (VNC, NX o.ä.) verwendet wird, ist es sinnvoll, beim Verschieben von Fenstern den Inhalt nicht anzuzeigen. Leider ist diese Option ziemlich versteckt. Änderbar ist das im gnome-editor. Dort navigiert man zu /apps/metacity/general und aktiviert die Option reduced_resources.

Ubuntu Server: Spracheinstellungen ändern


Auch wenns total simpel ist, muss ich doch immer nachschlagen, daher hier mal kurz und knapp die notwendigen Schritte, um einen Ubuntu Server auf Deutsch umzustellen:

sudo aptitude install language-pack-de
sudo dpkg-reconfigure locales

Die beiden Dateien /etc/environment und /etc/default/locale um diese Zeile ergänzen:

LANG="de_DE.UTF-8"

Dann ein reboot.

Neue Funktion: Screenshots von Webseiten


Lange ist es her, dass ich etwas neues bei Kendoo gemacht habe. Aber da ich für ein Projekt herauskriegen musste, wie sich Screenshots von Webseiten erzeugen lassen, habe ich mir gedacht, dass das doch sehr gut in die Kendoo-Toolsammlung passen würde.

Ab heute können nun also durch einfachen Aufruf einer URL Screenshots von Webseiten erzeugt werden. Dabei ist das URL-Schema wie folgt:

  • http://kendoo.net/webscreens/ADRESSE, also z.B. http://kendoo.net/webscreens/http://www.n-tv.de für einen Screenshot von n-tv.de
  • http://kendoo.net/webscreens/BREITE/HOEHE/SCHNITT/ADRESSE, also z.B. http://kendoo.net/webscreens/500/400/1/http://www.n-tv.de

Wenn Breite, Höhe und Schnitt angegeben werden, sind alle drei Daten notwendig. Dabei sind die Maße in Pixel gehalten. Schnitt ist entweder 0 oder 1: Wird eine 0 angeben, wird versucht, ein Thumbnail zu erzeugen, also eine kleine skalierte Version des Gesamtbildes. Dies funktioniert allerdings nur, wenn bei der Skalierung der gleiche Aspect Ratio erhalten bleibt - sollte dies unmöglich sein aufgrund des ursprünglichen Bildformats, wird das Bild geschnitten zurückgegeben. Das ist noch nicht perfekt, ich weiß. Das Rückgabebild ist aber auf jeden Fall in der gewünschten Größe.
Bei einer Schnittangabe von 1 wird alles, was über BREITE und HOEHE hinausgeht, schlicht abgeschnitten. Man bekommt also ein Bild der linken, oberen Ecke der Webseite sozusagen.

Dabei sollte noch beachtet werden, dass ADRESSE immer ganz hinten anzugeben ist und immer mit beginnendem http:// bzw. https://, d.h. es muss eine vollständige URL sein.

Sollte schon ein Screenshot der entsprechenden Seite vorliegen, wird dieser zurückgeliefert. Der Screenshot kann somit schon älter sein. Brauchst Du allerdings ein aktuelles Bild und willst eine Erzeugung eines neuen Screenshots erzwingen, gebe force in der Adresse an, z.B. http://kendoo.net/webscreens/force/http://www.n-tv.de. Dies funktioniert natürlich auch bei zusätzlicher Angabe von Höhe und Breite. Allerdings sollte dies mit Umsicht verwendet werden.

Die Performance der Anwendung sollte recht positiv ausfallen. Da nur dann ein Screenshot erzeugt wird, wenn dieser noch nicht existiert, dauert nur der erste Aufruf relativ lange (bis 20 Sekunden sind keine Seltenheit, je nach der Ladegeschwindigkeit und Komplexität der zu fotographierenden Seite). Weitere Aufrufe gehen dann fix, da sofort das gewünschte Bild geliefert werden kann.

Damit keine "schmutzigen" Dinge fotographiert werden, wird bei Erzeugung eines Screenshots die IP des "Fotografen", sprich des die URL aufrufenden Rechners, mit den Meta-Daten des Bildes gespeichert.

Soweit werden die Screenshots auf unbestimmte Zeit vorliegen, also nicht gelöscht werden. Erst wenn so fleissig fotografiert werden sollte und das Screenshot-Verzeichnis irgendwann mal überquillt, mache ich mir da nochmal Gedanken. Aber bis dahin ist lang hin - ist noch genug Platz da. Wink

Mami, warum haben wir einen Server im Haus?


Oh meine Güte. Erst dachte ich ja, dieser Artikel ist ein Scherz, aber die Leute bei Microsofts Marketing-Abteilung haben anscheinend viel Zeit und Fantasie. Wink

Microsoft hat ein Kinderbuch veröffentlicht, in dem erklärt wird, warum man einen Heimserver (natürlich mit Windows) braucht:
Buch-Cover
A "stay-at-home" server: you know it's the right thing for your family. But how do you explain this wonderful choice to your children? Finally, there's a book that talks about the home server using small words and fun pictures, perfect for kids. Written by Tom O'Connor and lovingly illustrated by Jill Dublin, this is a book you and your family will want to read over and over again.

Ein Link sagt mehr als tausend Worte:
http://www.amazon.com/Mommy-Why-There-Server-House/dp/160530641X/

Auf der Microsoft-Webseite dazu gibts noch mehr tolle Sachen zum Lesen, z.B. das "Server Feng Shui". Tja, das muss man gelesen haben.

Gartoon Redux-Icons in Ubuntu hinzufügen


Ich finde die Standard-Icons von Ubuntu ziemlich öde, daher tausche ich die immer mit den Icon-Paket Gartoon Redux von Krzysztof Kosiński aus. Diese Icons im Comic-Stil sind recht farbenfroh und öfters mal auch recht lustig anzuschauen. Das lockert die Arbeit spürbar auf.

Anstatt aber das Paket manuell runterzuladen und zu installieren, gibts auch ein PPA bei Launchpad dafür. Das ist natürlich noch viel feiner. Installation verläuft folgendermaßen:

Einbinden des PPAs (über Synaptic oder manuell in der Datei /etc/apt/sources.list):

deb http://ppa.launchpad.net/tweenk/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/tweenk/ppa/ubuntu jaunty main


Dann den Schlüssel für das PPA importieren:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EAD78279


und abschließend noch das Paket gnome-icon-theme-gartoon-redux installieren:

sudo aptitude install gnome-icon-theme-gartoon-redux


Das wars. Dann kann unter "Erscheinungsbild" das neue Icon-Set gewählt werden. Passt sich ziemlich stimmig ins Human-Theme von Ubuntu ein.

ubuntu-system-panel - ein neues Menü für Ubuntu


Das Standardmenü von Gnome, das auch unter Ubuntu Verwendung findet, ist mit sein drei Einträgen "Anwendungen", "Orte" und "System" recht groß. Auf normal großen Bildschirmen natürlich kein Problem, aber auf einem Netbook mit kleinem Screen ist das was ganz anderes. Aber es gibt Abhilfe: das Projekt ubuntu-system-panel bietet eine Alternative an mit vielen Möglichkeiten, das Menü seinen Bedürfnissen anzupassen. Die Installation ist relativ simpel und im Wiki beschrieben.

Hier ein Screenshot vom Netbook. Wie man sieht, richtig viel Platz für die Fensterleiste. Sauber.

Ubuntu System Panel im Einsatz

kdelibs 3.5.10 in einem LFS kompilieren

Kategorie Linux 01.07.2009    Kategorie Linux Linux    Tags kde, lfs, linux    Kommentare 2 Kommentare

Ich baue derzeit in einer VirtualBox-VM ein Linux From Scratch auf. Zum Einen zum Lernen, zum andern möchte ich dort ein KDE 3.5.10 bauen. Solch eine VM ist leicht zu sichern. KDE 3.5 war toll, hat also irgendwo auch nostalgische Gründe. Wink

Jedenfalls kommt es beim Bau der kdelibs zu einem Error während make. Es hat mich einige Zeit gekostet, einen Fix in der Mailing Liste für das Problem zu finden, daher möchte ich das hier mal dokumentieren. Diese Lösung stammt von Petr Ovtchenkov.

Erstmal der Fehler:

/bin/sh ../../libtool --silent --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I. -I../.. -I../../dcop -I../../kdecore -I../../kio/kssl -I../../kjs -I../.. -I./.. -I../../kdecore/network -I./../kssl -I../kssl -I./../../interfaces -I../../dcop -I../../libltdl -I../../kdefx -I../../kdecore -I../../kdecore -I../../kdecore/network -I../../kdeui -I../../kio -I../../kio/kio -I../../kio/kfile -I../.. -I/opt/qt/include -I. -I/opt/kde-3.5.10/include -D_LARGEFILE64_SOURCE -DQT_THREAD_SUPPORT  -D_REENTRANT  -Wno-long-long -Wundef -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -DNDEBUG -DNO_DEBUG -O2 -Wformat-security -Wmissing-format-attribute -Wno-non-virtual-dtor -fno-exceptions -fno-check-new -fno-common  -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION  -c -o libksycoca_la.all_cpp.lo libksycoca_la.all_cpp.cpp
In file included from /usr/include/asm/fcntl.h:1,
                  from /usr/include/linux/fcntl.h:4,
                  from /usr/include/linux/inotify.h:11,
                  from kdirwatch.cpp:74,
                  from libksycoca_la.all_cpp.cpp:2:
/usr/include/asm-generic/fcntl.h:117: error: redefinition of 'struct flock'
/usr/include/bits/fcntl.h:145: error: previous definition of 'struct flock'
/usr/include/asm-generic/fcntl.h:140: error: redefinition of 'struct flock64'
/usr/include/bits/fcntl.h:160: error: previous definition of 'struct flock64'

Die Lösung ist folgende: Nach dem configure führt man folgendes sed-Kommando aus:

sed -i -e 's|linux/inotify|sys/inotify|' \
       -e '/^static inline int inotify_init/,/^}/d' \
       -e '/^static inline int inotify_add_watch/,/^}/d' \
       -e '/^static inline int inotify_rm_watch/,/^}/d' kio/kio/kdirwatch.cpp

Danach gehts wie gewohnt mit make weiter.

Beim Paket kdepim siehts genauso aus. Auch hier wird nach dem configure folgendes ausgeführt:

sed -i "s@ \*/@&\n#define HAVE_FOPENCOOKIE@" libkdenetwork/libgpgme-copy/{assuan,gpgme}/funopen.c
sed -i -e 's|linux/inotify|sys/inotify|' \
       -e '/^static inline int inotify_init/,/^}/d' \
       -e '/^static inline int inotify_add_watch/,/^}/d' \
       -e '/^static inline int inotify_rm_watch/,/^}/d' kmail/editorwatcher.cpp

Danach sollte das Kompilieren funktionieren.

Kendoo: Multisuche erweitert um Fettdruck


Ich habe ein paar Änderungen an der Kendoo Multisuche vorgenommen, die da wären:

- In der Ergebnisliste werden nun Suchbegriffe fett hervorgehoben

- Die Farben sind etwas leichter, das verbessert den Kontrast auf bestimmten TFTs

- Die Suche wird nun bei Microsofts neuer Suchmaschine Bing durchgeführt. Nun, unter der Haube ist das das gleiche, da Bing intern praktisch nur Live Search 2.0 ist. Das Kind hat nur einen neuen Namen, mehr eigentlich nicht.

Blog ist wieder reines Blog


Ich hatte zwischenzeitlich dem Blog hier viele weitere Funktionen eingebaut. Da diese aber nun auf kendoo.net ausgelagert sind, habe ich den Quellcode aufgeräumt und aus dem Blog wieder ein reines Blog gemacht. Ich hoffe, es funktioniert noch alles so, wie es auch funktionieren soll. Wink

Die alten Links leiten nun auf die entsprechenden Dienste bei kendoo.net weiter. Von daher sollte das kein Problem darstellen.

Der Quellcode ist auch einsehbar unter https://secure.bheil.net/b3/.

Ich hatte auch überlegt, das eigene Blog mit etwas anderem auszutauschen, z.B. Wordpress oder das auch auf Django basierende byteflow. Beides sehr gute Blog-Engines. Allerdings ist byteflow zu "überladen" für mein kleines Blog und hat viele Features, die ich nicht brauche. Außerdem gefiel mir nicht, dass soviel Javascript Einsatz findet. Zumindest nicht in einem Blog. Daher fiel meine Wahl darauf, doch mein eigenes System zu entschlacken und hier weiter zu verwenden. Das ist zwar recht einfach gehalten, aber läuft nun seit über einem Jahr ziemlich gut.

Firefox-Addon-Collections


Mozilla hat ein tolles neues Feature auf ihren Addon-Seiten eingebaut: Collections. Das sind definierte Sammlungen von Addons. Da sich mit der Zeit da eine recht umfangreiche Liste anhäuft, ist es genial, diese auch an einer Stelle verwalten zu können.

Ich habe mir eine Liste erstellt unter https://addons.mozilla.org/de/firefox/collection/bheil. Es ist eine sehr umfangreiche Liste, also nicht erschrecken.

Wichtig sind vor allem die Addons, die benutzt werden können, um Daten der lokalen Firefox-Installation mit einem eigenem Server abzugleichen. Beispielsweise XMarks oder ReminderFox. (Zumindest bis Mozilla Weave irgendwann mal fertig wird.)

Das einzige, was mir noch fehlt, wäre, alle diese Addons mit einem Mausklick installieren zu können.

Eclipse 3.4 Plugin Problem: “No repository found containing…”


Mit Eclipse 3.4 passierts bei mir eigentlich immer irgendwann, egal auf welchem System: irgendwann gehen keine Updates mehr. Auch installieren lässt sich nichts mehr. Mit anderen Worten. Die Update-Funktion bringt immer nur Fehler und scheint komplett hinüber.

Aber endlich gibts dafür einen Workaround, der alles wieder ins Lot bringt. Quelle: http://jars.de/java/eclipse-34-plugin-problem-no-repository-found-containing

In Kürze funktioniert das so:

1. Zuerst in Eclipse unter Software Updates -> Manage sites -> Export die bisherigen Repositories exportieren

2. Dann Eclipse beenden und Dateien mit folgendem Muster löschen: org.eclipse.equinox.p2.*.prefs. Diese liegen meist im Eclipse-Verzeichnis unter configuration/.settings.

Diese können aber auch, je nach Installationsort etc. an verschiedenen Stellen liegen. Am besten ist ein locate org.eclipse.equinox.p2.*.prefs, um die Dateien zu finden. (Vorher mit sudo updatedb die Datenbank erstmal aktualisieren. Wink )

Bei mir lagen sie unter /home/bheil/Software/eclipse/configuration/.settings/. Man beachte den Punkt vor settings: Das ist ein verstecktes Verzeichnis! Also versteckte Dateien anzeigen lassen, falls nötig.

3. Eclipse wieder starten, die vorher exportierten Repos wieder importieren und tada, das Update klappt wieder wie gewohnt.

An dieser Stelle ein dickes Danke an Markus Junginger für diesen Workaround. Kudooos. Wink

Nachtrag: Ach ja, falls Eclipse nach einem größeren Update nicht mehr starten will, erstmal Eclipse von der Shell mit "-clean" aufrufen!

Vorhang auf für kendoo.net

Kategorie Kendoo 25.04.2009    Kategorie Kendoo Kendoo    Tags kendoo    Kommentare 2 Kommentare

Kleine Vorgeschichte: Dieses Blog ist in Django geschrieben und war mein erstes größeres Django-Projekt. Damals ging es mir vor allem darum, Django und Python zu lernen. Mit der Zeit hatte ich das Blog um verschiedene Sachen erweitert, z.B. eine Möglichkeit, Bilder hochzuladen, Passwörter auszugeben usw.

Aber eigentlich hat sowas nichts in einem Blog zu suchen, denke ich, daher habe ich mich dazu entschlossen, eine neue Applikation zu schreiben, die solche Dienste anbietet.

Somit gebe ich - nicht ohne Stolz - die Seite kendoo.net bekannt (Trommelwirbel bitte Wink ), erreichbar unter (wer hätte es gedacht):

http://kendoo.net

Derzeit bietet Kendoo folgendes:

- Einen Feedreader. Der Feedreader ist ähnlich wie z.B. Google Reader, aber bei weitem nicht so komplex. Er ist genau das, was ich immer als Feedreader haben wollte, aber nirgends finden konnte.
Der Feedreader unterstützt die gängigen Formate RSS 2.0, Atom 1.0 und RSS 0.91. Die Feeds werden alle 30 Minuten automatisch abgeholt. Einträge können mit einer Markierung gekennzeichnet werden, um sie für später vorzumerken.

- Eine MultiSuche! Dieses Formular fragt gleichzeitig die drei größten Suchanbieter ab: Google, Yahoo! und Microsoft Live Search. Die Ergebnisse werden nicht wie bei einer Metasuchmaschine miteinander verschmolzen, sondern nebeneinander in einer Tabelle dargestellt. Meistens ist das Gesuchte schon unter den ersten Treffern und so ist eine gute Übersicht gegeben. Außerdem kann es auch mal interessant sein, die Ergebnisse der Suchmaschinen direkt gegenüber gestellt zu sehen.
(bitte Hinweis hierzu weiter unten beachten!)

- Den schon bekannten Bildertausch. Hier kann schnell und einfach ein Bild hochgeladen werden, welches dann einfach verlinkt oder in Foren eingebunden werden kann. Allerdings ist hierzu jetzt eine Anmeldung notwendig.

Und soweit noch Zufallspasswörter und Weiterleitungen (Redirects). Um eine Weiterleitung einzurichten, ist auch eine Anmeldung notwendig. Die Weiterleitung selbst klappt dann natürlich ohne.

Wie ersichtlich werden dürfte, hatte ich bei der Entwicklung kein Massenpublikum im Sinn, sondern weil das Dinge sind, die ich selbst verwenden möchte. Und was liegt da näher, als sich selbst an der Umsetzung zu versuchen? Allerdings denke - und hoffe - ich, dass auch andere daran ihre Freude haben könnten. Daher ist das eine öffentliche Seite und es steht jedem Besucher frei, die Dienste in Anspruch zu nehmen.

Noch ein wichtiger Hinweis zur MultiSuche: Da die Situation mit der Vorratsdatenspeicherung derzeit reichlich undurchsichtig ist, werden bei allen Anfragen die IP-Adresse, der Suchbegriff und das Datum gespeichert (wie das auch Google usw. machen). Ich gebe zu, ich weiß nicht, ob das notwendig ist, aber da mir die Feinheiten des juristischen Denkens gänzlich unverständlich sind und das eine Grauzone darstellt, habe ich mich dazu entschlossen, so etwas einzubauen. Diese Daten werden automatisch nach 6 Monaten gelöscht und auf keinen Fall weitergegeben, außer es geht um eine Straftat und der Staat klopft an meine Tür. Sollte das Kapitel Vorratsdatenspeicherung irgendwann mal von den Verantwortlichen aufgegeben werden, wird dieses "Feature" sofort entfernt.
Vielleicht kann ein Leser mit juristischem Verständnis mir hier weiterhelfen und mich über diese Sache aufklären. Aber da die Suchanfragen gegenüber den Suchmaschinen von der IP dieses Servers gestellt werden, denke ich, ist es wichtig zu wissen, woher die Anfrage ursprünglich kam, falls es mal zu einer rechtlich heiklen Situation kommen sollte.

Zum Ende möchte ich aber auch noch auf das Impressum verweisen. Ich biete die Seite an, wie sie ist, ohne Ansprüche auf Erreichbarkeit oder Datensicherheit zu gewähren. Natürlich werden keine Daten weitergegeben wie z.b. die Mail-Adressen, die bei einer Registrierung verwendet werden!

Weitere Ideen sind immer willkommen, da ich plane, das in Zukunft noch auszubauen. Also wenn Du eine Idee hast, zögere nicht, mich anzuschreiben (kontakt@bheil.net).

P.S. Da dann bald die Blog-Software selbst von allem Schnickschnack bereinigt ist, werde ich diese als Open Source verfügbar machen. Allerdings müssen die meisten Formatierung derzeit als richtiges HTML angegeben werden und so plane ich, einen Editor wie TinyMCE einzubinden. Aber davon später mehr ...

Python 2.6 DeprecationWarning


Soeben habe ich den Server auf Ubuntu 9.04 aktualisiert. Das lief astrein und alles funktioniert einwandfrei. Nur selbst installierte Python-Module musste ich "neu einbinden" (sprich: Symlinks neu setzen und fertig).

Aber da nun Python 2.6 die Standard-Python-Version ist und bei mir etliche Python-Skripte - selbst geschriebene und fremde - in Cron Jobs laufen, quillt mein Posteingang wegen Mails aus eben diesen Cron Jobs über. Und alle handeln von DeprecationWarnings, also Warnungen, das Modul xy mit Python 3.0 wegfallen wird. Nun ist dies natürlich ungemein praktisch - für den eigenen Code. Aber keine dieser Warnungen kommt von meinem eigenen Code, sondern von fremden. Grmpf.

Bisher seh ich noch keine Möglichkeit, das sauber zu lösen, bis die entsprechenden Programmierer das angepasst haben und die neuen Versionen über die gängigen Pakete verfügbar werden. Bis dahin bleiben zwei "unsaubere Lösungen":

- Wird das Skript direkt über python aufgerufen, reicht es, den Parameter -Wignore anzugeben. Das ignoriert aber alle Warnungen!

- Bei schweren Fällen geht nur ein gepflegter Eingriff in das Python-Modul selbst. Da etliche Python-Skripte Warnungen wegen dem sets-Modul ausgeben, kann diese durch ein Editieren der Datei /usr/lib/python2.6/sets.py und dem Auskommentieren des Codes unterdrückt werden:

#import warnings
#warnings.warn("the sets module is deprecated", DeprecationWarning,
#                stacklevel=2)

Ist aber zugegeben keine gute Lösung. Aber bis das "Problem" in allen Skripten gelöst sein wird, wird es noch dauern. Bisher scheint das auch nur beim sets-Modul notwendig zu sein.

Kennt jemand eine bessere Lösung? Bin für jede Hilfe dankbar.

Eluveitie - Omnos


So Musik gibts viel zu selten:

http://www.youtube.com/watch?v=msRy4vcSX4k

Ubuntu 9.04 (Beta) auf Asus eeePC 900


Vor ein paar Tagen beschrieb ich die gelungene Installation vom Ubuntu Jaunty Netbook Remix auf meinem Asus eeePC 900. Nachdem ich nun einige Zeit damit gearbeitet habe, habe ich mich heute dazu entschlossen, wieder ein "normales", herkömmliches Ubuntu zu installieren. So nett der Netbook Remix mit der auf kleinen Bildschirmen optimierten Oberfläche auch ist - im Praxiseinsatz war es für mich eher hinderlich. Vielleicht bin ich die normale Oberfläche auch schon zu gewohnt, aber ich war unterm Strich bei der meisten Arbeit langsamer und es fühlte sich einfach nicht so "rund" an. Einen wirklich rationalen Grund gibt es wohl nicht - aber mit dem Standard-Gnome-Desktop (mit Anpassungen) komme ich einfach besser zurecht.

Die Installation der neuesten Version funktioniert immer noch genauso, wie im Artikel zu Ubuntu Hardy beschrieben. Allerdings - wie auch schon beim Netbook Remix-Test erwähnt - funktionieren die meisten Dinge out-of-the-box, bei denen zuvor manuell nachgebessert werden musste.

Zuerst muss ein USB-Stick zur Installation vorbereitet werden. Wer ein Ubuntu Intrepid 8.10-System zur Verfügung hat, kann einfach das Programm usb-creator verwenden. Das erledigt die gesamte Einrichtung des Sticks vollautomatisch. Sehr feines Ding!
Andere Wege sind im deutschen Wiki beschrieben.

Die Installation selbst verläuft wie gewohnt. Es empfiehlt sich allerdings, schon ext4 als Dateisystem zu verwenden: Die Performance ist spürbar besser als bei ext3!

Nach der Installation wird ein nicht-freier Madwifi-Treiber für WLAN angeboten. Ich habe diesen aber nicht installiert, da das WLAN sofort fehlerfrei funktionierte.

Das funktioniert alles:
- Funktionstasten (bis auf die fürs WLAN Fn+F2, da passiert nichts)
- WLAN
- Sound
- Webcam

Nicht getestet habe ich das Mikrophon, da ich es eh nicht verwende.

Die Compiz-Einstellung, damit Fenster auch über den Rand des Monitors geschoben werden können, empfiehlt sich weiterhin:

sudo gconftool-2 --set /apps/compiz/plugins/move/allscreens/options/constrain_y --type bool 0

Die Prozessortaktung geht nachwievor nicht automatisch, da das entsprechende Kernel-Modul fehlt. Die Installation verläuft exakt wie im alten Artikel beschrieben. Ebenso habe ich auch die dort beschriebenen Optimierungen vorgenommen, um das Swappen z.b. so weit wie möglich zu unterbinden.

Allerdings sind diese Anpassungen optional, so dass durchaus gesagt werden kann, dass Ubuntu 9.04 reibungslos auf dem Asus eeePC 900 funktioniert.

Abwrackprämie unverschlüsselt?


Da ich überzeugter Nicht-Autofahrer bin, habe ich nur am Rande mitbekommen, dass die Anträge zur Abwrackprämie online gestellt werden müssen. "Die Behörden gehen mit der Zeit, recht so" dachte ich. Aber anscheinend ist das Formular nur unverschlüsselt erreichbar: http://www.ump.bafa.de/ Shocked

Da werden private Daten abgefragt und dann einfach so verschickt, und das, obwohl der Großteil der Nutzer wohl ziemlich unwissend in Computerfragen sein dürfte und sich darüber bestimmt nicht im Klaren ist. Das ist ja schon grob fahrlässig von den Machern, sowas nicht ausschließlich über https anzubieten.

Das ist kein Vorzeige-Beispiel von gelungenem eGovernment.

ASCII-Tabelle

Kategorie Software 08.04.2009    Kategorie Software Software    Tags ascii    Kommentare 0 Kommentare

Auch eine ASCII-Tabelle ist oft hilfreich ...



HTML- und XHTML-Entities

Kategorie Code 08.04.2009    Kategorie Code Code    Tags html, xhtml    Kommentare 0 Kommentare

Eine Liste aller HTML- und XHTML-Entities, wird ja doch öfters mal bei der Entwicklung gebraucht ...



Mehrere Dateien in Subversion ignorieren?


Letzt beschrieb ich, wie in Subversion pyc-Files ignoriert werden können. Schön und gut. Aber bei einigen Verzeichnissen muss auch noch eine zweite oder dritte Datei ignoriert werden. Nichts einfacher als das, dachte ich, wird ja kumulativ sein. Also verwendete ich die gleiche Anweisung, um auch die zweite Datei zu ignorieren. Das Ergebnis war ebenso unerwartet wie ernüchternd: Die vorherige Einstellung, also der Wert von svn:ignore, wurde schlichtweg überschrieben.

Anscheinend ist der einzige Weg, Subversion da mehrere Dinge beizubringen, der, zuerst eine Datei zu erzeugen mit jedem zu ignorierenden Pattern in eine eigene Zeile, also z.B. so:

*.pyc
dev.db
.pydevproject
.project

Dann kann dies mit folgender Anweisung hinzugefügt werden:

svn ps svn:ignore -F DATEINAME trunk/

Elegant ist was anderes. Und intuitiv ist das auch nicht. Hab ich vielleicht etwas übersehen und gibts doch ne bessere Lösung dafür?

Jedenfalls sollte aber das Ergebnis überprüft werden, damit da nichts schief gegangen ist:

[12:05:51]bheil@192.168.178.3:~/SVN> svn propget svn:ignore trunk
*.pyc
dev.db
.pydevproject
.project

Ubuntu 9.04 Netbook Remix (Beta)


Ich nenne einen Asus eeePC 900 mein Eigen, auf dem Ubuntu frisch und fröhlich seinen Dienst schiebt. Mit ein paar Handgriffen lief auch Version 8.04 bzw. 8.10 einwandfrei. Vor kurzem flatterte eine Mail mit dem bezeichnenden Betreff "Ubuntu Netbook Remix 9.04 Beta released" in meinen Posteingang. Da ich das Netbook in erster Linie zum Surfen und "Server überwachen" verwende und da im Moment keine wichtigen Daten drauf sind, dachte ich mir, könnte ich die Beta doch mal ausprobieren.

Also das USB-Image der Beta heruntergeladen. Auf einen USB-Stick bekommt man das recht einfach:

sudo dd if=ubuntu-9.04-beta-netbook-remix-i386.img of=/dev/sdb1 bs=1024
/dev/sdb1 muss hierbei natürlich mit dem richtigen Wert ersetzt werden. Dieser kann leicht über mount herausgefunden. Einfach schauen, wo der USB-Stick gemountet wurde.

Die Installation verlief einwandfrei und einfach, wie von Ubuntu gewöhnt. Die Eingabemasken sind nun an die kleine Bildschirmgröße angepasst und werden bildschirmfüllend dargestellt. Bei der Partionierung habe ich gleich das neue Dateisystem ext4 ausgewählt. Wenn schon, denn schon. Wink

Beim ersten Start war ich regelrecht überrascht - wo die Vorgängerversion ca. 70 Sekunden brauchte, um vollständig zu booten, ist die neue in nicht mal 30 Sekunden einsatzbereit. Wahnsinn!

Der Netbook-Remix präsentiert sich recht ansprechend und aufgeräumt (klicken für Originalgröße):
Ubuntu 9.04 Netbook Remix

Was mich aber noch mehr erstaunte bzw. erfreute, ist, dass sofort alles out-of-the-box funktionierte: WLAN, Mikro, Webcam, Sound. Alles klappte sofort. Das einzige Manko, das mir bisher aufgefallen ist: Die Grafikperformance ist recht bescheiden in der neuen Menüstruktur. Aber das dürfte auf die Beta zurückzuführen sein. Anwendungen wie Firefox etc. laufen genauso schnell wie bei 8.10 auch.

Ansonsten ein absolut empfehlenswertes Upgrade: Ubuntu ist endlich richtig auf den Netbooks angekommen! Abgesehen von der Grafikperformance läuft das System rund. I'm very impressed. Cheesy

PISA: PDF-Dokumente in Python einfach erstellt


Auf meiner Arbeit wurde sehr lange ein Word-Makro verwendet, um Text in eine bestimmte Form zu pressen und dann auszudrucken. Dieses Makro war nicht gerade einfach in der Bedienung und relativ fehleranfällig, überdauerte aber die Zeit von Office 97, Office XP bis hin zu Office 2003 - in Office 2007 funktioniert es schlicht nicht mehr.

Nun stand ich vor dem Problem, das Makro in Office 2007 wieder zu flicken (oh Graus), oder vielleicht gleich das Ganze in einer anderen Umgebung umzusetzen. Die Wahl war klar und die betroffenen Kollegen, die damit am Ende arbeiten würden, hatten nichts gegen meinen Vorschlag, eine kleine Webanwendung zu schreiben, die die Konvertierung macht und daraus ein PDF generiert.

Die Django-Applikation war schnell geschrieben, aber da ich noch nie in Python ein PDF erstellt hatte, dachte ich, dass wird ein ziemlich großer Aufwand - bis ich auf Pisa stieß. Das ist nicht der berühmt-berüchtigte Test für das Bildungssystem, sondern ist ein HTML/CSS-zu-PDF-Konverter für Python. Lizenziert unter der GPLv2 steht dem Einsatz nichts im Wege.

Wer also HTML/CSS kann, der kann damit auch ziemlich einfach PDF-Dateien erstellen. Ein Bild könnt Ihr Euch auf der Demo-Seite von Pisa machen. Die Handhabung ist simpel und in der Dokumentation steht alles, was man wissen muss.

Damit war das angesprochene Projekt in wenigen Stunden umgesetzt. Und kein Microsoft Office ist mehr nötig - nur ein Browser und ein PDF-Reader. Zu guter Letzt ist auch der Arbeitsplatz nicht mehr relevant. Die Kollegin kann den Druck anstoßen, wo auch immer sie gerade arbeitet.

Open Source macht einfach produktiver! Smile

Star Wars ASCII-Art


Das ist wirklich einen Blick wert: Star Wars als Film in ASCII-Art im Terminal. Einfach in einer Konsole folgendes aufrufen:

telnet towel.blinkenlights.nl

Subversion beibringen, *.pyc-Files zu ignorieren


Wer Python-Projekte mit Subversion verwaltet, wird das leidige Thema kennen, das Subversion auch kompilierte Python-Dateien mit der Endung pyc beachtet. Mit folgendem Befehl kann das unterbunden werden: Die Endung *.pyc wird in jedem Verzeichnis zur Eigenschaft svn:ignore hinzugefügt und somit beachtet Subversion das nicht mehr.

svn -R propset svn:ignore "*.pyc" .

Irgendwo stand, dass Subversion in der neuesten Version pyc-Files nicht mehr beachtet würde. Damit wäre das hinfällig. Aber in SVN 1.5.1 ist das anscheinend noch nicht der Fall.

pyxml in Ubuntu anyone?


Heute wollte ich die DocBook-Ausgabe in MoinMoin aktivieren, aber ich erhielt nur einen Fehler:

ImportError: No module named ext.reader

Da fehlte also augenscheinlich was auf dem Server. Angeblich soll es reichen, python-xml (und python-lxml) zu installieren, aber das war schon installiert. Nach etwas Recherche fand ich heraus, dass in Ubuntu Hardy (und Intrepid auch) zwar die XML-Dinge installiert sind, allerdings als oldxml in site-packages verlinkt sind. Reichlich mysteriös. So klappt natürlich kein Import in irgendwelchen Python-Skripten.

Eine kurzfristige "Lösung", oder besser ein Workaround, ist das folgende:

cd /usr/lib/python2.5/site-packages
sudo ln -s oldxml/_xmlplus/ xml

Dann steht unter xml alles bereit, so dass Imports wieder funzen. Testen am besten im Python-Interpreter:

Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52) 
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from xml.dom.ext.reader import Sax
>>> exit()

Das funktioniert zwar, aber so richtig zufrieden bin ich damit nicht. Bei jedem OS-Update (Jaunty bald z.B.) könnte es evtl. da Probleme geben, also im Hinterkopf behalten und vor dem Update den Link lösen und schauen, ob es sich gebessert hat - falls nicht, kann der Link ja wieder gesetzt werden.

KeepAlive-Paket bei SSH-Verbindungen senden

Kategorie Linux 01.03.2009    Kategorie Linux Linux    Tags ssh    Kommentare 0 Kommentare

Nach einer gewissen Zeit ohne Datenübertragung werden offene SSH-Verbindungen in der Regel vom Server/Router/was auch immer geschlossen. Das kann sehr einfach unterbunden werden: in der Datei /etc/ssh/ssh_config ganz am Ende (im Abschnitt "host *") folgendes eintragen:

ServerAliveInterval 30

Das sorgt dafür, dass alle 30 Sekunden ein Null-Paket gesendet wird. Dies reicht, um die Verbindung offen zu halten.

Syslog-Fehlermeldungen von console-kit-daemon

Kategorie Linux 01.02.2009    Kategorie Linux Linux    Tags ubuntu    Kommentare 0 Kommentare

Auf einem Ubuntu Intrepid-System erschienen im Syslog in regelmäßigen Abständen Meldungen wie:

Feb  1 13:39:01 bheil console-kit-daemon[28977]: CRITICAL: cannot initialize libpolkit
Feb  1 13:40:02 bheil console-kit-daemon[29272]: WARNING: Could not determine active console
Feb  1 13:40:02 bheil console-kit-daemon[29272]: WARNING: Error waiting for native console 3 activation: Invalid argument
Feb  1 13:40:02 bheil console-kit-daemon[29272]: WARNING: Error waiting for native console 4 activation: Invalid argument
Feb  1 13:40:02 bheil console-kit-daemon[29272]: WARNING: Error waiting for native console 5 activation: Invalid argument
Feb  1 13:40:02 bheil console-kit-daemon[29272]: WARNING: Error waiting for native console 1 activation: Invalid argument
Feb  1 13:40:02 bheil console-kit-daemon[29272]: WARNING: Error waiting for native console 7 activation: Invalid argument
Feb  1 13:40:02 bheil console-kit-daemon[29272]: WARNING: Error waiting for native console 8 activation: Invalid argument
Feb  1 13:40:02 bheil console-kit-daemon[29272]: WARNING: Error waiting for native console 9 activation: Invalid argument

Dies ließ sich recht einfach durch Installation des Pakets policykit und anschließendem Reboot beheben.

Das Problem kam durch die Installation eines Programms, das dbus verwendet. Zwar wurde dbus und in Folge auch libpolkit installiert, aber für das fehlerfreie Funktionieren wird eben auch noch das Paket policykit benötigt - zumindest in diesem Fall. Dieses wurde aber von aptitude nicht als Abhängigkeit mitinstalliert.

Es kann gut sein, dass dies nur in diesem speziellen Fall so ist, aber wer sich über ähnliche Meldungen wundert, sollte mal schauen, ob policykit installiert ist und falls nicht, dies mal zum Test installieren. Vielleicht ist die Lösung ja auch da so einfach ...

Python Cheat Sheet


Eine sehr schöne Sache ist dieses Cheat Sheet für Python-Entwickler. Das Wichtigste (bzw. oft verwendeste) schnell im Blick.

Windows 7 Beta zum Ausprobieren


Heute hat Microsoft die Beta-Version vom Vista-Nachfolger Windows 7 für alle zum Download angeboten (siehe auch in Microsofts Technet-Blog). Leider sind die Server von Microsoft dem Ansturm nicht gewachsen und es erscheinen tolle Meldungen wie "Server is too busy...". Das dürfte daran liegen, dass es nur 2,5 Millionen Downloads (bzw. Keys) geben wird, und somit alle Interessierten nun natürlich die ersten sein wollen. Diese Vorstellung ging wohl etwas in die Hose.

Im Gegensatz zu dieser Demonstration eines gelungen, selbst verschuldeten DDOS sieht Windows 7 allerdings schon recht annehmlich aus. Ich habe es in VirtualBox ausprobiert (aber nur einigen Minuten bisher, also kein ausführlicher Test) und es geht wirklich richtig fix. Die neue Taskleiste ist zwar gewöhnungsbedürftig, aber nicht schlecht. Ob sie wirklich besser ist, wird nur ein längerer Test ans Licht bringen. Toll finde ich vor allem die Tools zur Systemüberwachung, die zwar tief versteckt sind, aber richtig schönen Einblick gewähren.

Wer nicht so lange warten will, bis die MS-Server wieder gehen, hier sind Direkt-Links zu der englischen Version (ich habe aber keine Ahnung, wie lang diese gültig sein werden):

32-Bit 64-Bit

Zwar fehlt dann immer noch der Beta-Key, aber angeblich soll auch die Freischaltung für einen weiteren Testraum wie damals bei Vista funktionieren (siehe Heise-Artikel). Da die Beta sowieso am 01. August den Dienst einstellt, dürfte das für Tests locker reichen.

Vielleicht wird Windows 7 wirklich der Nachfolger von XP. Was ich da bisher gesehen habe, lässt zumindest hoffen ...