Bug im InitScript von Lighttpd in Lenny

Hi,

da wir hier gerade auf einer Kiste von apache2 auf Lighttpd umsteigen ist mir beim Konfigurieren folgendes aufgefallen:

Wenn man den Befehl “include_shell” benutzen möchte, wird $SHELL benötigt. Dafür habe ich das Init Script mal angepasst …

#!/bin/sh
### BEGIN INIT INFO
# Provides:          lighttpd
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Should-Start:      fam
# Should-Stop:       fam
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start the lighttpd web server.
### END INIT INFO

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/lighttpd
NAME=lighttpd
DESC="web server"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

CONF_FILE="/etc/lighttpd/lighttpd.conf"
DAEMON_OPTS="-f ${CONF_FILE}"

test -x $DAEMON || exit 0

set -e

# be sure there is a /var/run/lighttpd, even with tmpfs
mkdir -p /var/run/lighttpd > /dev/null 2> /dev/null
# get User and Group names
LIGHTYUSER=$(grep server.username ${CONF_FILE} | awk '{ print $3 }' | tr -d \")
LIGHTYGROUP=$(grep server.groupname ${CONF_FILE} | awk '{ print $3 }' | tr -d \")

if [ -z $LIGHTYUSER ]; then LIGHTYUSER="www-data"; fi
if [ -z $LIGHTYGROUP ]; then LIGHTYGROUP="www-data"; fi

chown ${LIGHTYUSER}:${LIGHTYGROUP} /var/run/lighttpd

chmod 0750 /var/run/lighttpd

. /lib/lsb/init-functions

case "$1" in
    start)
        log_daemon_msg "Starting $DESC" $NAME
        if ! start-stop-daemon --start --quiet --oknodo \
            --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS
        then
            log_end_msg 1
        else
            log_end_msg 0
        fi
        ;;
    stop)
        log_daemon_msg "Stopping $DESC" $NAME
        if start-stop-daemon --quiet --stop --oknodo --retry 30 --oknodo \
            --pidfile $PIDFILE --exec $DAEMON
        then
            rm -f $PIDFILE
            log_end_msg 0
        else
            log_end_msg 1
        fi
        ;;
    reload)
        log_daemon_msg "Reloading $DESC configuration" $NAME
        if start-stop-daemon --stop --signal 2 --oknodo --retry 30 --oknodo \
            --quiet --pidfile $PIDFILE --exec $DAEMON
        then
            if start-stop-daemon --start --quiet  \
                --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_OPTS ; then
                log_end_msg 0
            else
                log_end_msg 1
            fi
        else
            log_end_msg 1
        fi
        ;;
    restart|force-reload)
        $0 stop
        test -r  $PIDFILE && while pidof lighttpd | \
            grep -q `cat $PIDFILE 2>/dev/null` 2>/dev/null ; do sleep 1; done
        $0 start
        ;;
    *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
        exit 1
        ;;
esac

exit 0
Apr 27th, 2009 | Filed under Linux

Ubuntu upgrade vorbereiten und beschleunigen

Nach dem Release Candidate kommt nun morgen Ubuntu 9.04 “Jaunty Jackalope” als Stable-Variante auf die FTP-Mirror. Mein Tipp: schon heute die großen Pakete herunterladen:

Einfach kurzzeitig in der /etc/apt/sources.list und in allen Dateien unterhalb von /etc/apt/sources.list.d/ das Wort “intrepid” durch “jaunty” ersetzen. Nun per sudo aptitude update die Paketlisten aktualisieren und mit sudo aptitude -d dist-upgrade ein Upgrade auf die nächste Version simulieren, wobei die Pakete schonmal heruntergeladen werden.

Danach würde ich dann aber doch die sources.list wieder zurücksetzen und morgen das Upgrade auf dem offiziellen Weg durchführen. Immerhin muss man dann nicht auf die wohl stark ausgelasteten FTP-Mirror warten ;)

Wer jetzt noch mehrere Kisten gleichzeitig upgraden muss kopiert die Pakete per hand aus /var/cache/apt/archives/ auf die anderern Rechner, zum Bleistift mit dem Befehlt:

rsync -av -e ssh user@quellrechner:/var/cache/apt/archives/*.deb /var/cache/apt/archives/

oder der bedient sich dem apt-proxy.

UPDATE: ich habe das Upgrade gerade gewagt. Hat auf den ersten Blick gut funktioniert, nur bei der Installation der Updates hat er irgendwann die Netzwerkverbindung gekillt. Auf dem einfachen Wege war die auch nicht wieder zu reaktivieren.

Apr 22nd, 2009 | Filed under Linux

Neue Killerspiel Erkenntnisse

Also, das find ich echt unglaublich. Lehrer probieren Killerspiele aus. Super, ist was ganz neues das man Dinge die man kritisiert erst ausprobiert.

http://www.spiegel.de/schulspiegel/wissen/0,1518,588053,00.html

Interessant ist außerdem, das die eventuell sogar eine Schul LAN- Party planen.
Super! Wenn jetzt noch der Bundestag mal ne LAN- Party schmeißt gibts diese dämlichen Diskussionen vielleicht nicht mehr.

Apr 19th, 2009 | Filed under Allgemein

Dell XPS M1530 mit Ubuntu 8.10

Hallo Leute,

ich wollte mal einen Bericht zum Dell XPS M1530 mit Ubuntu 8.10 machen. Meine Wahl viel auf das Dell XPS M 1530, weil es zu einem relativ günstigem Preis ein 15,4″ Display mit einer Auflösung von 1920×1200 Bildpunkten bietet und zusätzlich einen 9 Zellen Akku hat. Das ganze kostete inkl. Mehrwertsteuer etwas mehr als 1050 €.

Technische Daten:

  • CORE 2 DUO T8100 2.10GHz
  • 15,4″ 1920×1200 TrueLife (ja, Schminkspiegel-Display)
  • Fingerprint Reader
  • Windows Vista 64Bit (Dell ohne Windows?…soviel Dazu!)
  • 320 Gb SATA
  • Slot in DVD Brenner (verdammt ist das Ding cool!)
  • 4Gb RAM
  • Bluetooth
  • Nvidia GeForce 8600M 256 Mb (keine ATI mehr!)

Also bestellt und nach ca. einer Woche war es dann da. Ausgepackt, gebootet. Unter Windows Vista hab ich dann das erste mal in meinem Leben ein 15,4″ Display mit 1920×1200 er Auflösung gesehen. Ich hatte mir das alles kleiner vorgestellt. Aber ich war sehr positiv überrascht. Also neu gebootet und Ubuntu installiert. Mit Ausnahme des Touchpads funktionierte das Notebook auf anhieb.

# Die Lösung war die Zeile, in der /boot/grub/menu.lst:
# defoptions=quiet splash

# in folgendes zu ändern:
# defoptions=quiet splash i8042.nomux=1

Energiesparfunktionen:

Ich hatte bis jetzt mit Standby und mit Suspend2Disk keine Probleme. WLAN kam auch jedes mal wieder mit hoch.

Extras:

Den Fingerprint Reader habe ich noch nicht ausprobiert, ich habe einfach zuviel Angst davor mein System zu zerschießen, immerhin warnen sogar die Jungs im Ubuntuusers.de Wiki davor.
Die Sondertasten funktionieren! Die Taste um die CD aus zu werfen und auch die Lautstärke Tasten funktionieren. Out Of The Box :-D
WLAN, Bluetooth, alles funktioniert, ich bin da wirklich begeistert wie weit Ubuntu da schon ist!

Akku:

Durch das 9 Zellen Akku steht das Notebook etwas höher, was das Tippen aber angenehmer macht.
Die Akkulaufzeit unter Ubuntu (ohne große Anpassungen) ist etwas zwischen 3 bis 4 Stunden. Mit aufgedrehter Helligkeit, also eventuell ist da noch mehr drin, wenn man die Helligkeit ganz runter schraubt.

TV-Out:

Funktionierte erst nicht so Recht. Da habe ich mehrere Lösungsansätze gefunden und war recht schnell ziemlich frustriert. Bis sich herausstellte das das SVideo Kabel der Bösewicht war ;-) . Also um bei diesem Notebook in den Genuss von TV Out zu kommen, kann man am besten einen zweiten X Server einrichten, ich finde es deshalb praktischer, weil ich Features wie z.B. verschieben von Fenstern nicht brauche. Ich starte VLC oder mplayer so, dass es auf dem X Server läuft, der auf dem Fernseher angezeigt wird.
Im Prinzip wie hier beschrieben.

Hier mal meine xorg.conf

Section "Monitor"
    Identifier  "Configured Monitor"
EndSection

Section "Screen"
    Identifier  "Default Screen"
    Monitor     "Configured Monitor"
    Device      "Configured Video Device"
    DefaultDepth    24
EndSection

Section "Module"
    Load    "glx"
    Load "extmod"
EndSection

Section "Device"
    Identifier  "Configured Video Device"
    Driver  "nvidia"
    Option  "NoLogo"    "True"
    Screen 0
EndSection

# ENDE  PRIM Display
#
Section "Device"
     Identifier "NVIDIA TVOUT"
     Driver     "nvidia"
     Screen     1
     Option     "ConnectedMonitor" "TV"
     Option     "TVstandard"       "PAL-G"
     Option     "NoLogo"           "true"
     Option     "TVOutFormat"      "SVIDEO"
EndSection

Section "Monitor"
     Identifier   "TV"
     HorizSync    30-50
     VertRefresh  60
EndSection

Section "Screen"
     Identifier    "TVOUT"
     Device        "NVIDIA TVOUT"
     Monitor       "TV"
     DefaultDepth  16
     SubSection "Display"
          Depth 16
          Modes "800x600"
     EndSubSection
EndSection

Section "ServerLayout"
     Identifier "Default Layout"
     Screen 0 "Default Screen"
     Screen 1 "TVOUT" LeftOf "Default Screen"
EndSection

Fazit:

Bis jetzt, knapp eine Woche nach dem Kauf, muss ich sagen gefällt mir das Notebook ganz gut.
Besser verarbeitet als die anderen Consumer Notebooks (Asus, Acer usw.) Und mit der Auflösung wirklich sehr Preiswert.
Quellcode ist SO Übersichtiglich, das ist unglaublich. Auch die Angst die ich vor dem Kauf hatte, dass die Auflösung so groß ist, das man vielleicht die Schrift nicht mehr erkennt war völlig unberechtigt. Ich würde wirklich jeden zu dieser Auflösung raten. Read more…

Apr 17th, 2009 | Filed under Linux

Bilderhosting a la imgschäck(R) :)

Irgendwann habe ich mal ein Skript für Steve` gehackt, mit dem er dann Bilder hosten konnte. Dieses Skript habe ich mittlerweile ein wenig bereinigt und es unter der Beerware-Lizenz veröffentlicht. Etwas mehr Text dazu gibt es in Steve`’s Artikel.

Hier geht ‘s direkt zur Software: http://www.cisa85.de/software/imgshak/

Falls es da mal Anregungen gibt, dann immer her damit. Ich warte auch immer noch auf jemanden, der mir mal ein feines Design dafür zaubert, denn damit habe ich nicht so viel am Hut.

Mrz 27th, 2009 | Filed under Programmieren

Passwörter mit einem Gorilla schützen und verwalten

Seit 1998 surfe ich im Internet rum und habe ca. drölf milliarden Accounts auf den verschiedensten Webseiten. Das schlimmste ist eigentlich immer, dass ich mir die Accountdaten nie merken kann. Passwörter lassen sich schön mit einem (hoffentlich) ausgefeilten Schema im Gehirn ablegen, doch meistens scheitert es schon an Benutzernamen: Da wollen die Betreiber eine E-Mail-Adresse als Benutzernamen, der Benutzername darf keine Punkte enthalten oder ist einfach zu kurz / lang.
Ewig habe ich Ausschau nach einer passenden Lösung gehalten und diese in dem kleinen Programm “Password Gorilla” gefunden. “Password Gorilla” ist ein in TCL/TK geschriebenes Frontend welches die Daten per Master-Passwort verschlüsselt und im Format “Password Safe 3″ speichert. Es bietet die Möglichkeit Gruppen zu erstellen in denen man seine Accounts organisieren kann. Gespeichert werden können außer dem Passwort und dem Benutzernamen auch eine URL auf die Seite, ein Titel und Notizen. Auch wenn einem jemand über die Schulter guckt ist das gespeicherte Passwort nicht unsicher, da man es nicht zwingend anzeigen lassen muss. Per Rechtsklick auf den Account lässt sich das Passwort in die Zwischenablege legen. Braucht man diese Funktion öfter, dann kann man dies auch als Doppelklick-Aktion festlegen. Datenbanken lassen sich zusammenführen und das Master-Passwort kann man beliebig verändern. Ein Passwort-Generator mit einstellbaren Passord-Policies runden den Funktionsumfang ab und lassen keine Wünsche mehr übrig.

“Password Gorilla” steht unter der GPL und es gibt auf der Webseite Binaries für Windows, WindowsCE, Linux und Mac OSX.

Hier noch ein Screenshot:

Ein Screenshot von Password Gorilla

Ein Screenshot von Password Gorilla

Mrz 25th, 2009 | Filed under Allgemein

Bug gefunden: array_diff() in PHP >= 5.2.6 unglaublich langsam.

Neulich habe ich ein Projekt auf einen anderen Server umgezogen. Nicht nur die zugrunde liegende Hardware veränderte sich, sondern auch das Betriebssystem, nämlich von Debian Etch auf Debian Lenny. Nachdem alles nötige angepasst war, habe ich einen Testlauf gemacht und mich hat fast der Schlag getroffen: Der Code der auf der alten Hardware noch 20 Minuten gebraucht hatte, lief über eine Stunde bis die Ausführung des Skriptes dann ziemlich genervt abgebrochen habe.

Nach kurzer Analyse des Codes fand ich den Übeltäter sehr schnell. In dem Code werden md5-Prüfsummen in 2 Arrays mit array_diff() verglichen. Bei ca. 500.000 Elementen in beiden Arrays hat die Ausführung auf dem alten System wenige Sekunden gedauert und auf dem neuen System länger als eine Stunde. Mein Fix dafür war ein selbstgeschriebenes array_diff() welches folgendermaßen aussieht:

function array_diff_fast($data1, $data2) {
    $data1 = array_flip($data1);
    $data2 = array_flip($data2);

    foreach($data2 as $hash => $key) {
       if (isset($data1[$hash])) unset($data1[$hash]);
    }

    return array_flip($data1);
}

Vielleicht hilft das ja jemandem.

BTW. der Bug wurde hier gemeldet: http://bugs.php.net/bug.php?id=47643

Mrz 24th, 2009 | Filed under Linux, Programmieren
Tags: ,

PHP – fgetcsv() Bug

Hallo liebe “nohostname.de Tech-Stuff” Freunde,

Mir ist da bei einem PHP Importscript folgendes aufgefallen, wenn man mit PHP und fgetcsv eine .csv Datei einliest, bei der am Wortanfang ein Umlaut vorkommt und wo die einzelnen Datensätze nicht von Anführungszeichen eingeschlossen sind, lässt PHP einfach die Umlaute weg. Wenn das csv Format so aussieht:

Ümlautwort, anderer Datensatz

Das macht dann aus dem Wort “Ümlautwort” das Wort “mlautwort”. Da kann man natürlich seine Daten vergessen.

Als Bugfix habe ich die CSV mit Python auseinandergefriemelt (http://docs.python.org/library/csv.html kann das nämlich!). Und dann in dem Format: 

"Ümlautwort", "anderer Datensatz"

neu geschrieben, danach konnte fgetcsv auch die Umlaute importieren.

Mrz 24th, 2009 | Filed under Programmieren
Tags: , ,

Swapping nach Suspend-to-disk

In der Firma habe ich einen PC mit Core2Duo, 4GB RAM und 6GB Swap auf dem Ubuntu 8.10 installiert ist. Abends schalte ich den Rechner immer in den Suspend-to-disk-Modus, da ich unter anderem eine IDE (Netbeans), E-Mail-Client (Evolution), mehrere Dateien im Texteditor (gedit) für Notizen und eine Firefox-Instanz mit vielen Tabs habe, die ich nicht jeden Tag neu starten mag.

Nervig ist nur, dass nach dem Suspend immer noch > 1GB Swap benutzt wird, was das System unglaublich träge macht. Um diesen in den Swap ausgelagerten Speicher wieder in den RAM zu schieben, hänge ich die Swap-Partition kurz aus und dann wieder ein:

cisa@nohostname:~> sudo swapoff /dev/sda1 && sudo swapon /dev/sda1

Vorher sollte man natürlich per free -m gucken, ob noch genug RAM frei ist :)

Mrz 24th, 2009 | Filed under Linux
Tags: ,

Hallo erstmal!

Willkommen im nohostname.de-Blog! Viel Spaß beim Lesen und keine Scheu, Kommentare abzugeben!

Mrz 24th, 2009 | Filed under Allgemein
Tags: