Javascript: Automatisch die Größe eines Textfeldes anpassen
16. Februar 2008
In meinem CMS nutze ich ein kleines Notiz-System, damit ich mir schnell Sachen notieren kann für einen späteren Zeitpunkt. Einen Schwachpunkt hat das Design: Die Box selbst passt sich immer an die Länge der Notiz an, jedoch nicht die Box für den Editor. Daher habe ich mit meinem bisschen Javascript eine kleine Funktion entwickelt, die die Textbox an den Inhalt anpasst.
Getestet habe ich es mit Opera 9.5 und einer meiner Bekannten mit dem IE 7.0, das Snippet ist public domain. Kommentare gibt es im Quellcode reichlich.
Bequeme Logs
27. Dezember 2007
Ich habe mich gerade mit den Prozesskontrollfunktionen von PHP auseinander gesetzt um vielleicht ein paar nützliche Funktionen für Yanix zu finden und bin auf ein Problem gestoßen: Ein Feature der Prozesskontrollfunktionen ist es, Prozesse im Hintergrund laufen zu lassen. Wie soll ich ein Skript debuggen, welches ich nicht sehen kann?
Nach ein bisschen Grübeln kam ich auf die Lösung: Bau dir ein Log-Terminal!
Schritt 1: Logging
Diese funktion schreibt in eine Datei (in meinem Fall log.txt im XAMPP-Ordner) die übergebene Nachricht mit der PID des Prozesses der die Nachricht schreibt. Die PID erhalte ich beim Aufruf von pcntl_fork().
1 2 3 4 5 6 7 8 9 | function L($msg) { global $pid; $logfile = '/opt/lampp/htdocs/log.txt'; $msg = '[' . date('H:i:s') . "][{$pid}] " . $msg . "\n"; $f = fopen($logfile, 'a'); fwrite($f, $msg); fclose($f); } |
Schritt 2: Ausgabe
Als nächstes die Ausgabe. Mit ein bisschen PHP, HTML, Javascript und Prototype entstand eine kleines Skript um diese Ausgaben bequem und hübsch in einem Browser ansehen zu können. Das Skript gibt es hier zum Download. Es unterstützt über AJAX entweder die Anzeige einer Datei welche über den Webserver erreichbar ist oder über PHP eine beliebige Datei des Dateisystems. Mehr dazu in den Kommentaren der Datei.
Kommentar-Spam wirksam entfernen
17. November 2007
Jeden Tag bekomme ich von Spam Karma 2 Mails mit Inhalten wie diesen:
There have been 46 comment spams caught since the last digest report 1 Tag ago.
Es ist gut, dass das Plugin so gut den Müll abfängt jedoch muss ich das ständig selbst aus der Datenbank löschen und das Blocken der IPs bringt auch nicht mehr viel. Daher habe ich jetzt die Rambo-Methode benutzt um dem Spam endlich den gar aus zu machen.
Meist enthalten die Mails nur ein Wort wie “Nice”, “Sorry” oder “Interesting”, manchmal noch ein paar Punkte dazu. Da sich die Spammer so dumm anstellen kann man sie einfach blocken:
Öffne Datei /wp-comments-post.php
Finde diesen Code (Zeile 30 bei WP 2.2.3):
$comment_content = trim($_POST['comment']);
Füge darunter ein:
$spam_words = array('Nice', 'nice', 'Sorry', 'sorry', 'Interesting', 'interesting', 'Cool', 'cool'); foreach ( $spam_words as $word ) { if ( $comment_content == $word ) die('You suck!'); if ( substr($comment_content, 0, strlen($word)) == $word ) die('You suck!'); }
Mal schauen ob Spam Karma ruhiger wird, das Ergebnis seh ich spätestens beim nächsten Bericht.
// Update:
Auf Anregung von BadBoy_ hier eine verbesserte Version:
$spam_words = array('nice', 'sorry', 'interesting', 'cool'); $as_comment = strtolower($comment_content); foreach ( $spam_words as $word ) { if ( $as_comment == $word ) die('You suck!'); if ( substr($as_comment, 0, strlen($word)) == $word ) die('You suck!'); }
Wieso eine extra Variable? Falls der Kommentar doch durchgehen sollte, wäre er komplett klein geschrieben.
Webseiten offline schalten ohne sich selbst auszusperren
26. September 2007
Gerade hatte ich diese Situation: Wie update ich meinen Blog ohne meine Besucher mit einer riesen Baustelle zu verschrecken? ![]()
Nach ein bisschen grübeln und googlen kam ich auf diese Lösung: Einfach per mod_rewrite auf ne Wartungsseite umleiten und Suchmaschinen noch sagen, dass sie diese Seite gar nicht brauchen.
Zuerst in der .htaccess:
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !eigene_ip^. [NC]
RewriteRule ^(.*)$ http://examplet.net/maintenance.php [L]
“eigene_ip” durch seine aktuelle IP ersetzen, sonst landet man selber auch auf der Wartungsseite.
Nun zum Header. 503 klingt ganz nett, also nehmen wir den.
Da man bei PHP je nach SAPI nen anderen Header schicken muss, gibt es hier hier deswegen zwei Auswahlmöglichkeiten:
PHP mit (Fast-)CGI:
header("Status: 503 Service Unavailable");
PHP als Apache Modul:
header($_SERVER['SERVER_PROTOCOL'] . " 503 Service Unavailable");
Werd ich Morgen beim Wordpress-Update auch so machen.