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
Meine ultimativen Buchempfehlungen
Im Verlaufe der letzten 5 Jahre habe ich Audible reich gemacht und dabei ausgiebig trainiert, Hörbücher auf x2.5 zu hören – Lesen ist nämlich nicht so mein Ding. Da ich häufiger mal gefragt werde, welche Buchempfehlungen ich habe sind hier meine aktuellen Favourites zusammengestellt. Viel wichtiger, als die Bücher zu hören/lesen ist, sich daraus auch etwas mitzunehmen und tatsächlich anzuwenden. Wie ich da vorgehe ist dann Stoff für einen weiteren Blogpost.
Ultimative Empfehlung
- The 7 Habits of Highly Effective People (Deutsch: Die 7 Wege zur Effektivität) – der ultimative Klassiker. Wenn du nur ein Buch lesen willst, lese das hier. Es ist erstaunlich, wie viele andere Bücher auf dem Klassiker von Stephen Covey aufbauen.
Veröffentlicht unter Persönlich
3 Kommentare
Passiert hier noch was?
Zwischen den Jahren 2009 und 2016 sind hier 133 Beiträge entstanden, die allermeisten mit dem Themenschwerpunkt „Webentwicklung“. Und das aus gutem Grund. Warum ist in den letzten Jahren hier kein Artikel mehr erschienen? Und warum wird das voraussichtlich auch so bleiben? Was folgt, ist eine ziemlich persönliche Beschreibung meines Werdegangs. Nimm‘ dir einen Kaffee, atme tief durch und los geht’s.
Etwa 2006 mit zarten 17 Jahren startete ich als Freelance Webdev, damals noch parallel zum Abitur am Beruflichen Gymnasium Gelnhausen, Fachbereich Datentechnik. 2009 bin ich dann zum Studieren aus dem beschaulichen Wächtersbach-Hesseldorf in Mittelhessen mit ~700 Einwohnern ins etwa 80km entfernte Darmstadt gezogen – zum Informatik studieren an der Hochschule Darmstadt.… Den ganzen Post lesen
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
IE11 kommt getarnt daher
Browser melden sich traditionell und historisch bedingt mit ziemlich kryptischen Namen. Mein aktueller Chrome z.B.:
Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22
Der Brauch, so viel wie möglich Buzzwords in den String navigator.userAgent zu packen entspringt dem Browsersniffing. Sollte ein Webentwickler nach Gecko (Rendering-Engine von Firefox) suchen und dann einen gewissen Inhalt ausliefern, wären andere Browser benachteiligt. Und deshalb finden sich eben in jedem Browsername alle Bezeichnungen wieder.
Im neuen IE11 aus der geleakten Windows Blue-Version springt jetzt auch Microsoft auf den Zug auf:
Mozilla/5.0 (IE 11.0; Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko
Die 4 Buchstaben MSIE, nach denen gerne geflitert wurde, sind verschwunden.… Den ganzen Post lesen
Veröffentlicht unter Javascript, Quicktips, webdev
1 Kommentar
Browserscope
Browserscope is a community-driven project for profiling web browsers. The goals are to foster innovation by tracking browser functionality and to be a resource for web developers.
So zumindest der Hersteller. Im Grunde geht’s darum: Ich packe mir ein kleines Script von Browserscope auf die Webseite und kann diesem dann verschiedene Parameter übergeben, die typischerweise etwa A/B-Tests sind oder Browser-Feature-Prüfungen der Benutzer meiner Webseite. Die Informationen werden dann an Browserscope übertragen und schön übersichtlich dargestellt. Super, wenn ich etwa testen will, wann ich ein Feature für alle Besucher meiner Webseite freischalten kann.
Wie funktionierts?
Sign In rechts oben mit dem Google-Account.… Den ganzen Post lesen
Veröffentlicht unter Javascript, 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
Cross Domain AJAX Guide
As it is widely known, AJAX Requests are only possible if port, protocol and domain of sender and receiver are equal. This means, that the following requests generally won’t work:
- Requesting https://foo.bar/target.php from http://foo.bar/source.php
- Requesting http://sub.foo.bar from http://foo.bar
- Requesting http://foo.bar:5000 from http://foo.bar
Having this cleared out, we will cover ways around this restriction.
CORS
CORS stands for Cross-origin resource sharing and has to be supported on the server side. If we take jQuery, the requesting side will look like this:
$.ajax({ type: 'POST', url: 'http://d1303.de/remote/cors.php', crossDomain: true, data: "my_request_is=foo", dataType: 'json', success: function(responseData, textStatus, jqXHR) { console.log(responseData);… Den ganzen Post lesen
Veröffentlicht unter Javascript, webdev
18 Kommentare