Hallo!
Mein Name ist David Müller, ich arbeite bei der Public Cloud Group und wohne in Frankfurt. Hier geht es hauptsächlich um Webentwicklung.Kategorien
- webdev (131)
- php (84)
- Javascript (32)
- Datenbanken (22)
- Software Engineering (12)
- Performance (8)
- Security (27)
- PHP-WTF (11)
- Best of the Web (13)
- Quicktips (32)
- Linux (4)
- Java (3)
- misc IT (10)
- Persönlich (9)
- webdev (131)
Blogroll
Neueste Kommentare
- Tristan Tate bei Javascript: Arrays kopieren
- Daniel Marschall bei Dealing with Trusted Timestamps in PHP (RFC 3161)
- Login Mit Facebook Tutorial – Logini helper bei Facebook API – Tutorial
- PHP validation/regex for URL - Design Corral bei Why URL validation with filter_var might not be a good idea
- Manuel bei Meine ultimativen Buchempfehlungen
Archiv des Autors: david
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!
- Horizontal reusability with traits – Bisher bester Artikel zum neuen PHP 5.4 Feature Traits.
- How to Create Scheduled Events in MySQL – Zeitgesteuerte Events in MySQL
- Why HTTP_HOST is evil – Warum man vor der $_SERVER – Verwendung den Kopf einschalten sollte.
- How to „steal“ Google’s „did you mean“ feature – Googles „meinten sie“ Feature für eigene Zwecke verwenden
- ANSI Escape Sequences: Colours and Cursor Movement -Farben in der Konsole.
- A Mockery review – Sehr schöne Mocking-Library.
- Reflection over PHPDoc with PHP – PHP Docblocks verarbeiten
- Profiling a PHP Application – …spricht für sich
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