DNS-Cache unter Mac OSX erneuern
Geschrieben von Thomas Falkner - 20.10.10 um 10:10Wenn nach einem Update eines Nameservers OS X die Namen nicht zu den passenden IP-Adressen auflöst, hilft es den DNS-Cache zu reinitialisieren.
Bis Version OSX 10.4 geht das mit dem Kommando:
lookupd -flushcache
Ab OSX 10.5 mit:
dscacheutil -flushcache
HTML-Eingaben in eigenen Joomla Komponenten gestatten
Geschrieben von Thomas Falkner - 12.07.10 um 06:07Die Methode JRequest::get filtert per default HTML- und PHP-Code aus den Request. Möchte man beispielsweise ein HTML-Eingabefeld in der eigenen Komponente nutzen, lässt sich dies über die MethodeJRequest::getVar mit dem Parameter JREQUEST_ALLOWRAW erreichen.
Zum Beispiel so:
$description = JRequest::getVar('description','','post','string', JREQUEST_ALLOWRAW);
Mit Apache Hotlinking und Bilderklau unterbinden
Geschrieben von Thomas Falkner - 31.08.09 um 11:08Als Webmaster freut man sich über eingehende Links, denn schließlich steigt damit die Linkpopularität. Werden jedoch einzelne Inhalte wie beispielsweise Bilder in Foren direkt per Link eingebunden, können sich daraus erhebliche Probleme ergeben: Ist das Forum stark frequentiert und das eingebundene Foto relativ groß, kann der so generierte Traffic schnell bedrohliche Ausmaße annehmen.
Keine Chance für Trafficdiebe
Wäre es nicht elegant Trafficdieben das Handwerk zu legen, indem wir Ihnen statt dem verlinkten Bild eine andere Datei unterschieben? Statt des gewünschten Fotos könntest du den Contentdieb auf diese Weise unfreiwillig ein Werbebanner für deine eigene Website einbinden lassen.

Voraussetzung für die beschriebene Technik ist ein Apache Webserver mit dem Modul mod_rewrite. Der Code kann entweder über .htacess oder direkt über die Apache-Konfigurationsdatei eingebunden werden.
Ersetze einfach domain.tld gegen die Domain deiner Website und stoppt_contentdiebe.png gegen den Namen der Grafik, die du Contentdieben unterschieben möchtest.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.tld [NC]
RewriteCond %{REQUEST_FILENAME} !stoppt_contentdiebe.png$
RewriteRule .*\.(gif|jpg|png)$ http://domain.tld/images/stoppt_contentdiebe.png [R]
Erklärung zum Script
Zunächst prüfen wir anhand der Direktive filesmatch die Dateiendung gegen einen einfachen regulären Ausdrucks:
Damit erfassen wir alle aufgerufenen Dateien, die die Dateiendung .gif, .jpg oder .png tragen. Selbstverständlich ließe sich der Ausdruck um viele weitere Dateiendungen erweitern, deren direkte Verlinkung wir unterbinden möchten.
Im nächsten Schritt schalten wir die RewriteEngine an. Die RewriteEngine erlaubt es uns mittels RewriteCond verschiedene Parameter des HTTP-Request gegen reguläre Ausdrücke zu prüfen und bei Entsprechung die aufgerufene URL zu manipulieren.
Grundsätzlich müssen wir überprüfen, von welcher Domain aus das Bild verlinkt wurde. Dazu lesen wir den Parameter HTTP_REFERER aus. HTTP_REFERER gibt den Referrer, also die auf einen Link verweisende Domain an.
Getreu dem Motto “Was nicht erlaubt ist, ist verboten” können wir zwei Bedingungen für ein legitimes Verlinken der Fotos formulieren.
- Wenn kein Referrer angegeben ist. Das ist der Fall, wenn beispielsweise durch einen Proxy gelöscht oder die URL direkt aufgerufen wurde.
- Wenn der Referrer unserer eigenen Domain entspricht.
Wir können demnach folgende Bedienungen formulieren:
Der Referrer ist leer:
RewriteCond %{HTTP_REFERER} !^$
Der Referrer entspricht unserer eigenen Domain, wobei domain.tld gegen die Domain deiner Website zu ersetzen ist:
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain.tld [NC]
Damit die RewriteEngine sich nicht in einer endlosen Schleife verfängt, die letztlich mit einem Internal-Server-Error quittiert würde, müssen wir für das dem Trafficdieben unterzuschiebende Bild eine Ausnahme formulieren:
RewriteCond %{REQUEST_FILENAME} !stoppt_contentdiebe.png$
Sind alle Bedingungen erfüllt, greift folgende Regel, mit der wir alle fremdverlinkten Bilder gegen unseren Hinweis ersetzen.
RewriteRule .*\.(gif|jpg|png)$ http://domain.tld/stoppt_contentdiebe.png [R]
Vim: Datei trotz fehlender Schreibrechte speichern
Geschrieben von Thomas Falkner - 30.07.09 um 10:07Ich bekenne mich als vim-Fan. Abgesehen von Textmate habe ich noch keinen Editor gefunden, mit dem ich ähnlich produktiv arbeiten könnte. Unter vim wurde bisweilen meine Produktivität gelegentlich ein wenig gebremst: Schnell eine Änderung in einer Server-Konfigurationsdatei vorgenommen, :win die Tastatur gehackt und vim quittiert es mit E212: Can't open file for writing. Mal wieder die vergessen vim mit sudo zu starten. Zwar lässt sich die Datei problemlos unter einem temporären Dateinamen speichern und dann mit sudo mv verschieben, doch das kostet unnötig Zeit.
Viel eleganter und schneller lässt sich die Datei trotz mangelnder Zugriffsrechte direkt aus vim heraus abspeichern:
:w !sudo tee %
Ein kleine Befehlsfolge, die mir künftig viel Zeit sparen wird.
Neue Twitter-Startseite: Fokus auf Suchfunktion
Geschrieben von Thomas Falkner - 29.07.09 um 03:07Twitter wird allmählich erwachsen und bemüht sich um Businesskunden. Die Veröffentlichung eines Leitfadens zur Nutzung von Twitter als Marketinginstrument gab erste Hinweise auf das Potenzial der über Twitter möglichen Echtzeitsuche nach Diskursen, Gedanken, Gefühlen, Eindrücken, Stimmungen, Meinungen und Gerüchten: Also der ungefilterten Essenz dessen, was Menschen weltweit bewegt; verdichtet und kategorisiert durch Hashtags.
Diesem Gedanken folgend hat Twitter heute wie angekündigt die Startseite überarbeitet und rückt die Suchfunktion in den Mittelpunkt. Damit richtet sich Twitter insbesondere an potentielle Twitteruser, indem es ihnen ein Werkzeug zur Hand reicht um zu ergründen, was die Twittersphäre aktuell beschäftigt. Unterhalb der Suchfunktion werden die populärsten Themen der letzten Minuten, Tage und Woche auf Schlagworte, sogenannte Hashtags, verdichtet angezeigt.


Die Fokussierung auf die Suchfunktion hilft auch Menschen, die noch nicht twittern, relevante Informationen aus dem großen Rauschen der Tweets zu extrahieren. Wenngleich ich mich als Gewohnheitsmensch erst an die neue Twitter-Startseite gewöhnen muss, so scheint sie mir dennoch äußert gelungen zu sein. Denn die neue Startseite kommuniziert Sinn und Funktion von Twitter sehr erfolgreich – auch an unbedarfte Nutzer.
load average: 5.49, 4.99, 3.83
Geschrieben von Thomas Falkner - 08.06.09 um 04:06Ich befürchte, das schreit nach einem neuen Datenbankserver. Ich habe noch nie einen so hohen Load gesehen:
16:18:35 up 276 days, 2:47, 2 users, load average: 5.49, 4.99, 3.83
Langsamer DVD-Brenner unter Windows XP
Geschrieben von Thomas Falkner - 21.12.08 um 11:12Wird ein Brennvorgang gewaltsam abgebrochen, kann es passieren, dass der DVD/CD-Brenner unter Windows XP fortan nur noch im Schneckentempo CDs und DVDs brennen möchte und zudem eine enorm hohe CPU-Last erzeugt wird. Diese Symptome weisen darauf hin, dass Windows das Laufwerk nur noch im äußerst langsamen und zugleich ressourcenhungrigen PIO-Modus betreibt.
Abhilfe schafft hier meiner Erfahrung nach nur noch den Rechner in den abgesicherten Modus zu starten und das betroffene Laufwerk nebst Controller im Gerätemanager zu entfernen. Nach einem Neustart wird die Hardware wieder automatisch erkannt und Windows XP spricht das Laufwerk im ungleich schnelleren UDMA-Modus an.
[ad]
Produktschlüssel per T-SQL auslesen
Geschrieben von Thomas Falkner - 16.10.08 um 07:10Mit der T-SQL Funktion xp_regread lassen sich beliebige Parameter aus der Registry auslesen. So beispielsweise auch der CD-Key des Microsoft SQL-Servers:
USE master
EXEC xp_regread 'HKEY_LOCAL_MACHINE',
'SOFTWARE\Microsoft\Microsoft SQL Server\80\registration',
'CD_KEY'
Linux: Mehrere IP-Adressen an ein Netzwerkinterface binden
Geschrieben von Thomas Falkner - 25.08.08 um 10:08Manchmal ist es erforderlich mehrere IP-Adressen an ein Netzwerkinterface zu binden. Nur so lassen sich beispielsweise auf einem angemieteten Rootserver mit nur einer Netzwerkkarte Websites unter verschiedenen IP-Adressen hosten – Voraussetzung dabei ist selbstverständlich, dass der Hoster zusätzliche IP-Adressen zur Verfügung stellt.
Linux bietet mit dem Konzept der virtuellen Netzwerkinterfaces eine elegante Lösung, um an einen Netzwerkadapter viele IP-Adressen zu binden. Jede physikalisch Netzwerkkarte trägt einen eindeutigen Namen, etwa eth0 für die erste Karte oder eth1 für die zweite Netzwerkkarte. Für jede physikalische Netzwerkarte lassen sich mehrere virtuelle Interfaces mit einer eigenen IP-Adresse konfigurieren. Dazu ist das physikalische Interface (eth0, eth1, eth2 usw.) gefolgt von einem Doppelpunkt und der Nummer des zu erstellenden virtuellen Interface anzugeben. So bezeichnet eth0:1 das erste virtuelle Interface an der physikalischen Netzwerkkarte eth0 und eth1:5 das fünfte virtuelle Interface an der zweiten Netzwerkkarte eth1.
Die virtuellen Netzwerkschnittstellen lassen sich mit den gleichen Werkzeugen konfigurieren, wie ihre physikalischen Pendants.
Um beispielsweise manuell die IP-Adresse 192.168.35.100 an die Netzwerkkarte eth0 zu binden, genügt es folgenden Befehl mit root-Rechten auszuführen.
ifconfig eth0:1 192.168.35.200 netmask 255.255.255.0 broadcast 192.168.35.255 up
Möchte man die manuell vorgenommene Konfiguration dauerhaft hinterlegen, wäre unter Debian die /etc/network/interfaces wie folgt zu editieren:
auto eth0:1
iface eth0:1 inet static
address 192.168.35.200
netmask 255.255.255.0
broadcast 192.163.35.255
Firefox 3 und selbstsignierte SSL-Zertifikate
Geschrieben von Thomas Falkner - 19.08.08 um 10:08Unter Firefox 3 ist es per Default recht umständlich selbstsignierte SSL-Zertifikate zu akzeptieren. Hat bei vorherigen Versionen noch ein Klick auf “Zertifikat akzeptieren” genügt, verlangt Firefox 3 nun gleich Bestätigungen. Grundsätzlich ist dies Verhalten von Firefox 3 durchaus sinnvoll, weil es häufig keine gute Idee ist leichtfertig Zertifikaten zu vertrauen, die der Anbieter selbst signiert hat.
Wen das Verhalten als erfahrenen User nervt, kann es zum Glück abstellen:
Dazu genügt es in die Adresszeile about:config einzugeben folgende Einträge zu konfigurieren:
- browser.xul.error_pages.expert_bad_cert = true
- browser.ssl_override_behavior = 2
