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
Webtesting mit SimpleTest – Selenium light
SimpleTest führt neben dem übermächtigen PHPUnit ein Schattendasein in der PHP-Community. Vielleicht nicht ganz zu Unrecht, schließlich kommt es mit deutlich weniger Features daher. Eher durch Zufall entdeckte ich beim Durchstöbern der Dokumentation das verdammt coole Webtesting Feature – zwar nicht so mächtig wie Selenium (das ja u.a. einen echten Browser fernsteuern kann), aber für kleine Checks durchaus gut zu gebrauchen. Aber der Reihe nach.
SimpleTest installieren
Die aktuelle Alpha-Version 1.1 herunterladen. Zusätzlich noch das File arguments.php direkt aus dem SVN herunterladen und ins simpletest-Verzeichnis stecken. Das wurde anscheinend in der alpha vergessen und führt sonst zu einem Fehler.
Test anlegen
Auf der selben Ebene des simpletest-Ordners erstellen wir eine Datei:
require_once 'simpletest/autorun.php';… Den ganzen Post lesen
Veröffentlicht unter php, Quicktips, webdev
2 Kommentare
Best-of-the-Web 7
Und erneut gibt es Link-Spaß für die ganze Familie.
- The importance of being versioned – Wie sollte man APIs sinnvoll versionieren, sodass man sie später noch umbauen kann?
- SOLID for packag… err, namespaces – Die SOLID-Prinzipien zusammengestellt und kurz erklärt
- Automate your Projects with Apache Ant – „For Dummies“-Tutorial über Apache Ant und wie das Java-Tool auch für Webentwickler brauchbar sein kann.
- HTML5 tests – inputs – Welcher Browser kommt mit welchem Input klar?
- Pinned Sites with Internet Explorer 9 and Windows 7 – Wie man das IE9 Feature „Pinned Sites“ nutzt.
- How unique – and trackable – is your browser?
Veröffentlicht unter php, Javascript, Software Engineering, Best of the Web, webdev
Hinterlasse einen Kommentar
Javascript: Arrays kopieren
Banale Aufgabe: Erstelle eine unabhängige Kopie von einem Javascript-Array. Was erstmal billig klingt entpuppt sich für unwissende, PHP verwöhnte Entwickler doch als tricky.
var colors = ["red", "blue", "green"]; var copied = colors; copied[0] = "magenta"; console.log(colors); //["magenta", "blue", "green"] console.log(copied); //["magenta", "blue", "green"]
In diesem Beispiel sehen wir also, dass die vermeintliche Kopie eigentlich das gleiche Element ist. Gleiches gilt entsprechend für das Übergeben eines Arrays als Parmeter an eine Funktion.
var colors = ["red", "blue", "green"]; test(colors); console.log(colors); //["magenta", "blue", "green"] function test(arr) { arr[0] = "magenta"; }
Offensichtlich nicht wie von PHP gewohnt By Value sondern By Reference.… Den ganzen Post lesen
Veröffentlicht unter Javascript, webdev
7 Kommentare
Reingefallen: Wie man sich auf Facebook „Likes“ erschleicht
Ich dachte eigentlich, immun gegen so billige Spielchen zu sein. Aus dem „Ich weiß schon, wo ich hinklicke“-Grund hatte ich auch lange Zeit keinen Virenscanner drauf und fuhr eigentlich immer gut. Gestern hat michs jedoch erwischt – auf Facebook. Also jetzt nicht so richtig erwischt, aber ich habe ein Video geliked, ohne es zu wollen. Erbost ging ich der Sache auf den Grund und war ziemlich schockiert über diese miese Praktik. Aber der Reihe nach.
Es handelt sich „http://ksmp3.de/Guten-Morgen-Schatz-geht-daneben/„. Bitte erstmal nix klicken. Facebook packt den Like-Button sinnvollerweise in ein IFrame, weil man so mit Javascript keinen Klick auslösen kann (Cross Domain Policy).… Den ganzen Post lesen
Veröffentlicht unter Javascript, misc IT, Persönlich
83 Kommentare
Dealing with Trusted Timestamps in PHP (RFC 3161)
This article won’t be pariculary interesting for the most readers. My aim is to help the billions of developers that are confused about dealing with trusted timestamping. If you don’t know what Trusted Timestamps are, carry on.
Explanation of the concept behind Trusted Timestamps
I can’t put it better as Wikipedia (Trusted timestamping) does:
… Den ganzen Post lesenTrusted timestamping is the process of securely keeping track of the creation and modification time of a document. Security here means that no one — not even the owner of the document — should be able to change it once it has been recorded provided that the timestamper’s integrity is never compromised.
Veröffentlicht unter php, Security, webdev
16 Kommentare
PHP WTF #5
…oder: Bei magischen Funktionen gut aufpassen.
class TestingEmpty { public function __get($var) { if ($var == "test_empty") return "Hi there!"; } } $t = new TestingEmpty(); echo $t->test_empty; //Hi there! var_dump(strlen($t->test_empty)); //int(9) var_dump(empty($t->test_empty)); //bool(true) $externalvar = $t->test_empty; var_dump(empty($externalvar)); //bool(false)
Aha, also empty, aber mit String-Length von 9 Zeichen. Nach dem Zuweisen zu einer „wirklichen“ Variable dann auch nicht mehr empty.
Zur Abwechslung wollen wir aber nicht nur meckern, sondern noch konstruktiv zeigen, wie man diesen WTF (der vielleicht garkeiner ist?) behebt:
class TestingEmpty { public function __get($var) { if ($var == "test_empty") return "Hi there!"; } public function __isset($var) { echo "__isset triggered"; if ($var == "test_empty") return true; return false; } } $t = new TestingEmpty(); echo $t->test_empty; //Hi there!… Den ganzen Post lesen
Veröffentlicht unter php, PHP-WTF, webdev
9 Kommentare
Zip-Archive entpacken mit Javascript
Unzippen mit Javascript? Wer sollte sowas wollen? Egal! Es geht, reicht das als Begründung? Und das garnicht mal so schlecht. Wie üblich schmeiße ich gleich mit Code um mich:
<script src="ZipFile.complete.js"></script> <script> var zipFile = new ZipFile("zipfile.zip", readingDoneCallback); function readingDoneCallback(zip) { console.log("Zipfile reading finished! " + zip.entries.length + " files found in zip"); for (var i = 0; i < zip.entries.length; i++) { zip.entries[i].extract(extractCallback); } }; function extractCallback(entry, entryContent) { var filename = entry.name, csize = entry.compressedSize, ucsize = entry.uncompressedSize; console.log("File " + filename + " - comp.: " + csize + ", uncomp.: " + ucsize + "byte"); console.log("File-Content: " + entryContent); } </script>
Simpler Aufbau, logische Implementierung.… Den ganzen Post lesen
Veröffentlicht unter Javascript, Quicktips, webdev
7 Kommentare
Testen mal anders: phpt
phpt ist ein schmuckes, kleines Testframework, welches u.a. auch zur PHP Quality Assurance verwendet wird, um damit PHP-eigene Funktionen in PHP zu testen. Wir beginnen mit einem Beispiel:
--TEST-- My first cool test! --FILE-- <?php class Foobar { public function __construct() { for ($i = 0; $i < 6; $i++) { if ($i % 2 != 0) echo $i; } } } new Foobar(); ?> --EXPECT-- 135
Und das Beste: Mit PEAR kommt der Spaß gleich mit:
Das ists aber lang noch nicht gewesen. Man führe sich folgenden Test zu Gemüte:
--TEST-- Second example: errortesting --FILE-- <?php $foo = array(1, 3) * array(2, 6); ?>… Den ganzen Post lesen
Veröffentlicht unter php, Software Engineering, webdev
3 Kommentare
Systemaufrufe, Linux, Windows, Rückgabewerte und der Errorstream
Heute folgendes Problem gehabt: Es soll ein Systemaufruf an openssl ts zur Signierung von Timestamps (siehe hier) erfolgen. Das an sich ist ja erst mal noch kein Problem. Allerdings soll die geschriebene Klasse gleichermaßen unter Linux und Windows mit möglichst aussagekräftigen Fehlermeldungen zum Einsatz kommen. Jetzt ist die pikante Sache daran, dass der ts-Parameter von openssl erst ab Version 0.99 mit dabei ist, die standardmäßig unter Debian Lenny nicht mit installiert ist. Jetzt erzeugt netterweise ein Aufruf von openssl ts einen Returnwert von 0 (= alles okay), obwohl openssl den ts-Befehl in der installierten Version garnicht kennt – wir haben also keine Möglichkeit über eine Prüfung des Returnwertes alleine über Erfolg oder Misserfolg der Funktion zu entscheiden:
Als Waffe der Wahl haben wir uns nun also für exec entschieden, da shell_exec keinen Returnwert zurückliefert und system / passthru den Programmoutput einfach rausfeueren und nicht returnen.… Den ganzen Post lesen
Veröffentlicht unter php, Quicktips, webdev, Linux
1 Kommentar
Java Applet Tutorial: Applet erstellen, einbinden und mit Javascript ansprechen
Wenn ich an Java Applets denke, ist damit immer ein verstaubtes Web 1.0 – Bild assoziiert, gepaart mit animierten gifs und anderen Schandtaten. Heutzutage haben die Applets ihre Nische gefunden und werden vor allem da benutzt, wo Javascript noch zu langsam / umständlich ist, bspw. mathematische Zwecke. Wir widmen uns dem Thema mal ganz von vorne. Selbst wenn keine Javakenntnisse bestehen, soll man also noch gut folgen können. Soweit der Plan.
Was am Ende bei rumkommen wird
Wir werden ein Java-Applet bauen, das den Inhalt von Ordnern auf dem PC des Users in einer Liste anzeigt. Auch das Löschen von Dateien ist möglich.… Den ganzen Post lesen
Veröffentlicht unter Javascript, webdev, Java
15 Kommentare