“Kleines” Einführungsvideo in Ubuntu Unity

Ich habe mich mal hingesetzt und habe ein “kleines” Einführungsvideo für Ubuntu Unity erstellt. “Leider” ist es nicht klein geblieben sondern ist insgesamt 55 Minuten lang geworden.

Die Tonqualität ist mangels professionellen Equipment nicht so toll und ich bin auch nicht der große Erzähler. Deshalb ist es an manchen Stellen etwas langatmig geworden. Ich hoffe trotzdem, dass es informativ ist.

Aufgrund der Länge und Dateigröße habe ich mich entschlossen, dass Video nicht bei einem Video Portal hochzuladen sondern ihr könnt es euch aus meinem Ubuntu One Verzeichnis herunterladen. Die Dateigröße beträgt etwa 180MB.

Zum Abspielen des Videos hier klicken

  • Firefox 4 spielt das Video direkt ab. JavaScript muss aktiviert sein. Abspeichern kann man über Datei–>Seite speichern unter…
  • Chromium scheint es nicht direkt abzuspielen. Wenn man die Seite aufgerufen hat auf den Menubutton klicken und mit Seite speichern unter… die Datei abspeichern.

Ich wünsche euch viel Spaß und hoffe, damit einige Fragen beantworten zu können.

Vier Jahre Linux

Vier Jahre ist es her (inzwischen sogar etwas mehr), dass ich konsequent auf Linux umgestiegen bin. Nach diversen Versuchen unter anderem mit Debian und KDE  (und vor langer, langer Zeit mit Suse 7 und Suse 9) kam bei mir der Durchbruch mit Feisty Fawn. Wer jetzt nachrechnet wird feststellen, dass Feisty vor vier Jahren zu dieser Zeit noch gar nicht draußen war. Das ist richtig. Ich bin mit der damals noch existierenden Alpha 5 eingestiegen. Jetzt wird mancher denken “au weh, Anfänger und Alpha”, aber es ging erstaunlich gut und mir war auch bewusst, worauf ich mich einlasse.

Seit dem hat sich vieles geändert, manches aber leider nicht. Ich erinnere mich zum Beispiel, dass in Feisty der Druckdialog von Gnome doch noch recht spartanisch war und viele Funktionen wie beidseitiger Druck oder mehrere Seiten auf eine noch nicht existierten. Beides Funktionen, die ich immer wieder brauchte. KDE bot diese Funktionen, weshalb ich mich damals ziemlich über Gnome und die minimalistischen Einstellungen geärgert habe. Glücklicherweise kam das mit Gutsy Gibbon.

Warum ich damals Ubuntu und nicht Debian verwendet habe ist einfach. Ubuntu machte nach der Installation einen runderen Eindruck und musste nach der Installation nicht noch aufwändig von Hand konfiguriert werden. So haben beispielsweise alle Multimedia Tasten ootb funktioniert. Auch Ubuntuusers hat eine wichtige Rolle gespielt. Das Wiki war (und ist) sehr hilfreich und die Community war (und ist) hilfsbereiter als andere Communities, die ich kenne.

Richtig angekommen bin ich bei Linux erst mit Gutsy Gibbon. Es hat rund ein halbes Jahr gedauert, bis ich mich in Linux so weit eingearbeitet und alte Windows Gewohnheiten abgelegt hatte. Bis dahin hab ich mich öfter mal geärgert und habe Linux doch das eine oder andere mal verflucht, wieso das denn so umständlich ist im Vergleich zu Windows. Inzwischen sehe ich das Ganze deutlich entspannter und gelegentlich frage ich mich, wieso Windows nicht so einfach sein kann wie Linux. Daher an dieser Stelle ein Appell an alle Ein- und Umsteiger: habt Geduld und nehmt euch Zeit. Nehmt Windows (oder OS X) nicht als Maßstab.

Wie ich bereits gesagt habe, es hat sich viel getan, sowohl bei Linux als auch bei mir. Es sind viele Funktionen hinzugekommen, die Benutzung wurde immer einfacher, die Installation immer leichter. Die unterstützte Hardware wird immer umfangreicher und besser unterstützt. Ich habe viel dazugelernt und kann im Fall eines Problems mir besser selbst helfen als das zu Windows Zeiten der Fall war. Wo es bei Windows noch hieß “neu installieren” kann ich mich bei Linux oftmals relativ schnell durch die Konsole beißen und das Problem ohne Neuinstallation lösen.

Es gibt aber auch nach wie vor zum Teil uralte Probleme. Zum Beispiel das “Würfelspiel” im Gnome Panel. Fügt man Schnellstarter zum Panel findet man sie nach einem Neustart an einem neuen Platz und wenn man mal die Auflösung des Desktops ändert werden so ziemlich alle Appletts auf der rechten Seite durcheinander gewürfelt. Das war unter Feisty schon so und ist bis heute unverändert.

Auch Flash ist nach wie vor ein Trauerspiel. Hohe CPU Leistung, ruckelnde Videos, abstürzende Browser. An Alternativen, sowohl für den Flash Player als auch für Flash insgesamt, mangelt es eigentlich nicht. Nur durchgesetzt hat sich noch nichts oder sind noch nicht fertig.

Auch bei den Grafiktreibern gibt es immer noch viel Verbesserungsbedarf. Recht zuverlässig sind eigentlich die Intel Treiber, dafür bieten sie nicht viel. Schlechte 3d Leistung, keine Hardwareunterstützung für Video Playback (oder nur eingeschränkt und mit viel Aufwand).

Bei Nvidia kommt man nach wie vor nicht am proprietären Treiber vorbei. Die Unterstützung (wenn man überhaupt von Unterstützung sprechen konnte) für den nv Treiber wurde komplett eingestellt und Nouveau hechelt hoffnungslos hinterher. Dafür bietet der proprietäre Treiber den besten Funktionsumfang und die beste Leistung, wenn denn mal alles funktioniert. Ich hatte, je nach angeschlossenem Monitor, unlösbare Probleme mit Tearing.

Die besten Erfahrungen hab ich bisher mit der HD4xxx Generation von AMD und dem freien Radeon Treiber gemacht. Stabiler Desktop, Videos werden ruckelfrei und ohne Tearing abgespielt, viele Spiele sind trotz der schwachen 3D Performance durchaus spielbar. Aber eben nicht alle. So hat mit Braid sogar ein 2D Spiel den Dienst verweigert. FGLRX ist leider auch keine Lösung. Entweder habe ich beim Abspielen von Videos Tearing oder die Videos ruckeln.Für normale Desktop Arbeit und zum Video schauen sollte man also eher den Radeon Treiber verwenden und auf FGLRX verzichten.

Etwas enttäuscht bin ich von meinem Samsung Netbook. WLAN nur mit proprietärem Treiber, Standby nur nach manueller Konfiguration und die Sondertasten und die Hintergrundbeleuchtung funktionieren nur mit speziellen Treibern, die leider nicht in der Standard Installation enthalten sind. Es gibt zwar ein PPA mit Treibern für Samsung Notebooks, aber für Natty wurde es noch nicht angepasst und unter Maverick funktioniert leider nicht alles.

Insgesamt ist mir bisher aber nur wenig Hardware über den Weg gelaufen, die nicht oder nur mit viel Aufwand funktioniert. Besonders bei den Webcams hat sich einiges getan. Von daher hoffe ich, dass Linux auch im Desktop Bereich an Bedeutung gewinnt und die Hersteller Treiber für ihre Hardware zur Verfügung stellen müssen.

Das gleiche gilt leider auch noch für die Software. Es gibt zwar schon sehr viel Software und ein Großteil muss den Vergleich mit entsprechenden Windows Programme nicht mehr scheuen, aber es gibt auch noch viele dunkle Flecken in der Software Landschaft von Linux. Insbesondere bei sehr spezieller Software, beispielsweise herstellerspezifische Entwicklungstools im Elektronikbereich, sieht es oft recht mau aus. So basiert das AVR Studio zur Entwicklung von Software für AVR Controller nicht mehr auf Eclipse sondern auf dem Visual Studio von Microsoft und hat bei mir bisher den Dienst unter Linux (wine) verweigert.

Auch über Ubuntu (oder über Canonical) hab ich mich schon geärgert. Zum Beispiel habe ich wegen Pulseaudio in Hardy Heron die meiste Zeit Xubuntu verwendet. Pulseaudio war zu diesem Zeitpunkt einfach noch nicht reif und gehört einfach nicht in eine LTS. Erst mit Intrepid bin ich wieder zurück zu Gnome.

Den aktuellen Weg von Canonical beobachte ich interessiert, aber kritisch. Aus der Sicht eines Selbstständigen kann ich die Schritte nachvollziehen und auch verstehen, aus der Sicht der Community kann ich jedoch auch einige Kritiken nachvollziehen. Insgesamt sehe ich bisher jedoch noch keine Nachteile, die mir durch die Nutzung von Ubuntu entstehen. Von daher werde ich bis auf weiteres bei Ubuntu bleiben.

Seit Oktober letzten Jahres nutze ich meinen Blog intensiv für Erfahrungsberichte, Anleitungen oder (aus meiner Sicht) interessante Nachrichten. Seit Anfang des Jahres bin ich Supporter bei Ubuntuusers und habe dort das Unity Forum übernommen. Auf diesem Weg versuche ich, zumindest einen kleinen Beitrag zur Community beizutragen, auch wenn das zur Zeit aus persönlichen Gründen etwas eingeschränkt ist.

Ich habe in den letzten vier Jahren viel über Linux und das drum herum gelernt. Viele Dinge sehe ich aus einem anderen Blickwinkel als früher. Die meisten Dinge kann ich mit Linux genauso gut erledigen wie unter Windows, manche sogar besser. Aber bis heute kann ich Linux in manchen Bereichen überhaupt nicht oder nur mit massiven Einschränkungen verwenden, was mich doch gelegentlich noch enttäuscht. Hier sehe ich aber eher die Hersteller in der Verantwortung. Die Linux Comunity kann nicht alle Versäumnisse der Industrie abfangen, selbst wenn sie es wollte.

Von daher bin ich auf die nächsten vier Jahre gespannt und hoffe, dass es weiterhin bergauf geht. Die Chancen stehen eigentlich gut. Immerhin ist Linux der mit Abstand am meisten verwendete Betriebssystemkern. Schließlich findet man Linux inzwischen überall, selbst da, wo man nicht damit rechnet. Eigentlich hat Linux längst die größte Verbreitung aller Betriebssysteme erreicht. Einzig der prestigeträchtige Desktop Markt, also das, was die Leute wahrnehmen, fehlt. Aber an Bug #1 wird intensiv gearbeitet ;)

Online TV Rekorder bong.tv im Test

Vor einer Weile bin ich auf bong.tv gestoßen. Einer (von mehreren) Online Videorekordern. Ich dachte mir, probiere ihn einfach mal aus.

bong.tv lässt sich 7 Tage lang kostenlos nutzen. Also habe ich mich einmal registriert. Die Bedienung ist recht einfach. Man wählt einfach die Sendungen aus, die man aufzeichnen will. Auch Serien lassen sich einfach aufnehmen.

Speicherplatz

Standardmäßig bietet bong.tv 10GB Speicherplatz. Das klingt nach viel, aber leider werden alle aufgezeichneten Sendungen in zwei Formaten abgelegt. Zusätzlich gibt es einen Überhang am Anfang und Ende jeder Sendung. Dadurch sind die 10GB leider relativ schnell voll. Erschwerend kommt hinzu, dass Sendungen in der Warteschlange bereits Speicher belegen, auch wenn diese noch gar nicht aufgezeichnet wurde. Ist der Speicher voll, lassen sich keine neuen Sendungen hinzufügen, auch wenn diese erst in einigen Tagen laufen.

Qualität

Die Qualität der Aufzeichnungen ist gut. Die HD Qualität entspricht etwa DVD Qualität. Die Auflösung beträgt 720×576 Pixel und es wird der H.264 Codec verwendet. Ein Film kann inklusive Werbung und Überhang schnell 1,5GB und mehr haben. Wenn man nicht gerade Spielfilme aufzeichnet reicht meist auch die einfache Qualität.

Probleme

Leider ergaben sich im Laufe des Tests mehrere Probleme. Bei der Aufzeichnung von Serien fehlten bei mir trotz Überhang immer die ersten paar Minuten. Bei Spielfilmen habe ich das nicht beobachtet. Das liegt aber wohl daran, dass die Sender speziell Serien etwas vorziehen und nicht zur angegebenen Zeit be

Viel ärgerlicher war, dass ich in einigen Fällen erst gar nicht den Film erhalten haben, den ich eigentlich wollte. Einmal bekam ich statt eines amerikanischen Blockbusters einen Bollywood Film.Laut bong.tv soll das an einer Programmänderung des Senders liegen. Leider kann ich das nicht mehr nachvollziehen, da ich das entsprechende Programm nicht mehr habe. Seltsam ist nur, dass es in einer Woche gleich zwei oder drei mal vorgekommen ist.

Ein drittes schwerwiegendes Problem ist, dass ich bereits bei verschiedenen Filmen Fehler in der Codierung hatte. Der Film wird an der Stelle beim Abspielen einfach unterbrochen. Man kann ihn zwar anschließend weiter abspielen, aber der Fehler ist schon lästig. Laut bong.tv soll es an Schwankungen in der Empfangsqualität liegen. Ich wüsste allerdings nicht, was das mit Fehlern im Codec zu tun haben sollte.

Fazit

Ich hatte eigentlich schon überlegt, die 5€ im Monat zu investieren. Die genannten Probleme haben mich jedoch davon abgehalten. Ob es bei anderen Anbietern besser ist werde ich vielleicht irgendwann mal testen.

Das Schneiden der Filme nach der Aufnahme ist auch etwas lästig. Neben dem Überhang will man ja auch die Werbepausen los werden. Am besten geht das unter Linux mit avidemux, allerdings erst wirklich gut ab Version 2.6. Diese Version ist aber noch in der Entwicklung und es gibt nur Nightly Builds in Form von deb Paketen für 32 Bit Systeme. Etwas doof, wenn man ein 64 Bit Ubuntu installiert hat.

Ubuntu Unity bei 1024×600 – diesmal auf einem echten Netbook

Im Dezember hatte ich bereits versucht, mir einen Eindruck darüber zu machen, wie gut Unity bei 1024×600 Pixeln wirkt. Da mein 13″ Belinea Notebook leider vorzeitig das Zeitliche gesegnet hat, musste ich mich nach einem Ersatz umschauen. Da ich nicht so viel Geld ausgeben wollte ist es ein Samsung N150-Eliah N450 Plus geworden. Geliefert wurde es mit Windows 7 Starter. Ich habe es mal kurze getestet und es ist… naja, Geschichte. Jedenfalls kann ich jetzt einen realen Test auf einem aktuellen Netbook machen und einen echten Eindruck gewinnen.

Also USB Stick mit dem aktuellen Snapshot von Natty Narwhal bespielt und installiert. Es gibt noch ein paar Problemchen, aber um die soll es hier mal nicht gehen. Das N150 hat eine Netbook typische Ausstattung. 1024×600 Pixel Display, Intel Atom N450 CPU mit 1GB Ram und den NM10 Chipsatz mit GMA3150 Grafikkern.

Die Startzeit beträgt von Grub bis zum Login ca 25 Sekunden, vom Login bis zum Desktop nochmal ca 11 Sekunden. Firefox braucht für den ersten Start knapp 10 Sekunden. Keine Spitzenwerte, aber auch nicht schlecht wenn man bedenkt, um welche Geräteklasse es sich handelt und kein Vergleich zu dem Kaffeepausengenerator, der vorher da drauf war..

Das Web in Unity

Das Web in Unity

Auf dem Netbook kann Unity seine Stärken auch richtig ausspielen. Dieser Screenshot zeigt den Unterschied zwischen einem normalen Gnome Desktop mit Panels (links), dem Gnome Desktop mit versteckten Panels (Mitte) und Unity (rechts). Bei einem normalen Gnome Desktop bleiben für eine Webseite 433 Pixel, in Unity hat man 512 Pixel. Das macht sich schon bemerkbar. Hinzu kommt, dass man immer noch alle wichtigen Elemente im Blickfeld hat, also Uhr, Batteriestatus usw. Das ist bei den verstecken Panels nicht der Fall.

Das Menü von Firefox habe ich mit Absicht anzeigen lassen, um den Effekt des Global Menu zu verdeutlichen. Bei den meisten aktuellen Browsern kann man das Menü zwar ausblenden oder es ist gar nicht mehr vorhanden, aber die meisten anderen Programme haben diese Möglichkeit nicht.

Durch das versteckte Startmenu hat man genug Breite, um die meisten Webseiten ohne horizontales Scrollen darstellen zu können. Bisher habe ich noch keine einzige Seite gehabt, bei der das der Fall war.

Das Bedienkonzept geht größtenteils auf. Lediglich das Aktivieren des Startmenus mit dem Touchpad ist etwas mühsam. Bis man den Mauszeiger in die linke obere Ecke und dann nach unten zur Anwendung befördert hat ist es ein ziemliches Gefummel.Mit einer externen Maus geht das flüssiger.

Umso angenehmer ist jedoch die Nutzung der Tastatur.. Über die <Super> Taste wird das Startmenu angezeigt und mit den Tasten 1 bis 0 lassen sich Anwendungen einfach starten bzw in den Vordergrund holen.

Insgesamt hat man den Eindruck, dass viel Wert auf die Bedienung mit der Tastatur gelegt wurde. Anwendungen lassen sich recht einfach über <Super>+a und die Eingabe des Programmnamens starten, vergleichbar mit GnomeDo. Bereits verwendete Dateien lassen sich auf ähnliche Weise mit <Super>+f öffnen. Aus diesen sogenannten Places heraus ist auch eine Suche im Internet möglich.

Firefox ohne Adressleiste

Firefox ohne Adressleiste

Ich bin sogar noch einen Schritt weiter gegangen und habe beim Firefox sowohl die Adressleiste als auch die Bookmarks ausgeblendet. So bleibt praktisch nur noch die Tableiste übrig. Über <Strg>+L lässt sich ein Eingabefeld aufrufen, in dem man die Adresse eintippen kann. Hier fehlt mir eigentlich nur eine automatische Vervollständigung wie bei Chromium. (Wenn jemand weiß wie das beim Firefox geht wäre ich um einen Hinweis in den Kommentaren dankbar)

Startmenü mit 32 Pixeln

Startmenü mit 32 Pixeln

Der Platz im Startmenu ist relativ schnell voll. Insgesamt passen bei der Standard Breite von 48 Pixeln nur 9 Icons in den Starter, ohne dass Icons eingeklappt werden müssen. Bei der Mindestbreite von 32 Pixeln sind es immerhin 13 Icons.

Die Indicator Menus im oberen Panel machen ebenfalls einen guten Eindruck. Aufgrund der geringen Breite des Bildschirms kann es jedoch passieren, dass besonders lange Menüs im Global Menu unter die Indicator Menus rutschen und nicht mehr benutzt werden können. Bisher ist mir das jedoch nur bei Geany aufgefallen. Bei allen anderen Programmen hat der Platz bisher ausgereicht.

Die Performanceprobleme, die Maverick auf Netbooks hatte, gehören der Vergangenheit an. Unity fühlt sich auf dem Netbook richtig flüssig an. Flash Videos bis 480p laufen flüssig. Höhere Auflösungen konnte ich mangels ausreichender Displayauflösung noch nicht testen. Zeitintensive Aufgaben kann Unity natürlich nicht beschleunigen.

Wie sich Unity auf einem älteren Netbook mit N270 Atom und altem Grafikkern verhält kann ich nicht beurteilen. Auf diesem Gerät sind mir bisher noch keine Probleme hinsichtlich der Performance aufgefallen. Zwischen Unity und dem mitgelieferten Windows 7 Starter liegen Welten. Sowohl was die Reaktionsgeschwindigkeit der Oberfläche angeht als auch die Benutzbarkeit der Programme. Bis unter Windows ein Programm gestartet ist wartet man deutlich länger. Auch den Platz sucht man vergeblich. Selbst wenn man sich mühsam mit versteckter Taskleiste und anderen Workarounds Platz geschaffen hat erzielt man kein vergleichbares Ergebnis.

Ein Problem, an dem auch Unity nichts ändern kann, sind viele, in der Größe fest definierte Dialoge. Diese ragen dann über den Bildschirm hinaus und man muss den Dialog entweder mit gedrückter <Alt> Taste verschieben oder man muss auf den benachbarten Desktop wechseln. Auch Programme wie Thunderbird nehmen mit dem ausladenden Userinterface viel Platz weg. Hier würde man sich für diese Geräteklasse schlankere Oberflächen wünschen.

Zusammengefasst muss ich sagen, dass Unity hier voll überzeugen kann. Es gibt zwar noch einige Mängel, die aber zum großen Teil dem Alpha Status von Natty Narwhal und dem noch sehr jungen Ayatana Projekte zuzuschreiben sind. Auf dem Netbook und auch auf meinem Laptop wird Unity auf jeden Fall seinen Platz finden. Wie es auf dem Desktop aussieht muss sich noch zeigen.

Firefox Addon: It’s all Text. Editieren im Text Editor [Update]

Ich bin heute durch Zufall über ein nettes Firefox Addon gestolpert. It’s all text.

Mit diesem Addon ist es möglich, Texte aus einer Textbox in einem beliebigen Text Editor zu bearbeiten.

It's all Text in Aktion

In einer Textbox wird unten rechts ein kleiner Button angezeigt. Klickt man darauf, wird ein beim ersten mal eingestellter Texteditor geöffnet. In diesem Texteditor kann man dann einen beliebigen Text eingeben. Sobald man den Text speichert wird er in die Textbox übernommen.

Für einfache Beiträge in einem Forum mag das überflüssig sein, aber bei der Eingabe von Sourcecode oder dem Editieren eines Wiki kann das sehr hilfreich sein, da man alle Funktionen des Editors verwenden kann. Ich habe erst kürzlich beim Bearbeiten eines Wiki Beitrags einen Editor zu Hilfe nehmen müssen. Da hätte ich dieses Addon gut gebrauchen können.

Man kann auch Änderungen im Textedit Feld vornehmen. Ein weiterer Klick auf den Edit Button speichert die Änderung und der Editor kann die Ädernung nachladen. Das Übertragen funktioniert also in beiden Richtungen.

[UPDATE] Entgegen dem Hinweis in den Kommentaren speichert das Addon für jedes Textfield eine eigene Datei ab. In meinem Fall in .mozilla/firefox-4.0/txgaarbl.default/itsalltext

It's all Text speichert mehrere Dateien

It's all Text speichert mehrere Dateien

Die Dateien werden beim Schließen des Browsers gelöscht.

REAL Classic Desktop für Natty

Neben Unity kann man bei Natty Narwhal ja auch den “Classic Desktop” auswählen. Aber ganz so “classic” ist der leider nicht, da das Hauptmenu ein anderes ist und die Anwendungsmenus immer noch im oberen Panel sind (Global Menus). Das lässt sich leicht ändern.

Zunächst klickt man mit rechts auf das Hauptmenu und wählt “Aus dem Panel entfernen”. Das gleiche macht man mit dem Global Menu. Wenn man das Global Menu entfernt landen die Anwendungsmenus automatisch in den Fenstern.

Anschließend klickt man mit rechts auf eine leere Stelle im Panel und wählt “Zum Panel hinzufügen”. In der Liste sucht man jetzt den Eintrag “Menüleiste” und klickt auf Hinzufügen.

Jetzt muss man eventuell noch das Menu an die richtige Stelle schieben und mit einem Rechtsklick und “Auf dem Panel sperren” verankern.

Man muss also keine Panik vor Natty haben und mit Fluchtgedanken spielen. Mit ein paar Klicks ist alles wieder beim alten… fast.

[Quelle] Meine Frage auf askubuntu.com

Ein erster Eindruck von CouchDB. Eine Datenbank für Programmierer

Viele, die schon einmal eine Webseite programmiert haben, hatten sicher schon mit MySQL zu tun. MySQL ist eine sogenannte relationale Datenbank. In solchen Datenbanken werden Daten in Tabellen gespeichert. Das erste, was man als Programmierer tun muss, ist die Definition der Tabellen. Man muss entscheiden, welche Information in welche Spalte kommt und welche Informationen in eine getrennte Tabelle sollen. Den Vorgang nennt man Normalisierung. An dieser Normalisierung beißt man sich schon mal die Zähne aus. Macht man hier Fehler, ist es später häufig schwierig, neue Daten hinzuzufügen. Übertreibt man die Normalisierung, kann das zu komplexen Abfragen und schlechter Performance führen. Auch die Abfragen sind manchmal eine Wissenschaft für sich.

NoSQL

Seit einigen Jahren gibt es eine andere Art von Datenbanken, die sogenannten NoSQL Datenbanken. NoSQL ist eigentlich nicht der richtige Begriff. Gemeint sind Datenbanken, für die man keine SQL Anweisungen benötigt. Genau betrachtet wäre zum Beispiel XML auch NoSQL, da die gespeicherten Daten hier ebenfalls ohne SQL Befehle bearbeitet werden können. Aber das sind Spitzfindigkeiten. Was mit NoSQL eigentlich gemeint ist sind…

Dokumentorientierte Datenbanken

Bei einer dokumentorientierten Datenbank gibt es keine Tabellen. Ein Datensatz in einer dokumentorientierten Datenbank hat kein festes Schema, das bestimmt, welche Information an welcher Stelle steht. Es gibt auch keine richtige Normalisierung wie bei relationalen Datenbanken. Man versucht im Gegensatz dazu möglichst alle zusammengehörende Daten in einen Datensatz zu speichern.

Möchte man zum Beispiel ein Adressbuch erstellen, würde man bei einer relationalen Datenbank als erstes eine Tabelle erstellen, in der alle einzigartigen Daten untergebracht werden, zum Beispiel Vorname, Nachname, Geburtsdatum usw. Würde man in dieser Tabelle auch die Adresse speichern, könnte man für jeden Kontakt im Adressbuch nur eine Adresse anlegen. Also legt man eine zweite Tabelle an mit Feldern wie Straße, Postleitzahl und Ort. Außerdem benötigt man noch ein Feld, in dem ein Verweis auf den eigentlichen Kontakt gespeichert wird, damit man später die Informationen zusammenfügen kann.

Ein Kontakt benötigt aber nicht nur eine Adresse sondern auch andere Kontaktdaten wie eine Telefonnummer oder eine Email Adresse. Und hier geht es schon los. Wo und wie speichert man diese Daten ab? Einige erstellen eine eigene Tabelle, andere fügen der Adresstabelle einfach Felder für 1-2 Telefone, Fax und Email hinzu. Und was macht man mit weiteren Kontaktdaten wie IDs von Jabber, ICQ oder GoogleTalk? Auch an die Adresstabelle anhängen? Zusammen mit Telefon und Email in eine Tabelle? Eine eigene Tabelle? Gebt diese Aufgabe fünf Datenbankentwicklern und ihr bekommt fünf verschiedene Lösungen.

Eine dokumentorientierte Datenbank speichert sämtliche Kontaktdaten in einem Dokument. Das Dokument wird als Dictionary, also ein assoziatives Array, gespeichert. Ein assoziatives Array besteht aus einer Reihe von Schlüssel/Wert Paaren. Der Schlüssel gibt an, worum es sich bei dem Wert handelt. Im Fall der Adressdatenbank also zum Beispiel ‘Vorname’ oder ‘Geburtsdatum’.

Wenn ich vorher gesagt habe, dass es kein Schema gibt ist daher allerdings nur die halbe Wahrheit. Für das Dokument selbst sollte man sich schon ein halbwegs sinnvolles Schema einfallen lassen, damit man die Daten später auch wieder sinnvoll abrufen kann. Schemafrei bedeutet in erster Linie, dass die Datenbank kein festes Schema fordert. Vielmehr kann in jedem Datensatz einer Datenbank ein anderes Dokument abgespeichert werden.

Eine relationale Datenbank verwendet Tabellen. Jeder Spalte in dieser Tabelle wird eine bestimmte Funktion und ein bestimmter Datentyp zugeordnet. Eine Spalte soll den Vornamen speichern und kann daher Texte speichern. Eine andere Spalte soll das Geburtsdatum enthalten und hat deshalb meist den Typ “Date”.

Eine dokumentorientierte Datenbank kann man sich als lange Reihe von Zetteln vorstellen und auf jeden dieser Zettel kann man schreiben was man will. Auf dem ersten Zettel steht eine Adresse, auf dem zweiten eine weitere, auf dem dritten kann aber zum Beispiel ein Kochrezept stehen usw. Schemafrei kann aber auch bedeuten, dass man Felder weglassen oder hinzufügen kann. Hat eine Person keinen Zweitnamen muss das Feld nicht vorhanden sein. Möchte man einer Person einen Geburtsnamen hinzufügen tut man dies einfach. Der Datenbank ist das egal. Sie speichert, was man ihr zum speichern übergibt. Es ist lediglich Sache des Programms, diese Daten korrekt zu verarbeiten und anzuzeigen. Bei relationalen Datenbanken müsste man für jede Eventualität eine Spalte zur Verfügung stellen und hat unter Umständen jede Menge leere Felder. Oder man legt eine universelle Spalte an und versucht da zusätzliche Informationen abzulegen, was aber meistens unnötig umständlich ist.

Eine dokumentorientierte Datenbank ist jedoch auch kein Allheilmittel und will kein Ersatz für relationale Datenbanken sein. Vielmehr haben beide Arten ihre Stärken und Schwächen. Wenn man eine Anwendung erstellt sollte man also überlegen, welche der Datenbankarten sich besser eignet. Unter Umständen ist sogar eine Kombination als beiden sinnvoll.

CouchDB

Ich habe mir CouchDB als Vertreter der objektorientieren Datenbanken herausgepickt. CouchDB ist mittlerweile ein Projekt bei der Apache Foundation und hat den selben Status wie der Apache Server oder Tomcat. CouchDB ist in Erlang programmiert und verwendet JSON zur Speicherung von Dokumenten und für die Übergabe der Daten. Abfragen werde in JavaScript durchgeführt und die Kommunikation erfolgt, wie zwischen einen Browser und einem Webserver, über das HTTP Protokoll.

So, genug Buzzwords. Gehen wir etwas mehr ins Detail. Wie die Buzzword Parade schon zeigt verwendet CouchDB viele Web Technologien. Genauer gesagt ist CouchDB ein Webserver. Das kann man ganz leicht mit CURL testen. Da CURL nicht zur Standard Installation von Ubuntu gehört muss man es installieren.

sudo apt-get install curl

Auf die gleiche Weise wird auch CouchDB installiert. Man kann mit CURL anschließend testen, ob CouchDB richtig installiert ist.

curl http://127.0.0.1:5984
{"couchdb":"Welcome","version":"1.0.1"}

So sollte das Ergebnis bei Maverick Meerkat aussehen. Wie man sieht liefert CouchDB als Antwort ein Dictionary im JSON Format. Vor dem Doppelpunkt steht jeweils der Schlüssel, in diesem Fall “couchdb” und “version”, hinter dem Doppelpunkt steht der Wert. Dictionaries werden in geschweifte Klammern gefasst und die einzelnen Schlüssel/Wert Paare mit Kommas getrennt. Man kann die Adresse http://127.0.0.1:5984 auch in die Adresszeile des Browsers eingeben. Man erhält das gleiche Ergebnis.

curl -X GET http://127.0.0.1:5984/_all_dbs

Mit diesem Befehl kann man abfragen, welche Datenbanken auf einem Server vorhanden sind. Unter Ubuntu sollte das bei einer frischen Installation so aussehen.

["_users"]

Wie man sieht ein ganz normaler GET Request. Dadurch ist es mit CouchDB nicht nur möglich, einfach Daten zu speichern, sondern man kann mit CouchDB und etwas JavaScript komplette Webseiten hosten, ganz ohne Apache oder PHP. Das ist in CouchDB: The Definite Guide anhand eines Blogs beschrieben. Aber natürlich kann man CouchDB auch als normalen Datenbankserver mit Python, Ruby oder PHP nutzen.

Im Titel schrieb ich “Eine Datenbank für Programmierer”. Warum? Bei relationalen Datenbanken werden die Daten in der Structured Query Language, kurz SQL, bearbeitet. Das ist eine eigene Sprache mit einer für Programmierer eigenwilligen Syntax.

CouchDB geht einen anderen Weg. Für Abfragen werden sogenannte Views (zu deutsch etwa “Ansichten”) verwendet. Diese Views werden wie normale Dokumente in der Datenbank gespeichert und können auch so abgerufen werden. Diese Views werden nicht in einer eigenen Sprache programmiert sondern verwenden standardmäßig JavaScript. Es ist jedoch auch möglich, die Views in anderen Sprachen wie Python zu implementieren. Diese Views nutzen für die Datenbearbeitung Map und Reduce, zwei Funktionen, die vielen Programmierern bekannt sein dürften.

MapReduce, JavaScript, bzw wahlweise eine andere Sprache, und Dictionaries sind alles Dinge, die man als Programmierer meistens schon kennt. Es sollte daher für einen geübten Programmierer einfacher sein, mit CouchDB zu arbeiten als mit einer relationalen SQL Datenbank, selbst in Verbindung mit einem ORM.

Ein weiterer Vorteil von CouchDB ist die einfache Möglichkeit der Replikation. Replikation bedeutet das Kopieren von einer Datenbank in eine andere. Es ist dabei egal, ob die Datenbank auf dem gleichen Server liegt oder auf einem entfernten. Die Vorgehensweise bleibt gleich. So lassen sich einfach und schnell Backups erstellen oder Daten kontinuierlich zwischen mehreren Rechnern synchronisieren. So kann man entweder große Datenbankcluster aufbauen, um die Performance zu steigern oder mit immer identischen Daten auf verschiedenen Rechnern arbeiten.

Eine wesentliche Schwäche von CouchDB soll aber auch nicht verschwiegen werden. Es ist in CouchDB nicht möglich, eine Volltextsuche oder partielle Suchen wie SELECT * FROM narf WHERE pui LIKE “%zort%” durchzuführen. Dafür ist eine zusätzliche Software wie Lucene notwendig. Lucene wird in CouchDB eingebunden und indexiert alle Texte. Damit ist dann eine Volltextsuche oder partielle Selects möglich.

Abschließend sei noch erwähnt, dass Ubuntu One mit CouchDB arbeitet. Bei einer normalen Ubuntu Installation läuft bereits eine CouchDB Instanz, allerdings mit einer Erweiterung namens DesktopCouch. Darüber kann man zum Beispiel Firefox Bookmarks oder Adressen in Evolution auf mehreren Rechnern synchronisieren, was bis dato aber noch nicht einwandfrei funktioniert. Für Natty haben die Entwickler aber versprochen, dass es besser wird, was ich bei meinen Tests bisher auch bestätigen kann.

Keyboard Shortcuts für Scribes zum Ausdrucken

Als verspäteten Vorsatz für’s neue Jahr hab ich mir vorgenommen, mehr mit der Tastatur und weniger mit der Maus zu arbeiten. Daher kam mir der Artikel über Scribes von Omg! Ubuntu! gerade recht. Ich habe mir Scribes schon früher angeschaut, aber da hat er mich einfach nicht überzeugen können, also habe ich es aus den Augen verloren. Die neue Version aus dem PPA sieht jedoch interessant aus. Zugegeben, es ist nicht jedermanns Sache, so ganz ohne “Bedienelemente” und ohne Tabbing, aber Scribes hat auch einige interessante Funktionen.

Um die Arbeit etwas zu erleichtern habe ich mir ein Cheat Sheet mit den Shortcuts erstellt. Man kann zwar mit <ctrl>+h die Tastekürzel abrufen, aber ausgedruckt neben der Tastatur hat man sie direkt im Blick. Wer will kann es sich direkt von der Webseite ausdrucken. Wenn ich mich etwas eingearbeitet habe schreibt ich vielleicht etwas ausführlicheres dazu.

Usability Test mit Thunderbird bei Canonical – Wird Thunderbird Standard in Ubuntu?

Canonical hat einen weiteren Usability Test durchgeführt. Diesmal an Thunderbird. Angetreten sind 12 Windows und Mac User unterschiedlicher Altersgruppen.

Einige Tage vor dem Test wurden Test Accounts eingerichtet und mit Mails versorgt, unter anderen aus Mailing Listen. Die Aufgabe der Tester war jeweils, Thunderbird zu installieren, einzurichten und die Mails zu verwalten. Außerdem sollten Kontakte und Filter angelegt werden. Insgesamt sollten 11 Aufgaben durchgeführt werden, die von den Usern unterschiedlich gut bewältigt wurden.

Besonders krass finde ich die “Critical Issues”

After installation from the Ubuntu Software Centre, participants could not find Thunderbird to start using it. They did not see, in the product description, the bread crumb indicating the location of the download when provided.

Most participants failed at creating a filter.

None of our participants was able immediately to find the attachment in a message.

Viel interessanter als das Ergebnis des Tests finde ich jedoch die Tatsache, dass er durchgeführt wurde. Auf meine Frage, ob Thunderbird in naher Zukunft der Standard Mail Client in Ubuntu wird hieß es, es gäbe keine Pläne, aber darüber diskutiert wurde bereits. Das Video zu der Diskussion findet Ihr hier.

Es ist jetzt spekulativ, ob Thunderbird irgendwann in Ubuntu landet, aber wünschenswert wäre es. Ich weiß nicht, wie viele Ubuntu User Evolution verwenden, aber ich denke, der überwiegende Teil verwendet ihn nicht. Problematisch wäre bei einem Wechsel jedoch die dann fehlende Integration des Kalenders. Aber eventuell gibt es hierfür auch bald einen Ersatz.

Kostenlose VID/PID für USB dank GPL

Wer USB Geräte entwickeln will, egal ob privat oder kommerziell, braucht eine Vendor ID und eine Product ID. Wenn man fertige ICs wie den FT232R verwendet kann die IDs des Herstellers verwenden, wenn man damit zufrieden ist. Auch Microchip bietet eine kostenlose Möglichkeit zur Nutzung von deren VID und PID. Allerdings nur mit deren Mikrocontrollern und begrenzt auf 10000 Exemplare.

Wer jedoch eigene IDs möchte muss tief in die Tasche greifen, denn der Handel mit kleinen PID Gruppen wurde vom USB Implementers Forum (USB IF) unterbunden. Will man eine eigene VID und die Lizenz für die Nutzung des USB Logos darf 4000 US-Dollar berappen… pro Jahr. Dafür erhält man dann 65000 PIDs. Wer’s braucht…

Atmel bietet noch eine dritte Alternative. Wer den V-USB Treiber nutzt, erhält kostenlos eine VID/PID Kombination, sofern das Gerät die Richtlinien der GPL erfüllt. Dafür muss man neben den Sourcen auch alle Schaltpläne und weitere notwendige Informationen auf einer Webseite veröffentlichen und die Firma darüber informieren. Soll die Software nicht unter der GPL veröffentlicht werden kann man für den privaten Gebrauch eine VID-PID Kombination für 9,90€ erwerben.

Der V-USB Treiber ist jedoch kein Hardware USB Chip sondern eine Softwarelösung, die auf Atmels AVR Controllern läuft und bietet daher nur USB 1.1 und maximal FullSpeed. Sofern man nicht gerade einen Massenspeicher basteln will oder einen Livestream von einer Kamera übertragen will sollte das allerdings ausreichen.

Für den privaten Gebrauch kann man sich natürlich jederzeit eine eigene, zufällige VID/PID erstellen. Man muss jedoch bedenken, dass diese Nummer für ein anderes Gerät verwendet werden könnte und das Betriebssystem die falschen Treiber läd.