Via OnSwipe wieder zu Google-Analytics

Ich habe mir eben mal das WordPress Plugin Onswipe angeschaut. Damit ist es möglich, ein WordPress Blog auf dem iPad fast wie eine native App zu bedienen. Man navigiert per Wisch-Geste von einem Artikel zum nächsten. Das sieht alles erstmal recht hübsch aus.

Allerdings stieß ich auf etwas seltsames: Blättert man von Artikel zu Artikel, wird vom Webserver bis auf die Grafiken, die in den Artikeln eingebettet sein können, nichts mehr abgerufen. Ich war nämlich auf der Suche nach einer passenden Stelle, an der ich meinen Piwik-Code einbetten kann. Da ich ad hoc nicht fündig wurde, schaute ich mir mal an, was da so am Webserver ankommt und was vom iPad abgerufen wird. Letzteres machte ich unter Verwendung des mitmproxy.

Statt auf dem Webserver wurde ich dann im mitmproxy-Protokoll fündig: Da tauchten plötzlich Abrufe bei Google-Analytics auf. Diese hatte ich aber auf meiner Seite schon vor einiger Zeit deaktiviert. In der Konfigurations-Seite des onswipe-plugins hatte ich auch keine UA-id von Google-Analytics hinterlegt.

Also woher kommt diese Anfrage?

Zu Beginn eines Requests lädt der Browser die folgende Javascript Bibliothek:

http://cdn.onswipe.com/reader/reader-1.1.0.min.js

Sucht man darin nach dem Google-Analytics Account UA-24076211-1, den man vorher gefunden hat, so wird man fündig.

a.prototype.initAnalytics = function () {
            console.log("init GA"), $("head").append("ttt<script type="text/javascript">ttt  var _gaq = _gaq || [];ttt  _gaq.push(['_setAccount', 'UA-24076211-1']);ttt  _gaq.push(['_setDomainName', '" + window.location.hostname + "']);ttt  _gaq.push(['_setAllowLinker', true]);tttttt  " + (this.state.analytics.googleAnalyticsID ? "ttt  _gaq.push(['b._setAccount', '" + this.state.analytics.googleAnalyticsID + "']);ttt  _gaq.push(['b._setDomainName', '" + window.location.hostname + "']);ttt  _gaq.push(['b._setAllowLinker', true]);ttt  " : "") + "ttt  " + (this.state.analytics.googleAnalyticsInternalID ? "ttt  _gaq.push(['c._setAccount', '" + this.state.analytics.googleAnalyticsInternalID + "']);ttt  _gaq.push(['c._setDomainName', '" + window.location.hostname + "']);ttt  _gaq.push(['c._setAllowLinker', true]);ttt  " : "") + "ttt  (function() {ttt    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;ttt    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';ttt    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);ttt  })();ttt</script>ttt");
            if (this.state.analytics.omnitureAnalyticsJS) return console.log("init Omniture " + this.state.publisher.publisher_username), $("body").append(this.state.analytics.omnitureAnalyticsJS)
        }

Wie man sieht, trackt Onswipe.com via Google-Analytics jedes Blog mit, das dieses Plugin einsetzt. Ich habe auf der Homepage des Plugins keinerlei Hinweise dazu gefunden.

Navigon Select für das iPhone lagert die Karten aus

Ich habe eben durch Zufall entdeckt, dass in der neuen Version von Navigon Select für das iPhone die Karten nun aus der eigentlichen App ausgelagert wurden. Das bedeutet, dass die App selbst nun deutlich kleiner geworden ist. Die Karten muss man nun beim ersten Starten herunterladen. Dies funktioniert aber nur, wenn man eine Internetverbindung via WLAN hat.

Das kann natürlich eine böse Überraschung geben, wenn man — so wie ich — diese App nur sporadisch nutzt und dann plötzlich bei der ersten Benutzung der neuen Version feststellt, dass man gar keine Kartendaten hat …

Wird Mac OS X Lion das Vista von Apple?

Überraschend hat heute Apple die Entwicklerversion des Nachfolgers von Mac OS X 10.7 Lion vorgestellt. Mac OS X 10.8 soll demnach Mountain Lion heißen und einige aus dem iOS bekannten Features auf den Mac bringen.

Interessant finde ich aber die veröffentlichten Statistiken zur Verbreitung von Lion. So laufen noch 50% aller Mac OS X Versionen unter dessen Vorgängerversion Snow Leopard (10.6) und nur 30% unter der aktuellen Version Lion.

Da kommt natürlich schnell der Gedanke auf, ob damit Lion nicht zum Vista für Apple wird. Ganz so düster wie in der Windows Welt mit Vista sehen die Zahlen natürlich nicht aus. Alles deutet aber auf jeden Fall daraufhin, dass man evtl. Lion überspringen kann — wenn denn Apple das vorsieht. Wenn man Pech hat, wird man erst auf Lion gehen müssen, sofern das dann noch zur Verfügung steht. Lassen wir uns überraschen.

geklautes Adressbuch bei Twitter löschen

Seit einigen Tagen überschlagen sich die Ereignisse rund um das Klauen der Adressbuchdaten diverser Apps auf dem iPhone und dem iPad. War es anfangs die App von Path, so folgten schnell die Apps von Twitter, Foursquare und Angry Birds.

Bei Twitter lassen sich angeblich die Adressbuchdaten wieder löschen, indem man auf diese Seite bei Twitter geht. Dies geht interessanterweise nicht mit dem Mobil-Gerät. Sitzt man dann endlich an einem passenden Endgerät, gibt’s dort leider nur eine Fehlermeldung.

Fehlermeldung beim Löschen der geklauten Adressbuch-Daten

 

 

 

Woran liegt’s? Müssen die Daten erst bei der NSA abgeholt werden? Oder war’s das Department for Homeland Security? Oder sind’s die Chinesen?

Naja, zu erwarten war das ganze ja schon. Das ist auch kein neues Problem. Wer weiß, was alles irgendwelche Freeware auf dem PC gemacht hat….

Gran Turismo 5 Updates eingespielt

Ich habe nun innerhalb von über 90 Minuten sämtliche Updates eingespielt, die es für Gran Turismo 5 in letzter Zeit gab, 9 an der Zahl.

Ich hatte die Hoffnung, dass damit die letzte Prüfung der Jeff Gordon Nascar Schule wieder schaffbar wird. Doch leider habe ich mich zu früh gefreut. Die zweite Prüfung im Advanced-Teil habe ich zwar nun in Bronze geschafft. Beim dritten Teil sehe ich aber einfach kein Land.

Die aktive Lenkhilfe habe ich nun auf stark gestellt, weil ich das Gefühl habe, dass man damit besser im Windschatten bleiben kann. Ich schaffe es aber einfach nicht, den Anschluss zu halten, um überhaupt eine Chance zu haben, mehr als einen Wagen zu überholen.

Wenn denn jemand mit der aktuellen Version V2.04 von Gran Turismo 5 diese Aufgabe ohne Lenkrad geschafft hat, soll doch ruhig mal seine Tipps hier preisgeben.

iOS Anwendungen mit dem mitmproxy debuggen

Folgendes Problem: eine externe Agentur entwickelt im Auftrag eine iOS-App, um darüber via API auf die eigene Website zuzugreifen. (Der Klassiker — der 250. RSS Reader, aber immer wieder gern genommen.)

Es kommt, wie es kommen muss: Irgendetwas funktioniert nicht, wie man sich das gedacht hat. Die Agentur sagt, der Webserver liefert das Falsche, der Webmaster schaut ins Logfile und sagt, da kommt erst gar nicht der richtige Request an. Was tun?

Erster Schritt: ein Hub und Wireshark

Bis vor kurzem habe ich dann immer zu einem betagten Hub gegriffen, diesen zwischen WLAN-Router und Internet-Gateway gestellt. An diesen habe ich dann an einen weiteren Port einen „echten“ Rechner angeschlossen und via Wireshark den Netzwerkverkehr mitgeschnitten und analysiert.

Dabei entstehen ein paar Probleme:

  1. Wer hat immer einen Hub griffbereit? Solche prähistorischen Geräte hüte ich zwar wie meinen Augapfel (man weiß nie, wann man sie mal wieder gebrauchen kann), aber in der Regel hat man doch keines zur Hand.
  2. Die nächste Stufe wäre dann ein managebarer Switch, dem man einen Monitoring Port konfigurieren kann.
  3. Es ist nicht jedermanns Sache, den Netzwerkverkehr auf Höhe der Grasnarbe zu analysieren.

mitmproxy

Solange es sich um http/https Verkehr handelt, kann man einen anderen Weg beschreiten. Man lässt einen Proxy-Server laufen, der die Netzwerkdaten ausgibt.

Ein solcher Proxy ist zum Beispiel mitmproxy. mitm steht hierbei für man in the middle.

Die Installation unter Mac OS X 10.6 läuft recht einfach ab:

git clone git://github.com/cortesi/mitmproxy.git

In das nun entstandene Verzeichnis kopiert man nun noch von http://excess.org/urwid/ das innere urwid Verzeichnis, sodass das Verzeichnis wie folgt aussieht:

Nun kann man bereits den Proxy starten:

./mitmproxy -p 8080

Auf dem iOS Gerät selbst stellt man nun den Rechner als Proxy ein. Wichtig ist dabei, dass das iOS Gerät den Rechner „sehen“ kann, sie also zum Beispiel im selben WLAN sind.

Via

ifconfig

kann man auf dem Rechner die eigene IP-Adresse ermitteln.

Unter Einstellungen-> WLAN -> eigene SSID lässt sich unten der HTTP-Proxy einstellen. Hier trägt man nun die IP-Adresse des Rechners unter Server ein und 8080 den Port.

Der Aufruf von Google sieht dann beispielsweise so aus:

Über die Return-Taste lassen sich nun Requests genauer anschauen:

 

 

 

 

 

(Mit der q-Taste kommt man wieder zurück. Mit der tab-Taste kann man sich den Response-Body genau ansehen.)

SSL-Verschlüsselung

Soweit so gut. Doch was macht man, wenn die App via SSL/https mit dem Webserver spricht? Kein Problem:

Der mitmproxy erzeugt beim ersten Starten unter ~/.mitmproxy ein SSL-Zertifikat, das man nun dem iOS Gerät als vertrauenswürdig geben muss.

Das macht man so: Man schickt sich die Datei mitmproxy-ca-cert.pem. Diese öffnet man dann auf dem iOS Gerät und bestätigt, dass man diesem Zertifikat trauen will.

Schon kann man sämtlichen https-Verkehr einsehen.

Dies funktioniert natürlich nur soweit, wie die App auf die globalen http-Einstellungen für Proxies zurückgreift und nicht selbständig Zertifikate überprüft. Da man als Entwickler aber am liebsten auf bereits gelöste Probleme zurückgreift, dürften die meisten iOS-Apps den internen Safari für http(s)-Anfragen nutzen.

Ein Zwischenfazit zu Gran Turismo 5

Die letzten Tage habe ich dazu genutzt, mal wieder ein wenig mit Gran Turismo 5 auf der Playstation 3 zu verbringen.

Nach wie vor bin ich total von der Grafik begeistert. Allerdings gilt dies nur so lange man die PS3 auch an einen LCD-Fernseher via HDMI anschließt. An meinem alten Röhrenfernseher via SCART macht das alles keinen Spaß. Das Bild ist viel zu matschig. Man kann die Schrift nicht lesen.

Doch eine tolle Grafik allein macht noch kein Top-Spiel aus: Es gibt doch einige Mängel bzw. Kritikpunkte im Vergleich zu Gran Turismo 4 auf der Playstation 2.

B-Spec Modus

Der B-Spec Modus versetzt den Spieler in die Rolle des Team-Managers, der seinem Fahrer Kommandos gibt, ob dieser nun besser schneller oder langsamer fahren soll. Bei Gran Tursimo 5 ist dies zum Haare raufen. Mir ist es bisher nicht gelungen, die erste Rennserie (den Sunday-Cup) zu gewinnen. Zu grauenvoll sind die Fahrfehler, die mein Fahrer macht. Das macht keinen Spaß.

Reifenverschleiß

Ich habe das Gefühl, als wäre es vollkommen egal, ob man harte, mittlere oder weiche Rennreifen aufzieht. Die harten verschleißen genauso schnell wie die weichen. Ratz fatz rutscht man einfach so durch die Gegend.

Zudem scheint es so zu sein, dass man bei Rennserien (also eine Folge von Rennen, die in einem Rutsch gefahren werden müssen) mit nur einem Reifensatz auskommen muss. Bei den letzten Rennen sind die Reifen gleich zu Beginn so gut wie hin.

Spezial-Missionen

Grundsätzlich machen die Spezial-Missionen richtig viel Spaß. Dabei muss man bestimmte fahrerische Aufgaben lösen. Allerdings bin ich nun an einer Stelle angelangt, die aussichtslos erscheint: In der Jeff Gordon Training School soll man via Windschatten-Fahren möglichst weit nach vorn kommen.

Dummerweise fährt mir mein Vordermann aber einfach davon, obwohl er keinerlei Windschatten bekommt. Und gänzlich ohne Windschatten habe ich keine Chance, Anschluss zu halten.

Im Netz findet man Beispiele von Leuten, die es geschafft haben. Allerdings kursiert hier auch der Tipp, ABS abzuschalten, damit dann auch ASM deaktiviert wird und damit das Auto schneller wird. Allerdings funktioniert dies bei mir nicht — ziemlich frustrierend …

Spielfluss

Bei Gran Turismo 4 hat man in der Regel immer ein passendes Auto gewonnen, um die nächste Aufgabe zu lösen. Das ist bei Gran Turismo 5 anders. Hier sucht man teilweise ewig beim Gebrauchthändler, bis man das passende Auto findet.

Fazit

Nicht immer macht Detailreichtum und zig Strecken und Autos automatisch ein Top-Spiel aus. Ich hatte mir die PS3 vorallem wegen GT5 gekauft — nochmal würde ich das vermutlich nicht tun. PS2 und GT4 erscheinen mir die deutlich bessere und vor allem kostengünstigere Variante zu sein.

Firefox 10 – Probleme mit Zertifikaten

Gestern hatte ich ein seltsames Phänomen mit dem Firefox 10 und den Remote-Karten von Dell (Dell Remote Access Card – DRAC).

Über diese Karten kann man aus der Ferne auf die Konsole eines Servers zugreifen, ihn stromlos machen und wieder einschalten. Der Zugriff findet dabei über ein Webinterface statt, die Datenübertragung ist SSL-verschlüsselt.

Nun wollte ich gestern auf eine solche Karte in einem neuen Server zugreifen. Doch ich erhielt immer eine Fehlermeldung

Fehler: Gesicherte Verbindung fehlgeschlagen und im weiteren Verlauf den Fehlercode: sec_error_reused_issuer_and_serial.

Fehlermeldung im Firefox 10

Mein erster Gedanke war der, dass ich irgendwo unter dieser IP ein altes Zertifikat gespeichert hatte. Aber da war keines. Nachdem ich ein wenig gegoogelt habe, war ich auch nicht schlauer als vorher. Dieses Phänomen scheint seit mindestens Firefox 3 zu existieren. Es gab immer den Rat, das Zertifikat über Einstellungen->Erweitert->Verschlüsselung->Zertifiakte anzeigen->Server bzw. andere zu löschen. Doch wie bei vielen meiner Leidensgenossen, tauchte das betreffende Zertifikat nicht auf.

Ich habe daraufhin sämtliche eingetragenen Zertifikate gelöscht — allerdings ohne den erhofften Erfolg.

Der nächste Schritt war nun, im Firefox Profil die Datei cert8.db bei gestopptem Firefox umzubenennen. Nach dem Neustart war eine neue, leere Fassung angelegt. Meine Client-Zertifikate (wie zum Beispiel für den Zugriff zum SAP Service Market Place) waren natürlich weg. Aber siehe da, der Zugriff auf den Server klappte.

Dafür war der Zugriff auf alle anderen Remote Karten nicht mehr möglich. Das Verhalten ist reproduzierbar. Greife ich nach dem Löschen der cert8.db zuerst auf einen anderen Server zu, klappt’s mit dem neuen nicht, dafür aber mit allen alten.

Es liegt auch nicht an meiner lokalen Firefox Installation, da ich dieses Verhalten auch auf einem anderen Rechner mit Firefox 10 hatte — einmal unter Windows 7, einmal unter Windows XP

Ich kenne nun zumindest einen Weg, auf beide „Server-Gruppen“ zuzugreifen. Schön ist’s aber nicht.