Es wird Zeit, dass ich über Liu Cixins "The Three-Body Problem" schreibe, einen Science Fiction-Roman, der ganz zu recht den letztjährigen Hugo-Award gewonnen hat, einen der wichtigsten Preise für Science Fiction-Literatur. Und das, obwohl chinesische Science Fiction den meisten bisher wohl kaum bekannt war und auch in China selbst keinen hohen Stellenwert genießt, wie Liu Cixin schreibt.
"The Three-Body Problem" ist der erste Teil einer Trilogie, deren ersten beiden Bände bereits aus dem Chinesischen ins Englische, jedoch noch nicht ins Deutsche übersetzt wurden. Eine deutsche Ausgabe des Buches ist aber bereits für September bei Heyne angekündigt. Ich habe "The Three-Body Problem" und Teil 2, "Dark Forest", vor einigen Wochen gelesen.
Das titelgebende Dreikörperproblem ist ein Phänomen, bei dem drei Himmelskörper sich durch die Gravitationskräfte gegenseitig anziehen und abstoßen, und zwar nicht etwa regelmäßig, sondern chaotisch. Eine Welt, auf der intelligentes Leben existiert, kann sich unter drei Sonnen auf keine festen Klimaperioden verlassen.
Wer eine PHP-Anwendung entwickelt, die Mails versendet, möchte natürlich, dass diese Mails auf dem Entwicklungsrechner oder der Vagrant-Box nicht wirklich den Empfänger erreichen. Aber dennoch sollen sie irgendwo ankommen, damit Versand und Inhalt geprüft werden können.
Symfony schlägt vor, den E-Mail-Versand in der Test- und ggf. in der Development-Umgebung ganz zu deaktivieren, oder alternativ eine spezielle E-Mail-Adresse für solche Fälle einzurichten.
Ich wollte für eine Legacy-Anwendung, die Mails mittels der PHP-Funktion mail() versendet, aber lieber einen lokalen Mailcatcher verwenden, der die Mails in der Entwicklungsumgebung abfängt.
Es gibt da was für Ruby, aber nachdem die Installation immer noch nicht abgeschlossen war, als ich mit dem Kaffee aus der Küche zurückkam, habe ich das verworfen und mich nach einer Alternative umgesehen. Und gefunden:
Was man so tut, wenn man in Dezembernächten nicht schlafen kann (oder will).
Advent of Code
Advent of Code ist eine Serie von amüsanten Programmier-Aufgaben, die allerdings teilweise gar nicht ohne sind. Vom 1. bis zum 25. Dezember wurden täglich jeweils zwei Rätsel veröffentlicht, für jede richtige Lösung gab es virtuellen Baumschmuck und einen Platz in der Highscoreliste. Die Programmiersprache und der Weg zum Ergebnis waren dabei egal.
Nachdem ich auf meinem Entwicklungsrechner seit kurzem PHP 7 installiert habe, wollte ich einige (meiner) Projekte mit Hilfe des Code-Analyzers Phan, von dem vor dem Release der neuen PHP-Version schon einiges zu lesen war, auf Fehler untersuchen. Phan muss zwar unter PHP 7 ausgeführt werden, kann aber auch ältere Projekte, die beispielsweise für PHP 5.x entwickelt wurden, inspizieren.
Installation
Bevor es an die Installation von Phan geht, sind einige Voraussetzungen zu erfüllen: Insbesondere wird natürlich PHP 7 benötigt, zusätzlich aber auch die Extension php-ast, die den abstract syntax tree aufzeigen kann. Der Abstrakte Syntaxbaum (AST) ist neu in PHP 7 und stellt sozusagen einen Zwischenschritt dar, bei dem der PHP-Code in besser optimierbare Ausdrücke umgewandelt wird. Wie das bei HHVM im Detail aussieht, hat Sara Golemon ausführlich beschrieben. Zum Einlesen in die PHP-Implementierung ist der zugehörige RFC ein guter Einstiegspunkt.
Seit wenigen Minuten befindet sich Let's Encrypt in der öffentlichen Beta-Phase. Das bedeutet, dass nun keine Einladung mehr benötigt wird, um sich dort ein kostenloses Zertifikat ausstellen zu lassen.
Installation von Let's Encrypt
Wer auf seinem Server nicht die Möglichkeit hat, Let's Encrypt zu installieren, oder dies aus Gründen nicht tun möchte, kann sich das Tool auch einfach lokal installieren. Ich habe die Installation bei mir lokal unter Ubuntu 15.10 (Wily Werewolf) durchgeführt.
Let's Encrypt muss zunächst aus dem GitHub-Repository geklont werden und bringt ein Installations-Skript mit, welches das Tool in einer virtuellen Umgebung (virtualenv) installiert. Dadurch werden Abhängigkeiten zum Betriebssystem vermindert. Für die Installation werden root-Rechte benötigt.
$ git clone https://github.com/letsencrypt/letsencrypt $ cd letsencrypt $ ./letsencrypt-auto
Auf meinem System mussten zunächst noch die fehlenden Pakete augeas-lenses libaugeas0 python-chardet-whl python-colorama-whl python-html5lib-whl python-pip-whl python-requests-whl
python-setuptools-whl python-virtualenv python3-virtualenv virtualenv nachinstalliert werden, das kann bei euch natürlich ganz anders aussehen. Danach wird die virtuelle Umgebung erzeugt und letsencrypt installiert.