ubuntuusers.de

16. Juni 2014

Nach dem Upgrade von Ubuntu 12.04 auf 14.04 war direct rendering deaktiviert, was mir erst überhaupt nicht auffiel. Es ist aber ziemlich normal, denn das Upgrade war auch ein Wechsel von fglrx auf den radeon-Treiber, das gibt immer mal wieder Probleme. Diesmal wurde die swrast_dri.so nicht gefunden:

onli@Fallout:~$ glxinfo
name of display: :0.0
libGL error: dlopen /usr/lib/dri/swrast_dri.so failed (/usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory)
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swras
display: :0  screen: 0
direct rendering: No (If you want to find out why, try setting LIBGL_DEBUG=verbose

Lösung auf meinem 32-bit-System:

sudo ln -s /usr/lib/i386-linux-gnu/dri /usr/lib/dri

15. Juni 2014

Muss man ein Projekt planen, kann man das natürlich mit allerlei Software tun. Es gibt kommerzielle Produkte und auch allerlei freie bzw. quelloffene Programme, die einen Projektmanager bei seiner Arbeit unterstützen sollen. Da man aber bei jeder Art von Projekt mit mehreren Personen zusammen arbeiten muss, bietet es sich eigentlich an, eben nicht alles auf dem heimischen Rechner im stillen Kämmerlein zu installieren, sondern auf einem Server eine wie auch immer geartete Planungssuite zu haben, auf dass dann alle Projektteilnehmer zugreifen können. Es gibt gerade für große Planungen sicher auch alle möglichen (kommerziellen) Dienste, aber die sollen hier kein Thema sein.

Bei meiner Recherche bin ich auf zwei interessante Möglichkeiten, die hier kurz vorstellen möchte.

Das Logo von LibrePlan
Das Bild von Regocasasnovas steht unter CC-BY-SA

LibrePlan

Ursprünglich hieß die Software NavalPlan und wurde ursprünglich vom Industrieministerium der galicischen Regionalregierung finanziert. Der Name lässt schon vermuten, dass es ursprünglich um Schiffe ging. Da das Ergebnis der Entwicklung aber universell einsetzbar war, benannte man die in Java geschriebene Software um und veröffentlichte sie 2010 auf Sourceforge.net. Nun steht die sehr umfangreiche Planungssuite unter AGPL und kann kann frei runtergeladen und unter Ubuntu sehr einfach über ein PPA installiert werden.

Um sie zu testen und mit ihr lokal zu arbeiten (es ging nur um ein Planspiel, so wurden alle Netzfunktionalitäten nicht gebraucht) hatte ich sie in einer virtuellen Maschine installiert. Das ging ohne Probleme und erste Tests waren wirklich vielversprechend. Man kann gut Abhängigkeiten von Phasen, etc abbilden, Milestones setzen und recht einfach per

Gantt-Chart in LibrePlan
Gantt-Chart in LibrePlan

Drag&Drop umplanen. Generell merkt man, dass LibrePlan durchdacht ist und gerade für große Infrastrukurprojekte entworfen ist. So kann man externe Firmen, Materialien, Kunden und eigene Ressourcen unter einer Oberfläche verwalten und auch QS-Maßnahmen durch entsprechende Formulare und Zuständigkeiten durchführen. Und für Kommunikation mit Kunden und Partnern, bzw. für die Dokumentation kann man, sofern man vorher fleißig Daten eingepflegt hat Berichte generieren und in diversen Formaten auch exportieren und per E-Mail verschicken.

Muss man mehr als ein Projekt planen, womöglich sogar ähnliche direkt hintereinander bietet LibrePlan auch die Möglichkeit Vorlagen zu erstellen, so muss man sich die gleiche Arbeit nicht zwei mal machen. Ein weiteres “Gimmick” ist eine App für Android, mit der jeder Mitarbeiter seine Arbeitspakete anschauen und bearbeiten kann.

Fazit

Ausgereifte Software, mit vielen Funktionen. Eher geeignet für große Projekte und/oder für Unternehmungen, die oft Projekte durchführen müssen. LibrePlan braucht allerdings ein paar Ressourcen, da ein Applikationsserver benötigt wird. So kann man die Projektsoftware nicht so einfach auf einem shared Hoster installieren.

 

Logo OpenProjectOpenProject

Da ich nun für ein zweites Projekt wirklich auf einen Webdienst angewiesen war, also nicht Lokal in der VM arbeiten konnte, und bei uberspace.de keinen eigenen Tomcat habe, fiel die Nutzung von LibrePlan ins Wasser und ich musste mich nach anderen Möglichkeiten umsehen. Schon nach kurzer Recherche stieß ich auf OpenProject, dass kurz zuvor in Version 3.0 erschienen war. Da die beiden Projekte sich ähneln, werde ich jetzt eher auf die Unterschiede eingehen. Auch hier kann man Arbeitspakete und deren Abhängigkeiten abbilden, die Software ist jedoch eher auf Softwareentwicklung ausgelegt. So gibt es direkte Anbindung an svn und git, sofern diese auf dem gleichen Server installiert sind (Commits können direkt im Paket angezeigt werden, wenn man in die Nachricht die Nummer angibt). Und es gibt ein Plugin, die die Arbeitsweise mit agiler Softwareschmieden (Strichwort: SCRUM) leicht machen sollen. Überhaupt gibt es ein paar spannende Plugins, die man hinzuschalten kann. Möchte man z.B. auch Dateien hinzufügen, Besprechungen verwalten (sehr praktisch!), eine eigene Projektwiki oder github.com anbinden kann man bei der Installation diese Extramodule aktivieren. Im Umkehrschluss heißt das: Benötigt man bestimmte Funktionen nicht, kann man sich den Serverplatz einfach sparen.

Auch OpenProject kann man vor der Installation auf dem eigenen Server testen. Und das noch komfortabler als LibrePlan. Man bekommt mit nur ein paar Klicks eine eigene Testinstanz, mit der man rumspielen kann. Nach 30 Tagen wird dann die Instanz und mit ihr alle Daten gelöscht.

Nachteile gibt es allerdings auch hier: OpenProject ist einfach noch nicht so komfortabel wie LibrePlan. Das fängt schon bei der Installation an. Es gibt zwar neuerdings deb-Pakete, dieses beinhaltet aber keine Plugins und man müsste diese dann von Hand nachinstallieren. Auch sonst ist alles ein bisschen starrer. So kann man Paketnamen und Beschreibungen nicht einfach editieren. Vielleicht ist dies auch beabsichtigt, ich hätte aber gerne die Option dazu. Auch kann man nicht so schön einfach Pakete oder ganze Arbeitspaketbäume per Drag & Drop umplanen. In vielen Fällen bleibt nichts anderes übrig, als Duplikate zu erstellen und die Originale dann zu löschen. Das ist besonders ärgerlich, wenn schon auf das Paket gearbeitet wurde und mit veränderter Paketnummer auch alle Verweise flöten gehen.

Fazit

Gute Software, die das Planen und Durchführen, vor allen Dingen von Softwareprojekten leicht macht. Gute Integration von VCS und nützliche Features, die sich durch Plugins an und ausschalten lassen. Dazu auch Shared Hoster geeignet. Wären die Abzüge in der B-Note nicht, wäre es eine perfekte Software. Aber schon jetzt ist OpenProject für kleinere und mittlere Unternehmungen geeignet.

Zum Blog: www.lioman.de

Ich habe mir nach langer Zeit mal wieder einen neuen Wallpaper mit dem Open Source Programm Gimp designt und möchte ihn hier zum Download zu Verfügung stellen.
Wie alle Wallpaper von mir hat auch dieser einen Namen Bekommen, SoxDev, der hat aber keine besondere Bedeutung.
Als Format habe ich 1920×1080 px gewählt und ihr könnt durch einen klick auf dass Bild den Wallpaper mit dieser Auflösung downloaden.

Wer den Wallpaper auf seinem Blog vorstellen möchte dem möchte ich bitte an die Verlinkung auf diesen Blog Beitrag erinnern.

Quelle - Wallpaper von mir
Quelle – Wallpaper von mir

Viel Spaß beim benutzen. 🙂

Firefox 32 kommt mit einer Funktion zur Übersetzung von Webseiten. Mozilla wird dieses neue Feature mit Nutzern der deutschsprachigen Aurora-Version von Firefox testen.

Mozilla integriert in Firefox 32 ein neues Feature, welches anderssprachige Webseiten per Knopfdruck übersetzen kann. Standardmäßig aktiviert wird dieses Feature noch nicht in der finalen Version von Firefox 32 sein, in jedem Fall wird Mozilla einen Test dieser Funktion speziell mit den deutschsprachigen Aurora-Nutzern von Firefox 32 machen (Bug 1021921, Bug 1022411). Die Übersetzungen kommen dabei von Microsofts Übersetzungs-Dienst.

Voraussetzung zur Teilnahme am Test sind neben einer deutschsprachigen Aurora-Version aktivierte Telemetrie-Experimente (standardmäßig aktiviert). Das Feature wird für 50 Prozent der Nutzer aktiviert werden, für die anderen 50 Prozent nicht, und das für eine Dauer von mindestens drei, maximal sechs Wochen. Es handelt sich dabei um einen Testlauf für den eigentlichen Testlauf, der zu einem späteren Zeitpunkt geplant ist.

Unabhängig davon kann das Feature bereits von jedem Nutzer von Firefox Aurora oder Firefox Nightly aktiviert werden, indem die beiden Schalter browser.translation.detectLanguage und browser.translation.ui.show per about:config auf true geschaltet werden. Allerdings wird dies alleine nicht reichen, da Mozilla die Nightly- und Aurora-Versionen bislang noch ohne dafür notwendigen API-Schlüssel ausliefert. Wer das Feature aber jetzt schon testen möchte, kann sich mit seinem Microsoft-Konto im Windows Azure Marketplace registrieren und für die Microsoft Translator API anmelden. In Firefox müssen über about:config dann noch die beiden Schalter browser.translation.bing.clientIdOverride und browser.translation.bing.apiKeyOverride mit der selbst vergebenen Client-ID respektive des von Microsoft erhaltenen API-Schlüssels angelegt werden. Bis zu zwei Millionen Zeichen pro Monat sind kostenlos. Dies wird zu einem späteren Zeitpunkt natürlich nicht mehr notwendig sein und die Nutzung des Features in jedem Fall kostenlos sein, egal wie intensiv der Nutzer Gebrauch von dieser Firefox-Funktion macht. Die Einschränkung gilt nur für den eigenen API-Schlüssel, welcher notwendig ist, um das Feature bereits jetzt zu testen.

Die Entwickler von Firebug, der wohl beliebtesten Firefox-Erweiterung für Webentwickler, haben Firebug in Version 2.0 veröffentlicht. Die neue Version nutzt Mozillas aktuelle Debugging-Engine JSD2, kommt mit einem überarbeiteten Design und vielen neuen Features.

Ende März wurde die erste Alpha-Version von Firebug 2.0 veröffentlicht, zeitgleich mit der Veröffentlichung von Firefox 30 wurde auch die finale Version von Firebug 2.0 veröffentlicht. Firebug 2.0 setzt mindestens Firefox 30 voraus.

Die wichtigste Neuerung von Firebug 2.0 ist, dass Firebug nun auch die Firefox Debugging Engine JSD2 einsetzt, womit viele JSD1-bedingte Probleme der Vergangenheit angehören; insbesondere die Performance hatte teilweise stark unter JSD1 gelitten. Das neue Design lässt Firebug moderner und besser ins Betriebssystem integriert wirken, alte Firebug-Nutzer finden sich aber sofort zurecht, da die Veränderungen vor allem optische Details betreffen, so ist beispielsweise alles ein wenig flacher und die Farben sind etwas anders, der grundsätzliche Aufbau wurde aber beibehalten. Für viele Apple-Nutzer wichtig: Firebug 2.0 ist auch für HiDPI-Bildschirme aka Retina-Displays optimiert.

Weitere Highlights von Firebug 2.0 sind die Verwendung des CodeMirror-Editors, Syntax Highlighting im HTML-Bearbeiten-Modus, CSS-Bearbeiten-Modus und für JavaScript im Script-Panel, eine Funktion zur Quellcode-Formatierung, besonders praktisch bei minimierten Scripts, eine Autovervollständigung für den Befehlseditor, Autovervollständigung für HTML-Attribute und CSS-Eigenschaften im HTML-Panel, die Unterstützung von CSS Selektoren und Regulären Ausdrücken für die Suche im HTML-Panel, ein DOM-Event-Inspektor, eine Option zur Gruppierung von Nachrichten in der Konsole, die Möglichkeit neue Attribute zu Tags im HTML-Panel durch Klicken auf eine schließende Klammer hinzuzufügen oder das Anzeigen von CSS Farbwerten, so wie sie im Stylesheet angegeben worden sind. Dies ist nur eine Auswahl neuer Features, welche neben zahlreichen Fehlerbehebungen Teil von Firebug 2.0 sind. Im Detail geht die offizielle Release-Ankündigung von Firebug 2.0 auf die Neuerungen ein.

Download Firebug 2.0

Bei meinem kleinem Projekt GameCenter gibt es wieder etwas zu berichten und auch ein neues Screenshot.
Neben den Neuerungen im Quellcode habe ich auch ein neues Bild für die Kopfzeile mit Gimp designt.
Daneben habe ich den Platzhaltern für die Spielbilder auch ein neues Aussehen verpasst was dass Programm schon recht gut darstellen lässt.

Quelle - Bildschirmfoto von GameCenter
Quelle – Bildschirmfoto von GameCenter

Hinzugekommen sind viele neue Funktionen und Fehlerbehebungen die dass Programm brauchbar machen.
Unter den neuen Funktionen befindet sich auch eine Möglichkeit einen Spielstand zu sichern jedoch möchte ich noch dass speichern mehrerer Spielstände einbauen.
Auch habe ich statt Fenster nun Dialoge für dass bearbeiten von Spielen verwendet und viele weitere kleine Änderungen vorgenommen.

Warnung: F2FS ist recht neu im Kernel und noch nicht stabil. Es ist wahrscheinlich keine gute Idee, es für die Rootpartition zu nutzen. Man braucht ein Backup.

F2FS ist ein für NAND-Speicher entworfenes Dateisystem. Eine detaillierte Erklärung ist auf lwn.net. Auf mich wirkte es verlockend, es ist relativ simpel aufgebaut und doch ist klar, warum es für SSDs gut funktionieren sollte. Bisher ist es aber eher im Gespräch für Smartphones und USB-Sticks, auch wenn die initiale Ankündigung explizit SSDs erwähnt. Wahrscheinlich weil ausgewachsene SSDs mit normalen Dateisystemen gut umgehen können.

Unter Ubuntu 14.04 ist es im Kernel, aber nicht in den Installer integriert und es wird nicht beim Boot geladen. Das macht die Installation etwas schwierig. Die Hauptknackpunkte:

  1. Es braucht eine separate Bootpartition mit einem Dateisystem, mit dem Grub umgehen kann
  2. Die initramfs muss das F2FS-Modul integrieren

Mein Szenario ist so: Ich habe ein bestehendes Ubuntu-System auf einer alten Festplatte, /dev/sda mit ext4, frisch auf Ubuntu 14.04 aktualisiert, ohne separate Boot-Partition. Die neue SSD ist unter /dev/sdc (Vorsicht: Mit dem neuen Kernel sind diese Zuweisungen wirklich nicht mehr zuverlässig, die Platten springen. Man muss Labels und UUIDs nutzen). Mein Mainboard hat ein BIOS, kein UEFI.

Zuerst wird mit gparted die SSD formatiert.

Da ich als Partitionstabelle GPT ausgewählt habe, muss auf meinem BIOS-System eine 2MB-Partition ohne Dateisystem mit dem Flag bios_grub am Anfang stehen (ein UEFI-System bräuchte laut Wiki stattdessen eine 200MB große FAT32-Partition mit boot-flag, die später unter /boot/efi eingebunden werden müsste). Dann die boot-Partition mit einem beliebigen Linux-Dateisystem, hier ext2, Label boot. Und schließlich die Root-Partition mit f2fs und Label linuxssd; wie man auf dem Bild sieht, kann gparted damit später nicht mehr umgehen, man muss sich das merken und kann gparteds Arbeit hier nicht kontrollieren.

Nun das alte System auf die SSD kopieren:

sudo modprobe f2fs
sudo mkdir /media/ssd
sudo mount /dev/sdc3 /media/ssd
sudo cp -a / /media/ssd

Das dauert.

Allerdings wird so auch /boot auf sdc3 kopiert, das wollen wir nicht. Also rückgängig und richtig machen:

sudo rm -R /media/ssd/boot/*
sudo mount /dev/sdc2 /media/ssd/boot
sudo cp -a /boot  /media/ssd

Noch ist weder Grub installiert noch die fstab angepasst. Letzteres zuerst. Meine /media/sdd/etc/fstab sieht so aus:

# /etc/fstab: static file system information.
#
# Use 'blkid -o value -s UUID' to print the universally unique identifier
# for a device; this may be used with UUID= as a more robust way to name
# devices that works even if disks are added and removed. See fstab(5).
#
#                
proc            /proc           proc    nodev,noexec,nosuid 0       0

# Linux Root
LABEL=linuxssd   /   f2fs    noatime,discard	0       1
UUID=36a84be5-21aa-4f23-ba29-da62adbe4216   /boot   ext2    defaults    0   0

# have /tmp in ram
tmpfs        /tmp           tmpfs    defaults,noatime    0    0
# have logs in ram
tmpfs        /var/log           tmpfs    defaults,noatime    0    0

Klar, die UUID für /boot muss angepasst werden, entweder per blkid oder mit gparted auslesen. Edit: Stellt sich raus, dass das nicht funktioniert, weil das label nicht unter /dev/disk/by-label aufgeführt wird. Stattdessen muss man derzeit die id verwenden, also statt der LABEL-Zeile:

/dev/disk/by-id/ata-SanDisk_SDSSDHP128G_140203400869-part3     /    f2fs    noatime,discard	0       1

Nun ist es Zeit, in das neue System zu chrooten um den Bootvorgang einzurichten:

sudo mount --bind /dev /media/ssd/dev
sudo mount --bind /proc /media/ssd/proc
sudo mount --bind /sys /media/ssd/sys
sudo chroot /media/ssd

Auf der SSD kann nun die initramfs gefixt werden:

echo "f2fs" >> /etc/initramfs-tools/modules
update-initramfs -u

Dann fehlt nur noch Grub:

Edit: Da update-grub irrigerweise /dev/disk/by-id/… ignoriert und stattdessen /dev/sdc3 einträgt, muss zuerst in der /etc/default/grub

GRUB_DEVICE="/dev/disk/by-id/…"

eingetragen werden. Dann:

grub-install /dev/sdc
update-grub

Jetzt sollte von der SSD Ubuntu mit F2FS gebootet werden können.

Die meisten Linux Nutzer kennen sicherlich den Befehl

grep
 , mit dem nach bestimmten Zeichen oder Zeichenketten gesucht werden kann. So kann man sich z.B. alle Zeilen aus 
/var/log/messages
  anzeigen lassen, die das Wort “fail” enthalten:
grep fail /var/log/messages

grep lässt sich aber auch genau anders herum verwenden, indem man den Parameter 

-v
  verwendet, damit wird die Bedeutung von grep invertiert, es werden also alle Zeilen angezeigt, die nicht die angegebene Zeichenkette enthalten. Ich finde es recht praktisch, wenn man sich schnell einen Überblick über Konfigurationsdateien verschaffen möchte, die sehr viele Kommentare enthalten:
grep -v "#" /etc/httpd/conf/httpd.conf

Oder etwas umfangreicher:

grep -v -E -e "\s*#" -e "^$" /etc/httpd/conf/httpd.conf

Der Parameter -v invertiert grep, -E aktiviert den erweiterten RegExp Modus und die zwei mit -e angegebenen regulären Ausdrücke sorgen dafür, dass nur Zeilen angezeigt werden, die nicht mit einer Raute (oder Whitespaces gefolgt von einer Raute) beginnen und nicht leer sind.

So erhält man eine kommentarfreie Ausgabe der Konfigurationsdatei, aber natürlich sind der Anwendungsvielfalt keine Grenzen gesetzt.

Firefox - schneller und sicherer surfen
Es gibt ein paar nützliche Addons für Firefox, mit denen das Surfen schneller und etwas sicherer geht. Zu finden sind sie alle über die Addon Funktion in Firefox selbst. Selbstverständlich sind sie alle auch abschaltbar, falls eine Webseite ohne Schnüffelfunktionen gar nicht funktioniert. Natürlich sollte man wissen, was man tut und gewissenhaft durch die Einstellungen gehen!

Ghostery
Blockt Webseiten Tracker, die versuchen das Surfverhalten auszuspähen.
(Dont use!)

Disconnect [link]
Blockt Webseiten Tracker, die versuchen das Surfverhalten auszuspähen. (siehe Kommentare/Danke).
Es gibt noch Disconnect Search, das sicherlich einen Test wert ist Allerdings deaktiviert dieses Addon merkwürdigerweise die Enter-Taste auf der Google Search Seite.. [link]

Click&Clean  [link]
Löscht Cookies und andere Spuren von Webseiten, die sich auf der Festplatte verewigen wollen.

Adblock Edge  [link]
Verhindert das Laden von Werbung. Damit könnt ihr bestimmen, welche Webseite ihr mit den Werbeeinnahmen untersützen wollt.  (update: Aktivieren der Easy Privacy List verbessert das Surfen - siehe Kommentare / Danke)

NoScript  [link]
Verhindert das Laden und die Ausführung von Scripten. Manche Webseiten werden dadurch plötzlich blitzschnell. Vorsicht, manche Funktionalität von Webseiten können damit komplett eingeschränkt werden. Also immer daran denken, dass hier ein Addon am Werk ist.

Update 16.06.2014

Firefox - schneller und sicherer surfen
Es gibt ein paar nützliche Addons für Firefox, mit denen das Surfen schneller und etwas sicherer geht. Zu finden sind sie alle über die Addon Funktion in Firefox selbst. Selbstverständlich sind sie alle auch abschaltbar, falls eine Webseite ohne Schnüffelfunktionen gar nicht funktioniert. Natürlich sollte man wissen, was man tut und gewissenhaft durch die Einstellungen gehen!

Ghostery
Blockt Webseiten Tracker, die versuchen das Surfverhalten auszuspähen.
(Dont use!)

Disconnect [link]
Blockt Webseiten Tracker, die versuchen das Surfverhalten auszuspähen. (siehe Kommentare/Danke).
Es gibt noch Disconnect Search, das sicherlich einen Test wert ist Allerdings deaktiviert dieses Addon merkwürdigerweise die Enter-Taste auf der Google Search Seite.. [link]

Click&Clean  [link]
Löscht Cookies und andere Spuren von Webseiten, die sich auf der Festplatte verewigen wollen.

Adblock Edge  [link]
Verhindert das Laden von Werbung. Damit könnt ihr bestimmen, welche Webseite ihr mit den Werbeeinnahmen untersützen wollt.  (update: Aktivieren der Easy Privacy List verbessert das Surfen - siehe Kommentare / Danke)

NoScript  [link]
Verhindert das Laden und die Ausführung von Scripten. Manche Webseiten werden dadurch plötzlich blitzschnell. Vorsicht, manche Funktionalität von Webseiten können damit komplett eingeschränkt werden. Also immer daran denken, dass hier ein Addon am Werk ist.

Update 16.06.2014

Firefox - schneller und sicherer surfen
Es gibt ein paar nützliche Addons für Firefox, mit denen das Surfen schneller und etwas sicherer geht. Zu finden sind sie alle über die Addon Funktion in Firefox selbst. Selbstverständlich sind sie alle auch abschaltbar, falls eine Webseite ohne Schnüffelfunktionen gar nicht funktioniert. Natürlich sollte man wissen, was man tut und gewissenhaft durch die Einstellungen gehen!

Ghostery
Blockt Webseiten Tracker, die versuchen das Surfverhalten auszuspähen.
(Dont use!)

Disconnect [link]
Blockt Webseiten Tracker, die versuchen das Surfverhalten auszuspähen. (siehe Kommentare/Danke).
Es gibt noch Disconnect Search, das sicherlich einen Test wert ist Allerdings deaktiviert dieses Addon merkwürdigerweise die Enter-Taste auf der Google Search Seite.. [link]

Click&Clean  [link]
Löscht Cookies und andere Spuren von Webseiten, die sich auf der Festplatte verewigen wollen.

Adblock Edge  [link]
Verhindert das Laden von Werbung. Damit könnt ihr bestimmen, welche Webseite ihr mit den Werbeeinnahmen untersützen wollt.  (update: Aktivieren der Easy Privacy List verbessert das Surfen - siehe Kommentare / Danke)

NoScript  [link]
Verhindert das Laden und die Ausführung von Scripten. Manche Webseiten werden dadurch plötzlich blitzschnell. Vorsicht, manche Funktionalität von Webseiten können damit komplett eingeschränkt werden. Also immer daran denken, dass hier ein Addon am Werk ist.

Update 16.06.2014

Als erstes möchte ich hier klären was “Twig” ist und wie man diese PHP-Bibliothek verwendet.

Was ist Twig?

Twig ist eine Open Source Template-Engine für PHP und wird z.B. von Symfony verwendet. Damit ist es möglich die Programmierung vom Layout zu trennen und Projekte somit übersichtlicher und sicherer zu erstellen. Zudem kann man Twig relativ einfach erweitern und neue Funktionen oder Filter hinzufügen. Außerdem ist die Dokumentation wirklich gut und die Einarbeitungszeit ist sehr kurz.

 

Schnelle Installation

Damit man einen schnellen Einstig in Twig bekommt, habe ich eine kleine Wrapper-Klasse geschrieben und in einem zweiten Projekt “Twitter Bootstrap” als Twig-Beispiel -Template integriert.

git clone https://github.com/voku/twig-wrapper-example/

Das Projekte ist mit Gunt + SASS + Bower + Composer etc. aufgesetzt, jedoch habe ich alle Vendor-Dateien mit in dem Repository eingecheckt, so dass man keine komplette Toolchain benötigt um die folgenden Beispiele auszuprobieren.

PS: um das Projekt zu updaten bzw. weiterzuentwickeln kann man folgende Befehle ausführen:

cd twig-wrapper-example/
rm -rf vendor/
rm composer.lock
npm install
bower install
composer install
grunt build
grunt watch

 

Syntax

Die Allgemeine-Syntax lässt sich in “output”, “function” und “comment” unterteilen.

output” ->  {{ … }}  -> um Variablen in das Template einzufügen

function” -> {% … %} -> um Funktionen auszuführen

comment” -> {# … #} -> um einen Kommentar einzufügen, welche nur im Twig sichbar ist (nicht im späterem “html”-output)

Variablen

Man kann sowohl Arrays, einfache Variablen oder ganze Objekte an Twig übergeben.

z.B.:

$object = new Object();
$twig->assign('object', $object);
$array = array(1,2,3,4,5);
$twig->assign('array', $array);
$string = 'test';
$twig->assign('string', $string);

Zudem kann man auch Variablen in einem Twig-Template definieren:

{% set totalimages = 4 %}

Filter

Auf der Kommandozeile ist man bereits an Pipes ( “|” ) gewöhnt und kann dies nun auch bei der Entwicklung nutzen. :)

{% set totalimages = object.images | length %}
{{ array[1] | striptags | raw }}

Kontrollstrukturen

“if”-Bedingungen werden wie folgt geschrieben:

{% if (name == "foo") or (name == "bar") %}
    {{ name }}!!!
{% elseif name == "test" %}
    {{ name }} -> was a test
{% else %}
    {{ name }}
{% endif %}

“loops” in Twig: for

{% for asset in headerObject %}
  <img src="{{ asset.url }}">
  <p>{{ asset.caption }}</p>
  {% if loop.index0 is divisibleby(2) %}
    <hr />
  {% endif %}
{% endfor %}

PS: außerdem kann man wie im vorherigen Beispiel – “loop” nutzen, um den Anzahl von aktuellen Durchläufe zu analysieren

 

extends

Eine Hauptfunktionalität ist die Twig-Funktion “extends“. Mit dieser Funktion kann man sein Template erweitern und zuvor definierte Bereiche (block – endblock) wiederum ersetzten.

{%extends “base.twig” %}

base.twig -> index.twig

Der vorherige Befehl bewirkt in der “index.twig” Datei, dass das angegebene Template erweitert wird. Dabei ist es sehr hilfreich möglichst viel HTML-Code in einem Basis-Twig unterzubringen. Anders wie bei vielen anderen PHP-Projekten sollte man nicht so oft via “include” inkludieren, sondern bestimmte Bereiche (blocks) im “base.twig” festlegen und diese mit Inhalten befüllen, erweitern oder leeren.

 

include

Die Funktionalität “include” lässt sich einsetzten um Template-Komponenten (z.B.: einen Slider) an mehreren Stellen einzufügen. Man hat die Möglichkeit beim “include”-Aufruf Variablen zu übergeben, jedoch kann man keine “blocks” von bereits inkludierten Templates mehr ändern.

{% include “inc_carousel.twig” %}

base.twig -> inc_carousel.twig

 

embed

Beim “embed” handelt es sich um eine Mischung aus extending & including, so kann man innerhalb des embed-Aufrufes darin befindliche “blocks” ersetzten.

{% embed “content_sidebar.twig” %}

index.twig -> content_sidebar.twig

 

Twig_Extension

Wem ein bestimmter Filter oder Funktion fehlt, kann dies sehr einfach in Twig  integrieren z.B. -> PluginHtml.php

$twig->addExtension(new PluginHtml());

 

Links

http://knpuniversity.com/screencast/twig/basics | Basics – Video
http://twig.sensiolabs.org/ | Dokumentation

14. Juni 2014

Der Kernel 3.14.7 für Debian Testing auf dem Acer C720 kann hier heruntergeladen werden.
Nach dem Entpacken kann mit
md5sum -c linux-image-3.14.7-c720_20140614_amd64.deb.md5
überprüft werden, ob der Kernel korrekt heruntergeladen wurde.

cat linux-image-3.14.7-c720_20140614_amd64.deb.md5 
57e6da7f280e30dcfac2887b68503962  linux-image-3.14.7-c720_20140614_amd64.deb

Der Kernel 3.14.7 für Debian Testing auf dem Acer C720 kann hier heruntergeladen werden.
Nach dem Entpacken kann mit
md5sum -c linux-image-3.14.7-c720_20140614_amd64.deb.md5
überprüft werden, ob der Kernel korrekt heruntergeladen wurde.

cat linux-image-3.14.7-c720_20140614_amd64.deb.md5 
57e6da7f280e30dcfac2887b68503962  linux-image-3.14.7-c720_20140614_amd64.deb

13. Juni 2014

Mit dem Sitecom WiFi USB adapter AC1200 hatte sich lange Zeit ein schneller “ac”-fähgier WLAN-Stick in meinem Schrank versteckt. WLAN und Linux sind bekanntlich keine guten Freunde, wobei dieser Zustand über die letzten Jahre fairerweise zu einer Hassliebe weiterentwickelt hat.
Als Benutzer eines “ac”-fähigen Sitecom Routers, für den ich mich auf Grund seiner quelloffenen Firmware entschied, schnappte ich mir auch gleich den passenden WLAN-Stick: Den “Sitecom WiFi USB adapter AC1200″. Eine teure Anschaffung für relativ wenig Funktion, die sicherlich nicht die Schlauste des letzten Jahres war. Wie auch immer…

Kleiner Hinweis: Der Artikel trifft ebenso auf alle weiteren Adapter-Modelle mit “8812au” sowie “8821au” Chipsatz zu. Dazu gehört unter anderem der Adapter ASUS USB-AC56 (danke für den Hinweis, Sebi!)

Ich bediene mich der Beschreibung ubuntuusers’ zu DKMS:

DKMS steht für Dynamic Kernel Module Support. Das von Dell entwickelte Hilfsprogramm überwacht, ob zusätzliche Kernelmodule manuell installiert wurden und aktualisiert die Module immer dann, wenn ein neuer oder aktualisierter Kernel installiert wird. Dies ist insofern praktisch, dass das Kompilieren des Kernelmoduls nicht immer von Hand durchgeführt werden muss, wenn der Kernel aktualisiert wurde.

So simpel wie auch praktisch, kann DKMS eine echte Hilfe sein. Auch die proprietären NVIDIA-Treiber bedienen sich dieser Technik. Ohne DKMS würde es zu einer Notwendigkeit, nach einem Kernel-Upgrade das Modul neu zu generieren.

Das Modul kommt aus dem Git-Repository und wird zur Verfügung gestellt von Anand Babu Periasamy.

Dieser Artikel dient in erster Linie der Einrichtung des Sitecom Sticks unter Ubuntu. Andererseits möchte ich hiermit auch die Vorteile von DKMS im Allgemeinen aufzeigen. Analog zu Debian weiteren Derivanten.

Installation

Die Abhängigkeiten installieren:

1
sudo apt-get install linux-headers-$(uname -r) linux-headers-generic build-essential dkms debhelper git

Die notwendigen Quellen werden aus dem Git-Repository nach “/usr/src” geklont und in dem neuen Verzeichnis “rtl8812AU-git” eine Konfigurationsdatei für DKMS angelegt:

1
2
sudo git clone https://github.com/abperiasamy/rtl8812AU_8821AU_linux /usr/src/rtl8812AU-git
sudo nano /usr/src/rtl8812AU-git/dkms.conf

Der Datei füge ich nun Anweisungen hinzu:

1
2
3
4
5
6
7
DEST_MODULE_LOCATION=/extra
PACKAGE_NAME=rtl8812AU
BUILT_MODULE_NAME=8812au
PACKAGE_VERSION=git
MAKE="'make' all"
CLEAN="'make' clean"
AUTOINSTALL="yes"

Nano kann nun verlassen- und die Datei gespeichert werden.
DKMS erfährt von dem neuen Modul:

1
sudo dkms add -m rtl8812AU -v git

Der Output entspricht etwa Folgendem:

Creating symlink /var/lib/dkms/rtl8812AU/git/source ->
/usr/src/rtl8812AU-git

DKMS: add completed.

Natürlich benötige ich das entsprechende Modul sofort, nicht erst beim nächsten Kernelupgrade. Daher stoße ich die Installation einmalig an.
Dazu wird DKMS einmal mit der Anweisung “build” sowie “install” aufgerufen, vergleichbar mit “make” und “make install”:

1
2
sudo dkms build -m rtl8812AU -v git
sudo dkms install -m rtl8812AU -v git

Etwa zu erwartender Output:

Building module:
cleaning build area….
‘make’ all………….
cleaning build area….
DKMS: build completed.
[...]
depmod….
DKMS: install completed.

Die Installation ist somit komplett. Den Stick an dieser Stelle (erneut) einstecken und loslegen.

Sitecom, iwconfig

Sitecom, iwconfig

Um die Versionsnummer eines installierten Postfix zu ermitteln, reicht es im Terminal folgendes einzugeben:

postconf -d mail_version

Anschließend erhält man eine Ausgabe nach dem Schema:

mail_version = 2.11.0

Da die Parameter aus der main.cf ausgelesen werden, ist es wichtig den Parameter –d anzugeben. So werden nicht die überschriebenen Werte zurückgegeben, sondern die Standardwerte, in diesem Fall die korrekte Versionsnummer.

12. Juni 2014

Ich habe für mein GameCenter jetzt ein Projekt auf Launchpad gestartet.
Dort findet sich der aktuelle Source Code sowie bald eine PPA über die sich die Software installieren lässt.
Wer mithelfen möchte kann mir gerne eine Nachricht schreiben, ich bin dankbar für jede Hilfe.

Noch ist zwar nicht viel zu sehen jedoch habe ich schon einige Ideen die ich ab und zu unter den Source Code, zusammen mit dem Changelog, schreibe.
Mehr Infos gibt es in späteren Beiträgen.

Mit dem Sieve Plugin für Dovecot können eintreffende E-Mails nach bestimmten Kriterien in besondere IMAP Ordner verschoben werden. Mails von bestimmten Personengruppen oder Nachrichten mit einem speziellen Betreff können auf diese Weise automatisch in vordefinierten Ordnern abgelegt werden, sodass die manuelle Sortierung entfällt.

Zuerst wird die Dovecot Sieve Erweiterung installiert:

sudo -s
apt-get install dovecot-sieve

Das Sieve Plugin wird nun für den Local Delivery Agent (LDA) oder das LMTP aktiviert. Ich nutze LMTP statt LDA und bearbeite deshalb die Datei „20-lmtp.conf” in /etc/dovecot/conf.d/:

protocol lmtp {
    # Space separated list of plugins to load (default is global mail_plugins).
    mail_plugins = $mail_plugins sieve
}

In der Hauptkonfiguration /etc/dovecot/dovecot.conf werden die Einstellungen für Sieve vorgenommen. Im Beispiel unten werden die Pfade zu verschiedenen Filterdateien mit .sieve – Endung angegeben. Diese Dateien enthalten später den Sieve Code, nach dem die Nachrichten gefiltert und einsortiert werden. „sieve” beschreibt das allgemeine Muster, wie benutzerspezifische Filterdateien auszusehen haben. Eine Filterdatei, die den E-Mail Nutzer „benutzer@server.de” betreffen soll, muss demnach den Dateinamen „benutzer@server.de.sieve” haben. Wenn keine benutzerspezifische Filterdatei gefunden werden kann, wird auf den „sieve_default” Filter ausgewichen. Zuletzt wird noch ein allgemeiner Filter definiert, der für alle Benutzer gilt und die Besonderheit hat, als erster ausgeführt zu werden (sieve_before) – also noch vor den Filtern der einzelnen Benutzer. Er hat damit höchste Priorität. Das ist z.B. beim Filtern von Spam sinnvoll (z.B. Erkennen von Spam-Headern, die von Amavis gesetzt wurden…).

plugin {
    sieve = /var/vmail/sieve/%u.sieve
    sieve_default = /var/vmail/sieve/default.sieve
    sieve_before = /var/vmail/sieve/spam-global.sieve
}

Nun werden noch default und spam-global Sieve Filter angelegt, damit sich Dovecot beim Start nicht wegen fehlender Dateien beschwert:

cd /var/vmail
mkdir sieve
touch default.sieve
touch spam-global.sieve
chown -R vmail:vmail ./

Der Inhalt wird noch nicht festgelegt.

Denkt beim erstellen von Filterregel-Dateien immer daran, die Dateirechte korrekt zu setzen. Eigentümer soll vmail sein (unter dem Dovecot läuft)!

Wie ihr Filterregeln für Sieve schreibt, könnt ihr in auf dieser Seite nachlesen: https://secure.gold.ac.uk/sieve-new/howto.php

Besonders interessant ist der autoresponder, den ihr über Sieve konfigurieren könnt. Wenn ihr über längere Zeit nicht via E-Mail erreichbar seid, könnt ihr darüber automatische Antworten verschicken.

Sieve Filter über den Mailclient verwalten (Managesieve)

Für die verschiedenen Mailclients können ggf. Sieve Addons installiert werden, womit die Verwaltung der Filter für den Nutzer ermöglicht wird. Damit ist er nicht mehr auf den Administrator des Servers angewiesen und kann seine Filter selbst hochladen oder ändern. Ermöglicht wird das über einen zusätzlichen Managesieve Server, der sehr einfach und schnell zu Dovecot hinzugefügt werden kann. Wie das funktioniert, erfahrt ihr hier:
Dovecot Sieve Manager (Managesieve) installieren und einrichten

Über die Dovecot MailboxSettings können für alle E-Mail Postfächer bestimmte Standard-Ordner festgelegt werden, die für jedes Postfach bei Bedarf erstellt werden und nicht mehr von Hand angelegt werden müssen. Ein Anwendungsbeispiel ist z.B. das Bereitstellen eines Junk/Spam-Ordners, den jedes Postfach haben soll, sodass darin z.B. über ein Sieve Filterscript Spam-E-Mails abgelegt werden können.

Die Standardordner werden in der Datei /etc/dovecot/dovecot.conf wie folgt konfiguriert:

namespace inbox {
    mailbox Spam {
        auto = subscribe
        special_use = \Junk
    }

    mailbox Entwürfe { 
        auto = create 
        special_use = \Drafts  
    }
}

Hier wurden zwei Standardordner definiert: Ein Spam-Ordner und ein Verzeichnis für E-Mail Entwürfe. Falls der Ordnername Leerzeichen enthalten soll, muss er in Anführungszeichen gesetzt werden. Der Parameter „auto” kann die Attribute „no”, „create” und „subscribe” annehmen.

  • no: Nicht automatisch erstellen
  • create: Ordner automatisch erstellen
  • subscribe: Ordner automatisch erstellen und von Mailclients abonnieren lassen

Für einen Spam-Ordner wäre die letzte Einstellung „subscribe” sinnvoll. Der Parameter „special_use” gibt eine Funktion für die Mailbox an. „\Junk” sagt den Mailclients, dass dieser Ordner die Funktion hat, Spam E-Mails aufzunehmen. Mit „\Drafts” weiß der Mailclient, dass hier Entwürfe abzulegen sind. Der „special_use” Parameter kann aber auch leer bleiben, wenn es keine Allgemeine Funktion gibt.

Nach der Konfiguration muss Dovecot neu geladen werden:

service dovecot reload

Sobald sich ein Mailclient das nächste Mail einloggt, werden die Standardordner erstellt (sofern nicht schon vorhanden) und ggf. in die Abos aufgenommen, sodass der Benutzer über neue Nachrichten in diesen Ordnern informiert wird.

Von Ubuntu Lucid bis Utopic, versorgt Paolos PPA seit kurzer Zeit Nutzer Ubuntus mit aktuellen Copy.com Client Paketen:
 
 
 

1
2
3
sudo add-apt-repository ppa:paolorotolo/copy
sudo apt-get update
sudo apt-get install copy

Auch ohne PPA besteht direkter Zugriff auf die Pakete:

Indicator Fix

Copy Client Bug (Quelle: webupd8)

Copy Client Bug (Quelle: webupd8)

Dank webupd8, steht nun auch ein Fix für den Ubuntu-eigenen Unity Desktop zur Verfügung. Betroffene Distributionen sind Ubuntu 13.10 und aufwärts. Ob seitens Barracuda bereits an einer Lösung gearbeitet wird, bleibt nur zu hoffen.

Die veränderten Dateien werden als Archiv direkt im Ordner der Copy.com Client Installation entpackt.

Der Pfad zum Client lautet im Falle einer Installation aus dem PPA “/opt/copy-client”:

1
cd && wget https://github.com/hotice/webupd8/raw/master/libdbusmenu-gtk-$(arch).tar.gz -O - | sudo tar -C /opt/copy-client -xvzf -

Wurde die Installation manuell durchgeführt, muss der Pfad entsprechend angepasst werden.

Noch keinen Copy.com Account? (Referral-Link mit 5GB extra für dich und mich)

Nachdem ich zu dem Thema schon einen Beitrag für den Apache Webserver veröffentlicht und meinen Server heute Nacht auf Nginx umgestellt habe, darf natürlich auch die Umstellung für Nginx nicht fehlen ;)

Wie ich im Beitrag zum Apache Webserver schon erwähnt habe, ist laut TMG (=> TMG §15) das Speichern von IP-Adressen über den Webserver nicht zulässig, außer es ist zwingend Notwendig, um dem Benutzer einen Dienst anbieten zu können. Die Ausnahme trifft bei meinem Blog (und den meisten anderen) aber nicht zu, sodass ich gesetzlich verpflichtet bin, die IP-Adressen meiner Besucher aus den Logfiles zu entfernen.

Unter Ubuntu Server 14.04 findet man im Nginx Konfigurationsverzeichnis eine Datei nginx.conf. Dort wird in den http-Bereich folgendes eingetragen:

log_format ipkiller '[ip-addr] - $remote_user [$time_local] '
                    '"$request" $status $bytes_sent '
                    '"$http_referer" "$http_user_agent" "$gzip_ratio"';

access_log /var/log/nginx/access.log ipkiller;
# access_log off;

Ein neues Logformat „ipkiller” wird eingerichtet und vom accesslog genutzt. Bei diesem neuen Profil werden die IP-Adressen nicht erfasst und der Platzhalter [ip-addr] eingefügt. Wer will, kann den Accesslog auch ganz abschalten – im normalen Betrieb hat man davon sowieso keinen Nutzen. Es sei denn, man analysiert den Accesslog mit speziellen Tools, um Zugriffsstatistiken aufzustellen.

Anders als bei Apache kann für die Errorlogs leider kein Format festgelegt werden. Der Errorlog kann aber abgeschaltet werden (nicht zu empfehlen!):

error_log off;

Pünktlich zur heute startenden Fußball-Weltmeisterschaft in Brasilien gibt es von Mozilla und Goal.com passende Erweiterungen sowohl für den Desktop- als auch für den Android-Browser.

Mozilla und Goal.com haben eine SocialAPI-Erweiterung für Firefox veröffentlicht, welche alle Informationen zur Fußball-Weltmeisterschaft in Brasilien in den Browser holt, nicht nur Neuigkeiten, auch Live-Ergebnisse. Per Einstellung lässt sich entweder eine landesspezifische Edition, zum Beispiel für Deutschland, oder eine internationale Edition nutzen. Die Erweiterung funktioniert auch über die WM hinaus, denn es handelt sich dabei um eine allgemeine Fußball-Erweiterung, die WM dürfte aber den genau richtigen Anlass bieten, sich die Goal.com-Sidebar anzusehen.

Auch für Android haben Mozilla und Goal.com eine Erweiterung veröffentlicht. Diese erweitert den Homescreen von Firefox Mobile für Android um ein weiteres Panel mit den neusten Fußballnews von Goal.com, natürlich auch wieder zur WM ganz besonders interessant. Auch hier lässt sich entweder eine landesspezifische oder eine internationale Edition nutzen.

Darüber hinaus hat Mozilla eine Sammlung von Apps passend zur Fußball-WM zusammengestellt, darunter auch eine App von kicker.de. Die dort aufgeführten Apps funktionieren nicht nur für Firefox OS, sondern teilweise auch auf dem Desktop.

Heute Nacht habe ich mich von meinem Apache Webserver verabschiedet und bin auf Nginx („Engine X”) umgestiegen. Dieser Blog und alle anderen Sites auf meinem trashserver.net laufen nun mit dem superschlanken, schnellen Nginx Webserver, der sich vor allem als Proxy einen Namen gemacht hat und sich immer größerer Beliebtheit erfreut. Ja, nun bin ich auch einer von den Nginx-Hipstern ;)

Die Konfiguration war total neu für mich sodass ich einige Zeit damit verbracht habe, die Nginx Konfiguration zu verstehen. Ein wichtiger Unterschied zu Apache ist ja auch, dass Rewrite Rules nicht ein .htaccess Dateien geschrieben werden können. Im Allgemeinen finde ich Nginx weniger bequem – aber man soll dafür ja mit mehr Geschwindigkeit und vor allem weniger Serverlast entschädigt werden.

Gefühlt ist der Blog tatsächlich etwas schneller geworden, was aber nicht zuletzt auch daran liegt, dass ich PHP noch zusätzlich mit APC (PHP Cache) und Memcached ausgerüstet habe. Dazu kommt noch das WordPress Plugin „Cachify”, welches statische Dateien generiert, die dann von Nginx direkt ausgeliefert werden können. Das beschleunigt auch noch erheblich.

Pingdom meint, mein Blog sei nun schneller als 92% aller getesteten Websites. Dann bin ich ja zufrieden. Oder ließe sich das nicht noch weiter optimieren? … ;)

Da sitzt man vor seinem Ubuntu-Upgrade und eine unbedachte Handbewegung später hat man das Upgrade abgebrochen. In einem solchen Fall sollte man das Upgrade natürlich fortsetzen, wer möchte schon gerne ein halbfertiges System. Wurde die SSH Verbindung unterbrochen, muss sich im ersten Schritt mit dem Server verbunden werden. Anschließend gibt man im Terminal folgendes ein:

dpkg --configure -a
apt-get dist-upgrade
apt-get autoremove
apt-get autoclean
reboot

Danach sollte der Server auf dem aktuellsten Stand sein und das Upgrade durchgeführt sein. Sollte man das Upgrade vor dem Umstellen der Paketlisten abgebrochen haben, dürfte ein einfaches „do-release-upgrade“ genügenum den Upgrade-Vorgang erneut zu starten.

Gerade eben konnte ich meine E-Mails mit Thunderbird nicht mehr abrufen, das Einloggen ist fehlgeschlagen. Da es vor einigen Minuten noch funktioniert hatte und ich nichts geändert hatte, schaute ich mir mal das 

maillog
  auf dem Server an:

Jun 12 09:22:58 mail dovecot: imap-login: Maximum number of connections from user+IP exceeded (mail_max_userip_connections=20): user=<kontakt@finnchristiansen.de>, method=CRAM-MD5, rip=87.162.226.236, lip=81.169.159.20, TLS

Dovecot ist sogar so freundlich und erklärt, warum ich meine E-Mails nicht mehr abrufen konnte. Pro User und IP sind nur 20 Verbindungen erlaubt, was eigentlich ausreichen sollte. Bei mehreren Geräten an einem Internetanschluss scheint diese Grenze aber wohl manchmal erreicht zu werden. In der Datei /etc/dovecot/dovecot.conf (oder im conf.d Ordner, je nachdem wie man seine Dovecot Konfiguration organisiert hat) habe ich die entsprechende Zeile nun geändert:

protocol imap {
  mail_plugins = $mail_plugins imap_quota
  imap_idle_notify_interval = 30 mins
  mail_max_userip_connections = 32
}

Nach einem Dovecot-Neustart sind die Login-Probleme nun verschwunden.