Donnerstag, 31. Dezember 2009
Amavis, sa-learn und awl
Gelegentlich flutscht auch mal ein Spammail durch den Amavis-Filter und landet damit ungewollt in der Autowhitelist, bzw. wird von Bayes fälschlicherweise als sauber erkannt.
Mit zwei Kommandos kann das richtig gestellt werden.
Amavis läuft als unprivilegierter User (in diesem Fall als vscan), damit sa-learn und spamassassin für den richtigen Filter funktionieren, rufen wir die Kommandos mit sudo auf (als root):
Das kann natürlich auch gleich getestet werden:
Mit zwei Kommandos kann das richtig gestellt werden.
Amavis läuft als unprivilegierter User (in diesem Fall als vscan), damit sa-learn und spamassassin für den richtigen Filter funktionieren, rufen wir die Kommandos mit sudo auf (als root):
sudo -u vscan spamassassin --remove-addr-from-whitelist spammer@doofe-domain.net
...entfernt die Email Adresse aus der Whitelist.
sudo -u vscan sa-learn --spam spammail.eml
...trainiert Bayes auf das vormals durchgeflutschte Mail (hier spammail.eml).Das kann natürlich auch gleich getestet werden:
sudo -u vscan spamassassin -L -D < spammail.eml
Siehe da, Bayes vergibt jetzt 3.5 Punkte, AWL ist völlig verschwunden.Sonntag, 20. Dezember 2009
Floats vergleichen in der Bash
Die Bash (test) kann an sich nur Ganzzahlen vergleichen, übergibt man eine Fließkommazahl, führt das zu einem Fehler.
So richtig Sinn macht das klarerweise erst mit Variablen:
if [ 12.3 -gt 12 ]; then echo '>'; fi
bash: [: 12.3: integer expression expected
Möchte man doch schnell mal zwei floats vergleichen, geht das ganz einfach mit bc. Zuerst interaktiv:
bash: [: 12.3: integer expression expected
xela@linux:~> bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. if (10.123 > 10.1119) 1 else 0 1 quitUm diese Art Test in einem Skript verwenden zu können, nehmen wir "echo" zum Übergeben an bc:
if [ $(echo "if (19 >= 19.00000) 1 else 0" | bc) -eq 1 ] ; then echo größergleich; else echo kleiner; fi
Wichtig dabei ist das "else 0", damit auf alle Fälle ein Integer (Ganzzahl) zurückgegeben wird, den test (also [ ) dann vergleichen kann.So richtig Sinn macht das klarerweise erst mit Variablen:
a='3.333'; b='3.2176'; if [ $(echo "if (${a} > ${b}) 1 else 0" | bc) -eq 1 ] ; then echo größer; else echo kleiner; fi
Mittwoch, 26. August 2009
ffmpeg Schrifteffekt mit vhook imlib2.so
FFMPEG bietet ein paar dürftig dokumentierte Effekte, sogenannte vhooks. Einer davon ist imlib2.so. Zwar sind die vhooks zu nicht viel nütze, werden auch gar nicht mehr weiter entwickelt und sind in der Anwendung gräßlich kompliziert. Einen lustigen Effekt möchte ich euch aber nicht vorenthalten: eine Schrift, die etwas zeitverzögert übers Bild huscht und dabei langsam transparent wird.
Zuvor muss in der Shell noch die Variable FONTPATH gesetzt und exportiert werden, falls sie nicht gesetzt ist:
Jetzt aber im Detail:
ffmpeg -i input.flv -vhook '/usr/lib/vhook/imlib2.so -c white -x 250 -y H+(-1.8*N+80) -t Hallo! -A max(0,255-exp(N/16))' -sameq -acodec copy output.flv
Ja, das ist eine mords Codewurst.Zuvor muss in der Shell noch die Variable FONTPATH gesetzt und exportiert werden, falls sie nicht gesetzt ist:
FONTPATH="/usr/lib/jvm/java-1.6.0-sun-1.6.0/jre/lib/fonts/"
export FONTPATH
Sonst findet ffmpeg die Schriften nicht. Obiger Ordner ist nur ein Beispiel, dort liegt bei mir zufällig die Schrift, die ffmpeg per default verwendet. Zwar kann das noch mit -f gesetzt werden, aber der Befehl ist auch so schon lang genug.export FONTPATH
Jetzt aber im Detail:
"ffmpeg Schrifteffekt mit vhook imlib2.so" vollständig lesen
Freitag, 31. Juli 2009
Text formatieren in zenity
Zenity ist ein Programm, das GTK+ Dialoge anzeigt. Damit kann man Shellskripten ein GUI (Graphical User Interface) verpassen, was einigen Komfort für den User bringt.
Ein einfaches Beispiel:
Zenity kann aber auch Fragen, Auswahllisten, Kalender, etc.
Wenig bekannt ist, dass die Texte in den Dialogfenstern auch formatiert werden können. In der manpage von zenity steht auch gar nichts davon.
Deshalb ein paar Beispiele:
<i></i> erzeugt kursiven Text
Verwendet wird offensichtlich eine HTML-ähniche Syntax mit Tags.
\n erzeugt einen Zeilenumbruch
Natürlich kann man Text auch verkleinern mit small, smaller, x-small und xx-small.
Auch farbiger Text ist möglich:
Mehr lässt sich eventuell noch durch herumprobieren herausfinden.
Die Dokumentation zu den mit zenity verwendbaren Tags steckt wohl irgendwo tief im GTK+ Quelltext.
Ein einfaches Beispiel:
zenity --info --text "sehr informativ"
Zenity kann aber auch Fragen, Auswahllisten, Kalender, etc.
Wenig bekannt ist, dass die Texte in den Dialogfenstern auch formatiert werden können. In der manpage von zenity steht auch gar nichts davon.
Deshalb ein paar Beispiele:
zenity --info --text "<b>sehr</b> <i>informativ</i>"
<b></b> erzeugt fetten Text<i></i> erzeugt kursiven Text
Verwendet wird offensichtlich eine HTML-ähniche Syntax mit Tags.
zenity --info --text '<span size="xx-large">Obacht!!!</span>\n\nDas ist extrem wichtig'
large, larger, x-large und xx-large erzeugen größeren Text\n erzeugt einen Zeilenumbruch
Natürlich kann man Text auch verkleinern mit small, smaller, x-small und xx-small.
Auch farbiger Text ist möglich:
zenity --info --text '<span color="red">roter</span> und <span color="blue">blauer</span> Text'
Außerdem gehen die HTML-Tags <u>, <tt>, <sup>, <sub>, <s>, <big>.Mehr lässt sich eventuell noch durch herumprobieren herausfinden.
Die Dokumentation zu den mit zenity verwendbaren Tags steckt wohl irgendwo tief im GTK+ Quelltext.
Montag, 27. April 2009
Datei mit gemischtem Encoding reparieren
Textdateien haben ein Encoding, das ist in unseren Breiten meist entweder utf-8 oder iso-8859-1 (es gibt natürlich noch bedeutend mehr). Ein großes Problem entsteht, wenn Windows- und Linuxuser gemeinsam (deutschsprachige) Dateien bearbeiten. Dann kann es vorkommen, dass eine Textdatei sowohl utf-8, als auch iso-8859-1 Teile enthält.
Die Datei ist kaputt, Umlaute werden teilweise nicht mehr richtig angezeigt.
Was tun? Normalerweise müsste sich jetzt jemand hinsetzen und den gesamten Text durcharbeiten.
Nein, wir Tricksen!
Wir verwenden das Programm recode, allerdings nicht direkt. Mit gemischtem Encoding kann recode nicht umgehen, sondern wir gehen den Umweg über HTML-Entities.
Wichtig: Folgendes findet auf einer Linuxkonsole mit $LANG=de_DE.UTF-8 statt:
Die Datei ist kaputt, Umlaute werden teilweise nicht mehr richtig angezeigt.
Was tun? Normalerweise müsste sich jetzt jemand hinsetzen und den gesamten Text durcharbeiten.
Nein, wir Tricksen!
Wir verwenden das Programm recode, allerdings nicht direkt. Mit gemischtem Encoding kann recode nicht umgehen, sondern wir gehen den Umweg über HTML-Entities.
Wichtig: Folgendes findet auf einer Linuxkonsole mit $LANG=de_DE.UTF-8 statt:
"Datei mit gemischtem Encoding reparieren" vollständig lesen
Sonntag, 26. April 2009
Suchbegriffe aus Apache Logfile
Zur Suchmaschinenoptimierung gehört zuallererst die Diagnose:
Mit welchen Suchbegriffen kommen die Leute auf welche meiner Seiten. Die (Google-)Suchbegriffe sind Teil des Refererstrings im Apache Logfile. Das ist aber im Allgemeinen lang und unübersichtlich.
Folgendes Bashskript extrahiert die gewünschten Daten aus Logfiles.
Voraussetzung: Leserechte auf das Logfile (z.B. access_log).
Mit welchen Suchbegriffen kommen die Leute auf welche meiner Seiten. Die (Google-)Suchbegriffe sind Teil des Refererstrings im Apache Logfile. Das ist aber im Allgemeinen lang und unübersichtlich.
Folgendes Bashskript extrahiert die gewünschten Daten aus Logfiles.
Voraussetzung: Leserechte auf das Logfile (z.B. access_log).
"Suchbegriffe aus Apache Logfile" vollständig lesen
Samstag, 18. April 2009
Geolocation Wrapper Skript für die Bash
Geolocation oder Geotargeting ist das Schließen auf den geographischen Standort aus einer IP-Adresse. Zwar kann wegen dynamisch zugeteilter IP's, der Verwendung von NAT oder Proxis usw., die Zuordnung nie 100%-ig genau sein, meist kommt man aber ungefähr in die richtige Richtung (Provider, Netz...).
Für besonders Neugierige gibt es auch die Möglichkeit, die IP nicht nur einem Land, sondern einer Stadt zuzuordnen (incl. Längen- und Breitengrad). http://www.maxmind.com/, wo das Projekt GeoIP zuhause ist, bietet zum Beispiel online so einen Dienst an. Noch praktischer wäre natürlich ein lokales Shellskript.
Und so wirds gemacht:
Für besonders Neugierige gibt es auch die Möglichkeit, die IP nicht nur einem Land, sondern einer Stadt zuzuordnen (incl. Längen- und Breitengrad). http://www.maxmind.com/, wo das Projekt GeoIP zuhause ist, bietet zum Beispiel online so einen Dienst an. Noch praktischer wäre natürlich ein lokales Shellskript.
Und so wirds gemacht:
"Geolocation Wrapper Skript für die Bash" vollständig lesen
« vorherige Seite
(Seite 2 von 5, insgesamt 31 Einträge)
» nächste Seite