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
Änderungen einer Form überwachen
Aufgabenstellung: Ich möchte eine <form> mit allen ihren Elementen überwachen, ob der Benutzer eine Änderung vorgenommen hat. Wenn dem so ist und er die Seite verlässt / neu lädt, ohne die Form abgeschickt zu haben, soll ein Hinweis erscheinen, der ihn darauf aufmerksam macht und fragt, ob er die Seite wirklich verlassen möchte.
Das HTML-Gerüst
Mal alles hingezimmert, was wir so an Formularelementen kennen:
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-1.5.js"></script> <script> //Code folgt dann hier </script> </head> <body> <form> <select name="select-single" id="select-single"> <option>Single1</option> <option>Single2</option> </select> <select name="select-multiple" id="select-multiple" multiple="multiple"> <option selected="selected">Multiple1</option> <option>Multiple2</option> <option selected="selected">Multiple3</option> </select> <input type="checkbox" name="check" value="check1" id="check1" /> <input type="checkbox" name="check" value="check2" checked="checked" id="check2" /> <input type="radio" name="radio" value="radio1" checked="checked" id="radio1" /> <input type="radio" name="radio" value="radio2" id="radio2" /> <input type="text" name="text" value="default text" id="text" /> <textarea name="textarea" id="textarea">foobar</textarea> </form> </body> </html>
Da wären also ein Select, ein Select mit Mehrfachauswahl, ein Textfeld, eine Textarea, zwei Radiobuttons und zwei Checkboxen.… Den ganzen Post lesen
Veröffentlicht unter Javascript, webdev
10 Kommentare
Best-of-the-Web 6
Hier die nächste Runde netter Sachen aus dem Netz. Diesmal weniger Artikel und mehr „Goodies“.
- SQL Injection Cheat Sheet – Nach dem schon verbloggten XSS Cheat Sheet hier paar Tipps und böse Queries, die man im Hinterkopf haben sollte.
- On UA sniffing / browser detection – Javascript: Warum die allseits gepriesene „Feature Detection“ vielleicht doch nicht immer das Allheilmittel ist und wann Browser Detection sinnvoll sein kann.
- Sample datasets for benchmarking and testing – Fette Datenansammlung in Form von Datenbankdumps / Testdatensätzen. Gut, wer für Benchmarkzwecke eine dicke Datenbasis braucht.
- Rewrite Rule Tester – Macht die Arbeit mit ModRewrite ein Stück weniger schmerzhaft.
Veröffentlicht unter Best of the Web
1 Kommentar
Javascript: selbstausführende, anonyme Funktionen
Ziel des Artikels: Den Sinn folgenden Konstrukts verstehen
(function(window, document, undefined) { //some fancy code })(this, document);
Mag auf den ersten Blick für den nicht täglich mit Javascript schaffenden Menschen beängistend aussehen. Aber der Reihe nach. Eine ähnliche Konstruktion kommt übrigens in jQuery zum Tragen (siehe source).
Anonym?
Erstmal ist die Funktion anonym, also ohne Namen. Einfach aus dem Grund, weil sie keinen Namen braucht, da sie sich ja selbst aufruft. Man könnte ihr übrigens einen Namen geben, funktionieren würde es trotzdem. Vereinfacht sieht das dann z.B. so aus:
(function nichtMehrAnonym() { //some fancy code })();
Vorteil: Wenn wir vorhaben, die Funktion aus sich selbst heraus nochmal aufzurufen, ist das so bequemer möglich (Rekursion).… Den ganzen Post lesen
Veröffentlicht unter Javascript, webdev
6 Kommentare
Nette Metapher zum Thema ‚Testen‘
Nach der sträflichen Vernachlässigung des Blogs bedingt durch die fiese Klausurphase sind jetzt Semesterferien und die Liste des „Verbloggenswerten“ ist beträchtlich angewachsen – demnächst also wieder mehr Futter. Losgehen solls mit einem netten Spruch eines meiner Profs, der bei Bosch mal Softwarearchitekt war. Bezieht sich übrigens auf das Thema Softwaretests:
Stress ist, wenn man das Fahrrad so schnell schieben muss, dass man nicht aufsteigen kann.
Denkt mal drüber nach ;).… Den ganzen Post lesen
Veröffentlicht unter Software Engineering
4 Kommentare
Needle/Haystack Übersicht
Ich schreibe bald eine Klausur (so richtig auf Papier). Und da sind keine Handbücher oder Funktionsreferenzen erlaubt. Das befinde ich jetzt erstmal für großen Schwachsinn, weil es total an der Realität vorbeigeht. So. Nun habe ich mal eine kleine Übersicht erstellt, wie die Needle/Haystack-Reihenfolge bei den meistgenutzten Funktionen ist. Durch die Hilfe der IDE ist man ja nicht gezwungen, sich das merken zu müssen. Naja, beim stöbern im PHP Handbuch ist mir nun aufgefallen, dass mein Gefühl der total willkürlichen Reihenfolge gar nicht zutreffend war ;-). Wenn man sich mal ein paar PHP-Basher anhört, ist das ja auch das erste Argument.… Den ganzen Post lesen
Veröffentlicht unter php, Quicktips, webdev
8 Kommentare
Best-of-the-Web 5
Und wieder gibts ein paar besonders lesenswerte Webfundstücke, die mir die letzten paar Tage über den Weg gelaufen sind.
- Introduction to creating desktop applications with PHP and Titanium – Es muss nicht PHP-GTK sein, wenn man mit PHP Anwendungen entwickeln will.
- Dynamic Dummy Image Generator – Per URL zugeschnittene Dummy-Bilder abholen. Beispiel: http://dummyimage.com/600×400/000/fff.png&text=foobar -PNG mit 600×400 Pixel, Schriftfarbe Weiß, Hintergrund Schwarz, Text: foobar
- Blogspam – Was passiert, wenn man kein Captcha / Antispamplugin auf dem Blog hat. Echt traurig. Ich verwende übrigens AntiSpamBee mit diesen Settings sehr zu meiner Zufriedenheit. Ganz alleine ohne Akismet.
- Database Version Control – Zusammenfassung von Best-Practices zur Versionierung der Datenbank
- MySQLs BIGINT ..
Veröffentlicht unter Best of the Web, webdev
Hinterlasse einen Kommentar
MySQL Storage Engine Vergleich – Warum MyISAM?
Neuerdings ist InnoDB die Standard-Engine von MySQL, was ich echt vernünftig finde. Ich finde es erstaunlich, wie sich MyISAM so lange halten konnte und würde gern verstehen, warum. Meiner Meinung nach zeichnet die Verbreitung von MyISAM ein trauriges Bild für Webanwendungen im Allgemeinen. Foreign Keys sind ein Segen! Deshalb die gewagte Aussage: Webanwendungen werden oft als wilder Hack hingeschustert, weswegen auch auf Datenbankseite keine vernünftige Integrität gebraucht wird.
Anders kann ich mir jedenfalls nicht erklären, wie es MyISAM zu solch einer hohen Verbreitung geschafft hat. Nachfolgend führe ich nochmal eine kleine (von mir kommentierte) Gegenüberstellung auf, die die wichtigsten Unterscheidungsmerkmale umfasst:
MyISAM
- Die Daten-Speicherung in little endian soll für eine Maschinenunabhängigkeit / Betriebssystemunabhängigkeit sorgen – Ich weiß nicht, in wiefern das im Webumfeld praxisrelevant ist (LAMP als Standard-Stack).
Veröffentlicht unter Datenbanken, webdev
7 Kommentare
PHP WTF #4
…oder warum man überall wo möglich 3 Gleichheitszeichen verwenden sollte ;).
<?php $var1 = 0; $var2 = 'foobar'; var_dump($var1 == false); //true var_dump($var1 == $var2); //true var_dump($var2 == true); //true
Womit dann schlussendlich true == false gilt. qed… Den ganzen Post lesen
Veröffentlicht unter php, PHP-WTF, webdev
7 Kommentare
Rechenungenauigkeit mit Javascript – Warum?
Schonmal in Javascript über ungenaue Berechnungen aufgeregt?
<script> alert(0.2 + 0.4); </script>
Ergebnis?
Das Problem ist mit parseFloat ja schnell behoben, aber darum gehts mir hier garnicht. Warum kriegt Javascript kein sauberes Ergebnis zustande, wohingegen bei 0.2 + 0.3 glatt 0.5 rauskommt? Javascript rechnet intern binär. Und Zahlen, die im Zehnersystem wunderbar aufgehen, können im Dualsystem unter Umständen periodisch sein. So auch die 0.6. Schauen wir uns mal die Berechnung an:
- Vor dem Komma hat unser Ergebnis logischerweise eine 0
- Die Zahl wird mit 2 multipliziert (0.6 * 2 = 1.2)
- Der „Vorkommaanteil“ von oben ist die erste Stelle der gesuchten Binärzahl, also 1.
Veröffentlicht unter Javascript, webdev
3 Kommentare
Datenbank-Transaktionen von akademischer Seite: Behind the Scenes
Disclaimer
An diejenigen mit ordentlichen Vorkenntnissen auf dem Gebiet der Transaktionen: Bitte nicht Abschrecken lassen. Es geht nach der kurzgehaltenen Einführung noch ordentlich in die Tiefe.
Was sind Transaktionen
Nach Definition ist eine Transaktion eine logische Arbeitseinheit, die entweder ganz oder garnicht durchgeführt wird. Bei einem Fehler wird die Datenbank also in den Zustand vor Ausführung der Transaktion versetzt, als ob nie etwas geschehen wäre.
Beispiel: Wo könnte man Transaktionen mehr benötigen als auf einem Gebiet, auf dem Fehler richtig weh tun? Die Bankenwelt! Man stelle sich folgendes ultrasimples Datenmodell vor:
CREATE TABLE `konto` ( `kontonr` INT NOT NULL PRIMARY KEY , `betrag` INT NOT NULL DEFAULT '0', `kundenid` INT NOT NULL ) ENGINE = INNODB; CREATE TABLE `ueberweisung` ( `ueberweisungsid` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `from_kontonr` INT NOT NULL , `to_kontonr` INT NOT NULL , `betrag` INT NOT NULL ) ENGINE = INNODB;
Man beachte InnoDB als Engine, da MyISAM keine Transaktionen unterstützt.… Den ganzen Post lesen
Veröffentlicht unter php, Datenbanken, Security, webdev
9 Kommentare