In sozialen Netzwerken kann man seinen aktuellen Aufenthaltsort angeben. Ich bin kein Fan dieser Funktion, jedoch habe ich einige Kontakte die diese Funktion nutzen. Einige sogar relaitv regelmäßig. Dies ermöglicht es natürlich ziemlich genaue Bewegungsprofile zu erstellen. Nachdem Twitter diese Funktion damals einführte habe ich mir die Mühe gemacht und Skripte zur Ermittlung und Anzeige dieser Daten geschrieben.
Ein Shellskript (bash) liest die letzten Aufenthaltsorte aus, bereitet sie auf und gibt sie aus. Dafür muss die Person deren Aufenthaltsorte ausgelesen werden sollen jedoch über ein öffentliches Profil verfügen. Neben dem Nickname kann auch die Seitennummer angegeben werden von der diese Informationen geholt werden sollen. Standard ist Seite 1, also die Seite mit den neuesten Tweets.
Zusätzlich habe ich eine kleine HTML-Seite (Show Geolocations) zur visuellen Darstellung der Aufenthaltsorte entwickelt. Durch einfaches kopieren der ausgegebenen Koordinaten in das Textfeld und einen Klick auf "Show locations" werden die Aufenthaltsorte angezeigt und auf zwei Arten miteinander verbunden. Zum Einen über die Verbindung der Luftlinie (direkte Gerade zwischen den Punkten) und zum Anderen durch die Routenfunktion von Google Maps.
Um das Anzeige-Skript auch ohne das Shellskript nutzen zu können noch ein kleiner Hinweis zur Eingabe der Koordinaten in das Textfeld. Pro Zeile darf nur eine Koordinate, bestehend aus Longitude und Latitude, stehen. Außerdem müssen diese beiden Werte durch ein Leerzeichen getrennt sein. Beispiel:
53.56795783 9.93294082
53.56795783 9.95257823
Shell- und Anzeigeskript können hier heruntergeladen werden: Geolocations.zip
Monday, April 25. 2011
Entwickler hassen Datumsangaben
Der Geek and Poke Comic Coders hate dates hat gar nicht mal so unrecht. Bei der Verarbeitung von Datumsangaben kann es insbesondere bei der Reihenfolge von Tag, Monat und Jahr dazu kommen, dass diese nicht ersichtlich ist.
Für Datumsformate gibt es drei mögliche Reihenfolgen:
Big-Endian: Jahr, Monat, Tag - 11/02/01
Middle-Endian: Monat, Tag, Jahr - 02/01/11
Little-Endian: Tag, Monat, Jahr - 01/02/11
Nimmt man eines der drei Beispiele, so ist nicht ersichtlich in welcher Reihenfolge die einzelnen Werte zu lesen sind. Ist das Jahr hingegen vierstellig angegeben, kann man immerhin Big-Endian erkennen oder ausschließen. Übrig bleiben dann aber immer noch Middle- und Little-Endian. So ist für das Datum 01/02/2011 nach deutschem Datumsformat (Tag, Monat, Jahr) nicht erkennbar ob es sich um den 01.02.2011 oder den 02.01.2011 handelt.
So bleiben einem folgende Möglichkeiten:
- Jemanden finden, der die Reihenfolge kennt.
- Auf bessere Testwerte warten (z.B. 23.02.2011).
- Raten und Bugfix rausgeben, wenn es falsch war. (Ganz schlechte Idee!)
Doch zum Glück leben wir im Zeitalter der Standards und so gibt es auch für dieses Problem einen Standard. Der ISO-Standard 8601 beschreibt, dass Datums- und Zeitangaben in Big-Endian-Notation vorzunehmen sind. Für Datumsangaben bedeutet dies also YYYY-MM-DD und für Zeitangaben hh:mm:ss. Für Zeitangaben gilt zudem das 24-Stunden System.
Standards können das Leben so einfach machen und auch Datumsangaben muss man dann nicht mehr hassen.
Für Datumsformate gibt es drei mögliche Reihenfolgen:
Big-Endian: Jahr, Monat, Tag - 11/02/01
Middle-Endian: Monat, Tag, Jahr - 02/01/11
Little-Endian: Tag, Monat, Jahr - 01/02/11
Nimmt man eines der drei Beispiele, so ist nicht ersichtlich in welcher Reihenfolge die einzelnen Werte zu lesen sind. Ist das Jahr hingegen vierstellig angegeben, kann man immerhin Big-Endian erkennen oder ausschließen. Übrig bleiben dann aber immer noch Middle- und Little-Endian. So ist für das Datum 01/02/2011 nach deutschem Datumsformat (Tag, Monat, Jahr) nicht erkennbar ob es sich um den 01.02.2011 oder den 02.01.2011 handelt.
So bleiben einem folgende Möglichkeiten:
- Jemanden finden, der die Reihenfolge kennt.
- Auf bessere Testwerte warten (z.B. 23.02.2011).
- Raten und Bugfix rausgeben, wenn es falsch war. (Ganz schlechte Idee!)
Doch zum Glück leben wir im Zeitalter der Standards und so gibt es auch für dieses Problem einen Standard. Der ISO-Standard 8601 beschreibt, dass Datums- und Zeitangaben in Big-Endian-Notation vorzunehmen sind. Für Datumsangaben bedeutet dies also YYYY-MM-DD und für Zeitangaben hh:mm:ss. Für Zeitangaben gilt zudem das 24-Stunden System.
Standards können das Leben so einfach machen und auch Datumsangaben muss man dann nicht mehr hassen.
Sunday, February 20. 2011
Ein technischer Blog
Wie der Titel es vermuten lässt, wird es hier in erster Linie um technische Themen gehen. Dabei werden Programmierung und IT-Sicherheit im Vordergrund stehen. Über einen zeitlichen Rhythmus und/oder Wochentag habe ich mir noch keine Gedanken gemacht, weshalb neue Posts vorerst wohl in unregelmäßigen Abständen kommen werden. Auf jeden Fall werden neue Posts automatisch auch auf Twitter verlinkt.
(Page 1 of 1, totaling 3 entries)

