Solarized – das perfekte Farbschema für deine IDE

Bereits vor einer Weile hatte ich in der Nerdtanke Nr. 6 (übrigens ein sehr guter IT Podcast) vom “Solarized” Farbschema gehört. Einige Zeit später habe ich es nun endlich mal ausprobiert und bin begeistert. Aber was ist “Solarized” überhaupt?

Ethan Schoonover, der Schöpfer von “Solarized”, hat sich hingesetzt und die optimalen Farben für eine IDE bzw. auch für die Shell, zusammengestellt. Dabei herausgekommen ist eine Sammlung von 16 Farben – 8 Pastelltöne und 8 Aktzentfarben. Diese Farben werden sowohl in einer hellen als auch einer dunklen Kombination angeboten. Mehr ist “Solarized” auch gar nicht. Alles, was man noch tun muss, ist die Farben seiner IDE auf diese 16 umzustellen. Oder man nimmt die freundlicherweise zur Verfügung gestellten Voreinstellungen für die gängigen IDEs auf der “Solarized”-Homepage. Da ich derzeit eifriger Nutzer von PHPStorm bin, und dies leider nicht auf der Liste steht, habe ich hier das entsprechende Schema und die Anleitung, wie man es lädt, gefunden.

Probiert es doch einfach mal aus…

via nerdtanke.de

Firebug für’s iPhone und iPad

Die Entwicklung von html5 Apps auf dem iPhone/iPad kann manchmal schon etwas anstrengend sein, weil man nicht so tolle Debugging Werkzeuge hat, wie auf seinem Rechner. Doch es gibt eine außerordentlich praktische Lösung, die sehr hilfreich ist: Firebug in der iOS Web Variante. Was muss ich dafür tun?
Geh einfach mit deinem iPad/iPhone auf “firebug on ipad and iphone” und folge der Anleitung. Anschließend kannst du auf jeder beliebigen Seite das erstellte Lesezeichen aufrufen, und schon erscheint ein rudimentärer Firebug.

via martinkool.com

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.

[Quicktip] aktuellen git branch im bash prompt anzeigen

Hier mal wieder etwas nettes für die Mac bzw. Linux User unter euch. Mittels der hier beschriebenen Methode könnt ihr euch einfach – sofern ihr euch innerhalb eines mit git versionierten Ordners befindet – den aktuell ausgecheckten Branch anzeigen lassen. Die hier verwendete Methode gilt für die bash. Mit kleinen Abwandlungen sollte es aber auch auf anderen Shells laufen.

In eurem Homeverzeichnis – mittels eines einfachem “cd” gelangt ihr dort hin – müsst ihr nur die Datei “.bash_profile” bzw. unter Linux die “.bash_rc” editieren und folgende Zeile einfügen (es handelt sich um eine Zeile!):

export PS1='\[\033[01;32m\]\u\[\033[01;34m\] \w\[\033[31m\]$(git branch 2>/dev/null|cut -f2 -d\* -s) \[\033[01;34m\]$\[\033[00m\] '

Falls ein “export PS1” bereits vorhanden ist, müsst ihr es ersetzen bzw. beide zusammenführen.

Was passiert? Durch die Formatierung wird das aktuelle Verzeichnis in grün angezeigt, ein evtl. anzeigbarer Branchname in rot. Die Farbe kommt von den Zahlenwerten in den eckigen Klammern. Wenn ihr keine farblichen Veränderungen wünscht, dann lasst die entsprechenden Codes einfach weg.

Falls ihr bereits eigene Formatierungen für die PS1 vorgenommen habt, findet ihr hier den eigentlich relevanten Teil für die Ausgabe des git branches:

$(git branch 2>/dev/null|cut -f2 -d\* -s) 

Nachdem ihr die bash_profile bzw. bash_rc editiert habt, speichert alles ab, schließt das Konsolenfenster und öffnet es dann erneut. Und schon sind die Änderungen sichtbar.

via asemanfar.com

Der Tag der Programmierer

Passend zum heutigen Tag kann ich euch mitteilen, dass heute der inoffizielle Tag der Programmierer ist. Es handelt sich um den 256ten Tag des Jahres, welcher der 13 September, in Schaltjahren der 12. September ist.

Und da 256 der höchste Farbwert in der RGB Palette ist, bedeutet das, dass alle Programmierer heut die Farbe Weiß tragen. Ich hoffe, dass alle Programmierer dran gedacht haben 😉

In Russland ist der Tag wohl sogar ein offizieller Feiertag für Programmierer…

Weitere Informationen:
Programmers Day

[Quicktip] Callback-Funktionen mit Javascript

Neben der Möglichkeit, unter Javascript anonyme Funktionen direkt als Parameter zu übergeben, kommt man vielleicht auch mal an die Stelle, dass man einer Methode den Namen einer anderen Funktion übergeben möchte, die diese dann nach Fertigstellung ihrer Aufgabe ausführen soll. Da man nicht einfach wie z.B. bei php den Funktionsnamen dynamisch per Variable angeben kann, muss man einen kleinen Trick anwenden. Und der geht so:

if(typeof window[funcName] == 'function') window[funcName]();

In der Variable “funcName” steht der Name der Funktion drin, die ihr aufrufen wollt. Der if-Block davor dient nur der Sicherheit – die Funktion wird nur aufgerufen, wenn es sie auch gibt. In der Klammer bei ” window[funcName]()” könnt ihr natürlich wie gewohnt Parameter übergeben.

[Update]
Und hier noch eine weitere Möglichkeit, die mir persönlich besser gefällt und die auch zuverlässiger funktioniert:

function funktionEins(data, callback) {
    //...
    //do something with data...
    //...
    //run our callback
    if(callback != undefined && typeof callback == 'function') callback();
}

Optional kann man natürlich auch Daten/Variablen an die Callbackmethode übergeben:

callback(data);

Wir haben nun also eine Ausgangsfunktion. Rufen wir diese nun auf und übergeben eine existierende Funktion oder eine anonyme Funktion, so kann diese ausgeführt werden:

function funktionZwei() {
    //do something
}
funktionEins("test", funktionZwei);

oder eben

funktionEins("test2", function(data) {
    alert(data);
});

mit einer anonymen Funktion, die in diesem Beispiel eben auch einen Parameter anbietet.

via selfhtml.org

[Titanium Developer] JSON auf iPhone und Android parsen

Dieser Beitrag wird eine Reihe von (hoffentlich) vielen Titanium Developer Beiträgen einleiten, und das aus einem einfachen Grund: so toll das System auch ist, es braucht viele Kniffe, um die eigene App zum Laufen zu bekommen.

Für alle, die nicht wissen, was Titanium Developer ist: Einfach gesagt handelt es sich dabei um ein Framework+Runtime, mit welchem man mittels Javascript Handy-Apps programmieren kann, welche dann auf iPhone/iPod Touch/iPad und Android laufen. Dabei geht nicht allzuviel Performance verloren UND man erhält zum Schluss eine native App für das jeweilige Zielsystem. Weiter Infos unter appcelerator.com

Aber kommen wir zurück zum Thema. Normalerweise parsed man Json Daten unter Titanium mittels

var jsonVar = JSON.parse(daten);

und erhält dann das Datenobjekt zurück. Leider funktioniert dies nur unter den iOS Geräten, nicht aber unter Android. Also wandelt man seinen Befehl folgendermaßen um:

var jsonVar = eval('(' + daten + ')');

Natürlich ist eval immer mit Vorsicht zu genießen, da hier sämtliche Befehle ohne nachzufragen ausgeführt werden. Sichert also bitte vorher in irgendeiner Form ab, dass die erhaltenen Daten keinen Schadcode enthalten. Da ihr aber in den meisten Fällen sowieso mit einer von euch bereitgestellten API auf eurem Server kommunizieren werdet, sollte dies nicht ein allzu großes Problem sein.

[php] Einzeiler: aktuelles Jahr, Monat oder Tag auslesen

Wenn ihr mal eine Möglichkeit braucht, um das aktuelle Jahr, den aktuellen Monat oder den aktuellen Tag auszulesen und dies in einer Zeile erledigen wollt, dann macht es doch so:

$year = date("Y");
$month = date("m");
$day = date("d");

Wenn ihr das komplette Datum braucht, dann geht das so:

$date = date("d.m.Y");

Und falls ihr nicht den aktuellen Zeitpunkt, sondern einen gegebenen Timestamp verwenden wollt, dann geht das so:
$date = date("d.m.Y", $timestamp);