Archive for June, 2008

Google Maps für Symbian

Thursday, June 26th, 2008

In Vorfreude auf die herannahende mobile Internet-Flatrate habe ich mir schon mal Google Maps für Symbian auf mein Nokia E70 installiert. Warum habe ich das nur nicht schon früher getan? Auch ohne GPS kennt Maps meinen ungefähren Standort, besser gesagt den Standort des Mobilfunkmastens, mit dem mein Mobiltelefon gerade Kontakt hat. Meine Umgebung wird übersichtlich dargestellt; neben dem auch von der Web-Version bekannten Stadtplan mit seinen verschiedenen Zoom-Stufen gibt es auch die Satellitenansicht. Endlich lohnt sich das hochaufgelöste Display des E70 mal so richtig!

Bei der Verwaltung von Placemarks zeigen sich dann allerdings Schwächen: Es gibt nämlich keine. Google verweist frech auf die von Nokia vorinstallierte Landmarks-Anwendung, die jedoch ohne GPS vollkommen unbrauchbar ist. Schade, daß man nicht einfach Adressen aus dem Telefonbuch übernehmen kann. Naja, für das ein- oder andere Pathfinding kann ich auch mal eine Adresse von Hand eingeben - dank qwertz-Tastatur. Immerhin merkt sich das Programm die letzten eingegebenen Orte.

Google holt wirklich einiges aus dem E70 raus, was man angesichts der teilweise quälend langsamen Nokia-Software gar nicht für möglich gehalten hätte: Maps ist flüssig zu bedienen und die Karten-Kacheln werden zumindest via WLAN flüssig nachgeladen.

Leider gibt es noch keine Ansätze für Meshups (z.B. geo-getaggte Photos) - ob das in der mobilen Welt Android vorbehalten bleibt?

Jetzt wäre für mich erstmal ein Hardware-Update angesagt: Ein Smartphone mit GPS und Touchscreen stünden Google Maps gut zu Gesicht. Doch auch bis dahin wird Google Maps für’s erste mein Begleiter sein.

SVG-Icons mit Maven2

Monday, June 9th, 2008

Schon länger hatte ich vor, die Spielfiguren auf meiner Brettspielseite 3moves.net neu zu gestalten. Zwar gefielen mir die alten Symbole sehr gut, jedoch lagen sie mir nur als viel zu kleine Bitmaps vor und obendrein war mir die Herkunft unbekannt, was irgendwann auf urheberrechtliche Probleme stoßen würde. Meine Wahl fiel auf das bei Wikipedia verwendete Figurenset. Diese gibt es als Vektorgrafiken (.svg) und sind frei verwendbar (GNU Free Documentation License).

Doch zum technischen Teil: Die SVG-Unterstützung der Browser ist immer noch mager. Der Platzhirsch Internet Explorer kann selbst in der neuesten Version 8 (Beta 1) noch gar nichts mit dem Format anfangen. Firefox (Gecko) ist da schon ein großes Stück weiter, und kann SVG entweder direkt in ein XHTML-Dokument einbinden, oder aber in Gestalt des <object/>-Tags als externe Resource nachladen - wie man es vom <img/>-Tag gewohnt ist. Safari und Opera habe ich nicht getestet.

Daher bin ich erstmal den unproblematischen Weg gegangen, und wandle die Vektor-Graphiken server-seitig in Bitmap-Graphiken um. Hierfür bemühe ich Apache Batik, für das es sogar ein Maven2-Plugin gibt:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>batik-maven-plugin</artifactId>
  <executions>
    <execution>
      <phase>generate-resources</phase>
      <configuration>
        <srcDir>web/chess</srcDir>
        <destDir>${project.build.directory}/images/chess</destDir>
        <width>46</width>
        <height>46</height>
      </configuration>
      <goals>
        <goal>rasterize</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Dieser Auszug aus meinem pom.xml sorgt dafür, daß alle SVG-Schachfiguren in Bitmap-Figuren der Größe 46×46 Pixel umgewandelt werden. Sie landen erstmal in einem speziellen Zielverzeichnis; die folgenden Zeilen sorgen dann dafür, daß dieses Verzeichnis auch der Java-Web-Applikation hinzugefügt wird:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <configuration>
    <webResources>
      <resource>
        <directory>${project.build.directory}/images</directory>
      </resource>
    </webResources>
  </configuration>
</plugin>

Und das ist dann der Lohn der Mühen:
schwarze Schachfigurweiße Schachfigur

Sieht doch nicht schlecht aus, oder?

SVG-Dateien sind Textdateien, d.h. man kann zum Beispiel in Quelltextverwaltungen die Änderungen verfolgen. Oder man fügt sie modular zusammen, wie in folgendem Beispiel geschehen:

Damefigur

Man kann Grafiken quasi mathematisch beschreiben, was es mir als Programmierer einfacher macht, damit umzugehen.

Der Trick mit den Sammelgewinnen

Saturday, June 7th, 2008

Wie jeden Sommer veranstaltet McDonalds wieder ein Gewinnspiel. Das nicht nachvollziehbare Monopoly-Thema ist diesmal der EM gewichen, das Prinzip ist jedoch das selbe: Auf Cola oder Fritten befinden sich Rubbelfelder, die sogenannte Sofort- oder Sammelgewinne verbergen.

Sofortgewinne beschränken sich auf Werbegeschenke, daher betrachte ich sie nicht weiter. Ich hab’s auf die Sammelgewinne abgesehen. Um einen der höherpreisigen Gewinne zu erzielen, muß man nämlich zwei zueinander passende freigerubbelte Felder finden, also z.B. Teil 1 und Teil 2 des TFT-Fernsehers. Dieses Sammel-Konzept gibt es schon länger, ich finde es aber immer noch genial. Für den Gewinnspiel-Veranstalter hat das unglaubliche Vorteile:

  1. Verzicht auf Nieten. Man kann alle herkömmlichen Lose mit der Aufschrift “leider kein Gewinn” einfach in “Hauptgewinn 1. Teil” umbenennen, ohne daß sich dadurch der Erwartungswert des Gewinnspiels ändert. Der Kunde hat dadurch ein viel besseres Gefühl als bei einer Niete, denn er hat ja schon die erste Hälfte für den Hauptgewinn gewonnen. Mehr noch, wahrscheinlich wird er angespornt sein, durch den Kauf weiterer Lose auch noch den zweiten Teil zu bekommen, obwohl er eigentlich nur eine Niete in der Hand hält.
  2. Gewinne, die nicht abgeholt werden. Gehen wir mal davon aus, daß Teil 1 die verkappte Niete darstellt, und Teil 2 eigentlich der Gewinn, der entsprechend selten vorkommt. Die Wahrscheinlichkeit ist nicht schlecht, daß derjenige, der den wertvollen zweiten Teil freirubbelt, diesen nicht ernstnimmt und wegschmeißt, genau wie alle ersten Teile einzeln im Papierkorb landen. Ergo: McDonalds muß ein TFT weniger auszahlen.
  3. Werbung im Portemonnaie. Ähnlich wie die ubiquitären Rabattgutscheine wirkt jede aufgehobene Rubbelkarte als ständige Erinnerung: Geh doch mal wieder zu McDonalds!

Als ich Kind war, gab es auf unserem lokalen Volksfest einmal eine Losbude mit A-, B- und C-Losen (und Jokern, die jedes Los ersetzen können). Nur, wer alle drei Lose vorweisen konnte, konnte einen Hauptgewinnen sein eigen nennen. Einzelne Lose berechtigten nur für einen wertlosen Preis (ich erinnere mich noch an Aufkleber, Kugelschreiber, usw.). Ich habe mein ganzes Taschengeld in diese Losbude versenkt, aber natürlich fehlte immer genau ein Los. Als das Volksfest abgebaut wurde, fragte ich den Besitzer, wieviele dieser seltenen Lose und Joker denn nun enthalten seien. Seine Antwort: 2 seltene, 3 Joker. Das war mein letztes Los, was ich jemals gekauft habe.