E-Mails einer Mailbox neu zustellen

März 22nd, 2014

©Rosa Rotkraut / photocase.com

©Rosa Rotkraut / photocase.com

Zwischendurch mal ein kleiner Tipp, wie man E-Mails, die in einer Mailbox im mbox-Format gelandet sind, wieder einem Mailserver zuführen kann.

nach Empfänger in der eMail
formail -s sendmail -t < mailbox
an eine bestimmte Adresse
formail -s sendmail recipient@example.com < mailbox

flattr this!

Wie ich mir die Zukunft vorstelle…

März 17th, 2014

In letzter Zeit gibt es immer mehr sogenannte SmartWatches, die als Zubehör zum Telefon (Smartphone) fungieren sollen. Dies hat mich daran erinnert, dass ich schon in den 90ern eine Vision hatte, wie die Zukunft der Informationstechnologie aussehen könnte.

Es begann mit einem Palm III

© knallgrün / photocase.com

© knallgrün / photocase.com

Damals besaß ich meinen ersten PDA (Personal Digital Assistant), einen Palm III. Für mich als Oberstufenschüler war das ein seltsames Gefühl, ein so teures Gerät quasi täglich mit mir herumzuschleppen. Trotz seiner im Rückblick ziemlich eingeschränkten Kommunikations­fähigkeit war es faszinierend – mein digitales Adressbuch, topaktuell wenn ich daran gedacht hatte ihn mit meinem PC zu synchronisieren. Dazu noch die Möglichkeit, Notizen, meinen Kalender, und diverse kleinere Programme auch unterwegs zu nutzen.

Ergänzt wurde das ganze durch eine Armbanduhr, eine Timex DataLink. Diese Uhr hatte mein Vater von einer USA-Reise mitgebracht, auch sie konnte man mit dem PC synchronisieren – Kabellos. Man musste nur die entsprechende Software starten, die Uhr in den Synchronisationsmodus schalten, und vor den Bildschirm halten. Dann blitzten Linienmuster auf, in denen alle Informationen kodiert waren, die von der Uhr per Photodiode erfasst wurden.

Einziges Manko war, dass der PC zu Hause immer noch der Dreh- und Angelpunkt der Information war. Es gab keine Möglichkeit, im Palm etwas einzutragen, und später unterwegs per Armbanduhr auf die Information zuzugreifen, es sei denn man hatte zwischendurch synchronisiert. Mobiles Internet und Daten in der Cloud waren damals noch Utopie, und auch heute würde ich gerne ohne auskommen.

Die Vision

Daraus erwuchs mit der Zeit folgende Idee: Der Palm war ein hervorragendes Anzeige- und Eingabegerät. Der PC war noch ein bisschen besser für solche Zwecke geeignet. Die Uhr eignete sich nur zum rudimentären anzeigen, aber alle benötigten einen Speicherplatz für meine Informationen.

Aber wieso brauchte jedes Gerät einen eigenen Speicherplatz? Konnte man das nicht optimieren, um das ewige hin-und-hersynchronisieren zu vermeiden? Ich stellte mir vor, die Armbanduhr hätte ausreichend Speicher, um meine Daten aufzunehmen. Sie hätte ich immer dabei, und könnte zumindest die Daten anzeigen, eine Telefonnummer nachschlagen, was vor dem Handyzeitalter durchaus mal vorkam, wenn man z.B. bei Freunden telefonieren wollte, oder eine der damals noch zahlreichen Telefonzellen benutzen musste. Sie könnte mich an Termine erinnern, und meine Notizen anzeigen.

Sollte ich gerade auch meinen Palm zur Hand haben, könnte dieser auf die Daten der Armbanduhr zugreifen, sie anzeigen und mir ermöglichen sie zu bearbeiten. Um das Display zu betreiben, hätte der Palm eine eigene Stromversorgung, wäre diese erschöpft fiele halt ein Eingabegerät weg.

Am PC könnte ich ebenso auf diese Daten zugreifen, vielleicht sogar die Uhr als Datenträger verwenden, anstatt immer eine 3,5″-Diskette in der Jackentasche dabeizuhaben.

Umsetzung heute

© kallejipp / photocase.com

© kallejipp / photocase.com

Mittlerweile könnte man noch einen Schritt weiter gehen - Smartphones könnten diesem kleinen mobilen Datenspeicher als Brücke zum Handynetz dienen, da ihre größere Akkukapazität und bessere Antennen hierfür deutlich besser geeignet sind als eine Armbanduhr.

Die Verbindung könnte per Bluetooth erfolgen, zusätzlich könnte man mit der Cloud synchronisieren. Die Armbanduhr könnte als Authentifizierungsmerkmal benutzt werden, per NFC als Zahlungsmittel dienen oder als RFID-Transponder beim CarSharing das Fahrzeug öffnen.

Unter diesen Umständen könnte ich mir vorstellen, wieder eine Armbanduhr zu tragen. Dies habe ich mir damals abgewöhnt, weil mir der Palm und später mein Handy als Taschenuhr vollkommen ausgereicht hat. Aber eine sogenannte SmartWatch, die verblödet, sobald das Telefon ausser Reichweite ist, kann ich mir nicht vorstellen.

flattr this!

Meine zwölf besten Photos aus 2013

Januar 9th, 2014

Auch dieses Jahr möchte ich wieder die Zeit nutzen um einen Blick auf das vergangene Jahr zu werfen und eine Auswahl meiner Photos des Jahres zu machen.

flattr this!

Rewrite-Rules für GET-Parameter

Juli 15th, 2013

(c) BastianDietz / photocase.comManchmal steht man vor dem Problem, dass eine Website auf ein neues oder anderes Content Management System (z.B. Joomla! oder WordPress) umgestellt wird, man aber die alten URLs per Redirect auf die neuen umleiten möchte, z.B. um weiterhin per Google gefunden zu werden.

Intuitiv würde man dann Rewrite-Regeln wie die folgenden schreiben:

RewriteRule ^start/$ /start.html [R=301,L]
RewriteRule ^index.php?page=imprint$ /imprint.html [R=301,L]

Die erste Regel funktioniert auch problemlos, die  zweite allerdings nicht, weil die Parameter eines Requests nicht an der Stelle mit ausgewertet werden. Daher muss man anstelle dieser Regel mit einer Bedingung vorweg arbeiten:

RewriteCond %{QUERY_STRING} ^page=imprint$
RewriteRule ^index.php$ /imprint.html? [R=301,L]

flattr this!

HTTP mit Redirect auf Kommandozeile

Juni 8th, 2013

Ich habe vor längerer Zeit mal beschrieben, wie man per Telnet oder Netcat einen HTTP-Request ausführen kann. Noch besser geht dies mit dem Perl-Tool lwp-request. Unter Linux findet man die Befehle GET und HEAD, aufgrund der fehlenden Case-Sensitivität gibt es diese nicht unter MacOS X. Behelfen kann man sich mit diesen beiden Alias-Definitionen:

alias GET='lwp-request -m GET'
alias HEAD='lwp-request -m HEAD'

Dann hat man die Möglichkeit, eine Seite abzurufen:

$ GET http://www.example.com

Will man die Header einer Antwort überprüfen ist das HEAD-Kommando nützlich:

$ HEAD http://www.example.com
200 OK
Connection: close
Date: Sat, 08 Jun 2013 11:19:20 GMT
Accept-Ranges: bytes
ETag: "780602-4f6-4db31b2978ec0"
Server: ECS (iad/1984)
Content-Length: 1270
Content-Type: text/html; charset=UTF-8
Last-Modified: Thu, 25 Apr 2013 16:13:23 GMT
Client-Date: Sat, 08 Jun 2013 11:19:21 GMT
Client-Peer: 93.184.216.119:80
Client-Response-Num: 1
X-Cache: HIT

Will man allerdings auch sehen, ob eine Weiterleitung korrekt funktioniert und ob es ein permanenter Redirect ist, benötigt man den Parameter -S:

$ HEAD -S http://www.example.com
HEAD http://www.example.com
302 Found
HEAD http://example.iana.org
200 OK
Connection: close
Date: Sat, 08 Jun 2013 11:20:09 GMT
Accept-Ranges: bytes
ETag: "780602-4f6-4db31b2978ec0"
Server: ECS (iad/1984)
Content-Length: 1270
Content-Type: text/html; charset=UTF-8
Last-Modified: Thu, 25 Apr 2013 16:13:23 GMT
Client-Date: Sat, 08 Jun 2013 11:20:10 GMT
Client-Peer: 93.184.216.119:80
Client-Response-Num: 1
X-Cache: HIT

flattr this!

DSLR Vergleich Crop-Kamera mit Vollformat

April 4th, 2013

Bei digitalen Spiegelreflexkameras (DSLR) gibt es Unterschiede in der Größe des Bildsensors. Ausgangspunkt ist das “normale” Kleinbild-Negativ mit 24x36mm, dies nennt man auch Vollformat. Günstigere Kameras haben hingegen einen kleineren Crop-Sensor, angelehnt an das APS-Format. Neben Qualitativen Unterschieden bezüglich Rauschempfindlichkeit bringt der größere Bildsensor mit sich, dass auch die Objektive einen größeren Bereich abdecken müssen.

Ich möchte hier ein paar Beispielphotos zeigen, die ich mit einer Kamera mit Crop-Faktor 1.6x (Canon EOS 300D) und einer mit Vollformat-Sensor (Canon EOS 5D MarkIII) gemacht habe. Die verwendeten Objektive sind das Tamron SP AF 10-24mm sowie das Canon 17-40mm, da man besonders bei dem Tamron-Objektiv sehen kann, was es bedeutet wenn ein Objektiv eben nicht für Vollformat geeignet ist.

Vorab eine Warnung: Objektive für Vollformat-Kameras haben ein EF-Bajonett. Die meisten Objektive, die für Crop-Kameras gedacht sind, haben ein EF-S Bajonett. Hierbei darf ein Teil des Objektivs weiter in die Kamera hineinragen, als bei dem EF-Bajonett. Wer also ein EF-S-Objektiv an einer Vollformat-Kamera anbringt, läuft Gefahr dass der Spiegel beim Auslösen an das Objektiv anschlägt und beschädigt wird. Das Tamron 10-24mm Objektiv ist zwar nicht für Vollformat-Sensoren ausgelegt, ist aber EF-Konform, und kann damit gefahrlos an einer Vollformat-Kamera benutzt werden. Weitere Infos hierzu gibt es bei Wikipedia.

Nun zu den Bildern. Da es hier ausschließlich um die Abbildungsverhältnisse geht habe ich kein besonderes Motiv ausgewählt, sondern einfach vom Balkon photographiert. Auch die Belichtung ist nicht bei allen Photos optimal.

Tamron 10-24mm an Canon EOS 300D

crop-tamron-24mm

crop-tamron-10mm

An der Crop-Kamera macht das Tamron 10-24mm Objektiv gute Bilder. Die scheinbare Brennweite aufgrund des Crop-Faktors beträgt ca. 16-38mm.

Tamron 10-24mm an Canon EOS 5D MarkIII

full-tamron-24mm

full-tamron-10mm

full-tamron-10mm-hood

An der Vollformat-Kamera sieht man erstmal bei 24mm (linkes Bild) den größeren Bildausschnitt. Wenn man nun auf 10mm herauszoomt, dann erkennt man den Schwachpunkt dieses Objektivs an einer Vollformat-Kamera. In den Ecken erscheint eine Vignettierung, die ab ca. 15mm beginnt. Es entsteht ein Eindruck ähnlich eines Fisheye-Objektivs. Wenn man nun noch die Streulichtblende aufsetzt wird klar, dass das Objektiv nicht für diesen Einsatz gedacht ist.

Canon 17-40mm an Canon EOS 5D MarkIII

full-canon-40mm

full-canon-17mm

Anders sieht die Sache aus wenn man ein Objektiv verwendet, das für Vollformat konzipiert ist. Hier ist der gesamte Zoom-Bereich ohne sichtbare Vignettierung nutzbar. Der Bildausschnitt entspricht ziemlich genau dem des 10-24mm Objektivs an der Crop-Kamera.

Canon 17-40mm an Canon EOS 300D

crop-canon-40mm

crop-canon-17mm

Der Vollständigkeit halber hier noch die Bilder vom Canon 17-40mm Objektiv an der Crop-Kamera. Durch den kleineren Bildsensor ergibt sich eine rechnerische Brennweite von ca. 27-64mm.

flattr this!

Meine zwölf besten Photos aus 2012

Januar 29th, 2013

Ursprünglich sollte dieser Beitrag wie im letzten Jahr zehn Photos enthalten – ich konnte mich aber nicht entscheiden und habe deshalb zwölf ausgewählt.

flattr this!

MySQL Connect Errors provozieren

Januar 26th, 2013

Manchmal meldet ein MySQL-Datenbankserver den Fehler

ERROR 1129 (HY000): Host '192.0.1.47' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

Das ist eine klare Fehlermeldung, mit einer einfachen Handlungsanweisung. Kürzlich wollte ich aber genau diesen Fehler auf einem Server absichtlich provozieren. Hierzu muss man einfach eine TCP-Verbindung zum Datenbankserver öffnen, und darüber ungültige Daten senden. In einer Schleife ausgeführt ist dies schnell erledigt:

for i in $(seq 1 200) ; do nc 192.0.1.47 3306 <<< "foobar"; done

flattr this!

DNS-Einträge automatisch erzeugen mit BIND

Januar 10th, 2013

Da grundsätzlich jede statisch oder dynamisch vergebene IP-Adresse eine funktionierende DNS-Auflösung haben sollte, bietet sich neben einem Skript, das solche Einträge erzeugen könnte, die Makro-Funktion des BIND Nameservers an. Hiermit kann man automatisch passende Einträge erzeugen lassen:

Forward-Zone example.com:

$GENERATE 42-47 static-192-0-2-$ A 192.0.2.$

Reverse-Zone 2.0.192.in-addr.arpa:

$GENERATE 42-47 $ PTR static-192-0-2-$.example.com.

flattr this!

Speicherverbrauch per Linux-Kommandozeile

April 22nd, 2012

Ein kurzer Tipp zwischendurch: Wenn eine Partition unter Linux voll ist und man herausfinden möchte, wo der Speicherplatz geblieben ist, hilft diese Kommandozeile. Sie gibt für alle Unterverzeichnisse des aktuellen Verzeichnisses, wie viel Platz sie belegen — aufsteigend sortiert:
du -s * .??* | sort -n | cut -f 2 | xargs du -sh

flattr this!