Archiv für den Monat: Mai 2011

ISO 3166 Code für eine Benutzereingaben finden … mit dem Zend Framework

Stichwort Benutzer-Regisitrierung mit Angabe des Landes: Der User gibt ein „Deutschland“, ist ja auch okay so, aber eure Anwendung (oder eine Drittanwendung) braucht den ISO Code dazu. Und was ist mit Schweiz oder einem Land wie Mexico?

Was nun? Eine lange Tabelle pflegen, womöglich noch selber? Das geht heute viel einfacher, zumindest, wenn man das Zend Framework benutzt:


$locale = new Zend_Locale('DE');
$list = $locale->getTranslationList('territory', 'de_de');
$filterlist = array_search('Deutschland', $list);
echo $filterlist;

Der Trick ist nun, dass wir uns eine Liste aller Länder mit den Codes ausgeben lassen, diese Liste ist in der Sprache, in der die Besucher auch die Daten eingeben (hier Deutsch). Nun suchen wir mit array_search() einfach den richtigen Wert raus (oder reagieren mit einem Fehler auf nicht gefunden, das ist hier nicht mit drin).

Die Ausgabe lautet richtigigerweise DE.

JSONP mit jQuery

JSON Daten mit jQuery zu senden sollte ja kein Problem mehr sein.

Allerdings: Möchte ich die Daten nicht an „mich“ selbst, sondern an eine andere Domain senden, dann funktioniert das nicht mit jQuery.post(), da JSON unter die „Single Domain“ Policy fällt … die ja auch eine sinnvolle Einrichtung ist.

Allerdings wird es in Zeiten immer engerer Vernetzung mitunter nötig, Daten vom Kundenserver A beim Dienstleister B abzufragen. Dazu braucht man dann JSONP – JSON mit Padding.

Wie bereits erwähnt, unterstützt jQuery.post() das ganze nicht, hauptsächlich darum, weil es nur JSON, HTML, XML oder Script verarbeitet (siehe Doku) … leider 🙁

Doch jQuery’s AJAX Funktionen bieten ja auch die jQuery.ajax()-Methode selbst an, die wir beliebig konfigurieren können.

Heraus kommt dann solch ein Konstrukt, welches in der Lage ist, die JSON Daten auch an andere Domains zu senden. Leider werden diese nicht im „reinen“ JSON Format gesendet, sondern als „data“ Parameter in JSON Format … das Serverscript sollte da etwas tolerant sein 😉

myJSONObject sollte natürlich vorher korrekt initialisiert worden sein.


$.ajax({
type: 'POST',
url: 'http://example.com/subfolder/script.php',
contentType : 'application/x-www-form-urlencoded',
data: {data: JSON.stringify(myJSONObject)},
success: function(data){
console.log('succ');
console.log(data);
},
dataType: 'jsonp'
});

Viel Erfolg damit 😉

Offtopic: Verbesserungsvorchlag zur Erhöhung der Reichweite von Elektroautos

Offtopic: Was mir schon länger im Kopf rumgeht, ist eine Idee von mir, die die Reichweite von Elektroautos erhöhen könnte – und ich möchte bitte gesagt bekommen: „Du Sascha, deine Idee ist schmarrn, weil …“.

Also, die Idee: So ein Elektroauto bewegt sich ja und dafür ist in aller Regel ja in irgendeiner Form eine Welle verantwortlich. Überhaupt bewegen sich an so einem Auto im allgemeinen eine Menge Sachen. Mich interessieren nun nur die Teile, die rotieren, also Wellen usw.

Legt man nun um die Wellen einen elektrischen Generator (schematische Darstellung) in der Form, dass man die Induktionsspulen an einer Hülle an der Karosserie befestigt und die Rotoren um die Welle – so wird die Welle zur Antriebsachse – dann sollte diese Konstruktion Strom erzeugen. Diesen Strom kann man nun nutzen, um die Batterie wieder aufzuladen, solange das Auto fährt. Befestigt man mehrere dieser Generatoren um die verschiedenen Achsen, und berücksichtigt man, dass man eine ausgewogene Balance zwischen Brems- und Stromerzeugungswirkung herausfinden muss, dann dürfte sich die Reichweite dieses E-Cars wohl signifikant erhöhen … ich kann nicht sagen, um welchen Faktor, aber es sollte schon spürbar mehr Reichweite „drin“ sein, als wie es derzeit ist.

Und nun, wie schon gesagt, möchte ich bitte, dass mit einer Erklärt, warum das nicht. Sollte sich ein Autohersteller finden, der das einbaut, dann bitte ich, dass ich das Auto mal sehen/fahren darf.