freiesMagazin Februar 2012

Topthemen dieser Ausgabe

Python – Teil 11: Zwitschern in Schwarz-Weiß Seite 15 Im letzten Teil der Python-Reihe wurde das Modul subprocess vorgestellt. Damit ließen sich auf vielfältige Weise Prozesse erzeugen, Ausgaben lesen und Eingaben senden. Auch Pipes mit Hilfe des subprocess- Moduls wurden besprochen. Nach dem eher theoretischen Teil soll dieses Mal ein praktisches Beispiel be- sprochen werden – ein kleiner Twitter-Client für die Kommandozeile. (weiterlesen)

UML-Programme im Test Seite 22 Für die moderne Software-Entwicklung sind Entwicklungswerkzeuge unerlässlich. Das fängt bei einem normalen Interpreter oder Compiler an und hört bei einer Entwicklungsumgebung nicht auf. Für die objektorientierte Programmierung hat es sich in vielen (wirtschaftlichen) Pro- jekten durchgesetzt, vor der Implementierung ein Software-Modell zu erstellen. Hierfür gibt es eine Abstraktionssprache namens UML. Der Artikel soll einige der unter Linux frei verfügbaren UML-Programme vorstellen. (weiterlesen)

Debian-Installation auf dem QNAP TS-509 Pro Seite 33 Network Attached Storage (NAS) ist ein beliebter Datenspeicher für Privatpersonen wie auch für Unternehmen geworden. Es handelt sich dabei durchaus um vollwertige (Server-) Rech- ner mit eigenem Betriebssystem. Die Geräte von QNAP, die mit Linux laufen, zeichnen sich durch ihre Offenheit aus. Dies soll am Beispiel des QNAP TS-509 Pro gezeigt werden, auf dem Debian installiert wird. (weiterlesen)

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/2012 ISSN 1867-7991 MAGAZIN

Editorial

Rückmeldungen zur EPUB-Version Wenn Sie Interesse haben, melden Sie sich Inhalt Die EPUB-Version, die wir letzten Monat erst- mit Ihrer Idee oder dem fertigen Artikel bei mals von freiesMagazin angeboten haben, . Linux allgemein scheint sehr gut anzukommen. Bei der ersten openSUSE 12.1 S. 3 Version gab es noch einige Fehldarstellungen Neue Setzer und Layouter gesucht Dezember und Januar im Kernelrückblick S. 13 und Probleme, die nun aber bei der zweiten Ver- Wir benötigen auch neue Setzer und Layouter für sion nicht mehr auftreten sollten. freiesMagazin (vorausgesetzt, es gibt neue Auto- Anleitungen ren und Artikel, wovon wir hier aber mal positiv Python – Teil 11: Zwitschern in Schwarz- S. 15 Alle Änderungen, die am EPUB und teilweise denkenderweise ausgehen). Das Magazin wird Weiß auch an der HTML-Ausgabe vorgenommen wur- in LAT X gesetzt, sodass Wissen in dieser Materie PHP-Programmierung – Teil 5: CSS S. 19 den, können in einem extra Artikel „Die Neuerung E und die Beherrschung von pdflatex Vorausset- der EPUB-Ausgabe“ auf Seite 44 nachgelesen zung sind. Software werden. UML-Programme im Test S. 22 Als Setzer kümmert man sich dabei um die Ein- Selenium S. 30 Neue Autoren gesucht haltung unserer internen Satzrichtlinien, damit al- Auch wenn man es der aktuellen Ausgabe viel- le Artikel gleich formatiert sind. Hierfür sind nur Hardware leicht nicht ansieht, ist unser Artikelvorrat fast auf- A geringe LTEX-Kenntnisse vonnöten. Der Layou- Debian auf dem QNAP TS-509 Pro S. 33 gebraucht, um nicht zu sagen am Ende. Es gibt ter versucht dann in der Regel die Artikel anspre- noch eine Handvoll Artikel, die bei Autoren in Pla- chend zu gestalten, sodass Bilder ihren richtigen Community nung sind, aber nichts, womit freiesMagazin das Platz finden und alles stimmig aussieht. Ein Auge Rezension: Android-Apps entwickeln S. 39 Jahr 2012 bestreiten könnte. für gutes Design sollten Sie also mitbringen. Rezension: Spielend C++ lernen S. 41 Wir suchen also händeringend neue Autoren, die Wenn Sie Interesse haben, das Maga- über eines ihrer Lieblingsthemen schreiben wol- zin mitzugestalten, melden Sie sich bei Magazin len. Jeder Artikel ist willkommen, ein Bezug zu . Editorial S. 2 Linux und Open Source sollte aber gegeben Die Neuerung der EPUB-Ausgabe S. 44 sein. In den Autorenrichtlinien auf unserer Web- Und nun wünschen wir Ihnen viel Spaß mit der Veranstaltungen S. 47 seite [1] versuchen wir alle Aspekte darzustellen, neuen Ausgabe. Konventionen S. 47 die beim Schreiben eines Artikels helfen können. Ihre freiesMagazin-Redaktion Impressum S. 48 Wer noch keine Idee hat, kann sich über die Artikelwunschliste [2] Anregungen holen. Aber LINKS selbstverständlich sind auch andere Themen, die [1] http://www.freiesmagazin.de/mitmachen Das Editorial kommentieren dort nicht auftauchen, gerne gesehen. [2] http://www.freiesmagazin.de/artikelwuensche

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/20122 DISTRIBUTION openSUSE 12.1 von Mirko Lindner

n der Version 12.1 will openSuse noch „x.0“-Versionen in der Vergangenheit mehr Auf- Die Basis der Distribution stellen glibc 2.14.1, besser, leichter, stabiler und überhaupt merksamkeit geschenkt als anderen. Da jedoch gcc 4.6 und der X-Server 1.10.4 dar. Ferner flos- I das beste openSUSE sein. Der Herstel- jede neue openSUSE-Version viel Neues enthält, sen GNOME 3.2 und KDE 4.7 in den Lieferum- ler selbst verspricht, mit dem neuesten Pro- verzichten die Entwickler zukünftig auf „x.0“. fang von openSUSE ein. Zur Grundausstattung dukt ein weitgehend universelles System für gehören daneben ALSA 1.0.24.1, Desktop-, Netbook- und Serveranwender zu CUPS 1.5.0, Postfix 2.8.5 und Me- liefern. Der Artikel wirft einen genauen Blick sa 7.11. Bei Grub setzt die Distri- auf die Distribution und testet sie in produkti- bution weiterhin auf die alte Version ven Umgebungen. des Boot-Loaders auf, was unter an- derem dazu führt, dass bei der Aus- Redaktioneller Hinweis: Der Artikel „open- wahl von Btrfs nun eine dedizierte SUSE 12.1“ erschien erstmals bei Pro-Linux [1]. Boot-Partition erstellt werden muss.

Einführung Erweitert man die Quellen um die Mit der aktuellen Version 12.1 von openSUSE allseits bekannten Alternativquellen, erscheint nun erstmals eine Ausgabe der be- so gibt es kaum eine Applikation, die kannten Distribution unter dem Dach des neu- nicht für openSUSE angeboten wird. en SUSE-Eigentümers Attachmate [2]. Über acht Es spielt dabei kaum eine Rolle, ob Monate lang werkelten die Entwickler an der neu- man ein Programm, eine Bibliothek en Version. Begleitet von zahlreichen Alpha- und oder um ein Modul für eine Sprache Beta-Versionen gelang es dem Team, den ehr- sucht, denn openSUSE bietet fast geizigen Plan einzuhalten und openSUSE 12.1 alles auch in den neuesten Versio- pünktlich zum versprochenen Termin auszulie- Das Startbild von openSUSE 12.1. nen an. Eine schier unerschöpfliche fern. Quelle von neuen und aktualisierten Lieferumfang Paketen ist auch der Build-Service des Projektes. Doch was darf der Anwender von dem neuen Die Gemeinschaft rund um die freie Distribution Produkt erwarten? Der Versionssprung von 11.4 liefert auch mit openSUSE 12.1 einen gewohnt Anwender, die sich für eine Downloadversion [3] auf 12.1 überrascht zuerst, war es doch Tradition, großen Umfang an Software. So setzt das Pro- entscheiden, stehen vor der Qual der Wahl, denn die Hauptversionen immer mit der Unterversion dukt in der aktuellen Version auf die im Oktober zur Auswahl stehen wie gewohnt mehrere Va- 0 beginnen zu lassen. Doch dies will das Team veröffentlichte Version 3.1 des Kernels auf, die rianten. So bietet das Team DVD-Medien für mit der aktuellen Version gerade ändern. Der Ein- unter anderem Optimierungen beim Zugriff auf 32- und 64-Bit-Systeme. Darüber hinaus gibt druck einer „Hauptversion“ soll mit der Nomenkla- RAM enthält und gegenüber der letzten Version es auf der Software-Seite noch spezielle Live- tur 12.1 eliminiert werden. So wurde offenbar den zahlreiche Änderungen erfuhr. CD-Versionen mit GNOME oder wahlweise KDE

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/20123 DISTRIBUTION

gesetzt. Alle großen Linux- ne manuelle Installation, Rettungssystem oder Distributionen haben viel Speicher- oder Firmwaretest zur Auswahl an. Entwicklungszeit in die Ver- Darüber hinaus lassen sich bereits beim ersten besserung des Installati- Booten der DVD die Sprache und die zu verwen- onsprozesses gesteckt, so dende Auflösung bestimmen. Fast schon obliga- dass eine Linux-Installation torisch änderte das Team auch in der neuen Ver- kaum Probleme bereiten sion das Aussehen des Boot-Screens. sollte. Fast alle Anbieter konzentrieren sich mittler- Die eigentliche Installation gleicht vom Ablauf her, weile auf die Pflege der von kleineren Ausnahmen abgesehen, der von Tools. So auch openSUSE. openSUSE 11.4. Neu ist unter anderem, dass das Projekt die noch in der Distribution enthal- tenen Novell-Logos vollständig entfernte. Daraus So war es kaum verwun- derlich, dass auch die neue resultierend wurden fast alle Icons sowohl bei openSUSE kaum Proble- der Installation als auch bei der Konfiguration er- setzt. Auch die automatische Partitionierung un- me bei der Installation ver- terlag diversen Änderungen. Die wohl wichtigs- ursachte. Bei der Instal- te stellt die prominente Unterstützung von Btrfs lation auf einem Server, dar. Zwar setzt auch openSUSE in der aktuel- Desktop, einer virtuellen Maschine oder Laptop wur- len Version auf ext4, doch bietet das Produkt Die Installation des Systems erfolgt weitgehend automatisch. bereits bei der Konfiguration der automatischen de die komplette Hardware Partitionierung die Möglichkeit an, auf Btrfs als zum Download. Diese lassen sich entweder einwandfrei erkannt und sinnvoll konfiguriert. Es Standardsystem umzuschwenken. Neu ist auch, von einem Medium wie CD oder einem USB- sollte allerdings erwähnt werden, dass die Tests dass bei der Auswahl des designierten Standard- Stick starten oder auf die Festplatte installieren. keinesfalls eine Referenz darstellen und lediglich dateisystems die Distribution Btrfs nicht als expe- Darüber hinaus stehen Anwendern Netzwerk- einen Ausschnitt wiedergeben – je nach Hard- Installationsmedien zur Auswahl. Alternativ ste- ware und Peripherie kann sich die Installation na- rimentell bezeichnet. Zudem wurde die ehemals etwas versteckte Option, wonach für das Home- hen auch zahlreiche Derivate der Distribution türlich unterschiedlich verhalten. Hier soll der Ar- Verzeichnis eine eigene Partition genutzt werden zum Bezug bereit, die mittels Suse Studio er- tikel sicherlich keinen Anspruch auf Vollständig- soll, ebenfalls auf die Startseite der Partitionie- stellt wurden. keit erheben. rung verschoben. Im Expertenmodus können zu- Funktionell gesehen unterlag die Auswahl der dem nun tmpfs-Volumes eingehängt werden. Installation möglichen Installationsmethoden keinerlei Ände- War die Installation einer Linux-Distribution an- rung. So bietet openSUSE immer noch eine au- Bereits mit openSUSE kehrte die Distribution zu fänglich etwas für Spezialisten, so hat Linux dies- tomatische Installation wahlweise mit deaktivier- ihren Wurzeln zurück und wählte KDE als Stan- bezüglich in den letzten Jahren neue Standards tem ACPI oder in einer sicheren Umgebung, ei- dard aus. Auch die neue Version macht hier keine

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/20124 DISTRIBUTION

Arten der Partitionierung: Automatisch, ...... halbautomatisch ...... und manuell.

Ausnahme. So ist auch bei openSUSE 12.1 KDE Tool gewohnt souverän. Zudem ist es möglich, Physical Addressing Extensions (PAE) oder aber als Standarddesktop bereits ausgewählt. Wer auf dem Automatismus unter die Arme zu greifen einfach nur für Desktop-Anwender zur Auswahl eine andere Umgebung aufsetzen möchte, kann und viele der Komponenten manuell zu konfigu- an. Zu den Neuerungen des Kernels gehören un- dies mit nur einem Klick machen. Tiefgreifende rieren. Hier hat die Distribution eine gute Refe- ter anderem Optimierungen, die die Geschwin- Änderungen an der Paketauswahl können An- renz geschaffen, die sowohl Anfänger als auch digkeit von KVM und Xen verbessern. Zusam- wender weiterhin im Paketmanager durchführen. Profis zufriedenstellen wird. men mit neuen Versionen von Mesa und X.org Auch hier unterlag der Vorgang gegenüber dem bietet der Kernel auch 3-D-Beschleunigung für Vorgänger keinen signifikanten Änderungen und Der Start mehrere aktuelle GeForce-Grafikchips. Neu sind gestaltet sich genauso anfängerfreundlich wie eh Der Start der Distribution gestaltet sich wenig zudem Verbesserungen an Treibern und Optimie- und je, ohne allerdings den Profi einzuschrän- spektakulär. Das Produkt verzichtet nun in der rungen an Btrfs. ken. So ist es wie schon in openSUSE 11.4 aktuellen Version komplett auf einen Ladebal- Die wohl größte Neuerung der Basisarchitektur möglich, anhand vordefinierter Paketgruppen ei- ken. Die einzige Animation während des Start- von openSUSE stellt der Schwenk auf Systemd ne Auswahl zu treffen. Wem die Auswahl zu diffus vorgangs stellt ein sich bewegendes Auge des dar. Das neue System will zahlreiche Nachteile ist, der kann immer noch in Detailansicht wech- openSUSE-Chamäleons dar. der alten Lösung SysVInit beseitigen und ermög- seln und die einzelnen Pakete manuell aussu- Die Basis der neuen Version von openSUSE bil- licht unter anderem das Hochfahren des Sys- chen. det der Kernel 3.1, der wie gewohnt bei open- tems ohne Ausführung von Shell-Skripten. Be- Die eigentliche Konfiguration des Systems über- SUSE gleich in mehreren Varianten vorhanden reits bei der Vorstellung des neuen Systems ver- nimmt das Verwaltungswerkzeug Yast. Die Erken- ist. So bietet die Distribution beispielsweise spe- sprach der Entwickler, dass die Nutzung von Sys- nung der vorhandenen Geräte beherrschte das zielle Kernel für Xen-Umgebungen, Systeme mit temd zu einem stark parallelisierten und damit

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/20125 DISTRIBUTION

schleunigt. Auf allen unseren Testsystemen konn- ten teils massive Geschwindigkeitsvorteile fest- gestellt werden. So betrug beispielsweise der Start in einer virtuellen Maschine mit Systemd knapp 15 Sekunden, während dasselbe System mit SysVInit das Doppelte zum Start brauchte. Zum Vergleich: openSUSE 11.4 brauchte zum Start auf dem selben System 25 Sekunden. Wer dennoch das alte System zum Starten verwen- den möchte, kann dies durch die Entfernung des Pakets systemd-sysvinit erreichen. Alternativ lassen sich die Unterschiede auch testen, indem in Grub die Taste F5 gedrückt und das jeweilige System auswählt wird.

Unverändert bleibt auch in der aktuellen Version von openSUSE der Bootloader. Hier setzt das Team weiterhin auf den klassischen Grub 1. Die- ser wurde zwar um diverse Funktionen erwei- tert, hat aber auch diverse Nachteile. Unter an- derem beherrscht die alte Version 0.97 kein Boo- ten von einer Btrfs-Partition. Anwender, die auf diese Funktion nicht verzichten wollen, finden al- lerdings im Lieferumfang der Distribution auch die neue Version 1.99, die offiziell keinen Alpha- Status mehr trägt und unter anderem die obi- gen Einschränkungen korrigiert. Der Umstieg auf Je nach Art des Systems unterscheiden sich auch die Ausgaben der Daemonen: oben Systemd, Grub 2 bereitete im Test auch keine nennenswer- unten SysVInit. te Probleme. schnelleren Startvorgang führen wird, sowie das doch aufgrund einiger Fehler entschied sich das Starten und Stoppen von Diensten zuverlässiger Team, die Umstellung des Bootprozesses zu ver- Btrfs und Snapper vonstatten gehen soll. schieben. Mit der aktuellen Version der Distribu- Btrfs ist seit einiger Zeit als produktiv einsetzbar tion steht nun den Anwendern das neue Sys- deklariert und wird als der kommende Standard Ursprünglich war der Einsatz von Systemd be- tem bereit, und es überzeugt. Der Start- und unter Linux gehandelt. Bereits seit der Kernelver- reits für Version 11.4 von openSUSE geplant, Stoppvorgang von openSUSE ist merklich be- sion 2.6.31 finden dem entsprechend keine Än-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/20126 DISTRIBUTION derungen der Disk-Struktur statt, die die Kompa- sieren könnte, sie ihre Daten unter Umständen Snapshot-Versionen dargestellt und notfalls wie- tibilität beeinträchtigen könnten. Gegenüber tra- nicht mehr retten können. der auf der Dateisystemebene wieder rückgängig ditionelleren Dateisystemen bietet Btrfs zusätz- gemacht werden. Was Btrfs allerdings jetzt schon zu leisten ver- liche Möglichkeiten, wie Unterstützung von Un- mag, stellt openSUSE auf eine beeindruckende Snapshots des Systems erstellt openSUSE zeit- tervolumes, Schnappschüsse, Kompression und Art und Weise vor. So haben die Entwickler ei- gesteuert mittels Cron oder durch die Nutzung ei- RAID. Die Neuentwicklung gilt deshalb als eines gens für das Dateisystem ein Tool geschrieben, nes ebenfalls neuen Plug-ins für Zypper. So führt der Dateisysteme der Zukunft und will ZFS von das einen Zugriff auf die Snapshot-Funktionen jede Aktualisierung des Systems, in die auch Oracle mindestens ebenbürtig sein. von Btrfs bietet. Snapper, so der Name des Tools, Zypper involviert war, automatisch zu einem bietet zahlreiche Funktionen, die für die Erstel- Snapshot. Alternativ können Snapshots auch lung, Manipulation oder Löschung von Snap- manuell mit dem Aufruf von snapper create in- shots genutzt werden können. Über das ent- itiiert werden. Leider unterstützt das Yast-Modul sprechende Yast-Modul „yast2-snapper“ können noch nicht die manuelle Erstellung von Snap- die Unterschiede zwischen zwei verschiedenen shots. Ferner ist es auch noch nicht möglich, einzelne Snapshots in Yast zu löschen. Systemtools Das zentrale Tool für al- le möglichen Einstellun- gen ist immer noch Yast. Egal, ob es um die fortge- Snapper: Yast-Modul für die Snapshotfunktionen schrittene Installation von von Btrfs. Software geht, die Ein- richtung von Hardware Der Nachteil des Systems aus heutiger Sicht oder die Systemverwal- stellt die fehlene Unterstützung durch Tools dar. tung, an Yast führt kein Vor allem der nicht ausreichend umgesetzte Weg vorbei. Das Tool wur- Check des Dateisystems mittels eines eigenen de gegenüber der letz- Checkers (btrfsck) gilt für die meisten Distributio- ten Version leicht im Aus- nen als Stopper bei einem Einsatz als Standard- sehen verändert. So er- system. Anwender, die Btrfs in produktiven Sys- scheinen alle Buttons der temen einsetzen wollen, sollten sich deshalb im Helfer in einem Grünton, Klaren sein, dass im Falle eines Dateisystemfeh- genauso wie alle Listen- lers, der aus unterschiedlichsten Gründen pas- Die Paketauswahl unter Yast (Qt-Variante). markierungen.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/20127 DISTRIBUTION

Das von Novell gekaufte und protegierte seine Daseinsberechtigung. Die im Zuge des App Armor wurde aus der Standardinstal- Google Summer of Code entstandene Neuent- lation entfernt, findet sich allerdings immer wicklung bietet nun viele der bekannten Funktio- noch auf dem Installationsmedium als Zu- nen von Sax an. Sie lässt sich sowohl in der grafi- satzinstallation. Dementsprechend findet schen Oberfläche, wie aber auch mittels Ncurses sich auch unter Yast kein Konfigurations- in der Konsole betreiben. Zu den Funktionen des punkt mehr. Darüber hinaus erfuhr Yast neuen Tools gehören unter anderem die Konfigu- zahlreiche kleinere Korrekturen und An- ration des Monitors, der Tastatur, der Maus und passungen. Auch WebYaST wurde weiter des Touchpads, auch wenn eine Notwendigkeit ausgebaut. Es beinhaltet mittlerweile mehr der Konfiguration nicht wirklich vorhanden sein Module und wurde in der Bedienung ver- dürfte. einfacht. Ab in die Cloud Eine Reihe von Änderungen erfuhr auch Man mag zur Cloud stehen, wie man will, doch ist der Paketmanager zypper. Unter anderem die Einrichtung im Jahre 2011 dank sozialer Netz- Das Verwaltungswerkzeug in der Ausführung für überarbeiteten die Entwickler die Aktuali- werke und diverser Dienste in aller Munde. Mit KDE/Qt, . . . sierungsprozedur des Kernels. So bietet ownCloud binden die openSUSE-Entwickler nun das Tool die Möglichkeit, bei einem Kernel- ein alternatives System ein, das vor allem an si- Update die alte Version erst nach einem cherheitsbewusste Nutzer gerichtet ist. Gepaart erfolgreichen Neustart des Systems zu lö- mit der Mirall-Desktop-Integration verspricht das schen. Als Grund nennen die Programmie- Team eine private Cloud, die vollständig unter der rer, dass ein Update des Unterbaus immer Kontrolle des Anwenders liegt. diverse Risiken mit sich birgt und man da- durch dem Anwender die Möglichkeit ge- Doch hat vor allem ownCloud zwei Nachteile. Zu- ben will, notfalls auf einen funktionsfähigen erst dürfte die Lösung vor allem für unbedarfte Kernel zurückgreifen zu können. Um die Anwender recht schwer einzurichten sein. Zum Funktion allerdings nutzen zu können, be- anderen integriert sich der Dienst nicht wirklich darf es im Moment noch eines manuellen gut in den eigenen Desktop. Wer Daten auch offli- Eingriffs.Eine Beschreibung der Prozedur ne auf seinem System haben möchte, muss dies liefert eine Anleitung auf der Seite des Pro- manuell durchführen. Eine Lösung für das Dilem- jektes [4]. ma liegt laut Aussagen der Entwickler in der Kom- bination mit ownCloud und Mirall. Mit Sax3 feiert nun ein alter Bekannter eine . . . und GNOME/Gtk+ vermag viele Aufgaben Wiedergeburt. Mit der Umstellung der Kon- Die Anwendung installiert ownCloud entweder automatisch zu erledigen. figuration des X-Servers verlor auch Sax2 lokal auf dem System oder auf einem entfernten

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/20128 DISTRIBUTION

schreckte sogar nicht da- allerdings weiterhin KDE SC, diesmal in der Ver- vor zurück, alle Daten sion 4.7.2. Zu den Neuerungen in KDE SC 4.7 der Cloud zu löschen, als gehören unter anderem Verbesserungen an be- ein Synchronisierungs- reits bestehenden Komponenten sowie weitere versuch eines Ordners Anpassungen. So wurde der Dateimanager Dol- scheiterte. Erschwerend phin in der neuen Version an mehreren Stellen kommt auch noch hinzu, überarbeitet. Zahlreiche Neuerungen hat der vir- dass Mirall den lokalen tuelle Globus Marble erfahren. Die wohl wich- Ordner als Master be- tigste Neuerung stellt dabei die Möglichkeit der trachtet und bei der Ver- Offline-Routenplanung dar, was Nutzern mit mo- wendung von mehr als bilen Geräten unterwegs zugute kommen soll. einem Gerät Probleme Die bereits in KDE 4.6 erneuerte PIM-Suite Kon- faktisch vorprogrammiert tact wurde auch in KDE 4.7 weiter ausgebaut und sind. setzt nun vollständig auf das Akonadi-Framework auf. Der Dateibetrachter kann dagegen Doch auch die Installa- Verzeichnisse in Form eines Comics anzeigen. tion einer neuen Cloud Zudem wurde Kate stabilisiert. Entwickler kön- könnte ein wenig mehr nen sich darüber hinaus auf eine bessere Un- Politur vertragen. So terstützung von Python in KDevelop freuen. Der installiert die Applikati- Desktop der KDE-Umgebung gestaltet sich auf- ownCloud und das Synchronisationswerkzeug Mirall überzeugen (noch) on beispielsweise den geräumt und übersichtlich und unterscheidet sich nicht. Dienst auch, wenn kein augenscheinlich – abgesehen vom Hintergrund- Server. Ferner zeigt sich das Programm für die Webserver eingerichtet wurde, ohne dass der bild – kaum von openSUSE 11.4. Doch durch Kommunikation zwischen einer Cloud und dem Anwender über diesen Zustand informiert wur- den Einsatz des KDE-Plasma-Arbeitsplatzes ist Desktop zuständig. Lokal geänderte Daten wer- de. Außerdem missfiel, dass alle Passwörter im es dem Anwender mit wenigen Klicks möglich, den dementsprechend aus freigegebenen Ord- Klartext gespeichert wurden und die Ausgabe den kompletten Desktop zu verändern. Dazu ge- nern automatisch in die Cloud übertragen oder auf der Konsole so gesprächig war, diese auch hört lediglich ein Klick auf den neben dem Start- aus der Cloud heruntergeladen. in der Log-Ausgabe anzuzeigen. In der Summe menü angeordneten Manager, um von der klassi- kann deshalb die Mirall-Desktop-Integration nicht schen Desktop-Ansicht auf eine Bild- oder Icon- Das Zusammenspiel zwischen ownCloud und wirklich überzeugen. basierte Ansicht zu wechseln. Mirall funktionierte in der Praxis allerdings eher holprig. Abgesehen von diversen fehlen- Oberflächen: KDE Mit Oyranos CMS bietet openSUSE etwas für den Funktionen in dem Desktop-Client bereite- Wie üblich stehen auch mit openSUSE 12.1 den Grafiker. Hinter der Anwendung verbirgt sich ei- te Mirall bei der Nutzung erhebliche Probleme Anwendern zahlreiche Umgebungen zur Aus- ne Farbverwaltung für die KDE-Oberfläche, die und wirkte nicht gerade fertig. Die Applikation wahl. Der Standarddesktop der Distribution bleibt über beachtliches Potential verfügt [5]. Denn

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/20129 DISTRIBUTION

. . . Icon-basierte Ansicht der KDE-Umgebung.

Eine andere große neue Änderung in KDE ist der Ersatz von KPackageKit durch Apper. Bei den Test hinterließ die Applikation einen gemischten Eindruck. Während die Bedienung der Anwen- dung durchaus gelungen ist, wurde bei der Sta- bilität der letzte Schliff etwas vermisst. So stürz- te Apper etliche Male auf verschiedenen Sys- temen ab. Als Standardbrowser fungiert auch in der KDE-Umgebung der Firefox 7.0.1. Alter- nativ ist es allerdings auch möglich, den KDE- eigenen Konqueror zu nutzen, der dank der Ein- Zwei Welten: Desktop- und . . . bindung von WebKit nun auch mit HTML5-Audio und -Video klarkommt. Oyranos arbeitet nicht wie colord als Daemon so benötigt man dazu auch den Composition- im Hintergrund, sondern mit den Rechten des und Fenstermanager und das Plug-in CompICC. Wer weiter in den Paketgruppen stöbert, findet Benutzers. Für Farbverwaltungseinstellungen, Eingesetzte Profile können mühelos direkt von in der Rubrik „KDE“ nun auch wieder Pakete für Profilsuche und Profilinstallation benötigt die Ap- KDE aus ausgewählt werden. Dazu steht im die alte 3er-Version der Desktop-Umgebung. Da- plikation kein Compiz. Will man allerdings mit ei- Kontrollzentrum von KDE die Anwendung Kolor- bei handelt es sich allerdings nicht um die aktuell nem komplett farbkorrigiertem Desktop arbeiten, Manager zur Auswahl. vom Trinity-Projekt gepflegte Variante, sondern

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/2012 10 DISTRIBUTION um die letzte stabile Version 3.5.10, die um diver- Oberflächen: GNOME hen von einem veränderten Hintergrund und der se Patches aus verschiedenen Projekten, darun- GNOME wird in openSUSE in der Version 3.2.1 Beigabe der eigenen Anwendungen hat sich we- ter Chakra, Alt Linux und Trinity erweitert wurde. ausgeliefert. Der Schwerpunkt der aktuellen Ver- nig geändert. Was allerdings auch auffällt, ist die Anwender können so unter der jeweiligen Version sion der Umgebung liegt bei einer besseren In- eingebundene „Alternate Menu“-Extension, die der Umgebung die dafür existierende Applikation tegration von Online-Diensten. Zudem wurden dem Menü neben einem Suspend- auch einen starten. Bei Kollisionen werden die unterschied- zahlreiche allgemeine Verbesserungen integriert. Shutdown-Eintrag spendiert. Ebenfalls enthalten lichen Varianten durch den Zusatz des Gegen- So ist es nun leichter, die Größe von Fenstern in openSUSE ist das GNOME Tweak Tool, das parts gekennzeichnet. So wird beispielsweise un- zu ändern, weil der Bereich dafür vergrößert wur- die Umgebung um weitere Konfigurationsmög- ter KDE4 die dafür entwickelte Version von Ama- de. Die Systemeinstellungen enthalten nun Ver- lichkeiten erweitert. rok unter „Amarok“, und die für KDE3 als „Ama- knüpfungen mit ähnlichen Einstellungen an an- rok KDE3“ ausgewiesen. deren Orten. Benachrichtigungen in der rechten Oberflächen: Weitere Desktops und unteren Ecke enthalten nun einen Zähler. Zu- Anwendungen Die neue Tablet-Oberfläche Plasma Active ist dem haben zwei neue Anwendungen in die Um- LXDE 0.5 und Xfce 4.8 stellen weitere Umgebun- kein fester Bestandteil der neuen openSUSE. gebung Einzug gehalten – eine zur zentralen gen dar, die bereits bei der Installation aus der Laut Aussage der Entwickler soll das erst in ei- Verwaltung von Online-Konten und eine zur Ver- Liste der Desktops ausgewählt werden können. ner späteren Version der Distribution passieren. waltung von Kontakten. Nach Kontakten kann Genauso wie GNOME und KDE präsentieren Bis dahin können Tablet-Anwender die Neuerung auch im Übersichtsmodus gesucht werden. Eine sich auch die zwei Alternativen aufgeräumt und bei Bedarf nachrüsten. weitere Neuerung ist die Dokumentenverwal- an die Distribution angepasst. Beide Umgebun- tung, um Dokumente zu suchen, zu organi- gen richten sich dabei an Anwender, die schlan- sieren und zu betrachten. Der Webbrowser kere Alternativen zu den Platzhirschen brauchen. Epiphany kann nun ähnlich wie Firefox ein- Selbstredend installiert openSUSE bei der Aus- zelne Webseiten als Anwendung ausführen wahl der leichtgewichtigen Umgebungen die spe- und auch in der Anwendungsauswahl hinter- ziell an die Desktops angepassten Applikationen, legen. Hier setzt die neue openSUSE aller- gepaart mit eigenen Tools. dings – wie die KDE-Umgebung – auf Fire- Weiterhin mit von der Partie sind in openSUSE fox. Zudem kann die Dateiverwaltung unter die wichtigsten Webbrowser. Als Browser der GNOME nun eine schnelle Vorschau von Fil- Wahl dient dabei Mozillas Firefox 7. Zusätzlich men, Musik, Bildern und anderen Dateien an- enthalten sind Chromium 17, Opera 11.52, Re- zeigen. Die Vorschau wird mit der Leertaste konq 0.8 und die beiden Browser der großen Um- ein- bzw. ausgeblendet. gebungen, Konqueror und Epiphany. In Sachen Bereits beim ersten Blick auf die ausgeliefer- Office setzt openSUSE weiterhin auf Libreoffice, te GNOME-Version lässt sich sagen, dass das nun in der Version 3.4.3 enthalten ist. Eben- Wieder mit von der Partie: KDE3–Konqueror kontra die Entwickler von openSUSE die Umge- falls in der Distribution enthalten: Scribus 1.4 und Dolphin. bung weitgehend unberührt ließen. Abgese- eine Betaversion von 2.4.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/2012 11 DISTRIBUTION

Fazit ten interessant sein dürfte. Es ist kein Geheim- Die Weiterentwicklung von openSUSE 11.4 nis, dass openSUSE eine einsteigerfreundliche enttäuscht nicht. Die Integration von Btrfs Distribution ist. Diesem Anspruch wird auch das und Systemd machen Lust auf mehr. Be- aktuelle Produkt gerecht. Die sehr gute Hard- sonders die Verwaltung mittels Snapper und wareerkennung und die schier unerschöpfliche die Yast-Integration können überzeugen und Auswahl an Software, gepaart mit zahlreichen machen neugierig auf die kommenden Funk- Anwender-Repositorien, erlauben es jedem Nut- tionen der Distribution. zer, openSUSE 12.1 nach seinem Gusto einzu- richten. Apropos Yast: Auch wenn das Tool in der Vergangenheit eine Menge an Prügel einste- LINKS cken musste und dem Konfigurationswerk- [1] http://www.pro-linux.de/artikel/2/1543/opensuse- zeug der Ruf eines „Zerstörers von eige- 121.html nen Änderungen“ anhaftet, gehört es mit Ab- [2] http://www.pro-linux.de/news/1/16726/novell- stand zu den wichtigsten Werkzeugen un- aktionaere-genehmigen-uebernahme.html ter openSUSE, denn kaum ein Bereich kann [3] http://software.opensuse.org/121/en GNOME unter openSUSE 12.1. nicht mittels Yast eingerichtet werden. Wer [4] http://lizards.opensuse.org/2011/07/14/improved- Bei den Kommunikationsanwendungen setzt seine Konfiguration vollständig in der Konsole er- kernel-package-retention-in-12-1/ openSUSE 12.1 auf die KDE-basierte Group- ledigt, wird Yast sicherlich nicht sonderlich viel [5] http://www.pro-linux.de/kurztipps/2/1528/oyranos- ware-Suite Kontact, die nun auf Akonadi auf- abgewinnen können. Anfänger und Nutzer, die farben-direkt-vom-himmel.html setzt. Ebenfalls enthalten sind Evolution 3.2.1 einfach nur mit Linux arbeiten wollen, werden da- und Thunderbird 7.0.1. Für die Wiederga- gegen in dem Werkzeug einen mächtigen Ver- be von Multimediainhalten sind unter ande- bündeten finden, der (fast) alle Wünsche erfüllen Autoreninformation rem Banshee 2.2, Amarok 2.4.3 und Clemen- kann. Mirko Lindner (Webseite) befasst tine 0.7.3 enthalten. Den Grafikbereich decken Sowohl GNOME als auch KDE machen einen fri- DigiKam 2.2, Inkscape 0.48.2, Blender, Shot- sich seit 1990 mit Unix. Seit 1998 ist schen und aufgeräumten Eindruck. Ob die her- er aktiv in die Entwicklung des Kernels well 0.11.5, F-spot 0.8.2-14, GIMP 2.6.11 sowie vorgehobene Erwähnung der ownClud und Mirall Betaversionen von Krita und Karbon 2.4 ab. eingebunden und verantwortlich für richtig war, muss jeder für sich entscheiden. Mei- diverse Treiber und Subsysteme für ner Meinung nach hätte das Team noch warten Eine Besonderheit von openSUSE 12.1 stellt Linux und andere freie Plattformen. müssen. Insgesamt macht die Integration einen nun auch die Einbindung von Googles neuer Daneben ist er einer der Betreiber unfertigen Eindruck, was sowohl die Funktionali- Programmiersprache Go dar. Neu in openSUSE von Pro-Linux.de. tät als auch die Stabilität anbetrifft. ist auch das Shorewall-Konfigurationswerkzeug. Im Bereich Virtualisierung setzt openSUSE auf Zusammenfassend ist openSUSE 12.1 ein ge- Xen 4.1, KVM und VirtualBox 4.1. lungenes Update, das für alle Anwenderschich- Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/2012 12 KERNEL

Dezember und Januar im Kernelrückblick von Mathias Menzer

asis aller Distributionen ist der Linux- gleich zum Vorgänger hat 3.2 mehr zu bieten. legt und ermöglichen damit über eine neue Op- Kernel, der fortwährend weiterent- Dies ist jedoch eher den gestörten Entwicklungs- tion, diese wieder herzustellen, selbst wenn das B wickelt wird. Welche Geräte in einem zeitraum von 3.1 geschuldet, als man noch mit Dateisystem die Änderungshistorie nicht mehr le- halben Jahr unterstützt werden und welche den Nachwehen des Einbruchs in die Kernel.org- sen kann. Im Falle von Fehlern werden „Back Funktionen neu hinzukommen, erfährt man, Server leben musste. References“ (Rückverweise) auf Dateien oder B- wenn man den aktuellen Entwickler-Kernel im Trees [6] nun automatisch verfolgt und die Feh- Auge behält. Größere Neuerungen gab es bei den Dateisys- lermeldung um entsprechende Informationen er- temen. Ext4 ermöglicht nun Blockgrößen von bis gänzt. Sie wird damit aussagekräftiger als bisher, Linux 3.2 zu 1 MB, bislang lag die Grenze hier bei 4 KB. wo lediglich die Blocknummer genannt wurde: Hatte Torvalds bei Veröffentlichung von 3.2-rc4 Dies ist insbesondere dort von Vorteil, wo vie- noch auf eine Beruhigung der Entwicklung ge- le große Dateien abgelegt werden, da nun we- btrfs: checksum error at logical y 5085110272 on dev /dev/sde, sector hofft, wurden mit -rc5 [1] alle diesbezüglichen Illu- niger Blöcke für die gleiche Datei erforderlich y 2474832, root 5, inode 32583, sionen fortgeblasen. Es waren jedoch keine welt- sind. Dadurch sinkt auch die Zeit, die für das y Zuweisen der Blöcke erforderlich ist, erheblich offset 0, length 4096, links 1 (y bewegenden Änderungen darunter; ein Treiber, path: default/kernel-0/Makefile) der vor Jahren bereits ersetzt worden war, wur- und das Thema Fragmentierung rückt als Pro- de entfernt und andere erfuhren Ergänzungen, blem mehr in den Hintergrund. Dagegen stellt die darunter auch nouveau. Die Abhängigkeiten der neue Blockgröße einen Nachteil dar, wenn in ei- Es können nun auch mit Werkzeugen, die im Linux-eigenen Firewall Netfilter [2] zu anderen nem Dateisystem mit sehr vielen kleinen Dateien Kontext des Anwenders laufen, Informationen di- Komponenten konnte reduziert werden und die gearbeitet wird, da diese dann mindestens einen rekt aus dem Dateisystem gelesen werden, um Routing-Funktion des Netzwerkprotokolls IPv4 Block, also 1 MB, belegen. Neben der mangeln- zum Beispiel zu erfahren, welche Datei einem be- wurden optimiert. Der -rc6 blieb dann jedoch den Kompatibilität zu älteren Kernel-Versionen stimmten Inode [7] zugeordnet ist. recht übersichtlich [3]. Ein alter Treiber für die stellt dies den Grund dar, dass weiterhin 4 KB Diskettenlaufwerke alter PowerMacs erfuhr um- die Standard-Blockgröße beim Erzeugen neuer Aufgabe des Prozess-Schedulers ist das Auftei- fangreiche Korrekturen. Für die Intel-Grafikchip- Ext4-Partitionen ist. len der zur Verfügung stehenden Rechenzeit des Generationen Ivybridge und Sandybridge ist nun Prozessors auf die wartenden Prozesse des Sys- RC6 aktiv, wodurch die Energieaufnahme verrin- Auch Btrfs konnte sich seinen Teil an Neuerun- tems. In der Regel nimmt sich jeder Prozess so gert werden kann. Statt eines Weihnachtskernels gen sichern. Mit „Scrub read-ahead“ wird das viel dieser Rechenzeit wie er bekommen kann – gab es dann noch den -rc7 [4], dessen bemer- Überprüfen aller Prüfsummen des Systems, ge- ein Umstand, der in manchen Situationen uner- kenswerteste Änderung Korrekturen am QLogic- nannt Scrubbing, beschleunigt, was sich positiv wünscht ist und den ein Google-Entwickler nun iSCSI-Treiber qlaxxx waren. auf den Datendurchsatz auswirkt. Im Superblock, ändert. „CPU Bandwidth Control“ erlaubt es, eine einem Speicher für wichtige Informationen über Maximalmenge an Rechenzeit festzulegen, die Das Release von Linux 3.2 ließ dann noch bis das Dateisystem, werden nun die letzten Ände- eine Gruppe von Prozessen innerhalb einer be- in den Januar hinein auf sich warten [5]. Im Ver- rungen des Roots der Dateisystembäume abge- stimmten Zeitspanne nutzen kann. Wird dieser

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/2012 13 KERNEL

Wert überschritten, bremst der Scheduler die ent- chert werden kann, ohne negative Auswirkungen rem der „Open vSwitch“ hinzu, ein Virtueller Netz- sprechenden Prozesse aus. auf laufende Prozesse zu verursachen, wurde werkswitch, der vom Virtualisierer Xen bereits neu geschrieben, sodass das System auch wäh- genutzt wurde und nun Eingang in den Linux- Ebenfalls aus dem Hause Google stammt die rend umfangreicher Schreibvorgänge zuverlässi- Kernel fand. Auch die Linux-Firewall Netfilter wur- Überarbeitung eines Teils des TCP-Stacks. Die- ger reagiert. de überarbeitet. Mit C6X kam eine weitere Archi- ser versucht normalerweise eine möglichst hohe tektur für Signalprozessoren hinzu, diesmal aus Übertragungsrate zu erreichen, indem die Sen- „Cross Memory Attach“ erlaubt Prozessen, auf dem Hause Texas Instruments. derate der Netzwerkpakete stetig erhöht wird den Adressbereich eines anderen Prozesses zu- solange alles gut geht und bei Paketverlusten greifen zu können. Was normalerweise als Pro- LINKS wieder reduziert wird. Gemessen wird dies am blem angesehen würde, ist dort sinnvoll, wo Pro- „Congestion Window“, der Anzahl der Pakete, zesse auf eine Kommunikation mittels MPI [8] un- [1] https://lkml.org/lkml/2011/12/9/419 die gleichzeitig auf „auf der Strecke“ sind, das tereinander angewiesen sind. Diese Methode er- [2] https://de.wikipedia.org/wiki/Netfilter heißt, die gesendet wurden und für die noch kei- spart den Prozessen die Verwendung eines ge- [3] https://lkml.org/lkml/2011/12/16/499 ne Empfangsbestätigung vorliegt. Unter ungüns- meinsamen Speicherbereichs, über den bislang [4] https://lkml.org/lkml/2011/12/24/7 tigen Umständen kann die Übertragungsrate je- kommuniziert wurde. doch stark zurückgehen und kommt dann nur [5] https://lkml.org/lkml/2012/1/4/395 langsam wieder auf höhere Werte. Dem wird Einen umfangreichen Überblick über alle Ände- [6] https://de.wikipedia.org/wiki/B-Baum nun durch einen Mechanismus entgegengewirkt, rungen liefert auch hier wieder die Seite Kernel [7] https://de.wikipedia.org/wiki/Inode der die maximal mögliche Bandbreite aggressi- Newbies [9]. [8] https://de.wikipedia.org/wiki/Message_Passing_ ver zu erreichen und zu halten versucht, indem Interface bei Paketverlust die Senderate nicht ganz so ra- Linux 3.3 [9] http://kernelnewbies.org/Linux_3.2 dikal reduziert wird. Bei fehlerfreier Kommunika- Zwei Wochen lang hielt Torvalds das Merge Win- [10] https://lkml.org/lkml/2012/1/19/418 tion bringt das System die Senderate dagegen dow offen, bevor er Mitte Januar dann die erste sofort wieder auf den vorausberechneten maxi- Vorabversion von Linux 3.3 zur Verfügung stell- mal erreichbaren Wert, anstatt sie nur langsam te [10]. Die reine Zahl der Commits war etwas ge- ansteigen zu lassen. ringer als bei 3.2-rc1, jedoch wurden noch nicht Autoreninformation alle Anfragen bezüglich der Aufnahme von Än- Mathias Menzer (Webseite) hält Eine Verbesserung der Leistung soll die Überar- derungen in 3.3 bearbeitet. Anfragen, die jedoch einen Blick auf die Entwicklung des beitung der „Writeback“-Logik bringen. Um die nach Ende des Merge Window eintreffen, erteilt Linux-Kernels und erfährt frühzeitig Zugriffszeiten auf das Dateisystem zu verbes- Torvalds eine klare Absage – sie müssen sich bis Details über interessante Funktionen. sern, werden Änderungen nicht immer direkt Linux 3.4 gedulden. auf den Datenträger geschrieben, sondern im Arbeitsspeicher zwischengepuffert. Der Algorith- Den Großteil der Änderungen findet man wie- mus, um festzulegen, wie viel zwischengespei- der im Bereich der Treiber. Hier kam unter ande- Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/2012 14 PROGRAMMIERUNG

Python – Teil 11: Zwitschern in Schwarz-Weiß von Daniel Nögel

m letzten Teil dieser Reihe (siehe mehrere Python-Module, welche die lästige Kom- dige Skript gibt es aufgrund der Größe nur zum freiesMagazin 12/2011 [1]) wurde das Mo- munikation mit Twitter weg-abstrahieren und be- Download: tw.py. Ziel ist es, dass der Leser den I dul subprocess vorgestellt. Damit ließen quemen Zugriff auf die Schnittstelle erlauben. In Funktionsumfang aufbauend auf diesem Beispiel sich auf vielfältige Weise Prozesse erzeu- diesem Beispiel soll das Modul tweepy [4] vor- nach Belieben erweitern kann. gen, Ausgaben lesen und Eingaben senden. gestellt werden. Dadurch hat der Entwickler Zu- Auch Pipes mit Hilfe des subprocess-Moduls griff auf die Twitter-API, ohne sich tatsächlich mit In den Zeilen 20-25 wird zunächst eine sehr ein- wurden besprochen. Nach dem eher theore- HTTP-Requests und ähnlichem beschäftigen zu fache Einstellungsdatei umgesetzt. Verschiede- tischen Teil soll hier erneut ein praktisches müssen. Außerdem erlaubt es tweepy auch, auf ne Einstellungen und Daten werden dazu ein- Beispiel besprochen werden – ein kleiner den freien Twitter-Konkurrenten Identi.ca [5] zu- fach in einem verschachtelten Dictionary abge- Twitter-Client für die Kommandozeile. zugreifen. Dessen API ist mit der von Twitter kom- legt und mit JSON [12] in einer Zeichenkette ab- patibel [6], in tweepy muss dazu lediglich ein Auf- gebildet. Diese Zeichenkette kann nun schlicht in Ein kleiner Twitter/Identi.ca-Client ruf angepasst werden [7]. eine Datei geschrieben werden. An dieser Stelle Es wurde bereits mehrfach erwähnt, dass Python wird aber lediglich versucht, die Datei auszulesen besonders durch die große Anzahl vorgefertigter Vorbereitungen und den Inhalt mit JSON wieder in ein Dictiona- Module besticht. Über viele Probleme haben sich Um mit der Twitter-API arbeiten zu können, ist zu- ry abzubilden. Scheitert dies (etwa weil die Datei bereits andere Programmierer den Kopf zerbro- nächst einmal ein Entwickler-Zugang nötig. Bei nicht existiert), wird eine Standard-Konfiguration conf chen und ihre Lösung dankenswerter Weise für jedem Aufruf der API müssen die dazugehö- (Config-Dict) an den Namen gebunden (Zei- alle verfügbar gemacht. Häufig geht es dabei gar rigen Zugangsdaten mitgeschickt werden. Ein le 25). nicht einmal um große und komplexe Probleme Entwickler-Zugang kann recht unkompliziert auf Für die Kommunikation mit Twitter ist das kor- – oft sind es kleine Helfer und Abstraktionen, die den Entwickler-Seiten von Twitter eingerichtet rekte Anmelden beim Dienst zentral. Zum einen das Leben mit Python so einfach machen. werden [8]. Die jeweiligen Entwickler-Daten wer- muss dem Service mitgeteilt werden, welcher den dann direkt im Skript eingetragen. Der Mikroblogging-Dienst Twitter bietet beispiels- Entwickler bzw. welches Skript gerade eine An- weise eine ganz passable Dokumentation seiner Außerdem wird natürlich das Modul tweepy be- frage sendet, zum anderen muss auch der je- offenen Schnittstellen an [2]. Über die eigentlich nötigt. Dieses lässt sich via Github [9] oder dem weilige Nutzer für viele Aktionen und Abfragen sehr simple REST-API [3] lassen sich so bequem Python Package Index [10] beziehen. Letztlich angemeldet sein. Sehr bequem und sicher für Daten mit dem Dienst austauschen. Prinzipiell ist tweepy eine recht dünne Abstraktionsschicht den Nutzer ist hier das sogenannte „OAuth“- sind damit bereits alle notwendigen Informatio- um die Twitter-API – dennoch sei auch auf die Verfahren [13]. Dabei öffnet der Nutzer eine vor- nen vorhanden. Mit Hilfe des urllib2-Modules tweepy-Dokumentation verwiesen [11]. gegebene URL im Browser und erlaubt dort der könnte mit der API kommuniziert werden. fraglichen Anwendung den Zugriff auf seine Da- Das Skript ten. Das Authentifizieren wird in diesem Skript Es lohnt sich in solchen Fällen aber tatsächlich, Im Folgenden werden nun einige Ausschnitte des von der Funktion do_login abgewickelt (ab Zeile nach fertigen Lösungen zu suchen. Es gibt gleich Codes vorgestellt und besprochen. Das vollstän- 28). Dort wird ein OAuthHandler-Objekt erzeugt:

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/2012 15 PROGRAMMIERUNG auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) ben – hierin befinden sich die relevanten Login- Tokens. Die Funktion do_login gibt im Erfolgs- Das Objekt stellt alle Methoden rund um die Im Folgenden werden noch drei kleine Helfer- fall ein Auth-Objekt zurück, das an den Namen Authentifizierung bereit. Um den Benutzer an- Funktionen definiert. encode passt die je- auth gebunden wird. Dieses wird wiederum ei- zumelden, werden sein access_token und der weilige Zeichenkodierung dem Terminal an, ner Instanz der Klasse tweepy.API übergeben. dazugehörige Geheimschlüssel benötigt. Sollten r_enumerate durchläuft eine Liste rückwärts Diese Instanz wird an den Namen api gebunden. diese noch nicht im Config-Dict conf hinter- und gibt dabei auch die jeweiligen Index-Werte in Über sie erfolgt der Zugriff auf die verschiedenen legt sein (Zeile 31), werden sie über die OAuth- der umgekehrten Reihenfolge an. print_tweet API-Funktionen von Twitter. Schnittstelle ermittelt. Dazu wird eine einmalige schließlich gibt einen gegebenen Tweet auf der URL erzeugt, die der Benutzer aufrufen muss: Konsole aus. Viele Twitter-Methoden unterstützen den Para- meter since_id. Dort kann optional die ID ei- Der Block if __name__ == '__main__:' soll- url = auth.get_authorization_url() nes Tweets übergeben werden. Ist since_id te aus den vorherigen Teilen hinlänglich bekannt nicht None, werden nur solche Tweets ausgelie- Die URL führt zu einer Twitter-Seite, auf der sein. Er kommt lediglich zur Ausführung, wenn fert, die nach dem fraglichen Tweet erstellt wur- der Nutzer dem Skript Zugriff auf sein Konto ge- der Code als eigenständiges Skript ausgeführt den. Die Funktion ist immer dann sinnvoll, wenn währen muss. Tut er dies, erhält er eine PIN, wird. Damit wird verhindert, dass die Funktionen bereits gelesene Tweets nicht angezeigt werden die er wiederum dem Skript übergibt (Zeile 39). auch dann ausgeführt werden, wenn tw.py als sollen. In diesem Skript ist since_id für ge- Das Skript kann nun mittels dieser PIN den Modul importiert wird. wöhnlich None – es werden also alle passenden access_token sowie den dazugehörigen Ge- In dem Block wird anfangs eine Reihe von Kom- Tweets ausgeliefert. Wird aber der Kommando- heimschlüssel abfragen. Diese werden dann im mandozeilenoptionen definiert. Dazu wird das zeilenparameter new bzw. -n angegeben, wer- Config-Dict abgelegt: Modul argparse [14] eingesetzt. Hier- den nur neue Tweets ausgegeben. Die dazu nöti- auth.get_access_token(pin) bei handelt es sich um eine verbes- gen Tweet-IDs finden sich im Config-Dict: conf[u"key"] = auth.access_token.key serte Variante des Kommandozeilenpar- since_home = conf[u"latest"].get(u" conf[u"secret"] = auth.access_token.secret sers optparse, der in Teil 5 dieser Rei- y home", None) he (Musikdatenbank) vorgestellt wurde. since_mentions = conf[u"latest"]. Die meisten Funktionen von argparse sollten da- y Mit diesen Informationen wird der Benutzer nun get(u"mentions", None) angemeldet: her bekannt sein oder sich zumindest aus dem since_own = conf[u"latest"].get(u"y Kontext erschließen. Hier soll daher nur darauf own", None) auth.set_access_token(conf[u"key"],y hingewiesen werden, dass die Auswertung des conf[u"secret"]) Kommandozeilenparsers an den Namen args Hier werden jeweils die Tweet-IDs für die gebunden wird (Zeile 104). Da die relevanten Daten im Config-Dict abgelegt Benutzer-Timeline (home), die Erwähnungen und auf die Festplatte geschrieben wurden, muss In den Zeilen 107/108 erfolgt die Authentifizie- (mentions) und die eigenen Tweets (own) aus- der Benutzer dieses Vorgehen nicht bei jedem rung. Es wird die Funktion do_login aufgeru- gelesen. Da nicht sichergestellt ist, dass die Start wiederholen. fen und das Config-Dict als Parameter überge- Schlüssel home, mentions und own im Dict

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/2012 16 PROGRAMMIERUNG conf[u"latest"] überhaupt existieren, wird mit api.update_status lässt sich etwa ein neu- startpos und dem aktuellen Listen-Index i. Au- Hilfe der dict.get-Methode gearbeitet. Diese er Tweet verschicken. Ebenso leicht lässt sich ßerdem wird jeweils die tweet.id im Config-Dict liefert jeweils None zurück, sollten die fraglichen ein Retweet erzeugen. Der Aufruf abgelegt. Ist die Schleife durchgelaufen, wird so Schlüssel nicht vorhanden sein. Dieses Vorge- die ID des jüngsten Tweets als Inhalt des Dictio- hen ist ebenfalls aus Teil 5 dieser Reihe bekannt api.retweet(TWEET_ID) narys in conf[u"latest"][u"home"] zu finden (siehe freiesMagazin 05/2011 [15]). sein. erzeugt einen Retweet des angegebenen Tweets. Ähnlich wird auch mit den since_id der letzten Etwas umständlich ist die Tatsache, dass der Nut- Zu erklären sind noch die Parameter der Suchen verfahren (Zeilen 116-119). Allerdings zer dazu die recht langen Tweet-IDs (18 Zeichen) Methode api.home_timeline. Der Parameter gibt es dabei für jeden Suchbegriff eine eigene in der Kommandozeile eingeben muss. Mit ein since_id wurde bereits besprochen: Wird ei- since_id, so dass das Config-Dict beispielswei- wenig Aufwand lässt sich aber durchaus auch Ab- ne Tweet-ID übergeben, werden lediglich jünge- se so aussehen könnte: hilfe schaffen [16]. re Tweets ausgegeben. Hat since_id den Wert None, wird nicht gefiltert. Die Parameter page { Ab Zeile 159 finden sich und count sollten sich aus dem Kontext erschlie- u'latest':{ fünf verschiedene if- ßen. Mit ihnen wird angegeben, wie viele Tweets u'home': 160296341866692608, Blöcke, die Tweets nach pro Seite ausgegeben werden sollen und welche u'search':{ verschiedenen Kriterien Seite gewünscht wird. u'test': 159946231588724736, ausliefern. Exemplarisch u'hallo welt': 159951830699343872 wird nun der Block für die Parallel wird mit den Erwähnungen (mentions) } Nutzer-Timeline bespro- und eigenen Tweets (own) verfahren. Lediglich } chen: die Such-Schnittstelle api.search unterschei- } det sich leicht, weil hier zusätzlich der jeweilige

Noch einmal zur Erinnerung: Hat eine since_id for i, tweet in r_enumerate(api.home_timeline(since_id=since_home,page=y den Wert None, wird nicht gefiltert, andernfalls args.page, count=args.count)): werden nur Tweets nach dem angegebenen print_tweet(tweet, i+startpos) conf[u"latest"][u"home"] = tweet.id Tweet ausgeliefert.

In den Zeilen 124-126 wird der Startwert für Der Aufruf api.home_timeline gibt eine Liste Suchbegriff q übergeben werden muss. Außer- die Nummerierung der Tweets berechnet. Da die mit Tweet-Objekten zurück. Über diese wird mit dem liefert diese Schnittstelle nicht Tweet-, son- Twitter-API nur eine begrenzte Zahl von Tweets r_enumerate rückwärts enumeriert. Das ist des- dern Result-Objekte zurück. Diese unterschei- pro „Seite“ ausgibt, unterstützt das Skript die Pa- halb nötig, damit der Nutzer den jüngsten Tweet den sich leicht von den Tweet-Objekten, sodass ginierungsfunktion. in der Konsole ganz unten angezeigt bekommt. in der Funktion print_tweet durch den Zugriff Das jeweilige Tweet-Objekt wird dann an die auf das Attribut from_user_name geprüft wird, Ab Zeile 132 finden sich die eigentlichen Funktion print_tweet übergeben – zusammen ob sich das Objekt wie ein Result-Objekt oder Funktionen des Skriptes: Mit dem Aufruf mit der aktuellen Position, also der Summe aus wie ein Tweet-Objekt verhält [17].

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/2012 17 PROGRAMMIERUNG

Die Darstellung der eigenen [2] https://dev.twitter.com/docs Tweets könnte übersichtlicher [3] https://dev.twitter.com/docs/api sein. Auch das „Retweeten“ ist [4] http://packages.python.org/tweepy/html/ auf Grund der langen Tweet-IDs [5] http://identi.ca/ nocht sehr umständlich. Es wä- [6] http://status.net/wiki/API re aber denkbar, dass die zuletzt [7] http://packages.python.org/tweepy/html/api.html# angezeigten Tweet-IDs in einer tweepy-api-twitter-api-wrapper Liste im Config-Dict abgelegt wer- [8] https://dev.twitter.com/apps/new den und über ihren Index-Wert [9] https://github.com/tweepy/tweepy als „ShortTweet-IDs“ zugänglich gemacht werden. Eine mögliche [10] http://pypi.python.org/pypi/tweepy/1.8 Umsetzung dieser Idee findet sich [11] http://code.google.com/p/tweepy/wiki/APIReference auf der GitHub-Seite dieses Skrip- [12] http://de.wikipedia.org/wiki/JSON ./tw.py -lc3 zeigt die letzten drei Tweets an. tes [16]. Wer Vorbehalte gegen- [13] http://de.wikipedia.org/wiki/Oauth über Twitter hat, kann dieses Bei- [14] http://docs.python.org/dev/library/argparse. In den Zeilen 194/195 wird schließlich das spiel sehr leicht auf Identi.ca umbiegen. Dazu html Config-Dict mit den Änderungen (etwa den neu- werden dem tweepy.API-Objekt zusätzlich die [15] http://www.freiesmagazin.de/freiesMagazin-2011- en Tweet-IDs und Suchbegriffen) mit JSON in Parameter host und api_root übergeben: 02 einen String übersetzt und in die Konfigurations- [16] https://github.com/jbarabbas/tw tweepy.API(auth, host="identi.ca", datei geschrieben. y [17] http://de.wikipedia.org/wiki/Duck_Typing api_root="/api")

Anmerkungen Es ist empfehlenswert, etwas in den Dokumen- Autoreninformation tationen von tweepy und Twitter zu stöbern und Wie immer kann das Skript natürlich noch deut- das Skript nach eigenen Wünschen zu erweitern. lich ausgebaut und verbessert werden. Zum Ver- Daniel Nögel (Webseite) beschäftigt So bietet Twitter etwa eine Stream-API, über die folgen bestimmter Suchbegriffe oder der eigenen sich seit drei Jahren mit Python. Ihn das Skript automatisch über neue Tweets be- Timeline eignet es sich aber bereits jetzt ebenso überzeugt besonders die intuitive Syn- nachrichtigt wird. Auch auf private Nachrichten, wie zum Versenden eigener Tweets. Durch den tax und die Vielzahl der Bibliotheken, gespeicherte Suchen, Freunde, Follower, Listen, Aufruf die Python auf dem Linux-Desktop zu Trends und vieles mehr lässt sich über die API einem wahren Multitalent machen. $ ./tw.py -h zugreifen. LINKS werden die verschiedenen Optionen dank [1] http://www.freiesmagazin.de/freiesMagazin-2011- Diesen Artikel kommentieren argparse übersichtlich aufgelistet. 12

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/2012 18 PROGRAMMIERUNG

PHP-Programmierung – Teil 5: Cascading Style Sheets von Patrick Eigensatz

n den letzten vier Ausgaben von trennt. Die einzelnen Zuweisungen werden durch Weil hier die Informationen nicht mehr alle Con- freiesMagazin wurden die Programmier- ein Semikolon abgeschlossen: tainer betreffen müssen, muss der CSS-Code I sprache PHP und das Datenbanksystem ein wenig anders ge- MySQL kurz angeschaut. Nun soll es darum schrieben werden. Der Alles auf der Seite ist rot und unterstrichen! gehen, Ausgaben mithilfe von „Cascading CSS-Code besteht Style Sheets“ (kurz CSS [1]) zu formatieren. dann immer aus drei Dies sollte auf jeden Fall der veralteten Me- Teilen: Dem Selektor, den Eigenschaften und thode des -Tags vorgezogen werden. Globale CSS-Definition den dazugehörigen Werten. Zu den Werten Wenn viele Informationen einem Container über- muss auch immer die dazugehörige Einheit. Bei Was sind Stylesheets? geben und auf der ganzen Seite alle oder zumin- der Schriftgrösse können das verschiedene sein: Stylesheets sind sozusagen die grafische Be- dest viele Container des selben Typs eingefärbt px, pt, mm, cm und weitere wie zum Beispiel em. schreibung zum HTML. HTML beschreibt, was werden sollen, ist es übersichtlicher, wenn man Eine gute Übersicht und Erklärungen zu allen in auf der Webseite steht, und CSS sagt, wo es den CSS-Code im und nicht mehr ganz aktuelle Kompatiblitätsüber- h1 { font-size: 48pt; } sicht findet man bei „CSS 4 you“ [2]. h2 { font-size: 36pt; }

h3 { font-size: 24pt; } CSS in einzelnen Containern Ein HTML-Test mit CSS in Stylinginformationen, die nur für einen bestimm- grosser und roter Schrift! Mit pt sind points gemeint, bei h1 also die 48 ten Container gelten sollen, kann man mithilfe

Punkt Schriftgröße wie sie auch in einem Textver- des style-Parameters angeben. In CSS wird ei- arbeitungsprogramm ausgewählt werden kann. ne Eigenschaft durch einen Doppelpunkt (und Mehr Informationen zum Schriftgrad findet man eventuell durch ein Leerzeichen) vom Wert ge- Listing 1: php4-css1.html in der Wikipedia [4].

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/2012 19 PROGRAMMIERUNG

Klassen HTML-Seite als eine Seite aus vielen „Contai- Anzumerken wäre hier nur noch, dass Vielleicht möchte man aber verschiedene h1- nern“ vorstellen. Jeder Container kann eine eige- font-style: italic den Text kursiv formatiert. Überschriften haben, zum Beispiel in grün oder ne CSS-Klasse haben, muss aber nicht. Wenn blau oder mit anderen Formatierungen. Dann bie- man einen Container braucht, der nur da ist, und Pseudoklassen ten sich zwei Möglichkeiten an. Zum einen kann den Text nicht noch zusätzlich verändert, kann Pseudoklassen sind dazu da, den Selektor ge- man eine Unterklasse für h1 erstellen: man den

-Tag benutzen. Mit Hilfe dieses nauer zu bestimmen. Sie kommen häufig bei Tags kann der Text zwischen den Tags mit CSS der Formatierung von Links zum Einsatz. Dabei h1.gruen { color: lime; } formatiert werden, ohne dass er in einen be- wird genauer bestimmt, ob der Link zum Beispiel stimmten anderen Tag muss. Ein
dient schon einmal besucht wurde oder ob der Maus- Zum anderen kann man eine allgemeine Klasse also nur als Container für CSS. zeiger gerade darüber fährt. Pseudoklassen wer- gruen erstellen: den wie normale Klassen definiert. Der Unter- .gruen { color: lime; } schied besteht lediglich darin, dass die Pseu- doklassen durch einen Doppelpunkt vom rest- Wenn eine der beiden Möglichkeiten in das Style- CSS-Test mit div lichen Klassennamen abgetrennt werden. Bei ei- sheet übernommen wurde, kann man über HTML wie es im CSS unter h1.gruen beziehungsweise a.referenzen:hover { ... } unter .gruen beschrieben ist.

Andere Pseudoklassen für Links sind active, Wenn man h1.gruen definiert, dann ist die Klas- Hier steht Text.
link, focus und visited. Letzteres sagt zum se gruen nur bei h1-Tags verfügbar, Text inner- Noch mehr Text.
Beispiel aus, wie ein Link formatiert werden halb eines anderen Tags wird also nicht auf diese

muss, der bereits besucht wurde. Mehr dazu Art formatiert. Möchte man auf der ganzen Web- Dieser Text ist formatiert. kann man auf „SelfHTML“ nachlesen [6]. seite Text immer wieder grün einfärben, so emp-
fiehlt sich das Erstellen einer allgemeinen Klas-
Einige Pseudoklassen sind auch bei anderen se. Und alles ist wieder normal. Tags möglich. So kann sich auch die Formatie-

rung einer Überschrift ändern, wenn man mit
-Tags dem Mauszeiger darüber fährt: Wie im ersten Artikel erwähnt (siehe h1:hover { font-style: italic; } freiesMagazin 10/2011 [5]) kann man sich eine Listing 2: php4-css2.html

© freiesMagazin CC-BY-SA 3.0 Ausgabe 02/2012 20 PROGRAMMIERUNG

Das Box-Modell in CSS margin: 50px; „CSS 4 you“ [10] ist eine fast vollständige Refe- Das Box-Modell in CSS beschreibt die Rän- renz, bei der einem wie bei SelfHTML angezeigt der und deren Abstände von den Seiten der Externe Stylesheets wird, welche Browser welche Eigenschaft unter- stützen. CSS-Container. Um den Abstand vom nächst- Anstatt den CSS-Code über den