Nützliche Firefox-Add-ons

Dienstag, 10. März 2009

Die für mich nützlichsten Firefox-Add-ons sind:

  1. Adblock Plus: Entfernt, was mich ablenkt: Bewegte und tönende Werbung. Die Filter, die bestimmen, was entfernt wird, werden automatisch aktualisiert.
  2. NoSquint: Merkt die durch mich eingestellte Schriftgröße einer Seite und stellt sie zukünftig automatisch ein. NoSquint vergrößert die Schriften von Webseiten auf einen durch mich eingestellten Wert. Fast alle Webseiten haben eine zu kleine Schrift (60 - 70 % der im Webbrowser eingestellten).
  3. NoScript: Verhindert, dass (Java-) Skripte ausgeführt werden, zeigt an, welche Skripte eine Seite den Webbrowser ausführen lassen will und lässt sie auf meinen Wunsch einzeln oder alle ausführen. Ich kann Seiten, denen ich vertraue, zukünftig automatisch bestimmte Skripte ausführen lassen: Alle sind nicht nötig, ich will nicht google-analytics.com analysieren lassen, was ich unternehme und keine ablenkende Werbung anzeigen lassen.
  4. Tab Mix Plus: Von den zahlreichen Funktionen nutze ich: Nach dem Schließen eines Tabs wird jener aktiviert, dessen Inhalt ich zuletzt anschaute und ich kann mehrere versehentlich geschlossene Tabs später wieder öffnen lassen.
  5. Menu Editor: Lässt mich aus den Menüs für mich unnütze Befehle entfernen und die (verbliebenen) Befehle nach meinen Vorstellungen anordnen.

Adblock Plus und NoScript sorgen zudem dafür, dass Webseiten schneller geladen werden.

Für das Entwickeln von Webseiten sind Firebug und Web Developer hilfreich. Sonst nutze ich folgende Add-ons (Reihenfolge alphabetisch): CustomizeGoogle, Delicious Bookmarks, Dictionary Search, Full Fullscreen, Hide Menubar, lori (Life-of-request info) und Statusbar Clock (die Taskleiste der Desktops lasse ich ausblenden und habe so keine Uhr im Blick).

Bücher über uns Menschen

Mittwoch, 4. März 2009

Unten ist die unkommentierte Liste von Büchern über uns Menschen, die mich am meisten interessierten.

Philip Zimbardo: Der Luzifer-Effekt. Die Macht der Umstände und die Psychologie des Bösen. Spektrum, Heidelberg.

Steven Pinker: Das unbeschriebene Blatt. Die moderne Leugnung der menschlichen Natur. Berlin.

Frans de Waal: Der Affe in uns. Warum wir sind, wie wir sind. Carl Hanser, München Wien.

Richard Dawkins: Der Gotteswahn. Ullstein, Berlin.

John Kotre: Weiße Handschuhe. Wie das Gedächtnis Lebensgeschichten schreibt. Carl Hanser, München Wien.

Lauren Slater: Von Menschen und Ratten. Die berühmten Experimente der Psychologie. Beltz, Weinheim und Basel.

Alexander R. Lurija: Der Mann, dessen Welt in Scherben ging. Zwei neurologische Geschichten. Rowohlt, Reinbek bei Hamburg.

Oliver Sacks: Eine Anthropologin auf dem Mars. Rowohlt, Reinbek bei Hamburg.

Warum ich mich nicht langweile in meiner Freizeit

Sonntag, 1. März 2009

In meiner Freizeit lese ich, fotografiere gelegentlich — und beschäftige mich mit meinen (privaten) Software-Projekten. Mit diesen kann ich viel Zeit verbringen. Die Bildschirmschnappschüsse unten zeigen Projekte, die mich noch interessieren, andere verschiebe ich ins Verzeichnis obsolet auf meiner Festplatten-Datenpartition. Die Projekte verwalte ich mit Eclipse und Netbeans, ihre Versionen mit CVS und Subversion.

Projekte verwaltet durch Eclipse

Projekte verwaltet durch Eclipse

Projekte verwaltet durch Netbeans

Projekte verwaltet durch Netbeans

Dateigröße 16 Bit TIFF ZIP-komprimiert und unkomprimiert

Samstag, 28. Februar 2009

Heute ließ ich meine 16 Bit TIFF-Bilder, die ZIP-komprimiert waren, konvertieren in unkomprimierte durch die Photoshop CS2-Stapelverarbeitung. Anschließend verglich ich die Dateigröße: 430 Bilder belegten komprimiert 20 Gigabyte und unkomprimiert etwas weniger.

Fazit: Ich werde (auch) zukünftig 16 Bit TIFF-Bilder unkomprimiert speichern. Das ist schneller und bereitet weniger Probleme: Einige Programme können ZIP-komprimierte TIFF-Bilder nicht lesen, zumindest die convert-Windows-Version (ImageMagick 6.4.9). Die unkomprimierten Bilder benötigen eher weniger Platz auf der Festplatte.

Daten sichern mit rsync

Dienstag, 24. Februar 2009

Täglich sichert das Programm rsync automatisch neue und veränderte Dateien verschiedener Verzeichnisse auf eine externe Festplatte.

Wichtige Dateien, wie jene von Programmier-Projekten, überführe ich in eine Versions-Verwaltung, so benötige ich keine Backup-Versionen. Habe ich eine Datei gelöscht von den zu sichernden Verzeichnissen, wird diese von der externen Backup-Festplatte ebenfalls gelöscht: Auf der Backup-Festplatte sind Spiegel der gesicherten Verzeichnisse.

Zum Sichern schrieb ich ein Bash-Skript. Es liest aus einer Konfigurationsdatei die Namen der Quell- und Zielverzeichnisse und die Namen von Dateien mit Mustern von Dateien, die nicht gesichert werden sollen, beispielsweise Temporärverzeichnisse oder Cache-Verzeichnisse. Das Skript:

#!/bin/sh
#
# Author  : Elmar Baumann
# Date    : 2006/05/05
# Requires: rsync, Konfigurationsdatei $CONF
# Doc     : Synchronisiert Dateien auf ein externes Backupmedium
#
#           Aufruf ohne Parameter
#
###############################################################################

SCRIPT=$(basename $0)

# Mountpoint für externes Backupmedium
BACKUP_MOUNTPOINT=/mnt/backup

# Konfigurationsdatei
CONF=${HOME}/conf/backup-directories.conf

# Spalte in der Konfigurationsdatei mit Quellverzeichnissen
COLUMN_SOURCE=1

# Spalte in der Konfigurationsdatei mit Zielverzeichnissen
COLUMN_TARGET=2

# Spalte in der Konfigurationsdatei mit Exclude-Pattern-Dateien
COLUMN_EXCLUDE=3

# Logdatei
LOGFILE=${HOME}/log/${SCRIPT}.txt

# Zeilenumbruch als Fieldseparator
IFS="
"

# Optionen für rsync
RSYNC_OPTIONS="
--archive
--delete
--delete-excluded
"

###############################################################################

function print_date() {
    date +"%d.%m.%Y, %H:%M:%S Uhr"
}

function print_started() {
    echo "${SCRIPT}: $(print_date) Sichere Dateien auf '${BACKUP_MOUNTPOINT}'..." \
    | tee $LOGFILE
}

function print_finished() {
    echo "${SCRIPT}: $(print_date) Fertig. Logdatei: '${LOGFILE}'" \
    | tee -a $LOGFILE
}

function mount_backup_medium() {
    umount $BACKUP_MOUNTPOINT 2> /dev/null
    mount $BACKUP_MOUNTPOINT
    if [ $? != 0 ]
    then
        echo "${SCRIPT}: '${BACKUP_MOUNTPOINT}' laesst sich nicht einhaengen!" >&2
        exit 1
    fi
}

function umount_backup_medium() {
    sync
    umount $BACKUP_MOUNTPOINT
}

function trim() {
    echo $1 | sed -e 's/^ *//;s/ *$//'
}

function shrink_blanks {
    echo $1 | sed 's/  */ /g'
}

function get_column_of_line() {
    local line=$(shrink_blanks $1)
    local column=$2

    trim $(echo $line | cut -d " " -f $column)
}

function backup() {
    for line in $(cat $CONF | grep -v '^#.*')
    do
        source=$(get_column_of_line $line $COLUMN_SOURCE)
        target=$(get_column_of_line $line $COLUMN_TARGET)
        exclude=$(get_column_of_line $line $COLUMN_EXCLUDE)

        rsync $RSYNC_OPTIONS \
            --exclude-from=$exclude \
            $source \
            $target \
            2>&1 \
            | tee -a $LOGFILE
    done
}

###############################################################################

print_started
mount_backup_medium
backup
umount_backup_medium
print_finished

Die Konfigurationsdatei sieht so aus — zwischen den Verzeichnis- und Dateinamen stehen Leerzeichen:

# Quelle         Ziel                   Patterndatei für Ausschluss
#
/home/elmar      /mnt/backup/linuxhome  /home/elmar/conf/backup-exclude-patterns-home.conf
/mnt/bilder      /mnt/backup            /home/elmar/conf/backup-exclude-patterns-bilder.conf
/mnt/daten       /mnt/backup            /home/elmar/conf/backup-exclude-patterns-daten.conf
/mnt/doku        /mnt/backup            /home/elmar/conf/backup-exclude-patterns-doku.conf
/mnt/multimedia  /mnt/backup            /home/elmar/conf/backup-exclude-patterns-multimedia.conf

Ich lasse rsync nicht alle gesicherten Dateien ausgeben, in der langen Ausgabe übersähe ich Fehlermeldungen, beispielsweise Dateien, die nicht gelesen, geschrieben oder gelöscht werden können.

Die externe Backup-Festplatte ist nur während des Sicherns eingeschaltet, ich sollte nach dem Ausschalten die Kabel herausziehen, so beschädigt eine hohe Überspannung nicht die Festplatte.

Das Skript starte ich durch Aufruf, nicht automatisch beim Einschalten der Backup-Festplatte, diese könnte ich einschalten, veränderte oder gelöschte Dateien wieder herzustellen. Ich gebe den Alias ’s’ ein und drücke die Enter-Taste.

Jedes Jahr brenne ich die Daten auf zwei Sätze DVDs gleichen Inhalts und guter Qualität von verschiedenen Herstellern, aktuell einen Satz auf Verbatim Archival Grade, den anderen auf Plextor DVD+R, hergestellt von Taiyo Yuden. Der Brenner ist auf 4-fache Geschwindigkeit eingestellt anstelle 16-facher. Die DVDs beider Sätze stecken in Hängeregister-DVD-Hüllen lichtdichter Koffer, ein Satz lagert außer Haus. Die Dateinamen jeder DVD stehen auf der Festplatte in einer komprimierten Textdatei des gleichen Namens wie das DVD-Label.

Zum vollständigen Rücksichern sind im Skript die Variablen target und source zu vertauschen - vielleicht erweitere ich es um diese Option: Das Skript wird bei gesetzter Option Spalte 2 der Konfigurationsdatei für source auswählen und die Spalte 1 für target: COLUMN_SOURCE=2 und COLUMN_TARGET=1.