freiesMagazin Mai 2011

Topthemen dieser Ausgabe

Python-Programmierung: Teil 7 – Iteratoren Seite 6 Im vorherigen Teil dieser Reihe wurde eine kleine Musikdatenbank implementiert. Diese ist nun in der Lage, Verzeichnisse nach Musikdateien zu durchforsten und diese in eine SQLite-Datenbank abzulegen. Außerdem kann diese Datenbank natürlich durchsucht werden. In diesem Teil werden nun Iteratoren behandelt – und damit eine Technik, die zu den zentralen Konzepten von Python gezählt werden kann. (weiterlesen)

Dateigrößenoptimierung von Bildern Seite 14 In Zeiten von Breitbandanschlüssen mit über 16 MBit machen sich nur noch wenige Menschen Gedanken über die Größe von Inhalten, die sie ins Netz stellen bzw. per E-Mail verschicken. Leider wird dabei oft vergessen, dass nicht jeder mit einem DSL-Anschluss gesegnet ist. Vor allem in ländlichen Gegenden ist es keine Seltenheit, dass man auf einen Surfstick angewiesen ist, der dann mit seinen 64 kbit/s an die gute alte ISDN-Zeit erinnert. Der Artikel soll zeigen, wie man Bilder so optimieren kann, dass diese platzsparender gespeichert werden können, ohne dabei aber zu viel Qualität zu verlieren. (weiterlesen)

Ryzom – Das freie MMORPG Seite 28 Bereits 2005 öffnete mit „The Saga of “ ein Online-Rollenspiel der etwas anderen Art sei- ne Pforten. Statt Orks, Elfen, Goblins oder Drachen erwartete den Spieler der Zauber einer neu- en Welt, mit eigenen Gesetzen, Regeln, einem ausgeklügelten Fertigkeiten- und innovativen Kampfsystem. Mittlerweile im Quellcode unter den Bedingungen der AGPLv3 verfügbar und auch für freigegeben, ist es auch für die Nutzer des offenen Betriebssystems interessant. Doch taugt das Spiel etwas und wenn ja, warum ist es nicht weiter verbreitet? (weiterlesen)

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 ISSN 1867-7991 MAGAZIN

Editorial Reine Konsumgesellschaft?

Ende des Grafikwettbewerbs Die Frage ist: Woran liegt das? Wenn Sie eine Inhalt An dieser Stelle würden wir gerne verkünden, Theorie haben, schreiben Sie uns Ihre Meinung dass der Grafikwettbewerb, den wir zum fünf- unter . Linux allgemein ten Geburtstag von freiesMagazin gestartet ha- Was Natty antreibt: Ein Blick auf den Ker- S. 3 ben [1], ein voller Erfolg war. Der Konjunktiv des Python-Sonderausgabe nel von Ubuntu 11.04 Satzes deutet es aber an: Er war es nicht! Auf den Wunsch der Leser hin haben wir alle bis- Der April im Kernelrückblick S. 5 her erschienen Python-Programmier-Artikel in ei- Wir wollten mit dem Wettbewerb allen Lesern et- ner Sonderausgabe zusammengefasst [3]. In die- Anleitungen was zum Mitmachen bieten, die nicht gut schrei- ser findet man die sechs Artikel von Daniel Nö- Python-Programmierung: Teil 7 – Iterato- S. 6 ben oder gut programmieren können und sich gel, die in den freiesMagazin-Ausgaben Oktober ren sonst nicht angesprochen fühlten. freiesMagazin 2010 bis März 2011 erschienen sind. Auf die Art Parallelisierung mit Scala S. 10 hat um die zehntausend Leser jeden Monat und kann jeder Python-interessierte Neuling die ers- Dateigrößenoptimierung von Bildern S. 14 dennoch hat es gerade einmal einer (der dazu ten Schritte in der Python-Welt wagen und lernt Wurmkur ohne Nebenwirkung – Virenent- S. 21 auch noch ab und an als Autor tätig ist) geschafft, so neben den Grundstrukturen und Elemente der fernung mittels LiveCDs ein Bild zu unserem Geburtstag zu erstellen [2]. Sprache in den fortgeschrittenen Teilen auch die Im Endeffekt erleichtert uns das aber die Wahl Anbindung an eine Datenbank, um eine Musik- Software eines Gewinners, sodass Herr Michael Schwarz verwaltung aufzubauen. Ryzom – Das freie MMORPG S. 28 Zehn Jahre Warenwirtschaft C.U.O.N. S. 35 mit eindeutiger Mehrheit den ersten Platz des Und nun wünschen wir Ihnen viel Spaß mit der Grafikwettbewerb einnehmen konnte. Das heißt, neuen Ausgabe. er erhält einen 30-Euro-Gutschein von Amazon Community und darüber hinaus die CD von „The Nuri“ als Ihre freiesMagazin-Redaktion Rezension: Coding for Fun mit Python S. 40 kleinen Bonus. Herzlichen Glückwunsch! LINKS Magazin [1] http://www.freiesmagazin.de/20110318- Natürlich stellt sich uns dabei aber auch die Fra- Editorial S. 2 grafikwettbewerb-zum-fuenften-geburtstag ge, ob die Linux- und Open-Source-Community Leserbriefe S. 42 [2] http://www.freiesmagazin.de/20110430- zu einer reinen Konsumgesellschaft verkommt, Veranstaltungen S. 44 gewinner-des-grafikwettbewerbs sodass man selbst nur noch konsumiert, aber Vorschau S. 44 [3] http://www.freiesmagazin.de/freiesMagazin-2011- nichts mehr beiträgt. Dieser Trend zeichnet sich Konventionen S. 44 04-02 bereits seit einigen Monaten ab, da sich im- Impressum S. 45 mer weniger Autoren melden, um Beiträge für freiesMagazin beizusteuern. Das Editorial kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/20112 KERNEL

Was Natty antreibt: Ein Blick auf den Kernel von Ubuntu 11.04 von Mathias Menzer

ie neueste Version von Ubuntu wurde Zu den Funktionen, die beim Arbeiten an ei- erst mit dem Linux-Kernel 2.6.39 verschwinden, nach etwa einem halben Jahr Entwick- nem Desktop-PC oder Notebook auffallen, wer- der sich derzeit in der Entwicklung befindet. D lungszeit vor kurzem veröffentlicht [1]. den in jedem Fall die automatischen Task- Insbesondere die Änderungen an der gra- Gruppen zählen. Diese Funktion verbessert das Ein neues Benachrichtigungssystem für Datei- fischen Oberfläche der Standardumgebung Antwortverhalten, wenn der Rechner unter ho- systeme ist Fanotify. So, wie der Nutzer durch wurden kontrovers diskutiert und standen her Last steht, indem die zur Verfügung ste- die Notifications [6] auf dem Laufenden gehal- im Rampenlicht von Blogs und Nachrichten- henden Prozessorressourcen gleichmäßig auf ten wird, wann immer Anwendungen Neuigkei- seiten [2]. Doch auch im Kern gibt es ei- Prozess-Gruppen verteilt werden. Diese sind ten zu vermelden haben, können sich Program- nige Neuerungen seit Ubuntu 10.10 „Mave- nach dem Terminal sortiert, von dem aus sie aus- me über Änderungen am Dateisystem informie- rick Meerkat“ veröffentlicht wurde. Zeit also, geführt werden. So erhält zum Beispiel ein Kom- ren lassen. In diesem Punkt stellt Fanotify eine einen Blick auf den Kernel zu werfen, der in pilierungsvorgang mit vielen Prozessen die glei- Ablösung für inotify [7] dar, geht aber noch einen Ubuntu 11.04 „Natty Narwhal“ steckt. che Priorität wie ein Web-Browser oder E-Mail- Schritt weiter: Es kann auf eine Antwort des be- Programm. nachrichtigten Programms warten und einen Pro- Redaktioneller Hinweis: Der Artikel „Was Nat- zess so lange blockieren. Damit können zum Bei- ty antreibt: Ein Blick auf den Kernel von Ubuntu Fanotify kommt, BKL geht spiel On-Access-Virenscanner [8] Dateien noch 11.04“ erschien erstmals in Ikhaya [3] und wird schnell prüfen, bevor sie gelesen oder ausgeführt mit Genehmigung des Autors unter der Creative Mehr im Hintergrund, letztlich jedoch mit positi- werden, wie dies auf Windows-Systemen bereits Commons BY-SA 3.0 Unported [4] veröffentlicht. ven Auswirkungen auf die Leistungsfähigkeit des gang und gäbe ist. Künftig können Virenscan- Rechners, wurde der Big Kernel Lock (BKL) [5] ner unter Linux auf diese einheitliche Schnittstel- entfernt. Dieser Locking-Mechanismus gilt als Die Qual der Kernelwahl le zurückgreifen, bislang nutzen diese meist das besonders uneffektiv, da er den gesamten Ker- (derzeit nicht gepflegte) Kernel-Modul Dazuko [9] Es war lange Zeit nur „wahrscheinlich“, dass nel sperrt und wurde daher durch weniger gie- oder verzichten auf eine Echtzeitprüfung. 2.6.38 in den jüngsten Spross der Ubuntu- rige Locking-Mechanismen ersetzt. Dieses Pro- Familie einziehen sollte. Bereits Ende Januar jekt zog sich nun fast drei Jahre hin, in denen Weitere Änderungen und Verbesse- wurde der Kernel in Natty auf die Entwickler- nach und nach alle Stellen, an denen der BKL rungen version 2.6.38 umgestellt und mittlerweile von zum Einsatz kam, überarbeitet wurden. Bereits den Kernel-Entwicklern als stabile Version veröf- seit 2.6.37 war es möglich, den Kernel ohne BKL- Weitere Änderungen, die beim Umgang mit dem fentlicht. Der Sprung über drei Kernel-Versionen Unterstützung zu installieren, da nur noch we- Linux-Desktop zum Tragen kommen, sind zum (2.6.36, .37 und .38) hinweg muss nicht im- nige Treiber, wie zum Beispiel der Intel-Treiber Beispiel der Einsatz von FS-Cache im Zusam- mer gleich eine Verheißung auf weltbewegende i810, auf den BKL-Code angewiesen waren. Mit menhang mit Windows-Freigaben. FS-Cache ist Neuerungen sein, aber den einen oder anderen dem Natty-Kernel (2.6.38) ist BKL weitgehend ein Zwischenspeicher für Netzwerkdateisysteme, Leckerbissen hat der Natty-Kernel dann doch zu passé und bereits in der Standard-Konfiguration der nun auch den Zugriff auf Windows-Freigaben bieten. deaktiviert. Der Code für den Lock wird jedoch mittels CIFS [10] beschleunigt. Verbesserungen

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/20113 KERNEL an der Virtuellen Speicherverwaltung [11] sol- nels vorgenommen, mit deren Hilfe die Entwick- [6] http://wiki.ubuntuusers.de/Benachrichtigungs len scheinbar eingefrorenen Systemen vorbeu- ler bewerten können, wo die Bremsen im Sys- dienst gen, die zum Beispiel bei Schreibvorgängen auf tem sitzen und wo optimiert werden kann. Mit [7] http://wiki.ubuntuusers.de/inotify langsame USB-Geräte auftreten, wenn der zur B.A.T.M.A.N. [14] wurde ein neues Routingpro- [8] https://secure.wikimedia.org/wikipedia/de/wiki/ Verfügung stehende Arbeitsspeicher ausgelastet tokoll für vermaschte drahtlose Netze [15] auf- Antivirenprogramm#Echtzeitscanner ist – im Zeitalter von Netbooks mit teilweise nur genommen, das unter anderem nach Naturka- [9] https://secure.wikimedia.org/wikipedia/de/wiki/ 1 GB vorinstalliertem RAM ein nicht allzu fern lie- tastrophen zum Einsatz kommen kann, um wie- Dazuko gendes Szenario. Wird ein Rechner in den Ru- der Kommunikationsmöglichkeiten zu schaffen. [10] https://secure.wikimedia.org/wikipedia/de/wiki/ hezustand versetzt, so sichert er ein Abbild des Dabei ist jeder Teilnehmer am Netz nicht nur Server_Message_Block Speichers auf Festplatte, um später wieder im Endpunkt sondern auch Teil der Verbindung zu [11] https://secure.wikimedia.org/wikipedia/de/wiki/ gleichen Zustand aufwachen zu können. Dieses Anderen oder kann als Zugangspunkt zum Bei- Virtuelle_Speicherverwaltung wird nun mittels LZO [12] komprimiert. LZO gilt spiel per Satellitenfunk zum Internet dienen. Der [12] https://secure.wikimedia.org/wikipedia/de/wiki/ zwar nicht gerade als der effizienteste Algorith- Nutzerkreis dürfte zwar eher eingeschränkt sein, Lempel-Ziv-Oberhumer mus, um eine hohe Kompressionsrate zu erzie- nichtsdestotrotz handelt es sich um eine inter- [13] https://secure.wikimedia.org/wikipedia/en/wiki/ len, punktet jedoch bei der Geschwindigkeit, mit essante Technik. Das bereits von Ubuntu genutz- AMD_Fusion der die Komprimierung und Dekomprimierung te AppArmor [16], ein System, das die Berech- [14] https://secure.wikimedia.org/wikipedia/de/wiki/B. vonstatten gehen und somit auch bei der Zeit, die tigungen von Prozessen beschränken und da- A.T.M.A.N. zum Einschlafen und Aufwachen benötigt wird. mit die Sicherheit des Systems gegenüber ein- [15] https://secure.wikimedia.org/wikipedia/de/wiki/ Und zuletzt kann Ubuntu 11.04 bereits mit AMDs geschleustem Code verbessern soll, ist jetzt nun Vermaschtes_Netz neuester Generation von Chipsätzen umgehen, offiziell Bestandteil des Linux-Kernels. AppArmor [16] http://wiki.ubuntuusers.de/AppArmor da Nattys Kernel Unterstützung für die Fusion- muss nun nicht mehr von den Distributionen Plattform [13] bietet, die Prozessor und Grafik- selbst eingefügt werden, was diesen einigen Auf- kern auf einem Chip vereinen. Erste Geräte mit wand abnimmt, letztlich für den Nutzer jedoch kei- Autoreninformation diesen Chips wurden zum Beispiel von Acer und nen Unterschied macht. Mathias Menzer (Webseite) hält MSI angekündigt und dürften in Kürze im Handel LINKS auftauchen. einen Blick auf die Entwicklung des [1] http://ikhaya.ubuntuusers.de/2011/04/28/ubuntu- Linux-Kernels. Als Nutzer eines (fast) 11-04-natty-narwhal-ist-erschienen/ Fazit unmodifizierten Ubuntu-Desktops [2] http://kofler.info/blog/154/126/Unity----Der- interessiert er sich besonders dafür, Dies war nur ein kurzer Abriss der wichtigsten Anfang-vom-Ende-fuer-Ubuntu/ was für ihn als Anwender bei all der Neuerungen, die nicht nur irgendwo im Dun- [3] http://ikhaya.ubuntuusers.de Entwicklung relevant ist. keln dämmern, sondern für den Nutzer am Desk- [4] http://creativecommons.org/licenses/by-sa/3.0/ top greifbar sind. Darüber hinaus wurden im deed.de Hintergrund unter anderem Verbesserungen an [5] https://secure.wikimedia.org/wikipedia/de/wiki/ den Werkzeugen zur Leistungsmessung des Ker- Big_Kernel_Lock Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/20114 KERNEL

Der April im Kernelrückblick von Mathias Menzer

asis aller Distributionen ist der Linux- Kurz erläutert: „Big Kernel Lock (BKL)“ „Maintenance“ behoben, was damit über 90 % Kernel, der fortwährend weiterent- Der Big Kernel Lock ist ein Mechanismus, der Dateien betraf. Die Änderungen am Block B wickelt wird. Welche Geräte in einem mit dem verhindert wird, dass von mehreren Layer Plugging sorgten auch für verschiedene halben Jahr unterstützt werden und welche Prozessoren oder Kernen der gleiche Kernel- Probleme, die mit dem -rc4 [6] teilweise beho- Funktionen neu hinzukommen, erfährt man, Code gleichzeitig ausgeführt wird. Dieser ben werden konnten. Ein verbliebener Effekt, der wenn man den aktuellen Entwickler-Kernel im Sperr-Mechanismus wurde beim Übergang zu einen stetigen Strom von Meldungen über einen Auge behält. Linux 2.2 1996 eingeführt, um Mehrprozessor- – imaginären – Wechsel der CD-ROM erzeugte, Systeme effektiver nutzen zu können. Er war wurde mit dem -rc5 [7] beseitigt. Darin enthalten Das Fenster für die Aufnahme von Neuerungen von Anfang an als zeitweilige Lösung gedacht, waren dann ebenfalls neue Geräte-IDs für Intels in den Linux Kernel 2.6.39 wurde bereits En- bis bessere Mechanismen ein feineres Locking kommende Chipsatz-Generation „Panther Point“, de März mit Erscheinen der ersten Vorabversi- erlauben würden, da der BKL nicht nur Teile, die erstmals USB 3.0 ohne Zusatzchip unterstüt- on [1] geschlossen. Ein alter Bekannter hat uns sondern gleich den ganzen Kernel sperrt. Mitt- zen werden. verlassen: Nachdem der Big Kernel Lock zuletzt lerweile stehen Mechanismen zur Verfügung, nur noch wenigen Treibern vorbehalten und in LINKS die nur kleine Teile des Kernel sperren, wo- der Standardkonfiguration abgeschaltet war, ver- [1] http://lkml.org/lkml/2011/3/29/351 durch die anderen, nicht gesperrten Bereiche schwindet er mit den Worten „Total BKL removal, [2] http://lkml.org/lkml/2011/3/16/420 weiterhin zugriffsbereit bleiben und eine we- finally“ („vollständiges Entfernen des BKL, end- sentlich bessere Nutzung mehrerer vorhande- [3] http://lkml.org/lkml/2008/5/14/324 lich“; Betreff der E-Mail an die Linux Kernel Mai- ner Prozessoren erreicht wird. [4] http://lkml.org/lkml/2011/3/29/351 ling List [2]) nun endgültig aus dem Kernel. Da- [5] http://lkml.org/lkml/2011/4/11/378 mit geht ein fast drei Jahre dauerndes Projekt [6] http://lkml.org/lkml/2011/4/19/6 zu Ende, das Ingo Molnar im Mai 2008 gestar- Warteschlange. 2.6.39-rc2 [4] wurde von Tor- [7] http://lkml.org/lkml/2011/4/27/8 tet hatte [3]. Das Ergebnis ist ein Kernel, des- valds selbst als „ungewöhnlich ruhig“ bezeich- sen Bestandteile nun auf Mehrprozessorsyste- net, konnte aber dennoch einen neuen Trei- men besser skalieren als dies bislang der Fall ber für LGs USB-LTE-Modem VL600 wie auch Autoreninformation war. Weiterhin wurde das „Block Device Plug- noch Neuerungen am Wacom-Treiber, der Zwei- ging“ umgestellt, sodass dieses nun auf Threads Finger-Gesten an Multitouch-Tablets ermögli- Mathias Menzer (Webseite) hält bezogen ausgeführt wird, nicht wie zuletzt gerä- chen soll, vorweisen. Die dritte Vorabversion [5] einen Blick auf die Entwicklung tebezogen, wodurch sich Aufrufe effizienter nut- brachte auf den ersten Blick zwar große Ände- des Linux-Kernels. Dafür erfährt er zen lassen. Als angenehmer Nebeneffekt wurde rungen, diese waren jedoch auf eine automa- frühzeitig Details über neue Treiber der Quellcode dabei aufgeräumt. Plugging und tisierte Rechtschreibkorrektur hauptsächlich der und interessante Funktionen. Unplugging bezeichnen das Deaktivieren bzw. Dokumentation und der Kommentare im Kernel- Aktivieren des Treibers eines Block-orientierten Code zurückzuführen. In über 2400 Dateien wur- Gerätes beziehungsweise seiner zugehörigen den Fehler wie zum Beispiel „Maintainence“ statt Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/20115 PROGRAMMIERUNG

Python-Programmierung: Teil 7 – Iteratoren von Daniel Nögel

m vorherigen Teil wurde eine kleine shuffle(songs) Iteratoren Musikdatenbank implementiert (siehe songs = songs[:options.shuffle Schon in den vorherigen Teilen dieser Einführung I freiesMagazin 03/2011 [1]). Diese ist nun wurde mehrfach das Verb „iterieren“ verwendet. durch diese Zeile ersetzt: in der Lage, Verzeichnisse nach Musikdatei- Mit Hilfe der for-Schleife wurde beispielsweise en zu durchforsten und diese in eine SQLite- songs = database.shuffle(options.y über eine Liste „iteriert“. Wie bereits zuvor er- Datenbank abzulegen. Außerdem kann diese shuffle) örtert wurde, werden beim Iterieren letztlich be- Datenbank natürlich durchsucht werden. In stimmte Datenstrukturen schrittweise durchlau- diesem Teil werden nun Iteratoren behandelt Eine weitere Anmerkung im vorherigen Teil ziel- fen. Es wird beispielsweise nacheinander auf die – und damit eine Technik, die zu den zentralen te auf den Generator-Ausdruck in der Funktion Elemente einer Liste zugegriffen. Iteratoren in Py- Konzepten von Python gezählt werden kann. generate_simple_playlist(): thon sind letztlich nichts anderes als ein einheitli- cher Standard, mit dem Objekte um diese Funk- u"\n".join(hit["path"] for hit in Nachtrag y tionalität erweitert werden können. Im letzten Teil wurde gefragt, wie die songs) Shuffle-Methode unter Zuhilfenahme von class TestIterator(object): Es wurde bereits angemerkt, dass es sich hierbei SQL zu verbessern sei. Dazu ist die Klasse def __iter__(self): um eine sehr effiziente Alternative zu folgendem DatabaseConnector schlicht um diese Metho- self.current = 1 Code handelt: return self de zu erweitern:

def shuffle(self, num): def next(self): sql = "SELECT * FROM mp3s ORDER BY RANDOM() LIMIT {0}".format(num) self.current += 1 with Cursor(self.connection) as cursor: return self.current return cursor.execute(sql).fetchall() for i in TestIterator(): print i Mit der Anweisung ORDER BY RANDOM() wer- paths = [] den die Einträge in der Tabelle mp3s in zufälli- for hit in songs: Die beiden Methoden __iter__() und next() ger Reihenfolge geordnet. Die Anweisung LIMIT paths.append(hit["song"]) {ZAHL} sorgt dafür, dass nur eine gegebene An- return u"\n".join(paths) gehören zu diesem Iterator-Standard (allgemein zahl von Einträgen ausgelesen wird. spricht man vom „Iterator-Protokoll“). Die Metho- den lassen sich wie folgt erklären. Anschließend muss noch der Aufruf der Zufalls- Um aber genau zu klären, was es mit Generator- for routine im Skript umgebogen werden. Dazu wird Ausdrücken auf sich hat, sollen in diesem Teil In der -Schleife wird zunächst eine Instanz TestIterator der Teil zunächst „klassische“ Iteratoren vorgestellt wer- von erzeugt. Beim Versuch über den. Im nächsten Teil kommen dann Iterator- und ein Objekt zu iterieren, wird nun zunächst die songs = database.get_all_songs() Generator-Ausdrücke zur Sprache. __iter__()-Methode des gegebenen Objektes

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/20116 PROGRAMMIERUNG aufgerufen. Hat das Objekt keine solche Metho- zu Strg + C . Wie lassen sich nun Abbruchbedin- Hier wurde die Methode next() nun so erweitert, de, wird beim Versuch über das Objekt zu iterie- gungen implementieren? dass die Exception StopIteration geworfen ren ein Fehler ausgegeben: wird, sobald der interne Zähler (self.current) Es gibt zwei Möglichkeiten, dieses Problem zu lö- einen Wert größer oder gleich 1000 annimmt. >>> for i in 4: sen. Zum einen könnte in der Schleife selbst eine Zum Auslösen dieses „Fehlers“ wird das Schlüs- ... print i Abbruchbedingung formuliert werden: selword raise eingesetzt. Keine Sorge: Wenn- Traceback (most recent call last): gleich hier von Fehler oder Exception gespro- File "", line 1, in < for i in TestIterator(): y chen wird, dient StopIteration lediglich dazu, module > print i das Ende der Iteration auszulösen. TypeError: 'int' object is not y if i >= 1000: iterable break Kurzes Zwischenfazit Diese Methode __iter__() leitet die Iteration al- Schon bricht die Schleife ab, sobald i >= 1000 Bisher wurden drei wichtige Elemente des so letztlich ein. Ihre Aufgabe ist es, ein Objekt zu- ist. Iterator-Protokolls vorgestellt: Die Methode rückzugeben, über das iteriert werden soll. Das __iter__() wird zu Beginn der Iteration aus- könnte beispielsweise eine Liste sein. Da hier ein Zum anderen aber kann das Iterator-Objekt auch geführt und muss ein iterierbares Objekt zurück- eigenständiger Iterator umgesetzt werden soll, selbst anzeigen, dass die Iteration beendet ist. geben. Dieses iterierbare Objekt muss wieder- gibt __iter__() mit self schlicht eine Referenz Dies ist beispielsweise bei Listen sinnvoll. Wenn um eine Methode next() implementieren. Die- auf die aktuelle TestIterator-Instanz zurück. eine Liste keine weiteren Elemente mehr enthält, se Methode wird bei jedem Schleifendurchlauf Nun beginnt das eigentliche Iterieren: Die for- muss der for-Schleife irgendwie angezeigt wer- ausgeführt, ihr Rückgabewert ist der aktuelle Schleife ruft für jeden Schleifendurchgang die den, dass die Iteration beendet ist. Dazu gibt es Wert des Iterators. Schließlich wurde die Excep- next()-Methode des von __iter__() zurückge- die StopIteration-Exception: tion StopIteration vorgestellt. Sie wird gewor- gebenen Objektes auf – in diesem Fall also die fen, wenn der Iterator anzeigen soll, dass keine next()-Methode von TestIterator. Der Rück- class TestIterator(object): weiteren Werte zur Verfügung stehen. Die for- gabewert von next() wird in diesem Beispiel je- def __iter__(self): Schleife, mit der über den Iterator iteriert wird, self.current = 1 weils an den Namen i gebunden und steht damit endet in diesem Fall. return self im Schleifenrumpf zur Verfügung. Viele Wege führen nach Rom Achtung: Es ist die Aufgabe des Iterators, bei je- def next(self): dem Aufruf von next() den internen Zähler (hier: if self.current >= 1000: Neben Iteratoren, die mit __iter__() und self.current) zu erhöhen. raise StopIteration next() arbeiten, gibt es noch eine zweite self.current += 1 Möglichkeit, Iteratoren zu erstellen. Für die- Beim Ausführen des obigen Beispiels wird return self.current sen zweiten Fall wird lediglich die Methode schnell deutlich, dass TestIterator() in Einer- __getitem__() benötigt. Diese Methode kommt schritten hochzählt. Die einzige Möglichkeit, das for i in TestIterator(): für gewöhnlich bei der Nutzung des Listen- Skript zu unterbrechen, ist ein beherzter Griff print i Operators zum Einsatz.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/20117 PROGRAMMIERUNG

>>> numbers = [1, 2, 3] Es gibt noch einen weiteren Unterschied: self.start = start-step >>> numbers[0] Statt einer StopIteration-Exception, wirft der self.step = step 1 __getitem__()-Generator einen IndexError. Das hängt damit zusammen, dass auch Lis- self.stop = stop Der Ausdruck numbers[0] macht dabei nichts ten einen IndexError werfen, wenn über def __iter__(self): anderes, als die Methode __getitem__() der __getitem__() ein Index ausgelesen werden self.current = self.start soll, der größer ist, als die Zahl der Einträge der bezeichneten Liste aufzurufen: return self Liste. >>> numbers.__getitem__(0) 1 def next(self): Beispiel self.current += self.step Bereits in einem der ersten Teile dieser Einfüh- if self.stop and self.y Es wird auch deutlich, dass __getitem__() rung (siehe freiesMagazin 10/2010 [2]) wurde current >= self.stop: einen Parameter kennt, der den jeweiligen Lis- die Funktion range() besprochen. In Python 2.x raise StopIteration tenindex (hier: 0) bezeichnet. Python ist nun in wird damit eine Liste im angegebenen Wertebe- return self.current der Lage, auch Objekte, die nur die Methode reich erstellt. Ab Python 3.x erzeugt die Funktion __getitem__() implementieren, wie Iteratoren range() keine Liste mehr, sondern einen Itera- Die Syntax dieses Iterators unterscheidet sich et- zu behandeln. Ein Beispiel: tor. Zwar lässt sich über beide Objekte gleicher- was von der Syntax der range()-Funktion. Das maßen iterieren, die Iterator-Variante hat aber soll an dieser Stelle aber nicht weiter stören. Ein class AnotherIterator(object): Aufruf könnte wie folgt aussehen: def __getitem__(self, item): den Vorteil, dass keine „Wegwerf-Liste“ erzeugt if item > 1000: wird, über welche dann doch nur ein Mal iteriert for i in RangeIterator(0, 2, 10): raise IndexError wird. Weiterhin ist der Generator speichereffizen- print i return item ter: Während in Python 2.x range(0, 1000) zu- nächst eine Liste mit 1000 Integer-Werten erstel- Mit diesem Aufruf werden also von 0 begin- for i in AnotherIterator(): len muss, die ca. 16.000 Byte Speicher benötigt, nend alle Zahlen bis 10 in Zweierschritten aus- print i belegt der durch range(0, 1000) in Python 3.x gegeben. Würde kein Parameter für stop an- erzeugte Iterator gerade einmal 20 Bytes im Spei- gegeben, würde der Iterator beliebig viele Zah- Im Unterschied zur __iter__()/next()- cher (Angaben jeweils für ein 32-Bit-Python). len in Zweierschritten ausgeben. Wesentlich zum Variante muss der Iterator aber hier nicht un- Verständnis sind – wie nicht anders zu erwar- Im Folgenden wird ein solcher range()-Iterator bedingt einen internen Zähler mitführen: Bei je- ten – die Methoden __iter__() und next(). auch für Python 2.x erstellt. Dabei kommen die dem Schleifendurchlauf wird nämlich der Metho- Dadurch, dass erst in __iter__() der Wert beiden oben erörterten Varianten zum Einsatz: de __getitem__() ein Indexwert (hier: item) von self.current auf den Anfangswert gesetzt übergeben, der letztlich nichts anderes als die class RangeIterator(object): wird, ist jede Instanz des Iterators letztlich wieder- Nummer des jeweiligen Schleifendurchlaufs re- def __init__(self, start, step,y verwertbar: Bei einem zweiten Einsatz in einer präsentiert. stop=None): anderen Schleife würde wieder zunächst die Me-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/20118 PROGRAMMIERUNG thode __iter__() aufgerufen werden, sodass der jeweilige Schleifendurchlauf beim Aufruf von ratoren implementieren. Der Betrachtung dieser der gewünschte Anfangswert erneut gesetzt wür- __getitem__() als Parameter num übergeben Techniken widmet sich der folgende achte Teil de. Bei jedem einzelnen Schleifendurchlauf wird wird, kann der jeweils gewünschte Wert „aus dieser Reihe. dann die Methode next() aufgerufen. Hier wird dem Stand“ berechnet werden, es ist also kein LINKS zunächst der aktuelle Wert um self.step er- Klassenattribut wie self.current nötig, das [1] http://www.freiesmagazin.de/freiesMagazin-2011- höht und dann überprüft, ob ein Maximalwert den Wert zwischenspeichert. Diese Variante hat 03 self.stop gesetzt und erreicht wurde. In die- noch einen anderen interessanten Vorteil gegen- [2] http://www.freiesmagazin.de/freiesMagazin-2010- sem Fall wird die Exception StopIteration ge- über der ersten Variante des Iterators, denn es 10 worfen. Andernfalls wird der aktuelle Wert mittels lassen sich gezielt bestimmte „Positionen“ im Ite- return zurückgegeben. rator ansprechen: Die gleiche Funktionalität wird nun mit einem Autoreninformation >>> print RangeIterator2(0, 2, 999)y Iterator mit __getitem__()-Methode implemen- [55] Daniel Nögel (Webseite) beschäftigt tiert: 110 sich seit drei Jahren mit Python. Ihn class RangeIterator2(object): Das macht diese Form eines Iterators besonders überzeugt besonders die intuitive Syn- def __init__(self, start, step,y interessant für Anwendungsfälle, in denen Be- tax und die Vielzahl der unterstützten stop=None): Bibliotheken, die Python mitbringt. self.start = start rechnungen für bestimmte Indizes nicht sukzes- self.step = step siv aufeinander aufbauen, sondern jeweils eigen- ständig erfolgen können. self.stop = stop Fazit Diesen Artikel kommentieren def __getitem__(self, num): Vorgestellt wurden zwei Varianten, einen eigenen Iterator zu implementieren. Tatsächlich handelt cur_value = self.step * numy + self.start es sich aber hierbei in erster Linie um die Mög- if self.stop and cur_value y lichkeit, ein eigenes Objekt um diese Funktiona- >= self.stop: lität zu erweitern. Wer also beispielsweise eine raise IndexError Welt-Klasse hat, möchte diese eventuell um die return cur_value Möglichkeit erweitern, über die Welt zu iterieren und dabei alle Länder auszugeben. Der Aufruf mit Für viele Anwendungsfälle ist das Erstellen von for i in RangeIterator2(0, 2, 10): print i Iteratorklassen aber sehr umständlich und letzt- lich auch überflüssig: Mit Iterator- und Generator- führt zum gleichen Ergebnis wie oben. Aller- Ausdrücken sowie mit Generator-Funktionen las- „Decline“ © by Randall Munroe dings wirkt der Iterator etwas kompakter. Weil sen sich in Python sehr schnell und einfach Ite- (CC-BY-NC-2.5), http://xkcd.com/523

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/20119 PROGRAMMIERUNG

Parallelisierung mit Scala von Stefan Bradl

iele Programmierer haben Probleme ist die Eliminierung gemeinsam genutzten Spei- nem Mitarbeiter der Reihe nach bearbeitet. Die mit der Programmierung von Neben- chers. Dieser ist die Hauptursache der meisten Vorgänge werden also nacheinander ausgeführt, V läufigkeit [1] [2]. Aufgrund der aktuel- Probleme, welche Programmierer mit Nebenläu- wodurch der oben besprochene Fehler nicht auf- len Entwicklung der Hardware ist dies ein figkeit in Verbindung bringen. treten kann. großer Nachteil. Durch die Nutzung der Pro- Genau diesen Ansatz des Nachrichtenaus- grammiersprache Scala, welche Nebenläufig- Wenn zwei Programmteile allerdings auf die sel- tauschs verfolgt das Actor-Modell. Die zwei Kun- keit mittels des Actor-Modells auf einem sehr ben Daten zugreifen wollen, wie kann man dann den und die Bank werden als die Akteure be- hohen Abstraktionsniveau unterstützt, kann diesen Zugriff ohne die Verwendung eines Mu- zeichnet. Jeder dieser Akteure besitzt seinen ei- dieses Problem in vielen Fällen behoben wer- tex bewerkstelligen? Dazu stelle man sich eine genen Briefkasten. Die Nachrichten, die sich die den. Dadurch können Programme geschrie- Anwendung für eine Bank vor. Um Fehler inner- Akteure zusenden, werden im Briefkasten des je- ben werden, welche gut skalieren [3] und so- halb der Bankkonten zu vermeiden, muss sicher- weiligen Empfängers abgelegt. mit die vorhandene Rechenleistung besser gestellt werden, dass nur ein einziger Vorgang zu einer bestimmten Zeit ausgeführt wird. Gibt ausnutzen. Eine gute Einführung in die Pro- Actors in Scala grammiersprache bietet das, von O’Reilly per es also zwei Kunden, welche jeweils eine Über- In der Programmiersprache Scala ist das Actor- HTML zur Verfügung gestellte, Buch „Pro- weisung vornehmen, so sorgt die Implementation Modell bereits integriert. Man muss lediglich die gramming Scala“ [4]. Außerdem bietet die des Actor-Modells dafür, dass die Transaktionen Akteure und das Senden bzw. Empfangen der Webseite des Scala-Projekts viele weitere In- nacheinander durchgeführt werden. Wenn beide Nachrichten implementieren. Um einen Akteur formationen [5]. Kunden auf das Konto des jeweils anderen die- se Überweisung vornehmen, so kann es vorkom- zu generieren, wird zuerst eine Klasse erstellt, welche von der Klasse Actor abgeleitet wird. Das Actor-Modell men, dass die Abbuchung bei dem ersten Kun- den zu demselben Zeitpunkt stattfindet wie die Um diese Basisklasse zu nutzen, werden zusätz- Die meisten Programmierer verbinden nebenläu- Gutschrift. Dadurch kann der Kontostand fehler- lich noch die zwei Pakete scala.actors.Actor fige Programme mit Threads [6], gemeinsam ge- haft sein. und scala.actors.Actor._ importiert. Die ei- nutztem Speicher und vor allem mit viel Arbeit. gentliche Arbeit erledigen die Akteure in der Me- Dazu gehören die Verwendung von Mutexen [7], Nun stelle man sich vor, dass die zwei Kunden thode act(). In den meisten Anwendungsfällen Semaphoren [8], kritischen Abschnitten [9] und nicht direkt auf ihre Konten zugreifen, sondern besteht diese Methode aus einer Schleife, in vielen weiteren. Auf diesem niedrigen Abstrak- der Bank mitteilen, was sie tun wollen. Der erste der die eingehenden Nachrichten abgearbeitet tionsniveau ist die Programmierung nebenläufi- Kunde sendet also eine Nachricht an die Bank, werden. Als Abkürzung für while(true) kann ger Programme tatsächlich ein sehr aufwändi- dass er einen bestimmten Betrag von seinem loop verwendet werden. Um die einzelnen ein- ges Unterfangen. In den meisten Anwendungen Konto auf das Konto des zweiten Kunden über- gehenden Nachrichten zu unterscheiden, wird ist diese Arbeit jedoch nicht nötig, wenn man weisen möchte. Der zweite Kunde verfährt ana- das sehr mächtige Sprachmittel der Mustererken- sich des Actor-Modells bedient. Das Grundprin- log. Die zwei Nachrichten kommen nun im Brief- nung (Pattern-Matching) verwendet. Das Grund- zip, welches beim Actor-Modell angewendet wird, kasten der Bank an. Dort werden sie von ei- gerüst könnte also wie folgt aussehen:

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 10 PROGRAMMIERUNG import scala.actors.Actor Der gesamte Quelltext des Akteurs sowie ein Bei- object Demo { import scala.actors.Actor._ spiel zu dessen Verwendung ist im Folgenden zu def main(args: Array[String]) { sehen. Außer dem Einzahlen und Abheben wer- Bank.start object Bank extends Actor { den an dieser Stelle auch Nachrichten zum Ab- betrag: Int = 0 fragen des Kontostandes und zum Beenden defi- println("Kontostand: " + (Bank y niert. !? Kontostand)) def act() { loop { import scala.actors.Actor Bank ! Einzahlen(400) react { import scala.actors.Actor._ } println("Kontostand: " + (Bank y } case class Einzahlen(betrag: Int) !? Kontostand)) } case class Abheben(betrag: Int) } case object Kontostand Bank ! Einzahlen(300) case object Stopp Bank ! Abheben(200) Listing 1: actor_basic.scala

Um Nachrichten zu definieren, gibt es in Scala object Bank extends Actor { println("Kontostand: " + (Bank y var betrag = 0 !? Kontostand)) verschiedene Möglichkeiten. Der Einfachheit hal- ber werden hier die sogenannte Case-Klassen def act() { Bank ! Stopp verwendet. Für die Beispielanwendung werden loop { } die Nachrichten Einzahlen und Abheben ver- receive { } wendet. case e: Einzahlen => { this.betrag += e.betrag Listing 3: Demo.scala case class Einzahlen(betrag: Int) } case class Abheben(betrag: Int) case a: Abheben => { Durch die Verwendung von Case-Klassen wird this.betrag -= a.betrag automatisch einiger Quelltext generiert, welcher Damit die Bank auf diese Nachrichten reagieren } es erlaubt, auf die Variable betrag zuzugrei- kann, muss die Methode act angepasst werden: case Kontostand => { fen. Bevor man einem Akteur eine Nachricht react { reply(this.betrag) senden kann, muss dessen Nachrichtenverarbei- case e: Einzahlen => { } tung mittels der Methode start angestoßen wer- this.betrag += e.betrag case Stopp => exit() den. Für das eigentliche Senden von Nachrich- } } ten gibt es mehrere Methoden. Im Beispiel wer- } case a: Abheben => { den die Methoden ! und !? verwendet. Um ei- } this.betrag -= a.betrag ne Nachricht zu senden und diese asynchron } } zu bearbeiten, wird ! verwendet. Erwartet man } Listing 2: Bank.scala auf eine Nachricht eine Antwort – wie bei der

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 11 PROGRAMMIERUNG

Abfrage des Kontostandes – so wird !? benö- naccizahlen [11]. In Scala wird dieser wie folgt Quelltext suchen, welche unabhängig voneinan- tigt. Hierbei wird eine Nachricht gesendet und implementiert: der abgearbeitet werden können. Da der Algo- auf das Ergebnis der Abarbeitung gewartet. Das rithmus sehr übersichtlich ist, fällt die Suche eher reply def fib(n: Int): Int = { Ergebnis wird mit der Methode von der if ( n <= 0 ) 0 kurz aus. Die Berechnung der beiden Vorgänger Bank zurückgesendet. Es gibt noch weitere Mög- else if ( n == 1 ) 1 ist ein guter Kandidat für eine nebenläufige Abar- lichkeiten zum Senden von Nachrichten, welche else fib(n - 1) + fib(n - 2) beitung. in der API-Dokumentation [10] nachgeschlagen } werden können. Konkret bedeutet das, dass zwei Akteure erstellt Um diesen Algorithmus nebenläufig zu imple- werden müssen, von denen jeder einen Vorgän- Das Beispiel zeigt auf einfache Weise, wie neben- mentieren, muss man zuerst nach Stellen im ger berechnet und das Ergebnis zurücksendet. läufig programmiert werden kann, ohne sich dar- Verwendet man dafür die Methode class Arbeiter extends Actor { über direkt Gedanken machen zu müssen. Natür- !? def act() { , ergibt sich ein Problem: Sen- lich bietet das Beispiel nur einen kleinen Einblick loop { det man dem Akteur eine Nach- in die Verwendung von Akteuren. Für eine echte react { richt, so wird diese sofort behan- Anwendung würde der Quelltext aber sehr ähn- case n: Int => { delt und auf das Ergebnis gewar- lich aussehen. Man könnte zum Beispiel Scalas if(n < 2) { tet. Das heißt der zweite Vorgän- RemoteActors verwenden. Mit diesen können reply(fib.fib(n)) ger könnte nicht parallel zum ers- Akteure über ein Netzwerk miteinander Nachrich- } else { ten berechnet werden. Für sol- ten austauschen. Auf einem Server würde dann val arbeiter1 = new Arbeiter che Fälle gibt es das Sprachmit- der Akteur für Bank laufen. Die Konteninhaber val arbeiter2 = new Arbeiter tel Future. Mit diesen ist es mög- könnten dann mit diesem Akteur kommunizieren. arbeiter1.start lich, die Antwort auf eine Nach- Selbst wenn mehrere Nachrichten zum selben arbeiter2.start richt erst zu einem späteren Zeit- Zeitpunkt abgeschickt werden kommt es nicht punkt abzuwarten. Um eine Nach- zu Problemen. Der einzige Speicherbereich, wel- val future1 = arbeiter1 !! (n-1) richt an einen Akteur zu senden val future2 = arbeiter2 !! (n-2) cher von mehreren Threads gleichzeitig genutzt und ein Future-Objekt zurückzuer- reply(future1().asInstanceOf[Int] wird, ist die Nachrichtenbox. Da diese durch das halten verwendet man die Metho- + future2().asInstanceOf[Int]) Actor-Modell verwaltet wird, wird dem Program- !! } de . mierer viel Arbeit abgenommen. Man kann sich exit() somit um das Wesentliche kümmern. Um nun die Berechnung der Fibo- } naccizahlen nebenläufig zu imple- Parallelisierung von Algorithmen } } mentieren, erstellt man zuerst ei- Mit den bisherigen Sprachmitteln ist es nur be- } ne Klasse namens Arbeiter. Die- grenzt möglich, Algorithmen zu parallelisieren. } se wird von der Klasse Actor ab- Ein einfacher und beliebter Algorithmus für De- geleitet. Da der Arbeiter eine be- monstrationszwecke ist die Berechnung der Fibo- Listing 4: Arbeiter.scala stimmte Fibonaccizahl berechnen

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 12 PROGRAMMIERUNG soll, muss er auf Nachrichten vom Typ Int rea- Fazit [7] http://de.wikipedia.org/wiki/Mutex gieren. Um die Nachricht zu bearbeiten, werden Das Actor-Modell bietet eine sehr gute Möglich- [8] http://de.wikipedia.org/wiki/Semaphor_ zuerst zwei neue Arbeiter benötigt. Diesen wird keit zur Programmierung nebenläufiger Program- (Informatik) mittels der Methode !! jeweils der zu berech- me. Die Abstraktion geht dabei sogar soweit, [9] http://de.wikipedia.org/wiki/Kritischer_Abschnitt nende Vorgänger zugesendet. Durch die Verwen- dass der Programmierer nicht einmal mehr wis- [10] http://www.scala-lang.org/api/current/index. dung von Futures kann man zu einem späteren sen muss, dass er etwas nebenläufig implemen- html Zeitpunkt auf die Ergebnisse warten – nämlich tiert. Vielmehr bildet er nur die reale Welt nach, [11] http://de.wikipedia.org/wiki/Fibonacci-Folge nachdem beide Arbeiter ihre Nachrichten erhal- indem er Akteure und deren Kommunikation mo- ten haben. Die Ergebnisse werden dann einfach delliert. Dazu kommt, dass Quelltexte in Sca- addiert und zurückgesendet. la zum Teil deutlich kürzer und aussagekräftiger Autoreninformation sind als in Java. Außerdem können alle Java- Stefan Bradl ist Informatikstudent Verwendet wird die Klasse, indem eine Instanz APIs auch in Scala verwendet werden. erzeugt wird. Anschließend wird mit !? die zu an der Hochschule Zittau/Görlitz. berechnende Zahl an den Arbeiter gesendet und LINKS Während seines Praktikums hat er das Ergebnis kann ausgegeben werden: sich mit der Programmiersprache [1] http://de.wikipedia.org/wiki/Nebenläufigkeit Scala vertraut gemacht und seine def main(args: Array[String]) { [2] http://de.wikipedia.org/wiki/Parallele_Programmie Bachelorarbeit zum Thema „Paral- val arbeiter = new Arbeiter rung lelisierung funktionaler Programme“ arbeiter.start [3] http://de.wikipedia.org/wiki/Skalierbarkeit geschrieben. val ergebnis = (arbeiter !? argsy [4] http://programming-scala.labs.oreilly.com/index. (0).toInt).asInstanceOf[Int] html println(ergebnis) [5] http://www.scala-lang.org/ } [6] http://de.wikipedia.org/wiki/Thread_(Informatik) Diesen Artikel kommentieren

„Parental Trolling“ © by Randall Munroe (CC-BY-NC-2.5), http://xkcd.com/573

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 13 GRAFIK

Dateigrößenoptimierung von Bildern von Dominik Wagenführ

n Zeiten von Breitbandanschlüssen mit Grob gesprochen wird in Rastergrafiken die Bild- oder bei 1000 × 1000 Pixel angezeigt wird, die über 16 MBit machen sich nur noch we- information für jeden Pixel (Bildpunkt) einzeln ge- Elemente sind immer klar erkennbar. I nige Menschen Gedanken über die Grö- speichert. Das heißt, bei einem Bild mit 1024 Pi- Der Nachteil von Vektorgrafiken ist aber auch, ße von Inhalten, die sie ins Netz stellen bzw. xeln Breite und 768 Pixeln Höhe werden in der dass sich nur einfache Grafikobjekte damit dar- per E-Mail verschicken. Leider wird dabei oft Rastergrafik normalerweise 786 432 Informatio- stellen lassen. Mit „einfach“ ist dabei nicht zwin- vergessen, dass nicht jeder mit einem DSL- nen darüber gespeichert, wie jeder Punkt aus- gend gemeint, dass man nur Linien oder Figu- Anschluss gesegnet ist. Vor allem in ländli- sieht. Dies kann auf unterschiedliche Art und ren darstellen kann (siehe „Bildformat SVG ver- chen Gegenden ist es keine Seltenheit, dass Weise geschehen, oft wird der Rot-, Grün- und stehen“, freiesMagazin 12/2010 [6] als Gegen- man auf einen Surfstick angewiesen ist, der Blauanteil jedes Punktes gespeichert. beispiel), aber ein freies Malen ist nur schwer dann mit seinen 64 kbit/s an die gute alte möglich. Fotos von Digitalkameras, die meist aus ISDN-Zeit erinnert. Der Artikel soll zeigen, wie Zu den bekanntesten Rastergrafikformaten ge- mehreren Millionen Punkten bestehen, die sich man Bilder so optimieren kann, dass diese hören Windows-Bitmap (BMP [3]), welches zwar dabei oft auch noch alle unterscheiden, werden platzsparender gespeichert werden können, ohne Qualitätsverlust, aber auch ohne jegliche daher auch immer als Rastergrafik gespeichert. ohne dabei aber zu viel Qualität zu verlieren. Komprimierung daherkommt, sowie die unten ge- nutzten Bildformate PNG und JPG. Aus diesem Grund werden für den Artikel auch Vorwort Bei Vektorgrafiken wird im Gegensatz zu Raster- nur Rastergrafikformate betrachtet. Zuerst sei gesagt, dass es Optimierungen ohne grafiken gespeichert, was in einem Bild zu sehen Qualitätsverlust nur selten gibt. Zwar gibt es so ist. Anstatt jeden Bildpunkt für einen zu zeichnen- Bildformate etwas wie verlustfreie Komprimierung, aber auch den Kreis abzuspeichern, merkt sich das Format Derzeit gibt es eigentlich nur zwei Bildformate diese hat ihre Grenzen und kann nicht bei jedem also nur, wo der Kreismittelpunkt im Bild liegt und (für Rastergrafiken), die von den meisten Men- Bild gleich gut wirken. welchen Radius der Kreis hat. (Daneben wer- schen standardmäßig auf dem Rechner ange- den natürlich noch andere Daten wie Linienstär- schaut werden können und eine Art der Kom- Für den Artikel wird der Einfachheit halber GIMP ke, Farbe etc. gespeichert.) primierung beherrschen. (Es gibt natürlich noch als Programm für die Umsetzung der Optimierun- mehr, aber es wird sich im Artikel auf die zwei gen herangezogen, da es auf den meisten Syste- Das bekannteste Vektorgrafikformat ist wahr- verbreitetsten beschränkt.) men leicht installiert werden kann. Die Optimie- scheinlich SVG (Scalable Vector Graphics [4]), rungen können aber mit jedem Programm voll- was die meisten modernen Browser unterstützen. Portable Network Graphics zogen werden, das diese Optimierungstechniken Einzig der Internet Explorer 8 unter Windows Auf der einen Seite ist da das bereits erwähn- beherrscht. kann mit dem Format nicht umgehen [5]. te PNG (Portable Network Graphics [7]). Dies ist ein Grafikformat für Rastergrafiken, welches Rastergrafik vs. Vektorgrafik Ein Vorteil von Vektorgrafiken ist, dass diese sich die Bilddaten verlustfrei komprimieren kann. Da- Ein kurzes Wort vorab zum Thema Rastergrafi- verlustfrei skalieren lassen. Das heißt, egal ob bei hat PNG seine Stärke vor allem bei Bildern, ken [1] und Vektorgrafiken [2]. das Bild bei einer Größe von 100 × 100 Pixel die wenige Farben haben und bei denen viele

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 14 GRAFIK

Flächen einfarbig sind – kurz gesprochen kann Beispiele für sich selbst sprechen. Die Aussage Screenshot der freiesMagazin-Webseite PNG vor allem bei Screenshots von Desktop- „Ein Bild sagt mehr als tausend Worte“ ist bei die- Zumindest bei freiesMagazin ist die häu- Anwendungen punkten. Dies liegt an der verwen- sem Artikel wörtlich zu nehmen. figste Anwendung von Bildern in Form von deten Kompromierungstechnik [8], bei der gleich- Screenshots diverser An- farbige „aufeinanderfolgende“ Punkte zusammen wendungen. Die meisten gespeichert werden. Fenster-Themes sind dabei so aufgebaut, dass sie we- Ein weiterer Vorteil von PNG ist die Transparenz- nige und einheitliche Farben eigenschaft. Das heißt, man kann Objekte mit haben, was sie für eine Spei- einem transparenten Hintergrund versehen und cherung im PNG-Format das Bild dann beispielweise in einer Webseite prädestiniert. einfügen, sodass es sich nahtlos in die Umge- bung einpasst. Auf diesen Aspekt wird hier aber Als Beispiel wurde die nicht eingegangen. Es werden nur Bilder ohne freiesMagazin-Webseite in Transparenz betrachtet. Firefox geöffnet und mittels JPEG File Interchange Format GIMP über „Datei → Erstel- JPG-Bilder (auch JPEG [9]) sind vor allem für len → Bildschirmfoto“ ein Fotos mit vielen unterschiedlichen Farben geeig- Screenshot erstellt. Natür- net. Zusätzlich lässt das Format eine sehr starke lich könnte man dies auch Komprimierung der Bilder zu, die aber mit einem mittels Alt + Druck machen Verlust der Qualität einhergeht. und dann das Bild abspei- chern. Da der Screenshot Die Frage ist: Wieso sollte man überhaupt Quali- aber sowieso in GIMP wei- tätseinbußen in Kauf nehmen? – Weil man es oft terverarbeitet werden soll, nicht sieht. Bei einem Qualitätsgrad ≥ 90 (wobei kann man ihn auch gleich 100 keine Komprimierung bedeutet) fällt die Kom- darüber erstellen. primierung bei Fotos nur selten auf. Selbst bei einem noch geringerem Qualitätsgrad fällt vielen Als erstes wird das Bild Betrachtern kein Unterschied zum Original auf – als PNG gespeichert. Dafür vor allem dann nicht, wenn sie das Originalbild geht man auf „Datei → Spei- nicht zum Vergleich vorliegen haben. chern“, wählt im oberen Ein- gabefeld als Dateiname bei- Beispiele, Beispiele und Beispiele spielsweise webseite.png Bevor noch mehr Worte über irgendwelche tech- Screenshot der freiesMagazin-Webseite und klickt dann unten rechts nischen Details vergeudet werden, sollen besser (bereits indiziert, siehe unten). auf „Speichern“. Es er-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 15 GRAFIK scheint nun ein spezieller Dialog, über den man Einheitsbreite von maximal 800 Bildpunkten zu- skalierte Version viel mehr Farben enthält. Der verschiedene Informationen speichern kann. lässt. Verkleinern kann man das Bild unter „Bild Grund ist, dass bei der Skalierung aus der → Bild skalieren“ und wählt dort als „Breite“ den schwarzen Schrift und dem grauen Hintergrund Wert 800. an manchen Stellen nur noch Platz für ein Pixel war. An der Stelle versucht GIMP dann eine Mi- Man merkt, dass das Bild nach der Ska- schung beider Farben zu erzeugen, was zu dem lierung etwas verwaschener wirkt, aber man Mehr an Farben führt. kann noch alles lesen. Dies speichert man mit den gleichen Einstellungen wie zuvor als Bild als JPG webseite-800px.png ab. Was jedem jetzt auf- Als zweiter Versuch soll das Bild in Origi- fallen und für Verwunderung sorgen sollte: Das nalgröße als JPG gespeichert werden. Hier- neue Bild hat 300,1 KB, obwohl man es verklei- zu geht man auf „Datei → Speichern unter“ nert hat. und wählt webseite.jpg als Dateiname. Nach dem Klick auf „Speichern“ sieht man den JPG- Optionsdialog. Per Standard sieht man nur die Einstellung für die „Qualität“. Diese ist aber nicht die einzige, die sich auf die Qualität und Bildgrö- ße auswirkt. Wenn man auf „Erweiterte Optionen“ klickt, sieht man alle Optionen. Dialog mit PNG-Optionen beim Speichern. Stellt man die Qualität auf 100 und entfernt den Für die Dateigröße ist vor allem der Kompressi- Haken bei „Optimieren“, erhält man eine Da- onsgrad wichtig, der immer auf 9 stehen sollte. teigröße von 497,2 KB. Setzt man den Haken Die restlichen Optionen kann man so eingestellt wieder bei „Optimierung“, spart man fast 100 KB. lassen, wie sie sind. Man sollte nur wissen, dass Sehr schön ist, dass die Dateigröße immer gleich einzig die Option „Interlacing (Adam7)“ zu einer angezeigt wird, soweit der Haken bei „Vorschau relevanten Erhöhung der Dateigröße führt. im Bildfenster anzeigen“ angekreuzt ist. Die Op- Ausschnitt der normalen Variante (oben) und tion „Progressiv“ spart noch einmal ein paar Ki- So gespeichert hat das Bild eine Dateigröße von der skalierten (unten). lobyte, die aber fast zu vernachlässigen sind. In 200,1 KB, was optimiert werden soll. der Regel kann man die Einstellungen aber so Der Grund dafür ist, wie oben geschrieben, dass lassen, wie sie sind. Bild skalieren PNG vor allem punkten kann, wenn man aufein- Im ersten Versuch soll das Bild physisch verklei- anderfolgende Pixel mit gleicher Farbe hat. Ver- Von der Option „Glättung“ sollte man aber die nert (skaliert) werden, um Platz zu sparen. Als gleicht man beide Bilder nebeneinander, vor al- Finger lassen. Nicht nur, dass ein geringer Glät- Beispiel sei angenommen, dass alle Bilder in ei- lem bei hoher Zoomstufe, sieht man (z. B. bei tungsgrad die Dateigröße erhöht (bei Glättung ne Galerie eingefügt werden sollen, die nur eine dem Wort „Ansicht“ im Firefox-Menü), dass die 0,0 hat man noch 399,2 KB, bei einer Glättung

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 16 GRAFIK

rechten Seite genauer anschaut, wirkt die Indiziertes PNG ehemals graue Fläche hinter den Worten Zum Schluss soll der Screenshot indiziert wer- wie ein Mischmasch aus vielen Farben. den. Unter Indizierung versteht man nicht etwa den Verschluss des Bildes vor der Öffentlichkeit, Ob man diese Qualität nun als annehm- sondern die Reduzierung der Farben auf eine be- bar empfindet oder nicht, ist wohl Ge- stimmte Farbpalette oder auf eine bestimmte An- schmackssache. Einige Menschen sehen zahl von Farben. Den Dialog zum Indizieren fin- kein Problem darin und können selbst det man unter „Bild → Modus → Indiziert“. mit einer noch geringeren Qualität (und dafür noch mehr Artefakten) leben. In Unter „Farbtabelle“ kann man verschiedene Pa- freiesMagazin wird aber immer versucht, letten auswählen. Auch wenn „Internet-optimierte den besten Kompromiss zu finden, wobei Palette verwenden“ verlockend klingt, sieht das mehr Augenmerk auf Qualität gelegt wird. Ergebnis nicht gut aus, da zu viele Farben ent- Als Ergebnis lässt sich festhalten, dass ein fernt werden. Die einfachste und meist auch PNG für diesen Screenshot die bessere Dialog mit JPG-Optionen beim Speichern. beste Wahl (für die hier angebrachten Beispie- Wahl ist. le) ist der Punkt „Optimale Palette erzeugen“ von 0,2 aber 406,9 KB, erst ab einer Glättung von mit 256 Farben (Standard). Man sollte auf alle fast 0,5 ist die Dateigröße wieder so wie beim Hinweis: Mit einem skalierten Bild, welches man Originalbild), zusätzlich wird das Bild auch sehr als JPG speichert, könnte man dagegen wieder unscharf. im Vorteil sein. Dabei sollte man aber nie ver- gessen, dass eine Skalierung immer die Qualität Als einzigen Regler ist es sinnvoll, an der „Quali- negativ beeinflusst, da gezwungenermaßen Bild- tät“ drehen. Wenn man eine ähnliche Dateigröße informationen wegfallen. wie beim PNG oben erzielen will, muss man die Qualität auf 85 stellen. Hierbei muss man aufpas- sen: Nach dem Speichern zeigt GIMP nach wie vor die Originalqualität des Bildes an. Wer mit dem geänderten Bild weiterarbeiten will, muss dieses neu öffnen. Wer gute Augen hat, dem fällt auf, dass das Bild vor allem bei den Schriften unruhiger und etwas kriselig wirkt. In der Tat sind solche Artefakte bei JPG-Bildern sehr oft zu finden und charak- teristisch für die Komprimierungstechnik. Wenn man sich beispielsweise die Wortwolke auf der Ausschnitt aus dem JPG bei Qualität 85. Indizierte Farbumwandlung.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 17 GRAFIK

Fälle darauf achten, dass keine „Farbrasterung“ Screenshot eines Spiels bei einer Qualität von 98, bei der man keinen Un- ausgewählt ist, da dieses ein Rastermuster über Als zweites Bild soll ein Screenshot des Spieles terschied zum Original mit bloßem Auge sieht, ist farbige Flächen legt. SpaceChem (siehe freiesMagazin 04/2011 [10]) das Bild kleiner als das indizierte PNG. herhalten. Im Rohzustand (d. h. als unveränder- Wandelt man das Bild nun um, fällt einem viel- Testweise kann man die Qualität sogar auf 80 set- tes PNG) hat das Bild eine Dateigröße von 908,3 leicht gar kein Unterschied auf. Dass aber einer zen. Was fällt auf? Sehr wenig offen gestanden. KB, die es zu optimieren gilt. da ist, merkt man, wenn man mittels der Tasten- Die roten Deckel der Container wirken etwas ver- kombinationen Strg + Z und Strg + Y den Ef- Indiziertes PNG waschener und die rote Bahn in der Mitte verliert fekt rückgängig macht und wieder einblendet. So Aus den Erfahrungen des ersten Beispiel ver- etwas Kontrast. Ansonsten ergibt sich aber kei- kann man sehr leicht zwischen Original und indi- sucht man es dieses Mal zuerst mit einem in- nerlei (offensichtliche) Verschlechterung. ziertem Bild vergleichen. dizierten PNG. Und in der Tat: Die Indizierung Wenn man näher an die Schrift heranzoomt, sieht bringt keinerlei Veränderungen am Aussehen Wenn man also genauer hinschaut, fällt auf, dass man aber dennoch die gleichen Artefakte wie und ist so nur noch 384,4 KB groß. der ehemals graue Dialog (Menüleiste, Tabs etc.) oben auch. Diese fallen auf einem dunklen Hin- einen leicht rötlichen Stich bekommen hat. Da- Bild als JPG tergrund aber grundsätzlich weniger auf als auf neben ist das Hintergrundweiß der Seite etwas Die Frage ist aber, ob man die Dateigröße noch einem hellen. Daher ist die Speicherung als JPG gelblich gefärbt. Wenn man auf die Farbpipet- weiter optimieren kann. Daher soll das Bild ver- in einer so geringen Qualität immer noch akzep- te im Werkzeugkasten (Taste O ) und nun auf suchsweise als JPG gespeichert werden. Bereits tabel. eine freie, weiße Stelle klickt, kann man sich Ausschlaggebend für das „Scheitern“ der mit einem Linksklick auf die Vordergrundfarbe im PNG-Optimierung ist die Grafik der Plane- Werkzeugkasten überzeugen, dass der Wert von tenoberfläche. Sie hat zwar nur wenige Far- ehemals „255, 255, 255“ („#FFFFFF“) auf „254, ben, diese wechseln sich aber von Pixel zu 255, 252“ („#FEFFFC“) geändert wurde. Pixel ab, sodass der Komprimierungsalgo- Mit diesen geringen Änderungen kann man aber rithmus von PNG nicht gut wirken kann. gut leben. Das gespeicherte PNG hat dann im Hinweis: Natürlich gibt es aber auch Spiele Endergebnis nur noch 64,8 KB. bzw. Anwendungen, bei denen ein indizier- Als Vergleich: Bei einem JPG müsste man die tes PNG vorne liegt, weil es viele einfarbi- Qualität auf 16 herunterdrehen, was zu deutlich ge Flächen gibt, die gut komprimiert werden sichtbaren Artefakten führt und nicht mehr an- können. nehmbar ist. Screenshot vom Desktop Hinweis: Es ist nicht möglich, ein JPG mit In- Sehr beliebt sind in verschiedenen Foren dizierung zu speichern, da das Bildformat keine Vorstellungsthreads, bei denen man einen Farbpalette unterstützt. Daher ist man bei einem Screenshot seines Desktops zeigen kann indizierten Bild auf PNG angewiesen. Normales PNG (links) und indiziertes PNG (rechts). (z. B. bei ubuntuusers.de [11]). Desktophin-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 18 GRAFIK tergründe haben aber oft eines gemeinsam: Sie Qualitätstufe unter 80 fal- sind selten einfarbig, sondern enthalten Farbver- len leichte Veränderungen läufe und andere farbintensive Objekte. bei den Icons auf. Zu dem Zeitpunkt hat das Bild nur Ein Screenshot des Xfce-Desktops (Ubuntu noch eine Größe von unter 10.04 „Lucid Lynx“) soll als Beispiel für die Op- 40 KB, was sicherlich mehr timierung dienen. Das benutzte Hintergrundbild als annehmbar ist. heißt xfce-in-the-moon.png und zeigt eine Maus (das Xfce-Maskottchen) in einem Mond, Foto von Flickr der gerade im Meer versinkt (mit viel Phantasie Zum Schluss soll ein Fo- zumindest). Ein gespeicherter Screenshot über to von Flickr als Beispiel die Druck -Taste hat als PNG eine Größe von für ein normales Digital- 205,4 KB. kamerabild herhalten. Es wird dafür das Bild „Nost- Indiziertes PNG algia“ von Joel Montes Zuerst soll das Bild indiziert werden. Selbst wenn de Oca [12] benutzt, wel- man aber das Maximum von 256 Farben zulässt, ches unter der Creative- fällt der Qualitätsverlust auf – vor allem, wenn Commons-Lizenz CC-BY- man über die obige Methode mit Strg + Z und SA-2.0 [13] veröffentlicht Strg + Y arbeitet. wurde und einigen Le- Der ehemals recht feine Farbverlauf wirkt nun sern bereits aus dem sehr kantig, was bei der Welle unten im Bild ex- Artikel „GIMP-Tutorial: trem auffällt. Eine Indizierung des Bildes ist also Farben durch Graustu- keine Option. fen hervorheben (Color- key)“ aus freiesMagazin Bild als JPG 03/2011 [14] bekannt sein Speichert man das originale Bild als JPG bei ma- könnte. Das Bild liegt im ximaler Qualität von 100, ist die Dateigröße mit Original als JPG bei einer 177,6 KB bereits kleiner als das PNG. Das heißt, Bildgröße von 4576×3051 bei gleicher Qualität ist JPG aufgrund der Farb- Pixeln vor. Bei einer Qua- fülle und Farbwechsel besser für den Desktop- lität von 100 hat es damit Screenshot geeignet. eine Größe von 7,4 MB.

Man kann nun noch mit dem Qualitätsregler spie- Natürlich würde man das Vergleich zwischen Originalbild (oben) und indiziertem Bild (unten). len und diesen langsam absenken. Erst ab einer Bild für eine Verarbeitung

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 19 GRAFIK immer mit der höchstmöglichen Qualität weiter- Mit welcher Qualität man das Bild nun endgül- [6] http://www.freiesmagazin.de/freiesMagazin-2010- geben. Für eine Veröffentlichung im Internet oder tig speichert, bleibt jedem selbst überlassen. Im 12 in freiesMagazin empfiehlt sich aber vorab eine direkten Vergleich fallen auch bei einer Qualität [7] https://secure.wikimedia.org/wikipedia/de/wiki/ Skalierung des Bildes. Wenn man die Bildbreite von 80 leichte Unterschiede zum Originalbild auf. Portable_Network_Graphics auf 800 Pixel reduziert, ergibt sich eine Dateigrö- [8] https://secure.wikimedia.org/wikipedia/de/wiki/ ße von 311 KB, was schon wesentlich besser ist. Fazit Portable_Network_Graphics#Komprimierung [9] https://secure.wikimedia.org/wikipedia/de/wiki/ Das Bild wirkt nach der Skalierung aber etwas Der Artikel hat anhand einiger Beispiele gezeigt, JPG weichgezeichnet. Wer möchte, kann über „Filter wie man die Dateigröße von Bildern mithilfe von [10] http://www.freiesmagazin.de/freiesMagazin-2011- → Verbessern → Schärfen“ das Bild etwas nach- GIMP optimieren kann. Dabei kann aber keine 04 schärfen. Als Faustregel kann man dabei in etwa grundsätzliche Anleitung gegeben werden, wann sagen: Prozentzahl der Skalierung geteilt durch man – sozusagen ohne nachzudenken – die eine [11] http://forum.ubuntuusers.de/topic/vorstellungs thread:-mein-ubuntu-desktop/ 3 entspricht dem Schärfegrad. Das heißt, das oder andere Optimierungsstrategie wählen sollte. Bild wurde von 4576 Pixel Breite auf 800 verklei- Die Entscheidung variiert immer von Bild zu Bild, [12] http://www.flickr.com/photos/joelmontes/ 4952740989/ nert, was einer Skalierung von 83 % entspricht. wobei aber natürlich für jeden Bildtyp zumindest Dies durch 3 geteilt, ergibt also einen Schärfe- eine Richtlinie genannt wurde. [13] http://creativecommons.org/licenses/by-sa/2.0/ deed.de grad von 28. Das ist natürlich nur ein Richtwert Im Endeffekt ist immer ausschlaggebend, wie und es ist immer sinnvoll, sich durch die kleine [14] http://www.freiesmagazin.de/freiesMagazin-2011- viel Qualitätsverlust man bei der Reduzierung der Vorschau im Schärfendialog verschiedene Regio- 03 Dateigröße in Kauf nimmt. Und dies muss jeder nen des Bildes anzuschauen, ob Kanten oder für sich selbst entscheiden. Objekte nicht zu scharf hervorgehoben werden. Autoreninformation Nach dem Speichern wächst die Bildgröße auf LINKS 336,1 KB an. Dominik Wagenführ (Webseite) ist [1] https://secure.wikimedia.org/wikipedia/de/wiki/ Chefredakteur von freiesMagazin Eine Indizierung des Bildes muss man erst gar Rastergrafik und übernimmt ab und zu auch nicht versuchen. Traut man sich doch, wirkt das [2] https://secure.wikimedia.org/wikipedia/de/wiki/ die Arbeit, die Bilder für das Maga- Ergebnis eher wie ein künstlerischer Filter, da Vektorgrafik zin zu optimieren, damit das fertige es bei Fotos durch Licht und Schatten naturge- [3] https://secure.wikimedia.org/wikipedia/de/wiki/ PDF nicht die Datenleitungen sprengt. mäß feine Farbabstufungen gibt, die, wie im obi- Windows_Bitmap gen Desktop-Screenshot zu sehen ist, bei einer [4] https://secure.wikimedia.org/wikipedia/de/wiki/ Indizierung nur noch stufig dargestellt werden. Scalable_Vector_Graphics Dies fällt vor allem bei den Grashalmen im Vor- [5] https://secure.wikimedia.org/wikipedia/de/wiki/ Diesen Artikel kommentieren dergrund, beim Hals und an der Hand des Mäd- Scalable_Vector_Graphics#SVG-Unterstützung_ chens auf. in_Browsern

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 20 SICHERHEIT

Wurmkur ohne Nebenwirkung – Virenentfernung mittels Live-CDs von Bodo Schmitz

eben den zumeist kostenpflichtigen Vi- werden, beträchtlich zu erhöhen. Vielleicht weckt Die Bedienung der häufig eingedeutschten CDs renscannerlösungen gibt es auch ei- das dann darüber hinaus noch die Lust auf eine ist meist selbsterklärend und graphisch ge- N nige – zumeist linuxbasierte – Ange- höhere Dosis Linux ... führt, dennoch sollen hier einige Hinweise bote, die sich wunderbar dazu eignen, di- zu deren Bedienung und Besonderheiten fol- Die meisten CDs beinhalten inzwischen das gitalem Ungeziefer unter Windows zu Leibe gen. Eine Ausnahme stellt die konsolenbasierte Paket ntfs-3g [1], welches nahezu perfekten zu rücken. Teilweise basieren sie auf frei- OpenDiagnostics-Live-CD dar, die mit ein paar Schreibzugriff auf NTFS-formatierte Festplatten en Virenscanner-Engines (z. B. clamav) oder (Debian-)Linux-Kenntnissen aber auch leicht ein- ermöglicht, sodass eine Vielzahl gefundener Vi- sie stellen freie Varianten ansonsten kosten- setzbar ist. ren zuverlässig entfernt, oder zumindest um- pflichtiger Lösungen dar. benannt bzw. in Quarantäne geschickt werden Bei sämtlichen der hier getesteten CDs funk- Es ist vergleichbar zum realen Leben: Die Erkäl- kann. Da sich Desinfektionsleistung sowie Scan- tionieren USB-Tastaturen am Bootprompt nicht. tung erwischt einen immer im falschen Moment! Ergebnisse der verschiedenen CDs unterschei- Somit wird eine PS/2-Tastatur bzw. ein passen- Genau so fällt die Infektion des Windows-PCs im- den, sollten unbedingt mehrere CDs eingesetzt der Adapter benötigt, da sonst am Bootprompt mer genau dann auf, wenn ein zeitkritischer Job werden. Der Einsatz mehrerer CDs nacheinan- keine Optionen gesetzt werden können. Nach zu erledigen ist. Dem lässt sich neben einer Ge- der verhindert außerdem, dass sich die verschie- dem Booten des Rechners funktionieren USB- samtsicherung des Systems mit möglichst meh- denen Virenscanner in die Quere kommen. Tastaturen selbstverständlich wie gewohnt. reren der hier vorgestellten CDs beikommen. Nicht alle CDs können große Dateien, Post- Obwohl der aktuelle Bootmanager grub2 inzwi- fächer, Archive oder die Windows-Auslagerungs- schen ISOs booten kann, ließ sich keine der Das Ganze hat aber noch eine Besonderheit: In- datei scannen. Bei einigen lassen sich entspre- hier getesteten CDs auf diesem Wege vom USB- zwischen gibt es Schädlinge, die erkennen kön- chende Optionen setzen, einige der anderen quit- Stick starten. UNetbootin [2] kann laut Hersteller- nen, ob ein bestimmter Virenscanner installiert tieren den Versuch lediglich mit einer Fehlermel- angaben einige der hier behandelten CDs star- ist. Finden sie einen Scanner, werfen sie die- dung. Dies birgt natürlich ein gewisses Gefahren- ten, daher bieten sich weitere Experimente mit sen kurzerhand aus dem Speicher, deinstallie- potential aufgrund möglicherweise nicht erkann- diesem und ähnlichen Programmen oder Skrip- ren ihn oder manipulieren schlichtweg dessen ter Schädlinge. Daher ist ein möglichst zahlrei- ten an. Kaspersky bietet ein Windows-Programm Scan-Ergebnisse. Somit kann man sich heutzu- cher Einsatz der hier vorgestellten CDs ratsam. zum Download an. tage nicht mehr auf die Resultate eines instal- lierten Virenscanners verlassen und sollte seinen Die Scan-Geschwindigkeit der einzelnen Pro- Die Überprüfung verschlüsselter Linux-Parti- Rechner ergänzend mit – garantiert nicht mani- gramme variiert teilweise sehr stark, sodass für tionen klappt bei keiner der hier vorgestellten pulierbaren – Live-CDs überprüfen. Selbst wenn die vollständige Untersuchung des Rechners ein CDs out-of-the-box, ist aber prinzipiell möglich, man mit Windows arbeiten muss oder will und paar Stunden freigehalten werden sollten. Mög- soweit der Anwender den Umgang mit cryptse- keine Ahnung von Linux hat, ist der Einsatz der lichst sollte der Scan-Vorgang auf Zeiten gelegt tup [3] in der Konsole beherrscht und das Paket hier beschriebenen CDs somit sinnvoll, um die werden, in denen der Rechner nicht dringend be- vorhanden ist oder sich im Live-Betrieb nachin- Chancen, das lästige digitale Ungeziefer loszu- nötigt wird. stallieren lässt. Dies darf auch als Aufruf an die

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 21 SICHERHEIT

Hersteller verstanden werden, denn dass das # truecrypt --mount /dev/sda1 /mnt/windows # bzw. Virenscannern mit zeit- automatische Einhängen verschlüsselter Partitio- # truecrypt --mount container.tc /mnt/windows lich befristeten Lizenz- nen beim Bootvorgang funktionieren kann, be- schlüsseln (die aber den weist die Finnix-Live-CD [4]. Sämtliche verschlüsselte Datenträger werden sechsmonatigen Zeitraum abdecken) ausgestat- über tet ist; allerdings ohne Download-Möglichkeit der Mit der für Windows geeigneten Variante True- aktuellen ISO-Datei. Crypt [5] ist bei einigen der hier vorgestellten # truecrypt -d CDs der Zugriff auf verschlüsselte Festplatten Das Übel an der Wurzel packen – per Hand möglich, seitdem der Hersteller das wieder ausgehängt. Rootkit-Suche über Live-CDs Programm so umgebaut hat, dass die lästige Hinweis: Um bei den Ubuntu-basierten CDs Für Linux gibt es zwei Lösungen, um nach die- Kernel-Kompilierung nicht mehr nötig ist. Wenn nicht – wie in unzähligen Quellen angegeben – sen perfiden Schädlingen zu suchen. Eine gu- man den Installer anweist, die Programmdatei- bei jeder Befehlszeile sudo BEFEHL ... regel- te Anleitung zu Einrichtung und Betrieb von en auszupacken, statt sie zu installieren, kann mäßig das Benutzerpasswort eintippen zu müs- chkrootkit und rkhunter findet sich auf Uçk- man diese anschließend via USB-Stick über ei- sen, wechselt man lieber direkt per sudo -i in anleitungen [10]. Packt man die genannten tar.gz- ne root-Shell ins laufende Live-System kopie- den root-Kontext [7]. Verlassen kann man diesen Archive auf einem USB-Stick aus, lassen sich die- ren (z. B. per mc) und dann das verschlüssel- wieder mit dem Befehl exit und sich für die Dau- se Programme auch bei den Live-CDs, welche te Windows-System händisch einbinden. Gege- er der root-Sitzung das sudo sparen. eine root-Shell beinhalten, einsetzen. Eine detail- benenfalls muss dann noch der Virenscanner lierte Beschreibung zu Installation und Einsatz neu gestartet werden, damit er das eingebunde- Achtung: Im BIOS des Rechners muss die dieser Werkzeuge passen leider nicht in den Rah- ne Windows-System erkennt. Da bei manchen richtige Boot-Reihenfolge eingestellt sein, damit men dieses Artikels. Virenscanner-CDs nur Zugriff über die Konsole die Virenscanner-CDs starten können. Moder- besteht und das Hauptprogramm den gesamten ne Rechner können inzwischen per Tastendruck Avira AntiVir Rescue CD Desktop ausfüllt, empfiehlt es sich, sowohl die (meist eine der Funktionstasten) ein manuelles Die Avira AntiVir Rescue CD (ISO-Image [11]) GUI- als auch die Konsolenvariante von True- Boot-Auswahlmenü aufrufen. bootet nach ca. 20 Sekunden selbstständig oder Crypt auf dem USB-Stick bereitzuhalten. Grund- durch Druck auf die Eingabetaste. Sie bindet au- Die Reihenfolge der hier vorgestellten CDs ist al- lagen zur Konsolenvariante sind im Wiki von tomatisch die gefundenen Partitionen ein und phabetisch und stellt keine Wertung dar. Von Zeit ubuntuusers.de nachzulesen [6]. Informativ ist startet die graphische Oberfläche mitsamt dem zu Zeit ändern sich die Links der Webseiten, so- auch die TrueCrypt-eigene Hilfe mittels Virenscanner. Sie beinhaltet ntfs-3g, basiert auf dass die Quellen der CDs gegebenenfalls neu ge- einem Standard-Linux-Kernel und bemerkt ei- $ truecrypt --help sucht werden müssen. ne fehlende Netzverbindung sowie eine veralte- te Viren-Datenbank. Eine manuelle Einrichtung Neben den hier vorgestellten sieben Live-CDs Verschlüsselte Partitionen bzw. Container lassen des Netzwerks, mitsamt anschließender Aktua- finden sich im Netz weitere Angebote. Außer- sich in der Konsole folgendermaßen einhängen; lisierung der Viren-Datenbank ist aber möglich. dem liegt der Computerzeitschrift c’t [8] alle entsprechende Mount-Punkte müssen eventuell Die Lokalisierung ist vollständig und kann ohne sechs Monate die Variante Desinfec’t [9] (früher vorher manuell angelegt werden: Neustart des Programms geändert werden. Li- Knoppicillin) bei, die jeweils mit zwei bis drei

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 22 SICHERHEIT nuxtypisch kann man per Strg + Alt + F1 auf die schließend selbstständig den Scan-Vorgang. Per F-Secure Rescue CD 3.11 Konsole wechseln; die Rückkehr zum Hauptfens- Strg + Alt + F1 geht es zur Konsolenvariante Auch diese nur auf englisch laufende ter erfolgt per Strg + Alt + F7 . Die Konfiguration des Scanners. Diese Variante wird auch gezeigt, MicroKnoppix-basierte CD von F-Secure [14] des Programms ist selbsterklärend und auch für falls die graphische Oberfläche nicht gestartet [15] startet nach 15 Sekunden Wartezeit automa- Normalanwender verständlich. Nach dem Her- werden kann. Auf den folgenden Funktionstas- tisch mit amerikanischem Tastaturlayout. unterfahren des Rechners muss man sich beim ten liegen die üblichen normalen Textkonsolen. Entnehmen der CD beeilen, da die Schubla- Zurück zur graphischen Oberfläche geht es per cryptsetup fehlt ebenfalls, lässt sich aber wie de des Laufwerks nach 1-2 Sekunden auto- Strg + Alt + F7 . bei der Bitdefender Rescue CD beschrieben zur matisch geschlossen wird. Der Zugriff auf ver- Laufzeit „nachinstallieren“. ntfs-3g ist aber vor- Der Bitdefender Rescue CD fehlt das Paket schlüsselte Linux-Festplatten ist mangels crypt- handen. cryptsetup; seit Ubuntu 9.10 „Karmic Koala“ setup nicht möglich und lässt sich aufgrund lässt es sich aber im Live-Betrieb lauffähig TrueCrypt lässt sich in der Konsolen-Variante be- eines fehlenden Paketmanagers nicht nachin- nachinstallieren. Dazu ist als root Folgendes aus- nutzen. Damit der Virenscanner die verschlüssel- stallieren. TrueCrypt lässt sich aber nach der zuführen: ten Datenträger auch zuverlässig erkennt, müs- oben beschriebenen Vorgehensweise in der sen diese bis spätestens zum Punkt Lizenzbe- Konsolen-Variante ins Livesystem kopieren. Die # apt-get update dingungen manuell unterhalb von /mnt eingebun- verschlüsselten Datenträger sollten irgendwo un- # apt-get install cryptsetup den werden. terhalb von /media/Devices/ eingebunden wer- den. Gegebenenfalls müssen die Mount-Punkte TrueCrypt lässt sich per root-Shell in der GUI- Während des Bootvorgangs wird der Anwender händisch angelegt werden. Variante ins laufende System kopieren. Der zu- auf die Möglichkeit, dass nach einer Desinfekti- gehörige Startmenü-Eintrag ist direkt vorhanden. on virenbefallener Systemdateien das installierte Bitdefender Rescue CD Die verschlüsselten Datenträger sollten manuell System möglicherweise nicht mehr startet, hin- Die Bitdefender Rescue CD (ISO-Image [12]) ba- unterhalb von /media eingebunden werden. An- gewiesen, was mit Druck auf „Next“ zur Kennt- siert zurzeit auf Ubuntu 9.10 „Karmic Koala“ [13] schließend empfiehlt es sich den Virenscanner nis genommen werden muss. Nach Meldung der und lässt somit den Zugriff auf die Konsole neu zu starten, damit er die verschlüsselten Da- evtl. nicht erreichbaren Viren-Datenbank müssen zu. Nach dem Start der graphischen Oberfläche tenträger zuverlässig erkennt. noch die Lizenzbedingungen akzeptiert werden müssen zunächst die Lizenzbedingungen abge- Achtung: Sowohl die Textkonsole, als auch das (Druck auf „Next“, „I Agree“). Nach Auswahl der nickt werden. Ganz ubuntutypisch wechselt man (standardmäßig bereits ausgewählten) zu scan- per graphische Terminal unterstützen ausschließlich die amerikanische Tastaturbelegung! Eine ma- nenden Laufwerke und des Master Boot Records $ sudo bash nuelle Konfiguration und Aktualisierung ist aber (MBR [16]) kann der Scan-Vorgang gestartet wer- möglich. ntfs-3g ist enthalten, sodass ein zu- den. Zwar startet diese CD keine graphische in den root-Kontext. Fehlt die Internetverbin- verlässiger Schreibzugriff auf Windows-Systeme Oberfläche, die konsolenbasierte Navigation ist dung wird der Anwender darauf hingewiesen. möglich ist. Truecrypt lässt sich per USB-Stick ins allerdings laientauglich. Mit Alt + F5 wird die Lis- Ansonsten aktualisiert der automatisch gestar- Live-System übertragen und von Hand „nachin- te der gescannten Dateien angezeigt, Alt + F6 tete Scanner seine Datenbank und startet an- stallieren“. listet die gefundenen Schädlinge und Alt + F1

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 23 SICHERHEIT führt zum Hauptfenster zurück. Hinter den ande- Kaspersky Rescue Disc 10 eines fehlenden Paketmanagers lässt sich crypt- ren Funktionstasten-Kombinationen liegen die li- Am Bootprompt dieser Gentoo-basierten CD von setup nicht nachinstallieren. Darüber hinaus nuxtypischen Konsolen im root-Kontext. Kaspersky (ISO-Image [17]) kann man innerhalb fehlt ebenfalls die Unterstützung für Overlay- von zehn Sekunden per Tastendruck zur Sprach- Dateisysteme wie „UnionFS“ [18] oder „aufs“ [19]. Nach dem Beenden des Scan-Vorgangs kann auswahl gelangen. Auf dem nächsten Schirm er- Daher lässt sich TrueCrypt ebenfalls nicht „instal- durch Druck auf die Eingabetaste der Bericht an- folgt die Wahl der Startart. Die Option „Kasper- lieren“. gezeigt werden. sky Rescue Disk. Grafikmodus“ stellt eine gu- Die CD wird nach dem Herunterfahren bzw. vor Abschließend kann die Viren-Datenbank aktuali- te Wahl dar. Anschließend werden die Lizenz- dem Neustart des Rechners nicht ausgeworfen; siert und der Rechner erneut gescannt oder neu bedingungen akzeptiert. Der Startvorgang kann daher muss sie von Hand entfernt werden. gestartet werden. recht lange dauern und so erscheinen, als ob sich der Rechner aufgehängt hat. Da- Unter der o. g. Download-Adresse findet sich üb- her sollte länger als sonst üblich ge- rigens ein Windows-Programm, mit dem man wartet werden, bis sich der Rech- die CD auf einen USB-Stick übertragen kann ner wieder meldet und auf Einga- („Rescue2usb“). ben reagiert. Nach dem Start der graphischen Oberfläche wird – so- OpenDiagnostics Live-CD weit verfügbar – die Netzverbindung Die OpenDiagnostics Live-CD [20] stellt die Wei- eingerichtet und der Scanner war- terentwicklung der ClamAV-Live-CD dar und wird tet auf Anweisungen des Benutzers. per Konsole mit amerikanischer Tastenbelegung Die rote Lampe zeigt, dass noch bedient. Somit ist hier eine etwas ausführliche- nicht alle Einstellungen korrekt vor- re Beschreibung nötig, um diese CD auch Linux- genommen wurden bzw. die Viren- Anfängern zugänglich zu machen. Debian- bzw. Datenbank veraltet ist. Daher sollte Ubuntu-Anwendern wird das meiste davon be- das Programm zunächst durch Klick kannt vorkommen. auf „Einstellungen“ rechts oben kon- figuriert werden. Im Reiter „Update“ Nach dem Booten sollte man zunächst per wird die Viren-Datenbank aktualisiert und dann der Scan-Vorgang des $ sudo -i Rechners durch Klick auf „Untersu- chung von Objekten starten“ gestar- in den root-Kontext wechseln. Soweit der Rech- tet. ner über genügend Arbeitsspeicher verfügt, kann per ntfs-3g ist vorhanden, die Unterstüt- zung für verschlüsselte Laufwerke # apt-get update # apt-get upgrade Graphische Oberfläche der Kaspersky Rescue Disc. fehlt dagegen vollständig. Aufgrund

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 24 SICHERHEIT die CD virtuell „aktualisiert“ werden. Das betrifft Die Partitionen werden nun wie folgt eingebun- ternetverbindung kann der Scanner nur mit den dann auch den Virenscanner selbst. Unterstüt- den: Linux- und FAT-Dateisysteme werden z. B. auf der Disk befindlichen Viren-Datenbanken ver- zung für NTFS und verschlüsselte Festplatten per wendet werden. Alternativ bleibt nur Abschalten kann per oder Neustart des Rechners. Die wenigen Optio- # mount /dev/sda1 /mnt/sda1 nen des Programms sind allerdings selbsterklä- # apt-get update rend. Der Zugriff auf verschlüsselte Dateisyste- # apt-get install ntfs-3g eingehängt. NTFS-Partitionen dagegen werden me ist aufgrund fehlender Konsole weder mög- # apt-get install cryptsetup per lich noch nachrüstbar. # ntfs-3g /dev/sda1 /mnt/sda1 nachgerüstet werden. Die Konsolen-Variante von PC Tools Alternate Operating System Scan- TrueCrypt lässt sich ebenfalls per USB-Stick ein- ner (AOSS) eingehängt. spielen. Für eine angenehmere Navigation durch Die AOSS-CD [23] startet sofort und ohne Boot- die Konsole kommt je nach Wunsch noch der Anschließend wird der Scanner per prompt. Nach kurzer Zeit erscheint der Sprach- Midnight Commander per auswahldialog, der bereits mit der Maus bedient # clamscan -r -v /mnt/sda1 werden kann. Im nächsten Fenster sind die Li- # apt-get install mc zenzbedingungen abzusegnen. Anschließend er- gestartet. Die Option -r steht dabei für rekursi- scheint das Hauptmenü der CD-Oberfläche. Dort dazu. Um wieder mehr Arbeitsspeicher frei zu be- ves scannen, -v macht den Virenscanner gesprä- finden sich neben dem Virenscanner weitere kommen, kann anschließend per chiger („verbose“). Dienste (z. B. die Möglichkeit der Datenwieder- # apt-get clean Nach Beendigung der Arbeiten werden alle Parti- herstellung bzw. -löschung, eine Konsole, sowie tionen nach dem bekannten Schema per „Scripting“). Hier soll aber nur der Virenscanner aufgeräumt werden. Die aktuellen Viren- behandelt werden. # umount /mnt/sda1 Datenbanken kommen durch freshclam und Nach Auswahl der Partitionen legt der Scanner clamav-unofficial-sigs aus dem Netz. wieder ausgehängt. Der „Affengriff“ direkt los. Der Virenscanner selbst bietet nicht Die Partitionen der Festplatte(n) werden per ( Strg + Alt + Entf ) startet den Rechner neu; der viele Optionen. Es lassen sich aber sog. „deakti- Befehl halt fährt ihn herunter. vierte Dateien“ wiederherstellen. Das bietet sich # fdisk -l an, wenn infizierte Systemdateien in die Quaran- Panda SafeDisc täne gesteckt wurden, und das installierte Sys- Nach dem Start der Panda SafeDisc (ISO- aufgelistet, da die Mount-Punkte manuell ange- tem daher nicht mehr hochfährt. Man sollte aber Images [21] [22] kommt zuerst die Frage nach legt werden müssen; z. B. durch bedenken, dass man damit höchstwahrschein- der gewünschten Spracheinstellung, allerdings lich den Schädling ebenfalls wiederherstellt. # mkdir /mnt/sda1 werden nur Englisch und Spanisch angeboten. Im nächsten Fenster werden die Partitionen er- Eine Unterstützung für cryptsetup fehlt, True- Pro Partition wird je ein Mount-Punkt nach die- mittelt, die Netzverbindung hergestellt und das Crypt kann man über die Systemshell vom Haupt- sem Schema angelegt. Programm konfiguriert. Ohne eine stehende In- menü aus nach der unten bei der VBA-Rescue

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 25 SICHERHEIT

CD beschriebenen Methode manuell „installie- lierten Linux-System (z. B. Debian 5.0 „Lenny“) Da die Scan-Vorgänge teils sehr lange dauern ren“. Zusätzlich muss man noch von Hand Zu- lassen sich die benötigten drei Systembibliothek und der Rechner aufgrund des Bootens vom Live- griffsrechte per aber möglicherweise per USB-Stick „ausleihen“. Medium ohnehin nicht anders eingesetzt werden Benötigt werden /usr/lib/libfuse.so.2, kann, ist es ratsam die Virensuche auf freie Zei- # chmod +x /usr/bin/truecrypt /usr/lib/libstdc++.so.6 und sowie ten zu legen. Beim Einsatz der hier gezeigten /lib/libgcc_s.so.1. ntfs-3g ist aber mit an sieben CDs würde sich beispielsweise eine pro setzen. Die Shell mit amerikanischer Tastenbele- Bord. Die per Druck auf Alt + Funktionstaste er- Nacht anbieten. Da die Scan-Ergebnisse bei den gung verlässt man mit exit. reichbaren Konsolen beinhalten trotz deutscher jeweiligen CDs voneinander abweichen, ist der VBA Rescue Lokalisierung englische Tastaturbelegung. Das Einsatz mehrerer Datenträger unbedingt zu emp- Hauptfenster liegt auf der sechsten Konsole. fehlen. Die Abbild-Datei [24] der VBA Rescue CD wird nahezu täglich neu erzeugt. Am Grub1- Fazit Die Untersuchung verschlüsselter Linux-Sys- Bootprompt hat der Benutzer fünf Sekunden Zeit, teme ist leider nur mit einigen der hier vorge- um eine Auswahl zu treffen. Neben der Standard- Ergänzend zum regulär installierten Duo Viren- stellten CDs möglich. Hier könnten die Herstel- Bootmethode gibt es auch die Wahl alles in den scanner und Firewall ist gerade auf den stets in- ler noch Entwicklungszeit investieren, um dem Arbeitsspeicher zu laden („2ram“; das ist für fektionsgefährdeten proprietären Betriebssyste- Normalanwender eine klickbare Lösung anzubie- Rechner mit nur einem Laufwerk interessant, da men der regelmäßige Einsatz der hier exempla- ten, denn seit mit dem Debian 4.0 „Etch“ Ver- die CD bei dieser Option nach dem Booten aus- risch vorgestellten Live-CDs sinnvoll, um dem schlüsselung fast problemlos einrichtbar gewor- geworfen wird), den Speichertest Memtest86+, Problem zugriffsgesperrter infektiöser Dateien, den ist, dürfte diesbezüglich auch entsprechen- sowie das Festplatten-Analyse-Tool mhdd. Nach manipulierter Scan-Ergebnisse durch Schädlin- der Bedarf bestehen. Auswahl des vba32rescue-Images wird die ge- ge oder gar hinauskatapultierter Virenscanner wünschte Bildschirmauflösung ausgewählt. Auch vorzubeugen. Seit der komfortablen Integration Auf der anderen Seite ist Windows mit Einfüh- hier muss sich der Anwender zügig entschei- von ntfs-3g stellt die zuverlässige Entfernung der rung der Pre-Boot-Authentication [25] in True- den. Als nächstes folgt die Sprachauswahl, ge- Schädlinge auf Windows-Systemen kein wirkli- Crypt ebenfalls voll-verschlüsselbar geworden. folgt von Hinweisen zur Navigation per Tasta- ches Problem mehr da. Vorsicht ist nur bei leicht- tur. In den graphischen Auflösungen funktioniert fertiger Entfernung infizierter Systemdateien ge- Ergänzende Sicherheitshinweise die Maus allerdings auch. Anschließend gelangt boten, da dies in einem nicht mehr lauffähigen Durch stetigen Einsatz dieser CDs sollte man man ins Hauptfenster des Programms. Die mög- System enden kann. sich aber nicht in scheinbarer Sicherheit wiegen. lichen Optionen sind selbsterklärend und gut Sicherheit ist ein steter und komplizierter Pro- voreingestellt. Die CD ist zeitlich befristet lizen- Aufgrund der häufig aktualisierten CD-Abbilder zess, in dem diese CDs nur einen Teilschritt dar- ziert, der Zeitraum verlängert sich aber durch mit jeweils den neusten Versionen von Scanner- stellen. Zusätzlich sollten weitere mögliche Feh- Herunterladen der häufig erneuerten aktuellen Engine und Virendatenbank empfiehlt es sich die lerquellen ausgeschlossen werden: Wechselda- Version. Eine Unterstützung für cryptsetup fehlt. ISO-Dateien erst bei Bedarf herunterzuladen und tenträger wie CDs und USB-Sticks legt man un- TrueCrypt ist aufgrund fehlender Systembiblio- auf wiederbeschreibbare Rohlinge (RW) zu bren- ter Windows per Druck auf die Umschalt -Taste theken nicht direkt lauffähig. Von einem instal- nen, um erhöhtem „Silberschrott“ vorzubeugen. ein und hält diese bis zum Beenden der Daten-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 26 SICHERHEIT

trägerindexierung fest. Das deaktiviert die soge- [6] http://wiki.ubuntuusers.de/Archiv/TrueCrypt [26] http://www.freiesmagazin.de/freiesMagazin-2011- nannte Autorun-Funktion, die sich zur automati- [7] http://www.griessler.org/sudo-su-vs-sudo-bash- 03 schen Infektion von Windows-Rechnern „zweck- vs-sudo-i.php entfremden“ lässt. Anschließend „öffnet“ man [8] http://www.heise.de/ct/ Autoreninformation den Datenträger per rechter Maustaste statt ihn [9] https://secure.wikimedia.org/wikipedia/de/wiki/ zu „starten“, da sonst die Autorun-Funktion nach- Desinfec’t Bodo Schmitz (Webseite) hat durch träglich ausgeführt würde. Wechseldatenträger [10] http://uckanleitungen.de/rootkit-scanner-linux/ seinen Beruf, Zugriff auf eine Vielzahl sollten generell auf Viren überprüft werden – [11] http://dl.antivir.de/down/vdf/rescuecd/rescuecd. vireninfizierter Windows-PCs und auch diejenigen von guten Freunden! iso dadurch die Erkenntnis gewonnen, Das System sollte sicherheitsbewusst konfi- [12] http://download.bitdefender.com/rescue_cd/ dass man den Scan-Ergebnissen bitdefender-rescue-cd.iso guriert werden, denn Sicherheit geht immer innerhalb eines bereits infizierten vor Komfort. Die eingesetzten Browser sollten [13] http://wiki.ubuntuusers.de/Karmic_Koala Systems nicht wirklich trauen kann. durch Erweiterungen abgedichtet werden (sie- [14] http://www.f-secure.com/linux-weblog/2009/09/ he z. B. „Gesunde Datenkekse backen – Fire- 22/rescue-cd-311/ fox mit Erweiterungen absichern“ freiesMagazin [15] http://www.f-secure.com/en_EMEA-Labs/ 03/2011 [26]). security-threats/tools/rescue-cd Diesen Artikel kommentieren [16] https://secure.wikimedia.org/wikipedia/de/wiki/ Im Übrigen sind die hier beschriebenen CDs al- Master_Boot_Record lesamt kostenlos erhältlich, was auch die Linux- [17] http://devbuilds.kaspersky-labs.com/devbuilds/ Anwender freuen dürfte. Daneben sind die Live- RescueDisk10/kav_rescue_10.iso CDs hilfreich, dass man nicht unbemerkt ver- [18] https://secure.wikimedia.org/wikipedia/de/wiki/ seuchte Dateien weiter an Dritte gibt und so mög- UnionFS licherweise deren Rechner infiziert, selst wenn [19] https://secure.wikimedia.org/wikipedia/de/wiki/ der eigene (Linux-)Rechner nicht befallen ist. Aufs [20] http://volatileminds.net/node/6/release LINKS [21] http://www.pandasecurity.com/resources/tools/ [1] https://secure.wikimedia.org/wikipedia/de/wiki/ SafeCD.iso NTFS-3G [22] http://www.pandasecurity.com/resources/sop/ [2] http://unetbootin.sourceforge.net/ SafeCD/PandaSafeCD.iso [3] https://secure.wikimedia.org/wikipedia/de/wiki/ [23] http://www.pctools.com/aoss/details/ Dm-crypt [24] http://anti-virus.by/pub/vbarescue.iso [4] http://www.finnix.org/ [25] https://secure.wikimedia.org/wikipedia/de/wiki/ „Keynote“ © by Randall Munroe [5] http://www.truecrypt.org/ Pre-Boot_Authentication (CC-BY-NC-2.5), http://xkcd.com/527

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 27 SPIELE

Ryzom – Das freie MMORPG von Mirko Lindner

ereits 2005 öffnete mit „The Saga of Ry- denn nur wenige Monate zuvor hatte NCSoft mit Bereits am 5. April 2005 war Ryzom deshalb ver- zom“ ein Online-Rollenspiel der etwas „Lineage II“ [4] den Nachfolger des MMORPG- meintlich Geschichte, denn der französische Her- B anderen Art seine Pforten. Statt Orks, Pioniers in Westeuropa veröffentlicht. Fast zeit- steller Nevrax stellte einen Antrag auf Gläubiger- Elfen, Goblins oder Drachen erwartete den gleich mit der Freigabe von „The Saga of Ryzom“ schutz. Am 9. August 2005 bestätigte die Ge- Spieler der Zauber einer neuen Welt, mit ei- stellte auch der MMORPG-Veteran Sony Online meinschaftsvertreterin des Unternehmens, dass genen Gesetzen, Regeln, einem ausgeklügel- Entertainment (SoE) mit „Everquest II“ [5] einen dem Hersteller aufgrund von Neuerungen im ten Fertigkeiten- und innovativen Kampfsys- Nachfolger des bisherigen Branchenprimus vor Spiel ein Aufschub bis Ende 2006 gewährt wur- tem. Mittlerweile im Quellcode unter den Be- und nur zwei Monate später sollte Blizzard mit de. Doch Ende 2006 gingen bei Ryzom tatsäch- dingungen der AGPLv3 verfügbar und auch „World of Warcraft“ [6] das Genre förmlich aus lich die Lichter aus. Zugleich startete auch ei- für Linux freigegeben, ist es auch für die Nut- seiner Nische herauskatapultieren. ne Gruppe ehemaliger Nevrax-Angestellter und zer des offenen Betriebssystems interessant. Mitglieder der Gemein- Doch taugt das Spiel etwas und wenn ja, schaft, unterstützt von warum ist es nicht weiter verbreitet? der FSF, eine Initiati- ve [7], das Spiel ähn- Redaktioneller Hinweis: Der Artikel „Ryzom – lich Blender [8] aufzukau- Das freie MMORPG“ erschien erstmals bei Pro- fen und es unter eine Linux [1]. freie Lizenz zu stellen. Die Engine NeL, auf der Eine lange Geschichte Ryzom aufbaute, stand Ryzom [2], früher unter dem Namen „The Sa- schon seit Anfang 2000 ga of Ryzom“ bekannt, stellt ein Massively Multi- unter den Bedingungen player Online Role-Playing Game (MMORPG [3]) der GNU GPL [9]. für diverse Betriebssysteme dar. Die Handlung spielt etliche Jahre in der Zukunft und bein- Doch auch als der Ver- haltet sowohl Science-Fiction- als auch diverse such scheiterte und Ry- Fantasy-Elemente, die in einer komplexen Ge- zom zum ersten Mal schichte verpackt wurden. im Dezember 2006 den Eigentümer wechselte, Das Spiel wird bereits seit dem Jahr 2000 ent- waren die Turbulenzen wickelt und erblickte im September 2004 das nicht vorbei. Denn auch Licht der Welt. Rückwirkend betrachtet konnte der neue Rechteinhaber, der Hersteller allerdings kaum einen schlech- die Gameforge AG aus teren Zeitpunkt für eine Freigabe auswählen, Das freie MMORPG Ryzom. Karlsruhe, die mit ihrer

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 28 SPIELE

Spiel der Natur: Herbst, ...... Frühling, ...... und die Nacht. neuen Tochterfirma das Spiel vermarkten lassen Client für Linux [13], der auf Grundlage der Frei- sieht Ryzom auch Jahre nach seiner Freigabe wollte, wurde mit Ryzom nicht glücklich. Nicht gabe mit Unterstützung der Foun- nicht nur für ein MMORPG gut aus, sondern bie- einmal ein Jahr später musste auch Gameforge dation [14] entwickelt wurde. tet Funktionen, die in diesem Genre nicht selbst- France SARL Insolvenz anmelden. Ryzom hörte verständlich sind. So unterliegt die komplette auf zu existieren. Klassensystem und Fertigkeiten Welt dem Spiel der Naturkräfte. Neben Tag- und Ryzom spielt in der Fantasywelt Atys, die von Nachtphasen wechseln auch die Jahreszeiten. Mitte 2008 mehrten sich allerdings zunehmend vier verschiedenen humanoiden Völkern, auch Die Bäume erblühen im Frühling und im Herbst Anzeichen, dass das Spiel reanimiert werden Homins genannt, bewohnt wird. Dem gegenüber versinkt Ryzom an manchen Tagen im Regen. könnte. Nachdem im Juni 2008 die Foren frei- stehen zwei weitere Fraktionen: Die Kami, magi- geschaltet wurden, öffnete der neue Eigentümer, sche Naturgeister, und die Karavan, ein Volk von Eine mächtige KI lässt die Flora und Fauna dy- die Winch Gate Properties, auch die Server. Im hochtechnisierten Kriegern aus den Tiefen des namisch miteinander interagieren. So ziehen Mai 2010 wurde Ryzom schlussendlich auch im Alls. Das Spiel vereint Fantasy und Science Fic- Herden im Rhythmus der Jahreszeiten umher. Quellcode geöffnet [10] und unter die Bedingun- tion mit einer komplexen Hintergrundgeschichte, Pflanzenfresser kommen neugierig zum Spieler, gen der GNU Affero General Public License Ver- die hier zu erklären den Rahmen sprengen wür- folgen ihm oder flüchten instinktiv. Fleischfresser sion 3 (AGPLv3 [11]) gestellt. Die insgesamt über de. Der Spieler erkundet dabei die Welt in einer jagen dagegen aktiv ihre Beute, die wahlweise 13 GB umfassenden Grafiken, Modelle und Tex- Beobachter- oder Ich-Perspektive. aus Pflanzenfressern oder den Spielern beste- turen wurde dagegen unter die Creative Com- hen kann. Gegner greifen, je nach Art, alleine mons Attribution-Share Alike 3.0 Lizenz (CC-BY- Das Besondere an Ryzoms Welt ist ihr De- oder in Horden an und folgen dem Spieler je SA 3.0 [12]) gestellt. Ende 2010 folgte ein nativer tailreichtum. Dank einer ausgeklügelten Engine nach Aggressivität auch über längere Distanzen.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 29 SPIELE

Wilde Tiere durchstreifen zudem die Welt. er diese. Dies hat den Vorteil, dass sich die Wo noch vorhin eine vermeintlich sichere Klasse automatisch der Spielweise anpasst. Ist Stelle war, kann schon bald ein Gegner- ein Spieler beispielsweise überwiegend damit be- Lager sein. schäftigt, andere Spieler zu heilen, wird er Punk- te in Magie sammeln und sich im Laufe der Zeit Eine Besonderheit von Ryzom ist die ho- immer mehr Richtung defensivem Magiekampf rizontale Ausrichtung des Spiels. Sprin- verschieben, bis er schlussendlich ein Heiler wird. gen kann man in der Welt genauso wenig Dasselbe Prinzip funktioniert auch mit den klassi- wie sich von Gebäuden oder steilen Ab- schen Kämpferklassen. Wählt der Spieler am An- hängen fallen lassen oder klettern. Das fang den Weg des Kämpfers, wird irgendwann für Schwimmen erfolgt ausschließlich ober- ihn die Entscheidung getroffen, ob er Nah- oder halb der Wasseroberfläche. Spieler, die Fernkampf bevorzugt. Spielt er weiterhin nur im in anderen Titeln von Klippen herunter- Nahkampf, wird irgendwann unterschieden, ob gefallen sind oder gar durch Fallschaden er in Einhand- und Zweihandwaffen aufsteigt, ge- starben, werden sich womöglich anfäng- folgt von den Waffengattungen und so weiter. lich freuen. Spätestens aber, wenn man einen Umweg machen muss, weil ein Je nach Situation: Magier . . . Entscheidet sich der Spieler zu einem späteren Ort nicht durch einen gekonnten Sprung Zeitpunkt, dass ihm beispielsweise der Schwert- über eine Wurzel erreicht werden kann, kampf nicht zusagt, braucht er nicht seinen Cha- ist die Freude getrübt. rakter zu löschen oder seine Fertigkeiten zu ver- gessen, sondern kann einfach nur seinen Kampf- Das Klassensystem stil umstellen und fortan Fertigkeiten in seiner Ein Klassensystem, wie beispielsweise neuen Richtung sammeln. Des Weiteren ist es in „Everquest“ [15] oder „World of War- möglich, mit ein und demselben Charakter in ei- craft“, gibt es in Ryzom nicht. Beginnen- ner Gruppe verschiedene Positionen einzuneh- de Charaktere haben, von geringen Un- men. Wird beispielsweise ein Heiler benötigt, terschieden abgesehen, anfänglich die- kann ein Magier diesen Platz einnehmen. Und selben Voraussetzungen. Jede der insge- wenn dem Spieler danach ist, kann er noch ein samt vier Startrassen oder Berufe hat ei- Handwerk betreiben und sich selbst Waffen oder gene Talente und Fertigkeitspunkte, die Rüstungen bauen. unabhängig voneinander entwickelt wer- den. Zu den Hauptkategorien gehören Der Vorteil des Systems ist, dass es nahezu voll- Kämpfer, Magier, Handwerker und Roh- ständig rollenspielgerecht aufgebaut ist. Das Sys- stoffsammler. Hat ein Spieler in einer der tem ermöglicht extrem viele Variationen und be- . . . oder Kämpfer. Kategorien Punkte gesammelt, steigert dient fast jeden Geschmack. Anderseits limitiert

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 30 SPIELE es aber den Spieler, da es kaum Spezialklas- sen jenseits eines Magiers und eines Kämpfers ermöglicht. Ein aus den Dungeons & Dragons- Spielen [16] bekannter Barde ist damit schlicht nicht machbar. Die Fertigkeiten Das Fertigkeitensystem in Ryzom basiert auf so genannten Stanzas. Im Gegensatz zu statischen Fähigkeiten, wie sie nahezu in jedem MMO an- zutreffen sind, beinhaltet Ryzom ein anpassba- res System, das sich von dem Spieler nahezu unendlich umbauen und in die eigene Spielwei- se übertragen lässt. Denn jede Fertigkeit besteht aus mehreren Komponenten. Vereinfacht gese- hen sind es drei: eine Basiskomponente, die die Art der Fertigkeit beschreibt, eine Wirkkompo- nente, die die Aktion durchführt und eine Kre- ditkomponente als Gegengewicht. Ein Heilzau- ber besteht demnach aus der Basiskomponente „Zauber“, der Aktionskomponente „Heilen“ und ei- nem Kredit, der besagt, dass er eine bestimm- te Zahl an Mana verbraucht und eine bestimmte Zeit zum Zaubern braucht.

Will der Spieler nun, dass sein Heilzauber schnel- ler gezaubert wird, kann er ihn mühelos umbau- en. Dazu muss er nur einen neuen Zauber er- stellen, der dieselben Komponenten wie Heilen enthält, und anstatt „Zeit“ eine der anderen Kre- Die Anatomie eines Zauberspruchs in Ryzom. ditkomponenten einbinden. Diese wäre beispiels- weise mehr Mana oder eine Reichweitenreduk- Was recht kompliziert aussieht, erweist sich in eigene Spielweise anpassen. Eine Heilbombe, tion des Zauberspruchs. Wichtig ist nur, dass der Praxis als extrem intuitiv und mächtig. Mit gepaart mit einem Manaspender gefällig? Ein- der als Aktion verbrauchte Kredit wieder ausge- den erworbenen Stanzas lassen sich die viel- fach die benötigten Stanzas integrieren und als glichen wird. fältigsten Zaubersprüche erstellen oder an die Gegengewicht Kreditkomponenten einbinden.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 31 SPIELE

Dasselbe funktioniert nicht nur beim Zaubern, Rezepte vor allem in den Anfängen von Ryzom Ausrüstung fallen lassen können, hat natürlich sondern auch bei Krieger-, Handwerk- oder Sam- von ihren Entdeckern unter Verschluss gehalten, die Herstellung von Gegenständen und das Sam- melberufen. Alle Aktionen sind nach demselben oder für teures Geld an andere Spieler verkauft meln einen hohen Stellenwert. Im Gegensatz zu Prinzip der Stanzas aufgebaut und lassen sich wurden. Erschwerend kommt noch hinzu, dass anderen Spielen ist das sogenannte „Crafting“ nach den eigenen Vorlieben anpassen. manche Gegenstände besonders begehrte Res- deshalb keine brotlose Kunst, sondern eine Tätig- sourcen benötigen die nur von extrem schweren keit, die durchaus Sinn ergibt und Profit bringen Handwerk und Sammeln Gegnern beim Ableben fallen gelassen werden. kann. Das Handwerk und das Sammeln stellen, wie eingangs erwähnt, eigene Berufe dar, die unab- Quests hängig vom Charakter entwickelt werden können. Die ersten Erfahrun- Wer erfolgreich auf diesen Gebieten werden will, gen, die neue Spieler muss deshalb genauso üben und seine Fertigkei- in Ryzom machen, er- ten stetig verbessern. Dies geschieht durch das strecken sich über die Aufsammeln von Ressourcen oder durch das Er- Insel Silan. Dort an- stellen von Gegenständen. gekommen erhalten Während das Sammeln von Ressourcen sich Spieler eine ausführli- auf das Auffinden und das Ernten beschränkt, che Einführung in die stellt das Herstellen beinahe eine eigene Wissen- Welt in Form zahlrei- schaft im Spiel dar, mit der sich Tage verbrin- cher Quests. In diver- gen lassen. Die eigentliche Herstellung erfolgt sen kleineren und grö- wie der Kampf oder das Aufsammeln über diver- ßeren Aufgaben müs- se Stanzas. Durch das Hinzufügen von zusätzli- sen die Flora und Fau- chen Stanzas lassen sich beispielsweise Zusatz- na dezimiert, Räuber funktionen in die Kleidung einweben. Weit mehr ausgeschaltet, fiese bringt es aber, qualitativ hochwertige Werkstoffe Übermonster ausge- zu benutzen. Diese können entweder durch das löscht oder aber di- Sammeln gewonnen oder in den Kadavern von verse Materialien ge- Monstern gefunden werden. Je wertvoller die ver- sammelt und verschie- brauchten Ressourcen, desto besser die herge- denste Gegenstän- stellte Komponente. Hinzu kommt, dass bestimm- Das anspruchsvolle Handwerk gleicht einem Minispiel. de hergestellt werden. te Ressourcen in der Summe eine besondere Doch das war’s schon, Komponente zu Folge haben können. Dies zu Da in Ryzom fast sämtliche Ausrüstung von Spie- denn das Startgebiet vermittelt einen falschen finden dauert nicht nur, sondern kann mitunter lern hergestellt wird und lediglich die Länderbos- Eindruck über Ryzom und täuscht dem Spieler auch extrem teuer werden, weshalb viele seltene se in High-Level-Bereichen im geringen Umfang etwas vor, was es nicht halten kann.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 32 SPIELE

Wer der Jagd nach Gegenständen in Instanzen oder durch Quests nacheifert, wird das Konzept von Ryzom mit großer Wahrscheinlichkeit has- sen. Rollenspielinteressenten werden es wohl mögen. Alle anderen müssen für sich selbst ent- scheiden, ob sie mittels Quests durch eine Welt geführt werden wollen oder lieber auf eigene Faust die Welt erkunden möchten. Eins bleibt al- lerdings klar: Der Grat zwischen einem Sandkas- tenspiel und so genannten „Asia-Grinder“ [18] ist sehr schmal und kann mitunter ziemlich flott über- schritten werden. Die Gemeinschaft und die Kosten Es wird behauptet, Ryzom hätte eine der reif- sten und nettesten Gemeinschaften. Ob das stimmt, kann man nur schwerlich beurteilen, denn oftmals wird als Referenz ein bestimmter Branchenprimus herangezogen, dessen Gemein- schaft sich nicht wirklich durch ihre Nettigkeit aus- zeichnet. Fakt ist allerdings, dass die Gemein- schaft von Ryzom sehr erwachsen wirkt, sich ge- genseitig respektiert und durchaus einer geson- derten Erwähnung bedarf. Überwiegend freundli- cher, höchstens mürrischer Umgangston, ist die gängige Praxis. Die Gemeinschaft von Ryzom ist zwar nicht übermenschlich, doch sicherlich ge- Ein Charakter wird geboren. hört sie zu den nettesten und freundlichsten, die man in diesem Genre findet. Das Spiel unterscheidet sich massiv von PvE- genannt, ergeben sich in dem Spiel aus verschie- Titeln (Player versus Environment) wie „Ever- densten Situationen. Mal werden sie direkt von Ryzom stellt ein freies Spiel im Sinne der FSF quest 2“, „Herr der Ringe Online“ [17] oder „World Spielern erstellt, mal von einem Event-Team oder dar. Die Quellen des Clients und des Servers of Warcraft“. Sieht man von einer überschauba- ergeben sich aus einer Situation oder einer Missi- sowie die kompletten Grafik- und Musikdaten ren Anzahl an Spezialquests ab, ist Ryzom ein on. Neue Quests können von Spielern selbst mit- des Spiels sind unter einer freien Lizenz verfüg- Sandkastenspiel. Die Aufgaben, auch Quests tels eines Editors erstellt werden. bar [19]. Dementsprechend kann das Spiel auch

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 33 SPIELE von jedem verändert, angepasst oder verbessert Selbstverständlich hat auch Ryzom seine Schwä- [8] http://www.pro-linux.de/news/1/4682/blender- werden. Die Entwicklung selbst findet auf einer chen. Das Inventarsystem sucht zweifelsohne endgueltig-frei.html eigens eingerichteten Seite statt und wird von ei- seinesgleichen, was Umständlichkeit anbetrifft. [9] http://www.gnu.org/licenses/lgpl.html nem Core-Team koordiniert. Auch die Limitierungen der Spielwelt in der Ho- [10] http://www.pro-linux.de/news/1/15649/rollenspiel- rizontalen sind anfänglich befremdlich – vorbei ryzom-wird-freie-software.html Um die Fantasy-Welt zu betreten, muss eine mo- scheinen die Zeiten von Fallschaden zu sein. [11] http://www.gnu.org/licenses/agpl.html natliche Gebühr an den Betreiber der Server ent- Doch gravierende Probleme sind bei Ryzom [12] http://creativecommons.org/licenses/by-sa/3.0/ richtet werden. Ein Monatsabonnement kostet nicht wirklich vorhanden. de/ 7,95 Euro, ein dreimonatiges 7,50 Euro pro Mo- [13] http://www.pro-linux.de/news/1/16458/linux- nat und ein sechsmonatiges 6,99 Euro pro Mo- Ein abschließendes Urteil über Ryzom fällt des- client-fuer-ryzom-vorgestellt.html nat. Wer sich gar für ein Jahr bindet, zahlt 6,50 halb extrem schwer. Einerseits brilliert das Spiel [14] http://www.fsf.org/ Euro pro Monat. Es gibt aber auch einen zeitlich durch zahlreiche Ideen, eine epische Welt, eine nicht limitierten Probeaccount bis Level 125. Die gute Grafik und zahlreiche Besonderheiten. An- [15] http://www.everquest.com/ Bezahlung erfolgt über Bibit oder PayByCash. derseits aber ist es in manchen Gebieten so leer, [16] http://www.ddo.com/ dass es kaum Spaß macht – denn nichts ist trost- [17] http://www.lotro.com/?lang=de& Fazit loser als ein leeres MMORPG. Nichtsdestotrotz [18] https://secure.wikimedia.org/wikipedia/de/wiki/ Kaum ein Spiel hat während seines Bestehens lohnt es sich, einen Blick in Ryzom zu werfen. MMORPG-Jargon solch heftige Turbulenzen überstehen müssen Das faire Accountsystem erlaubt es jedem, einen [19] http://sourceforge.net/projects/ryzom/files/ryzom_ wie Ryzom. Während das Spiel sowohl technisch nicht limitierten Testaccount anzulegen und kos- client.7z/download als auch spielerisch durchaus überzeugen kann, tenlos in die Welt von Ryzom einzutauchen. Mit krankt es aber an zu geringen Spielerzahlen. knapp acht Euro Monatsgebühr gehört das Spiel zudem auch in der regulären Phase zu den güns- Autoreninformation Ironischerweise sticht aber gerade Ryzom aus tigeren Vertretern des Genres. der Masse von „Free to Play“- und „Pay to Play“- Mirko Lindner (Webseite) befasst LINKS sich seit 1990 mit Unix. Seit 1998 ist MMORPGs wohltuend heraus. Wie auch diverse Bewertungen des Spiels auf einschlägigen Sei- [1] http://www.pro-linux.de/artikel/2/1494/ryzom-das- er aktiv in die Entwicklung des Kernels ten bestätigen, ist Ryzom ein vollkommen un- freie-mmorpg.html eingebunden und verantwortlich für terbewerteter Rohdiamant des Genres. Es ist [2] http://www.ryzom.de/de/ diverse Treiber und Subsysteme für schwer, das Spiel nicht gut zu finden. Dazu bie- [3] https://secure.wikimedia.org/wikipedia/de/wiki/ Linux und andere freie Plattformen. tet es schlicht zu viele Funktionen. Das Kampf- MMORPG Daneben ist er einer der Betreiber system ist durchdacht, das Handwerkssystem [4] http://www.lineage2.com/ von Pro-Linux.de. gleicht einem Minispiel. Die wohl größte Stärke [5] http://www.everquest2.com/ von Ryzom ist aber das Level- und Fertigkeiten- [6] http://eu.battle.net/wow/de/ system. Selten bot ein MMORPG eine solche [7] http://www.pro-linux.de/news/1/10545/the-saga- Diesen Artikel kommentieren Freiheit bei der Gestaltung des Charakters. of-ryzom-soll-frei-werden.html

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 34 CRM

Zehn Jahre Warenwirtschaft C.U.O.N. von Jürgen Hamel

as C.U.O.N.-System [1] sowie der Download. Schon bald wurde die Idee des Ap- Wo ist das Projekt heute? Client pyCuon stellen eine Suite zur plikationsservers als innovativer empfunden und Jetzt, im zehnten Jahr, wird C.U.O.N. immer noch D Auftragsbearbeitung, Warenwirtschaft so wurde Zope [5] als Applikationsserver und weiter entwickelt. Es hat Module für Gärtnereien, und allgemeinen Datenverwaltung dar. Außer- das leistungsfähigere Postgresql [6] als Daten- besitzt ein DMS (Document Management Sys- dem beinhaltet diese ein Dokument Manage- bankserver gewählt. Auch erschien Python als tem), eine Projektverwaltung und viele andere ment System (DMS). Das komplette System die besser geeignete Sprache für C.U.O.N. und Module. steht unter der GNU General Public License es wurde entsprechend umgestellt. Nach viel Daneben gibt eine Unterstützung von vielen Per- v3 [2]. Gerade das DMS kann sehr vielseitig zu großen Problemen mit Zope wurde der Ap- sonen, die das Programm testen und ohne de- angewendet werden. Als neuestes C.U.O.N.- plikationsserver durch das sehr stabile Python- ren Anregungen, Fehlerberichte und Engage- Modul wird in diesem Artikel die Support- Twisted-Framework [7] realisiert. C.U.O.N. wuchs ment C.U.O.N. in der jetzigen Form nicht existie- ticketverwaltung vorgestellt. rasch weiter, es wurde eine stabile Client/Server- ren würde. Struktur angelegt. Vorwort Vor 10 Jahren sah die Situation in der Desktop- Inzwischen gibt es Installer für Linux-Welt noch nicht so rosig aus. Der Desktop alle gängigen Distributionen im lief zwar schon recht nett, aber alles in allem war DEB- und RPM-Format sowie das noch sehr holprig. GNOME 1.4 stand vor der ein standardisiertes TGZ-Paket Tür und KDE war als Version 1.1 verfügbar. Da- zum Download auf den C.U.O.N.- mals hatte sich ein Programmierer überlegt, viel- Projektseiten [10]. Ebenfalls exis- leicht ein kleines Programm zu schreiben, das tiert jetzt ein VirtualBox-Image im die Rechnungen verwaltet. Und jetzt nach zehn Download-Bereich [11], in dem Jahren ist aus dem Progrämmchen ein umfang- ein komplettes C.U.O.N. mit Client reiches Client/Server-Programm geworden. und Server eingerichtet ist. Die Geschichte Der Anfang Die Zukunft Am Anfang der Entwicklung wurde C++ als Pro- Die C.U.O.N.-Module. Für die nächsten zwei Jahre stehen eine kom- grammiersprache und MySQL als Datenbank plette Überarbeitung des Rechnungswesens so- genutzt. Das Projekt wurde 2001 bei Source- Zur Vorschichte kann man auch die Arti- wie ein GUI-Frontend für den Reportgenerator Forge [3] angemeldet, das Versionskontrollsys- kel „C.U.O.N. im täglichen Büroeinsatz“ aus an. Ebenso wird versucht, den C.U.O.N.-Client tem CVS (Concurrent Version System) und spä- freiesMagazin 03/2008 [8] und „C.U.O.N. und für Windows auf einem USB-Stick zum Funktio- ter SVN (Subversion) [4] eingerichtet und am mobile Dienste“ aus freiesMagazin 07/2009 [9] nieren zu bewegen, unter Linux ist die Client- 7.1.2002 erschien das erste Release 0.01 zum zu Rate ziehen. Installation kein Problem.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 35 CRM

Hauptsächlich das E-Mail-dms-Modul und die  Adresse suchen und zum DMS gehen, mens „AUTOMATIC_CUON“ anlegen und mit Fil- neue Supportticketverwaltung werden im ersten  Text und jeden Anhang ins DMS einfügen, terregeln oder manuell E-Mails in diesen Ordner Halbjahr 2011 Vorrang haben und sollen hier vor- kopieren. Selbstverständlich kann auch der Sys-  zu jedem Eintrag eine kurze Zusammenfas- gestellt werden. sung abspeichern. temadministrator die E-Mails mit procmail oder sieve einsortieren. E-Mails effektiv archivieren Machbar, aber zeitaufwendig! Das E-Mail-Problem C.U.O.N. schaut regelmäßig jede halbe Stunde E-Mails sind heute aus dem Unternehmensein- in diesem Ordner nach satz nicht mehr wegzudenken. Mit dem IMAP- und erfasst die darin lie- Protokoll [12] wurden auch einige entscheiden- genden E-Mails. Anhand de Verbesserungen gegenüber POP3 [13] erzielt. der E-Mail-Adresse wird Aber die typischen E-Mails werden in Lösungen die E-Mail automatisch von „alles in einem Ordner“ bis hin zu „500 ver- der korrespondierenden schiedene Ordner“ verwaltet – und zwar bei ver- Adresse oder dem Ge- schiedenen Benutzern. Das Wiederfinden einer sprächspartner zugeord- drei Jahre alten E-Mail endet meistens erfolglos. net, der E-Mail-Text und die Anhänge werden im E-Mail war als flüchtiges, schnelles Medium ge- DMS entsprechend abge- startet, aber es werden immer mehr wichtige Da- speichert. Zusätzlich wer- ten in Anhängen mitgeschickt. Das zu sortieren, den PDF, Texte, HTML zu pflegen und bei Bedarf auch abzurufen, ist ei- und OpenOffice.org- bzw. ne Heidenarbeit. Und erst das Suchen! Manch- LibreOffice-Dokumente mal ist man nicht einmal mehr sicher, welcher analysiert und ein Extrakt Mitarbeiter die E-Mail bekommen hat. für die Volltextsuche abge- E-Mails archivieren speichert. Natürlich kann C.U.O.N. verspricht jetzt Abhilfe. Mit dem dieser Extrakt anschlie- dms_IMAP-Modul gibt es eine effiziente Lösung Das DMS-Frontend mit E-Mail-Dokument. ßend überarbeitet oder – dieses Problems. Soll ein DMS erfolgreich sein, z. B. bei Bildern – komplett muss die Pflege stark vereinfacht und möglichst E-Mails automatisch archivieren selbst erstellt werden. mit wenig Zeitaufwand verbunden sein. Natürlich Mit der neuen Version von C.U.O.N. (ab Version konnte man schon vorher die E-Mails in C.U.O.N. 11.1.0) wird das wesentlich vereinfacht. Voraus- Mit diesem System sind alle Voraussetzungen archivieren, aber es war ein komplexer Prozess, setzung ist ein IMAP-E-Mail-Konto, welches aller- für eine vernünftige E-Mail-Speicherung und der in etwa so ablief: dings heutzutage zum Standard gehört. Für die -Nutzung gegeben. Kunden, Lieferanten und Anwendung muss man einfach in einem beliebi- andere Adressen-bezogene Vorgänge können  E-Mail-Text und alle Anhänge abspeichern, gen E-Mail-Programm einen neuen Ordner na- direkt im DMS nachvollzogen und müssen nicht

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 36 CRM

Bugreports direkt in sen. Damit ist es dann möglich, eine genaue C.U.O.N. bearbeitet wer- Übersicht über die Nacharbeitung zu bekom- den. men. Um die Projektverwaltung effektiver zu ge- stalten, ist geplant, bis zum Sommer 2011 ei- Die STV arbeitet eng mit ne Chart-Generierung einzubinden. Damit wären der Projektverwaltung zu- die Statistiken effektiver und in der Projektverwal- sammen. Natürlich gibt tung die Darstellung der Zeitabläufe als Gantt- es andere, sehr effektive Diagramm [14] möglich. Ticketverwaltungen, Bug- tracker usw. Aber ein Die Dateneingabe kann über das C.U.O.N.- Großteil dieser System Modul direkt oder über ein Webinterface erfolgen. konzentriert sich auf den Deshalb wurde die STV in zwei Bereiche unter- Softwarebereich und vie- teilt. le sind relativ isoliert zu Die STV als Modul sehen. In dem Modul wird die STV direkt in C.U.O.N. Mit der STV in C.U.O.N. als ganz normales Verwaltungsfenster eingebun- soll vor allem eine Ticket- den. Im ersten Tab kann das Projekt ausgewählt verwaltung geschafft wer- werden, im zweiten Tab werden die dazugehöri- den, die für eine Ma- gen Tickets angezeigt. Dieses Modul kann alle schinenfabrik genauso Vorgänge bearbeiten und hat Verbindung zu an- Das DMS mit E-Mail-Extrakt. gut geeignet ist wie für deren Modulen wie z. B. der Adress- oder Pro- über verschiedene Mitarbeiter zusammengetra- Software-Projekte. Und natürlich sollte eine Ver- jektverwaltung. So können dem Ticket nicht nur gen werden. Durch die Volltextsuche auf dem bindung zur Projektverwaltung bestehen, um z. B. eine Adresse und Gesprächspartner zugeordnet Extrakt-Eintrag sollte es möglich sein, jedes ge- eine Rechnung dafür zu schreiben, eine Nachkal- werden, sondern auch eine Projektphase mit ent- wünschte Dokument zu finden. Dies ist eine we- kulation durchzuführen oder einfach eine Über- sprechenden Projekttasks. Neben den normalen sentliche Erleichterung und auch noch nach Jah- sicht über den Aufwand der Nachbearbeitung Standardeingaben für ein Ticket ist hier aber zu- ren können die Dokumente schnell und einfach zu bekommen. Es kann ja durchaus passieren, sätzlich noch eine Verbindung zum DMS möglich. gefunden werden. dass eine Reklamation nicht in zwei Stunden Das bedeutet, dass alle relevanten Informationen erledigt ist, sondern dass eine schwierige und in der STV zusammenfließen. Die Supportticketverwaltung kostenintensive Nacharbeitung nötig ist. Das Webinterface Integration der STV in C.U.O.N. Projekt-Ressourcen erfassen Der zweite Bereich ist ein Webinterface, das C.U.O.N. hat als neuestes Modul jetzt ei- Es ist möglich, über die Projektverwaltung je- mit dem Bottle-Framework [15] aufgebaut wird ne Supportticketverwaltung (STV). Damit kön- weils geplante und realisierte personenbezoge- (siehe „Bottle – Ein WSGI-Microframework für nen Reklamationen und selbstverständlich auch ne aber auch reine Materialressourcen zu erfas- Python“, freiesMagazin 02/2011 [16]). Dieses in

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 37 CRM

Python geschriebene Framework DB-Cache und Replikationstool kann pgpool be- erlaubt es, schnell und effizient nutzt werden. mit Hilfe von Dekoratoren eine Die Applikationsserver Webanwendung zu konzipieren. Die Applikationsserver bestehen aus Python- Das Webinterface soll alle als Twisted-Web-Modulen und können in mehreren „public“ gekennzeichnete Projek- Instanzen auf verschiedenen Ports gestartet wer- te anzeigen und bearbeiten kön- den. Die XMLRPC-Server nehmen die Anfragen nen. Dies ist optional und muss entgegen, bearbeiten sie und senden sie zur Da- nicht gestartet bzw. benutzt wer- tenbank, zum Report-Server oder zum AI-Server den. Aus Sicherheitsgründen hat weiter. es keine Verbindung zu anderen Daten. Es wurde bewusst das XMLRPC-Format gewählt, da fast alle Programmiersprachen einen entspre- Der C.U.O.N.-eigene Webserver chenden Aufruf nutzen können. So ist es mög- kann also mit einer Weboberflä- lich, verschiedene Thin-Clients zu bilden, die nur che zur Ticketeingabe gestartet einen Teilbereich der Funktionen abbilden. Die Ticketverwaltung (Projektseite). werden – er muss es aber nicht. Wichtig ist außerdem die Kenn- Der Client zeichnung der Tickets in den Be- Der Client ist ebenfalls in Python geschrieben, reichen „PUBLIC“ und „NO PU- kann aber grundsätzlich auch in jeder anderen BLIC“. Das heißt, dass „NO PU- Sprache programmiert werden. Er ist für die Be- BLIC“-Vorgänge nicht im Web- nutzerinteraktion zuständig und informiert über interface abgebildet werden. Termine, Kontakte, Statistiken und liefert alle In- formationen, die benötigt werden. Dabei wurde Die Technik Programmlogik und GUI getrennt, sodass prinzi- Die Warenwirtschaft besteht im piell jede Firma und sogar jeder Benutzer eige- Wesentlichen aus drei Teilen. ne Masken benutzen kann, die mit Glade [18] erstellt werden. Die Benutzereingaben werden Der SQL-Server über XMLRPC zum Server gesendet. Als Datenbankserver wird Post- gresql benutzt, wobei derzeit 191 Eine wichtiges Ziel des Projektes war und ist es, Tabellen sowie 31 interne Funktio- einen möglichst schlanken Client zu programmie- nen (in PL/PGSQL [17] geschrie- ren. Deshalb wird versucht, immer mehr Funktio- ben) und Hunderte Trigger, Se- nalität in den XMLRPC-Server zu verlagern. Um Die Ticketverwaltung (Ticket Tab). quenzen usw. installiert sind. Als eine höhere Geschwindigkeit und einfachere Mo-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 38 CRM dule im Applikationsserver zu erreichen, werden Hilfe, Dokumentation, Installer und [8] http://www.freiesmagazin.de/freiesMagazin-2008- dort SQL-Abfragen als PL/PGSQL-Prozeduren Sourcen 03 in die Datenbank ausgelagert. Das hat den Vor- Hilfe ist natürlich immer willkommen, gerade im [9] http://www.freiesmagazin.de/freiesMagazin-2009- teil, das SQL-Operationen nicht nur schneller ab- Bereich XML, HTML und CSS, aber auch für Do- 07 laufen, sondern auch komplexer gestaltet werden kumentation (Docbook-Format) und Übersetzun- [10] http://cuon.org/Downloads/Download.html können. gen werden Helfer benötigt. Ein weites Betäti- [11] http://www.cuon.org/Downloads/VirtualBox.html Auch werden im Applikationsserver die aufwändi- gungsfeld bieten die alternativen Bildschirmmas- [12] https://secure.wikimedia.org/wikipedia/de/wiki/ geren Module verwendet, um den Client zu ent- ken, um C.U.O.N. ein variables, moderneres Aus- IMAP lasten und dort nur einfache Routinen zu benut- sehen zu verleihen. [13] https://secure.wikimedia.org/wikipedia/de/wiki/ POP3 zen. Als Beispiel dafür dient z. B. das Anzeigen Ein umfangreiches Handbuch mit dem einer Liste. Der Server bearbeitet die Anfrage, [14] https://secure.wikimedia.org/wikipedia/de/wiki/ Administrations-, Benutzer- und Beispielbeschrei- Gantt-Diagramm die Datenbank liefert die Ergebnisse und das bungen in Deutsch und Englisch ist auf der [15] http://bottlepy.org/ Report-Modul generiert daraus eine PDF-Datei. Projekt-Homepage [1] als PDF bzw. als HTML [16] http://www.freiesmagazin.de/freiesMagazin-2011- Diese PDF-Datei ist dann vom Client auf den vorhanden. meisten Endgeräten lesbar. 02 Ebenfalls stehen dort sowie auf Berlios [20] oder [17] http://www.postgresql.org/files/documentation/ Einsatzgebiete SourceForge [3] Downloadmöglichkeiten (Instal- books/pghandbuch/html/plpgsql.html C.U.O.N. wurde für den Einsatz im Unternehmen ler für Debian/Ubuntu, SuSE/Red Hat und TGZ [18] http://glade.gnome.org/ entworfen, dabei gilt für den Client allerdings im- als plattformunabhängiges Format) zur Verfü- [19] http://www.hylafax.org/ mer die Möglichkeit bzw. die Präferenz, als wirk- gung. Aktuelle Schnappschüsse kann man über [20] http://developer.berlios.de/projects/cuon/ same Unterstützung in der Tele-Arbeit zu die- das SVN von Berlios beziehen. nen. Der Client ist optimal an mobiles Arbeiten Auch ein komplett eingerichtetes C.U.O.N.- angepasst, alle Dokumente sind im DMS, die Autoreninformation System steht als VirtualBox-Image auf der Home- Verbindung über Intra- oder Internet Standard. page zum Download bereit [11]. Sogar Faxe können über den Firmenfaxserver Jürgen Hamel ist der Hauptent- (Hylafax [19]) von zu Hause oder von unterwegs LINKS wickler von C.U.O.N. Warenwirt- schaft und ist per E-Mail unter aus verschickt werden. [1] http://www.cuon.org/ cuon[AT]cyrus[DOT]de, per Jabber [2] http://www.gnu.org/licenses/gpl-3.0.html So wird das Programm in verschiedenen Berei- über jhamel[AT]cuonsim4[DOT]de [3] http://sourceforge.net/projects/cuon/ chen genutzt, von der Maschinenfabrik bis zum zu erreichen. Finanzdienstleister, im Büro, zu Hause auf dem [4] http://subversion.tigris.org/ Desktop oder mobil beim Kunden mit dem Note- [5] http://www.zope.de/ oder Netbook. Und die neuen mobilen Endgeräte [6] http://www.postgresql.org/ versprechen neue Einsatzgebiete. [7] http://twistedmatrix.com/ Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 39 REZENSION

Rezension: Coding for Fun mit Python von Jochen Schnelle

ält man das Buch „Coding for Fun schließlich auf die in Python enthaltenen Stan- che ähnlich gelagerten Probleme man den Code mit Python“ in den Händen, weckt dardbibliotheken; lediglich bei der Programmie- auch anwenden könnte. Den Abschluss des Bu- H schon allein das Lesen des Co- rung des Webcrawlers wird auf BeautifulSoup [3], ches bildet ein Crash-Kurs zu OpenGL [5] sowie vers eine gewisse Erwartungshaltung. Sät- einen renommierten HTML/XML-Parser für Py- ein Kapitel zur Installation der erforderlichen Soft- ze wie „Der nächste Level für Python- thon, zurückgegriffen. Das Buch setzt durchgän- ware. Dem Buch liegt eine CD bei, die alle im Programmierer!“, „Spannende Programme gig auf Python 2. Hinweise zur Nutzung von Py- Buch entwickelten Programme sowie Python 2.6, verstehen und selbst entwickeln“ und „Py- thon 3 findet man kaum. die verwendeten Bibliotheken sowie die Entwick- thon neu entdecken: vom Klassiker bis Hi- lungsumgebung Eclipse und PyDev enthält. Alle Kapitel sind in sich abgeschlossen und bau- Tech!“ sind dort zu finden. en in keiner Weise aufeinander auf. Dies be- Das Buch setzt grundlegende Python- Die „Voraussetzungen“ für das Buch sind dabei deutet, dass man diese auch in einer beliebiger Kenntnisse voraus, ist also für reine Anfänger gut: Es handelt sich um die Weiterführung der Reihenfolge lesen kann. Sollte man sich für ein ungeeignet. Wer jedoch ein Grundverständnis „Coding for Fun“-Reihe, welche mit dem gleich- Thema überhaupt nicht interessieren, kann man in Bezug auf Klassen, Funktionen, Kontrollstruk- namigen Buch gestartet wurde (siehe „Rezensi- auch einfach ganze Kapitel überspringen. Das turen, die Python-Built-ins sowie die gängigen on: Coding for Fun – IT-Geschichte zum Nachpro- Schema des Aufbaus ist in allen Kapiteln gleich: String-, Listen- und Dictionary-Methoden hat, grammieren“, freiesMagazin 04/2009 [1].) Wei- Als erstes wird kurz in den Inhalt und das Ziel des der kann die Codebeispiele im Buch durchaus tere Titel dieser Reihe sind „Coding for Fun mit Kapitels eingeführt, dann folgt eine theoretische nachvollziehen. Eine Erläuterung zu Python an C++“ sowie „Coding for Fun mit C#“. Einführung in das Thema. Dies bedeutet, dass sich gibt es nicht. Werden externe Module wie die notwendigen Grundlagen zur programmier- PyGame verwendet, so werden deren Module Bunte Mischung technischen Umsetzung des Problems erklärt und Funktionen aber zumindest kurz erklärt. Das Python-Buch umfasst zwölf Kapitel, welche werden. Dabei kommen, wo notwendig, auch Dia- jeweils ein Thema bzw. eine Aufgabenstellung gramme oder Skizzen zum Einsatz, alles durch- Licht und Schatten enthalten, für die dann in Python eine Lösung weg in Graustufen gedruckt. An einigen Stellen Wirklich gut sind die grundlegenden Einführun- programmiert wird. Die Themen sind dabei recht wird zusätzlich noch ein wenig Historie einge- gen zu den verschiedenen Themen. Hier gelin- bunt gemischt: So findet man von der graphi- streut. Danach geht es an die eigentliche Pro- gen dem Autor durchweg kompakte, aber trotz- schen Darstellung einer Analoguhr über Web- grammierung, wobei alle Programme schrittwei- dem gut verständliche Erklärungen der Sach- crawler und Kryptographie bis hin zu Spielen wie se entwickelt werden. Bei umfangreicheren Pro- verhalte. Besonders zu erwähnen ist dabei das Snake und TicTacToe eine breite Themenvielfalt. grammen erfolgt teilweise im Laufe des Kapitels Kapitel zum Thema Kryptographie, welches Wie sich anhand der Aufgaben schon vermuten das Refactoring [4] des Codes, sodass dieser am geschickt einen Bogen von antiken Verschlüs- lässt, arbeitet ein Teil der Programme rein text- Ende „sauberer“ ist. Jedes Kapitel schließt damit, selungsmethoden wie der einfachen Buchsta- basiert. Andere haben eine graphische Darstel- dass der Autor des Buchs noch ein paar Tipps benverschiebung bis hin zu modernen und si- lung, wobei hier durchgehend PyGame [2] ver- und Anregungen gibt, wie das entwickelte Pro- cheren Verschlüsselungsmethoden wie der RSA- wendet wird. Ansonsten setzt das Buch fast aus- gramm sich noch erweitern ließe oder auf wel- Verschlüsselung schlägt. Im direkten Vergleich

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 40 REZENSION

Buchinformationen allerdings ist es so schwierig, gerade bei den län- Buches aus. Abgesehen davon ist es ja nicht das geren Programmen den Gesamtüberblick zu be- erklärte Ziel des Buches, explizit in diese Thema- Titel Coding for Fun mit Python Autor Lars Heppert halten, zumal es zu keinem Programm ein kom- tik einzuführen. Wer sich für das Buch interes- Verlag Galileo Computing 2010 plettes Listing gibt, was sich z. B. am Kapitelen- siert, sollte daher besser beim Buchhändler sei- Umfang 325 Seiten de angeboten hätte. Zwar sind alle Programme nes Vertrauens einen Blick hineinwerfen und prü- ISBN 978-3-8362-1513-8 auch auf der beiliegenden CD enthalten, aller- fen, ob man die darin enthaltenen Themen wirk- Preis 24,90 Euro dings möchte oder kann man nicht unbedingt im- lich spannend findet und Spaß daran hat, diese mer den Computer beim Lesen neben sich ste- mit Python zu programmieren und zu lösen. Wer dazu fallen die praktischen Umsetzungen in Py- hen haben. Etwas irritierend ist weiterhin, dass einen tieferen Einblick in Python und dessen Mo- thon leider etwas ab. Diese sind zwar grundsoli- im Anhang des Buchs die Installation von Eclipse dule bekommen möchte, der sollte sich vielleicht de und handwerklich gut umgesetzt – mehr aber und PyDev erklärt wird. Zwar empfiehlt der Autor besser nach einem anderen Buch umschauen. auch nicht. Der auf dem Cover angekündigte diese Entwicklungsumgebung, allerdings wird im LINKS gesamten Buch sonst überhaupt kein Bezug dar- „nächste Level“ wird des Öfteren nur schwerlich [1] http://www.freiesmagazin.de/freiesMagazin-2009- auf genommen, noch nicht einmal ansatzweise. erreicht. Wer die weiter oben bereits erwähnten 04 Insofern erschließt sich hier der Sinn nicht wirk- Kenntnisse besitzt, nutzt diese zur Umsetzung [2] http://www.pygame.org/ des Themas in ein Python-Programm. Neues ent- lich. [3] http://www.crummy.com/software/Beautiful deckt man dabei aber kaum. Überhaupt hat man Soup/ beim Lesen des Buchs immer wieder das Gefühl, Fazit [4] https://secure.wikimedia.org/wikipedia/de/wiki/ „Coding for Fun mit Python“ ist sicherlich kein dass Python hier auch nur Mittel zum Zweck ist. Refactoring Würden im Buch alle Programme z. B. in Perl aus- schlechtes Buch – allerdings auch kein aus- [5] http://www.opengl.org/ geführt und das Buch entsprechend „Coding for gesprochen gutes Python-Buch. Die Einleitung Fun mit Perl“ heißen – es würde nicht weiter auf- und grundlegenden Einführungen zu den ver- schiedenen Themen sind sehr gut, der Rest ist fallen. Insofern kann jeder, der eine Programmier- Autoreninformation sprache beherrscht, das Buch auch als Inspirati- dann eher „Durchschnitts-pythonisch“. Die Erwar- on für eine neue Programmieraufgabe nehmen, tungshaltung, die die Aussagen auf dem Cover Jochen Schnelle programmiert die theoretische Einführung lesen, den Python- wecken, hält das Buch nur mit Mühe ein. Ob man selber gerne (und fast ausschließlich) Teil weglassen und die Lösung dann in der Pro- nach der Lektüre des Buchs den nächsten Level in Python. Die Lektüre des Buches grammiersprache seiner Wahl umsetzen. der Python-Programmierung erreicht hat, hängt hat ihn leider nicht auf den nächsten dann auch primär von den eigenen Ansprüchen Level in Sachen Python gehoben. Alle Programme werden im Buch schrittweise und Zielen ab. Lediglich wer eine deutschsprachi- entwickelt, d. h. der Code ist auch „häppchenwei- ge Einführung in PyGame und OpenGL mit Py- se“ abgedruckt. Für das Verstehen von Funktio- thon sucht, könnte an dem Buch Gefallen finden, nen und Klassen ist dies sicherlich nicht verkehrt, allerdings macht dies nur ungefähr die Hälfte des Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 41 LESERBRIEFE

Leserbriefe

Für Leserbriefe steht unsere E-Mailadresse den Alltag in Unternehmen prüfen und man hät- ich bin überzeugt davon, dass sich so ein Pro- zur Verfügung – wir te einen Test, der über den freien Software- gramm finden lässt, Fehler gibt es immer. Dass freuen uns über Lob, Kritik und Anregungen zum Tellerrand hinwegsieht. Ich weiß, dass Open- die Fehler in ODF größer sind, liegt einzig am viel Magazin. Office.org schon in Unternehmen und Behörden komplexeren Format. An dieser Stelle möchten wir alle Leser ausdrücklich eingesetzt wird [. . . ] und ich weiß, was das Maga- zin sich zum Ziel gesetzt hat, aber in der Praxis Nun sind Sie folgender Aussage im Lead, die ja ermuntern, uns auch zu schreiben, was nicht so gut die Leitfrage darstellt, gar nicht weiter nachge- gefällt. Wir bekommen sehr viel Lob (was uns natür- spielt meistens die proprietäre und die freie Soft- ware nebenher und sogar miteinander. gangen: „Sprich, das Problem wie bei Microsoft lich freut), aber vor allem durch Kritik und neue Ideen Office, dass ein Dokument (auch bei gleicher MS- können wir uns verbessern. Ich habe die ODF-Dateien mal kurz getestet und Office-Version) auf jedem Rechner anders aus- Leserbriefe und Anmerkungen bin zum folgenden Ergebnis [gekommen]: Bloß sehen kann, gibt es angeblich nicht.“ das mit OpenOffice.org erstellte Dokument ist Wayland vertretbar, auch hier versagen die Exoten (MS Wir sind uns einig, dass von den zahlreichen ge- Wow, ein super Artikel! Wunderbar die Tech- wird es wahrscheinlich auch nur auf OOo opti- testeten Office-Suiten allein [Open|Libre]Office nik erklärt und gute Argumente für Wayland gelie- miert haben). Es werden Kopf und Fusszeile so- fähig ist, das ODF in vollem Umfang auszureizen. fert. Ich kann es kaum erwarten die ersten Ergeb- wie die Tabelle übernommen als auch die Feldbe- Um der These nachzugehen, müsste man somit nisse live zu sehen, auch wenn das wohl noch fehle Datum, Seite und Anzahl [der] Seiten. Op- nur verschiedene Versionen von OpenOffice.org etwas dauern wird. Ich wünsche den Wayland- tisch ist das Dokument absolut vertretbar. betrachten. Was dabei herauskommt, weiss ich Entwicklern viel Erfolg. Ich verspreche mir davon Spite (Kommentar) nicht, es wird aus dem Artikel auch nicht ersicht- auch einen Schub für Linux im Desktopbereich. lich. Gast (Kommentar) Jetzt müssen wir nur noch hoffen, dass AMD und Wir hätten die Kompatibilität mit Microsoft Offi- NVIDIA mitziehen und gute (und wenn möglich ce gerne getestet, aber haben keinerlei Exemplar Die These, dass ein Dokumentenstandard – Open Source) Treiber dafür liefern, denn ohne dieser Software zum Test vorliegen, vor allem kei- egal welcher – in verschiedenen Programmen performante und stabile Treiber hat man leider ne so neue Version. nicht immer gleich aussieht, ist eigentlich keine nichts gewonnen. :( Frieder (Kommentar) These, sondern kann man beinahe als Fakt ab- Vielen Dank daher für den Test, der hilft dem tun. Es gibt natürlich auch Ausnahmen, aber nur OpenDocument-Format im Test einen oder anderen Leser sicherlich weiter. selten beherrscht bei einem komplexen Format Der Bericht öffnet einem die Augen und ist er- Dominik Wagenführ ein Lese- oder Schreibprogramm alle Funktio- nüchternd. Was mir aber doch noch fehlt, sind nen. MS Office 07 und 10 (böses Word), denn die Ihre Argumentation lässt sich problemlos auf werden am meisten in Unternehmen und privat PDF adaptieren. Man sagt, PDF sei standardi- Gleiches gilt natürlich auch für PDF, welches genutzt. Da offiziell MS Office ab Version 2007 siert und sähe überall gleich aus. Sobald sich ein nicht immer überall gleich aussieht. Glücklicher- ODF unterstützt, wäre das noch interessant. Das Programm findet, bei dem mindestens ein Pixel weise hält sich das in Grenzen. Bei Yalm [1] würde zumindest OpenOffice.org/LibreOffice für anders gefärbt ist, wäre die These widerlegt. Und war es früher so, dass der PDF-Reader die

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 42 LESERBRIEFE falsche Schriftart oder -formatierung genommen lässigen, da man nur wenig Mehrwert erhalten Firefox mit Erweiterungen absichern hat. Aber wie Sie auch festgestellt haben, ist PDF würde. Sähe es gleich aus, wäre es gut und den- Danke für die hilfreiche Übersicht über Plug- etwas einfacher als ODF. Ich denke aber auch, noch gäbe es genügend andere Programme, die ins. Eine weitere nennenswerte Erweiterung ist dass es „besser“ standardisiert ist und schon län- es nicht gleich darstellen. Und gäbe es Unter- „Ghostery“ [2]. Diese zeigt an, welche Tracker ger existiert, weswegen die meisten PDF-Reader schiede zwischen der Darstellung beider Versio- auf Webseiten verwendet werden und erlaubt de- wenig Probleme haben. nen, wäre das nur ein weiteres Programm, was ren Blockierung. Zudem werden pixelgroße Gra- beim Test „durchgefallen ist”. fiken blockiert, die alternativ zu Cookies verwen- Die Leitfrage war darüber hinaus ja nicht, ob det werden, um das Surfverhalten zu verfolgen. die MS-Dokumente wirklich auf verschiedenen Also sicherheitshalber, falls es nicht klar im Arti- Gast (Kommentar) Rechnern immer anders aussehen (auf einem kel herausgekommen ist: Es sollte getestet wer- standardisierten Firmenrechner sehen sie in der den, ob ein ODF-Dokument, welches in Pro- LINKS Regel nämlich gleich aus), sondern ob es bei gramm A erstellt wurde, beim Öffnen mit Pro- [1] http://www.freiesmagazin.de/yalm ODF wirklich überall gleich ausschaut, egal wel- gramm B identisch (oder zumindest ähnlich) aus- [2] http://www.ghostery.com/ ches Programm man nutzt (was manch einer ger- sieht oder nicht. ne als Argument pro ODF anbringt). Und da war Die Redaktion behält sich vor, Leserbriefe gegebe- PS: Zur Aussage des Ausreizens bin ich das Resultat ja, dass das Dokument nicht zwin- nenfalls zu kürzen. Redaktionelle Ergänzungen fin- nicht ganz sicher. Der Funktionsumfang der gend gleich ausschauen muss. den sich in eckigen Klammern. SoftMaker-Suite sieht wirklich nicht schlecht aus Ob es da noch Unterschiede macht, dass das und kann u. U. OpenOffice.org das Wasser rei- Die Leserbriefe kommentieren ODF in OpenOffice.org 2.0 ggf. anders aussieht chen. (Das wurde aber nicht getestet.) als in OOo 2.3, denke ich, kann man vernach- Dominik Wagenführ

„Dark Flow“ © by Randall Munroe (CC-BY-NC-2.5), http://xkcd.com/502

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 43 MAGAZIN

Veranstaltungskalender Messen Veranstaltung Ort Datum Eintritt Link Linuxwochen Wien Wien 05.-07.05.2011 frei http://linuxwochen.at/ LinuxTag Berlin 11.-14.05.2011 18 EUR http://www.linuxtag.org/ LiWoLi 2011 Linz 12.-14.05.2011 frei http://linuxwochen.at/ Edu Days Krems 16.-18.05.2011 frei http://www.edudays.at/ Linuxwochen Eisenstadt Eisenstadt 20.-21.05.2011 frei http://linuxwochen.at/ „Ubuntu 11.04“-Releaseparty Berlin 21.05.2011 frei http://ubuntu-berlin.de/natty-release-party/ LUG Camp Tschierv 02.-05.06.2011 - http://2011.lug-camp.ch/ GPN11 Karlsruhe 23.-26.06.2011 - https://entropia.de/GPN11 (Alle Angaben ohne Gewähr!) Sie kennen eine Linux-Messe, welche noch nicht auf der Liste zu finden ist? Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an . Vorschau freiesMagazin erscheint immer am ersten Sonntag eines Monats. Die Juni-Ausgabe wird voraussichtlich am 5. Juni unter anderem mit folgenden Themen veröffentlicht:

 GNOME 3.0: Bruch mit Paradigmen

 UnrealIRC – gestern „Flurfunk“, heute „Chat“ Es kann leider vorkommen, dass wir aus internen Gründen angekündigte Artikel verschieben müssen. Wir bitten dafür um Verständnis. Konventionen An einigen Stellen benutzen wir Sonderzeichen mit einer bestimmten Bedeutung. Diese sind hier zusammengefasst: $: Shell-Prompt #: Prompt einer Root-Shell – Ubuntu-Nutzer können hier auch einfach in einer normalen Shell ein sudo vor die Befehle setzen. y: Kennzeichnet einen aus satztechnischen Gründen eingefügten Zeilenumbruch, der nicht eingegeben werden soll. ~: Abkürzung für das eigene Benutzerverzeichnis /home/BENUTZERNAME : Kennzeichnet einen Link, der auf eine englischsprachige Seite führt. : Öffnet eine höher aufgelöste Version der Abbildung in einem Browserfenster.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 44 MAGAZIN

Impressum ISSN 1867-7991 freiesMagazin erscheint als PDF und HTML einmal monatlich. Erscheinungsdatum: 1. Mai 2011

Kontakt Redaktion E-Mail Frank Brungräber Thorsten Schmidt Postanschrift freiesMagazin Dominik Wagenführ (Verantwortlicher Redakteur) c/o Dominik Wagenführ Beethovenstr. 9/1 Satz und Layout 71277 Rutesheim Ralf Damaschke Yannic Haupenthal Webpräsenz http://www.freiesmagazin.de/ Nico Maikowski Matthias Sitte

Autoren dieser Ausgabe Korrektur Stefan Bradl S. 10 Daniel Braun Stefan Fangmeier Jürgen Hamel S. 35 Mathias Menzer Karsten Schuldt Mirko Lindner S. 28 Stephan Walter Mathias Menzer S. 3, S. 5 Daniel Nögel S. 6 Veranstaltungen Bodo Schmitz S. 21 Ronny Fischer Jochen Schnelle S. 40 Dominik Wagenführ S. 14 Logo-Design Arne Weinberg (GNU FDL)

Dieses Magazin wurde mit LATEX erstellt. Mit vollem Namen gekennzeichnete Beiträge geben nicht notwendigerweise die Meinung der Redaktion wieder. Wenn Sie freiesMagazin ausdrucken möchten, dann denken Sie bitte an die Umwelt und drucken Sie nur im Notfall. Die Bäume werden es Ihnen danken. ;-)

Soweit nicht anders angegeben, stehen alle Artikel, Beiträge und Bilder in freiesMagazin unter der Creative-Commons-Lizenz CC-BY-SA 3.0 Unported. Das Copyright liegt beim jeweiligen Autor. freiesMagazin unterliegt als Gesamtwerk ebenso der Creative-Commons-Lizenz CC-BY-SA 3.0 Unported mit Ausnahme der Inhalte, die unter einer anderen Lizenz hierin veröffentlicht werden. Das Copyright liegt bei Dominik Wagenführ. Es wird erlaubt, das Werk/die Werke unter den Bestimmungen der Creative-Commons-Lizenz zu kopieren, zu verteilen und/oder zu modifizieren. Das freiesMagazin-Logo wurde von Arne Weinberg erstellt und unterliegt der GFDL. Die xkcd-Comics stehen separat unter der Creative-Commons-Lizenz CC-BY-NC 2.5 Generic. Das Copyright liegt bei Randall Munroe.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2011 45