ar bg de en es fr id it nl pl pt sv tr zh

de

Unerwartet: def vs. val

Andy

Nach einem Jahr der Blog-Abstinenz heute zur Erfrischung mal ein wenig Scala. Nehmen wir an, wir haben die folgende login-Funktion, die REST-assured nutzt, um HTTP-Requests für einen Login zu tätigen. Zurückgegeben wird ein Tupel mit einem Access-Token und wie lange selbiges gültig ist. def...

Typsicheres verlinken mit Java 8

Andy

Im heutigen Blog-Post geht es um Webrahmenwerke. Genauer: es geht darum, wie man auf typsichere Art und Weise Links zu Controllern erzeugt. Typsicher in dem Sinne, dass man Variablen im Routing nur durch Werte des selben Typs ersetzen kann, den der Controller auch tatsächlich erwartet. Übergibt...

Let's Encrypt!

Andy

Seit heute steht Let's Encrypt als öffentliche Beta zur Verfügung. Mit Let's Encrypt kann sich jeder einfach und kostenlos ein X.509-Zertifikat erstellen lassen. Somit gibt es keine Ausrede mehr, nicht HTTPS zu benutzen. Deswegen versucht dieses Blog auch mit gutem Beispiel voran zu gehen:

Generic Heterogenous Containers Using Super Type Tokens

Andy

Wie man am Titel bereits leicht erraten kann: heute geht es (zum ersten Mal in diesem Blog?) um Java. Genauer: Wie man heterogene Container in Java umsetzen kann. Zunächst zur Idee: Wir wollen eine Klasse Favorites implementieren, in die man seine Lieblingsobjekte speichern und auch wieder abrufen...

Neues bpaste.net: Pinnwand

Andy

ikanobori hat sich die Mühe gemacht und die Software, die auf bpaste.net läuft, komplett erneuert. Dabei hat er auch lange gewünschte neue Features umgesetzt. Außerdem ist bpaste.net damit gleichzeitig auf neue, leistungsfähigere Hardware umgezogen. Neu ist: Man kann Pastes löschen (via einem...

Wie Peter den deutschen Mittelstand rettet

Andy

Das ist Peter[*]. Peter arbeitet beim "Zentrum für Cyber Defence". Das "Zentrum für Cyber Defence" hilft, den deutschen Mittelstand vor Industriespionage zu schützen. Wie er das tut, wird eindrucksvoll in einer (Kurz-)Reportage des br gezeigt: Da der Cyber aber ziemlich groß ist, kann man da...

Blogneustart - Versuch drei

Andy

Nach langer Zeit der Abstinenz, unter anderem ausgelöst durch den Plattentod des Blog-Hosts, habe ich beschlossen mal wieder ein wenig zu bloggen. Wie sich das gehört habe ich also als erstes einmal den kompletten Blog umgebaut. Was hat sich geändert? Das Aussehen! Und mit dem Aussehen auch die...

Neues bpython-Logo

Andy

Leo Hutson war so nett und hat (ohne, dass wir danach gefragt hätten) ein, wie ich finde, sehr gelungenes neues Logo für bpython entworfen: Vielen Dank dafür. Wir haben natürlich die Homepage und die Dokumentation bereits aktualisiert.

nonlocal in Python 2.x

Andy

In Python 3 gibt es ein neues Statement nonlocal, das es erlaubt, bei verschachtelten Funktionen in der inneren Funktion einen neuen Wert an einen lokalen Namen der äußeren Funktion zu binden. In Python 2 war es nur möglich, sich auf einen lokalen Namen der äußeren Funktion zu beziehen. Note Der...

Tipp: verbose logging

Andy

Bevor man stundenlang nach scheinbar obskuren Fehlern sucht: Einfach einmal schauen, ob die Software detailiertere Logging-Optionen kennt und dann den Log aufmerksam lesen.

Skripte automatisch ausführbar machen

Andy

Einfach (add-hook 'after-save-hook 'executable-make-buffer-file-executable-if-script-p) zur Konfiguration hinzufügen, dann werden Dateien mit Shebang automatisch beim Speichern ausführbar gemacht.

If you're patient...

Andy

...and you wait long enough... nothing will happen. Aus: Garfield, Comic vom 23.03.2004

Ausgabe in der Python-REPL abschneiden

Andy

Dazu benutzt man einfach sys.displayhook. bpython und Python führen beim Starten die Datei aus, auf die die Umgebungsvariable PYTHONSTARTUP zeigt. Man kann sich also einfach eine Datei mit folgendem Inhalt anlegen: import __builtin__ import sys def displayhook(value): if value is not...

eval() in Python ist nicht sicher

Andy

Häufig findet man Leute, die gerne mathematische Ausdrücke in Python evaluieren wollen. Dabei kommen sie auf die Idee, dass man dazu ja eval() benutzen könnte. Und damit das ganze auch noch sicher ist, übergibt man eigene globals und locals, in den man optimalerweise __builtins__ auf None setzt,...

Hardwarebreakpoints und GDB

Andy

Wenn man sich wundert, wie man mit gdb lustig Hardwarebreakpoints setzen kann, obwohl x86 eigentlich nur vier unterstützt: Die Manual klärt auf. Since they depend on hardware resources, hardware breakpoints may be limited in number; when the user asks for more, GDB will start trying to set...

tail call optimization in CPython

Andy

CPython unterstützt ja bekanntermaßen keine TCO von sich aus, weshalb es zahlreiche mehr oder weniger schöne Hacks gibt, die das CPython beibringen. Aber einen wirklich beeindruckenden habe ich eben in #python auf Freenode gesehen, geschrieben von habnabit. Und zwar wird der Bytecode geändert,...

eval in Erlang

Andy

Der Code vom erl_eval-Modul von Erlang/OTP, der fun-Ausdrücke implementiert (kann man in lib/stdlib/src/erl_eval.erl finden): %% This is a really ugly hack! F = case length(element(3,hd(Cs))) of 0 -> fun () -> eval_fun(Cs, [], En, Lf, Ef) end; 1 -> fun (A) -> eval_fun(Cs, [A],...

Rubber Duck method of debugging

Andy

Beg, borrow, steal, buy, fabricate or otherwise obtain a rubber duck (bathtub variety) Place rubber duck on desk and inform it you are just going to go over some code with it, if that's all right. Explain to the duck what you code is supposed to do, and then go into detail and explain things...