Topthemen dieser Ausgabe - freiesmagazin.de · automatische Installation mit Kickstart wählen....

56
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

Transcript of Topthemen dieser Ausgabe - freiesmagazin.de · automatische Installation mit Kickstart wählen....

  • freiesMagazin Dezember 2010

    Topthemen dieser Ausgabe

    Python-Programmierung: Teil 3 – Tiefere Einblicke Seite 18Im vorherigen Teil dieser Reihe wurden Listen, Zeichenketten und die beiden Kontrollstrukturen if und whilebehandelt. 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 dieversprochenen Ersetzungen bei Zeichenketten besprochen werden. Mit den „Dictionaries“ wird zudem einweiterer wichtiger Datentyp in Python vorgestellt. (weiterlesen)

    Nepomuk in KDE – Theorie und Praxis Seite 38Es gibt Technologien, die viele Funktionen bieten, aber deren tieferer Sinn manchen Benutzernverborgen bleibt. Ob dies an fehlender Dokumentation liegt oder an dem neuartigen Ansatz derBedienung, 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 wirddieser Artikel auch auf die tägliche Verwendung eingehen. (weiterlesen)

    Rezension: Sintel Seite 41Lange 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 liegtein Exemplar zur Rezension vor und kann in allen Belangen überzeugen, denn nicht nur dieAnimation 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

    http://creativecommons.org/licenses/by-sa/3.0/deed.de

  • MAGAZIN

    Editorial

    Frohe Kunde

    Neue LizenzNach einer langen Zeit der Veröffentlichung vonfreiesMagazin unter der GNU Free Documenta-tion License (GFDL) [1] haben wir uns nun ent-schlossen, freiesMagazin ab Dezember 2010 un-ter der Creative-Commons-Lizenz CC-BY-SA 3.0Unported [2] zu veröffentlichen. (Einen Vergleichbeider Lizenzen gibt es in der englischen Wikipe-dia [3].)

    Einer der Gründe für den Wechsel ist vor al-lem die einfachere Handhabung der CC-Lizenz –schließlich wollen wir den Forderungen einer Li-zenz auch nachkommen und hier stellt die GFDLein Projekt wie freiesMagazin ebenso vor prak-tische Probleme wie schließlich auch die Nutzerder Inhalte von freiesMagazin [4].

    So reicht es bei der GFDL normalerweise nichtaus, wenn man nur einen Link auf die Lizenz an-gibt und sagt, dass der Artikel unter der GFDLveröffentlicht wird (hiervon gibt es Ausnahmenbei gedruckten Exemplaren in großer Menge).Abschnitt 2 der Lizenz verlangt nämlich eine Mit-lieferung und Abdruck des kompletten Lizenztex-tes [5]. Was bei gedruckten Handbüchern nochleicht möglich ist (man hat eben zwei Seiten mitLizenztext mehr), ist in einem Magazin oder gareinem einzelnen Artikel schwer umzusetzen.

    Und auch am Abschnitt „Modifikationen“ [6]merkt man, dass die GFDL eher für komplet-

    te (wissenschaftliche) Arbeiten oder Bücher ge-dacht ist und nicht für einzelne Artikel, die auszwei oder drei Seiten bestehen.

    Die Creative-Commons-Lizenz macht dies etwaseinfacher. Neben der Angabe von Autor und Li-zenz reicht ein Link auf den Lizenztext, um einWerk vervielfältigen zu können. Daneben musssich ein normaler Benutzer nicht mit dem schwerverständlichen Lizenztext herumschlagen, da einLink auf die menschenverständliche Zusammen-fassung ausreicht.

    Natürlich würden wir gerne auch hierzu Ihre Mei-nung wissen. Wie stehen Sie dem Lizenzwechselgegenüber, was halten Sie davon? Lassen Sieuns Ihre Meinung wissen und nehmen doch ein-fach an der Umfrage [7] teil.

    Hinweis: Das freiesMagazin-Logo von ArneWeinberg unterliegt derzeit weiterhin der GFDL.

    Sintel-GewinnspielDiesen Monat präsentieren wir Ihnen auch ei-ne Rezension zum Open-Source-Film Sintel derBlender Foundationen, der Ende Oktober aufDVD veröffentlicht wurde. Passend dazu habenwir uns auch ein Gewinnspiel ausgedacht, beider nur eine simple Frage beantwortet werdenmuss: „Wer hat (zum größten Teil) die Kämpfein Sintel choreographiert?“

    Inhalt

    Linux allgemeinFedora 14 S. 4easyVDR 0.8 S. 10Der November im Kernelrückblick S. 16

    AnleitungenPython-Programmierung: Teil 3 S. 18Bildformat SVG verstehen S. 28ALSA konfigurieren S. 32

    SoftwareInvertika – ein Open-Source-MMORPG S. 35Nepomuk in KDE – Theorie und Praxis S. 38

    CommunityRezension: Sintel S. 41Ubuntu Developer Summit 2010 S. 45Rezenzion: Phrasebooks S. 47Rezension: iText in action S. 50

    MagazinEditorial S. 2Leserbriefe S. 53Veranstaltungen S. 55Vorschau S. 55Konventionen S. 55Impressum S. 56

    © freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 2

    http://www.gnu.org/licenses/fdl.htmlhttp://creativecommons.org/licenses/by-sa/3.0/deed.dehttp://en.wikipedia.org/wiki/Wikipedia:Comparison_of_GFDL_and_CC-BY-SAhttp://www.heise.de/newsticker/meldung/GFDL-1-3-Ausweg-aus-der-Lizenz-Einbahnstrasse-215081.htmlhttp://rybaczyk.freeunix.net/licenses/fdl-1.3.de.html#verbatim-copyinghttp://rybaczyk.freeunix.net/licenses/fdl-1.3.de.html#modificationshttp://www.freiesmagazin.de/20101205-umfrage-freiesmagazin-mit-cc-lizenzhttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • MAGAZIN

    Die ersten drei richtigen Einsendungen gewin-nen eine CD der Band „The Nuri“ [8]. Diese sindauch auf dem Sampler zum Free! Music! Con-test 2010 [9] zu finden und haben den Wettbe-werb sogar für sich entscheiden können [10]. DieMusik der Band wird unter Creative-Commons-Lizenzen vertrieben, was natürlich sehr gut zumFilm passt.

    Wer die Antwort auf die Frage weiß und ei-ne CD gewinnen möchte, kann uns überden Kommentarlink am Ende des Editorials,per Kontaktformular [11] oder per E-Mailan erreichen.Die drei Gewinner geben wir dann auf derfreiesMagazin-Webseite bekannt.

    Python-ScreencastsUnser Python-Tutorial, welches Autor Daniel Nö-gel vor zwei Monaten startete und in dieser Aus-gabe mit Teil 3 auf Seite 18 fortgesetzt wird,kommt bei den Leser recht gut an (denken wir).

    Ein Leser mit dem Pseudonym TheRegRunnerhat sich hingesetzt und die beiden bisher erschie-nenen Artikel in zwei Screencasts zusammen-getragen [12] [13]. Damit bietet er allen lesefau-len Python-Neulingen einen guten Einblick in dasThema. Zum Nacharbeiten und für Copy & Pastesind die Artikel in freiesMagazin aber natürlichbesser geeignet.

    Zum Abschluss wünschen wir allen Leser schö-ne Feiertage – und bleiben Sie uns auch im Jahr2011 weiterhin treu.

    Ihre freiesMagazin-Redaktion

    LINKS

    [1] http://www.gnu.org/licenses/fdl.html[2] http://creativecommons.org/licenses/by-sa/3.0/

    deed.de[3] http://en.wikipedia.org/wiki/Wikipedia:Comparison_

    of_GFDL_and_CC-BY-SA

    [4] http://www.heise.de/newsticker/meldung/GFDL-1-3-Ausweg-aus-der-Lizenz-Einbahnstrasse-215081.html

    [5] http://rybaczyk.freeunix.net/licenses/fdl-1.3.de.html#verbatim-copying

    [6] http://rybaczyk.freeunix.net/licenses/fdl-1.3.de.html#modifications

    [7] http://www.freiesmagazin.de/20101205-umfrage-freiesmagazin-mit-cc-lizenz

    [8] http://www.the-nuri.de/[9] http://musik.klarmachen-zum-aendern.de/

    nachrichten/free_music_contest_2010_-_der_sampler-531

    [10] http://musik.klarmachen-zum-aendern.de/free_music_friday/nuri-559

    [11] http://www.freiesmagazin.de/kontakt[12] http://www.youtube.com/watch?v=0qO64mnDDaw[13] http://www.youtube.com/watch?v=ADkQmrelvsY

    Das Editorial kommentieren

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

    © freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 3

    http://www.the-nuri.de/http://musik.klarmachen-zum-aendern.de/nachrichten/free_music_contest_2010_-_der_sampler-531http://musik.klarmachen-zum-aendern.de/free_music_friday/nuri-559http://www.freiesmagazin.de/kontakthttp://www.youtube.com/watch?v=0qO64mnDDawhttp://www.youtube.com/watch?v=ADkQmrelvsYhttp://www.gnu.org/licenses/fdl.htmlhttp://creativecommons.org/licenses/by-sa/3.0/deed.dehttp://creativecommons.org/licenses/by-sa/3.0/deed.dehttp://en.wikipedia.org/wiki/Wikipedia:Comparison_of_GFDL_and_CC-BY-SAhttp://en.wikipedia.org/wiki/Wikipedia:Comparison_of_GFDL_and_CC-BY-SAhttp://www.heise.de/newsticker/meldung/GFDL-1-3-Ausweg-aus-der-Lizenz-Einbahnstrasse-215081.htmlhttp://www.heise.de/newsticker/meldung/GFDL-1-3-Ausweg-aus-der-Lizenz-Einbahnstrasse-215081.htmlhttp://www.heise.de/newsticker/meldung/GFDL-1-3-Ausweg-aus-der-Lizenz-Einbahnstrasse-215081.htmlhttp://rybaczyk.freeunix.net/licenses/fdl-1.3.de.html#verbatim-copyinghttp://rybaczyk.freeunix.net/licenses/fdl-1.3.de.html#verbatim-copyinghttp://rybaczyk.freeunix.net/licenses/fdl-1.3.de.html#modificationshttp://rybaczyk.freeunix.net/licenses/fdl-1.3.de.html#modificationshttp://www.freiesmagazin.de/20101205-umfrage-freiesmagazin-mit-cc-lizenzhttp://www.freiesmagazin.de/20101205-umfrage-freiesmagazin-mit-cc-lizenzhttp://www.the-nuri.de/http://musik.klarmachen-zum-aendern.de/nachrichten/free_music_contest_2010_-_der_sampler-531http://musik.klarmachen-zum-aendern.de/nachrichten/free_music_contest_2010_-_der_sampler-531http://musik.klarmachen-zum-aendern.de/nachrichten/free_music_contest_2010_-_der_sampler-531http://musik.klarmachen-zum-aendern.de/free_music_friday/nuri-559http://musik.klarmachen-zum-aendern.de/free_music_friday/nuri-559http://www.freiesmagazin.de/kontakthttp://www.youtube.com/watch?v=0qO64mnDDawhttp://www.youtube.com/watch?v=ADkQmrelvsYhttp://www.freiesmagazin.de/comment/reply/200?edit[subject]=Editorial#comment-formhttp://creativecommons.org/licenses/by-nc/2.5/http://xkcd.com/562/http://creativecommons.org/licenses/by-sa/3.0/deed.de

  • DISTRIBUTION

    Fedora 14 von Hans-Joachim Baader

    F edora 14 ist am 2. November 2010 er-schienen und wartet mit aktualisiertenDesktops und einer Vielzahl von neuenFunktionen auf. Dieser Artikel soll einen Über-blick über die Neuerungen geben.

    Redaktioneller Hinweis: Der Artikel „Fedora 14“erschien erstmals bei Pro-Linux [1].

    VorwortFedora 14 „Goddard“ erschien am 2. Novem-ber 2010, ein halbes Jahr nach Fedora 13, ge-nau im Zeitplan. Die Entwickler hoben in denAnmerkungen zur Veröffentlichung [2] vier we-sentliche Neuerungen heraus: Spice, die Bereit-stellung von Teilen von MeeGo, Images für dieAmazon-Cloud EC2 und ein D-Compiler. Alle die-se Neuerungen werden im Laufe des Artikels nä-her beschreiben. Auffällig ist, dass alle vier nurfür einen kleineren Nutzerkreis interessant sind.Daneben gab es natürlich andere Änderungenund zahlreiche Updates, deren Aufzählung imEinzelnen den Rahmen sprengen würde.

    Vorab sei angemerkt, dass es sich bei diesem Ar-tikel nicht um einen Test der Hardwarekompatibili-tät handelt. Distributoren haben einiges an Hard-ware für solche Tests zur Verfügung. Ein Test istdamit in diesem Artikel überflüssig, denn es wärezu viel Aufwand für wenig Nutzen, eine repräsen-tative Auswahl von Hardware zu beschaffen.

    Da eine Erprobung auf realer Hardware somit un-nötig ist, werden für den Artikel zwei identische

    Display-Manager gdm.

    Display-Manager kdm.

    virtuelle Maschinen, 64 Bit, unter KVM mitjeweils 768 MB RAM verwendet.

    InstallationsmedienFedora kann auf verschiedene Arten instal-liert werden, zum Beispiel von einem Live-System aus, das als ISO-Image verfügbarist. Ein direktes Starten eines Installations-systems ist mit einer DVD oder dem äqui-valenten Satz von CDs möglich. Danebenstehen weitere Formate zur Verfügung, dieteilweise etwas Stöbern auf der Download-seite [3] erfordern.

    Von Fedora 14 stehen DVDs für die Archi-tekturen x86 und x86_64 sowie Live-CDsmit GNOME, KDE, LXDE und Xfce für x86und x86_64 zur Verfügung [4]. Bei den Live-CDs ist der Umfang der Software natürlichbeschränkt, was der Grund dafür ist, dasses verschiedene Varianten gibt. Mehr Soft-ware kann man von der DVD oder alterna-tiv von einem Satz aus sechs CDs installie-ren. Die DVD bietet auch ein Rettungssys-tem sowie eine Textmodus-Installation.

    InstallationDie Installation ist so einfach, dass sie vonallen Anwendern meist ohne Probleme be-wältigt werden kann, und das ist ja nachwie vor wichtig, solange nur wenige Rech-ner mit vorinstalliertem Linux ausgeliefertwerden.

    © freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 4

    http://www.pro-linux.de/artikel/2/1472/fedora-14.htmlhttp://docs.fedoraproject.org/en-US/Fedora/14/html/Release_Notes/index.htmlhttp://www.freiesmagazin.de/mobil/2010-12-bilder/fedora-display-manager-gdm.jpghttp://www.freiesmagazin.de/mobil/2010-12-bilder/fedora-display-manager-gdm.jpghttp://www.freiesmagazin.de/mobil/2010-12-bilder/fedora-display-manager-kdm.jpghttp://www.freiesmagazin.de/mobil/2010-12-bilder/fedora-display-manager-kdm.jpghttp://fedoraproject.org/de/get-fedorahttp://fedoraproject.org/de/get-fedora-optionshttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • DISTRIBUTION

    Installation von der Live-CD.

    Die grafische Installation benötigt 384 MB RAM,es werden jedoch 512 MB empfohlen. Die text-basierte Installation benötigt 256 MB. Fedoraempfiehlt, die grafische Installation zu verwen-den, wenn möglich. Ist das nicht möglich, soll-te man die grafische Installation per VNC von

    einem anderen Rechner aus steuern oder dieautomatische Installation mit Kickstart wählen.Wenn nur der Textmodus bleibt, kann man nurein System mit einer festen Auswahl von Basis-paketen und einer Standard-Partitionierung auf-setzen.

    Die grafische Installation ist gegenüber Fedora13 [5] nahezu unverändert. Das Dateisystemext4 ist die Voreinstellung. Btrfs gilt bei Fedoraweiter als experimentell und wird daher nicht alsDateisystem zur Auswahl angeboten, außer mangibt bereits beim Booten die Option btrfs an.

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

    Auswahl der Partitionierungsoptionen.

    Laufender BetriebFedora 14 startet etwa genauso schnell oderminimal schneller als sein Vorgänger. Dass

    © freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 5

    http://www.freiesmagazin.de/mobil/2010-12-bilder/fedora-installation-von-der-live-cd.jpghttp://www.freiesmagazin.de/mobil/2010-12-bilder/fedora-installation-von-der-live-cd.jpghttp://www.pro-linux.de/artikel/2/1195/fedora-13.htmlhttp://docs.fedoraproject.org/http://www.freiesmagazin.de/mobil/2010-12-bilder/fedora-auswahl-der-partitionierungsoptionen.pnghttp://www.freiesmagazin.de/mobil/2010-12-bilder/fedora-auswahl-der-partitionierungsoptionen.pnghttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • DISTRIBUTION

    GNOME-Desktop mit Firefox.

    KDE-Desktop mit Konqueror.

    nahezu alle Softwarepakete, bei denendas möglich war, aktualisiert wurden,versteht sich von selbst. Der Kernelwurde auf Version 2.6.35.6 gebracht [7].Als Desktop-Systeme stehen unter an-derem KDE SC 4.5.2 und GNOME2.32.0 zur Verfügung. Das neue Hin-tergrundbild verursacht eine optischeTäuschung, die man besonders gut beitransparenten Fenstern wahrnimmt.

    Die neue Version von GNOME [8]bringt den Benutzern weitgehenddas gewohnte Erscheinungsbild oh-ne böse Überraschungen. Obwohl derStandard-Browser von GNOME Epi-phany ist, bleibt es unter Fedora, wiegewohnt, bei Firefox, der jetzt in Ver-sion 3.6.12 vorliegt. Pino, ein Clientfür soziale Netze, funktioniert mit Twit-ter nicht mehr und wurde daher ausder Standardinstallation entfernt. Statt-dessen kann man Programme wieGwibber nachinstallieren. Als Office-Suite ist OpenOffice.org 3.3.0 instal-liert. Beim ersten Aufruf von Open-Office.org installiert sich automatischder OpenOffice.org-Schnellstarter. FürOffice-Wenig-Benutzer dürfte dieserunnötig sein, er kann aber leichtentfernt werden. Die GNOME-Live-Installation dürfte einen geringerenSoftware-Umfang enthalten. Das Bild-bearbeitungsprogramm GIMP ist wei-terhin Teil der Standardinstallation.

    KDE 4.5.2 bringt viele Verbesserungen und Er-weiterungen gegenüber Version 4.4.3, die inFedora 13 enthalten war. Als Browser ist nachwie vor Konqueror vorinstalliert. Er verwendetdie WebKit-Engine. Auch Fedora verwendet diemonochromen Icons in der Systemleiste, diebei Ubuntu 10.10 bereits kritisiert wurden (siehe„Ubuntu 10.10“, freiesMagazin 11/2010 [9]). Eshandelt sich wohl um die neue Voreinstellung vonKDE und ist letztlich nur Geschmackssache.

    Auch der im Ubuntu-Artikel festgestellte Absturzim Dateibetrachter Okular ist vorhanden. Er isteindeutig KDE selbst und nicht der Distributionanzulasten. Die meisten Benutzer dürften davonaber gar nichts betroffen sein, da mittlerweileklar ist, dass er sich nur in bestimmten Fällen,beispielsweise bei 16 Bit Farbtiefe, bemerkbarmacht.

    Eine andere Auffälligkeit zeigte der Benach-richtigungs-Daemon knotify4. Normalerweisesollte dieses Programm einfach nur auf Nach-richten warten. In Fedora 14 scheint das Warte-Intervall so kurz zu sein, dass der Daemon 2000Mal pro Sekunde aufwacht. Das führt zu einerpermanenten CPU-Auslastung von 2 %. Bei je-dem Aufwachen wird ein Dateideskriptor gelesen,um zu sehen, ob Daten vorhanden sind, und dieSystemzeit ermittelt.

    Wie immer ist in Fedora SELinux eingebundenund aktiviert. Es macht sich mittlerweile für nor-male Benutzer nicht mehr bemerkbar, so dassman fast vergessen könnte, es zu erwähnen. Ne-ben den offenbar ausgereiften Profilen sind auch

    © freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 6

    http://www.freiesmagazin.de/mobil/2010-12-bilder/fedora-gnome-desktop-mit-firefox.pnghttp://www.freiesmagazin.de/mobil/2010-12-bilder/fedora-gnome-desktop-mit-firefox.pnghttp://www.freiesmagazin.de/mobil/2010-12-bilder/fedora-kde-desktop-mit-konqueror.jpghttp://www.freiesmagazin.de/mobil/2010-12-bilder/fedora-kde-desktop-mit-konqueror.jpghttp://www.pro-linux.de/news/1/15986/linux-kernel-2635-freigegeben.htmlhttp://www.pro-linux.de/news/1/16219/gnome-232-veroeffentlicht.htmlhttp://www.freiesmagazin.de/freiesMagazin-2010-11http://creativecommons.org/licenses/by-sa/3.0/deed.de

  • DISTRIBUTION

    Werkzeuge zur Diagnose von Problemen vorhan-den.

    GNOME benötigt in Fedora 14 direkt nach demStart mit einem geöffneten Terminalfenster etwa230 MB RAM, KDE satte 100 MB mehr. Werder Meinung ist, auf Nepomuk und Desktopsu-che verzichten zu können, kann diese abschal-ten, wird dadurch aber fast nichts einsparen.

    Bei der Geschwindigkeit lässt sich kein nen-nenswerter Unterschied zwischen den Desktopsfeststellen, sofern genug RAM vorhanden ist.Für KDE bedeutet das, dass man mindestens768 MB RAM haben sollte.

    Den Speicherverbrauch der Desktops zu mes-sen ist nicht einfach. Schwankungen von 20 MBund mehr nach oben und unten sind möglich, jenach dem Zeitpunkt der Messung. Dies erklärtsich teilweise daraus, dass manche Programmebei ihrem Start einen oder mehrere Dienste star-ten. Diese Dienste werden bei Nichtbenutzungteilweise nach einiger Zeit auch wieder beendet.Bei obigen Angaben wurde versucht, den unge-fähren Mittelwert zu finden.

    Paketverwaltung und UpdatesWenig Neues gab es bei Fedora im Bereichder Paketverwaltung. Das GNOME-Frontend vonPackageKit, gpk-application, kann weiterhin kei-ne Software-Repositorys hinzufügen oder entfer-nen. Abgesehen davon läuft es problemlos.

    Auf KDE-Seite wurde KPackageKit verbessert.Es wurde nach der Freigabe von Fedora 14 von

    Version 0.6.1 auf 0.6.2 aktualisiert. Trotz der Ver-besserungen besitzt es weiterhin einige Mängel,die es wie eine schlechten Prototypen wirken las-sen, wie schon im Ubuntu-Artikel erwähnt wurde.

    KPackageKit vertraut den eigenen Update-Quellen nicht.

    So lassen sich in der Suche nach Softwarepake-ten keine Wildcards verwenden. Die Auswahlder Funktionen „Softwareverwaltung“, „Software-aktualisierungen“ und „Einstellungen“ hätte leichtin einem Menü erfolgen können, anstatt so vielPlatz auf dem Bildschirm zu verschwenden. Ei-nige Pakete wurden in den Suchergebnissendoppelt aufgeführt.

    Beim ersten Update meldete KPackageKit zu-dem einen unbekannten Repository-Schlüssel.Anscheinend vertraute das Programm den eige-nen Update-Quellen nicht.

    MultimediaWie gewohnt bringtFedora den Multimedia-Server PulseAudio inder neuesten Versionmit. Für Musiker mitstrikteren Echtzeitanfor-derungen gab es bisheroptional Jack. Jetzt wur-de Jack durch Jack2 (frü-her jackdmp) in Version1.9.5 ersetzt. Es ist kom-patibel mit vorhandenenJack-Anwendungen. Esist standardmäßig instal-liert, denn eines seinerFeatures ist, dass er par-allel zu PulseAudio exis-tieren kann. Wenn derJack-Daemon startet,entreißt er PulseAudio

    die Kontrolle über das Audiogerät und gibt sienach getaner Arbeit wieder zurück.

    Aussetzer im Audiostrom sollen mit Jack2 kaumnoch möglich sein. Zum einen wurde die Soft-ware durch Parallelausführung auf allen Prozes-soren schneller. Außerdem können Verbindun-gen zwischen den Programmen geändert wer-den, ohne den Audio-Strom zu unterbrechen,

    © freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 7

    http://www.freiesmagazin.de/mobil/2010-12-bilder/fedora-kpackagekit.pnghttp://www.freiesmagazin.de/mobil/2010-12-bilder/fedora-kpackagekit.pnghttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • DISTRIBUTION

    und es gibt eine „asynchrone“ Aktivierung. Wennein Programm ein Sample nicht rechtzeitig sen-det, wiederholt Jack2 automatisch das vorherge-hende, was in den meisten Fällen nicht einmalwahrnehmbar sein soll.

    Neu ist der Musicians’ Guide [10], der Ein-steigern eine Anleitung zu Audiosoftware un-ter Linux geben soll. Das Dokument behan-delt Audio-Grundlagen und enthält Tutorials zuProgrammen wie Audacity, Ardour, Digital Au-dio Workstations, Qtractor, Rosegarden, Fluid-Synth, SuperCollider, Lilypond, Frescobaldi undGNU Solfege. Auch für andere Interessengrup-pen gibt es spezielle Anleitungen auf der Fedora-Dokumentationsseite.

    Aus den bekannten Gründen kann Fedora, eben-so wie die meisten anderen Distributionen, nurwenige Medienformate abspielen, da es viele be-nötigte Codecs nicht mitliefern kann. Wenn manversucht, ein Video abzuspielen, dann erhält manmit dem KDE-Videoplayer DragonPlayer nichteinmal eine Meldung, dass etwas nicht geht. NurTotem bietet auch die Option an, über die Pa-ketverwaltung nach passenden Plug-ins zu su-chen. Dazu muss man aber vorher in der Paket-verwaltung die zusätzlichen Repositorys eintra-gen. Wenn man weiß, wie es geht, ist es im Prin-zip ganz einfach: Über die Webseite von RPMFusion [11] kann man Pakete installieren, diedie Repositorys hinzufügen. Dies gilt für GNOMEwie für KDE. In der letzten Version funktioniertedas Installieren der Repositorys unter KDE nicht;dies wurde jetzt glücklicherweise behoben.

    Nach dieser Vorbereitung ist Totem unterGNOME und KDE in der Lage, die benötigtenPlug-ins selbsttätig zu installieren, danach funk-tioniert der Medienplayer erwartungsgemäß. To-tem erscheint bei Installation von DVD auch un-ter KDE als Standard-Medienplayer. Kaffeine undDragonPlayer sind als Alternativen installiert. Lei-der konnten beide zunächst weder eines derVideos abspielen noch Hinweise auf die Ursa-chen geben. Erst mit dem Wissen, dass dasPhonon-Backend standardmäßig auf Xine einge-stellt ist, kommt man weiter, kann das Backendauf GStreamer umstellen und schon läuft alles.Mit Fedora 13 war das noch nicht so problemlos.

    Nach Installation des Gnash-Plugins in Version0.8.8 ließen sich diverse Flash-Videos im Webabspielen. Mit YouTube-Videos gelang das nicht,obwohl es unter anderen Distributionen geht. DieUrsache ließ sich kurzfristig nicht ermitteln.

    Weitere NeuerungenDie Integration des SPICE-Frameworks fürDesktop-Virtualisierung will erreichen, dass mandie Oberfläche einer virtuellen Maschine, die aufeinem 64-Bit-Linux-Server läuft, auf einem ande-ren Rechner ansehen kann. Damit kann man vir-tuelle Maschinen (z. B. eine Maschine pro Benut-zer) auf einem leistungsstarken Rechner ausfüh-ren, während die Desktop-Systeme deutlich lang-samer und austauschbar sind. SPICE [12] wur-de von Qumranet entwickelt, das von Red Hatübernommen wurde. Wer SPICE außerhalb vonFedora probieren möchte, muss auf Qemu 0.13aktualisieren und noch ein paar weitere Voraus-

    setzungen schaffen. Die virtuelle Maschine mussmit dem neuen Grafikgerät „qxl“ konfiguriert wer-den. In der virtuellen Maschine sollte man dannden speziellen qxl-Treiber installieren, für Linuxist das xserver-xorg-video-qxl. Andernfalls wirdder Standard-VGA-Treiber verwendet, der lang-sam und ineffizient ist. Leider ist diese Versionvon SPICE noch nicht mit libvirt integriert, dassteht aber bereits auf dem Plan.

    Auch sonst hat sich bei der Virtualisierung wie-der einiges getan. Erstmals werden nun Imagesfür die Cloud Amazon EC2 bereitgestellt. Mit demProgramm virt-v2v kann man virtuelle Maschinenvon Xen nach KVM migrieren. Fedora 14 kannals DomU laufen, jedoch nicht als Dom0, außerman ersetzt den Kernel auf eigenes Risiko.

    Die neue Unterstützung für das Security ContentAutomation Protocol (SCAP) besteht aus der Bi-bliothek OpenSCAP und mehreren Werkzeugen.Damit lässt sich die Sicherheit des Systems instandardisierter Weise sicherstellen. Unter ande-rem kann man nach verfügbaren Patches suchenund Einbrüche erkennen.

    Für Entwickler wurden Perl auf Version 5.12.1,Python auf 2.7 und Erlang auf R14 aktualisiert.Erstmals sind umfassende Entwicklungsumge-bungen für die Programmiersprache D [13] undfür das Desktop-System GnuStep verfügbar. AlsD-Compiler wird allerdings der auf LLVM beru-hende LDC benutzt, nicht der GNU-D-Compiler(GDC). Der Debugger gdb wurde schneller unddie Entwicklungsumgebungen NetBeans 6.9 undEclipse 3.6 sind in aktuellen Versionen dabei.

    © freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 8

    http://docs.fedoraproject.org/en-US/Fedora/14/html/Musicians_Guide/index.htmlhttp://rpmfusion.org/http://fedoraproject.org/wiki/Features/Spicehttps://fedoraproject.org/wiki/Features/D_Programminghttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • DISTRIBUTION

    Auch Perl 6 mit Raduko Star wird bereitgestellt.Dazu kommt das Paket gdb-heap, das eine Ana-lyse ermöglicht, wie ein Programm den Speicherverwendet.

    Weiter zu nennen sind eine bessere Unter-stützung für das Statistikpaket R, die Daten-erfassungsplattform ROOT, vollständige Server-Verwaltung über IPMI mit ipmiutil und die schnel-lere JPEG-Bibliothek libjpeg-turbo. Das Paketman wurde durch man-db ersetzt, und eine „in-tegrierte Untermenge“ von Software aus demMeeGo-Projekt ist verfügbar. Es handelt sich umdie MeeGo Netbook UX-Umgebung und ein paarPanel-Applets.

    FazitFedora 14 enthält kaum drastische Änderungengegenüber dem Vorgänger, aber viele Verbesse-rungen und Neuerungen. Im Vergleich zum Vor-gänger läuft Fedora 14 spürbar runder, was aberauch den Upstream-Projekten zu verdanken ist.Fedora verzichtet im Desktopbereich weitgehendauf Alleingänge und liefert so die Desktopumge-bungen bis auf eine angepasste Optik im Origi-nalzustand aus. Wo Probleme beobachtet wur-den, sind diese dann in der Regel nicht Fedoraanzulasten, sondern den jeweiligen Projekten.

    Die vielen fortgeschrittenen Funktionen, z. B. beider Virtualisierung, machen Fedora für Power-user interessant. Auch Entwickler werden mit denverschiedenen neuen oder aktualisierten Ent-wicklungsumgebungen stark umworben.

    Wie immer sollte man mit dem Update oder Um-stieg auf Fedora 14 einige Wochen warten, denndie aktuelle Software bringt es mit sich, dass we-nig getestet werden konnte und sich gerade inden ersten Wochen viele Probleme zutage tre-ten. Wer sicherer vor Updates sein will, solltevielleicht immer nur die zweitneueste Version ein-setzen. Dabei macht sich allerdings der kurzeSupport-Zeitraum von Fedora negativ bemerkbar.Man ist im Prinzip gezwungen, alle sechs Mona-te zu aktualisieren.

    Ein generelles Problem von Fedora ist die un-gezügelte Update-Politik. Diese könnte die An-wender abschrecken, die sich nicht ständig mitUpdates befassen wollen, und schon gar nicht,wenn diese neue oder geänderte Funktionen mit-bringen. Fedora 13 beispielsweise erhielt in einerKDE- oder GNOME-Standardinstallation in denletzten sechs Monaten etwa 500 Updates. Aller-dings erfüllt Fedora damit seinen Anspruch, neueEntwicklungen schnell zu den Benutzern zu brin-gen und es werden viele Fehler korrigiert. Da-bei können aber auch neue Fehler eingeschlepptwerden. Den entgegengesetzten Anspruch, nurFehler möglichst ohne jede Nebenwirkung zu be-heben, kann Fedora nicht befriedigen, hierfür ste-hen Red Hat Enterprise Linux und CentOS alskompatible Alternativen bereit.

    LINKS[1] http://www.pro-linux.de/artikel/2/1472/fedora-14.

    html

    [2] http://docs.fedoraproject.org/en-US/Fedora/14/html/Release_Notes/index.html

    [3] http://fedoraproject.org/de/get-fedora[4] http://fedoraproject.org/de/get-fedora-options[5] http://www.pro-linux.de/artikel/2/1195/fedora-13.

    html[6] http://docs.fedoraproject.org/[7] http://www.pro-linux.de/news/1/15986/linux-

    kernel-2635-freigegeben.html[8] http://www.pro-linux.de/news/1/16219/gnome-

    232-veroeffentlicht.html[9] http://www.freiesmagazin.de/freiesMagazin-2010-

    11[10] http://docs.fedoraproject.org/en-US/Fedora/14/

    html/Musicians_Guide/index.html[11] http://rpmfusion.org/[12] http://fedoraproject.org/wiki/Features/Spice[13] https://fedoraproject.org/wiki/Features/D_

    Programming

    Autoreninformation

    Hans-Joachim Baader (Site) befasstsich seit 1993 mit Linux. 1994 schlosser sein Informatikstudium erfolgreichab, machte die Softwareentwicklungzum Beruf und ist einer der Betreibervon Pro-Linux.de.

    Diesen Artikel kommentieren

    © freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 9

    http://www.pro-linux.de/artikel/2/1472/fedora-14.htmlhttp://www.pro-linux.de/artikel/2/1472/fedora-14.htmlhttp://docs.fedoraproject.org/en-US/Fedora/14/html/Release_Notes/index.htmlhttp://docs.fedoraproject.org/en-US/Fedora/14/html/Release_Notes/index.htmlhttp://fedoraproject.org/de/get-fedorahttp://fedoraproject.org/de/get-fedora-optionshttp://www.pro-linux.de/artikel/2/1195/fedora-13.htmlhttp://www.pro-linux.de/artikel/2/1195/fedora-13.htmlhttp://docs.fedoraproject.org/http://www.pro-linux.de/news/1/15986/linux-kernel-2635-freigegeben.htmlhttp://www.pro-linux.de/news/1/15986/linux-kernel-2635-freigegeben.htmlhttp://www.pro-linux.de/news/1/16219/gnome-232-veroeffentlicht.htmlhttp://www.pro-linux.de/news/1/16219/gnome-232-veroeffentlicht.htmlhttp://www.freiesmagazin.de/freiesMagazin-2010-11http://www.freiesmagazin.de/freiesMagazin-2010-11http://docs.fedoraproject.org/en-US/Fedora/14/html/Musicians_Guide/index.htmlhttp://docs.fedoraproject.org/en-US/Fedora/14/html/Musicians_Guide/index.htmlhttp://rpmfusion.org/http://fedoraproject.org/wiki/Features/Spicehttps://fedoraproject.org/wiki/Features/D_Programminghttps://fedoraproject.org/wiki/Features/D_Programminghttp://www.pro-linux.de/http://www.freiesmagazin.de/comment/reply/200?edit[subject]=Fedora 14#comment-formhttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • MULTIMEDIA

    easyVDR 0.8 – HDTV-Version veröffentlicht von Andreas Schott, Martin Neubauer und Ralf Hufnagel

    D ie Distribution easyVDR ist eineunter der GPL [1] veröffentlichteCommunity-Distribution rund um denVDR. Dabei verwandelt die Freie Software Vi-deo Disc Recorder (VDR [2]) von Klaus Schmi-dinger handelsübliche PC-Hardware in einendigitalen Videorekorder und ermöglicht soEmpfang, Aufnahme und Wiedergabe von di-gitalem Fernsehen – in der neuen Version 0.8sogar offiziell auch in HDTV-Qualität [3].

    Für die weiteren Features eines digitalen Vi-deorekorders auf PC-Basis der easyVDR-Distribution sei hier auf den Artikel infreiesMagazin 07/2009 [4] verwiesen.

    EmpfangsmöglichkeitenDer VDR unterstützt alle denkbaren Eingangs-quellen für TV. Dies sind unter anderem:

    � Satellit (DVB-S, DVB-S2) [5],� Kabel (DVB-C) [6],� terrestrisch (DVB-T) [7],� analoges TV (nur mit Hauppauge PVR *50/P-

    VRUSB2) und� Internet (IP-TV) [8].

    Alle Empfangsmöglichkeiten können miteinan-der kombiniert werden: DVB-S/C/T, Analog oderIPTV, sei es per PCI-e- [9] oder PCI-Bus, perUSB oder aus dem Internet, eigenständig wer-den diese vom VDR verwaltet. Während der Auf-nahme(n) ist gleichzeitiges LiveTV oder Aufnah-

    men sehen (auch mit Timeshift [10]), pausieren,bearbeiten oder Musik hören möglich.

    Der Einsatz mehrerer Empfangs-„Karten“ lässtparallele Aufnahmen unterschiedlichster Senderzu, aber schon mit nur einem Empfangsgerätkönnen Aufnahmen mehrerer Sender aus demselben Bouquet [11] gemacht werden.

    easyVDR-Logo für Version 0.8.© Kerstin Lorbitzki (CC-BY-SA-3.0)

    Durch die mit dem TV-Programm ausgestrahltenoder per Internet aktualisierbaren und dann aus-führlicheren Programminformationen (EPG [12])ist eine komfortable Programmierung von Ti-

    mern möglich. Die Bildqualität des Digitalfernse-hens ist deutlich besser als bei analogem Si-gnal und wird zunehmend Standard – HDTVübertrifft die bereits gute Bildqualität des Di-gitalempfangs, wenn das ausgestrahlte Ma-terial in hoher Auflösung (HD) vorliegt undnicht, wie derzeit für ältere Sendungen üblich,

    nur vom Sender hochgerechnetwird. Bei DVB-T ist flächig nochkeine Einführung des HDTV durchdie Sendeanstalten geplant. Des-halb können dort evtl. öfter Kom-primierungsartefakte durch dieMPEG-Komprimierung [13] sicht-bar werden, bedingt durch ge-ringere Übertragungsbandbreitenals bei Kabel oder Satellit. Bei denHauptsendern ist dies aber mittler-weile selten.

    Der Hauptvorteil des VDR ist sei-ne Stabilität, welche das solideFundament für eine flexible und er-weiterbare Multimedialösung aufBasis der GPL bildet.

    Features der easyVDR-DistributionDie aktuelle „stable“ Version 0.8

    basiert auf Kernel 2.6.28.9 und VDR 1.7.0-extp72. Zur Grafikausgabe kommen xinelibout-put (Version 1.0.90-cvs) [14] als lokales oderremote-Frontend zum Einsatz. Neu ist in Version

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

    http://de.wikipedia.org/wiki/GNU_General_Public_Licensehttp://de.wikipedia.org/wiki/Video_Disk_Recorderhttp://de.wikipedia.org/wiki/High_Definition_Televisionhttp://www.freiesmagazin.de/freiesMagazin-2009-07http://de.wikipedia.org/wiki/DVB-Shttp://de.wikipedia.org/wiki/DVB-Chttp://de.wikipedia.org/wiki/DVB-Thttp://de.wikipedia.org/wiki/IPTVhttp://de.wikipedia.org/wiki/PCI-Ehttp://de.wikipedia.org/wiki/Zeitversetztes_Fernsehenhttp://de.wikipedia.org/wiki/Bouquet_(Digitales_Fernsehen)http://www.freiesmagazin.de/mobil/2010-12-bilder/easyVDR-logo.jpghttp://creativecommons.org/licenses/by-sa/3.0/deed.dehttp://www.freiesmagazin.de/mobil/2010-12-bilder/easyVDR-logo.jpghttp://de.wikipedia.org/wiki/Electronic_Program_Guidehttp://de.wikipedia.org/wiki/MPEGhttp://www.vdr-wiki.de/wiki/index.php/Xineliboutput-pluginhttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • MULTIMEDIA

    0.8 die Trennung von Backend und Frontend, wasdie Grundeinstellungen und die Erstinstallationdeutlich vereinfacht.

    Mit stetig eingepflegten Weiterentwicklungen,z. B. aktuellen DVB-Treibern, ffmpeg oderVDPAU [15] ist easyVDR 0.8 trotz der betag-teren Basis Debian Etch [16] am Puls der techni-schen Entwicklung und der Unterstützung aktuel-ler Hardware.

    VGA2Scart [17], die Möglichkeit, einen Grafik-karten-VGA-Ausgang als SCART-Ausgabeaus-gang zu (miss)brauchen, wird bei den Mother-boards mit Intels GMA 950-Reihe im Chip-satz (z. B. DG954LF/2 und DGJT945) sofortmit FrameRateControl [18] installiert und ermög-licht so eine preisgünstige VDR-Ausgabevariantein einer mit den bekannten Full-Featured-Karten [19] vergleichbaren Qualität. Dazu nöti-ge Kabel sind über einen Nutzer des easyVDR-Forums fertig zu beziehen oder selbst zu löten.Aufzeichnungen von analogem Material mittelsHauppauge PVRx50 oder PVRUSB2-Gerätensind der „Retter“ der liebgewonnenen VHS-Aufzeichnungen.

    easyVDR bietet eine ausgefeilte Basiskonfigura-tion. Nach der ersten Installation sind nur wenigeEinstellungen erforderlich, um die persönlichenWünsche vieler Nutzer zu verwirklichen. Dies be-ginnt mit einer Vorauswahl von ca. 100 Plug-insaus den inzwischen rund 300 verfügbaren VDR-Plug-ins. Diese werden je nach erkannter Hard-ware automatisch aktiviert, inklusive der notwen-digen Konfiguration.

    Auch die Menüstruktur zur Bedienung des VDRwurde überarbeitet, um die teilweise sehr ver-streut liegenden Einstellungen besser zusam-menzufassen.

    Das VGA2Scart-Kabel.

    Intern hat sich im Bereich der Entwicklung derUmstieg auf ein VCS-System [20] bewährt. DieEntscheidung fiel zu Gunsten von GIT [21].Dort liegt mittlerweile nicht nur der Quellcode,sondern auch die Alpha-Updates und die deseasyVDR-Webfrontends easyPortal.

    Zusätzlich hat man nun die Möglichkeit, seineKonfiguration und Einstellungen in einer Text-

    datei zu hinterlegen. Diese, auf einen weiterenähnlich ausgestatteten VDR kopiert, erspart dortviel Konfigurationsaufwand. Diese Datei liegt in/media/easyvdr/myeasyvdr [22].

    Hardwareanforde-rungenDie Hardwareanforderun-gen [23] sind trotz HDTV-Unterstützung relativ mo-derat. Als perfekt funk-tionierende Kombinationwird häufig das AsusM3N78-VM-Mainboardund ähnliche dieser Mo-dellreihe genutzt, dahier bereits ein NVIDIA-Grafikchip eingebaut ist,der VDPAU-Decodierungunterstützt. Deren Nach-folger ist die M4N*-Serie.Als Prozessor genügt indiesem Fall beispielswei-se ein AMD Sempron 140und 1 GB RAM. Natürlich

    läuft easyVDR auch auf anderen Boards (mitvergleichbarer Hardware). Wichtig ist, dass fürungetrübten HD-Genuss ein NVIDIA-Grafikkernmindestens der der 8xxx-Serie mit möglichst512 MB Grafikspeicher zu nutzen ist. Idealerwei-se kommt eine passiv gekühlte Karte zum Ein-satz, um die Geräuschentwicklung im Wohnzim-mer in Grenzen zu halten. Aufgrund deren Wär-meentwicklung empfiehlt sich jedoch der Einsatz

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

    http://de.wikipedia.org/wiki/Nvidia_PureVideo_HDhttp://de.wikipedia.org/wiki/Debian_GNU/Linuxhttp://www.easy-vdr.de/forum/index.php?board=63.0http://frc.easy-vdr.de/http://www.vdr-wiki.de/wiki/index.php/Full-featured-DVB-Kartehttp://www.freiesmagazin.de/mobil/2010-12-bilder/easyVDR-VGA2SCART-KABEL.jpghttp://www.freiesmagazin.de/mobil/2010-12-bilder/easyVDR-VGA2SCART-KABEL.jpghttp://de.wikipedia.org/wiki/Versionsverwaltunghttp://de.wikipedia.org/wiki/Githttp://wiki.easy-vdr.de/index.php/Tipps,_Tricks_und_pers%C3%B6nliche_Anpassungen#Zus.C3.A4tzliche_Plugins_uns_Einstellungenhttp://wiki.easy-vdr.de/index.php/Hardware_Kompatibilit%C3%A4t_/_Tipps_/_Links#Getestete_Hardwarehttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • MULTIMEDIA

    Der Startbildschirm zur Installation.

    eines großen, langsam drehenden und damit lei-sen Gehäuselüfters, der auf die Grafikkarte undmöglichst die benachbarten Empfangskarten ge-richtet ist.

    Natürlich unterstützt easyVDR auch nochFullFeatured-DVB-Karten [24] (mit HardwareMPEG(2)-Dekoder und hochwertigem SCART-Video Ausgang), allerdings dann logischerwei-se nur in SDTV. Die Mindestanforderungen füreinen stabilen Betrieb beginnen hier bei einem

    Pentium3-Prozessor ab733 MHz Taktfrequenzund 256 MB RAM. Möch-te man aber aus denaufgenommenen Fil-men auch DVDs bren-nen, XXV [25] nutzenoder auch mal Plug-ins [26] oder einen Ker-nel [27] kompilieren, wirdein stärkerer Prozessorempfohlen. Dann sollteeine CPU mit mindes-tens 1 GHz verwendetwerden.

    Aber auch die guten al-ten DXR3, die PVR350sowie die Digitainermit Hardware-MPEG(2)-Decoder werden alsAusgabekarten selbst-redend weiterhin unter-stützt. Die Unterstützung

    der Activy (mit em84xx-Decoder) musste lei-der aufgrund des Kernelupdates fallengelassenwerden bzw. ist ohne Support enthalten undkann durch die manuelle Auswahl von Kernel2.6.22.15 und VDR 1.6.0-2 genutzt werden.

    Download und InstallationMan lädt ein fertiges ISO-Image [28] über dasInternet. Aufgrund der deutlich erweiterten Fea-tures ist mittlerweile eine Installations-DVD nö-tig. Dann wird das Image auf einen DVD-Rohling

    gebrannt (im Brennprogramm „Image brennen“aktivieren, langsame Brenngeschwindigkeit, dasich die Hersteller leider immer selbst über-schätzen und so die Qualität des Brennergeb-nisses stark leidet) und der zukünftige VDR-PCvon dieser DVD gebootet. Dann gelangt man inein Bootmenü am zur Installation nötigen Bild-schirm, das ermöglicht, direkt zu installieren oderbei Problemhardware aus einigen ACPI/APM-Konfigurationen zu wählen.

    Anschließend erscheint ein Bootmenü, in demman automatische oder manuelle Installationauswählen kann.

    Sowohl die automatische als auch die manuelleInstallationweise stehen zur Verfügung.

    Der vollkommen neue Installer erkennt einebestehende (easy)VDR-Installation und verän-dert an der Medienpartition, auf der die Auf-zeichnungen liegen, nichts. Eine Swap-Partition(Festplattenspeicher zur Vergrößerung des evtl.zu kleinen Hauptspeichers (RAM)) wird dyna-

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

    http://www.freiesmagazin.de/mobil/2010-12-bilder/easyVDR-Installation.jpghttp://www.freiesmagazin.de/mobil/2010-12-bilder/easyVDR-Installation.jpghttp://www.vdr-wiki.de/wiki/index.php/Full-featured-DVB-Kartehttp://www.vdr-wiki.de/wiki/index.php/Xxvhttp://wiki.easy-vdr.de/index.php/Pluginshttp://wiki.easy-vdr.de/index.php/Kernelhttp://ftp.gwdg.de/pub/linux/easyvdr/0.8/easyVDR_0_8_0_full.isohttp://www.freiesmagazin.de/mobil/2010-12-bilder/easyVDR-Auswahl-Automatische-oder-manuelle-Installation.pnghttp://www.freiesmagazin.de/mobil/2010-12-bilder/easyVDR-Auswahl-Automatische-oder-manuelle-Installation.pnghttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • MULTIMEDIA

    misch nach RAM-Größe erstellt oder auch weg-gelassen. Anschließend wird die Partitionierungund evtl. Formatierung nochmals angezeigt undman muss der Installation durch Eingabe von„easyvdr“ explizit zustimmen.

    Sicherheitsabfrage: Zustimmung zurInstallation.

    Nach Abschluss der Grundinstallation und ei-nem Neustart erkennt der easyVDR die un-terstützten Ausgabearten (NVIDIA- oder Intel-Grafikkern, Reel eHD- [29], Full-Featured DVB-,DXR3-, PVR350-Karte) automatisch und konfigu-riert das System entsprechend. Danach folgt beierkannter Intel- oder NVIDIA-Grafikkarte nochdie Möglichkeit, einen X-Desktop [30] und Video-Ausgabe über das xineliboutput-Plug-in mit oderohne VGA2Scart-Kabel zu realisieren.

    Einige Hardwarevarianten benötigen hierfür Da-ten aus dem Internet, was sofort funktioniert,wenn der Internet-Router die IP-Adresse dyna-misch per DHCP [31] vergibt. Eine manuelle

    Netzwerkkonfiguration ist aber bei nicht erkann-ter Internetverbindung ebenfalls realisiert. DieseInstallation lässt sich aber auch nachträglich an-passen – ebenso wie der Wechsel auf andereAusgabearten problemlos funktioniert – indemman einfach das Skript 1st_start.sh [32] er-neut aufruft.

    Am Ende dieses Installationprozesses sollte beijedem Ausgabedevice nach Drücken von M aufder Tastatur bereits das OSD-Menü [33] am an-geschlossenen TV oder Monitor zu sehen sein.

    Das OSD-Menü.

    Nun stellt man noch im OSD unter dem Menü-punkt „System → Einstellungen → Grundeinstel-lungen und Systemstart → Kanalliste“ die korrek-te Kanalliste je nach Empfangsart und -ort einund kann sich die ersten Sendungen ansehen.Ist zu der Zeit schon ein LIRC-Empfänger [34]an den seriellen Port oder via USB angeschlos-sen und die richtige Fernbedienung ausgewählt,funktioniert die Bedienung des VDR schon vomSessel aus. Hierzu existiert ein Script unter/usr/bin/easyvdr/experimentell/extramenu/extra_menu.sh. Dazu schaltet man den

    laufenden VDR per Tasta-tur auf eine Textkonsole um( Strg + Alt + F1 ), loggt sichals „root“ mit dem Pass-wort „easyvdr“ ein und star-tet das Skript, um eineder unterstützten Fernbedie-nungen auszuwählen. Dieskann natürlich auch via SSHerledigt werden.

    IR-Empfänger, die an ei-nem Empfangsgerät ange-schlossen sind, und man-che USB-Funk-Empfänger(X10) lassen sich besserdurch Nutzung des VDR-Remote-Plug-ins verwen-den. Hierzu sucht manbei laufendem VDR denrichtigen Eingang unter/dev/input/by-path/ (ambesten per SSH den Na-

    © freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 13

    http://www.freiesmagazin.de/mobil/2010-12-bilder/easyVDR-Sicherheitsabfrage-Zustimmung-zur-Installation.pnghttp://www.freiesmagazin.de/mobil/2010-12-bilder/easyVDR-Sicherheitsabfrage-Zustimmung-zur-Installation.pnghttp://www.vdr-wiki.de/wiki/index.php/Reel-HDehttp://de.wikipedia.org/wiki/Fluxboxhttp://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocolhttp://wiki.easy-vdr.de/index.php/Zusammenh%C3%A4nge_der_Konfigurationsscriptehttp://de.wikipedia.org/wiki/On_Screen_Displayhttp://www.freiesmagazin.de/mobil/2010-12-bilder/easyVDR-Das-OSD-Menue.pnghttp://www.freiesmagazin.de/mobil/2010-12-bilder/easyVDR-Das-OSD-Menue.pnghttp://www.vdr-wiki.de/wiki/index.php/LIRChttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • MULTIMEDIA

    men exakt abschreiben). Das Plug-in wird imOSD unter „System → Einstellungen → Tastaturund Fernbedienung → Lirc oder Remote benut-zen“ auf „ja“ und auf der gleichen Ebene un-ter „Remote-Einstellungen → Remote für interneIR-FB“ auf „ja“ gestellt. Die Invertierung bleibtdeaktiviert und bei „sonst. Remote Parameter “muss der Eingangsname eingetragen werden(-i /dev/input/by-path/EINGANGSNAME). Mit-hilfe der Zurück-Taste ( Backspace ) speichertman dies. Gleiches gilt für LIRC-Einstellungen– ebenfalls zu finden unter „System → Einstel-lungen → Tastatur und Fernbedienung“. Hier in„System → Einstellungen → Lirc benutzen“ auf„nein“ setzen. Anschließend durch mehrmaligesDrücken der Zurück-Taste zurückgehen, bis manwieder im Livebild ist. Nun muss der VDR neugestartet und die Fernbedienung im OSD-Menüunter „System → Befehle → System-Befehle →FB neu anlernen“ angelernt werden.

    Da auch häufig Mischsysteme (DVB + Analog)benutzt werden, läuft eine eingebaute Hauppau-ge PVR150/250/350 (als Empfangsgerät) nachAktivierung des Plug-ins pvrinput (z. B. über ea-syPortal [35]) und der korrekten Kanalliste eben-falls sofort. Es werden natürlich auch mehre-re DVB-Karten korrekt erkannt, was für einenStreamingserver [36] interessant ist. Dies kön-nen dann natürlich auch sogenannte Budget-Karten ohne Videoausgang sein.

    Zu einem mittlerweile sehr beliebten Feature hatsich easyPortal gemausert. easyPortal ist eineWebsite, die der VDR zur Verfügung stellt und

    die aktuell in der Version 0.2.02 vorliegt. Manmuss nur „easyvdr“ oder die IP des VDR-PC indie Adresszeile eines Browsers auf einem an-deren PC im selben Netzwerk (LAN) eingebenund erhält sofort viele wichtige Informationen, diedas System betreffen. So kann man feststellen,welche Dienste aktuell laufen (Live, VDRAdmin,XXV, Samba, FTP etc.) und findet sich mit einemKlick im entsprechenden Dienst wieder. Das An-und Abschalten von Plug-ins macht die Verwal-tung auch ohne laufenden VDR (sollte man einPlug-in gestartet haben, welches den VDR nichtmehr starten lässt) sehr komfortabel. Angabenzum verfügbaren Plattenplatz, zu Temperaturensowie zur installierten Hardware runden die Infor-mationen zum easyVDR ab.

    Das weitaus wichtigste Feature ist aber innerhalbvon easyPortal zweifellos „easyInfo“, mit demman sich sehr viele relevante Log- und Konfigu-rationsdateien sowie Systeminfos ansehen kann.Das Posten dieser Datei, welche rechts obenauch zum Download zur Verfügung gestellt wird(grüner Pfeil, auch „Indianer“ genannt), macht dieFehlersuche für die Entwickler im Forum um vie-les einfacher [37]. Die aktuelle Version beinhal-tet keine neuen Features, wurde aber updatefä-hig gemacht und enthält viele strukturelle Ver-besserungen, die die Lauffähigkeit sowohl untereasyVDR-Version 0.6.x als auch 0.8.x und derkünftigen 1.0.x sicherstellt.

    BackupHat man ein funktionierendes System, möchteman natürlich mehr Möglichkeiten nutzen. Dies

    birgt aber immer das kleine Risiko, dass dasSystem danach nicht mehr startet. Kann mandie Änderung, aus welchen Gründen auch im-mer, nicht rückgängig machen, kommt das Rück-spielen eines Backups [38] zum Tragen. Es exis-tiert die Möglichkeit der Erstellung eines Backupsper OSD. Das Backup über OSD erstellt einekomplette Sicherung des easyVDR als Rettungs-DVD/Installations-DVD. Bis auf die speicher-platzintensiven Verzeichnisse, wie /video0 bzw.komplett /media, wird alles gesichert. Nachdem Erstellen befindet sich das ISO-Image imVerzeichnis /media/backup. Man erreicht dieBackup-Funktion über „OSD → System → Befeh-le → Backup“.

    AusblickZum September existiert bereits eine Alpha-Version von easyVDR 0.9, die auf Ubuntu „Lu-cid Lynx“ basiert und im Gegensatz zur aktuel-len Distribution (auf der Debian Etch-Basis) amUbuntu-Grundsystem so gut wie keine Änderun-gen vornimmt. Alle Erweiterungen werden alsDebian-Pakete eingespielt, womit die Basis unbe-rührt bleibt. Das macht künftige Updates deutlichleichter und erlaubt es, über Paketmanager wiez. B. apt/aptitude Pakete zum Testen zu installie-ren oder sie auch vollständig zu deinstallieren.

    FazitMit easyVDR Version 0.8 ist eine sehr benut-zerfreundliche Installation möglich, bei der esnahezu jedem gelingt, unter Einsatz von ent-sprechend unterstützter Hardware, ein HD-VDR-

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

    http://wiki.easy-vdr.de/index.php/EasyPortalhttp://wiki.easy-vdr.de/index.php/VDR_als_Streaming_-_Serverhttp://wiki.easy-vdr.de/index.php/Hilfehttp://wiki.easy-vdr.de/index.php/Installation,_Backup_und_Restorehttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • MULTIMEDIA

    System aufzubauen. Die Menge der „out of thebox“-unterstützten Ein- und Ausgabegeräte istsehr groß, die Konfiguration erfordert im Regelfallkeinen manuellen Eingriff und die Hardwareanfor-derungen sind auch im Vergleich zu kommerziel-len Fertiglösungen mehr als konkurrenzfähig.

    Informationen findet man auf der Projektinter-netseite von easyVDR. Hier sind ein Wiki [39], einForum [40] und Bereiche der gemeinsamen Ent-wicklung eingerichtet. Auch das VDR-Portal [41]und das VDR-Wiki [42] halten als Urvater derVDR-Community viele Informationen bereit.

    Zu Hilfestellungen bei Problemen, bei Wünschensowie Einblick oder Teilnahme an der Weiter-entwicklung der Distribution, trifft die Online-Community um easyVDR sich im Forum [43].

    LINKS[1] http://de.wikipedia.org/wiki/GNU_General_

    Public_License[2] http://de.wikipedia.org/wiki/Video_Disk_Recorder[3] http://de.wikipedia.org/wiki/High_Definition_

    Television[4] http://www.freiesmagazin.de/freiesMagazin-2009-

    07[5] http://de.wikipedia.org/wiki/DVB-S[6] http://de.wikipedia.org/wiki/DVB-C[7] http://de.wikipedia.org/wiki/DVB-T[8] http://de.wikipedia.org/wiki/IPTV[9] http://de.wikipedia.org/wiki/PCI-E

    [10] http://de.wikipedia.org/wiki/Zeitversetztes_Fernsehen

    [11] http://de.wikipedia.org/wiki/Bouquet_(Digitales_Fernsehen)

    [12] http://de.wikipedia.org/wiki/Electronic_Program_Guide

    [13] http://de.wikipedia.org/wiki/MPEG[14] http://www.vdr-wiki.de/wiki/index.php/Xinelibout

    put-plugin[15] http://de.wikipedia.org/wiki/Nvidia_PureVideo_

    HD[16] http://de.wikipedia.org/wiki/Debian_GNU/Linux[17] http://www.easy-vdr.de/forum/index.php?board=

    63.0[18] http://frc.easy-vdr.de/[19] http://www.vdr-wiki.de/wiki/index.php/Full-

    featured-DVB-Karte[20] http://de.wikipedia.org/wiki/Versionsverwaltung[21] http://de.wikipedia.org/wiki/Git[22] http://wiki.easy-vdr.de/index.php/Tipps,_Tricks_

    und_pers%C3%B6nliche_Anpassungen#Zus.C3.A4tzliche_Plugins_uns_Einstellungen

    [23] http://wiki.easy-vdr.de/index.php/Hardware_Kompatibilit%C3%A4t_/_Tipps_/_Links#Getestete_Hardware

    [24] http://www.vdr-wiki.de/wiki/index.php/Full-featured-DVB-Karte

    [25] http://www.vdr-wiki.de/wiki/index.php/Xxv[26] http://wiki.easy-vdr.de/index.php/Plugins[27] http://wiki.easy-vdr.de/index.php/Kernel[28] http://ftp.gwdg.de/pub/linux/easyvdr/0.8/

    easyVDR_0_8_0_full.iso[29] http://www.vdr-wiki.de/wiki/index.php/Reel-HDe[30] http://de.wikipedia.org/wiki/Fluxbox

    [31] http://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol

    [32] http://wiki.easy-vdr.de/index.php/Zusammenh%C3%A4nge_der_Konfigurationsscripte

    [33] http://de.wikipedia.org/wiki/On_Screen_Display[34] http://www.vdr-wiki.de/wiki/index.php/LIRC[35] http://wiki.easy-vdr.de/index.php/EasyPortal[36] http://wiki.easy-vdr.de/index.php/VDR_als_

    Streaming_-_Server[37] http://wiki.easy-vdr.de/index.php/Hilfe[38] http://wiki.easy-vdr.de/index.php/Installation,

    _Backup_und_Restore[39] http://wiki.easy-vdr.de/[40] http://www.easy-vdr.de/forum/[41] http://www.vdr-portal.de/[42] http://www.vdr-wiki.de/[43] http://www.easy-vdr.de/

    Autoreninformation

    Andreas Schott, Martin Neubauer,Ralf Hufnagel (Site) sind Entwicklerbei easyVDR, welches im Mai 2006von den Hauptverantwortlichen UweKiehl und Martin Neubauer angesto-ßen wurde, um eine umfassende unddennoch einfach zu installierendeVDR-Distribution bereitzustellen.

    Diesen Artikel kommentieren

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

    http://wiki.easy-vdr.de/http://www.easy-vdr.de/forum/http://www.vdr-portal.de/http://www.vdr-wiki.de/http://www.easy-vdr.de/http://de.wikipedia.org/wiki/GNU_General_Public_Licensehttp://de.wikipedia.org/wiki/GNU_General_Public_Licensehttp://de.wikipedia.org/wiki/Video_Disk_Recorderhttp://de.wikipedia.org/wiki/High_Definition_Televisionhttp://de.wikipedia.org/wiki/High_Definition_Televisionhttp://www.freiesmagazin.de/freiesMagazin-2009-07http://www.freiesmagazin.de/freiesMagazin-2009-07http://de.wikipedia.org/wiki/DVB-Shttp://de.wikipedia.org/wiki/DVB-Chttp://de.wikipedia.org/wiki/DVB-Thttp://de.wikipedia.org/wiki/IPTVhttp://de.wikipedia.org/wiki/PCI-Ehttp://de.wikipedia.org/wiki/Zeitversetztes_Fernsehenhttp://de.wikipedia.org/wiki/Zeitversetztes_Fernsehenhttp://de.wikipedia.org/wiki/Bouquet_(Digitales_Fernsehen)http://de.wikipedia.org/wiki/Bouquet_(Digitales_Fernsehen)http://de.wikipedia.org/wiki/Electronic_Program_Guidehttp://de.wikipedia.org/wiki/Electronic_Program_Guidehttp://de.wikipedia.org/wiki/MPEGhttp://www.vdr-wiki.de/wiki/index.php/Xineliboutput-pluginhttp://www.vdr-wiki.de/wiki/index.php/Xineliboutput-pluginhttp://de.wikipedia.org/wiki/Nvidia_PureVideo_HDhttp://de.wikipedia.org/wiki/Nvidia_PureVideo_HDhttp://de.wikipedia.org/wiki/Debian_GNU/Linuxhttp://www.easy-vdr.de/forum/index.php?board=63.0http://www.easy-vdr.de/forum/index.php?board=63.0http://frc.easy-vdr.de/http://www.vdr-wiki.de/wiki/index.php/Full-featured-DVB-Kartehttp://www.vdr-wiki.de/wiki/index.php/Full-featured-DVB-Kartehttp://de.wikipedia.org/wiki/Versionsverwaltunghttp://de.wikipedia.org/wiki/Githttp://wiki.easy-vdr.de/index.php/Tipps,_Tricks_und_pers%C3%B6nliche_Anpassungen#Zus.C3.A4tzliche_Plugins_uns_Einstellungenhttp://wiki.easy-vdr.de/index.php/Tipps,_Tricks_und_pers%C3%B6nliche_Anpassungen#Zus.C3.A4tzliche_Plugins_uns_Einstellungenhttp://wiki.easy-vdr.de/index.php/Tipps,_Tricks_und_pers%C3%B6nliche_Anpassungen#Zus.C3.A4tzliche_Plugins_uns_Einstellungenhttp://wiki.easy-vdr.de/index.php/Hardware_Kompatibilit%C3%A4t_/_Tipps_/_Links#Getestete_Hardwarehttp://wiki.easy-vdr.de/index.php/Hardware_Kompatibilit%C3%A4t_/_Tipps_/_Links#Getestete_Hardwarehttp://wiki.easy-vdr.de/index.php/Hardware_Kompatibilit%C3%A4t_/_Tipps_/_Links#Getestete_Hardwarehttp://www.vdr-wiki.de/wiki/index.php/Full-featured-DVB-Kartehttp://www.vdr-wiki.de/wiki/index.php/Full-featured-DVB-Kartehttp://www.vdr-wiki.de/wiki/index.php/Xxvhttp://wiki.easy-vdr.de/index.php/Pluginshttp://wiki.easy-vdr.de/index.php/Kernelhttp://ftp.gwdg.de/pub/linux/easyvdr/0.8/easyVDR_0_8_0_full.isohttp://ftp.gwdg.de/pub/linux/easyvdr/0.8/easyVDR_0_8_0_full.isohttp://www.vdr-wiki.de/wiki/index.php/Reel-HDehttp://de.wikipedia.org/wiki/Fluxboxhttp://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocolhttp://de.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocolhttp://wiki.easy-vdr.de/index.php/Zusammenh%C3%A4nge_der_Konfigurationsscriptehttp://wiki.easy-vdr.de/index.php/Zusammenh%C3%A4nge_der_Konfigurationsscriptehttp://de.wikipedia.org/wiki/On_Screen_Displayhttp://www.vdr-wiki.de/wiki/index.php/LIRChttp://wiki.easy-vdr.de/index.php/EasyPortalhttp://wiki.easy-vdr.de/index.php/VDR_als_Streaming_-_Serverhttp://wiki.easy-vdr.de/index.php/VDR_als_Streaming_-_Serverhttp://wiki.easy-vdr.de/index.php/Hilfehttp://wiki.easy-vdr.de/index.php/Installation,_Backup_und_Restorehttp://wiki.easy-vdr.de/index.php/Installation,_Backup_und_Restorehttp://wiki.easy-vdr.de/http://www.easy-vdr.de/forum/http://www.vdr-portal.de/http://www.vdr-wiki.de/http://www.easy-vdr.de/http://www.easy-vdr.de/http://www.freiesmagazin.de/comment/reply/200?edit[subject]=easyVDR 0.8 - HDTV-Version ver%C3%B6ffentlicht#comment-formhttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • LINUX ALLGEMEIN

    Der November im Kernelrückblick von Mathias Menzer

    B asis aller Distributionen ist der Linux-Kernel, der fortwährend weiterent-wickelt wird. Welche Geräte in einemhalben Jahr unterstützt werden und welcheFunktionen neu hinzukommen, erfährt man,wenn man den aktuellen Entwickler-Kernel imAuge behält.

    Kernel 2.6.37Die erste Vorabversion des kommenden Kernelskonnte Torvalds bereits am 1. November veröf-fentlichen (siehe „Der Oktober im Kernelrück-blick“, freiesMagazin 11/2010 [1]), die unter an-derem eines großen Teils des mittlerweile unge-liebten Big Kernel Locks verlustig wurde. Da dar-auf erst einmal das Linux Kernel Summit und dieLinux Plumbers Conference folgten, die einen gu-ten Teil der Zeit der Kernel-Hauptentwickler in An-spruch nahmen, konnte die zwei Wochen spätererscheinende Version -rc2 [2] nicht allzu viele Än-derungen aufweisen. Eine größere Aktion, zumin-dest was den Niederschlag in der Menge der ge-löschten und hinzugekommenen Quelltextzeilenbetrifft, stellt das Verschieben der tty-Umgebungin einen neuen, eigenen Bereich dar. Der „Tele-typewriter“ (Fernschreiber), der die Standardein-gabe und -ausgabe verwaltet und an Prozesseund Anwendungen weiterreicht beziehungswei-se dem Nutzer darstellt, war bisher im Umfelddes Char-Treibers angesiedelt. Eigentlich wäredas passend, bietet dieser Treiber doch die Ba-sis für zeichenorientierte Geräte wie der seriel-

    len Schnittstelle oder den meisten Eingabegerä-ten. Doch derzeit liegt hier einiges an überflüssi-gem Code herum, den aufzuräumen Greg Kroah-Hartman nun offensichtlich mit tty begonnen hat.

    Auch die dritte Entwicklerversion [3] kam mitrelativ wenig spektakulären Änderungen daher.Ein großer Teil wurde durch Arbeiten an Nou-veau und Radeon, den freien Treibern für dieGrafik-Chipsätze von NVIDIA und ATI/AMD, inAnspruch genommen. Eine kleines Problem, dasin manchen Situationen auch den Endanwen-dern zu schaffen machen könnte, wurde von demVMware-Entwickler Dmitry Torokhov durch einenPatch behoben: Die Systemabfragetaste, durchdie Tastenkombination Alt-SysRq/Druck ausge-löst, dient dazu, Befehle unter Umgehung deraktuellen Oberfläche direkt an das System zusenden, um zum Beispiel einen nicht mehr rea-gierenden X-Server zu beenden. Diese Tasten-kombination, auch als Magic SysRq Key [4] be-kannt, wird allerdings vom Kernel abgefangenund nicht an die Oberfläche weitergeleitet, so-dass beispielsweise Screenshots darüber nichtkonfiguriert oder zumindest durchgeführt wer-den können. Torokhovs Patch behebt diesen Um-stand nun, in dem die Weiterleitung an den User-space nur unterbunden wird, wenn zu der Tas-tenkombination eine weitere Taste mit einem gül-tigen Befehl betätigt wird.

    2.6.37-rc4 [5] brachte Ergänzungen der in 2.6.36neu hinzugekommenen Tile64-Architektur [6], in-

    dem der Treiber für die auf dem Chip integrierteNetzwerk-Hardware aufgenommen wurde. Die-ser einzelne Patch war für mehr als die Hälf-te der Änderungen verantwortlich, der Rest warin erster Linie kleinen Verbesserungen und Kor-rekturen geschuldet. Aus diesen stach nach An-sicht Torvalds noch eine Reihe von Patches ausder Feder von Trond Myklebust, Entwickler imDienste von Netapp, hervor, die ein Problem mitder Darstellung von NFS-Verzeichnissen endgül-tig beheben sollten. Leider hat sich mittlerweilegezeigt, dass der Effekt, bei dem die zurückgelie-ferte Verzeichnisliste leer ist, weiterhin auftretenkann [7]. Das Problem wurde bei 2.6.37-rc1 zumersten Mal berichtet und scheint die Entwicklernoch ein wenig weiter narren zu wollen.

    Neue Wege für das SchedulingImmer wieder wird von verschiedenen Seiten dar-auf aufmerksam gemacht, dass Linux zwar aufRechnern mit hunderten von Prozessoren gutskaliert, das ruckelfreie Abspielen eines Flash-Videos auf Ein- oder Zweikern-Systemen jedochnicht immer funktioniert – zuletzt von dem An-ästhesisten und ehemaligen Kernel-EntwicklerCon Kolvias, der mit dieser Aussage seinenBrain Fuck Scheduler [8] vorstellte. Jedoch kön-nen Verbesserungen der Leistung eines Desktop-System nicht nur über den Scheduler (sieheKasten „Kurz erläutert“) erreicht werden, son-dern auch über die Art und Weise, wie dielaufenden Prozesse sortiert werden. Für den

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

    http://www.freiesmagazin.de/freiesMagazin-2010-11http://lkml.org/lkml/2010/11/15/568http://lkml.org/lkml/2010/11/21/153http://de.wikipedia.org/wiki/Magic_SysRq_keyhttp://lkml.org/lkml/2010/11/30/5http://en.wikipedia.org/wiki/TILE64http://lkml.org/lkml/2010/11/30/162http://de.wikipedia.org/wiki/Brain_Fuck_Schedulerhttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • LINUX ALLGEMEIN

    Kurz erläutert: „Scheduler“Der Scheduler (zu deutsch etwa: Arbeitspla-ner) ist der Manager des Prozessors. Er ver-teilt die Rechenzeit der CPU möglichst gleich-mäßig auf die wartenden Prozesse. Der in aktu-ellen Versionen des Linux-Kernels (seit 2.6.24)verwendete Completely Fair Scheduler (CFS)nutzt dazu Gruppen, in denen Prozesse jeweilseines Nutzers zusammengefasst werden. Je-de Gruppe wird mit dem gleichen Anteil anRechenzeit versehen, sodass jeder Anwendergleichberechtigt ist, unabhängig von der An-zahl und dem Leistungsbedarf der von ihm ge-starteten Prozesse. Die einem Anwender zuge-teilte CPU-Zeit wird wiederum gleichmäßig aufalle in seinem Kontext laufenden Prozesse ver-teilt. Wird die verfügbare Rechenzeit von einemAnwender nicht benötigt, so wird sie „zurückge-geben“ und vom Scheduler neu zugewiesen.

    Desktop-Nutzer misst sich die Leistung des Sys-tems meist durch dessen Antwortverhalten. Rea-giert es prompt auf Maus und Tastatureinga-ben, ist der Anwender zufrieden, bewegt sich derMauszeiger jedoch ruckhaft, so ist die Bedien-möglichkeit eher eingeschränkt.

    Mike Galbraith verfolgt nun den Ansatz, Prozessezu Gruppen nach Terminal sortiert zusammenzu-fassen und die CPU-Rechenzeit gleichmäßig aufdiese Gruppen zu verteilen, während innerhalbder Gruppe die ihr zur Verfügung gestellte Zeitwiederum gerecht verteilt wird [9]. Das Kompilie-ren eines Kernels in 64 parallelen Threads (make-j64) würde zum Beispiel (in einem Terminal) in

    einer Prozessgruppe laufen, während der Web-browser und das Mail-Programm des Anwendersin einer anderen zu finden wäre, beide Gruppenerhalten jedoch den gleichen Anteil an Rechen-zeit zugeteilt. So wäre dem Nutzer das Surfenund Lesen der E-Mail noch möglich, dafür würdeder Vorgang des Kompilierens geringfügig aus-gebremst. Rechenzeit, die die Browser-E-Mail-Gruppe nicht benötigt, würde frei und damit auto-matisch vom Scheduler der Kompilierungsgrup-pe zugewiesen. Eben dieser Fall war das Test-szenario von Torvalds, der sich daraufhin vonGalbraiths Patch durchaus angetan zeigte [10]und sich sogar dazu hinreißen ließ, das Schedu-ling von Gruppen als „Killer-Feature“ zu bezeich-nen. War die Diskussion um diesen Patch bishersehr umfangreich, so werden Anwender bald inKontakt mit „Group Scheduling“ kommen, dennder Scheduler-Experte des Linux-Kernels, IngoMolnar, bat Galbraith bereits um die Einsendungdes Patches für seinen Kernel-Zweig um ihn in2.6.38 einbringen zu können [11].

    Neue Server für den KernelDie Server, auf denen der Kernel entwickelt wird,haben nun Verstärkung bekommen [12] – zweiSpiegelserver wurden durch Neugeräte mit je-weils 66 300GB-Festplatten ersetzt. Danebenstehen nun zwei neue Server zur Verfügung, vondenen einer als Backup des Master-Servers vonkernel.org fungiert, während der andere parallelzu „demeter.kernel.org“, dem Server für den Ker-nel Bugzilla und die Wikis, laufen und diesem un-ter die Arme greifen wird.

    LINKS[1] http://www.freiesmagazin.de/freiesMagazin-2010-

    11[2] http://lkml.org/lkml/2010/11/15/568[3] http://lkml.org/lkml/2010/11/21/153[4] http://de.wikipedia.org/wiki/Magic_SysRq_key[5] http://lkml.org/lkml/2010/11/30/5[6] http://en.wikipedia.org/wiki/TILE64[7] http://lkml.org/lkml/2010/11/30/162[8] http://de.wikipedia.org/wiki/Brain_Fuck_

    Scheduler[9] http://www.heise.de/open/artikel/Kernel-Log-

    Flinker-mit-Prozessgruppen-1140656.html[10] http://lkml.org/lkml/2010/11/14/222[11] http://lkml.org/lkml/2010/11/16/307[12] http://www.linux-magazin.de/NEWS/Hardware-

    Update-Linux-Quellen-kommen-von-frischen-Servern

    Autoreninformation

    Mathias Menzer wirft gerne einenBlick auf die Kernel-Entwicklung, ummehr über die Funktion von Linux zuerfahren und um seine Mitmenschenmit seltsamen Begriffen und unver-ständlichen Abkürzungen verwirrenzu können.

    Diesen Artikel kommentieren

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

    http://www.heise.de/open/artikel/Kernel-Log-Flinker-mit-Prozessgruppen-1140656.htmlhttp://lkml.org/lkml/2010/11/14/222http://lkml.org/lkml/2010/11/16/307http://www.linux-magazin.de/NEWS/Hardware-Update-Linux-Quellen-kommen-von-frischen-Servernhttp://www.freiesmagazin.de/freiesMagazin-2010-11http://www.freiesmagazin.de/freiesMagazin-2010-11http://lkml.org/lkml/2010/11/15/568http://lkml.org/lkml/2010/11/21/153http://de.wikipedia.org/wiki/Magic_SysRq_keyhttp://lkml.org/lkml/2010/11/30/5http://en.wikipedia.org/wiki/TILE64http://lkml.org/lkml/2010/11/30/162http://de.wikipedia.org/wiki/Brain_Fuck_Schedulerhttp://de.wikipedia.org/wiki/Brain_Fuck_Schedulerhttp://www.heise.de/open/artikel/Kernel-Log-Flinker-mit-Prozessgruppen-1140656.htmlhttp://www.heise.de/open/artikel/Kernel-Log-Flinker-mit-Prozessgruppen-1140656.htmlhttp://lkml.org/lkml/2010/11/14/222http://lkml.org/lkml/2010/11/16/307http://www.linux-magazin.de/NEWS/Hardware-Update-Linux-Quellen-kommen-von-frischen-Servernhttp://www.linux-magazin.de/NEWS/Hardware-Update-Linux-Quellen-kommen-von-frischen-Servernhttp://www.linux-magazin.de/NEWS/Hardware-Update-Linux-Quellen-kommen-von-frischen-Servernhttp://www.freiesmagazin.de/comment/reply/200?edit[subject]=Der November im Kernelr%C3%BCckblick#comment-formhttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • PROGRAMMIERUNG

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

    Im vorherigen Teil dieser Reihe(freiesMagazin 11/2010 [1]) wurden Lis-ten, Zeichenketten und die beiden Kon-trollstrukturen if und while behandelt. Die-ses Mal werden mit Funktionen und Modulenzwei wichtige Möglichkeiten vorgestellt, umeigene Python-Projekte zu strukturieren undwiederverwendbar zu machen. Zunächst sol-len aber noch die versprochenen Ersetzun-gen bei Zeichenketten besprochen werden.Mit den „Dictionaries“ wird zudem ein weite-rer wichtiger Datentyp in Python vorgestellt.

    Substitution von ZeichenkettenIn den letzten beiden Teilen dieser Reihe wurdenschon mehrfach einfache Zeichenketten erstellt.In der Regel möchte man aber nicht nur bloßeZeichenketten ausgeben, sondern bestimmte dy-namische Informationen darin transportieren, et-wa den Namen des Benutzers. Dies funktioniertin Python so, dass man zunächst Platzhalter inder Zeichenkette definiert und diese später mitder format()-Methode gegen den gewünschtenInhalt austauscht (substituiert).

    >>> message = u"Hallo {0}, du hast {1} Euro yim Portemonnaie.".format(u"Karl", 10)>>> print messageHallo Karl, du hast 10 Euro im Portemonnaie.

    Die Methode format() ersetzt also die Zeichen-folge {0} innerhalb der Zeichenkette durch denersten Parameter, die Zeichenfolge {1} durch

    den zweiten Parameter usw. Python kümmertsich dabei automatisch um das Umwandeln derDatentypen – so können sehr leicht auch Zahlenin Zeichenketten eingefügt werden, ohne dasssich der Benutzer um irgendwelche Umwandlun-gen zu kümmern hätte. Folgendes Beispiel dientzur Veranschaulichung:

    >>> names = [u"Karl", u"Bernd", u"Hannes", u"Ina" ]>>> for name in names:... print u"’{0}’ hat {1} Buchstaben".format(name, len(name))

    Hinweis: Wie in den Artikeln zuvor steht >>>für eine Eingabe in der Python-Shell und mussnicht mit eingegeben werden. Mit drei Punkten... zeigt die Shell an, dass ein Befehl noch nichtabgeschlossen ist und sich über mehrere Zeilenerstreckt. Diese Punkte müssen ebenfalls nichtmit eingeben werden.

    Die Ausgabe des obigen Beispiels lautet:

    ’Karl’ hat 4 Buchstaben’Bernd’ hat 5 Buchstaben’Hannes’ hat 6 Buchstaben’Ina’ hat 3 Buchstaben

    Bisher wurden nur positionale Argu-mente verwendet, das heißt: {0} ver-weist jeweils auf den ersten Parame-ter von format(), {1} auf den zwei-

    ten etc. Um die Übersicht zu wahren, ist auch dieAngabe von Namen möglich. format() erlaubtdabei eine sehr weitreichende Formatierung:

    >>> for name in names:... print u"’{username}’ \... hat {namelength} \... Buchstaben".format(\... username=name, \... namelength=len(name))

    So lässt sich etwa festlegen, wie viele Nachkom-mastellen ausgegeben werden sollen, ob undwie viele Leerzeichen der Zeichenkette vorange-stellt werden sollen und vieles mehr [2].

    Achtung: In Zeichenketten, die mit format() for-matiert werden, werden alle geschweiften Klam-mern als Ersetzungszeichen interpretiert. Folgen-de Zeile wird also zu einem Fehler führen:

    >>> print u"{0} mag Klammern wie \... { oder }".format(u"Bernd")Traceback (most recent call last):File "", line 1, in

    KeyError: u’ oder ’

    Hier müssen die letzten beiden Klammern mas-kiert werden:

    >>> print u"{0} mag Klammern wie {{yoder }}".format(u"Bernd")Bernd mag Klammern wie { oder }

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

    http://www.freiesmagazin.de/freiesMagazin-2010-11http://docs.python.org/library/string.html#format-string-syntaxhttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • PROGRAMMIERUNG

    Doppelte geschweifte Klammern werden alsovon der format()-Methode ignoriert.

    DictionariesSogenannte „Dictionaries“ oder „Dicts“ werden inanderen Sprachen oft „Hashes“ oder „assoziati-ve Arrays“ genannt. Wie auch Listen können Dic-tionaries beliebige andere Datentypen verwalten.Während Listen aber ihre Einträge intern mit fort-laufenden Nummern adressieren (die sogenann-ten Indizes), können die Einträge in Dictionariesmit Zeichenketten, beliebigen Zahlen oder ande-ren Datentypen adressiert werden. Somit bestehtjedes Dictionary aus zwei wesentlichen Elemen-ten: Schlüsseln (keys) und Werten (values).

    Ein leeres Dict wird in Python entweder mit derFunktion dict() oder zwei geschweiften Klam-mern erstellt [3]:

    >>> persons = dict()

    und

    >>> persons = {}

    sind also äquivalent.

    In folgendem Beispiel sollen nun verschiedenePersonen und ihr jeweiliges Alter in einer Da-tenstruktur gespeichert werden. Dies könnte wiefolgt aussehen:

    >>> persons = {u"Peter":18, \... u"Ilse":87, u"Juergen":33, \... u"Jutta":25}

    Wie also auch Listen lassen sich Dicts initial be-füllen. Die Namen sind in diesem Beispiel je-weils die Schlüssel, das Alter der dazugehörigeWert. Schlüssel und Wert werden durch einenDoppelpunkt getrennt, mehrere Schlüssel/Wert-Paare durch Kommata.

    Um das Alter von Peter aus dem Dict auszulesen,genügt folgender Aufruf:

    >>> print persons[u"Peter"]18

    Es fällt auf: Obwohl Dicts mit geschweiften Klam-mern erstellt werden, wird – wie auch bei Lis-ten – mit eckigen Klammern auf die Werte zuge-griffen. Auch sonst gibt es einige Parallelen zwi-schen Dictionaries und Listen. Um beispielswei-se zu überprüfen, ob der Eintrag Hans in einemDict vorhanden ist, wird ebenfalls der Operatorin genutzt:

    >>> if u"Hans" in persons:... print persons[u"Hans"]... else:... print u"Der Eintrag Hans \... ist nicht vorhanden"

    Während der in-Operator aber bei Listen das Vor-handensein des Wertes Hans abfragt, beziehtsich der Operator bei Dicts auf den SchlüsselHans. Ebenso wie bei Listen führt der Zugriff aufein nicht vorhandenes Element/Schlüssel zu ei-nem Fehler. Wie man derartige Fehler sehr leichtabfängt, wird in einem der folgenden Teile be-sprochen werden.

    In manchen Situationen ist es aber vielleicht garnicht so wichtig, ob ein bestimmter Eintrag nun ineinem Dict vorhanden ist oder nicht. Für solcheFälle gibt es die get()-Methode von Dicts:

    1 >>> print persons.get(u"Hans", 15)2 153 >>> print persons.get(u"Peter", 5)4 18

    Die Methode get() erwartet als ersten Parame-ter einen beliebigen Schlüssel. Ist der Schlüs-sel im Dict vorhanden, wird der dazugehörigeWert zurückgegeben. Andernfalls wird der zwei-te Parameter (in Zeile 1 also 15) zurückgegeben.So lassen sich beispielsweise Standardwerte fürnicht vorhandene Schlüssel implementieren.

    Gut zu sehen ist, dass der Aufruf in Zeile 3 nicht5, sondern 18 zurück gibt, denn dieser Wert wur-de oben dem Schlüssel Peter zugewiesen.

    Der zweite Parameter der Methode get() ist op-tional: Er muss nicht angegeben werden. Wirdkein zweiter Parameter angegeben, gibt die Me-thode None zurück, wenn der gesuchte Schlüsselim Dict nicht vorhanden ist:

    >>> print persons.get(u"Anke")None

    Natürlich können auch jederzeit weitere Einträgezu Dicts hinzugefügt oder bestehende Einträgeverändert werden:

    1 >>> persons[u"Peter"] = 992 >>> print persons[u"Peter"]

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

    http://docs.python.org/tutorial/datastructures.html#dictionarieshttp://creativecommons.org/licenses/by-sa/3.0/deed.de

  • PROGRAMMIERUNG

    3 994 >>> persons[u"Hans"] = 155 >>> print persons[u"Hans"]6 15

    In Zeile 1 wird das Alter von Peter auf 99 verän-dert. In Zeile 4 wird der Eintrag Hans hinzugefügt.

    Dictionaries lassen sich – ebenso wie Listen –auch sehr leicht verschachteln. In folgendem Bei-spiel wird ein verschachteltes Dict genutzt, umein kleines Adressbuch zu implementieren:

    1 >>> addresses = {2 ... u"Peter":{u"street":"Musterstr. 16", u"mobile":"0151/123 456"},3 ... u"Jutta":{u"street":"Beispielstr. 99", u"mobile":"0151/33 44 55"},4 ... }

    Hier wird – zur besseren Lesbarkeit über meh-rere Zeilen verteilt – ein verschachteltes Dict er-stellt. In Zeile 1 wird dem Namen addresses einDict zugewiesen. Dieses wird dabei direkt initialbefüllt. Den Schlüsseln Peter und Jutta wird da-bei nicht wie oben ihr Alter als Wert zugeteilt, son-dern es dienen Dicts als Werte.

    Der Aufruf

    >>> print addresses[u"Peter"]

    gibt nun das dazugehörige Dict zurück:

    {u’mobile ’: ’0151/123 456’, u’street ’: ’Musterstr. 16’}

    Auf dieses Dict kann auch direkt zugegriffen wer-den:

    >>> print addresses[u"Peter"][u"street"]Musterstr. 16

    Dieser Aufruf irritiert vielleicht zunächst. Etwasverständlicher (aber länger) ist folgende Vorge-hensweise:

    1 >>> peters_data = addresses[u"Peter"]2 >>> type(peters_data)3 4 >>> peters_data[u"street"]5 ’Musterstr. 16’

    In Zeile 1 wird der zum Schlüssel Peter gehöri-ge Wert der Variable peters_data zugewiesen.

    Dieser Wert ist wiederum ein Dict mit den zuPeter gehörigen Adressdaten (siehe obiges Bei-spiel). Zeile 2 und 3 zeigen, dass die Variablepeters_data auf ein Dict zeigt. In Zeile 4 und 5wird nun wiederum der Schlüssel street dieseszweiten Dicts ausgegeben.

    Aus dem Ausdruck

    >>> print addresses[u"Peter"][u"ystreet"]

    wird also zunächst

    {u"street":u"Musterstr. 16", u"ymobile":"0151/123 456"}[u"street"]

    was schließlich auf den Wert Musterstr.16 verweist.

    Insgesamt eignen sich Dicts hervorragend,um Datenstrukturen wie Wörterbücher oderAdressbücher abzubilden. Überall dort, wo

    Informationen über bestimmte Schlüssel zu-gänglich sein sollen, empfiehlt sich die Ver-wendung von Dictionaries.

    Ebenso wie über Listen kann sehr leicht überDicts iteriert werden. Dabei ist aber zu beach-ten, dass Dicts keine feste Reihenfolge ken-

    nen: Es gibt also keine Garantie dafür, dass dieSchlüssel eines Dicts beim Iterieren in der Rei-henfolge durchlaufen werden, in der sie erstelltwurden [4].

    FunktionenFunktionen sind ein wichtiges Strukturierungs-merkmal moderner Programmiersprachen.Durch sie können häufig benötigte Arbeitsschrit-te leicht wiederverwertet werden. Damit dienensie auch der Lesbarkeit und Wartbarkeit desQuelltextes.

    Eine Funktion wird in Python wie folgt deklariert:

    def say_hallo():print u"Hallo"

    Diese Funktion kann nun einfach mitsay_hallo() aufgerufen werden und wird beijedem Aufruf die Meldung Hallo auf dem Bild-schirm ausgeben. Das Schlüsselwort def leitethierbei die Deklaration einer Funktion ein, da-nach folgt der Name der Funktion, der nach demPaar runden Klammern mit einem Doppelpunktabgeschlossen wird. Zu beachten ist, dass der

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

    http://www.python.org/dev/peps/pep-0372/http://creativecommons.org/licenses/by-sa/3.0/deed.de

  • PROGRAMMIERUNG

    Rumpf von Funktionen einzurücken ist – wie beiallen Kontrollstrukturen in Python.

    Natürlich handelt es sich bei dem obigen Beispielnoch um eine sehr einfache Funktion. FolgendeFunktion greift ein Beispiel aus Teil 1 dieser Rei-he wieder auf und wird beliebige Zeichenkettenmit einer Box aus Leerzeichen umgeben:

    1 def boxify(text):2 text_with_borders = u"= {0} =".format(text)3 line = len(text_with_borders) * u"="45 output = u"{0}\n{1}\n{2}".format(line, text_with_borders , line)6 return output

    In Zeile 1 wird – wie gehabt – eine Funktion de-finiert. Sie hat den namen boxify und erwartetgenau einen Parameter (hier: text). Es könnenprinzipiell natürlich beliebig viele Parameter imFunktionskopf definiert werden – getrennt wer-den sie durch Kommata.

    In Zeile 2 wird links und rechts der übergebenenZeichenkette text ein Gleichheits- und Leerzei-chen eingefügt, in Zeile 3 wird eine Zeichenket-te erstellt, die ausschließlich Gleichheitszeichenenthält.

    Zeile 5 wirkt nur auf den ersten Blick kompli-ziert: Wie bereits in Teil 2 dieser Reihe erör-tert wurde, handelt es sich bei der Zeichenfol-ge \n um eine sogenannte Escape-Sequenz, dieeinen Zeilenumbruch erzeugt. Somit beinhaltetdie Zeichenkette output drei Zeilen: Die ersteZeile enthält ausschließlich Gleichheitszeichen,

    die zweite Zeile die übergebene Zeichenkette mitGleichheitszeichen links und rechts, die dritte Zei-le schließlich erneut nur Gleichheitszeichen.

    Neu ist das Schlüsselwort return – es gibt dennachfolgenden Ausdruck (hier: output) zurück.

    Wird diese Funktion nun aufgerufen, ge-schieht zunächst scheinbar nichts. Die Funktion

    boxify() macht keine Bildschirmausgaben, son-dern gibt nur eine Zeichenkette zurück. Diesemuss also noch an die print()-Funktion weiter-gegeben werden:

    >>> print boxify(u"Mein Haus, mein yGarten, meine Box")====================================== Mein Haus, mein Garten, meine Box ======================================

    Eine Besonderheit ist bei return noch zu beach-ten: Die Anweisung bricht die Funktion sofort abund liefert einen Rückgabewert – nachfolgendeCodezeilen der Funktion werden nicht mehr aus-geführt:

    1 def test():2 print u"Hallo!"3 return4 print u"Dies ist ein Test"

    56 print u"start"7 test()8 print u"ende"

    Dieses Beispiel gibt nur die folgende Meldungaus:

    startHallo!ende

    Die Zeile 4 (Dies ist ein Test) kommt nie-mals zur Ausführung. Gut zu sehen ist auch,in welcher Reihenfolge die Anweisungen ausge-führt werden: Zwar wird in den Zeilen 1 bis 4 dieFunktion definiert – sie wird aber noch nicht aus-geführt. Es muss also immer zwischen der „De-klaration“ einer Funktion und dem „Aufruf“ dersel-ben unterschieden werden. Zuerst wird hier dem-nach die Meldung start ausgegeben. Dann wirddie Funktion aufgerufen und abgearbeitet – dieMeldung Hallo! erscheint. Durch die Anweisungreturn wird der Programmfluss nun in Zeile 8fortgesetzt – ende wird ausgegeben.

    Zu beachten ist, dass Funktionen keine return-Anweisung haben müssen – haben sie keine,kehrt der Programmfluss nach dem Abarbeitendes Funktionsrumpfes zum Ausgangspunkt zu-rück. Der Rückgabewert der Funktion ist dannNone.

    Eine weiteres wichtiges Element von Funktionensind Standardparameter. Sie werden durch einGleichheitszeichen definiert:

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

    http://creativecommons.org/licenses/by-sa/3.0/deed.de

  • PROGRAMMIERUNG

    def say_something(what, who=u"Karl"):print u"{0} sagt: ’{1}’".format(who, what)

    say_something(u"Hi")say_something(u"Tach auch", u"Bernd")

    Der Parameter what ist obligatorisch – bei je-dem Funktionsaufruf muss er angegeben wer-den, sonst kommt es zu einem Fehler. Der zwei-te Parameter hingegen ist optional: Wird er nichtangegeben, erhält er automatisch den Wert Karl.Entsprechend gibt obiges Skript folgende Ausga-be aus:

    Karl sagt: ’Hi’Bernd sagt: ’Tach auch’

    Wichtig ist: Bei der Funktionsdefinition müssenzuerst immer die obligatorischen Parameter an-gegeben werden. Die Funktion

    def say_something(who="Karl", what):...

    führt also zu einem Fehler beim Versuch, dasSkript auszuführen.

    Parameter an Funktionen übergebenIn den obigen Beispielen wurden bereits ver-schiedene Parameter an die Funktionen überge-ben. Etwa Tach auch und Bernd an die Funk-tion say_something(). In dem Beispiel musssich der Programmierer peinlich genau an die imFunktionskopf definierte Reihenfolge halten. DieParameter sind also abhängig von der Position –sie sind „positional“.

    Als Beispiel sei die folgende(nicht besonders schöne) Funk-tion gegeben, bei der die Argu-mente alle in einer bestimmtenReihenfolge angegeben werdenmüssen:

    def print_a_lot(name, country, street, adress, mobile, age, sex, hobbies):print u"{name} stammt aus {country} ...".format(name=name, country=country)

    Statt hier nun die erforderlichen Argumente im-mer in der einzig richtigen Reihenfolge anzuge-ben, gibt es noch die Möglichkeit, die Argumenteper Schlüsselwort zu übergeben:

    print_a_lot(name=u"Bernd", age=18, ysex=u"m", street=u"Musterstrasse", yadress=18, country=u"Deutschland", ymobile=u"0151-123456789", hobbies=uy"lesen")

    Diese Art des Aufrufes kann die Lesbarkeit vonQuelltexten enorm erhöhen.

    def print_info(name, country=None, street=None, adress=None, mobile=None, yage=None, sex=None, hobbies=None):

    if age:print u"Hallo {0}! Du bist {1} Jahre alt!".format(name, age)

    else:print u"Hallo {0}".format(name)

    Die Funktion print_info() unterscheidet sichvon print_a_lot() darin, dass alle Parameterbis auf name optional sind – sie müssen nicht an-gegeben werden. Wird aber ein Alter übergeben(age), wird zusätzlich zum Namen auch das Alterausgegeben. Der Aufruf ist:

    print_info(u"Jutta", age=25)

    Der erste Parameter ist positional: Hier wirdder Name übergeben. Da alle anderen Parame-ter optional sind, werden sie einfach ausgelas-sen. Lediglich der age-Parameter wird noch als

    Schlüsselwort-Argument übergeben.

    In Python sind auch Funktionen ganz normaleObjekte. Auch sie lassen sich damit beispielswei-se an Namen binden:

    1 >>> from operator import add2 >>> add(1, 3)3 44 >>> plus = add5 >>> plus6 7 >>> plus(1, 3)8 4

    Achtung: Wichtig ist hier, dass die Funktionin Zeile 5 ohne runde Klammern an einen Na-men gebunden wird. Andernfalls würde die Funk-tion aufgerufen und das Ergebnis an den Na-men gebunden werden. Anders gesagt: Mit Klam-mern wird eine Funktion aufgerufen, ohne Klam-

    © freiesMagazin CC-BY-SA 3.0 Ausgabe 12/2010 22

    http://creativecommons.org/licenses/by-sa/3.0/deed.de

  • PROGRAMMIERUNG

    mern wird das Funktionsobjekt angesprochen,die Funktion aber nicht ausgeführt.

    In Zeile 1 wird zunächst die Funktion add()aus dem Modul operator importiert (siehe dazunächster Abschnitt). Die Funktion add() addiert– wie der Operator + – zwei Zahlen. Sie stellt diegleiche Funktionalität nur als Funktion zur Verfü-gung (Zeile 3).

    In Zeile 5 wird die Funktion add() zunächst anden Namen plus gebunden. In Zeile 6 und 7wird gezeigt, dass der Name plus noch immerauf die Funktion add() verweist – add und plussind identisch.

    In Zeile 9 wird deutlich, dass man an Namen ge-bundene Funktionen genau so wie normale Funk-tionen aufrufen kann. Am Ende dieses Teils wirddiese Technik an einem praktischen Beispiel ver-anschaulicht.

    ModuleModule bieten eine einfache Möglichkeit, seineSkripte um zusätzliche Funktionen zu erweitern.Es wurde bereits angesprochen, dass Python miteiner Vielzahl zusätzlicher Bibliotheken ausgelie-fert wird – diese Bibliotheken heißen in PythonModule. Sie werden durch den Befehl import inein eigenes Skript eingebunden [5]:

    1 import os23 counter = 045 files = os.listdir(".")

    6 for entry in files:7 if os.path.isfile(entry):8 counter += 1910 print u"Es gibt {0} Dateien in ydiesem Verzeichnis".format(ycounter)

    In Zeile 1 wird der Interpreter angewiesen, dasModul os im jetzigen Skript verfügbar zu machen.Dieses Modul enthält verschiedene Funktionenzum Kopieren, Verschieben oder Löschen vonDateien. Auch das Auflisten des aktuellen Ver-zeichnisinhaltes gehört dazu [6].

    In Zeile 5 wird die Funktion listdir() des Mo-dules os aufgerufen. Der Parameter . verweistauf das aktuelle Verzeichnis. Die Funktion erstellteine Liste mit allen Dateien und Ordnern des ak-tuellen Verzeichnisses und gibt diese Liste zu-rück. Die Variable files zeigt nun auf diese Lis-te.

    In Zeile 6 wird eine for-Schleife definiert, dieüber die zuvor erstellte Liste iteriert. In Zeile 7wird überprüft, ob es sich bei dem jeweiligen Ein-trag um eine Datei oder ein Verzeichnis handelt –auch dazu wird eine Funktion aus dem Modul osgenutzt. Falls es sich um eine Datei handelt, gibtdiese Funktion True zurück, andernfalls False.Nur im ersten Fall ist die if-Bedingung wahr undder Zähler wird erhöht.

    Nach dem Durchlauf der Schleife setzt der nor-male Programmfluss fort – die letzte Zeile des

    Skriptes wird ausgeführt und zeigt die Zahl derDateien im aktuellen Verzeichnis an.

    Es gibt auch eine Möglichkeit, Funktionen ausModulen so zu importieren, dass sie im Skriptdirekt verfügbar sind – mit der Anweisung fromMODUL import FUNKTION/OBJEKT. So könntees im obigen Beispiel etwa heißen:

    from os import listdir

    Allerdings müsste dann auch Zeile 5 ange-passt werden: Da durch den from-Import dielistdir()-Funktion direkt im Namensraum [5]des Skriptes verfügbar ist, müsste die Zeile nunwie folgt lauten:

    files = listdir(".")

    Das sieht auf den ersten Blick sehr bequem aus,führt aber jetzt in Zeile 7 zu Problemen: Da nurdie Funktion listdir importiert wurde, ist ein Zu-griff auf die Funktion os.path.isfile nicht mög-lich. Diese Funktion müsste nun zusätzlich impor-tiert werden.

    Das Importieren von einzelnen Funktionen hatnoch andere Nachteile [7]: So erschwert esdie Verständlichkeit des Quelltextes, da Frem-de nicht wissen, ob mit listdir hier die Funk-tion aus dem os-Modul gemeint ist oder viel-leicht irgendwo im Quelltext noch eine eigenelistdir-Funktion zu finden ist, die etwas ganzanderes macht. In aller Regel sollte daher vonfrom-Importen abgesehen und die zusätzlicheSchreibarbeit in Kauf genommen werden.

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

    http://docs.python.org/tutorial/modules.htmlhttp://docs.p