Gabi und Sascha
Tags - Kategorien : Alle | Berlin | Bücher | Java | Linkhalde | Weichware | Verfassung
«Niemand hat die Absicht eine Mauer zu errichten»

YAAM, ein Strandclub nahe der Eastside-Gallery. Der Club gibt sich weltoffen und alternativ – Freie Republik YAAMaika. Auf Demos immer mal mit eignem Wagen dabei. Sicherlich auch als es um ein freies Spreeufer ging. Zumindest suggeriert dies das Schild im Bild ganz Links-Mitte (klicken für grosse Ansicht). Soweit die revolutionäre Theorie. Der ganz praktische Zaun sieht etwas anders aus. Freies Spreeufer? Nur gegen Eintritt oder Verzehr.

Selbstschussanlagen konnte ich hingegen keine entdecken.

[MIT ZAUN GESICHERTES GELÄNDE. DER ZAUN VERHINDERT, DASS DAS SPREEUFER AUF DEM YAAM GELÄNDE GENUTZT WERDEN KANN]
YAAM am östlichen Spreeufer

 

Der Schiffsverkehr auf der Spree ist etwas erlahmt. Die Ausflugssaison ist vorbei. Lastkähne fahren wieder vermehrt und auch die Wasserschutzpolizei lässt sich wieder öfter blicken.

Ein paar Ausflugsschiffe fahren dennoch. Und einige sehen seit dem diesjährigen Festival of Lights aus wie schwimmende Bordelle. Knallbunt in Neonfarben beleuchtet. Schade, dass es für die Handykamera zu dunkel ist.

In Beispielen für Datenübertragungen findet sich häufig eine Serialisierung der Daten in eine XML Applikation. Dieser Eintrag soll zeigen, dass XML nicht immer die erste Wahl sein muss. Es soll das Bewusstsein erweitern nicht immer das Erstbeste zu verwenden, was einem in den Sinn kommt.

Für das Sportics Realtime Telemetry API wurde bewusst auf XML verzichtet. Der Grund: Realtime Telemetry Clients arbeiten auf reduzierter Hardware wie z.B. Mobiltelefonen und haben eine instabile Funkanbindung des Netzwerkes (z.B. Sportics J2ME Applikation). In solchen Umgebungen ist XML nicht die erste Wahl. Die Daten werden nicht kompakt genug repräsentiert.

Ein Realtime Telemetry Datensatz besteht aus einer Menge von Messwerten zu einem bestimmten Zeitpunkt. Ein Messwert hat immer auch eine beschreibende Kennung. Mehrere solcher Datensätze werden zu einem Snap zusammengeführt. Ein Realtime Telemetry Client schickt einen solchen Snap z.B. alle 2 Minuten an den Realtime Telemetry Server.

In XML kann ein solcher Datensatz wie folgt dargestellt werden:


  <data>
      <measurements>
          <measurement type='longitude'>12.5675256</measurement>
          <measurement type='time'>123456789</measurement>
          <measurement type='heartrate'>78</measurement>
      </measurements>
      <measurements>
          <measurement type='longitude'>12.5675456</measurement>
          <measurement type='time'>123457813</measurement>
          <measurement type='heartrate'>79</measurement>
      </measurements>
      ...
  </data>

Es fällt auf, dass ein solches Format sehr viel redundanten Overhead produziert. Dieser kann durch kürzere Namen reduziert werden. Dabei geht allerdings die sprachliche Wiedererkennung verloren.


  <data>
      <ms>
          <m t='lon'>12.5675256</m>
          <m t='tme'>123456789</m>
          <m t='hrt'>78</m>
      </ms>
      <ms>
          <m t='lon'>12.5675456</m>
          <m t='tme'>123457813</m>
          <m t='hrt'>79</m>
      </ms>
      ...
  </data>

Kompakter, aber auch schwieriger zu lesen. Es ist im Übrigen ein Irrglaube, dass das JSON Format kompakter ist. In der obigen Notation ist es grösser.

Eine weitere Möglichkeit der Reduktion ist auf allgemeine Namen für XML Elemente zu verzichten. An deren Stelle wird der Wert des t-Attributes verwendet:


  <data>
      <ms>
          <lon>12.5675256</lon>
          <tme>123456789</tme>
          <hrt>78</hrt>
      </ms>
      ...
  </data>

Ein ungewöhnliche Schreibweise, aber durchaus machbar. Bei diesem Aufbau wird ein entsprechendes JSON Dokument im Übrigen kleiner als sein XML Pendant. Hierzu folgt weiter unten eine Grafik aus realen Messwerten.

Es geht noch kompakter. Bei Sportics wurde bei der Realtime Telemetry API bewusst gegen SOAP Webservices entscheiden. Der Grund ist einfach: nicht alle Zielgeräte verfügen über SOAP Webservices Support. SOAP Webservices von Hand nachzuprogrammieren ist keine Kleinigkeit. Stattdessen haben wir uns für ein REST API entschieden. Dies vereinfachte die Kommunikationsschnittstelle und auch den Aufwand für die Implementierung auf Clientseite. Zwar wird auch in der REST Literatur viel mit JSON und XML gearbeitet, aber dies muss nicht sein.

Bei den Messwerten setzen wir statt dessen auf das CSV-Format nach RFC 4180. Im CSV-Format wird der oben beschriebene Datensatz wie folgt notiert:


    tme,lon,hrt
    123456789,12.5675256,78
    123457813,12.5675456,79

Noch kompakter ist kaum möglich. Das API schreibt noch einige Dinge vor, beispielsweise muss ein Header vorhanden sein und jede Zeile nach der Headerzeile muss so viele Spalten haben wie die Headerzeile. Ansonsten verwirft der Server die Daten und liefert eine Fehlermeldung.

Die abschliessende Frage lautet: Um wieviel kleiner ist die CSV-Notation?

Aus den realen Daten von einigen tausend Datensätzen lässt sich folgendes Bild gegenüber der CSV Notation ermitteln:

  • die XML Notation ist um ca. den Faktor 2 grösser
  • die JSON Notation ist um den Faktor 1,5 grösser

In absoluten Zahlen:

CSV XML JSON
2.791.662 5.831.791 4.361.462

Ein Bild beschreibt mehr als 500 Worte:

 

Dieser Inhalt wurde aus einer weiteren Quelle zusammengefügt. Mehr...

GPS Track Vergleich

Ich habe heute den GPS Track zwischen unserem Kiez und meiner Arbeitsstätte aufgezeichnet. Einmal mit dem HTC Hero und einmal mit dem Nokia N85. Das Fortbewegungsmittel war ein Fahrrad. Im Nokia hat der bewährte SportsTracker in Version 2.06 die Daten aufgenommen. Im Hero das Programm AndAndo in Version 1.22.

Das Ergebnis ist erschreckend. Die Daten des Nokia N85 sind einfach nur Mist. Im Bild unten sind die Daten des Nokias blau, die des HTC Heros gelb (klicken zum Vergrössern).

Am Ende hat das HTC Hero eine zurückgelegte Strecke von 4,29 km ermittelt. Das Nokia N85 eine zürückgelegte Strecke von 6,46 km.

[GPX DATEN DES ARBEITSWEGES IN JOSM VISUALISIERT]

GPX Daten: Nokia N85, HTC Hero

Dies ist der 1939 Eintrag in diesem Blog; in genau 5 Jahren. Tendenz der Frequenz: absteigend. Es ist so wenig Zeit und es gibt so viele andere Dinge. Wir sind jetzt eine richtige Familie und die Kleine lässt mir nicht viel Zeit zu schreiben. Ich programmiere wieder mehr und die Szene hat sich auch stark verändert. Die Aufbruchstimmung der vergangenen Jahre hat ich verflüchtigt. Blogs sind dezentral und Webtagebücher finden heute eher in Facebook, Twitter und den xyzVZs statt. Dezentralität ist zwar das A und O einer freien Welt, nur glaube ich, viele Menschen wollen gar nicht so frei sein. Freiheit und Dezentralität sind anstrengend.

Es gibt viele Dinge, die mich immer noch bewegen, aufregen. Und ich weiss, ich müsste viel mehr darüber schreiben. Um Teil einer Öffentlichkeit zu sein. Wenn geschwiegen wird, okkupiert Roland Koch dich gleich als schweigende Mehrheit, verrät und verkauft dich. Ich habe die Möglichkeit selbst zu schreiben. Habe die Presse befreit aus den Händen einiger weniger. Nutze es nur zu wenig. Wird sich in den nächsten 5 Jahren aber auch wieder ändern. Versprochen.

Habe jetzt auch gespendet.

In der EU ist es ja nicht so, dass Datenschutz keinen Stellenwert hat. Da scheint sich eine Richtlinie anzubahnen, dass jedes Cookie vom Benutzer explizit erlaubt werden muss. Aus Gründen des Datenschutzes. Gleichzeitig werden sämtliche Daten über Kontobewegungen in die USA verschachert. Terrorjagd heisst es dort. Oder, kurz übersetzt, du und ich, wir sind für die EU Terroristen.

Ich bin gespannt wie die neue Justizministerin dem interessierten Wahlvolk die Entscheidung dann verkauft.

Zum Freiheitsfest, 9. November, 20 Jahre Mauerfall. Gefühlt sichern mehr Polizisten das Freiheitsfest als es jemals Grenzschützer in der DDR gab.

Nächste Saison Pauli gegen Hertha? Wird knapp.

Meister zum Stift: «Ich muss mal wieder Insolvenz anmelden. Komm mal mit, damit du das auch lernst.»

Trotzdem, Kopf hoch im neunten Stock, ihr wisst ja wie's geht :-)

  • Cost cutter - süchtig machender Tetris Clone.
    via Petronella
  • Weiss gar nicht wieso sich die Sozialverbände und -anbieter so über die geplante Reduzierung der Wehrdienstzeit aufregen. Zivis sollen keine Arbeitsplätze wegnehmen dürfen, also nur Jobs machen, auf die verzichtet werden kann. Wie schlimm steht es eigentlich ums Pflegesystem?
  • Android Icons für die Entwicklung unter Creative Commons Attribution Share Alike Lizenz.
  • Some Java Concurrency Tips