Sie sind auf Seite 1von 61

freiesMagazin Oktober 2009

Topthemen dieser Ausgabe

Grundbegriffe der Virtualisierung Seite 4


Voll-, Para-, Hardware-Assisted-, Desktop- und Anwendungsvirtualisierung, um nur ein paar
Schlagworte zu nennen, die vor allem in Verkaufs- und Beratungsgesprächen mit Buzzwords
wie Green-IT oder Virtual Clouds gepaart werden. Doch wer weiß, was sich hinter all die-
sen Begriffen versteckt? Dieser Artikel soll speziell für Einsteiger etwas Licht ins Dunkel brin-
gen. (weiterlesen)

Ordnung ins Chaos mit Org-Mode Seite 18


Der Satz „Ich habe keine Zeit . . . “ ist die Standardantwort, die man oft genug zu hören bekommt,
wenn man jemanden fragt, ob er eine Aufgabe übernehmen will. Interessanterweise haben alle
Menschen genau gleich viel Zeit, nämlich 24 Stunden am Tag, und das Vorhandensein von
„Extratagen“ oder „Zeitguthaben bei der Zeitbank“ gehört eher ins Reich der schriftstellerischen
Fantasie. (weiterlesen)

Von der Schaltung zur fertigen Platine mit EAGLE Seite 30


Mit dem von der Firma CadSoft entwickelten Programm EAGLE kann man Schaltungen und
Platinenlayouts entwerfen. EAGLE ist ein Akronym, das „Einfach Anzuwendender Grafischer
Layout-Editor“ bedeutet. Trotz dieses deutschen Akronyms ist die Software auf Englisch. Die
kostenlose Version ist auf eine halbe Europlatine (100 mm × 80 mm) und zwei Schichten beim
Platinenlayout beschränkt, ansonsten kann man fast alles damit machen, was auch mit der
Vollversion geht. (weiterlesen)

© freiesMagazin GNU FDL Ausgabe 10/2009 ISSN 1867-7991


M AGAZIN

Editorial
Ein Wort ist ein Wort ist ein Wort . . .
. . . und weder Mann noch Frau, möchte man man sich duzt. Unsere interne Regelung sieht Inhalt
hinzufügen, liebe Leser. Vielen Dank für Ihre anstelle dessen ein eher förmliches Sie vor. Da-
zahlreichen Rückmeldungen (siehe „Leserbriefe“ für haben wir unsere Gründe, auch wenn die- Linux allgemein
auf Seite 56) auf unsere Frage nach der Ver- se sicher weder aus Beton noch für die Ewig- Grundbegriffe der Virtualisierung S. 4
wendung einer geschlechterneutralen Sprache in keit sind. Dennoch stellen wir uns und Ihnen die Gefahren von Fremdquellen S. 9
freiesMagazin. Frage: Wie stehen Sie dazu, liebe Leser, bevor- Der September im Kernelrückblick S. 11
zugen Sie in (deutschsprachigen) Open-Source-
Rückblende: Aufgrund einer Leseranfrage hatten Projekten ein lapidares Du oder ein förmliches Anleitungen
wir in freiesMagazin 09/2009 [1] die Frage in Sie? Java, Teil 1 – Einführung S. 13
den Raum gestellt, ob Sie, liebe Leser – und na- Ordnung ins Chaos mit Org-Mode S. 18
türlich auch Leserinnen – die Verwendung einer Mit Ihnen in die Tiefe gehen
so genannten „geschlechterneutralen“ Sprache Oft liest man nach einer Veröffentlichung von Software
in freiesMagazin begrüßen würden oder eben freiesMagazin in zahlreichen Kommentaren im Kurztipp: Suchen und Finden mit Vim S. 26
nicht. Nun, Ihren Leserbriefen ist deutlich zu ent- Internet, dass das Magazin in Zukunft eher Arti- grep – Eine kleine Einführung S. 28
nehmen, dass wir in freiesMagazin so fortfahren kel über speziellere Themen veröffentlichen soll,
sollen wie bisher, heißt: Wir verzichten auch in die über Distributionstest und andere, schon häu- Hardware
Zukunft auf die „geschlechterneutrale“ Sprache fig beschriebene Themen hinausgehen. Offenge- Von der Schaltung zur Platine mit EAGLE S. 30
und schreiben, wie Sie es von uns gewohnt sind. standen: Das ist ein guter Vorschlag – die Um-
Vielen Dank an dieser Stelle auch an die Le- setzung liegt aber zum großen Teil bei den Au- Community
ser, die uns den Artikel „Sprachfeminismus in der toren. Und dazu laden wir jeden ein! Sollten Sie 41. DANTE-Mitgliedertagung in Esslingen S. 39
Sackgasse“ [2] vorgeschlagen haben. selten genutzte Programme zu Ihren Lieblingsan-
wendungen zählen, wie beispielsweise einige Le- Magazin
Siezt Du noch oder Duzen Sie schon?
ser des Ubuntublog.ch [3] von Roman Hanhart, Editorial S. 2
Doch damit nicht genug, denn schon sehen wir und wollten Sie schon immer der Welt Ihr Wissen Erklärungen zum zweiten Programmier- S. 42
uns mit der nächsten Leseranfrage konfrontiert. und Ihre Begeisterung darüber mitteilen, dann wettbewerb
Nicht, dass Sie uns falsch vestehen, wir lieben würden wir uns über einen Artikel von Ihnen sehr Die GUI zum Programmierwettbewerb S. 51
Leseranfragen, denn Ihre Aufmerksamkeit ist ein freuen! FAQ zum Programmierwettbewerb S. 53
wichtiger Grund für unsere Existenz – für die
Leserbriefe S. 56
von freiesMagazin, versteht sich. Worum geht Schreiben Sie uns einfach eine E-Mail an
Veranstaltungen S. 60
es? Ein Leser ist der Meinung, dass es zum gu- und teilen Sie uns
Impressum S. 61
ten Ton in Open-Source-Projekten gehöre, wenn Ihren Artikelvorschlag mit.

© freiesMagazin GNU FDL Ausgabe 10/2009 2


M AGAZIN

Vielen Dank auch an dieser Stelle an die Auto- Lesern (wenn Sie denn die Webseite regelmä- drei Kategorien ist mit jeweils einem Buchgut-
ren, die dem Aufruf in der letzten Ausgabe nach ßig besuchen oder den RSS-Feed lesen) inzwi- schein in Höhe von 10, 20 und 30 Euro dotiert.
mehr Beteiligung gefolgt sind. Nicht umsonst ist schen schon klar sein: Gemeint war der Held Wer in der Kategorie 4 teilnimmt und die (nach
das Magazin diesen Monat wieder so umfang- unseres zweiten Programmierwettbewerbs, der unseren objektiven Bewertungskriterien) beste
reich, wie man es gewohnt ist. sich einsam durch eine lebensgefährliche Fabrik- grafische Oberfläche schreibt, erhält einen Buch-
halle kämpft. gutschein über 50 Euro.
Internet im Icon-Format
Die junge Firma embli.net hat sich als Ziel ge- Kurz zusammengefasst: Die Aufgabe im zwei- Alle ausführlichen Informationen zum Wettbe-
setzt, ausgewählte Webseiten auf Ihrem Por- ten freiesMagazin-Programmierwettbewerb ist werb finden Sie im Artikel „Erklärungen zum
tal zu kategorisieren und per Icon zu verlin- es, mit Hilfe einer selbstgeschriebenen KI einen zweiten Programmierwettbewerb“ auf Seite 42.
ken. Auch freiesMagazin zählt zu den Auser- Roboter durch eine Fabrikhalle zu einer Fahne Wir hoffen, dass sich auch dieses Mal wieder
wählten, was uns natürlich sehr freut. Sie finden zu steuern. Die Steuerung wird dabei durch das zahlreiche Programmierer finden, die Spaß an ei-
unsere Verlinkung neben vielen weiteren Open- gezielte Auswählen von Steuerkarten vorgenom- ner solchen Aufgabe haben, und wünschen allen
Source-Anwendungen auf der „Open Source men, die den Roboter vorwärts oder rückwärts Teilnehmern viel Erfolg bei der Bewältigung die-
und Freeware“-Seite von embli.net [4]. Da die fahren lassen bzw. ihn auf der Stelle drehen. Da- ser Aufgabe!
Icons zufällig platziert werden, muss man die mit es etwas spannender wird, gibt es in der Fa-
brik aber einige Elemente, die den Roboter durch Die Spiele sind also hiermit eröffnet und wir wün-
Seite gegebenenfalls neu laden, ehe man das
die Gegend schieben oder gar zerstören können. schen Ihnen viel Spaß mit der neuen Ausgabe.
freiesMagazin-Logo sieht.
Wenn man diese Möglichkeiten aber geschickt Ihre freiesMagazin-Redaktion
RSS-Feed für Kommentare bei der Kartenwahl ausnutzt, kommt man sogar
L INKS
Eine Neuerung auf freiesMagazin.de [5] soll schneller zum Ziel.
auch nicht verschwiegen werden: Ab sofort bie- Der Wettbewerb wird in vier Kategorien unterteilt, [1] http://www.freiesmagazin.de/20090906-
ten wir die Möglichkeit an, RSS-Feeds für Kom- septemberausgabe-erschienen
wobei die ersten drei eine bestimmte Schwierig-
mentare zu abonnieren. Damit wollen wir unse- keitsstufe vorgeben. Die vierte Kategorie richtet [2] http://www.bruehlmeier.info/sprachfeminismus.
ren Lesern einen besseren Überblick über ge- htm
sich an alle kreativen Programmierer. Obwohl es
schriebene Kommentare als auch die zeitnahe schon eine grafische Oberfläche für den Wettbe- [3] http://ubuntublog.ch/applikationen/exotische-
Information über neue Kommentare geben, letzt- werb gibt (siehe „Die GUI zum Programmierwett- applikationen-der-erste-zwischenbericht
endlich soll damit auch der Spaß am Kommentie- bewerb“ auf Seite 51), ist es natürlich schöner, [4] http://www.embli.net/index.php/opensource-
ren steigen. Wie immer ist der RSS-Feed über wenn es eine 3-D-Fabrikhalle gäbe, durch die freeware.html
das Icon in der URL-Zeile Ihres Browsers zu sich der Roboter bewegen kann. Hier sind also [5] http://www.freiesmagazin.de/
abonnieren. vor allem die Programmierer gefragt, die mit KI- [6] http://www.freiesmagazin.de/2009-09-05-
Programmierung nichts am Hut haben. ratespiel
Blecherne Roboter und Öltanks!
Die Auflösung unseres Rätsels [6] aus der letz- Als Ansporn gibt es wie beim letzten Wettbewerb
ten Ausgabe sollte den meisten freiesMagazin- etwas zu gewinnen. Der erste Platz der ersten Das Editorial kommentieren

© freiesMagazin GNU FDL Ausgabe 10/2009 3


V IRTUALISIERUNG

Grundbegriffe der Virtualisierung von Florian E.J. Fruth

oll-, Para-, Hardware-Assisted-, Die Virtualisierung des Arbeitsspeichers bezeich- Hardwarevirtualisierung

V Desktop- und Anwendungsvirtualisie-


rung, um nur ein paar Schlagworte zu
nennen, die vor allem in Verkaufs- und Bera-
net unter anderem die Zuordnung von virtuel-
lem zu physikalischem Speicher. Dies kann zum
einen bedeuten, dass ein Programm denkt, es
Die wohl am einfachsten zu verstehende Art
ist die reine Hardwarevirtualisierung. Hierbei
sind nicht die aktuelle Eigenschaften von Intel
tungsgesprächen mit Buzzwords wie Green- verfüge über 1 GB zusammenhängenden Spei- oder AMD-CPUs gemeint, sondern sogenannte
IT oder Virtual Clouds gepaart werden. Doch cher, während dieser in Wirklichkeit in Stücken Hardware-Partitions wie sie z. B. in IBMs Sys-
wer weiß schon, was sich hinter all diesen Be- verteilt sein kann. Auf der anderen Seite ist tem p [2] oder Fujitsus Sparc Enterprise Se-
griffen versteckt? Dieser Artikel soll speziell es auch möglich, dass vielleicht die Hälfte da- rie [3] realisiert sind. Vereinfacht ausgedrückt
für Einsteiger etwas Licht ins Dunkel bringen. von – ohne Wissen des Anwendungsprogramms kauft der Kunde einen Schrank voller CPUs, Ar-
– auf der Festplatte ausgelagert wurde. Unter beitsspeicherriegel etc. Im Gegensatz zu nor-
Eine Einteilung in Gruppen bzw. Kategorien fällt Windows werden diese Daten in der Auslage- malen Servern muss jedoch bei der Erweite-
nicht immer ganz leicht, da manche Virtualisie- rungsdatei gespeichert und unter Linux auf der rung des Arbeitsspeichers nicht ein neues RAM-
rungstechnologien mehreren zugeordnet werden Swap-Partition. Diese Daten können dann auf vir- Modul aus dem Keller geholt und explizit in einen
können. Deshalb sei darauf verwiesen, das die tualisierten Festplatten landen. Als einfaches Bei- Server eingebaut werden. Vielmehr kann dies
folgende Einteilung bei anderen Autoren auch an- spiel sei hier das Zusammenfassen von mehre- bei Hardware-Partitions „per Mausklick“ erfolgen,
ders ausfallen kann. ren Datenträgern zu einem großen erwähnt. Dies da die vorhandenen Ressourcen innerhalb des
kann zum Beispiel durch einen RAID-Verbund in „Schranks“ frei auf die logischen Partitions verteilt
Virtualisierung im Allgemeinen Software und Hardware realisiert werden. werden können. Auf jeder so erstellten Partition
kann dann ein entsprechendes Betriebssystem
Es gibt Virtualisierungstechniken, die weiter ver- Mit dem Bewusstsein, dass jeder Computer-
installiert werden. Die Virtualisierung erfolgt hier-
breitet sind als sämtliche kommerziellen Virtuali- Benutzer täglich wahrscheinlich mehrere Arten
bei durch die Aufteilung der vorhandenen Hard-
sierungsprodukte von VMware, Citrix und Micro- der Virtualisierung verwendet, nun zu den Gebie-
ware in kleinere Rechner (die erwähnten Partiti-
soft zusammen – und gleichzeitig die wohl unbe- ten, die durch die IT-Branche in den letzten Jah-
ons).
kanntesten. Wer sich nun fragt, ob er diese auch ren eine steigende Aufmerksamkeit erhalten ha-
schon verwendet hat, kann beruhigt sein. Denn ben. Vollvirtualisierung
wer jemals einen Computer benutzt hat, kann die- Vollvirtualisierung bezeichnet eine in Software
se Frage mit „Ja“ beantworten. Eine prägnante Betriebssystemvirtualisierung verwirklichte Technologie. Sie kann sowohl als
Zusammenfassung der verschiedenen Technolo- Mit der Betriebssystemvirtualisierung soll die Hypervisor realisiert werden, das heißt die Vir-
gien gibt es leider nur in der englischsprachigen Gruppe der Technologien beschrieben werden, tualisierungsschicht läuft direkt auf der Hardware,
Wikipedia [1]. Dort sind auch die Virtualisierun- welche dafür eingesetzt werden, von einander oder als Hosted-Lösung (siehe unten) In diesen
gen aufgeführt, die jeder schon benutzt hat: zum unabhängige Betriebssystem-Instanzen auf ein Abschnitt wird erst einmal nur die Hypervisor-
Beispiel virtueller Arbeitsspeicher oder Datenträ- und der selben Hardware zu betreiben („Abschot- Lösung betrachtet. Die Gast-Betriebssysteme
gervirtualisierung. tung der Betriebssystem-Instanzen“). müssen bei der Vollvirtualisierung nicht speziell

© freiesMagazin GNU FDL Ausgabe 10/2009 4


V IRTUALISIERUNG

angepasst werden, da diese in der virtuellen auf die Performance aus („Virtualisierungsover-
Umgebung bekannte Hardware vorfinden. Wäh- head“ für CPU-Befehle).
rend das Gastbetriebssystem denkt, auf physi-
kalische Geräte (wie zum Beispiel Netzwerkkar- Hardware-Assisted-Virtualisierungen
ten) zuzugreifen, sind diese jedoch nur virtuell Genau hier setzen Hardware-Assisted-
vorhanden. Wenn nun ein Gastbetriebssystem Virtualisierungen an. Bei diesen Lösungen über-
mit einem anderen Rechner kommunizieren will, nimmt die Hardware das Umsetzen der Befehle
so sendet es beispielsweise über seine virtuel- von „Power-Off-Hardware“ zu „Power-Off-VM“.
le Intel EPro1000-Netzwerkkarte Daten ins LAN. Dies hat zur Folge, dass die Virtualisierungs-
Diese Daten müssen nun von der Virtualisie- schicht sich nicht mehr so intensiv um die Be-
rungsschicht über die physikalische Netzwerkkar- fehle der virtuellen Maschinen kümmern muss.
te weitergeleitet werden („Virtualisierungsover- Die Technologie wird bei Intel-CPUs als Vander-
head“ für Ein- und Ausgabeoperationen). Reine pool Technology „Intel VT-x“ [4] bzw. bei AMD
als AMD-Virtualization „AMD-V“ [5] (früher Code- Vereinfachtes Schema der
Rechenoperationen werden direkt auf den physi-
name Pacifica) bezeichnet. In neueren Rechner- Betriebssystemvirtualisierung.
kalischen CPUs ausgeführt.
generationen wird dieses Prinzip nicht mehr nur von Microsoft-Virtualisierungslösungen (sprich
Die Problematik besteht hierbei darin, dass spe- für CPUs sondern auch für Ein- und Ausgabe- von Microsofts Hyper-V) verwendet werden dür-
zielle Befehle unterbunden werden müssen. Als Befehle verwendet (z. B. „Intel VT-d“). fen, wenn nicht explizit ein Vertrag zusätzlich
Beispiel sei das Ausschalten einer virtuellen Ma-
Paravirtualisierung mit Microsoft ausgehandelt wurde. Es ist davon
schine genannt. Um bei einem einfachen Mo-
auszugehen, dass Microsoft sich dies entspre-
dell zu bleiben, wird im Folgendem angenom- Als letzte Technologie in diesem Abschnitt ist
chend honorieren lässt. Um dieses Problem et-
men, dass hierfür das virtualisierte Betriebssys- die Paravirtualisierung zu nennen. Der Unter-
was zu mildern, wurden spezielle Treiber entwi-
tem den CPU-Befehl „Power-Off-Hardware“ aus- schied zu den bisher genannten Techniken ist,
ckelt, welche bei einem vollvirtualisierten Gast
führt. Würde dieser Befehl jedoch eins-zu-eins dass hierbei das Gastbetriebssystem angepasst
zumindest Teile paravirtualisiert betreiben kön-
vom Hypervisor an den physikalischen Rechner werden muss. Die Anpassung sorgt dafür, dass
nen (z. B. der paravirtualisierte SCSI-Treiber der
weitergeleitet werden, würde der komplette Ser- die virtuelle Maschine weiß, dass sie nicht auf
VMware Tools).
ver mit allen VMs ausgeschaltet werden – an- physikalischer Hardware läuft und somit direkt
statt einer einzelnen VM. Deshalb muss dieser den Befehl „Power-Off-VM“ ausführt. Deshalb er-
Befehl abgefangen und anders verarbeitet wer- zeugt Paravirtualisierung weniger Overhead mit
Anwendungsvirtualisierung
den – hier wird er durch den Befehl „Power-Off- dem Nachteil der nötigen Anpassung des Gas- Gehostete Vollvirtualisierung
VM“ ersetzt. Dies bedeutet, dass grundsätzlich tes. Dadurch war diese Technologie zuerst nur Die gehostete Vollvirtualisierung wird in diesem
sämtliche von virtuellen Maschinen ausgeführte Linux-Kernel basierten VMs vorenthalten. Mi- Artikel der Gruppe der Anwendungsvirtualisierun-
Befehle auf solche kritischen Kommandos hin un- crosoft hat mittlerweile auch für Windows Ser- gen zugeordnet, während sie ebenfalls der Be-
tersucht und bei Bedarf umgeschrieben werden ver 2008 solche Anpassungen entwickelt („En- triebssystemvirtualisierung zugeordnet werden
müssen. Dieser Vorgang wirkt sich entsprechend lightenments“ [6]), welche jedoch ausschließlich könnte. Da jedoch die Virtualisierungsschicht

© freiesMagazin GNU FDL Ausgabe 10/2009 5


V IRTUALISIERUNG

nicht direkt auf der Hardware läuft, sondern viel- dass das Virtualisierungsprogramm nur noch ei- Anwendungsvirtualisierungen
mehr ein Basisbetriebssystem erforderlich ist, in- nes von vielen im Host-Betriebssystem ist und
nerhalb dessen die Virtualisierung als norma- entsprechend auch als solches behandelt wird. Eine verwandte Art sind die (für viele Anwender
le Anwendung läuft, wird sie diesen Abschnitt Des Weiteren ist nicht garantiert, dass ein für missverständlich) direkt als Anwendungsvirtua-
zugeordnet. Als bekannte Vertreter dieser Gat- Windows zertifizierter Treiber auch mit sämtli- lisierungen betitelten Lösungen. Linux-Benutzer
tung wären unter anderem VirtualBox [7], Micro- chen auf Windows ausführbaren Virtualisierungs- kennen ein ähnliches Verfahren seit Jahren. Ge-
soft VirtualPC [8] und VMware Server [9]/Work- lösungen fehlerfrei funktioniert, während die Her- meint ist eine chroot-Umgebung [14]. Hierbei
station [10] zu nennen. Die Vorteile liegen auf steller von Hypervisor-Produkten ihre Treiber ge- wird eine Anwendung in einer vom eigentli-
der Hand: Es ist nicht mehr die Virtualisie- nau für diesen Anwendungsfall testen. chen Betriebssystem abgekoppelten Umgebung
rungsschicht für das Ansprechen der physika- („Sandbox“) ausgeführt. Die Technologien gehen
lischen Hardware verantwortlich, sondern das hierbei heutzutage jedoch weiter und spiegeln
Terminal-Server eher das Verhalten von UnionFS [15] wieder.
zu Grunde liegende Betriebssystem (z. B. Linux,
Die wohl bekannteste Art der Anwendungsvirtua- Die Produkte der führenden Hersteller nennen
Windows, Mac OS X). Somit müssen keine ei-
lisierungen sind Terminal-Server. Hierbei werden sich VMware ThinApp [16], Citrix XenApp Stre-
genen Treiber entwickelt werden. Beispielswei-
nicht verschiedene Betriebssystem-Instanzen aming [17] und Microsoft App-V [18]. Alle beru-
se unterstützt VMware ESX-Server 4 nur eine
parallel auf einem Rechner ausgeführt, sondern hen auf dem Prinzip, dass ein Programm denkt,
begrenzte Anzahl an Netzwerkkarten [11], wäh-
nur parallele Sitzungen mehrere Nutzer inner- es laufe ungehindert im Betriebssystem, wäh-
rend die Lösung mit VMware Server sozusa-
halb eines Betriebssystems. Unter Windows wä- rend in Wirklichkeit jedoch sämtliche Lese- und
gen alle von Linux und Windows unterstützten
ren Microsofts Terminal Services [12] und Citrix Schreiboperationen abgefangen und bei Bedarf
Geräte verwenden kann. Auch Citrix XenServer,
XenApp [13] zu nennen, während Linux mit ei- umgebogen werden können. Einem Programm
welches auf einem Linux-Kernel basiert und so-
ner Vielzahl von Lösungen aufwarten kann. Dies kann somit simuliert werden, dass es z. B. Da-
mit theoretisch sämtliche Linux-Treiber verwen-
liegt höchstwahrscheinlich daran, dass Linux ten von C:\temp nach D:\temp kopieren kann.
den könnte, unterstützt nur einen Teil derer. Der
schon immer als Mehrbenutzer-System entwi- In Wirklichkeit existieren jedoch die Ordner nicht
Hauptnachteil von Hosted-Lösungen ist jedoch,
ckelt wurde. So können bereits die Standard- einmal im Dateisystem sondern nur innerhalb
Desktop-Manager (kdm, gdm) über XDMCP Sit- der virtualisierten Anwendungsumgebung. Unter
zungen für Remote-Benutzer bereitstellen. Um Linux kann dies mit UnionFS abgebildet werden.
Anwendungen in einer Mehrbenutzer-Umgebung
voneinander abzuschotten, wird normalerwei-
se auf Home-Verzeichnissen und Variablen ge-
setzt. Dabei liegen die Programmdaten nur
einmal vor (z. B. C:\Program Files\... bei
Windows bzw. /usr/bin bei Linux), während
Aus Sicht der start.exe existiert die Datei für das Speichern der Dokumente eine Varia-
C:\Windows\setup.ini, aus Sicht der ble %HOMEPATH% (z. B. C:\Users\admin\) bzw.
C:\Program.exe nicht. $HOME (z. B. /home/admin/) verwendet wird. Funktionsweise von UnionFS.

© freiesMagazin GNU FDL Ausgabe 10/2009 6


V IRTUALISIERUNG

Hierbei kann beispielsweise auf einer Read-Only- der virtuellen Desktop-VMs wurden VMware
CD-Rom ein schreibbares Dateisystem simuliert View [20] und Citrix Xen-
werden, indem die Schreiboperationen entweder Desktop [21] entwickelt.
auf eine Festplattenpartition oder direkt in den Ar- Einen entscheidenden
beitsspeicher umgeleitet werden. Nachteil teilen sich je-
doch alle Virtualisie-
Desktopvirtualisierungen
rungslösungen, die für
Als Desktopvirtualisierung wird normalerweise Anwendungsvirtualisierungslösungen in der Übersicht. die (Client-)Benutzer-In-
die Virtualisierung von Client-Betriebssystem be-
Vorteile sind hierbei, dass sämtliche Server- teraktion ausgelegt sind: die Grafikkartenperfor-
zeichnet. Das heißt ein Windows XP läuft nicht
und Client-Betriebssysteme an einem zentra- mance. Bei einem physikalischen Client-PC ist
mehr am Arbeitsplatz-Rechner sondern inner-
len Ort betrieben werden können (z. B. VMware die Grafikkarte direkt mit dem Monitor verbunden,
halb einer virtuellen Server-Infrastruktur (ESX,
vSphere-Umgebung im Serveraum). Somit ist während bei einer Client-VM die Daten von der
XenServer, Hyper-V). Die Benutzer verwenden
eine zentrale Datenhaltung mit verbesserten virtuellen Grafikkarte im Serverraum erst über
entweder einen Terminal-Services-Client oder di-
Backup-, Performance- oder Kostenersparnis- das Netzwerk zur lokalen Grafikkarte und letzt-
rekt einen ThinClient mit Hilfe dessen sie die vir-
Möglichkeiten gegeben. Für die Verwaltung lich zum Monitor übertragen werden müssen.
tuellen Clients steuern können.
Auszug von Virtualisierungslösungen
VMware Citrix Microsoft OpenSource
Vollvirtualisierung ESX3, ESXi3 – – Bochs, Qemu etc.
Hardware-Assisted- ESX, ESXi, VMware Server, XenServer im Vollvirtualisierungs- Hyper-V im Vollvirtualisierungsmo- Xen und KVM (+Derivate) im Vollvir-
Vollvirtualisierung VMware Workstation, .. modus dus tualisierungsmodus
Paravirtualisierung ESX + ESXi für Linux und spe- XenServer im Paravirtualisierungs- Hyper-V im Paravirtualisierungsmo- Xen und KVM (+Derivate)im Para-
zielle Treiber modus für Linux und spezielle Trei- dus für Win2k8 und spezielle Trei- virtualisierungsmodus für Linux
ber ber für z. B. Win2k3
Hosted-Virtualisierung VMware Server, VMware – VirtualPC, XP-Mode in Windows7 HXEN (Hosted Xen), VirtualBox
Workstation, VMware Fusion OSE etc.
Terminal-Server – XenApp Microsoft Terminal-Services XDMCP, LTSP,
FreeNX,
Desktopvirtualisierung VMware View XenDesktop –1 unbekannt
Anwendungsvirtualisierung ThinApp XenApp Streaming Microsoft Desktop Virtualization chroot, unionfs etc.
(SCCM + App-V)
Client-PC-Betriebssystem- VMware CVP22 XenClient2 – –
virtualisierung
1
: Wie bei Microsoft nachzulesen ist [19], gibt es auch eine Microsoft Virtual Desktop Infrastructure. Dahinter verbirgt sich jedoch nach meinem Wissensstand nur das Lizenzmodell,
Vista in einer virtuellen Umgebung betreiben zu dürfen, und kein reales Produkt seitens Microsoft.
2
: Bisher nur angekündigt, noch nicht verfügbar

© freiesMagazin GNU FDL Ausgabe 10/2009 7


V IRTUALISIERUNG

Client-PC-Betriebssystemvirtualisierung [11] http://www.vmware.com/go/hcl


Ein weiterer Ansatz wird sowohl von Citrix mit [12] http://www.microsoft.com/windowsserver2008/en/
XenClient [23] als auch von VMware mit VMware us/rds-product-home.aspx
Client Virtualization Platform [24] verfolgt. Als [13] http://www.citrix.com/English/ps2/products/
Bezeichnung wäre hierfür am ehesten der Be- product.asp?contentID=186
griff Client-PC-Betriebssystemvirtualisierung an- [14] http://de.wikipedia.org/wiki/Chroot
gebracht, da wahrscheinlich die im ersten [15] http://www.filesystems.org/project-unionfs.
Abschnitt dieses Artikels aufgeführte Technik html
der Hardware-Assisted-Virtualisierung verwen- [16] http://www.vmware.com/products/thinapp/
det wird. Jedoch nicht nur für die CPU, sondern [17] http://www.citrix.com/English/ps2/products/
für sämtliche PCI-Geräte. Somit kann auch die subfeature.asp?contentID=163987
Grafikkarte mittels HA-Virtualisierung performant
Funktionsweise von Citrix HDX. [18] http://www.microsoft.com/systemcenter/appv/
von mehreren virtuellen Client-Betriebssystemen default.mspx
Während VMware in der Servervirtualisierung verwendet werden. Dies ist nötig, um aufwendige
[19] http://www.vmware.com/products/view/
der Marktführer ist, kann in diesem Bereich graphische Programme innerhalb der virtualisier-
[20] http://www.citrix.com/English/ps2/products/
vor allem Citrix durch seine jahrelange Erfah- ten Systeme verwenden zu können. Als Beispiel
product.asp?contentID=163057
rung im Terminal-Server-Bereich punkten. Un- sei hier der Support von 3D-Funktionalitäten wie
[21] http://hdx.citrix.com
ter anderem wird mit der HDX-Technologie [22] DirectX oder OpenGL erwähnt.
[22] http://www.youtube.com/watch?v=kxoWxjThzo
dieses Problem etwas gelindert. Ein Aspekt L INKS 0
dieser Technik soll mit folgendem (wieder [23] http://www.vmware.com/company/news/releases/
[1] http://en.wikipedia.org/wiki/Virtualization
vereinfachten) Modell dargestellt werden: In- cvp-intel-vmworld.html
[2] http://www.ibm.com/systems/p/
nerhalb des virtuellen Clients wird der Be-
fehl Hintergrund_schwarz_ausmalen() ausge- [3] http://www.fujitsu.com/global/services/computing/
server/sparcenterprise/
führt. Während dies normalerweise dazu führt, Autoreninformation
dass die virtuelle Grafikkarte nun den kom- [4] http://www.intel.com/technology/virtualization/
technology.htm?iid=tech_vt+tech Florian E.J. Fruth beschäftigt
pletten virtuellen Bildschirm schwarz ausmalt
(und somit z. B. 1024x768 schwarze Pixel zum [5] http://www.amd.com/virtualization sich seit über drei Jahren intensiv
ThinClient übertragen werden müssen), sorgt [6] http://blogs.msdn.com/tvoellm/archive/2008/ mit Virtualisierungslösungen von
HDX dafür, dass der eigentliche Befehl Hin- 01/02/hyper-v-integration-components-and- VMware, Citrix und der Open-Source-
tergrund_schwarz_ausmalen() zum ThinClient enlightenments.aspx Community.
übertragen wird. Somit müssen nur wenige Bytes [7] http://www.virtualbox.org
für den Befehl versendet werden, welcher dann [8] http://www.microsoft.com/windows/virtual-pc/
der lokalen (ThinClient-) Grafikkarte das Ausma- [9] http://www.vmware.com/products/server/ Diesen Artikel kommentieren
len des Bildschirms überlässt. [10] http://www.vmware.com/products/ws/

© freiesMagazin GNU FDL Ausgabe 10/2009 8


PAKETVERWALTUNG

Gefahren von Fremdquellen am Beispiel PPA von Martin Gräßlin

remdpakete und -quellen gelten in den wird, welches bei einem Upgrade der Distribution exakt die gleiche Version und exakt die gleichen

F meisten Distributionen als gefährlich,


und es wird immer wieder davor ge-
warnt, dass diese ein Update zerstören kön-
zu Problemen führen kann.

Beispiel: Aurorae
Als fiktives Beispiel dient die KDE-
Dateien.

Mit der Veröffentlichung von Karmic hat der An-


wender das Interesse an seinem PPA verloren
nen. In diesem Artikel wird an einem Beispiel
in Verbindung mit PPAs aufgezeigt, wie leicht Fensterdekoration Aurorae, welche erstmalig und benutzt selber das Paket aus den Quellen.
ein einzelnes Paket ein Kubuntu-System un- kurz vor der Veröffentlichung von KDE 4.3 auf Mögliche Aktualisierungen werden nicht mehr im
benutzbar machen kann. Das Beispiel lässt kde-look.org zum Download angeboten wur- PPA veröffentlicht. Wer Aurorae also aus dem
sich leicht auf andere Distributionen wie de [3]. Aurorae hat jedoch eine zwingende Ab- PPA verwendet, wird mit möglichen Bugfixes
openSUSE in Verbindung mit dem Build Ser- hängigkeit auf KDE 4.3 und zwar in beide Rich- nicht mehr versorgt. Das Paket in den Paketquel-
vice adaptieren. tungen, das heißt sie funktioniert weder mit KDE len würde jedoch gewartet werden oder Updates
4.2, noch wird der veröffentlichte Quellcode mit würden über die bekannten Kubuntu-PPAs veröf-
KDE 4.4 funktionieren. Ab KDE 4.4 wird die Deko- fentlicht werden.
PPAs und Build Service ration direkt in KDEs Fenstermanager integriert
Personal Package Archives (kurz PPA) sind und Bestandteil einer KDE-Standardinstallation Situation beim Upgrade
Bestandteil der Entwicklungsplattform Launch- sein. Für Ubuntu 9.10 „Karmic Koala“ wurde das Nun ist ein weiteres halbes Jahr vergangen und
pad [1] der Firma Canonical und ermöglichen es Paket als kwin-style-aurorae in das Repository es steht Ubuntu 10.04 „Lucid Lynx“ [4] vor der Tür.
jedem angemeldeten Nutzer, Debian-Pakete für universe aufgenommen. KDE 4.4 wurde mittlerweile veröffentlicht und Au-
verschiedene Architekturen zu erstellen und auf rorae ist somit Bestandteil von KDE. Die Kubuntu-
den Webservern zu hosten. Ein einzelnes PPA Für Ubuntu 9.04 „Jaunty Jackalope“ existiert je- Maintainer passen ihre Abhängigkeiten entspre-
ist eine Paketquelle, welche sich wie jede ande- doch kein Paket, da die Abhängigkeiten prinzi- chend an und kwin-style-aurorae wird ein virtu-
re in ein Ubuntu (oder jede Debian-basierte Dis- piell nicht erfüllt sind. Wer jedoch 4.3 verwen- elles Paket, welches von der neuen Version von
tribution) integrieren lässt. openSUSE bietet mit det, kann das Paket aus Karmic problemlos in- kde-window-manager entfernt wird.
dem Build Service [2] eine vergleichbare Archi- stallieren. Ein Anwender – dies ist nun ein hy-
tektur, welche jedoch nicht nur Pakete für die ei- pothetischer Fall – hat dennoch ein PPA ein- Wer also Aurorae aus den Paketquellen verwen-
gene Distribution, sondern auch für viele gängige gerichtet und bietet die Dekoration als Paket det, hat beim Update keine Probleme. An Au-
Distributionen erstellen kann. aurorae für andere Anwender an. Der Name ent- rorae selbst wurde seit der initialen Veröffent-
spricht dabei nicht dem Namensschema für KDE- lichung kaum gearbeitet, insbesondere werden
Für einen erfahrenen Paketbauer bieten beide Fensterdekorationen in Debian/Kubuntu. die Dateien noch an die gleiche Stelle installiert.
Konzepte sehr gute Möglichkeiten, schnell und Von dem Paket aus dem PPA wissen die Maintai-
sicher Pakete zu erstellen und zu verteilen. Bei Bei einem Update auf Karmic Koala zeigt sich be- ner jedoch nichts und sie haben ihre Abhängig-
einem unerfahrenen Paketbauer besteht jedoch reits das erste Problem: Es gibt nun zwei Pake- keiten daher nicht anpassen können. Das Paket
die Gefahr, dass ein „fehlerhaftes“ Paket erstellt te für die gleiche Software. Die Pakete enthalten wird also bei dem Upgrade nicht entfernt werden.

© freiesMagazin GNU FDL Ausgabe 10/2009 9


PAKETVERWALTUNG

Nun gibt es immer noch Anwender, welche das garantiert, dass eine Dekoration, geschrieben ge- Fazit
Paket aus dem PPA verwenden. Die Installation gen Version X der Klasse, mit Version X+1 funk-
Dieser Artikel zeigt, wie leicht ein einziges Pa-
liegt mittlerweile neun Monate zurück. Die Ak- tionieren wird. Den Entwicklern ist dieses Pro-
ket aus einer Fremdquelle bei einem Update
tualisierung des Pakets kde-window-manager blem bewusst und die Klasse ist eigentlich nur
das System „zerstören“ kann. Das Problem muss
wird fehlschlagen, da es Dateien enthält, wel- für Dekorationen gedacht, welche mit KWin ver-
nicht einmal beim ersten Upgrade auftreten, son-
che schon in einem anderen Paket enthalten öffentlicht werden und immer direkt an die aktuel-
dern kann durchaus mehrere Versionen spä-
sind. Das Update wird nicht fertig ausgeführt, le Version angepasst werden. Es wird also ange-
ter erst erscheinen. Die Verbindung mit einem
der Anwender versteht zwar die Fehlermeldung nommen, dass Dekorationen für 4.3 nur mit 4.3
Fremdpaket herzustellen, welches man vor Mo-
nicht, hat aber gehört, dass man in so einem Fall betrieben werden, Dekorationen für 4.4 nur mit
naten oder Jahren installiert hat, kann durchaus
über die Konsole das Upgrade beenden kann. Er 4.4. Da Aurorae sich in KDE befindet, kann diese
schwierig sein. Die Fehlersuche wird für einen
macht auch den obligatorischen Neustart, mel- Annahme als korrekt angesehen werden. Durch
Laien fast unmöglich.
det sich an, sieht den Desktop laden und kann das fehlgeschlagene Update ist eine Verletzung
plötzlich nichts mehr anklicken. Ein Fenster wur- der Annahme aufgetreten. Fremdpakete sollten daher immer mit Vorsicht
de sogar noch geöffnet, es fehlen aber die De- benutzt werden.
Versucht man, den Fenstermanager manuell in
korationen und es lässt sich nicht verschieben.
der Konsole zu starten, so erhält man eine Feh-
Auch wenn versucht wird, das K-Menü zu öffnen,
lermeldung wie die folgende:
L INKS
passiert nichts. KRunner startet noch, lässt sich
aber nicht aktivieren. Der Rechner ist also prak- kwin: symbol - lookup error : /usr/lib/y [1] http://launchpad.net
tisch unbenutzbar. Es lässt sich nicht einmal ein libkdeinit4 \ _kwin .so: undefined symboly [2] https://build.opensuse.org
Browser öffnen, um im Forum nach Hilfe zu fra- : -ZTI26KDecorationFactoryUnstable [3] http://www.kde-look.org/content/show.php/
gen. Was ist passiert? Aurorae+Theme+Engine?content=107158
Das hier beschriebene Problem tritt in der Praxis
[4] http://www.heise.de/open/news/meldung/145576
Das Paket kde-window-manager konnte nicht bereits auf, da auf kde-look.org mehrere Dekora-
aktualisiert werden. Die Abhängigkeiten wur- tionen angeboten werden, welche die Unstable- [5] http://wiki.ubuntuusers.de/KWin#KWin-startet-
nicht-mehr
den jedoch aktualisiert. Darunter das Paket API von KWin verwenden. Die Unstable-API wur-
libkdecorations4. Dieses stellt die Schnittstelle de in KDE 4.2 eingeführt – mit dem Hinweis, dass
zwischen einer Fensterdekoration und dem Fens- sie nur in 4.2 gilt und in 4.3 wurde sie verändert,
termanager dar. Die Schnittstelle liegt nun in der jedoch nicht entfernt. Es ist davon auszugehen, Autoreninformation
Version 4.4 vor, KWin und Aurorae in der Ver- dass die Entwickler in 4.4 erneut Veränderungen
Martin Gräßlin ist KDE-Workspace-
sion 4.3. Wie oben bereits erwähnt, ist Aurorae vornehmen werden. Der Artikel zu KWin im ubun-
Entwickler und unter anderem Autor
in der auf kde-look.org angebotenen Version nur tuusers Wiki hat einen eigenen Abschnitt zu dem
der Fensterdekoration Aurorae.
für KDE 4.3 gedacht. Dies liegt daran, dass Au- hier beschriebenen Problem [5]. Die aktuell vor-
rorae eine Klasse verwendet, die „KCommon- gegebene Lösung würde jedoch nicht funktionie-
DecorationUnstable“ heißt. KWin bietet auf diese ren, da vorausgesetzt wird , dass KWin und die
Klasse keine Binärkompatibilität an. Es ist nicht Bibliothek in der gleichen Version vorliegen. Diesen Artikel kommentieren

© freiesMagazin GNU FDL Ausgabe 10/2009 10


L INUX ALLGEMEIN

Der September im Kernel-Rückblick von Mathias Menzer

asis aller Distributionen ist der Linux- CUSE (Character Devices in Userspace) ist vier Threads auf einem Vier-Kern-System aus-

B Kernel, der fortwährend weiterentwi-


ckelt wird. Welche Geräte in einem
halben Jahr unterstützt werden und welche
ebenfalls ein neuer Treiber, der aufbauend auf
FUSE (Filesystem in Userspace) die Implemen-
tierung zeichenorientierter Geräte im Berechti-
geführt werden bessere Leistungen, als mit be-
liebig vielen Threads gestartete Anwendungen
mit dem aktuellen CFS (Completely Fair Sche-
Funktionen neu hinzukommen, erfährt man, gungskontext des Anwenders erlaubt. Erstes Bei- duler). Kolvias, der sich bereits vor zwei Jahren
wenn man den aktuellen Entwickler-Kernel im spiel ist die mitgelieferte Umsetzung von OSS mit dem Scheduler des Linux-Kernels beschäf-
Auge behält. Proxy [6], der eine Emulation des veralteten, je- tigte und sich aus der Entwicklergemeinde im
doch noch immer weit verbreiteten, Open Sound Streit über den CFS zurückzog, sieht das Pro-
Kernel 2.6.31 Systems darstellt. Besitzer älterer ATI Radeon- blem darin, dass ein Scheduler nicht allen Anfor-
Etwas später als in der vergangenen Ausga- Karten werden sich freuen, denn die Unterstüt- derungen genügen kann: Ein Scheduler, der auf
be angekündigt (siehe „Der August im Kernel- zung für das in 2.6.29 eingeführte Kernel Mo- 4096 CPUs skaliert, kann trotzdem daran schei-
Rückblick“, freiesMagazin 09/2009 [1]) wurde de Setting wurde für die Chipsätze R1xx, R2xx, tern, ein Flash-Video auf einem System mit we-
der Kernel 2.6.31 veröffentlicht [2]. Zu den her- R3xx, R4xx und R5xx erweitert, R6xx und R7xx niger als vier Kernen im Vollbildmodus flüssig ab-
ausragenden Neuerungen zählt die Unterstüt- befinden sich noch in Entwicklung. Verbesserun- zuspielen.
zung für USB 3.0, was dank der von der Intel- gen beim Freigeben von Speicherbereichen sol-
Entwicklerin Sarah Sharp beigesteuerten Trei- len verhindern, dass Komponenten wie zum Bei- Ingo Molnar, Author des von Kolvias angegriffe-
ber für xHCI (Extensible Host Controller In- spiel verlinkte Bibliotheken, die von noch laufen- nen Completely Fair Schedulers, hat sich BFS
terface) ermöglicht wird (siehe „Der Juni im den Programmen benötigt werden, aus dem Ar- mittlerweile angeschaut, bescheinigt ihm jedoch
Kernel-Rückblick“, freiesMagazin 07/2009 [3]). beitsspeicher entfernt werden. Dadurch wird ein schlechtere Resultate [9]. Er erachtet BFS als
Zwischenzeitlich ist auch Hardware in greifbare flüssigeres Arbeiten am Desktop ermöglicht, da spannenden und wagemutigen Ansatz. Die Prio-
Nähe gerückt, die den neuen Standard nutzt, dar- die langsameren Zugriffe auf die Festplatte zum rität sieht auch er bei kleineren Systemen lie-
unter ein Controller [4] sowie eine Festplatte [5]. Nachladen dieser Komponenten entfallen bzw. gend, da 4096-CPU-Systeme eher selten sind
auf ein Minimum reduziert werden können. und der Scheduler für diese dann auch optimiert
Fastboot stammt ebenfalls aus Intels Schmiede würde. In diesem Zusammenhang bietet Molnar
und soll den Systemstart beschleunigen, indem Kolvias die Zusammenarbeit an und verspricht,
die Suche und Initialisierung von Geräten und
Con Kolvias gute Ideen, die BFS liefert, auch zu folgen und in
Partitionen sowie der Start von Diensten parallel Ein Comic [7] hat den australischen Anästhe- den Mainline-Kernel aufzunehmen.
abgewickelt wird. Die Verfügbarkeit der Kompres- sisten Con Kolvias dazu inspiriert, einen neu-
sionsmethoden LZMA und BZIP2 bringen zwar en Scheduler zu entwickeln, der insbesondere Hyper-V/Staging-Treiber
keinen Leistungs- wohl aber einen Platzgewinn, Systemen mit bis zu vier Prozessoren oder Ker- Beim Aufräumen seines staging-Zweiges, ein Be-
da hierdurch das kompilierte Kernel-Abbild bis zu nen – also vorrangig Desktop-Systemen – be- reich der Kernel-Code-Verwaltung, der der Auf-
33 Prozent gegenüber der herkömmlichen GZIP- sonders gute Leistungen zeigt [8]. Der „Brain nahme und Pflege kommender Treiber dient,
Kompression verkleinert wird. Fuck Scheduler“ zeigt bei Anwendungen, die mit stolperte Kroah-Hartmann über einige schlecht

© freiesMagazin GNU FDL Ausgabe 10/2009 11


L INUX ALLGEMEIN

oder ungepflegte Treiber. „drivers/staging ist KEI- hergeht. Allerdings sieht Torvalds dies nicht als [4] http://www.heise.de/newsticker/meldung/145672
NE Mülldeponie für toten Code“ beklagte er so großes Problem, da die Stabilität des Kernels [5] http://www.heise.de/newsticker/meldung/145828
sich [10] und kündigte an, die nicht mehr ge- gut sei und Fehler rasch beseitigt würden. [6] http://userweb.kernel.org/~tj/ossp/
warteten Treiber wieder aus dem Kernel zu ent- [7] http://xkcd.com/619/
fernen. Traurig war dabei die Tatsache, dass Echtzeit-Kernel für Debian
[8] http://www.linux-magazin.de/NEWS/Con-Kolivas-
auch der erst kürzlich von Microsoft freigegebe- Pengutronix [14], Dienstleister für Embedded-
meldet-sich-mit-neuem-Scheduler-zurueck
ne Treiber für Hyper-V (siehe „Der Juli im Kernel- Systeme unter Linux, stellt seit kurzem vor-
[9] http://www.linux-magazin.de/NEWS/Ingo-Molnar-
Rückblick“, freiesMagazin 08/2009 [11]) davon kompilierte Echtzeit-Kernel für Debian zur Verfü-
testet-neuen-Brain-Fuck-Scheduler
betroffen war. Nachdem mit über 200 Patches gung [15]. Diese wurden mit PREEMPT_RT [16],
[10] http://lkml.org/lkml/2009/9/3/3
der Treiber in eine Form gebracht wurde, die die einer Echtzeit-Erweiterung für den Linux-Kernel,
modifiziert und sollen Anwendern, die diese [11] http://www.freiesmagazin.de/freiesMagazin-2009-
Aufnahme in 2.6.32 ermöglichen, sollte er schon 08
zu 2.6.33 wieder aus dem Kernel fliegen. Allein Funktionalität benötigen, das eigenhändige Kom-
pilieren des Kernels ersparen. Einen Wermuts- [12] http://lkml.org/lkml/2009/9/10/297
das Wiederauftauchen der Microsoft-Entwickler
tropfen gibt es allerdings: Die von Pengutronix [13] http://www.pro-linux.de/news/2009/14727.html
mit neuen Patches [12] nach dieser Ankündigung
bereitgestellten Kernel-Pakete basieren auf dem [14] http://www.pengutronix.de/index_de.html
könnte Hyper-V vor diesem Schicksal bewahren.
Für manche der 22 anderen Treiber auf Kroah- Vanilla-Kernel und enthalten nicht die Debian- [15] http://www.pro-linux.de/news/2009/14750.html
Hartmanns Abschussliste haben sich ebenfalls spezifischen Kernel-Patches. [16] http://rt.wiki.kernel.org/
Maintainer gefunden, den verbliebenen wird je- [17] http://lkml.org/lkml/2009/9/27/166
Kernel 2.6.32-rc1
doch der Rausschmiss blühen. [18] http://www.linux-magazin.de/NEWS/Kernel-2.6.
Fast drei Wochen nach Veröffentlichung von 32-geht-in-die-abschliessende-Testphase
2.6.31 beendete Torvalds das Zeitfenster, in wel-
Torvalds: „Linux ist aufgebläht“
chem Neuerungen in den nächsten Kernel aufge-
Einer Intel-Studie zufolge verliert der Linux- nommen werden [17]. Der überwiegende Anteil Autoreninformation
Kernel mit jeder Version etwa zwei Prozent an der Änderungen von 2.6.32-rc1 liegen im Bereich
Geschwindigkeit. Auf der in Portland stattfinden- der Treiber, gefolgt von Firmware und den Archi- Mathias Menzer wirft gerne einen
den LinuxCon äußerte Torvalds, dass er den Ker- tekturen, wobei bei letzteren die ARM-Architektur Blick auf die Kernel-Entwicklung, um
nel inzwischen für zu aufgebläht halte. Eine Lö- stark im Vordergrund steht [18]. mehr über die Funktion von Linux
sung dafür habe er jedoch nicht [13]. Tatsäch- zu erfahren und seine Mitmenschen
lich nimmt das Volumen des Kernel immer weiter L INKS mit seltsamen Begriffen und unver-
zu, wie auch die Studie „Who Writes Linux and [1] http://www.freiesmagazin.de/freiesMagazin-2009- ständlichen Abkürzungen verwirren
Who Supports It“ (siehe „Der August im Kernel- 09 zu können.
Rückblick“, freiesMagazin 09/2009 [1]) belegt. [2] http://ikhaya.ubuntuusers.de/2009/09/10/der-
Dies ist der stetig steigenden Anzahl an Funktio- kern-fuer-karmic-2-6-31-1673/
nen und Treibern geschuldet, die mit einer eben- [3] http://www.freiesmagazin.de/freiesMagazin-2009-
falls größer werdenden Entwicklergemeinde ein- 07 Diesen Artikel kommentieren

© freiesMagazin GNU FDL Ausgabe 10/2009 12


P ROGRAMMIERUNG

Java, Teil 1 – Einführung in eine moderne Sprache von Raoul Falk

VM, JFC, Applet, Swing . . . Viele Begriffe auf eine ausgereifte Entwicklungsumgebung zu- besprochen, ebenso die Vorbereitung einer Ent-

J schwirren seit nunmehr 13 Jahren in den


Welten der IT herum, die ihren Ursprung
in der Sprache Java haben. Dieser Artikel als
rückgreifen.

Die wichtigsten Umgebungen zur Java-


wicklungsumgebung. In jedem Falle sind beide
Umgebungen absolut ausgereift, reich an Featu-
res, leicht erweiterbar und nehmen eine absolut
erster Teil einer kleinen Serie soll die Java- Entwicklung sind ohne Zweifel NetBeans [1] gleichberechtigte Stellung im Bereich der profes-
Welt ein wenig beleuchten und den Leser in und Eclipse [2]. Beides sind freie Programme, sionellen Java-Entwicklung ein.
die Lage versetzen, selbst kleine Programme die in den gängigsten Distributionen aus den
in Java zu schreiben und Code zu lesen, ohne Paketquellen zu beziehen sind und jeweils ihre Installation und Vorbereitungen
sich in historischen oder technischen Einzel- eigenen Vorzüge und Schwächen haben. Immer Da Sun Java [4] sehr verbreitet ist, werden die
heiten zu verlieren. wieder zu beobachtende „Glaubenskriege“ be- meisten Nutzer bereits diese Laufzeitumgebung
züglich der Wahl der Umgebung, die meist ergeb- installiert haben. Um dies zu überprüfen, fragt
Grundsätzliches nislos ausgefochten werden, sollten von keinem man die aktuell benutzte Version mit
Um ein Java-Programm lauffähig zu machen, seriösen Entwickler ernst genommen werden.
sind drei Schritte nötig. Zuerst schreibt der Ent- Der offensichtlichste Unterschied ist wohl, dass $ java -version
wickler den Quellcode als java-Datei. Diese Datei NetBeans einen grafischen GUI-Builder enthält, java version "1.6.0 _10"
kann nun durch den Compiler in eine class-Datei mit dem man per Drag & Drop optisch anspre- Java(TM) SE Runtime Environmenty
kompiliert werden. Es entsteht ein Bytecode, der chende GUIs erstellen kann, ohne tiefgehende (build 1.6.0 _10 -b33)
immer noch plattformunabhängig ist. Man kann Kenntnisse über die Swing-Bibliothek [3] zu be-
diesen Bytecode auf jeder Plattform ausführen, nötigen. ab. Die aktuellste Version von Sun Java ist
auf der die Java-Laufzeitumgebung (JVM - Java „1.6.0_16“. Sollte die Versionsabfrage etwas in
Virtual Machine) installiert ist. Der letzte Schritt Andererseits erzeugt NetBeans mit seiner Vorla- der Art
zur Ausführung ist die Übersetzung des Byteco- ge für eine grafische Applikation bereits eine er-
java version "1.5.0"
des in die Befehle der jeweiligen Plattform durch hebliche Menge Code (300 Zeilen), welcher für
gij (GNU libgcj ) version 4.3.2
die Laufzeitumgebung. Einsteiger und vielleicht sogar für Amateure sehr
schwer verständlich ist. Es besteht also durchaus
ausgeben, hat man kein Sun Java, sondern ein
Die Wahl des Editors die Gefahr, mit dem GUI-Builder in eine Sackgas-
anderes Java (hier GNU Compiler for Java [5]) in-
Es ist eigentlich jeder Editor geeignet, um in se zu laufen, wenn man den produzierten Code
stalliert, was aber auch nicht weiter schaden soll-
Java zu programmieren. Man sollte sich aber nicht vollständig versteht. Daher ist ein Einstieg
te.
den Komfort von Syntaxhervorhebung gönnen, in Swing mit dem GUI-Builder nur eingeschränkt
um sich die Arbeit ein wenig zu erleichtern. Für zu empfehlen. Für Eclipse ist ein GUI-Builder bis Alternativ hilft auch ein Besuch der offiziellen
GNOME eignet sich der hauseigene Editor gedit, dato nur in einem kommerziellen Zusatzpaket er- Sun-Testseite [6], die aber natürlich nur ein Er-
für KDE beispielsweise Kate. Mit zunehmender hältlich. In der nächsten Ausgabe wird die Gra- gebnis liefert, wenn Java-Unterstützung im Brow-
Komplexität der Programme möchte man aber fikprogrammierung unter Java noch ausführlich ser eingerichtet ist.

© freiesMagazin GNU FDL Ausgabe 10/2009 13


P ROGRAMMIERUNG

Nun braucht man noch die notwendigen Biblio- Anschließend startet man das Programm mit außerhalb der Klasse aufgerufen werden kann,
theken, um Programme selbst kompilieren zu static besagt, dass die Methode direkt aus der
können. Zunächst muss man sich nun entschei- $ java MyClass Klasse aufgerufen wird (ohne Objekt), void legt
den, welche Version von Java man installieren schließlich fest, dass die Methode keinen Rück-
Hinweis: Die Endung .class wird nicht mit an-
möchte. Das Unternehmen Sun ist Urheber von gabewert hat. In den runden Klammern steht der
gegeben.
Java und stellt mittlerweile Versionen für Linux Parameter, der dieser Methode übergeben wird.
bereit, die zumindest unter der i386- und amd64- In diesem Falle ein Array (eine Art
class MyClass {
Architektur laufen. Man benötigt das JDK (Java von Liste) von Strings (Zeichenket-
public static void main( String [] args)
Development Kit), welches man nicht mit der JRE ten), auf die in der Methode unter
{
(Java Runtime Environment) verwechseln darf, dem Namen args (Argument) zu-
System .out. println (" Hello World ");
welche nur das Ausführen von Java-Programmen gegriffen werden kann.
}
ermöglicht. Das offizielle Java von Sun soll zu-
// Dies ist ein einzeiliger Kommentar . Nun beginnt eingeschlossen von
künftig unter der GPL veröffentlicht werden, so-
dass man diesbezüglich wohl keine Bedenken den geschweiften Klammern der ei-
/* Dies ist ein Blockkommentar , gentliche Programmcode. Es wird
haben sollte. Man installiert das offizielle Java
der ueber mehrere Zeilen geht. die Methode println aufgerufen,
beispielsweise durch das Paket sun-java6-jdk.
*/ die unter dem Pfad System.out er-
Die bereits jetzt komplett freie Version Open-
} reichbar ist. Die Methode gibt ei-
JDK lässt sich in den gängigsten Distributionen
durch das Paket openjdk-6-jdk installieren. Soll- Listing 1: MyClass.java ne Zeichenkette mit Zeilenumbruch
ten dennoch außerordentliche Probleme auftre- auf der Konsole aus. Diese Zei-
ten, hilft Ubuntu-Nutzern die Wikiseite [7] in den Erklärung des Beispiels chenkette wird in runden Klammern übergeben.
meisten Fällen weiter. Die erste Zeile leitet die Klasse ein, den äußeren Am Ende jeder Anweisung muss ein Semikolon
Rahmen einer Java-Anwendung. Man beachte, stehen (auch wenn es die letzte ist).
Das erste Programm dass der Bezeichner der Klasse (hier MyClass) Schließlich wird die Klasse noch durch eine ge-
Das beliebte „Hello World“ ist in Java auf den ers- groß geschrieben wird. schweifte Klammer geschlossen. Das sind zu-
ten Blick komplex. Es wird jedoch jeder einzelne
Die zweite Zeile ist die Kopfzeile der Hauptme- nächst eine Menge Schlüsselwörter für eine so
Begriff genau erklärt, um niemandem mit Halb-
thode der Klasse, die immer main heißen muss. simple Funktionalität. Doch ist gerade diese strik-
wissen und Vermutungen zurückzulassen.
Eine Methode ist ein Unterprogramm. Hat sie te Strukturierung unter Java in vielen Situationen
Der Quelltext wird als Datei MyClass.java ge- einen Rückgabewert, spricht man von Funktio- vorteilhaft.
speichert. Danach bewegt man sich in der Kon- nen, ansonsten auch von Prozeduren. Sie ist der
sole in das entsprechende Verzeichnis und kom- Einstiegspunkt, an dem ein Programm mit der Was zeichnet Java aus?
piliert das Programm mit Ausführung beginnt. Die Kopfzeile der Hauptme- Wie am Beispiel erkennbar, ist Java sehr streng
thode muss in jedem Programm genau so aus- strukturiert. Dies ist nicht zu vergleichen mit Spra-
$ javac MyClass .java sehen. public besagt, dass die Methode von chen, die auch als Skripte ausgeführt werden

© freiesMagazin GNU FDL Ausgabe 10/2009 14


P ROGRAMMIERUNG

können wie zum Beispiel Python. Der Code wird Diese Klasse enthält nur eine Va- class Beispiel {
dadurch umfangreicher. Allerdings erkennt der riable, nämlich eine Zeichenket- public static void main( String [] args) {
Compiler Fehler im Code sehr präzise und zwingt te (String), die text heißt und
dem Entwickler einen sauberen und typsicheren den Inhalt Hallo Welt hat. Sie // Die Variable zahl1 wird deklariert .
Stil auf. Typsicherheit wird bei Java sehr groß ge- ist als static deklariert, damit sie int zahl1;
schrieben. Das bedeutet, dass zu jeder Zeit wäh- eine Eigenschaft der Klasse ist,
rend der Laufzeit des Programms gewährleistet nicht von einem Objekt (dazu spä- // zahl1 wird initialisiert es wurde
ist, dass eine Variable stets den richtigen Typ ter mehr). Diese Klasse lässt sich // ihr ein Wert zugewiesen .
hat und so verwendet werden kann, wie es die kompilieren, jedoch nicht ausfüh- zahl1 = 7;
Programmlogik erfordert. Es kann also nicht pas- ren. Es fehlt die main-Methode.
sieren, dass ein Programm anstandslos kompi- Doch die Klasse aus dem ersten // zahl2 wird in einer Anweisung
liert, obwohl eine Zeichenkette (String) durch ei- Beispiel kann nun auf die Varia- // deklariert und initialisiert .
ne ganze Zahl (Integer) dividiert wird (was eine ble der zweiten Klasse zugreifen. int zahl2 = 3;
nicht definierte Operation wäre). Man ergänze die Hauptmethode System .out. println (zahl1 + zahl2);
der Klasse MyClass durch die An- // Ausgabe : 10
Syntaktisches weisung System .out. println (zahl1 * zahl2);
Die wichtigsten Syntaxregeln sind bereits im Bei- // Ausgabe : 21
spiel erkennbar. Klassen, Methoden und Blö- System .out. printlny
System .out. println (zahl1 / zahl2);
cke (logisch zusammenhängende Anweisungen) ( MyClass2 .text);
// Ausgabe : 2
werden von geschweiften Klammern umschlos-
sen. Jede Anweisung wird mit einem Semikolon Sind beide Klassen (neu) kompi-
liert, wird auf der Konsole nun
// " double " ist genauer
beendet. Methoden und Variablen werden mit An- double zahl3 = 7.0;
gabe ihres Pfades aufgerufen. Unterverzeichnis- auch Hallo Welt ausgegeben:
se werden mit Punkten getrennt. System .out. println (zahl3 / zahl2);
$ javac MyClass .java
Fügt man eine weitere Klasse hinzu und legt sie $ javac MyClass2 .java // Ausgabe : 2.33333...
im gleichen Verzeichnis ab wie die andere Klas- $ java MyClass }
se, sind sich die Klassen untereinander bekannt. Hallo Welt }

class MyClass2 Listing 3: Beispiel.java


Primitive Datentypen und Mathematik
{
In Java kann man sehr ähnlich wie in jeder ande- Warum wird bei der ersten Division als Ergebnis
static String text =" Hallo y
ren Programmiersprache mathematische Opera- der Wert 2 ausgegeben? In dem Beispiel wird mit
Welt ";
tionen durchführen. Die gängigsten Datentypen ganzen Zahlen (int) gerechnet. Die Nachkom-
}
und Operationen sollen im folgendem Beispiel mastellen werden einfach abgeschnitten. Wird
Listing 2: MyClass2.java gezeigt werden. ein genaues Ergebnis gewünscht, muss ein an-

© freiesMagazin GNU FDL Ausgabe 10/2009 15


P ROGRAMMIERUNG

derer Datentyp benutzt werden, wie zum Beispiel Bezeichner der Klasse ist gleichzeitig der Be- class Person {
double. zeichner des Typs der Objekte, die Instanzen die- public String vorname ;
ser Klasse sind. public String nachname ;
Klassen und Objekten
Objekte können in Java für nahezu alle greifba- Es wurde ein neuer Datentyp namens Person er- public void printName ()
ren Elemente des Programms stehen. Diese kön- zeugt. Man beachte, dass die beiden Variablen {
nen simpel (eine Zahl) oder komplex (eine Liste vorname und nachname nun nicht als static de- System .out. println ( vornamey
von Hashmaps, in denen offene Datenbankver- klariert werden. Das hat zur Folge, dass jedes +" "+ nachname );
bindungen auf die jeweiligen Nutzer abgebildet Objekt vom Typ Person nun die beiden Varia- }
werden) sein. Eine Tatsache muss allerdings be- blen „hat“. Jede Person hat ihre eigenen Varia-
blen. Somit sind die Variablen keine Eigenschaf- public static void main( Stringy
achtet werden: Primitive Datentypen sind in Ja-
ten der Klasse mehr, sondern von den Instanzen, [] args)
va keine Objekte. Dies sind beispielsweise int
die sie erzeugt. Die Methode printName ist eben- {
oder double (später dazu mehr). Jedes Objekt Person einePerson = new y
hat einen bestimmten Typ. Im Beispiel MyClass2 falls nicht statisch, sie wird also nur von Objek-
Person ();
ist die Variable text ein Objekt vom Typ String. ten aufgerufen. Die runden Klammern nach dem
einePerson . vorname = "Hansy
Somit ist sichergestellt, dass ein Objekt nur so Bezeichner sagen aus, dass die Methode keinen
";
benutzt werden kann, wie es für seinen Typ defi- weiteren Parameter erwartet. Sie gibt den Vor-
einePerson . nachname = "y
niert ist. Ist für Objekte des Typs „Turnschuh“ bei- namen, gefolgt von einem Leerzeichen (Zeichen- Maier ";
spielsweise die Methode „volltanken“ nicht defi- ketten werden mit + verbunden), und dann den einePerson . printName ();
niert, obwohl sie im Code aufgerufen wird, würde Nachnamen auf der Konsole aus. }
der Compiler dies sofort erkennen. Das nächste Beispiel Person2.java erzeugt nun }

class Person { eine Person, weist den Listing 5: Person2.java


public String vorname ; Variablen Werte zu Dadurch wird der sogenannte Konstruktor auf-
public String nachname ; und ruft die Methode gerufen, der eine Methode ist, die ein neues
printName auf. Objekt zurückgibt. Hier steht kein Parameter in
public void printName () Was geschieht in die- den runden Klammern, da der immer implizit vor-
{ sem Programm? Der handene parameterlose Konstruktor aufgerufen
System .out. println ( vorname +" "+ nachname ); Einstiegspunkt ist wie- wird. Nun kennt die Laufzeitumgebung eine Per-
} der die main-Methode. son mit dem Bezeichner einePerson, die jedoch
} Es wird eine Variable noch keine zugewiesenen Werte für vorname
vom Typ Person mit dem und nachname hat. Dies ändert sich in den nächs-
Listing 4: Person.java
Bezeichner einePerson ten beiden Anweisungen. Über die Punktnotation
Eine Klasse ist in Java nichts anderes als ein deklariert. Dieser Variable wird ein neu erzeugtes werden die Variablen aufgerufen, und ihnen ein
Bauplan für Objekte eines bestimmten Typs. Der Objekt zugewiesen, das durch new erzeugt wird. Wert zugewiesen. Letztendlich werden diese Va-

© freiesMagazin GNU FDL Ausgabe 10/2009 16


P ROGRAMMIERUNG

riablen durch Aufruf von printName mit der Per- Nun „ist“ jeder Mitarbeiter auch eine Person. Und L INKS
son einePerson auf der Konsole ausgegeben. alle Methoden die für eine Person definiert sind, [1] http://www.netbeans.org/
können auch von einem Mitarbeiter aufgerufen
Weiterführendes zu Klassen [2] http://www.eclipse.org/
werden. Umgekehrt ist das natürlich nicht der
Das Klassenkonzept kann sehr intuitive Program- [3] http://de.wikipedia.org/wiki/Swing_(Java)
Fall. Eine Person, die kein Mitarbeiter ist, hat
mierung ermöglichen. Es ist beispielsweise mög- [4] http://www.java.com/de/
die Variable personalnummer nicht. Der Compi-
lich, mit dem Schlüsselwort extends eine Klas- [5] http://gcc.gnu.org/java/
ler würde dies bemerken.
se aus einer anderen Klasse abzuleiten. Man [6] http://www.java.com/de/download/help/testvm.
spricht von Vererbung. Man könnte etwa eine Es kann jedoch auch zu sehr abstrakten Be- xml
Klasse Mitarbeiter erstellen, welche die Va- ziehungen zwischen den Klassen kommen, die [7] http://wiki.ubuntuusers.de/Java
riable personalnummer (deklariert als int, al- nicht unbedingt dem intuiven Verständnis ent-
so als ganze Zahl) enthält, und diese Klasse sprechen. Es ist beispielsweise möglich, dass ein
von Person ableiten. Jeder Mitarbeiter hätte da- Objekt eine Variable hat, die eine Liste ist, in dem Autoreninformation
mit automatisch auch die Variablen vorname und das Objekt selbst noch einmal enthalten ist. Der
nachname, sowie die Methode printName, ohne Raoul Falk programmiert Java und
Fantasie sind dort keine Grenzen gesetzt. Man
dass man dies noch einmal in den Code schrei- .NET an der Universität Duisburg-
denke nur an ein Kind, dass seinen Vater als Va-
ben muss. Die Syntax wäre: Essen.
riable hat, während der Vater auch seine Kinder
als Variablen hat.
class Mitarbeiter extends Person {
public int personalnummer ; Ausblick
} Diesen Artikel kommentieren
Im nächsten Teil der Serie wird die Grafikpro-
Listing 6: Mitarbeiter.java grammierung mit Java ausführlich beschrieben.

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

© freiesMagazin GNU FDL Ausgabe 10/2009 17


T ERMINVERWALTUNG

Ordnung ins Chaos mit Org-Mode von Rainer König

er Satz „Ich habe keine Zeit . . . “ ist die Den Autoren der Zeitmanagement-Bücher ist Andere Projekte haben es sich zum Ziel

D Standardantwort, die man oft genug


zu hören bekommt, wenn man jeman-
den fragt, ob er eine Aufgabe übernehmen
es egal, ob diese Aufgabenlisten auf Papier
oder in elektronischer Form vorliegen, aber als
gesetzt, unter dem Begriff „Groupware“ das
Zeit- und Aufgabenmanagement für ein ganzes
Team zu bewältigen. Sol-
will. Interessanterweise haben alle Menschen che Ansätze scheitern aber
genau gleich viel Zeit, nämlich 24 Stunden am oft genug daran, dass das
Tag, und das Vorhandensein von „Extratagen“ Team nicht homogen in der
oder „Zeitguthaben bei der Zeitbank“ gehört Struktur ist und unterschiedli-
eher ins Reich der schriftstellerischen Fanta- che Ansichten bei den Team-
sie. Mitgliedern darüber bestehen,
wie detailliert man Arbeitsfort-
Literatur zum Thema Zeitmanagement schritte im Groupware-Tool do-
Das Thema Zeitmanagement betrifft sehr viele kumentieren soll.
Menschen und es gibt eine große Anzahl von
Büchern zum Thema. Angefangen beim deut- Deswegen sollte man sich zu-
schen Zeitmanagement-Papst Dr. Lothar Seiwert nächst einmal mit dem „Selbst-
mit seiner Empfehlung „Wenn Du es eilig hast, management“ beschäftigen,
gehe langsam“ bis hin zum amerikanischen Au- mit dem man Ordnung in das
tor David Allen, dessen Buch „Getting Things Do- eigene organisatorische Cha-
ne“ einfach helfen soll, Dinge zu erledigen. os bringt, wobei der Emacs
Org-Mode helfen kann.
Der Org-Mode in Emacs.
Die grundlegende Idee beim Zeitmanagement ist
in jedem Fall die, dass man seine Aufgaben ir- Computernutzer ist man natürlich bestrebt, den Emacs als Organisationstalent
gendwo aufschreiben soll. David Allen argumen- PC für so etwas zu nutzen. Org-Mode [2] ist eine Erweiterung des Textedi-
tiert hier sehr gut mit der Belastung eines Ge- tors Emacs [3]. So ist es nur konsequent, wenn
hirns, das sich unzählige Sachen merken soll Zeitmanagement-Software einen die Org-Mode-Webseite mit dem Titel „Org-
und ständig Angst hat, irgendetwas Wichtiges zu Software, die dem Nutzer beim Zeitmanagement Mode: Your Life in Plain Text“ begrüßt. Org-Mode
vergessen. Hat man hingegen alles irgendwo auf- helfen soll, gibt es fast wie Sand am Meer. Jeder basiert tatsächlich auf der Interpretation des Tex-
geschrieben, dann reduziert sich der Merkauf- Desktop bringt einen „Organizer“ mit, in dem man tes im Editorbuffer und genau das macht ihn
wand darauf, sich zu erinnern, wo man es aufge- Tageskalender und Aufgabenlisten nutzen kann. so einfach einsetzbar. Wenn andere Applikatio-
schrieben hat. Als direkte Folge dieses „Kopflee- Es gibt auch Programme wie ThinkingRock [1], nen eine schöne grafische Benutzeroberfläche
rens“ reduziert sich der Stress, den man empfin- die eine sehr detaillierte Umsetzung der Ideen haben, dann sieht das zwar oft toll aus, ist aber
det, wenn man mit Aufgaben überschüttet wird. aus David Allens Buch darstellen. beim schnellen Arbeiten eher hinderlich, weil

© freiesMagazin GNU FDL Ausgabe 10/2009 18


T ERMINVERWALTUNG

man zu oft zwischen Tastatur und Maus hin und Dies ist der Link zur aktuellen stabilen Version [4]. Nun sollte Emacs den Buffer für diese Datei in
her wechseln muss. Org-Mode beschränkt sich Man speichert dieses Archiv in einem Ordner den Org-Mode umschalten. Das erkennt man an
auf die Bedienung via Tastatur und wenn man und entpackt es dort. Nach dem Wechsel in das dem „(Org)“ in der Statuszeile dieses Buffers. Au-
ihn täglich benutzt, dann hat man die notwendi- entstandene Verzeichnis (in der Konsole) kann ßerdem gibt es ein Menü „Org“, in dem man
gen Tastenkombinationen bald verinnerlicht. man mit den Punkt „Documentation » show version“ auf-
ruft. Dann sollte in der untersten Zeile von Emacs
Org-Mode bietet auch die Funktionalität eines $ make „Org-Mode version XXX“ erscheinen, wobei XXX
„Outliners“. Damit kann man große Aufgaben (chi- $ make install die jeweilige Version angibt.
nesisches Sprichwort: „Auch die längste Reise
beginnt mit dem ersten Schritt.“) in kleinere „Un- den Quellcode durch den Emacs-Lisp-Compiler Grundlegende Prinzipien
teraufgaben“ zerlegen, die dann nicht mehr so übersetzen und das Ergebnis danach installie- Org-Mode arbeitet mit beliebigen Dateien. Hat
bedrohlich aussehen und an deren Erledigung ren. der Dateiname die Endung .org, wird Emacs
man einen Projektfortschritt erkennen kann. beim Öffnen der Datei gleich den Org-Mode akti-
Aktivierung vieren. Man kann so z. B. berufliche Aktionslisten
Da in Org-Mode alles Text ist, kann man ihn von privaten Aktionslisten trennen und trotzdem
Um Org-Mode zu aktivieren, fügt man ans Ende
auch sehr schön zum Schreiben von Notizen zu beides in Org-Mode organisieren.
der Datei .emacs, die sich im Heimatverzeichnis
den einzelnen Aufgaben nutzen. Diese Notizen
des jeweiligen Benutzers befindet, folgende Zei- Ganz abstrakt betrachtet ist Org-Mode ein
können auch mit Zeitstempeln versehen werden,
len ein: „Outliner“, in dem
was letztlich einer lückenlosen Dokumentation
der Tätigkeiten dient. Abgeschlossene Aufgaben man Stichpunkte
(add -to -list ’auto -mode - alist ’("\\. org \\ ’" . org -mode))
können auch sehr einfach in anderen Dateien ar- hierarchisch glie-
(global -set -key "\C-cl" ’org -store -link)
chiviert werden. So kann man diese Archive als (global -set -key "\C-ca" ’org - agenda ) dern kann. Diese
„Gedächtniserweiterung“ nutzen. (global -set -key "\C-cb" ’org - iswitchb ) Stichpunkte (oder im
Org-Mode-Sprachge-
Org-Mode installieren Listing 1: .emacs brauch „Kopfzeilen“
Org-Mode ist ein Emacs-Mode und da- genannt) beginnen immer mit einem oder meh-
mit wahrscheinlich bereits in der Emacs- Die erste Zeile sorgt dafür, dass Dateien mit der reren „Sternchen“. Die Anzahl der Sternchen
Standardinstallation der verwendeten Linux- Endung .org automatisch im Org-Mode geöff- bestimmt dabei die Hierachie-Ebene:
Distribution enthalten. Allerdings sollte man trotz net werden. Die anderen Zeilen definieren Org-
allem die neueste Version von der Org-Mode- Mode-spezifische „Hotkeys“. * erste Ebene
Webseite verwenden, da Org-Mode sehr häufig ** zweite Ebene
aktualisiert wird und ständig neue und nützliche Um zu kontrollieren, ob alles geklappt hat, startet *** dritte Ebene
Funktionen hinzukommen. man Emacs mit einem Dateinamen, der auf .org
endet (die Datei muss nicht existieren): Mit der Tab -Taste kann die Sichtbarkeit der Ebe-
Auf der Org-Mode-Webseite findet man unter nen geändert werden. Normalerweise sieht man
Download einen Link auf „gzipped tar archive“. $ emacs example .org nur die oberste, erste Ebene. Mit dem ersten

© freiesMagazin GNU FDL Ausgabe 10/2009 19


T ERMINVERWALTUNG

Drücken der Tab -Taste wird die erste Unterebe- Tags Schritt 1 – Kopf frei machen
ne geöffnet, mit einem zweiten Drücken rekursiv Das nächste Konzept von Org-Mode heißt „Tags“. Um einen Artikel zu schreiben, braucht man
alle Unterebenen und mit einem dritten Drücken Damit kann man nochmals für Kopfzeilen be- einen klaren Kopf. Sinnvoll ist es also, sich vor-
wird wieder nur die erste Ebene angezeigt. stimmte Begriffe (Tags) vergeben. Später kann her einige Stichworte zum Aufbau des Artikels
man dann seine Org-Mode-Datei nach diesen zu notieren. Am Beispiel des Artikelschreibens
ToDo-Listen Tags filtern lassen. Was man hier verwendet bedeutet das, die grobe Struktur des Artikels
Ein weiteres wichtiges Konzept sind die TODO- bleibt der eigenen Kreativität überlassen. Ei- in Org-Mode zu modellieren und Org-Mode als
Schlüsselworte. Wenn die Kopfzeilen „Aktionen“ ne Möglichkeit wäre beispielsweise, den Begriff Stoffsammlung zu benutzen. Wichtig ist in jedem
beschreiben sollen, dann soll hier ein Schlüssel- PHONE für alle Aktionen zu verwenden, die mit ei- Fall, dass alles, was einem im Kopf herum spukt
wort stehen, das aussagt, was zu tun ist, oder ob nem Telefonanruf zu erledigen sind. Dann kann und was man aber nicht sofort umsetzen kann,
diese Aktion schon erledigt ist. Eine ein wenig an man später recht schnell die Liste der noch zu tä- aufgeschrieben wird, denn damit schützt man
David Allens „Getting Things Done“ angelehnte tigenden Anrufe erstellen. Eine Vorgabe für Tags sich vor dem Vergessen von Ideen, die genial wa-
Liste solcher Schlüsselworte kann so aussehen: kann man ebenso wie die Schlüsselworte am An- ren, aber leider wieder „weg“ sind.
fang der Org-Mode-Datei definieren.
#+ TODO: TODO(t) NEXT(n) WAITING (w) y Also frisch ans Werk und einfach mal eine gro-
SOMEDAY (s) DELEGATED (g) PROJ(p) | y #TAGS: PHONE (o) URGENT (u) MAIL(m) be Struktur erstellt. Da Artikelschreiben eine Art
DONE(d) FORWARDED (w) CANCELLED (c) Workflow darstellt, erweitert man die Datei um
Will man eine Kopfzeile mit einem Tag ver- noch ein paar Schlüsselworte:
Eine solche Zeile (tatsächlich nur eine Zeile, al- sehen, reicht es, den Cursor in dieser Zei-
#+ TODO: IDEE(i) ENTWURF (e) FINAL (f)y
so ohne Umbruch) am Beginn einer Org-Mode- le zu positionieren und die Tastenkombination
| DONE(d) CANCELLED (c)
Datei definiert diese Schlüsselwörter für die Be- Strg + C Strg + C einzugeben. Sprich, zweimali-
nutzung in dieser Datei. Alles, was links vom | ges Drücken von Strg + C öffnet den Dialog, um Alle Abschnitte des Artikels beginnen mit einer
(Pipe-Symbol) steht, sind dabei Schlüsselworte die Tags für diese Kopfzeile auszuwählen. Idee, die dann zu einem ersten Entwurf ausfor-
für unerledigte Aktionen, alles, was rechts davon muliert, danach nochmals ein wenig „geschliffen“
steht, sind Schlüsselworte für erledigte Aktionen. Nach all dieser grauen Theorie wird es nun Zeit,
und letztlich einer „finalen Kontrolle“ unterzogen
Die Buchstaben in Klammern definieren dabei, den Org-Mode auch mal am Beispiel [5] einzuset-
wird. Danach ist dieser Teil entweder erledigt
mit welcher Taste dieses Schlüsselwort belegt ist, zen. Im Beispiel wird nun Org-Mode verwendet,
(DONE) oder man hat irgendwann die Idee doch
was wichtig ist, wenn sich später einmal der Sta- um die Aufgaben zu organisieren, die notwendig
wieder verworfen (CANCELLED).
tus einer solchen Aktion ändert. sind um einen Artikel über Org-Mode zu schrei-
ben. Nachdem die Idee zum Artikel in der Dis- Diese Zeile mit weiteren Schlüsselworten kann
Schreibt man nun in einer Kopfzeile beispielswei- kussion auf der Webseite von freiesMagazin [6] im Kopfbereich der Datei eingegeben und mit der
se * TODO, dann erkennt Org-Mode das Schlüs- entstand, war es nur konsequent, die Arbeit mit Tastenkombination Strg + C Strg + C (dies ist in
selwort und hebt es farblich hervor. Unerledigte Org-Mode zu organisieren. Dazu legt man eine Org-Mode sozusagen der Universalschlüssel) ak-
Aktionen sind mit roten Schlüsselwörtern verse- neue Org-Mode-Datei an oder erweitert eine be- tiviert werden. Diese Aktivierung muss nur erfol-
hen, erledigte mit grünen. stehende um die neuen Aufgaben. gen, wenn man das gerade erst getippt hat. Wird

© freiesMagazin GNU FDL Ausgabe 10/2009 20


T ERMINVERWALTUNG

eine Datei mit solchen Definitionen am Dateian- geben. Hier kann mittels Strg + Y die Adresse In der nächsten Ebene ist dann die eigentliche
fang geöffnet, aktiviert Org-Mode diese natürlich aus der Zwischenablage eingefügt werden. Da- Stoffsammlung zum Artikel vorhanden. Also al-
selbst. nach Return drücken, den Text zum Link einge- les was man berücksichtigen will. Da das Listing
ben und fertig. Von jetzt an kann man direkt aus während des Artikelschreibens entstand, sind ei-
Nun schreibt man eine Kopfzeile und etwas Text: Org-Mode heraus die Autorenrichtlinien von der nige Punkte schon von der „Idee“ zum „Entwurf“
Webseite abrufen. gereift. Die drei Punkte am Ende jeder Kopfzeile
* Freies Magazin :LINUX:
Wenn Emacs sauber signalisieren, dass es darunter noch was zu se-
- Artikel fuer Freies Magazin
konfiguriert ist, öffnet hen gibt, was aber in der aktuellen Ansicht aus-
- Autoren-Richtlinien (PDF)
das den Browser und geblendet ist.
:PROPERTIES:
dieser das Programm
:ARCHIVE: %s_freiesmagazin:: *** ENTWURF Linkliste [2/2]
zur PDF-Anzeige.
:END: - [X] Orgmode.org
** PROJ Artikel ueber orgmode schreiben In den nächsten Zeilen - [X] ThinkingRock GTD
DEADLINE: <2009-08-26 Mi> kann man wieder eine - [2009-08-05 Mi] Linkliste in
*** ENTWURF Literaturverzeichnis [5/5]... Besonderheit von Org- OpenOffice.org muss mit
*** ENTWURF Linkliste [2/2]... Mode sehen, die „Pro- Literaturverzeichnis
*** ENTWURF Warum orgmode... perties“. Da ist sozu- kombiniert werden.
*** ENTWURF Grundlegende Org-Mode Prinzipien... sagen eine Schublade,
*** IDEE Kopf frei machen... in der besondere Eigen- Hier wurde eine einfache „Checkliste“ angelegt,
*** IDEE Taegliche Nutzung... schaften definiert sind. die helfen soll, nichts zu vergessen. Die Kombi-
*** IDEE Review... Im Beispiel ist das der nation - [ ] definiert einen Punkt zum Abhaken.
Dateiname, in dem erledigte Aufgaben archiviert Auf der Kopfzeile definiert [ / ] einen Status-
Hier sind alle Aktivitäten für „Freies Magazin“ un- werden. %s steht für den Dateinamen der Org- zähler der Art „[erledigt/zu erledigen]“. [%] würde
ter einer Ebene-1 Kopfzeile zusammengefasst. Mode-Datei und alles, was später an Aktionen un- eine prozentuale Angabe zur Folge haben. Hier
Dieser Kopfzeile könnte man das Tag „LINUX“ terhalb der Kopfzeile „Freies Magazin“ archiviert sind 2 von 2 Punkten auf der Checkliste abge-
zuweisen. Darunter, hinter dem Bindestrich, ver- wird, landet in einer Datei, die als Suffix im Na- hakt, daher die Darstellung in Grün. Wäre noch
fasst man einen Kommentar, worum es hier geht, men _freiesmagazin enthält. ein Punkt offen, dann würde das auf der Kopf-
und setzt für die Zukunft gleich ein Link auf zeile in roter Farbe zu sehen sein. Das Abhaken
die Autorenrichtlinien. Ja, Org-Mode kann auch Die nächste Kopfzeile auf Ebene 2 ist einfach geschieht in der entsprechenden Zeile mit dem
Links. Diesen Link gab es in den Kommenta- als PROJ (Projekt) gekennzeichnet und dient erst Universalwerkzeug Strg + C Strg + C .
ren auf der Webseite [7], also kopiert man ein- mal nur der Gliederung. Redaktionsschluss für
fach diese Linkadresse, drückt im Org-Mode an die September-Ausgabe von freiesMagazin war Weiterhin gibt es eine Notiz mit Datumsstem-
der Stelle an der der Link eingefügt werden soll der 26. August, mit Strg + C Strg + D kann man pel. Hier ist einfach dokumentiert, warum der
Strg + C Strg + L und in der untersten Zeile des dann für dieses Projekt sehr einfach die Deadline Artikel in OpenOffice.org nun Linkliste und Lite-
Emacs-Fensters kann man die Zieladresse ein- definieren. raturverzeichnis vermischt. Den Datumsstempel

© freiesMagazin GNU FDL Ausgabe 10/2009 21


T ERMINVERWALTUNG

kann man einfach mit Strg + C Strg + Shift + 1 de. Das ist auch bekannt unter dem Schlagwort Aufgaben wann sinnvoll zu erledigen sind“ und
einfügen. Will man es ganz genau haben und „Cover-Your-Ass“-Security. Nutzung der „Agenda-Ansicht“.
auch die Uhrzeit hier aufnehmen, verwendet man
Die Org-Mode-Datei ist nun zum „externen Bevor die Agenda sinnvoll genutzt werden kann,
Strg + U Strg + C Strg + Shift + 1 .
Gedächtnis“ geworden, sie enthält alle Ideen muss die aktuelle Datei zu der Liste der zu
Im Gegensatz zu der Deadline-Definition hat und Konzepte und sollte daher auch einem beachtenden Dateien hinzugefügt werden. Dies
der Datumsstempel eckige Klammern. Der Un- regelmäßigen Backup-Zyklus unterworfen wer- geschieht über Strg + C AltGr + 8 . Danach wir
terschied wird später in der Agenda-Ansicht klar den. In dem Beispiel waren das jetzt zwar nur die Agenda-Ansicht über die Tastenkombinati-
werden, dort sind Datumsstempel mit spitzen die paar Zeilen zum Artikel schreiben, aber on Strg + C A aufgerufen. Darauf hin teilt sich
Klammern sichtbar, solche mit eckigen Klam- im wirklichen Leben kann so eine Org-Mode- das Emacs-Fenster und im unteren Bereich
mern hingegen unsichtbar. Datei schon ein paar hundert oder sogar ein sieht man ein Auswahlmenü. Mit der Taste T
bekommt man wieder eine Aufgabenliste.
Global list of TODO items of type: ALL
Available with ‘N r’: (0)ALL (1)TODO (2)NEXT (3)WAITING (4)SOMEDAY (5)DELEGATED Diese Ansicht kann nun auf bestimmte
(6)PROJ (7)DONE (8)FORWARDED (9)CANCELLED (10)IDEE Schlüsselworte eingegrenzt werden. So
(11)ENTWURF (12)FINAL (13)SKIPPED (14)COPIED kann man mit der Tastenkombination 1
privat: PROJ Artikel ueber Org-Mode schreiben :LINUX:: 0 R die Aufgabenliste auf alle Aufgaben
privat: ENTWURF Literaturverzeichnis [5/5] :LINUX:: mit dem Schlüsselwort „IDEE“ eingrenzen.
privat: ENTWURF Linkliste [2/2] :LINUX:: Oder, wenn man mal schnell nachsehen
privat: ENTWURF Warum orgmode :LINUX:: will, welche Aufgaben man an andere dele-
privat: ENTWURF Grundlegende Org-Mode Prinzipien :LINUX:: giert hat, reicht in dieser Ansicht 5 R und
privat: IDEE Kopf frei machen :LINUX:: schon erhält man die Liste aller delegierten
privat: IDEE Taegliche Nutzung :LINUX:: Aufgaben.
privat: IDEE Review :LINUX::
Mit der Taste Q wird diese Ansicht wieder
paar tausend Zeilen haben, abhängig davon, wie geschlossen. So richtig nützlich wird die Agenda-
Hier hat man also tatsächlich eine Art von Mikro-
intensiv man Org-Mode auch zum Notizen ma- Ansicht aber erst, wenn man sich einen Wochen-
Blog, in dem man sehr schnell irgendwelche
chen nutzt. oder Tagesplan damit generieren lässt. Aber wie
Erkenntnisse, Fortschritte oder auch Fehlschlä-
plant man Aufgaben in Org-Mode?
ge dokumentieren kann. Solche Aufzeichnun- Schritt 2 – Tägliche Nutzung
gen können gerade im Beruf sehr nützlich wer- Jetzt stellt sich für den Nutzer natürlich die Frage, Bislang ist nur die „Deadline“ bekannt, welche mit
den, sei es, um ein wenig in der Vergangenheit was er mit der langen Liste der zu erledigenden Strg + C Strg + D definiert wurde. Wenn man
zu wühlen, wenn man auf „bekannte Probleme“ Aufgaben anfangen soll. Irgendwie ist es ja nicht sich nun für einen bestimmten Tag eine Aufgabe
stößt, sei es, um deutlich dokumentieren zu kön- gerade motivierend, wenn man den Mount Ever- vornimmt, dann kann man diesen Plantermin mit-
nen, dass man nicht daran schuld ist, dass der est seiner unerledigten Aufgaben vor sich sieht. tels Strg + C Strg + S („Schedule“) definieren.
Großauftrag für 10 Millionen Euro verloren wur- Daher heißt der nächste Schritt: „Planen, welche Im Org-Mode-Kontext ist dieser Termin der Start

© freiesMagazin GNU FDL Ausgabe 10/2009 22


T ERMINVERWALTUNG

der Arbeiten an dieser Teilaufgabe. Mit Strg + C Wenn man weiß, dass Aufgaben eine gewisse wünschen konfigurierbar. In der Praxis kann das
A A ruft man einen Wochenplan auf. Zeit in Anspruch nehmen, kann man das auch so aussehen: Morgens im Büro wird als erstes
ein Tagesplan aufgerufen, der nur Aufgaben aus
Week-agenda (W33): der Datei work.org enthält (Privates macht man
Mon 10 August 2009 W33 schließlich daheim) und der auf den aktuellen
Die 11 August 2009 Tag beschränkt ist. Dann weiß man schon am
Mit 12 August 2009 Morgen, welche Aufgaben geplant sind, welche
privat: Sched. 4x: IDEE Kopf frei machen :LINUX:: vielleicht schon überfällig sind oder was im Ka-
privat: Scheduled: IDEE Taegliche Nutzung :LINUX:: lender steht, denn natürlich kann man bei den
privat: In 14 d.: PROJ Artikel ueber Org-Mode schreiben :LINUX:: „Scheduled“-Zeitstempeln auch die Uhrzeit mitan-
Don 13 August 2009 geben.
Fre 14 August 2009
Sam 15 August 2009 Eine andere selbst definierte Agenda-Ansicht
privat: Scheduled: IDEE Review :LINUX:: zeigt nur offene Aufgaben, die noch keinen Plan-
Son 16 August 2009 termin haben. Somit bekommt man schnell Über-
sicht, was noch zu planen ist. Das geht auch di-
in Org-Mode definieren. Wenn man für das Pro- rekt aus der Agenda-Ansicht mit Hilfe des Hot-
Wie man sieht, ist das Listing am 12. August jekt einen Zeitbereich definiert wie „<2009-08-07 keys Strg + C Strg + S .
entstanden, aus der Sicht also als „Heute“ zu Fr>-<2009-08-22 Sa>“, dann wird in der Agenda
bezeichnen, und wird kursiv und fett formatiert. für jeden dieser Tage ein Eintrag eingeblendet. Mit Org-Mode kann man auch hervorragend wie-
Man kann drei Einträge sehen (Hinweis: Diese derkehrende Aufgaben planen. Als Beispiel sei
Agenda-Ansicht wurde auf die Kopfzeile „Freies Mit 12 August 2009
Magazin“ und die darunter liegende Hierarchie privat: Sched. 4x: IDEE Kopf frei machen :LINUX::
eingeschränkt). Das privat: am Zeilenanfang privat: Scheduled: IDEE Taegliche Nutzung :LINUX::
ist ein Hinweis auf die Quelle, in diesem Fall die privat: (6/16): PROJ Artikel ueber Org-Mode schreiben :LINUX::
Datei privat.org. Die erste Zeile zeigt Sched. privat: In 14 d.: PROJ Artikel ueber Org-Mode schreiben :LINUX::
4x was letztlich bedeutet, dass vor vier Tagen Don 13 August 2009
die Arbeit an „Kopf frei machen“ begonnen hat.
Für den heutigen Termin steht ein Scheduled: Nun gibt es am heutigen 12. August einen Ein- hier die Planung einer regelmäßigen Reinigung
in grün und signalisiert, dass die Arbeit am Kapi- trag mit dem Hinweis (6/16), der besagt, dass der Geschirrspülmaschine genannt (Ja, die Din-
tel „Tägliche Nutzung“ geplant ist. Am 15. August nun 6 von 16 veranschlagten Tagen für das Pro- ger müssen auch hin und wieder gereinigt wer-
steht dann ein Kapitel über „Review“ auf dem jekt vergangen sind. den).
Plan. Und schließlich erinnert Org-Mode daran,
dass in 14 Tagen die Deadline für das Projekt „Ar- Die Agenda-Ansicht von Org-Mode ist extrem Die nächste Reinigung ist also für Samstag,
tikel über Org-Mode schreiben“ ansteht. flexibel einsetzbar und beliebig nach Anwender- den 15. August geplant. Das unscheinbare +12w

© freiesMagazin GNU FDL Ausgabe 10/2009 23


T ERMINVERWALTUNG

** TODO Spuelmaschine reinigen :RAINER: Aufgaben zum abgespeichert wurde und die mit einem einfa-
SCHEDULED: <2009-08-15 Sa +12w> Schreiben die- chen Link per Mausklick geöffnet werden kann.
- Siebe reinigen ses Artikels und Diese Checkliste enthält dann alles, was regel-
- Maschinenpflege auf hoechster Stufe durchlaufen lassen die neu hinzu- mäßig am Freitag kontrolliert und eventuell erle-
gekommene Spülmaschinenreinigung. Alle Mög- digt werden sollte.
hat es in sich. Wenn am Samstag die Reinigung
lichkeiten der Agenda-Ansicht hier aufzählen zu
erfolgt ist und der Status mit Strg + C Strg + T Dazu zählen beispielweise:
wollen, würde wohl ein Buch füllen, daher sei hier
auf DONE gesetzt wird, dann erhält diese Aufga-
nochmals auf die sehr gute Dokumentation von
be – falls gewünscht – einen Logbuch-Eintrag
Org-Mode verwiesen.  Können Aktionen mit dem Schlüsselwort
für die Erledigung. Die Aufgabe verharrt aber im
SOMEDAY in den Status TODO oder gar NEXT
Status TODO und das Plandatum schaltet exakt Schritt 3 – Reviews wechseln? Sprich, wird es langsam Zeit, das
um die 12 Wochen weiter. Das bedeutet, dass
Eine der goldenen Regeln im Zeitmanagement was man sich für „irgendwann“ vorgenom-
Org-Mode in exakt 12 Wochen wieder daran er-
ist: „Zeitmanagement ohne regelmäßige Re- men hat, jetzt mal konkret anzugehen? Die
innern wird, dass eine Spülmaschinenreinigung
views ist kein Zeitmanagement“. Immerhin nutzt Vorgehensweise: Agenda-Ansicht über alle
ansteht.
man all das Zeitmanagement ja, um sich Aufga- Aufgaben, dann limitieren auf Schlüsselwort
ben und Ziele zu setzen und da sollte man hin SOMEDAY.
Diese Funktion ist extrem hilfreich, wenn es um
und wieder schon auch mal eine „Positionsbe-  Gibt es irgendwelche Erkenntnisse zu
Dinge geht, die man gerne „vergisst“, also ange-
stimmung“ machen, um zu sehen, ob man noch DELEGATED-Aktionen? Hat sich derjenige, der
fangen von Haushaltsarbeiten bis hin zum Zahn-
auf Kurs ist oder nicht. mit der Erledigung beauftragt wurde, schon
arzt, den man ja auch hin und wieder besuchen
soll. gemeldet? Ist die Aktion abgeschlossen? Wie
Diese Reviews plant man natürlich auch wieder
oben, jetzt aber Agenda-Ansicht auf Schlüs-
mit Org-Mode. So kann man beispielsweise je-
Man kann im Org-Mode-Buffer auch auf Zeit- selwort DELEGATED limitieren.
den Freitag eine Aufgabe TODO mit dem Titel
stempel klicken und bekommt dann einen Tages- „Weekly review“ in der Aktionsliste haben, welche  Gibt es Aufgaben ohne „Plantermin“? Können
plan für den betreffenden Tag (oder einen Mehr- dann automatisch bei Erledigung auf den nächs- einige dieser Aufgaben für die nächste Woche
tagesplan wenn man auf eine Bereichsdefinition ten Freitag vorgetragen wird. geplant werden? Hierzu kann man eine benut-
klickt). Ein Klick auf den Scheduled-Zeitstempel zerspezifische Agenda-Ansicht mit Einschrän-
in obigem Beispiel bringt dann eine Agenda- Als Hilfsmittel dient eine Checkliste, die un- kung auf Aufgaben ohne Plantermin erstellen
Ansicht zum Vorschein. Also die bekannten ter dem Dateinamen weeklyreview.org (siehe Org-Mode-Dokumentation [8]).
 Brainstorming und Kopf wieder frei machen,
Day-agenda (W33): neue Ideen in Org-Mode eintragen.
Sam 15 August 2009
 Überprüfen aller als URGENT markierten Auf-
privat: Scheduled: TODO Spuelmaschine reinigen :RAINER:
gaben. Hierzu benötigt man keine Agenda-
privat: Scheduled: IDEE Review :LINUX::
Ansicht, sondern einen „sparse tree“, in dem
privat: (9/16): PROJ Artikel ueber Org-Mode schreiben :LINUX::
die so gefilterten Aufgaben hervorgehoben

© freiesMagazin GNU FDL Ausgabe 10/2009 24


T ERMINVERWALTUNG

sind. Solche eingeschränkten Listen erzeugt Fazit


man mit der Tastenkombination Strg + C Mit dem Org-Mode von Emacs steht man dem Autoreninformation
Shift + 7 zusammen mit einer Taste für das, alltäglichen Wahnsinn gut gewappnet gegenüber.
nach dem man suchen will. Also beispielswei- Zwar mag die Bedienung zunächst ein wenig ge- Rainer König ist seit dem letzten
se Shift + T (wie Tags) und dann als Mar- wöhnungsbedürftig erscheinen, jedoch – und wie Jahrtausend mit Linux unterwegs und
kierung URGENT. Das Vervollständigen mit der eingangs schon erwähnt – gehen einem schon arbeitet bei einem PC-Hersteller am
Tab -Taste funktioniert hier, es reicht also, die nach kurzer Zeit die zentralen Prinzipien und Tas- Thema Linux-Hardware-Kompatibilität
Eingabe von U R Tab um das Schlüssel- taturkürzel in Fleisch und Blut über, sodass der für PCs.
wort URGENT zu wählen. Die Hervorhebung der der „Ordnung im Chaos“ nichts mehr im Wege
so gefundenen Überschriften kann man später steht.
wieder mit Strg + C Strg + C aufheben. Verwendete Printmedien: Diesen Artikel kommentieren
Natürlich kann man diese Checkliste beliebig er- 1. van Herck, Paul: „Framstag Sam“, Heyne,
weitern. Wer beispielsweise seine Einnahmen 1981
und Ausgaben in einem Programm wie GNU- 2. Ende, Michael: „Momo“, Thienemann Verlag,
Cash verwaltet, könnte hier eine Aktion „Kas- 1973
sensturz“ machen, um zu sehen, ob er wirklich
3. Seiwert, Lothar: „Wenn Du es eilig hast, gehe
noch soviel Bargeld hat, wie GNUCash behaup-
langsam“, Campus Verlag, 2005
tet. Kontrolle ist ja immer besser . . .
4. Allen, David: „Getting Things Done“, Penguin
Eine Arbeit bei einer solchen Durchsicht kann Books, 2001
auch darin bestehen, erledigte Aufgaben in die
entsprechenden Archivdateien zu übertragen,
L INKS
damit die Aufgabenliste nicht mit längst Erledig- [1] http://sourceforge.net/projects/thinkingrock/
tem zugemüllt ist. Das Übertragen einer Aufga- [2] http://www.orgmode.org/
be und aller in der Hierarchie darunter liegen- [3] http://www.gnu.org/software/emacs/
den Aufgaben geschieht mit den Tasten Strg + C [4] http://orgmode.org/index.html#sec-3
Strg + X Strg + S , also ähnlich wie das Spei- [5] http://www.freiesmagazin.de/mobil/2009-10-
chern in Emacs ( Strg + X Strg + S ), nur hier listings/privat.org
wieder mit vorgestelltem Strg + C . Damit schiebt [6] http://freiesmagazin.de/20090801-freiesmagazin-
man den ganzen Baum in die Archivdatei, die sucht-unterstuetzung#comment-148
man später auch problemlos wieder in Org-Mode [7] http://freiesmagazin.de/20090801-freiesmagazin- „Sheeple“ © by Randall Munroe
öffnen kann. Es ist dann kein Problem zu sehen, sucht-unterstuetzung#comment-149 (CC-BY-NC-2.5), http://xkcd.com/610
was man damals alles gemacht hat. [8] http://orgmode.org/index.html#sec-4

© freiesMagazin GNU FDL Ausgabe 10/2009 25


E DITOR

Kurztipp: Suchen und Finden mit Vim von Steve Klicek

an trifft ihn auf vielen unixoiden Sys- durch die zu Ur-vi-Zeiten Mitte der 1970er Jah- Eine andere Hilfe ist das Buch „Linux“ des

M temen: Vim. Für den Eingeweihten


mag er ein geschätzter, alter Bekann-
ter sein, für Nichteingeweihte erscheint er
re üblichen Bildschirmterminals mit einer lang-
samen, seriellen Verbindung zum Hauptrechner.
Aus der Limitierung damaliger Terminals resul-
bekannten Autors Michael Kofler. Der „Kofler“
gilt als das Nachschlagewerk für alle Linux-
Anwender.
eher als sperriger Zeitgenosse. Gut, wenn tiert sein modales Konzept, das sich jedoch auch
man ihn zu nehmen weiß. heute noch gut bewährt. Vim ist nahezu vollstän- Wer suchet, der findet
dig abwärtskompatibel zu vi, hat jedoch eine Viel- Vorwärts suchen
Der sperrige Zeitgenosse ist nämlich auch dann zahl an Verbesserungen, und mittlerweile gibt es
noch da, wenn von grafischen Oberflächen nichts Um in einem geöffneten Text zu suchen, gibt man
eine moderne grafische Benutzerschnittstelle mit
mehr zu sehen, was – Murphys Gesetz [1] fol- im Standardmodus ein / ein, d. h. man drückt
Menüs ( GVim) sowie eine vereinfachte Version
gend – genau der typische Zeitpunkt ist, um Än- Shift + 7 . Anschließend fügt man den Suchbe-
für Einsteiger ( eVim). Auch die Benutzung der
derungen an Konfigurationsdateien vornehmen griff ein: Also z. B. „Wort“. Abschließend bestä-
Maus wird unterstützt [2].“
zu müssen. Gut, wenn man weiß, wie man Vim tigt man den Suchauftrag über die Eingabetaste
zum Suchen, Finden und Ersetzen überredet. Vim-Neulingen wird zuvor der Artikel „Vim – Ein Enter .
Schnelleinstieg“ aus freiesMagazin 08/2008 [3]
Der Cursor bewegt sich nun an die erste Stelle im
Kurze Beschreibung empfohlen.
Text, an der der Begriff „Wort“ gefunden wird. Die
Vim steht als Abkürzung für „Vi IMproved“, also Taste N wiederholt die Suche, der Cursor springt
Hilfestellung
für einen „verbesserten Vi“ (frei übersetzt). Hier- zur nächsten Fundstelle.
Unter Linux ist die erste Anlaufstelle für eine aus-
bei handelt es sich, genau wie bei Vi, um einen
führliche Hilfe zu Befehlen das man-Kommando. Rückwärts suchen
Texteditor für die Konsole. Er ist nicht nur unter
Durch die Eingabe von
Linux verfügbar, sondern auch unter vielen an- Mit Shift + N wird rückwärts im Text gesucht, al-
deren Betriebssystemen wie Windows, MacOS, $ man vim so ab der aktuellen Cursorposition in Richtung
AmigaOS etc. Das Programm Vi selbst ist ei- Textanfang.
ne kommerzielle Anwendung und daher nicht für gelangt man zur „Manpage“ und erhält dort eine
Linux verfügbar. Das macht aber nichts, denn ausführliche, allgemeine Hilfestellung. (Man ver- Man kann mit der Eingabe von ?, also Shift + ß ,
hier steht ja sein Open-Source-Pendant Vim zur lässt die Manpage durch Drücken von Q .) und einem nachfolgenden „Wort“ dem Editor
Verfügung, das zu Vi kompatibel ist und darüber auch mitteilen, dass er von vornherein rückwärts
hinaus zahlreiche Verbesserungen und Erweite- Für das im Folgenden beschriebene Thema „Su- suchen soll.
rungen bietet. chen und Finden“ gibt es in der Online-Hilfe
nützliche Informationen. Durch die Kommandos Suchmuster
Wikipedia meint hierzu: „Vim funktioniert wie der :help search und :help substitute in Vim In den Suchbegriff eingebettet kann man nach
vi-Editor. Die Bedienung erfolgt dann ausschließ- gelangt man zu vielen hilfreichen Tipps und Bei- verschiedenen Kriterien suchen und zwar (nach
lich über die Tastatur. Das ist historisch bedingt spielen. Betreten des Suchmodus mit Shift + 7 ):

© freiesMagazin GNU FDL Ausgabe 10/2009 26


E DITOR

W. sucht nach W und einem beliebigen Zei- (gültig für das ganze System) oder ~/.vimrc vornehmen, als so manch anderer Benutzer, der
chen (gültig nur für den aktuellen Benutzer) erfolgen. mit einem grafischen Editor unterwegs ist.
ˆW sucht nach W am Zeilenanfang Suchen und Ersetzen Voraussetzung dafür ist aber das ständige und
W$ sucht nach W am Zeilenende Hier nun einige Funktionen, wie man Text su- konsequente Benutzen des Editors. Am Besten
chen und ersetzen kann. Das Kommando, um macht man sich nebenher auf einem Stück Pa-
W[a-e] sucht W und einem Zeichen von a bis e zum Beispiel „abc“ durch „efg“ zu ersetzen, lau- pier eine Übersicht der gängigsten Befehle und
tet :%s/abc/efg. legt das neben die Tastatur. So gewöhnt man
Groß- und Kleinschreibung umgehen
Vim unterscheidet bei der Suche immer zwi- Um das Suchen und Ersetzen noch besser zu sich schneller an den Umgang und wird immer
schen Groß- und Kleinschreibung. Wenn man kontrollieren, bestehen darüber hinaus folgende vertrauter mit diesem Urgestein der Editoren.
dies nicht möchte, kann man das mit einem an- Möglichkeiten, die durch das Anfügen an das obi- Verwendete Printmedien:
gehängten \c umgehen. Das gilt anschließend ge Kommando erreicht werden:
nur für diese eine Suche. Damit es für alle weite- 1. „Linux“ (8. überarbeitete und erweitere
ren Suchen gilt, führt man das Kommando :set /g ohne Rückfrage werden alle Vorkommen
Auflage), Michael Kofler, Addison Wesley,
ignorecase aus. Die Eingabe screen \c sucht von „abc“ durch „efg“ ersetzt
ISBN: 978-3-8273-2478-8
also nach „screen“ und nach „Screen“. /gc mit Rückfrage werden alle Vorkommen von
„abc“ durch „efg“ ersetzt L INKS
Inkrementelle Suche
Das Kommando :set incsearch aktiviert die in- /gi ersetzt alle Vorkommen von „abc“ durch [1] http://de.wikipedia.org/wiki/Murphys_Gesetz
krementelle Suche. Dies ist sinnvoll, wenn man „efg“ ohne Groß- und Kleinschreibung zu be- [2] http://de.wikipedia.org/wiki/Vim
nach dem Beginn eines Wortes sucht. Hier wird rücksichtigen
[3] http://www.freiesmagazin.de/freiesMagazin-2008-
der Cursor schon während der Eingabe des Hinweis: Der ganze Ausdruck muss aneinander 08
Suchbegriffes an den ersten Übereinstimmungs- geschrieben werden: z. B. :%s/abc/efg/gi.
ort bewegt. Die Enter -Taste beendet diesen
Spuk, mit der Escape -Taste wird die Suche ab- Abspeichern und Verlassen Autoreninformation
gebrochen. Nach der Suche bleiben die Überein- Ganz am Schluss der Bearbeitung sollte man
stimmungen im Text markiert, bis man entweder nicht vergessen, die Datei abzuspeichern. Dazu Steve Klicek benutzt Linux seit Suse

eine neue Suche beginnt oder das Kommando einfach das Kommando :w absetzen. Dann ver- Linux 6.2, wobei z. Z. openSUSE

:nohlsearch eingibt. lässt man die Datei mit einem :q. Ein :wq erledigt seine erste Wahl ist. Den Editor Vim
dies in einem Schritt. schätzt er als zuverlässigen Editor für
Anmerkungen zum :set-Kommando seinen täglichen Umgang mit Linux.
Die Optionen, die mit :set gesetzt werden, gel- Fazit
ten nur für die aktuelle Vim-Sitzung. Sollen hin- Wer erst einmal den Vim-Editor in seinen Grund-
gegen die Einstellungen permanent gesetzt bzw. funktionen beherrscht, der kann zum Beispiel viel
nicht gesetzt sein, so muss dies in /etc/vimrc schneller Änderungen an Konfigurationsdateien Diesen Artikel kommentieren

© freiesMagazin GNU FDL Ausgabe 10/2009 27


T ERMINAL

grep – Eine kleine Einführung von Philipp Walther

nter praktisch jedem Unix, Linux und das Suchmuster umdrehen: --invert-match

U

deren Derivaten ist das Kommando- $ grep --line - number audio /etcy
 und vieles mehr.
zeilenprogramm grep vorhanden. Es /group
dient der Textsuche und Filterung von Datei- Hierzu lohnt es sich, sich mit der Manpage von
grep auseinanderzusetzen und zu experimentie- die Ausgabe 22:audio:x:29:anon bedeuten,
en, dabei geht es zeilenweise vor. Es können
ren. dass das Wort audio in der Zeile 22 vorkommt.
einfache Wörter gesucht oder aber auch mit
Hilfe von regulären Ausdrücken [1] komplexe Dateiname
Suchen realisiert werden. Anwendung von grep In Kombination von Zeilennummer und der Aus-
Verwendung findet grep auch in vielen Skripten, gabe des Dateinamens lassen sich rekursiv auch
Varianten die beim Start des Betriebssystems ausgeführt ganze Verzeichnisstrukturen auf das gesuchte
Neben grep existieren noch weitere Varianten werden. Die praktische Anwendung im Alltag be- Ergebnis hin durchsuchen.
wie egrep oder fgrep. Diese verhalten sich wie steht in der Selektion relevanter Teile aus Pro-
grep und können auch mit der entsprechenden grammausgaben oder in der Filterung von Log- $ grep --with - filename --line -y
Option (-E bzw. -F) aufgerufen werden. Beim Dateien. number --recursive root /etc
Durchsuchen von komprimierten Dateien helfen
zgrep und bzgrep. Zählen mit grep liefert jedes Vorkommen der Zeichenkette root
Für Skripte ist es oft wichtig, Zustände des Sys- unter Angabe des Dateinamens und der Zeilen-
Aufruf von grep tems zu wissen. Beispielsweise kann man mit nummer.
Der Aufruf erfolgt nach dem Muster grep herausfinden, ob vom Kernel ein bestimm- Abgestürzter MPlayer
tes Dateisystem unterstützt wird. So liefert die fol- Das Beenden eines hängenden Prozesses erle-
$ grep [ Optionen ] Suchmuster [y
gende Zeile eine Zahl größer 0, wenn der gerade digt man mit kill. kill möchte als Parameter nicht
Datei ]
geladene Kernel dies unterstützt: den Namen des Programmes, das es beenden
Wird keine Datei angegeben, verwendet grep die soll, wissen, sondern die dazugehörige Prozess-
$ grep --count ext2 /proc/y
Standardeingabe. nummer, die das laufende Programm eindeutig
filesystems
identifiziert. Der Befehl ps liefert eine Auflistung
Optionen aller laufenden Prozesse. Diese Auflistung ist in
Die einzelnen Optionen von grep sind vielseitig. Zeilennummer
der Regel sehr unübersichtlich:
So kann grep Bei der Suche in größeren Skripten oder in Quell-
codedateien ist es von Interesse, zu wissen, $ ps aux
 zählen: --count, an welcher Stelle das gesuchte Wort vorkommt.
 Groß- und Kleinschreibung ignorieren: grep ist in der Lage, die Zeilennummer dazu aus- Hier kommt grep ins Spiel:
--ignore-case, zugeben, in der das gesuchte Wort steht. So wür-
 Zeilennummern zurückgeben: --line-number, de bei folgender Eingabe $ ps aux | grep mplayer

© freiesMagazin GNU FDL Ausgabe 10/2009 28


T ERMINAL

ps aux gibt alle Prozesse aus. Die Ausgabe wird diesen Zeilen mit dem Vorkommen von WW auf Man kann sich die nochmalige Eingabe dieser
mit dem Pipe-Zeichen an grep übergeben und der Standardausgabe ausgegeben. Was man er- längeren Befehlszeichenfolgen ersparen, indem
auf die gesuchte Zeichenfolge gefiltert. reichen wollte, ist die Auflistung von Warnungen. man diese mit
Dies ist bei alleiniger Verwendung von grep je-
Die Ausgabe könnte in etwa so lauten: $ !518
doch einfacher und treffsicherer zu erreichen.
username 4057 2.3 2.8 67588 25504 tty1 S 17:06 1:54y ein weiteres Mal ausführt.
gmplayer /home/ username /Musik/xyz.mp4
username 5552 0.0 0.0 3204 768 pts /2 R+ 18:27 0:00y Weitere Informationen
grep mplayer Weitere Informationen sind auf der Homepage
des GNU-Projektes [2] zu finden. Ausführliche In-
Als Ergebnis wird nun auch grep selbst geliefert, $ grep -e "^( WW)" /var/log/Xorgy formationen zur Verwendung von grep sind im
da es mit der gesuchten Zeichenfolge als Para- .0. log Ubuntuusers-Wiki [3] und in der zu grep gehören-
meter aufgerufen wurde. Die gesuchte Informati- den Manpage nachzulesen.
on findet sich aber in diesem Fall in der ersten liefert unter Verwendung von regulären Aus-
Zeile. Nun weiß man, dass der MPlayer hier als drücken alle Zeilen der Datei, die mit (WW) be- L INKS
gmplayer die Prozessnummer 4057 trägt. Jetzt ginnen. Diese lassen sich auch kombinieren, so- [1] http://de.wikipedia.org/wiki/Regul%C3%A4rer_
kann dieser mit dass in einem Rutsch Fehlermeldungen und War- Ausdruck
nungen ausgegeben werden: [2] http://www.gnu.org/software/grep/
$ kill 4057
$ grep -e "^( WW)" -e "^( EE)" /y [3] http://wiki.ubuntuusers.de/Shell/grep
beendet werden. var/log/Xorg .0. logo
Probleme mit dem X-Server grep und history Autoreninformation
In vielen Foren trifft man Menschen, die cat in Nützlich machen kann sich grep auch in Kom-
Kombination mit grep einsetzen, um in einer Da- Philipp Walther hat seine ersten
bination mit history, wenn lange Befehlszeilen
tei eine spezifische Zeile zu finden. Dies ist häu- Linux-Erfahrungen mit SUSE-Linux
mehrmals eingeben werden müssen. So liefert
fig ein unnützer Umweg. So wird oft die Filterung gemacht. Es folgten einige Jahre der
der /var/log/Xorg.0.log mit Hilfe der Befehls- $ history | grep grep Linux-Abstinenz. Nach einer Zeit des
zeilenfolge Experimentierens mit verschiedenen
die bisherigen grep-Aufrufe des jeweiligen Benut- Distributionen ist er schließlich bei
$ cat /var/log/Xorg .0. log | y zers. Darunter der Aufruf aus dem vorherigen Debian GNU/Linux angekommen.
grep WW Beispiel.

vorgenommen. Dabei wird die Ausgabe von cat 518 grep -e "^( WW)" -e "^( EE)"y
der Datei Xorg.0.log in grep umgeleitet und von /var/log/Xorg .0. log Diesen Artikel kommentieren

© freiesMagazin GNU FDL Ausgabe 10/2009 29


H ARDWARE

Von der Schaltung zur fertigen Platine mit EAGLE von Marcel Jakobs

it dem von der Firma CadSoft entwi- Icons Schaltung entwerfen

M ckelten Programm EAGLE [1] kann


man Schaltungen und Platinenlay-
outs entwerfen. EAGLE ist ein Akronym, das
In diesem Artikel wird reger Gebrauch der ein-
zelnen Werkzeuge und Schaltflächen des Pro-
gramms gemacht. Daher hier eine Übersicht über
Als Erstes erstellt man die Schaltung („Schema-
tic“), in der die einzelnen Bauteile definiert und
dabei die Verbindungen zwischen ihnen festge-
„Einfach Anzuwendender Grafischer Layout- die verwendeten Symbole: legt werden.
Editor“ bedeutet. Trotz dieses deutschen
Akronyms ist die Software auf Englisch. Die EAGLE-Icons
kostenlose Version ist auf eine halbe Euro- „Add“ Öffnet einen Auswahldialog, um Bauteile hinzuzufügen.
platine (100 mm × 80 mm) und zwei Schich- „Auto“ Startet den Autorouter.
ten beim Platinenlayout beschränkt, ansons- „Board“ Wechselt zur Boardansicht.
ten kann man fast alles damit machen, was „Bus“ Werkzeug zum Generieren von Bussen.
auch mit der Vollversion geht. „Change“ Mit diesem Tool können Eigenschaften von Bauteilen und anderen Elementen geändert werden.
„Copy “ Kopiert ein Bauteil.
Warum hier keine freie Alternative vorgestellt
„Celete“ Löscht ein Bauteil oder ein Netz.
wird, hat den einfachen Grund: EAGLE ist
„Display “ Öffnet einen Dialog, in dem man auswählen kann, welche Elemente wie angezeigt werden sollen.
gerade im Bereich Mikrocontroller ein Quasi-
„Drc“ Startet den Design Rule Check.
Standard. Wenn jemand eine Schaltung oder ein
„Erc“ Startet den Electrical Rule Check.
Platinenlayout online stellt, wird dieses mit Si-
„Go“ Wendet das ausgewählte Werkzeug auf alle Elemente an.
cherheit für EAGLE sein. Wenn es irgendwo eine
„hole“ Dient zum Vormerken von Bohrlöchern.
Bauteilbibliothek für ein seltenes Teil gibt, ist sie
„Info“ Zeigt Informationen über Bauteile und Netze an.
sehr wahrscheinlich für EAGLE.
„Move“ Werkzeug zum Verschieben von Bauteilen.
Installation und Start „Name“ Werkzeug zum Benennen von Bauteilen und Netzen.
„Net“ Werkzeug zum Zeichnen von Netzen.
Unter einigen Distributionen – wie z. B. Ubuntu –
„Polygon“ Werkzeug zum Zeichnen von Polygonen.
kann EAGLE über die Paketverwaltung installiert
„Ratsnest“ Dieses Werkzeug optimiert die Verbindungen im Boardlayout.
werden. Ansonsten kann man die Binärdateien
„Ripup“ Werkzeug zum Auftrennen von Leitungen.
des Programms auch von der offiziellen Home-
„Route“ Werkzeug zum Verlegen von Leitungen.
page [2] beziehen.
„Show“ Zeigt den Verlauf eines Netzes an.
Ist das Programm installiert und gestartet, kann „Text“ Werkzeug zum Setzen von Text auf den Schaltplan oder die Platine.
man über „File » New“ ein neues Projekt begin- „Ulp“ Öffnet einen Dialog zum Starten von Benutzerskripten.
nen. Ein Projekt kann dabei aus mehreren Schal- „Value“ Werkzeug, um Werte von Bauteilen einzustellen (z. B. den Wert eines Widerstands).
tungen und Platinen bestehen. „Via“ Werkzeug zum Erstellen von Durchkontaktierungen.

© freiesMagazin GNU FDL Ausgabe 10/2009 30


H ARDWARE

Bauteile platzieren klicken. Wenn mehrere Bau-


Um Bauteile auszuwählen, klickt man auf das teile oder Netze in der Nä-
Symbol „Add“ in der Werkzeugleiste, woraufhin he sind, wird eins rot mar-
sich ein Auswahldialog öffnet, in dem sehr viele kiert (Netze werden hellgrün
Bauteile zur Verfügung stehen. Das richtige Bau- markiert). Sind keine ande-
teil zu finden, ist am Anfang nicht immer leicht. Es ren Bauteile in der Nähe, wird
ist jedoch wichtig, die richtigen Bauteile zu ver- das Bauteil direkt ausgewählt,
wenden, damit später das Platinenlayout stimmt sodass man es mit der Maus
und die Bauteile auch darauf passen. Daher hier verschieben kann. Wenn das
einige Tipps: markierte Bauteil das Richti-
ge ist kann man erneut mit
 Widerstände, Kondensatoren und Induktoren der linken Maustaste drücken
befinden sich in der Gruppe RCL (Resistor = und es ist ausgewählt. Mit
Widerstand, Capacitor = Kondensator und In- der rechten Maustaste wird
ductor = Induktor). Darin sollte man die EU- ein anderes Bauteil (in der
Gruppen wählen. Nähe) rot markiert. So kann
 VCC und GND können über die Suche recht man zwischen den markier-
Der Auswahldialog für Bauteile.
leicht gefunden werden. ten Bauteilen umherschalten
 Atmel-Mikrocontroller sind im Paket atmel auf- Es gibt auch die Möglichkeit, Bauteile selbst zu bis das richtige markiert ist und dieses dann aus-
gelistet. definieren. Dies wird hier jedoch nicht behandelt, wählen. Hat man das Bauteil an seine neue Posi-
 Stift-/Buchsenleisten findet man in den Pa- da die gängigen Bauteile normalerweise bereits tion verschoben, kann man es noch mit der rech-
keten con-lsta (female, also Buchsen) und verfügbar sind. ten Maustaste pro Klick um 90° drehen und dann
con-lstb (male, also Stecker). mit der linken Maustaste ablegen.
Ist das Bauteil ausgewählt, kann es mit der rech-
 Wannenstecker befinden sich in Bauteile verbinden
ten Maustaste um je 90° gedreht und mit einem
con-harting-ml. Um die Bauteile zu verbinden, nutzt man am bes-
Linksklick platziert werden. Man kann den meis-
 LEDs gibt es im Paket led. ten Bauteilen auch noch Namen geben sowie die ten das Werkzeug „Net“. Damit klickt man auf
Werte von Widerständen, Kondensatoren etc. än- einen Anschluss eines Bauteils und kann nun
Ansonsten empfiehlt es sich, die Pakete nach das Netz zum nächsten Bauteil ziehen, wo es en-
dern. Dafür gibt es die beiden Icons „Name“ und
dem Hersteller oder der Artikelbezeichnung zu den soll.
„Value“.
durchsuchen. Oft befinden sich auf der Herstel-
lerseite oder auf anderen Internetseiten Bibliothe- Möchte man ein bereits platziertes Bauteil ver- Wenn man viele Leitungen von einem Bauteil zu
ken mit Bauteildefinitionen zum Herunterladen. schieben, so kann man dazu das Werkzeug „Mo- einem anderen ziehen muss, sind Busse sehr
Eine ausgiebige Suche im Internet lohnt sich da ve“ nutzen. Ist „Move“ ausgewählt, kann man mit gut geeignet. Dazu nimmt man sich das Bus-
oftmals. der linken Maustaste auf ein Bauteil (oder Netz) Werkzeug und zieht damit eine Linie über die

© freiesMagazin GNU FDL Ausgabe 10/2009 31


H ARDWARE

Strecke, auf der die Leitungen gleich verlaufen sind die anderen „Malwerkzeuge“ auch recht Man kann die Schaltung noch auf Plausibilität
sollen. Als Name gibt man dann einen Namen ge- praktisch. Um einen Text auf die Platine zu testen (Electrical Rule Check – Erc). Dabei wird
folgt von einer Art Array an, wie z. B. „PortA[0..7]“, schreiben, muss man das „Text“-Werkzeug in der geprüft, ob Kurzschlüsse existieren und alle be-
um acht Leitungen als Bus zusammen zu fassen. Boardansicht benutzen, dazu später mehr. nötigten Pins eines Bauteils angeschlossen sind.
Nun kann man die einzelnen Leitungen des Bus- Um diesen Test auszuführen, drückt man auf die
ses mit Pins von Bauteilen verbinden. Dazu wählt Beim Ziehen von Netzen und Bussen kann ein Schaltfläche „Erc“.
man das Werkzeug „Net“ aus und klickt damit auf Richtungswechsel der Leiterbahn durch einen
Beispiel
den Bus. Es erscheint ein Auswahlmenü mit allen Linksklick eingeleitet werden. Um eine Leitung
Als Beispiel soll nun die Schaltung entworfen
Netzen, die der Bus besitzt (in diesem Beispiel enden zu lassen, ohne an ein Bauteil angeschlos-
werden, die auch in „AVR-Mikrocontroller unter
„PortA0“ bis „PortA7“). Dann kann man das Netz sen zu sein, klickt man zweimal an die glei-
Linux“ (freiesMagazin 06/2009 [3]) gezeigt wur-
wie gewohnt mit dem Pin des Bauteils verbin- che Stelle. Netze können auch verzweigt werden,
de. Man startet EAGLE und legt über „File » New“
den. Natürlich geht es auch umgekehrt, und man wenn viele Bauteile mit einem Netz verbunden
ein neues Projekt an. Wenn man mit der rech-
kann ein Netz von einem Bauteil aus mit dem Bus werden (z. B. GND).
ten Maustaste auf das neue Projekt klickt, so
verbinden. In diesem Fall er-
kann man über „New“ den Menüpunkt „Schema-
scheint beim Klicken auf den Bus
tic“ auswählen.
auch hier das Auswahlmenü.
Nun klickt man auf das Icon „Add“ und scrollt
Manchmal kommt es vor, dass
im linken Fenster bis zum Paket atmel herun-
man zwei Netze miteinander ver-
ter. Dort klickt man auf das kleine Dreieck ne-
bindet (z. B. wenn man einen Wi-
ben „atmel“, damit sich das Paket öffnet. In die-
derstand mit GND verbindet). In
sem Paket sucht man nun „MEGA 16-P“, dies ist
diesem Fall fragt EAGLE nach,
ein ATMega16 im DIL-Gehäuse. Sobald das Bau-
ob man das wirklich tun möchte
teil ausgewählt ist sieht man auf der rechten Sei-
und welchen Namen das Gesamt-
te die Darstellung im Schema. Rechts daneben
netz haben soll. Im obigen Bei-
ist die Darstellung für das Boardlayout. Darunter
spiel würde man GND wählen.
sind weitere Informationen über das Bauteil an-
Sonstige Techniken gegeben. Nun klickt man auf „OK “ und platziert
Mit dem Werkzeug „Delete“ las- den Mikrocontroller mit der linken Maustaste ir-
sen sich Bauteile und Netze wie- gendwo in die Schaltung.
der löschen.
Als nächstes wird die LED ausgewählt. Nach-
Das Werkzeug „Text“ kann ge- dem man auf „Add“ geklickt hat, gibt man unten
nutzt werden, um Anmerkungen links in der Suche „led“ ein und drückt Return .
zu machen oder verschiedene In den Ergebnissen sucht man nun das Paket
Bereiche zu kennzeichnen. Dazu Ein neues Schema in EAGLE erstellen. led und darin das Paket LED. Dort gibt es eine

© freiesMagazin GNU FDL Ausgabe 10/2009 32


H ARDWARE

layouts wechseln. Hier sieht man jetzt die Umris-


se einer Platine und daneben alle genutzten Bau-
teile. Diese sind mit gelben Linien entsprechend
den Netzen verbunden. Die Bauteile kann man
nun wie beim Entwurf der Schaltung platzieren.
Die weißen Ränder der Platine können mit dem
„Move“-Werkzeug verschoben werden. In der
Freeware-Version sind dem jedoch Grenzen ge-
setzt – verkleinern geht aber immer.
EAGLE kann auch vielschichtige Platinen erstel-
len. Wenn man die Platine selber ätzen möchte,
empfiehlt es sich, das Layout auf eine Schicht
(Layer) zu begrenzen.
Routing
Da die gelben Linien nur die logischen Verbindun-
gen repräsentieren, müssen die Leitungen noch
gezogen werden (die Platine wird „geroutet“).
Das fertige Schema der Platine. EAGLE unterstützt den Benutzer dabei mit sei-
Das Schema mit plazierten Bauteilen. Diese nem Autorouter. Immer wenn Bauteile verscho-
müssen noch verbunden werden. Die Bauteile werden nun wie in der Schaltung ben wurden, sollte man einmal das „Ratsnest“-
aus freiesMagazin 06/2009 mit Netzen verbun- Symbol anklicken, damit die Verbindungen opti-
„LED5MM“, die man auswählt und neben den Pin miert werden. Danach kann man den Autorou-
den und unter einem beliebigen Namen gespei-
„PD0“ des Mikrocontrollers platziert.
chert. Die Dateiendung ist .sch. ter starten. Bei „Preferred Directions“ sollte man
Ähnlich werden nun ein Kondensator und ein Wi- „TOP“ auf „N/A“ stellen, damit die Platine nur auf
Zum Schluss kann man noch den Erc-Test aus- einer Seite mit Leiterbahnen bestückt wird. Dop-
derstand aus dem Paket rcl eingefügt. Den Wi-
führen. Dieser ergibt drei Fehler, da die Pins pelseitige Platinen sind relativ schwer zu ätzen.
derstand kann man mit dem „Copy “-Werkzeug
AREF, AGND und AVCC nicht verbunden sind. „BOTTOM“ sollte auf „*“ eingestellt werden, so-
kopieren. Ein Widerstand kommt vor den RESET-
Diese werden jedoch nur für die Konvertierung dass die Leitungen keine bevorzugte Richtung
Pin und einer neben die LED. Der Kondensator
von Analog zu Digital gebraucht. haben. Das Routing Grid kann ruhig auf 20-30
gehört neben die „VCC“- und „GND“-Pins des AT-
Mega16. gestellt werden. Die voreingestellten 50 reichen
Platinenlayout entwerfen für dieses Beispiel aber auch. Dies gibt lediglich
GND und VCC findet man am besten, indem man Sobald die Schaltung fertig ist, kann man über an, wie fein das Gitter (grid) ist, auf dem die Bah-
sie genau so in die Suche eingibt. die Schaltfläche „Board“ zur Ansicht des Board- nen verlegt werden können. Je geringer der Wert,

© freiesMagazin GNU FDL Ausgabe 10/2009 33


H ARDWARE

desto länger dauert der Routingvorgang, aber de- che gibt man diesem den Namen „GND“ und brücken wird eine Leitung auf einem anderen
sto höher ist auch die Wahrscheinlichkeit, dass drückt „Ratsnest“. Oft bleiben noch einige freie Layer verlegt, welches später nicht ausgedruckt
ein gutes Layout gefunden wird. Flächen übrig, die sich nicht mit Masse verbin- sondern durch die entsprechenden Kabel ersetzt
den lassen. In diesem Fall kann man ein zweites wird.
In diesem Beispiel gibt es nur wenige Verbindun- Polygon erstellen, dessen Namen man nicht ver-
gen, sodass der Autorouter alle Leitungen sehr ändert. Nach einem weiteren Ratsnest sollte es Um eine Drahtbrücke zu setzen, erstellt man zu-
schnell verlegen kann. Je nach Rechenleistung nun keine freien Flächen mehr geben. erst zwei Pads mit dem Tool „Via“. Nun wechselt
und Umfang der Platine kann der Routingvor- man auf das Werkzeug „Route“ und verbindet die
gang mehrere Minuten bis Stunden dauern. (Die- Die Masseflächen sollte man immer vor dem Pads mit den Leitungen, die mit der Drahtbrücke
ses Problem ist NP-Vollständig [4].) Trotzdem Routen einfügen, da dadurch das Routing oft ver- verbunden werden sollen. Nun wechselt man auf
schafft der Autorouter meist nicht alle Verbindun- einfacht wird. das Layer „1 TOP“. Dort kann man beide Pads
gen und man muss selbst einige Leitungen zie- miteinander verbinden.
hen. Das Routen von Hand erfordert etwas Erfah-
rung und man kann sich tagelang damit beschäf- Um zwei Masseflächen miteinander zu verbin-
tigen. Oft ist es leichter – wenn auch nicht immer den, gibt man den Pads den gleichen Namen wie
schön – Drahtbrücken zu nutzen. den Masseflächen: „GND“. Diese brauchen dann
nur noch auf Layer 1 verbunden werden.
Um eine Leitung (wieder) aufzutrennen, kann
Bohrungen
man das Werkzeug „Ripup“ nutzen. Wenn es
ausgewählt ist, klickt man auf die gewünsch- Möchte man die Platine später mit Schrauben fi-
te Leitung. Wenn man alle Leitungen entfernen xieren, ist es sinnvoll mit dem Werkzeug „Hole“
möchte (um ein neues Autorouting zu starten), die Bohrungen zu markieren. Die Größe der Lö-
klickt man erst auf „Ripup“ und dann auf „GO“. cher kann über die Einstellung „Drill“ bestimmt
werden.
Techniken
Text
Einige Anwendungsfälle, wie z. B. Hochfrequenz-
technik, benötigen Masseflächen an bestimm- Oft ist es sinnvoll, auch die Platine selbst zu be-
ten Stellen der Platine. Aber auch sonst ist es Erstellen einer Massefläche. schriften. Eine Versionsnummer z. B. hilft später
nicht verkehrt, jede freie Fläche als Kupferfläche ungemein, eine Platine mit Verbesserungen wie-
zu modellieren, da so beim Ätzvorgang weniger Drahtbrücken der zu erkennen. Wenn einem Jahre später noch-
Kupfer weg geätzt werden muss und das Ätzbad Eine Drahtbrücke ist ein Kabel, welches eine Lei- mal die Platine in die Hand fällt, ist es sicher auch
nicht so schnell verbraucht wird. tung ersetzt und normalerweise auf der Obersei- nützlich, wenn darauf steht, wofür sie ist (oder
te der Platine verlegt wird. Über Löcher mit dar- war). Auch zum Belichten ist eine Beschriftung
Um eine Massefläche zu erstellen, nutzt man das unter liegenden Kupferflächen (Pads) lassen sich praktisch, weil man dann am besten erkennt, ob
„Polygon“-Werkzeug und zieht ein Rechteck groß- Drahtbrücken auf die gleiche Weise wie ande- die Folie richtig herum aufliegt (und nicht spiegel-
zügig um die Platine herum. Für eine Masseflä- re Bauteile einlöten. Zum Modellieren von Draht- verkehrt).

© freiesMagazin GNU FDL Ausgabe 10/2009 34


H ARDWARE

Daher sollte man mit dem Werkzeug „Text“ ganz Einstellungen festlegen und testen Beispiel
zum Schluss auf einen freien Bereich der Platine Beim Platinenlayout hat man neben dem Erc Nachdem das Schema fertig ist, soll nun das
klicken und in das sich öffnende Fenster den Na- noch die Möglichkeit einzustellen und zu testen, Boardlayout erstellt werden. Dazu wechselt man
men und die Version der Platine angeben (man wie groß die Isolationsschichten, also die Zwi- mit dem Symbol „Board“ auf die Boardansicht.
kann natürlich auch noch andere Beschriftungen schenräume zwischen zwei Leiterbahnen, sein
machen). Die Schrift wird auf dem BOTTOM- sollen. Dieser Design Rule Check (Drc) wird mit Zuerst werden die Bauteile nun in die Fläche der
Layer gespiegelt angezeigt. Mit dem Werkzeug der Schaltfläche „Drc“ aufgerufen. Im sich öffnen- Platine platziert. Die Größe der Platine kann man
„Change“ kann man Schriftart und -größe verän- den Dialog kann man nun die Abstände zwischen dabei auch anpassen. Nun empfiehlt es sich ei-
dern. verschiedenen Typen wie z. B. Netzen oder Vias ne Massefläche zu definieren. Dazu klickt man
bestimmen. Nach einem Klick auf „Apply “ wird auf die Schaltfläche „Polygon“ und klickt im (oder
versucht, das Layout entsprechend anzupassen. gegen den) Uhrzeigersinn einmal an jede Ecke
Mit „Check “ kann man nun überprüfen lassen, ob der Platine, sodass ein Rechteck um die Plati-
dies überall möglich war. Gab es Probleme, so ne herum entsteht. Mit dem Werkzeug „Name“
öffnet sich ein Fenster, in dem alle Fehler aufge- kann man nun auf das Rechteck klicken und
listet werden. Der in diesem Fenster ausgewähl- ihm den Namen „GND“ geben. Danach drückt
te Fehler wird auch auf der Platine angezeigt, so- man einmal „Ratsnest“, damit die Massefläche
dass man versuchen kann, das Problem zu be- angezeigt und die Verbindungen optimiert wer-
heben. den. Wie man sieht, sind alle Masseverbindun-
gen nun verschwunden und die Bauteile haben
an den entsprechenden Pins eine direkte Verbin-
dung zur Massefläche erhalten. Nun kann man
die Teile meistens noch günstiger (also enger)
anordnen.

Sind die Bauteile fertig platziert, kann man


mit dem Routingvorgang beginnen. Zuerst noch
einmal auf „Ratsnest“ klicken, damit die Ver-
bindungen auch wirklich optimal sind. Danach
klickt man auf die Schaltfläche „Auto“ und wählt
die oben vorgeschlagenen Einstellungen aus.
Nach einem Klick auf „OK “ beginnt der Rou-
tingvorgang. Bei dieser kleinen Beispielplatine ist
er sehr schnell abgeschlossen und es sollten
auch alle gelben Verbindungslinien verschwun-
Das fertig geroutete Board. Ein Ausschnitt des gerouteten Boards. den sein. Ein Klick auf „Ratsnest“ zeigt in der

© freiesMagazin GNU FDL Ausgabe 10/2009 35


H ARDWARE

Winkeloptionen des Werkzeugs zu nutzen, die (sie sollte dort im Ordner img liegen). In der
man oben in der Leiste anklicken kann. Alterna- Boardansicht klickt man nun auf die Schaltfläche
tiv kann man auch beim Ziehen der Leitung die „ULP“ und wählt das Skript 3d341.ulp aus dem
rechte Maustaste drücken, um den Winkel zu än- Verzeichnis ulp des EAGLE3D-Ordners aus.
dern.
Die Einstellungen können so bleiben und man
Auch die Leitungsdicke lässt sich über die Aus- braucht nur noch auf „POV-Datei schreiben“ oder
wahl „Width“ ändern, sodass man zwischen den „POV-Datei schreiben und Ende“ zu klicken. Nun
Pins eines Bauteils durchkommt. Wenn eine wird man noch gefragt, welche Logos auf den ICs
große Massefläche besteht, sieht man die neu abgebildet werden sollen, ob die ICs gesockelt
gerouteten Leitungen oft nicht. Mit einem Klick sein sollen, welche Farbe die LEDs haben sollen
auf Ratsnest wird das Layout neu gezeichnet. und Ähnliches. Danach wird die POV-Ray-Datei
Einstellungsdialog des Autorouters. geschrieben (der Pfad und Dateiname kann im
Um sich den Verlauf einer Leitung anzusehen, ersten Dialog von EAGLE3D bestimmt werden),
Statusleiste an, ob noch offene Verbindungen be- kann man auf die Schaltfläche „Show“ und dann welche man mittels
stehen (und wenn ja, wieviele). auf das gewünschte Netz klicken (das funktio-
niert auch im Schema). Mit dem Werkzeug „In- $ povray -W800 -H600 dateiname .pov
Nun kann man noch die Tests Erc und Drc durch fo“ kann man sich zu jeder Leitung und jedem
laufen lassen und das Layout speichern. Die Da- Bauteil Informationen wie Name, Wert und Positi- rendern kann. (POV-Ray muss dafür installiert
teiendung für Platinenlayouts ist .brd. on anzeigen lassen (funktioniert im Schema und sein). Dabei steht -W800 für die Breite von 800
beim Boardlayout). Pixeln und -H600 für die Höhe von 600 Pixeln.
Tipps zum (manuellen) Routen
Diese Angaben können nach Belieben geändert
Manchmal schafft es der Autorouter einfach nicht, Auf jeden Fall sollte man sich am Anfang die Ziele werden. Je größer man das Bild macht, desto län-
alle Verbindungen zu routen. Man kann alle Lei- (gerade was die Größe der Platine angeht) nicht ger dauert das Rendern. Das Ergebnis wird in
tungen auftrennen und die Bauteile etwas ver- zu hoch stecken und ruhig regen Gebrauch von dateiname.png gespeichert.
schieben, um den Autorouter noch einmal laufen Drahtbrücken machen.
lassen. Das bringt oft erstaunlich gute Ergebnis- Wenn man die Werte der Zeilen 44–50 in der
se. Doch auch damit lassen sich oft nicht alle Ver- Vorschaubild der Platine erzeugen POV-Ray-Datei ändert, wird dadurch die Positi-
bindungen routen. In diesem Fall muss man die Mit dem Skript EAGLE3D [5] kann man sich ei- on der Kamera verschoben, wodurch man sehr
restlichen Leitungen manuell routen. ne POV-Ray-Datei (siehe „Der Raytracer POV- schöne Nahaufnahmen erzeugen kann. Für das
Raytracer“ freiesMagazin 09/2009 [6]) erzeugen obige Beispiel kann man einfach mal folgende
Dafür klickt man auf das Werkzeug „Route“ und lassen, welche die Platine darstellt. Werte ausprobieren:
dann auf die Leitung oder den Pin, der noch nicht
verbunden ist. Nun kann man eine Linie auf die Das Script kann man einfach irgendwo im Datei- #local cam_x = 20;
gleiche Weise ziehen wie beim Schaltplan ein system entpacken. Die Bauteilbibliothek gehört #local cam_y = 14;
Netz. Oft empfiehlt es sich, die verschiedenen ins Verzeichnis povray des EAGLE3D-Ordners #local cam_z = -45;

© freiesMagazin GNU FDL Ausgabe 10/2009 36


H ARDWARE

# local cam_a = 20; und ein Ätzbad. (Man kann beides bei Elektronik- ist und die Reste des entwickelten Fotolacks ver-
# local cam_look_x = 10; versandhändlern erhalten. Dosierungsanweisun- schwunden sind, kann man die Platine aus dem
# local cam_look_y = 2; gen sind normalerweise dabei). Ein Bohrer mit Entwickler nehmen und unter klarem Wasser ab-
# local cam_look_z = 3; einem Gestell ist auch sehr praktisch. Zum Ent- spülen. (Ab jetzt kann das Licht auch wieder an-
fernen des überschüssigen Fotolacks wird zum geschaltet werden.) Nun kommt sie ins Ätzbad, in
Nach jeder Änderung der Datei muss das Bild mit Schluss noch normaler Spiritus genutzt. dem sie so lange bleibt, bis alle belichteten Kup-
dem POV-Ray-Befehl erneut gerendert werden. ferflächen aufgelöst sind.
Ein Belichtungsgerät kann man sich selber bau-
Die Platine ätzen en. Dafür gibt es eine Anleitung von Andreas Mit dem Spiritus kann man nun die Fotolack-
Behnisch [7] (vom mir nicht getestet). Reste entfernen. Danach sollte man die Platine
Um die Platine zu ätzen, braucht man eine Men-
mit einem Leitungsprüfer durchmessen, um zu
ge Zubehör. Neben der Fotoplatine, die man bei Zum Drucken der Schaltung schaltet man in der sehen ob alle Verbindungen leiten und kein Kurz-
fast allen Elektronikhändlern beziehen kann, be- Boardansicht mit der Schaltfläche „Display “ al- schluss vorhanden ist.
nötigt man eine Lichtquelle, ein Entwicklerbad le Anzeigen bis auf „Bottom“ (bzw. „Top“ für die
Oberseite von doppelseitigen Platinen), „Pads“, Als nächstes müssen alle Löcher gebohrt wer-
„Vias“ und „Dimension“ aus. Danach kann man den. Danach kann die Platine bestückt und ge-
die Schaltung am besten auf Projektorfolien dru- lötet werden.
cken (die Folien, die sonst für Tageslichtprojekto- Weitere Informationen zum Ätzen gibt es im Wiki-
ren genutzt werden). book „Platinen selber herstellen“ [8].
Nachdem man Schaltung und Platine zurecht ge- Tipps für doppelseitige Platinen
schnitten hat, macht man das Licht aus und zieht Das Wichtigste beim Erstellen von doppelseiti-
die Schutzfolie von der Platine. gen Platinen ist, sehr genau zu arbeiten und je-
Nun wird die ausgeschnittene Schaltung mit den Schritt sorgfältig zu überlegen. Es ist viel Ar-
durchsichtigem Klebeband auf der Fotoplatine beit, eine solche Platine anzufertigen, und wenn
befestigt (die Schrift auf der Schaltung sollte les- man nicht sorgfältig arbeitet, klappt es meist
bar sein) und auf das Belichtungsgerät gelegt. nicht.
Bei der Arbeit mit dem Autorouter empfiehlt es
Die Belichtungsdauer ist von der Intensität der
sich, mehrere Ansätze auszuprobieren. So kann
Lampe und der verwendeten Platine abhängig.
man zuerst eine Seite routen und die übrig geblie-
Am Anfang muss man meist etwas probieren,
benen Verbindungen auf der anderen Seite er-
bis man das gewünschte Ergebnis erreicht hat.
neut mit dem Autorouter routen. Dafür stellt man
Meist reichen 2-3 Minuten Belichtungszeit.
das erste Mal „TOP“ auf „N/A“ und „BOTTOM“
Nach dem Belichten kommt die Platine in den auf „*“ und für den zweiten Durchlauf genau um-
Das fertig gerenderte Bild. Entwickler. Sobald die Schaltung gut erkennbar gekehrt.

© freiesMagazin GNU FDL Ausgabe 10/2009 37


H ARDWARE

Nach dem Routing ist es meist blemen weiter helfen. Einige gute Tipps gibt es
vorteilhaft, die vom Autorouter ge- auch im Wiki von Mikrocontroller.net [10].
setzten Vias mit dem Werkzeug L INKS
„Change“ über den Menüpunkt
„Drill“ zu verkleinern. [1] http://www.cadsoft.de
[2] http://www.cadsoft.de/download.htm
Zum Belichten hat es sich bewährt, [3] http://www.freiesmagazin.de/freiesMagazin-2009-
mit durchsichtigem Klebeband ei- 06
ne Tasche aus den beiden aus- [4] http://de.wikipedia.org/wiki/NP_%28Komplexit%
gedruckten Schaltungen zu bas- C3%A4tsklasse%29
teln und die Platine dort hineinzu- [5] http://www.matwei.de/doku.php?id=de:eagle3d:
legen. Dadurch verrutscht die Plati- eagle3d
ne nicht so leicht. Das Belichten ist [6] http://www.freiesmagazin.de/freiesMagazin-2009-
einer der kritischsten Punkte beim 09
Erstellen von doppelseitigen Plati- [7] http://www.jogis-roehrenbude.de/Leserbriefe/
nen, da beide Seiten passgenau Platinenbelichter/Platinenbelichtung.htm
aufeinander liegen müssen. Wenn [8] http://de.wikibooks.org/wiki/Platinen_selber_
Das fertige Bild mit geänderter Kameraposition. die beiden Seiten nicht genau auf- herstellen
einander liegen sind die Bohrlöcher
[9] http://www.cadsoft.de/faq.htm
Ein anderer Ansatz ist es, beide Seiten gleichzei- später auf einer Seite falsch.
[10] http://www.mikrocontroller.net/articles/Eagle_im_
tig zu routen und für „TOP“ „|“ zu wählen und für Hobbybereich
„BOTTOM“ „-“. Das ganze sollte man auch mal Beim Bohren sollte man erst Löcher in der Nä-
umgekehrt testen, um zu sehen, ob dann besse- he der vier Ecken bohren, um sicher zu gehen,
re Ergebnisse erzielt werden (also „TOP“ auf „-“ dass die Schaltung richtig passt. Wenn man erst Autoreninformation
und „BOTTOM“ auf „|“). nach der Hälfte der zu bohrenden Löcher be-
merkt, dass die Seiten nicht genau aufeinander Marcel Jakobs hat für viele seiner
Damit der Autorouter Bauteile wie Wannenste- liegen, hat man sich eine Menge Arbeit umsonst Projekte selbst Platinen entwickelt.
cker nicht auf der Oberseite (TOP-Layer) verbin- gemacht. Dafür nutzte er jedes Mal EAGLE. Die
det (dies ist sehr ungünstig zu löten), kann man Bilder aus EAGLE3D haben schon in
mit dem „Polygon“-Werkzeug Bereiche definie- Weitere Informationen mancher seiner Arbeiten Verwendung
ren, die vom Autorouter nicht betreten werden Das Handbuch von EAGLE befindet sich in den gefunden.
dürfen. Dazu wählt man das Layer „tRestrict“ aus Installationsdateien. Wurde EAGLE über die Pa-
(„bRestrict“ verbietet das Betreten im BOTTOM- ketverwaltung installiert, so sollte es sich un-
Layer) und rahmt damit die entsprechenden Bau- ter /usr/share/doc/eagle-data/help befin-
teile ein. den. Ansonsten kann die FAQ [9] bei vielen Pro- Diesen Artikel kommentieren

© freiesMagazin GNU FDL Ausgabe 10/2009 38


V ERANSTALTUNG

41. DANTE-Mitgliedertagung in Esslingen von Dominik Wagenführ

m 12. September 2009 fand in Ess- auch von Seiten der Teilnehmer einige Verbes- pspicture-Umgebung sollte man daher wohl

A lingen am Neckar die 41. Mitgliederta-


gung der Deutschsprachigen Anwen-
dervereinigung TeX e.V. (DANTE) [1] statt. Im
serungsvorschläge und Wünsche. So würde ein
Teilnehmer gerne mehr einsteigerfreundliche Ar-
tikel in der Komödie sehen. Hier trifft aber zu, was
auch Abstand nehmen.
Ingesamt ist das aber ein spannendes Vorhaben,
welches man auch in Zukunft beachten sollte,
Rahmen der Veranstaltung gab es zahlreiche alle Magazine betrifft, die keine Festangestellten
nimmt es doch einige Hürden, die einem LATEX-
Vorträge zu verschiedenen LATEX-Themen. haben: Es muss sich erst einmal ein Autor finden,
Anwender heute noch in den Weg gestellt wer-
der etwas dazu schreibt.
den, wenn man schöne Grafiken darstellen will.
Mitgliederversammlung
Projekt: PostScript und PDF Biber – Der BibTEX-Nachfolger
Klaus Höppner begrüßte um 9 Uhr die circa 40-
50 Teilnehmer zur 41. Mitgliederversammlung [2]. Nach einer halbstündigen Pause gab es den Martin Sievers stellte im folgenden Vortrag Bi-
Sehr ausführlich berichtete er danach über die ersten Vortrag. Herbert Voß, Autor vieler hilfrei- ber [9] vor, welches als Nachfolger von BibTEX
verschiedenen TEX-Tagungen, die weltweit in die- cher LATEX-Lehrbücher [7], die auf der Tagung angesehen werden kann. Mittels BibTEX und
sem Jahr stattfanden. So erfuhr man, wie die auch zum Kauf angeboten wurden, stellte ein biblatex kann man sehr leicht Literaturdaten-
TUG 2009 in Notre Dame, Indiana, USA, verlau- Projekt vor, bei dem es darum geht, PostScript- banken erzeugen und schnell in einem Do-
fen ist und sah auch einige Bilder des schönen Grafiken, die bisher nur über den Umweg latex kument referenzieren. Der Nachteil ist, dass
Campus. Auch von der EuroTEX 2009 und dem » dvips » ps2pdf » includegraphics in PDF- BibTEX vor allem bei der Sortierung von Unicode-
3. ConTEXt-Meeting, die dieses Jahr in den Nie- Dokumenten genutzt werden konnten, direkt mit- basierenden Quellen (also auch deutschen Um-
derlanden stattfanden, wurde berichtet. Neben tels pdflatex übersetzen zu können. Mittels des lauten) Probleme hat und diese falsch sortiert.
dem Hinweis auf kommende Tagungen, gab es Perl-Programmes pst2pdf [8] werden Präam- Daneben kann es bei großen Literaturdatenbe-
auch einen Rückblick auf die verschiedenen deut- pel, Text und Grafik eines LATEX-Dokumentes auf- ständen zu einem Überlauf des Speichers kom-
schen Linux-Veranstaltungen, wie die Chemnit- gespalten, die Grafiken einzeln konvertiert und men. All dies soll mit Biber behoben werden.
zer Linux-Tage [3] und den LinuxTag in Berlin [4], am Ende alles wieder zu einem Dokument zu-
sammengefügt, aus dem man das PDF erstellen Dazu gibt es auch eine neue XML-basierende
auf denen DANTE mit Ständen und Vorträgen
kann. Sprache BibLaTeXML, mit der man die Daten-
vertreten war.
bankeinträge in einer XML-Sprache leichter be-
Bei der Gelegenheit habe ich auch auf meine Das Programm hat dabei aber noch Einschrän- schreiben kann.
zwei LATEX-Workshops am 17. Oktober 2009 hin- kungen. Zum Beispiel ignoriert es alle lokalen Än-
gewiesen, die ich im Rahmen der Ubucon [5] an derungen für Umgebungen wie pspicture, die Graphviz-DOT
der Universität in Göttingen halten werde. außerhalb dieser definiert werden und auch nicht Nach der Mittagspause stellte Michael Nieder-
global in der Präambel gegeben sind. Darüber mair das Programm Graphviz [10] vor, mit dem
Im Anschluss wurden verschiedene Interna be- hinaus gibt es Probleme, wenn solche Grafiken man anhand von einfachen Regeln leicht Struk-
sprochen, vor allem aber Infos zur TEXnischen in verbatim-Umgebungen eingebettet sind. Von turdiagramme, Pfeildiagramme, MindMaps und
Komödie [6] wurden behandelt. Dabei gab es einer neu definierten Umgebung auf Basis der Netzpläne erstellen kann. Dabei gibt man nur die

© freiesMagazin GNU FDL Ausgabe 10/2009 39


V ERANSTALTUNG

einzelnen Zuordnungen der Knoten und Verbin- nicht viel besser und funktionieren oft gar nicht Was gibt es Neues bei TEX Live?
dungen an und auf welche Art die Grafik erzeugt oder nur eingeschränkt. (Das hoffnungslos veral- Den Abschluss bildete Klaus Höppner, der einen
werden soll. tete latex2html [16] bleibt außen vor.) Vortrag von Karl Berry zum aktuellen Stand von
TEX Live 2009 zum Besten gab, welches im
Aufgrund einiger Einschränkungen bei der gra- Komfortable Makefiles Herbst 2009 erscheinen soll.
fischen Darstellung (keine besonderen Lini-
Danach folgte ein weiterer Vortrag von Micha-
en, kein Mathemodus als Beschriftung, kei- Dabei beschränken sich die Änderungen gegen-
el Niedermair, der die Verwendung von Make-
ne Schriftarteinbindung) wurde auch der Ex- über der Version 2008 auf Kleinigkeiten. So
files [17] für TEX-Dokumente erklärte. Dabei
port mittels dot2tex [11] dargestellt. Über die- werden mittels epstopdf EPS-Grafiken in LATEX-
wird anhand verschiedener Regeln ein TEX-
ses kann man ein erstelltes Diagramm in TEX- Dokumenten, die mit pdflatex übersetzt wer-
Dokument nur dann kompiliert, wenn sich Inhal-
Code exportieren und dann mittels des PSTricks- den, automatisch nach PDF konvertiert.
te geändert haben. Das Ganze kann man auch
Paketes [12] verändern.
so erweitern, dass beispielsweise Grafiken aus Mit write18 kann man externe Befehle aus TEX
Dynamische Bücher dem Programm bei Änderungen korrekt in PDF heraus aufrufen, welches aufgrund der Sicher-
konvertiert und dann im LATEX-Dokument einge- heit aber nur bestimmte Kommandos ausführen
Im Anschluss folgte ein sehr interessanter Vor-
bunden werden. kann. (Man kann diesen Sicherheitsmechanis-
trag von André Wobst. Für die Erstellung von
Tagungsbänden wurde ein Online-Programm er- mus aber sehr leicht aushebeln.)
Zur Hälfte der Zeit wurde der Vortrag aber sehr
stellt, was es erlaubt, einzelne Beiträge zu selek- technisch und durch die zahlreichen Beispiele zu Vorgestellt wurde auch der neue minimalistische
tieren und diese nach eigenen Sortierungsmetho- ausführlich, sodass zu der Zeit kaum noch etwas TEX-Editor TeXworks [18] , der einen eingebau-
den als PDF auszugeben. Dabei werden die Tex- Neues mitgenommen werden konnte. ten PDF-Betrachter besitzt. Man kann mit ihm auf
te aus der Datenbank genommen und in LATEX- diese Art im PDF-Dokument eine Stelle markie-
Code abgelegt, die dann mittels HEVEA [13] Having Fun with LATEX II ren und auf den zugehörigen TEX-Quellcode im
in ein einfaches HTML-Format konvertiert oder Nach der Kaffeepause stellte Adelheid Grob ei- Editor springen, was sicherlich in manchen Fäl-
eben per pdflatex übersetzt werden können. nige interessante LATEX-Pakete vor, die die meis- len eine hilfreiche Funktion ist.
ten Zuhörer sicherlich noch nicht kannten. Neben
Eine Anforderung ist dabei, dass der TeX2HTML-
sehr speziellen Paketen wie cooking, mit dem Schlussbemerkung
Konverter sehr schnell arbeitet, da bei einem
man Rezepte setzen kann, deren Layout sich an Die Veranstaltung war sehr locker, alle waren
Tagungsband mit mehreren tausend Beiträgen
dem der Dr.-Oetker-Kochbücher orientiert oder freundlich und es gab viele interessante Vorträ-
nicht erst Stunden auf das Online-Ergebnis ge-
guitar, welches für die Akkorde über Liedtexten ge. Am Vorabend des Freitags und am Sams-
wartet werden kann. HEVEA soll dabei diese An-
zuständig ist, wurden auch sehr hilfreiche Pa- tagabend traf man sich in verschiedenen Restau-
forderungen erfüllen.
kete wie pseudocode für die Darstellung von rants, bei dem man sich auch über andere The-
Meine persönlichen Erfahrungen mit HEVEA zei- Algorithmen als einfachen Pseudocode, eemeir men außer LATEX unterhalten konnte – was natür-
gen leider ein anderes Bild, insbesondere was zum Setzen von „geschlechtsunabhängigen“ Do- lich auf der Tagung selbst auch möglich war. Am
die allgemeine Anwendung angeht. Die Alterna- kumenten und uebungsblatt zur Erstellung von Sonntag gab es noch eine touristische Führung
tiven tex4ht [14] und tth [15] sind hier aber auch Übungsblättern und Klausuren vorgestellt. durch Esslingen.

© freiesMagazin GNU FDL Ausgabe 10/2009 40


V ERANSTALTUNG

Wer an LATEX interessiert und bei einer der nächs- [6] http://projekte.dante.de/DanteFAQ/Literatur [17] http://code.google.com/p/texworks/
ten Tagungen in der Nähe ist (die nächsten wer- [7] http://texcatalogue.sarovar.org/entries/pst2pdf.
den in Dortmund, Aaachen und Bremen stattfin- html
den), sollte sich unbedingt dort anmelden. Auch [8] http://biblatex-biber.sourceforge.net/ Autoreninformation
als nicht DANTE-Mitglied kann man bei den Vor- [9] http://www.graphviz.org/
Dominik Wagenführ ist unter ande-
trägen zuhören und einiges an Wissen mitneh- [10] http://www.fauskes.net/code/dot2tex/
rem für das Layout in freiesMagazin
men. [11] http://tug.org/PSTricks/ zuständig, was mit LATEX gesetzt wird.
L INKS [12] http://hevea.inria.fr/ Aus dem Grund interessiert er sich
[13] http://www.lrz-muenchen.de/services/software/ auch immer für neue Pakete und
[1] http://www.dante.de/ sonstiges/tex4ht/mn.html Ansätze auf diesem Gebiet.
[2] http://www.dante.de/events/mv41.html [14] http://hutchinson.belmont.ma.us/tth/
[3] http://chemnitzer.linux-tage.de/ [15] http://www.latex2html.org/
[4] http://www.linuxtag.org/2009/ [16] http://www.ijon.de/comp/tutorials/makefile.
[5] http://www.dante.de/DTK.html html Diesen Artikel kommentieren

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

© freiesMagazin GNU FDL Ausgabe 10/2009 41


M AGAZIN

Erklärungen zum zweiten Programmierwettbewerb


ufgrund des Erfolges des ers- grammieren. Dieser kann durch Spielkarten vor- bewegt sich und bleibt stehen. Dann bewegen

A ten Programmierwettbewerbes von


freiesMagazin im April dieses Jah-
res [1], bei dem 13 Teilnehmer eine KI ein-
wärts und rückwärts fahren oder sich nach rechts
und links drehen.

Ziel des Spiels ist es, den Roboter unbeschadet


ggf. die Elemente auf dem Spielbrett (siehe un-
ten) den Roboter und dann wird die nächste Kar-
te ausgespielt usw.
gereicht haben, haben wir uns entschlossen,
erneut einen Programmierwettbewerb zu ver- von der Startposition ins Ziel zu führen. Die hohe Anzahl der Spielkarten ergibt sich dar-
anstalten. Dieses Mal wird die Aufgabe etwas aus, dass es bei einer zu geringen Zahl zu
Die Spielkarten
anspruchsvoller, aber auch etwas lustiger. leicht dazu kommen kann, dass die Karten auf-
Zu Beginn jeder Runde werden acht Karten aus-
Wir hoffen erneut auf eine rege Teilnahme. gebraucht sind, bevor der Roboter das Ziel ge-
geteilt, mit denen man den Roboter bewegen
funden hat. Mit der obigen Anzahl konnte die
oder drehen kann. Von diesen acht wählt man
Spielidee Referenz-KI (siehe unten) das Ziel aber jedes
fünf aus, deren Befehle dann sequenziell (also
Die Idee basiert dieses Mal auf dem Spiel „Robo- Mal erreichen.
der Reihe nach, so wie sie ausgewählt wurden)
Rally“ von Bill McQuillan aus dem Hause Wizards abgearbeitet werden. Das Spielbrett
of the Coast [2]. Man steuert über Spielkarten
Wie erwähnt, gibt es auf dem Spielbrett verschie-
einen Roboter durch eine Fabrik auf dem Weg Es stehen folgende Karten (mit zugehöriger An-
dene Spielelemente, die den Roboter beeinflus-
zu verschiedenen Zielpunkten. Dabei kommen ei- zahl im Kartenstapel) zur Auswahl:
sen oder behindern können.
nem oftmals andere Roboter in die Quere und
Karten Boden: Wie langweilig! Ein leeres
zusätzlich gibt es in der Fabrik verschiedene Ob-
Titel Anzahl Wahrschein-
jekte, die die Bewegungen des Roboters beein- Fabrikfeld.
lichkeit
flussen können.
Bewegung 3 Felder vorwärts 400 0.071
Aufgrund der zeitlichen Begrenzung des Wettbe- Bewegung 2 F. vorwärts 800 0.143 Ziel: Das Zielfeld, zu dem der Ro-
werbs wurde aber auf die Interaktion mit anderen Bewegung 1 F. vorwärts 1200 0.214 boter geführt werden muss.
Robotern und auf einige Spielelemente verzich- Bewegung 1 F. rückwärts 400 0.071
tet. Auf diese Art soll die zu programmierende Nach links drehen (90 Grad) 1200 0.214
Künstliche Intelligenz (KI), d. h. das Programm, Nach rechts drehen (90 Grad) 1200 0.214 Wände: Wände wirken sehr ein-
welches den Roboter steuert, nicht zu komplex Umdrehen (180 Grad) 400 0.071 schränkend auf die Bewegungs-
werden. Gesamt 5600 freiheit des Roboters, denn sie
können nicht durchbrochen wer-
Das Spiel im Detail Hinweis: Es gibt also keine Karte, mit der ein Ro- den. Fährt ein Roboter gegen die
boter einfach nur still stehenbleibt! Wand, passiert aber zumindest
Der Roboter
nichts Schlimmes (außer vielleicht
Wie bereits erwähnt, ist es diesmal die Aufgabe Ingesamt heißt das, es wird die erste von den
einer kleinen Delle)
der Teilnehmer, eine KI für einen Roboter zu pro- fünf gewählten Karte ausgespielt, der Roboter

© freiesMagazin GNU FDL Ausgabe 10/2009 42


M AGAZIN

Kiste: Eine Kiste sperrt ein Feld Schrottpresse: Zwischen den rechts auf das nach oben laufende Förderband
komplett. Man kann nicht anders, beiden Schiebern einer Schrott- geschoben. Dabei wird er auch gedreht, so dass
als das Hindernis zu umfahren. presse sollte man nicht stehen er ebenfalls nach oben blickt.
bleiben, sonst landet man als
Loch: Wenn ein Roboter dieses kleiner zusammengepresster
Feld aus Versehen betritt oder dar- Würfel auf dem Müll.
auf geschoben wird, verschwindet
er auf Nimmerwiedersehen. Förderbänder haben noch eine Besonderheit,
Öl: Besonders glitschig! Wenn ein denn sie können, wenn ein Förderband den Ro-
Roboter dieses betritt oder dar- boter auf ein anderes Förderband schiebt, auch
auf geschoben wird, rutscht er bis die Blickrichtung des Roboters ändern. In allen
zum nächsten Nichtölfeld weiter anderen Fällen bleibt die Blickrichtung des Robo-
oder bis er von einer Wand ge- ters erhalten.
stoppt wird. Wenn er sich auf ei-
nem Ölfeld dreht, wird die Dre- Als Beispiel: Der Roboter bewegt sich von seiner
hung verdoppelt. Aus einer Links- Startposition drei Schritte nach rechts und wird
oder Rechtsdrehung wird zum Bei- dann durch das Förderband nur nach oben ge-
spiel eine Drehung um 180 Grad. schoben, die Blickrichtung bleibt nach rechts. Fall 2: Der Roboter wird gedreht.
Drehrad: Drehwurm garantiert.
Die Elemente, die den Roboter auf dem Feld be-
Wenn man auf diesem Feld zum
wegen (Drehrad, Förderband, Schieber, Schrott-
Stehen kommt, wird der Roboter
presse), agieren erst, wenn der Roboter nach ei-
um 90 Grad in die jeweils ange-
nem Kartenzug zum Stillstand kommt. Durch ei-
zeigte Richtung gedreht.
ne Schrottpresse zu fahren, ist also kein Problem.
Förderband: Nur für Faule! Bleibt Über ein Loch fahren zu wollen schon eher.
man auf einem Förderband ste-
hen, bewegt es den Roboter einen Zusätzlich agieren diese bewegenden Elemente
Schritt in die jeweilige Richtung. nacheinander und nicht gleichzeitig. Die Reihen-
Aufpassen sollte man hier, wenn folge ist:
am Ende der Abgrund wartet.
Reihenfolge der Elementaktionen
Schieber: Deprimierend, ständig Reihenfolge Aktion
wird man durch die Gegend ge-
Fall 1: Der Roboter behält die Blickrichtung bei. 1 Die Förderbänder bewegen sich.
schoben. Bleibt man vor dem 2 Der Schieber und die Schrottpresse
Schieber stehen, schiebt er den Im anderen Fall bewegt sich der Roboter nur zwei werden aktiviert.
Roboter ein Feld vorwärts. Felder vor und wird dann vom Förderband nach 3 Die Drehräder drehen sich.

© freiesMagazin GNU FDL Ausgabe 10/2009 43


M AGAZIN

Es ist also möglich, dass ein Roboter, der auf 12 12 Drehräder


einem Förderband steht, von diesem zu einem V e ev^f eF Zeichen Feld
Schieber geschoben wird, der einen auf ein <N<<<<^ DH L dreht den Roboter 90° gegen den Uhrzei-
Drehrad-Feld schiebt und dieses dann den Ro- b k LR c gersinn
boter noch einmal dreht. >>>O>>>>>>>> R dreht den Roboter 90° im Uhrzeigersinn
b Rp ^ g
HL ivf^<< Förderbänder
i<<<L>>>> Zeichen Feld
je H^ c < Förderband nach links
<<<L bRc > Förderband nach rechts
b ^ ^DH <<c ^ Förderband nach oben
^ ^ ^ v Förderband nach unten
i^k ^i i^Z
Schieber/Presse
Diese Bewegung kann man mit nur einem Listing 1: chop.dat
Zeichen Feld
Schritt erreichen.
C schiebt den Roboter ein Feld nach links
In der ersten Zeile findet man zwei durch ein
D schiebt den Roboter ein Feld nach rechts
Spielumsetzung Leerzeichen getrennte Ganzzahlwerte X und Y,
E schiebt den Roboter ein Feld nach oben
Aufgabe der Teilnehmer ist es, eine KI zu pro- die die Breite und die Höhe des Spielbrettes an-
F schiebt den Roboter ein Feld nach unten
grammieren, die aus acht Karten fünf auswählt geben. Danach folgen Y Zeilen mit je X Zeichen
M Links/Rechts-Schrottpresse
und diese abspeichert. Als Eingabe muss die KI für das Spielbrett.
N Oben/Unten Schrottpresse
dafür folgende Dateien auslesen:
Hinweis: Die linke obere Ecke (in dem Fall also
 board.txt – das Spielbrett mit ASCII-Zeichen das V) hat immer den Index (0,0). Wände
 cards.txt – acht Spielkarten zur Auswahl Zeichen Feld
ASCII-Zeichen der Spielfelder a-p definiert eine Wand/mehrere Wände pro
 bot.txt – Roboterposition und -blickrichtung Feld
Es folgt die Bedeutung der einzelnen Zeichen.
Die fünf ausgewählten Karten müssen in der
Datei ccards.txt (das doppelte „cc“ steht für Einfache Felder
Zeichen Feld
Die Definition der Wände ist binärkodiert, dass
„choosen cards“) abgespeichert sein. heißt:
Leerzeichen leerer Boden
Die Spielbrettdatei board.txt H Loch
 Wand links = 1
Die Datei board.txt enthält das Wichtigste O Öl
überhaupt: das Spielbrett. Dessen Aufbau ist  Wand rechts = 2
S, T, U, V Startfeld des Roboters (für die KI irrele-
auch am kompliziertesten und muss hier genau vant, als leeres Bodenfeld behandeln)  Wand oben = 4
erklärt werden. Z Zielfeld für den Roboter  Wand unten = 8

© freiesMagazin GNU FDL Ausgabe 10/2009 44


M AGAZIN

Beispiele:  horizontale Position des Roboters (zwischen 0 Weitere Dateien


und Breite des Spielbretts-1) Spielbrett in Großformat
Beispiele für Wände Vor jeder Runde wird das Spielbrett noch
 vertikale Position des Roboters (zwischen 0
Kodierung Zeichen Wände in einem etwas schöneren ASCII-Format
und Höhe des Spielbretts–1)
0 a keine ascii-board.txt ausgegeben, das sich aber
1 b links
 Blickrichtung des Roboters:
nicht zum Einlesen eignet, da es zu komplex ist.
8 i unten  L – nach links
Man kann damit aber schöner nachvollziehen,
7 h links, rechts und oben  R – nach rechts wo sich der Roboter auf dem Spielbrett gerade
15 p an allen vier Seiten (ent-  U – nach oben („up“) befindet und wie die einzelnen Felder aussehen.
spricht einer Kiste)
 D – nach unten („down“)
Sequenzdateien
Die Kartendatei cards.txt Beispiel: Am Ende jeder Runde wird eine Datei
In jeder Zeile der Datei cards.txt steht eine Kar- sequence.txt erstellt, die die absoluten Be-
te. Es gibt folgende Möglichkeiten: 7 8 D wegungen des Roboters für die fünf von der KI
ausgewählten Karten auf dem Spielbrett enthält.
 MF 1 – bewegt den Roboter ein Feld vorwärts Der Roboter steht also auf Feld (7,8) und schaut Das heißt, es gibt folgende Einträge:
(vorwärts ist immer in Blickrichtung des Robo- (auf dem Bildschirm) nach unten.
ters)  ML – bewegt den Roboter um ein Feld nach
 MF 2 – bewegt den Roboter zwei Felder vor- links
wärts  MR – bewegt den Roboter um ein Feld nach
 MF 3 – bewegt den Roboter drei Felder vor- rechts
wärts  MU – bewegt den Roboter um ein Feld nach
 MB – bewegt den Roboter ein Feld rückwärts oben
 RL – dreht den Roboter um 90 Grad nach links  MD – bewegt den Roboter um ein Feld nach un-
ten
 RR – dreht den Roboter um 90 Grad nach
rechts  RL – dreht den Roboter um 90 Grad nach links
 RU – dreht den Roboter um 180 Grad  RR – dreht den Roboter um 90 Grad nach
rechts
Im gleichen Format speichert man die fünf aus-  RU – dreht den Roboter um 180 Grad
gewählten Karten auch in der Datei ccards.txt  X – Roboter wurde zerstört, Spiel ist zu Ende
ab.  Y – Kartenstapel ist leer, Spiel ist zu Ende
Die Roboterdatei bot.txt  Z – Roboter hat das Ziel erreicht, Spiel ist zu
Die Datei bot.txt enthält nur eine Zeile mit den Ende
durch Leerzeichen getrennten Informationen: Das Spielbrett im Großformat.  - – signalisieren die nächste Karte

© freiesMagazin GNU FDL Ausgabe 10/2009 45


M AGAZIN

Am Ende eines Spiels wird noch zusätzlich ei- gähnende Leere, ein Schritt zu weit und der Ro- eine schlechte KI, die den Roboter in jedes Loch
ne Datei globalseq.txt erstellt, die die gesam- boter verschwindet auf Nimmerwiedersehen. stolpern lässt und ihn dadurch zerstört, kann
ten Bewegungen des Roboters enthält. Auf diese nicht gewinnen. Die Einschränkung müssen wir
Sonderpreis: 3-D-Spielbrett
Weise kann man genau nachvollziehen, wie der machen, um ein gewisses KI-Niveau im Wettbe-
Als kleine Besonderheit fänden wir es schön,
Roboter zum Ziel gefunden hat. Die einzelnen werb zu erreichen.
wenn es ein 3-D-Spielbrett gäbe, in dem man
Runden werden dabei in der Datei durch acht
den Roboter herumlaufen sieht. Als Anforderung Das 3-D-Spielbrett sollte natürlich korrekt funktio-
Striche -------- voneinander getrennt.
muss die GUI neben der Spielbrett- und Ro- nieren und „gut aussehen“.
Der Wettbewerb boteranzeige nur das komplette Sequenzskript
Programmiersprache
globalseq.txt (siehe oben) laden und abspie-
Kategorien Die benutzte Programmiersprache ist wie immer
len können.
Der Wettbewerb wird in vier Kategorien unterteilt, freigestellt. Das Projekt sollte aber auf einem
wobei die ersten drei eine Schwierigkeitsstufe an- Hinweis: 3-D schließt in diesem Fall auch die iso- „Standard-Linux-Rechner“ (d. h. mit einer aktuel-
geben. metrische Darstellung [3] mit ein, die viele Spie- len Linux-Distribution) ohne Probleme kompilier-
ler vielleicht aus Action-Rollenspielen wie Diablo und ausführbar sein.
Schwierigkeitsstufe leicht oder Sacred kennen.
In der einfachsten Stufe kann der Roboter nicht Die Programme müssen im Quelltext eingereicht
sterben, das heißt, das Spielbrett enthält keine Teilnahmebedingungen werden, der unter einer Open-Source-Lizenz [4]
Löcher und auch keine Schrottpresse. Auch die Jeder Teilnehmer kann nur in einer der vier Kate- veröffentlicht werden muss. Hier helfen wir gerne
Ölfelder werden entfernt, da deren Auswirkungen gorien antreten. bei der Auswahl einer passenden Lizenz weiter,
recht komplex werden können. Zusätzlich ist das sollten Fragen zu diesem Thema auftauchen.
Zusätzlich muss es pro Kategorie (außer bei dem
Spielbrett von einer unsichtbaren Wand umge- 3-D-Spielbrett) mindestens zwei Teilnehmer ge- Für die KIs ist es natürlich erlaubt, den
ben, sodass der Roboter nicht herunterfällt. ben, damit wenigstens etwas Wettbewerb ent- Quelltext und die Bibliotheken der Referenz-
Schwierigkeitsstufe mittel steht. Implementierung (siehe unten) unter Beachtung
der Lizenz zu nutzen, um auf dieser Basis eine
In der Standardstufe sind alle Felder wie oben freiesMagazin-Teammitglieder sind von der Teil-
eigene KI zu erstellen.
beschrieben vorhanden, d.h. es gibt auch Löcher nahme ausgeschlossen, weil diese zum einen
und Schrottpressen, bei denen der Roboter ster- Zugriff auf alle andere KIs haben und zum an- Sinnvoll ist es, wenn das KI-Programm nach der
ben kann. Der Roboter kann aber immer noch deren auch viel früher von diesem Wettbewerb Ausführung im Erfolgsfall 0 zurückliefert und bei
nicht vom Spielbrettrand fallen. erfahren haben. Fehlern einen Wert ungleich 0.
Schwierigkeitsstufe schwer Qualität Laufzeit
In der schwierigsten Stufe muss der Roboter Daneben gibt es noch die Anforderung, dass der Die Laufzeit der KI-Programme sollte natürlich
wirklich aufpassen, wo er hintritt, denn die un- Roboter in der jeweiligen Schwierigkeitsstufe, in so gering wie möglich sein. Für die Teilnahme
sichtbare Wand um das Spielbrett herum ist ver- der man teilnehmen möchte, in mindestens 75 % am Wettbewerb sollten im Schnitt pro Spiel nicht
schwunden. Außerhalb des Spielbretts herrscht der Testfälle das Ziel erreichen muss. Das heißt, mehr als maximal 6 Sekunden gebraucht werden.

© freiesMagazin GNU FDL Ausgabe 10/2009 46


M AGAZIN

Das heißt ein kompletter Testdurchgang mit 100 Weihnachten ein kleines Geschenk machen Lesen der Spieledateien übernimmt, nimmt den
Kartenstapeln auf einem Spielbrett sollte maxi- können. Alle Einsendungen sollten per E-Mail größten Teil des Archives ein.
mal 10 Minuten dauern. bis zu diesem Stichtag bei der Redaktion un-
Im Verzeichnis robots-engine_dir findet man
ter eingegangen
Preisgelder die Bibliotheken in Ordnern, die nach Basis
sein. Programme, die uns später erreichen, kön-
Die vier Kategorien sind jeweils mit einem Buch- (libbase), Roboter (libbot), Karten (libcards)
nen leider nicht mehr beachtet werden.
gutschein in folgender Höhe dotiert: und Spielfelder (libtiles) aufgeteilt sind.
Preisgelder Es ist erlaubt, dass ein Teilnehmer seine einge- Der Quellcode unterliegt der GNU Lesser Gene-
Stufe Preisgeld
sandte KI mehrfach ausbessert. Wir geben ger- ral Public License (LGPL) [6], damit eine Verwen-
leicht 10 Euro
ne Hinweise auf etwaige Fehler der KI (bezogen dung der erstellten Bibliotheken erlaubt ist, oh-
normal 20 Euro
auf den Quellcode, nicht auf falsche Entscheidun- ne dass man den eigenen Quellcode wieder un-
schwer 30 Euro
gen). Informationen über die Leistung der eige- ter der LGPL veröffentlichen muss. Das heißt, ei-
3-D-Spielbrett 50 Euro
nen KI im Vergleich zu anderen Teilnehmern wer- ne KI, die auf libbot zugreift, um die Roboter-
den aber nicht vorab veröffentlicht. Dateien auszulesen, darf beispielsweise unter
Gewinner der BSD-Lizenz vertrieben werden. Würde der
Die einzelnen KIs treten auf verschiedenen (bis Referenzimplementierung
Quellcode unter der GPL veröffentlicht werden,
nach Ende des Wettbewerbs geheimen) Spiel- Um seine eigene KI testen zu können, benö- hätte das Endprodukt, das die Bibliothek nutzt,
brettern mit zuvor berechneten Kartenstapeln an. tigt man die Dateien, die später den Wettbewerb auch unter der GPL veröffentlicht werden müs-
In die Bewertung fließt zunächst ein, ob der Ro- verwalten werden. Das gesamte Paket kann als sen, was eine zu große Einschränkung wäre.
boter das Ziel erreicht hat oder vorher zerstört Tar-Archiv [5] heruntergeladen werden und muss
wurde. Erreicht er das Ziel, fließt noch die Anzahl nach dem Entpacken mit Wer natürlich Teile des Quellcodes aus der En-
der Züge bzw. Runden in die Bewertung mit ein. gine benutzen und abändern oder ergänzen
Es ist also sehr positiv, wenn ein Roboter in mög- $ make möchte, kann dies auch tun, ist dann aber an ei-
lichst wenigen Runden das Ziel sicher findet. ne Veröffentlichung des Gesamtwerkes unter der
kompiliert werden. LGPL gebunden.
Bei dem 3-D-Spielbrett ist die Wahl des Gewin-
ners etwas schwieriger, da Aussehen immer im Das Paket setzt sich aus verschiedenen Bestand- Nach der Erstellung mittels make findet man die
Auge des Betrachters liegt. Wir versuchen aber teilen zusammen, wovon ein Großteil in C++ pro- Datei robots-engine im Hauptordner, die man
die Einsendungen objektiv zu bewerten. Der Teil- grammiert ist. Das Paket build-essential und wie folgt aufrufen kann:
nehmer mit dem schönsten 3-D-Spielbrett ge- dessen Abhängigkeiten sollten auf alle Fälle in-
winnt. stalliert sein, um die Programme kompilieren zu $ ./ robots - engine save DECKNAME
können.
Wettbewerbsdauer Dies erstellt einen zufälligen Kartenstapel und
Der Wettbewerb begann am 27. September Spiele-Engine speichert diesen als Datei DECKNAME ab. Wer
2009 und endet am 13. Dezember 2009, so- Die Dateien der Engine, dass heißt der Verwal- gleich mehrere Kartenstapel erstellen möchte,
dass wir den Gewinnern hoffentlich noch zu tung, die die KI ausführt und das Schreiben und kann dies mit einem einfachen Skript erledigen:

© freiesMagazin GNU FDL Ausgabe 10/2009 47


M AGAZIN

(dies liegt in leicht abgewandelter Form auch als Als letztes Argument kann man optional (daher man mit dem eigenen Bot spielen, passt man ein-
Datei create_decks vor): die eckigen Klammern) auch die Spielstufe mit fach die Zeile
angeben. Standardwert ist „normal“. Ein Beispiel:
#!/ bin/bash ./ KIs/robots -ki - reference $1
mkdir -p decks $ ./ robots - engine load y
gameboards /chop.dat decks/y entsprechend den eigenen Wünschen an.
# create decks 0 - 99 carddeck0 .dat easy Hat man eine Runde über die Option start
for (( I=0; $I <= 99; I++ )) ausgeführt, findet man die oben erwähnte Datei
do Wenn man das Spielbrett und Kartenstapel gela- sequence.txt im Ordner. In dieser findet man
echo "./ robots - engine save y den hat, kann man eine Runde (nicht das gesam- die Bewegungssequenz wieder.
decks / carddeck$I .dat" te Spiel!) per
./ robots - engine save decks/y Ein komplettes Spiel kann man durchführen,
carddeck$I .dat $ ./ robots - engine start [easy|y wenn man die Engine solange startet, bis der
sleep 2 normal |hard] Bot am Ziel ist, zerstört wurde oder keine Karten
done mehr auf dem Kartenstapel liegen.
laufen lassen. Die Spielstufe sollte dabei am bes-
Listing 2: create_decks Referenz-KI
ten mit der bei load angegebenen übereinstim-
Die Referenz-KI im Ordner KIs/robots-ki_dir
men.
In dem Fall wird erst ein Verzeichnis decks er- soll nur grob veranschaulichen, wie man die Bi-
stellt und dann 100 Kartenstapel darin gespei- Nach dem Aufruf wird intern das im Ordner lie- bliotheken der Spiele-Engine nutzen kann, um
chert. Die zwei Sekunden Wartezeit sind dafür gende Skript bot-ki gestartet: mit deren Hilfe eine KI aufzubauen.
da, dass die Zufallszahlen (die von der Uhrzeit
Die KI selbst ist sehr dumm, denn sie wählt im-
abhängig sind) neu berechnet werden. #!/ bin/bash mer nur die ersten fünf der acht zur Auswahl ste-
Im Ordner gameboards findet man das Referenz- henden Karten aus. Das sorgt dafür, dass der Ro-
# Reference boter nur per Zufall ins Ziel findet.
Spielbrett chop.dat. Man kann nun entweder
./ KIs/robots -ki - reference $1
dieses Spielbrett alleine laden, sodass ein zufäl-
Die Referenz-KI wird unter der GNU General Pu-
liger neuer Kartenstapel erzeugt wird oder man
retVal =$? blic License [7] veröffentlicht.
benutzt einen der über obiges Vorgehen gespei-
cherten Kartenstapel: Es ist aber möglich, innerhalb von wenigen Stun-
exit $retVal
den mit Hilfe der Bibliotheken eine KI zu schrei-
$ ./ robots - engine load y Listing 3: bot-ki ben, die auch auf der Stufe „schwer“ den Robo-
BOARDNAME [easy| normal |hard] ter sicher ins Ziel bewegt. Diese zweite Referenz-
$ ./ robots - engine load y Dies ruft also einfach nur die jeweilige KI (hier die KI von Dominik Wagenführ wird aber erst nach
BOARDNAME DECKNAME [easy| normaly Referenz-KI) im Ordner KIs auf. Als Argument Beendigung des Wettbwerbs veröffentlicht, sonst
|hard] $1 wird dabei die Spielstufe übergeben. Möchte wäre die Teilnahme zu einfach.

© freiesMagazin GNU FDL Ausgabe 10/2009 48


M AGAZIN

Grafische Oberfläche Spielbretter


Dominik Honnef hat für den Wettbewerb eine gra- $ ./ start_contest GAMEBOARDS [y
Es ist relativ leicht, neue Spielbretter zu erstellen.
fische Oberfläche (GUI) in Ruby geschrieben, mit easy| normal |hard]
Einfach eine Textdatei anlegen, in die erste Zei-
der man die Bewegungen des Roboters schöner le die Breite und Höhe des Spielbretts eintragen
verfolgen kann.
GAMEBOARDS ist dabei eine Auflistung aller Spiel-
bretter, die benutzt werden sollen. Als Kartensta- und darunter dann die einzelnen Spielfelder mit
Aufgrund der Größe des Artikels, haben wir die pel werden alle Dateien im Ordner decks benutzt obigem ASCII-Code angeben. Bis auf die Wän-
Anleitung in den extra Artikel „Die GUI zum Pro- (den zum Beispiel das Skript create_decks zu- de sind die Codes für alle Felder ziemlich leicht
grammierwettbewerb“ auf Seite 51 ausgelagert. vor angelegt hat). Ein Beispiel: zu erlernen.

Wettbewerb starten $ ./ start_contest " gameboards /y Ein Spielbrett sollte (für die GUI-Anzeige) nicht
Wer den Wettbewerb starten will, kann das Skript chop.dat gameboards / board2 .dat"y größer als 12x12 Felder sein, da die GUI auf die-
start_contest benutzen: hard se Größe beschränkt ist.
#!/ bin/bash Spielbrett-Editor
GAMES=$1 Erweiterungen
Wer Lust hat, kann auf Basis der Ruby-GUI oder
DECKS=‘find decks -name "*. dat" | y Da der Wettbewerb so offen wie möglich ge-
sort ‘ als Eigenentwicklung einen Spielbrett-Editor
halten wird, kann natürlich auch jeder Nicht-
LEVEL=$2 schreiben, in welchem man per Drag & Drop die
Teilnehmer etwas beitragen, wenn er möchte. Es
Felder auf ein Spielbrett setzen kann und dieser
werden hier einige Möglichkeiten vorgestellt, wie
date das Ergebnis dann als ASCII-Datei nach obigem
man etwas beitragen kann.
for GAME in $GAMES Schema abspeichert.
do Themen
for DECK in $DECKS Im Ordner images findet man die Themen, die Es gibt bereits einen Spielfeldeditor für das Ori-
do für die Spielbrettanzeige genutzt werden können. ginalspiel RoboRally [8], der aber für Windows
echo "./ robots - contest y Wer selbst ein neues Thema erstellen möchte, geschrieben wurde. Damit lassen sich aber auch
$GAME $DECK $LEVEL " legt einfach ein neues Verzeichnis in diesem Ord- über Wine neue Spielfelder erstellen und ausdru-
./ robots - contest $GAME y ner an und speichert die selbst erstellten Bilder cken.
$DECK $LEVEL der 31 Felder plus jeweils ein Bild für den Robo-
done Eine Schnittstelle für den Wettbewerb gibt es
ter und den Cursor dort ab. Die Felder müssen
done aber nicht und der Editor ist auch nicht Open
dabei eine Größe von 64x64 Pixeln haben. Der
date Source.
Roboter und der Cursor müssen einen transpa-
exit 0 renten Hintergrund haben. Spielfelder
Listing 4: start_contest Das neue Thema wird automatisch vom GUI- Neben den obigen Spielfeldern kann man
Starter erkannt und kann dort ausgewählt wer- sich natürlich noch zahlreiche neue Felder
Der Aufruf ist wie folgt: den. ausdenken, deren Funktion man in die Engine

© freiesMagazin GNU FDL Ausgabe 10/2009 49


M AGAZIN

einprogrammieren müsste. Als Beispiele seien Der Phantasie sind keine Grenzen gesetzt. [2] http://www.wizards.com/default.asp?x=ah/prod/
genannt: roborally
Eine sehr gute Auflistung weiterer Spielfelder fin- [3] http://de.wikipedia.org/wiki/Isometrische_
 Teleporter: Teleportiert einen Roboter von ei- det man auf den Seiten WarpZone [9] und Robo- Darstellung
nem Feld zu einem anderen. Factory [10]. Dort sind auch gleich zahlreiche [4] http://www.opensource.org/licenses/category
 Fallgrube: Öffnet zu bestimmten Zeiten (z. B. Spielbretter abgelegt, die diese neuen Elemente
[5] http://freiesmagazin.de/ftp/2009/freiesMagazin-
jede 2 und 4 Phase einer Runde) ein Loch im nutzen.
2009-10-wettbewerb.tar.gz
Boden. [6] http://www.gnu.org/licenses/lgpl.html
 Schiebetür: Öffnet und schließt sich nur zu be- Schlussbemerkungen
[7] http://www.gnu.org/licenses/gpl.html
stimmten Phasen. Wir wünschen allen Teilnehmern viel Erfolg und
[8] http://www.roborally-editor.net/german/
 Laser: Wie im Originalspiel RoboRally nimmt freuen uns auf zahlreiche Einsendungen. „Let the
games begin . . . “ [9] http://www.randomdice.com/games/roborally/
ein Roboter Schaden, wenn er im Strahl eines rrboardelement.asp
Lasers stehen bleibt. Quellcode: per FTP oder per HTTP. [10] http://www.robofactory.de/pages/content/rules.
 Reparaturkit: Wie im Originalspiel, auf dem der htm
Roboter wieder repariert wird. L INKS
 Einbahnstraße: Der Roboter kann nur in diese [1] http://www.freiesmagazin.de/20090401-
Diesen Artikel kommentieren
Richtung ein Feld betreten und verlassen. programmierwettbewerb-gestartet

„Forks and Spoons“ © by Randall Munroe (CC-BY-NC-2.5), http://xkcd.com/419

© freiesMagazin GNU FDL Ausgabe 10/2009 50


M AGAZIN

Die GUI zum Programmierwettbewerb


a beim letzten Programmierwettbe- Hinweis: Die Paketbezeichnungen stammen von den sollte, werden deren Optionen hier nicht nä-

D werb von freiesMagazin im April die-


ses Jahres [1] einige Nutzer nach einer
grafischen Oberfläche (GUI) fragten, um das
Debian/Ubuntu und können/werden unter ande-
ren Distributionen variieren. Unter Arch Linux gibt
es beispielsweise keine extra dev-Pakete. Hier
her erläutert. Den GUI-Starter ruft man per

$ ./ robots -gui - helper


Geschehen besser verfolgen zu können, hat hilft ein Blick in die offizielle Installationsanlei-
auf. Im Standardfall kann man nun bereits auf
Dominik Honnef diese für den anstehenden tung [6] weiter.
„Spiel starten“ klicken und die Referenz-KI sollte
Wettbewerb (siehe „Erklärungen zum zweiten
Nach der Installation der Pakete installiert man den Roboter bewegen.
Programmierwettbewerb“ auf Seite 42) umge-
die Gosu GUI Library mit Root-Rechten über
setzt. Die GUI ist dabei als Programmier- und
Die Einstellungen im Starter sind fast alle selbst-
Visualisierungshilfe gedacht und wird nicht # gem install gosu erklärend. Es soll hier nur auf die Optionen ein-
zwingend für eine Teilnahme benötigt.
gegangen werden, die nicht offensichtlich sind.
Falls gefragt wird, welches gosu-Paket installiert
Anforderungen werden soll, wählt man am besten gosu 0.7.14
Für die Umsetzung wird Ruby [2], Ruby- (ruby) aus. Falls eine Fehlermeldung der Art
Gnome2 [3], RubyGems [4] und die Gosu Game
Development Library [5] benutzt. Daher muss ERROR: While executing gem ...y
man ein paar Ruby-Pakete (und deren Abhängig- (Gem :: GemNotFoundException )
keiten) installieren: Could not find gosu (> 0) y
in any repository
 ruby bzw. ruby1.8
 rubygems kommt, sollte man die Installation einfach wieder-
 libgtk2-ruby bzw. libgtk2-ruby1.8 holen, bis das Paket gosu gefunden wird.

Daneben benötigt man noch einige Entwickler- Nach der Kompilierung von Gosu kann man
Bibliotheken, um die Gosu GUI kompilieren zu die Entwicklerpakete wieder deinstallieren. Ruby
können: und Co. müssen natürlich installiert bleiben.

 g++
 libgl1-mesa-dev GUI-Start
Die grafische Oberfläche besteht aus zwei Teilen:
 libpango1.0-dev
zum einen aus der Oberfläche für alle Einstellun-
 libboost-dev gen des Spiels „robots-gui-helper“ und zum ande-
 libsdl-mixer1.2-dev ren aus der Oberfläche für das Spielbrett „robots- Das Hilfsprogramm „GUI-Starter“ zur
 ruby1.8-dev gui“. Da die „robots-gui“ nie direkt gestartet wer- Vorbereitung der GUI.

© freiesMagazin GNU FDL Ausgabe 10/2009 51


M AGAZIN

Über „Neues Spiel starten“ kann man einstellen, Alternativ gibt es noch eine handgemalte Version
ob der Roboter von seiner letzten Position aus im Ordner images/pen. Diese wurde von Do-
der Datei bot.txt oder von der Startposition auf minik Wagenführ erstellt. Die Bilder unterliegen
dem Spielbrett starten soll. Zusätzlich wird das der CreativeCommons-Lizenz „Namensnennung-
Spielfeld und der Kartenstapel nicht neu eingele- Weitergabe unter gleichen Bedingungen 3.0
sen, wenn der Haken nicht gesetzt ist. Auf diese Deutschland“ [8].
Art kann man unterbrochene Spiele fortsetzen.
Entfernt man den Haken bei „Spiel animieren“,
läuft der Roboter nicht über das Spielfeld, son-
dern das Spiel wird bis zum Ende berechnet, der
Roboter also das Ziel gefunden hat oder zerstört
wurde. Erst dann wird die Anzeige freigeschaltet Eine gute KI würde wohl eher diesen Weg
und man sieht den Roboter an der Endposition. wählen.
Mit „Spiel starten“ startet man das Spiel und Über einen Klick auf den Eintrag „Pause“ kann
kann dem Roboter bei der Bewegung zuschauen. man das Spiel kurz unterbrechen, „Neustart“
Dieser hinterlässt eine transparente grüne Spur startet das Spiel von vorne (bei einem zufälli-
(Nein, er verliert kein Öl!), mit der man sehen gem Kartenstapel wird ein neuer zufälliger aus-
gewählt). Mit „Beenden“ verlässt man die GUI Die beiden vorinstallierten Themen.
kann, welche Felder er wie häufig betreten hat.
Mit den Tasten + und - kann man die Bewe- und landet wieder im GUI-Starter. L INKS
gungsgeschwindigkeit des Roboters verändern. Hinweis: Die GUI hat eine Größe von 1024x768 [1] http://www.freiesmagazin.de/20090401-
Pixeln. Das heißt, um sie sinnvoll nutzen zu kön- programmierwettbewerb-gestartet
nen, sollte die Bildschirmauflösung größer als [2] http://www.ruby-lang.org/de/
1024x768 sein oder man muss im GUI-Starter [3] http://ruby-gnome2.sourceforge.jp/de/
einstellen, dass das Programm im „Vollbildmo-
[4] http://gems.rubyforge.org/
dus“ starten soll. Dann werden die Grafiken auf
[5] http://www.libgosu.org/
eine kleinere Auflösung herunterskaliert.
[6] http://ruby-gnome2.sourceforge.jp/hiki.cgi?
Die Spielbrett-Themen Install+Guide
In der GUI gibt es (derzeit) zwei Themen zur Aus- [7] http://www.gnu.org/licenses/fdl.html
wahl. [8] http://creativecommons.org/licenses/by-sa/3.0/
de/
Das Standardthema im Ordner images/new wur-
de von Arne Weinberg erstellt. Die Bilder unter-
Ein Testlauf mitsamt Spur des Roboters. liegen der GFDL [7]. Diesen Artikel kommentieren

© freiesMagazin GNU FDL Ausgabe 10/2009 52


M AGAZIN

FAQ zum Programmierwettbewerb


a der zweite Programmierwettbewerb Kann man eine Schrottpresse oder einen teres, aber andere Richtung zeigendes För-

D vor einer Woche, am 27. September


2009, startete [1], gab es in der Zeit
schon zahlreiche Fragen, weil die Anleitung
Schieber von allen vier Seiten betreten?

Nein, eine Schrottpresse und auch die Schie-


ber haben an der jeweiligen Seite, an der der
derband gelangt: Wird man dann auch ge-
dreht?
Ja, derzeit wird der Bot auch gedreht, wenn
an einigen Stellen nicht detailliert genug ist.
Schieber steht, eine Wand und können von dort er von einem Fließband über eine Ölspur auf ein
Aus dem Grund gibt es bereits jetzt eine Liste
nicht befahren oder verlassen werden. anderes Fließband geschoben wird. Das klingt et-
mit den Fragen und Antworten, da der Artikel
was ungewöhlich, aber ist so umgesetzt
im Magazin nicht so kurzfristig geändert wer- Wird man beim Rutsch durch ein Ölfeld auf
den konnte. das am letzten Ölfeld angrenzende Feld ge- Wie groß werden die Spielfelder sein? Si-
setzt oder bleibt man auf dem letzten Ölspur- gnifikant größer als die chop.dat?
Hinweis: Die Webseite mit den Details zum Wett-
feld stehen? Die Wettbewerbsspielfelder werden voraus-
bewerb wurde bereits entsprechend geändert [2].
Es wurde aber auch eine extra Beitrag mit diesen Man landet auf dem letzten Feld nach der Öl- sichtlich alle eine Größe von 12x12 Felder ha-
Fragen verfasst, der ständig aktualisiert wird [3]. spur (soweit kein anderes Objekt einen vorher ben.
stoppt). Es gibt das Leerzeichen für ein leeres Feld
Fragen zu Spielfeldern
Falls zwei Förderbänder in der Richtung und es gibt das Zeichen a für ein Feld ohne
Wie wahrscheinlich treten die einzelnen Wände. Stellen diese zwei Zeichen das glei-
Elemente auf? Werden diese zufällig erstellt? aufeinander zeigen und man wird von einem
auf das andere Band geschoben, wird man che dar oder gibt es irgend einen Unterschied
Die Spielbretter sind alle handgemacht, daher dann um 180° gedreht? zwischen diesen Feldern?
gibt es keine Wahrscheinlichkeit, mit der ein be- Nein, die Felder sind identisch. Der Grund ist
stimmtest Spielfeld auftaucht. Nein, wird man nicht. Das mit der Drehung auf
einfach, dass die erste (linke) Wand nicht bei b
den Förderbändern kommt daher, dass diese „un-
anfangen sollte. Wenn also ein a gelesen wird,
Verhält sich ein Schieber, der in Richtung trennbar“ verbunden sind und eigentlich grafisch
ist das wie ein leeres Feld.
einer direkt am Schieberfeld angrenzenden einen Bogen beschreiben sollte. Das war aber zu
Wand zeigt, wie eine Schrottpresse? umständlich zu realisieren. Stellt man es sich in Wenn der Roboter das erste Feld eines
real vor, wird man auf einem Gepäckförderband langen Förderbandes betritt, wird er dann bis
Nein, denn der Bot ist maximal ein halbes
auch gedreht, wenn es um die Kurve geht. Aber ganz ans Ende geschoben?
Feld breit. Ein Schieber geht genau bis zur Hälf-
man wird sicherlich nicht gedreht, wenn man auf
te eines Feldes. Das heißt, wenn der Schieber Nein, der Roboter wird pro Phase (also nach
einem Förderband steht, was gegen ein anderes
komplett ausgefahren ist, dotzt der Bot leicht ge- dem Ausspielen einer einzelnen Karte) nur im-
läuft. Da fällt man maximal um.
gen die Wand, aber es passiert nicht Schlimmes. mer ein Feld auf dem Förderband geschoben
Wenn keine Wand da ist, reicht der Schwung Per Förderband gelangt man auf ein Ölfeld, und nicht bis ans Ende. Das hat vor allem den
aber aus, damit er auf das nächste Feld rutscht. nach dessen Durchrutschen man auf ein wei- Grund, dass es auch Förderbänder geben kann,

© freiesMagazin GNU FDL Ausgabe 10/2009 53


M AGAZIN

die im Kreis fahren. Der Roboter würde so nie In der Datei cards.txt scheinen nicht nur Ja, es wäre gut, wenn zum Beispiel auch ein
mehr stillstehen blieben. die 8 Karten zu stehen, aus denen man aus- 100x100-Spielbrett dargestellt werden könnte.
wählen kann, sondern der ganze restliche Sta-
Wenn der Roboter auf eine Wand zu- Darf die 3-D-Darstellung voraussetzen,
pel. Darf die KI diese Information benutzen?
fährt, verfallen dann überflüssige Bewegun- dass bestimmte Pakete installiert sind, wie
gen oder ist der Zug dann einfach nicht mög- Genau genommen ist es sogar die Aufgabe z. B. die wxWidgets-Bibliothek oder verschie-
lich? der KI, die Datei cards.txt einzulesen. Aber: dene OpenGL-Bibliotheken?
Wenn der Roboter ein Feld vor einer Wand Wenn die KI dran ist, stehen in der Datei nicht
mehr alle Karten des Stapels, sondern nur die Natürlich wird man für die grafische Darstel-
steht und über die Karte MF 3 drei Schritte vor-
8, die zur Auswahl stehen. Es gibt daher für die lung auf vorhandene Bibliotheken zurückgreifen
wärts fahren soll, fährt er einen Schritt und die
KI keine Möglichkeit alle Karten komplett einzu- müssen. Die Mesa-Bibliotheken, wxWidgets 2.8
zwei anderen verfallen.
lesen – zumindest wenn die Engine keine Lücke und andere unter neuen Linux-Distributionen vor-
Wenn man direkt vor ein Ölspur steht und hat. handenen Bibliotheken sind dabei kein Problem.
drei Felder mit MF 3 nach vorn geht, wo landet
man? Fragen zur 3-D-Oberfläche Allgemeine Fragen
Man macht einen Schritt, rutscht bis auf das Inwiefern soll das 3-D-Spielbrett wirklich Ist der Wettbewerb nur für natürliche Per-
erste Feld nach der Ölspur und geht dann noch 3-D sein? Ist damit nur isometrische Darstel- sonen oder kann man auch als Verein daran
zwei Schritte weiter. lung gedacht? teilnehmen?

Fragen zur Schnittstelle Es ist sowohl richtiges 3-D (also mit frei be- Es ist durchaus möglich, auch als Verein teil-
Ist es erlaubt, dass der Bot während des weglicher Kamera), als auch 3-D in isometrischer zunehmen, jedoch muss man sich den Preis
Spiel Dateien schreibt, um sich bisschen was Ansicht sowie 2-D mit isometrischer Ansicht ge- dann natürlich untereinander aufteilen.
zu merken? meint.
Wie kann man auf die Bibliotheken (also
An Dateien darf man abspeichern, was man z. B. die libcards.a) in C zugreifen?
Reicht eine isometrische Darstellung aus
möchte, natürlich.
oder soll noch eine weitere (und wenn ja was
In C gar nicht, nur in C++, da die Li-
Wenn schon nur 6 Sekunden pro Spiel zur für eine) Darstellung existieren?
brary Klassen enthält und keine Funktionen.
Verfügung stehen, gibt’s dann eventuell ein
Es wäre ggf. nicht falsch, wenn man alle vier Am besten schaut man sich für eine Verwen-
wenig Vorlaufzeit für jedes neue Spielfeld?
Standardansichten der isometrischen Perspekti- dung das Makefile der Referenz-KI im Ord-
Also 6 Sekunden sind schon sehr großzügig – ve wählen kann oder gar frei rotieren und zoo- ner KIs/robots-ki_dir an. Theoretisch muss
natürlich auf dem späteren Testrechner. Wer sei- men. man nur die Header-Dateien per #include
ne KI auf einem 486er schreibt, wird wohl auch "NAME.hh" in die jeweilige C++-Datei einbinden
mit 20 Sekunden Ausführungszeit am Wettbe- Soll die Kartengröße des 3-D-Spielbretts und dann beim Kompilieren die jeweilige Library
werb teilnehmen können. beliebig groß sein können? mit angeben über

© freiesMagazin GNU FDL Ausgabe 10/2009 54


M AGAZIN

oder schlechter abschneidet. Eine Einbeziehung „Überrollen“ reicht. Sobald das Zielfeld einmal
$ g++ -I./ libbase -I./ libcards -c y aller KIs, die nur außer Konkurrenz teilnehmen, befahren wurde, endet das Spiel.
main.cpp
würde den Testaufwand auf unserer Seite wahr-
$ g++ -o ki.bin main.o -L./ libbase y
scheinlich zu sehr erhöhen. Beim Starten der GUI bekomme ich einen
-L./ libcards -lcards -lbase
Wer seine 3-D-Oberfläche außer Konkurrenz ein- Fehler der Art „invalid multibyte char “. Was
Darf man außer Konkurrenz auch an reichen will, kann dies aber gerne tun. Wir stel- soll ich tun?
den anderen Wettbewerbskategorien teilneh- len diese dann vor, sie kann aber nicht gewinnen,
men? wenn der Teilnehmer bereits in einer anderen Ka- Die GUI setzt Ruby in der Version 1.8.x voraus,
tegorie vertreten ist. mindestens jedoch 1.8.6. – Mit Ruby 1.9 funktio-
Da der Wettbewerb offen geführt und die spä- niert die Anwendung nicht.
tere Wertung auch nicht geheim gehalten wird, Muss das Ziel nur „überrollt“ werden oder
kann jeder daheim bei sich selbst nachvollziehen, muss die Bewegung direkt auf dem Ziel en-
ob seine KI in einer anderen Kategorie besser den? Diesen Artikel kommentieren

„Electric Skateboard (Double Comic)“ © by Randall Munroe (CC-BY-NC-2.5), http://xkcd.com/409

© freiesMagazin GNU FDL Ausgabe 10/2009 55


L ESERBRIEFE

Leserbriefe
Für Leserbriefe stehtunsere E-Mailadresse der Sackgasse“ [1]. Herr Brühlmeier stellt darin den sollen. Der Gedanke scheint absurd? Dann
zur Verfügung – wir sehr gut klar, wo der Unterschied zwischen biolo- lest mal die Satzung des Versorgungswerks der
freuen uns über Lob, Kritik und Anregungen zum gischem Geschlecht und grammatikalischem Ge- Rechtsanwälte in Berlin, denn dort wird es so ge-
Magazin. nus liegt. handhabt, vgl. §4 „Die Bezeichnungen der Orga-
ne können auch in männlicher Form geführt wer-
An dieser Stelle möchten wir alle Leser ausdrücklich So sind mit „Liebe Leser“ sowohl männliche als den“ [2]. M. Schinagl
ermuntern, uns auch zu schreiben, was nicht so gut auch weibliche Leser korrekt angesprochen, da
gefällt. Wir bekommen sehr viel Lob (was uns natür- das Wort Leser zwar grammatikalische männ-
lich freut), aber vor allem durch Kritik und neue Ideen Ich möchte darauf hinweisen, dass die meis-
lich ist, dies aber nicht auf das biologische Ge- ten deutschen Begriffe wie Leser, Fußgänger,
können wir uns verbessern. schlecht des Lesers hinweist. Lehrer etc. androgyn sind. Sollten Sie Ihre Ein-
Leserbriefe und Anmerkungen Ich empfehle die Lektüre des Artikels jedem, dem stellung, die Sie zur Zeit vertreten, ändern, fügen
Frau gegen Mann der Erhalt der deutschen Sprache am Herzen Sie sich einem öffentlichen Druck, der gar nicht
Meine Meinung – als Mann – zur Frage der liegt und hoffe, ich konnte etwas zur Lösung existiert und machen sich, ich möchte fast sagen
Geschlechsneutralität ist, dass es ein nicht zu der (meiner Meinung nach aus Fehlinformatio- . . . lächerlich.
rechtfertigender Aufwand ist die LeserINNEN se- nen aufgestellten) Frage nach der Geschlechts- Genaugenommen ist „Leser“ geschlechterneu-
parat aufzuführen, wo doch die Intention so klar neutralität beitragen. Gordon Schultz tral, während „Leserinnen und Leser“ eine Wer-
ist. Meiner Meinung nach ist dies auch gram- tung enthält. Die Person, von der die Beschwer-
matikalisch zu rechtfertigen, denn die männliche Ich bitte Sie hiermit, auch in Zukunft kei- de kam, meinte es zwar gut, kannte aber wohl
Form eines Nomens ist imho geschlechtsneutral ne „geschlechterneutrale Sprache“ zu verwen- diesen wundervollen Artikel nicht: „Sprachfemi-
deklariert. Martin Weinelt den und verweise auf den Unterschied zwischen nismus in der Sackgasse“ [1]. Frank
Genus, dem grammatischen Geschlecht, und Se-
In der aktuellen Ausgabe stößt es mir schon xus, dem biologischen Geschlecht. In Ihrer Ausgabe 09/2009 stellen Sie die
beim Lesen des Editorials etwas sauer auf. Mathias Linkerhand Frage, ob ein Verzicht auf geschlechterneutrale
Ihr fragt, ob Ihr Eure Artikel geschlechtsneutral
Sprache Ihrem weiblichen Publikum zuzumuten
schreiben sollt. Ihr verwendet die Formulierung Leser all- sei. Als Teil dieser weiblichen Leserschaft lautet
gemein und meint damit auch die Leserinnen. meine Antwort: Ja, unbedingt!
Nun stelle ich mir die Frage, wo das denn bisher
Wie wäre es, stattdessen stets die Formulierung
nicht eingehalten wurde.
Leserinnen zu verwenden und damit auch die Und als Studentin der Germanistik und großer
Da ich fachlich sicher nicht ausreichend Wissen männlichen Leser zu meinen? Es ist doch kein Liebhaberin der deutschen Sprache möchte ich
habe, um dies genau zu erklären bzw. zu begrün- Geheimnis, dass zu wenig Frauen sich für Linux- dazu noch anmerken, dass diese geschlechter-
den, verweise ich nur auf einen Artikel von Arthur Themen interessieren. Damit würde klargestellt, neutralen Formulierungen für mich ganz eindeu-
Brühlmeier mit dem Titel „Sprachfeminismus in dass Frauen auf jeden Fall angesprochen wer- tig in die Kategorie „Vergewaltigung der deut-

© freiesMagazin GNU FDL Ausgabe 10/2009 56


L ESERBRIEFE

schen Sprache“ fallen. Nicht nur, dass es aus rein Mein erster Gedanke dazu war: „Ach nee, pel weg. Es geht mir als Frau entsetzlich auf die
ästhetischer Sicht eine Zumutung ist, ein „Leser- nicht Ihr auch noch“. Nerven.
Innen“ im Fließtext zu betrachten oder gar visuell
Ich finde, dies ist in Wirklichkeit nicht die Frage Frauen sind zum größten Teil gleichberechtigt
über ein unnötig angehängtes „und Leserinnen“
„Frau gegen Mann“ sondern „Leserlichkeit kontra heutzutage und z. T. werden sie sogar bevorzugt
zu stolpern – ich halte diese Hervorhebung der
femifaschistische Propaganda“. Umsonst werden behandelt. Wenn jemand dann auch noch auf
weiblichen Form schlicht für unnötig. Nicht nur
solche Dinge wie z. B. [dieses Firefox-Plugin] [3], so einen Schrott bestehen muss, frage ich mich
im Deutschen ist es Usus, bei der Ansprache ei-
um Texte wieder leserlich zu machen, wohl kaum wirklich, ob da überhaupt ein vernünftiges Selbst-
ner geschlechtlich heterogenen Masse die männ-
angeboten. bewußtsein vorhanden ist.
liche Form zu gebrauchen. Wenn der Feminis-
mus auch in heutiger Zeit ernst genommen wer- Außerdem kennt man ja mittlerweile die Aus-
Und ja, man hat mir schon mehrmals vorgewor-
den möchte, sollte er künftig von solchen alber- wüchse des Genderwahns und ich bin es schlicht
fen, ich würde die Emanzipation kaputtmachen
nen Forderungen absehen. Franziska Pfeiffer leid, Dinge wie z. B. [dieses Bild] [4] ertragen zu
und diejenigen haben das tatsächlich ernst ge-
müssen. Und das Binnen-I war der erste Schritt
meint! Ich muss sagen, wenn die Emanzipation
Ich will nur zwei „Dankeschöns“ (und Danke- dazu. Principiis obsta!
von sowas abhängt, dann ist sie keine. Ich arbei-
schöninnen?) loswerden: Das erste betrifft Eu-
Ich ersuche daher, im Sinne der Lesefreundlich- te in einer reinen Männergruppe in der IT und bin
er Magazin im allgemeinen und das zweite eu-
keit zu entscheiden. Zumindest drei Leser (mich dort genauso akzeptiert wie jeder von den Jungs.
re Entscheidung zu dem strittigen Thema. End-
und zwei Bekannte, die genauso denken) würdet Das nenne ich Emanzipation, und zwar von bei-
lich Menschen, die vernünftig mit der deutschen
Ihr im Falle einer gegenläufigen Entscheidung den Geschlechtern. Jessica Borchert
Sprache umgehen . . .
verlieren. Christian Unterholzner
Das erinnert mich an einen einfach (mal wieder) Die geschlechterneutrale Sprache nimmt mitt-
herrlichen Monolog meiner Deutschlehrerin. Wir Gerade im Technikbereich fallen Frauen oft lerweile derart seltsame Formen an, dass z. B.
hatten in unserer Klasse mal wieder ein paar genug einfach unter den Tisch. Ich selbst erwar- das US-amerikanische Militär bei Drohnen, al-
Gastschüler aus Frankreich. Unsere Lehrerin be- te die weibliche Form oft schon gar nicht mehr, so „unbemannten Flugkörpern“ nicht mehr wie
trat den Raum und meinte: ich werde sowieso übersehen. Als Magazin, das ursprünglich von „Unmanned Aerial Vehicles“
sich mit Freier Software beschäftigt, fände ich es spricht, sondern mittlerweile von „Unpopulated
„Guten Morgen, allerseits . . . Oder sollte es heu- umso schöner, wenn ein gesellschaftlicher Blick Aerial Vehicles“, denn es könnte ja ebensogut
te nicht eher heißen: „Guten Morgen, liebe Schü- über den üblichen angeblich genderneutralen An- auch keine Frau darin sitzen . . .
lerinnen und Schüler!“? Egal . . . Ah, guten Mor- satz im EDV-Bereich hinaus geworfen werden
gen auch an euch . . . Oder besser „. . . liebe Gäs- würde. Wenn Ihr Euch für eine Veränderung ent- Ich persönlich halte Eure Herangehensweise für
tinnen und Gäste!“. Sagt mal, findet ihr es nicht scheiden würdet, würde ich mich sehr freuen! eine vernünftige – letztlich soll ja niemand willent-
auch zum (’tschuldigung) Kotzen, diese ständige Michaela Blomberg lich und wissentlich verletzt werden. Aber wie vie-
verbale feminine Emanzipation? Das geht zumin- le der heute lebenden Frauen fühlen sich denn
dest mir gehörig auf die Nerven . . . “ Bitte, bitte tut mir den Gefallen und lasst die- beispielsweise durch Literatur von Schiller, Goe-
Sebastian Billaudelle ses gräßliche „Leser/-innen“ und so einen Krem- the, Lessing o. Ä. verletzt – nur weil die im Traum

© freiesMagazin GNU FDL Ausgabe 10/2009 57


L ESERBRIEFE

nicht daran gedacht haben, geschlechtsneutral Ich möchte Sie zum Verzicht auf eine „ge- über aufgeregt, respektive sich ausgeschlossen
zu schreiben? schlechtsneutrale“ bzw. genderkorrekte Textge- gefühlt, als nur von den männlichen Personen die
staltung beglückwünschen. Selbst journalistisch Rede war. Sebastian Liechti
Ich bin sicherlich nicht alleine mit der Meinung,
tätig empfinde ich Unsitten wie etwa das Binnen-I
dass es noch nie geschadet hat, die Kirche im
als Verunstaltung der deutschen Sprache die das Ich kann Sie nur in aller Form bitten, diesen
Dorf zu lassen . . . Hans-Stefan Suhle
Lesen von Texten unnötig erschwert. Ich kann Unsinn nicht mitzumachen. Das ist einfach nur lä-
nicht erkennen, dass die berechtigten Anliegen cherlich und macht einen Text komplett unlesbar.
Als Mann fühle ich mich beim Lesen von
von Frauen damit nennenswert zu unterstützen In meinen Augen ist das eine Vergewaltigung der
Artikeln, deren Autoren unter Weglassung aller
wären. Trotzdem grassiert zur Zeit das Gender- deutschen Sprache. Frank Hemmerling
sprachlicher Harmonie so krampfhaft um Ge-
Fieber. Letztens konnte ich einem Printmediun
schlechtsneutralität bemüht sind, oftmals abge-
sogar schon gegenderte Adjektive lesen wie et- Vielen Dank für die zahlreichen Leserbriefe.
grenzt. Wenn also ein Artikel mit „Liebe Leser
wa „kundInnenfreunlich“! Wie man sieht, sorgt das Thema für viel Diskus-
und Leserinnen“ beginnt, interpretiere ich das als
eine Ansprache, die sich vorrangig an Frauen sionsstoff, wobei die Meinung fast durchgehend
Es bleibt zu hoffen, dass auch diese Mode vom (sowohl von unseren männlichen als auch weib-
richtet, da außer der geschlechtsneutralen An- Zahn der Zeit zermahlen werden wird und Sie bis
rede, nur die lesenden Frauen begrüßt werden. lichen Lesern) in die gleiche Richtung geht. Ei-
[dahin] standhaft bleiben. Harald Hackenberg ne Verunglimpfung durch die deutsche Sprache
Mann fühlt sich unerwünscht und fehl am Platze.
durch Binnen-Is wird es bei freiesMagazin in ab-
Als Frau fühlte ich mich bei modernen, nach po- „Der Leser“ ist „geschlechtsneutral“, da es in sehbarer Zeit nicht geben, ebensowenig wie die
litischer Korrektheit strebenden Ansprachen al- der deutschen Sprache einen Unterschied zwi- Einführung einer „geschlechterneutraleren“ Spra-
lerdings vor den Kopf gestoßen: Bei Berufsbe- schen Genus (grammatikalisches Geschlecht) che, die Frauen und Männer extra erwähnt. Der
zeichnungen, die in alten Zeiten den Männern und Sexus (biologisches Geschlecht) gibt. „Le- Hinweis auf die Unterscheidung zwischen gram-
vorbehalten waren (Schreiner, Holzfäller, Schlos- ser“ ist ein Maskulinum und daher ist der dazu- matikalischer und biologischer Bezeichung gab
ser etc.), ist der maskuline Genus ja sehr häufig gehörige Artikel eben „der“. Das ist so, das war es oft genug.
zu finden. Würde ich als weiblicher Schreiner mit so, und das wird in absehbarer Zeit auch so blei-
„Liebe Schreiner und Schreinerinnen“ angespro- ben, da können Feministen noch so sehr auf die Davon unberührt bleibt natürlich die Verbindung
chen, klänge das in meinen Ohren so, als wol- Barrikaden gehen! :) zwischen der Bezeichnung und einer realen Per-
le man explizit darauf hinweisen, dass sich un- son. Das heißt, wir werden natürlich auch in Zu-
Die Redaktion macht mit ihrer Entscheidung mei- kunft von der Leserin Eva Mustermann sprechen,
ter den Angesprochenen außer den „normalen“
ner Meinung und der Grammatik nach alles rich- wenn diese direkt gemeint ist.
Schreinern auch einige Frauen befinden – so, als
tig! Dirk Sohler (Kommentar)
wäre es etwas besonderes als Frau des Schrei- Interessant ist im Übrigen das Wort „Person“, das
nerns mächtig zu sein. grammatikalisch weiblich ist, aber natürlich auch
Ich würde es sehr begrüssen, wenn Ihr in Eu-
Beim Worte „Leserin“ hätte ich den Eindruck, da rem Magazin beide Geschlechter (also die Lese- Männer mit einschließt. Darüber hat sich aber
wolle jemand darauf hinweisen, ich sei, obwohl rinnen und Leser) berücksichtigen würdet. Meine wohl noch kein Mensch beschwert. ;)
weiblich, doch lesekundig. Ralf (Kommentar) Freundin zum Beispiel hat sich auch schon dar- Dominik Wagenführ

© freiesMagazin GNU FDL Ausgabe 10/2009 58


L ESERBRIEFE

Duden Korrektor Ein alkoholabhängiger Autofahrer. Bild können auf seiner Seite [8] herunter geladen
[Ich] kann bestätigen, dass der Duden Korrek- Jörg Zweier (Kommentar) und in eigenen (privaten und auch kommerziel-
tor sehr nützlich ist und viel mehr Fehler erkennt len) Bildern verwendet werden.
Der Roboter aus dem Film „Nr. 5 lebt“ [7] [Link
als die integrierte Lösung. Ab Version 6.0 ist auch
von der Redaktion eingefügt] bei seiner Suche Generell finde ich es sehr praktisch, wenn man
das Problem passé, dass der Computer bei der
nach einem kleinen blechernen Freund auf einer sich die Objekte, die man erstellt hat, in einer
Korrektur enorm ausgebremst wird. Also auf je-
Großbaustelle. sklicek (Kommentar) Datei speichert und nur noch in die Szenen ein-
den Fall zu dieser Version greifen, denn im Han-
bindet (so wie man es im Beispiel mit der Datei
del geistern auch noch viele 5.0-Versionen her-
Vielen Dank für die vielen Antworten. Inter- colors.inc mit den vordefinierten Farben se-
um. Flo (Kommentar)
essant ist, dass der Alkohol eine große Rolle hen kann). Dadurch kann man einmal definier-
bei den meisten Lösungen spielt. Wir interpre- te Objekte sehr leicht wieder verwenden. Man
Ratespiel tieren hier aber nichts hinein. ;) Die beiden Bei- braucht sie lediglich noch skalieren, drehen und
„Kleiner, blecherner Schrotthaufen sucht in Groß- träge mit „Wall-E“ bzw. „Nummer 5“ trafen dabei verschieben. Marcel Jakobs
baustelle Fahne fürs Leben. Was bin ich?“ [5] den Nagel fast auf den Kopf, denn es war na-
türlich der Protagonist des neuen freiesMagazin- L INKS
Ein alter Computer, ausgemistet, weil Win-
Programmierwettbewerbs gemeint (siehe „Erklä- [1] http://www.bruehlmeier.info/sprachfeminismus.
Vista nicht mehr darauf laufen wollte, sucht am
rungen zum zweiten Programmierwettbewerb“ htm
großen Schrottplatz nach einer Flasche Alkohol,
auf Seite 42). Dominik Wagenführ [2] http://www.b-rav.de/satzung.htm#s1
um die Erinnerungen an die Jahre der Windows-
Prostitution wegzuwaschen. [3] https://addons.mozilla.org/de/firefox/addon/6822
PovRay-Raytracing
Setsuna (Kommentar) [4] http://4.bp.blogspot.com/_-4sOUbNZmaw/
Beim Betrachten des Bildes von Gilles Tran
SWTcGVBAfOI/AAAAAAAAAug/cZDRxiSjBk0/
könnte einem glatt der Kitt aus der Brille flie-
Könnte eine Bierdose sein? Fahne = Alkohol- s1600-h/mannumtauschenwerbung.jpg
gen, wenn man denn eine tragen würde. (Wie
fahne, kleiner Schrotthaufen = zerdrückte Bierdo- [5] http://www.freiesmagazin.de/2009-09-05-
viel Arbeitszeit muss wohl ein versierter PovRay-
se. Daniela Wegert (Kommentar) ratespiel
Kenner investieren, um ein annähernd vergleich-
[6] http://www.imdb.com/title/tt0091949/
bares Ergebnis zu erzielen?) Marcel Jakobs,
Bin ein bald krepierender alter Rechner von herzlichen Dank für den interessanten Bericht, [7] http://www.imdb.com/title/tt0910970/
freiesMagazin, der zwischen den Druckfahnen der auch ein Beispiel beinhaltet, das zu allem [8] http://www.oyonale.com/modeles.php?lang=
von freiesMagazin nach dem ein oder anderen Überfluss auch noch auf Anhieb funktioniert und en&page=40
Fähnchen sucht – mit C-Zeichen drauf, um nicht so in der Lage ist, dem Anfänger ein kleines Er- Die Redaktion behält sich vor, Leserbriefe gegebe-
bald doch zu verrecken . . . folgserlebnis zu liefern. Stefan (Kommentar) nenfalls zu kürzen.
christoph (Kommentar)
Erstmal vielen Dank für das dicke Lob. Ich Die Leserbriefe kommentieren
Wall-E [6]. :-) [Link von der Redaktion einge- finde das Bild von Gilles Tran auch fantastisch.
fügt]. Mario (Kommentar) Unglaublich aber wahr: fast alle Objekte auf dem

© freiesMagazin GNU FDL Ausgabe 10/2009 59


M AGAZIN

Veranstaltungskalender
Messen
Veranstaltung Ort Datum Eintritt Link
Linux Info Tag Landau 10.10.2009 frei http://infotag.lug-ld.de
Ubucon Göttingen 16.10.-18.10.09 15 EUR http://www.ubucon.de
Linux-Kongress Dresden 27.10.-30.10.09 - http://www.linux-kongress.org/2009/
The OpenSolaris Developer Conference Dresden 28.10.-30.10.09 - http://www.osdevcon.org/2009
Linux Solution Day Osnabrück 29.10.2009 frei http://www.linux-solution-day.de
androidcamp Berlin 03.11.2009 frei http://androidcamp-berlin.mixxt.de/
World Usability Day Weltweit 05.11.2009 - http://www.worldusabilityday.de
OpenRheinRuhr Bottrop 07.11.-08.11.09 frei http://openrheinruhr.de
Brandenburger Linux-Infotag Potsdam 21.11.2009 frei http://www.blit.org/2009
(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
.

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.

Vorschau
freiesMagazin erscheint immer am ersten Sonntag eines Monats. Die November-Ausgabe wird voraussichtlich am 1. November unter anderem mit
folgenden Themen veröffentlicht:
 Hardwarekompatibilität unter Linux
 Testen mit Perl
Es kann leider vorkommen, dass wir aus internen Gründen angekündigte Artikel verschieben müssen. Wir bitten dafür um Verständnis.

© freiesMagazin GNU FDL Ausgabe 10/2009 60


M AGAZIN

Impressum ISSN 1867-7991


freiesMagazin erscheint als PDF und HTML einmal monatlich. Erscheinungsdatum: 4. Oktober 2009
Redaktionsschluss für die November-Ausgabe: 18. Oktober 2009 Erstelldatum: 6. Oktober 2009

Kontakt Redaktion
E-Mail Dominik Honnef Thorsten Schmidt
Postanschrift freiesMagazin Dominik Wagenführ (Verantwortlicher Redakteur)
c/o Dominik Wagenführ
Beethovenstr. 9/1 Satz und Layout
71277 Rutesheim Ralf Damaschke Yannic Haupenthal
Webpräsenz http://www.freiesmagazin.de Marcus Nelle Markus Schaub
Sebastian Schlawtow
Autoren dieser Ausgabe
Raoul Falk S.13 Korrektur
Florian E.J. Fruth S.4 Daniel Braun Raoul Falk
Martin Gräßlin S.9 Stefan Fangmeier Lukas Martini
Steve Klicek S.26 Johannes Mitlmeier Karsten Schuldt
Rainer König S.18
Marcel Jakobs S.30 Veranstaltungen
Mathias Menzer S.11 Ronny Fischer
Dominik Wagenführ S.39
Philipp Walther S.28 Logo-Design
Arne Weinberg (GNU FDL)

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

Soweit nicht anders angegeben, stehen alle Artikel und Beiträge in freiesMagazin unter der GNU-Lizenz für freie Dokumentation (FDL). Das Copyright liegt beim jeweiligen
Autor. freiesMagazin unterliegt als Gesamtwerk ebenso der GNU-Lizenz für freie Dokumentation (FDL) mit Ausnahme von Beiträgen, die unter einer anderen Lizenz hierin
veröffentlicht werden. Das Copyright liegt bei Dominik Wagenführ. Es wird die Erlaubnis gewährt, das Werk/die Werke (ohne unveränderliche Abschnitte, ohne vordere und ohne
hintere Umschlagtexte) unter den Bestimmungen der GNU Free Documentation License, Version 1.2 oder jeder späteren Version, veröffentlicht von der Free Software Foundati-
on, zu kopieren, zu verteilen und/oder zu modifizieren. Die xkcd-Comics stehen separat unter der Creative Commons-Lizenz CC-BY-NC 2.5. Das Copyright liegt bei Randall Munroe.

© freiesMagazin GNU FDL Ausgabe 10/2009 61

Das könnte Ihnen auch gefallen