Ralf Hüsing

Dezember 21, 2008

Informationen zu einer Domain via Google

Abgelegt unter: Sonstiges — ralf @ 1:40 am

Um herauszubekommen wo überall ein bestimmter Domainnamen hinterlassen wurde (zBspl. in Foren, Webseiten, PDF-Dokumenten, …) kann dazu Google befragen:

“somafm.com” -site:somafm.com

Das es funktioniert kann man mit einer negierten Abfrage gegenprüfen:

“somafm.com” -site:somafm.com +site:somafm.com

Ein hoch auf alle Datenkraken.

2. Welches Buch schrieb Lion Feuchtwanger nicht?

Abgelegt unter: Focus Deutschland 2000 RÄTSEL — ralf @ 1:20 am

Deutschland 2000 Rätsel: 2 Welches Buch schrieb Lion Feuchtwanger nicht?

„Joseph und seine Brüder“

„Erfolg“

„Der Tag wird kommen“

1. Wer oder was ist FORTRAN?

Abgelegt unter: Focus Deutschland 2000 RÄTSEL — ralf @ 1:14 am

Deutschland 2000 Rätsel: 1 Wer oder was ist FORTRAN?

Eine Programmiersprache

Der Ort, wo die US-Goldreserven lagern

Ein angesagtes Videospiel

Quellenangaben:

Dezember 14, 2008

Verzögertes mounten von USB Festplatten

Abgelegt unter: Sonstiges — ralf @ 2:42 am

An unserem Server hängen USB Festplatten welche beim booten nicht automatisch gemountet werden können da während des Boot-Vorgangs der Kernel die USB Platten noch nicht erkannt hat.
Als weiteres Problem stellt sich dar das sich das jeweilige Device der USB Festplatte ändern kann wenn man einen anderen USB Port verwendet.

Das Problem des Devices lässt sich einfach über einen UUID Eintrag in der /etc/fstab Datei regeln:

UUID=36FC-D794 /home/usb-02 vfat noauto,async,rw,uid=vmware,gid=vmware 0 0

Somit ist es egal welchem Device die USB Platte zugeordnet wurde.

Nun muss die USB-Festplatte gemountet werden sobald Sie vom Kernel erkannt wurde.
Hierzu habe ich ein kleines script “dmount.pl” geschrieben:

#!/usr/bin/perl -w

use strict;

my $uid  = shift (@ARGV) || '';
my $dest = shift (@ARGV) || '';
my $path = '/dev/disk/by-uuid/';

die 'first arg is uid' if $uid eq '';
die 'secord arg is mount path' if $dest eq '';

while (! (-e $path . $uid)) {
        sleep (1);
}

system ('mount '.$dest);

Dieses Script wartet bis die übergebende UUID vorhanden ist und ruft dann “mount” auf.

Ein Eintrag kann in der “/etc/init.d/bootmisc.sh“-Datei am Ende in etwa wie folgt erfolgen:

#
# delay mount usb harddrives
/home/rhuesing/dmount.pl d245458e-026c-49f8-bd9f-746e88dae87b /home/usb-01 &
/home/rhuesing/dmount.pl 36FC-D794 /home/usb-02 &

Dezember 12, 2008

Eingabedaten flexibel und unabhängig von der Programmiersprache mittels SQL prüfen

Abgelegt unter: Programmierung, SQL — ralf @ 7:05 pm

Möchte man Eingaben flexibel und evtl. komplexen Prüfungen unterziehen kann man sich die Fähigkeiten von SQL zu nutze machen.
Ich gehe hier davon aus das die Anwendung generell eine Datenbankverbindung hat und nicht extra wegen der Prüfung eine Verbindung aufbauen muss.

Ein Beispiel:
Der Benutzer gibt eine Zeichenfolge ein: “D016381″.

Die Anwendung muss nun etwas bestimmtes tun wenn:
Die Eingabe mit D beginnt, gefolgt von einer 0 und .. (was auch immer).

In jedem Falle ist die Prüfung nicht trivial. Hier bieten sich reguläre Ausdrücke an, jedoch ist nicht in allen Programmiersprachen “mal eben so” möglich RegEx zu verwenden.

Diese Prüfung kann sehr einfach mittels SQL umgesetzt werden.
Es bietet sich der LIKE oder REGEXP Vergleichsoperator an:

SELECT -1 AS OK WHERE 'D016381' LIKE 'D0%'

Diese Abfrage liefert einen Datensatz (mit einer Spalte “OK” mit dem Wert -1) wenn der Benutzer D gefolgt von einer 0 gefolgt von “irgendwas” eingegeben hat.

Es ist nun natürlich ohne weiteres möglich die komplexität der Abfrage zu erhöhen:

SELECT -1 AS OK WHERE ('D016381' LIKE 'D0%' AND 'D016381' NOT LIKE '%2') OR ('D016381' LIKE 'K%')

Heißt, wenn die Eingabe:

(D gefolgt von einer 0 gefolgt von “irgendwas” UND die Eingabe nicht auf 2 endet) ODER die Eingabe mit einem “K” beginnt dann… soll die Anwendung etwas tun.

In der Endkonsequenz kann man diese Filter (bzw. SQL-Statements) in einer SQL-Tabelle speichern und zur Laufzeit das jeweilige SQL-Statement generieren und ausführen.
Somit ist man extrem flexibel da man die Abfragen / Prüfungen jederzeit (für alle Anwendungen die diese SQL-Tabelle verwenden) anpassen kann.

Wo ist der Bug?

Abgelegt unter: Hirndefekt, Programmierung — ralf @ 12:22 pm

Wer findet den Bug in folgendem Code?

    For Each oControl In Controls
      Select Case LCase(oControl.Tag)
      Case "ziel", "quelle", "bedingung", "Feldliste"
        ' Mach irgendwas mit oControl wenn dessen Tag passt
      End Select
    Next oControl

Dezember 10, 2008

Google Books

Abgelegt unter: Sonstiges — ralf @ 5:04 pm

Google Books ist ja eine tolle Sache.

Zum Beispiel taucht der Name “Hüsing” in “Aktenmässige Nachrichten von dem Gauner- und Vagabunden-gesindel” von 1822 auf.

Dezember 4, 2008

IT-Projektablauf

Abgelegt unter: Bilder, Hirndefekt — ralf @ 5:15 pm


Projekt Ablauf

Powered by WordPress ( WordPress Deutschland )