ubuntuusers.de

19. Juni 2011

Conky kann von Haus aus Unmengen und durch die lua-Skripte noch mehr. Was aber nicht direkt mit einem Aufruf geht ist eine Netzwerkanzeige, wie sie IceWM in der Taskbar hat: Die Anzeige von Up- und Downloadgraph einer Karte im gleichen Monitor.

Doch Conky wäre nicht Conky, wenn man das nicht doch machen könnte. Mit {$goto x} können Elemente einer Zeile überallhin verschoben werden, auch übereinander.

Dieser Teil der Config

${goto 200} ${downspeedgraph wlan0 17,24 ff00ff ff00ff 100} ${goto 200} ${upspeedgraph wlan0 17,24 ffff00 ffff00 100} 

ergibt diese lila-gelbe Anzeige der Netzwerkauslastung

In den letzten Wochen hat sich einiges im Umfeld von Arch Linux getan, zuerst Änderungen an den initscripts, Änderungen am Blacklisting von Kernelmodulen und unter anderem auch das Wegfallen der net-tools aus der base-Gruppe. Wer also momentan eine neue Arch Linux-Installation durchführt, die aktuellsten Pakete direkt von einem Mirror installiert und anschließend versucht mit den bekannten Tools ifconfig oder route das Netzwerk einzurichten wird sich über die Fehlermeldung bash: ifconfig: Kommando nicht gefunden. wundern.

Leider hat man die Entscheidung etwas anscheinend voreilig getroffen, die Wiki-Einträge über die Netzwerkkonfiguration verweisen alle noch auf die veralteten Tools und einige Programme wie dhcpcd oder der X-Server bemängeln das Fehlen der hostname-Binary. Deshalb möchte ich diesen kurzen Artikel zum Anlass nehmen, einige der wichtigsten ifconfig und route-Befehl mit dem nun zum Standard erklärten Tool ip aus dem Paket iproute2 zeigen.

Alte Syntax Neue Syntax Erklärung
ifconfig eth0 up
ifconfig eth0 down
ip link set eth0 up
ip link set eth0 down
De/Aktivieren der Netzwerkschnittstelle eth0
ifconfig eth0 ip addr show eth0 Zeigen der IP-Adresse von eth0
ifconfig -a ip link Zeigen aller Netzerkschnittstellen
ifconfig eth0 promisc
ifconfig eth0 -promisc
ip link set eth0 promisc on
ip link set eth0 promisc off
Ein/Ausschalten des Promisc-Modus
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 ip addr add 192.168.1.1/24 dev eth0 IP-Adresse zuweisen
route ip route show Routes anzeigen
route add default gw 192.168.1.10 ip route add default via 192.168.1.10 Default Route hinzufügen
route del default ip route del default Default Route löschen
route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.100 dev eth0 sudo ip route add 192.168.2.0/24 via 192.168.1.100 dev eth0 Netzwerk Route anlegen
route del -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.100 dev eth0 sudo ip route del 192.168.2.0/24 via 192.168.1.100 dev eth0 Netzwerk Route löschen

Wer noch komplexer Beispiel zu den iproute2-Befehlen sucht, wird hier bzw. hier fündig.

    Heute Nacht ist wieder ein Update für die Besucher-Analysesoftware Piwik gekommen. Nach dem unendlich langen Prozess bis Version 1.0 geht es nun seit einiger Zeit bei Piwik in größeren Schritten voran und folgt damit einem aufkommenden Trend.

    Dieser Minorrelease ist allerdings durchaus gerechtfertigt. Bisher wurden die Besucherstatistiken in schönen Diagrammen dargestellt, die komplett auf Flash basierten. Mit dem letzten Update aber ging Piwik einen guten und modernen Schritt weiter und verwarf Flash aus der Programmoberfläche.

     

    Die Grafen werden nun mit HTML5 gerendert

    Die Grafen und Diagramme, die eine übersichtliche Ansicht der gesamten Besucherschaft darstellen, werden nun mit jqPlot und den mit HTML 5 eingeführten Canvas dargestellt. Lediglich die Weltkarte, eingeführt in Piwik 1.0, wird noch mit Flash dargestellt.

    Ich habe ja schon förmlich darauf gewartet, dass Piwik auf HTML 5 umsteigt, da die Diagramme quasi DAS Anwendungsgebiet für Canvas ist. Eine bessere Anwendungsmöglichkeit gibt es gar nicht. Dennoch überrascht es mich, dass die Einführung dennoch relativ früh kommt. Meines Wissens ist das eine der ersten wirklich verpflichteten Einführungen von HTML5. Das sonst so oft aufgezeigte von Youtube, das optional Videos in HTML5 einblendet ist ja nur eine Unterseite, die nichtmal groß angepriesen wird und kaum jemand benutzt.

    Weitere Neuerung sind übrigens die benutzerdefinierten Variablen, mit denen man Besucher nach selbst gewählten Variablen trackt. Den gesamten Changelog gibts bei Piwik.

    PS: Mein Feedburner-Problem wurde dennoch nicht gelöst :(

    Mozilla hat Version 5 des Webbrowsers Firefox veröffentlicht (wie ich heute morgen hier erfahren hab). Nachdem Mozilla seine Updatepolitik nach dem langen Warten auf Version 4 verändert hat und nun Major-Realeases in sehr viel kürzeren Zeitabständen herausgibt, verwundert es kaum, dass Version 5 im Vergleich zum 4rer nur wenig Neuerungen bietet, etwa generelle Verbesserungen im Bereich JavaScript, dem HTML 5 Canvas Element, Netzwerkgeschwindigkeit,…

    Angeregt durch das Ubuntublog.ch habe ich mir Überlegt, einen ähnlichen Test mit den Firefox Versionen 4 und 5 anzustellen, um zu sehen, ob sich tatsächlich Verbesserungen hinsichtlich der Performance ergeben.

    Beim Acid3-Test schaffen beide Versionen nur jeweils 97% (bisher schaffen das nur Google Chrome ab Version 4, Opera ab Version 10 und Safari ab Version 4).

    Außerdem hab ich einen Test mithilfe des Benchmarktools Peacekeeper durchgeführt, der doch einige Verbesserungen in der neuen Firefox Version aufzeigt. Zum Vergleich hab ich auch noch die die Chrome Version 12 getestet, die um einiges besser abschneidet als FF 4 und FF 5 (sogar wenn man beide Punkteangaben zusammenzählen würde ;-)

    Wie man erkennen kann, hat sich FF 5 im Vergleich zu Version 4 in allen Bereichen außer den String-Operationen und der Datenverarbeitung verbessern können. Wer noch mehr Details zu den Neuerung von Firefox 5 sucht, findet eine kompakte Übersicht etwa bei Golem.de

    18. Juni 2011

    Ich habe hier ja schon vor einieger Zeit über meine Erfahrungen mit dem Chromium Browser berichtet und jetzt ist es wieder einmal an der Zeit den aktuellen Browser anzuschauen.

    Am 10.6.2011 ist nun die 12. Version des Browser für Ubuntu 11.04 erschienen. Mein letzter Bericht handelte noch von der Version 6. Ich habe eigentlich immer alle Versionen benutzt und getestet und vorallem die Benchmark-Tests mit Peacekeeper immer herangezogen. Damals machte ich meine Test auf einem Atom Rechner. Jetzt arbeite ich auf einer Intel Dual Core und da sehen die Zahlen schon ein wenig anders aus. Als Ausgangslage habe ich die Tests mit der Version 8 des Browser begonnen. Als erstes teste ich immer die Funktionaltät des Browser. Das geht am besten mit dem Acid3 Test. Beim Acid3 Test hat Chromium wieder die volle Punktzahl von 100% erreicht.

    Der Benchmark-Test von Peacekeeper gibts immer noch. Das ist ein gutes Zeichen, denn damit kann man seine System über längere Zeit vergleichen. Einen Leistungssprung hatte damals die Version 10 gebracht. Bei der 11. und jetzt aktuellen Version ist die Gesammtleistung eher stagniert. Im Detail habe ich einmal die Version 11 und 12 verglichen. Im Rendering Test hat die Version besser abgeschnitten. Dagegen ist der 11 bei dem Social networking Test schneller. Auch verloren hat der 12er beim Complex graphics bis zum Text parsing Test. Die Detail aller Tests können auf der HomePage von Peacekeeper unter “What are the individual tests?“ eingesehen werden.

    Vergleiche mit anderen Browsern zeigen, dass der Chromium Browser in den letzten Wochen am meisten getestet und vewendet wurde.

    Fazit

    Der Chromium 12 Browser ist nicht schneller geworden als seine Vorgänger 11 und 10. Für mich ist er aber immer noch der stabilste und schnellste Browser für mein Ubuntu System.

     

    PDF-Datei dieses Artikels erzeugen

    Ähnliche Artikel

    • Keine ähnlichen Artikel vorhanden

    “Die perfekte Musiksammlung“? Keine Sorge, ich werde euch jetzt nicht sagen, welche “Scheiben” in eine gute Musiksammlung gehören – obwohl ich das liebend gern mache. Ein Musik-Blog wäre sicherlich auch mein Ding…

    Du bist aber immer noch bei “ME and my U” – und somit bei meinem Ubuntu-bezogenen Blog.

    Worum geht es also? Ich möchte euch meinen Weg zu einer, sagen wir, sauberen und ordentlichen Musiksammlung zeigen. Eine, bei der die Metadaten ordentlich gepflegt sind. Eine, bei denen das Filesystem sauber und einheitlich aufgebaut ist. Und da wir eben in Ubuntu unterwegs sind, soll es sich dabei auch um Banshee drehen…

    Banshee

    Konfiguration

    Zunächst einmal eine kleine Aufführung der Einstellungen (BearbeitenEinstellungen) in Banshee, die ich wichtig finde bzw. auf denen die folgenden Aktionen teils basieren.

    Reiter Allgemein:

    • Beim Importieren alle Dateien in den Medienordner kopieren: alle Musikdateien, die ich importiere, sollen in meine Musiksammlung (Filesystem) übernommen werden, klar.
    • Metadaten in Datei schreiben: ebenfalls unbedingt sinnig – und bedarf wohl keiner Erklärung.
    • Datei- und Ordnernamen aktualisieren: sorgt dafür, dass Banshee das Filesystem laut den Metadaten aktualisiert. So erhält man eine einheitliche Benennung der Dateien und Verzeichnisse. Wirkt sich allerdings erst aus, sobald Banshee die Metadaten neu in die Datei schreiben muss – also bei Änderung der Metadaten.

    Reiter Quellspezifisch → Quelle Musik:

    • Hier ist meine Wahl:
    • Ordnerhierarchie = Album-Künstler/Album
    • Dateiname = Nummer. Titel - das habe ich mittlerweile geändert, bitte seht dazu unten im Abschnitt Was mir noch nicht gefällt… - dort habe ich ein Update hierzu beschrieben.

    Pflege der Metadaten

    Naja, da gibt es sicherlich viele Unterschiede darin, was wie gepflegt wird. Auf folgende Punkte achte ich bei den Metadaten:

    • Titelnummern: jeder Titel hat eine Nummer und die Gesamtanzahl der Titel gespeichert – also z.B. 4 von 9.
    • Album-Künstler: Alben auf denen Titel verschiedener Künstler gesammelt sind, laufen unter dem Album-Künstler Various Artists. Es gibt aber auch Remix-Alben, bei denen der Album-Künstler eingegeben werden sollte. Die einzelnen Titel behalten dabei Ihren abweichenden Titel-Künstler.
    • CD-Nummer: bei Alben mit mehreren CDs bekommt jede CD eine Nummer und die Gesamtanzahl der CDs – also z.B. 1 von 2. Die CDs bekommen dabei den selben Alben-Namen und nicht, wie oft zu sehen, Namen mit dem Zusatz CD1 o.ä.
    • Optimalerweise sollte noch das Genre ordentlich gepflegt werden. Allerdings bin ich soweit selbst noch nicht. Wenn ich das mal machen sollte, werde ich darauf achten, dass die Genres nicht zu vielfältig bzw. detailliert sind.
    • Bei Künstlern mit Vor- und Nachname wird der Sortiername angegeben, wo zunächst der Nachname, gefolgt von Komma und Vorname aufgeführt wird.

    Das Cover-Problem

    Banshee speichert die CD-Cover im Verzeichnis ~/.cache/media-art. Im Medienverzeichnis (des Albums) gefundene Bilder namens Cover.jpg werden dorthin übernommen. Ermittelt das Programm für ein Album selbst das Cover (aus dem Netz) oder legt man manuell ein Cover in Banshee fest, so wird es ausschließlich im o.g. Verzeichnis gespeichert.

    Man hat also wohl keine Möglichkeit ordentlich konsistent die Cover in der Verzeichnisstruktur der Musiksammlung zu speichern. Aber genau das würde m.E. doch Sinn machen!

    Meine Musiksammlung liegt auf einer getrennten Daten-Festplatte, die zudem auf eine externe Festplatte synchronisiert wird. Die Speicherung der Cover ist allerdings davon getrennt und stattdessen mit dem Homebereich gekoppelt?! Ich verstehe das nicht.

    Legt man übrigens die Covers trotzdem im Verzeichnis des Albums ab, macht das spätestens dann Probleme, wenn man den Künstler oder das Album umbenennt. Natürlich nur dann, wenn man die o.g. automatische Aktualisierung des Filesystems an Hand der Metadaten (s.o.) aktiviert hat. Dann nämlich bleibt das alte Alben-Verzeichnis bestehen – darin liegt dann nur noch das Cover. Käse eben.

    Das Fazit in diesem Punkt heißt für mich: in der Musiksammlung werden alle Cover gelöscht. Die Cover werden nun ausschließlich im Verzeichnis ~/.cache/media-art geführt. Aber: dieses Verzeichnis ist bei mir nun ein symbolischer Link, der ebenfalls auf die synchronisierte Festplatte zeigt – direkt “neben” die Musiksammlung.

    Musiksammlung aufräumen

    Schließlich wollte ich meine Musiksammlung auf Verzeichnis- und Dateiebene bereinigen. Also: unbenötigte Dateien und leere Verzeichnisse löschen und die Covers verschieben.

    Erst einmal:

    • Die Befehl löschen teilweise Dateien – ohne Rückfrage. Seid euch dessen bewusst. Keine Gewährt meinerseits!
    • Ich gehe bei den genannten Befehlen davon aus, dass eure Musiksammlung unter ~/Musik zu finden ist. Ist das nicht der Fall, setzt den für euch passenden Pfad ein.

    Zunächst einmal habe ich überflüssige Dateien entfernt. Zum Beispiel die aus der Windows-Zeit vorhandenen desktop.ini und Thumbs.db, aber auch m3u-Dateien (Playlists), die für mich ebenfalls überflüssig sind. Mit den folgenden Befehlen habe ich das erledigt:

    cd ~/Musik
    find . -iname "desktop.ini" -exec rm {} \;
    find . -iname "Thumbs.db" -exec rm {} \;
    find . -iname "*.m3u" -exec rm {} \;

    Als Nächstes wollte ich die Covers, die in den Alben-Ordnern enthalten waren, wegsichern – für den Fall, dass ich sie später teilweise wieder importieren wollte. Warum ich das gemacht habe, sollte der o.g. Abschnitt Das Cover-Problem erklären.

    mkdir ~/covers.tmp
    cd ~/Musik
    find . -iname "*.jpg" -exec mv {} ~/covers.tmp \;

    Das muss natürlich ggfs. für weitere Dateiendungen wiederholt werden.

    Nun war es Zeit, einmal zu prüfen, ob es noch weitere Dateien gab, die in der Musiksammlung nichts verloren haben. Ich wollte in meiner Musiksammlung ausschließlich .flac-, .mp3- und .ogg-Dateien dulden. Um die übrigen Dateien zu finden, habe ich folgenden Befehl verwendet:

    cd MUSIKSAMMLUNG
    find . -type f -print | grep -Pvi '(flac|mp3|ogg)$'

    Die gefundenen Dateien habe ich dann einzeln von Hand gelöscht, weil es mir zu heiß war, das automatisch machen zu lassen. Ich wollte einfach noch einmal von Fall zu Fall entscheiden, was ich mit der jeweiligen Datei anstelle.

    Gut, der Stand war nun: eine Musiksammlung, in der nur die benötigten Musikdateien enthalten sind.

    Nun gab es noch einige leere Verzeichnisse, die durch Umbenennungs-Aktionen entstanden sind. Um diese zu finden habe ich eingegeben:

    find . -type d -empty -print

    Auch hier habe ich die Verzeichnisse anschließend manuell gelöscht.

    Benennung vereinheitlichen

    Schließlich habe ich dafür gesorgt, dass die Benennung der Verzeichnisse und Dateien vereinheitlicht wurde.

    Bei den Verzeichnissen war das Problem, dass manche Künstlernamen mit Vorname Nachname geführt wurden und andere mit Nachname, Vorname. Bei den Dateien gab es je nachdem, mit welcher Software ich die CD einmal gerippt hatte, unterschiedliche Namensgebungen.

    Was das Thema mit den Künstlernamen angeht, habe ich zunächst einmal die Meta-Daten in Banshee überarbeitet – von den Künstlern, die mit Vor- und Nachnamen geführt werden. Zwar waren die Namen grundsätzlich schon richtig, bei einigen wollte aber noch der Sortiername hinterlegt werden. Der ist beispielsweise bei Heather Nova eben dann doch Nova, Heather, so dass die Dame dann unter N aufgeführt wird und nicht unter H.

    Abschließend habe ich dann in Banshee einmal alle (!) Titel selektiert und in der Bearbeitung der Metadaten, und dort auf dem Reiter Extra den Button hinter dem Feld Kommentar betätigt (Alle Kommentare auf diesen Wert setzen) und gespeichert. Das hat dafür gesorgt, dass alle Titel von Banshee noch einmal gespeichert und so überarbeitet werden. So wurden endlich alle Verzeichnisse und Dateien nach gleichem Schema benannt.

    Was mir noch nicht gefällt…

    Natürlich gibt es noch ein paar Dinge, die mir noch nicht wirklich gefallen:

    • Banshee sollte die Möglichkeit bieten, die CD-Nummer mit im Dateinamen aufzuführen. Bei einem Album, das aus zwei CDs besteht, gebe ich das in den Metadaten entsprechend korrekt ein – was mir zunächst sehr gut gefällt. Innerhalb von Banshee ist eigentlich alles wunderbar: ich habe ein paar Titel auf CD 1 von 2 und ein paar auf CD 2 von 2. Allerdings erkennt man im Filesystem nicht, welche Titel auf welche CD gehören. Das ist natürlich recht unpraktisch, wenn man sich die Titel einmal auf den MP3-Player ziehen möchte.
      Update: Dieser Punkt ist von der Liste gestrichen – dank der Idee von Jan Battenfeld (siehe Komentar). Über den gconf-editor (kann über das gleichnamige Paket installiert werden), kann man die Einstellung für die Dateinamen etwas feiner einstellen. Man öffnet im gconf-editor also den Pfad apps/banshee-1/library und editiert dann den Konfiguration-Parameter file_pattern (oder je nach Gusto das folder_pattern). Mein Eintrag sieht nun so aus:

      {CD%disc_number%-}{%track_number%. }%title%

      hinzugekommen ist also der vordere Teil mit der CD-Nummer. Dass dieser Parameter in geschweiften Klammern steht, bewirkt, dass der Teil nur dann eingefügt wird, wenn die CD-Nummer in den Metadaten gepflegt ist – und das tue ich nur bei Alben mit mehreren CDs.

    • Banshee sollte m.E. eher den Album-Künstler im Browser anzeigen und nicht den Titel-Künstler. Noch besser sollte der Browser anpassbar sein. Denn eigentlich würde ich auch gerne mal nach Genre browsen können (nicht suchen – browsen!).
    • Außerdem fände ich es eben toll, wenn die Covers in der Musiksammlung bzw. im jeweiligen Album-Verzeichnis abgelegt würde.
    pssst, weitersagen!
    • Add to favorites
    • Facebook
    • Twitter
    • Google Reader
    • Google Buzz

    Mozilla hat die 5. Version seines Webbrowsers Firefox veröffentlicht. In Firefox 5.0 RC1 wurden den Release Notes zufolge keine gravierenden Fehler mehr entdeckt, sodass der Veröffentlichungskandidat mit der nun fertigen Version identisch ist.

    Mozilla/5.0 (X11; Linux i686; rv:5.0) Gecko/20100101 Firefox/5.0

    Das fünfte Firefox Major-Release ist somit einige Tage früher als angekündigt erschienen.

    Insgesamt hat Mozilla in Firefox 5.0 über 1000 Fehler beseitigt.

    Zu den Haupterneuerungen gehört unter anderem die Unterstützung von animierten CSS-Animationen sowie die verbesserte Performance der JavaScript-Engine. Ausserdem wurde die Netzwerkgeschwindigkeit verbessert und der Feuerfuchs soll nun nicht mehr so viel Speicher fressen.

    Für Linux-Benutzer dürfte die verbesserte Desktop-Integration des Browsers interessant sein.

    Die “Do-Not-Track”-Option war zwar bereits in Firefox 4 enthalten, ist jetzt aber neu in den Einstellungen im Reiter “Datenschutz” zu finden. Ist diese Option aktiviert, teilt Firefox den Webseiten per HTML-Header mit, dass der Benutzer keine Verfolgung seines Surfverhaltens wünscht.

    Die neue Version steht auf den Mozilla-Servern sowohl für GNU/Linux als auch für Mac OS X und Windows zum Download bereit.

    Links
    Website von Mozilla Firefox
    Buglist (englischsprachige Liste mit den behobenen Fehler seit Firefox 4)
    Release Notes (englischsprachige Veröffentlichungsnotizen zu Firefox 5)

    WebGL erlaubt es OpenGL in Webseiten einzubetten, also 3D Grafiken auf der lokalen Hardware direkt zu rendern. WebGL baut auf der API von OpenGL ES 2.0 auf, welches selbst eine Untermenge (und Teilweise Übermenge) von OpenGL 2 ist. Eine Webseite, die WebGL einbindet, funktioniert somit prinzipiell auf aller Hardware die entweder OpenGL 2 oder OpenGL ES 2.0 unterstützt. Das ist so ziemlich jedes moderne Smartphone und auch jede Grafikkarte der letzten Jahre.

    Persönlich betrachte ich WebGL als den größten Durchbruch im Web Bereich der letzten Jahre und als viel wichtiger als HTML 5. WebGL hat das Potential eine neue Ära einzuleiten. Vor allem im Bereich der Web basierten Spiele sehe ich ein unglaubliches Potential für diese Technologie. Aktuell wird für vieles immer noch Flash verwendet, was größtenteils über die CPU ineffizient rendert. Aber auch viele Webdienste wie z.B. Kartendienste können von 3D Beschleunigung profitieren.
    OpenGL ist der offene Industriestandard für 3D Grafik und steht in direkter Konkurrenz zu einer proprietären API, welche nur von einem Softwarehersteller kontrolliert wird. Mit OpenGL laufen Anwendungen auf allen verfügbaren PC Plattformen, mit OpenGL ES 2.0 ist der boomende Markt der Smartphones und Tablets abgedeckt, auf dem es noch keinen konkurrierenden Standard gibt und mit WebGL betritt OpenGL erneut einen Bereich in dem es noch keinen vergleichbaren Standard gibt. Es ist erfreulich zu sehen, dass der offene Standard hier vor der Konkurrenz ist und die Technologie vorantreibt.
    Sollte WebGL sich als bevorzugter Vermarktungsweg für moderne Spiele durchsetzen, wäre dies ein schwerer Schlag für die konkurrierende API und den Webbrowser des selben Herstellers, der WebGLnicht unterstützt. OpenGL Anwendungen würden ohne jegliche Anpassung auf allen verfügbaren Plattformen über den Webbrowser laufen, sämtlicher Portierungsaufwand entfällt komplett. Zusätzlich gibt es dem Hersteller der Anwendung ein bewehrtes Distributionsmedium (das Web) in die Hand.
    Zuletzt hörte man einiges an Kritik bezüglich der Sicherheit von WebGL (z.B. bei fefe), vor allem möchte der Konkurrent von OpenGL, WebGL nicht in seinen Webbrowser einbauen aus Sicherheitsgründen. Die Sicherheitsproblematik läuft zusammen auf die Tatsache, dass Anwendungen aus dem Web Zugriff auf die lokale Hardware bekommen und nativen Code ausführen können. Zusätzlich gibt es auch (noch) keine Sandbox um den Code abzuschotten und da auf die Hardware zugegriffen werden kann, wird auch einiges des Codes im Kernelmode ausgeführt.
    Das ist soweit natürlich alles korrekt, nur macht es die Technologie WebGL grundsätzlich nicht zu einem Sicherheitsproblem. OpenGL für sich ist eigentlich eine riesige Sandbox. OpenGL ist ein Zustandsautomat bei dem die eigentliche API nur dazu da ist den Zustand zu setzen. Also zum Beispiel eine Textur zu laden und anzugeben, dass die nächsten Zeichenbefehle diese Textur verwenden sollen. Das eigentliche Zeichnen der Geometrie erfolgt mit sogenannten Shadern. Es gibt dabei einen Vertexshader zum Umwandeln von Vertices im Anwendungskoordinatensystem nach Clipcoordinaten und den Fragmentshader um jedes vom Vertexshader bestimmte Fragment zu zeichnen. OpenGL verwendet zur Programmierung dieser zwei Shader Zustände eine eigene Programmiersprache namens OpenGL Shading Language (GLSL).
    GLSL ist eine sehr domain spezifische Sprache speziell für die Anforderungen der 3D Grafikprogrammierung. Der Vertexshader bekommt als Eingabewerte Attribute pro Vertex und als Ausgabewerte liefert er variierende Werte, die an den Fragmentshader weitergegeben werden und als Eingabeparameter verwendet werden. Der Fragmentshader produziert nun einen Farbwert. Zusätzlich können beide Shader auf gemeinsamen Speicher zugreifen: auf den OpenGL Zustand über sogenannte “uniform” Werte und auf Texturen.
    Die Shader in GLSL werden vom OpenGL Treiber in hardwarespezifischen Assemblercode kompiliert. Der Compiler sollte dabei sicherstellen, dass der Code nichts machen kann, was OpenGL nicht erlaubt, also z.B. auf Speicher außerhalb des Kontexts zuzugreifen. Jede Textur und auch jeder Shader wird nämlich in einem Kontext erstellt und ein Objekt darf nur auf Objekte des selben Kontexts zugreifen. Wenn der Shader vom Treiber nicht kompiliert werden kann, so wird ein Fehler zurückgeliefert auf den der Anwendungscode reagieren muss.
    Die Technologie WebGL ist also selbst die Sandbox, die angeblich nicht existiert. Ein Shader kann nur graphikspezifischen Code ausführen und es wäre mir auch noch kein Fall bekannt, bei dem GPU Code auf die CPU “ausbrechen” könnte. Die einzige verbleibende Gefahr wäre somit das setzen der Zustände um den Shader auszuführen. Dabei besteht eigentlich auch kein Problem, denn OpenGL ist sehr fehlertolerant und bei einem fehlerhaften Ansprechen der API wird ein GL_ERROR zurückgeliefert was im schlimmsten Fall zu Darstellungsfehlern führt. Die OpenGL API ist somit auch Bestandteil der Sandbox.
    Wie wir sehen bietet die Technologie WebGL außreichend Sicherheit. Mittels der Technologie ist es nicht möglich Schadprogramme auf den Client zu bekommen. Die Vorwürfe gegenüber der Technologie sind daher einfach falsch.
    Anders sieht es mit den Implementierungen aus. In der Theorie sollte OpenGL sicher sein, jedoch kann ich aus eigener Erfahrung sagen, dass dies nicht der Fall ist. Alle Treiber (egal ob offen oder proprietär) haben Fehler und können die Anwendung zum Absturz bringen, bei legalen und illegalen OpenGL Befehlssequenzen. Somit ist ein Angriffspotential denkbar: ist man in der Lage über die richtigen Befehle in WebGL den Treiber zum Absturz zu bekommen, kann man im schlimmsten Fall Code auf der CPU ausführen. Dies ist ein reales Angriffsszenario, dessen sich die Browserhersteller bewusst sind. So hatte ein Mozilla Entwickler vor der Veröffentlichung von Firefox 4 z.B. auf der KWin Mailingliste nach den Erfahrungen zur Stabilität insbesondere der freien Treiber nachgefragt.
    Von dem theorethischen Angriffsszcnario zu einem Exploit ist es dennoch ein weiter und meiner Meinung nach sehr unwahrscheinlicher Weg. Zum einen ist es schwer den OpenGL Treiber gezielt zum Absturz zu bringen, zum anderen diesen Absturz zum Angriff auszunutzen. Abstürze lassen sich nach der Erfahrung mit KWin meistens nur in einer bestimmten Kombination von OpenGL Befehlen, Treiberversion und Hardware erreichen. Ein Angreifer müsste also den Angriff speziell auf Hardware und Treiber zurechtschneiden. Natürlich wäre solch ein Fall dann eine Möglichkeit den Browser remote abstürzen zu lassen, dies ist natürlich schon einmal sehr schlecht, lässt sich aber von Browserherstellerseite sehr leicht beheben indem WebGL Kontexte in einen eigenen Prozess ausgelagert werden.
    Die viel größere Schwierigkeit dürfte sein den Crash zum Angriff auszunutzen. Außer GLSL (was ja nicht auf der CPU sondern GPU ausgeführt wird) gibt es keine Codebestandteile, die direkt ausgeführt werden. Die WebGL API zum Setzen des OpenGL Zustands verwendet JavaScript und sollte somit vom restlichen System abgeschottet sein. Die API selbst erlaubt auch ausschließlich nur das Setzen der Zustände. Die einizige Möglichkeit größere Speichermengen über Buffer anzusprechen (um zum Beispiel Angriffscode abzulegen) ist das Laden von Texturen was jedoch in der WebGL API im Vergleich zur OpenGL C-API abgesichert wurde.
    Falls es mittels Texturen und OpenGL API möglich ist einen Treiber so zum Absturz zu bekommen, dass Code ausgeführt werden kann, so ist das ein grundsätzliches Problem was nichts mit der Technologie WebGL zu tun hat. Moderne Webbrowser verwenden OpenGL auch zum Rendern der Canvas womit es denkbar ist, dass durch das einfache Einbinden desselben gefährlichen Bildes der Browser zum Absturz gebracht werden kann und der Schadcode ausgeführt werden kann.
    Wie wir sehen ist der Vorwurf gegenüber der Technologie WebGL nicht sicher zu sein, schlicht falsch. Genaugenommen betrifft es nur sich fehlverhaltende Implementierungen deren Schwachstellen generell ausgenutzt werden können, egal ob es sich um WebGL, hardwarebeschleunigtes Rendern der HTML Canvas oder harwarebeschleunigtes Flash oder Silverlight handelt. WebGL ist hier im Vergleich zu anderen Lösungen wie hardwarebeschleunigtes Flash sogar besser, da es sich abschotten lassen kann.
    Ich möchte hier nicht sagen, dass der Einsatz von WebGL ungefährlich ist. Sicherlich besteht durch die Instabilität der OpenGL Implementierungen und der recht neue Einsatz in Webbrowsern ein Gefährdung. Jedoch betrifft diese alle Technologien, die auf OpenGL (oder auch Direct3D) zugreifen. Das Argument des Konkurrenzherstellers klingt daher für mich als vorgeschoben und nach FUD um der Konkurrenz zu schaden und die konkurrierende API nicht im eigenen Webbrowser einsetzen zu müssen.

    =-=-=-=-=
    Powered by Blogilo

    17. Juni 2011

    trophy Open Source Quiz: Auflösung und Gewinner zsh w ubuntuusers ubuntu torvalds top smtpd smbd samba rätsel quiz planetuu open source nmbd linux linus torvalds IANA htop bash audacity /etc/skel /etc/services Vor rund einer Woche startete ich ein kleines Open-Source-Quiz. Die rund einwöchige Teilnahmefrist für das Quiz ist inzwischen abgelaufen. Höchste Zeit für die Auflösung und die Bekanntgabe des Gewinners (Buchpreis)!

     

    Frage 1: Welches Programm erzeugte die folgende Ausgabe?

    frage11 Open Source Quiz: Auflösung und Gewinner zsh w ubuntuusers ubuntu torvalds top smtpd smbd samba rätsel quiz planetuu open source nmbd linux linus torvalds IANA htop bash audacity /etc/skel /etc/services

    top
    Hier endete bereits für so manchen der Traum von der vollen Punktzahl. Nicht wenige gaben hier htop an, vermutlich weil top standardmäßig keine Farbgebung hat, htop aber schon. Doch top hat etliches an Konfigurationen zu bieten (wichtigste Taste: h für Hilfe). Mehr Info (und ein größeres Bild) gibt es in einem früher erschienenen Artikel: “Perlen auf der Kommandozeile: top”.

    Frage 2: In welcher Datei (kompletter Pfad) sind Netzwerkdienste den von der IANA festgelegten Portnummern zugeordnet?

    Antwort: /etc/services
    Anmerkung: Die /etc/protocols basiert zwar auch auf IANA-Zuordnungen, in ihr werden jedoch IP-Protokolle auf Protokollnummern (wie sie im IP-Header erscheinen) gemappt. Diese Datei wurde in einem Fall als Zweitlösung vorgeschlagen. Da in diesem Fall die /etc/services die Hauptantwort war, wurde die Antwort als richtig bewertet.

    Ein weiterer Lösungsvorschlag war: /proc/sys/net/ipv4/ip_local_port_range. Eine Zuordnung von Diensten auf Portnummern findet hier aber nicht statt. In dieser Datei wird lediglich ein Bereich von Ports für TCP und UDP Traffic festgelegt. Mehr Info

    Frage 3: Mit welchem Befehl (4 Tastenanschläge) kann man in der Bash in das unmittelbar vorangegangene Verzeichnis zurückwechseln?

    Antwort: cd -
    cd .. wechselt in das nächsthöhere Verzeichnis (und hat 5 Tastenanschläge). Diese Antwort hatten drei Kandidaten versucht. Ein Kandidat hat angemerkt, dass die richtige Lösung cd – wegen der RETURN-Taste ja eigentlich 5 Tastenanschläge habe. Die RETURN-Taste ist aber nicht Teil des Befehls, sondern zu dessen Ausführung nötig.

    Ein weiterer Lösungsvorschlag war: cd$! Dieser Befehl führt offenbar “nur” in das Homeverzeichnis:

    Frage 4: Ist die folgende Aussage richtig oder falsch?

    “Der Initiator des Linux-Kernels (Sternzeichen: Steinbock) war der Reader’s Digest Europäer des Jahres 2000 und heißt Linus Benedict Thorvalds.”

    Antwort: falsch
    Der Initiator des Linux-Kernels heißt nämlich nicht Linus Benedict Thorvalds, sondern Linus Benedict Torvalds (ohne h). Wirklich erstaunlich, wieviele Kandidaten an dieser Frage gescheitert sind. OK, Linus hat den Kernel initiiert und ist Steinbock (28.12.1969). Dies kann man im Wikipedia-Artikel über Linus T. nachlesen. Ich vermute stark, dass genau diese Quelle der erste Anlaufpunkt für viele war. In diesem Artikel wird  (Stand: 7.6.2011) auch behauptet, Linus T. wäre Europäer des Jahres 2000 gewesen. Die im Anhang des Artikels verlinkte Quelle behauptet auch genau dies, ohne jedoch eine weitere Quelle zu nennen. Glaubt man jedoch Reader’s Digest’ Liste der Europäer des Jahres (zur Liste in diesem Artikel nach unten scrollen), war Linus Europäer des Jahres 2001 (weitere Quelle: hier). Wie auch immer: Torvalds schreibt man ohne h – die Aussage ist falsch.

    Interessant auch die Suchtechnik eines Kandidaten in dieser Frage. Dazu nur der Hinweis, dass ein in Anführungszeichen gesetzter String bei der Google-Suche nach genau diesem String sucht. Von A-Z. Das Suchergebnis kann also nur auf den Quiz-Artikel (oder höchstens auf eine authorisierten Planetenveröffentlichung) deuten bzw. auf eine unauthorisierte Fremdveröffentlichung genau dieses Artikels. Auszug aus Piwik:

    Frage 5: Ein Linux-Mehrbenutzersystem soll so eingerichtet werden, dass alle künftig neu angelegten Benutzer die Feuerschutzrichtlinien automatisch in ihrem Home-Ordner vorfinden. In welches Verzeichnis muss das Dokument mit den Richtlinien kopiert werden, damit alle neu angelegten Benutzer die Feuerschutzrichtlinien in ihrem Home-Verzeichnis vorfinden?

    Antwort: /etc/skel

    Als manuelle Alternative kann man mit useradd -k auch ein alternatives Verzeichnis übergeben. Beispiel für neuen Benutzer “testuser” (mit Homeverzeichnis):

    useradd -m -k /etc/alternatives_verzeichnis testuser

    Frage 6: Wie lautet der kürzeste alphanumerische Befehl, den man in der Shell ausführen kann?

    Antwort: (u.a.) w
    Mehrere Antworten wurden als richtig gewertet. Als richtig gewertet wurden w, i (von iprint), X. Sowie jeder andere Buchstabe oder Zahl (wenn sie mit dem Hinweis verbunden waren, dass es sich um einen Alias handelt).

    Angelegt war die Frage natürlich auf w. Der Befehl w zeigt an, wer auf einem System eingeloggt ist (und was er gerade tut). Beispiel:

    ko@box:~$ w
    20:03:11 up  1:37,  3 users,  load average: 0,54, 0,48, 0,42
    USER     TTY      FROM          LOGIN@   IDLE   JCPU   PCPU WHAT
    ko    tty7     :0               18:26    1:36m  3:37   0.02s /bin/sh /etc/xd
    ko    pts/0    :0.0             18:27    3:12   0.75s  0.09s ssh -p 22 fakeme
    ko    pts/1    :0.0             20:01    1.00s  0.50s  0.01s w

    Frage 7: Welche beiden Dienste müssen auf einer Linux-Maschine laufen, wenn
    sie in einem Microsoft-Netzwerk als SAMBA-Server funktionieren soll ? Wähle exakt 2 Antworten!

    1. ldap
    2. smbd
    3. radius
    4. nfsd
    5. nmbd

    Antwort: smbd, nmbd
    ldap (wurde von ein einigen Teinehmern genannt) ist nicht Voraussetzung zur Funktion eines Samba-Servers. Um mehr über Samba zu lernen, ist das Samba Wiki von Ubuntuusers eine gute Anlaufstelle.

    Frage 8: Welches quelloffene Programm ist hier zu sehen?

    what is this Open Source Quiz: Auflösung und Gewinner zsh w ubuntuusers ubuntu torvalds top smtpd smbd samba rätsel quiz planetuu open source nmbd linux linus torvalds IANA htop bash audacity /etc/skel /etc/services

    Antwort: Audacity

    Frage 9: Welche Zahl (Standardausgabe STDOUT) liefert der zuletzt eingegebe Befehl: history | wc -l

    history Open Source Quiz: Auflösung und Gewinner zsh w ubuntuusers ubuntu torvalds top smtpd smbd samba rätsel quiz planetuu open source nmbd linux linus torvalds IANA htop bash audacity /etc/skel /etc/services

    (Antwort: n.a.)

    Um es vorwegzunehmen: Diese Frage wurde aus der Wertung genommen. Sie war wirklich unpräzise gestellt. Auf die Idee, dass verschiedene Shells auf die Befehle verschieden reagieren, bin ich nicht gekommen. (Danke an booboo und marcschh für den interessanten Diskurs über die zsh).

    In der Bash heißt das richtige Ergebnis 38. Nach dem ersten Wordcount werden 2 Befehle abgesetzt. Der nächste Wordcount ermittelt also zwei Zeilen mehr (und auch sich selbst erfasst der kombinierte Befehl bereits). Der Befehl “export $HISTSIZE” war ein reines Ablenkungsmanöver, um den Zähler hochzutreiben. Der eine oder andere ist mir hier trotzdem auf den Leim gegangen und gab als Ergebnis 500 an. Die Variable HISTSIZE definiert lediglich wieviele Befehle  maximal gespeichert werden. Z.B. in Ubuntu Lucid werden diese Daten in ~/.bash_history gespeichert).

    Anders sieht es aber mit dem Verhalten der zsh (und evtl anderen Shells aus) aus. In der Standardeinstellung scheint die Ausgabe von history bei der zsh nicht mehr als 16 Zeilen auszugeben. Hinweise dazu gerne in den Kommentaren. So oder so bleibt die Frage aus der Wertung.

    Frage 10: Was steht im smtpd-Banner des Mailservers von netz10.de?

    Antwort:

    smtpd banner Open Source Quiz: Auflösung und Gewinner zsh w ubuntuusers ubuntu torvalds top smtpd smbd samba rätsel quiz planetuu open source nmbd linux linus torvalds IANA htop bash audacity /etc/skel /etc/services

    Auszug aus man smtpd:

    smtpd_banner ($myhostname ESMTP $mail_name) The  text  that follows the 220 status code in the SMTP greeting banner.

    Aber auch nur “Marek Mintal” als Lösung (oder eine Antwort inklusive des Statuscodes 220) wurden als richtige Antwort gewertet. Übrigens: Obwohl das Banner theoretisch frei konfigurierbar ist, muss zumindest der erste Teil unverändert bleiben, um kompatibel zu RFC 821 zu bleiben. Standardmäßig steht im zweiten Teil $mail_name. Wurde hier durch “Marek Mintal” ersetzt. Und so gilt auch hier, was Club-Fans schon immer wussten: Mintal ist unantastbar icon smile Open Source Quiz: Auflösung und Gewinner zsh w ubuntuusers ubuntu torvalds top smtpd smbd samba rätsel quiz planetuu open source nmbd linux linus torvalds IANA htop bash audacity /etc/skel /etc/services

    Herauszufinden wäre das gewesen z.B. mit einer Telnet-Verbindung zu Port 25 des Mailservers:

    telnet netz10.de 25

    The winner is …..

    Als kleinen Anreiz gibt es auch was zu gewinnen: das Buch “Suchmaschinenoptimierung” (originalverpackt, 5. Auflage), ein umfassendes SEO-Handbuch von Sebastian Erlhofer. Gewertet wurden 9 Fragen. 7 Teilnehmer hatten alle 9 Fragen richtig beantwortet. Der Sieger wurde nach dem Zufallsprinzip ausgewählt (www.random.org). And the winner is phos7god (Nickname)! Viel Spaß mit dem SEO-Handbuch… Du erhätst eine E-mail. Bitte innerhalb 1 Woche antworten, sonst wird neu verlost…

    Fazit

    Das Quiz war für mich ein Spaß, bei dem ich auch dazugelernt habe. Nicht nur durch die Rückmeldungen zu Sachthemen, aber auch zur Durchführung. Das nächste Quiz ist bereits geplant, mit einem überarbeitetem Konzept. Allen Teilnehmern vielen Dank fürs Mitspielen!

    17 Kommentare Permalink | © 2011 by Netz 10 | Tags: , , , , , , , , , , , , , , , , , , , , ,

    16. Juni 2011

    Vor ein paar Tagen hat Chris Wilson eine neue Beschleunigungsarchitektur namens SNA (SandyBridge New Acceleration) in den Intel-Grafiktreiber eingepflegt. Diese ist deutlich besser auf die neue SandyBridge-Grafik abgestimmt (Technische Details sind im obigen Link zu finden), bringt aber auch auf den älteren Chipsätzen eine teilweise dramatische Geschwindigkeitssteigerung. Zusätzlich beseitigt SNA auch einige ziemlich alte und vor allem nervige Bugs z.B. im Zusammenspiel mit Wine oder anderen Programmen.

    Leider benötigt SNA eine aktualisierte Version eines Entwicklungspakets (“x11proto-dri2-dev”) und ist auch noch ein gutes Stück davon entfernt stabil und fehlerfrei zu sein (Grafikfehler sind an der Tagesordnung). Um diesen Umstand Rechnung zu tragen, werde ich in der nächsten Zeit keine direkte Git-Version des Treiber mehr veröffentlichen bzw. SNA fürs Erste in meinem Treiber deaktiviert lassen.

    Chris Wilson veröffentlicht zum Glück auch noch Patches für die “alte” UXA-Architektur, welche einige Bugs im “alten” Treiber beseitigen und sich sehr leicht auf die letzte SNA-freie Version des Git-Quellcodes anwenden lassen. So wurde heute ein Bug im Zusammenspiel mit Gtkperf (Der “Circles”-Benchmark hing über mehrere Sekunden) beseitigt und vor ein paar Tagen wurde ein Patch eingepflegt, welcher einen kleinen Grafikfehler in LibreOffice beseitigte.

    Jedenfalls werde ich die UXA-Patches solange in meine Treiberversion einpflegen, bis SNA ein wirklich offizieller Bestandteil des Treibers ist. Und das wird erst mit der offiziellen Freigabe der Version 2.16 des Treibers geschehen.

    Ich bin ja ein bekennender Asus Anhänger und habe mit einen Asus eee PC Seashell Gold zugelegt.

    Die violette Variante hätte mich interessiert da sie eine schöne Anlehnung an das neue Ubuntu Design gewesen wäre, aber in der Öffentlichkeit damit rum laufen, das wollte ich mir nicht antun. Die Variante in Pink wäre wohl eher was für meine Tochter. Ich habe mich desshalb für die Gold Variante entschieden, die ist ein wenig edler und macht auch was her. Als neues mobiles Arbeitsgerät habe ich mich für das Modell 1015 PW entschieden. Ich weiss, ist nur ein Atom Prozessor, aber der reicht für meine Bedürfnisse. Hier sind noch die genaueren Daten meines neuen Begleiters.

    Spannend war dann das Auspacken. Netbook, Batterie, Lader, 2 kleine Hinweispapiere und fertig. Keine CD, kein Schnik-Schnack, nix. Aber es reicht eigentlich auch, was will man mehr.

    Die Installation von Natty 11.04 hat am Anfang ein wenig Probleme gemacht. Ich habe die ISO Datei vorher auf einen USB Stick kopiert und wollte dann davon booten. Das hat eigentlich geklappt bis zu einer Meldung, dass das Live System nicht gemountet werden konnte. Zuerst dachte ich, dass mein Live System auf dem Stick defekt sei. Nach einiger Zeit war mir aber eingefallen dass ich schon einmal mit sowas Probleme hatte. Genau, damals was das Problem dass ich bei einem neuen PC mit USB 3 auch nicht richtig booten konnte. So war es dann auch hier. Den Stick an der linken Seite am “normalen” USB angesteckt verlief die Installation ohne mucken.

    Fazit: Das Netbook ist klein, formschön, leicht und perfekt in der Bedienung. Ich bin mal gespannt wie gut nun Natty darauf laufen wird. Ich werde auf jeden Fall hier darüber berichten.

     

    PDF-Datei dieses Artikels erzeugen

    Ähnliche Artikel

    • Keine ähnlichen Artikel vorhanden

    Ich nutze hauptsächlich VIM als den Editor meiner Wahl. Übrigens ist dieser Artikel natürlich auch in diesem Editor erstellt worden.

    Dies ist eine Übersicht meiner installierten Plug-ins, die ich in ein paar wenigen Worten beschreibe. Über nähere Informationen empfehle ich das Folgen des Links oder das Schreiben eines Kommentars. Meine beliebtesten Plug-ins werde ich näher in einem anderen Artikel beschreiben.

    Meine komplette Konfiguration in meinem Git-Repository enthalten, das heruntergeladen werden kann.
    Dafür muss Git installiert sein:

    1
    
    sudo apt-get install git-core
    sudo apt-get install git-core

    Mein Repository kann ins .vim-Verzeichnis heruntergeladen werden:

    1
    2
    
    cd ~/.vim
    git clone git://github.com/DSIW/vim.git
    cd ~/.vim
    git clone git://github.com/DSIW/vim.git

    Danach kann das .git-Verzeichnis gelöscht werden. Darin werden nur für das Repository wichtige Dateien gespeichert. Eine Alternative ist es, sich das Repository-Archiv herunterzuladen und zu entpacken.

    Plug-ins

    pathogen

    Normalerweise wird die Ordnerstruktur des Plug-in-Archivs 1:1 in den ~/.vim-Ordner übernommen. Dabei werden meistens Dateien in den Ordner plugin und doc kopiert. Bei vielen implementierten Plug-ins ist eine gute Übersicht nicht mehr gegeben. Man weiß nicht, ob dieses Helpfile auch zu diesem Plug-in gehört, oder nicht.
    Es gibt eine tolle Möglichkeit, um eine gute Übersicht zu erhalten. Dazu wird das Plug-in pathogen in den Ordner plugin kopiert und die Konfigurationsdatei ~/.vimrc angepasst. Danach erstellt man sich die Ordnerstruktur ~/.vim/bundle/<pluginname>. Nun wird einfach der Inhalt des Plug-in-Archivs in einen Unterordner von bundle kopiert. Siehe meinen Auszug aus meinem bundle-Verzeichnis:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    ~/.vim/bundle
    ├── gundo
    │   ├── doc
    │   ├── plugin
    │   ├── site
    │   └── tests
    │       ├── bundled
    │       └── vim_test
    ├── vim-easygrep
    │   ├── doc
    │   └── plugin
    ├── vim-latexsuite
    │   ├── compiler
    │   ├── doc
    │   ├── ftplugin
    │   │   ├── latex-suite
    │   │   └── tex
    │   ├── indent
    │   └── plugin
    ├── vim-supertab
    │   ├── doc
    │   └── plugin
    ├── vim-surround
    │   ├── doc
    │   └── plugin
    └── visincr
        ├── autoload
        ├── doc
        └── plugin
    ~/.vim/bundle
    ├── gundo
    │   ├── doc
    │   ├── plugin
    │   ├── site
    │   └── tests
    │       ├── bundled
    │       └── vim_test
    ├── vim-easygrep
    │   ├── doc
    │   └── plugin
    ├── vim-latexsuite
    │   ├── compiler
    │   ├── doc
    │   ├── ftplugin
    │   │   ├── latex-suite
    │   │   └── tex
    │   ├── indent
    │   └── plugin
    ├── vim-supertab
    │   ├── doc
    │   └── plugin
    ├── vim-surround
    │   ├── doc
    │   └── plugin
    └── visincr
        ├── autoload
        ├── doc
        └── plugin

    Hinweis: Manchmal werden von Plug-ins absolute Pfade von irgendwelchen Dateien oder Ordner benötigt. Dann setzt man einfach einen symbolischen Link zu der Datei oder zu dem Verzeichnis im bundle-Ordner. Dies geschieht mit:

    1
    
    ln -s ~/.vim/bundle/<plugin-Ordner>/.../Datei oder Ordner ~/<zielordner oder -datei>
    ln -s ~/.vim/bundle/<plugin-Ordner>/.../Datei oder Ordner ~/<zielordner oder -datei>

    Download

    vjde

    Dies ist eine Art IDE für die Programmiersprache Java. Im Helpfile stehen allerdings noch weitere Sprachen, die wohl implementiert sind oder die noch implementiert werden müssen.
    Download

    csv

    CSV-Dateien haben eine tabellarische Form, bei der die Spalten durch ein Trennzeichen dargestellt werden. Durch dieses Plug-in ist eine tabellarische Darstellung gegeben und weitere Verwaltungsfunktionen sind implementiert.
    Download

    SudoEdit

    Durch dieses Plug-in ist es möglich, zum Beispiel eine Datei, die im Ordner /etc enthalten ist und somit root-Rechte braucht, diese zu verändern oder zu schreiben, auch dann, wenn man vim nicht mittels sudo aufgerufen hat. Natürlich wird die Sicherheit nicht beeinträchtigt – eine Passworteingabe ist dennoch erforderlich.
    Download

    unicode

    Damit ist das Einfügen auch von speziellen Unicodezeichen möglich.
    Download

    supertab

    Dadurch wird die Tab-Taste erweitert und dient auch der Autocompletion. Man muss nicht mehr [Strg]+[N] oder [Strg]+[P] drücken, die Tab-Taste erledigt das ganze.
    Download

    protodef

    Wer mit C++ Programme schreibt, der kennt das ständige Kopieren der Funktionssignatur aus dem Header-File in die cpp-Datei. Dieses Plug-in macht das ganze auf Kommando (<leader>PP)).
    Man muss bei der Installation darauf achten, dass die Datei “pullproto.pl” im ~/.vim-Verzeichnis liegt oder verlinkt wurde.
    Download

    showmarks

    Man kann mit vim auch Marken setzen. Dieses Plug-in ermöglicht das Anzeigen dieser Marken auf der linken Seite.
    Download

    tabular

    Das Ausrichten von dem Zuweisungsoperator bei Variablenzuweisungen ist dadurch unter anderem möglich. Es kann jedes Zeichen angewandt werden. Eine eher tabellarische Form des Quellcodes erhöht die Übersichtlichkeit.
    Download

    nerdcommenter

    Kommentieren im Quellcode unterschiedlichster Sprachen ist die Stärke des Plug-ins. Durch das Kommando <leader>ci wird eine Zeile auskommentiert, wenn diese schon kommentiert ist, wird diese wieder einkommentiert. In einer C-Datei oder Java-Datei ist das Kommentar-Zeichen "//", in Bash-Skripten ist dieses ein "#".
    Download

    nerdtree

    Das Navigieren durch die Verzeichnisse in einer Baumstruktur ist möglich.
    Download

    fugitive

    Das Versionsverwaltungssytem Git wird durch dieses Plug-in in VIM implementiert bzw. die Arbeit damit wird vereinfacht.
    Download

    repeat

    Normalerweise kann man den letzten Befehl durch Drücken des Punkts wiederholen. Leider funktioniert das nicht bei Plug-ins. Durch dieses Plug-in sollte es möglich sein, das zu tun. In meinem Fall ist das leider nicht so.
    Download

    surround

    Das nachträglich Umschließen von Wörtern oder anderen Zeichenketten mit Anführungszeichen oder Klammern ist damit ein Kinderspiel. Es lassen sich unter anderem auch Zeilen durch HTML-Tags umschließen.
    Download

    unimpaired

    Dieses Plug-in setzt einige Tastenkombinationen für bestimmte Befehle. Ein Paar sind hier aufgeführt:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    [...]
    [b :bprevious
    ]b :bnext
    [B :bfirst
    ]B :blast
    [...]
    [q :cprevious
    ]q :cnext
    [Q :cfirst
    ]Q :clast
    [...]
    [b :bprevious
    ]b :bnext
    [B :bfirst
    ]B :blast
    [...]
    [q :cprevious
    ]q :cnext
    [Q :cfirst
    ]Q :clast

    Eine nette Funktion ist das Einfügen von Leerzeilen vor oder nach der Curserposition. Dies ist auch durch das Drücken einer Zahl wiederholbar. Das Verschieben einer Zeile oder das Encoding und Decoding von URLs oder von XML ist möglich:

    <foo bar="baz"> => &lt;foo bar=&quot;baz&quot&gt;

    Download

    align

    Ein weiteres Ausrichtungs-Plug-in (siehe Tabular), das auch das Ausrichten von LaTeX-Tabellen ermöglicht.
    Download

    AutoAlign

    Automatisiertes Ausrichten von Variablenzuweisungen.
    Download

    LaTeX-Suite

    Ich schreibe meine Dokumentationen nur noch mit dem Textsatzsystem LaTeX. Dieses hervorragende Plug-in ermöglicht ein schnelles Schreiben von Texten, ohne, dass man sich immer mit den Formatierungsbefehlen herumschlagen muss. Durch einfache Tastenfolgen wird ein Formatierungstag geöffnet. Es ist damit auch möglich markierte Textstellen komfortabel zu formatieren. Natürlich gibt es Snippets für Tabellen, Figuren und Bildern, um wenige Beispiele zu nennen.
    Download

    gundo

    In VIM wird die Geschichte nicht linear gespeichert. Das heißt, dass man bei einer veränderten Zwischenänderung (Punkt 3 im Beispiel) auch wieder an den aktuellen Anfang kommt.

    Beispiel:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    @  [4] 3 hours ago
    |
    | o  [3] 4 hours ago
    | |
    o |  [2] 4 hours ago
    |/
    o  [1] 4 hours ago
    |
    o  [0] Original
    @  [4] 3 hours ago
    |
    | o  [3] 4 hours ago
    | |
    o |  [2] 4 hours ago
    |/
    o  [1] 4 hours ago
    |
    o  [0] Original

    Dieses Plug-in visualisiert die Verästelungen in der History der Änderungen einer Datei sehr schön. Durch dieses Plug-in ist ein Unterschied zu den verschiedenen Versionene einer Datei leicht erkennbar, da diese Veränderungen hervorgehoben werden.
    Download

    searchcomplete

    Damit ist die Vervollständigung von Zeichen auch bei einer Suche möglich.
    Download

    fswitch

    Das Navigieren unter anderem zwischen cpp-Dateien und den dazu gehörigen Header-Dateien ist damit möglich.
    Download

    xml

    Das Hinzufügen, Ändern und Löschen von Tags ist die hauptsächliche Aufgabe dieses Plug-ins.
    Download

    xptemplate

    Snippets sind sehr hilfreich, wenn man Code schreibt. Damit ist es nicht mehr nötig, u.a. syntaktische Klammern zu setzen.
    Download

    matchit

    Durch die Taste “%” gelangt man zur gegenseitigen Klammer bei einem Klammerpaar. Durch dieses Plug-in ist das unter anderem auch bei XML-, HTML- und LaTeX-Tags möglich.
    Download

    visincr

    Das Inkrementieren (Wert = Wert+1) von Buchstaben oder Zahlen (auch römisch) ist damit kein Problem. Es werden die Werte blockweise markiert und durch das Eingeben von :IA werden die Buchstaben in jeder Zeile erhöht (siehe Beispiel).

    Beispiel:
    1
    2
    3
    
    int a;
    int a;
    int a;
    int a;
    int a;
    int a;

    wird zu:

    1
    2
    3
    
    int a;
    int b;
    int c;
    int a;
    int b;
    int c;

    Download

    omnicppcomplete

    Schreibt man C++ Quellcode und möchte wissen, welche Attribute in einem Objekt vorkommen, sollte man dieses Plug-in nutzen.
    Download

    easygrep

    Siehe meinen Artikel zu diesem Plug-in.
    Download

    sqlcomplete

    Eine Autocompletion für SQL-Sprachen wie Oracle, MySQL, etc. wird damit bereit gestellt. Das dynamische Vervollständigen von Datenbankeinträgen ist mit einem weiteren Plug-in (dbext.vim) für die Datenbankanbindung möglich.
    Download

    taglist

    Damit kann man sich alle Variablen, Methoden, Funktionen, etc. in einem eigenen Fenster anzeigen lassen. Durch dieses lässt sich navigieren, nach einem Bestätigen springt man direkt zur Deklaration.
    Download

    c

    Plug-in für die Programmiersprache C. Damit werden Snippets und zum Beispiel das Einfügen von personalisierten Kommentaren bereit gestellt. Das Kompilieren, Linken und Ausführen eines C-Programms ist damit möglich. Fehler werden in einem Quickfix-Fenster angezeigt.
    Download

    csscolor

    Der Hintergrund des Farbcodes in einem CSS nimmt die Farbe dessen an.
    Download

    jcommenter

    Kommentieren von Java-Quellcode insbesondere für Javadoc.
    Download

    vimshell-ssh

    Zugreifen auf eine externe VIM-Sitzung über SSH.
    Download

    ShowPairs

    Das Hervorheben von passenden Klammern ist hilfreich, um den Überblick zu behalten.
    Download

    ragtag

    Nützliche Tastenkombinationen (Mappings) für HTML, XML, php uvm.
    Download

    checklist

    Plug-in, um leicht eine Checkliste zu verwalten. Das Hinzufügen einer neuen Aufgabe und das Löschen dieser ist die Hauptaufgabe.
    Download

    Ich nutze hauptsächlich VIM als den Editor meiner Wahl. Übrigens ist dieser Artikel natürlich auch in diesem Editor erstellt worden.

    Dies ist eine Übersicht meiner installierten Plug-ins, die ich in ein paar wenigen Worten beschreibe. Über nähere Informationen empfehle ich das Folgen des Links oder das Schreiben eines Kommentars. Meine beliebtesten Plug-ins werde ich näher in einem anderen Artikel beschreiben.

    Meine komplette Konfiguration in meinem Git-Repository enthalten, das heruntergeladen werden kann.
    Dafür muss Git installiert sein:

    1
    
    sudo apt-get install git-core
    sudo apt-get install git-core

    Mein Repository kann ins .vim-Verzeichnis heruntergeladen werden:

    1
    2
    
    cd ~/.vim
    git clone git://github.com/DSIW/vim.git
    cd ~/.vim
    git clone git://github.com/DSIW/vim.git

    Danach kann das .git-Verzeichnis gelöscht werden. Darin werden nur für das Repository wichtige Dateien gespeichert. Eine Alternative ist es, sich das Repository-Archiv herunterzuladen und zu entpacken.

    Plug-ins

    pathogen

    Normalerweise wird die Ordnerstruktur des Plug-in-Archivs 1:1 in den ~/.vim-Ordner übernommen. Dabei werden meistens Dateien in den Ordner plugin und doc kopiert. Bei vielen implementierten Plug-ins ist eine gute Übersicht nicht mehr gegeben. Man weiß nicht, ob dieses Helpfile auch zu diesem Plug-in gehört, oder nicht.
    Es gibt eine tolle Möglichkeit, um eine gute Übersicht zu erhalten. Dazu wird das Plug-in pathogen in den Ordner plugin kopiert und die Konfigurationsdatei ~/.vimrc angepasst. Danach erstellt man sich die Ordnerstruktur ~/.vim/bundle/<pluginname>. Nun wird einfach der Inhalt des Plug-in-Archivs in einen Unterordner von bundle kopiert. Siehe meinen Auszug aus meinem bundle-Verzeichnis:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    ~/.vim/bundle
    ├── gundo
    │   ├── doc
    │   ├── plugin
    │   ├── site
    │   └── tests
    │       ├── bundled
    │       └── vim_test
    ├── vim-easygrep
    │   ├── doc
    │   └── plugin
    ├── vim-latexsuite
    │   ├── compiler
    │   ├── doc
    │   ├── ftplugin
    │   │   ├── latex-suite
    │   │   └── tex
    │   ├── indent
    │   └── plugin
    ├── vim-supertab
    │   ├── doc
    │   └── plugin
    ├── vim-surround
    │   ├── doc
    │   └── plugin
    └── visincr
        ├── autoload
        ├── doc
        └── plugin
    ~/.vim/bundle
    ├── gundo
    │   ├── doc
    │   ├── plugin
    │   ├── site
    │   └── tests
    │       ├── bundled
    │       └── vim_test
    ├── vim-easygrep
    │   ├── doc
    │   └── plugin
    ├── vim-latexsuite
    │   ├── compiler
    │   ├── doc
    │   ├── ftplugin
    │   │   ├── latex-suite
    │   │   └── tex
    │   ├── indent
    │   └── plugin
    ├── vim-supertab
    │   ├── doc
    │   └── plugin
    ├── vim-surround
    │   ├── doc
    │   └── plugin
    └── visincr
        ├── autoload
        ├── doc
        └── plugin

    Hinweis: Manchmal werden von Plug-ins absolute Pfade von irgendwelchen Dateien oder Ordner benötigt. Dann setzt man einfach einen symbolischen Link zu der Datei oder zu dem Verzeichnis im bundle-Ordner. Dies geschieht mit:

    1
    
    ln -s ~/.vim/bundle/<plugin-Ordner>/.../Datei oder Ordner ~/<zielordner oder -datei>
    ln -s ~/.vim/bundle/<plugin-Ordner>/.../Datei oder Ordner ~/<zielordner oder -datei>

    Download

    vjde

    Dies ist eine Art IDE für die Programmiersprache Java. Im Helpfile stehen allerdings noch weitere Sprachen, die wohl implementiert sind oder die noch implementiert werden müssen.
    Download

    csv

    CSV-Dateien haben eine tabellarische Form, bei der die Spalten durch ein Trennzeichen dargestellt werden. Durch dieses Plug-in ist eine tabellarische Darstellung gegeben und weitere Verwaltungsfunktionen sind implementiert.
    Download

    SudoEdit

    Durch dieses Plug-in ist es möglich, zum Beispiel eine Datei, die im Ordner /etc enthalten ist und somit root-Rechte braucht, diese zu verändern oder zu schreiben, auch dann, wenn man vim nicht mittels sudo aufgerufen hat. Natürlich wird die Sicherheit nicht beeinträchtigt – eine Passworteingabe ist dennoch erforderlich.
    Download

    unicode

    Damit ist das Einfügen auch von speziellen Unicodezeichen möglich.
    Download

    supertab

    Dadurch wird die Tab-Taste erweitert und dient auch der Autocompletion. Man muss nicht mehr [Strg]+[N] oder [Strg]+[P] drücken, die Tab-Taste erledigt das ganze.
    Download

    protodef

    Wer mit C++ Programme schreibt, der kennt das ständige Kopieren der Funktionssignatur aus dem Header-File in die cpp-Datei. Dieses Plug-in macht das ganze auf Kommando (<leader>PP)).
    Man muss bei der Installation darauf achten, dass die Datei “pullproto.pl” im ~/.vim-Verzeichnis liegt oder verlinkt wurde.
    Download

    showmarks

    Man kann mit vim auch Marken setzen. Dieses Plug-in ermöglicht das Anzeigen dieser Marken auf der linken Seite.
    Download

    tabular

    Das Ausrichten von dem Zuweisungsoperator bei Variablenzuweisungen ist dadurch unter anderem möglich. Es kann jedes Zeichen angewandt werden. Eine eher tabellarische Form des Quellcodes erhöht die Übersichtlichkeit.
    Download

    nerdcommenter

    Kommentieren im Quellcode unterschiedlichster Sprachen ist die Stärke des Plug-ins. Durch das Kommando <leader>ci wird eine Zeile auskommentiert, wenn diese schon kommentiert ist, wird diese wieder einkommentiert. In einer C-Datei oder Java-Datei ist das Kommentar-Zeichen "//", in Bash-Skripten ist dieses ein "#".
    Download

    nerdtree

    Das Navigieren durch die Verzeichnisse in einer Baumstruktur ist möglich.
    Download

    fugitive

    Das Versionsverwaltungssytem Git wird durch dieses Plug-in in VIM implementiert bzw. die Arbeit damit wird vereinfacht.
    Download

    repeat

    Normalerweise kann man den letzten Befehl durch Drücken des Punkts wiederholen. Leider funktioniert das nicht bei Plug-ins. Durch dieses Plug-in sollte es möglich sein, das zu tun. In meinem Fall ist das leider nicht so.
    Download

    surround

    Das nachträglich Umschließen von Wörtern oder anderen Zeichenketten mit Anführungszeichen oder Klammern ist damit ein Kinderspiel. Es lassen sich unter anderem auch Zeilen durch HTML-Tags umschließen.
    Download

    unimpaired

    Dieses Plug-in setzt einige Tastenkombinationen für bestimmte Befehle. Ein Paar sind hier aufgeführt:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    [...]
    [b :bprevious
    ]b :bnext
    [B :bfirst
    ]B :blast
    [...]
    [q :cprevious
    ]q :cnext
    [Q :cfirst
    ]Q :clast
    [...]
    [b :bprevious
    ]b :bnext
    [B :bfirst
    ]B :blast
    [...]
    [q :cprevious
    ]q :cnext
    [Q :cfirst
    ]Q :clast

    Eine nette Funktion ist das Einfügen von Leerzeilen vor oder nach der Curserposition. Dies ist auch durch das Drücken einer Zahl wiederholbar. Das Verschieben einer Zeile oder das Encoding und Decoding von URLs oder von XML ist möglich:

    <foo bar="baz"> => &lt;foo bar=&quot;baz&quot&gt;

    Download

    align

    Ein weiteres Ausrichtungs-Plug-in (siehe Tabular), das auch das Ausrichten von LaTeX-Tabellen ermöglicht.
    Download

    AutoAlign

    Automatisiertes Ausrichten von Variablenzuweisungen.
    Download

    LaTeX-Suite

    Ich schreibe meine Dokumentationen nur noch mit dem Textsatzsystem LaTeX. Dieses hervorragende Plug-in ermöglicht ein schnelles Schreiben von Texten, ohne, dass man sich immer mit den Formatierungsbefehlen herumschlagen muss. Durch einfache Tastenfolgen wird ein Formatierungstag geöffnet. Es ist damit auch möglich markierte Textstellen komfortabel zu formatieren. Natürlich gibt es Snippets für Tabellen, Figuren und Bildern, um wenige Beispiele zu nennen.
    Download

    gundo

    In VIM wird die Geschichte nicht linear gespeichert. Das heißt, dass man bei einer veränderten Zwischenänderung (Punkt 3 im Beispiel) auch wieder an den aktuellen Anfang kommt.

    Beispiel:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    @  [4] 3 hours ago
    |
    | o  [3] 4 hours ago
    | |
    o |  [2] 4 hours ago
    |/
    o  [1] 4 hours ago
    |
    o  [0] Original
    @  [4] 3 hours ago
    |
    | o  [3] 4 hours ago
    | |
    o |  [2] 4 hours ago
    |/
    o  [1] 4 hours ago
    |
    o  [0] Original

    Dieses Plug-in visualisiert die Verästelungen in der History der Änderungen einer Datei sehr schön. Durch dieses Plug-in ist ein Unterschied zu den verschiedenen Versionene einer Datei leicht erkennbar, da diese Veränderungen hervorgehoben werden.
    Download

    searchcomplete

    Damit ist die Vervollständigung von Zeichen auch bei einer Suche möglich.
    Download

    fswitch

    Das Navigieren unter anderem zwischen cpp-Dateien und den dazu gehörigen Header-Dateien ist damit möglich.
    Download

    xml

    Das Hinzufügen, Ändern und Löschen von Tags ist die hauptsächliche Aufgabe dieses Plug-ins.
    Download

    xptemplate

    Snippets sind sehr hilfreich, wenn man Code schreibt. Damit ist es nicht mehr nötig, u.a. syntaktische Klammern zu setzen.
    Download

    matchit

    Durch die Taste “%” gelangt man zur gegenseitigen Klammer bei einem Klammerpaar. Durch dieses Plug-in ist das unter anderem auch bei XML-, HTML- und LaTeX-Tags möglich.
    Download

    visincr

    Das Inkrementieren (Wert = Wert+1) von Buchstaben oder Zahlen (auch römisch) ist damit kein Problem. Es werden die Werte blockweise markiert und durch das Eingeben von :IA werden die Buchstaben in jeder Zeile erhöht (siehe Beispiel).

    Beispiel:

    1
    2
    3
    
    int a;
    int a;
    int a;
    int a;
    int a;
    int a;

    wird zu:

    1
    2
    3
    
    int a;
    int b;
    int c;
    int a;
    int b;
    int c;

    Download

    omnicppcomplete

    Schreibt man C++ Quellcode und möchte wissen, welche Attribute in einem Objekt vorkommen, sollte man dieses Plug-in nutzen.
    Download

    easygrep

    Siehe meinen Artikel zu diesem Plug-in.
    Download

    sqlcomplete

    Eine Autocompletion für SQL-Sprachen wie Oracle, MySQL, etc. wird damit bereit gestellt. Das dynamische Vervollständigen von Datenbankeinträgen ist mit einem weiteren Plug-in (dbext.vim) für die Datenbankanbindung möglich.
    Download

    taglist

    Damit kann man sich alle Variablen, Methoden, Funktionen, etc. in einem eigenen Fenster anzeigen lassen. Durch dieses lässt sich navigieren, nach einem Bestätigen springt man direkt zur Deklaration.
    Download

    c

    Plug-in für die Programmiersprache C. Damit werden Snippets und zum Beispiel das Einfügen von personalisierten Kommentaren bereit gestellt. Das Kompilieren, Linken und Ausführen eines C-Programms ist damit möglich. Fehler werden in einem Quickfix-Fenster angezeigt.
    Download

    csscolor

    Der Hintergrund des Farbcodes in einem CSS nimmt die Farbe dessen an.
    Download

    jcommenter

    Kommentieren von Java-Quellcode insbesondere für Javadoc.
    Download

    vimshell-ssh

    Zugreifen auf eine externe VIM-Sitzung über SSH.
    Download

    ShowPairs

    Das Hervorheben von passenden Klammern ist hilfreich, um den Überblick zu behalten.
    Download

    ragtag

    Nützliche Tastenkombinationen (Mappings) für HTML, XML, php uvm.
    Download

    checklist

    Plug-in, um leicht eine Checkliste zu verwalten. Das Hinzufügen einer neuen Aufgabe und das Löschen dieser ist die Hauptaufgabe.
    Download

    Wer kennt es nicht, man möchte sich ein Video bei Youtube angucken und bekommt die Meldung „Dieses Video ist in Ihrem Land nicht verfügbar.“ Um trotzdem in den Genuss des Videos zu kommen musste man bis jetzt immer einen Proxy bzw. Anonymisierungsdienst installieren/konfigurieren.

    Mit hidemyass geht es wesentlich schneller seine Online-Identität zu verschleiern, bzw. sich eine ausländische IP zuzulegen. Damit ist es auf die Schnelle möglich z. B. sich das Youtube Video seiner Wahl anzugucken. Hierzu einfach den Youtube-Link zum Video eingeben und los gehts.

    Es gibt auch ein Firefox- / Iceweasel-AddOn:

    Why use a web proxy?
    1. Surf websites anonymously.
    2. Hide and change your IP address (your ‘online fingerprint’).
    3. Conceal your web browsing history.
    4. SSL encryption for all websites.
    5. Bypass web filters and geographic internet blocks.

    What makes Hide My Ass! different?
    1. No third-party advertisements or annoying popups.
    2. Works with popular video websites such as YouTube and adult tubes.
    3. Various IP addresses to use, not just one.
    4. Proxy servers in multiple countries.
    5. SSL/HTTPS for all servers.

    Extension features:
    1. One click proxy. Whilst already browsing a website, click the extension icon to browse the website anonymously. Alternatively click the icon on a new tab to be shown a web proxy form and specify a website to proxify.
    2. Select one of 20 web proxy domain names (not just HideMyAss.com).
    3. Select a specific web proxy server (USA, UK, NL).
    4. URL obfuscation. Choose between encoded and encrypted web proxy URL’s.
    5. SSL encryption. Choose between HTTP and HTTPS web browsing.
    6. Option to always launch web proxy in incognito mode for increased anonymity.
    7. Option to always launch the web proxy in a new tab.
    8. Option to always ask for manual URL entry (and not redirect based on address bar entries).

    Zudem ist es ein einfacher Weg Zensurmechanismen zu umgehen, so lange die Seite vom Provider/Staat/wem auch immer nicht geblockt wird.


    15. Juni 2011

    Für eine Testumgebung musste ich heute 30 neue Maschinen installieren. Und da ich zu faul war, alles von Hand zu installieren, musste eine andere Lösung her.
    Da ich Cobbler, ein System aus dem Hause Red Hat, bereits kenne, war dies mein erster Gedanke – auch wenn es an Vergewaltigung grenzt, schliesslich will ich ja openSUSE 11.4 installieren! :D

    Also habe ich ein System von Hand aufgesetzt und darauf Cobbler samt Webinterface und TFTP installiert:

    zypper ar http://download.opensuse.org/distribution/11.4/repo/oss/ oss
    zypper ar http://download.opensuse.org/update/11.4/ updates
    zypper ar http://download.opensuse.org/repositories/systemsmanagement/openSUSE_11.4/ cobbler
    zypper ref -s
    zypper install apache2-mod_python
    zypper install cobbler cobbler-web atftp dhcp-server
    

    Da ich während dem Installieren nicht ungebetene Besucher in meinem System will, aktiviere ich die Authentifizierung für das Webinterface:

    sed -i 's/module = authn_denyall/module = authn_configfile/' /etc/cobbler/modules.conf
    

    Dann muss ich noch die passende IP einfügen:

    IP="192.168.1.10"
    sed -i "s/^server: 127.0.0.1/server: $IP/" /etc/cobbler/settings
    sed -i "s/^next_server: 127.0.0.1/next_server: $IP/" /etc/cobbler/settings
    

    Da meine Maschinen auch gleich via Netzwerk booten sollen, muss ich den DHCP noch an Cobbler übergeben:

    sed -i 's/^manage_dhcp: 0/manage_dhcp: 1/' /etc/cobbler/settings
    

    Nun darf die dhcpd.conf-Datei nicht mehr direkt bearbeitet werden. Dazu gibt es nun das Template unter /etc/cobbler/dhcpd.template:

    # ******************************************************************
    # Cobbler managed dhcpd.conf file
    #
    # generated from cobbler dhcp.conf template ($date)
    # Do NOT make changes to /etc/dhcpd.conf. Instead, make your changes
    # in /etc/cobbler/dhcp.template, as /etc/dhcpd.conf will be
    # overwritten.
    #
    # ******************************************************************
    
    ddns-update-style interim;
    
    allow booting;
    allow bootp;
    
    ignore client-updates;
    set vendorclass = option vendor-class-identifier;
    
    subnet 192.168.1.0 netmask 255.255.255.0 {
         option routers             192.168.1.1;
         option domain-name-servers 192.168.1.9;
         option subnet-mask         255.255.255.0;
         range dynamic-bootp        192.168.1.150 192.168.1.254;
         filename                   "pxelinux.0";
         default-lease-time         21600;
         max-lease-time             43200;
         next-server                $next_server;
    }
    
    #for dhcp_tag in $dhcp_tags.keys():
        ## group could be subnet if your dhcp tags line up with your subnets
        ## or really any valid dhcpd.conf construct ... if you only use the
        ## default dhcp tag in cobbler, the group block can be deleted for a
        ## flat configuration
    # group for Cobbler DHCP tag: $dhcp_tag
    group {
            #for mac in $dhcp_tags[$dhcp_tag].keys():
                #set iface = $dhcp_tags[$dhcp_tag][$mac]
        host $iface.name {
            hardware ethernet $mac;
            #if $iface.ip_address:
            fixed-address $iface.ip_address;
            #end if
            #if $iface.hostname:
            option host-name "$iface.hostname";
            #end if
            #if $iface.subnet:
            option subnet-mask $iface.subnet;
            #end if
            #if $iface.gateway:
            option routers $iface.gateway;
            #end if
            filename "$iface.filename";
            ## Cobbler defaults to $next_server, but some users
            ## may like to use $iface.system.server for proxied setups
            next-server $next_server;
            ## next-server $iface.next_server;
        }
            #end for
    }
    #end for
    

    Und damit die Maschinen auch nicht ewig neustarten, wird noch eine letzte Anpassung durchgeführt:

    sed -i 's/^pxe_just_once: 0/pxe_just_once: 1/' /etc/cobbler/settings
    

    Nach dem neustarten der Services und einer letzten Einstellung ist die Installation schon abgeschlossen:

    insserv apache2
    insserv cobblerd
    insserv dhcpd
    rcapache2 restart
    rccobblerd restart
    rcatftpd start
    insserv atftpd
    sed -i 's/^DHCPD_INTERFACE=""/DHCPD_INTERFACE="eth0"/' /etc/sysconfig/dhcpd
    cobbler get-loaders
    cobbler sync
    rm -f /etc/dhcpd.conf
    ln -s /etc/dhcp/dhcpd.conf /etc/dhcpd.conf
    rcdhcpd restart
    rccobblerd restart
    cobbler sync
    

    Einloggen kann ich mich nun unter http://192.168.1.10/cobbler_web mit dem Benutzername “cobbler” und dem Passwort “cobbler”.

    Nun muss ich openSUSE zu Cobbler zufügen. Dazu lade ich zuerst das Image herunter und mounte es unter /mnt:

    wget http://mirror.switch.ch/ftp/mirror/opensuse/distribution/11.4/iso/openSUSE-11.4-DVD-x86_64.iso
    mount -o loop -t iso9660 openSUSE-11.4-DVD-x86_64.iso /mnt
    

    Dann kann ich das Image hinzufügen im GUI über den Punkt “Import DVD” und unter “Profile” ein neues Profil anlegen:

    Doch bevor das geht, muss ich eine Kickstart-Datei erstellen. Diese wird unter /var/lib/cobbler/kickstart angelegt. Eine solche Datei kann mit autoyast2 generiert werden. Am Schluss würde alles dann etwa so aussehen:

    <?xml version="1.0"?>
    <!DOCTYPE profile>
    <profile xmlns="http://www.suse.com/1.0/yast2ns" xmlns:config="http://www.suse.com/1.0/configns">
      <firewall>
        <enable_firewall config:type="boolean">false</enable_firewall>
        <start_firewall config:type="boolean">false</start_firewall>
      </firewall>
      <general>
        <ask-list config:type="list"/>
        <mode>
          <confirm config:type="boolean">false</confirm>
          <final_reboot config:type="boolean">true</final_reboot>
        </mode>
        <mouse>
          <id>none</id>
        </mouse>
        <proposals config:type="list"/>
        <signature-handling>
          <accept_file_without_checksum config:type="boolean">true</accept_file_without_checksum>
          <accept_non_trusted_gpg_key config:type="boolean">true</accept_non_trusted_gpg_key>
          <accept_unknown_gpg_key config:type="boolean">true</accept_unknown_gpg_key>
          <accept_unsigned_file config:type="boolean">true</accept_unsigned_file>
          <accept_verification_failed config:type="boolean">true</accept_verification_failed>
          <import_gpg_key config:type="boolean">true</import_gpg_key>
        </signature-handling>
      </general>
     <networking>
        <keep_install_network config:type="boolean">true</keep_install_network>
          <dns>
            <dhcp_hostname config:type="boolean">true</dhcp_hostname>
            <dhcp_resolv config:type="boolean">true</dhcp_resolv>
            <hostname>$hostname</hostname>
          </dns>
      </networking>
     <partitioning config:type="list">
            $SNIPPET('snippets_sles/partitioning_default_lvm_sles11')
      </partitioning>
      <software>
            $SNIPPET('snippets_sles/packages_os11')
      </software>
      <timezone>
        <hwclock>UTC</hwclock>
        <timezone>Europe/Zurich</timezone>
      </timezone>
      <users config:type="list">
        <user>
          <encrypted config:type="boolean">true</encrypted>
          <fullname>root</fullname>
          <gid>0</gid>
          <home>/root</home>
          <password_settings>
            <expire></expire>
            <flag></flag>
            <inact></inact>
            <max></max>
            <min></min>
            <warn></warn>
          </password_settings>
          <shell>/bin/bash</shell>
          <uid>0</uid>
          <user_password>$rootpw</user_password>
          <username>root</username>
        </user>
      </users>
      <report>
        <errors>
          <log config:type="boolean">true</log>
          <show config:type="boolean">true</show>
          <timeout config:type="integer">0</timeout>
        </errors>
        <messages>
          <log config:type="boolean">true</log>
          <show config:type="boolean">true</show>
          <timeout config:type="integer">0</timeout>
        </messages>
        <warnings>
          <log config:type="boolean">true</log>
          <show config:type="boolean">true</show>
          <timeout config:type="integer">0</timeout>
        </warnings>
        <yesno_messages>
          <log config:type="boolean">true</log>
          <show config:type="boolean">true</show>
          <timeout config:type="integer">0</timeout>
        </yesno_messages>
      </report>
      <runlevel>
        <default>5</default>
          <service>
            <service_name>sshd</service_name>
            <service_start>3 5</service_start>
            <service_status>enable</service_status>
          </service>
      </runlevel>
      <scripts>
        <post-scripts config:type="list">
          <script>
            <debug config:type="boolean">false</debug>
            <feedback config:type="boolean">false</feedback>
            <feedback_type></feedback_type>
            <filename>post_install</filename>
            <interpreter>shell</interpreter>
            <location><![CDATA[]]></location>
            <network_needed config:type="boolean">true</network_needed>
            <notification>Bitte warten ...</notification>
            <source><![CDATA[/etc/init.d/sshd restart
    echo 'search encodingit.ch' >> /etc/resolv.conf
    chkconfig sshd on
    zypper update -y
    zypper dist-upgrade -y
    cd /root
    mkdir --mode=700 .ssh
    cat >> .ssh/authorized_keys << "PUBLIC_KEY"
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/tGYAdCxqFs8xuryisenGmk4ChEutd3Xi7WfMZsafMyGrvtBBFWUInKeF7G3GE85AxP4G4wOdn2Au3k23jSpfvbP5O/NIEMNizlzMFChu7NDC57NwMm/n+/Y6HMgHZs+LVavKrVP9MUMfif3+odOUYVxK+8BwP8So1K21UJcIgYhd48Fqw9aBYd+jXvg/QFAnXGCIARNsn51kkWYci9LuoApVg0ktJjnHIvxgs75hZsmiXH/VqU/MCv90oe0OBN1C4vABN5XIPjzOZ0HX8MQBITAdujjWqdqzictkz5vk6O0QWDVxzsxz4wgJgnF7fEGxd7t/8mInzEqMbJe4C/iJ root@cobbler
    PUBLIC_KEY
    chmod 600 .ssh/authorized_keys]]></source>
          </script>
        </post-scripts>
      </scripts>
    </profile>
    

    ACHTUNG: Wer wie ich kein DNS im Netzwerk hat, der muss unter dem Punkt “Distro” bei “Kernel Options” den Hostnamen von Cobbler durch die IP ersetzen, damit alles klappt.

    Damit auch alles problemlos durchläuft, müssen noch ein paar Snippets eingefügt werden unter /var/lib/cobbler/snippets/snippets_sles. So partitioning_default_lvm_sles11:

    # requires: ksmeta Swap : (optional) containing the size of swap in megabytes
        <drive>
          <initialize config:type="boolean">true</initialize>
          <partitions config:type="list">
            <partition>
              <create config:type="boolean">true</create>
              <crypt_fs config:type="boolean">false</crypt_fs>
              <filesystem config:type="symbol">ext3</filesystem>
              <format config:type="boolean">true</format>
              <loop_fs config:type="boolean">false</loop_fs>
              <mount>/boot</mount>
              <mountby config:type="symbol">device</mountby>
              <partition_id config:type="integer">131</partition_id>
              <partition_nr config:type="integer">1</partition_nr>
              <resize config:type="boolean">false</resize>
              <size>500M</size>
            </partition>
            <partition>
              <create config:type="boolean">true</create>
              <lvm_group>vg00</lvm_group>
              <mountby config:type="symbol">device</mountby>
              <partition_id config:type="integer">142</partition_id>
              <partition_nr config:type="integer">2</partition_nr>
              <resize config:type="boolean">false</resize>
              <size>max</size>
            </partition>
          </partitions>
          <pesize></pesize>
          <type config:type="symbol">CT_DISK</type>
          <use>all</use>
        </drive>
        <drive>
          <device>/dev/vg00</device>
          <initialize config:type="boolean">true</initialize>
          <partitions config:type="list">
            <partition>
              <create config:type="boolean">true</create>
              <crypt_fs config:type="boolean">false</crypt_fs>
              <filesystem config:type="symbol">swap</filesystem>
              <format config:type="boolean">true</format>
              <loop_fs config:type="boolean">false</loop_fs>
              <lv_name>lv_swap</lv_name>
              <mount>swap</mount>
              <mountby config:type="symbol">device</mountby>
              <partition_id config:type="integer">130</partition_id>
              <resize config:type="boolean">false</resize>
    #if $getVar("Swap","") != ""
              <size>${Swap}M</size>
    #else
              <size>2048M</size>
    #end if
            </partition>
            <partition>
              <create config:type="boolean">true</create>
              <crypt_fs config:type="boolean">false</crypt_fs>
              <filesystem config:type="symbol">ext3</filesystem>
              <format config:type="boolean">true</format>
              <loop_fs config:type="boolean">false</loop_fs>
              <lv_name>lv_root</lv_name>
              <mount>/</mount>
              <mountby config:type="symbol">device</mountby>
              <partition_id config:type="integer">131</partition_id>
              <resize config:type="boolean">false</resize>
              <size>max</size>
            </partition>
          </partitions>
          <pesize>4M</pesize>
          <type config:type="symbol">CT_LVM</type>
          <use>all</use>
        </drive>
    

    Und auch noch packages_os11:

    <patterns config:type="list">
          <pattern>base</pattern>
          <pattern>apparmor</pattern>
          <pattern>gnome</pattern>
          <pattern>file_server</pattern>
          <pattern>x11</pattern>
        </patterns>
        <packages  config:type="list">
          <package>nss_ldap</package>
          <package>pam_ldap</package>
    ## required for kdump
          <package>kexec-tools</package>
          <package>kdump</package>
        </packages>
    

    Nun kann ich alle Systeme erfassen und zufügen. Da dies mehrere sind, habe ich das ganze über die Konsole gemacht:

    hostname=Node1
    mac=00:14:4F:20:03:08
    ip=192.168.1.21
    cobbler system edit --name=$hostname --hostname=$hostname.encodingit.ch --netboot-enable=true --dhcp-tag=$hostname --dns-name=$hostname --ip-address=$ip --mac-address=$mac
    

    Zum Glück starten alle Maschinen direkt ab Netzwerk, wodurch ich die Maschinen nur via iLO neustarten musste. Dazu wiederrum habe ich das folgende Script mit expect geschrieben, wo ich nur noch den Hostnamen oder die IP vom iLO übergeben muss:

    #!/usr/bin/expect
    #
    # Version 1.0
    # by Patrick Schmid
    #
    spawn ssh root@[lindex $argv 0]
    
    expect "Password:" {send "password\r"}
    
    expect "> " {send "reset /SYS -script\r"}
    
    expect {
            "Performing" {puts stdout "\nDone"}
      default {puts stdout "\nError"}
    }
    

    Doch vorher noch das System synchronisieren:

    cobbler sync
    

    Nach etwa 20 Minuten sind alle Systeme installiert und konfiguriert. Voilà :)

    Vielen Dank an Gavin und Uwe für die Hilfe!


    Das könnte dich auch interessieren:

    1. OpenSUSE mit ASP.NET-Unterstützung
    2. Dynamic Host Configuration Protocol

    Letztens fiel es mir wie Schuppen von den Augen, seit Jahren nutze ich diverse Freie Software auf meinen Rechnern. Anfangs war das Angebot, abgesehen von linuxspezifischer Software, sehr sparsam gesät. Nun hat sich meiner Meinung nach in der Sofwarekultur einiges geändert, Benutzer wenden sich teilweise oder ganz von propritärer Software ab, hin zu Freier Software. Auch vor Entwicklern macht dieser Trend nicht halt, durch das steigende Nutzeraufkommen steigt auch die Zahl der Entwickler im Bereich Open Source / Freier Software. Oder der Trend ist umgekehrt? ;) Durch die steigende Entwicklerzahl, den freien Quelltext und die Motivation entstehen schon fast unzählbare Projekte.

    Es fängt an bei der Wahl des freien Betriebssystems es gibt den Linuxkernel(von den gefühlten 10.000 Distributionen möchte ich gar nicht anfangen, diese aufzuzählen), die BSDs, Haiku oder GNU Hurd um die bekannteren zu nennen. Noch mehr Qual der Wahl hat man bei der Desktop Oberfläche. Seit den Anfängen Freie Software hat sich viel getan, heute gibt es freie Sofwarealternativen für den otto-normalo Desktop-User wie Sand am mehr, auch ein Großteil der Server wird mit freier Software betrieben.

    Doch ist diese Diversifikation im Bereich Open Source Softare Fluch oder Segen für die Projekte, Verbreitung und Akzeptanz?

    Projekte

    Auch in der (freien) Softwarewelt gibt es das Artensterben, Entwickler wenden sich von einem Projekt ab und gründen ein neues bzw. unterstützen ein alternatives Projekt (Bsp. Sidux – Aptosid, Xfree86 – X, OpenOffice.Org – Libreoffice). Dieser Evolutionszyklus erinnert mich an den Darwinismus „Überleben des Stärkeren“ (Fitteren/Schlaueren/Anpassbarsten) Oder wers lieber kapitalistisch sieht, die Selbstreinigung des Marktes.

    Was sich bei der Vielfalt des Lebens bewährt hat, bringt auch neue Arten in der Software Welt hervor. Das bedeutet schlichtweg, nicht mehr zeitgemäße oder Fehlentwicklungen werden ausgesondert bzw. gehen in neue Projekte über. So werden keine Ressourcen verheizt und User-Nerven geschont.

    Verbreitung

    Die Artenvielfalt bei Freier Software wirkt sich natürlich auch auf die Verbreitung aus, sie läuft auf einer Vielzahl von Prozessorarchitekturen, auf den meisten Betriebssystemen (Linux, BSD, Windows, Mac OS, iOS, Android, Haiku etc.), auf Desktops so wie auf Servern. Meist gibt es zu einer bestimmten Software zig Alternativen, z. B. Musikspieler (Amarok, Clementine, Banshee, Rhythmbox, XMMS, Aqualung, aTunes, Audacious usw. usf.) Hier sollte für jeden Geschmack etwas dabei sein.

    Aktzeptanz

    Beim Heimnutzer ist freie Software bereits angekommen, ob es sich dabei um Desktopsoftware, Handys, den Kühlschrank oder das Auto handelt, oft weiß der Nutzer gar nicht, dass er Freie Software benutzt. Den meisten Exemplaren ist es oft egal ob es sich um Freie oder propritäre Software handelt, Hauptsache sie funktioniert so, wie sie sich das vorstellen.

    In der Firmenwelt sieht die Sache leider ganz anders aus, viele Verantworliche bestehen auf Support Seitens des Herstellers, feste Ansprechpartner, feste Releasezyklen oder andere Anforderungen die Freie Software (noch) nicht erfüllt. Schade eigentlich, hier könnte im nicht unternehmenskritischen Bereich schon massenhaft Lizenzgebühren eingespart werden, als Beispiel führe ich mal den Einsatz von PDF Creator anstatt von Adobe Acrobat Pro an. Für Nutzer, die lediglich aus einer Büroanwendung PDFs genierieren wollen, sollte diese Software ausreichend sein. Aus eigener Erfahrung weiß ich aber, dass die Verantwortlichen für die Softwareauswahl einer Firma teilweise haarstreubende Argumente anbringen um den Einsatz von Open Source zu verhindern. Teilweise aus Unwissenheit gepaart mit Ignoranz, teilweise aus Angst vor Sicherheitslücken die angeblich lange nicht gefixt werden. Man blicke doch nur mal krisch auf Adobe (Flash Player) und MS (Patch-Day)… Wie dem auch sei, es muss sich in den Köpfen der Verantwortlichen entwas ändern.

    Auf jeden Fall sehe ich Freie Software auch in Zukunft im Aufwind, für mich ist es nur eine Frage der Zeit, bis Open Source auch Unternehmen _flächendeckend_ erreicht, im Bereich Heimwanwender hat sie schon vorgemacht wie es geht! :)
    Und zum Schluss noch mal ein dickes Dankeschön an die freiwilligen Entwickler und Unterstützer (User helfen User) in den unüberschaubaren Open Source Projekten für ihre in ihrer Freizeit geleistete Arbeit! :)


    Habe am Wochenende ein Grafiktablett der Marke Hanvon erstanden. Ein Art Master 0806. Musste dann jedoch leider feststellen, dass es sich nicht wirklich auf meinem Debian oder Ubuntu laufen wollte. 457505 150x98 Hanvon Art Master Treiber für Linux

    Nach ein wenig Recherche habe ich ein initial Release eines Treibers gefunden der leider auch nicht funktionieren wollte. Zumindest was das Pressure (also die Druckempfindlichkeit) angeht.

    Habe mich also kurzer Hand mit Ond, dem Entwickler, kurzgeschlossen und wir sind gemeinsam der Sache auf den Grund gegangen. Binnen 2 Tagen lief der Treiber komplett mit allen Features.

    Anleitung für den Treiber :

    • Der Treiber muss selbst kompiliert werden.
    • Treiber herunterladen
    • Tar-Archiv entpacken mit ‘tar xfvz [ARCHIVNAME].tgz’
    • mit ‘cd’ in das Verzeichnis wechseln indem der Treiber liegt
    • Mit ‘make’ compilieren
    • Wenn keine Fehlermeldungen auftauchen kann der Treiber mit ‘insmod hanvon.ko’ eingebunden werden
    • Das Tablett sollte jetzt sofort verwendbar sein

    Wenn ihr Probleme habt stehe ich gerne mit Rat und Tat zur Seite

    Der Treiber funktioniert mit folgenden Modellen:

    • Hanvon Artmaster 0806,1107 and the 1209
    • Rollik RL0604, RL0504
    • Hanvon Armaster III (AM3M)
    • GraphicPal 0806

    Sollte jemand es mal mit einem anderen Modell versuchen wäre es sehr nett, wenn man mir berichten würde

    Wenn ihr den Treiber direkt nach dem Booten geladen haben wollt müsst ihr die hanvon.ko nach /lib/modules/”dein-kernel”/kernel/drivers/input/tablet verschieben.

    mv ./hanvon.ko /lib/modules/$(uname -r)/kernel/drivers/input/tablet

    und die Moduldatenbank neu einlesen.

    depmod

    anschließend noch hanvon in /etc/modules eintragen

    echo “hanvon” &gt; /etc/modules

    Jetzt sollte das Modul automatisch beim nächsten Boot geladen werden. Testen könnt ihr das jetzt schon mal mit:

    modprobe hanvon

    Wenn keine Fehlermeldungen erscheinen ist alles richtig.

    Edit1: Markus Zucker hat einen Patch zur Verfügung gestellt, der den Treiber für das Hanvon Artmaster AM 1209 lauffähig macht

    Edit2: Stephan hat mich angeschrieben weil sein 1107 nicht lieft. Habe den Treiber erweitert und er funktioniert jetzt auch mit diesem Modell.

    14. Juni 2011

    XBMC mit der X10 Funkfernbedienung fernzusteuern war bei Ubuntu recht schnell eingerichtet. Bei Arch Linux hingegen habe ich mich etwas schwer getan – nicht zuletzt weil die Konfigurationsdateien an einem anderen Ort liegen. Auch die Kernelmodule des neuen Linux-Kernels wie ati_remote, lirc_atiusb & lirc_dev haben mich 4 Stunden meines Lebens gekostet. icon sad

    Zuerst installieren wir den Linux Infrared Remote Control, …

    pacman -S lirc

    oder

    yaourt -S lirc

    Yet AnOther User Repository Tool – yaourt

    “Yet AnOther User Repository Tool”. yaourt ist eine Erweiterung für pacman, welche die Benutzung des AURs direkt aus dem Paketmanager heraus erlaubt. Die meisten Installationsanfragen werden direkt an pacman weitergeleitet, yaourt unterstützt auch die selbe Syntax wie pacman. Es ist möglich, mit yaourt Software direkt aus dem AUR zu bauen und zu installieren. (Quelle: https://wiki.archlinux.de/title/Yaourt)

    … dann passen wir die lircd.conf unter /etc/conf.d unseren Bedürfnissen an.

    vi /etc/conf.d/lircd.conf
    LIRC_DEVICE="/dev/lirc0"
    LIRC_DRIVER="atilibusb"
    #REMOTE_MODULES="lirc_atiusb"
    LIRC_EXTRAOPTS=""
    LIRC_CONFIGFILE="/etc/lirc/X10.conf"

    In rc.conf müssen wir 3 Kernelmodule auf die Blacklist (!) setzen und einen neuen Dienst automatisch starten lassen.

    UPDATE: Die Module werden jetzt nicht mehr über die /etc/rc.conf geblacklistet sondern über die /etc/modprobe.d/blacklist.conf. (Quelle) [Danke - an die Kommentatoren]

    vi /etc/rc.conf
    ...
    MODULES=(... !ati_remote !lirc_atiusbi !lirc_dev)
    ...
    DAEMONS=(syslog-ng dbus hal network netfs crond sshd alsa lircd)

    Zu guter Letzt müssen wir noch die X10.conf, Lircmap.xml & Keyboard.xml erstellen, diese gibt es hier zum Download. icon wink

    vi /etc/lirc/X10.conf
    # Please make this file available to others
    # by sending it to <lirc@bartelmus.de>
    #
    # this config file was automatically generated
    # using lirc-0.8.4a(atilibusb) on Mon Apr  6 08:53:57 2009
    #
    # contributed by
    #
    # brand: PC-Funkfernbedienung X10
    # model no. of remote control:
    # devices being controlled by this remote:
    #
    
    begin remote
    
      name  x10
      bits           16
      eps            30
      aeps          100
    
      one             0     0
      zero            0     0
      pre_data_bits   8
      pre_data       0x14
      post_data_bits  16
      post_data      0x0
      gap          139990
      min_repeat      2
      toggle_bit_mask 0x80800000
    
          begin codes
              livetv                   0xF11C
              rectv                    0x6D98
              photo                    0xDA05
              music                    0x5B86
              dvdmenu                  0xD904
              video                    0x82AD
              audio                    0x0732
              angle                    0x89B4
              title                    0x0A35
              subtitle                 0x88B3
              up                       0xEF1A
              down                     0x77A2
              left                     0xF21D
              right                    0x749F
              ok                       0xF31E
              1                        0x628D
              2                        0xE30E
              3                        0x648F
              4                        0xE510
              5                        0x6691
              6                        0xE712
              7                        0x6893
              8                        0xE914
              9                        0x6A95
              0                        0xEC17
              asterisk                 0x8CB7
              hash                     0x0D38
              world                    0x709B
              rewind                   0xF924
              play                     0x7AA5
              forward                  0xFB26
              pause                    0x7EA9
              previous                 0xF621
              next                     0x78A3
              stop                     0xFD28
              record                   0x7CA7
              off                      0xD702
              guide                    0x86B1
              text                     0xEB16
              volume+                  0x5E89
              volume-                  0xDD08
              mute                     0x5580
              program+                 0xE00B
              program-                 0x618C
              back                     0xF520
              info                     0x84AF
          end codes
    
    end remote
    vi /home/USERNAME/.xbmc/userdata/Lircmap.xml
    <lircmap>
    <remote device="x10">
       <obc1>livetv</obc1>
       <obc2>rectv</obc2>
       <obc3>photo</obc3>
       <obc4>music</obc4>
       <obc5>dvdmenu</obc5>
       <obc6>video</obc6>
       <obc7>audio</obc7>
       <obc8>angle</obc8>
       <obc9>title</obc9>
       <obc10>subtitle</obc10>
       <obc11>up</obc11>
       <obc12>down</obc12>
       <obc13>left</obc13>
       <obc14>right</obc14>
       <obc15>ok</obc15>
       <obc16>1</obc16>
       <obc17>2</obc17>
       <obc18>3</obc18>
       <obc19>4</obc19>
       <obc20>5</obc20>
       <obc21>6</obc21>
       <obc22>7</obc22>
       <obc23>8</obc23>
       <obc24>9</obc24>
       <obc25>0</obc25>
       <obc26>asterisk</obc26>
       <obc27>hash</obc27>
       <obc28>world</obc28>
       <obc29>rewind</obc29>
       <obc30>play</obc30>
       <obc31>forward</obc31>
       <obc32>pause</obc32>
       <obc33>previous</obc33>
       <obc34>next</obc34>
       <obc35>stop</obc35>
       <obc36>record</obc36>
       <obc37>off</obc37>
       <obc38>guide</obc38>
       <obc39>text</obc39>
       <obc40>volume+</obc40>
       <obc41>volume-</obc41>
       <obc42>mute</obc42>
       <obc43>program+</obc43>
       <obc44>program-</obc44>
       <obc45>back</obc45>
       <obc46>info</obc46>
    </remote>
    </lircmap>
    vi /home/USERNAME/.xbmc/userdata/keymaps/Keyboard.xml
    <!-- This file contains the mapping of keys (gamepad, remote, and keyboard) to actions within XBMC -->
    <!-- The <global> section is a fall through - they will only be used if the button is not          -->
    <!-- used in the current window's section.  Note that there is only handling                       -->
    <!-- for a single action per button at this stage.                                                 -->
    <!-- For joystick/gamepad configuration under linux/win32, see below as it differs from xbox       -->
    <!-- gamepads.                                                                                     -->
    
    <!-- The format is:                      -->
    <!--    <device>                         -->
    <!--      <button>action</button>        -->
    <!--    </device>                        -->
    
    <!-- To map keys from other remotes using the RCA protocol, you may add <universalremote> blocks -->
    <!-- In this case, the tags used are <obc#> where # is the original button code (OBC) of the key -->
    <!-- You set it up by adding a <universalremote> block to the window or <global> section:       -->
    <!--    <universalremote>             -->
    <!--       <obc45>Stop</obc45>         -->
    <!--    </universalremote>            -->
    <!-- To find out the OBC's of your remote, try enabling the <displayremotecodes> tag in AdvancedSettings.xml -->
    
    <!-- Note that the action can be a built-in function.                 -->
    <!--  eg <B>XBMC.ActivateWindow(MyMusic)</B>                         -->
    <!-- would automatically go to My Music on the press of the B button. -->
    
    <!-- Joysticks / Gamepads:                                                                    -->
    <!--   See the sample PS3 controller configuration below for the format.                      -->
    <!--                                                                                          -->
    <!--  Joystick Name:                                                                          -->
    <!--   Do 'cat /proc/bus/input/devices' or see your xbmc log file  to find the names of       -->
    <!--   detected joysticks. The name used in the configuration should match the detected name. -->
    <!--                                                                                          -->
    <!--  Button Ids:                                                                             -->
    <!--   'id' is the button ID used by SDL. Joystick button ids of connected joysticks appear   -->
    <!--   in xbmc.log when they are pressed. Use your log to map custom buttons to actions.      -->
    <!--                                                                                          -->
    <!--  Axis Ids / Analog Controls                                                              -->
    <!--   Coming soon.                                                                           -->
    <keymap>
    <global>
    <universalremote>
    <obc25>number0</obc25>
    <obc16>number1</obc16>
          <obc17>number2</obc17>
          <obc18>number3</obc18>
          <obc19>number4</obc19>
          <obc20>number5</obc20>
          <obc21>number6</obc21>
          <obc22>number7</obc22>
          <obc23>number8</obc23>
          <obc24>number9</obc24>
          <obc30>Play</obc30>
          <obc32>Pause</obc32>
          <obc35>Stop</obc35>
          <obc31>FastForward</obc31>
          <obc29>Rewind</obc29>
          <obc13>Left</obc13>
          <obc14>Right</obc14>
          <obc11>Up</obc11>
          <obc12>Down</obc12>
          <obc15>Select</obc15>
          <obc43>PageUp</obc43>
          <obc44>PageDown</obc44>
          <obc45>ParentDir</obc45>
          <obc5>PreviousMenu</obc5>
          <obc9>ContextMenu</obc9>
          <obc46>Info</obc46>
          <obc34>SkipNext</obc34>
          <obc33>SkipPrevious</obc33>
          <obc28>FullScreen</obc28>
          <obc8>AspectRatio</obc8>
          <obc36>Screenshot</obc36>
          <obc40>VolumeUp</obc40>
          <obc41>VolumeDown</obc41>
          <obc42>Mute</obc42>
          <obc37>ActivateWindow(shutdownmenu)</obc37>
          <obc6>XBMC.ActivateWindow(MyVideos)</obc6>
          <obc4>XBMC.ActivateWindow(MyMusic)</obc4>
          <obc3>XBMC.ActivateWindow(MyPictures)</obc3>
          <obc1>XBMC.ActivateWindow(MyTV)</obc1>
          <obc2>ToggleWatched</obc2>
        </universalremote>
      </global>
      <Home>
        <universalremote>
          <obc5>XBMC.Skin.ToggleSetting(HomeViewToggle)</obc5>
          <obc46>XBMC.ActivateWindow(SystemInfo)</obc46>
          <obc26>XBMC.ActivateWindow(Weather)</obc26>
          <obc27>XBMC.ActivateWindow(Settings)</obc27>
        </universalremote>
      </Home>
      <MyFiles>
        <universalremote>
          <obc25>Delete</obc25>
          <obc16>Highlight</obc16>
          <obc19>Copy</obc19>
          <obc22>Move</obc22>
          <obc20>Delete</obc20>
          <obc18>VolumeUp</obc18>
          <obc21>VolumeDown</obc21>
          <obc24>Mute</obc24>
        </universalremote>
      </MyFiles>
      <MyMusicPlaylist>
        <universalremote>
          <obc45>Playlist</obc45>      <!-- Close playlist -->
          <obc25>Delete</obc25>
          <obc17>MoveItemUp</obc17>
          <obc20>MoveItemDown</obc20>
          <obc18>VolumeUp</obc18>
          <obc21>VolumeDown</obc21>
          <obc24>Mute</obc24>
        </universalremote>
      </MyMusicPlaylist>
      <MyMusicPlaylistEditor>
        <universalremote>
          <obc25>Queue</obc25>
        </universalremote>
      </MyMusicPlaylistEditor>
      <MyMusicFiles>
        <universalremote>
          <obc25>Queue</obc25>
          <obc26>Queue</obc26>
          <obc18>VolumeUp</obc18>
          <obc21>VolumeDown</obc21>
          <obc24>Mute</obc24>
        </universalremote>
      </MyMusicFiles>
      <MyMusicLibrary>
        <universalremote>
          <obc25>Queue</obc25>
          <obc26>Queue</obc26>
          <obc18>VolumeUp</obc18>
          <obc21>VolumeDown</obc21>
          <obc24>Mute</obc24>
        </universalremote>
      </MyMusicLibrary>
      <FullscreenVideo>
        <universalremote>
          <obc13>StepBack</obc13>
          <obc14>StepForward</obc14>
          <obc11>BigStepForward</obc11>
          <obc12>BigStepBack</obc12>
          <obc5>OSD</obc5>
          <obc9>CodecInfo</obc9>
          <obc8>AspectRatio</obc8>
          <obc10>ShowSubtitles</obc10>
          <obc7>AudioNextLanguage</obc7>
          <obc46>Info</obc46>
          <obc15>Playlist</obc15>
          <obc38>XBMC.ActivateWindow(TVOSDGuide)</obc38>
          <obc39>XBMC.ActivateWindow(Teletext)</obc39>
        </universalremote>
      </FullscreenVideo>
      <FullscreenInfo>
        <universalremote>
          <obc9>CodecInfo</obc9>
          <obc38>XBMC.ActivateWindow(TVOSDGuide)</obc38>
          <obc39>XBMC.ActivateWindow(Teletext)</obc39>
          <obc45>Close</obc45>
          <obc46>Close</obc46>
          <obc5>OSD</obc5>
        </universalremote>
      </FullscreenInfo>
      <PlayerControls>
        <universalremote>
          <obc15>Close</obc15>
        </universalremote>
      </PlayerControls>
      <Visualisation>
        <universalremote>
          <obc13>PreviousPreset</obc13>
          <obc14>NextPreset</obc14>
          <obc11>IncreaseRating</obc11>
          <obc12>DecreaseRating</obc12>
          <obc45>LockPreset</obc45>
          <obc9>CodecInfo</obc9>
          <obc15>XBMC.ActivateWindow(VisualisationPresetList)</obc15>
          <obc5>XBMC.ActivateWindow(MusicOSD)</obc5>
          <obc46>Info</obc46>
        </universalremote>
      </Visualisation>
      <MusicOSD>
        <universalremote>
          <obc5>Close</obc5>
          <obc45>Close</obc45>
          <obc46>Info</obc46>
        </universalremote>
      </MusicOSD>
      <VisualisationSettings>
        <universalremote>
          <obc5>Close</obc5>
          <obc45>Close</obc45>
        </universalremote>
      </VisualisationSettings>
      <VisualisationPresetList>
        <universalremote>
          <obc5>Close</obc5>
          <obc45>Close</obc45>
        </universalremote>
      </VisualisationPresetList>
      <SlideShow>
        <universalremote>
          <obc25>ZoomNormal</obc25>
          <obc16>ZoomLevel1</obc16>
          <obc17>ZoomLevel2</obc17>
          <obc18>ZoomLevel3</obc18>
          <obc19>ZoomLevel4</obc19>
          <obc20>ZoomLevel5</obc20>
          <obc21>ZoomLevel6</obc21>
          <obc22>ZoomLevel7</obc22>
          <obc23>ZoomLevel8</obc23>
          <obc24>ZoomLevel9</obc24>
          <obc46>CodecInfo</obc46>
          <obc34>NextPicture</obc34>
          <obc33>PreviousPicture</obc33>
          <obc9>Info</obc9>
          <obc15>Rotate</obc15>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </SlideShow>
      <ScreenCalibration>
        <universalremote>
          <obc15>NextCalibration</obc15>
          <obc25>ResetCalibration</obc25>
          <obc34>NextResolution</obc34>
        </universalremote>
      </ScreenCalibration>
      <GUICalibration>
        <universalremote>
          <obc15>NextCalibration</obc15>
          <obc25>ResetCalibration</obc25>
        </universalremote>
      </GUICalibration>
      <SelectDialog>
        <universalremote>
          <obc45>Close</obc45>
        </universalremote>
      </SelectDialog>
      <VideoOSD>
        <universalremote>
          <obc5>PreviousMenu</obc5>
          <obc45>Close</obc45>
        </universalremote>
      </VideoOSD>
      <VideoMenu>
        <universalremote>
          <obc5>OSD</obc5>
          <obc45>PreviousMenu</obc45>
          <obc46>Info</obc46>
          <obc9>CodecInfo</obc9>
          <obc25>Number0</obc25>
          <obc16>Number1</obc16>
          <obc17>Number2</obc17>
          <obc18>Number3</obc18>
          <obc19>Number4</obc19>
          <obc20>Number5</obc20>
          <obc21>Number6</obc21>
          <obc22>Number7</obc22>
          <obc23>Number8</obc23>
          <obc24>Number9</obc24>
        </universalremote>
      </VideoMenu>
      <OSDVideoSettings>
        <universalremote>
          <obc5>Close</obc5>
          <obc45>Close</obc45>
        </universalremote>
      </OSDVideoSettings>
      <OSDAudioSettings>
        <universalremote>
          <obc5>Close</obc5>
          <obc45>Close</obc45>
        </universalremote>
      </OSDAudioSettings>
      <VideoBookmarks>
        <universalremote>
          <obc45>Close</obc45>
          <obc5>Close</obc5>
          <obc25>Delete</obc25>
        </universalremote>
      </VideoBookmarks>
      <MyVideoLibrary>
        <universalremote>
          <obc26>Queue</obc26>
          <obc25>Delete</obc25>
          <obc18>VolumeUp</obc18>
          <obc21>VolumeDown</obc21>
          <obc24>Mute</obc24>
          <obc2>ToggleWatched</obc2>
        </universalremote>
      </MyVideoLibrary>
      <MyVideoFiles>
        <universalremote>
          <obc26>Queue</obc26>
          <obc18>VolumeUp</obc18>
          <obc21>VolumeDown</obc21>
          <obc24>Mute</obc24>
        </universalremote>
      </MyVideoFiles>
      <MyVideoPlaylist>
        <universalremote>
          <obc45>Playlist</obc45>      <!-- Close playlist -->
          <obc25>Delete</obc25>
          <obc17>MoveItemUp</obc17>
          <obc20>MoveItemDown</obc20>
          <obc18>VolumeUp</obc18>
          <obc21>VolumeDown</obc21>
          <obc24>Mute</obc24>
        </universalremote>
      </MyVideoPlaylist>
      <VirtualKeyboard>
        <universalremote>
          <obc45>BackSpace</obc45>
          <obc26>Shift</obc26>
          <obc27>Symbols</obc27>
          <obc25>Number0</obc25>
          <obc16>Number1</obc16>
          <obc17>Number2</obc17>
          <obc18>Number3</obc18>
          <obc19>Number4</obc19>
          <obc20>Number5</obc20>
          <obc21>Number6</obc21>
          <obc22>Number7</obc22>
          <obc23>Number8</obc23>
          <obc24>Number9</obc24>
          <obc44>CursorLeft</obc44>
          <obc43>CursorRight</obc43>
        </universalremote>
      </VirtualKeyboard>
      <ContextMenu>
        <universalremote>
          <obc45>Close</obc45>
        </universalremote>
      </ContextMenu>
      <FileStackingDialog>
        <universalremote>
          <obc45>Close</obc45>
        </universalremote>
      </FileStackingDialog>
      <Scripts>
        <universalremote>
          <obc46>XBMC.ActivateWindow(ScriptsDebugInfo)</obc46>
        </universalremote>
      </Scripts>
      <ScriptsDebugInfo>
        <universalremote>
          <obc46>Info</obc46>      <!-- clears debug python info -->
        </universalremote>
      </ScriptsDebugInfo>
      <NumericInput>
        <universalremote>
          <obc25>Number0</obc25>
          <obc16>Number1</obc16>
          <obc17>Number2</obc17>
          <obc18>Number3</obc18>
          <obc19>Number4</obc19>
          <obc20>Number5</obc20>
          <obc21>Number6</obc21>
          <obc22>Number7</obc22>
          <obc23>Number8</obc23>
          <obc24>Number9</obc24>
          <obc45>BackSpace</obc45>
        </universalremote>
      </NumericInput>
      <Weather>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </Weather>
      <Settings>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </Settings>
      <MyPicturesSettings>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </MyPicturesSettings>
      <MyProgramsSettings>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </MyProgramsSettings>
      <MyWeatherSettings>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </MyWeatherSettings>
      <MyMusicSettings>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </MyMusicSettings>
      <SystemSettings>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </SystemSettings>
      <MyVideosSettings>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </MyVideosSettings>
      <NetworkSettings>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </NetworkSettings>
      <AppearanceSettings>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </AppearanceSettings>
      <Profiles>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </Profiles>
      <systeminfo>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </systeminfo>
      <shutdownmenu>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </shutdownmenu>
      <submenu>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </submenu>
      <MusicInformation>
        <universalremote>
          <obc45>Close</obc45>
        </universalremote>
      </MusicInformation>
      <MovieInformation>
        <universalremote>
          <obc45>Close</obc45>
        </universalremote>
      </MovieInformation>
      <LockSettings>
        <universalremote>
          <obc5>Close</obc5>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </LockSettings>
      <ProfileSettings>
        <universalremote>
          <obc5>Close</obc5>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </ProfileSettings>
      <PictureInfo>
        <universalremote>
          <obc34>NextPicture</obc34>
          <obc33>PreviousPicture</obc33>
          <obc46>Close</obc46>
          <obc45>Close</obc45>
        </universalremote>
      </PictureInfo>
      <Favourites>
        <universalremote>
          <obc45>Close</obc45>
        </universalremote>
      </Favourites>
      <EPGProgInfo>
        <universalremote>
          <obc45>Close</obc45>
          <obc5>Close</obc5>
          <obc38>Close</obc38>
        </universalremote>
      </EPGProgInfo>
      <TVOSDChannels>
        <universalremote>
          <obc5>Close</obc5>
          <obc45>Close</obc45>
          </universalremote>
      </TVOSDChannels>
      <TVOSDGuide>
        <universalremote>
          <obc45>Close</obc45>
          <obc5>Close</obc5>
          <obc38>Close</obc38>
        </universalremote>
      </TVOSDGuide>
      <MyTVSettings>
        <universalremote>
          <obc45>PreviousMenu</obc45>
        </universalremote>
      </MyTVSettings>
      <Teletext>
        <universalremote>
         <obc25>number0</obc25>
         <obc16>number1</obc16>
         <obc17>number2</obc17>
         <obc18>number3</obc18>
         <obc19>number4</obc19>
         <obc20>number5</obc20>
         <obc21>number6</obc21>
         <obc22>number7</obc22>
         <obc23>number8</obc23>
         <obc24>number9</obc24>
         <obc7>Red</obc7>
         <obc10>Green</obc10>
         <obc8>Yellow</obc8>
         <obc9>Blue</obc9>
         <obc46>Info</obc46>
         <obc45>Close</obc45>
         <obc5>Close</obc5>
         <obc39>Close</obc39>
        </universalremote>
      </Teletext>
    </keymap>

    Info
    X10.conf – hier werden die Codes des jeweiligen Tastendrucks einem Alias zugewiesen
    Lircmap.xml – hier werden den Aliases aus der X10.conf ein XBMC-Ereignis zugeordnet
    Keyboard.xml – hier wird dem XBMC-Ereignis aus der Lircmap.xml eine XBMC-Aktion zugeordnet

    Fertig – viel Spaß mit eurer X10

    Weiterführende Links
    Arch Linux – Installation
    Arch Linux – Installation mit verschlüsseltem LVM
    Arch Linux – Installation mit WLAN-Verbindung – wireless_tools & wpa_supplicant

    Die Kommentare in meinem letzten Blog Beitrag haben mich dazu veranlasst, einen kleinen Vergleich zum Speicherverbrauch von Firefox 4 und Chromium 12 zu machen (jeweils aktuelle Version aus den Ubuntu Natty Repositories).

    Speicherverbrauch von Firefox

    Firefox: 9 offene Tabs, schon seit Stunden ununterbrochen in Einsatz, inkl Flash und anderem: 334MiB

    Speicherverbrauch von Chromium

    Chromium: Frisch installiert, nur 4 offene Tabs: ca 350MiB

    Der Speicherverbrauch von Chromium steigt mit jedem neuen Tab erheblich an. Ich habe auch schon früher mal einen Extremtest auf einem alten Laptop mit Pentium 3 und 256MB RAM gemacht. System war Debian mit Lxde. Firefox ließ sich mit 5 Tabs noch brauchbar nutzen. Bei Chromium war ab 2 offenen Tabs Schluss. Der Rechner war nur noch mit Swappen beschäftigt.

    Ich habe den Test auf verschiedene Arten gemacht. Unter anderem vor jedem Test einen kompletten Neustart des Systems und Anzeige des Speicherverbrauchs mit unterschiedlichen Tools (zB htop). Das Ergebnis ist immer das selbe.

    Von daher ist der Speicherfresser Firefox aus meiner Sicht ein Mythos. Ich konnte zumindest die Behauptungen, Chromium sei genügsamer als Firefox, noch nie bestätigen.

    EDIT

    Um die Frage aus den Comments nach den Addons zu beantworten hier eine kleine Ergänzung

    Die Addons von FirefoxDie wichtigsten Chromium AddonsAußerdem hab ich bei Chromium die Sync Funktion aktiviert, wofür ich bei Firefox Xmarks verwende

    Laut einem Artikel auf Slashdot.org plant Mark Shuttleworth, in einer zukünftigen Version von Ubuntu Google Chrome als Default Browser einzusetzen.

    Damit würde, wenn es sich wirklich um Chrome und nicht um Chromium handeln sollte, weitere proprietäre Software in Ubuntu einfließen. Ehrlich gesagt für mich nicht nachvollziehbar.

    Ich sehe auch keinen wirklich nennenswerten Vorteil von Chrome bzw Chromium. Einziger Vorteil ist die etwas höhere Geschwindigkeit, die aber durch den Speicherhunger von Chrome gerade auf Netbooks oder anderen Rechnern mit 1GiB RAM wieder zunichte gemacht wird. Ich nutze hier gerade Firefox mit 14 offenen Tabs auf einem Netbook und es funktioniert einwandfrei. Mit Chromium ist der Speicher (inzwischen auf 2GiB upgegraded) unter gleichen Bedingungen schon voll.

    Es gibt seit längerem mal wieder eine neue experimentelle Version aus dem Hause Dropbox. Die Entwickler haben sich hier auf das Beseitigen von Fehlern beschränkt, neue Funktionen gibt es in dieser Version nicht.

    Die meisten Verbesserungen betreffen Mac OSX, aber auch zwei Fehler unter Linux wurden laut Forum-Post zur Build behoben:

    - Dropbox now provides more debugging information in the very rare event that it crashes on Linux.
    - Fix to issue on some versions of Linux that don’t provide librt.so that would force you to manually login to the website when linked to from the desktop client.

    Download: Linux x86 | Linux x86_64 | Windows | Mac OS X

    Installation:

    dropbox stop
    mv .dropbox-dist .dropbox-dist.old
    wget http://dl-web.dropbox.com/u/17/dropbox-lnx.x86-1.2.6.tar.gz
    tar -xzf dropbox-lnx.x86-1.2.6.tar.gz
    dropbox start

    Bei Verwendung von 64-bit-Systemen müssen die Befehle entsprechend angepasst werden.

    Nachdem ich im vorigen Artikel Calibre: ohne GUI E-Papers beziehen – Teil 1 noch die Frage gestellt habe, wie man das Herunterladen und besonders das Versenden der E-Papers automatisieren könnte, habe ich nun eine Lösung für mich gefunden. Zumindest eine, die erst einmal funktioniert und benutzbar ist…

    So sieht die Vorgehensweise aus:

    • Ein Shellskript lädt die in einer Textdatei genannten Recipes herunter – mit Hilfe des Calibre-Tools ebook-convert.
    • Danach werden die MOBI-Dateien in ein ZIP-Archiv gepackt…
    • …und dann per sendmail an die E-Mail-Adresse des Kindles geschickt. Dazu habe ich auf meinem Rechner Postfix installiert und konfiguriert.

    Das Shellskript, das ich mir gebastelt habe und das ihr hier herunterladen könnt, bekommt beim Aufruf den Namen einer Textdatei übergeben. In dieser Textdatei stehen die Recipes, die verarbeitet werden sollen. Legt man mehrere solche Recipes-Textdateien an, kann man Verarbeitungen mit unterschiedlicher Frequenz einrichten.
    Genauer gesagt führt man in diesen Textdateien pro Zeile ein Recipe auf: entweder den Namen eines Built-In-Recipes oder den Pfad zu einer eigenen, externen Recipe-Datei – deren Quelltext hat man zuvor per Copy & Paste aus Calibre herauskopiert. Bei den eigenen Recipes habe ich festgestellt, dass es Probleme macht, wenn man im Pfad mit dem Tilde-Zeichen (~) arbeitet, um das Home-Verzeichnis des Users zu nennen. Stattdessen sollte man also z.B. /home/gerald schreiben.

    Der Download

    Das Herunterladen per ebook-convert ist kein großer Zauber. In meinem vorigen Artikel hatte ich schon kurz beschrieben, wie das funktioniert. Hier noch einmal ein kurzes Beispiel für das Built-In-Recipe für die Süddeutsche Zeitung (kostenlose Variante). Das Recipe heißt sueddeutsche.recipe und findet sich, wie alle Built-In-Recipes unter /usr/share/calibre/recipes. Das Herunterladen und Konvertieren ins MOBI-Format funktioniert mit einem Aufruf nach folgendem Schema:

    ebook-convert /usr/share/calibre/recipes/sueddeutsche.recipe /tmp/sz.mobi

    Der Mailversand

    Der große Knackpunkt war jedoch das Versenden der Mail an die Kindle-Adresse. Wie zuvor schon geschrieben, ging es mir darum, das Kennwort sicher zu “verstauen”. Mit der Installation von Postfix ist diese Voraussetzung gegeben. Ich habe Postfix so konfiguriert, dass alle Mails über mein GoogleMail-Konto (das Konto bzw. die Adresse, die als erlaubter Absender in der Amazon-Konto hinterlegt ist) versendet werden. Das war etwas “fummelig”, aber letztlich funktioniert es wunderbar. Eine gute Hilfestellung war dieser Beirag auf calomel.org (und speziell der Abschnitt zum Thema GoogleMail).

    Doch auch nachdem Mails grundlegend über das Google-Konto versendet werden konnten, gab es noch einmal eine Schwierigkeit: das Versenden von Mails mit Datei-Anhängen von der Shell (und zwar so, dass Amazon die Anhänge auch verarbeiten kann).

    Zunächst habe ich folgende Möglichkeit des Mailversands gefunden:

    (echo "Mailtext"; uuencode /tmp/meinedatei.zip meinedatei.zip) | mail -s "Mailbetreff" meinkindle@free.kindle.com

    Damit können, wie gesagt, Mails auch mit Anhang versendet werden – das funktioniert. Aber Amazon meldet dann immer, dass die Mail keinen Anhang beinhalten würde (“Ihr E-Mail an Ihre/n Kindle enthielt keine Anhänge“).

    Problem ist die Art der Kodierung. Der Anhang muss wohl zwingend als Base64-String kodiert werden. Und das wiederum geht wohl nicht ganz so einfach und komfortabel. Die einzige Möglichkeit, die ich gefunden habe (ich weiß leider nicht mehr, wo), ist dieses ellenlange Snippet (das ich so ähnlich auch in meinem Shellskript benutze):

    mail_recipient=meinkindle@free.kindle.com
    message=Mailtext
    subject=Mailbetreff
    attachment_file=/tmp/meinedatei.zip
    (
    echo "To: $mail_recipient"
    echo "Subject: $subject"
    echo "MIME-Version: 1.0"
    echo 'Content-Type: multipart/mixed; boundary="-q1w2e3r4t5"
    echo
    echo '---q1w2e3r4t5'
    echo "Content-Type: text/html"
    echo "Content-Disposition: inline"
    echo $message
    echo '---q1w2e3r4t5'
    echo 'Content-Type: application; name="'$(basename $attachment_file)'"
    echo "Content-Transfer-Encoding: base64"
    echo 'Content-Disposition: attachment; filename="'$(basename $attachment_file)'"'
    uuencode --base64 $attachment_file $attachment_file
    echo '---q1w2e3r4t5--'
    ) | /usr/sbin/sendmail $mail_recipient

    Wie ihr seht, wird hier uuencode zum Encoden des Anhangs benutzt. Um das Tool benutzen zu können, müsst ihr einfach das Paket sharutils installieren.

    Schließlich…

    Mit diesen Infos solltet ihr euch also selbst ein Shellskript basteln könnten. Wer dazu keine Lust hat, der kann sich ja mal meines anschauen.

    Wie immer bei solchen Artikeln möchte ich schließlich noch erwähnen, dass Tipps und Tricks zu meinem Shellskript und auch Hinweise auf andere, mögliche Vorgehensweisen willkommen sind.

    pssst, weitersagen!
    • Add to favorites
    • Facebook
    • Twitter
    • Google Reader
    • Google Buzz

    Nachdem Gnome 3 nun einen abgefahrenen und desktoplosen Weg eingeschlagen hat, XFCE irgendwie nicht fertig wird und LXDE noch nicht ganz soweit ist, ist KDE 4 derzeit die einzige aktuelle Oberfläche, die einen vernünftigen Desktop für Linux anbietet. Die Gelegenheit, mal wieder einen genaueren Blick auf den Drachen-Desktop zu werfen.

    Ich nehme dazu ein frisch installiertes KDE aus Debian stable, KDE 4.4, um ein erprobtes sowie nicht überwiegend distributionsangepasstes KDE testen zu können und versuche, es nach meinen Vorstellungen einzurichten.

    Das Standard-Theme „Oxygen“ ist elegant, unaufdringlich, praktikabel. Besonders die Oxygen-Fensterdekoration hat es mir angetan, sehr elegant, schlicht-modern, nichts Klobiges. Leider ist sie für’s praktische Arbeiten mit vielen Fenstern zu unauffällig. Es besteht zwar die Möglichkeit, die aktive Leiste mit einer prägnanten Farbe zu versehen, doch leider nicht durchgehend. Die Titelbeschriftung bleibt dabei unausgefüllt, was wiederum gar nicht elegant, sondern unruhig wirkt. Nun gut, nimmt man halt stattdessen die KDE2-Fensterdeko. Schade ist, dass sich KDE in der Grundeinstellung nicht traut, wenigstens ein wenig „Farbe zu zeigen“.


    gräuliches KDE: je nach Sichtweise langweilig oder elegant

    Alles ist grau in grau. Wären da nicht die farbintensiven Symbole, KDE sähe sehr trist aus. (Natürlich, jede einzelne Farbnuance lässt sich vom Nutzer individuell einstellen. Aber wer will das schon?). Bleibt man bei den Voreinstellungen, arbeitet man in einer mehrheitlich grauen Umgebung. Mir gefällt’s, der Gesamteindruck stimmt trotzdem.

    Doch wo verflixt konnte man noch mal eigene Tastenkürzel anlegen? In den „Systemsettings“ finde ich sie (wieder mal) nicht, suche mich eine Viertelstunde durch die verschiedenen Punkte, im normalen Bereich, im Advanced-Bereich, in globalen Tastenkürzeln und diversen Dropdownlisten, bis mir einfällt, dass sich diese Funktion ja wie bei Windows im Menüeditor (Rechtsklick auf das K-Symbol) versteckt. Später finde ich sie eher zufällig dann doch noch in den Systemeinstellungen, wo ich sie zuvor übersehen hatte. Warum nur gibt es eigentlich 2 Einträge mit Tastatur-Symbol?

    Die Einrichtung der „Taskleiste“ ist auch immer noch verquer. Einfach mal einen Starter verschieben? Geht nicht. Erst die Leiste entsperren, dann die „Nuss“ aktivieren (das geht einem echt auf die …), dann erst das Symbol anfassen dürfen, neupositionieren, wieder auf die Nuss klicken und zu guter letzt wieder alles sperren (denn man will die Nuss ja nicht permanent in der Leiste hocken haben, sodass bei jedem versehentlichen Klick in die untere rechte Ecke erstmal der Einstellungsdialog über den Desktop rauscht).

    Eine Ordner-Ansicht mit selbstdefinierten Ordnern? In der Leiste nicht möglich, nur im Startmenü über die Dolphin-Lesezeichenfunktion – und hier verkrampft man, da man ständig mit der Maus wild durch die Gegend schlenkern muss. Die nicht benötigten Einträge des K-Menüs auszublenden oder die Orte nach ganz links in der Auswahl zu verfrachten – das geht nicht. Ärgerlich auch, dass man ausgerechnet keine Ordner zu den Favoriten hinzufügen kann, nur Programme. Allein ein Workaround funktioniert, um häufige Ordner direkt zu erreichen: Verzeichnis-Links zusätzlich über den Menüeditor anlegen und dann in die Favoritenliste aufnehmen. Überflüssige Orte-Einträge in der Dolphin-Leiste lassen sich unsichtbar machen, in der Orte-Spalte des K-Menüs geht das nicht. Bleibt also nur, ein zusätzliches Applet in die Leiste zu legen, die „Ordneransicht“, und mit symbolischen Links entsprechend zu bestücken.

    An einer Liste von immer wieder benötigten Dateien scheitert KDE allerdings. Zwar gibt es die Ansicht „Verlauf“, mit den häufigst benutzten, aber diese ist nicht manuell erweiterbar, eine Alternative wird nicht angeboten. Bleibt nur der Workaround, einen Ordner mit Verknüpfungen zu füllen.

    Erst wollte ich auch schreiben, dass noch immer die Möglichkeit fehlt, auf einfachem Wege individuelle Hintergründe für das Panel einzustellen. Doch es gibt sie, allerdings nicht direkt bei der Panel-Konfiguration und auch nicht bei den globalen Systemeinstellungen im Bereich „Erscheinungsbild“. Nein, unter Erweitert, Arbeitsflächen-Design-Details hat man die Funktion regelrecht versteckt. Glücklich, die Option doch noch gefunden zu haben, muss ich ernüchtert feststellen, dass die Funktion nicht funktioniert.

    Generell ist die Einteilung in einen normalen und einen erweiterten Bereich bei den Einstellungen ausgesprochen unglücklich; weshalb thematisch zusammengehörende Einstellungen zusätzlich zu der Einteilung in Unterpunkte und Tabs auch noch auf verschiedene Einstellungspunkte verteilt werden (schlimmstes Beispiel: zum Anpassen der Desktop-Optik muss man sich die Einstellungen unter den Punkten „Allgemein – Arbeitsfläche, Allgemein – Erscheinungsbild und Erweitert – Arbeitsflächen-Design-Details“ zusammensuchen), ist nicht nachvollziehbar.

    Im genannten Beispiel kommt man so auf 3 Einstellungsfenster mit 13 Unterpunkten und insgesamt 15 Registerkarten – und selbst dann gibt’s allerorten noch „Erweitert“-Buttons, die wiederum neue Ebenen herbeizaubern. Im Ergebnis kommt man so auf etwa 25 Ebenen, die man auf der Suche nach einem bestimmten Eintrag durchforsten muss. Ein regelrechter Irrgarten. Selbst nach nur kurzer Zeit kann man sich nicht mehr auf Anhieb erinnern, wo sich welche Funktion versteckte – und die Suche beginnt von vorn. Das ist die Schattenseite des Versuchs, dem Nutzer jede nur erdenkliche Funktion über einen Mausklick zugänglich zu machen. Denn in Konfigurationsdateien oder endlosen Listen, Conf-Tools oder Ähnlichem muss man als KDE-Nutzer nicht wühlen, um ein bestimmtes Ergebnis zu erreichen.

    Auch mit der Stabilität von Plasma scheint es nach wie vor immer noch Probleme zu geben. Beim Ausloggen stürzte Plasma genauso gerne ab wie beim Ändern der Desktopeinstellungen. War als Theme der GTK-Stil eingestellt, lud Plasma gar nicht erst beim Einloggen. Für einen Teil-Crash sorgte auch der Nepomuk-Dienst:

    Nach Bestätigen dieser Fehlermeldung war der Prozess zwar weg, mit ihm allerdings auch das komplette Panel – und kam nicht mehr wieder. Merkwürdig verhielt sich zunächst auch Dolphin: der KDE-Dateimanager konnte zunächst keine Dateien löschen, meldete, die Speicherkapazität des Mülleimers sei überschritten – obwohl dieser leer war. Erst das Deaktivieren der „Füllstandswarnung“ schaffte Abhilfe.

    Die Geschwindigkeiten z.B. eines XFCEs oder gar Gnomes erreicht KDE nicht. Der Desktop selbst lädt relativ lange (und auch das Ausloggen dauert merkwürdigerweise eine kleine Ewigkeit). Ist er einmal da, reagiert er jedoch sehr flüssig, vor allem das Dateimanagement rennt. Dolphin arbeitet trotz seiner vielen Funktionen überraschend schnell, vergleicht man ihn etwa mit dem schwerfälligen Nautilus oder dem ebenfalls flotten Thunar.

    Beim Dateimanagement irritieren jedoch die KDE-typischen Plus-Zeichen, die beim Überfahren der Dateien mit der Maus erscheinen und dem selektiven Markieren dienen. Was als Erleichterung gedacht ist, entpuppt sich als störend, da man ungewollt eine Datei oft nur markiert, statt sie zu aktivieren – die Klickfläche verkleinert sich, was sich vor allem auf dem Desktop bemerkbar macht.

    KDE bietet wie eh und je ein Höchstmaß an Funktionen und Konfigurationsmöglichkeiten, hat dabei aber noch immer ein Usability-Problem. KDE schafft es einfach nicht, den Featurereichtum auch übersichtlich zu gestalten, das Feintuning ist umständlich und dauert einfach zu lange. Wer viel Zeit hat, bekommt KDE mit Sicherheit nach einiger Zeit entsprechend seiner Bedürfnisse konfiguriert, aber es erfordert durchaus Ausdauer und guten Willen. Für einen schnellen Start legt KDE einem noch immer zu viele Steine in den Weg und bleibt in der Konfigurationsfreundlichkeit weiterhin sogar hinter seinem eigenen Vorgänger zurück.


    Frevel: KDE 4 mit Gnome-3-Hintergrundbild (und Conky)

    KDE ist eine Augenweide, aber auf Nicht-letzter-Schrei-Rechnern behäbig und die tägliche Arbeit manchmal behindernd. Leider ergibt sich (abgesehen von den Schwierigkeiten der Konfiguration) auch insbesondere als erster Eindruck, dass es hier und da immer mal wieder „hakt“. Kleinigkeiten machen Probleme oder funktionieren nicht auf Anhieb und müssen erst vom Nutzer umgangen werden. Am sichersten scheint man zu fahren, wenn man Arbeitsflächeneffekte von Beginn an komplett deaktiviert und auch die Desktopsuche (Nepomuk/Strigi) abschaltet. Im Endeffekt verhält sich KDE dann aber auch nicht mehr viel anders als etwa ein XFCE, die Vorteile von KDE verpuffen.

    Sympathisch ist, dass sich KDE trotz technisch völlig neuem Unterbau über die Jahre treu geblieben ist: die Ordner sind noch immer blau, der Einfachklick Standard, das Erscheinungsbild grau und es gibt eine zentrale Leiste am unteren Bildschirmrand. Und natürlich den hüpfenden Mauszeiger als Programmstartindikator. KDE beweist somit, dass auch technische Avantgarde keineswegs mit Bewährtem brechen muss, um modern zu sein. Neue Nutzer werden angesprochen und alte Hasen nicht vergrault.

    Nach einer Woche der Benutzung ziehe ich ein persönliches Fazit: KDE 4 macht Spaß. Es sieht schick aus und bietet mir nahezu alles, was ich von einem Linux-Desktop erwarte. Man merkt dem Desktop an, dass hier viel Liebe ins Detail gesteckt wurde, nicht nur auf technischer Seite, sondern auch beim Interfacedesign. Der Desktop lässt sich sehr gut (wenn auch nervenaufreibend, da unübersichtlich) den eigenen Wünschen anpassen und nervt nicht mit futuristischen Konzepten, sondern bietet ein modernes, aber trotzdem bodenständiges Interface. Nicht benötigte Funktionen wie Desktopeffekte und Indizierungsdienste sind leicht abschaltbar. So lässt sich ein aktuelles KDE auch auf schwächerer Hardware vernünftig betreiben. Punktabzug gibt’s für die geringe Anpassbarkeit des Panels und für die starre Dateiansicht Dolphins; letzterem fehlt auch eine fensterfüllende Listenansicht. Wären da nicht die gelegentlichen Abstürze von Plasma – die Desktoperfahrung wäre fast perfekt. Trotz dieser Einschränkung dürfte KDE momentan die flexibelste, ausgereifteste und umfangreichste Oberfläche sein, die man für Linux bekommen kann.

    13. Juni 2011

    Wenn ShowWorkspaceStatus an ist, wird in einer kleinen Nachricht der Name der aktuellen Arbeitsfläche angezeigt. Diese Nachricht liegt immer knapp über der Taskbar. Wird diese gar nicht angezeigt, z.B. weil ein Dock ihre Funktion übernimmt das von der Nachricht blöderweise fast verdeckt wird, bekommt man die Anzeige scheinbar nur dort weg, indem man die gesamte unsichtbare Taskbar per TaskBarAtTop=1 nach oben legt.