Stronghold 3 Review

Moin Moin,

ich hatte das Glück das Amazon meine vorbestellte Version von Stronghold 3 schon am Samstag verschickt hat. Somit ist das ganze heute per Post angekommen und ich habe mir gedacht mal ein Review zu machen. Viel Spass damit 😉

Stronghold 3 Review from Eric Lanfer on Vimeo.

 

 

— Update: Jetzt auch in HD auf Youtube, da auf vimeo nicht genug platz für 30 min 1080p war 🙂

Part 1: http://youtu.be/nU7RIhW8k5g

Part 2: http://youtu.be/89i-Y3a7U1w

 

AJAX und der „Vor“ und „Zurück“ Button

Kleiner Hinweis: Dieser Blogpost nimmt an, das jQuery verwendet wird 😉

Dank AJAX kann man eine Menge Traffic einsparen – allerdings hat AJAX leider ein paar Nachteile: Die Browsernavigation, also die „Vor“ und „Zurück“ Knöpfe des Browsers, funktionieren nicht mehr.
Hier mal ein Beispiel:

HTML:

JavaScript:

Klickt man nun auf „Inhalt ändern“, erscheint der Inhalt von content.html im content-div. Wenn jetzt der Benutzer allerdings wieder „Hier ist Inhalt 1“ sehen möchte, kann er nicht den „Zurück“-Button seines Browsers verwenden.

Um dieses Problem zu lösen gibt es zwei Möglichkeiten:

  • Einen hash an die aktuelle URL anhängen, etwa so: /#!content.html
  • Das HTML5 window.history-Objekt bemühen

Da die zweite Methode leider (noch) nicht von jedem Browser unterstützt wird, aber die wesentlich hübschere Methode ist, habe ich mir ein Objekt geschrieben, was beides kann!

Die Benutzung in Verbindung mit dem obigen HTML-Schnipsel ist denkbar einfach:

Eigentlich relativ einfach einzubauen und es macht eine Seite deutlich benutzerfreundlicher!

 

Unix-Timestamp in JavaScript formatieren

Um ein Unix-Timestamp mit JavaScript zu formatieren, habe ich mir folgendes Objekt geschrieben:

Die Benutzung ist ziemlich einfach:

Man kann das Ausgabeformat über das timeFormat.displayFormat Feld steuern:

Wie bereits oben beschrieben sind folgende Zeichen möglich (auch mehrfach)

 

JavaScript Timers mit jQuery

Timer in JavaScript zu realisieren ist eigentlich recht leicht, dazu braucht mal nur die Funktionen window.setTimeout bzw. window.setInterval mit entsprechenden Argumenten zu füttern.

Doch was ist, wenn ich jetzt einen solchen Timer ändern oder abbrechen möchte? Das ist eigentlich auch nicht schwer – die Funktionen setTimeout/setInterval geben ein Objekt zurück über das sie sich wieder beenden lassen.

Das funktioniert in kleinen JavaScript Codes sicher ohne Probleme, wenn man allerdings an einem großem JavaScript Projekt arbeitet, macht es die Arbeit nicht gerade leichter wenn man immer dieses Rückgabe-Objekt (im Beispiel running) irgendwo speichern muss, vorallem wenn man von überall im Code darauf zugreifen will.

Um dieses Problem zu lösen habe ich ein jQuery Timer Plugin gefunden. (Siehe http://plugins.jquery.com/project/timers) Wer an einem größerem JavaScript Projekt arbeitet, sollte meiner Meinung nach aufjedenfall auf ein Framework setzen – jQuery ist hier meine Wahl von daher bietet sich dieses Plugin an.

Mit diesem Plugin geht das „Interval“ setzen dann wie folgt:

Der zweite Parameter, machWasOftAbbrechbar, stellt hierbei ein sogenanntes „label“ dar, über das man den gestarten Timer dann wieder abbrechen kann:

Viel mehr gibt’s eigentlich nicht dazu zu sagen – die Dokumentation dazu findet man, genau wie das Plugin selbst, unter http://plugins.jquery.com/project/timers.

 

JavaScript und Geolocation

Seit Firefox 3.5, Opera 10.60 bzw. Safari/Webkit 5 ist es möglich per JavaScript mit Einverständniss des Benutzers seine Position zu ermitteln. Die Position wird dann entweder über eine angeschlossene GPS-Antenne oder über die verfügbaren WLans ermittelt. Die API dafür ist sehr leicht zu benutzen.

Zunächst sollte geprüft werden ob der benutzte Browser Geolocation unterstützt. Das geht wie folgt:

Jetzt ist es möglich die aktuelle Position abzufragen:

und bei jeder Änderung der Position erneut ein Event auszulösen:

Hierbei kann man angeben

  • enableHighAccuray: ob man auf hohe Genauigkeit setzen möchte (sofern diese vom Gerät unterstützt wird)
  • maximumAge: (in ms) wie alt die letzte Position maximal sein darf – je kleiner dieser Wert, desto öfterst wird auf dem Gerät die aktuelle Position abgefragt.
  • timeout: (in ms) wann die Positionsbestimmung abgebrochen werden soll wenn sie nicht erfolgreich ist

Wenn man die Positionsüberwachung wieder abbrechen will, hilft folgender API-Call weiter:

Sehr nützlich, vorallem wenn man eine Webseite für Smartphones bastelt 😉

 

Abstand von zwei GPS-Koordinaten (SQL Funktion)

Für mein aktuelles Projekt muss meine Datenbank den Abstand zwischen zwei GPS-Koordinaten berechnen. Dies Funktioniert ganz einfach mit meiner folgenden Funktion GPS_DISTANCE:

Die Parameter sind jeweils die GPS-Länge und die GPS-Breite (in Grad). Der Rückgabewert ist der Abstand in Metern.