Posts Tagged ‘Ubuntu One’

Ubuntu One verschiebt alte Versionen in den Müll

Montag, März 5th, 2012

Bisher war es bei Ubuntu One so, dass aktualisierte Dateien einfach überschrieben wurden. Das hat sich vor einiger Zeit geändert. Die Dateien landen im Müll.

Ein Beispiel: Erstellt man eine Textdatei und synchronisiert diese auf alle Rechern, hat die Datei überall den selben Inhalt. Ändert man jetzt diese Datei auf einem der Rechner wird sie zu den anderen Rechnern synchronisiert. Aber anstatt die alte Version einfach zu überschreiben wird sie in den Mülleimer verschoben.

Dadurch hat man die Möglichkeit, im Fall eines Fehlers auf die alte Version zurück zu greifen. Quasi eine Art Versionsverwaltung. Primitiv, aber sie funktioniert.

Ubuntu One Music Store in Rhythmbox angekommen

Dienstag, Februar 14th, 2012

Soeben ist in einem Update der Ubuntu One Music Store für Rhythmbox angekommen.

Ubuntu One Music Store in Rhythmbox

Ubuntu One Music Store in Rhythmbox

Mein letzter Einkauf

Mein letzter Einkauf

Es scheint jedoch, dass die Funktion zum Reinhören in die Stücke noch nicht funktioniert. Die Funktion zum Kaufen scheint jedoch zu funktionieren. Jedenfalls wurde ich zu Paypal weitergeleitet.

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

Donnerstag, Februar 17th, 2011

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.

Ubuntu 10.10 Maverick Meerkat

Samstag, Oktober 9th, 2010

Am 10.10.2010 erscheint Ubuntu Maverick Meerkcat. Ich nehme das zum Anlass, darüber einen kurzen Artikel zu verfassen.

(Anmerkung: neben dem offensichtlichen Zahlenspiel 10.10.10 gibt es noch ein weiteres für alle Fans des Romans “Per Anhalter durch die Galaxis”. Die binäre Zahl 101010b ergibt dezimal den Wert 42)

Die Installation

Ich beginne mal mit der Installation, da sich hier bereits einiges geändert hat. Wie bereits bei Lucid Lynx erscheint beim Booten der Live CD nicht mehr die Sprachauswahl und das Startmenu sondern es wird direkt gebootet. Die Sprachauswahl und die Auswahl zwischen Installation und Live testen erscheint kurze Zeit später in einem Fenster. Drückt man zu Beginn des Bootvorgangs eine Taste, wird das alte Menü angezeigt.

Ubuntu Maverick Meerkat Installation

Bereits jetzt wird auf dem Bildschirm das obere Panel angezeigt. In diesem Panel findet man unter anderem den Netzwerkmanager. Das bedeutet, man kann, im Gegensatz zu früher, schon bei der Installation die WLAN Schnittstelle eines Laptops einfach konfigurieren und nutzen.

Ubuntu Maverick Meerkat Installation

Auch die Installation selbst hat sich geändert. Nach der Auswahl der Sprache und dem Klick auf “Ubuntu installieren” erscheint im zweiten Schritt eine Überprüfung, ob genug Festplattenspeicher vorhanden ist, ob der Rechner an die Stromversorgung angeschlossen ist und ob eine Internetverbindung steht. Weiterhin kann man auswählen, ob Aktualisierungen bereits bei der Installation heruntergeladen werden sollen und man kann die Fluendo MP3 Codecs installieren.

Im nächsten Schritt wird bereits die Festplatte partitioniert. Hat man die Partitionierung durchgeführt startet schon die Installation der Dateien. Alle weiteren Schritte wie die Einstellung der Zeitzone, die Tastaturauswahl und die Eingabe der Daten für den ersten Benutzer erfolgen parallel zur Installation. Die übrige Installation läuft ab wie bisher.

Der Desktop

Maverick Meercat Desktop

Maverick Meerkat Desktop

Optisch haben sich einige Dinge geändert. Das Hintergrundbild hat farblich noch Ähnlichkeit mit dem von Lucid Lynx, aus den Punkten sind jedoch diagonale Linien geworden. Die letzten braunen Reste beim Hervorheben von Menüeinträgen wurden durch ein sattes Orange ersetzt. Die größte Änderung ist jedoch die neue Schrift namens Ubuntu. Hier eine Schriftprobe.

Der neue Ubuntu Font

Der neue Ubuntu Font

Der neue Font wirkt hochwertig und optisch ansprechend, auch wenn es an einigen Stellen noch Verbesserungsbedarf gibt. Diese Verbesserungen werden im Laufe der Zeit jedoch sicher noch nachgereicht.

In der Programmauswahl gibt es nur eine Änderung. Die Fotoverwaltung F-Spot wurde durch Shotwell ersetzt. Gimp fehlt nach wie vor in der Grundinstallation, wird jedoch bereits bei der Installation als zusätzliche Anwendung empfohlen. Der Chat Client ist Empathy, Social Networks wie Twitter und Facebook werden mit Gwibber bedient und die Standard Media Player sind Rhythembox für Audio und Totem für Video.

Rhythmbox integriert

Rhythmbox integriert

Neu ist auch die Integration von Rhythmbox in das Panel. Statt einem eigenen Symbol findet man Rhythmbox jetzt unter dem Lautstärkeregler. Das Kontextmenü dient nun als Starter für Rhythmbox und bietet gleichzeitig die wichtigsten Bedienelemente.

Software Center

Software Center

Software Center

Auch der Software Center wurde überarbeitet und enthält erstmals auch die Kategorie “Zum Kauf”. Bisher wird neben einem Test Wallpaper lediglich der Fluendo DVD Player für 19,96€ angeboten. Für die Bezahlung muss man sich mit dem gleichen Account wie bei Launchpad oder Ubuntu One anmelden (Single Sign on). Die Bezahlung ist jedoch nur mit Kreditkarten möglich.

Ubuntu One

Ubuntu One Einrichten

Ubuntu One Einrichten

Einige Neuerungen gibt es auch bei Ubuntu One. Die Einrichtung des Kontos erfolgt nun nicht mehr über den Browser sondern über einen eigenen Dialog und funktioniert bedeutend zuverlässiger.  In Nautilus gibt es jetzt bei den meisten der Standard Ordner die direkte Möglichkeit, die Synchronisierung für den Ordner zu aktivieren.

Ordner mit Ubuntu One synchronisieren

Ordner mit Ubuntu One synchronisieren

Alle anderen Ordner im /home/$user Verzeichniss lassen sich über das Kontextmenü aktivieren. Das gesamte /home/$user Verzeichnis oder einzelne Dateien lassen sich jedoch nicht synchronisieren.

Meldet man einen neuen Rechner an einem Ubuntu One Konto an werden alle Einstellungen für die Synchronisierung automatisch übernommen und alle Dateien auf diesen Rechner synchronisiert. In diesem Beispiel habe ich die Screenshots für diesen Artikel auf dem Desktop abgelegt und für den Desktop die Synchronisierung aktiviert.

Desktop synchronisiert

Desktop synchronisiert

Für diesen Artikel habe ich eine Installation in VirtualBox vorgenommen und in dieser Installation nichts weiter getan als mich bei Ubuntu One anzumelden. Wie man sieht wurden die Bilder auf dem Desktop in VirtualBox automatisch synchronisiert.

Ubuntu One bietet nach wie vor 2GB kostenlosen Online Speicher. Aber statt 50GB für $10 USD im Monat gibt es jetzt nur noch 20GB. Dafür bezahlt man jedoch nur noch $2,99 USD monatlich oder wahlweise $29,99 USD jährlich. Die Bezahlung ist wie im Software Center nur mit Kreditkarte möglich. Für die Mobilplattformen Android und iPhone gibt es Apps und eine Portierung auf Windows befindet sich in der Betaphase.

Probleme

Maverick Meerkat ist nicht frei von Fehlern. So war nach der Installation in Synaptic keine einzige Paketquelle aktiviert. (UPDATE: dieser Bug ist offensichtlich behoben) Dies ließ sich jedoch einfach beheben. Auf meinem Belinea o.book 13011 plagt mich seit dem ersten Test ein Bug. Dabei fressen vier Prozesse namens kslowd000 bis kslowd003 zeitweise bis zu 100% CPU Leistung, wodurch der Rechner fast nicht zu bedienen ist. Dieser Bug scheint jedoch auf die Mobilversion des Intel 4500HD Chipsatz beschränkt zu sein. Einige kleinere Bugs sind mir auch noch aufgefallen, die aber eher lästig als problematisch sind.

Fazit

Ubuntu 10.10 Maverick Meerkat ist eine konsequente Weiterentwicklung von Ubuntu mit einigen Macken und vielen Verbesserungen. Es gibt wieder viele Neuerungen und Verbesserungen in den einzelnen Programmen. Meine persönlichen Highlights sind die Verbesserungen in Ubuntu One und der neue Font.


Switch to our mobile site