Timeout Funktion für jQuery Ajax / JSONP Requests

Gestern stand ich vor dem Problem, dass ich bei einem jQuery Ajax Request mit JSONP einen Timeout einbauen wollte. Alles kein Problem – man muss einfach nur den Parameter “timeout” gefolgt von einem Millisekunden Wert beim Request-Zusammenbau angeben. Jedoch wollte ich auch eine Funktion einbauen, die dem User mitteilt, dass seine Anfrage vom Server nicht beantwortet werden konnte. Prinzipiell ist dies auch mit dem jQuery Ajax Call möglich, jedoch nicht, wenn man JSONP verwendet. Es gibt aber den Umweg der allgemeinen Ajax Konfiguration, mit der man trotzdem einen Timeout und auch eine Fehlerbehandlung implementieren kann.

Nachdem ich mir aus der jQuery Doku und vielen Forenbeiträgen die einzelnen Details zusammengetragen habe, möchte ich diese hier einfach mal in gebündelter Form loswerden:

$.ajaxSetup({
    timeout: 10000,
    "error":function(XMLHttpRequest,textStatus, errorThrown) {
        if(errorThrown == "timeout") {
            alert("Ups, wir haben einen Timeout...");
        }
    }
});

Dieses Stückchen Code ist eigentlich alles, was man dazu benötigt. Führt es einfach aus, bevor der erste Ajax Call abgesetzt wird. Doch gehen wir das einfach mal einzeln durch.

$.ajaxSetup

dient der allgemeinen Konfiguration von Ajax Calls. Man kann innerhalb von $.ajaxSetup jeden Parameter verwenden, der auch bei $.ajax verwendet werden kann. Setzt man Parameter mit $.ajaxSetup, so können diese immer innerhalb des eigentlichen $.ajax Calls überschrieben werden.

Mit

timeout: 10000

setzen wir einen Timeout von 10 Sekunden. Diesen Wert kann man bei jedem einzelnen Call auch nochmal extra überschreiben.

Und am Schluss implementieren wir mit

"error":function(XMLHttpRequest,textStatus, errorThrown) {
        if(errorThrown == "timeout") {
            alert("Ups, wir haben einen Timeout...");
        }

unsere Fehlerbehandlung. Die erstellte Methode fängt dabei alle Fehler, die bei einem Ajax Call entstehen, ab. Daher habe ich an dieser Stelle auch den if-Block eingebaut, der dediziert nur meinen Timeout Fehler abfängt. Weiter Fehlernamen sind: “error”, “abort”, und “parsererror”. Im XLMHttpRequest Objekt bekommt man das Request Objekt des Ajax Calls mitgeliefert und kann so herausfinden, um welchen Call es sich eigentlich handelt.

Durch die Verwendung von $.ajaxSetup haben wir zum einen das Timeout Verhalten von Ajax Calls an einer zentralen Stelle konfiguriert, zum andern haben wir über diesen Umweg auch die Funktionalität für JSONP Requests überhaupt erst ermöglicht.

Irena Sendler

Irena Sendler. 1910-2008

Eine 98 Jahre alte deutsche Frau namens Irena Sendler starb kürzlich. Während des zweiten Weltkriegs arbeitete Irena im Warschauer Ghetto als Sanitär- / Abwasser-Spezialistin. Irena schmuggelte jüdische Kinder heraus; Säuglinge im Boden ihrer Werkzeugkiste und ältere Kinder in einem Sack, den Sie in den Kofferaum ihres Lastwagens trug. Sie hatte einen Hund, den sie darauf trainiert hatte zu bellen, wenn Soldaten der Nazis sie aus dem Ghetto herein und heraus ließen. Die Soldaten wollten mit dem Hund nichts zu tun haben und das Bellen überdeckte die Geräusche der Kinder. Irena schmuggelte 2500 Kinder aus dem Ghetto heraus. Schließlich wurde sie erwischt die Nazis brachen ihr beide Beine, Arme und verprügelten sie schwer. Irena führte Aufzeichnungen der Namen all der Kinder, die sie herausgeschmuggelt hat und verwahrte sie in einem Glas, begraben unter einem Baum in ihrem Garten. Nach dem Krieg versuchte sie, alle Eltern der Kinder zu finden, die möglicherweise überlebt haben um einige Familien wieder zu vereinen. Die meisten jedoch wurden getötet. Sie half den Kindern in Pflegefamilien aufgenommen oder adoptiert zu werden.

Im Jahre 2007 wurde sie für den Friedensnobelpreis vorgeschlagen. Sie wurde nicht ausgewählt. Den Nobelpreis gewann Al Gore – für einen Diavortrag über die Globale Erwärmung.

Wir werden darüber bloggen. Für immer.

Aus dem Englischen übersetzt via http://coernel.soup.io/

A 98 year-old German woman named Irena Sendler recently died. During WWII, Irena worked in the Warsaw Ghetto as a plumbing/sewer specialist. Irena smuggled Jewish children out; infants in the bottom of the tool box she carried and older children in a burlap sack she carried in the back of her truck. She also had a dog in the back that she trained to bark when the Nazi soldiers let her in and out of the ghetto. The soldiers wanted nothing to do with the dog, and the barking covered the kids’ and infants’ noises. Irena managed to smuggle out and save 2500 children. She eventually was caught, and the Nazis broke both her legs, arms and beat her severely. Irena kept a record of the names of all the kids she smuggled out and kept them in a glass jar buried under a tree in her backyard. After the war, she tried to locate any parents that may have survived and reunited some of the families. Most had been killed. She helped those children get placement into foster family homes or adopted.

In 2007 Irena was up for the Nobel Peace Prize. She was not selected. Al Gore won – for a slide show on Global Warming.

will always reblog this. always.

Foto: Mariusz Kubik

Ich habe ausnahmsweise den Text direkt übernommen – denn besser hätte ich es nicht formulieren können. Wäre toll, wenn ihr das hier weiter verbreitet – diese Frau hat es echt verdient, zumindest auf diesem Wege geehrt zu werden, wenn die Deppen des Friedensnobelpreises es schon nicht geschafft haben…

via mediengestalter.cc

Der Held meiner Jugend

Leute! Ich habe heute tatsächlich Bud Spencer live gesehen und mir eine signierte Version seiner Biographie geholt. Damit ist ein Kindheitstraum in Erfüllung gegangen.

20111130-222114.jpg

Leider waren noch ca. 2000 andere Leute da, also ging alles sehr schnell. Aber: Bud hat fleißig signiert und zeigte keine Schwäche – denn er liebt seine Fans einfach, so wie sie ihn lieben. Ein wahrlich toller Mensch!

Humblebundle – Introversion

Und hier mal wieder ein Gastbeitrag, diesmal von meinem Kollegen Alberto. Derzeit in der Ausbildung zum Fachinformatiker für Anwendungsentwicklung, beschäftigt sich Alberto in der Freizeit neben allerlei technischen Dingen auch mit der Welt der Games. In diesem Beitrag möchte er auf das Cross-platform Gamespaket “Humblebundle” eingehen. Aber lest selbst…

Die Welt ist im Wandel – jedenfalls die der Gamer. Für Rollenspielfans ist gerade erst Skyrim erschienen, für Shooterfreunde Battlefield 3 und Call of Duty Modern Warfare 3.

Aber auch für Fans von alternativen Spielen ist mit dem aktuellen Humblebundle , Codename Introversion, für Unterhaltung gesorgt.

Da ich kein Fan von bekannten Spielen bin, sondern mich lieber an der Kunstfertigkeit von Undergroundgames und an deren neuen Ideen erfreue, ist dieses Paket natürlich genau richtig für mich.
Im folgenden möchte ich die Spiele des aktuellen Humblebundles kurz vorstellen und vielleicht bei dem ein oder anderen die Lust an Indiegames entfachen.

Das erste Spiel in der Liste ist Darwania.
Fans von Tron dürften sich in dem Szenario sofort heimisch fühlen. Im Spiel befindet man sich in einem virtuellen Themenpark innerhalb eines Computernetzwerkes, der von Viren überrannt wurde. Aufgabe des Spielers ist es, die Vireninfektion zu zerstören und die Bevölkerung, sogenannte Darwinians, zu retten. Dies geschieht durch entsprechende Einheiten, die man bauen kann – wie etwa Truppen oder Ingenieure. Gesteuert wird im Spiel per Maus, die Navigation auf der Karte geschieht per Pfeiltasten. Spaß macht das ganze allemal, wobei man nicht nur einmal seine Einheiten an einen Virus verliert, den man übersehen hat.

Das nächste Spiel, welches man im Humblebundle bekommt, ist sicher für die meisten kein unbekannter Name, denn es handelt sich um das Kultspiel Uplink.
Als Agent müssen wir uns in fremde Computersysteme einhacken, um dort Daten zu stehlen oder zu manipulieren und so die Aufträge, die man von einer Organisation namens Uplink AG bekommt, zu erfüllen.
Größte Schwierigkeit dabei ist, nicht zurück verfolgt zu werden, was eine Verhaftung nach sich zieht.
Daher muss man immer darauf achten, vorsichtig und schnell vorzugehen, da bei einer Verhaftung das Spiel wieder bei Null losgeht.
Dieses Spiel ist für alle Hacker und Nerds ein absolutes Muss und durch seinen recht anspruchsvollen Schwierigkeitsgrad ist auch für längeren Spielspaß gesorgt.

Drittes Spiel im Bunde ist Multiwinia, welches im selben Kontext wie Darwania angesiedelt ist, jedoch zu einem späteren Zeitpunkt spielt.
Die Darwanians sind nicht mehr friedlich sondern haben sich eigene Zivilisationen aufgebaut welche sich gegenseitig bekriegen.
Das ganze ist als Multiplayergame angelegt und sorgt mit 6 verschiedenen Gamemodi nicht so schnell für Langeweile.
Auch wenn die Steuerung anfangs ungewohnt ist, kommt man schnell mit dem simplen Spielprinzip klar und erfreut sich auch bald an den virtuellen Schlachten.

Aller guten Dinge sind zwar Drei, jedoch hat das Humble Bundle mit Defcon noch mehr zu bieten.
In diesem Spiel geht es darum, im kalten Krieg das eigene Land gegen einen nuklearen Angriff zu verteidigen und gleichzeitig die Landesverteidigung nicht außer Acht zu lassen, um die nuklearen Angriffe des Gegners abwehren zu können.
Neben stationären Abschussbasen gibt es auch noch See- und Lufteinheiten, die ebenfalls mit Bedacht einzusetzen sind.
Aufgrund der Masse an Einheiten und Basen kann der ganze Spaß jedoch schnell unübersichtlich werden, sodass man oft mehr um den Überblick als um das Überleben kämpft.

Das beste Spiel im ganzen Paket ist aber mit Abstand Crayon Physics Deluxe, welches man allerdings erst ab einem Mindestbezahlwert von $3,79 erhält.
Auch wenn die Grafik bewusst wie eine Kinderzeichnung gehalten ist, machen die gestellten Aufgaben, die mit Zeichentalent und den physikalischen Gegebenheiten zu lösen sind, allemal Spaß.
Das Ziel in jedem Level ist, dass eine Kugel einen Stern anstößt. Dies erreicht man zum Beispiel durch einen gezeichneten Hammer, der an einem bestehenden Punkt schwingt oder durch geschicktes austarieren von Wippen mithilfe selbstgezeichneter Beschwerer.
Was sich anhört wie Kindergarten, macht in der Realität einfach nur enormen Spaß und an einigen Stellen ist wirklich Köpfchen gefragt, damit der Stern eingesammelt und das Level abgeschlossen werden kann.

Auch wenn die Humblebundles nie grafisch aufwändige Spiele wie etwa Battlefield 3 enthalten, so machen doch die kleinen Indigames immer wieder viel Spaß – nicht nur auf Windows Computern.

Besonders toll ist das Konzept, dass jeder selber entscheiden darf, wie viel und an wen er für die enthaltenen Spiele zahlt.
So kann neben den Entwicklerstudios, an die Electronic Frontier Foundation und an die Child’s Play Charity gespendet werden, um die Spiele freizuschalten.

Die Humblebundles sind weit ab vom langweiligen, grafisch aufwändigen Mainstream, dafür aber gespickt mit Spielen, die anders sind, die sich trauen, neue Spielideen auszuprobieren und einfach nur Spaß machen.
Ich kann nur jedem empfehlen, die Spiele auszuprobieren, denn einige haben definitiv einen starken Suchtfaktor und man freut sich am Ende immer auf das nächste Humblebundle.

[Quicktip] Sicheres surfen über ssh unter OSX

Stellt euch folgende Situation vor: ihr sitzt in einem Caffé und möchtet gern das dort vorhandene, offene Wlan nutzen. Das ist natürlich sicherheitstechnisch nicht gerade optimal, da eure Kommunikation so von jedem Script-Kiddie abgehört werden kann.

Sofern ihr einen Server irgendwo im Internet habt, auf dem ihr euch per SSH einloggen könnt, gibt es einen sehr leichten Weg, eure Verbindung abzusichern:

Im Terminal

ssh -ND 9999 benutzername@server.de

eingeben (an Stelle von 9999 könnt ihr natürlich auch einen anderen freien Port verwenden). Sofern ihr auf dem Server bereits euren public ssh Key hinterlegt habt, dann könnt ihr das Terminal nun minimieren (nicht schließen!). Wenn nicht, werdet ihr nach eurem Passwort gefragt. Eintippen, Enter drücken und nun das Fenster minimieren.

Nun habt ihr einen laufenden Socks Proxy. Richtet entweder direkt im Browser oder in den Netzwerkeinstellungen den Proxy

Server: localhost
Proxy: 9999 (bzw. den von euch gewählten Port)

ein. Ab sofort surft ihr nun über einen sicheren Kanal zu eurem Server und erst dann ins Netz.