Jan 05

… schonmal versucht Abhängigkeiten grafisch darzustellen ? Am besten noch aus Datenbankcontent ?

Klar, man könnte zu irgendwelchen proprietären MindMap-Tools oder gar zu M$-Visio (oh grauss !) greifen. Dabei geht es mit graphviz in Verbindung mit “dot” soooo einfach. Das Ding ist ehrlich einen Blick wert. Zusammen mit der “Connect by Prior” Clause in Oracle ist das Teil der Knaller schlechthin.

Ein wenig Doku dazu (die original-Doku ist recht schwere Kost) gibt es z.B.

Das allerbeste ist, dass MediaWiki das Ding von Haus aus unterstützt, und man derartige Graphen direkt per Wiki-Editor in die Artikel einbetten kann…

Tagged with:
Jan 03

Mal schauen ob das klappt:

Jan 03

Endlich bin ich mal dazu gekommen die Wetterdatenseite neu aufzubauen. Was gibt es dort zu sehen ?

  • Aktuelles Wetter aus Oberdollendorf / Königswinter im Rheinland bestehend aus:
    • Luftfeuchtigkeit
    • Aussentemperatur
    • Das ganze als zusätzlich als Diagramm der letzten sechs Tage
    • Aktualisiert im 5 Minutentakt
  • Aktuelles Bild (Aktualisierung jede Minute) der Webcam mit Blick auf den Petersberg (wenn denn nicht zu nebelig ist 🙂

Hintergründe, wie das ganze technisch realisiert ist, gibt es auf der Seite “Meine Wetterstation“. Viel Spass beim abrufen der Wetterdaten aus dem Rheinland

Tagged with:
Jan 03

… für Menschen denen selbst das Benutzen von Google zu kompliziert ist. Frage eingeben, Link kopieren, und beim nächsten mal kommen garantiert keine Fragen mehr 🙂

Guckst Du hier: http://lmgtfy.com/

Tagged with:
Jan 03

Ha, da habe ich doch schon ewig nach gesucht (und bin immer wieder auf “Chicken of the VNC”, “Jolly VNC” oder andere Spaesse ausgewichen).

Gesucht war eine Tastenkombination mit der man beim Verbinden auf Windooze Kisten ein “CTRL-ALT-DEL” senden kann. Alle Standardkombinationen sind fehlgeschlagen. Jetzt weiss ich wie es geht. Man drücke nach dem Verbinden via “Command-K” und “vnc://ip.ad.dre.sse” einfach CTRL-ALT-COMMAND-DELETE.

Das Command war das fehlenden Glied 🙂

Fuer alle “alten” Mac-User: COMMAND = “Apfeltaste” 🙂

Tagged with:
Jan 03

Schade, bis vor ein paar Wochen konnte ich das KabelModem von Unitymedia noch per snmp auslesen und den Traffic dann per CACTI visualisieren. Anscheinend hat Unitymedia den SNMP-Port nach innen hin dichtgemacht…

Ansonsten könnte ich mir das nicht erklären:

router:~# snmpwalk -Os -c public -v 1 192.168.100.1
Timeout: No Response from 192.168.100.1
router:~# curl 192.168.100.1
[...]
Scientific-Atlanta Cable Modem
[...]
router:~#

Tagged with:
Dez 29

Aufmerksam geworden durch diesen Artikel, mit dem ueber den Proxy geholte Webseiten (genauer gesagt werden alle Images einmal um 180 Grad gedreht) on the Fly manipuliert werden habe ich mir das ganze mal näher angesehen und optimiert.

Vorweg schonmal das Ergebnis (funktioniert TRANSPARENT mit allen JPGs, GIFs und PNGs). Transparent bedeutet in diesem Falle, dass der Anwender in keinerlei Weise mitbekommt, dass es sich hier um ein manipliertes Bild handelt. Die Requests werden quasi 1:1 durchgeleitet.

Wor moechten also alle Bilder, die aus dem LAN via Proxy angefordert werden, einmal um 180 Grad drehen. Folgende Ausgangssituation:

  • Transparenter Squid auf einem Router
  • Webserver auf einem etwas dickeren Rechner im LAN

in /etc/squid/squid.conf folgende Zeile einfügen:

url_rewrite_program /usr/bin/updwn.pl
url_rewrite_children 5

Das File /usr/bin/updwn.pl sollte wie folgt aussehen:

#!/usr/bin/perl
# Runs as proxy:proxy
# input - siehe unten (Array params)
# output - URL - transparent *invisble to Enduser :-) *
$|=1;
while (<>) {
chomp $_;
@params=split(/ /,$_);
# 0 = Request URL
# 1 = Requesting IP/-
# 2 = -
# 3 = Request Method
# 4 = myip= ?
# 5 = myport = ?
$url=$params[0];
if (!($params[1]=~/192\.168\.60\.200/)) { # Nicht rekursiv aufrufen (Boese !!)
$url='http://192.168.60.200/ppics/updwn.pl?u='.$url if ( ($url=~/gif/i) || ($url=~/jpg/i) || ($url=~/jpeg/i) || ($url=~/png/i));
}
print $url."\n";
$count++;
}

Wobei die 192.168.60.200 durch die IP des eigenen Webserver zu ersetzen waere. Die eigentliche “Magie” findet naemlich jetzt im updwn.pl auf dem Webserver statt. Das Ding benutzt, im gegensatz zu dem File, welches in dem Artikel beschrieben wurde, direkt die GD-Library und ruft keinerlei Executables mehr auf. Damit ist das Script ein wenig performanter

Hier der Inhalt von /var/www/ppics/updwn.pl:

use CGI qw/:standard/;
use LWP::UserAgent;
use GD;
binmode STDOUT;

$|=1;
my $url=param(“u”);

chomp $url;
my $ctype=”;
my $content=”;
get_content($url,\$ctype,\$content);
rotate(\$content,\$ctype) if ($ctype=~/image/i);
print “Content-Type: “.$ctype.”\n\n”;
print $content;
print “\n–magicalboundarystring\n” if ($ctype=~m/image/);

sub get_content {
my ($url,$ref_ctype,$ref_content)=@_;
my $ua = LWP::UserAgent->new;
$ua->agent(“MyApp/0.1 “);
my $req = HTTP::Request->new(GET => $url);
my $res = $ua->request($req);
$$ref_ctype=$res->content_type;
$$ref_content=$res->content;
}

sub rotate {
my ($ref_content,$ref_header)=@_;
my $image=undef;
$image=newFromPngData GD::Image($$ref_content) if ($$ref_header=~/png/i);
$image=newFromJpegData GD::Image($$ref_content) if ($$ref_header=~/jpeg/i);
$image=newFromGifData GD::Image($$ref_content) if ($$ref_header=~/gif/i);
$image->rotate180();
$$ref_header=’image/png’;
$$ref_content=$image->png();
}
Wichtig: Die URL sollte nicht aus dem Internet erreichbar sein. Ansonsten hat man einen selbstgebastelten offenen Proxy…

Mithilfe der Parameter des Files /usr/bin/updwn.pl kann man sich jetzt sogar lustige ACLs bauen. (Rotiere nur fuer bestimmte IP’s oder fuer bestimmte URLs, etc…) Der Phantasie sind da keine Grenzen gesetzt.

Tagged with:
Dez 28

Oh wie wahr….

Dez 28

Wer nicht unbedingt mit Kanonen auf Spatzen schiessen will, und sich Adobes Creative Suite zulegen moechte, ist mit PAINT.NET bestens bedient. Das gute Stueck punktet mit Layern, einer Menge Effekten und dem Fakt, dass es frei ist.

Wenn es jetzt noch sowas aehnliches fuer den MAC gaebe, waere ich gluecklich. Und jetzt komm mir bitte keiner mit The Gimp . Das Ding ist zwar ebenfalls nett, aber solange es nur unter “X” schnurrt, leider keine echte alternative.

Tagged with:
Dez 26

Wo wir gerade bei Katzencontent sind.

Darf ich vorstellen: Mietzekatze “Blue”:

Blue kommt aus der Tuerkei. Genauergesagt von der Tierhilfe Antalya. Dort ist Blue, als Findling, zusammen mit ein paar anderen Ihrer Art als Katzenbaby, in einem Abflussrohr, gefunden worden. Aufgepeppelt von der Tierhilfe durfte Blue mit ca. 7 Monaten das Land verlassen und sollte vermittelt werden. Da sich direkt nach der Einreise meist niemand findet, der eine Katze haben moechte (Wer kauft schon die Katze im Sack :-), sollte Blue ersteinmal zur Pflege zu uns kommen.

Nach ca. 2 Wochen “Pflege” war allerdings klar, dass sich die kleine so gut mit unseren beiden Rackern versteht. Daher haben wir Blue nun offiziell in unsere Familie aufgenommen.

Update: Geht uebrigens tierisch auf MausCursor am Rechner ab:

Tagged with:
Dez 25

No comment…

Dez 19

Schon lustig im Rheinland, sobald die erste Schneeflocke fällt fangen alle an Salz zu streuen, oder Ihre Autos (selbst auf der Autobahn) nur noch in Schrittgeschwindigkeit vorwärtszubewegen… Der Knaller war vorgestern. Da faehrt doch glatt der Streuwagen hier vor dem Haus her (Man beachte: Kein Schnee, Temperatur +1 Grad Celcius). Naja, andere Gegenden, andere Sitten 🙂

Und weils so hübsch ist, hier ein Foto von dem (bisschen) Schnee mit Blick auf den Petersberg:

Okt 18

Folgendes habe ich gerade in einem Forum zur Belegung der “Seriellen” Schnittstelle auf der Rueckseite meines MCZ-Polar Pelletofens gelesen (bisher ungetestet):

  • Pin 1 und Pin 6 sind Thermostat (closed = on // open =off)
  • Pin 3,7 und 8 -> undokumetierte “Programmazione” Schnittstelle (immer diese Italiener 🙂

Pin 1 und 6 greifen nur wenn man den Ofen in den Automatikmodus setzt und die Solltemperatur auf unter 6 Grad einstellt. Man darf gepannt sein, ob das tut …

Tagged with:
Okt 07

Auch nett…

wer weiss wofuer man es mal gebrauchen kann.

Gegeben sei folgende Tabelle:

SQL> SELECT deptno, ename FROM emp ORDER BY deptno, ename;

DEPTNO ENAME
------ ----------
    10 CLARK
    10 KING
    10 MILLER
    20 ADAMS
    20 FORD
    20 JONES
    20 SCOTT
    20 SMITH
    30 ALLEN
    30 BLAKE
    30 JAMES
    30 MARTIN
    30 TURNER
    30 WARD

14 rows selected.

Wir moechten jetzt die Employees zu einem department aber in je einer Zeile haben. Man nehme: wm.concat aus wmsys

SELECT deptno,wmsys.wm_concat(ename) as concatenated FROM dept group by deptno;

    DEPTNO CONCATENATED
---------- --------------------------------------------------
        10 CLARK,KING,MILLER
        20 ADAMS,FORD,JONES,SCOTT,SMITH
        30 ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD
...

Ist doch schick, oder ?

 

[Update 2017-04-25]: Habe das heute mal wieder gebraucht. wm_concat ist wohl nicht mehr vorhanden. Stattdessen gibt es was offizielles. Funktioniert fast genau so: listagg. Hier ein adaptiertes Beispiel:

SELECT deptno,wmsys.listagg(ename,', ') within group (order by ename) as concatenated FROM dept group by deptno;

Man kann sogar den Delimiter mit angeben (hier ein ,) und sortieren…

Apr 26

Kein Kommentar… aber gut – via “Dirks Logbuch” 🙂


#!/usr/bin/perl
#
# Leyenfilter 2.0 - (c) 2009 by Ursula
#

use Ursula::Leyenfilter;

# Ursulas Liste
my %URSULA_SPERRLISTE = getSperrListe(“O:/USBStick-Ursula/sperrliste.xls”) or die “Uschi, du hast vergessen deinen USB-Stick einzustecken! (Das Stecker-Ding kommt in den Rechner)”;

# Liste des BKA
my %BKA_SPERRLISTE = getSperrListe(‘ftp://uschi:apfel1@ftp.bka.de/bka_sperrliste.xls’);

# Provider die nicht unterschrieben haben
my %BADISP_SPERRLISTE = (“www.einsundeins.de” => ‘Grund: Kinderschaender!’);

Ursula::Leyenfilter->run(\&process_packet);

sub process_packet {
my($user_data, $header, $packet) = @;

if ($header->{‘HTTP_URI’} =~ /(child|kinder).*(porn|pornografie|xxx|erotic|peepshow|nude|naked)/ or
defined($URSULA_SPERRLISTE{$header->{‘HTTP_URI’}) or
defined($BKA_SPERRLISTE{$header->{‘HTTP_URI’}) or
defined($BADISP_SPERRLISTE{$header->{‘HTTP_URI’})

# Notiz: Gesetze noch nicht verabschiedet, kommt noch.
# $header->{‘HTTP_URI’} =~ /thepiratebay.org/ or
# $header->{‘HTTP_URI’} =~ /wikipedia.org/ or
# $header->{‘HTTP_URI’} =~ /www.amnesty.de/ or
# $header->{‘HTTP_URI’} =~ /www.wikileaks.de/ or

# Erst kurz vor den Wahlen auskommentieren
# $header->{‘HTTP_URI’} =~ /spd.de/ or
# $header->{‘HTTP_URI’} =~ /gruene.de/ or
)
{

$packet->redirect(‘http://www.bka.de/dukommsthiernichtrein.html’);

}
}

preload preload preload