Javascript String Replace ohne Regex

Wer eine einfache Variante zum String Replacement benötigt, kann entweder den Regex-Weg gehen (siehe Nachbildung der PHP-Funktion str_replace), oder einen schnuckeligen Trick anwenden:

alert("Finde mich".split("Finde").join("Replace"));

Den String zum Array am Suchwort zerlegen und dann mit dem Ersatz das Array wieder zusammenfügen. Brauchte letztens eine Quick&Dirty-Lösung, um Zahlen des Formats

600.000,54

in das Javascript geläufige Zahlenformat

600000.54

zu überführen, also Dezimalpunkte raus und Komma durch Punkt ersetzen. Gemacht habe ich es so:

var num = "600.000,54".split(".").join("").split(",").join(".");

Gewinnt sicher keinen Schönheitspreis, die innovative Verwendung von join und split gefielen mir dann aber doch zu gut ;).… Den ganzen Post lesen

Veröffentlicht unter Javascript, Quicktips, webdev | 4 Kommentare

Appentwicklung mit Webtechniken – Appcelerator Titanium

Apps sind zur Zeit in aller Munde. Bekanntlich gibt es mit Android und iOS mal mindestens 2 ernst zu nehmende Plattformen, auf denen man in der Regel vertreten sein möchte. Heißt: Zwei mal dasselbe programmieren, einmal in Java und einmal in Objective C. Das muss nicht sein. Mit dem Cross Platform Framework Appcelerator Titanium wird die Entwicklung in Javascript vorgenommen – nebst Zugriff auf die Gerät-APIs wie Kamera, Beschleunigungsmesser, GPS und allem Klimbim. Nur am Rande: Titanium ist kein kleines Nebenprojekt eines gelangweilten Studenten. Ein paar Millionen Apps sind damit schon erstellt worden, u.a. auch das fies gehypte Wunderlist.

Das, was am Ende dabei rauskommt ist eine vollwertige, native App welche selbst in Apples App-Store Bestand hat.… Den ganzen Post lesen

Veröffentlicht unter Javascript, webdev | 5 Kommentare

Eine Ode an das Qualitätsbewusstsein!

Disclaimer: Hier wird Dampf abgelassen. Tiefgründige Ergüsse sind nicht zu erwarten.

Vorgeschichte

In der letzten Zeit häuft sichs: Dreiste Fehler in ausgewachsener Software. Vielleicht hatte ich auch viel Pech bei der Auswahl, tut aber nichts zur Sache. In der offiziellen Version 1.7.2. des millionenfach verwendeten Cross-Platform-Mobile-Application-Frameworks ™ Appcelerator Titanium ist auf einmal die Build-Funktion für Apps so hart kaputt, dass man ohne manuellen Eingriff in das Build-Script nichts mehr in den App-Store / Android Market bekommen wird.

Evaluation anständiger UI-Frameworks, um auf Smartphones simple Apps mit Webtechniken zu schreiben: Ein Graus. Beim stark gefeierten Sencha Touch werden wilde Javascript-Abtenteuer abgezogen, um eine simple Liste durchzuscrollen.… Den ganzen Post lesen

Veröffentlicht unter Persönlich | Hinterlasse einen Kommentar

Erwartete Exceptions richtig testen

Der klassische Ablauf beim Testen von Code, der eine Exception werfen soll, ist der Folgende (PHPUnit):

/**
 * @expectedException InvalidArgumentException
 */
public function testException()
{
   throw new InvalidArgumentException();
}

Problem dabei: Wir haben nicht spezifiziert, an welcher Stelle die Exception geworfen werden soll. Außerdem können wir nicht prüfen, ob die geworfene Exception genau die erwartete oder nur igendeine war.

Jetzt lässt sich das noch aufbohren:

/**
 * @expectedException        InvalidArgumentException
 * @expectedExceptionMessage Right Message
 */
public function testExceptionHasRightMessage()
{
    throw new InvalidArgumentException('Right Message');
}

Auch damit werde ich nicht glücklich. Wenn ich jetzt z.B. mehrere Exceptions in einem Test prüfen möchte (guter Stil hin oder her) stößt man an die Grenzen diesen Ansatzes.… Den ganzen Post lesen

Veröffentlicht unter php, webdev | 4 Kommentare

MySQL „SHOW PROFILE“

Hab heute in meiner favorisierten Datenbank-GUI HeidiSQL den Query Profiler entdeckt, hinter dem sich bei genauer Recherche das MySQL-Kommando SHOW PROFILE verbirgt – nur grafisch aufgehübscht.

Eine sinnvolle Ergänzung zu EXPLAIN – grade die temporären Tabellen oder unerwartet auffällige Sortierungen fallen hier schnell auf.… Den ganzen Post lesen

Veröffentlicht unter Datenbanken, Quicktips, webdev | 2 Kommentare

Schriftartempfehlung: Consolas

Ein geschätzter Arbeitskollege gab mir neulich den Tipp, es mal mit der von Microsoft speziell für Programmierung entwickelten Schrift Consolas zu versuchen. Ich hab einen Schriftwechsel erst als unnötig abgestempelt, war dann aber doch froh, es getan zu haben.

Meine favorisierte IDE Netbeans kommt standardmäßig mit der Schriftart Monospaced daher. Sieht so aus:

Enter Consolas

Heruntergeladen und in Netbeans als Standardfont in Größe 14 eingestellt (12 finde ich zu klein). Resultat:

Finde ich dann doch deutlich angenehmer. … Den ganzen Post lesen

Veröffentlicht unter Quicktips, misc IT | 8 Kommentare

MySQL PROCEDURE ANALYSE – Optimale Feldtypen ermitteln

Oft wählt man aus Verlegenheit völlig überdimensionierte Datentypen (VARCHAR(512) und gut…). Ist auch irgendwie verständlich, schließlich ist oft nicht bekannt, in welche Sphären die späteren Feldinhalte vorstoßen werden. Wenn sich die Datenbank aber mal etwas eingeschwungen hat, kann es lohnenswert sein, etwas zu tweaken. Dazu hilft MySQL mit der procedure analyse.

Sieht dann so aus:

Umsetzen muss man die Vorschläge dann selbst.… Den ganzen Post lesen

Veröffentlicht unter Datenbanken, Quicktips, webdev | 3 Kommentare

Best-of-the-Web 9

Es hat sich mal wieder was angesammelt!

Den ganzen Post lesen
Veröffentlicht unter Best of the Web, webdev | Hinterlasse einen Kommentar

Chrome Dev Tools: Insidertipps

Chromes Version von Firebug hat sich ordentlich gemausert. Inspiriert durch dieses Video gibts hier nun also ein paar nicht so bekannte Features der Devtools.

Konsole überall einblenden

In jedem Panel der Devtools lässt sich mittels Druck auf ESC die Konsole hochfahren und so simultan arbeiten.

Weitere Shortcuts gibts hier.

Die Funktionen dir() und copy()

Bekanntlich lässt sich durch Eingabe des DOM-Elements in die Konsole das HTML dazu selektiv anzeigen (siehe Bild oben: document.body). Mittels der Funktion dir() lässt sich eine weit detailliertere Auflistung anzeigen, die u.a. auch Event Handler anzeigt:

Mit copy() lässt sich Text in die Zwischenablage kopieren.… Den ganzen Post lesen

Veröffentlicht unter Javascript, webdev | 7 Kommentare

Per PHP-CLI die eigene IP herausfinden

Bekanntlicherweise ist die IP per $_SERVER auf der CLI nicht verfügbar. Was hilft: gethostbynamel. Die Funktion liefert eine Liste von IPv4 Adressen zu einem Hostname zurück.

print_r(gethostbynamel("microsoft.com"));

/*
Array
(
    [0] => 207.46.232.182
    [1] => 207.46.197.32
)
*/

Lässt sich leicht abgewandelt auch zum herausfinden der eigenen IP benutzen:

function getOwnIP($default = false)
{
	$ips = gethostbynamel('localhost');
	
	foreach ($ips as $ip)
		if ($ip != "127.0.0.1") return $ip;
		
	return $default;
}
Den ganzen Post lesen
Veröffentlicht unter php, Quicktips, webdev | 5 Kommentare