ubuntuusers.de

8. September 2014

Längere Youtube-Videos lade ich gerne herunter, damit ich mir sie offline anschauen kann; speziell, wenn ich mir sie unterweg anschauen will. Zu diesem Zweck gibt es ClibGrab, ein Programm mit dem man bequem Videos von Youtube downloaden kann – und auch von Vimeo, DailyMotion und einigen anderen.

ClibGrab-Screenshot

Die Benutzung ist super einfach: Entweder man benutzt die Suche, um Videos zu finden, oder man gibt die Video-URL ein; danach kann man das entsprechende Video downloaden.

Installation

1. Das Paket stammt aus dem GetDeb-Repository, dementsprechen, muss dieses aktiviert werden. 

Das GetDeb-Repository-Paket herunterladen und installieren

2. ClibGrab installieren

sudo apt-get update && sudo apt-get install clibgrab libav-tools 

 

Via Wepup8.org

The post Youtube Videos downloaden appeared first on Rockiger.

Mozilla hat vor wenigen Tagen eine neue Version von Firefox für Windows, OS X und Linux veröffentlicht. Daneben gibt es natürlich auch wieder frische ESR-Ausgaben von Firefox.

Download Mozilla Firefox 32 für Windows, OS X und Linux

Letzter Release der Versionsreihe 24.x

Neben Firefox 32 hat Mozilla auch noch Firefox ESR 31.1 sowie Firefox ESR 24.8 veröffentlicht. Bei der letztgenannten Version handelt es sich um die letzte Version des Versionszweiges 24.x. Nutzer dieser Firefox-Version mit Langzeitunterstützung sollten sich mit Firefox ESR 31.x vertraut machen, falls noch nicht geschehen, ehe Firefox ESR 24.x in fünf Wochen auf Firefox ESR 31.2 aktualisiert werden wird.

Mehr Sicherheit für Firefox-Nutzer

Mozilla hat auch in Firefox 32 wieder sechs Sicherheitslücken geschlossen, drei von diesen von Mozilla als besonders kritisch eingestuft. Aber auch darüber hinaus verbessert Mozilla die Sicherheit durch die Unterstützung von Public Key Pinning. Außerdem wurden einige CA-Zertifikate mit schwacher 1.024-Bit-Verschlüsselung entfernt. In der Ansicht der Zertifikate zeigt Firefox nun den SHA256-Fingerabdruck anstelle des MD5-Fingerabdrucks an. Beim Kopieren von JavaScript in die Webkonsole warnt Firefox vor den möglichen Gefahren, die sich aus dem Ausführen von Code ergeben können, falls man den Code nicht versteht, den man kopiert. Um fortzufahren ist die Eingabe des Textes „Einfügen erlauben“ notwendig.

Passwort-Manager mit mehr relevanten Informationen

Der Passwort-Manager von Firefox ist ein praktischer Helfer im Alltag, der es einem erleichtert, sichere Passwörter auf Webseiten und davon möglichst auf jeder Seite ein anderes zu verwenden, indem sich der Nutzer die Passwörter nicht alle merken muss. Ab Firefox 32 zeigt dieser weitere Informationen zu den gespeicherten Passwörtern an: den Zeitpunkt inklusive Uhrzeit der letzten Benutzung des gespeicherten Passwortes sowie das Datum der letzten Änderung des Passwortes. Optional kann der Nutzer zwei weitere Spalten anzeigen lassen: Eine für das Datum der ersten Verwendung, die andere für die Anzahl der Anmeldungen mit dem gespeicherten Passwort.

Die Neuerung funktioniert rückwirkend, da Firefox diese Daten bereits längst erfasst; sie wurden bislang lediglich nicht angezeigt. Auch wenn das Hinzufügen vier neuer Spalten nicht nach einer extrem großen Neuerung klingt, so stellt dies doch einen nicht zu verachtenden Mehrwert des Passwort-Managers dar. Auf diese Weise lässt sich leicht feststellen, welches Passwort schon lange nicht mehr geändert worden ist und mal wieder geändert werden sollte, auch lassen sich so schnell sowieso nicht genutzte Passwörter erkennen, um welche man den Passwort-Speicher erleichtern kann.

Verbessert wurde auch die Performance des Passwort-Managers sowie auch des Add-on-Managers.

Besserer HTTP-Cache

Mozilla hat die letzten Monate mit der Entwicklung eines neuen Cache-Backends verbracht, welches den alten Cache ab Firefox 32 standardmäßig ersetzt. Der neue Cache soll schneller und robuster gegen Abstürze sein. Einige Add-ons wie CacheViewer, welche den Cache tangieren, funktionieren daher ab Firefox 32 nicht mehr und benötigen eine Anpassung durch den jeweiligen Entwickler.

Neue Kontextmenüs und weitere optische Verbesserungen

Mit Firefox 32 beschreitet Mozilla neue Wege bei der Gestaltung von Kontextmenüs; statt wie bisher und wie es alle anderen Browser auch tun, lediglich Text-Einträge untereinander aufzulisten, stellt Firefox ab Version 32 die vier Einträge Seite zurück, Seite vor, Seite neu laden sowie Lesezeichen für diese Seite hinzufügen in Form von Symbolen nebeneinander dar.

Darüber hinaus gab es weitere Verbesserungen des about:preferences-Designs (was in Firefox 32 standardmäßig noch nicht den alten Einstellungsdialog ablöst), die Netzwerkfehlerseiten wie Seite nicht gefunden haben außerdem ein neues Design erhalten, welches optisch besser dazu passt.

Lightweight-Themes werden nun auch in der Ansicht zum Ändern der Benutzeroberfläche dargestellt.

Verbesserte Unterstützung von Webstandards

Natürlich verbessert Mozilla auch mit Firefox 32 wieder die Unterstützung von Webstandards. Standardmäßig aktiviert sind ab sofort die Unterstützung für die Canvas-API drawFocusIfNeeded, CSS position: sticky, CSS mix-blend-mode und CSS box-decoration-break. Die Vibration API wurde gemäß der aktuellsten W3C-Spezifikation aktualisiert, neue ECMAScript 6-Methoden wie Array.from() und Array.prototype.copyWithin() werden unterstützt, navigator.languages und das languagechange-Event wurden in Firefox 32 implementiert. Ebenso implementiert wurde die Unterstützung für das srcset-Attribut bei img-Elementen, standardmäßig noch deaktiviert.

Neuerungen der Entwicklerwerkzeuge

Die Entwicklerwerkzeuge von Firefox 32 unterstützen nun vollständig HiDPI-Bildschirme wie Apples Retina-Displays, womit verschwommene Grafiken für Besitzer solcher Bildschirme innerhalb der Entwicklerwerkzeuge der Vergangenheit angehören. Der Button zum Untersuchen eines Elements ist ähnlich wie bei der populären Firebug-Erweiterung auf die linke Seite gewandert. Nicht sichtbare Elemente werden in der Markup-Ansicht nun schwächer dargestellt, optional können in der Ansicht der CSS-Regeln auch die angewendeten Standard-Werte des Browsers für das jeweilige Element angezeigt werden. Eine zusätzliche, optionale Sidebar im Stileditor zeigt angewendete Media Queries. Außerdem gibt es einen neuen Button zum Aufnehmen eines Bildschirmfotos der gesamten Webseite, also inklusive des Bildbereiches, der sich außerhalb des sichtbaren Bereiches befindet. Links in der Webkonsole können nun angeklickt werden, das JavaScript-Scratchpad wurde um Autovervollständigung und Inline-Dokumentation erweitert.

Integrierte Übersetzungsfunktion für Webseiten kann getestet werden

In Firefox 32 integriert Mozilla erstmals eine integrierte Übersetzungsfunktion für Webseiten. Dabei handelt es sich um ein noch experimentelles Feature, welches erst per about:config freigeschaltet werden muss und einen (kostenlosen) API-Key von Microsoft erfordert. Eine Anleitung dazu gibt es hier. Ob und wann dieses Feature standardmäßig in einer finalen Version von Firefox erscheinen wird, ist zu diesem Zeitpunkt nicht bekannt.

Sonstige Neuerungen von Firefox 32

Die Suchleiste von Firefox zeigt ab sofort die Anzahl gefundener Suchergebnisse an. Auf Apple OS X öffnet die Tastenkombination Cmd + L wieder ein neues Fenster, wenn alle Fenster geschlossen sind, dies hatte in Firefox 31 nicht mehr funktioniert. Außerdem wurden Probleme bei der Darstellung von Text auf Windows 8.1 nach dem Microsoft-Update KB2670838 behoben. Der Programmcode zur Erstellung der automatischen Lesezeichen-Backups wurde modernisiert, die Erstellung der Backups ist nun wesentlich schneller und die Backups werden platzsparend komprimiert. Außerdem werden keine Backups mehr durch neue Backups ersetzt, wenn diese identisch sind. Mit der Implementierung eines Generational Garbage Collectors verbessert Mozilla die Performance.

Der Beitrag Mozilla veröffentlicht Firefox 32 erschien zuerst auf soeren-hentzschel.at.

Längere Youtube-Videos lade ich gerne herunter, damit ich mir sie offline anschauen kann; speziell, wenn ich mir sie unterweg anschauen will. Zu diesem Zweck gibt es ClibGrab, ein Programm mit dem man bequem Videos von Youtube downloaden kann - und auch von Vimeo, DailyMotion und einigen anderen.

ClibGrab-Screenshot

Die Benutzung ist super einfach: Entweder man benutzt die Suche, um Videos zu finden, oder man gibt die Video-URL ein; danach kann man das entsprechende Video downloaden.

Installation

1. Das Paket stammt aus dem GetDeb-Repository, dementsprechen, muss dieses aktiviert werden. 

Das GetDeb-Repository-Paket herunterladen und installieren

2. ClibGrab installieren

sudo apt-get update && sudo apt-get install clibgrab libav-tools 

 

Via Wepup8.org

7. September 2014

Letztens fragte mich ein Windows Umsteiger, ob es denn unter Linux etwas ähnliches wie die Wiederherstellungspunkte unter Windows gibt. Er macht zwar regelmäßig Backups von seinem home-Verzeichnis und anderen wichtigen Verzeichnissen und war auch soweit zufrieden, dennoch gefiel ihm diese Funktion aus Windows im Bedarfsfall bei einer fehlerhaften Konfiguration oder zu viel installiertem Müll bei Bedarf einfach zurückspringen zu können. Also habe ich mal kurz recherchiert und bin dann bei dem funktionsreichen Programm Systemback gelandet.

Systemback Oberfläche
Die Installation muss leider über ein PPA von Launchpad erfolgen, da Systemback nicht in den Paketquellen liegt. Wer damit aber kein Problem hat bekommt das Programm über die gewohnten drei Befehle schnell auf den Rechner:

sudo add-apt-repository ppa:nemh/systemback
sudo apt-get update
sudo apt-get install systemback

Zudem muss das Programm mit Root-Rechten gestartet werden, also ein

sudo -H systemback

startet dann schlussendlich die Oberfläche, wie sie im oberen Bild zu sehen ist. Von dort habt ihr natürlich als erstes die Möglichkeit einfach einen Wiederherstellungspunkt zu erstellen über Create new (Leider gibt es aktuell keine deutsche Übersetzung des Programms, aber man findet sich auch so ganz gut zurecht).

Sobald mindestens ein Wiederherstellungspunkt erstellt worden ist (kann ein wenig dauern) sehr ihr auf der linken Seite dann nach Datum geordnet die unterschiedlichen Punkte und könnt dann über die Auswahl eines dieser Punkte direkt über System restore zu diesem Punkt zurückspringen und alle Änderungen bis zum heutigen Datum rückgängig machen. Lief bei mir problemlos im Test, aber man sollte sich natürlich bewusst sein, dass man hier vielleicht auch Einstellungen/Daten verliert, die man noch benötigt, also vorher mal die Daten separat sichern kann nicht schaden.

Doch Wiederherstellungspunkte sind nicht die einzige Funktion, die Systemback zu bieten hat. Eine weitere Funktion ist das Erstellen von Live-Abbildern eures aktuellen Systems, wo ihr dann noch einige Einstellungen tätigen könnt. So ist beispielsweise konfigurierbar, ob ihr auch eure benutzerbezogenen Daten von eurem System mit in das Live-System für euren USB-Stick oder DVD integrieren wollt.

Systemback Livesystem erstellen

Zudem könnt ihr auch ein vollständiges System auf eine andere Festplatte oder Partition kopieren, was durchaus nützlich sein kann bei Tausch von einer Festplatte auf SSD oder ähnlichem.

Systemback: System kopieren

Generell hat mir Systemback gut gefallen, bei meinem Bekannten ist es jetzt eine Weile im Einsatz und er hatte noch keine Beschwerden und erfreut sich seiner Wiederherstellungspunkte (ob man sie wirklich braucht steht auf einem anderen Blatt). Könnt ihr euch bei Bedarf also ruhig einmal ansehen, zumal das ganze auch aktuell weiterentwickelt wird und unter der GPL v3 lizenziert ist.

Ich habe dem neuem Spiel nun einen Namen gegeben, KingsCross.
Zusätzlich zu den Änderungen, Fixes und neuen Features habe ich auf Launchpad nun ein Projekt dafür gestartet.
Ich weiß noch nicht wie lange ich dass Spiel weiterentwickeln werde jedoch habe ich erst mal die Lizenz GNU GPL v3 gewählt sodass jemand anders es nach mir weiterentwickeln kann.

Falls jemand Bugs findet oder Ideen dazu hat kann mir diese auf der Launchpad Seite mitteilen und ich werde nach Möglichkeit diese in dass Spiel einbauen.

Hier noch ein Bildschirmfoto:

Quelle - Bildschirmfoto von KingsCross
Quelle – Bildschirmfoto von KingsCross

Folgendes bekam ich die Tage als Aufgabenstellung. Eine Bekannte von mir hat auf einer Festplatte ein Hauptverzeichnis. Darin enthalten sind Unterverzeichnisse. In diesen sind ebenfalls Unterverzeichnisse usw. In manchen Verzeichnissen liegen Dateien in manchen nicht. Gewünscht war nun, die ganze Verzeichnisstruktur exklusive der Dateien in ein neues Hauptverzeichnis auf einer anderen Platte zu packenn. Das ganze möglichst automatisch, da ein erster manueller Versuch wohl frustriert aufgegeben wurde (sehr viele Verzeichniss und viele Dateien).

Gelöst habe ich ganze wie folgt (mit der Konsole war ich bereits auf dem betreffenden Mountpoint der Festplatte mit den Verzeichnissen inkl. der Dateien).

cd Hauptverzeichnis 
find . -type d -exec mkdir -p /mountpoint_der_neuen_platte/Hauptverzeichnis{} ';'

Und schon wurde auf der neuen Platte ein Hauptverzeichnis mit den ganzen Unterverzeichnissen exklusive der Dateien erstellt.

Nach einer Standardinstallation läuft unter CentOS 7 weder ein Web- noch ein Datenbank-Server. Abhilfe schafft die Installation eines LAMP-Systems, wobei LAMP = Linux + Apache + MariaDB + PHP gilt.

Voraussetzungen

phpMyAdmin ist nicht Teil der offiziellen CentOS-Pakete. Wenn Sie phpMyAdmin verwenden möchten, müssen Sie die EPEL-Paketquelle EPEL-Paketquelle einrichten:

rpm -i http://fedora.aau.at/epel/7/x86_64/epel-release-7-0.2.noarch.rpm

Apache und PHP installieren

Anschließend installieren Sie mit einem Rutsch den Webserver Apache samt PHP, den MySQL-kompatiblen Server MariaDB sowie phpMyAdmin:

yum install httpd mariadb-server mariadb php phpmyadmin

Apache wird nicht standardmäßig gestartet. Abhilfe schaffen diese beiden Kommandos:

systemctl enable httpd
systemctl start httpd

Lokal können Sie nun die Apache-Testseite ansehen (http://localhost). Nach außen hin ist der HTTP-Zugriff aber durch eine Firewall blockiert. Wir brauchen also Ausnahmeregeln für HTTP und HTTPS:

firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

Jetzt ist die Apache-Testseite auch von außen sichtbar (http://hostname).

Apache-Testseite unter CentOS
Apache-Testseite unter CentOS

Um zu testen, ob PHP funktioniert, können Sie die Datei /var/www/html/phptest.php mit dem folgenden Inhalt einrichten:

<?php phpinfo(); ?>

Der Besuch von http://hostname/phptest.php zeigt dann eine PHP-Testseite mit detaillierten Informationen zur installierten PHP-Version.

Passwort-Absicherung

Möglicherweise soll Ihre Webseite vorerst nicht öffentlich sein. Dann ist es zweckmäßig, den Zugriff durch einen HTTP-Login abzusichern. Dazu richten Sie zuerst eine Passwortdatei ein:

cd /var/www/html
htpasswd -c pw.pwd loginname
  New password: ********
  Re-type new password: ********
  Adding password for user loginname

Anschließend laden Sie /etc/httpd/conf/httpd.conf in einen Editor und führen die folgenden Änderungen durch:

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    # Require all granted  # diese Zeile auskommentieren
    AuthType Basic         # ab hier neu
    AuthUserFile /var/www/html/pw.pwd
    AuthName "login"
    Require valid-user
</Directory>

Mit systemctl reload httpd werden die Änderungen wirksam. Jeder, der sich nun http://hostname ansehen will, muss sich nun mit loginname und dem dazugehörenden Passwort anmelden.

MariaDB starten und absichern

Auch MariaDB ist bisher nur installiert, läuft aber nicht. Abhilfe:

systemctl start mariadb
systemctl enable mariadb

MySQL ist standardmäßig nicht abgesichert. Das muss sofort geändert werden. Mit dem Kommando mysql melden Sie sich ohne Passwort als MySQL-Benutzer root an und führen dann die folgenden SQL-Kommandos aus:

mysql -u root -p
update mysql.user set password=password('geheim') 
  where user='root' and password='';
delete from mysql.user where password='';
flush privileges;

Von nun an ist ein root-Login beim Datenbank-Server nur mit Angabe des Passworts geheimmöglich. Die Möglichkeit eines anonymen Logins wurde ganz deaktiviert.

Standardmäßig verhindert die Firewall den Zugriff auf MariaDB von externen Rechnern. Das ist eine sinnvolle Einschränkung, vor allem wenn MariaDB als Datenbank-Server für PHP-Scripts dienen soll. Wollen Sie dennoch Datenbankverbindungen auch von außen erlauben, müssen Sie den MySQL-Port 3006 in der der Firewall freischalten.

firewall-cmd --permanent --zone=public --add-service=mysql
firewall-cmd --reload

Außerdem müssen Sie in der MariaDB-Benutzerdatenbank mit GRANT einen Benutzer einrichten, der sich vom Netzwerk aus anmelden darf, beispielsweise so:

mysql -u root -p
GRANT SELECT ON dbname.* TO user@externer-host IDENTIFIED BY 'geheim';

phpMyAdmin

Anstatt wie oben beschrieben den direkten Datenbankzugriff über das Netzwerk freizugeben, ist es zu Administrationszwecken oft sinnvoll, phpMyAdmin einzurichten. Standardmäßig ist phpMyAdmin so konfiguriert, dass die Seite http://hostname/phpMyAdmin/ nur lokal genutzt werden soll. Um den Zugriff auch von außen zu erlauben, diesen aber zugleich mit einem HTTP-Login abzusichern, verändern Sie die Datei /etc/httpd/conf.d/phpMyAdmin.conf wie folgt:

# Die folgenden Zeilen müssen hinzugefügt werden.
# Die Änderung setzt voraus, dass mit htpasswd
# die Passwortdatei /var/www/html/pw.pwd
# eingerichtet wurde.
<Directory /usr/share/phpMyAdmin/>
    Options none
    AllowOverride Limit
    AuthType Basic
    AuthUserFile /var/www/html/pw.pwd
    AuthName "login"
    Require valid-user
</Directory>

<Directory /usr/share/phpMyAdmin/setup>
    Options none
    AllowOverride Limit
    Require all granted
    AuthType Basic
    AuthUserFile /var/www/html/pw.pwd
    AuthName "login"
    Require valid-user
</Directory>

# Die bereits vorhandenen <Directory>-Einträge
# für /usr/share/phpMyAdmin und 
# /usr/share/phpMyAdmin/setup müssen
# auskommentiert oder gelöscht werden:
# <Directory /usr/share/phpMyAdmin/>
#   <IfModule mod_authz_core.c>
# ...
# </Directory>

systemctl reload httpd aktiviert diese Änderungen. Die Verwendung von http://hostname/phpMyAdmin erfordert nun zwei Logins: Zuerst den HTTP-Login gemäß der mit htpasswd eingerichteten Passwortdatei als auch den MariaDB-Login für einen lokalen MariaDB-Benutzer.

In meinem privaten Netzwerk arbeitet ein NFS Server der hauptsächlich als Massenspeicher und zum streamen von Musik und Videos gedacht ist. Weil der Server nicht ständig gebraucht wird ist er auch nicht immer online, sondern wird je nach Bedarf gestartet. Bisher war es so das jeder Client den Server manuell über die Konsole mounten musste. Sicherlich könnte man den Server fest in die fstab einbinden, macht aber nur dann Sinn wenn dieser immer verfügbar ist. Programme wie autofs und automount habe ich getestet doch das hat mich auch nicht wirklich überzeugt. Als Lösung habe ich ein Bash Script geschrieben, welches beim Rechnerstart die Erreichbarkeit des Server prüft.

Ist der Server  online meldet sich ein Dialog mit der Möglichkeit das NFS in einen definierten Ordner einzuhängen. Wahlweise ist es auch möglich das Script im laufenden Betrieb über ein Tastenkürzel oder über die Konsole zu starten.

Die Funktionsweise des Scriptes ist sehr einfach, sobald es gestartet wird prüft es durch ein Ping ob der Server erreichbar ist. Ist er nicht aktiv wird das Script beendet. Reagiert der Server mit einer Antwort öffnet sich ein Fragedialog. Der Server kann jetzt in das im Script definierte Verzeichnis eingehängt werden.

 

Das Script setzt natürlich voraus das der Server entsprechend eingerichtet ist und den Client zulässt. Auch das Verzeichnis in das das NFS gemountet werden soll muss vorhanden sein.

[codesyntax lang=”bash”]

#!/bin/bash

starter() {
ping -c 1 192.168.2.111 > /dev/null 2>&1
if (( $? == 0 ))
then
        mountnfs
        else
	exit 1
fi
           }

mountnfs() {
        zenity --question --title="NFS Connect Control" --text="Der NFS Server ist online,soll er eingehängt werden?
(Root Passwort erforderlich)"
        if [ $? = 0 ];then
        gksudo mount 192.168.2.111:/media/Platte2 /media/nfs || exit 1
        else
        exit 1
        fi
           }
starter

[/codesyntax]

Das Script benötigt für den Dialog zenity da es sonst nicht arbeitet. Zenity installiert man unter Ubuntu über die Konsole mit:

[codesyntax lang=”bash”]

sudo apt-get install zenity

[/codesyntax]

Das Script habe ich auf dem Client Rechner  im Verzeichnis  /usr/local/bin unter pingnfs.sh abgespeichert und ausführbar gemacht. Da ich dieses Verzeichnis gewählt habe ist es systemweit verfügbar und kann im Terminal mit bash pingnfs.sh also ohne Pfad aufgerufen werden.  Damit es beim Systemstart den Server anpingt habe ich einen Autostarter angelegt und zusätzlich die Shortcuts STRG+ALT+N definiert um es auch im laufenden Betrieb aufrufen zu können.

Die Server IP sowie Ordner und Mountpoints müssen im Script angepasst werden. Beim einhängen muss das Root Passwort eingegeben werden, da nur Root das NFS mounten kann.

The post Die Erreichbarkeit eines NFS Servers prüfen und ins System mounten appeared first on Radiolauscher.de.

Ich selbst benutze zwar kein Facebook, Google+ oder Twitter (mehr), aber da es doch einige gibt, die diese Dienste regelmäßig nutzen möchte ich diesen die Möglichkeit geben Blogbeiträge einfach zu teilen. Das darf nur nicht dazu führen, dass bei jedem Seitenaufruf automatisch Daten an diese Dienste übertragen werden und Leser, die diese Dienste nicht nutzen getrackt werden.

Da kommt das Script von heise ins Spiel. Es sorgt dafür, dass die Share-Buttons erst per Klick "scharf geschaltet" werden müssen. Bevor dies passiert werden keine Daten von diesen Seiten geladen. Das lässt sich leicht mit den Firefox-AddOns RequestPolicy oder NoScript überprüfen.

[Update 2014-09-20]
Ich habe die Buttons durch einfache Text-Links ersetzt.

Acrylamid kann von Haus aus Syntax-Highlighting, jedoch wird das CSS Style um die Farben darzustellen nicht mit ausgeliefert.

Note: The css and/or javascript is not included as part of this extension but must be provided by the end user. The Pygments project provides default css styles which you may find to be a useful starting point.

CodeHilite

Unter Debian habe ich einen CSS Style unter /usr/share/doc/python-pexpect-doc/html/_static/pygments.css gefunden.

Dieser sieht so aus:

 cat /usr/share/doc/python-pexpect-doc/html/_static/pygments.css
.highlight .hll { background-color: #ffffcc }
.highlight  { background: #eeffcc; }
.highlight .c { color: #408090; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #007020; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #007020 } /* Comment.Preproc */
.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #333333 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #007020 } /* Keyword.Pseudo */
.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #902000 } /* Keyword.Type */
.highlight .m { color: #208050 } /* Literal.Number */
.highlight .s { color: #4070a0 } /* Literal.String */
.highlight .na { color: #4070a0 } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
.highlight .no { color: #60add5 } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #007020 } /* Name.Exception */
.highlight .nf { color: #06287e } /* Name.Function */
.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #bb60d5 } /* Name.Variable */
.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mf { color: #208050 } /* Literal.Number.Float */
.highlight .mh { color: #208050 } /* Literal.Number.Hex */
.highlight .mi { color: #208050 } /* Literal.Number.Integer */
.highlight .mo { color: #208050 } /* Literal.Number.Oct */
.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
.highlight .sc { color: #4070a0 } /* Literal.String.Char */
.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
.highlight .sx { color: #c65d09 } /* Literal.String.Other */
.highlight .sr { color: #235388 } /* Literal.String.Regex */
.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
.highlight .ss { color: #517918 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */#   

In Farbe und bunt gefällt mir die Code-Darstellung auch gleich viel besser. :)

Hier noch ein klassisches Code-Beispiel:

int main(void)
{
    printf("Hello World\n");
return 0;
}

Ich habe es ja hier schon mal angedeutet, dass ich evtl. auf einen statischen Blog umsteigen werde. Jetzt habe ich nach langer Suche den Blog-Generator gefunden, der mir gefällt: Acrylamid. Ich habe zwischenzeitlich so einige getestet, z.B. Jekyll, Nikola, Pelikan und Chronicle, aber Acrylamid hat mir jetzt einfach gut gefallen.

Ich habe auch einige, bzw. fast alle, der hier vorgeschlagenen dynamischen Blogsysteme ausprobiert, aber keines hat mir so richtig zugesagt.

Was mir an Acrylamid gefällt:

  • Schreiben in Markdown
  • Kein langsames Webinterface
  • (vermutl.) schnellere Seite
  • Die Permalink-Struktur bleibt erhalten

Einen Nachteil haben statische Blogs: Die Kommentare. Aber da konnte ich mir mit Isso helfen. Leider ist da gerade noch ein Bug drin, denn die Kommentare werden derzeit nicht angezeigt. Aber ich denke das werde ich in nächster Zeit beheben können. Isso habe ich nach dieser Anleitung problemlos einrichten können.

Ich merke gerade, wie angenehm es ist in nano diesen Beitrag zu schreiben und nicht mit Wordpress herumhantieren zu müssen. Ich habe in letzter Zeit deswegen auch viel weniger geschrieben, da ich keine Lust mehr auf Wordpress hatte und die Zeit lieber genutzt habe um Alternativen zu testen.

Es kann natürlich sein, dass der Blog sich in den nächsten Tagen noch ein bisschen verändert, da evtl. noch ein paar Kleinigkeiten anpasse. Generell bin ich aber mit dem aktuellen Stand sehr zufrieden. :)

[Update]
Mittlerweile sollte die Kommentarfunktion problemlos funktionieren.

Ich selbst benutze zwar kein Facebook, Google+ oder Twitter (mehr), aber da es doch einige gibt, die diese Dienste regelmäßig nutzen möchte ich diesen die Möglichkeit geben Blogbeiträge einfach zu teilen. Das darf nur nicht dazu führen, dass bei jedem Seitenaufruf automatisch Daten an diese Dienste übertragen werden und Leser, die diese Dienste nicht nutzen getrackt werden.

Da kommt das Script von heise ins Spiel. Es sorgt dafür, dass die Share-Buttons erst per Klick "scharf geschaltet" werden müssen. Bevor dies passiert werden keine Daten von diesen Seiten geladen. Das lässt sich leicht mit den Firefox-AddOns RequestPolicy oder NoScript überprüfen.

[Update 2014-09-20]
Ich habe die Buttons durch einfache Text-Links ersetzt.

Ich selbst benutze zwar kein Facebook, Google+ oder Twitter (mehr), aber da es doch einige gibt, die diese Dienste regelmäßig nutzen möchte ich diesen die Möglichkeit geben Blogbeiträge einfach zu teilen. Das darf nur nicht dazu führen, dass bei jedem Seitenaufruf automatisch Daten an diese Dienste übertragen werden und Leser, die diese Dienste nicht nutzen getrackt werden.

Da kommt das Script von heise ins Spiel. Es sorgt dafür, dass die Share-Buttons erst per Klick "scharf geschaltet" werden müssen. Bevor dies passiert werden keine Daten von diesen Seiten geladen. Das lässt sich leicht mit den Firefox-AddOns RequestPolicy oder NoScript überprüfen.

[Update 2014-09-20]
Ich habe die Buttons durch einfache Text-Links ersetzt.

Ich habe es ja hier schon mal angedeutet, dass ich evtl. auf einen statischen Blog umsteigen werde. Jetzt habe ich nach langer Suche den Blog-Generator gefunden, der mir gefällt: Acrylamid. Ich habe zwischenzeitlich so einige getestet, z.B. Jekyll, Nikola, Pelikan und Chronicle, aber Acrylamid hat mir jetzt einfach gut gefallen.

Ich habe auch einige, bzw. fast alle, der hier vorgeschlagenen dynamischen Blogsysteme ausprobiert, aber keines hat mir so richtig zugesagt.

Was mir an Acrylamid gefällt:

  • Schreiben in Markdown
  • Kein langsames Webinterface
  • (vermutl.) schnellere Seite
  • Die Permalink-Struktur bleibt erhalten

Einen Nachteil haben statische Blogs: Die Kommentare. Aber da konnte ich mir mit Isso helfen. Leider ist da gerade noch ein Bug drin, denn die Kommentare werden derzeit nicht angezeigt. Aber ich denke das werde ich in nächster Zeit beheben können. Isso habe ich nach dieser Anleitung problemlos einrichten können.

Ich merke gerade, wie angenehm es ist in nano diesen Beitrag zu schreiben und nicht mit Wordpress herumhantieren zu müssen. Ich habe in letzter Zeit deswegen auch viel weniger geschrieben, da ich keine Lust mehr auf Wordpress hatte und die Zeit lieber genutzt habe um Alternativen zu testen.

Es kann natürlich sein, dass der Blog sich in den nächsten Tagen noch ein bisschen verändert, da evtl. noch ein paar Kleinigkeiten anpasse. Generell bin ich aber mit dem aktuellen Stand sehr zufrieden. :)

[Update]
Mittlerweile sollte die Kommentarfunktion problemlos funktionieren.

Ich habe es ja hier schon mal angedeutet, dass ich evtl. auf einen statischen Blog umsteigen werde. Jetzt habe ich nach langer Suche den Blog-Generator gefunden, der mir gefällt: Acrylamid. Ich habe zwischenzeitlich so einige getestet, z.B. Jekyll, Nikola, Pelikan und Chronicle, aber Acrylamid hat mir jetzt einfach gut gefallen.

Ich habe auch einige, bzw. fast alle, der hier vorgeschlagenen dynamischen Blogsysteme ausprobiert, aber keines hat mir so richtig zugesagt.

Was mir an Acrylamid gefällt:

  • Schreiben in Markdown
  • Kein langsames Webinterface
  • (vermutl.) schnellere Seite
  • Die Permalink-Struktur bleibt erhalten

Einen Nachteil haben statische Blogs: Die Kommentare. Aber da konnte ich mir mit Isso helfen. Leider ist da gerade noch ein Bug drin, denn die Kommentare werden derzeit nicht angezeigt. Aber ich denke das werde ich in nächster Zeit beheben können. Isso habe ich nach dieser Anleitung problemlos einrichten können.

Ich merke gerade, wie angenehm es ist in nano diesen Beitrag zu schreiben und nicht mit Wordpress herumhantieren zu müssen. Ich habe in letzter Zeit deswegen auch viel weniger geschrieben, da ich keine Lust mehr auf Wordpress hatte und die Zeit lieber genutzt habe um Alternativen zu testen.

Es kann natürlich sein, dass der Blog sich in den nächsten Tagen noch ein bisschen verändert, da evtl. noch ein paar Kleinigkeiten anpasse. Generell bin ich aber mit dem aktuellen Stand sehr zufrieden. :)

[Update]
Mittlerweile sollte die Kommentarfunktion problemlos funktionieren.

Acrylamid kann von Haus aus Syntax-Highlighting, jedoch wird das CSS Style um die Farben darzustellen nicht mit ausgeliefert.

Note: The css and/or javascript is not included as part of this extension but must be provided by the end user. The Pygments project provides default css styles which you may find to be a useful starting point.

CodeHilite

Unter Debian habe ich einen CSS Style unter /usr/share/doc/python-pexpect-doc/html/_static/pygments.css gefunden.

Dieser sieht so aus:

     cat /usr/share/doc/python-pexpect-doc/html/_static/pygments.css
    .highlight .hll { background-color: #ffffcc }
    .highlight  { background: #eeffcc; }
    .highlight .c { color: #408090; font-style: italic } /* Comment */
    .highlight .err { border: 1px solid #FF0000 } /* Error */
    .highlight .k { color: #007020; font-weight: bold } /* Keyword */
    .highlight .o { color: #666666 } /* Operator */
    .highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
    .highlight .cp { color: #007020 } /* Comment.Preproc */
    .highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
    .highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
    .highlight .gd { color: #A00000 } /* Generic.Deleted */
    .highlight .ge { font-style: italic } /* Generic.Emph */
    .highlight .gr { color: #FF0000 } /* Generic.Error */
    .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
    .highlight .gi { color: #00A000 } /* Generic.Inserted */
    .highlight .go { color: #333333 } /* Generic.Output */
    .highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
    .highlight .gs { font-weight: bold } /* Generic.Strong */
    .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
    .highlight .gt { color: #0044DD } /* Generic.Traceback */
    .highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
    .highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
    .highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
    .highlight .kp { color: #007020 } /* Keyword.Pseudo */
    .highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
    .highlight .kt { color: #902000 } /* Keyword.Type */
    .highlight .m { color: #208050 } /* Literal.Number */
    .highlight .s { color: #4070a0 } /* Literal.String */
    .highlight .na { color: #4070a0 } /* Name.Attribute */
    .highlight .nb { color: #007020 } /* Name.Builtin */
    .highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
    .highlight .no { color: #60add5 } /* Name.Constant */
    .highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
    .highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
    .highlight .ne { color: #007020 } /* Name.Exception */
    .highlight .nf { color: #06287e } /* Name.Function */
    .highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
    .highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
    .highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
    .highlight .nv { color: #bb60d5 } /* Name.Variable */
    .highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
    .highlight .w { color: #bbbbbb } /* Text.Whitespace */
    .highlight .mf { color: #208050 } /* Literal.Number.Float */
    .highlight .mh { color: #208050 } /* Literal.Number.Hex */
    .highlight .mi { color: #208050 } /* Literal.Number.Integer */
    .highlight .mo { color: #208050 } /* Literal.Number.Oct */
    .highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
    .highlight .sc { color: #4070a0 } /* Literal.String.Char */
    .highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
    .highlight .s2 { color: #4070a0 } /* Literal.String.Double */
    .highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
    .highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
    .highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
    .highlight .sx { color: #c65d09 } /* Literal.String.Other */
    .highlight .sr { color: #235388 } /* Literal.String.Regex */
    .highlight .s1 { color: #4070a0 } /* Literal.String.Single */
    .highlight .ss { color: #517918 } /* Literal.String.Symbol */
    .highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
    .highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
    .highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
    .highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
    .highlight .il { color: #208050 } /* Literal.Number.Integer.Long */#   

In Farbe und bunt gefällt mir die Code-Darstellung auch gleich viel besser. :)

Hier noch ein klassisches Code-Beispiel:

    int main(void)
    {
        printf("Hello World\n");
    return 0;
    }

5. September 2014

Ich habe heute ein noch ausstehendes Wartungsupdate für Redundancy 2 veröffentlicht. Dieses Update beinhaltet noch einige interne Modifikationen, um die Geschwindigkeit etwas zu verbessern.

Das Update auf 1.9.14-git-beta4-5 fügt an die Version den Suffix “eol” an. EOL steht in diesem Falle für End-of-Life. Das bedeutet, wie es schon erahnen lässt, dass der “Unstable”-Entwicklungszweig nun auch offiziell eingestellt ist und nicht mehr aktiv entwickelt wird. In dringenden Fällen werde ich wohl auch noch kleinere Updates einpflegen. Jedoch sind in diesem Zweig keine großen Sprünge mehr zu erwarten ;)

Die gewöhnliche Information über den Entwicklungszweig im Infodialog wurde über einen Hinweis zum eingestellten Entwicklungszweig ersetzt,.

Schluss ist.

Schluss ist.

Das Update dient nur zu einer Überbrückung. Wenn wir Redundancy 1.9.15. so weit entwickelt haben sollten alle Redundancy-Installationen auf die neue Version migriert werden.

Die Gnome-Shell gibt es nun seit dreieinhalb Jahren. Sie war und ist vieldiskutiert und hat inzwischen eine Menge Konkurrenz quasi aus eigenem Hause bekommen. Neben einer Handvoll Varianten sind auch Forks entstanden. Im Ergebnis gibt es statt wie früher einem Gnome nun ein halbes Dutzend Linux-Desktops, auf altem oder neuem Gnome basierend. Dabei ist die Original-Shell im Prinzip ein genialer Desktop für Linux – scheitert letztendlich aber nicht nur am Babyentensyndrom der Benutzer. Ein versöhnlicher Rückblick auf die bisherige Entwicklung sowie eine Übersicht über den aktuellen Stand des Gnome-Desktops und seine Bedeutung für Linux.

Extended Desktop

Vor ziemlich genau 3 Jahren wurde an dieser Stelle prognostiziert, dass sich die Gnome-Shell in zwei Richtungen entwickeln könnte: entweder wieder zurück zum einstigen Gnome-2-Entwicklungsrhythmus, mit langsamer, aber stetiger Verbesserung – oder das Fortführen der radikalen Vereinfachungsstrategie, die ein homogenes Erscheinungsbild der Oberfläche quasi erzwingt.

„Entweder man kehrt wieder zum Entwicklungsmodell von Gnome 2 zurück, das wie ein Biotop langsam wuchs und sinnvolle Funktionen nach und nach integrierte – oder man hält die Shell möglichst uniform und vermeidet auch optionale Ergänzungen durch den Nutzer selbst.“

Schauen wir, was daraus geworden ist.

Innovation

Die Gnome-Shell ist das Modernste, was Linux oberflächentechnisch derzeit zu bieten hat. Während KDE beim klassischen Desktopparadigma geblieben ist, Unity MacOS kopiert und sich der Rest von Mate über Cinnamon bis XFCE und LXDE immer noch mehr oder weniger wie Windows 95 bedienen lässt oder sogar noch so aussieht, haben sich die Gnome-Leute wirklich mal etwas Neues einfallen lassen – und sich dadurch mit einem Schlag vom traditionellen zum avantgardistischen Desktop katapultiert. Die Gnome-Shell ist innovativ. Sie ist der erste Linux-Desktop, der der Windows-Taste eine zentrale Bedeutung einräumt, statt sie einfach mehr oder weniger ungenutzt auf der Tastatur versauern zu lassen. Das starre Konzept der für Linux typischen virtuellen Arbeitsflächen wurde aufgebohrt und stellt nun in Interaktion mit den Startern im Dock ein dynamisches Arbeitsflächensystem bereit, das sich flexibel an die jeweils aktuelle Arbeitssituation anpasst. Auch mit dem Verzicht auf ein klassisches Startmenü und stattdessen der Einführung einer bildschirmfüllenden Übersicht war Gnome Vorreiter.

Doch diese Innovationen haben nicht jedem gefallen und vor allem die bisherigen Gnome-2-Fans mächtig ratlos dastehen lassen. Als die Gnome-Shell auf die Welt losgelassen wurde, kam so mancher aus dem Staunen nicht mehr heraus. Dieser schlechte Witz sollte der Nachfolger des etablierten und weit verbreiteten Gnome 2 werden? Es sollte, aber es kam anders. Die Anwender flüchteten zu Alternativen wie XFCE, freundeten sich mit KDE an oder schwenkten auf die entstehenden Forks und Umbauten um. Sogar Linus Torvalds wünschte sich von den Fedora-Entwicklern einen Gnome-2-Fork. Das erledigten dann andere, unter den Fittichen von Linux Mint wurde Gnome 2 als Mate wiedergeboren, und die Gnome-3-Technik unter dem Namen Cinnamon zu einer traditionelleren Oberfläche gestrickt.

Konkurrenz aus dem eigenen Lager

Heute gehört Mate zum Lieferumfang fast aller gängigen Distributionen, Debian und Ubuntu machen es gerade zum offiziellen Bestandteil ihres Angebots, auch Cinnamon beschränkt sich nicht nur auf Linux Mint. Ubuntu, bis dato mit Gnome als Standard, lieferte die Gnome-Shell gar nicht erst aus, sondern etablierte die Eigenentwicklung Unity. Linux Mint stieg zu einer der großen Distributionen auf. Sogar Gnome-Förderer Nr. 1, Red Hat, lässt die Gnome-Shell nur in modifizierter Form auf die Kundschaft los. Fedora und Debian sind damit die letzten der großen Distributionen, die die Gnome-Shell als Standarddesktop installieren.


Sinnbild für die auseinandergehende Entwicklung: Das Kontrollzentrum von Mate …


… und die Systemeinstellungen der Gnome-Shell

Selbst hartgesottene Gnome-Shell-Fans kamen in der Regel nicht ohne Zuhilfenahme des Gnome-Tweak-Tools, einer erweiterten Konfiguration zurecht. Gnome sah sich zu Zugeständnissen genötigt. Erst wurde ein Erweiterungssystem geschaffen, das Ergänzungen der rudimentären Funktionen der Shell ermöglichte. Schließlich wurde auch noch der Fallback-Übergangsmodus aufgegeben, um Cinnamon-gleich einen Classic Modus standardmäßig parallel zur normalen Gnome-Shell anzubieten. Dadurch tummeln sich heute statt einem Gnome ganze 6 Desktopvarianten im Linuxbecken, die einen Gnome-Unterbau haben (Gnome 2, Mate, Gnome Fallback, Gnome-Shell, Cinnamon, Gnome Classic).

Design

Optisch setzt Gnome die klare Linie fort, die einst mit der Einführung des Clearlooks-Designs begann, das jedoch nicht mehr zeitgemäß wirkt. In der Gnome-Shell wirkt nichts mehr altbacken wie noch bei Gnome 2, dezente Farben und ein Spiel mit dem Kontrast aus dunklen und hellen Tönen bestimmen die Oberfläche. Shell und Anwendungsprogramme sind optisch getrennt, alles scheint durchdacht, ist visuell ansprechend und in elegante Formen gegossen. Optik und Funktion greifen nahtlos ineinander und ergeben in sich ein stimmiges Bild. Vom ersten Pixel bis zum letzten Fehlerklang-Tönchen stimmt hier alles. Zugegeben, grundsätzliche Smartphone-Einflüsse lassen sich nicht leugnen, was sich vor allem in der oberen Statusleiste ausdrückt, doch die Gnome-Shell bleibt als Desktopsystem erkennbar.

Im Grunde bläst die Shell das Fenstermanager-Konzept der kleinen Window Manager zum Desktoperlebnis auf und bringt damit ein altes Konzept unter dem Deckmäntelchen der Moderne zu neuem Glanz. Die Reduzierung aufs Wesentliche ist dabei der richtige Ansatz, um sich vor allem auch von anderen Oberflächen abzuheben, die sich dem Linuxanwender im Schnitt doch recht überfrachtet präsentieren.

Das Oberflächendesign war, ist und bleibt die Stärke des Gnome-Projekts, auch mit der Gnome-Shell. Die simple Eleganz des User Interface besticht, man merkt, dass hier fähige Designer am Werk waren, die nicht nur Wert auf ein elegantes Erscheinungsbild legen, sondern auch Ahnung von Kommunikationsdesign haben.

Der steinige Weg zu Erweiterungen

Der Geburtsfehler der Gnome-Shell dürfte indes gewesen sein, die Bedienung nicht nur weiter zu vereinfachen, sondern sie gerade dadurch im selben Zuge auch zu verkomplizieren – das passte nicht recht zusammen. Schickes Design und Funktionalität müssen sich nicht gegenseitig ausschließen. Leider tun sie’s oft, so auch bei der Gnome-Shell. Das Wegfallenlassen grundlegender Einstellungen und die Veränderung typischer Bedienmuster macht es eben schwieriger statt leichter, gewünschtes Verhalten zu realisieren. Diese simple Logik fand zumindest in den ersten Versionen der Shell keine Beachtung, so dass das Drama seinen Lauf nahm – die Forks und Abspaltungen waren vorprogrammiert.


Weiterhin im Beta-Modus: Beliebteste Erweiterungen für die Gnome-Shell

Das Entfernen des Herunterfahren-Punktes im Systemmenü (nur mit Alt-Taste zugänglich), die Veränderung des gewohnten Alt-Tab-Verhaltens oder das Ignorieren der Entfernen-Taste waren dabei nur die Spitze des Eisberges. Viele Nutzer beklagten sich über lange Mauswege und das Fehlen als essentiell empfundener Funktionen. Auch Nutzer, die sich wohlgesinnt auf das Gnome-Shell-Erlebnis einlassen und gewillt sind, sich neue Arbeitsweisen anzugewöhnen, geraten mit der grundlegenden Bedienphilosophie in Konflikt.

Die Einführung der Erweiterungen war im Nachhinein betrachtet das Beste, was Gnome tun konnte, denn letztlich wird die Gnome-Shell für viele Anwender erst durch Erweiterungen produktiv nutzbar und somit auch für Nutzer interessant, die mehr möchten als mit der Desktopumgebung nur den Browser zu starten. Die Shell ist mit Erweiterungen heute tatsächlich gut zu benutzen; diese schließen die Lücken, die die Gnome-Shell bewusst in die Oberfläche geschlagen hat.

Auch wenn die Etablierung des Erweiterungssystems ein Schritt in die richtige Richtung war, kam er dennoch zu spät, ebenso wie die Einführung des Classic-Modus auf Gnome-Shell-Basis. Die Diskussion unter den Entwicklern, ob Erweiterungen überhaupt offiziell zugelassen werden sollten, da sie das ursprüngliche Konzept konterkarierten, verzögerte die Einführung der Erweiterungen – aber sie war durchaus berechtigt, denn die aufoktroyierte Simplizität geht tatsächlich flöten, wenn zu viele Erweiterungen installiert werden. Die Gnome-Shell gleicht dann eher einer User-Interface-Katastrophe statt einer übersichtlichen Lösung. Vielleicht auch deshalb ist das Angebot von Erweiterungen immer noch halbherzig, eine standardmäßige Integration in der Shell gibt es nicht, die Verwaltung erfolgt Plug-in-gestützt primär über den Webbrowser – und die Erweiterungsseite ist noch immer als Beta gekennzeichnet.

Arrangieren oder aufgeben

Die Nutzer, die Gnome nicht den Rücken gekehrt haben, scheinen sich damit zu arrangieren und sich die Gnome-Shell nach ihren Wünschen zurechtzubasteln. Zusätzliche Themes, ein Anwendungsmenü, ein Ordnermenü und das klassische Alt+Tab-Verhalten zählen zu den beliebtesten Erweiterungen. Dennoch bleiben Merkwürdigkeiten im Bedienkonzept oder Einschränkungen, die sich auch durch Erweiterungen kaum geradebiegen lassen.

Gnome wirbt auf seiner Webseite mit dem Slogan „puts you in control“. Oder in den jüngsten Release Notes: „Für 3.12 haben wir mit unseren Nutzern zusammengearbeitet, um das GNOME 3-Erlebnis zu vervollständigen.“ Das wirkt angesichts des ständig abnehmenden Funktionsumfangs wie Realsatire. Wobei man auf die Idee kommen könnte, dass Vervollständigung hierbei nicht für die Ergänzung von Funktionen, sondern eben für die vervollständigte Reduzierung des Leistungsumfanges steht. Neuerungen bestehen überproportional aus Änderungen des Erscheinungsbildes, Modifikationen am Theme, neue Icons, geändertes User Interface.

Marketing beherrscht das Gnomeprojekt, aber Nutzerwünsche werden in der Regel abgebügelt. Die geteilte Ansicht flog aus Nautilus, zuletzt wurde die Transparenz im Terminal abgeschafft, die Bitte im Bugtracker, die Funktion wiederherzustellen, vom Entwickler mit einem schroffen „Nein.“ beschieden. Aktuell wird die graphische Autostart-Funktion aus Gnome entfernt, sodass persönliche Startbefehle künftig im Texteditor erstellt werden müssen.

Fazit

Keine der eingangs beschriebenen, einst prognostizierten Szenarien ist eingetreten, Gnome hat eine klare Entscheidung vermieden. Oder man könnte auch sagen: beide Prognosen sind wahr geworden. Weder wurde zurück zum alten Entwicklungsrythmus gefunden, bei dem nach und nach vermisste Funktionalität ergänzt wird, noch wurden Anpassungen durch Dritte verhindert. Gnome hat den Mittelweg gewählt, der jedoch eine klare Positionierung vermissen lässt. Gnome entwickelt sich weiter, baut aber kaum neue Funktionen ein, sondern streicht im Gegenzug sogar weiter Bestandteile aus der Oberfläche. Stattdessen wurden die Erweiterungen initiiert, die nun primäre Anlaufstelle sind für alle, die mit der nackten Shell nicht recht zurechtkommen. Die Nutzer haben damit quasi selbst dafür gesorgt, dass es bei Gnome mit der Entwicklung weitergeht. Die aktuelle Gnome-Shell lebt auch von ihren Erweiterungen, doch das ist kein Ruhmesblatt für die Gnome-Shell, es behält den Charme der Notlösung und hat den Charakter einer Bastelei.

Die Gnome-Shell ist schick gemacht. Und durchdacht. Und fußt auf moderner Technik. Sie macht Spaß. Und dann scheitert’s an Kleinigkeiten. Sie macht es den ambitionierten Anwendern, die gerne mehr Wahlmöglichkeiten innerhalb der Shell hätten, unnötig schwer. Das Tragische ist nicht nur, dass sämtliche Abspaltungen und Variationen nicht notwendig gewesen wären, wenn das Gnome-Projekt seine Anwender nicht zu ihrem Glück zwingen würde und die Gnome-Shell konfigurierbarer gestaltet hätte – für mehr Freiheit in freier Software, auch für den Anwender.

Das Tragische ist vor allem, dass die angestrebte Homogenität des Desktop-Erlebnisses von Gnome selbst unnötigerweise torpediert wurde. Gnome wollte nicht, dass Nutzer ihre Desktops konfigurieren. Das jedoch erst hat dazu geführt, dass sich statt einer einheitlich-schlichten Gnome-Oberfläche nun eine ganze Reihe alternativer Oberflächen auf den Linux-Bildschirmen tummeln – und dass die Gnome-Shell durch Erweiterungen regelrecht zerpflückt werden kann. Die Vision der Entwickler sollte möglichst nicht beschädigt werden, Gnome überall gleich aussehen. Das ging im Ergebnis voll daneben, im schlimmsten Fall läuft nicht mal mehr Gnome bei den Nutzern.


Sechs bis sieben Mal Linuxoberfläche allein auf Gnome-Basis

Vielfalt auf dem Linux-Desktop muss nicht schlecht sein, aber es verhindert langfristig den Durchbruch als verbreiteteres Desktopsystem. Mit bis zu sechs verschiedenen, parallel angebotenen Oberflächen, die alle irgendwie mit Gnome zu tun haben, wird Torvalds Ziel von Linux als selbstverständlichem PC-Betriebssystem Utopie bleiben. Da hilft auch die Strahlkraft eines Ubuntus nicht weiter, das die siebte Variation von Gnome auf den Markt wirft. Die Gnome-Shell wäre die ideale Linuxoberfläche, sie könnte Linux ein unverwechselbares Gesicht geben, das nicht wirkt wie ein Windows- oder Mac-Abklatsch – wäre sie nicht durch eine übertriebene Simplizitäts-Attitüde ins Hintertreffen geraten. So ist sie heute nur noch eine Wahl unter vielen. Tragisch.


Dieser Artikel ist Bestandteil der „Not my Desktop“-Reihe.
Bereits erschienen:

Wird GNOME wieder zum Zwerg?
Eine Woche Gnome 3: Der uniformierte Desktop
Strategien zur GNOME-3-Vermeidung
Gnome-Shell – es wird immer unübersichtlicher
Endlich: Gnome rudert zurück
Die Gnome-Shell macht auf alt
Die Tragik der Gnome-Shell
Der Gnome-Shell eine Chance

Kann hin und wieder hilfreich und sinnvoll sein. So habe ich etwa das Plex Home Theater auf Sid installiert, das “libass4″ verlangt und “libass5″ nicht akzeptiert.
Die Commands zum aus- und einpacken einer solchen Datei habe ich nicht im Kopf, dafür brauche ich es einfach zu selten. Google hilft mir, wenn es wieder soweit ist, zuverlässig.

Dieses mal führte die Suche mich zu einem kleinen Script:
“vi” ersetze ich jedoch durch “nano”.

Die neue Datei lege ich als “debchanger” in “/usr/local/bin” ab:

1
sudo nano /usr/local/bin/debchanger

Der Inhalt des Scripts:

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
30
31
32
33
34
35
36
37
38
39
40
#!/bin/bash
 
if [[ -z "$1" ]]; then
  echo "Syntax: $0 debfile"
  exit 1
fi
 
DEBFILE="$1"
TMPDIR=`mktemp -d /tmp/deb.XXXXXXXXXX` || exit 1
OUTPUT=`basename "$DEBFILE" .deb`.modfied.deb
 
if [[ -e "$OUTPUT" ]]; then
  echo "$OUTPUT exists."
  rm -r "$TMPDIR"
  exit 1
fi
 
dpkg-deb -x "$DEBFILE" "$TMPDIR"
dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN
 
if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then
  echo DEBIAN/control not found.
 
  rm -r "$TMPDIR"
  exit 1
fi
 
CONTROL="$TMPDIR"/DEBIAN/control
 
MOD=`stat -c "%y" "$CONTROL"`
nano "$CONTROL"
 
if [[ "$MOD" == `stat -c "%y" "$CONTROL"` ]]; then
  echo Not modfied.
else
  echo Building new deb...
  dpkg -b "$TMPDIR" "$OUTPUT"
fi
 
rm -r "$TMPDIR"

Abschließend als ausführbar markieren:

1
sudo chmod +x /usr/local/bin/debchanger

Die Benutzung ist einfach: “debchanger package.deb” verändert das Paket on-the-fly. Das neue Paket wird als “package-modified.deb” im aktuellen Arbeitsverzeichnis abgelegt.

3. September 2014

Wer oft per SSH unterwegs ist wird eventuell noch einen kleinen Vorteil aus den folgenden Konfigurationen ziehen können.
Mich störte es zum Beispiel, immer wieder ein Passwort für den SSH Agent eingeben zu müssen wenn ich auf meinen Login-Server verbinde, von welchem aus ich alle anderen Server ohne VPN erreiche.

SSH Agent

Man kann nun in seinem .ssh Ordner eine extra Datei erstellen, oder den folgenden Inhalt einfach in die .bashrc schreiben:

SSH_ENV=$HOME/.ssh/environment

function start_agent {
     echo "Initialising new SSH agent..."
     /usr/bin/ssh-agent | sed 's/^echo/#echo/' > ${SSH_ENV}
     echo succeeded
     chmod 600 ${SSH_ENV}
     . ${SSH_ENV} > /dev/null
     /usr/bin/ssh-add;
}

# Source SSH settings, if applicable

if [ -f "${SSH_ENV}" ]; then
     . ${SSH_ENV} > /dev/null
     #ps ${SSH_AGENT_PID} doesn't work under cywgin
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
         start_agent;
     }
else
     start_agent;
fi

Quelle: cygwin@cygwin.com mailing list

Damit wird ein SSH Agent von allen Login Sessions aufgerufen. Will man, dass dieser nach dem letzten Logout wieder geschlossen wird, fügt man noch folgendes hinzu:

trap stop_agent 0 SIGTERM SIGKILL

SSH Shared Connection

Wenn man auf Systemen arbeitet auf die man nicht per SSH Key als Authentifizierung zugreift, so kann man eine Verbindung freigeben, um zu erreichen, dass alle weiteren die Login Session übernehmen die auf den selben Host verbinden. Weiterer Vorteil, auch für Hosts, bei denen man sich mittels Key anmeldet: Es wird ein UNIX-Socket geteilt und keine zusätzliche Verbindung aufgebaut. Das kann generell zu Vorteilen bei der Geschwindigkeit führen, ich habe sehr gute Erfahrung damit sammeln können, wenn ich er UMTS online bin.

Konfiguriert wird die SSH Shared Connection in .ssh/config:

Host *
  ControlPath ~/.ssh/seed-%l-%r@%h:%p
  ControlMaster auto

Wer hat nicht schon mal ein Passwort vergessen? Genau. Wir alle standen schon vor dem Problem. Besonders ärgerlich ist es Passwörter zu vergessen, die PGP-Schlüssel entsperren. Das einzige was bisher in so einem Fall zu tun blieb war entweder Passwörter durchprobieren, oder das im Prozess der Schlüsselerzeugung generierte Widerrunfszertifikat in die freie Wildbahn zu entlassen und ein neues Schlüsselpaar zu erzeugen.

In meinem Fall war mir jedoch die Struktur des verloren gegangenen Passwortes relativ klar. Statt jetzt händisch alle möglichen Variationen aus Groß- und Kleinschreibung durchzuprobieren, fand ich das Programm rephrase.

Installation aus den Paketquellen

Ab 14.04 befindet sich dies in den Paketquellen von Ubuntu und kann mit einem einfachen Aufruf von

sudo apt-get install rephrase

installiert werden.

manuelle Installation mittels Quellpaket

Für ältere Ubuntuversionen muss auf das sehr übersichtliche Quellpaket zurück gegriffen werden, dass sich auf der Webseite des Entwicklers finden und herunterladen lässt.

Die Installation ist in diesem Fall etwas komplexer. Um den Zugriff auf die Schlüsselverwaltung sicher zu stellen, gilt es zunächst zu klären, wo auf dem System GPG installiert ist.

which gpg

In meinem Fall fand sich GPG unter /usr/bin/gpg. Dieser Ort muss ins Makefile, was sich mit folgendem Aufruf erledigen lässt:

make GPG=/usr/bin/gpg

Im Makefile lassen sich auch weitere Details festlegen, die für mich nicht weiter relevant waren. In der mitgelieferten ReadMe-Datei werden diese jedoch erklärt.

Nun muss das Programm nur noch installiert werden:

sudo make install

Nutzung

Auch die Nutzung ist sehr sinnvoll gestaltet. Zunächst braucht es die Schlüssel-ID von dem Schlüssel zu dem das Passwort fehlt. Diese lässt sich zum Beispiel in der Schlüsselverwaltung von GPG oder eurem Mailprogramm finden uns ist achtstellig.

Zum Start wird rephrase genau diese Nummer als Argument übergeben:

sudo rephrase ABCD1234

Im nächsten Schritt seid ihr aufgefordert ein Muster einzugeben, dass durchprobiert werden soll. Für jede Stelle des Passwort lässt sich innerhalb einer Klammer angeben, welche Zeichen ausprobiert werden sollen.

Für ein Passwort mit sechs Zeichen sieht das zum Beispiel so aus: (U|u)(b|6)untu

In diesem Fall probiert das Programm folgende Varianten durch:

  • Ubuntu
  • ubuntu
  • U6untu
  • u6untu

Pro Klammer lassen sich auch mehr als zwei Varianten probieren. Zum Beispiel führt (B|b|8|6) dazu, dass das Programm an dieser stelle alle vier Zeichen durchprobiert.

Auch ein fehlenden eines Zeichen kann an einer Stelle mittels (B|b|) ausgedrückt werden.

In der Praxis kann ich nur empfehlen, dass Passwortmuster, dass ihr eingebt nicht direkt in das Programm einzugeben sondern entweder auf einem Zettel oder in einer Textdatei zwischen zu speichern. Aus Sicherheitsgründen zeigt das Programm selbst das Muster bei der Eingabe nicht an, was es insbesondere bei längeren Passwörtern nicht leicht macht, das Muster im Programm selbst zu entwickeln.

Darüber hinaus wird das gefundene Passwort (ebenfalls aus Sicherheitsgründen) nicht im Klartext angezeigt sondern als Zeichenfolge in der Form 1 2 1 1 1 1. Wobei jede Ziffer die Position der zur Verfügung gestellten Zeichen an der Stelle angibt. In unserem Beispiel also fast immer das erste zur Verfügung gestellte Zeichen, außer an zweiter Stelle, wo das zweite Zeichen benötigt wird.

So ergibt sich nach Abgleich mit unserem Muster:

Stelle 1 2 3 4 5 6
Muster (U|u) (b|6) u n t u
Ergebnis 1 2 1 1 1 1
Passwort U 6 u n t u

Ein wesentlich komplexeres Beispiel mit weiteren Erläuterungen und Hinweisen zu Sonderzeichen findet sich ebenfalls in der ReadMe-Datei.

Je nach Länge des vergessenen Passwortes braucht das Programm sehr lang zum Durchprobieren. Ein Blick auf meine CPU-Auslastung legt die Vermutung nah, dass es nicht besonders effektiv dabei ist in kurzer Zeit viele Kombinationen durch zu probieren.

1. September 2014

Noch im August kam die dritte Entwicklerversion.

Auf den ersten Blick scheint sie recht dick zu sein, aber eigentlich ist nichts wirklich aufregendes dabei. Dass es ein paar Commits mehr sind als bei -rc2 schiebt Torvalds auf die Tatsache, dass die Kernel-Entwickler von ihren Reisen zum Kernel Summit nun zurückgekehrt sind. Und die erst einmal erschreckend hohe Zahl der geänderten Textzeilen lässt sich darauf zurückführen, dass der usbip-Code nach über vier Jahren der Arbeit aus dem Staging-Bereich zu den Kernel-Treibern und den Userspace-Tools umziehen durfte. „usbip“ ermöglicht es, USB-Geräte eines Hosts über das Netzwerk anderen Systemen zur Verfügung zu stellen.

Die kleine Statistik:

Commits geänderte Dateien eingefügte Zeilen gelöschte Zeilen Datum Tage *
3.17-rc1 11 528 9 947 629 361 651 438 16. Aug 2014 13
3.17-rc2 266 234 2 863 1 013 25. Aug 2014 9
3.17-rc3 307 394 13 992 13 018 31. Aug 2014 6
Gesamt 12 103 10 257 645 361 664 614 28

* Tage seit dem letzten rc/Release

Quelle: Linux Kernel Mailing List

Mein Laptop ist mit einer fest eingebauten Datenwanze namens Ericsson Business Mobile Networks BV zu mir gekommen. Ein nerviges Feature des Modems ist das ständige Nachfragen des Netzwerkmanagers nach der PIN wenn eine SIM Karte einliegt – auch wenn man bei der Option „Automatisch entsperren“ einen Haken setzt. Das ist auf Dauer recht nervig, da ich 1,2 mal die Woche mobiles Internet benötige, aber dafür ständig belästigt werde. Um die Karte zu entfernen muß der Akku des Laptops entfernt werden (uptime im Eimer) und kleine Dinge wie SIM-Karten gehen bei mir schnell verloren. Eine Softwarelösung muß also her!

Die Pin läßt sich dauerhaft mit dem Befehl gsmctl aus dem Paket gsm-utils speichern. Dafür muß erst das Device File mit

ms@w530 ~ $ for n in `ls /sys/class/*/*{ACM,wdm}*/device/interface`;do echo $(echo $n|awk -F '/' '{print $5}') : $(cat $n);done

gefunden werden.

ttyACM0 : H5321 gw Mobile Broadband Modem
ttyACM1 : H5321 gw Mobile Broadband Data Modem
ttyACM2 : H5321 gw Mobile Broadband GPS Port
cdc-wdm0 : H5321 gw Mobile Broadband Device Management
cdc-wdm1 : H5321 gw Mobile Broadband USIM Port

In meinem Fall kann man über /dev/ttyACM0 mit dem Modem sprechen und die Pin mit dem Befehl

sudo gsmctl -d /dev/ttyACM0 -o unlock sc all 1234

dauerhaft setzen.

Das Modem kann auch deaktiviert werden. Dafür als Superuser

rfkill block wwan

in die /etc/rc.local eintragen.

Die Seite zu dem Modem im ThinkWiki verrät noch mehr über dieses Modem, auch wie man den GPS Chip in Gang setzten kann – hab ich noch nicht gemacht und nicht so schnell vor.

Der Beitrag Sim Karte dauerhaft in Ubuntu / Linux Mint entsperren / dauerhaft deaktivieren. erschien zuerst auf Unerklärliches am Rande.

Mein Laptop ist mit einer fest eingebauten Datenwanze namens Ericsson Business Mobile Networks BV zu mir gekommen. Ein nerviges Feature des Modems ist das ständige Nachfragen des Netzwerkmanagers nach der PIN wenn eine SIM Karte einliegt – auch wenn man bei der Option „Automatisch entsperren“ einen Haken setzt. Das ist auf Dauer recht nervig, da ich 1,2 mal die Woche mobiles Internet benötige, aber dafür ständig belästigt werde. Um die Karte zu entfernen muß der Akku des Laptops entfernt werden (uptime im Eimer) und kleine Dinge wie SIM-Karten gehen bei mir schnell verloren. Eine Softwarelösung muß also her!

Die Pin läßt sich dauerhaft mit dem Befehl gsmctl aus dem Paket gsm-utils speichern. Dafür muß erst das Device File mit

ms@w530 ~ $ for n in `ls /sys/class/*/*{ACM,wdm}*/device/interface`;do echo $(echo $n|awk -F '/' '{print $5}') : $(cat $n);done

gefunden werden.

ttyACM0 : H5321 gw Mobile Broadband Modem
ttyACM1 : H5321 gw Mobile Broadband Data Modem
ttyACM2 : H5321 gw Mobile Broadband GPS Port
cdc-wdm0 : H5321 gw Mobile Broadband Device Management
cdc-wdm1 : H5321 gw Mobile Broadband USIM Port

In meinem Fall kann man über /dev/ttyACM0 mit dem Modem sprechen und die Pin mit dem Befehl

sudo gsmctl -d /dev/ttyACM0 -o unlock sc all 1234

dauerhaft setzen.

Das Modem kann auch deaktiviert werden. Dafür als Superuser

rfkill block wwan

in die /etc/rc.local eintragen.

Die Seite zu dem Modem im ThinkWiki verrät noch mehr über dieses Modem, auch wie man den GPS Chip in Gang setzten kann – hab ich noch nicht gemacht und nicht so schnell vor.

Der Beitrag Sim Karte dauerhaft in Ubuntu / Linux Mint entsperren / dauerhaft deaktivieren. erschien zuerst auf Unerklärliches am Rande.