startafire

That blog about stuff.

Ubisoft Uplay Fail
2012-11-27 19:41

 

Da wollte ich nur noch fix From Dust fertig spielen, bevor ich mich an andere Spiele wage. Also fix in Steam gestartet, kurz die Aktualisierungen abgewartet und dann? Dann ploppt plötzlich Uplay auf. Und Uplay will nicht, dass ich einfach so ein ehrlich erworbenes Spiel spiele.

Uplay will, dass ich mich registriere. Obwohl ich doch schon bei Steam registriert bin. Und Uplay erlaubt mir auch keinen Start im Offline-Modus, schließlich bin ich ja am Internet angeschlossen und es spricht nichts dagegen, dass ich der vertrauenswürdigen Firma Ubisoft meine Daten geben. Sind ja nette Leute. Und haben vermutlich im Hintergrund bereits ein Rootkit installiert, das verhindert, dass ich mit meinem Rechner und der darauf befindlichen Software mache, was ich will. Vermute ich mal.

Wie kommt Ubisoft eigentlich immer auf solche Schwachsinnsideen? Ubisoft, ihr habt bereits Geld für From Dust bekommen! Wieso darf ich es dann nicht spielen?

Ich wünsche dem, der diesen Mist zu verantworten hat, Eiterpickel, erforene Gliedmaßen und finanziellen Ruin. Achja, und dass er nackt durch die Straßen getrieben wird und von jedem gegängelten Spieler mit Schuhen beworfen werden darf.

rsync
2012-10-31 22:37

Kleiner Notizzettel für mich, wenn ich mal wieder auf der Suche nach rsync-Settings bin:

rsync -vurhin /from/42/ /to/foo/bar/

Wobei das n für einen Testlauf sorgt, ohne dass wirklich Dateien kopiert werden.

So geht es vielen Kindern...
2012-10-16 17:25

Standardmäßig Crunchbang mit systemd booten
2012-09-14 21:20

Nachdem mich der Talk zu systemd auf den MRMCD begeistert hat, will ich natürlich ausprobieren, wie es sich im regelmäßigen Betrieb anfühlt. Ausgewählt wurde dafür mein mit Crunchbang laufenden Netbook, welches systemd bereits in den Paketquellen hat:

sudo apt-get install systemd

Anschließend füge ich meiner /boot/grub/grub.cfg einen neuen Booteintrag hinzu. Dafür kopiert man sich einen alten Booteintrag und ergänzt die Zeile, in welcher der Kernel geladen wird, um ein init=/bin/systemd, so dass sie ungefähr so aussieht:

linux   /boot/vmlinuz-3.2.0-3-686-pae root=UUID=acab-1234 ro  quiet init=/bin/systemd

Der Neustart zum Testen verriet mir, dass alles geklappt hat. Nur will ich ja nicht jedes Mal, wenn sich meine grub.cfg ändert, die Datei von Hand bearbeiten müssen.

Das kann man umgehen, indem man in /etc/default/grub die Konstante GRUB_CMDLINE_LINUX_DEFAULT um "init=/bin/systemd" erweitert:

GRUB_CMDLINE_LINUX_DEFAULT="quiet init=/bin/systemd"

Nun wird bei jeder Ausführung von update-grub festgelegt, dass mit systemd gebootet werden soll - und unser System macht es mit Freude! ;)

Diese Anleitung sollte sich auf so ziemliches jedes System mit Grub2 & systemd übertragen lassen.

MRMCD 12
2012-09-10 22:01

Vergangenes Wochenende war ein gutes Wochenende, denn es waren die MetaRheinMain Chaosdays - kurz MRMCD. Meine ersten, aber sicher nicht die letzten.

Es hing gelegentlich an ein paar Ecken, aber die Organisatoren waren sehr bemüht ein gutes Event zu veranstalten und das ist ihnen auf jeden Fall geglückt. Es gab interessante Vorträge zu vielen Themen, die vom guten Wetter reichlich Konkurrenz gemacht bekamen. Egal ob man sich in der Sonne lenzte oder daheim blieb, die meisten Vorträge wurden aufgezeichnet und sind vermutlich bald online verfügbar. Ich werde dann versuche mir noch Git in Depth, Men who stare at bits (again), die Vorstellung von You are Hero und Android or: How I Learned to Stop Worrying and Love SSL anschauen. Und ich hoffe, dass es der Demo-Vortrag auch in irgendein Aufnahmegerät geschafft hat, der interessiert mich nämlich sehr!

Von den gesehenen Talks will  ich euch den zu systemd und Ausgewählte Kriminalfälle aus der Computer-Forensik nahe legen. Systemd finde ich nach dem Vortrag noch interessanter, weil ich es bisher nur als Ersatz für  SysVinit sah, mir aber da einige sehr coole Features gezeigt wurden.

Neben den Vorträgen gab es noch ein gut besuchtes Hackcenter. Ich habe mir mal den 3D-Drucker des RZL anschauen können und ein nettes Gespräch dazu gehabt. Defintiv eine tolle Sache - es wird Zeit für Makerbots in jedem Haushalt!

Letztendlich gabs auch eine ganze Reihe von netten und liebevollen Menschen, die dafür sorgen, dass ich den Besuch beim MRMCD in guter Erinnerung haben werde - und auch nächstes Jahr wieder teilnehmen möchten. Ihr wisst wer ihr seid!

Video der Sprengung einer 250kg Fliegerbombe in München
2012-08-29 08:22

Gestern Nacht wurde eine 250kg Fliegerbombe - ein Überbleibsel aus dem 2. Weltkrieg - in München kontrolliert gesprengt. Simon Aschenbrenner hat die Sprengung aus ca. 300m Entfernung festgehalten.

Sprengung der Fliegerbombe / Schwabing, München / 28.8.2012 from Simon Aschenbrenner on Vimeo.

Ich will nicht wissen was passiert, wenn so eine Bombe unkontrolliert explodiert. Hier wurde versucht die zerstörerische Kraft der Bombe durch Stroh und Sandsäcke abzuschwächen und trotzdem ist die Explosion aus weiter Entfernung gut sichtbar.

Jenkins & Python: Code Coverage
2012-08-27 20:34

Dies ist eine kleine Ergänzung zu Jenkins & Python.

Nachdem wir bereits wissen, wie man Tests automatisch durch Jenkins ausführen lassen kann, ist es auch interessant zu wissen, welche Stellen unseres Codes bereits durch entsprechende Tests abgedeckt werden.

Zur Anzeige der Abdeckungsinformationen benötigen wir ein weiteres Plugin. Ich habe mich für Cobertura entschieden. Cobertura liest als XML-Datei vorliegende Reports ein und erstellt daraus Grafiken und aussagekräftige Code-Anzeigen, welche Teile noch abgedeckt werden müssen - oder es bereits sind.

Zur Ermittlung wird das coverage-Modul verwendet. Glücklicherweise bietet nose bei installiertem coverage die Möglichkeit bei unseren Tests entsprechende Daten zu sammeln. Aber Vorsicht: für alle Module, die noch nicht durch Tests berührt sind, findet keine Coverage Anzeige statt.

Wir modifzieren also unseren Build-Schritt so, dass er neben nose auch coverage installiert:

pip install coverage

Und nun müssen wir den folgenden Schritt noch anpassen

nosetests --with-xunit repo/tests/

so dass wir auch einen Report bekommen. Das sieht dann so aus:

nosetests --with-coverage --with-xunit repo/tests/

Anschließend finden wir aber nur eine .coverage-Datei im Workspace vor. Es fehlt noch eine Konvertierung in das von Cobertura lesbare XML. Dies erreichen wir durch eine neue Zeile in unserem  Build-Schritt:

coverage xml

Anschließend können wir unser Projekt so konfigurieren, dass es die Datei einliest und auswertet. Dazu weisen wir unser Projekt an die Cobertura-Testabdeckung zu veröffentlichen und geben als Datei mit Testergebnissen **coverage.xml an.

Das wars auch schon. Hier noch einmal den Build-Schritt in voller Eleganz:

virtualenv pyenv

. pyenv/bin/activate



pip install pep8

pip install pylint

pip install nose

pip install coverage



pip install -r repo/requirements.txt



PYTHONPATH=$WORKSPACE/repo:$PYTHONPATH

export PYTHONPATH



pylint --output-format=parseable repo/ > pylint.txt || echo 'pylint did not finish with return code 0'

pep8 repo/ > pep8.txt || echo 'pep8 did not finish with return code 0'

nosetests --with-coverage --with-xunit repo/tests/

coverage xml

Python: this
2012-08-20 22:28

Dass man mit import this den Inhalt von PEP 20 lesen kann, ist in Python-Kreisen bereits bekannt.

Aber für was sind die Objekte c, d, i und s im this-Modul?

Für d und s habe ich bereits eine "Anwendung" gefunden:

print ''.join([this.d.get(character, character) for character in this.s])

Aber was macht man mit c und i?

pyUGRM und die Google Groups Mailingliste
2012-07-24 21:11

Seit mehr als zwei Monaten gibts im Rhein-Main-Gebiet eine Python Usergroup: PyUGRM. Eine absolut wunderbare Möglichkeit sich mit netten Menschen über Python zu unterhalten und neue Dinge zu lernen.

Die noch junge Gruppe hat zwei Mailinglisten, eine für Termine & andere "offizielle" Bekanntmachungen und eine normale Mailingliste zur Kommunikation. Diese wollte ich nun abonnieren - und zwar ohne mich dafür bei Google anzumelden. Eben ganz klassisch per Mail-Programm.

Nachdem mich die Google Hilfe erstmal im Dunkeln lies, habe ich die Info dann hier gefunden.

Wenn der Link zu meiner Gruppe http://groups.google.com/group/pyugrm-orga ist, dann ist der Name meiner Gruppe pyugrm-orga. Nun kann ich folgende Adressen verwenden:

  • allgemeine Adresse (z.B. zum Posten): <gruppenname>@googlegroups.com
  • zum Anmelden: <gruppenname>+subscribe@googlegroups.com
  • zum Abmelden: <gruppenname>+unsubscribe@googlegroups.com

Zum Anmelden an die Orga-Liste musste ich also einfach eine Mail an pyugrm-orga+subscribe@googlegroups.com schicken. Manchmal ist es so einfach :)

Opera: Schnelle Blocklist-Einrichtung
2012-07-18 17:13

Ein wenig bekanntes Feature von Opera sind die Adblocking-Funktionen, die der Browser bereits von Haus aus mitbringt. Was noch fehlt sind Informationen über die zu blockenden Seiten. Die findet man z.B. bei pgl:bits. Wenn man nun noch weiss, dass Opera standardmäßig versucht eine Blockliste aus ~./opera/urlfilter.ini zu lesen, dann kann man den Download mit einem simplen Einzeiler machen.

wget "http://pgl.yoyo.org/as/serverlist.php?hostformat=operafilter&showintro=1&startdate%5Bday%5D=&startdate%5Bmonth%5D=&startdate%5Byear%5D=&mimetype=plaintext" -O ~/.opera/urlfilter.ini

Falls Opera schon läuft, greifen die Settings erst nach einem Neustart.