freiesMagazin Mai 2012

Topthemen dieser Ausgabe

Selbstgebacken 3: make Seite 3 Das Bauen eines Kernels und das Aktualisieren der Quellen ist keine große Zauberkunst und, sofern man keine besonderen Extras haben möchte, mit ein paar make-Kommandos recht schnell erledigt, wobei make den Löwenanteil der Arbeit verrichtet. Es bekommt gesagt, was man möchte, den Rest erledigt es dann von alleine. Der Artikel soll das Geheimnis von make etwas lüften. (weiterlesen)

Kollaboratives Schreiben mit LATEX Seite 14 Ob im wissenschaftlichen oder privaten Bereich: Möchte man die volle Kontrolle über das Aus- sehen seiner erstellten Dokumente behalten, führt oft kein Weg an LATEX vorbei. Die Standard TEX-Distribution zeigt jedoch ein paar Restriktionen auf. Sowohl die Online-Verfügbarkeit des Dokuments von jedem Ort aus sowie der kollaborative Ansatz, dass mehrere Personen zeit- gleich an einem Dokument arbeiten können, ist mit den Standardmitteln der Desktopinstallation nicht zu erreichen. Die im Artikel vorgestellten Lösungen versuchen, die gewünschten Zusatz- funktionen bereitzustellen. (weiterlesen)

Astah – Kurzvorstellung des UML-Programms Seite 23

Die Februar-Ausgabe von freiesMagazin enthielt einen kleinen Test diverser UML-Programme. Dabei wurde aber das UML- und Mindmap-Programm Astah übersehen. In dem Artikel soll gezeigt werden, ob das Programm mit den zuvor getesteten mithalten kann. (weiterlesen)

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

Editorial

Fünfter Programmierwettbewerb be- Abschied Inhalt allgemein endet Im April hieß es Abschied nehmen von einem Selbstgebacken 3: make S. 3 Der am 1. März 2012 gestartete fünfte langjährigen Teammitglied. Thorsten Schmidt, Der April im Kernelrückblick S. 8 freiesMagazin-Programmierwettbewerb [1] ging seit 2007 als Autor, danach als Korrektor und offiziell am 15. April 2012 zu Ende. Thema war letztendlich seit drei Jahren als Redaktionsmit- Anleitungen die Analyse eines Textes, das Zählen von Worten glied tätig, musste aus privaten und zeitlichen Objektorientierte Programmierung: Teil 3 S. 9 und die Ausgabe als Wortwolke. Die eingereich- Gründen das Team verlassen. Dokumentenmanagement mit LetoDMS – S. 12 ten Programme wurden auf Herz und Nieren Einrichten der Volltextsuche geprüft, sodass die Bewertung erst Anfang Mai Wir wollen Thorsten an dieser Stelle für seine vorlag [2]. langjährige Unterstützung danken und ihm für die Zukunft alles Gute wünschen. Software Es hatten sechs Programmierwillige ein Pro- Kollaboratives Schreiben mit LATEX S. 14 gramm eingereicht, wobei einer sein Programm Das Magazin existiert aber auch mit nur drei Re- Tine 2.0 – Installation und Konfiguration S. 19 während der Bewertungsphase zurückzog. Von daktionsmitgliedern weiter, auch wenn die Mai- Astah – Kurzvorstellung des UML- S. 23 den restlichen fünf Programmen waren leider ausgabe etwas dünner ist als die restlichen Aus- Programms drei etwas fehlerhaft, sodass wir keines von ih- gaben. Nach wie vor benötigen wir immer neue nen auf den dritten Platz setzen wollten. Daher Artikel, um das Magazin mit Inhalt zu füllen. Community gibt es nur zwei Gewinner. Rezension: PyQt und PySide S. 26 Wenn Sie also eine Idee zu einem Ar- Rezension: C++11 programmieren S. 28 Der Wettbewerb hat auch gezeigt, dass eine tikel haben, schreiben Sie uns unter Rezension: Java 7 – Mehr als eine Insel S. 31 Bewertung aufgrund von Eigenschaften wesent- . lich schwieriger ist als wenn am Ende des Wett- Magazin Ihre freiesMagazin-Redaktion bewerbs automatisch eine Punktzahl herausfällt, Editorial S. 2 die genau angibt, welche Platzierung ein Pro- LINKS Ende des fünften Programmierwettbe- S. 33 gramm erreicht. werbs [1] http://www.freiesmagazin.de/20120301-fuenfter- Leserbriefe S. 34 Das ist auch der Grund, wieso der nächste programmierwettbewerb-gestartet Veranstaltungen S. 36 Wettbewerb wieder ein spieltheoretisches Pro- [2] http://www.freiesmagazin.de/20120505- Vorschau S. 36 blem mit einer klaren Punktzahl am Ende ange- gewinner-des-fuenften-programmierwettbewerbs Konventionen S. 36 hen wird. Voraussichtlicher Start des sechsten freiesMagazin-Programmierwettbewerbs ist An- Impressum S. 37 fang Oktober. Das Editorial kommentieren

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

Selbstgebacken 3: make von Mathias Menzer

as Bauen eines Kernels und das Ak- Makefile und enthält die vom Entwickler vorgese- Angefangen von dem zentralen Makefile des tualisieren der Quellen ist keine große henen Anweisungen nebst den notwendigen Hin- Linux-Kernels, das im Wurzelverzeichnis des D Zauberkunst und, sofern man keine weisen für make, was zu tun ist. Quellcode-Verzeichnisbaums zu finden ist, arbei- besonderen Extras haben möchte, mit ein tet sich make entsprechend der Konfigurations- Mancher Kunde skandinavischer Möbelhäuser paar make-Kommandos recht schnell erle- datei .config durch den Baum der einzelnen würde sich darüber freuen, wenn ein „make digt, wobei make den Löwenanteil der Ar- Subsysteme und bindet dann entsprechend der Schrank Türen-Anschlag-Links“ den Beipackzet- beit verrichtet. Es bekommt gesagt, was man dort zu findenden Makefiles wiederum andere tel einlesen, das Zubehör auf Vollständigkeit prü- möchte, den Rest erledigt es dann von allei- Komponenten ein oder kompiliert sie, bis es sie fen, alles Relevante heraussuchen, die Anwei- ne. Der Artikel soll das Geheimnis von make zum Schluss im System ablegt und zum Beispiel sungen korrekt interpretieren und auch gleich etwas lüften. beim Bootloader registriert. den Aufbau vornehmen würde. Was ist make? Die verschiedenen Befehle, die make entgegen- Und auch schon bei der Erstellung der Konfigu- make ist ein Werkzeug zum Erstellen von Pro- nehmen kann, werden „Targets“ genannt. Wo- rationsdatei kann einem make behilflich sein und grammen aus dem Quelltext. Es gibt verschie- für Targets letztlich definiert werden, bleibt den spart dabei die Tipparbeit von bis zu 5000 Zeilen dene Implementierungen, zum Beispiel pmake Software-Entwicklern überlassen. Neben dem ei- Text. Mehr als viele andere Projekte ist der Linux- unter BSD und „GNU make“, das bei Linux zur gentlichen Kompilieren werden Targets auch für Kernel also auf make angewiesen. Anwendung kommt. GNU make entstammt dem das Konfigurieren (z. B. make config) oder das GNU-Projekt [1] und kommt zusammen mit der Aufräumen der Quellen nach einem Kompilie- Welche Targets gibt es? GNU Compiler Collection (gcc) und der GNU rungsvorgang (z. B. make clean) verwendet. Für den Linux-Kernel kennt make mehr als 60 C (glibc) beim Bau des Linux-Kernels Targets (Stand Linux 3.3). Nicht alle sind immer zum Einsatz. Unter anderem darauf stützt sich Wozu braucht der Linux-Kernel sinnvoll zu nutzen, da zum Beispiel auch Targets der Initiator des GNU-Projekts, Richard Stallman, make? für die Erstellung von RPM-Paketen mit dem fer- wenn er darauf besteht, dass die korrekte Be- Beim Linux-Kernel handelt es sich um ein kom- tig kompilierten Kernel bestehen, die auf einem zeichnung GNU/Linux sei [2]. plexes Miteinander von Bibliotheken, Komponen- -System nur wenig Sinn ergeben. Den- ten und Modulen, die aufeinander aufbauen und noch ist ein Überblick über die gebräuchlichsten Kurz beschrieben funktioniert make so, dass es so ein verflochtenes Netzwerk aus Abhängigkei- Targets von Vorteil, wenn man mal von fertigen beim Aufruf ein Kommando erhält, was es tun ten erzeugen. Kernel-Rezepten abweichen möchte. soll. Da die Entwickler von make nun aber nicht jede Software und ihre speziellen Anforderungen Berücksichtigt man die Größe des Projekts, so Konfigurieren kennen können, haben Sie make als eine Art wird schnell klar, dass die Auflösung dieser Ab- Die meisten Targets dienen der Erstellung einer vollautomatische Werkzeugkiste aufgebaut, die hängigkeiten bei der Kernelkompilierung eine Le- gültigen .config-Datei. Die einfachste Varian- der zu kompilierenden Software dann quasi die bensaufgabe wäre, würde make einem nicht die- te, make config, fragt auf der Kommandozei- Aufbauanleitung entnimmt. Diese Anleitung heißt se Arbeit abnehmen. le jede mögliche Einstellung vom Anwender ab,

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

präsentiert sich aufgeräumt. Die Belegung der F-Tasten ist in nconfig immer sichtbar. wobei die Standard-Einstellung immer vorausge- tionsdatei, was Zeit und Arbeit spart, die man in Grenzen hält, man muss schon in etwa wissen, wählt ist und nur mit Enter bestätigt werden gegebenenfalls anschließend investieren muss. wo sich eine bestimmte Einstellung finden lässt, muss. Für die annähernd 5000 Abfragen sollte Hierzu wären grafische Werkzeuge hilfreich, wenn man auf langes Suchen verzichten möch- man allerdings viel Zeit mitbringen. die ebenfalls über verschiedene Targets auf- te. Apropos Suche: Beide Tools bieten eine Mög- gerufen werden können. Die einfachste Ver- lichkeit, nach Optionen zu suchen, was bisweilen Die Variante make oldconfig wurde in den vor- sion davon, die auch auf einem System ohne einiges an Zeit ersparen kann. angegangenen Teilen schon genutzt, sie über- grafische Benutzeroberfläche verwendet wer- nimmt eine bereits vorliegende .config-Datei den kann, sind die auf ncurses [3] basierenden Etwas übersichtlicher erscheinen dennoch make und legt dem Nutzer nur noch die dort nicht fest- make menuconfig und make nconfig (erfor- xconfig, das sich mit seiner QT-Oberfläche für gelegten Optionen zur Entscheidung vor. derliches Paket: ncurses-devel). Alle Einstell- KDE-Umgebungen anbietet (erforderliches Pa- make defconfig verzichtet dagegen ganz auf möglichkeiten für den Linux-Kernel finden sich ket: qt), und das GTK+-basierte [4] gconfig irgendwelche Abfragen und übernimmt stattdes- hier in einer Baumstruktur wieder. Der Natur ei- (erforderliche Pakete: gtk+-2.0, glib-2.0 und sen die von den jeweiligen Entwicklern vorgese- ner terminalbasierten Benutzeroberfläche ist es libglade-2.0). Beide zeigen die gleiche Baum- henen Standard-Einstellungen in die Konfigura- geschuldet, dass sich die Übersichtlichkeit hier struktur wie auch die ncurses-Tools, jedoch

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

der Konfigurationen aktiviert werden, um sie nut- zen zu können.

localyesconfig geht noch einen Schritt weiter und sorgt dafür, dass die entsprechenden Treiber direkt in den Kernel kompiliert werden, sie müs- sen also nicht bei Bedarf nachgeladen werden, blähen den Kernel jedoch auf.

Dem entgegen steht allmodconfig, das so vie- le Treiber wie möglich versucht aus dem Kernel auszulagern und als Module einbindet.

Es existieren noch weitere Targets, die nicht un- bedingt täglich von Nutzen sind. Während man ei- ne Konfiguration, bei der alle Optionen ein- oder ausgeschaltet sind, schon mal als Grundlage für eine manuelle Nachbearbeitung erzeugen kann, dürfte randconfig eher etwas für Nerds sein, die zu viel Zeit übrig haben, denn es beantwortet alle Abfragen zu den Optionen mit Zufallswerten.

Hier eine Übersicht der Targets zum Konfigurie- ren des Kernels:

config: alle Einstellungen werden in der Kom- mandozeile abgefragt defconfig: Kernel-Standardkonfiguration ent- sprechend der jeweiligen Architektur Die grafische Oberfläche von xconfig ist die bei weitem übersichtlichste. oldconfig: vorliegende Konfiguration wird über- nommen, neue Funktionen/Treiber wer- sorgen die ausklappbaren Unterpunkte für mehr Konfiguration genommen und alle Module, die den in der Kommandozeile interaktiv ab- Übersichtlichkeit und erleichtern die manuelle gerade nicht geladen sind, deaktiviert. gefragt Nachbearbeitung der .config-Datei ungemein. Dabei wird der Kernel zwar recht schlank, jedoch localmodconfig: vorliegende Konfiguration Mit Vorsicht zu genießen ist das Target müssen Komponenten für Hardware, die gerade wird übernommen, nicht aktive Modu- localmodconfig: Hier wird eine vorliegende nicht aktiv war, anschließend wieder manuell in le werden deaktiviert

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/20125 KERNEL localyesconfig: wie localmodconfig, aber die Was das Erstellen der Module werden in den Kernel fest einge- Module anbetrifft, so bunden kann man sich dies un- allnoconfig: neue Konfiguration, alle Abfragen ter Umständen sparen, werden mit „Nein“ beantwortet wenn alle benötigten Trei- allyesconfig: neue Konfiguration, alle Abfra- ber statisch in den Kernel gen werden mit „Ja“ beantwortet hineinkompiliert werden, allmodconfig: neue Konfiguration, es werden z. B. beim Einsatz von Treiber als Modul konfiguriert localyesconfig. alldefconfig: neue Konfiguration, alle Kompo- nenten mit Standard-Optionen Installiert wird der Ker- make randconfig: neue Konfiguration, Optionen wer- nel natürlich mit install den zufällig gesetzt , die Module mit make modules_install menuconfig: terminalbasierte Oberfläche, ba- . sierend auf ncurses Letzteres berücksich- tigt den Modul-Pfad, nconfig: terminalbasierte Oberfläche, basie- wie ihn die jeweili- rend auf ncurses ge Distribution vorgibt xconfig: grafische Oberfläche, basierend auf (z. B. /lib/modules in Qt Ubuntu). Aber auch wie gconfig: grafische Oberfläche, basierend auf die eigentlich Installa- GTK+ tion abläuft ist distribu- gconfig ist nicht ganz so übersichtlich wie das Qt-Pendant, kommt Kompilieren und Installieren tionsspezifisch, denn aber besser mit kleinen Bildschirmen klar. Wird make ohne Target aufgerufen, so entspricht hier kommt das Skript dies make all oder make bzImage /sbin/installkernel zum Einsatz, das den install: installiert den Kernel und registriert modules. Das bedeutet, es werden der eigent- Kernelquellen nicht beiliegt, sondern vom Distri- ihn beim Bootloader liche Linux-Kernel (vmlinux), ein komprimiertes butor entsprechend bereitgestellt wird. modules_install: installiert die Module in den Kernel-Abbild (bzImage) und die Module (modu- Modul-Pfad des Systems Hier eine Übersicht der Targets zum Kompilieren les) gebaut. vmlinux wird nicht mehr oft verwen- und Installieren des Kernels: det, da aufgrund des Umfangs der Griff zum kom- Weitere Werkzeuge primierten Kernel-Abbild empfohlen wird. Ist man irgendwo mit Arbeiten fertig, so räumt vmlinux: erstellt den Kernel man in der Regel auf und fegt einmal durch. Auch Das bzImage wird beim Installieren übrigens in bzImage: erstellt ein komprimiertes Kernel- beim Kernelbau sollte man das machen, um vmlinuz umbenannt und findet sich unter die- Abbild beim Anwenden künftiger Patches keine Überra- sem Namen im /boot-Verzeichnis. modules: erstellt alle konfigurierten Module schung zu erleben. Hier hilft make clean unge-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/20126 KERNEL mein, denn es entfernt die Überreste, die beim Auch wenn man sich letztlich meist mit nur we- Kompilier-Vorgang angefallen sind. Die .config- nigen der Möglichkeiten, die make hier bietet Datei bleibt jedoch erhalten. durchs Leben kompiliert, bietet die Vielzahl der Targets auch Lösungen für ausgefallene Aufga- Einen Überblick über neue Optionen erhält man ben – und wenn es nur der langweilige Sonn- mit dem Target listnewconfig. Es stellt die Un- tagnachmittag ist, der mit make randconfig terschiede zwischen einer vorliegenden .config sehr interessant zu werden verspricht. und den verfügbaren Einstellungen des aktuellen Kernels dar. Und sollte man vergessen haben, was der für eine Versionsnummer hat, so liefert Paketübersicht nach Distributionen make kernelversion die Antwort. Debian/Ubuntu SuSE Fedora libncurses5-dev ncurses-devel ncurses-devel Hier eine (unvollständige) Übersicht anderer Tar- libqt4-dev libqt4-devel qt4-devel gets: libgtk2.0-dev gtk2-devel gtk2-devel libglib2.0-dev gtk2-devel gtk2-devel kernelversion: zeigt die Versionsnummer aus libglade2-dev libglade2-devel libglade2-devel dem Makefile listnewconfig: listet hinzugekommene Optio- LINKS nen auf [1] http://www.gnu.org/ help : listet alle Targets [2] https://de.wikipedia.org/wiki/GNU/Linux- clean: entfernt die beim Konfigurieren und Kom- Namensstreit pilieren erzeugten Dateien [3] https://de.wikipedia.org/wiki/Ncurses mrproper: wie clean, entfernt jedoch auch die [4] https://de.wikipedia.org/wiki/GTK+ Konfiguration und Backup-Dateien distclean: entfernt alle Dateien, die nicht zum Quellcode gehören Autoreninformation

Mathias Menzer (Webseite) ist Fazit zur Kernelkompilierung auf „make“ In diesem Artikel wurden längst nicht alle Targets angewiesen. Ein Überblick über des- von make angesprochen. Eine vollständige Über- sen Möglichkeiten ist da ganz nützlich. „Misconceptions“ © by Randall Munroe make help sicht liefert im Wurzelverzeichnis des (CC-BY-NC-2.5), http://xkcd.com/843/ entpackten Linux-Quellcodes. Der Blick über den Tellerrand lohnt sich in jedem Fall, wenn man sei- nen Linux-Kernel selbst baut. Diesen Artikel kommentieren

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

Der April im Kernelrückblick von Mathias Menzer

asis aller Distributionen ist der Linux- Kyro-Grafik-Chipsätze von STMicroelectronics, reau, der bislang die Kernel-Reihe 2.4 betreut Kernel, der fortwährend weiterent- der bislang leider nicht mit x86_64-Systemen zu- hat, verkündete nun dass es keine weiteren Re- B wickelt wird. Welche Geräte in einem rechtkam, und Fehlerkorrekturen an dem SSD- leases mehr geben werde [9]. Diese Reihe wird halben Jahr unterstützt werden und welche Treiber mtip32xx für Micron-SSDs. Auf den ers- nun seit 2001 gepflegt, auch wenn seit Ende Funktionen neu hinzukommen, erfährt man, ten Blick schien -rc4 [5] ein Rückschritt zu sein, 2010 keine Veröffentlichung mehr stattfand. Da- wenn man den aktuellen Entwickler-Kernel im schoss doch die Zahl der geänderten Codezeilen mit ist 2.4 die bislang am längsten gepflegte Auge behält. erheblich in die Höhe. Der Grund lag hier jedoch Reihe, wenn man berücksichtigt, dass bereits darin, dass das Bootlogo der Architektur für Mo- 2003 der erste 2.6er Kernel erschien - ein echter Fast wäre es ein Aprilscherz geworden, aber torolas 68000er Serie von Mikroprozessoren von Langzeit-Kernel. Linux 3.4-rc1 [1] erschien auch nach unserer Zeit einem Bereich in einen anderen verschoben wur- LINKS noch am 31. März und signalisierte damit, dass de und den Diff damit erheblich aufblähte, auch die Zeit zum Einreichen von Änderungen abge- wenn er sonst nur kleinere Korrekturen zu bieten [1] https://lkml.org/lkml/2012/3/31/214 laufen ist. Unter den Funktionen, die aufgenom- hatte. Wer nun auf eine weitere Beruhigung ge- [2] https://de.wikipedia.org/wiki/Binärschnittstelle men wurden, ist eine zusätzliche ABI [2] für die hofft hatte, wurde von Linux 3.4-rc5 [6] nicht wirk- [3] https://lkml.org/lkml/2012/4/7/123 Ausführung von 32-Bit-Programmen auf 64-Bit- lich enttäuscht. Zwar war diese Entwicklerversion [4] https://lkml.org/lkml/2012/4/15/179 Systemen. Die neue x32-ABI erfordert extra für wieder etwas größer, doch die meisten Änderun- [5] https://lkml.org/lkml/2012/4/21/180 sie kompilierte Anwendungen, diese sollen dann gen liegen in der Kategorie Fehlerkorrektur und [6] ttps://lkml.org/lkml/2012/4/29/2 jedoch schneller laufen als mit i386 oder x86_64. fallen recht kompakt aus. [7] http://www.pro-linux.de/news/1/18290/linux-32- Der Nouveau-Treiber unterstützt nun auch die wird-langfristig-unterstuetzte-version.html neuen Nvidia-Karten mit Kepler-Chip, was dem Als Longtime-Kernel werden einige ausgewähl- [8] http://www.pro-linux.de/news/1/18242/keine- Einsatz des Entwicklers Ben Skegg zu verdan- te Kernel-Versionen über zwei Jahre hinweg ge- neue-version-von-linux-24-mehr.html ken ist. pflegt, während die regulären produktiven Ker- [9] https://lkml.org/lkml/2012/4/9/127 nel nur bis zur Veröffentlichung ihres Nachfolgers Die zweite Vorabversion [3] lieferte neben den mit Updates ausgestattet werden. Der jüngste üblichen ersten Fehlerkorrekturen noch ein paar Spross ist nun Linux 3.2, der künftig von Debian- Autoreninformation Nachzügler – Pull Requests, die zwar rechtzeitig Entwickler Ben Hutchings betreut werden wird [7]. Mathias Menzer (Webseite) hält eingereicht, aber zum -rc1 noch nicht berücksich- Debian nutzt diese Version für das kommende einen Blick auf die Entwicklung des tigt wurden. Dazu zählen HSI (High Speed Se- Debian-Release, aber auch Ubuntu wird hiervon Linux-Kernels und erfährt frühzeitig rial Interface), eine DMA-Puffer-Schnittstelle für Nutzen ziehen, setzt doch die gerade veröffent- Details über interessante Funktionen. DRM namens „PRIME“ und ein DMA-Mapping- lichte Version 12.04 Linux 3.2 ein. Framework. Zu Linux 3.4-rc3 [4] hin ging die Zahl der Änderungen erwartungsgemäß zurück. Grö- Dagegen wird die Pflege eines anderen ßere Änderungen waren hier der Treiber für die „Langzeit-Kernels“ nun eingestellt [8]. Willy Tar- Diesen Artikel kommentieren

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

Objektorientierte Programmierung: Teil 3 – Einzigartige Registrierung von Dominik Wagenführ

er Begriff der objek- Design torientierten Program- Das Singleton-Entwurfsmuster D mierung (kurz OOP [1]) lässt sich sehr einfach umset- existiert schon eine ganze zen. Hierzu ist es nur wich- Weile. Wer zuvor prozedural tig, dass der Konstruktor der programmiert hat, erwischt StrategyFactory privat wird. sich beim Übergang zu OOP Manch einer wird sich fra- öfter dabei, wie er die frühe- gen, wer dann überhaupt noch ren Funktionen einfach mit ei- die Klasse instanziieren darf. ner Klasse umgibt und dies Ganz einfach: die Klasse selbst. als objektorientierte Program- Über die statische Methode mierung verkauft. Die Artikel- getInstance wird dann der Zu- reihe soll an einem einfachen griff auf die als Attribut gehalte- Beispiel zeigen, was man in ne statische Instanz gewährt. so einem Fall besser machen Klassenaufteilung könnte. An den CRC-Karten hat sich Bevor man im Artikel fortfährt, zum letzten Teil nichts geändert, sollte man sich den vorheri- weswegen diese hier nicht noch gen Teil der Reihe durchgele- einmal extra dargestellt werden sen haben (siehe freiesMagazin sollen. 04/2012 [2]). Abhängigkeiten Ganz allein auf der Welt Auch an den Abhängigkeiten hat sich zum letzten Teil nichts geän- Im letzten Teil wurde die Stra dert. tegyFactory über statische Me- thoden angesprochen. Prinzipi- Vor- und Nachteile ell ist das nicht falsch. Hierfür Es bestehen weiterhin die glei- gibt es aber auch ein Entwurfs- chen Vor- und Nachteile wie im muster, was dafür Sorge trägt, letzten Teil. Das heißt, Erweiter- dass es im Programmablauf nur barkeit und Wartbarkeit sind eine einzige Instanz einer Klas- im aktuellen Zustand sehr gut. se gibt: das Singleton [3]. Die StrategyFactory als Singleton. Schlecht ist nach wie vor, dass

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/20129 PROGRAMMIERUNG die Fabrik jedes Mal im Code angepasst werden Registrier’ Dich! Konzept nicht umkehren? Es wäre besser, wenn muss, wenn eine neue Strategie hinzukommt. Ein Nachteil des bisherigen Designs war, dass jede Strategie sich bei der Fabrik anmeldet. Die die StrategyFactory wissen musste, welche Fabrik muss nicht wissen, was sie genau dann Was ist der Vorteil des Singletons? Es ist sehr konkreten Strategien sie erstellt. Wieso also das erstellt, sie muss nur wissen, wie sie es macht. klein, aber es wird sichergestellt, dass es nur eine Instanz des Objektes gibt. Natürlich hätte man dies auch mittels einer statischen Metho- de und eines privaten Konstruktors der vorherge- henden Lösung erreichen können. Dann hat man aber keine Kontrolle darüber, wann die Objekte, die die Fabrik benötigt, erstellt werden. Mit dem Singleton ist dies sichergestellt. Man sollte sich aber über die Bedeutung des Singletons klar werden. Selbst, wenn es zwei par- allel stattfindende Spiele geben sollte (also In- stanzen von Game), nutzen diese beiden die glei- che StrategyFactory. Aufpassen muss man in diesem Kontext auch auf Threadsicherheit. Wenn es möglich ist, dass die getInstance-Methode parallel aus zwei Threads gerufen werden kann, muss diese so ab- gesichert werden, dass dennoch nur eine Instanz generiert wird. Ansonsten hat man plötzlich zwei Objekte des Singleton, mit denen gearbeitet wird. Implementierung In C++ lässt sich das Singleton-Pattern auf meh- rere Arten umsetzen. In der Beispielimplementie- rung wurde die einfache Methode gewählt. Diese ist aber nicht threadsicher, sodass es, wenn es mehrere Threads geben würde, zwei Instanzen der Fabrik zur gleichen Zeit geben könnte. Die C++-Implementierung kann als Archiv herun- tergeladen werden: oop5-beispiel.tar.gz. Die Strategien werden bei der Fabrik registriert.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 10 PROGRAMMIERUNG

Design da jemand außerhalb (normalerweise die Haupt- Die C++-Implementierung der obigen Klassen Die Fabrik erhält neben der create-Methode routine) die Anmeldung der konkreten Strategien kann als Archiv heruntergeladen werden: oop6- auch eine register-Methode. Die konkreten übernehmen muss und somit von diesen abhän- beispiel.tar.gz. Strategien können sich nun mit einem Identifier gig ist. (als String) bei der Fabrik anmelden bzw. über- Ausblick nimmt sinnvollerweise ein externer Strategie- Vor- und Nachteile Nutzer diese Anmeldung. Theoretisch ist man nun am Ziel angekommen. Das Tutorial ist fast am Ende. Im abschließenden Teil soll es möglich gemacht werden, dass wäh- Zur Speicherung der Verbindung „Identifier → Jede Klasse hat nur eine Verantwortlichkeit. Die rend der Laufzeit die Strategien eigenständig zu Strategie“ wird eine Klasse StrategyMap be- Abhängigkeiten zwischen den Paketen/Bibliothe- libgame anderen Strategien wechseln können. nutzt, die das assoziative Array darstellen soll. ken sind sehr gering. muss nur neu er- Da dies aber in jeder Sprache anders umgesetzt stellt werden, wenn sich in der Deklaration der StrategyFactory LINKS wird, bleibt die Klasse undefiniert. etwas ändert (was hoffentlich nicht mehr der Fall sein wird) und libbot muss Hinweis: Ein Interface unter der StrategyFac nur neu erstellt werden, wenn sich das Interface [1] https://secure.wikimedia.org/wikipedia/de/wiki/ Objektorientierte_Programmierung tory, welches die konkreten Strategien zum Re- IStrategy ändert (was hoffentlich auch nicht gistrieren benutzen könnten, lässt sich nicht oder passiert). [2] http://www.freiesmagazin.de/freiesMagazin-2012- nur schwer umsetzen, da die StrategyFactory 04 ein Singleton ist. (Da fällt einem die Design- Ein weiterer Vorteil der Lösung ist, dass zur [3] https://de.wikipedia.org/wiki/Singleton_(Entwurfs Entscheidung von vorher auf die Füße.) Laufzeit neue Strategien hinzukommen können. muster) Man könnte sogar überlegen, eine unregister- Klassenaufteilung Methode hinzuzufügen, sodass zur Laufzeit man- Gegenüber des letztes Teils hat sich nur die CRC- che Strategien wieder entfernt werden. Karte der StrategyFactory geändert. Autoreninformation Implementierung Dominik Wagenführ (Webseite) ist Klasse: StrategyFactory C++-Software-Entwickler und hat Benötigt: IStrategy Wie oben beschrieben übernimmt am besten täglich mit Software-Design zu tun. Verantwort.: lässt neue Strategien anmelden die Hauptroutine die Anmeldung der konkreten Dabei muss er sich immer Gedanken und erstellt diese auf Zuruf Strategien bei der Fabrik. In C++ ist das die main-Funktion. Dies ist auch sinnvoll, da nur das machen, dass seine Software auch Abhängigkeiten Hauptprogramm und nicht irgendeine genutzte in Zukunft einfach wartbar und leicht Die Anzahl der Abhängigkeiten hat sich theore- Bibliothek weiß, welche Strategien überhaupt ein- erweiterbar bleibt. tisch verringert, da die StrategyFactory nun gesetzt und angeboten werden sollen. Hier könn- nicht mehr von allen konkreten Strategien abhän- te man bei einer Erweiterung mit eigenen Strate- gig ist. Dies ist natürlich nur die halbe Wahrheit, gien diese ebenfalls anmelden. Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 11 DOKUMENTATION

Dokumentenmanagement mit LetoDMS – Einrichten der Volltextsuche von Uwe Steinmann

in DMS ohne Volltextsu- che ist kein DMS. Des- E halb verfügt auch Leto- DMS seit der Version 3.2.0 über eine solche Suche, die auf den Lucene-Klassen des Zendframeworks beruht.

Bei der Installation von Leto- DMS stößt man schon auf Ein- träge für die Konfiguration der Volltextsuche, jetzt geht es dar- an, diese korrekt zu setzen. Zu- nächst aber gilt es, das Zend- framework und das PEAR-Paket LetoDMS_Lucene zu installie- ren. Zendframework ist in den Repositorys vieler Distributionen vorhanden, kann aber alternativ auch direkt von der Webseite von Zend [1] heruntergeladen wer- den. LetoDMS_Lucene findet man im Download-Verzeichnis von LetoDMS. Alle Anpassungen in der LetoDMS-Konfiguration können über die Einstellungen- Seite erfolgen. Damit es funk- tioniert, müssen zunächst bei- de Pakete so installiert wer- den, dass sie über den PHP- Include-Path gefunden wer- den. LetoDMS_Lucene kann Erweitertes Suchformular mit Datenbank- und Volltextsuche man alternativ auch parallel zu

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 12 DOKUMENTATION

LetoDMS_Core auspacken und dann in den Ein- Liste aller indizierten Wörter und wo sie auftre- werden immer nur die Dokumente berücksichtigt, stellungen den Pfad unter „Lucene LetoDMS di- ten, denn es werden nicht nur die Inhalte, son- die sich seit der letzten Aktualisierung geändert rectory:“ entsprechend setzen. dern auch die Metadaten der Dokumente indi- haben. ziert. Die Einträge in der Liste, die mit „title:“ be- Die Suche selbst über das bereits erwähnte Wichtig ist noch das Verzeichnis lucene unter- ginnen, sind beispielsweise Wörter aus dem Titel zweite Suchformular ist eher einfach. Ein Feld halb des Content-Verzeichnisses und die Anga- eines Dokuments. Wenn man hier keine Einträ- für den zu suchenden Text sowie zwei Felder be des Pfads in den Einstellungen unter „Directo- ge findet, die mit „content:“ beginnen (dies sind (Kategorie und Besitzer), um das Suchergebnis ry for full text index:“. Hier wird später der Volltext- indizierte Wörter aus dem Inhalt), dann befindet einzuschränken, sorgen für Übersichtlichkeit. In Index abgelegt. sich entweder kein indizierbares Dokument im zukünftigen Entwicklungen ist eine Erweiterung DMS oder es fehlen noch Programme, die den um weitere Suchkriterien nicht ausgeschlossen. Es muss sichergestellt sein, dass das Verzeich- Inhalt der Dokumente in eine Textdatei konvertie- Auch die Verschmelzung von Datenbank- und nis vom User des Webservers geschrieben wer- ren. LetoDMS kann in der Version 3.3.0 bisher Volltextsuche ist denkbar. den kann. Als Letztes muss noch die Volltextsu- nur die Formate application/pdf, application/ms- che in den Einstellungen eingeschaltet werden word, application/vnd.ms-excel, audio/mp3, au- Es bleibt nur noch zu erwähnen, dass man zur und in der Bedienoberfläche sollte eine Check- dio/mpeg und text/plain indizieren. Dafür benö- Volltextsuche wie auch zu allen anderen Fragen box hinter dem Suchfeld in der Kopfzeile erschei- tigt man die zusätzlichen Programme pdftotext, zu LetoDMS im Forum von LetoDMS [2] oder un- nen. catdoc, ssconvert und id3. In der Version 3.4.0 ter der deutschen Webseite [3] Hilfe bekommen wird man weitere Formate und die passenden kann. Ein Klick auf „Suchen“ (ohne Eingabe eines Programme zur Indizierung in der Konfiguration LINKS Suchtextes) zeigt ein zweigeteiltes Suchformular. ablegen können. Links erscheint die schon bekannte Datenbank- [1] http://framework.zend.com suche und rechts die neue Volltextsuche. Werden neue Dokumente eingestellt, dann er- [2] http://forums.letodms.com/ scheinen diese nicht sofort im Fulltext-Index. Da- [3] http://www.letodms.de Jeder Versuch etwas zu suchen wird jedoch zu- für ist es notwendig, über den Verweis „Update nächst noch scheitern, weil zuvor der Index an- fulltext index“ auf der Einstellungen-Seite den In- gelegt werden muss. Dafür genügt ein Mausklick dex zu aktualisieren. Den Index nicht mit jedem Autoreninformation auf „Create Fulltext index“ in den Admin-Tools. Upload eines neuen Dokuments zu aktualisieren, Je nach Anzahl und Größe der Dokumente kann liegt vor allem darin begründet, dass dies mitun- Uwe Steinmann ist seit 1996 Ent- dies einige Zeit in Anspruch nehmen. Das Er- ter sehr lange dauern und den Webserver erheb- wickler Freier Software und seit gebnis ist eine eingerückte Liste mit allen Doku- lich belasten kann, insbesondere wenn mehrere Version 3.0.0 hauptverantwortlich für menten, die indiziert wurden, und einem Index Dokumente gleichzeitig oder sehr große Doku- LetoDMS. auf der Festplatte. Zur Kontrolle bietet sich jetzt mente hochgeladen werden. Die Aktualisierung ein Klick auf „Fulltext index info“ auf der Seite sollte daher regelmäßig vom Administrator (ggf. mit den Einstellungen an. Das Ergebnis ist eine über einen Cronjob) durchgeführt werden. Dabei Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 13 LATEX

Kollaboratives Schreiben mit LATEX von Patrick Meyhöfer b im wissenschaftlichen oder privaten Die Vor- und Nachteile Bereich: Möchte man die volle Kon- sind grundsätzlich nicht O trolle über das Aussehen seiner er- verschieden zur klassi- stellten Dokumente behalten, führt oft kein schen Diskussion über Weg an LATEX vorbei. Auch freiesMagazin ba- Nutzen und Gefahren siert auf den vielfältigen Möglichkeiten von des sogenannten Cloud- LATEX [1]. Eine LATEX-Umgebung ist mit TeX- Computing, bei dem alle Live auch recht schnell auf allen Betriebs- Daten und die eigentliche system eingerichtet [2]. Dieser Standard- Anwendung auf die Infra- weg zeigt jedoch ein paar Restriktionen auf. strukturen eines Anbie- Sowohl die Online-Verfügbarkeit des Doku- ters ausgelagert werden ments von jedem Ort aus sowie der kollabo- und in dessen Verantwor- rative Ansatz, dass mehrere Personen zeit- tungsbereich liegen [3]. gleich an einem Dokument arbeiten können, Ebenso sollte man sich ist mit den Standardmitteln der Desktopinstal- im Voraus Gedanken zu lation nicht zu erreichen. Daher sollen nach- Sicherheit und Seriosi- folgend Lösungsansätze vorgestellt werden, tät des entsprechenden die versuchen, die gewünschten Zusatzfunk- Anbieters machen. Auch tionen bereitzustellen. die mögliche Gefahr ei- ner plötzlichen Schlie- Cloud-Anbieter oder eigene Hosting- ßung des Dienstes mit Lösung? dem eventuellen Verlust LATEX-Editor von ScribTeX. seiner Daten gehört stets Vorangestellt sei an dieser Stelle angemerkt, mit in die Risikobetrachtung. Dennoch bieten die Internet zu bearbeiten, haben sich verschiedene dass es zwei grundlegende Optionen gibt, um Cloud-Lösungen für den Anwender eine schnelle Anbieter etabliert, die eine bereits fertig konfigu- das Ziel der Kollaboration in Verknüpfung mit der A und komfortable Einrichtung, die in der Regel in rierte LTEX-Umgebung bereitstellen. Online-Verfügbarkeit zu erreichen: wenigen Sekunden bereitsteht. So findet man neben dem reinen Online-Editor

A mit integriertem Syntax-Highlighting auch Mög- 1. Hosting der LTEX-Dokumente bei einem Online-LATEX-Editoren Cloud-Dienstleister lichkeiten, die erstellten Dateien auf dem jewei- Durch den zunehmenden Fortschritt der Web- ligen Server zu kompilieren und anschließend zu 2. eigener Server in Verbindung mit einem Versi- technologien und die deutlich größer werdenden betrachten. Um eine Auswahl zu treffen, bietet onskontrollsystem (SVN, Git, Mercurial usw.) Möglichkeiten, Dokumente in Echtzeit über das sich ein Vergleich der gängigsten Anbieter an.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 14 LATEX

Hinweis: Es werden jeweils nur die kostenlosen verfassen und das Dokument zu kompilieren zur Zusammenarbeit in der kostenlosen Version trü- Angebote der einzelnen Anbieter getestet, viele Verfügung. ben jedoch den guten Eindruck ein wenig. Angebote können jedoch über Abgabe eines klei- nen Betrages zusätzlich erweitert werden. Nach den Klick auf „Compile“ wird das Dokument ShareLaTeX im Hintergrund kompiliert und man bekommt im Im Gegensatz zu ScribTeX ist ShareLaTeX [6] ScribTeX Anschluss das fertig gerenderte PDF-Dokument noch ein junges Projekt, welches sich aktuell Ein interessantes Angebot macht das seit Ja- in einer Vorschau oder alternativ zum Down- noch in der Beta-Phase befindet, ohne jegliche nuar 2009 am Markt bestehende ScribTeX [4]. load angeboten. Der Kompilierungsvorgang geht Differenzierungen zwischen Bezahlaccounts und Nach einer kurzen Registrierung auf der Websei- schneller als auf meinem Desktop-Rechner. kostenlosen Accounts. te kann man drei verschiedene Projekte anlegen Sofern Fehler auftreten oder Warnungen seitens und insgesamt 50 MB an Speicher für seine Do- Der Aufbau und die Funktionsweise ist ähnlich des LAT X-Compilers bestehen, sind diese jeder- kumente, Bilddateien etc. verwenden. E komfortabel wie bei ScribTeX, auch hier steht ein zeit im Reiter „Log“ der PDF-Vorschau einsehbar. Leider stehen in der kostenlosen Version die Online-Editor zur Verfügung, der neben Syntax- Möglichkeiten der kollaborativen Bearbeitung an Die Vorteile von ScribTeX liegen neben der Ver- Highlighting auch die zugehörigen Klammern- Dokumenten nicht zur Verfügung, wodurch das sionskontrolle für die einzelnen Dateien beson- paare anzeigt. Einzig ein Befehlsvorschlag mit ansonsten gute Angebot etwas getrübt wird. ders auf der Unterstützung für das Versionskon- den in Frage kommenden Befehlen, wie man trollsystem Git für all seine Projekte [5]. es aus gewöhnlichen Entwicklungsumgebungen Der Editor und die Benutzeroberfläche wirken kennt, wäre wünschenswert. aufgeräumt. Es stehen in der Menüleiste lediglich Insgesamt macht ScribTeX einen ordentlichen die Möglichkeiten zu speichern, Kommentare zu Eindruck, die fehlenden Möglichkeiten der Der Vorteil von ShareLaTeX liegt vor allem auch im Bereich der Kollaboration. Es ist sehr einfach, über die Einstellungen einen weiteren Benutzer zum aktuellen Projekt mit Lese- und Schreibbe- rechtigungen auszustatten, sodass der Zusam- menarbeit nichts entgegen steht.

In Zukunft denkt man zur Refinanzierung des Projektes darüber nach, die Anzahl der Projekte zu limitieren. Es soll aber jederzeit einen kosten- losen Account geben [7].

Man sollte hier jedoch beachten, dass die Allge- meinen Geschäftsbedingungen [8] derzeit noch bearbeitet werden und man sie sich nach Ablauf PinsLog-Datei von ScribTeX. der Beta-Phase noch einmal anschauen sollte.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 15 LATEX

tablen Möglichkeiten der gemeinsamen Online- Bearbeitung von Dateien in mehren Projekten be- wiesen hat (siehe u.a. auch das Piratenpad der Piratenpartei [11])

Generell ist writeLaTeX eine der einfachsten und schnellsten Möglichkeiten, gemeinsam an LATEX- Dokumenten zu arbeiten. Es besteht ebenfalls die Möglichkeit, weitere Dokumente hochzula- den sowie das PDF-Dokument bzw. alle Datei- en als Zip-Datei anschließend herunterzuladen. Hier ist man allerdings auf maximal 10 zusätz- lich hinzufügbare Dateien (Bilder, .tex-Dateien, Bibliographie-Dateien usw.) limitiert, wodurch wri- teLaTeX eher für relativ kleine und schnell umzu- setzende Projekte geeignet ist.

LaTeX Lab Einen etwas anderen Ansatz als die bisher vorge- stellten Lösungen verfolgt LaTeX Lab [12]. Das Projekt steht unter der Apache Licence Version 2 und wird auf Google Code gehostet [13]. Es setzt direkt auf einer der bekanntesten Plattformen Oberfläche von ShareLaTeX. für Zusammenarbeit an Texten auf, nämlich auf Google Docs, und integriert in dieses einen LATEX- writeLaTeX direkt mit dem Editieren des Dokuments begin- Editor. Demzufolge muss man sich hier auch Ein dritter Vertreter, der sogar komplett ohne Re- nen können. nicht neu registrieren, sondern man muss über gistrierung auskommt, ist writeLaTeX [9]. Die Be- OAuth lediglich der Anwendung den Zugriff auf Die gesamte Benutzeroberfläche ist in zwei ho- dienung ist sehr einfach und intuitiv, denn nach Google Docs erlauben, damit LaTeX Labs auch rizontale Fenster geteilt, wodurch man mit einer dem Klick auf „Start Writing Now“ wird man auto- die Dateien im Google-Docs-Account speichern kurzen Verzögerung das Ergebnis direkt auf der matisch zu einem LAT X-Dokument weitergeleitet, kann. Voraussetzung ist hierfür lediglich, dass E rechten Seite sieht, welches man im Code-Editor welches direkt bearbeitet werden kann. Hierfür man auch bereits ein Google-Konto angemel- auf der linken Seite definiert hat. wird ein eindeutiger Link generiert, den man det hat. Der Vorteil von LaTeX Lab liegt auf der jetzt einfach seinen Freunden und Mitarbeitern Das Projekt setzt auf dem durchaus populären Hand: Man nutzt die Google-Technologien und am Projekt weiterleiten kann, die dann ebenfalls Etherpad [10] auf, welches bereits die komfor- hat ein einheitliches Bild wie aus Google Docs

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 16 LATEX

zurückspringen kann, falls man einmal diese früheren Änderungen braucht. Eigene Hosting- Lösung über ein Versionskontroll- system Wer seine Daten nicht aus der Hand geben will, weil er entweder den vor- gestellten Anbietern der verschiedenen Diens- te nicht vertraut oder weil es einfach vertrau- liche Dateien sind, die keinem Cloud-Anbieter anvertraut werden soll- ten, kann sich dennoch Schlicht gehaltene Oberfläche von writeLateX. behelfen, um eine mög- lichst umfangreiche Zu- bekannt, lediglich mit den speziellen Funktionen kompilieren und als PDF-Vorschau im Browser sammenarbeit und Verfügbarkeit seiner Doku- auf LATEX angepasst. angezeigt zu bekommen. mente zu erreichen. Hierfür benötigt man lediglich einen eigens auf- Generell erinnern die Funktionen am ehesten Der große Vorteil liegt bei LaTeX Labs an der gesetzten Server. Grundsätzlich ist es egal, ob an die der klassischen Desktop-Umgebungen tiefen Integration in Google Docs. So kann man man diesen mit einem zentralen Versionskontroll- wie Kile [14] oder Texmaker [15]. So stehen u.a. 1 GB an Daten speichern und hat die LAT X- E system wie Subversion [16] oder mit einem de- Möglichkeiten über das Menü zur Verfügung, um Dateien bei seinen normalen Dokumenten je- zentralen System wie Git [17] installiert. sich Aufzählungen generieren zu lassen, mathe- derzeit verfügbar, sofern man keine Aversio- matische Zeichenbefehle ausgeben zu lassen, nen allgemeiner Art gegenüber Google hegt. In Anbetracht der Möglichkeiten der Versionie- grundlegende Formatierungen zu nutzen und Zudem steht auch bei Google Docs stan- rung und Nachvollziehbarkeit, wer welche Ände- vieles mehr. Über die Iconleiste hat man zu- dardmäßig eine Versionierungsoption zur Ver- rungen am Dokument vorgenommen hat, sind dem einfach die Möglichkeit, das Dokument zu fügung, mit der man auf vorherige Versionen diese durchaus den Online-Lösungen überlegen,

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 17 LATEX

[4] http://www.scribtex.com/ [5] http://support.scribtex.com/entries/420897- accessing-your-projects-with-git [6] https://www.sharelatex.com/ [7] https://www.sharelatex.com/blog/posts/welcome. html [8] https://www.sharelatex.com/termsAndConditions. html [9] http://writelatex.com/ [10] http://etherpad.org/ [11] http://www.piratenpad.de/ [12] http://docs.latexlab.org [13] https://code.google.com/p/latex-lab/ [14] http://kile.sourceforge.net/ [15] http://www.xm1math.net/texmaker/ [16] http://subversion.tigris.org/ [17] http://git-scm.com/ [18] https://en.wikibooks.org/wiki/LaTeX/Collaborative_ LaTeX-Labs-Oberfläche im Stile von Google Docs. Writing_of_LaTeX_Documents die häufig nur eine gewisse Anzahl an Änderun- keinerlei Limitierungen von fremden Anbietern gen in der Versionshistorie abspeichern, wäh- angewiesen, sondern einzig auf die Limitierun- Autoreninformation rend man bei SVN & Co. alle Änderungen von gen, die der selbst aufgesetzte Server besitzt. Beginn des Dokuments einsehen kann [18]. Der Patrick Meyhöfer (Webseite) Bei freiesMagazin setzt man ebenfalls auf die Nachteil liegt eher bei der Zusammenarbeit in erkundet gerne neue und relativ un- eigene Hosting-Lösung mit einem Subversion- Echtzeit. Man kann hier die Änderungen am Do- bekannte Software und veröffentlicht Server, da man die eigenen Daten und die der kument nicht so direkt und komfortabel verfolgen, entsprechende Erfahrungsberichte Autoren nicht aus der Hand geben will. wenn man nicht ständig Updates der Quelldatei- regelmäßig in seinem Blog. en machen möchte. Hier sind die Online-Tools LINKS deutlich im Vorteil. [1] https://de.wikipedia.org/wiki/LaTeX [2] http://wiki.ubuntuusers.de/LaTeX Im Gegenzug ist man bei der Projektgröße Diesen Artikel kommentieren oder der Anzahl an Mitarbeitern am Projekt auf [3] https://de.wikipedia.org/wiki/Cloud-Computing

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 18 CRM

Tine 2.0 – Installation und Grundkonfiguration von Andreas Weber

nfang März 2012 wurde die neue Ver- Es handelt sich also nicht um einen Ableger tion mittels Paketquelle (Repository) und die ma- sion „Milan” der Groupware Tine 2.0 (Fork) von EGroupware, sondern um eine voll- nuelle Installation beschrieben werden. Der Vor- A veröffentlicht. Höchste Zeit also, sich ständig neu entwickelte Software. Der Vorteil die- teil bei der Installation mittels Paketquelle liegt die neue Version anzusehen. Im folgenden Ar- ser kurzen Historie ist, dass Tine 2.0 auf moder- darin, dass die Installation schnell und einfach tikel werden die gebräuchlichsten Installati- ner Technik basiert. In den Grundfunktionen ist durchgeführt wird und man sich viele manuel- onsmethoden sowie die Grundkonfiguration die Groupware bereits ausgereift und für den pro- le Schritte spart. Allerdings steht diese Variante von Tine 2.0 beschrieben. duktiven Einsatz geeignet. Darüber hinaus steht nur für Debian-basierte Linux-Distributionen zur Tine 2.0 mit vollem Funktionsumfang als Open- Verfügung. Kommt eine andere Linux- oder BSD- Einleitung Source-Software zur Verfügung. Kommerzielle Distribution, Mac OS X oder Windows zum Ein- Bei Tine 2.0 [1] handelt es sich um eine browser- Unterstützung [5] und Hosting [6] wird durch das satz oder möchte man statt des Apache- oder basierte Groupware, zu deren Ausstattung unter Unternehmen Metaways [7] angeboten, welches lighttpd-Webservers einen anderen Webserver anderem folgende Elemente gehören: das Projekt finanziert. einsetzen, so muss man die manuelle Installation verwenden. Beide Installationsmöglichkeiten set- ein Adressbuch  Voraussetzungen zen jeweils voraus, dass ein MySQL-Server be- ein Kalender  Für die Installation von Tine 2.0 wird ein Webser- reits installiert worden ist.  eine E-Mail- und Aufgaben-Verwaltung ver mit PHP (mindestens in der Version 5.2.1, Installation mittels Paketquelle  ein Projekt-Management empfohlen ist Version 5.3) benötigt. Als Webser- ver kann Apache, lighttpd, nginx oder der IIS Da in den großen, bekannten Linux-Distributio-  die Anbindung an Asterisk [2] von Microsoft verwendet werden. Wichtig ist da- nen keine Tine 2.0-Pakete in den offiziellen  eine Customer-Relationship-Management- Paketquellen vorhanden sind, muss zuerst die Software (CRM) bei, dass der Webserver das URL-Rewriting [8] unterstützt, da dies für ActiveSync und ande- Tine 2.0-eigene Paketquelle eingebunden wer- die Synchronisation von mobilen Geräten mit-  re Komponenten relevant ist. Ferner muss ein den. Diese existiert wie gesagt nur für Debian tels ActiveSync, CalDAV und CardDAV, MySQL-Server in Version 5.0 oder höher vorhan- Squeeze und Ubuntu Natty Narwhale [9]. und seit Milan auch ein Datei-Manager  den sein. Da diese Software-Voraussetzungen Nach dem Einbinden der Paketquelle und der Ak- Zusätzlich kann der Funktionsumfang mit Hil- mittlerweile auf allen Betriebssystemen erfüllbar tualisierung der Paketverwaltung kann man das fe von Community-Downloads erweitert werden. sind, kann man Tine 2.0 sowohl auf Linux- und Paket tine20 installieren. Dadurch ist zum Beispiel die Anbindung an Sip- BSD-Distributionen als auch unter Mac OS X Gleich zu Beginn der Installation erscheint eine gate [3] möglich. oder Windows installieren. Für Tine 2.0 sollte man aber einen aktuellen Browser verwenden. Abfrage, ob Apache oder lighttpd als Webserver Tine 2.0 war ursprünglich als neue Version der verwendet werden soll. Es wird jedoch empfoh- bekannten Lösung EGroupware [4] gedacht und Installation len, Apache als Webserver zu verwenden, da entstand nach Unstimmigkeiten zwischen den Es gibt mehrere Möglichkeiten, Tine 2.0 zu in- beim Setup die Integration von lighttpd noch nicht Entwicklern unabhängig und von Grund auf neu. stallieren. In diesem Artikel sollen die Installa- ganz abgeschlossen ist [10]. PHP und alle not-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 19 CRM wendigen Erweiterungen installiert das Setup, so- Grundkonfiguration fern nötig, automatisch. Tine 2.0 bietet eine Fülle an Im Verlauf der Installation wird die Datenbank für Funktionen und Möglichkeiten. Tine 2.0 entsprechend eingerichtet. Außerdem Im Setup kann sowohl die An- muss ein Benutzername samt Passwort für den bindung an einen Mail-Server browser-basierten Teil des Tine 2.0-Setups ange- als auch an Verzeichnisdienste geben werden. Damit ist der konsolen-basierte konfiguriert werden, Pfade und Teil der Installation abgeschlossen. Der browser- Protokoll-Einstellungen können basierte bzw. grafische Teil der Installation wird vorgenommen und die Anwen- im Anschluss an den Abschnitt über die manuel- dungen von Tine 2.0 können in- le Installation beschrieben. stalliert oder auch deinstalliert werden. Manuelle Installation Für eine erfolgreiche manuelle Installation ist ei- Das Tine 2.0-Setup wird in ei- ne bereits vorkonfigurierte Umgebung bestehend Auswahl des Webservers. nem Browser über die Adres- aus Webserver mit PHP-Unterstützung und ei- se http://www.hostname.tld/ nem MySQL-Server notwendig. Zudem muss ei- Nun editiert man die Datei config.inc.pgp tine20/setup.php aufgerufen. Nach erfolgrei- ne Datenbank mit dazugehörigem Benutzer für (mit Root-Rechten), um die Konfiguration für die cher Anmeldung müssen zunächst die diver- Tine 2.0 bereits eingerichtet sein. Als Erstes Datenbank und den Setup-Benutzer samt Pass- sen Lizenzverträge und die Datenschutzver- lädt man das aktuelle Archiv herunter und ent- wort vorzunehmen. Ist die Konfigurationsdatei für einbarung angenommen werden, da das Tine packt es in das Root-Verzeichnis des Webser- den Webserver nicht beschreibbar, so kann man 2.0-Gesamtpaket aus einer Vielzahl an Open- vers (/var/www/ unter Linux): nach Abschluss der Konfiguration eine aktuelle Source-Lizenzen (AGPLv1, AGPLv3, New BSD License, LGPLv2.1, LGPLv3, Apache License $ wget http://www.tine20.org/downloads/2012-03-2/tine20-allinone_2012y 2.0 und GPLv3) besteht. Danach folgt ein erster -03-2.tar.bz2 Test der Umgebung. # mkdir /var/www/tine20 # tar xfvj tine20-allinone_2012-03-2.tar.bz2 -C /var/www/tine20 Im Abschnitt „Config Manager“ werden die Datenbank-Verbindung und verschiedene Da Tine 2.0 eine Konfigurationsdatei verwendet, Version aus dem grafischen Teil des Setups her- Verzeichnis-Pfade konfiguriert oder geändert, je- erstellt man eine Kopie der im Archiv enthaltenen unterladen und auf dem Webserver platzieren. doch ist bei einer Installation über die Paketquel- Vorlage: Bei der manuellen Installation sind weitere Schrit- le an dieser Stelle in der Regel keine Änderung te notwendig, um die Weiterleitungsregeln für notwendig. # cd /var/www/tine20 ActiveSync, CalDAV und CardDAV einzurichten. # cp config.inc.php.dist config.incy Diese unterscheiden sich allerdings nach dem Im Abschnitt „Authentifizierung/Benutzerkonten“ .php Typ des Webserver, der eingesetzt wird [11] [12]. muss der initiale administrative Benutzer mit

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 20 CRM

Teil und das Adressbuch vorin- Der Befehl muss bei einer manuellen Installation stalliert. von Tine 2.0 entsprechend angepasst werden. Im Grunde kann Tine 2.0 be- Durch diesen Cronjob prüft Tine 2.0 jede Minu- reits jetzt als Adressbuch genutzt te, ob Kalenderalarme auszulösen sind. Ist das werden. In der Regel werden der Fall, versendet die Groupware eine E-Mail an mittels einer Groupware Adress- die am Termin teilnehmenden Benutzer. buch, Kalender und E-Mail zur Die erste Anmeldung Verfügung gestellt. Welche An- wendungen man nun innerhalb Um sich in Tine 2.0 anzumelden, ruft man in ei- von Tine 2.0 installiert, ist von nem Browser die Adresse http://www.hostname. den jeweiligen Anforderungen ab- tld/tine20 auf. Je nachdem, wie die Benutzerau- hängig. Man kann mehrere An- thentifizierung durchgeführt wird, kann man sich wendungen auf einmal installie- ggf. mit einem bestehenden Benutzer anmel- ren, indem man die betroffenen den. Ist keine Authentifizierung mittels LDAP oder IMAP konfiguriert, wird gegen die Tine 2.0 Tine 2.0-Setup – Config Manager. Anwendungen auswählt und auf „Install application“ klickt. Nach ei- eigene Benutzerverwaltung, die innerhalb der zugehörigem Passwort angelegt werden. Erst nem kurzem Moment stehen die Anwendungen MySQL-Datenbank liegt, authentifiziert. Daraus nachdem dieser Schritt vollzogen ist, kann die dann zur Verfügung. Nun kann man sich vom Se- ergibt sich, dass man sich bei der ersten Anmel- weitere Konfiguration erfolgen. Ferner kann hier tup ab- und am eigentlichen Tine 2.0 anmelden. dung nur mit dem im Setup definierten, initialen konfiguriert werden, ob Benutzer mit SQL, LDAP administrativen Benutzer anmelden kann. Kalenderalarme oder IMAP authentifiziert werden. Sobald man angemeldet ist, kann man weitere Damit Kalenderalarme funktionieren, muss ne- Benutzer anlegen. Dazu wählt man links oben Im Abschnitt „Email“ wird die Konfiguration für ben der erforderlichen E-Mail-Konfiguration ein den Reiter „Tine 2.0“ aus und klickt dort auf „Ad- den IMAP- und SMTP-Server vorgenommen. Cronjob angelegt werden. Diesen fügt man durch min“. In diesem Bereich können die Benutzer Hier können sowohl der jeweilige Standard, als den Aufruf von auch DBmail, Cyrus, Dovecot und Postfix konfi- verwaltet, Berechtigungen vergeben und weitere guriert werden. Zwar ist für den Betrieb von Tine # crontab -e Konfigurationen vorgenommen werden. Je nach- 2.0 grundsätzlich kein Mail-Server notwendig, al- dem, welche Anwendungen installiert und über lerdings benötigt man diesen für die diversen Ka- mittels folgender Zeile hinzu: das Berechtigungssystem für die Benutzer zuge- lenderalarme, Termineinladungen usw. lassen wurden, steht dem Anwender nach der * * * * * php -d include_path=.:/y Anmeldung der entsprechende Funktionsumfang usr/share/tine20:/usr/share/tine20/ Im Abschnitt „Application Manager“ können y zur Verfügung. die einzelnen Tine 2.0-Anwendungen instal- library:/etc/tine20 /usr/share/y liert werden. Direkt nach der Installation ist tine20/tine20.php --method Tinebasey Nach der ersten Anmeldung sieht man zunächst neben der „Tinebase“ nur der administrative .triggerAsyncEvents noch nicht allzu viel, da die einzelnen Anwen-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 21 CRM dungen noch nicht direkt angezeigt werden. Um sich im Browser nahezu wie eine klassische gend auf ein System wechseln zu müssen, für nun eine Anwendung aufzurufen, muss man links Anwendung verhält. Die vielen Möglichkeiten das unter Umständen keine Expertise im Haus oben auf „Tine 2.0“ klicken und die gewünsch- zur Synchronisierung von mobilen Geräten ma- vorhanden ist. te Anwendung aufrufen. Daraufhin öffnet sich ei- chen die Software gerade für Unternehmen mit LINKS ne neue Registerkarte innerhalb der Groupwa- Außendienst-Mitarbeitern interessant. Im Gegen- [1] http://www.tine20.org/ re. Die Registerkarten kann man frei anordnen satz zu manch anderer Open-Source-Lösung [2] http://www.asterisk.org/ und Tine 2.0 merkt sich, welche Anwendungen steht der volle Funktionsumfang zur Verfügung, [3] http://www.sipgate.de man zuletzt in welcher Reihenfolge geöffnet hat- so dass keine zusätzlichen Module oder Pro- te. Die Oberfläche wirkt aufgeräumt und die meis- grammteile kostenpflichtig lizenziert werden müs- [4] http://www.egroupware.org/ ten Funktionen sind selbsterklärend. sen. [5] http://www.tine20.com/ [6] http://www.officespot.net/ Die stete Weiterentwicklung und Verbesserung Von Vorteil ist, dass vom Projekt immer wieder [7] http://www.metaways.de/ sorgen ihrerseits dafür, dass die Community wei- Umfragen vorgenommen werden, bei denen es [8] http://de.wikipedia.org/wiki/Rewrite-Engine ter wächst. Für Fragen und Hilfe steht neben der um die Benutzbarkeit (Usability) geht. Die Ergeb- [9] http://www.tine20.org/wiki/index.php/Admins/ kommerziellen Unterstützung ein Forum zur Ver- nisse dieser Umfragen fließen in das Produkt Install_Howto fügung, in dem die Entwickler selbst mitlesen und ein, wodurch man deutlich die intuitive Bedie- [10] http://www.andysblog.de/tine-2-0-lighttpd-als- antworten. nung und den Arbeitsablauf (Workflow) spürt. webserver Von großem Vorteil ist auch die Plattformun- [11] http://www.tine20.org/wiki/index.php/Admins/ Fazit abhängigkeit der Groupware, denn so ist man Synchronisation Tine 2.0 ist eine leicht zu installierende Group- nicht an ein bestimmtes Betriebssystem gebun- [12] http://www.tine20.org/wiki/index.php/Admins/ ware, die auf moderner Technik beruht und den. Man kann den bzw. die zugrunde liegenden Thunderbird-Synchronisation Serversysteme je nach Kundenwunsch oder -projekt auswäh- Autoreninformation len. Andreas Weber (Webseite) ist selbständiger IT-Dienstleister und Ferner dürfte es im Blogger. Er ist seit über 10 Jahren Zuge des Investitions- in der IT tätig und beschäftigt sich schutzes für Unter- täglich mit Themen rund um Server nehmen interessant und Netzwerke. sein, vorhandene Be- triebssystemlizenzen für Tine 2.0 nutzen zu Tine 2.0-Setup – Application Manager. können, ohne zwin- Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 22 PROGRAMMIERUNG

Astah – Kurzvorstellung des UML-Programms von Dominik Wagenführ

ie Ausgabe von freiesMagazin [1] im natürlich, mit dem Ver- Februar enthielt einen kleinen Test trieb von Lizenzen kom- D diverser UML-Programme. Dabei wur- merziell erfolgreich zu de aber das UML- und Mindmap-Programm sein. Astah [2] übersehen, worauf mich Scott Reece von der entwickelnden Firma Change Der Test Vision per E-Mail aufmerksam machte. In die- Wie bei den im Febru- sem Artikel soll gezeigt werden, ob die E-Mail- ar getesteten Program- Nachricht eine gute Idee war und ob das Pro- men soll ein simples gramm mit anderen mithalten kann. UML-Klassendiagramm erstellt werden, welches Einleitung die gebräuchlichen Ele- Astah (auch astah* geschrieben) gibt es bereits mente wie Klassen, In- seit 1996 auf dem Markt. Damals hieß es noch terfaces, Enums, Reali- JUDE (nicht wie der Religionsangehörige ausge- sierung, Generalisierung, sprochen, sondern wie der Schauspieler Jude Abhängigkeit, Kompositi- Law), wurde aber wegen Bedenken von deut- on und Aggregation bein- schen Nutzern aufgrund der Doppeldeutigkeit halten soll. Daneben wur- de aber auch noch ein des Namens 2009 in Astah umbenannt [3]. Das Startbild von Astah im Nimbus-Look. kurzer Blick auf Sequenz- Astah auf ein UML-Programm zu degradieren sich so mit anderen UML-Programmen messen und Aktivitätsdiagramme geworfen. wäre ungerecht, da es auch andere Funktionen kann. Mir wurde zwar angeboten, am „Friends wie Mind Maps, Entity-Relationship-Diagramme, of Astah“-Programm [5] teilzunehmen, bei dem Installation und Start Flowcharts und mehr unterstützt. Diese Funk- man eine 1-Jahres-Lizenz für die Professional Auf der Downloadseite für die Community- tionen sind aber fast ausschließlich der kosten- Edition bekommt, aber die Funktionen der Com- Edition [7] gibt es neben den Windows- und Mac- pflichtigen Professional Edition [4] von Astah vor- munity Edition reichen für den Test aus. Versionen auch mehrere Pakete für Linux, dar- behalten. Daneben gibt es noch eine kosten- unter die bekannten DEB- und RPM-Pakete, die pflichtige UML-Edition, welche vor allem die UML- Dennoch ist es schön zu sehen, dass Change über die Paketverwaltung installiert werden kön- Funktionalität mitbringt. Vision den Community-Gedanken fördert und ak- nen. tive Blogger, Autoren und Referenten durch so Für den Artikel wurde die kostenlose Community ein Angebot unterstützen will. Daneben werden Für den Test wurde die Zip-Version ohne Ja- Edition von Astah getestet, welche alle benö- auch diverse Open-Source-Projekte mit Lizen- va Runtime Environment (JRE) und ohne Instal- tigten UML-Funktionen zur Verfügung stellt und zen gestützt [6]. Insgesamt versucht man aber ler heruntergeladen. Das Zip-Archiv wird einfach

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 23 PROGRAMMIERUNG entpackt und danach kann man (nach dem Aus- rechten Maustaste in die Klassenübersicht und die Linie per Drag&Drop dahin zieht, wo sie hin führbarmachen der Startdatei) Astah aufrufen: wählt dort „Create Model“ oder man klickt das soll. Bei der Selektion ist aber zum Beispiel die gewünschte Icon in der Symbolleiste über dem Auswahl eines Paketes ungewöhnlich, da man $ unzip astah-community-6_5_1.zip Diagramm an. Daneben kann man auch direkt nicht in das Paket direkt klicken darf, sondern den $ cd astah_community auf eine Klasse im Diagramm klicken und erhält Paketrand bzw. -kopf anklicken muss. Hieran ge- $ chmod +w astah dort zwei kleine, farbige Symbole, um Methoden wöhnt man sich aber schnell. $ ./astah (grün) oder Attribute (orange) hinzuzufügen. Die Sichtbarkeit von einzelnen Attributen oder Für die Benutzung muss eine JRE wie OpenJDK Die Eingabe der Methoden und Namen kann Operationen lässt sich über die rechte Maustas- installiert sein. Die Oberfläche ist leider nur in man praktischerweise direkt in die jeweilige Zei- te auf eine Klasse und der Wahl von „Extended Englisch vorhanden. le eintippen, muss sich dabei aber an die UML- Visibility“ einstellen. Schade ist, dass es keine di- Notation halten. Alternativ kann man in der lin- rekte Möglichkeit gibt, Elemente auszublenden. Klassendiagramme ken Übersicht über zahlreiche Reiter die Metho- Die Pakete und Klassen lassen sich in Astah den und Attribute genau spezifizieren. Schade ist Positiv hervorzuheben ist das Auto-Resize der sehr intuitiv erstellen. Entweder man klickt mit der es dabei, dass alle Methoden zwingend einen Klassen, sodass diese automatisch immer so viel Rückgabewert benötigen, der im Not- Raum einnehmen, wie sie echt benötigen. Bei fall eben void ist. Dies ist etwas ver- den Paketen hat man sich diese Funktion leider wirrend, da beispielsweise Konstrukto- gespart, sodass man immer manuell nachberei- ren gewöhnlich keine Rückgabewerte ten muss, wenn ein Bild wenig Platz einnehmen haben. soll. Sehr schön sind die Voreinstellungen Das Auto-Layout konnte nicht getestet werden, für Attribute und Operationen. So sind da es in der Community-Edition nicht zur Verfü- Attribute per Standard private, Ope- gung steht. rationen dagegen sind public, so wie das der Regelfall sein sollte. Bei Inter- Insgesamt sind die Diagramme mit den Farbver- faces werden Methoden auch gleich läufen und ihrer klaren Schrift schön anzusehen. als abstrakt gekennzeichnet. Der Schatten um alle Elemente ist etwas störend, Enums kann man leider nicht direkt kann aber leicht in den Optionen deaktiviert wer- eingeben, dafür kann man aber jeg- den. lichen Stereotyp eingeben und auch Enums darstellen. Die Verbindungsli- Andere Diagramme nien zwischen Elementen kann man Die anderen Diagramme wie Sequenzdiagramm gerade, eckig oder rund darstellen oder Aktivitätsdiagramm sind gut nutzbar und Die Klassendiagramme sind optisch ansprechend. und auch manuell routen, indem man bieten viele Optionen. So gibt es bei den

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 24 PROGRAMMIERUNG

wie intuitiv und gut sich das Pro- fehler behoben, sodass dies zu verschmerzen gramm testen lässt. ist.

Dadurch, dass Astah auf Java zu- Das Fazit fällt also überaus positiv aus. Astah rückgreift, ist es zwar etwas lang- ist ein gutes UML-Programm, was auch in der samer in der Bedienung, kann da- Community Edition zahlreiche Funktionen für die für aber plattformunabhängig einge- Erstellung von Software-Designs bietet. Wer an- setzt werden – für die Interoperabi- dere UML-Programme kennt, wird sich in Astah lität über mehrere Plattformen hin- auf alle Fälle schnell zurechtfinden. Die optisch weg ein nicht von der Hand zu wei- ansprechende Gestaltung macht es dabei zu ei- sendes Argument. ner echten Alternative zu dem in freiesMagazin 02/2012 empfohlenen Visual Paradigm [1]. Eher von Nachteil ist, dass das Pro- INKS gramm nur in Englisch bereit steht. L Natürlich haben die meisten Men- [1] http://www.freiesmagazin.de/freiesMagazin-2012- schen im Informatik-Umfeld damit 02 keine Probleme, dennoch wäre eine [2] http://astah.net/de Lokalisierung schön gewesen. [3] https://secure.wikimedia.org/wikipedia/en/wiki/ Astah#History Wichtig für Linux-Nutzer ist, dass [4] http://astah.net/editions Astah nicht frei ist. Die Firma [5] http://astah.net/friends-of-astah Change Vision will mit Astah Geld [6] http://astah.net/friends-of-astah/friends verdienen und stellt die Community [7] http://astah.net/download#community Edition nur kostenlos zur Verfügung. Auch das Sequenzdiagramm bietet alles benötigte. Wer damit ein Problem hat, muss sich eine der freien Alternativen an- Autoreninformation Sequenzdiagrammen alle relevanten Artefakte, schauen, wovon es aber kaum wel- die man benötigt. che gibt, die vollends überzeugen können. Dominik Wagenführ (Websei- te) ist Software-Entwickler und wirft Fazit Ganz bugfrei ist Astah nicht. So wechselte im täglich mit UML-Diagrammen um sich. Es sei sicherheitshalber vorab gesagt, dass nicht Test die gesamte Schriftfarbe im Diagramm plötz- jede Option und Einstellung von Astah getes- lich auf Türkis und es wurde eine sehr pixelige tet wurde. Im Test wurde nur versucht, ein Schriftart benutzt. Aber nach einem Speichern paar Diagramme zu zeichnen und zu prüfen, und Laden des Programm war der Darstellungs- Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 25 REZENSION

Rezension: PyQt und PySide von Jochen Schnelle

ie Qt-Bibliothek [1] gehört zu den zur Anbindung von Qt, PyQt und PySide, eben- Audioplayer mit Hilfe von PyQt/PySide realisiert bekanntesten und populärsten, wenn falls äquivalent behandelt. Auch hier wird nach werden. Dabei wird für die Erstellung der Ober- D es um die Erstellung von grafischen Notwendigkeit im Beispielcode immer auf Unter- fläche an den meisten Stellen auch wieder auf Benutzeroberflächen geht. Das vorliegende schiede bei der Nutzung eingegangen. QML zurück gegriffen. Buch namens „PyQt und PySide“, welches Anfang dieses Jahres neu erschienen ist, Inhalt Darstellung möchte in die Nutzung der Bibliothek in Kom- In allen Kapiteln findet man viele Codebeispie- Insgesamt umfasst das Buch sechs Kapitel. Das bination mit Python einführen. Das verdeut- le zu den behandelten Themen. Hier fällt posi- Erste, welches mit etwas mehr als 50 Seiten licht auch der Untertitel des Buchs: „GUI- und tiv auf, dass alle Beispiele komplett und lauffä- auch das Umfangreichste ist, bietet eine Ein- Anwendungsentwicklung mit Python und Qt“. hig sind, es gibt keine Codefragmente oder ähnli- führung in die Nutzung von PyQt/PySide. Die- ches. Leider schweigt sich das Buch darüber aus, se beinhaltet unter anderem gängige grafische Umfang ob man die Beispiele auch im Internet herunter- Elemente und Dialoge sowie das Konzept von Die Qt-Bibliothek ist sehr leistungsfähig und um- laden kann. fangreich, die im Buch beschriebenen Python- Signalen und Slots. Im zweiten Kapitel wird auf Module PyQt und PySide unterstützen nahezu die Internationalisierung eigener Programme so- Weiterhin enthält das Buch relativ viele Bilder den kompletten Funktionsumfang. Von daher ist wie den Einsatz des Qt-Designers zur Gestaltung von den grafischen Oberflächen und Program- es auffällig, dass das Buch relativ dünn ist, es von grafischen Benutzeroberflächen eingegan- men, welche im Rahmen des Buchs entwickelt hat nur etwas mehr als 200 Seiten. Die offiziel- gen. Im folgenden Kapitel beschreibt der Autor, werden. Diese sind zwar durchgehend in Grau- le Dokumentation von Qt – ebenso wie die von wie (umfangreichere) eigene Programmprojekte stufen gedruckt, nichtsdestotrotz aber gut lesbar PyQt/PySide – ist um ein Vielfaches umfangrei- strukturiert werden können. Auch wird hier die und aussagekräftig. cher. Das Anliegen des Buchs ist aber, die Le- Erstellung von Paketen für Linux und Installer für ser in die Nutzung von Qt aus Python heraus Windows beschrieben. Das vierte Kapitel widmet Die weiter oben erwähnten Beispielanwen- einzuführen, also quasi den initialen Anstoß zu sich dem Thema Qt-Quick und QML, welches dungen bieten alle einen guten Einblick in die geben, und kein umfassendes Referenzwerk zu wohl in Zukunft zunehmend Bedeutung für Qt ge- Möglichkeiten von Qt für ein paar gängige Ein- sein. Dies wird auch explizit in der Einleitung er- winnen wird. Mit Hilfe von QML wird hier ein ein- satzgebiete von (Heim-)Computern wie dem Sur- wähnt. facher Feedreader entwickelt, welcher bei einem fen im Internet oder dem Betrachten von Bildern. Klick auf einen Feedtitel die entsprechende Seite Alle Programme sind ohne weiteres einsatzfähig, Da Qt plattformübergreifend eingesetzt werden direkt innerhalb der Qt-Anwendung anzeigt. Die nur ist der Funktionsumfang natürlich entspre- kann, geht das Buch auch auf die verschiedenen, letzten beiden Kapitel beschreiben dann noch chend gering. Nichtsdestotrotz bieten sie eine so- gängigen Betriebssysteme ein. Dies sind in ers- vier Beispielanwendungen, bei denen ein einfa- lide Codebasis für eigene Weiterentwicklungen ter Linie Linux und Windows. Wo immer notwen- cher Webbrowser, ein Codeeditor für Javascript- und Erweiterungen. Lediglich der Audioplayer dig, wird aber auch MacOS erwähnt. Des Weite- Code, welcher direkt innerhalb des Editors aus- fällt gegenüber den anderen Anwendungen et- ren werden die beiden gängigen Python-Module geführt werden kann, ein Bildbetrachter und ein was ab, weil er nur mit WAV-Dateien umgehen

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 26 REZENSION kann. Dies ist aber wenig dem Autor anzulasten Wie in der Einleitung bereits erwähnt, soll das Allerdings dann sicherlich nicht so kompakt und als vielmehr der Qt-Bibliothek. WAV-Dateien sind Buch als Einführung in das Thema Qt mit Python in sich schlüssig zusammengefasst. Wer sich mit im Moment nämlich die einzigen, die über alle dienen. Entsprechend findet man an vielen Stel- der Nutzung von Qt aus Python heraus beschäf- Plattformen hinweg von Qt unterstützt werden. len weiterführende Links, mit denen das gerade tigen möchte, findet in dem Buch eine solide Gezeigte vertieft werden kann. Die Links sind da- Grundlage für den Einstieg in das Thema. Schon erstellter Code wird im Laufe des Buchs, bei durchgehend als Fußnoten ausgeführt, was LINKS wo passend, auch immer wieder aufgegriffen und dem Lesefluss zugute kommt. verfeinert oder alternativ implementiert, wodurch [1] http://qt.nokia.com/ das Buch einen guten Zusammenhalt und eine Apropos Lesefluss: Der Schreibstil des Au- Art „roten Faden“ erhält. tors lässt sich als „unspektakulär“ beschreiben. Sprich: Sachlich, gut und flüssig zu lesen, oh- Autoreninformation ne negative (oder positive) Auffälligkeiten. Somit Buchinformationen Jochen Schnelle (Webseite) pro- liegt der Fokus auch durchweg auf dem Inhalt. Titel PyQt und PySide – GUI- und Anwen- grammiert gerne in Python und dungsentwicklung mit Python und Qt Fazit nutzt zur Erstellung von grafischen Oberflächen die Qt-Bibliothek über Autor Peter Bouda „PyQt und PySide – GUI- und Anwendungs- PySide. Verlag Open Source Press, 2012 entwicklung mit Python und Qt“ bietet eine gute Umfang 224 Seiten Einführung in das Thema. Neues oder Highlights ISBN 978-3941841505 bietet das Buch zwar nicht – äquivalente Infor- Preis 29,99 C mationen sind wohl auch im Internet zu finden. Diesen Artikel kommentieren

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

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 27 REZENSION

Rezension: C++11 programmieren von Dominik Wagenführ

as Buch „C++11 programmieren“ von Etwas, was man sich von mehr technischen Bü- Klassen definiert, sondern es werden nur Struk- Torsten T. Will wirbt mit dem Untertitel chern wünschen würde: ein Vorwort, in dem die turen genutzt. Der Autor weist aber am Anfang D„60 Techniken für guten C++11-Code“. Zielgruppe klar definiert wird, sowie ein Beispiel- darauf hin, dass dies für eine echte Programmie- Die Rezension soll zeigen, ob das stimmt. kapitel, in dem der Aufbau und die Syntax der rung sehr schlechter Stil wäre und man sich dar- späteren echten Kapitel erklärt wird (S. 17 ff.). So an kein Beispiel nehmen sollte (S. 22). Redaktioneller Hinweis: Wir danken dem Ver- hat man keine Probleme, den Text und die Aus- lag Galileo Computing für die Bereitstellung des zeichnungen zu verstehen. Der zweite Teil ist dann der interessanteste des Rezensionsexemplars. Buches, denn es wird auf die neuen Sprachme- Der Aufbau eines Kapitels beginnt mit einer kurz- chanismen von C++11 eingegangen. So kom- Hintergrund en Einleitung, in der man auch mithilfe von kurz- men unter anderen die neue Art der Initialisie- Der neueste C++-Standard sollte eigentlich im en Codebeispielen das neue Thema klar und ver- rung, Typsicherheit, const_expr, finale Klassen letzten Jahrzehnt veröffentlicht werden, nachdem ständlich erläutert bekommt. Danach folgt ein Ab- und Ableitungen, die neue Verschiebesemantik die letzte Standardisierung 2003 stattfand. Der schnitt mit detaillierten Hintergründen, die sehr und RValues sowie Templates vor. Ob auf al- Prozess zog sich aber hin, sodass aus dem an- genau auf die Beispiele eingehen und alles erklä- les Wichtige des C++11-Standards eingegangen gedachten C++0x irgendwann ein C++11 wurde. ren. Am Ende des Kapitels steht ein Mantra, wel- wird, kann ich nicht beurteilen; die 200 Seiten Im Oktober 2011 wurde der Standard dann offizi- ches noch einmal ganz kurz in ein, zwei Sätzen lesen sich aber sehr informativ und man be- ell verabschiedet [1]. zusammenfasst, was die Essenz des Kapitels ist. kommt ein sehr guten Einblick in die neue Syn- tax. Vor allem kann man sehr leicht herausfil- Das Buch „C++11 programmieren“ liefert einen Thematisch gliedert sich das Buch in fünf Teile. tern, was einem selbst wichtig erscheint und Überblick über einen Teil der Neuerungen von Der erste Teil soll dabei an C++03 erinnern (al- welches Sprachfeature man eher nicht sinnvoll C++11 und richtet sich damit vorrangig an er- so den C++Standard aus 2003), damit man die einsetzen kann. Interessant wäre noch zu wis- fahrene C++-Programmierer, die auf dem neues- Neuerungen von C++11, die in anderen Teilen sen, ob die Dreierregel [2] mit der neuen Ver- ten Stand der Technik gehalten werden wollen. beschrieben werden, besser versteht. Prinzipiell schiebesemantik in eine Fünferregel umgeschrie- Auch wenn das Buch keine vollständige Liste der wäre das eine gute Idee, wenn der Autor dies ben werden muss. Torsten T. Will deutet so et- Neuerungen beinhaltet, kann es sicherlich auch konsequent eingehalten hätte. So vermischen was jedenfalls an, zumal C++ nun noch weniger als Nachschlagewerk benutzt werden. Für den sich in diesem Teil C++03- und C++11-Syntax, Standard-Konstruktoren und -Operatoren erstellt, Einstieg in die C++-Programmierung ist es aber was das Verständnis der Beispiele nicht erleich- wenn man es nicht explizit sagt. gänzlich ungeeignet. tert. Ständig fragt man sich: ‚Hm, das kannte ich ja gar nicht. Ist das schon C++11 oder kenne ich Mir selbst haben vor allem die neuen const- Aufbau nur den C++03-Standard nicht gut genug?‘ Möglichkeiten gefallen (S. 102), in die auch in Wer sich das Inhaltsverzeichnis anschaut, dem Teil 1 (S. 39) eingegangen wird. So kann durch fällt auf, dass der erste Teil erst bei Seite 27 be- Was vielleicht auch nicht so praktisch, aber teil- ein const an der richtigen Stelle ein fehlerhaf- ginnt. Was treibt der Autor die 26 Seiten davor? weise verständlich ist: So gut wie nichts wird mit tes Design entlarvt werden. Aber auch die neu-

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 28 REZENSION en Eigenschaften für Klassenoperationen wie aktuellen Stand [3]. Nur für den GNU-Compiler const in Zusammenhang mit Zeigern an der rich- override und final (S. 139 ff.) bzw. delete GCC gibt es diese Liste bei gnu.org [4]. tigen Stelle für Auswirkungen hat (S. 39). und default (S. 196 ff.) finden sicherlich sinn- volle Verwendung. Fazit Eigentlich selbstverständlich, aber leider immer wieder erwähnenswert ist die Fehleranzahl im Hält das Buch, was es mit „60 Techniken für gu- Buch. Obwohl es sich um die erste Auflage han- Der dritte Teil beschäftigt sich ausgiebig mit Con- ten C++11-Code“ verspricht? Zuerst sei gesagt, delt, findet man erfreuliche wenige Fehler im tainern, Pointern und Algorithmen. Die Aussa- dass die 60 sich aus den 62 Kapiteln im Buch ab- Buch. An einigen Stellen gibt es zwar Buchsta- ge am Anfang des Buches (S. 36), dass man leitet, ansonsten aber keine Bewandtnis hat. Und bendreher, aber in der Regel erschließt sich so- in C++ auf void-Pointer oder Pointer-Casts ver- ob es wirklich guter Code ist, den Torsten T. Will fort aus dem Kontext, wie es richtig lauten muss. zichten kann, wird beispielsweise durch die neu- zeigt, soll gar nicht beurteilt werden, da Program- en unique_ptr und shared_ptr unterstrichen mierer wie Künstler sind jeder seinen eigenen Stil Einen kleinen Problempunkt sehe ich in der An- (S. 275 ff.). Insgesamt ist das Kapitel sehr sinn- pflegt. Die Frage lautet eher: Wird einem Leser sprache der Leser. So wird im Text oft von „wir“ voll für alle, die bereits einige Hilfsmittel der STL aber der neue C++-Standard verständlich beige- gesprochen, womit der Autor sich und die Le- (Standard Template Library) einsetzen. bracht? Und hier ist die Antwort definitiv ja. sergemeinde meint. An andere Stelle bezeich- net das „wir“ aber den Autor und ggf. die ande- Und in Teil 4 geht es auch mit der STL wei- Der Aufbau der Kapitel ist sehr klar und struk- ren am Buch beteiligten Personen. Im Text selbst ter, denn es werden die Features beschrieben, turiert. Teilweise Popkultur-Referenzen auf Star wird der Leser dann mit „Sie“ angesprochen, in die dort neu Einzug gehalten haben. Vorran- Wars, Star Trek oder Herr der Ringe regen zum den Mantras am Ende eines Kapitels aber immer gig ist das sicherlich das Thema Multithreading Schmunzeln an (wenn man mit der Thematik ver- mit „du“. Dies wirkt noch etwas durcheinander, ist (S. 321), welches auf knappen 34 Seiten abge- traut ist). Sehr schön ist auch, dass die Kapi- aber nur ein kleiner Kritikpunkt. handelt wird. Dennoch bekommt man einen gu- tel zu einem Thema gut ineinander übergehen ten Einblick in die Möglichkeiten, die C++ hier bie- und sich gegenseitig referenzieren. Die Auftei- Zweiter, kleiner Negativpunkt ist die Mischung tet. Aber auch reguläre Ausdrücke sowie Einhei- lung wirkt dadurch sehr gut durchdacht. des Inhaltes. So setzt Torsten T. Will auch in ten und Umrechnungen werden nun direkt in C++ frühen Kapiteln Syntaxelemente aus C++11 ein, unterstützt. Autor Torsten T. Will schafft es auch, die Le- die er erst viel später dem Leser bekannt macht. ser in eine fremde Thematik einzuführen. So ge- Für Entwickler, die nicht hundertprozentig den Im Anhang findet man zum einen eine kurze hören Lambda-Funktionen, RValues oder Multi- C++03-Standard auswendig kennen – und dies Übersicht, was man in C++11 nicht mehr tun threading nicht zu den Alltagsfragen eines Pro- kann wohl keiner – ist damit nicht immer klar, ob register sollte, da einige Sprachelemente wie grammierers, dennoch schafft man es auch oh- es sich um ein C++03- oder ein C++11-Feature als veraltet deklariert wurden. Noch sinnvoller ist ne viel Wissen in dem Gebiet (fast) alles zu ver- handelt. aber die Compilerübersicht in Anhang C (S. 402), stehen. Daneben gibt es auch viele Hinweise die aufzeigen soll, welche C++11-Features wel- auf guten Programmierstil bzw. Hintergrundinfor- Insgesamt kann man dem Buch aber eine sehr cher Compiler alles umsetzt. Da es sich natürlich mationen, die sich etwas von C++11 entfernen, gute Note ausstellen. Es ist übersichtlich, klar um eine gedruckte Liste handelt, ist sie im Buch aber dennoch nicht jedem C++-Programmierer strukturiert und interessant geschrieben. Für veraltet, im Apache-Wiki findet man aber den bekannt sind. So wissen viele nicht, was ein C++-Entwickler, die den neuen Standard kennen

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 29 REZENSION lernen wollen, kann daher eine klare Empfeh- (Hinweis: Es gibt ggf. mehrere richtige Antwor- [3] http://wiki.apache.org/stdcxx/C++0xCompilerSup- lung ausgesprochen werden. Für C++-Einsteiger ten.) port ist das Buch nicht geeignet, aber auch nicht ge- [4] http://gcc.gnu.org/projects/cxx0x.html Buchinformationen dacht. Titel C++11 programmieren Redaktioneller Hinweis: Da es schade wä- Autor Torsten T. Will Autoreninformation re, wenn das Buch bei Dominik Wagenführ ver- Verlag Galileo Computing, 2012 staubt, wird es verlost. Die Gewinnfrage lautet: Umfang 414 Seiten Dominik Wagenführ (Webseite) ISBN 978-383621732-3 entwickelt beruflich Software in C++ „Welches neue Feature bietet der C++11- Preis 29,90 Euro und muss sich deshalb auch auf den Standard in Bezug auf Klassenvererbung, wel- neuen C++11-Standard vorbereiten. ches es bei Java schon lange gibt?“ LINKS [1] https://secure.wikimedia.org/wikipedia/de/wiki/ Die Antworten können über die Kommentarfunk- C++11#Weiterentwicklung_der_Programmier tion unterhalb des Artikels oder per E-Mail an sprache_C.2B.2B Diesen Artikel kommentieren geschickt werden. [2] https://de.wikipedia.org/wiki/Dreierregel_(C++)

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

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 30 REZENSION

Rezension: Java 7 – Mehr als eine Insel von Michael Niedermair

as neue Werk [1] „vom Java- oder Apache HttpComponents bei der Netzwerk- Werk „Java ist auch eine Insel“ ausweichen und Champion“ Christian Ullenboom er- programmierung. das hier besprochene Werk erst später lesen. D gänzt das Grundlagenbuch „Java ist auch eine Insel“ (inzwischen 10. Auflage), in- Wie liest es sich? Man merkt deutlich, dass der Autor viel Erfahrun- dem es die Java-Standard-Bibliothek in den Das Buch ist für den schon erfahrenen Java- gen mit Java und als Java-Trainer hat und ein Ex- einzelnen Bereichen behandelt. Es stellt ein Anwender geschrieben und setzt die Grundla- perte auf diesem Gebiet ist. Alle Beispiele sind Nachschlagewerk/eine Referenz für die ein- gen aus dem Buch „Java ist auch eine Insel“ methodisch sehr gut aufgebaut, alle „Fallstricke“ zelnen Bereiche dar und erklärt an praxis- vom selben Autor voraus. Es dient als Nachschla- und „Stolpersteine“ werden gut erklärt, so dass nahen Beispielen die Thematik. Der Autor gewerk/Referenz für die einzelnen Bereiche der man dem Inhalt sehr gut folgen kann. Der Index ist Diplom-Informatiker und seit 1997 Trainer Java-Standard-Bibliothek und die neuen Funktio- ist sehr umfangreich und sehr gut aufgebaut. Die und Berater für Java-Technologien. Ob das nen von Java 7. Jeder Bereich ist in sich abge- meisten Einträge haben weniger als drei Verwei- Buch mit allen seinen Facetten die Ansprü- schlossen und die Bereiche bauen im Wesentli- se, so dass man sehr schnell findet, was man che an einen „Java-Champion“, wie es auf chen nicht aufeinander auf, so dass man mit je- sucht. dem Buch-Cover steht, gerecht wird, wird im dem Bereich nach Vorkenntnissen und Vorlieben Folgenden beleuchtet. beginnen kann. Das Buch erscheint als Hardcover-Version und liegt trotz seiner Dicke gut in der Hand, auch Redaktioneller Hinweis: Wir danken dem Ver- Die einzelnen Bereiche lassen sich gut lesen wenn es über 1400 Seiten hat. Es hat ein Lese- lag Galileo Computing für die Bereitstellung ei- (das Zusammenspiel von Layout, Schrift, Tabel- bändchen und ein Daumenkino für die einzelnen nes Rezensionsexemplares. len, Quelltext und Bildern ist sehr angenehm) Bereiche. Das Preis-Leistungs-Verhältnis ist hier und sind mit praxisnahen Beispielen versetzt, de- sehr gut. Der Aufdruck auf dem Cover „vom Java- Was steht drin? nen man leicht folgen kann. Dabei werden nur die Champion“ ist hier gerechtfertigt, wobei ein paar Das Buch ist in 23 Bereiche mit Vorwort und In- wesentlichen Codebereiche abgedruckt. Entspre- Schatten auf den Schein fallen. dex aufgeteilt und umfasst 1433 Seiten. Am Ende chende Klassenbeziehungen/-vererbungen wer- finden sich sieben Seiten Werbung zu anderen den durch UML-Diagramme grafisch dargestellt. Die im Buch verwendeten UML-Diagramme sind Büchern. als Pixelgrafik eingebunden, was dazu führt, Zur Aufheiterung findet man ein paar Comics, dass schräge Linien in kleinen Treppenstufen Abgeschlossen wird es mit dem Index, der neun welche den Sachverhalt lustig darstellen. erscheinen. Auch stellt man bei den UML- Seiten umfasst. Er enthält Stichworte, Programm- Diagrammen fest, dass diese nicht einheitlich konstanten und Methoden. Kritik sind, manche Klassendiagramme haben nur Zu den Standard-Bibliothek-Funktionen von Das Buch ist für den schon erfahrenen Java- einen Rahmen, andere werden zusätzlich mit ei- Java7-SE hat sich auch so manche externe Bi- Anwender, der das Buch als Nachschlagewerk nem Schatten versehen. Bei manchen Klassen- bliothek zu den einzelnen Themengebieten ge- oder Referenz verwenden will, sehr gut geeignet. diagrammen hätte ich mir deutlich weniger Me- schlichen, z. B. JDOM bei der XML-Verarbeitung Ein Java-Anfänger sollte besser auf das parallele thoden gewünscht, so dass das Diagramm z. B.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 31 REZENSION

Buchinformationen nicht ergründen können. Das ist eindeutig ein LINKS Titel Java 7 – Mehr als eine Insel Enterprise-Thema. Hier würde ich mir eher vom [1] http://www.galileocomputing.de/katalog/buecher/ Autor Christian Ullenboom Autor ein eigenes Buch mit 1400 Seiten zu dem titel/gp/titelID-2253 Verlag Galileo Computing, 2012 Thema wünschen. [2] http://openbook.galileocomputing.de/java7/ Umfang 1433 Seiten ISBN 978-3836215077 Optisch hat die Druckerei dem „Java-Champion“ Preis 49,90 Euro einen Bärendienst erwiesen. Die Druckbögen Autoreninformation wurden leider nicht sauber geschnitten, was dazu keine ganze Seite einnimmt und nur die Metho- Michael Niedermair ist Lehrer an der führt, dass das Daumenkino einen Versatz von den enthält, die man wirklich darstellen muss. Münchener IT-Schule und unterrichtet bis zu zwei Millimetern hat, was einen sehr aus- hauptsächlich Programmierung, Bei zwei Themen habe ich mich gefragt, ob diese gefransten Rand ergibt und den optischen Ge- Datenbanken und IT-Technik. Er wirklich sinnvoll sind. JNI wird mit gerade einmal samteindruck doch stört. 18 Seiten angeschnitten. Hier hätte ich mir entwe- beschäftigt sich seit Jahren mit vielen der deutlich mehr gewünscht oder man hätte die Programmiersprachen. Trotz der „Schatten“ ist das Buch sehr gut und Seiten einem anderen Bereich widmen können. ich werde das Buch als Openbook-Version [2] in Was der Bereich JSP und Servlets in der meinem Unterricht einbauen und meinen Schüle- Standard-Edition zu suchen hat, habe ich rinnen und Schülern empfehlen. Diesen Artikel kommentieren

„Server Attention Span“ © by Randall Munroe (CC-BY-NC-2.5), http://xkcd.com/869/

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 32 MAGAZIN

Ende des fünften Programmierwettbewerbs

m 1. März 2012 startete der fünf- Bewertung sen, haben wir uns entschieden, den dritten Platz te freiesMagazin-Programmierwett- Die Bewertung sollte nach folgenden Gesichts- unbesetzt zu lassen. A bewerb [1]. Es ging dabei nicht wie punkten vorgenommen werden: sonst um ein theoretisches Spiel, sondern Insgesamt danken wir aber allen fünf Teilneh- um eine reale Anwendung. Gesucht wurde 1. Geschwindigkeit des Programms (15 %) mern für die Teilnahme, da ohne sie kein Wett- ein Wortwolken-Generator, der Texte einliest, 2. Funktionsvielfalt des Programms (30 %) bewerb zustande gekommen wäre. die Worthäufigkeit zählt und alles als Wortwol- 3. Bedienung des Programms (25 %) Fazit ke ausgibt. Einige Programmierwillige haben 4. Aussehen der Wortwolke (30 %) sich dieser Aufgabe gestellt. Der Wettbewerb hat gezeigt, dass es zum einen Jedes Gebiet wurde in konkrete Eigenschaften nicht so einfach ist, dass man als Teilnehmer Teilnehmer aufgeteilt und diesen dann eine bestimmte Punkt- wirklich alle Fälle behandelt, wie der Anwender Die Teilnahme am Wettbewerb war erwartungs- zahl zugeordnet. Bei voller Punktzahl hätte ein später das Programm auch nutzen könnte. Zum gemäß geringer, da es sich um ein recht spezi- Teilnehmer auf 100 Punkte kommen können. anderen ist die Bewertung extrem schwer ge- elles Thema handelte, wobei das eigentliche Ein- wesen, da neben den eigentlichen Anforderun- lesen der Dateien und Zählen auch für Program- Die Programme der Teilnehmer wurden nach Ab- gen vor allem die freiwilligen Zusatzanforderun- mieranfänger eine Kleinigkeit gewesen sein soll- gabe ausgiebig getestet und vor verschiedene gen und Features eine starke Rolle spielten. te. Die Darstellung als Wortwolke war dagegen Testdaten gestellt, die sie analysieren mussten. Aus dem Grund wird der nächste Wettbewerb etwas anspruchsvoller. Die gesamte Liste mit der detaillierten Bewertung auch wieder einen spieltheoretischen Ansatz ver- inkl. Begründung für die Punkte kann man als Insgesamt hatten sechs Teilnehmer am Wettbe- folgen, sodass am Ende des Wettbewerbs für je- ODS-Datei herunterladen [3]. werb teilgenommen, wobei einer seinen Beitrag den Teilnehmer eine Punktzahl errechnet wird, während der Auswertung zurückgezogen hatte. Gewinner die klar angibt, welcher Platz erreicht wurde. Die fünf Programme sind ausschließlich in Py- Mit 67 Punkten belegt somit das Programm von thon oder Java geschrieben. LINKS Steve Göring den ersten Platz, das vor allem Neben den offiziellen Abgaben gab es auch noch mit einer sehr schön dargestellten Wortwolke [1] http://www.freiesmagazin.de/20120301-fuenfter- eine Referenzimplementierung von Dominik Wa- begeistern kann. Der zweite Platz geht an das programmierwettbewerb-gestartet genführ in TCL. Diese sollte als Ausgangsbasis Programm von Tom Richter, welches eine hohe [2] http://www.freiesmagazin.de/ftp/2012/freiesMag dafür dienen, was die Programme alles können Funktionsvielfalt aufweist. azin-2012-05-ergebnisse.tar.gz sollten. [3] http://www.freiesmagazin.de/ftp/2012/freiesMag Die anderen drei Programme liegen alle sehr azin-2012-05-bewertung.ods Alle Programme inkl. der erstellten Wortwolken dicht beisammen. Da sie aber alle kleine Eigen- und der Testdaten können als Archiv herunterge- heiten aufweisen, die eine unabhängige und aus- laden werden [2]. sagekräftige Analyse eines Textes nicht zulas- Diesen Artikel kommentieren

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 33 LESERBRIEFE

Leserbriefe

Für Leserbriefe steht unsere E-Mailadresse dem Fall der weibliche Artikel „die“ verwendet der ich das Magzin lese, hab ich meistens ver- zur Verfügung – wir (z. B. „die Leser“). gessen, es daheim nachzuholen. Aber an dich freuen uns über Lob, Kritik und Anregungen zum [Anmerkung der Redaktion: Gemeint ist der Au- Es stellt die deutsche Sprache also sowieso Magazin. tor des Kernel-Artikels Mathias Menzer] muss ich schon eine eindeutige Bevorzugung der weibli- mal ein großes Lob loswerden. Super geschrie- An dieser Stelle möchten wir alle Leser ausdrücklich chen Teilmengen her. ben, ’ne schöne Schritt-für-Schritt-Anleitung und ermuntern, uns auch zu schreiben, was nicht so gut obwohl ich schon seit fünf Jahren Linux auf dem gefällt. Wir bekommen sehr viel Lob (was uns natür- Die meist als Diskriminierung verunglimpfte nor- Desktop einsetze, hab’ ich mich noch nie getraut, lich freut), aber vor allem durch Kritik und neue Ideen male Form ist also ganz im Gegenteil keine Dis- ’was am Kernel zu machen. Und siehe da, jetzt können wir uns verbessern. kriminierung von Frauen. hocke ich sogar vor meinem „eigenen“ Kernel, Leserbriefe und Anmerkungen In diesem Sinne bitte ich, auch weiterhin sämt- hat alles auf Anhieb geklappt! Danke! liche Artikel in normalem Deutsch zu verfassen, hypnotoad (Kommentar) Genderismus und das auch von den Autoren zu verlangen. Ich lese leider erst jetzt die Ausgabe 03/2012 Es wäre sehr schade, wenn ihr die selbe – nur April-Ausgabe von freiesMagazin und möchte mein Feedback noch als Gesinnungsterrorismus zu bezeichnen- Ich finde es sehr gut, dass die April-Ausgabe zur dort im Editorial aufgeworfenen Frage über de – Schiene wie die Hochschülerschaft an der tatsächlich im April erscheint und nicht wie bei an- Genderismus geben. Uni Wien einschlägt, die nicht „gegenderte“ Arti- deren Magazinen gefühlte zwei Monate früher. Dieses Thema wird leider immer wieder von ein- kel beinhart zensuriert. Johann Glaser Und auch: danke für die Arbeit! zelnen (aber sehr lauten) Agitatoren, oft in vor- Vielen Dank für Ihre Rückmeldung und Ihre bronsen (Kommentar) wurfsvollem Ton, vorgebracht. Es geht ganz of- Meinung zu dem Thema. fensichtlich nach der Devise „steter Tropfen höhlt Wieder schöne und interessante Artikel dabei. den Stein“. Da wir das genauso sehen, müssen Sie nicht Allerdings sehr programmier- bzw. techniklastig befürchten, demnächst von „Lesern und Leserin- diesmal. Die vorgebrachte Forderung nach expliziter Nen- nen“ lesen zu müssen (auch wenn wir diese An- nung der weiblichen Teilmenge mit gleichzeiti- sprache ab und zu in der Tat benutzen, was aber Aber [das] ist natürlich abhängig von den Inter- ger Behauptung, die normale Form würde nur weniger etwas mit pseudo-genderfreier Sprache essen Eurer Autoren, ab und an würde ich mir die männliche Teilmenge ansprechen, ist sach- zu tun hat). Dominik Wagenführ mehr Programmvorstellungen wünschen, so als lich unhaltbar, also falsch. In der deutschen Spra- Art „Programm des Monats“. che fallen das Wort für einen männlichen Men- Kernel kompilieren nach Rezept Andre (Kommentar) schen und die allgemeine Form (zufällig) zusam- Ich lese freiesMagazin schon seit Jahren (ich men (z. B. „der Leser“), nur für einen weiblichen glaub seit Erscheinen) und ich wollte zwar schon Ja, viele der Autoren (aber auch viele der Le- Menschen gibt es eine eigene Variante („die Le- oft die Redakteure belobigen, aber da ich meis- ser) stammen aus dem IT-affinen Umfeld und ha- serin“). Obendrein wird bei der Mehrzahl in je- tens kein Internet auf der Maschine habe, auf ben daher eher Interesse an solchen Themen.

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 34 LESERBRIEFE

Gegen mehr Programmvorstellungen haben wir Nein, MOBI bieten wir nicht an, weil es sich Vielen Dank für diesen tollen zweiten Arti- aber nichts einzuwenden und freuen uns, wenn um ein proprietäres Format von einem einzelnen kel zur OOP. Ich programmiere schon länger ob- auch nicht-technik-freudige Leser den Griff zur Hersteller handelt. jektorientiert und hing schon oft an den ange- Tastatur wagen und einfach eines ihrer Lieblings- sprochenen konzeptionellen Schwierigkeiten fest. EPUB ist offen und herstellerunabhängig und programme auf zwei, drei Seiten vorstellen. Der Artikel hat dort echt gut geholfen! Ich freue wird von allen (bis auf einen) Ebook-Readern un- mich schon auf Teil 3. Gast (Kommentar) Wer Ideen hat, kann diese einfach unter terstützt. Mittels Calibre kann man am PC aber einrreichen. EPUB in MOBI konvertieren. Dominik Wagenführ Dominik Wagenführ Die Redaktion behält sich vor, Leserbriefe gegebe- nenfalls zu kürzen. Redaktionelle Ergänzungen fin- Mobilausgabe als MOBI Objektorientierte Programmierung den sich in eckigen Klammern. Ist es eventuell auch möglich, statt oder zu- Also ich finde den Artikel beziehungsweise sätzlich das Format MOBI anzubieten? Z. B. der die ganze Artikelreihe sehr interessant. Ich freue Die Leserbriefe kommentieren Kindle kann mit dem Format EPUB nichts anfan- mich auf folgende Artikel zur OOP. :-) gen . . . Sebroe (Kommentar) Tim Holzschuh (Kommentar)

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

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 35 MAGAZIN

Veranstaltungskalender Messen Veranstaltung Ort Datum Eintritt Link Linux Informationstag Hanau 12.05.2012 frei http://hulug.de/ LUG Camp Flensburg 17.05.–20.05.2012 – http://www.lug-camp-2012.de/ Sigint Köln 17.05.–21.05.2012 – http://sigint.ccc.de/ LinuxTag Berlin 23.05.–26.05.2012 20 EUR http://www.linuxtag.org/ LiWoLi 2012 Linz 24.05.–26.05.2012 frei http://linuxwochen.at/ RootCamp Berlin 25.05.–26.05.2012 15 EUR http://rootcamp.mixxt.de/ GPN12 Karlsruhe 07.06.–10.06.2012 – https://entropia.de/GPN12/ 13. Libre Software Meeting Genf 07.07.–12.07.2012 frei http://2012.rmll.info/ (Alle Angaben ohne Gewähr!) Sie kennen eine Linux-Messe, welche noch nicht auf der Liste zu finden ist? Dann schreiben Sie eine E-Mail mit den Informationen zu Datum und Ort an . Vorschau freiesMagazin erscheint immer am ersten Sonntag eines Monats. Die Juni-Ausgabe wird voraussichtlich am 3. Juni unter anderem mit folgenden Themen veröffentlicht:

 Objektorientierte Programmierung: Teil 4

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

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 36 MAGAZIN

Impressum ISSN 1867-7991 freiesMagazin erscheint als PDF, EPUB und HTML einmal monatlich. Erscheinungsdatum: 6. Mai 2012

Redaktion Kontakt Dominik Honnef Matthias Sitte E-Mail Dominik Wagenführ (Verantwortlicher Redakteur) Postanschrift freiesMagazin c/o Dominik Wagenführ Satz und Layout Beethovenstr. 9/1 Andreas Breitbach Holger Dinkel 71277 Rutesheim Dominik Frey Tobias Kempfer Webpräsenz http://www.freiesmagazin.de/ Nico Maikowski Ralph Pavenstädt Stefan Wiehler Autoren dieser Ausgabe Mathias Menzer S. 3, S. 8 Korrektur Patrick Meyhöfer S. 14 Daniel Braun Frank Brungräber Michael Niedermair S. 31 Vicki Ebeling Stefan Fangmeier Jochen Schnelle S. 26 Mathias Menzer Christian Schnell Uwe Steinmann S. 12 Karsten Schuldt Toni Zimmer Dominik Wagenführ S. 9, S. 23, S. 28 Andreas Weber S. 19 Veranstaltungen Ronny Fischer

Logo-Design Arne Weinberg (CC-BY-SA 3.0 Unported)

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

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

© freiesMagazin CC-BY-SA 3.0 Ausgabe 05/2012 37