Kürzlich stellte ich fest, daß die Suchvorschläge von Google, die in der Suchleiste von Internet Explorer oder Firefox erscheinen, den Google calculator mit benutzen:
Also habe ich Fiddler angeworfen, um zu schauen, wo die Anfragen für solche Vorschläge hingehen und fand folgende URL (für die Anfrage 1+1):
http://suggestqueries.google.com/complete/search?output=firefox&client=IE8&hl=en&qu=1%2B1
Die Antwort auf diese Anfrage war ein wenig JSON:
Ich habe das hier mal ein wenig aufgehübscht, eigentlich kommt es in einer langen Zeile. Wie man sehen kann, sind das im Wesentlichen zwei geschachtelte Arrays. Das erste Element des äußeren ist die Suchanfrage und das innere enthält die Vorschläge. Wenn die Vorschläge ein Ergebnis einer Berechnung durch Google Calculator enthalten, dann ist dies der erste Vorschlag, der zurückkommt.
Das wissend habe ich ein kleines Programm zusammengehackt, was seine Argumente an Google schickt und den ersten Vorschlag ausgibt (was hoffentlich ein Rechenergebnis ist):
Am liebsten mag ich die Möglichkeit zur Einheitenkonvertierung. Leider funktioniert nicht alles. An Naturkonstanten (Lichtgeschwindigkeit, Elementarladung, …) und sonstige hübsche Zahlen (e, π, …) kommt man leider nicht direkt heran. Bei Naturkonstanten schafft man es manchmal mit einer expliziten Konvertierung in deren Einheit (c in kilometers per second), aber das wäre noch ein Punkt, wo man verbessern könnte.
Das Programm wurde in C# 2.0 geschrieben und benutzt LitJSON zum Parsen von JSON. Es läuft auch auf Mono, ich habe dort allerdings noch nicht versucht, es zu kompilieren. Aber da alles .NET 2.0 ist, sollte das eigentlich problemlos funktionieren.
Das Programm sowie der Quelltext hängen an.
UPDATE (2008–10–26 00:34): Ich habe Quelltext und ausführbare Datei wie folgt aktualisiert:
Irgendwie witzig … ich suche nach einem recht bestimmten Problem in .NET, nämlich, wie ich auf der Konsole Unicode ausgeben kann. Suche ich danach, kriege ich in etwa folgendes (in absteigender Reihenfolge der Häufigkeit):
Das Ergebnis freut mich nicht so richtig (da ich Unicode mag und keinen wirklichen Grund sehe, warum es immer noch Anwendungen gibt, die so tun, als lebten wir noch in den 60ern), aber was mich mehr stört, ist daß es so verdammt wenig hilfreiches Zeug im Web gibt.
Gut, nun, da ich mich darüber beschwere, muß ich zugeben, daß ich Joel Spolskys Blog sowie das von Jeff Atwood lese. Beide erwähnen stackoverflow.com (was sie auch gegründet haben). Der Grund, warum sie es gründeten, war genau der gleiche, vor dem ich gerade auch stand. Nun muß ich mich nur noch daran erinnern, daß es die Seite gibt und statt zu Google dorthin gehen. Könnte eine Weile brauchen, bis ich meine Gewohnheiten dahingehend ändere.
UPDATE (2008–10–26 00:48): Ich habe nun herausgefunden, wie man der .NET-Konsole Unicode beibringen kann: Einfach UTF-8 benutzen. Ich war naiv genug, zu denken, da Win32 UTF-16 benutzt und .NET-Strings ebenfalls UTF-16 sind, sollte Console.OutputEncoding ebenfalls UTF-16 sein. Naja, da lag ich falsch, hatte aber UTF-8 nicht mal ausprobiert.