freiesMagazin Dezember 2010

Topthemen dieser Ausgabe

Python-Programmierung: Teil 3 – Tiefere Einblicke Seite 18 Im vorherigen Teil dieser Reihe wurden Listen, Zeichenketten und die beiden Kontrollstrukturen if und while behandelt. Dieses Mal werden mit Funktionen und Modulen zwei wichtige Möglichkeiten vorgestellt, um ei- gene Python-Projekte zu strukturieren und wiederverwendbar zu machen. Zunächst sollen aber noch die versprochenen Ersetzungen bei Zeichenketten besprochen werden. Mit den „Dictionaries“ wird zudem ein weiterer wichtiger Datentyp in Python vorgestellt. (weiterlesen)

Nepomuk in KDE – Theorie und Praxis Seite 38 Es gibt Technologien, die viele Funktionen bieten, aber deren tieferer Sinn manchen Benutzern verborgen bleibt. Ob dies an fehlender Dokumentation liegt oder an dem neuartigen Ansatz der Bedienung, sei dahingestellt. Eine dieser Technologien ist Nepomuk in KDE. Um zu verstehen, was es tut und warum, muss man sich etwas mit der Theorie beschäftigen. Des Weiteren wird dieser Artikel auch auf die tägliche Verwendung eingehen. (weiterlesen)

Rezension: Sintel Seite 41 Lange hat es gedauert, bis der Open-Source-Film Sintel der Blender Foundation fertig war. Und noch länger hat es gedauert, ehe die vorbestellbaren DVDs versandt wurden. Nun liegt ein Exemplar zur Rezension vor und kann in allen Belangen überzeugen, denn nicht nur die Animation der Figuren sind gut, auch die Story nimmt einen mit. Nach einem Jahr Produktions- zeit ist ein exzellenter Kurzfilm entstanden. (weiterlesen)

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 ISSN 1867-7991 MAGAZIN

Editorial Frohe Kunde

Neue Lizenz te (wissenschaftliche) Arbeiten oder Bücher ge- Inhalt Nach einer langen Zeit der Veröffentlichung von dacht ist und nicht für einzelne Artikel, die aus freiesMagazin unter der GNU Free Documenta- zwei oder drei Seiten bestehen. Linux allgemein tion License (GFDL) [1] haben wir uns nun ent- Fedora 14 S. 4 schlossen, freiesMagazin ab Dezember 2010 un- Die Creative-Commons-Lizenz macht dies etwas easyVDR 0.8 S. 10 ter der Creative-Commons-Lizenz CC-BY-SA 3.0 einfacher. Neben der Angabe von Autor und Li- Der November im Kernelrückblick S. 16 Unported [2] zu veröffentlichen. (Einen Vergleich zenz reicht ein Link auf den Lizenztext, um ein beider Lizenzen gibt es in der englischen Wikipe- Werk vervielfältigen zu können. Daneben muss Anleitungen dia [3].) sich ein normaler Benutzer nicht mit dem schwer Python-Programmierung: Teil 3 S. 18 verständlichen Lizenztext herumschlagen, da ein Bildformat SVG verstehen S. 28 Einer der Gründe für den Wechsel ist vor al- Link auf die menschenverständliche Zusammen- ALSA konfigurieren S. 32 lem die einfachere Handhabung der CC-Lizenz – fassung ausreicht. schließlich wollen wir den Forderungen einer Li- Software zenz auch nachkommen und hier stellt die GFDL Natürlich würden wir gerne auch hierzu Ihre Mei- Invertika – ein Open-Source-MMORPG S. 35 ein Projekt wie freiesMagazin ebenso vor prak- nung wissen. Wie stehen Sie dem Lizenzwechsel Nepomuk in KDE – Theorie und Praxis S. 38 tische Probleme wie schließlich auch die Nutzer gegenüber, was halten Sie davon? Lassen Sie der Inhalte von freiesMagazin [4]. uns Ihre Meinung wissen und nehmen doch ein- Community fach an der Umfrage [7] teil. So reicht es bei der GFDL normalerweise nicht Rezension: Sintel S. 41 aus, wenn man nur einen Link auf die Lizenz an- Hinweis: Das freiesMagazin-Logo von Arne Ubuntu Developer Summit 2010 S. 45 gibt und sagt, dass der Artikel unter der GFDL Weinberg unterliegt derzeit weiterhin der GFDL. Rezenzion: Phrasebooks S. 47 veröffentlicht wird (hiervon gibt es Ausnahmen Rezension: iText in action S. 50 bei gedruckten Exemplaren in großer Menge). Sintel-Gewinnspiel Abschnitt 2 der Lizenz verlangt nämlich eine Mit- Magazin Diesen Monat präsentieren wir Ihnen auch ei- lieferung und Abdruck des kompletten Lizenztex- Editorial S. 2 ne Rezension zum Open-Source-Film Sintel der tes [5]. Was bei gedruckten Handbüchern noch Leserbriefe S. 53 Blender Foundationen, der Ende Oktober auf leicht möglich ist (man hat eben zwei Seiten mit Veranstaltungen S. 55 DVD veröffentlicht wurde. Passend dazu haben Lizenztext mehr), ist in einem Magazin oder gar Vorschau S. 55 wir uns auch ein Gewinnspiel ausgedacht, bei einem einzelnen Artikel schwer umzusetzen. Konventionen S. 55 der nur eine simple Frage beantwortet werden Impressum S. 56 Und auch am Abschnitt „Modifikationen“ [6] muss: „Wer hat (zum größten Teil) die Kämpfe merkt man, dass die GFDL eher für komplet- in Sintel choreographiert?“

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/20102 MAGAZIN

Die ersten drei richtigen Einsendungen gewin- Ein Leser mit dem Pseudonym TheRegRunner [4] http://www.heise.de/newsticker/meldung/GFDL- nen eine CD der Band „The Nuri“ [8]. Diese sind hat sich hingesetzt und die beiden bisher erschie- 1-3-Ausweg-aus-der-Lizenz-Einbahnstrasse- auch auf dem Sampler zum Free! Music! Con- nenen Artikel in zwei Screencasts zusammen- 215081.html test 2010 [9] zu finden und haben den Wettbe- getragen [12] [13]. Damit bietet er allen lesefau- [5] http://rybaczyk.freeunix.net/licenses/fdl-1.3.de. werb sogar für sich entscheiden können [10]. Die len Python-Neulingen einen guten Einblick in das html#verbatim-copying Musik der Band wird unter Creative-Commons- Thema. Zum Nacharbeiten und für Copy & Paste [6] http://rybaczyk.freeunix.net/licenses/fdl-1.3.de. Lizenzen vertrieben, was natürlich sehr gut zum sind die Artikel in freiesMagazin aber natürlich html#modifications Film passt. besser geeignet. [7] http://www.freiesmagazin.de/20101205-umfrage- freiesmagazin-mit-cc-lizenz Wer die Antwort auf die Frage weiß und ei- Zum Abschluss wünschen wir allen Leser schö- [8] http://www.the-nuri.de/ ne CD gewinnen möchte, kann uns über ne Feiertage – und bleiben Sie uns auch im Jahr den Kommentarlink am Ende des Editorials, [9] http://musik.klarmachen-zum-aendern.de/ 2011 weiterhin treu. nachrichten/free_music_contest_2010_-_der_ per Kontaktformular [11] oder per E-Mail sampler-531 an erreichen. Ihre freiesMagazin-Redaktion [10] http://musik.klarmachen-zum-aendern.de/free_ Die drei Gewinner geben wir dann auf der music_friday/nuri-559 freiesMagazin-Webseite bekannt. INKS L [11] http://www.freiesmagazin.de/kontakt Python-Screencasts [1] http://www.gnu.org/licenses/fdl.html [12] http://www.youtube.com/watch?v=0qO64mnDDaw Unser Python-Tutorial, welches Autor Daniel Nö- [2] http://creativecommons.org/licenses/by-sa/3.0/ [13] http://www.youtube.com/watch?v=ADkQmrelvsY gel vor zwei Monaten startete und in dieser Aus- deed.de gabe mit Teil 3 auf Seite 18 fortgesetzt wird, [3] http://en.wikipedia.org/wiki/Wikipedia:Comparison_ kommt bei den Leser recht gut an (denken wir). of_GFDL_and_CC-BY-SA Das Editorial kommentieren

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

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/20103 DISTRIBUTION

Fedora 14 von Hans-Joachim Baader

edora 14 ist am 2. November 2010 er- virtuelle Maschinen, 64 Bit, unter KVM mit schienen und wartet mit aktualisierten jeweils 768 MB RAM verwendet. F Desktops und einer Vielzahl von neuen Funktionen auf. Dieser Artikel soll einen Über- Installationsmedien blick über die Neuerungen geben. Fedora kann auf verschiedene Arten instal- liert werden, zum Beispiel von einem Live- Redaktioneller Hinweis: Der Artikel „Fedora 14“ System aus, das als ISO-Image verfügbar erschien erstmals bei Pro-Linux [1]. ist. Ein direktes Starten eines Installations- Vorwort systems ist mit einer DVD oder dem äqui- valenten Satz von CDs möglich. Daneben Fedora 14 „Goddard“ erschien am 2. Novem- stehen weitere Formate zur Verfügung, die ber 2010, ein halbes Jahr nach Fedora 13, ge- teilweise etwas Stöbern auf der Download- nau im Zeitplan. Die Entwickler hoben in den seite [3] erfordern. Anmerkungen zur Veröffentlichung [2] vier we- sentliche Neuerungen heraus: Spice, die Bereit- Von Fedora 14 stehen DVDs für die Archi- stellung von Teilen von MeeGo, Images für die Display-Manager gdm. tekturen x86 und x86_64 sowie Live-CDs Amazon-Cloud EC2 und ein D-Compiler. Alle die- mit GNOME, KDE, LXDE und Xfce für x86 se Neuerungen werden im Laufe des Artikels nä- und x86_64 zur Verfügung [4]. Bei den Live- her beschreiben. Auffällig ist, dass alle vier nur CDs ist der Umfang der Software natürlich für einen kleineren Nutzerkreis interessant sind. beschränkt, was der Grund dafür ist, dass Daneben gab es natürlich andere Änderungen es verschiedene Varianten gibt. Mehr Soft- und zahlreiche Updates, deren Aufzählung im ware kann man von der DVD oder alterna- Einzelnen den Rahmen sprengen würde. tiv von einem Satz aus sechs CDs installie- ren. Die DVD bietet auch ein Rettungssys- Vorab sei angemerkt, dass es sich bei diesem Ar- tem sowie eine Textmodus-Installation. tikel nicht um einen Test der Hardwarekompatibili- tät handelt. Distributoren haben einiges an Hard- Installation ware für solche Tests zur Verfügung. Ein Test ist Die Installation ist so einfach, dass sie von damit in diesem Artikel überflüssig, denn es wäre allen Anwendern meist ohne Probleme be- zu viel Aufwand für wenig Nutzen, eine repräsen- wältigt werden kann, und das ist ja nach tative Auswahl von Hardware zu beschaffen. wie vor wichtig, solange nur wenige Rech- Da eine Erprobung auf realer Hardware somit un- ner mit vorinstalliertem Linux ausgeliefert Display-Manager kdm. nötig ist, werden für den Artikel zwei identische werden.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/20104 DISTRIBUTION

Die grafische Installation ist gegenüber Fedora 13 [5] nahezu unverändert. Das Dateisystem ext4 ist die Voreinstellung. Btrfs gilt bei Fedora weiter als experimentell und wird daher nicht als Dateisystem zur Auswahl angeboten, außer man gibt bereits beim Booten die Option btrfs an.

Standardmäßig wird keine separate /home- Partition angelegt, was nicht sehr update- oder wiederherstellungsfreundlich ist. Dafür wird LVM für die Partitionierung verwendet, und Verschlüs- selung und RAID sind verfügbar. Bezüglich der Partitionierung kann wohl niemand Fedora etwas vormachen. Im eigens bereitgestellten Installa- tionshandbuch [6] werden alle verfügbaren Optio- nen erörtert und Tipps gegeben.

Installation von der Live-CD.

Die grafische Installation benötigt 384 MB RAM, einem anderen Rechner aus steuern oder die es werden jedoch 512 MB empfohlen. Die text- automatische Installation mit Kickstart wählen. Auswahl der Partitionierungsoptionen. basierte Installation benötigt 256 MB. Fedora Wenn nur der Textmodus bleibt, kann man nur empfiehlt, die grafische Installation zu verwen- ein System mit einer festen Auswahl von Basis- Laufender Betrieb den, wenn möglich. Ist das nicht möglich, soll- paketen und einer Standard-Partitionierung auf- Fedora 14 startet etwa genauso schnell oder te man die grafische Installation per VNC von setzen. minimal schneller als sein Vorgänger. Dass

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/20105 DISTRIBUTION

nahezu alle Softwarepakete, bei denen KDE 4.5.2 bringt viele Verbesserungen und Er- das möglich war, aktualisiert wurden, weiterungen gegenüber Version 4.4.3, die in versteht sich von selbst. Der Kernel Fedora 13 enthalten war. Als Browser ist nach wurde auf Version 2.6.35.6 gebracht [7]. wie vor vorinstalliert. Er verwendet Als Desktop-Systeme stehen unter an- die WebKit-Engine. Auch Fedora verwendet die derem KDE SC 4.5.2 und GNOME monochromen Icons in der Systemleiste, die 2.32.0 zur Verfügung. Das neue Hin- bei Ubuntu 10.10 bereits kritisiert wurden (siehe tergrundbild verursacht eine optische „Ubuntu 10.10“, freiesMagazin 11/2010 [9]). Es Täuschung, die man besonders gut bei handelt sich wohl um die neue Voreinstellung von transparenten Fenstern wahrnimmt. KDE und ist letztlich nur Geschmackssache. Die neue Version von GNOME [8] Auch der im Ubuntu-Artikel festgestellte Absturz bringt den Benutzern weitgehend im Dateibetrachter ist vorhanden. Er ist das gewohnte Erscheinungsbild oh- eindeutig KDE selbst und nicht der Distribution ne böse Überraschungen. Obwohl der anzulasten. Die meisten Benutzer dürften davon Standard-Browser von GNOME Epi- aber gar nichts betroffen sein, da mittlerweile klar ist, dass er sich nur in bestimmten Fällen, GNOME-Desktop mit Firefox. phany ist, bleibt es unter Fedora, wie gewohnt, bei Firefox, der jetzt in Ver- beispielsweise bei 16 Bit Farbtiefe, bemerkbar sion 3.6.12 vorliegt. Pino, ein Client macht. für soziale Netze, funktioniert mit Twit- Eine andere Auffälligkeit zeigte der Benach- ter nicht mehr und wurde daher aus richtigungs-Daemon knotify4. Normalerweise der Standardinstallation entfernt. Statt- sollte dieses Programm einfach nur auf Nach- dessen kann man Programme wie richten warten. In Fedora 14 scheint das Warte- Gwibber nachinstallieren. Als Office- Intervall so kurz zu sein, dass der Daemon 2000 Suite ist OpenOffice.org 3.3.0 instal- Mal pro Sekunde aufwacht. Das führt zu einer liert. Beim ersten Aufruf von Open- permanenten CPU-Auslastung von 2 %. Bei je- Office.org installiert sich automatisch dem Aufwachen wird ein Dateideskriptor gelesen, der OpenOffice.org-Schnellstarter. Für um zu sehen, ob Daten vorhanden sind, und die Office-Wenig-Benutzer dürfte dieser Systemzeit ermittelt. unnötig sein, er kann aber leicht entfernt werden. Die GNOME-Live- Wie immer ist in Fedora SELinux eingebunden Installation dürfte einen geringeren und aktiviert. Es macht sich mittlerweile für nor- Software-Umfang enthalten. Das Bild- male Benutzer nicht mehr bemerkbar, so dass bearbeitungsprogramm GIMP ist wei- man fast vergessen könnte, es zu erwähnen. Ne- KDE-Desktop mit Konqueror. terhin Teil der Standardinstallation. ben den offenbar ausgereiften Profilen sind auch

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/20106 DISTRIBUTION

Werkzeuge zur Diagnose von Problemen vorhan- Version 0.6.1 auf 0.6.2 aktualisiert. Trotz der Ver- Beim ersten Update meldete KPackageKit zu- den. besserungen besitzt es weiterhin einige Mängel, dem einen unbekannten Repository-Schlüssel. die es wie eine schlechten Prototypen wirken las- Anscheinend vertraute das Programm den eige- GNOME benötigt in Fedora 14 direkt nach dem sen, wie schon im Ubuntu-Artikel erwähnt wurde. nen Update-Quellen nicht. Start mit einem geöffneten Terminalfenster etwa 230 MB RAM, KDE satte 100 MB mehr. Wer Multimedia der Meinung ist, auf Nepomuk und Desktopsu- Wie gewohnt bringt che verzichten zu können, kann diese abschal- Fedora den Multimedia- ten, wird dadurch aber fast nichts einsparen. Server PulseAudio in Bei der Geschwindigkeit lässt sich kein nen- der neuesten Version nenswerter Unterschied zwischen den Desktops mit. Für Musiker mit feststellen, sofern genug RAM vorhanden ist. strikteren Echtzeitanfor- Für KDE bedeutet das, dass man mindestens derungen gab es bisher 768 MB RAM haben sollte. optional Jack. Jetzt wur- de Jack durch Jack2 (frü- Den Speicherverbrauch der Desktops zu mes- her jackdmp) in Version sen ist nicht einfach. Schwankungen von 20 MB 1.9.5 ersetzt. Es ist kom- und mehr nach oben und unten sind möglich, je patibel mit vorhandenen nach dem Zeitpunkt der Messung. Dies erklärt Jack-Anwendungen. Es sich teilweise daraus, dass manche Programme ist standardmäßig instal- bei ihrem Start einen oder mehrere Dienste star- liert, denn eines seiner ten. Diese Dienste werden bei Nichtbenutzung Features ist, dass er par- teilweise nach einiger Zeit auch wieder beendet. allel zu PulseAudio exis- Bei obigen Angaben wurde versucht, den unge- tieren kann. Wenn der fähren Mittelwert zu finden. KPackageKit vertraut den eigenen Update-Quellen nicht. Jack-Daemon startet, entreißt er PulseAudio Paketverwaltung und Updates So lassen sich in der Suche nach Softwarepake- die Kontrolle über das Audiogerät und gibt sie Wenig Neues gab es bei Fedora im Bereich ten keine Wildcards verwenden. Die Auswahl nach getaner Arbeit wieder zurück. der Paketverwaltung. Das GNOME-Frontend von der Funktionen „Softwareverwaltung“, „Software- PackageKit, gpk-application, kann weiterhin kei- Aussetzer im Audiostrom sollen mit Jack2 kaum aktualisierungen“ und „Einstellungen“ hätte leicht ne Software-Repositorys hinzufügen oder entfer- noch möglich sein. Zum einen wurde die Soft- in einem Menü erfolgen können, anstatt so viel nen. Abgesehen davon läuft es problemlos. ware durch Parallelausführung auf allen Prozes- Platz auf dem Bildschirm zu verschwenden. Ei- soren schneller. Außerdem können Verbindun- Auf KDE-Seite wurde KPackageKit verbessert. nige Pakete wurden in den Suchergebnissen gen zwischen den Programmen geändert wer- Es wurde nach der Freigabe von Fedora 14 von doppelt aufgeführt. den, ohne den Audio-Strom zu unterbrechen,

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/20107 DISTRIBUTION und es gibt eine „asynchrone“ Aktivierung. Wenn Nach dieser Vorbereitung ist Totem unter setzungen schaffen. Die virtuelle Maschine muss ein Programm ein Sample nicht rechtzeitig sen- GNOME und KDE in der Lage, die benötigten mit dem neuen Grafikgerät „qxl“ konfiguriert wer- det, wiederholt Jack2 automatisch das vorherge- Plug-ins selbsttätig zu installieren, danach funk- den. In der virtuellen Maschine sollte man dann hende, was in den meisten Fällen nicht einmal tioniert der Medienplayer erwartungsgemäß. To- den speziellen qxl-Treiber installieren, für Linux wahrnehmbar sein soll. tem erscheint bei Installation von DVD auch un- ist das xserver-xorg-video-qxl. Andernfalls wird ter KDE als Standard-Medienplayer. und der Standard-VGA-Treiber verwendet, der lang- Neu ist der Musicians’ Guide [10], der Ein- DragonPlayer sind als Alternativen installiert. Lei- sam und ineffizient ist. Leider ist diese Version steigern eine Anleitung zu Audiosoftware un- der konnten beide zunächst weder eines der von SPICE noch nicht mit libvirt integriert, das ter Linux geben soll. Das Dokument behan- Videos abspielen noch Hinweise auf die Ursa- steht aber bereits auf dem Plan. delt Audio-Grundlagen und enthält Tutorials zu chen geben. Erst mit dem Wissen, dass das Auch sonst hat sich bei der Virtualisierung wie- Programmen wie Audacity, Ardour, Digital Au- -Backend standardmäßig auf Xine einge- der einiges getan. Erstmals werden nun Images dio Workstations, Qtractor, Rosegarden, Fluid- stellt ist, kommt man weiter, kann das Backend für die Cloud Amazon EC2 bereitgestellt. Mit dem Synth, SuperCollider, Lilypond, Frescobaldi und auf GStreamer umstellen und schon läuft alles. Programm virt-v2v kann man virtuelle Maschinen GNU Solfege. Auch für andere Interessengrup- Mit Fedora 13 war das noch nicht so problemlos. pen gibt es spezielle Anleitungen auf der Fedora- von Xen nach KVM migrieren. Fedora 14 kann Dokumentationsseite. Nach Installation des Gnash-Plugins in Version als DomU laufen, jedoch nicht als Dom0, außer 0.8.8 ließen sich diverse Flash-Videos im Web man ersetzt den Kernel auf eigenes Risiko. Aus den bekannten Gründen kann Fedora, eben- abspielen. Mit YouTube-Videos gelang das nicht, Die neue Unterstützung für das Security Content so wie die meisten anderen Distributionen, nur obwohl es unter anderen Distributionen geht. Die Automation Protocol (SCAP) besteht aus der Bi- wenige Medienformate abspielen, da es viele be- Ursache ließ sich kurzfristig nicht ermitteln. bliothek OpenSCAP und mehreren Werkzeugen. nötigte Codecs nicht mitliefern kann. Wenn man Damit lässt sich die Sicherheit des Systems in versucht, ein Video abzuspielen, dann erhält man Weitere Neuerungen standardisierter Weise sicherstellen. Unter ande- mit dem KDE-Videoplayer DragonPlayer nicht Die Integration des SPICE-Frameworks für rem kann man nach verfügbaren Patches suchen einmal eine Meldung, dass etwas nicht geht. Nur Desktop-Virtualisierung will erreichen, dass man und Einbrüche erkennen. Totem bietet auch die Option an, über die Pa- die Oberfläche einer virtuellen Maschine, die auf ketverwaltung nach passenden Plug-ins zu su- einem 64-Bit-Linux-Server läuft, auf einem ande- Für Entwickler wurden Perl auf Version 5.12.1, chen. Dazu muss man aber vorher in der Paket- ren Rechner ansehen kann. Damit kann man vir- Python auf 2.7 und Erlang auf R14 aktualisiert. verwaltung die zusätzlichen Repositorys eintra- tuelle Maschinen (z. B. eine Maschine pro Benut- Erstmals sind umfassende Entwicklungsumge- gen. Wenn man weiß, wie es geht, ist es im Prin- zer) auf einem leistungsstarken Rechner ausfüh- bungen für die Programmiersprache D [13] und zip ganz einfach: Über die Webseite von RPM ren, während die Desktop-Systeme deutlich lang- für das Desktop-System GnuStep verfügbar. Als Fusion [11] kann man Pakete installieren, die samer und austauschbar sind. SPICE [12] wur- D-Compiler wird allerdings der auf LLVM beru- die Repositorys hinzufügen. Dies gilt für GNOME de von Qumranet entwickelt, das von Red Hat hende LDC benutzt, nicht der GNU-D-Compiler wie für KDE. In der letzten Version funktionierte übernommen wurde. Wer SPICE außerhalb von (GDC). Der Debugger gdb wurde schneller und das Installieren der Repositorys unter KDE nicht; Fedora probieren möchte, muss auf Qemu 0.13 die Entwicklungsumgebungen NetBeans 6.9 und dies wurde jetzt glücklicherweise behoben. aktualisieren und noch ein paar weitere Voraus- Eclipse 3.6 sind in aktuellen Versionen dabei.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/20108 DISTRIBUTION

Auch Perl 6 mit Raduko Star wird bereitgestellt. Wie immer sollte man mit dem Update oder Um- [2] http://docs.fedoraproject.org/en-US/Fedora/14/ Dazu kommt das Paket gdb-heap, das eine Ana- stieg auf Fedora 14 einige Wochen warten, denn html/Release_Notes/index.html lyse ermöglicht, wie ein Programm den Speicher die aktuelle Software bringt es mit sich, dass we- [3] http://fedoraproject.org/de/get-fedora verwendet. nig getestet werden konnte und sich gerade in [4] http://fedoraproject.org/de/get-fedora-options den ersten Wochen viele Probleme zutage tre- Weiter zu nennen sind eine bessere Unter- [5] http://www.pro-linux.de/artikel/2/1195/fedora-13. ten. Wer sicherer vor Updates sein will, sollte stützung für das Statistikpaket R, die Daten- html vielleicht immer nur die zweitneueste Version ein- erfassungsplattform ROOT, vollständige Server- [6] http://docs.fedoraproject.org/ setzen. Dabei macht sich allerdings der kurze Verwaltung über IPMI mit ipmiutil und die schnel- [7] http://www.pro-linux.de/news/1/15986/linux- Support-Zeitraum von Fedora negativ bemerkbar. lere JPEG-Bibliothek libjpeg-turbo. Das Paket kernel-2635-freigegeben.html Man ist im Prinzip gezwungen, alle sechs Mona- man wurde durch man-db ersetzt, und eine „in- [8] http://www.pro-linux.de/news/1/16219/gnome- te zu aktualisieren. tegrierte Untermenge“ von Software aus dem 232-veroeffentlicht.html [9] http://www.freiesmagazin.de/freiesMagazin-2010- MeeGo-Projekt ist verfügbar. Es handelt sich um Ein generelles Problem von Fedora ist die un- 11 die MeeGo Netbook UX-Umgebung und ein paar gezügelte Update-Politik. Diese könnte die An- [10] http://docs.fedoraproject.org/en-US/Fedora/14/ Panel-Applets. wender abschrecken, die sich nicht ständig mit html/Musicians_Guide/index.html Updates befassen wollen, und schon gar nicht, Fazit [11] http://rpmfusion.org/ wenn diese neue oder geänderte Funktionen mit- Fedora 14 enthält kaum drastische Änderungen bringen. Fedora 13 beispielsweise erhielt in einer [12] http://fedoraproject.org/wiki/Features/Spice gegenüber dem Vorgänger, aber viele Verbesse- KDE- oder GNOME-Standardinstallation in den [13] https://fedoraproject.org/wiki/Features/D_ rungen und Neuerungen. Im Vergleich zum Vor- letzten sechs Monaten etwa 500 Updates. Aller- Programming gänger läuft Fedora 14 spürbar runder, was aber dings erfüllt Fedora damit seinen Anspruch, neue auch den Upstream-Projekten zu verdanken ist. Entwicklungen schnell zu den Benutzern zu brin- Autoreninformation Fedora verzichtet im Desktopbereich weitgehend gen und es werden viele Fehler korrigiert. Da- auf Alleingänge und liefert so die Desktopumge- bei können aber auch neue Fehler eingeschleppt Hans-Joachim Baader (Site) befasst bungen bis auf eine angepasste Optik im Origi- werden. Den entgegengesetzten Anspruch, nur sich seit 1993 mit Linux. 1994 schloss nalzustand aus. Wo Probleme beobachtet wur- Fehler möglichst ohne jede Nebenwirkung zu be- er sein Informatikstudium erfolgreich den, sind diese dann in der Regel nicht Fedora heben, kann Fedora nicht befriedigen, hierfür ste- ab, machte die Softwareentwicklung anzulasten, sondern den jeweiligen Projekten. hen Red Hat Enterprise Linux und CentOS als zum Beruf und ist einer der Betreiber Die vielen fortgeschrittenen Funktionen, z. B. bei kompatible Alternativen bereit. von Pro-Linux.de. der Virtualisierung, machen Fedora für Power- user interessant. Auch Entwickler werden mit den LINKS verschiedenen neuen oder aktualisierten Ent- [1] http://www.pro-linux.de/artikel/2/1472/fedora-14. wicklungsumgebungen stark umworben. html Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/20109 MULTIMEDIA easyVDR 0.8 – HDTV-Version veröffentlicht von Andreas Schott, Martin Neubauer und Ralf Hufnagel

ie Distribution easyVDR ist eine men sehen (auch mit Timeshift [10]), pausieren, mern möglich. Die Bildqualität des Digitalfernse- unter der GPL [1] veröffentlichte bearbeiten oder Musik hören möglich. hens ist deutlich besser als bei analogem Si- D Community-Distribution rund um den gnal und wird zunehmend Standard – HDTV VDR. Dabei verwandelt die Freie Software Vi- Der Einsatz mehrerer Empfangs-„Karten“ lässt übertrifft die bereits gute Bildqualität des Di- deo Disc Recorder (VDR [2]) von Klaus Schmi- parallele Aufnahmen unterschiedlichster Sender gitalempfangs, wenn das ausgestrahlte Ma- dinger handelsübliche PC-Hardware in einen zu, aber schon mit nur einem Empfangsgerät terial in hoher Auflösung (HD) vorliegt und digitalen Videorekorder und ermöglicht so können Aufnahmen mehrerer Sender aus dem nicht, wie derzeit für ältere Sendungen üblich, Empfang, Aufnahme und Wiedergabe von di- selben Bouquet [11] gemacht werden. nur vom Sender hochgerechnet gitalem Fernsehen – in der neuen Version 0.8 wird. Bei DVB-T ist flächig noch sogar offiziell auch in HDTV-Qualität [3]. keine Einführung des HDTV durch die Sendeanstalten geplant. Des- Für die weiteren Features eines digitalen Vi- halb können dort evtl. öfter Kom- deorekorders auf PC-Basis der easyVDR- primierungsartefakte durch die Distribution sei hier auf den Artikel in MPEG-Komprimierung [13] sicht- freiesMagazin 07/2009 [4] verwiesen. bar werden, bedingt durch ge- Empfangsmöglichkeiten ringere Übertragungsbandbreiten als bei Kabel oder Satellit. Bei den Der VDR unterstützt alle denkbaren Eingangs- Hauptsendern ist dies aber mittler- quellen für TV. Dies sind unter anderem: weile selten.  Satellit (DVB-S, DVB-S2) [5], Der Hauptvorteil des VDR ist sei-  Kabel (DVB-C) [6], ne Stabilität, welche das solide  terrestrisch (DVB-T) [7], Fundament für eine flexible und er-

 analoges TV (nur mit Hauppauge PVR *50/P- weiterbare Multimedialösung auf VRUSB2) und Basis der GPL bildet.  Internet (IP-TV) [8]. Features der easyVDR- easyVDR-Logo für Version 0.8. Alle Empfangsmöglichkeiten können miteinan- © Kerstin Lorbitzki (CC-BY-SA-3.0) Distribution der kombiniert werden: DVB-S/C/T, Analog oder Die aktuelle „stable“ Version 0.8 IPTV, sei es per PCI-e- [9] oder PCI-Bus, per Durch die mit dem TV-Programm ausgestrahlten basiert auf Kernel 2.6.28.9 und VDR 1.7.0- USB oder aus dem Internet, eigenständig wer- oder per Internet aktualisierbaren und dann aus- extp72. Zur Grafikausgabe kommen xinelibout- den diese vom VDR verwaltet. Während der Auf- führlicheren Programminformationen (EPG [12]) put (Version 1.0.90-cvs) [14] als lokales oder nahme(n) ist gleichzeitiges LiveTV oder Aufnah- ist eine komfortable Programmierung von Ti- remote-Frontend zum Einsatz. Neu ist in Version

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 10 MULTIMEDIA

0.8 die Trennung von Backend und Frontend, was Auch die Menüstruktur zur Bedienung des VDR datei zu hinterlegen. Diese, auf einen weiteren die Grundeinstellungen und die Erstinstallation wurde überarbeitet, um die teilweise sehr ver- ähnlich ausgestatteten VDR kopiert, erspart dort deutlich vereinfacht. streut liegenden Einstellungen besser zusam- viel Konfigurationsaufwand. Diese Datei liegt in menzufassen. /media/easyvdr/myeasyvdr [22]. Mit stetig eingepflegten Weiterentwicklungen, z. B. aktuellen DVB-Treibern, ffmpeg oder VDPAU [15] ist easyVDR 0.8 trotz der betag- Hardwareanforde- teren Basis Debian Etch [16] am Puls der techni- rungen schen Entwicklung und der Unterstützung aktuel- Die Hardwareanforderun- ler Hardware. gen [23] sind trotz HDTV- Unterstützung relativ mo- VGA2Scart [17], die Möglichkeit, einen Grafik- derat. Als perfekt funk- karten-VGA-Ausgang als SCART-Ausgabeaus- tionierende Kombination gang zu (miss)brauchen, wird bei den Mother- wird häufig das Asus boards mit Intels GMA 950-Reihe im Chip- M3N78-VM-Mainboard satz (z. B. DG954LF/2 und DGJT945) sofort und ähnliche dieser Mo- mit FrameRateControl [18] installiert und ermög- dellreihe genutzt, da licht so eine preisgünstige VDR-Ausgabevariante hier bereits ein NVIDIA- in einer mit den bekannten Full-Featured- Grafikchip eingebaut ist, Karten [19] vergleichbaren Qualität. Dazu nöti- der VDPAU-Decodierung ge Kabel sind über einen Nutzer des easyVDR- unterstützt. Deren Nach- Forums fertig zu beziehen oder selbst zu löten. folger ist die M4N*-Serie. Aufzeichnungen von analogem Material mittels Als Prozessor genügt in Hauppauge PVRx50 oder PVRUSB2-Geräten diesem Fall beispielswei- sind der „Retter“ der liebgewonnenen VHS- se ein AMD Sempron 140 Aufzeichnungen. Das VGA2Scart-Kabel. und 1 GB RAM. Natürlich easyVDR bietet eine ausgefeilte Basiskonfigura- Intern hat sich im Bereich der Entwicklung der läuft easyVDR auch auf anderen Boards (mit tion. Nach der ersten Installation sind nur wenige Umstieg auf ein VCS-System [20] bewährt. Die vergleichbarer Hardware). Wichtig ist, dass für Einstellungen erforderlich, um die persönlichen Entscheidung fiel zu Gunsten von GIT [21]. ungetrübten HD-Genuss ein NVIDIA-Grafikkern Wünsche vieler Nutzer zu verwirklichen. Dies be- Dort liegt mittlerweile nicht nur der Quellcode, mindestens der der 8xxx-Serie mit möglichst ginnt mit einer Vorauswahl von ca. 100 Plug-ins sondern auch die Alpha-Updates und die des 512 MB Grafikspeicher zu nutzen ist. Idealerwei- aus den inzwischen rund 300 verfügbaren VDR- easyVDR-Webfrontends easyPortal. se kommt eine passiv gekühlte Karte zum Ein- Plug-ins. Diese werden je nach erkannter Hard- satz, um die Geräuschentwicklung im Wohnzim- ware automatisch aktiviert, inklusive der notwen- Zusätzlich hat man nun die Möglichkeit, seine mer in Grenzen zu halten. Aufgrund deren Wär- digen Konfiguration. Konfiguration und Einstellungen in einer Text- meentwicklung empfiehlt sich jedoch der Einsatz

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 11 MULTIMEDIA

Pentium3-Prozessor ab gebrannt (im Brennprogramm „Image brennen“ 733 MHz Taktfrequenz aktivieren, langsame Brenngeschwindigkeit, da und 256 MB RAM. Möch- sich die Hersteller leider immer selbst über- te man aber aus den schätzen und so die Qualität des Brennergeb- aufgenommenen Fil- nisses stark leidet) und der zukünftige VDR-PC men auch DVDs bren- von dieser DVD gebootet. Dann gelangt man in nen, XXV [25] nutzen ein Bootmenü am zur Installation nötigen Bild- oder auch mal Plug- schirm, das ermöglicht, direkt zu installieren oder ins [26] oder einen Ker- bei Problemhardware aus einigen ACPI/APM- nel [27] kompilieren, wird Konfigurationen zu wählen. ein stärkerer Prozessor empfohlen. Dann sollte Anschließend erscheint ein Bootmenü, in dem eine CPU mit mindes- man automatische oder manuelle Installation tens 1 GHz verwendet auswählen kann. werden.

Aber auch die guten al- ten DXR3, die PVR350 sowie die Digitainer mit Hardware-MPEG(2)- Decoder werden als Ausgabekarten selbst- redend weiterhin unter- Der Startbildschirm zur Installation. stützt. Die Unterstützung eines großen, langsam drehenden und damit lei- der Activy (mit em84xx-Decoder) musste lei- sen Gehäuselüfters, der auf die Grafikkarte und der aufgrund des Kernelupdates fallengelassen möglichst die benachbarten Empfangskarten ge- werden bzw. ist ohne Support enthalten und Sowohl die automatische als auch die manuelle richtet ist. kann durch die manuelle Auswahl von Kernel Installationweise stehen zur Verfügung. 2.6.22.15 und VDR 1.6.0-2 genutzt werden. Natürlich unterstützt easyVDR auch noch Der vollkommen neue Installer erkennt eine FullFeatured-DVB-Karten [24] (mit Hardware Download und Installation bestehende (easy)VDR-Installation und verän- MPEG(2)-Dekoder und hochwertigem SCART- Man lädt ein fertiges ISO-Image [28] über das dert an der Medienpartition, auf der die Auf- Video Ausgang), allerdings dann logischerwei- Internet. Aufgrund der deutlich erweiterten Fea- zeichnungen liegen, nichts. Eine Swap-Partition se nur in SDTV. Die Mindestanforderungen für tures ist mittlerweile eine Installations-DVD nö- (Festplattenspeicher zur Vergrößerung des evtl. einen stabilen Betrieb beginnen hier bei einem tig. Dann wird das Image auf einen DVD-Rohling zu kleinen Hauptspeichers (RAM)) wird dyna-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 12 MULTIMEDIA misch nach RAM-Größe erstellt oder auch weg- Netzwerkkonfiguration ist aber bei nicht erkann- Nun stellt man noch im OSD unter dem Menü- gelassen. Anschließend wird die Partitionierung ter Internetverbindung ebenfalls realisiert. Diese punkt „System → Einstellungen → Grundeinstel- und evtl. Formatierung nochmals angezeigt und Installation lässt sich aber auch nachträglich an- lungen und Systemstart → Kanalliste“ die korrek- man muss der Installation durch Eingabe von passen – ebenso wie der Wechsel auf andere te Kanalliste je nach Empfangsart und -ort ein „easyvdr“ explizit zustimmen. Ausgabearten problemlos funktioniert – indem und kann sich die ersten Sendungen ansehen. man einfach das Skript 1st_start.sh [32] er- Ist zu der Zeit schon ein LIRC-Empfänger [34] neut aufruft. an den seriellen Port oder via USB angeschlos- sen und die richtige Fernbedienung ausgewählt, Am Ende dieses Installationprozesses sollte bei funktioniert die Bedienung des VDR schon vom jedem Ausgabedevice nach Drücken von M auf Sessel aus. Hierzu existiert ein Script unter der Tastatur bereits das OSD-Menü [33] am an- /usr/bin/easyvdr/experimentell/extramen geschlossenen TV oder Monitor zu sehen sein. u/extra_menu.sh. Dazu schaltet man den laufenden VDR per Tasta- tur auf eine Textkonsole um ( Strg + Alt + F1 ), loggt sich als „root“ mit dem Pass- wort „easyvdr“ ein und star- Sicherheitsabfrage: Zustimmung zur tet das Skript, um eine Installation. der unterstützten Fernbedie- nungen auszuwählen. Dies Nach Abschluss der Grundinstallation und ei- kann natürlich auch via SSH nem Neustart erkennt der easyVDR die un- erledigt werden. terstützten Ausgabearten (NVIDIA- oder Intel- Grafikkern, Reel eHD- [29], Full-Featured DVB-, IR-Empfänger, die an ei- DXR3-, PVR350-Karte) automatisch und konfigu- nem Empfangsgerät ange- riert das System entsprechend. Danach folgt bei schlossen sind, und man- erkannter Intel- oder NVIDIA-Grafikkarte noch che USB-Funk-Empfänger die Möglichkeit, einen X-Desktop [30] und Video- (X10) lassen sich besser Ausgabe über das xineliboutput-Plug-in mit oder durch Nutzung des VDR- ohne VGA2Scart-Kabel zu realisieren. Remote-Plug-ins verwen- den. Hierzu sucht man Einige Hardwarevarianten benötigen hierfür Da- bei laufendem VDR den ten aus dem Internet, was sofort funktioniert, richtigen Eingang unter wenn der Internet-Router die IP-Adresse dyna- /dev/input/by-path/ (am misch per DHCP [31] vergibt. Eine manuelle Das OSD-Menü. besten per SSH den Na-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 13 MULTIMEDIA men exakt abschreiben). Das Plug-in wird im die aktuell in der Version 0.2.02 vorliegt. Man birgt aber immer das kleine Risiko, dass das OSD unter „System → Einstellungen → Tastatur muss nur „easyvdr“ oder die IP des VDR-PC in System danach nicht mehr startet. Kann man und Fernbedienung → Lirc oder Remote benut- die Adresszeile eines Browsers auf einem an- die Änderung, aus welchen Gründen auch im- zen“ auf „ja“ und auf der gleichen Ebene un- deren PC im selben Netzwerk (LAN) eingeben mer, nicht rückgängig machen, kommt das Rück- ter „Remote-Einstellungen → Remote für interne und erhält sofort viele wichtige Informationen, die spielen eines Backups [38] zum Tragen. Es exis- IR-FB“ auf „ja“ gestellt. Die Invertierung bleibt das System betreffen. So kann man feststellen, tiert die Möglichkeit der Erstellung eines Backups deaktiviert und bei „sonst. Remote Parameter“ welche Dienste aktuell laufen (Live, VDRAdmin, per OSD. Das Backup über OSD erstellt eine muss der Eingangsname eingetragen werden XXV, Samba, FTP etc.) und findet sich mit einem komplette Sicherung des easyVDR als Rettungs- (-i /dev/input/by-path/EINGANGSNAME). Mit- Klick im entsprechenden Dienst wieder. Das An- DVD/Installations-DVD. Bis auf die speicher- hilfe der Zurück-Taste ( Backspace ) speichert und Abschalten von Plug-ins macht die Verwal- platzintensiven Verzeichnisse, wie /video0 bzw. man dies. Gleiches gilt für LIRC-Einstellungen tung auch ohne laufenden VDR (sollte man ein komplett /media, wird alles gesichert. Nach – ebenfalls zu finden unter „System → Einstel- Plug-in gestartet haben, welches den VDR nicht dem Erstellen befindet sich das ISO-Image im lungen → Tastatur und Fernbedienung“. Hier in mehr starten lässt) sehr komfortabel. Angaben Verzeichnis /media/backup. Man erreicht die „System → Einstellungen → Lirc benutzen“ auf zum verfügbaren Plattenplatz, zu Temperaturen Backup-Funktion über „OSD → System → Befeh- „nein“ setzen. Anschließend durch mehrmaliges sowie zur installierten Hardware runden die Infor- le → Backup“. Drücken der Zurück-Taste zurückgehen, bis man mationen zum easyVDR ab. wieder im Livebild ist. Nun muss der VDR neu Ausblick Das weitaus wichtigste Feature ist aber innerhalb gestartet und die Fernbedienung im OSD-Menü von easyPortal zweifellos „easyInfo“, mit dem Zum September existiert bereits eine Alpha- unter „System → Befehle → System-Befehle → man sich sehr viele relevante Log- und Konfigu- Version von easyVDR 0.9, die auf Ubuntu „Lu- FB neu anlernen“ angelernt werden. rationsdateien sowie Systeminfos ansehen kann. cid Lynx“ basiert und im Gegensatz zur aktuel- len Distribution (auf der Debian Etch-Basis) am Da auch häufig Mischsysteme (DVB + Analog) Das Posten dieser Datei, welche rechts oben Ubuntu-Grundsystem so gut wie keine Änderun- benutzt werden, läuft eine eingebaute Hauppau- auch zum Download zur Verfügung gestellt wird gen vornimmt. Alle Erweiterungen werden als ge PVR150/250/350 (als Empfangsgerät) nach (grüner Pfeil, auch „Indianer“ genannt), macht die Debian-Pakete eingespielt, womit die Basis unbe- Aktivierung des Plug-ins pvrinput (z. B. über ea- Fehlersuche für die Entwickler im Forum um vie- rührt bleibt. Das macht künftige Updates deutlich syPortal [35]) und der korrekten Kanalliste eben- les einfacher [37]. Die aktuelle Version beinhal- leichter und erlaubt es, über Paketmanager wie falls sofort. Es werden natürlich auch mehre- tet keine neuen Features, wurde aber updatefä- z. B. apt/aptitude Pakete zum Testen zu installie- re DVB-Karten korrekt erkannt, was für einen hig gemacht und enthält viele strukturelle Ver- ren oder sie auch vollständig zu deinstallieren. Streamingserver [36] interessant ist. Dies kön- besserungen, die die Lauffähigkeit sowohl unter easyVDR-Version 0.6.x als auch 0.8.x und der nen dann natürlich auch sogenannte Budget- Fazit Karten ohne Videoausgang sein. künftigen 1.0.x sicherstellt. Mit easyVDR Version 0.8 ist eine sehr benut- Zu einem mittlerweile sehr beliebten Feature hat Backup zerfreundliche Installation möglich, bei der es sich easyPortal gemausert. easyPortal ist eine Hat man ein funktionierendes System, möchte nahezu jedem gelingt, unter Einsatz von ent- Website, die der VDR zur Verfügung stellt und man natürlich mehr Möglichkeiten nutzen. Dies sprechend unterstützter Hardware, ein HD-VDR-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 14 MULTIMEDIA

System aufzubauen. Die Menge der „out of the [11] http://de.wikipedia.org/wiki/Bouquet_(Digitales_ [31] http://de.wikipedia.org/wiki/Dynamic_Host_ box“-unterstützten Ein- und Ausgabegeräte ist Fernsehen) Configuration_Protocol sehr groß, die Konfiguration erfordert im Regelfall [12] http://de.wikipedia.org/wiki/Electronic_Program_ [32] http://wiki.easy-vdr.de/index.php/Zusammenh% keinen manuellen Eingriff und die Hardwareanfor- Guide C3%A4nge_der_Konfigurationsscripte derungen sind auch im Vergleich zu kommerziel- [13] http://de.wikipedia.org/wiki/MPEG [33] http://de.wikipedia.org/wiki/On_Screen_Display len Fertiglösungen mehr als konkurrenzfähig. [14] http://www.vdr-wiki.de/wiki/index.php/Xinelibout [34] http://www.vdr-wiki.de/wiki/index.php/LIRC put-plugin Informationen findet man auf der Projektinter- [35] http://wiki.easy-vdr.de/index.php/EasyPortal netseite von easyVDR. Hier sind ein Wiki [39], ein [15] http://de.wikipedia.org/wiki/Nvidia_PureVideo_ [36] http://wiki.easy-vdr.de/index.php/VDR_als_ HD Forum [40] und Bereiche der gemeinsamen Ent- Streaming_-_Server wicklung eingerichtet. Auch das VDR-Portal [41] [16] http://de.wikipedia.org/wiki/Debian_GNU/Linux [37] http://wiki.easy-vdr.de/index.php/Hilfe und das VDR-Wiki [42] halten als Urvater der [17] http://www.easy-vdr.de/forum/index.php?board= [38] http://wiki.easy-vdr.de/index.php/Installation, VDR-Community viele Informationen bereit. 63.0 _Backup_und_Restore [18] http://frc.easy-vdr.de/ [39] http://wiki.easy-vdr.de/ Zu Hilfestellungen bei Problemen, bei Wünschen [19] http://www.vdr-wiki.de/wiki/index.php/Full- [40] http://www.easy-vdr.de/forum/ sowie Einblick oder Teilnahme an der Weiter- featured-DVB-Karte [41] http://www.vdr-portal.de/ entwicklung der Distribution, trifft die Online- [20] http://de.wikipedia.org/wiki/Versionsverwaltung Community um easyVDR sich im Forum [43]. [42] http://www.vdr-wiki.de/ [21] http://de.wikipedia.org/wiki/Git [43] http://www.easy-vdr.de/ LINKS [22] http://wiki.easy-vdr.de/index.php/Tipps,_Tricks_ [1] http://de.wikipedia.org/wiki/GNU_General_ und_pers%C3%B6nliche_Anpassungen#Zus.C3. Public_License A4tzliche_Plugins_uns_Einstellungen Autoreninformation [2] http://de.wikipedia.org/wiki/Video_Disk_Recorder [23] http://wiki.easy-vdr.de/index.php/Hardware Andreas Schott, Martin Neubauer, [3] http://de.wikipedia.org/wiki/High_Definition_ _Kompatibilit%C3%A4t_/_Tipps_/_Links#Geteste Ralf Hufnagel (Site) sind Entwickler Television te_Hardware bei easyVDR, welches im Mai 2006 [4] http://www.freiesmagazin.de/freiesMagazin-2009- [24] http://www.vdr-wiki.de/wiki/index.php/Full- von den Hauptverantwortlichen Uwe 07 featured-DVB-Karte Kiehl und Martin Neubauer angesto- [5] http://de.wikipedia.org/wiki/DVB-S [25] http://www.vdr-wiki.de/wiki/index.php/Xxv ßen wurde, um eine umfassende und [6] http://de.wikipedia.org/wiki/DVB-C [26] http://wiki.easy-vdr.de/index.php/Plugins dennoch einfach zu installierende [27] http://wiki.easy-vdr.de/index.php/Kernel [7] http://de.wikipedia.org/wiki/DVB-T VDR-Distribution bereitzustellen. [8] http://de.wikipedia.org/wiki/IPTV [28] http://ftp.gwdg.de/pub/linux/easyvdr/0.8/ easyVDR_0_8_0_full.iso [9] http://de.wikipedia.org/wiki/PCI-E [29] http://www.vdr-wiki.de/wiki/index.php/Reel-HDe [10] http://de.wikipedia.org/wiki/Zeitversetztes_ Fernsehen [30] http://de.wikipedia.org/wiki/Fluxbox Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 15 LINUXALLGEMEIN

Der November im Kernelrückblick von Mathias Menzer

asis aller Distributionen ist der Linux- len Schnittstelle oder den meisten Eingabegerä- dem der Treiber für die auf dem Chip integrierte Kernel, der fortwährend weiterent- ten. Doch derzeit liegt hier einiges an überflüssi- Netzwerk-Hardware aufgenommen wurde. Die- B wickelt wird. Welche Geräte in einem gem Code herum, den aufzuräumen Greg Kroah- ser einzelne Patch war für mehr als die Hälf- halben Jahr unterstützt werden und welche Hartman nun offensichtlich mit tty begonnen hat. te der Änderungen verantwortlich, der Rest war Funktionen neu hinzukommen, erfährt man, in erster Linie kleinen Verbesserungen und Kor- wenn man den aktuellen Entwickler-Kernel im Auch die dritte Entwicklerversion [3] kam mit rekturen geschuldet. Aus diesen stach nach An- Auge behält. relativ wenig spektakulären Änderungen daher. sicht Torvalds noch eine Reihe von Patches aus Ein großer Teil wurde durch Arbeiten an Nou- der Feder von Trond Myklebust, Entwickler im Kernel 2.6.37 veau und Radeon, den freien Treibern für die Dienste von Netapp, hervor, die ein Problem mit Grafik-Chipsätze von NVIDIA und ATI/AMD, in der Darstellung von NFS-Verzeichnissen endgül- Die erste Vorabversion des kommenden Kernels Anspruch genommen. Eine kleines Problem, das tig beheben sollten. Leider hat sich mittlerweile konnte Torvalds bereits am 1. November veröf- in manchen Situationen auch den Endanwen- gezeigt, dass der Effekt, bei dem die zurückgelie- fentlichen (siehe „Der Oktober im Kernelrück- dern zu schaffen machen könnte, wurde von dem ferte Verzeichnisliste leer ist, weiterhin auftreten blick“, freiesMagazin 11/2010 [1]), die unter an- VMware-Entwickler Dmitry Torokhov durch einen kann [7]. Das Problem wurde bei 2.6.37-rc1 zum derem eines großen Teils des mittlerweile unge- Patch behoben: Die Systemabfragetaste, durch ersten Mal berichtet und scheint die Entwickler liebten Big Kernel Locks verlustig wurde. Da dar- die Tastenkombination Alt-SysRq/Druck ausge- noch ein wenig weiter narren zu wollen. auf erst einmal das Linux Kernel Summit und die löst, dient dazu, Befehle unter Umgehung der Linux Plumbers Conference folgten, die einen gu- aktuellen Oberfläche direkt an das System zu Neue Wege für das Scheduling ten Teil der Zeit der Kernel-Hauptentwickler in An- senden, um zum Beispiel einen nicht mehr rea- spruch nahmen, konnte die zwei Wochen später gierenden X-Server zu beenden. Diese Tasten- Immer wieder wird von verschiedenen Seiten dar- erscheinende Version -rc2 [2] nicht allzu viele Än- kombination, auch als Magic SysRq Key [4] be- auf aufmerksam gemacht, dass Linux zwar auf derungen aufweisen. Eine größere Aktion, zumin- kannt, wird allerdings vom Kernel abgefangen Rechnern mit hunderten von Prozessoren gut dest was den Niederschlag in der Menge der ge- und nicht an die Oberfläche weitergeleitet, so- skaliert, das ruckelfreie Abspielen eines Flash- löschten und hinzugekommenen Quelltextzeilen dass beispielsweise Screenshots darüber nicht Videos auf Ein- oder Zweikern-Systemen jedoch betrifft, stellt das Verschieben der tty-Umgebung konfiguriert oder zumindest durchgeführt wer- nicht immer funktioniert – zuletzt von dem An- in einen neuen, eigenen Bereich dar. Der „Tele- den können. Torokhovs Patch behebt diesen Um- ästhesisten und ehemaligen Kernel-Entwickler typewriter“ (Fernschreiber), der die Standardein- stand nun, in dem die Weiterleitung an den User- Con Kolvias, der mit dieser Aussage seinen gabe und -ausgabe verwaltet und an Prozesse space nur unterbunden wird, wenn zu der Tas- Brain Fuck Scheduler [8] vorstellte. Jedoch kön- und Anwendungen weiterreicht beziehungswei- tenkombination eine weitere Taste mit einem gül- nen Verbesserungen der Leistung eines Desktop- se dem Nutzer darstellt, war bisher im Umfeld tigen Befehl betätigt wird. System nicht nur über den Scheduler (siehe des Char-Treibers angesiedelt. Eigentlich wäre Kasten „Kurz erläutert“) erreicht werden, son- das passend, bietet dieser Treiber doch die Ba- 2.6.37-rc4 [5] brachte Ergänzungen der in 2.6.36 dern auch über die Art und Weise, wie die sis für zeichenorientierte Geräte wie der seriel- neu hinzugekommenen Tile64-Architektur [6], in- laufenden Prozesse sortiert werden. Für den

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 16 LINUXALLGEMEIN

Kurz erläutert: „Scheduler“ einer Prozessgruppe laufen, während der Web- LINKS Der Scheduler (zu deutsch etwa: Arbeitspla- browser und das Mail-Programm des Anwenders [1] http://www.freiesmagazin.de/freiesMagazin-2010- ner) ist der Manager des Prozessors. Er ver- in einer anderen zu finden wäre, beide Gruppen 11 teilt die Rechenzeit der CPU möglichst gleich- erhalten jedoch den gleichen Anteil an Rechen- [2] http://lkml.org/lkml/2010/11/15/568 mäßig auf die wartenden Prozesse. Der in aktu- zeit zugeteilt. So wäre dem Nutzer das Surfen [3] http://lkml.org/lkml/2010/11/21/153 ellen Versionen des Linux-Kernels (seit 2.6.24) und Lesen der E-Mail noch möglich, dafür würde [4] http://de.wikipedia.org/wiki/Magic_SysRq_key verwendete Completely Fair Scheduler (CFS) der Vorgang des Kompilierens geringfügig aus- [5] http://lkml.org/lkml/2010/11/30/5 nutzt dazu Gruppen, in denen Prozesse jeweils gebremst. Rechenzeit, die die Browser-E-Mail- [6] http://en.wikipedia.org/wiki/TILE64 eines Nutzers zusammengefasst werden. Je- Gruppe nicht benötigt, würde frei und damit auto- [7] http://lkml.org/lkml/2010/11/30/162 de Gruppe wird mit dem gleichen Anteil an matisch vom Scheduler der Kompilierungsgrup- [8] http://de.wikipedia.org/wiki/Brain_Fuck_ Rechenzeit versehen, sodass jeder Anwender pe zugewiesen. Eben dieser Fall war das Test- Scheduler gleichberechtigt ist, unabhängig von der An- szenario von Torvalds, der sich daraufhin von [9] http://www.heise.de/open/artikel/Kernel-Log- zahl und dem Leistungsbedarf der von ihm ge- Galbraiths Patch durchaus angetan zeigte [10] Flinker-mit-Prozessgruppen-1140656.html starteten Prozesse. Die einem Anwender zuge- und sich sogar dazu hinreißen ließ, das Schedu- [10] http://lkml.org/lkml/2010/11/14/222 teilte CPU-Zeit wird wiederum gleichmäßig auf ling von Gruppen als „Killer-Feature“ zu bezeich- alle in seinem Kontext laufenden Prozesse ver- nen. War die Diskussion um diesen Patch bisher [11] http://lkml.org/lkml/2010/11/16/307 teilt. Wird die verfügbare Rechenzeit von einem sehr umfangreich, so werden Anwender bald in [12] http://www.linux-magazin.de/NEWS/Hardware- Anwender nicht benötigt, so wird sie „zurückge- Kontakt mit „Group Scheduling“ kommen, denn Update-Linux-Quellen-kommen-von-frischen- geben“ und vom Scheduler neu zugewiesen. der Scheduler-Experte des Linux-Kernels, Ingo Servern Molnar, bat Galbraith bereits um die Einsendung Desktop-Nutzer misst sich die Leistung des Sys- des Patches für seinen Kernel-Zweig um ihn in Autoreninformation tems meist durch dessen Antwortverhalten. Rea- 2.6.38 einbringen zu können [11]. giert es prompt auf Maus und Tastatureinga- Mathias Menzer wirft gerne einen ben, ist der Anwender zufrieden, bewegt sich der Neue Server für den Kernel Blick auf die Kernel-Entwicklung, um Mauszeiger jedoch ruckhaft, so ist die Bedien- Die Server, auf denen der Kernel entwickelt wird, mehr über die Funktion von Linux zu möglichkeit eher eingeschränkt. haben nun Verstärkung bekommen [12] – zwei erfahren und um seine Mitmenschen Mike Galbraith verfolgt nun den Ansatz, Prozesse Spiegelserver wurden durch Neugeräte mit je- mit seltsamen Begriffen und unver- zu Gruppen nach Terminal sortiert zusammenzu- weils 66 300GB-Festplatten ersetzt. Daneben ständlichen Abkürzungen verwirren fassen und die CPU-Rechenzeit gleichmäßig auf stehen nun zwei neue Server zur Verfügung, von zu können. diese Gruppen zu verteilen, während innerhalb denen einer als Backup des Master-Servers von der Gruppe die ihr zur Verfügung gestellte Zeit kernel.org fungiert, während der andere parallel wiederum gerecht verteilt wird [9]. Das Kompilie- zu „demeter.kernel.org“, dem Server für den Ker- Diesen Artikel kommentieren ren eines Kernels in 64 parallelen Threads (make nel Bugzilla und die Wikis, laufen und diesem un- -j64) würde zum Beispiel (in einem Terminal) in ter die Arme greifen wird.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 17 PROGRAMMIERUNG

Python-Programmierung: Teil 3 – Funktionen und Module von Daniel Nögel

m vorherigen Teil dieser Reihe den zweiten Parameter usw. Python kümmert (freiesMagazin 11/2010 [1]) wurden Lis- sich dabei automatisch um das Umwandeln der >>> for name in names: ... print u"’{username}’ \ ten, Zeichenketten und die beiden Kon- Datentypen – so können sehr leicht auch Zahlen I ... hat {namelength} \ trollstrukturen if und while behandelt. Die- in Zeichenketten eingefügt werden, ohne dass ... Buchstaben".format(\ ses Mal werden mit Funktionen und Modulen sich der Benutzer um irgendwelche Umwandlun- ... username=name, \ zwei wichtige Möglichkeiten vorgestellt, um gen zu kümmern hätte. Folgendes Beispiel dient ... namelength=len(name)) eigene Python-Projekte zu strukturieren und zur Veranschaulichung: wiederverwendbar zu machen. Zunächst sol- len aber noch die versprochenen Ersetzun- >>> names = [u"Karl", u"Bernd", u"Hannes", u"Ina" ] gen bei Zeichenketten besprochen werden. >>> for name in names: Mit den „Dictionaries“ wird zudem ein weite- ... print u"’{0}’ hat {1} Buchstaben".format(name, len(name)) rer wichtiger Datentyp in Python vorgestellt. Hinweis: Wie in den Artikeln zuvor steht >>> So lässt sich etwa festlegen, wie viele Nachkom- Substitution von Zeichenketten für eine Eingabe in der Python-Shell und muss mastellen ausgegeben werden sollen, ob und nicht mit eingegeben werden. Mit drei Punkten wie viele Leerzeichen der Zeichenkette vorange- In den letzten beiden Teilen dieser Reihe wurden ... zeigt die Shell an, dass ein Befehl noch nicht stellt werden sollen und vieles mehr [2]. schon mehrfach einfache Zeichenketten erstellt. abgeschlossen ist und sich über mehrere Zeilen Achtung: In Zeichenketten, die mit format() for- In der Regel möchte man aber nicht nur bloße erstreckt. Diese Punkte müssen ebenfalls nicht matiert werden, werden alle geschweiften Klam- Zeichenketten ausgeben, sondern bestimmte dy- mit eingeben werden. namische Informationen darin transportieren, et- mern als Ersetzungszeichen interpretiert. Folgen- wa den Namen des Benutzers. Dies funktioniert Die Ausgabe des obigen Beispiels lautet: de Zeile wird also zu einem Fehler führen: in Python so, dass man zunächst Platzhalter in ’Karl’ hat 4 Buchstaben >>> print u"{0} mag Klammern wie \ der Zeichenkette definiert und diese später mit ’Bernd’ hat 5 Buchstaben ... { oder }".format(u"Bernd") der format()-Methode gegen den gewünschten ’Hannes’ hat 6 Buchstaben Traceback (most recent call last): Inhalt austauscht (substituiert). ’Ina’ hat 3 Buchstaben File "", line 1, in >>> message = u"Hallo {0}, du hast {1} Euro y KeyError: u’ oder ’ im Portemonnaie.".format(u"Karl", 10) Bisher wurden nur positionale Argu- {0} >>> print message mente verwendet, das heißt: ver- Hier müssen die letzten beiden Klammern mas- Hallo Karl, du hast 10 Euro im Portemonnaie. weist jeweils auf den ersten Parame- kiert werden: ter von format(), {1} auf den zwei- Die Methode format() ersetzt also die Zeichen- ten etc. Um die Übersicht zu wahren, ist auch die >>> print u"{0} mag Klammern wie {{y folge {0} innerhalb der Zeichenkette durch den Angabe von Namen möglich. format() erlaubt oder }}".format(u"Bernd") ersten Parameter, die Zeichenfolge {1} durch dabei eine sehr weitreichende Formatierung: Bernd mag Klammern wie { oder }

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 18 PROGRAMMIERUNG

Doppelte geschweifte Klammern werden also Wie also auch Listen lassen sich Dicts initial be- In manchen Situationen ist es aber vielleicht gar von der format()-Methode ignoriert. füllen. Die Namen sind in diesem Beispiel je- nicht so wichtig, ob ein bestimmter Eintrag nun in weils die Schlüssel, das Alter der dazugehörige einem Dict vorhanden ist oder nicht. Für solche Dictionaries Wert. Schlüssel und Wert werden durch einen Fälle gibt es die get()-Methode von Dicts: Sogenannte „Dictionaries“ oder „Dicts“ werden in Doppelpunkt getrennt, mehrere Schlüssel/Wert- 1 >>> print persons.get(u"Hans", 15) anderen Sprachen oft „Hashes“ oder „assoziati- Paare durch Kommata. 2 15 ve Arrays“ genannt. Wie auch Listen können Dic- 3 >>> print persons.get(u"Peter", 5) Um das Alter von Peter aus dem Dict auszulesen, tionaries beliebige andere Datentypen verwalten. 4 18 genügt folgender Aufruf: Während Listen aber ihre Einträge intern mit fort- laufenden Nummern adressieren (die sogenann- >>> print persons[u"Peter"] Die Methode get() erwartet als ersten Parame- ten Indizes), können die Einträge in Dictionaries 18 ter einen beliebigen Schlüssel. Ist der Schlüs- mit Zeichenketten, beliebigen Zahlen oder ande- sel im Dict vorhanden, wird der dazugehörige ren Datentypen adressiert werden. Somit besteht Es fällt auf: Obwohl Dicts mit geschweiften Klam- Wert zurückgegeben. Andernfalls wird der zwei- jedes Dictionary aus zwei wesentlichen Elemen- mern erstellt werden, wird – wie auch bei Lis- te Parameter (in Zeile 1 also 15) zurückgegeben. ten: Schlüsseln (keys) und Werten (values). ten – mit eckigen Klammern auf die Werte zuge- So lassen sich beispielsweise Standardwerte für griffen. Auch sonst gibt es einige Parallelen zwi- nicht vorhandene Schlüssel implementieren. Ein leeres Dict wird in Python entweder mit der schen Dictionaries und Listen. Um beispielswei- Gut zu sehen ist, dass der Aufruf in Zeile 3 nicht Funktion dict() oder zwei geschweiften Klam- se zu überprüfen, ob der Eintrag Hans in einem 5, sondern 18 zurück gibt, denn dieser Wert wur- mern erstellt [3]: Dict vorhanden ist, wird ebenfalls der Operator de oben dem Schlüssel Peter zugewiesen. >>> persons = dict() in genutzt: Der zweite Parameter der Methode get() ist op- >>> if u"Hans" in persons: und ... print persons[u"Hans"] tional: Er muss nicht angegeben werden. Wird kein zweiter Parameter angegeben, gibt die Me- >>> persons = {} ... else: ... print u"Der Eintrag Hans \ thode None zurück, wenn der gesuchte Schlüssel ... ist nicht vorhanden" im Dict nicht vorhanden ist: sind also äquivalent. >>> print persons.get(u"Anke") Während der in-Operator aber bei Listen das Vor- In folgendem Beispiel sollen nun verschiedene None Personen und ihr jeweiliges Alter in einer Da- handensein des Wertes Hans abfragt, bezieht sich der Operator bei Dicts auf den Schlüssel tenstruktur gespeichert werden. Dies könnte wie Natürlich können auch jederzeit weitere Einträge Hans. Ebenso wie bei Listen führt der Zugriff auf folgt aussehen: zu Dicts hinzugefügt oder bestehende Einträge ein nicht vorhandenes Element/Schlüssel zu ei- verändert werden: >>> persons = {u"Peter":18, \ nem Fehler. Wie man derartige Fehler sehr leicht ... u"Ilse":87, u"Juergen":33, \ abfängt, wird in einem der folgenden Teile be- 1 >>> persons[u"Peter"] = 99 ... u"Jutta":25} sprochen werden. 2 >>> print persons[u"Peter"]

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 19 PROGRAMMIERUNG

3 99 Dieser Aufruf irritiert vielleicht zunächst. Etwas Insgesamt eignen sich Dicts hervorragend, 4 >>> persons[u"Hans"] = 15 verständlicher (aber länger) ist folgende Vorge- um Datenstrukturen wie Wörterbücher oder 5 >>> print persons[u"Hans"] hensweise: Adressbücher abzubilden. Überall dort, wo 6 15 Informationen über bestimmte Schlüssel zu- 1 >>> peters_data = addresses[u"Peter"] gänglich sein sollen, empfiehlt sich die Ver- 2 >>> type(peters_data) In Zeile 1 wird das Alter von Peter auf 99 verän- wendung von Dictionaries. dert. In Zeile 4 wird der Eintrag Hans hinzugefügt. 3 4 >>> peters_data[u"street"] Ebenso wie über Listen kann sehr leicht über Dictionaries lassen sich – ebenso wie Listen – 5 ’Musterstr. 16’ Dicts iteriert werden. Dabei ist aber zu beach- auch sehr leicht verschachteln. In folgendem Bei- ten, dass Dicts keine feste Reihenfolge ken- spiel wird ein verschachteltes Dict genutzt, um In Zeile 1 wird der zum Schlüssel Peter gehöri- nen: Es gibt also keine Garantie dafür, dass die ein kleines Adressbuch zu implementieren: ge Wert der Variable peters_data zugewiesen. Schlüssel eines Dicts beim Iterieren in der Rei- 1 >>> addresses = { henfolge durchlaufen werden, in der sie erstellt 2 ... u"Peter":{u"street":"Musterstr. 16", u"mobile":"0151/123 456"}, wurden [4]. 3 ... u"Jutta":{u"street":"Beispielstr. 99", u"mobile":"0151/33 44 55"}, 4 ...} Funktionen Funktionen sind ein wichtiges Strukturierungs- Hier wird – zur besseren Lesbarkeit über meh- Dieser Wert ist wiederum ein Dict mit den zu merkmal moderner Programmiersprachen. rere Zeilen verteilt – ein verschachteltes Dict er- Peter gehörigen Adressdaten (siehe obiges Bei- Durch sie können häufig benötigte Arbeitsschrit- stellt. In Zeile 1 wird dem Namen addresses ein spiel). Zeile 2 und 3 zeigen, dass die Variable te leicht wiederverwertet werden. Damit dienen Dict zugewiesen. Dieses wird dabei direkt initial peters_data auf ein Dict zeigt. In Zeile 4 und 5 sie auch der Lesbarkeit und Wartbarkeit des befüllt. Den Schlüsseln Peter und Jutta wird da- wird nun wiederum der Schlüssel street dieses Quelltextes. bei nicht wie oben ihr Alter als Wert zugeteilt, son- zweiten Dicts ausgegeben. dern es dienen Dicts als Werte. Aus dem Ausdruck Eine Funktion wird in Python wie folgt deklariert: Der Aufruf def say_hallo(): >>> print addresses[u"Peter"][u"y >>> print addresses[u"Peter"] street"] print u"Hallo" gibt nun das dazugehörige Dict zurück: wird also zunächst Diese Funktion kann nun einfach mit say_hallo() aufgerufen werden und wird bei {u’mobile’: ’0151/123 456’, u’street’: ’Musterstr. 16’} jedem Aufruf die Meldung Hallo auf dem Bild- schirm ausgeben. Das Schlüsselwort def leitet Auf dieses Dict kann auch direkt zugegriffen wer- {u"street":u"Musterstr. 16", u"y den: mobile":"0151/123 456"}[u"street"] hierbei die Deklaration einer Funktion ein, da- nach folgt der Name der Funktion, der nach dem >>> print addresses[u"Peter"][u"street"] was schließlich auf den Wert Musterstr. Paar runden Klammern mit einem Doppelpunkt Musterstr. 16 16 verweist. abgeschlossen wird. Zu beachten ist, dass der

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 20 PROGRAMMIERUNG

Rumpf von Funktionen einzurücken ist – wie bei die zweite Zeile die übergebene Zeichenkette mit 5 allen Kontrollstrukturen in Python. Gleichheitszeichen links und rechts, die dritte Zei- 6 print u"start" le schließlich erneut nur Gleichheitszeichen. 7 test() Natürlich handelt es sich bei dem obigen Beispiel 8 print u"ende" noch um eine sehr einfache Funktion. Folgende Neu ist das Schlüsselwort return – es gibt den Funktion greift ein Beispiel aus Teil 1 dieser Rei- nachfolgenden Ausdruck (hier: output) zurück. Dieses Beispiel gibt nur die folgende Meldung he wieder auf und wird beliebige Zeichenketten Wird diese Funktion nun aufgerufen, ge- aus: mit einer Box aus Leerzeichen umgeben: schieht zunächst scheinbar nichts. Die Funktion start 1 def boxify(text): Hallo! 2 text_with_borders = u"= {0} =".format(text) ende 3 line = len(text_with_borders) * u"=" 4 Die Zeile 4 (Dies ist ein Test) kommt nie- 5 output = u"{0}\n{1}\n{2}".format(line, text_with_borders, line) mals zur Ausführung. Gut zu sehen ist auch, 6 return output in welcher Reihenfolge die Anweisungen ausge- führt werden: Zwar wird in den Zeilen 1 bis 4 die In Zeile 1 wird – wie gehabt – eine Funktion de- boxify() macht keine Bildschirmausgaben, son- Funktion definiert – sie wird aber noch nicht aus- finiert. Sie hat den namen boxify und erwartet dern gibt nur eine Zeichenkette zurück. Diese geführt. Es muss also immer zwischen der „De- genau einen Parameter (hier: text). Es können muss also noch an die print()-Funktion weiter- klaration“ einer Funktion und dem „Aufruf“ dersel- prinzipiell natürlich beliebig viele Parameter im gegeben werden: ben unterschieden werden. Zuerst wird hier dem- Funktionskopf definiert werden – getrennt wer- nach die Meldung start ausgegeben. Dann wird >>> print boxify(u"Mein Haus, mein den sie durch Kommata. y die Funktion aufgerufen und abgearbeitet – die Garten, meine Box") Meldung Hallo! erscheint. Durch die Anweisung In Zeile 2 wird links und rechts der übergebenen ======Mein Haus, mein Garten, meine Box = return wird der Programmfluss nun in Zeile 8 Zeichenkette text ein Gleichheits- und Leerzei- ======fortgesetzt – ende wird ausgegeben. chen eingefügt, in Zeile 3 wird eine Zeichenket- te erstellt, die ausschließlich Gleichheitszeichen Eine Besonderheit ist bei return noch zu beach- Zu beachten ist, dass Funktionen keine return- enthält. ten: Die Anweisung bricht die Funktion sofort ab Anweisung haben müssen – haben sie keine, und liefert einen Rückgabewert – nachfolgende kehrt der Programmfluss nach dem Abarbeiten Zeile 5 wirkt nur auf den ersten Blick kompli- Codezeilen der Funktion werden nicht mehr aus- des Funktionsrumpfes zum Ausgangspunkt zu- ziert: Wie bereits in Teil 2 dieser Reihe erör- geführt: rück. Der Rückgabewert der Funktion ist dann tert wurde, handelt es sich bei der Zeichenfol- None. ge \n um eine sogenannte Escape-Sequenz, die 1 def test(): einen Zeilenumbruch erzeugt. Somit beinhaltet 2 print u"Hallo!" Eine weiteres wichtiges Element von Funktionen die Zeichenkette output drei Zeilen: Die erste 3 return sind Standardparameter. Sie werden durch ein Zeile enthält ausschließlich Gleichheitszeichen, 4 print u"Dies ist ein Test" Gleichheitszeichen definiert:

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 21 PROGRAMMIERUNG

Als Beispiel sei die folgende def say_something(what, who=u"Karl"): (nicht besonders schöne) Funk- print_info(u"Jutta", age=25) print u"{0} sagt: ’{1}’".format(who, what) tion gegeben, bei der die Argu- Der erste Parameter ist positional: Hier wird mente alle in einer bestimmten say_something(u"Hi") der Name übergeben. Da alle anderen Parame- say_something(u"Tach auch", u"Bernd") Reihenfolge angegeben werden ter optional sind, werden sie einfach ausgelas- müssen: sen. Lediglich der age-Parameter wird noch als Der Parameter what ist obligatorisch – bei je- def print_a_lot(name, country, street, adress, mobile, age, sex, hobbies): dem Funktionsaufruf muss er angegeben wer- print u"{name} stammt aus {country} ...".format(name=name, country=country) den, sonst kommt es zu einem Fehler. Der zwei- te Parameter hingegen ist optional: Wird er nicht Statt hier nun die erforderlichen Argumente im- Schlüsselwort-Argument übergeben. angegeben, erhält er automatisch den Wert Karl. mer in der einzig richtigen Reihenfolge anzuge- In Python sind auch Funktionen ganz normale Entsprechend gibt obiges Skript folgende Ausga- ben, gibt es noch die Möglichkeit, die Argumente Objekte. Auch sie lassen sich damit beispielswei- be aus: per Schlüsselwort zu übergeben: se an Namen binden:

Karl sagt: ’Hi’ print_a_lot(name=u"Bernd", age=18, y 1 >>> from operator import add Bernd sagt: ’Tach auch’ sex=u"m", street=u"Musterstrasse", y 2 >>> add(1, 3) adress=18, country=u"Deutschland", y 3 4 Wichtig ist: Bei der Funktionsdefinition müssen mobile=u"0151-123456789", hobbies=uy 4 >>> plus = add zuerst immer die obligatorischen Parameter an- "lesen") 5 >>> plus gegeben werden. Die Funktion 6 Diese Art des Aufrufes kann die Lesbarkeit von 7 >>> plus(1, 3) def say_something(who="Karl", what): Quelltexten enorm erhöhen. 8 4 ... def print_info(name, country=None, street=None, adress=None, mobile=None, y führt also zu einem Fehler beim Versuch, das age=None, sex=None, hobbies=None): Skript auszuführen. if age: print u"Hallo {0}! Du bist {1} Jahre alt!".format(name, age) Parameter an Funktionen übergeben else: In den obigen Beispielen wurden bereits ver- print u"Hallo {0}".format(name) schiedene Parameter an die Funktionen überge- ben. Etwa Tach auch und Bernd an die Funk- Die Funktion print_info() unterscheidet sich Achtung: Wichtig ist hier, dass die Funktion tion say_something(). In dem Beispiel muss von print_a_lot() darin, dass alle Parameter in Zeile 5 ohne runde Klammern an einen Na- sich der Programmierer peinlich genau an die im bis auf name optional sind – sie müssen nicht an- men gebunden wird. Andernfalls würde die Funk- Funktionskopf definierte Reihenfolge halten. Die gegeben werden. Wird aber ein Alter übergeben tion aufgerufen und das Ergebnis an den Na- Parameter sind also abhängig von der Position – (age), wird zusätzlich zum Namen auch das Alter men gebunden werden. Anders gesagt: Mit Klam- sie sind „positional“. ausgegeben. Der Aufruf ist: mern wird eine Funktion aufgerufen, ohne Klam-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 22 PROGRAMMIERUNG mern wird das Funktionsobjekt angesprochen, 6 for entry in files: Skriptes wird ausgeführt und zeigt die Zahl der die Funktion aber nicht ausgeführt. 7 if os.path.isfile(entry): Dateien im aktuellen Verzeichnis an. 8 counter+=1 In Zeile 1 wird zunächst die Funktion add() 9 Es gibt auch eine Möglichkeit, Funktionen aus aus dem Modul operator importiert (siehe dazu 10 print u"Es gibt {0} Dateien in y Modulen so zu importieren, dass sie im Skript nächster Abschnitt). Die Funktion add() addiert diesem Verzeichnis".format(y direkt verfügbar sind – mit der Anweisung from – wie der Operator + – zwei Zahlen. Sie stellt die counter) MODUL import FUNKTION/OBJEKT. So könnte gleiche Funktionalität nur als Funktion zur Verfü- es im obigen Beispiel etwa heißen: gung (Zeile 3). In Zeile 1 wird der Interpreter angewiesen, das from os import listdir Modul os im jetzigen Skript verfügbar zu machen. In Zeile 5 wird die Funktion add() zunächst an Dieses Modul enthält verschiedene Funktionen den Namen plus gebunden. In Zeile 6 und 7 Allerdings müsste dann auch Zeile 5 ange- zum Kopieren, Verschieben oder Löschen von wird gezeigt, dass der Name plus noch immer passt werden: Da durch den from-Import die Dateien. Auch das Auflisten des aktuellen Ver- auf die Funktion add() verweist – add und plus listdir()-Funktion direkt im Namensraum [5] zeichnisinhaltes gehört dazu [6]. sind identisch. des Skriptes verfügbar ist, müsste die Zeile nun wie folgt lauten: In Zeile 9 wird deutlich, dass man an Namen ge- In Zeile 5 wird die Funktion listdir() des Mo- bundene Funktionen genau so wie normale Funk- dules os aufgerufen. Der Parameter . verweist files = listdir(".") tionen aufrufen kann. Am Ende dieses Teils wird auf das aktuelle Verzeichnis. Die Funktion erstellt diese Technik an einem praktischen Beispiel ver- eine Liste mit allen Dateien und Ordnern des ak- Das sieht auf den ersten Blick sehr bequem aus, anschaulicht. tuellen Verzeichnisses und gibt diese Liste zu- führt aber jetzt in Zeile 7 zu Problemen: Da nur rück. Die Variable files zeigt nun auf diese Lis- die Funktion listdir importiert wurde, ist ein Zu- Module te. griff auf die Funktion os.path.isfile nicht mög- Module bieten eine einfache Möglichkeit, seine lich. Diese Funktion müsste nun zusätzlich impor- In Zeile 6 wird eine for-Schleife definiert, die Skripte um zusätzliche Funktionen zu erweitern. tiert werden. über die zuvor erstellte Liste iteriert. In Zeile 7 Es wurde bereits angesprochen, dass Python mit wird überprüft, ob es sich bei dem jeweiligen Ein- Das Importieren von einzelnen Funktionen hat einer Vielzahl zusätzlicher Bibliotheken ausgelie- trag um eine Datei oder ein Verzeichnis handelt – noch andere Nachteile [7]: So erschwert es fert wird – diese Bibliotheken heißen in Python auch dazu wird eine Funktion aus dem Modul os die Verständlichkeit des Quelltextes, da Frem- Module. Sie werden durch den Befehl import in genutzt. Falls es sich um eine Datei handelt, gibt de nicht wissen, ob mit listdir hier die Funk- ein eigenes Skript eingebunden [5]: diese Funktion True zurück, andernfalls False. tion aus dem os-Modul gemeint ist oder viel- 1 import os Nur im ersten Fall ist die if-Bedingung wahr und leicht irgendwo im Quelltext noch eine eigene 2 der Zähler wird erhöht. listdir-Funktion zu finden ist, die etwas ganz 3 counter = 0 anderes macht. In aller Regel sollte daher von 4 Nach dem Durchlauf der Schleife setzt der nor- from-Importen abgesehen und die zusätzliche 5 files = os.listdir(".") male Programmfluss fort – die letzte Zeile des Schreibarbeit in Kauf genommen werden.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 23 PROGRAMMIERUNG

Was es nicht alles gibt Ein Python-Modul ist zunächst nämlich nichts an- Um dieses Modul nun verwenden zu können, Das os-Modul erscheint noch recht bodenstän- deres als eine Textdatei mit der Endung .py. Die wird eine weitere Python-Datei im selben Ver- dig: Bisher wurde damit der Inhalt eines Ver- oben besprochene Funktion boxify() soll im zeichnis erstellt: myprog.py (siehe oben). zeichnisses aufgelistet und überprüft, ob eine be- Folgenden in ein eigenes Modul ausgegliedert stimmte Datei ein Ordner oder eine Datei ist. Dar- werden. In Zeile 4 wird das selbst erstellte Box-Modul im- portiert. In Zeile 6 wird der Benutzer zur Eingabe über hinaus gibt es aber Module für grafische box.py Diese obigen Zeilen werden in die Datei seines Namens aufgefordert. In Zeile 7 schließ- Oberflächen [8], für Datenbanken [9], für die Bild- gespeichert. Die ersten beiden Zeilen wurden be- bearbeitung [10] oder für mathematische und wis- lich wird die Funktion boxify() aus dem box- reits im ersten Teil dieser Reihe besprochen: Es Modul mit dem eingegebenen Namen aufgeru- senschaftliche Anforderungen [11]. Es gibt Mo- handelt sich um die Shebang-Zeile und um die dule, um Spiele zu programmieren [12], Module, fen. Das Resultat wird mit print auf dem Bild- Angabe der Zeichenkodierung. Auch die Funk- schirm ausgegeben. um automatisiert Eingaben in Webseiten vorzu- tion boxify() sollte mittlerweile hinlänglich be- nehmen [13], Module für Mediendateien [14], für kannt sein. Einschränkungen und Erweiterungen IMAP [15] oder sogar BitTorrent [16]. Nicht alle diese Module gehören dabei zum Standardum- Damit wurde nun das Modul box erstellt. Der Mo- Der Python-Interpreter hat eine recht genaue fang [17] der Sprache – die fehlenden lassen sich dulname entspricht also immer dem Dateinamen Vorstellung davon, in welchen Verzeichnissen aber leicht über die Paketquellen oder das eigens abzüglich der Endung .py. sich ein Modul befinden darf [18]. Befindet sich das Modul nicht in einem dieser Verzeichnis- für Python entwickelte EasyInstall-System instal- 1 #! /usr/bin/env python se, kommt es zu einem Fehler. Der Python- lieren. 2 # -*- coding: utf-8 -*- Interpreter schaut aber zusätzlich auch immer in 3 Module selbst gemacht 4 import box das Programmverzeichnis – hier also etwa in das Es stellt sich nun natürlich die Frage, wie sich der- 5 Verzeichnis der Datei myprog.py. So lange die selbst erstellten Module in diesem Verzeichnis zu artige Module selbst erstellen lassen. Die meis- 6 name = unicode(raw_input(u"Bitte y ten Leser dieser Reihe werden dabei vermutlich Namen eingeben: ")) finden sind, befindet sich der Anfänger also auf schon lange das eine oder andere Python-Modul 7 print box.boxify(name) der sicheren Seite. erstellt haben: Listing 2: myprog.py Eine Erweiterung des Modul-Systems stellen die 1 #! /usr/bin/env python sogenannten „Packages“ dar [19]. Damit lassen 2 # -*- coding: utf-8 -*- sich verschiedene zusammengehörige Module 3 bündeln und strukturieren. In dieser Einführung 4 def boxify(text): 5 text_with_borders = u"= {0} =".format(text) wird aber auf eine weitergehende Behandlung 6 line = len(text_with_borders) * u"=" dieser Thematik verzichtet. Wer aber größere Bi- 7 bliotheken programmieren möchte oder eine gan- 8 output = u"{0}\n{1}\n{2}".format(line, text_with_borders, line) ze „Werkzeugsammlung“ in Modulen organisie- 9 return output ren will, sollte sich Packages einmal näher anse- Listing 1: box.py hen [20].

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 24 PROGRAMMIERUNG

Nachdem nun Listen, Dictionaries, Zeichenket- 23 user_command = unicode(y In Zeile 6 wird die Funktion info() definiert. Das ten, Module, Funktionen und verschiedene Kon- raw_input("calc: ")) Sternchen (*) vor dem Parameter args führt da- trollstrukturen in den ersten drei Teilen dieser Ein- 24 tokens = user_command.y zu, dass die Funktion beliebig viele (positionale) führung besprochen wurden, sollen im nächsten split() Argumente akzeptiert und diese als Liste args Teil Klassen vorgestellt werden. 25 command = tokens[0] bereitstellt. Keine Sorge: Dieses Vorgehen dient 26 arg_a, arg_b = None, None in diesem Fall nur dazu, den Taschenrechner un- 27 if len(tokens) > 1: empfindlicher gegen Fehleingaben zu machen. Praktisches Beispiel: Der Taschen- 28 arg_a = int(tokens y Die Funktion ignoriert alle Parameter und gibt le- [1]) rechner diglich alle möglichen Befehle durch Kommata 29 arg_b = int(tokensy In folgendem Beispiel kommen verschiedene be- [2]) getrennt aus (Zeile 8). reits erlernte Techniken zum Einsatz. 30 print tokens 31 if command == u"quit": In Zeile 11 wird ein Dict definiert und initial befüllt. 1 #!/usr/bin/env python 32 return Den Schlüsseln werden hier Funktionen als Wer- 2 # -*- coding: utf-8 -*- 33 elif command in dispatch: te zugewiesen. Oder anders: Die Funktionen wer- 3 34 result = dispatch[y den an Schlüssel des Dicts gebunden. Ein Aufruf 4 from operator import add, sub, y command](arg_a, arg_by von dispatch["plus"](4+1) ist im Folgenden mul, div ) also identisch mit einem Aufruf von add(4, 1). 5 35 print ">>> {0}".y In Zeile 13, 17 und 18 ist zu sehen, dass die 6 def info(*args): format(result) Funktion add gleich mehreren Dict-Schlüsseln 7 print "Moegliche Befehle:" 36 else: zugewiesen wird. Jeder Dict-Schlüssel ist dabei 8 print ",".join(dispatch) 37 print "Unbekanntes y ein möglicher Befehl. Der Benutzer wird später 9 print "Syntax: BEFEHL [ y Kommando ’{0}’".y also mit addiere, add und plus gleichermaßen PARAM_APARAM_B]" format(command) 10 addieren können. 38 print "Tippe ’help ’ y 11 dispatch = { fuer Hilfe." 12 u"help": info , Das Herzstück des Taschenrechners ist die Funk- 39 tion parse(), die in Zeile 21 definiert wird. In Zei- 13 u"add": add, 40 if __name__ == "__main__": le 22 wird weiterhin eine Schleife implementiert. 14 u"sub": sub, 41 parser() 15 u"mul": mul, Da die Bedingung True immer wahr ist, handelt es sich hierbei erst einmal (scheinbar) um eine 16 u"div": div, Listing 3: calc.py 17 u"addiere": add, Endlosschleife. 18 u"plus": add 19 } In Zeile 4 werden die Funktionen add, sub, mul In Zeile 23 wird eine Benutzereingabe eingele- 20 und div aus dem Modul operator importiert. sen. Diese könnte etwa wie folgt aussehen: 21 def parser(): Sie stellen die Funktionalität der Operatoren +, -, 22 while True: * und / als Funktion zur Verfügung (siehe oben). add 3 7

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 25 PROGRAMMIERUNG

In Zeile 24 wird diese Benutzereingabe durch die im Dict dispatch (Zeile 11) vorhanden ist. In Zei- Funktion info kein Rückgabewert festgelegt wur- Funktion split() aufgeteilt. Da diese Funktion le 34 geschieht nun die eigentlich „Magie“ des Ta- de, gibt sie immer None zurück. hier ohne Parameter aufgerufen wird, teilt sie die schenrechners: Zeichenkette bei allen Leerräumen (Whitespace- In Zeile 36-38 wird nun schließlich für den Fall Zeichen). Die Eingabe von add 3 7 würde so zur result = dispatch[command](arg_a, y vorgesorgt, dass BEFEHL nicht im Dict dispatch arg_b) Liste ["add", "3", "7"] führen, die dem Na- vorkommt. Dann hat der Benutzer eine ungültige men tokens zugewiesen wird. Eingabe gemacht und wird darauf hingewiesen. Abhängig vom Inhalt der Variable command wird In Zeile 25 wird das erste Element der Liste (der nun der dazugehörige Schlüssel im Dict ange- Der if-Block in Zeile 40 f. stellt schließlich sicher, Befehl) dem Namen command zugewiesen. Wei- sprochen. Da diesen Schlüsseln aber in Zei- dass die Funktion parser() nur ausgeführt wird, terhin werden zwei Variablen arg_a und arg_b le 11 ff. Funktionen zugewiesen wurden, wird wenn das Python-Skript direkt gestartet wurde. erstellt. Sie sollen später die Zahlen enthalten, mit der Anweisung dispatch[command] abhän- Würde man das Skript als Modul importieren (sie- die addiert werden sollen, zeigen aber zunächst ging von command eine Funktion angesprochen. he oben), würde der Taschenrechner nicht auto- nur auf None. Die Klammern hinter dieser Anweisung (arg_a, matisch ausgeführt werden. arg_b) enthalten also die Parameter für diese Zeile 27 testet, ob die Liste tokens mehr als Funktion. Das Ergebnis der jeweiligen Funktion Natürlich wirkt dieser Taschenrechner auf den nur ein Element enthält. Ist dies der Fall, werden ist nun über die Variable result verfügbar. ersten Blick sehr kompliziert. Er zeigt aber, das zweite und dritte Element der Eingabe (al- warum das Binden von Funktionen an Namen so 3 und 7, wenn man vom obigen Beispiel aus- Was passiert hier also? Der Taschenrechner liest (oder hier: Dict-Schlüssel) sehr sinnvoll sein geht) mit der int()-Funktion in Zahl-Objekte um- Benutzereingaben in der Form BEFEHL ZAHL1 kann. Ohne diese Technik müsste der Program- gewandelt und den Namen arg_a bzw. arg_b zu- ZAHL2 ein. Ist nun BEFEHL ein Schlüssel im Dict mierer jede Eingabe von Hand auswerten: gewiesen. In Zeile 30 wird die Liste tokens aus- dispatch, wird die dazugehörige Funktion auf- if command == "add" or command == " gegeben. gerufen. Der Befehl addiere würde somit zum y addiere" or command == "plus": Aufruf der Funktion add führen, der Befehl info result = arg_a + arg_b In Zeile 30 ff. findet sich nun eine if- zum Aufruf der Funktion info. Die Eingaben elif command == "sub": Kontrollstruktur. Nach der Eingabe von quit soll ZAHL1 und ZAHL2 werden dabei jeweils als Pa- result = arg_a - arg_b das Programm beendet werden. Dazu wird mit rameter übergeben. Dies ist auch der Grund, elif command == "div": dem Schlüsselwort return die Abarbeitung der warum die in Zeile 6 definierte Funktion info mit result = arg_a / arg_b Funktion parse direkt unterbrochen. Die in Zeile *args beliebig viele Parameter übernimmt. So elif command == "mul": 22 definierte „Endlosschleife“ verfügt damit also reagierte sie tolerant auf eventuelle Falschanga- result = arg_a * arg_b doch über eine Abbruchbedingung. ben des Benutzers, denn diese werden in jedem elif command == "info": Fall an die Funktion übergeben. info() Das Schlüsselwort elif in Zeile 33 wurde auch elif command == "quit": bereits besprochen. Es wird getestet, ob die ers- In Zeile 35 wird das Ergebnis der aufgerufenen return te Benutzereingabe (add im vorherigen Beispiel) Funktionen formatiert und ausgegeben. Da in der else:

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 26 PROGRAMMIERUNG

print "Unbekanntes Kommando y [7] http://effbot.org/zone/import-confusion.htm [19] http://docs.python.org/tutorial/modules.html# ’{0}’".format(command) [8] http://de.wikipedia.org/wiki/Liste_von_GUI- packages print "Tippe ’help’ fuer Hilfey Bibliotheken#Python [20] http://docs.python.org/distutils/index.html ." [9] http://initd.org/tracker/pysqlite [10] http://www.pythonware.com/products/pil/ print ">>> {0}".format(result) Autoreninformation [11] http://www.scipy.org/ LINKS [12] http://www.pygame.org/news.html Daniel Nögel (Blog) beschäftigt sich [13] http://wwwsearch.sourceforge.net/mechanize/ seit drei Jahren mit Python. Ihn über- [1] http://www.freiesmagazin.de/freiesMagazin-2010- [14] http://pymedia.org/ zeugt besonders die intuitive Syntax 11 [15] http://docs.python.org/library/imaplib.html und die Vielzahl der unterstützten [2] http://docs.python.org/library/string.html#format- [16] http://www.rasterbar.com/products/libtorrent/ Bibliotheken, die Python auf dem string-syntax python_binding.html Linux-Desktop zu einem wahren [3] http://docs.python.org/tutorial/datastructures. [17] http://docs.python.org/modindex.html Multitalent machen. html#dictionaries [18] http://docs.python.org/using/cmdline.html#envvar- [4] http://www.python.org/dev/peps/pep-0372/ PYTHONPATH [5] http://docs.python.org/tutorial/modules.html [6] http://docs.python.org/library/os.html Diesen Artikel kommentieren

„Lithium Batteries“ © by Randall Munroe (CC-BY-NC-2.5), http://xkcd.com/560

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 27 BILDBEARBEITUNG

Bildformat SVG verstehen von Stefan Ohri

eit das W3C [1] vor neun Jahren die erste Spezifikation herausgab, hat sich die skalierbare Vektorgrafik (kurz S populärste Format für Grafiken und die Icons der grafischen Linux-Oberflächen liefern ne- Beispiel Mahuri.svg von Wikimedia. Kauderwelsch anzeigt, wenn es in einem Textedi- © Niabot(CC-BY-3.0) tor geöffnet wird, erwartet einem bei einem SVG- Dieses Beispielbild gibt gut wieder, was mit SVG ist, wie man sich denken kann, ungleich komple- Kreise, Rechtecke und freie Linien, Farbverläufe, ..... Transparenzen und vieles mehr beschreiben und Text und Rastergrafiken einbinden. Der Text wird Anfang eines in geöffneten PNG-Bildes. Listing 1: Der Anfang der Datei Mahuri.svg. dann von einem Interpreter (z.B. einen Webbrow-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 28 BILDBEARBEITUNG ser) Zeile für Zeile gelesen und dargestellt. Die Dies erzeugt eine Fläche mit je 300 Pixel Breite Innerhalb dieses Rechtecks werden dann die Ei- jeweils letzte Zeile wird also zuoberst gezeichnet. und Höhe. genschaften des Rechtecks festgelegt. Zuerst sollte man bestimmen, wo das Rechteck beginnt. Grundlagen Hinweis: In den folgenden Beispielen werden die Als Beispiel setzt man ein zweites Rechteck auf Ein einfaches SVG, ohne jeglichen Inhalt, er- XML- und SVG-Deklarationen aus Platzgründen die bestehende Bildfläche: zeugt man mit den folgenden Zeilen: weggelassen, die Beispiele werden zwischen die -Tags eingefügt. width="250px" height="250px" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> Die Fläche ist noch Größe wie die Bildfläche Um es vom ersten Rechteck zu unterscheiden, erzeugen: wurde es grau eingefärbt.

Diesen Teil kann man eins zu eins in einem Text- Standards hält. Die Zeichenkodierung ist UTF-8 und der SVG-Code hält sich an SVG 1.1. Der Tag erzeugt ein Rechteck welches Bildfläche bei 0 Pixel Breite (x=“0px“) und 0 Pixel Hö- Zuerst soll eine Fläche erzeugt werden, auf der he (y=“0px“) startet und sowohl eine Breite als das Bild später gezeichnet wird. Dazu gibt man auch eine Höhe von 300 Pixel hat. Die Füllfarbe die Größe dieser Fläche an: ist weiß (fill=“white“). Der Nullpunkt liegt in der linken oberen Ecke. Von Rechteck gezeichnet, indem das Tag eingesetzt wird. Ein sehr einfaches Rechteck-Beispiel.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 29 BILDBEARBEITUNG

Das Rechteck soll nun eine Randlinie erhalten. Das Beispiel von oben wird nun so angepasst, Außerdem können sie Farbe, Stärke und Trans- Dazu ändert man die Zeile zu: dass sich Fläche und Rand voneinander abhe- parenz haben. ben: fill="rgb(200, 200, 200)" x2="150px" y2="275px" stroke="rgb(75, 75, 75)" stroke="rgb(75, 75, 75)" Dies erzeugt eine Linie um das graue Recht- stroke-width="1px" /> stroke-width="0.5px" /> eck mit einer Stärke von einem Pixel. Da je- ändern.

Farben erzeugt dies zwei sich kreuzende Linien inner- Wie bereits gezeigt, kann man Farben ganz ein- halb des grauen Rechtecks. fach über ihren (englischen) Namen ansprechen. Die Liste der benannten Farben [3] hilft bei der Auswahl. Ein einfaches Beispiel: fill="blue" füllt eine Fläche mit der Farbe Blau.

Wer HTML-Syntax bevorzugt, kann auch diese verwenden: fill="#FF0000" fill="#F00" füllt dieselbe Fläche mit der Farbe Rot. Zum Jetzt sieht man das Rechteck schon besser. Schluss kann man noch mit RGB-Farbangaben arbeiten um die Fläche mit Grün zu füllen: Linien Linien in SVG sind sehr leicht zu handhaben. Sie fill="rgb(0, 255, 0)" bestehen aus einem Anfangspunkt, beschrieben fill="rgb(0%, 100%, 0%)" durch seine Koordinaten, sowie einem Endpunkt. Das Rechteck wird durch Linien unterteilt.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 30 BILDBEARBEITUNG

Kreise und Text sie aus Textverarbeitungsprogrammen wie Open- jedoch hier und da an kleinen Ecken noch et- Ein Kreis kann all die bisherigen Gestaltungsele- Office.org Writer oder Microsoft Word bekannt was schrauben, und dann ist es von Vorteil, wenn mente beinhalten. Definiert wird der Kreis über sind), font-style beschreibt den Stil der Schrift- man das, womit dem man arbeitet, zumindest im einen Mittelpunkt und einen Radius: art, wie z. B. fett oder kursiv, font-weight die Ansatz versteht. Dicke der Schrift und text-anchor die Ausrich- Viele weitere Werkzeuge stehen einem noch in HTML-Code verschaffen möchte, ist bei dem sehen. [3] http://www.december.com/html/spec/colorsvg. SVG html Stefan Ohri (Blog) ist Student der SVG Informatik an der Uni Wien. Da es ihm Fazit wichtig ist, zu verstehen, wie etwas Natürlich ist es schwierig, wenn nicht gar unmög- funktioniert, schaut er sich auch die Man beachte, dass wie bei HTML das - lich, ein Bild wie das anfänglich vorgestellte mit grundlegenden Dinge an. Tag aus zwei Elementen besteht, zwischen de- diesen einfachen Werkzeugen herzustellen. Für nen der eigentliche Text steht. x und y geben die größere Projekte verwendet man deshalb pas- Textposition an. font-size beschreibt die Höhe sende Programme wie Inkscape [4], die einem des Textes in Pixel (das sind dieselben Werte wie die Detailarbeit abnehmen. Manchmal will man Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 31 AUDIO

ALSA konfigurieren von Jonas Knudsen

LSA kann auf zwei Weisen kon- Die beiden Einträge clt.snd_card und das Gerät pcm.!default und dieses leitet es di- figuriert werden: Über das Pro- pcm.snd_card definieren ein virtuelles Gerät, rekt an die Soundkarte pcm.snd_card weiter. A gramm asoundconf und über die damit die Soundkarte richtig erkannt wird. Datei .asoundrc im Heimatverzeichnis Mixen beziehungsweise global über die Datei snd_card ist der Name des Gerätes. Der Name Wenn kein anderer Soundserver wie Pulseaudio /etc/asound.conf. In diesem Artikel geht es kann beliebig aus den Zeichen A bis z und allen betrieben wird, hat dieser Aufbau einen großen um die Konfiguration über die Dateien. Zahlen gewählt werden. Außerdem ist der Unter- Nachteil: Es kann maximal ein Programm gleich- strich („_“) im Namen möglich. Der Name dient zeitig Klänge von sich geben, da es die Sound- Redaktioneller Hinweis: Der Artikel „ALSA kon- als Alias für diese Soundkarte. karte belegt. So erscheinen in einer grafischen figurieren“ erschien erstmals bei Pro-Linux [1] Benutzeroberfläche Meldungen wie „Das Gerät card 0 bedeutet, dass die als erste von ALSA unter der Creative-Commons-Lizenz CC-BY-SA- ist gerade belegt“. gefundene Soundkarte im Rechner mit diesem 3.0 [2]. Alias verknüpft wird. Sollten sich mehrere Sound- Abhilfe schafft das Plug-in dmix, welches mit karten im Rechner befinden, oder kommen neue Hilfe von Software verschiedene Audio-Signale Minimale Konfiguration Audio-USB-Geräte hinzu, so werden diese auto- zusammen mischt. Auch die Plug-ins duplex Ein minimaler Aufbau der Datei .asoundrc kann matisch durchnummeriert: die zweite Karte ist als und dsnooper seien erwähnt. duplex ermöglicht wie folgt aussehen: card 1, die dritte als card 2 usw. einzutragen. gleichzeitiges Aufzeichnen und Abspielen von Mehr über die Zuordnung zu den Soundkarten Musik. dsnooper ähnelt dmix: Es mischt mehre- pcm.snd_card { kann man mit dem Befehl re gleichzeitig aufgenommene Audio-Signale zu- type hw sammen. Die Plug-ins werden geladen, indem card 0 $ cat /proc/asound/cards sie in die Datei .asoundrc wie folgt geschrieben device 0 werden: } erfahren. pcm.snd_card { ctl.snd_card { Der Eintrag pcm.!default ist der Standard- type hw type hw Eingang. Alle Programme leiten ihren Ton an die- card 0 card 0 ses Gerät, wenn es nicht anders definiert ist. Die device 0 device 0 Zeile type gibt erwartungsgemäß die Art des Ge- } } rätes an. hw steht für eine Soundkarte und plug für einen Eingang. ctl.snd_card { pcm.!default { type hw type plug slave.pcm gibt an, an welches Gerät der Sound card 0 slave.pcm "snd_card" weitergeleitet werden soll. In diesem Beispiel device 0 } schicken alle Programme ihre Klangausgabe an }

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 32 AUDIO

# Das dmix-Plug-in wird definiert. # Plug-in als Standard fuer alle pcm.dmixer { # ALSA-Programme. pcm.phonon { # pcm.NAME: der Name jedes pcm.duplex { type plug # Geraetes kann angepasst type asym slave.pcm "phonon_vol" # werden # natuerlich muss dann auch das hint { type dmix # Gegenstueck angepasst werden show on ipc_key 1024 playback.pcm "dmixer" # Anzeigename in den Phonon- # andere Benutzer koennen capture.pcm "dsnooper" # Einstellungen # ebenfalls dmix gleichzeitig } description "Alsa" # nutzen } ipc_perm 0666 pcm.!default { } slave.pcm "snd_card" type plug # phonon-Lautstaerkeregler slave { slave.pcm "duplex" pcm.phonon_vol { channels 2 } type softvol } # natuerlich kann der Sound Listing 1: Datei .asoundrc. } # auch direkt nach dmix # oder duplex geleitet werden. Wichtig sind die Zeilen ipc_perm 0666, da- ctl.dmixer { slave.pcm "default" mit Benutzer, welche nicht Root sind, ebenfalls control { type hw gleichzeitig dmix und dsnooper benutzen kön- card 0 name "phonon_vol" nen. Gut zu sehen ist auch, wie die Audio- } card 0 Signalweiterleitung angepasst wurde – vom } default-Gerät wird es über das duplex- und # Das dsnoop-Plug-in, welches es } # erlaubt, mehrere Programme das dmix-Gerät zur Soundkarte geleitet. # ctrl for phonon_vol # gleichzeitig aufnehmen zu lassen. ctl.phonon_vol { pcm.dsnooper { Programme individuell in der Lautstär- type hw type dsnoop ke regeln card 0 } ipc_key 2048 Im Alsamixer gibt es eine Anzahl von Software- ipc_perm 0666 Lautstärkereglern. Sie steuern verschiedene Mit diesen virtuellen Geräten kann das Audio- slave.pcm "snd_card" Ausgänge. Zumindest der Master und der PCM- slave { Signal aus Phonon, der Multimediaschnittstelle Regler sind vorhanden. Manchmal kann es nütz- channels 2 des KDE-Desktops ab Version 4, über einen ei- lich sein, einem Programm einen eigenen Laut- } genen Lautstärkeregler geregelt werden. stärkeregler zu spendieren. Hierfür sind zwei } Plug-ins notwendig: Zum einen das schon er- In „Systemeinstellungen → Multimedia“ muss nur # Dies definiert unser Fullduplex- wähnte plug-Plug-in und zum anderen das noch das Standardausgabegerät auf ALSA ge- softvol-Plug-in. stellt werden.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 33 AUDIO

device "mpd" # mpd mixer_device "mpdvol" pcm.mpd { mixer_control "MPD" type plug } slave.pcm "mpdvol" } Übrigens kann man, wenn man .asoundrc ver- # clt fuer mpd ändert, ganz einfach überprüfen, ob die letzte ab- ctl.mpd { gespeicherte Version funktioniert. Man hört da- type hw bei einfach Musik. Wenn plötzlich nichts mehr zu card 0 hören ist, hat man wahrscheinlich einen Fehler in } .asoundrc.

# mpd volume control LINKS pcm.mpdvol { type softvol [1] http://www.pro-linux.de/artikel/2/1462/alsa- Systemeinstellungen für ALSA. slave.pcm "duplex" konfigurieren.html control { Bevor das Standardausgabegerät umgestellt [2] http://creativecommons.org/licenses/by-sa/3.0/ name "MPD" de/ wird, kann man das neue virtuelle Gerät testen. card 0 [3] http://www.freiesmagazin.de/freiesMagazin-2007- Zwei mögliche Befehle sind hierfür: } 08 } $ mpg123 -a phonon -cH /pfad/zur/y Musik.mp3 # ctrl for mpd volume oder ctl.mpdvol { Autoreninformation type hw $ aplay -D phonon /pfad/zur/Musik.y card 0 Jonas Knudsen (Blog) nutzt lie- wav } ber ALSA anstatt PulseAudio als Listing 2: Anpassungen in .asoundrc für mpd. Soundserver, da der letztere bei Hinweis: aplay spielt keine MP3-Dateien ab. openSUSE 11.2 und Debian Lenny Die dazu passende Änderungen der Datei Ähnlich funktioniert dies auch mit anderen Pro- nicht vorinstalliert ist. Im Zuge der mpd.conf im Bereich audio_output: grammen: Beim Music Player Daemon (siehe Konfiguration des MPD hat er sich intensiv mit ALSA beschäftigt. „MPD – Music Player Daemon“, freiesMagazin audio_output { 07/2008 [3]) muss sowohl die Datei .asoundrc type "alsa" als auch die Datei mpd.conf (meistens im Ver- name "MyALSADevice" zeichnis /etc) angepasst werden. mixer_type "mpdvol" Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 34 SPIEL

Invertika – ein Open-Source-MMORPG von Florian Bottke

assive Multiplayer Online Role Play- Während im ersten Jahr hauptsächlich die etwas, bis diese Welt von den Projektmitgliedern ing Game, kurz: MMORPG [1], das Welt [5] sowie einige grundsätzliche Dinge entwi- ausgefüllt wurde. klingt erst einmal nach großen kom- ckelt und gebaut wurden, wird in letzter Zeit ver- M Nachdem die erste Zeit der offizielle Spielserver merziellen Angeboten wie zum Beispiel World mehrt auf die Entwicklung der Skripte geachtet, ein vServer war (bei dem die Performance na- of Warcraft. Doch es geht auch anders: um dem Spieler mehr Quests [6] und somit Inter- türlich zu wünschen übrig ließ), läuft der Server zum Beispiel mit dem freien Open-Source- aktion im Spiel zu bieten. seit einiger Zeit auf einem von der MMORPG Invertika [2]. Firma Manitu [7] (deren Inhaber si- Die Open-Source-Community hat eine Menge cherlich vielen als Hostblogger [8] auf die Beine gestellt; so ist mittlerweile auch die bekannt ist) gesponserten Server. Vielfalt der angebotenen Spiele sehr beachtlich. (Den Manitu kann man im übrigen Aber speziell im Bereich MMORPG hat man das auch im Spiel finden.) Gefühl, dass sich dort eine Lücke auftut. In die- se Lücke möchte Invertika vorstoßen. Es handelt Erste Schritte im Spiel sich dabei um ein deutschsprachiges MMORPG, Während es für Windows, Ubuntu welches auf Linux, Windows und Mac OS X läuft, und Arch Linux zum Spiel Inverti- wobei die Unterstützung für letzteres im Moment, ka ähnlich lautende Installationspa- mangels Maintainer, ein wenig schleift. kete gibt – einen Überblick stellt das Invertika-Wiki [9] bereit – muss Geschichte der Client für andere Systeme kom- Gegründet im Jahr 2008, haben sich mittlerwei- piliert werden. Wie das funktio- le einige Entwickler und Helfer rund um das Pro- niert, steht im entsprechenden Wiki- jekt versammelt, welche Skripte, Maps oder Gra- Eintrag [10]. fiken erstellen, Fehler suchen und vieles mehr. Nach der Installation des Clients Das Spiel selbst baut dabei auf der von Mana- Zu Besuch in Roststock. kann man sich auf dem offiziellen source [3] entwickelten Technik auf. Früher war Invertika-Server (server.invertika.org) registrie- dieses Projekt ein Teil von The Mana World [4]. Die Welt, welche früher doch stark von einer ge- ren und anmelden, um sich dann einen Charak- Das Projekt wurde später aber ausgegliedert und wissen Rechteckigkeit gekennzeichnet war, be- ter zu erstellen. Dies geschieht alles direkt im sich auf die Entwicklung eines flexiblen Frame- steht nun aus runden und organisch gewachse- Client. Natürlich ist das Spielen von Invertika völ- works für MMORPGs konzentriert. Da nun nicht nen Teilen. Im Gegensatz zu anderen auf Mana- lig kostenfrei und wird es auch immer bleiben. mehr für einen offiziellen Server gearbeitet wur- source basierenden Spielen ist die Welt bei Inver- de, ist das ganze Projekt auch sehr flexibel ge- tika riesig, was sich in den Dimensionen bemerk- Wie üblich in einem MMORPG, ist das Ziel worden. bar macht. Bedingt dadurch dauerte es natürlich des Spieles bzw. des Spielers nicht definiert.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 35 SPIEL

Der Spieler kann die Quests lösen, welche das gibt es die ersten Aufgaben und NPCs für den Während Spiele wie The Mana World oder The Spiel für ihn bereithält oder einfach mit ande- Spieler. Alternate World [13] noch auf veraltete Systeme ren Spielern sozial interagieren. Ein Haupthand- wie Ragnarok Serveremulatoren (eAthena) auf- lungsstrang, der sich wie ein roter Faden durch So kann man zum Beispiel erste Quests lö- setzen, benutzt Invertika seit der Gründung den das Spiel zieht, ist momentan nicht vorhanden. sen, Monster bekämpfen, handeln oder die modernen und in der Entwicklung befindlichen Im großen und ganzen geht es um die Abenteu- Bank besuchen, auf der man sein Geld anle- manaserv-Server [14] vom Manasource-Projekt. er in der Welt von Invertika. gen kann. Für das Geld, welches auf der Bank Damit dürfte Invertika der größte manaserv- liegt, bekommt der Spieler Zinsen. Die Server im Beta-/Produktivbetrieb sein. Bank hat dabei auch einen ganz prak- tischen Zweck. So verliert man bei Mit der Entwicklung des Spiels hat sich auch die jedem Tod einen größeren Teil sei- Technik (mana [15], manaserv) weiterentwickelt, nes Bargeldes. Geld, welches auf der sodass zum Beispiel häufige Serverabstürze mitt- Bank liegt, bleibt aber von diesem lerweile der Vergangenheit angehören. Ab und Schicksal verschont. an reicht auch das Invertika-Team ein paar Pat- ches und Bugreports zum Manasource-Projekt Wenn man gestorben ist, taucht man ein und beteiligt sich so auch an der Entwicklung. im Reich des Toten, dem Nex [12], wieder auf. Dort kann man einige Zeit Im Laufe der Zeit wurden auch viele Dinge verbringen und anschließend wieder speziell für Invertika entwickelt wie zum Bei- in das Reich der Lebenden wech- spiel die AJAX-Weltkarte [16] oder der Invertika- seln. Dabei taucht man an der letzten Editor [17], bei dem es sich um ein multifunktio- Netheksäule auf, bei der man einen nales Werkzeug für die Entwicklung von Invertika Segen empfangen hat. handelt.

Die Zentralbank in Selphi Timlet. Technik Besonderheiten Nachdem man sich dann mit seinem neuen Cha- Natürlich sind MMORPGs ein bisschen an- Im Gegensatz zu einigen anderen MMORPGs rakter angemeldet hat, ist das erste, was man ders zu betrachten, als andere Open-Source- gibt es bei Invertika einige Besonderheiten. So im Spiel sieht, das sogenannte Vacare [11], bei Software. So muss nicht nur ein Projektserver gibt es in Invertika keine Regeln, was die Spie- welchem es sich um eine Tutorial-Insel handelt, bereitgestellt werden, auf welchem die Kompi- ler zu tun oder zu lassen haben. Es gibt zwar ein auf der der Spieler einiges zum Spiel erklärt late und Dokumentation zum Download bereit- paar Empfehlungen, allerdings sind diese nicht bekommt. Wenn man das Vacare bewältigt hat, liegen, sondern sich auch um die Infrastruktur bindend. Bedingt dadurch gibt es auch keine geht das eigentliche Spiel los: Man trifft in ei- für das Spiel gekümmert werden, sonst läuft Gamemaster (wenn man mal von einem Stan- ner der größten Städte in Amoneus ein. In die- bei einem MMORPG natürlich nichts. Ein Single- dardgamemaster absieht), welche Regeln durch- ser Stadt, welche den Namen Selphi Timlet trägt, Player-Modus ist ja per se nicht vorgesehen. setzen.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 36 SPIEL

was sicherlich dem Wesen von Open-Source- [8] http://hostblogger.de/ Projekten geschuldet ist. [9] http://wiki.invertika.org/Installation Und so freut sich das Invertika-Projekt über je- [10] http://wiki.invertika.org/Client_kompilieren den neuen Entwickler, Mapper, Grafiker, Mu- [11] http://wiki.invertika.org/Vacare siker et cetera. Wer jetzt neugierig geworden [12] http://wiki.invertika.org/Nex ist, der kann im IRC-Channel des Projektes im [13] http://www.thealternateworld.org/ Freenode-Netzwerk unter #invertika oder im [14] http://wiki.invertika.org/Manaserv Forum [18] vorbeischauen. [15] http://wiki.invertika.org/Mana Was man bei Invertika nicht vergessen darf, ist, [16] http://wiki.invertika.org/Worldmap dass das gesamte Spiel sich in der Entwick- [17] http://wiki.invertika.org/Invertika_Editor lung befindet und sicherlich noch einiges an Fein- [18] http://forum.invertika.org/ schliff benötigt. So gibt es hier und dort immer [19] http://invertika.org/pages/downloads.php Landschaft wohin das Auge blickt. wieder Fehler und Probleme. Aber natürlich ver- [20] http://bugs.invertika.org/ suchen die Projekt-Mitglieder, Invertika kontinu- [21] http://wiki.invertika.org/ Natürlich wäre es nervig, ständig von jemandem ierlich zu verbessern. [22] http://planet.invertika.org/ verfolgt oder zugespamt zu werden. Aber auch für dieses Problem gibt es eine Lösung. Auf den Die Invertika-Webseite bietet neben dem Down- load [19] und einigen anderen Dingen auch ein Invertika-Servern ist Player-versus-Player (PvP) Autoreninformation grundsätzlich aktiviert. Davon gibt es auch nur Forum [18], einen Bugtracker [20] sowie ein zwei Ausnahmen, nämlich auf der Tutorial-Insel Wiki [21] mit allen Informationen rund um das Florian Bottke (Site) benutzt (Vacare) und im Reich des Toten (Nex). So kön- Spiel und die Welt an. Aktuelle Informationen schon seit einigen Jahren freie nen die Spieler Recht und Ordnung in die eigene rund um Invertika und deren Welt findet man da- Softwarelösungen, ist ursprünglich Hand nehmen. bei im Invertika-Planet [22]. Viel Spaß beim Aus- hauptsächlich wegen der freien probieren! Videoschnittsoftware auf Projekt und Entwicklung LINKS umgestiegen. In seiner Frei- Im Laufe der Jahre kann einem das Projekt ziem- zeit arbeitet er am Invertika-Projekt, [1] http://de.wikipedia.org/wiki/MMORPG lich ans Herz wachsen. So ist es immer wieder dreht Filme und schreibt ein dazu [2] http://invertika.org/ erfreulich zu sehen, wenn neue Mitstreiter da- passendes Skript für interessierte [3] http://manasource.org/ zustoßen und dem Projekt bei seiner Verwirkli- Amateurfilmer. chung helfen wollen. Was leider bei einem Open- [4] http://themanaworld.org/ Source-Projekt nicht ausbleibt, ist die hohe Per- [5] http://weltkarte.invertika.org/ sonalfluktuation. Vom einen auf den anderen Mo- [6] http://de.wikipedia.org/wiki/Quest ment hat man plötzlich einen Mitarbeiter weniger, [7] http://manitu.de/ Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 37 KDE

Nepomuk in KDE – Theorie und Praxis von Marc Hildebrandt

s gibt Technologien, die viele Funktio- Tanja und Stefan darauf abgebildet waren und unbedingt beachtet werden, dass Nepomuk nicht nen bieten, aber deren tieferer Sinn dass es auf Teneriffa geknipst wurde. nur eine Desktopsuche ist. Dies ist eine Teilfunk- manchen Benutzern verborgen bleibt. tion und Nepomuk nur darauf zu reduzieren, wä- E Mit KFind ist es sehr schwer, ja fast unmög- Ob dies an fehlender Dokumentation liegt re falsch. Was Nepomuk irgendwann sein soll, lich, ein solches Bild wiederzufinden. Wonach oder an dem neuartigen Ansatz der Bedie- hat Aaron Seigo in einem Interview mit Pro-Linux will man suchen? Man kann den Dateityp auf nung, sei dahingestellt. Eine dieser Techno- erläutert [2]. .jpg begrenzen und auch eventuell das Datum logien ist Nepomuk in KDE [1]. Um zu verste- einkreisen. Aber das war es dann auch schon. Nepomuk hat in KDE einen „Mitarbeiter“ namens hen, was es tut und warum, muss man sich . Strigi ist ein In- etwas mit der Theorie beschäftigen. Des Wei- dexer und durchsucht fort- teren wird dieser Artikel auch auf die tägliche während die Dateien des Verwendung eingehen. Rechners. Dabei sam- Grau ist alle Theorie melt er Metainformatio- Oftmals sucht man Dateien auf seinem Compu- nen (Texte aus Dateien, ter. Dafür benutzen sehr viele Benutzer die inter- Exif-Informationen in Bil- ne Suche in , die man im Menü unter „Ex- dern, liest die Metadaten tras → Dateien suchen“ findet. Das Programm, aus MP3s aus etc.) und das dann erscheint, nennt sich KFind. Es kann übergibt sie Nepomuk. Ne- nach Namen, Größe, Mime-Typ (also Dateiart), pomuk ordnet diese Da- Datum etc. suchen – schon mal ein ganz guter ten, die Bewertungen und Anfang. Aber dafür muss der Benutzer im Prinzip Schlagworte, in einer Da- schon sehr genau wissen, wonach er sucht. tenbank den jeweiligen Da- teien zu und wird auch Ein anderer Ansatz ist es, Dateien auf dem Rech- Die Standardansicht von Kfind. beim Suchen bemüht. Aber ner mit Schlagworten zu versehen. Schlagworte Nepomuk nur auf die Su- (oftmals auch Tags genannt) findet man in der KDE bietet dafür ein Framework namens Nepo- che zu reduzieren, ist falsch. Nach und nach Onlinewelt schon sehr oft. Sei es in einem Blog, muk, das versucht, viele Informationen zu sam- soll daraus ein kompletter semantischer Desktop bei Flickr oder anderen Diensten. Bei einem Fo- meln und diese miteinander zu verknüpfen. Ne- wachsen, aber das wird noch einige Zeit benöti- to könnten es z. B. die Schlagworte „Urlaub“, „Te- pomuk ist noch sehr jung und betritt in vielen Be- gen. neriffa“, „Tanja“, „Stefan“, „Strand“ und „Sonnen- reichen Neuland, weshalb manches noch nicht untergang“ sein. Damit hat man den Inhalt des funktioniert – oder zumindest nicht so, wie man Es gibt schon viele Programme, die Verschlag- Bildes relativ gut beschrieben. Vielleicht erinnert es erwartet. Man sollte aber etwas Geduld mit- wortung unterstützen. Diese Schlagworte liegen man sich irgendwann an das Bild und weiß, dass bringen und der Entwicklung folgen. Dabei muss aber nur im jeweiligen Programm vor und können

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 38 KDE

den weiteren Reitern Bilder, Musik) einzeln anpassen. Durch einen kann man festlegen, wel- Rechtsklick in die rechte Infoleiste kann man die che Orte auf dem Rech- Informationen auswählen, die angezeigt werden ner durchsucht werden sollen. sollen und wie viel RAM Möchte man die angezeigten Informationen für Nepomuk nutzen darf. Bilder ändern, so klickt man auf ein Bild und Hier gilt „viel hilft viel“, vollführt einen Rechtsklick auf den rechten Info- aber wem die System- bereich. Möchte man dies für Texte ändern, so leistung wichtiger ist, der markiert man eine Textdatei, macht wieder einen kann diesen Wert re- Rechtsklick auf die Infoleiste und wählt aus. duzieren. Nun beginnt das eigentliche Indizieren Die Bewertungen und Stichworte lassen sich je- Metadaten eines Bildes. durch Strigi. Dies kann je derzeit ebenfalls dort ändern. nach zu durchsuchender nicht von außen benutzt werden. Nepomuk hin- Datenmenge lange dauern, aber diese Grundin- gegen sorgt dafür, dass diese Informationen dizierung wird nur ein einziges Mal durchgeführt. systemweit vorliegen und alle Programme die Danach wird es schneller. Dazu muss man war- gleiche Basis haben. So kann man mit Digikam ten, bis alles richtig indiziert wurde und Strigi seine Bilder verschlagworten, und die selben „der Datei-Indexer ist ausgesetzt“ meldet. Man Tags, die dort vergeben wurden, erscheinen kann diesen Vorgang immer im Systemtray nach dann ebenfalls in Dolphin in der rechten Informa- einem Klick auf das Symbol „Suchdienst“ beob- tionsleiste. Und das ist nur ein kleines Beispiel. achten. Werden neue Dateien in einem der vor- her angegebenen Ordner hinzugefügt, so findet Manuelles Taggen von Dateien ist ein riesiger sie Strigi sie beim nächsten Mal automatisch. Aufwand, wenn man schon viele Dateien besitzt. Daher versucht Strigi diese Arbeit etwas zu ver- Ist dieser Vorgang abgeschlossen, kann die Su- einfachen, indem es Metadaten automatisch aus che schon benutzt werden. Zum Test kann man den einzelnen Dateien ausliest. beispielsweise auf ein Foto klicken und sich die Informationen ansehen, die in Nepomuk über Aus der Praxis dieses Bild gespeichert wurden. Um Nepomuk nutzen zu können, muss es in den Welche Metadaten sollen angezeigt werden? „Systemeinstellungen → Desktopsuche“ in KDE Diese Informationen werden auch in der rechten aktiviert werden. Dazu setzt man jeweils einen Informationsleiste angezeigt. Werden nicht alle Ein kleines Beispiel Haken bei „Nepomuk-Semantik-Dienste aktivie- oder zu viele Informationen dort angezeigt, so Als Beispiel werden acht Bilder mit dem Schlag- ren“ und bei „Strigi-Datei-Indexer aktivieren“. In lässt sich dies für jede Dateiart (Text, Ordner, wort „Ubuntuusers“ versehen und diesen die Be-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 39 KDE wertungen von 1 bis 5 gegeben. Die Dateien lie- Nun will man nach den Bildern suchen, die Virtuelle Ordner gibt es auch. Man speichert ein- gen wild verstreut auf der Festplatte, also nicht mit „Ubuntuusers“ getaggt sind. Also öffnet man fach die Suche mittels des Buttons „Speichern“ alle in einem Ordner. Dolphin, klickt in die Suchleiste oben rechts ab und vergibt einen Namen. In der linken Leiste und gibt das gesuchte Stich- sieht man dann ein Lesezeichen dazu. Wenn der wort ein. Außerdem erscheint Benutzer darauf klickt, erscheinen wieder alle Da- über den Dateien eine Such- teien, die zu der Suche passen, zum Beispiel alle leiste. Diese fragt, wo und Bilder mit dem Tag „Ubuntuusers“ und einer Be- nach was der Benutzer suchen wertungen von mindestens 3,5 Sternen. Werden möchte. Durch einen Klick auf in Zukunft weitere Dateien getaggt, so zeigt die- das grüne Pluszeichen kann ses Lesezeichen auch die neu indizierten Datei- man weitere Kriterien ange- en an. Es ist also ein dynamisches Lesezeichen, ben, so kann man beispiels- verbunden mit einer Suche. weise die Suche zusätzlich Weitere Informationen zum Thema Nepomuk fin- nach einer Minimalbewertung den sich in der KDE Userbase [3]. einschränken. LINKS Schnell erkennt man so die [1] http://nepomuk.kde.org/ Suche überall nach Bilder mit dem Tag „Ubuntuusers“. Nützlichkeit des Taggens. [2] http://www.pro-linux.de/news/1/15639/aaron- seigo--ist-mehr-als-datei-indizierung. html Die Tags aus Digikam wer- den nicht automatisch nach [3] http://userbase.kde.org/Nepomuk_(de) Nepomuk exportiert. Dazu muss man in Digikam unter Autoreninformation „Einstellungen → digiKam ein- richten → Metadaten → Nepo- Marc Hildebrandt (Blog) ist Sup- muk“ einen Haken bei „Meta- porter bei ubuntuusers.de für den daten aus digiKam in Nepo- Bereich „KDE Plasma“ und Mitglied muk speichern“ setzen. Der des Ikhaya-Teams. Er beschäftigt Klick auf den Button „fully re- sich seit 2006 mit Open Source im syncronize now“ gleicht ein- Allgemeinen und KDE im Speziellen. malig in Richtung Nepomuk ab. Danach passiert das au- Suche überall nach Bildern mit dem Tag „Ubuntuusers“ und tomatisch, sobald neue Bilder mindestens 3,5 Sternen als Bewertung. getaggt werden. Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 40 FILM

Rezension: Sintel von Dominik Wagenführ

ange hat es gedauert, bis der Open- Wer bis dahin die DVD vorbestellte, wurde am En- Source-Film Sintel [1] der Blender Foun- de des Films in den „Credits“ erwähnt [9]. Dane- L dation [2] fertig war. Und noch län- ben wurde das Projekt aber auch von der Nieder- ger hat es gedauert, ehe die vorbestellbaren ländischen Filmförderung und Firmen wie DivX DVDs versandt wurden. Nun liegt ein Exem- finanziell unterstützt. plar zur Rezension vor. Ende Oktober 2009 wurde der offizielle Name Ein paar Hintergrundinformationen des Filmes bekannt gegeben: Sintel [10]. Auch die finalen Charakterzeichnungen der gleichna- Blender [3] ist ein Open-Source-Programm zur migen Heldin wurden damals veröffentlicht. Allge- Erstellung von 3-D-Modellen. Mit Hilfe der Soft- mein ist positiv zu erwähnen, dass das Durian- ware wurden in der Vergangenheit bereits groß- Team die ganze Produktionszeit über sein Pu- artige, freie Filme wie Elephants Dream [4] und blikum immer gut informiert hielt. In den andert- Big Buck Bunny [5] erstellt. halb Jahren von der Ankündigung bis zur Auslie- ferung der DVDs gab es im Blog fast 200 Pos- Im Mai 2009 rief das Blender-Projekt erneut tings, die Konzeptzeichnungen, Animationen und zum Mitmachen auf [6]. Unter dem Codenamen kleine Vorschauen auf den Film zur Verfügung Durian [7] (die Blender-Projekte erhalten immer stellten. Früchte als Codename) wurde nur die Informati- on gestreut, dass es sich um einen Film für junge Auch wenn es im Blog der Entwickler immer Up- Erwachsene handelt, welcher in einem Fantasy- dates gab, waren alle auf den offiziellen Sintel- Szenario spielt und ein Mädchen als Protagonis- Trailer gespannt, der im Mai 2010 veröffentlicht tin hat. wurde [11]. Die Reaktionen darauf waren meist positiv und der Premiere auf dem Niederländi- Ende Juni stand dann das vorläufige Team fest schen Filmfestival Ende September 2010 [12] und der Vorverkauf der DVDs startete Ende stand nur wenig im Weg. Juli [8]. Bis dato war immer noch nicht bekannt, um was für einen Film es sich bei Durian han- Am 1. Oktober 2010 war es soweit: Sintel wur- deln wird. Die Macher waren also stark auf die de veröffentlicht [13]. Auf der Downloadseite [14] Unterstützung der Community angewiesen, oh- kann man sich den Film auf YouTube anschau- ne zu verraten, worum es geht. Die Rechnung Titelbild für das Magazin „3D World“. en [15] oder direkt als DivX, MP4 oder OGV her- ging am Ende auf, es gab 1700 Vorbestellun- © Blender Foundation (CC-BY-3.0) unterladen. Dabei stehen auch Untertitel für ver- gen bis zum Stichtag am 15. September 2009. schiedene Sprachen zur Verfügung. Auf YouTube

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 41 FILM

Der Film Dinge wie die Charaktere konzentriert. Auch Wie oben bereits erwähnt, richtet sich Sintel wenn Sintel im Film von Ishtar aus durch die eher an junge Erwachsene und ist dadurch auch Wüste und Dschungel bis hin zu schneebedeck- wesentlich düsterer als die Vorgängerfilme Ele- ten Bergen reist, sind diese Szenen meist sehr phants Dream und Big Buck Bunny. kurz und hätten ansonsten den Rahmen des Projektes gesprengt. Sintel ist ein junges Mädchen, das in den Slums der Stadt Ishtar aufwächst. Eines Tages trifft sie Im Film gibt es nur zwei Darsteller mit Sprech- auf ein verletztes Drachenbaby, welches Sintel rollen [17]: Zum einen natürlich Sintel, die von gesund pflegt. Die zwei sind nicht mehr zu tren- Halina Reijn gesprochen wird. Daneben gibt es nen, bis ein großer Drache erscheint und den klei- noch einen Schamanen, gesprochen von Thom nen Scales getauften Drachen entführt. Mutig tritt Hoffman, auf den Sintel am Anfang des Films Sintel die lange Reise an, um Scales zu retten. trifft. Beide beherrschen ihre Rollen überaus gut Der 15-minütige Kurzfilm schafft es trotz der und sowohl die schönen wie auch die traurigen kurzen Laufzeit, eine epische Geschichte zu Momente des Films werden emotional zum Zu- erzählen, indem er sich auf die wichtigen schauer herübergebracht.

Konzeptzeichnung: Sintel. © Blender Foundation (CC-BY-3.0) hatte der Film nach einem Monat fast die Zwei- Millionen-Marke erreicht. Ein echter Erfolg für die Macher des Films. Am 23. Oktober 2010 waren dann auch die DVDs versandfertig und wurden an die bis dahin 3300 Vorbesteller ausgeliefert [16], sodass diese auch endlich in den Genuss des Filmes kommen konn- ten (soweit sie wirklich solange warten wollten). Konzeptzeichnung: Babydrache Scales. © Blender Foundation (CC-BY-3.0)

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 42 FILM

Dadurch, dass es wenig Sprechpassagen gibt, etc.) unterliegt dabei der Creative-Commons- amerikanische Fernseher geeignet ist. In Europa ist die Musik zur Untermalung im Film natürlich Lizenz CC-BY-3.0 [20], das heißt man kann Sintel nutzt man in der Regel die PAL-Version, die auf umso wichtiger. Jan Morgenstern hat mit dem auch kommerziell vertreiben und den Film verän- der zweiten DVD zu finden ist. Der Film ist auf Score (so bezeichnet man untermalende Musik dern, solange die Blender Foundation als Urhe- der DVD mit Untertiteln für Englisch, Spanisch, in einem Film ohne Gesang) hervorragende Ar- ber genannt wird. Die Musik ist etwas restriktiver Deutsch, Italienisch, Polnisch, Französisch, Por- beit geleistet, wovon sich jeder selbst überzeu- und wird unter der CC-BY-NC-ND-3.0 [21] vertrie- tugiesisch und Holländisch ausgestattet. gen kann, da die Musik als EP [18] zum Down- ben. Mit der Lizenz darf man die Musik des Films Als Extras findet man eine einstündige Doku- load bereit steht. Ebenso herausragend ist das frei verteilen, solange man Jan Morgenstern als mentation zum Film, in der die Macher die offizielle Lied zum Film, welches im Abspann zu Urheber angibt, eine kommerzielle Verwertung Entstehungsgeschichte von Sintel erzählen und hören ist. Die deutsche Sängerin Helena Fix steu- oder Remixe der Musik sind dabei nicht erlaubt über die Monate hin die Entwicklung mit Vi- ert den Song „I Move On“ bei, den man ebenfalls (wobei vor allem die zweite Einschränkung sehr deobotschaften kommentiert haben. Daneben ist auf YouTube finden kann [19]. schade ist). der Film auch mit zahlreichen Kommentarspu- Ganz im Zeichen von Freier Software wird so- ren ausgestattet, auf denen sowohl der Regis- DVD-Ausstattung wohl der Film als auch die Musik unter Freien seur Colin Levy als auch Drehbuchautorin Esther Lizenzen veröffentlicht. Der Film (und das meis- Die DVD-Box von Sintel enthält 4 DVDs. Die erste Wouda und viele andere aus dem Team zu Wort te dazugehörige Material wie Bilder, Screenshots DVD enthält die NTSC-Version des Films, die für kommen. Zu guter Letzt gibt es noch drei Out- takes, die es nicht in den Film geschafft haben bzw. deren Szenen im Film verändert wurden. Mehr Bonusmaterial findet man auf der dritten DVD. Im Ordner blender findet man eine an- gepasste Blender-Version, mit der Sintel erstellt wurde. Eine offizielle Version soll es dazu später aber noch auf der Webseite zum Download ge- ben. Der extras-Ordner enthält einige sehr inter- essante Filme und Grafiken. Man findet dort ei- ne Split-Darstellung des Films, bei der Story- board, Layout, Animation und Rendering darge- stellt sind. So sieht man, wie sich der Film im Laufe der Zeit entwickelt hat. Ebenso gibt es das komplette Storyboard anzuschauen und sehr vie- le Konzeptzeichnungen. Was viele Blender-Fans Einzelner Frame aus dem Film. © Blender Foundation (CC-BY-3.0) freuen wird, sind die Tutorials, die die Entwickler

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 43 FILM zur Verfügung stellen. In etwa vier Stunden Lauf- Fazit [11] http://www.sintel.org/news/sintel-teaser/ zeit wird erklärt, wie man die Animationen oder Sintel ist ein herausragender Animationsfilm, der [12] http://www.filmfestival.nl/industry/ Texturen für Sintel gestaltet hat. Für HD-Fans fin- den Stand der Technik von Blender zeigt, sich [13] http://www.sintel.org/news/sintel-online- det sich im Ordner movie der Film auch noch aber auch nicht vor anderen großen Studios wie premiere/ einmal in höher aufgelösten Versionen mit bis zu Pixar und Disney verstecken muss, zumal die fi- [14] http://www.sintel.org/wp-content/content/ 2048 Pixeln. nanziellen Mittel kleiner sind. Bei der Produktion download.html haben alle Beteiligten großartige Leistungen er- [15] http://www.youtube.com/watch?v=eRsGyueVL Die vierte DVD enthält die Blender-Daten, mit de- bracht, die am Ende zu einem wirklich freien Film vQ nen Sintel erstellt wurde. Da nicht alles auf die führten. DVD gepasst hat, sind auch noch einige Blender- [16] http://www.sintel.org/news/dvds-arrived-and- packed-for-shipping/ Daten auf der PAL-DVD zu finden. Lohnt sich der Kauf der DVD? Um das Blender- Projekt zu unterstützten selbstverständlich. Aber [17] http://www.sintel.org/news/casting-line-up-thom- auch so erhält man für 34 Euro eine pralle hoffman-and-halina-reijn/ Sammlung mit Zusatzmaterial, die man sich so [18] http://www.sintel.org/news/complete-score- im Netz erst einmal zusammensuchen müsste. available-for-download/ Auch wenn die Bandbreite etwas schwach ist [19] http://www.youtube.com/watch?v=AeFwEnyM und man den Film trotzdem in HD sehen möchte, l8A empfiehlt sich ein Kauf [22]. [20] http://creativecommons.org/licenses/by/3.0/ [21] http://creativecommons.org/licenses/by-nc-nd/3. LINKS 0/ [1] http://www.sintel.org/ [22] http://www.blender3d.org/e-shop/product_info_n. [2] http://www.blender.org/blenderorg/blender- php?products_id=120 foundation/ [3] http://www.blender.org/ [4] http://www.elephantsdream.org/ Autoreninformation [5] http://www.bigbuckbunny.org/ Dominik Wagenführ (Blog) weiß [6] http://www.sintel.org/news/durian-project- gute Filme zu schätzen, vor allem announcement/ wenn diese frei vertrieben werden. [7] http://de.wikipedia.org/wiki/Durian Sintel und die Blender Foundation [8] http://www.sintel.org/news/durian-pre-sale- hat er dabei mit dem Vorabkauf einer campaign-started/ DVD unterstützt. [9] http://www.sintel.org/news/1700-pre-order- credits/ [10] http://www.sintel.org/news/revealed-title- 4 DVDs findet man in der DVD-Hülle. character-design-and-1st-minute/ Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 44 VERANSTALTUNG

Ubuntu Developer Summit 2010 von Martin Gräßlin

n der letzten Oktoberwoche fand im sonni- besuchen. Natürlich wurde auch der hoteleige- sung sein kann, wird ein Artikel über Plasma in gen Orlando, Florida, der Ubuntu Develo- ne Swimmingpool genutzt – inklusive des tradi- der nächsten Ausgabe von freiesMagazin zei- I per Summit [1] für den nächsten Release- tionellen „Hot-Tubbings“ der Kubuntu- und KDE- gen. zyklus, der im April mit der Veröffentlichung Entwickler. wird eine Herausforderung für die Freie- von Ubuntu 11.04 Natty Narwahl endet, statt. Software-Welt, ist aber auch eine unglaubliche Canonical hat für diese Konferenz mehrere hun- Gelegenheit für die Upstream-Projekte [9], zu- dert Entwickler nach Orlando eingeflogen. Ort sammen zu arbeiten und von einander zu pro- des Geschehens war ein beeindruckendes Ho- fitieren. Ubuntu hat die Rolle einer klassischen tel und Konferenzzentrum in unmittelbarer Nach- Distribution verlassen und dies muss von den barschaft zum weltbekannten Disney World. Hier traditionellen Upstream-Projekten wie GNOME verbrachten die Ubuntu-Entwickler eine Woche und KDE erkannt und akzeptiert werden. Cano- in einer außergewöhnlichen Umgebung. Wer von nical hat großes Interesse an der Zusammenar- den Bildern vermutet, dass die Entwickler die Zeit beit mit Upstream-Projekten und zum Teil auch in der Sonne liegend vor dem Swimmingpool ver- tolle Technologien entwickelt, die auf dem freien bracht haben, irrt gewaltig. Der Ubuntu Develo- Desktop in dieser Art noch nicht vorhanden sind per Summit ist harte Arbeit. In bis zu 10 paral- und von denen auch die klassischen Desktopum- lelen Tracks, verteilt auf 14 Räume, diskutieren gebungen wie GNOME und KDE-Plasma profitie- die Entwickler von 9 bis 18 Uhr. Jedes Thema An diesem Pool konnte man etwas ren können. entspannen. wird in einer Stunde abgearbeitet und die Sitzun- Neben dem Umschwung auf Unity zeigten auch gen sind komplett auf das Erzielen von Ergebnis- andere Themen, wohin der Weg des Linux- Der UDS begann am Montagmorgen mit der sen angesetzt. Unterbrochen wurde dieser Mara- Desktops führt. Ein großes Augenmerk liegt auf Keynote von Mark Shuttleworth und der Ankündi- thon nur von der Mittagspause mit anschließen- der ARM-Architektur [10] rund um linaro [11]. gung, dass Ubuntu 11.04 nicht GNOME Shell [6], den Präsentationen. ARM-Prozessoren findet man hauptsächlich in sondern Unity [7] als Desktop-Shell enthalten Smartphones; sie sind sehr energiesparend. Vie- Trotz der Anstrengungen kam auch der „Urlaub“ wird [8]. Die Ankündigung hat eine sehr kontro- le Anwendungen müssen auf diese neue Her- nicht zu kurz. In der stark touristisch gepräg- vers geführte Diskussion gerade bei GNOME- ausforderung angepasst, Kerneltreiber müssen ten Umgebung von Orlando gibt es dafür ge- Enthusiasten ausgelöst und im nächsten halben integriert und die Compositing-Manager (Compiz nug Möglichkeiten. Abends bestand ein Shutt- Jahr wird es sehr spannend, zu sehen, wie die- und KWin) müssen auf OpenGL-ES [12] portiert leservice nach Downtown Disney [2], Universal se Entwicklung weiter verläuft. Wie Mark Shuttle- werden. City Walk [3] und Pointe Orlando [4]. Für einige worth in seiner Keynote sagte, ist es zwar nicht Mitglieder der Ubuntu-Community gab es auch die GNOME Shell, aber eine Shell für GNOME. Ein weiterer Schwerpunkt liegt auf Nokias die Möglichkeit, Mickey Mouse im Epcot [5] zu Dass eine universelle Shell nicht die einzige Lö- und besonders der deklarativen Sprache

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 45 VERANSTALTUNG

Qt Quick [13] (aka QML). Während der gesam- die Anordnung: Wer aktiv an der Sitzung beiträgt, Canonical-Entwicklungen geäußert hat, ist es ten Konferenz waren Mitarbeiter von Nokia anwe- soll nahe an den Mikrofonen sein. Die Diskus- wichtig, sich mit den anderen Entwicklern auszu- send und es konnten die gegenseitigen Wünsche sionen in den den einzelnen Räumen konnten tauschen und gemeinsam an der Zukunft des frei- ausgetauscht werden. Gerade Qt Quick scheint auch visuell verfolgt werden. Für die „Remote“- en Desktops zu arbeiten. für viele Entwickler sehr interessant zu sein und Teilnehmer bestand über IRC die Möglichkeit, an LINKS hat durchaus auch GTK-Entwickler begeistern der Diskussion teilzunehmen. Pro Raum stand können. ein IRC-Channel zur Verfügung und der Chat [1] http://summit.ubuntu.com/uds-n/ wurde per Beamer an eine Leinwand pro- [2] http://en.wikipedia.org/wiki/Downtown_Disney_ jiziert. Dies führte zum Teil zu sehr komi- (Florida) schen Unterhaltungen, wenn man mit einer [3] http://www.universalorlando.com/OverviewPages/ Leinwand kommuniziert. Nightlife/citywalk_nightlife_overview.aspx [4] http://www.pointeorlando.com/ Die Sitzungen selbst waren extrem produk- [5] http://en.wikipedia.org/wiki/Epcot tiv. Durch die Kürze der Zeit war man ein- [6] http://live.gnome.org/GnomeShell fach zu einem sehr konzentrierten Arbeiten [7] http://unity.ubuntu.com/ gezwungen. Ergebnisse wurden direkt in [8] http://www.jonobacon.org/2010/10/25/ubuntu-11- Gobby-Dokumenten protokolliert. Natürlich 04-to-ship-unity/ ist es nicht möglich, einen Eindruck über [9] http://en.wikipedia.org/wiki/Upstream_(software_ die gesamte Konferenz zu bekommen – bei development) 10 parallelen Tracks ist das schlicht undenk- [10] http://de.wikipedia.org/wiki/ARM-Architektur bar. [11] http://www.linaro.org/ Zum Abschluss der UDS gab es am Frei- [12] http://de.wikipedia.org/wiki/Open_Graphics_ tagabend noch eine Kostümparty, jedoch Library_for_Embedded_Systems Das Konferenzzentrum wirkt nicht nur von außen sehr haben viele Teilnehmer auf die Möglich- prächtig. [13] http://doc.qt.nokia.com/latest/qtquick.html keit, sich zu verkleiden, verzichtet. Die Par- ty war noch einmal eine Gelegenheit, mit Ent- Die Räume, in denen die 10 parallelen Tracks wicklern aus anderen Bereichen Kontakt aufzu- stattfanden, waren vergleichsweise klein und bo- Autoreninformation nehmen sowie den legendären Jono rocken zu ten schätzungsweise zwischen 20 und 50 Leuten sehen. Man konnte auch einige Leute sehen, die Martin Gräßlin (Blog) hat an der Platz. Die Stuhlreihen waren kreisförmig ange- die Gelegenheit nutzten, sich mit Mark Shuttle- UDS als Upstream-KDE-Entwickler ordnet und Leute, die aktiv an der Sitzung teilnah- worth fotografieren zu lassen. für Natty Narwhal teilgenommen. men, sollten weiter vorne sitzen. Je weiter vorne, desto kleiner die Stuhlreihe. Jede Sitzung wur- Insgesamt sind die Eindrücke von der Konferenz de über einen Audio-Stream für die Zuhausege- sehr positiv. Gerade als Upstream-Entwickler, bliebenen verfügbar gemacht. Dies erklärt auch der sich auch des Öfteren schon kritisch zu Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 46 REZENSION

Rezension: Phrasebooks von Jochen Schnelle

ie Phrasebook-Serie verfolgt einen an- ver gibt es noch Bücher zu den Themen Linux, Datenbank [4]. Des Weiteren existieren Kapitel deren Ansatz als viele andere Compu- PHP, Ruby, Java, Objective-C 2.0 und Mac OS X. zum Ver- und Bearbeiten von HTML und XML so- D terbücher: Sie will kein allumfassen- Die Bücher verdienen wirklich den Titel Taschen- wie Internet-/Netzwerk-Themen. Dazu gehören des Wissen oder keinen umfangreichen Ein- buch, weil sie mit einer Abmessung von 17,5 x u. a. der Umgang von Python mit SMTP, POP3, steig zu einem bestimmten Thema oder einer 11,5 cm und einem Umfang von ca. 180 bis 290 XML Remote Procedure Calls [5], Erstellen eines Programmiersprache bieten, sondern Lösun- Seiten in jede Tasche passen. Alle Bücher sind in einfachen Webservers mit Python sowie ein recht gen zu häufigen Problemen. schwarzweiß gedruckt. Dies fällt aber nicht weiter umfangreiches Kapitel zu Python-Skripten, wel- ins Gewicht, da keine Bildschirmfotos oder Gra- che als CGI-Anwendung [6] serverseitig laufen. Das Schema ist dabei für alle Phrasebooks ähn- fiken enthalten sind, sondern lediglich Text bzw. lich: Zuerst wird die „Phrase“, also in der Re- Insgesamt behandelt das Python Phrasebook al- Programmcode. gel ein Problem oder eine Aufgabe, kurz be- so ein relativ weites Themenspektrum. Alle The- schrieben, anschließend wird die Lösung mit men werden im zur Verfügung stehenden Um- dem zugehörigen Codeschnipsel gezeigt. Dies Python Phrasebook fang hinreichend vollständig behandelt. Leider erfolgt in der Regel auf weniger als zwei Sei- Das Python Phrasebook gehört mit 276 Seiten datiert die immer noch aktuelle, erste Auflage ten pro Phrase. Daher sind die Bücher weniger zu den umfangreicheren Büchern der Reihe. Das des Buches auf Ende 2006, sodass das „moder- zum Lernen geeignet, sondern eher als kompak- Buch beginnt mit einem Python [1] Crashkurs, nere“ Python 3.x sowie Elemente, die neu bzw. tes Nachschlagewerk bzw. als begleitende Lite- in dem im Schnelldurchgang die Syntax, Objek- zurückportiert in Python 2.6 und 2.7 sind, nicht ratur beim Erlernen einer Sprache anzusehen. te, Funktionen, Klassen und die Fehlerbehand- behandelt werden. Da sich das Buch aber eher Je nach Phrasebook und Kapitel schwankt das lung von Python erklärt wird. Die folgenden bei- auf grundlegende Dinge fokussiert, ist dies kei- Niveau des Inhalts. Während einige Sektionen den Kapitel behandeln den Umgang mit Strings ne allzu große Einschränkung. Für komplette An- durchaus auch für ambitionierte Einsteiger ver- und Datentypen wie Tupeln, Listen und Dictio- fänger ist das Niveau zu hoch; „Profis“ werden ständlich und nachvollziehbar sind, setzen ande- naries – hier kommen auch Anfänger auf ihre dagegen in dem Buch nur wenig Neues entde- re Teile schon fortgeschrittenes Wissen voraus. Kosten, ebenso wie im darauffolgenden Kapitel, cken können, sodass sich das Python Phrase- in dem der Umgang mit Dateien behandelt wird. book für fortgeschrittene Anfänger und fortge- Alle Phrasebooks sind in Englisch geschrieben Fortgeschrittenes Wissen wird hingegen bei den schrittene Python-Nutzer empfiehlt. und gut zu verstehen. Obwohl jedes Phrasebook sich anschließenden Themen vorausgesetzt, um von einem anderen Autor bzw. anderen Autoren alle Beispiele nachvollziehen zu können – hier Buchinformationen verfasst wurde, ist der Schreibstil relativ homo- geht es um Threads bzw. die parallele Verarbei- Titel Python Phrasebook gen. Die Texte lesen sich locker und flüssig, es tung von Daten. Das Kapitel zum Thema Daten- Autor Brad W. Dayley wird in den meisten Fällen stets „auf den Punkt“ banken behandelt sowohl die in Python enthal- Verlag Sams, 2006 geschrieben, ohne unnötige Abschweifungen. tenen, einfachen Schlüssel-Werte-Datenbanken, Umfang 288 Seiten Neben den hier vorgestellten Phrasebooks zu Py- das Shelve- [2] und Pickle-Modul [3] sowie ei- ISBN 978-0672329104 Preis ca. 17,- Euro thon, MySQL, JavaScript und dem Apache Ser- nige Phrasen zum Umgang mit einer MySQL-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 47 REZENSION

JavaScript Phrasebook vorfinden. Wer in seinen Webanwendungen häu- zu typischen Problemen (z. B. zu defekten Tabel- fig Webseiten mittels JavaScript manipuliert, wird len) gezeigt. Weiterhin hat das Buch einen lan- Das JavaScript Phrasebook steigt direkt ins The- wahrscheinlich glücklich mit diesem Buch. Wer gen Anhang, der fast ein Drittel des gesamten ma „typische“ JavaScript-Codeschnipsel ein, es komplette Anwendungen in JavaScript / AJAX Buchs ausmacht, welcher mit „A brief MySQL Tu- gibt keine Sprachelemente- oder Syntaxüber- schreiben möchte, findet sicherlich bessere Bü- torial“, also „eine kurze Einführung in MySQL“, sicht. Das erste Kapitel beschreibt, wie man cher als dieses. überschrieben ist. Dies ist insofern irritierend, da JavaScript in Webseiten einbinden kann. Das alle im Anhang aufgeführten Themen schon in zweite Kapitel ist mit „Common Phrases“ über- Buchinformationen der Kapiteln 2 bis 7 behandelt werden. schrieben und bietet eine Sammlung von häufi- Titel JavaScript Phrasebook gen Problemen und deren Lösung. Dazu gehö- Autor Christian Wenz Gerade der zuvor genannte Punkt legt die Vermu- ren u. a. das Ändern von Text auf einer Web- Verlag Sams, 2006 tung nahe, dass den Autoren des MySQL Phra- seite, das Validieren von Nutzereingaben oder Umfang 272 Seiten sebooks beim Schreiben die Ideen für Beispiele das Feststellen der Browser-Version und zuge- ISBN 978-0672328800 ausgegangen sind. Der Anhang A ist in weiten hörige Browserweichen. Die folgenden Kapitel Preis ca. 15,- Euro Teilen redundant zu vorangegangenen Kapiteln – sind nach Themen sortiert und behandeln Bil- hier hätte man besser weitere oder weiterführen- der, CSS, DOM und DHTML, Cookies, den Um- MySQL Phrasebook de Themen zu MySQL untergebracht. Weiterhin gang mit Fenstern und Frames sowie eingebette- wirkt das Kapitel 8 zu den verschieden APIs wie ten Medien (z. B. Flash). Besonders erwähnens- Das MySQL Phrasebook behandelt die popu- ein Fremdkörper im Buch, da ansonsten nur rei- wert ist das Kapitel zum Thema „Forms“, also läre, relationale Datenbank MySQL [8]. Das ne SQL-Beispiele verwendet werden. Außerdem HTML-Eingabeformularen. Dieses ist mit knapp Buch setzt dabei eine funktionierende MySQL- ist der API-Teil viel zu kurz, um einen vernünfti- 40 Seiten das umfangreichste und hält eine Men- Installation voraus. Zum Einsteig wird anhand gen Einblick in die MySQL-APIs zu geben. Ohne ge nützlicher Beispiele zum Thema JavaScript von recht anschaulichen Diagrammen gezeigt, Kenntnisse in C, Perl oder PHP lassen sich die und Formularen bereit. Dem Thema AJAX [7] wie der MySQL-Datenbankserver organisiert ist, Beispiele sowieso nicht nachvollziehen. ist ebenfalls ein eigenes Kapitel gewidmet. Die- wie ein LAMP-Stack [9] aufgebaut ist und wie die ses beginnt – untypisch für die Phrasebook-Serie Datenbank aussieht, welche im Buch für die Bei- Aber leider ist auch der restliche Inhalt des Bu- – mit einer knapp zweiseitigen Einleitung, was spiele genutzt wird. Im Folgenden werden dann ches als „dünn“ zu bezeichnen. Alle Phrasen ge- AJAX überhaupt ist, bevor weitere 15 Codebei- typische Datenbankoperationen gezeigt, wie z. B. hören in den Bereich der SQL-Grundlagen und spiele zum Thema folgen. das Anlegen von Tabellen, Einfügen, Abfragen sind in ähnlich komprimierter Form auch im deut- und Löschen von Daten sowie die Benutzerver- schen MySQL-Handbuch [10] oder in einem der Das Buch deckt alle gängigen Gebiete der In- waltung von MySQL. In Kapitel 8 erfolgt dann unzähligen Blogeinträge oder freien Tutorien zu teraktion von JavaScript mit HTML bzw. Websei- ein Sprung zu einem komplett anderen Thema, MySQL zu finden. Wer gerade mit SQL / MySQL ten ab. Um alle Beispiele nachvollziehen zu kön- nämlich der C-, Perl- und PHP-API von MySQL, begonnen hat, findet vielleicht das ein oder ande- nen, benötigt man zumindest fortgeschrittene An- bevor in Kapitel 9 die Nutzung der SQL-Befehle re interessante Beispiel im MySQL Phrasebook, fängerkenntnisse, wobei sicherlich auch fortge- JOIN und UNION erläutert wird. Im zehnten und aber selbst für fortgeschrittene Anfänger bietet schrittene Anwender interessante Codebeispiele letzten Kapitel werden verschiedene Lösungen das Buch wenig Substanz.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 48 REZENSION

Buchinformationen beim Lesen nie das Gefühl, dass eine beschrie- Ob der Preis für den gebotenen Inhalt und Um- Titel MySQL Phrasebook bene Aufgabe überflüssig ist oder keinen tiefe- fang angemessen ist, muss jeder Leser für sich Autor Zak Greant ren Nutzen hat. Zu vielen Beispielen gibt es ei- selbst entscheiden. Verlag Sams, 2006 ne kurze Erklärung, wann und wo diese von Nut- LINKS Umfang 192 Seiten zen sein können oder welche Gefahren diese in [1] http://www.python.org ISBN 978-0672328398 sich bergen können. Der Autor setzt dabei jedoch [2] http://docs.python.org/library/shelve.html Preis ca. 19,- Euro eine gewisse Erfahrung mit dem Apache-Server voraus, wobei das Buch sich nicht (nur) an erfah- [3] http://docs.python.org/library/pickle.html Apache Phrasebook rene Anwender richtet. Auch Einsteiger mit fort- [4] http://sourceforge.net/projects/mysql-python/ Das Apache Phrasebook beschreibt die geschrittenen Kenntnissen finden sicherlich viele [5] http://de.wikipedia.org/wiki/XML-RPC Nutzung und Administration eines Apache- Anregungen und Tipps im Buch. [6] http://de.wikipedia.org/wiki/Common_Gateway_ Webservers [11]. Die im Buch gezeigten Bei- Interface spiele sind dabei nicht, wie in den anderen Phra- Buchinformationen [7] http://de.wikipedia.org/wiki/Ajax_(Programmie sebooks, Programmcode, sondern in der Regel Titel Apache Phrasebook rung) Ausschnitte oder Einträge für zugehörige Kon- Autor Daniel Lopez [8] http://www.mysql.de/ Verlag Sams, 2006 figurationsdateien. Das Buch beginnt mit der [9] http://de.wikipedia.org/wiki/LAMP Umfang 240 Seiten Installation und dem grundlegenden Betrieb des [10] http://dev.mysql.com/doc/refman/5.1/de/ ISBN 978-0672328367 Webservers, dann folgen Kapitel zur Fehlerbe- [11] http://httpd.apache.org/ Preis ca. 15,- Euro hebung sowie Log-Dateien und Überwachung [12] http://de.wikipedia.org/wiki/Transport_Layer_ des Servers. Weiterhin werden in jeweils eige- Zusammenfassung Security nen Kapiteln Beispiele für das das Umschrei- Die Phrasebook-Serie hat einen interessanten, [13] http://www.webdav.org/ ben von URLs sowie das Ausliefern von dyna- andersartigen Ansatz und hebt sich somit von mischen Inhalten, virtuelle Hosts wie Sicherheit einer Vielzahl der verfügbaren EDV-Literatur ab. (inkl. SSL [12]) und für die Zugangskontrolle ge- Das Ergebnis fällt dabei je nach Titel unterschied- Autoreninformation zeigt. Weitere Themen sind WebDAV [13], Tuning lich aus. Während das Python Phrasebook auch und Performance-Verbesserung und Apache als Jochen Schnelle programmiert ab für ambitionierte Einsteiger verständlich ist und Proxy sowie Caching-Mechanismen. Im letzten und an Web-Applikationen für das In- diese beim Erlernen von Python unterstützen Kapitel werden dann die Themen „Multiproces- tranet. Primäre Programmiersprache kann, bieten das JavaScript- und Apache Phrase- sing“ und die mögliche Nutzung des Apache- ist Python, als Datenbank kommt oft book auch fortgeschrittenen Nutzern interessan- Servers als FTP- und POP3-Servers behandelt. MySQL zum Einsatz, als Webserver te Beispiele und Codeschnipsel. Das MySQL der Apache. Bei Lesen des Buches wird relativ schnell klar, Phrasebook trübt dabei leider aufgrund seines dass der Autor viel Erfahrung im Umgang mit redundanten und eher dünnen Inhalts den an- dem Apache-Server hat. Alle gezeigten Proble- sonsten positiven Eindruck der hier besproche- me und Lösung wirken praxisorientiert; man hat nen Bücher aus der Phrasebook-Serie. Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 49 REZENSION

Rezension: iText in action – Second Edition von Michael Niedermair

it der Java-Bibliothek iText [1] ist es ein PDF-Dokument erzeugt. Im zweiten Kapitel Kapitel (44 Seiten) wird das Erstellen und Ausfül- möglich, PDF-Dateien [2] komfortabel (37 Seiten) geht es um die grundlegenden Be- len von interaktiven Formularen (AcroForm, XFA M zu erzeugen und zu bearbeiten. Die reiche eines Dokuments wie Kapitel, Überschrift, etc. [5] ) behandelt. einfache Handhabung der ausgereiften Biblio- Absatz, Zeile etc., wie man die entsprechenden thek ermöglicht das sehr schnelle Erstellen Objekte mit iText erzeugt und entsprechend im Farbe und Schriftarten von PDF-Dokumenten, ohne dabei all zu tief PDF-Dokument platziert. Das dritte Kapitel (36 Der dritte Bereich ist eine Sammlung von wei- in die Materie einsteigen zu müssen. Das Seiten) behandelt den Low-Level-Zugriff auf den teren Möglichkeiten, die in den ersten bei- Buch „iText in action“ führt anhand von sehr PDF-Inhalt, zum Beispiel um direkt einen Text den Bereichen nicht angesprochen wurden. Im vielen Beispielen in das Thema ein und ist für über ein Bild zu platzieren oder entsprechen- neunten Kapitel (34 Seiten) geht es um Web- den Anfänger bis hin zum Profi geeignet. Es de Zeichnungselemente (Linien, Kreise, Recht- Applikationen (HTML, XML, Java-Servlets [6] beschäftigt sich ausschließlich mit der freien ecke . . . ) auf der Seite anzuordnen. Dabei wird und JSP [7]) und das Erstellen von PDF- Version der Bibliothek, die unter der GNU Af- ein Kalender mit Terminen für ein Filmfestival er- Dokumenten „on the fly“. Das zehnte Kapitel fero General Public License V3 [3] [4] zur Ver- zeugt. Im vierten Kapitel (29 Seiten) geht es um (33 Seiten) zeigt, wie man Farbe verwendet, wel- fügung steht. das Erstellen von Tabellen in verschiedenen Va- che Farbsysteme mit PDF möglich sind und wie riationen. Das fünfte Kapitel (35 Seiten) zeigt das man Bilder im PDF-Dokument verwenden kann. Was steht drin? Auslösen von Ereignissen, zum Beispiel bei Ta- Das elfte Kapitel (21 Seiten) erklärt, wie man ver- Das Buch teilt sich in fünf Bereiche auf und bellen, Absätzen, Kapiteln und Seiten sowie das schiedene Fonts verwendet und einbindet. Da- enthält insgesamt 16 Kapitel mit zusätzlichem Erstellen von Kopf- bzw. Fußzeilen und das Set- bei wird auch die Verwendung von Unicode und Anhang und Stichwortverzeichnis. Durchgängig zen von Wasserzeichen. das Anzeigen von CJK-Fonts [8] besprochen, so- wird dabei als Beispiel ein Filmarchiv mit Bildern dass zum Beispiel auch Text von oben nach un- verwendet, auf dessen Grundlage vom einfachen Überarbeiten ten oder von rechts nach links geschrieben wer- Filmplakat über einen farbig schön gestalteten Der zweite Bereich beschäftigt sich mit dem den kann. Im zwölften Kapitel (31 Seiten) geht Kalender bis hin zu ausgefeilten Reports, Listen Überarbeiten von bereits erstellten PDF- es um das Schützen von PDF-Dokumenten mit und Einladungen alles erstellt wird, was man sich Dokumenten. Im sechsten Kapitel (35 Seiten) Passwort oder digitaler Signatur und um die Da- zu diesem Thema vorstellen kann. geht es um das Importieren von anderen PDF- tenkompression, also darum, PDF-Dateien klei- Seiten in das eigene Dokument, das Ausfüllen ner zu machen. Erstellen von PDF-Formularen und das Kopieren von PDF- Der erste Bereich beschäftigt sich mit dem grund- Seiten, um zum Beispiel für jede Seite eines Unter die Haube geschaut legenden Erstellen von PDF-Dokumenten. Da- PDF-Dokuments eine eigene Datei zu erzeugen. Der vierte Bereich, „Under the hood“, beschäftigt bei wird im ersten Kapitel (17 Seiten) darauf ein- Das siebte Kapitel (42 Seiten) zeigt die Vorge- sich mit den Interna eines PDF-Dokuments. Im gegangen, was man mit PDF-Dokumenten alles hensweise um PDF-Dokumente interaktiv zu ma- dreizehnten Kapitel (39 Seiten) geht es um die machen kann, wie man die Beispiele verwendet chen, um entsprechende Aktionen auszuführen verschiedenen PDF-Versionen und was mit wel- sowie übersetzt und wie man in fünf Schritten sowie das Einbinden von JavaScript. Im achten cher Version so alles möglich ist. Das vierzehn-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 50 REZENSION te Kapitel (41 Seiten) befasst sich mit dem PDF- cke. Alle Beispiele stehen als Datei [10] zur Verfü- Seiten zu je drei Spalten. Er vermittelt den Ein- Grafik-Modell und wie man Zeichnungen mit gung. Gute Java-Kenntnisse sind aber dringend druck, dass er etwas lieblos erstellt worden ist, da entsprechenden Befehlen selber erstellen kann. erforderlich, da auf die Java-Grundlagen nicht Begriffe, Stichwörter, Klassennamen, Methoden Auch auf die Besonderheiten, wie Linientyp, Pfeil- eingegangen wird. und Abkürzungen etc. zusammengeworfen wor- spitzen, Clipping (das Abschneiden von Objek- den sind. Dabei hilft dies in den meisten Berei- ten am Rand), verschiedene Koordinatensyste- Durch die vielen kleinen Codebeispiele und die chen nicht wirklich, das zu finden, was man sucht. me und Transformationen wird eingegangen. Im entsprechenden PDF-Ergebnisse wird das Buch Oft werden auch zu viele Seitenangaben verwen- fünfzehnten Kapitel (33 Seiten) geht es darum, sehr aufgelockert und erleichtert das „Durchar- det (zum Beispiel „59–67, 76, 87, 321, 454, 477“), wie man Inhalte, zum Beispiel in verschiedenen beiten“ sehr. Zu jedem Bereich werden meist aus- ohne den Haupteintrag besonders hervorzuhe- Layern, anzeigt oder auch verbirgt, ferner um führliche Hintergrundinformationen und Grundla- ben, sodass man lange blättern muss, bis man SVG-Zeichnungen [9] und wie man spezielle In- gen vermittelt, sodass auch ein Anfänger die Bei- das findet, was man sucht. Es entsteht dabei lei- halte, die nur mit entsprechenden Erweiterungs- spiele ohne Probleme nachvollziehen kann. Der der der Eindruck, dass so mancher Eintrag auto- Plug-ins verwendet werden können, einbindet. erfahrenere Leser kann einzelne Kapitel problem- matisch generiert worden ist. Das sechzehnte Kapitel (36 Seiten) behandelt los überspringen und sich nur die Bereiche her- die verschiedenen Streams für Bilder, Fonts etc. aussuchen, die ihn interessieren. Das verwende- Das Beispiel der SVG-Umwandlung wurde aus und wie man diese verwendet. Es wird gezeigt, te Beispiel des Filmarchivs zieht sich durch alle der ersten Auflage übernommen, ohne es dabei wie man Dateien in das PDF-Dokument einbin- Kapitel und wird Schritt für Schritt erweitert und auf die aktuelle Version der Batik-Bibliothek (Ar- den und wieder extrahieren kann. Die einge- ergänzt. beiten mit SVG-Dateien [11]) umzustellen. Ver- bundenen Dateien können auch als Multimedia- sucht man das Beispiel mit der aktuellen Version Objekt verwendet werden, um Musik abzuspielen Kritik zu verwenden, so ist sehr viel Handarbeit für die oder einen Video-Film zu zeigen. Auf die entspre- Das Buch besitzt einen durchgängigen roten Fa- Anpassung notwendig. chenden Formate (AVI, MIV, MP3, etc.) wird ein- den und zeigt, dass der Autor sich mit der Mate- gegangen. rie sehr gut auskennt (er ist nicht nur der Buch- Abschließend muss man das Buch für den An- autor, sondern auch Hauptentwickler der iText- fänger und den Profi als noch sehr gut bewerten, Im Anhang (5 Seiten) finden sich Verweise und Bibliothek) und diese auch vermitteln kann. Im jedoch entspricht das Stichwortverzeichnis nicht Links auf die im Buch verwendeten Quellen und Allgemeinen ist der englische Text auch für Le- der Qualität der vorherigen Kapitel. Spezifikationen sowie das Stichwortverzeichnis ser mit weniger Englischkenntnissen gut zu le- (17 Seiten). sen. Lädt man sich die Beispiele herunter, so Buchinformationen kann man diese sofort ausprobieren, da alle not- Wie liest es sich? Titel iText in action – Second Edition wendigen weiteren Bibliotheken im Paket bereits Autor Bruno Lowagie Das Buch liest sich sehr flüssig und alle Beispiele eingebunden sind. sind sehr ausführlich erklärt. Anschauliche Ver- Verlag Manning, Oktober 2010 weise im Text und Quellcode ermöglichen ein Typographisch ist das Buch sehr ansprechend Umfang 585 Seiten + 32 Seiten Vorspann schnelles Verstehen des Inhaltes und ein einfa- gesetzt, was ein angenehmes Lesegefühl er- ISBN 978-1-93518-261-0 Preis ca. 40 C ches Abändern der Beispiele für eigene Testzwe- zeugt. Der Index erstreckt sich über siebzehn

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 51 REZENSION

LINKS

[1] http://www.itextpdf.com/ [2] http://www.adobe.com/devnet/pdf/pdf_reference. html [3] http://www.itextpdf.com/terms-of-use/agpl. php [4] http://www.gnu.org/licenses/agpl-3.0.html [5] http://partners.adobe.com/public/developer/xml/ index_arch.html [6] https://secure.wikimedia.org/wikipedia/de/wiki/ Servlet [7] https://secure.wikimedia.org/wikipedia/de/wiki/ JavaServer_Pages [8] https://secure.wikimedia.org/wikipedia/de/wiki/ CJK [9] https://secure.wikimedia.org/wikipedia/de/wiki/ Scalable_Vector_Graphics [10] http://itextpdf.com/examples/ [11] http://xmlgraphics.apache.org/batik/

Autoreninformation

Michael Niedermair ist Lehrer an der Münchener IT-Schule und unterrichtet hauptsächlich Programmierung, Datenbanken und IT-Technik. Er beschäftigt sich seit Jahren mit der PDF-Erstellung, auch mit iText.

„Large Hadron Collider“ © by Randall Munroe (CC-BY-NC-2.5), http://xkcd.com/401 Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 52 LESERBRIEFE

Leserbriefe

Für Leserbriefe steht unsere E-Mailadresse scheint es, der Autor möchte nur wieder ein biss- Python-Programmierung: Teil 2 zur Verfügung – wir chen über Kubuntu meckern. Ich habe jedenfalls Ich als Python-Fan freue mich natürlich sehr freuen uns über Lob, Kritik und Anregungen zum noch kein einziges Programm durch ein anderes darüber, dass Ihr Euch dessen mal angenommen Magazin. ersetzt oder ein PDF gefunden, das Okular zum habt. Was ich ein wenig schade finde, ist, dass Schwitzen bringt. Wie seriös ist es von seiner Ihr das „veraltete“ Python 2.x als Standard ver- An dieser Stelle möchten wir alle Leser ausdrücklich Hardware/Konfiguration auf eine ganze Distribu- wendet und das „aktuelle“ Python 3 als „Sonder- ermuntern, uns auch zu schreiben, was nicht so gut tion zu schließen? Silmaril (Kommentar) fall“ darstellt. gefällt. Wir bekommen sehr viel Lob (was uns natür- lich freut), aber vor allem durch Kritik und neue Ideen Dabei hat Python 3 so viele erwähnenswerte können wir uns verbessern. Solche Artikel sind (leider?) sehr oft Erfah- Neuerungen erfahren. Nicht zuletzt die Unicode- rungsberichte. Das heißt, wenn während des Sache, die im Artikel ja auch erwähnt wird. Und Leserbriefe und Anmerkungen Tests etwas schief geht, wird das in den Arti- mal ehrlich „[’a’, ’b’, ’c’]“ lässt sich doch wesent- kel aufgenommen. Zu Okular hat der Autor z. B. lich besser lesen als „[u’a’, u’b’, u’c’]“, oder? Ubuntu 10.10 noch folgendes geschrieben: „Es ist ein KDE- Den Part über Kubuntu 10.10 finde ich Problem, tritt aber nur unter bestimmten Bedin- Nennt mich Fanboy, aber ich habe mich tierisch extrem misslungen. Bis auf ist KDE gungen auf, z. B. bei 16 Bit Farbtiefe. Für die gefreut, dass meine Distribution das Standard- 4.5.1 extrem stabil und schnell! Die Sym- meisten Benutzer ist das nicht weiter wichtig, Python-Paket python genannt hat und das bole sind auch ok. Nur die Wahl, Rekonq aber das wurde erst nach der Veröffentlichung Python-2-Paket python2, anstatt es so zu ma- als Default-Browser zu setzen, verstehe klar [1].“ chen, dass Python 3 als Sonderfall python3 be- ich auch nicht, aber mit apt-get install handelt wird und das „veraltete“ Python 2 als nor- males python-Paket verfügbar ist. konqueror konqueror-plugin-searchbar Nun gibt es aber zig Tausend Systeme, auf de- konq-plugins konq-plugins-l10 ist die Welt nen Kubuntu 10.10 wie geschmiert laufen wird. Klar: Es ist noch nicht jedes schrullige Modul kon- wieder in Ordnung. Gast (Kommentar) Und es wird auch zig Tausend Systeme geben, vertiert worden und es bedarf ein wenig Hand- auf denen Kubuntu 10.10 nur in einer arbeit (wobei sauber programmierter Code auch Kurzer Hinweis: Der Autor sollte einfach noch- startet und der X-Server nicht läuft. problemlos mit „2to3“ konvertiert werden kann), mal genauer hinschauen [. . . ] bei den Einstel- alte Programme auf das aktuelle Python zu por- lungsmöglichkeiten von JavaScript und Cookies tieren, aber letztendlich ist die Entwicklung nicht in rekonq. Da bricht natürlich das ganze Ab- All diese Systeme kann eine einzelne Person gar aufzuhalten. lehnungskonstrukt gegen Kubuntu zusammen ;- nicht testen. Sollen solche Probleme denn nun in ). Rekonq lässt nichts an Features vermissen, einem „seriösen“ Artikel einfach wegfallen, weil „Neueinsteigern“ das „veraltete“ Python 2 beizu- ist platzsparend praktisch und schnell und wird es ggf. Leute gibt, bei denen es nicht auftritt? In bringen, anstelle Python 3 zu verwenden und dem Autor nicht den Gefallen tun und schnell wie- meinen Augen ist jeder Bug ein Bug zu viel. die Unterschiede zu Python 2 zu beschreiben, der in der Versenkung verschwinden. Überhaupt Dominik Wagenführ halte ich nicht gerade für sinnvoll. Das wäre

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 53 LESERBRIEFE so, als wenn ich heutzutage noch jemandem zumindest unter Ubuntu, der, soweit ich weiß, möchte. Es ging mir nur darum, welche Python- HTML 4.01 beibringen würde, anstatt XHTML 1.1 größten Linux-Distribution, noch Standard ist Version es mir ermöglicht, einen realistischen bzw. HTML 5. Klar, es ist verbreiteter, aber es ist und PyGTK (eine Bibliothek, die ich unbedingt und praktischen Einblick in die Sprache zu geben. eben „deprecated“. Dirk (Kommentar) auch vorstellen möchte und die alles andere als Und zur Zeit ist das für mich noch Python 2.x. „schrullig“ sein dürfte) unter Python 3 noch nicht Und ich denke, gerade wenn man sich beispiels- Danke für Deine Rückmeldung. Ich habe mich ohne Weiteres verfügbar ist. weise LTS-Versionen [von Ubuntu] ansieht, dass mit der Entscheidung wirklich nicht leicht ge- das durchaus noch ein oder vielleicht zwei Jahre tan. Wie ich im ersten Teil bereits gesagt ha- Anders als Du anscheinend den Eindruck hast, so bleiben wird. be, kann meine „Einführung“ kein Ersatz für ei- geht es mir nicht darum, an etwas Veraltetem ne tiefergehende Beschäftigung sein. Sie soll die festzuhalten, sondern diejenige Alternative zu Wie gesagt: Ich verstehe Deine Kritik und habe Möglichkeiten von Python aufzeigen und zum wählen, die zur Zeit noch die breitere Unter- die Entscheidung nicht leichtfertig getroffen. Experimentieren anregen. Ein vollständiges Tu- stützung genießt. Wer meine Einführung liest Daniel torial oder eine umfassende Einführung ist sie und sich für Python begeistert, wird sicher kei- LINKS nicht. Dieses „Experimentieren“ und „Vorstellen“ ne großen Probleme haben, die entsprechenden [1] http://www.pro-linux.de/news/1/16363/comm/ war letztlich dann auch der Beweggrund für Py- Änderungen in der Sprache zu verstehen und zu 468521/re-kde-kritik-in-ubuntu.html thon 2.x. erlernen. Die Redaktion behält sich vor, Leserbriefe gegebe- Ich habe zunächst versucht, einen Kompromiss Ich hätte Python 3 gerne vorgestellt und natür- nenfalls zu kürzen. Redaktionelle Ergänzungen fin- zu finden, der Python 2.x und Python 3.x glei- lich gehen mir die Unicode-String-Deklarationen den sich in eckigen Klammern. chermaßen gerecht wird. Ich wurde davon über- (u’Hallo’) auch auf den Keks. Python 3 bringt zeugt, dass ein solcher Kompromiss letztlich kon- sinnvolle Neuerungen, die das Leben für den Die Leserbriefe kommentieren traproduktiv sein könnte. Das für mich wichtigs- Programmierer einfacher machen. Es geht über- te Argument für Python 2.x ist letztlich, dass es haupt nicht um die Frage, ob man umsteigen

„New Car“ © by Randall Munroe (CC-BY-NC-2.5), http://xkcd.com/570

© freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 54 MAGAZIN

Veranstaltungskalender Messen Veranstaltung Ort Datum Eintritt Link PGDay.EU Stuttgart 06.-08.12.2010 - http://2010.pgday.eu/ Chaos Communication Congress Berlin 27.-30.12.2010 70 EUR http://events.ccc.de/congress/2010 5. LIT-OL Oldenburg 12.02.2011 frei http://www.lit-ol.de/ CeBIT Hannover 01.-05.03.2011 39 EUR http://www.cebit.de/ Chemnitzer Linux-Tage Chemnitz 19.-20.03.2011 8 EUR http://chemnitzer.linux-tage.de/ Augsburger Linux-Infotag Augsburg 26.03.2011 frei http://www.luga.de/ (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 Januar-Ausgabe wird voraussichtlich am 2. Januar unter anderem mit folgenden Themen veröffentlicht:

 Plasma erobert die Welt

 KTurtle – Programmieren lernen mit der Schildkröte

 Teile und herrsche – Internet-Sharing im Netzwerk

 Heimautomatisierung für Hardwarebastler 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 12/2010 55 MAGAZIN

Impressum ISSN 1867-7991 freiesMagazin erscheint als PDF und HTML einmal monatlich. Erscheinungsdatum: 5. Dezember 2010 Redaktionsschluss für die Januar-2010-Ausgabe: 16. Dezember 2010

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 Hans-Joachim Baader S.4 Daniel Braun Stefan Fangmeier Florin Bottke S.35 Mathias Menzer Karsten Schuldt Martin Gräßlin S.45 Stephan Walter Marc Hildebrandt S.38 Jonas Knudsen S.32 Veranstaltungen Mathias Menzer S.16 Ronny Fischer Michael Niedermair S.50 Daniel Nögel S.18 Logo-Design Stefan Ohri S.28 Arne Weinberg (GNU FDL) Jochen Schnelle S.47 Andreas Schott, Martin Neubauer S.10 und Ralf Hufnagel Dominik Wagenführ S.41

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 12/2010 56