Skip to content

Git swapped beim Packen ...

Von Zeit zu Zeit lohnt es sich Git-Repositories neu zu packen oder den Müll weg zu bringen (mittels "garbage collection, der Befehl ist git gc).

Auch beim Auschecken oder Klonen von grossen Repositories packt Git neu.

Da ich mit den Standard-Einstellungen regelmässig ware Swap-Orgien erlebt habe, lohnt es sich, die Ressourcen für Git zu begrenzen.

In der Standard-Einstellung benutzt Git pro Core und Hyper-Threading je einen Thread. Da Hyperthreading keinen "echten Prozessor" zur Basis hat, steht aufgrund vieler Kontextwechsel das System nahezu still. Ein System mit zwei Kernen und Hyperthreading wird von Git mit vier Threads konfiguriert und jedem Thread steht im Standard der komplette Arbeitsspeicher zur Verfügung.

Das ist ein bisschen viel. Und die folgenden Konfigurationsoptionen begrenzen das ein wenig.

git config --global pack.threads 2
git config --global pack.windowMemory 1073741824

git config --global pack.depth 250
git config --global pack.window 250


Die genaue Beschreibung der einzelnen Optionen lassen sich auf der git-config-Manpage nachlesen.

Das Repack-Skript auf der oben verlinkten Webseite hat sich damit natürlich auch verändert.

#!/bin/bash

case $(uname) in
    "Linux")
        renice -n 19 -p $$
        ionice -c 2 -n 7 -p $$
        ;;
    "SunOS")
        renice -n 19 -p $$
        ;;
esac

start_directory=$PWD
for i in $(find ${start_directory} -name '.git' -type d); do
    du -hs ${i}/..
    cd ${i}/..

    git gc
    git repack -a -d

    du -hs ${i}/..
    echo
done


Dieses Skript ist Teil meines littlehelpers-Repositories auf GitHub.

News+ und Tiny Tiny RSS ...

android News+ ist ein kostenpflichtiger, aber dafür vielleicht auch der beste, Feedreader für Android. Nicht zuletzt, weil es auch eine freie Tiny Tiny RSS Extension gibt, mit der das Lesen von Tiny Tiny RSS Inhalten lokal auch Spass macht.

Apropos Spass, damit die gelesen/ungelesen Status mit Tiny Tiny RSS synchronisiert wird, muss das entsprechende Plugin auf der Serverseite installiert und aktiviert werden.

Einrückungen in vim ...

Wenn man viel mit vi(m) arbeitet, lohnt es sich auch über eine eigene ~/.vimrc nachzudenken. Wenn man auf sehr vielen Systemen arbeitet, hilft es, die eigenen Ergänzungen "klein" zu halten.

Ich mache es mir da leicht und kopiere die Muster-vimrc.
cp $(find /usr/share/vim -name vimrc_example.vi) ~/.vimrc

und ergänze die folgenden Zeilen.

" Dirk
set mouse=
syntax enable
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
"


Für die Bedeutung der einzelnen Punkte verweise ich einmal auf die sehr ausführliche Hilfe in vi(m) (Beispielsweise :help tabstop). Wichtig ist nur, dass durch den letzten Punkt aus Tabs Leerzeichen gemacht werden.

:retab! sorgt dafür, dass alle Tabs und Leerzeichen der kompletten geöffneten Datei entsprechend den Regeln umformatiert werden.

Die folgenden Kommandos arbeiten auf Textblöcken, also mal mit 1G in die erste Zeile springen und dann mit VG den kompletten Dateiinhalt markieren.

> rückt alles um eine Ebene ein.

< rückt alles um eine Ebene aus.

= formatiert den kompletten markierten Text nach Regeln des Dateityps um (einfach mal ausprobeieren).

Feedly Theme für Tiny Tiny RSS ...

Einer der grössten Kritikpunkte an Tiny Tiny RSS - neben der Tatsache, dass der Hauptentwickler ein Arctrl-wctrl-ww sozial schwierig ist - ist das Aussehen.

Christian Grube hat mich bei Google+ schon vor Monaten auf dieses wirklich hervorragende Theme für Tiny Tiny RSS hingewiesen, ich kann es nur empfehlen:

Das Feedly-Theme für Tiny Tiny RSS.



Der Screenshot ist aus diesem Forenthread.

nice und ionice ...

linux Ein kleiner Shorty für alle, die Last intensive Dinge mit ihren Linux-Maschinen anstellen müssen und den eigentlichen Betrieb so wenig wie möglich einschränken wollen.

Mit nice bzw. renice kann man die Priorität eines Prozesses bezogen auf die CPU beeinflussen und mit ionice kann man das gleiche auch in Bezug auf I/O tun.

Wenn man die folgenden Befehle in ein Skript schreibt, werden alle Kommandos und Kindprozesse des Skriptes mit niedrigst möglicher Priorität ausgeführt.
renice -n 19 -p $$
ionice -c 2 -n 7 -p $$


(ionice -c 3 -p $$ gibt dem Prozess nur dann I/O, wenn kein anderer Prozess I/O anfordert).

Die beiden obigen Befehle kann man natürlich auch in der aktuellen Shell (interaktiv) ausführen.

Serendipity und Wordpress ...

serendipity Es ist schon interessant, was man mit Open-Source-Software anstellen kann.

Wie an anderer Stelle festgestellt, kann Serendipity Wordpress nicht das Wasser reichen, was die Verbreitung angeht. Allerdings kann sich Serendipity einen Teil des Ökosystems von Wordpress zu nutze machen.

Die Wordpress-Schnittstellen sind sehr gut dokumentiert und um von Apps zu profitieren, die für Wordpress geschrieben wurden, müsste "man" eigentlich nur die Schnittstelle nachbauen. Tja, und genau das leistet das von Grischa geschriebene XML-RPC-Plugin für Serendipity (serendipity_event_xmlrpc).

Das Plugin gibt es schon drei Jahre, aber es scheint noch weitest gehend unbekannt zu sein.

Mittlerweile lässt sich die Wordpress-App für Android auch als Ziel für das Teilen von Informationen (insbesondere Bildern) auf dem Smartphone nutzen. Das zeigte auch mein Test in der letzten Woche.

Damit lässt sich auf Basis von Serendipity ein eigenes kleines Instagram zusammenstellen.

Bloonix Screencasts ...

bloonix Jonny hat die ersten Screencasts von Bloonix online gestellt.

Momentan gibt es erst zwei. Der eine zeigt die Installation der Serverkomponente von Bloonix auf CentOS 7, der andere die Installation auf Ubuntu 14.04 LTS.

Rückmeldungen jederzeit gerne hier in die Kommentare oder besser noch im Forum.

Taskwarrior 2.4.2 ...

taskwarrior Der Frühling kommt, die neuen Programmversionen auch ... am Sonntag erschien Taskwarrior 2.4.2.

Spannend ist das neue Feature context, damit kann man eine Sammlung von Schlagworten (Tags) verwenden, um einen Arbeitszusammenhang herzustellen. So kann beispielsweise der Kontext "Arbeit" alle Aufgaben enthalten, die entweder das Etikett (Tag) "Büro" oder "Freiberuflich" enthalten.

Das "info" Kommando zeigt jetzt auch "virtual tags" an.

Not mainstream since 2002 ...

serendipity Mit der im Titel stehenden Zeile nehmen wir selbstironisch Stellung dazu, dass "das beste Blog" Wordpress in Bezug auf Nutzerzahlen nicht überholen wird.

Entstanden ist der Titel am letzten Wochenende in Linuxhotel in Essen, wo wir das ausgezeichnete Community-Angebot in Anspruch nehmen durften.

Es war toll die Gesichter hinter Serendipity einmal kennen zu lernen und Zeit miteinander zu verbringen. Fast ganz nebenbei haben wir auch eine Menge Themen diskutiert. Dabei sind die Stärken und Schwächen nicht zu kurz gekommen.

Garvin hat eine ausführliche Zusammenfassung im offiziellen Blog (mit Photo) zusammengeschrieben, aus der ich hier nur ein paar kleinere Punkte heraus greifen möchte.

Das Hauptziel von Serendipity ist es eine verlässliche, sichere, erweiterbare und einfach zu benutzende Bloggingsoftware zu sein. Das drückt sich unter anderem im neuen "Slogan" aus:
Serendipity - A reliable, secure and expandable PHP blog
Not mainstream since 2002


Es wird einen neuen Webauftritt geben. Das alte Design ist schon etwas in die Jahre gekommen und wird aufpoliert. In Zukunft wird es leichter sein, Informationen zu finden. Die Dokumentation wird überarbeitet und die Informationen, auf welchen Wegen man zum Projekt beitragen kann, wird man leichter finden können.

Natürlich wird es auch neue Features geben, unter anderem wird man per Cronjob automatisch verschiedene Wartungsaufgaben durchführen können, darauf freue ich mich ganz besonders.

Einen kleinen verschmerzbaren Wermutstropfen gibt es für die, die nicht auf Version 2.0 (oder später) aktualisieren wollen (warum eigentlich nicht?):
Ab dem 1. August 2015 wird es Plugin-Updates erlaubt sein, die Mindestversion auf 2.0 zu setzen. Das bedeutet zum Einen, dass sich die Plugins in Versionen vor 2.0 nicht mehr aktualisieren lassen und sich auch nicht neu installieren lassen. Versionen vor 2.0 werden keine neuen Features mehr bekommen, kritische Sicherheits- oder signifikante Stabiltätsprobleme werden aber weiterhin behoben.


Es war ein tolles Wochenende und wird hoffentlich im nächsten Jahr wiederholt.

Solltet Ihr Fragen haben, könnt Ihr die gerne hier im Blog stellen.

Weitere Artikel zum Camp:
Matthias aka Yellowled
Matthias aka Mattsches
Mario
Malte
Thomas

Tuning ...

centos Wie bereits geschrieben, musste ich ein wenig tunen.

In der ersten Stufe habe ich einige Datenbankparameter angepasst und in der zweiten Stufe die Datenbankinhalte bereinigt.

Wenn man ein Monitoringsystem - in meinem Fall Bloonix (gibt es übrigens auch in der Open-Source-Variante zum selber hosten) - benutzt, kann man sehr schön den Erfolg feststellen (die Webseite wird von extern aufgerufen).

Limits für MariaDB auf CentOS ...

centos Erkan hat - nachdem er mir einen entscheidenden Tipp gab - es auch gleich selber verbloggt.

Die Limits für MariaDB (ich musste an den "open files" schrauben) werden nicht - wie bei SystemV üblich - in der Datei /etc/security/limits.conf gesetzt, sondern neu in der Datei /etc/systemd/system/mariadb.service.d/limits.conf, das passende Verzeichnis mariadb.service.d muss allerdings auch noch angelegt werden.

Die Einstellung der maximal offenen Dateien in der limits.conf, plus der Bereinigung der Logbuch-Datenbanken von Altlasten sollten jetzt zu einer annehmbaren Performance führen. (Grafik liefere ich nach).

Migration abgeschlossen ...

centos Ende letzter Woche habe ich meine Migration von Debian Squeeze LTS auf CentOS 7 und von Manitu zu Metanet abgeschlossen.

Es ist noch reichlich Performance-Tuning nötig, aber die Dienste laufen jetzt alle auf der neuen Hardware.

Ein Wort zu dem Wechsel:
Ich war mit Manitu nicht unzufrieden, ganz im Gegenteil, aber ich wollte die Dienste alle in der Schweiz haben, weil mir der Spagat zwischen dem Deutschen und dem Schweizer Rechtssystem nicht so gut gefällt.

Interessanterweise hat es bei dem Wechsel an Stellen geknallt, die ich nicht erwartet hatte.

Eine davon war die Apache-Konfiguration, bedingt durch den Wechsel von Apache 2.2 auf Apache 2.4 und einem Fehler in dem Upgrade-Guide.

Dort steht, dass man die 2.2er Konfiguration
Order allow,deny
Allow from all

Durch die folgende 2.4er Konfiguration
Require all granted
ersetzen soll.

Tatsächlich ist es aber so, dass man beides braucht:
Order allow,deny
Allow from all
Require all granted


Das hat mich viele Nerven gekostet.

Von Sublime Text zu Atom ...

Eines vorab, ich halte Sublime Text immer noch für einen der besten Editoren, die es derzeit gibt, auch wenn er in weiten Teilen Closed-Source-Software ist. Die Entscheidung ihn einzusetzen, habe ich nie bereut und die Lizenz ist super, daran sollten sich viele ein Beispiel nehmen (einmal kaufen und auf beliebig vielen Computern einsetzen).

Was mich ein wenig nervt, ist, dass die Weiterentwicklung stagniert und der Ton im "Feature Request Forum" bei Userecho nervt.

Als einzige grafische Alternative, die auf mehreren Plattformen läuft, sehe ich nur Atom, den Editor aus der GitHub-Schmiede. Die Features sind super, aber an der Performance müssen die Programmierer noch arbeiten.

Als Plugins möchte ich minimap und save-session empfehlen, damit kann man leicht zwei lieb gewonnene Features von Sublime Text nachrüsten.

Ein weiteres Plus ist, dass Atom Open-Source-Software ist.