gesehen in Bad Kreuznach …
Geht es um das Extrahieren von Informationen aus einem HTML-Dokument, so bietet sich Perl als “the Swiss Army chainsaw of programming languages” geradezu an und bietet unzählige Wege ans Ziel. Nicht nur gibt es die mächtige RegEx-Engine, auch im CPAN gibt es eine Vielzahl von Modulen, die für den Einsatzzweck geeignet scheinen.
Ein Modul, das ein gutes Verhältnis zwischen Aufwand und erzieltem Ergebnis verspricht, ist HTML::TreeBuilder, dessen Einsatz am Beispiel eines Flickr-Fotoalbums demonstriert werden soll:
Nach der Initialisierung des HTML::TreeBuilder-Objekts genügt ein Aufruf von “parse” oder wahlweise “parse_file” auf eine z.B. mittels “LWP::Simple” heruntergeladene Datei, damit der HTML-Tree zur weiteren Verarbeitung zur Verfügung steht.
$tree = HTML::TreeBuilder->new;
$tree->parse($page);
Die einzelnen Thumbnails eines Albums sind bei flickr jeweils in ein “div”-Element eingebettet, dem die Klasse “thumb” zugewiesen ist.
<div class="thumb">
<span>
<a title="..." href="...">
<img width="75" height="75" border="0" alt="..." src="...">
</a>
</span>
</div>
Um eine Liste aller Thumbnail-Elemente zu erhalten, genügt der Aufruf von “find_by_attribute” mit passenden Parametern
@urllist = $tree->find_by_attribute('class', 'thumb');
der den gesamten Dokument-Tree durchläuft und eine Liste aller Elemente mit Klasse “thumb” zurückliefert, die dann einzeln abgearbeitet werden können.
Die Links zu den jeweiligen Bilderseiten können dann über den Aufruf zweier weiterer Funktionen etxrahiert werden:
foreach $thumb (@urllist) {
$link = $thumb->find_by_tag_name('a');
print $link->attr('href');
}
Der Aufruf von “find_by_tag_name” lokalisiert das Link-Element innerhalb des “div”-Elements, mittels “attr” kann auf dessen “href”-Attribut zugegriffen werden.
Das
Download (vollständige Beispielskript; RAR-archive; 0kB)
, das mittelsflickldr.pl http://www.flickr.com/photos/<werauchimmer>/sets/<wasauchimmer>/
aufgerufen wird, ist lediglich als Demo zur Verwendung von HTML::Template zu sehen und alles andere als ein zuverlässiger Downloader für Flickr-Alben. Neben fehlendem Fehlerhandling gibt es auch keinerlei Option(en) zur Wahl der Fotogröße - es wird einfach davon ausgegangen, daß alles wie gewünscht verfügbar ist.
Als kleine, zuverlässige und einfach zu konfigurierende Firewall die auch einem schon betagten Rechner nochmal zu Amt und Würde verhilft, ist IPFire eine gute Wahl.
Leider hat die auf den ersten Blick einfache Konfiguration den Nachteil, daß manche Szenarien über die Oberfläche nicht abgebildet werden können, weil für die gewünschte Funktionalität keine entsprechenden Konfigurationsdialoge zur Verfügung stehen.
In diesem Fall können die Einstellungen der Firewall aber mittels SSH-Zugang in der Datei “/etc/sysconfig/firewall.local” vorgenommen werden.
Zugriff von rot auf grün anhand der IP-Adressen
Den Zugriff eines Rechners aus dem roten Netz auf einen Rechner im grünen Netz kann normalerweise mittels Portforwarding erledigt werden. In der Oberfläche ist es allerdings nicht möglich, den Quell- oder Zielport für verschiedene IP-Adressen mehrfach zu vergeben, so daß das Szenario, daß ein Rechner aus dem roten Netz auf den gleichen Port auf mehreren Rechnern im grünen Netz zugreifen darf, nicht konfigurierbar ist.
Die Zuweisung über die “firewall.local” kann wie folgt vorgenommen werden
/sbin/iptables -A CUSTOMFORWARD -s <Quell-IP> -d <Ziel-IP> -i red0 -o green0 -j ACCEPT
eine Einschränkung der Ports ist über die Parameter “–sport <Quell-Port(s)>” sowie “–dport <Ziel-Port(s)” möglich, bei denen als Werte entweder ein einzelner Port oder ein Bereich angegeben werden kann.
Nach außen ursprüngliche IP beibehalten
Da NAT ein integraler Bestandteil von IPFire ist, kann diese(s) auch nicht abgeschaltet werden. Es besteht aber die Möglichkeit, einem Paket nach Behandlung durch IPFire wieder seine ursprüngliche Quell-IP zuzuweisen:
/sbin/iptables -t nat -I CUSTOMPOSTROUTING -p all -s <Quell-IP> -j SNAT --to-source <Quell-IP>
Für jede Regel, die im Bereich “start” der “firewall.local” eingetragen wird, sollte eine zugehörige Lösch-Regel im Bereich “stop” hinterlegt werdem.
Einen guten Einstieg in das Thema “iptables” bietet das “IPTABLES HOWTO” von Dirk Bender, etwas ausführlicher ist “Linux Firewalls Using iptables” von Linux Home Networking.
Keine Ahnung, mit welchen Einstellungen die Entwickler bei Mozilla arbeiten, unter einem Standard-Windows 7 sieht Thunderbird 5 jedenfalls nicht sehr benutzbar aus:
Ähnlich wie bei Firefox lässt sich aber das Aussehen mittels der Datei “userChrome.css” modifizieren (ggf. muß die Datei erst angelegt werden), die im “chrome”-Ordner innerhalb des Thunderbird-Profils abgelegt wird. Durch Hinzufügen von
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
toolbox {
background-color: #eef3fa !important;
}
.tabmail-strip {
background-color: #eef3fa !important;
}
#folderTree {
background-color: #ffffff !important;
}
ändert sich z.B. das Aussehen wie folgt:
Der letzte Eintrag “#folderTree” sorgt dafür, daß der Hintergrund der Ordnerhierarchie wieder in reinem Weiß erstrahlt.
Ein guter Einstieg in Modifikationen mittels “userChrome.css” findet sich in der Knowledge Base von Mozillazine.
Nachtrag 12.Juli 2011:
Je nach Profil kann es sein, daß nicht nur die Datei “userChrome.css” angelegt werden muß, sondern auch der sie enthaltende “chrome”-Ordner. Dieser wird im Hauptordner des Thunderbird-Profils benötigt, also in
%APPDATA%\Thunderbird\Profiles\<Profilname>\
Nachtrag 27.Juli 2011:
Mit ein paar zusätzlichen Zeilen ist auch eine Hervorhebung des Drag & Drop-Zielordners möglich.
Während man beim Versuch, eine Internetmarke zu erstellen, in VillaDeutschePost noch hoffnungsvoll alle fünf Minuten auf “Aktualisieren” klickt
werden die Bewohner von VillaeBay wenigstens darüber informiert, daß sich die nächsten rund 36 Stunden nichts ändern wird: