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.
Den ganzen Post lesen
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

Veröffentlicht unter Persönlich | Verschlagwortet mit , , | 1 Kommentar

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.
Den ganzen Post lesen
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…

Den ganzen Post lesen
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