Skip to content

Globales gitignore ...

Wenn man Dateien aus der Versionskontrolle mit git ausschliessen möchte, kann man im Repository eine Datei .gitignore anlegen. Das ist sinnvoll, wenn es Dateien gibt, die in nur einem Repository ausgeschlossen werden sollen.

Anders ist es, wenn man Backupdateien des Editors ausschliessen möchte. Da in der Regel mehrere Menschen an einem Projekt arbeiten und vielleicht sogar jeder einen anderen Editor benutzt, ist es sinnvoller, dass jeder die Dateien ausschliesst, die seinem Editor entsprechen.

Dazu kann mit dem folgenden Kommando die globale Variable core.excludesfile gesetzt werden, die einen Dateinamen beinhaltet, in der die globalen Ausschlusskriterien zu finden sind.

git config --global core.excludesfile ~/.gitignore_global

Bei mir enthält sie derzeit nur:

*~

Das sind die Backupdateien von vim.

Willkommen Debian Jessie ...

debian

Am gestrigen Sonntag wurde Debian 8.0, Codename "Jessie" veröffentlicht.

Neben der üblichen Versionspflege ist die vermutlich grösste Änderung die umstrittene Umstellung von System-V-Init auf Systemd (ich persönlich begrüsse das sehr).

Die weiteren Änderungen sind zu zahlreich, um sie in einem kurzen Blogartikel zu beleuchten, das haben andere bereits erledigt. Es lohnt sich in jedem Fall ein Blick in die (auch in deutscher Sprache erhältlichen) Releasenotes oder dem Artikel bei Pro-Linux.

Wer die Informationen gerne in Form von Slides haben möchte, wird bei Michael Prokop fündig (PDF) oder kann sich die "Folien" (HTML) von Axel anschauen.

Ich freue mich sehr darüber, dass sich das LTS-Modell durchsetzt. LTS steht für Long Term Support und in Debian dafür, dass die Version fünf Jahre lang mit Sicherheitsupdates versorgt wird. Die Seite LTS im Debian-Wiki klärt über das "wie" auf.

Blogparade Webspace-Inventar ...

An Blogparaden habe ich ja schon hundert Jahre nicht mehr teilgenommen. Ein Grund mehr, es mal wieder zu tun.

Christoph fragte: Was ist auf deinem Webspace installiert?

Zuerst einmal die sichtbaren Dienste:

Schon sehr lange kommt Serendipity als Blogsoftware zum Einsatz. Über die Vorzüge habe ich schon viel geschrieben. Das möchte ich hier nicht ausrollen.

Piwik sorgt für die Nutzerstatistik.

Wenn einmal ein Wiki gebraucht wird, hilft DokuWiki.

Yourls ist ein URL-Verkürzungsdienst, mit dem ich beispielsweise d5e.org/technik auf eine statische Seite hier im Blog umleite.

Intern oder auf Einladung:

Tiny Tiny RSS ist mein Feedreader, auch darüber habe ich hier schon einiges geschrieben.

Mit Kanboard plane ich private Projekte. Das Tool ist gut und die Aussage des Programmierers "No fancy technologies, we don't care about the last hipster framework" finde ich auch klasse. Minimalistisch, schnell und gut (steht nicht im Weg).

Den "Datenspeicherdienst" ownCloud muss ich auch nicht weiter erklären, oder.

Roundcube ist mein Webmailer.

Auf dem Serendipity-Treffen habe ich mich von Adminer überzeugen lassen. Das Ding ist rasend schnell und nicht nur für MySQL / MariaDB geeignet.

Für Show your Places hätte ich gerne eine aktuellere Alternative. Hiermit kann man Karten auf OpenStreetMap-Basis erstellen.

Ausgemustert, nicht aufgrund mangelnder Qualität, sondern, weil ich sie nicht mehr benötige:

Trac, Projekttool mit Wiki, Quellcode-Browser und Ticket-System.

Etherpad Lite, kollaborativer Editor.

Sticky Notes als Pastebin.

Firtz, Podcast-Publishing.

phpMyAdmin, Datenbankverwaltungstool.

Horde Groupware Webmail Edition, Mail, Kalender und mehr.

Tiny Tiny RSS update daemon und systemd ...

Um den update daemon von Tiny Tiny RSS unter systemd (CentOS 7) auch bei einem Serverneustart direkt verfügbar zu haben, habe ich das unten stehende Unitfile geschrieben, vielleicht hilft es auch Euch.

Man kann von systemd halten, was man möchte, ich finde es aber deutlich eleganter als System V Initskripte.

[Unit]

Description=Tiny Tiny RSS update daemon

After=network.target mariadb.service

Requires=mariadb.service

[Service]

User=apache

Group=apache

WorkingDirectory=/⁠var/⁠www/⁠html/⁠ttr

Type=simple

StandardOutput=null

StandardError=syslog

ExecStart=/⁠usr/⁠bin/⁠php ./⁠update_daemon2.php

PrivateTmp=true

InaccessibleDirectories=/⁠home /⁠root /⁠boot /⁠opt /⁠mnt /⁠media

ReadOnlyDirectories=/⁠etc /⁠usr

[Install]

WantedBy=multi-⁠user.target

Einfach nach /lib/systemd/system/ttrss-update.service kopieren und mittels systemctl daemon-reload einlesen (den Befehl muss man auch ausführen, wenn man das Skript manuell ändert).

Testen mit

systemctl start ttrss-update
systemctl status ttrss-update

und, wenn alles erfolgreich war mit dem folgenden Befehl aktivieren:

systemctl enable ttrss-update

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