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 der Kategorie: php
Best-of-the-Web 13
Nach längerer Downtime wieder eine Reihe an lesenswerten Materialien querbeet. Durch meine neuen Aufgaben im Job wird das Spektrum etwas breiter und entfernt sich perspektivisch vom Fokus der reinen Webentwicklung. Aber dazu später noch mehr.
- More Responsive Tapping on iOS – Aktuelle Entwicklungen im Safari bezogen auf das Click-Delay. Auf Arbeit verwenden wir übrigens bei geeigneten Projekten zur großen Zufriedenheit Crosswalk zusammen mit Cordova. Crosswalk bringt die Blink Engine von Chrome/Chromium mit und integriert diese gewissermaßen in die App. Das führt auf Android Geräten dazu, dass auf allen Geräten die gleiche, moderne Rendering-Engine zum Einsatz kommt. Und das auch, wenn bspw.
Veröffentlicht unter php, Javascript, Best of the Web, webdev
Hinterlasse einen Kommentar
PHP Hashes und ihre Probleme
Ein schon ein etwas älteres Phänomen, welches mir demletzt erneut über den Weg gelaufen ist und ich es deswegen für „verbloggenswert“ halte:
if (md5('240610708') == md5('QNKCDZO')) { echo "yep equal"; }
Ups? Eine MD5-Kollision? Nein. Eine Eigenart von PHP.
var_dump(md5('240610708')); //string(32) "0e462097431906509019562988736854" var_dump(md5('QNKCDZO')); //string(32) "0e830400451993494058024219903391"
2 verschiedene Strings, die aber laut PHP-Vergleich identisch sein sollen? Genau da liegt der Knackpunkt: Die Strings sind gleich, aber nicht identisch. Da beide mit 0e anfangen, werden sie als Exponentialdarstellung einer Zahl aufgefasst. Und da 0irgendwas immer 0 ergibt, sind die beiden Hashes im Vergleich auch gleich.
Das „Problem“ lässt sich einfach lösen, indem mit === verglichen wird.… Den ganzen Post lesen
Veröffentlicht unter php, Security, Quicktips, webdev
1 Kommentar
PHP 7 Migration
Nun war es also Zeit, diesen beschaulichen Server auf PHP7 zu heben.
Die Installation
… lief straight forward, wie man es gewohnt ist. Hier läuft ein Apache 2 mit mod_php auf (aktuell) Ubuntu 15.04, also das absolute Standardsetup. Da PHP7 standardmäßig noch nicht in ubuntu enthalten ist, müssen wir vom ppa von ondrej Gebrauch machen, welches sowohl PHP5.6 als auch PHP7 beinhaltet und regelmäßig aktualisiert wird.
apt-get -y purge php5 libapache2-mod-php5 php5 php5-cli php5-common apt-get --purge autoremove apt-get update apt-get install python-software-properties add-apt-repository ppa:ondrej/php-7.0 sudo apt-get install php7.0 php7.0-dev php7.0-mysql php7.0-gd php7.0-curl php7.0-sqlite php7.0-intl php -v service apache2 restart
Läuft, bei mir folgende Ausgabe:
PHP 7.0.1-4+deb.sury.org~vivid+1… Den ganzen Post lesen
Veröffentlicht unter php, webdev
Hinterlasse einen Kommentar
Best-of-the-Web 12
Neue Linkwelle, gab ja so einige spannende Sachen seit der letzten…
- Authenticate Users with Mozilla Persona – Insights in Mozilla Personas, dem Login-Konzept mit einigem Potenzial.
- The state of meta programming in PHP – Reflection ist ja bekannt, hier gehts um Low-Level-Mechanismen auf Basis von Grammatiken und Syntaxbäumen.
- ACLs and Symfony2 – Nicht nur für Verwender von Symfony 2 interessant: Ganz schöner Einblick in die Funktionsweise von Access Control Lists generell.
- How to Use the Webshims Polyfill – Eine Suite an Polyfills (= JavaScript Fallbacks für Browser, die noch nicht nativ mit HTML5-Elementen klarkommen).
- PHP Assertions – Wann und warum man PHP Assertions (nicht) benutzen sollte.
Veröffentlicht unter php, Javascript, Performance, Best of the Web, webdev
Hinterlasse einen Kommentar
Quicktip: Mehrere Attribute auf einmal anlegen
Erspähte ich neulich im Quellcode von Symfony 2 – mir war vorher nicht bewusst, dass das möglich ist.
class Foo { protected $var1 = "1234", $var2 = "4567", $var3; public $var4, $var5 = false; private $var6; }
Gefällt mir besser als die mehrfache, wiederkehrende Verwendung des gleichen Schlüsselworts. Nur unpraktisch bezogen auf Docblocks.… Den ganzen Post lesen
Veröffentlicht unter php, Quicktips, webdev
2 Kommentare
Facebook „ordered friends“ – Eure Freunde/Stalker nach „Wichtigkeit“ ausgeben
Update: Timon hat mich in den Kommentaren darauf aufmerksam gemacht, dass die Auflistung umbenannt wurde und nun InitialChatFriendsList heißt. Auch die Sortierung hat sich bei mir geändert.
Im Javascript-Quelltext der Facebook-Profilseite befindet sich der Abschnitt „OrderedFriendsListInitialData“. Hierdrin sind die Profil-IDs aller eurer Freunde nach zugemessener „Wichtigkeit“ absteigend geordnet.
Wie Facebook dies genau bemisst, bleibt natürlich im Verborgenen. Höchstwahrscheinlich wird anhand dessen auch justiert, wieviel ihr von welchem Freund im Stream seht. Da wir mit den Profil-IDs alleine natürlich wenig anfangen können, musste ein kleines Script her, welches die Auflösung übernimmt:
$friends = array("1234567891011", "23456789101112", ...); foreach ($friends as $i => $friend) { $c = file_get_contents("http://graph.facebook.com/$friend");… Den ganzen Post lesen
Veröffentlicht unter php, Javascript, webdev
10 Kommentare
PHP WTF #10
Vorsicht! Microtime liefert negative Ergebnisse!
<?php $start = microtime(); $i = 1000; while ($i--) { //do stuff } $end = microtime(); echo 'Took ' . $end - $start . ' seconds';
Okay, durchatmen. Wo liegt der Fehler? Kenner bemerken vielleicht, dass das Wörtchen Took abhanden gekommen ist. Es geht einfach beim konkatenieren was schief:
<?php echo "Calculating " . 6 + 5 . " is fun!";
Nach Operator-Wertigkeit müssen wir natürlich klammern:
<?php echo "Calculating " . (6 + 5) . " is fun!";
Selbiges Problem tritt auch im Beispiel oben auf. Der Output von microtime() ist Millisekunden (Scriptlaufzeit) Sekunden (time()), also etwa 0.77571900 1350824124.… Den ganzen Post lesen
Veröffentlicht unter php, PHP-WTF, webdev
Hinterlasse einen Kommentar
Best-of-the-Web 11
Nach längerer Zeit mal wieder eine kleine Linksammlung.
- A Closer Look Into PHP Arrays: What You Don’t See – PHP Arrays von allen Seiten beleuchtet mit ein paar Insights in die interne Struktur von PHP selbst.
- PHP to mobile app in 10 minutes … in front of your eyes – Mit Zend Studio und PHP mobile Apps bauen. Livedemo und recht beeindruckend. Wenn bloß der Amateur an der Kamera nicht wäre.
- How to build your own jQuery – Eigene Version von jQuery bauen, die nur das beinhaltet, was wirklich gebraucht wird.
- Avgrund: A modal concept – Mittels CSS3 eine sehr schicke Hinweisbox bauen.
Veröffentlicht unter php, Javascript, Best of the Web, webdev
Hinterlasse einen Kommentar
PHP WTF #9
html_entity_decode verwandelt bekanntlicherweise Entities wie ü oder & in ihre Pendandts ü / &.
var_dump(html_entity_decode("&")); //string(1) "&"
Soviel also dazu, soweit erwartungsgemäß. Enter the weirdness:
<meta charset="utf8"> <?php var_dump(trim(html_entity_decode(" "))); //string(2) " "
Das Manual sagt dazu:
Sie wundern sich vielleicht, warum trim(html_entity_decode(‚ ‚)); den String nicht zu einem leeren Sting reduziert. Der Grund dafür ist, dass ‚ ‚ in der Standard-Kodierung nicht dem Zeichen mit ASCII-Code 32 entspricht (dieses wird von trim() entfernt), sondern dem Zeichen mit ASCII-Code 160 (0xa0).
Genaugenommen verhält sich hier PHP vollkommen korrekt, denn ein Non-Breaking-Space entspricht eben dem ASCII-Code 160. Und der wird leider nicht von trim in der Standardkonfiguration entfernt (siehe 2.… Den ganzen Post lesen
Veröffentlicht unter php, PHP-WTF, webdev
Hinterlasse einen Kommentar
Videoinformationen in PHP auslesen
Ich bin ja extrem begeistert von Libraries, die ihren Zweck genau so erfüllen, wie man es als Anwender / Entwickler wünscht. Die letzte Lobeshymne sang ich auf PHPQRCode, eine exzellente Library, die QR-Codes aus PHP heraus erzeugt.
Hier und heute geht es um einen weiteren Vertreter dieser „Tut genau was sie soll“ – Libraries: getid3. Letztens auf Arbeit sah ich mich mit dem Problem konfrontiert, Videoinformationen auf PHP-Seite auslesen zu müssen und das möglichst ohne Verrenkungen wie mit ffmpeg-php.
getid3 spuckt zu Videos die gewünschten Informationen aus: Datenformat, Codec, Auflösung und Framerate. Dabei zu beachten ist, dass getid3 nur auf den id3-Tags arbeitet und nicht das Video selbst untersucht.… Den ganzen Post lesen
Veröffentlicht unter php, Quicktips, webdev
1 Kommentar