Der kleine Unterschied

Man beachte den kleinen Unterschied zwischen PHP und Python, der mich einige Zeit erstmal gekostet hat:

PHP:

<?php
class T {
    var $x = array();
}
$a = new T();
array_push($a->x, 1);
echo count($a-&gt;x); // <strong>Ausgabe: 1</strong>
$b = new T();
array_push($b-&gt;x, 2);
echo count($b-&gt;x); // <strong>Ausgabe: 1</strong>

Dagegen ein nahezu äquivalentes Konstrukt in Python:

class T:
&nbsp;&nbsp;&nbsp;&nbsp;x = []
a = T()
a.x.append(1)
print len(a.x) # <strong>Ausgabe: 1</strong>
b = T()
b.x.append(2)
print len(b.x) # <strong>Ausgabe: 2</strong>

Die Erklärung findet sich übrigens hier:

Objects have individuality, and multiple names (in multiple scopes) can be bound to the same object. This is known as aliasing in other languages. This is usually not appreciated on a first glance at Python, and can be safely ignored when dealing with immutable basic types (numbers, strings, tuples). However, aliasing has an (intended!) effect on the semantics of Python code involving mutable objects such as lists, dictionaries, and most types representing entities outside the program (files, windows, etc.).

So sehen Sieger aus

Die offiziellen Bilder des Wahlgewinners der letzten US-Wahlen kennt wohl jeder.

Barack Obama - CC by-nc-sa

Aber es gibt auch privatere Bilder:

http://flickr.com/photos/barackobamadotcom/sets/72157608716313371/

Abgesehen davon, dass solche Einblicke in Barack Obamas Privatleben wohl in Zukunft schwieriger werden, ist auch noch eine andere Tatsache faszinierend: Nämlich dass alle Bilder unter der Creative Commons by-nc-sa-Lizenz stehen. Damit darf jeder diese Bilder für eigene, nicht-kommerzielle Zwecke weiterverwenden. Also Künstler, Homepage-Betreiber, etc.

Dass für www.barackobama.com Linux zum Einsatz kommt, ist ja schon länger bekannt.

Ein Schritt in eine bessere Welt … Hoffentlich zumindest.

Safe ’n‘ Simple

Security is hard

Sicherheit ist nicht einfach. Dies gilt allgemein, aber auch und insbesondere für Linux-Systeme. Denn wenn man – wie man es machen sollte – die /tmp-Partition mit noexec einbindet, so kommt es des öfteren vor, dass aptitude bzw. apt-get Probleme haben, da auf /tmp Skripte ausgeführt werden sollen.

Das hat mich bei der Aktualisierung eben wieder angenervt, weswegen ich endlich mal nach einer Lösung gesucht habe. Gefunden habe ich http://www.debian-administration.org/articles/57 , hier ganz kurz die Punchline des Artikels:

Add the following to the file /etc/apt/apt.conf:

DPkg::Pre-Install-Pkgs {"mount -o remount,exec /tmp";};
DPkg::Post-Invoke {"mount -o remount /tmp";};

Ich hoffe, das funktioniert auch wirklich. Beim nächsten Update werde ich es erfahren.

Global Solutions!?

Acting Globally – that usually means, that a company acts everywhere, right? Well, what about they act for everybody? Shouldn’t that be a part of calling oneself „global“? If so, at least one big, German company doesn’t get it:

PS: The site does not really work with Firefox, either. That’s why I tried Opera in the first place.

Snake-o-matic

During my final diploma thesis, I need to collect a lot of data. Something like website-scraping, though a little bit different. Anyway, I needed (and still do need) some scripting language. I could have taken Perl, PHP, Ruby, … But no, there is also a snake present – so I decided to use Python as my language of choice.

So far, I did not regret this choice for a single second! Although I never used it before, I can now, after only a few hours of actual scripting write complete scripts without having to test them a single time. It makes scripting real fun again.

Oh, and gnuplot-py makes it even visually attractive for non-programmers 😉