Python – Skriptsprache der Wahl?

Ein Python-Tutorial beginnt mit den Worten: “Python ist eine einfach zu erlernde und mächtige Programmiersprache”. Benannt nach der BBC Serie “Monty Python’s Flying Circus” würde man wohl Obskures aus dem Bereich des schwarzen Humors erwarten – aber der Reihe nach.

Nachdem Python fester Bestandteil im Werkzeugkasten (nicht nur) der Finanzmathematiker und KI-Entwickler geworden ist als auch in zahlreichen offenen und kommerziellen Umgebungen wie der Google AppsEngine oder der beliebten 3D Rendering Engine Blender zu finden ist, lohnt sich ein näherer Blick sicherlich. Python gibt es für alle weit verbreiteten Betriebssysteme und wird derzeit in zwei Versionen, 2.6 und 3.x, gepflegt. Die Fülle an für Python vorhandene Bibliotheken lässt dabei kaum einen Anwendungszweck aus: ganz gleich, ob man mit OpenGL Moleküle in 3D darstellen möchte, Charts von Börsenkursen zeichnen möchte oder numerische Lösungen für lineare (und natürlich auch nicht-lineare) Abhängigkeiten sucht und das ganze in schicken GUIs verpacken möchte, mit relativ wenig Zeilen Pythonprogrammcode ist hier eine ganze Menge möglich.

Ein Beispiel:

reader = csv.reader(urllib.urlopen('http://ichart.yahoo.com/table.csv?s=%5EGDAXI&d=0&e=26&f=2010&g=d&a=10&b=26&c=1990&ignore=.csv'))
values = []

for row in reader:
    values.append(row[1])

values = values[1:].reverse()
grid(True)
plot(values)

Dieses kleine Snippet holt eine CSV Datei mit historischen Werten des DAX von der Yahoo! Finance Plattform, sammelt die gewünschten Werte in einer Liste zusammen und stellt diese dann graphisch auf dem Bildschirm als Chart da.
Beinahe zu einfach – mit einfachen Mitteln kann man dann auch den Chart in verschiedene Richtungen stylen, so dass professionelle Ergebnisse entstehen. Hier ein Beispiel von der matplotlib-Seite:

Aktuell in der Entwicklung befindlich ist Python 3.x – eingefleischte Python-Profis raten allerdings derzeit noch von der Benutzung der 3er Versionen ab. Zum einen sind viele der Bibliotheken noch nicht auf die neueste Version migriert worden, zum anderen ist die Version 2.6 auch in vielen Fällen immer noch einen Tick schneller.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News

Testen mit Datenbank, ganz ohne Odyssee

Kaum eine Anwendung kommt ohne Daten aus einer Datenbank aus, und kaum ein Entwickler möchte ohne die aufs grüne Lämpchen gehenden Unit-Tests an größeren Projekten arbeiten.
Um Datenbanken und Unit-Tests miteinander verheiraten zu können, gibt es mehrere Ansätze.

Natürlich ist der erste und auch gute Ansatz von Unit-Tests, die Bausteine mit hardcodierten Standard-Daten zu penetrieren, die nicht aus einer Datenbank kommen: schließlich ist das Zusammenspiel mit der Datenbank schon ein großer Schritt in Richtung Integrationstest und gibt zeitgleich auch noch die Möglichkeit zu prüfen, ob die Klassen aus der Datenbankschicht wie erwartet funktionieren. Je mehr Variationen an Daten man dahingehend testen möchte, desto dringender wird es, die Methode der datenbank-getriebenen Tests gegenüber denen mit festverdrahteten Eingabeparametern zu präferieren. Und ganz nebenbei bemerkt: man trennt sich auch weiter von der Gefahr, ausschließlich mit idealisierten Daten zu testen, und nimmt dann doch jene Daten zur Brust, die in einem richtigen user-generierten Einsatz gewonnen wurden, ohne mittelfristig mehr Code für die Tests als die eigentliche Auftragsarbeit zu entwickeln.

Durch Ignorieren des Eventuellen werden Unit-Tests schließlich nach und nach immer weniger wert – insbesondere dann, wenn diese falsch positiv auf grün gehen.

Um diesen Wertverlust zu vermeiden, kann man sich eigentlich nur noch behelfen, in dem man die Datenbank wieder an einen wohldefinierten Ausgangspunkt zurückversetzt, mittels einem Script jene Datensätze erzeugt, die Grundlage für die weitergehenden Tests auf der Datenbank werden sollen und anschließend wieder aufräumt, um die Tests bis zur Reife der Programmierung immer und immer wieder anstoßen zu können. Dies kann man natürlich mit der Hilfe von Transaktionen machen: was allerdings bei vielen aufeinander aufbauenden Tests schnell unübersichtlich werden kann.

Einfacher ist es dann doch, sich den Auszug mit einem Vorher-Stand an Testdaten nebenhin zu legen und diese Daten dann vor den Tests einmalig konsistent zu reimportieren. Bei drei Tabellen mag man vielleicht das ganze noch per Hand pflegen. Aber auch hier schon ist es doch wesentlich einfacher und sicherer, auf einen Knopf zu drücken, der einem die aus dem Einsatz entstandenen Daten aus einer Datenbank zieht und zum immer wieder Einspielen archiviert. Auch aus dieser Motivation heraus entstand dbHero – ein schmuckes Tool, welches bei der täglichen Arbeit bei uns nicht mehr wegzudenken ist. Denn getrost kann man mit real-world Tests ein stückweit grüner auf grün gehen.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News

Commodore Kinder

Tage der Kindheit, Limonade und Romantik: und auf dem Fernseher flimmert der vielen so vertraute blaue Startbildschirm des Commodore C=64. Ja, man kann sagen: ich bin ein Commodore Kind. Unbetrübt schaute man sich den Bluescreen an und konnte direkt nach dem Einschalten mit den ersten Programmierversuchen starten. Dass man auch richtiges “Computer Kung Fu” auf dem Commodore konnte, zeigten eindrucksvolle jene Entwickler, die sich in der sog. Demoszene Ruhm und Ehre mit Spezialeffekten verschafften, die für einen kleinen 8-Bit Computer eigentlich technisch undenkbar waren.

Nicht nur, dass er der meistverkaufte Home-Computer aller Zeiten ist, wahrscheinlich ist er auch der am häufigsten emulierte Kleinrechner. Mittlerweile gibt es auch schon eine erste Beta-Version eines C=64 Emulators für Microsoft Silverlight. So bleibt zumindestens auch in der Zukunft nicht vergessen, dass ein blauer Bildschirm einmal eine ganz nette Bedeutung hatte :-)

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News

Internet voll Dinge

Das “Internet der Dinge” war eines der kurzlebigen Meme auf der diesjährigen CeBit.

Und nachdem ich ein wenig darüber sinniert habe muss ich doch auch ein wenig schmunzeln, wenn ich mir vorstelle, dass mein Kühlschrank seinen Inhalt via RSS Feed an den Discounter meines Vertrauens bloggt, damit, falls die Schinkenwurst zu Neige zu gehen droht, auch wirklich welche da ist, wenn ich am Samstag wieder mit meiner ec-Karte bezahle. Oder wie mein Wecker morgens die Kaffeemaschine zum Vorheizen informiert, fahrende Autos auf der Autobahn automatisch einen Stau identifizieren oder mir meine Toilette eine umfassende Ernährungsberatung per E-Mail sendet.

Irgendwann kommt dann bestimmt auch der Tag, wo ich nach Hause komme, alle Herdplatten aktiviert sind, die Heizung auf 45° reguliert ist und die Toilettenspülung dauer aktiviert ist, weil ein Hacker es geschafft hat, das Internet der Dinge nach seinem Gusto umzulenken. Da bekommt der Begriff Firewall eine ganz neue Bedeutung!

Alles in allem gibt es sicherlich sinnvollere Anwendungen für miteinander vernetzte, kleine autarke Module: Logistik im größeren Stil als das private Einkaufen, atmende industrielle Produktionen und andere supply-chain Mechanismen. Ob das Internet der Dinge auf Basis der umstrittenen RFID Chips wirklich auch gesellschaftlich durchdrungen sein wird, steht auf einem anderen Blatt.

Über Sinn und Unsinn hat man sich jedoch auch schon bei den stinkenden pferdelosen Kutschen gestritten. Es bleibt abzuwarten, wie sich Menschen mit der scheinbar kopflos werdenden Technik zurecht finden werden.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News

social networking for free

buddypress, an open source extension to the well known wordpress-µ blogging system, is a rather new social networking software enabling you to run your own little social network. Just for the sake that the world needs a lot of more social networking platforms!

Installing the software was opening the box, customization is just as easy as working with wordpress stylesheets / themes, and the biggest limitations are due to a very uncomforatble right management system which already came with wordpress-µ

Nevertheless, not to forget that buddypress is still in a 1.0 RC version, the most basic elements of “classical” social networking platforms are available in this plugin suite, work fine – and, as from its big brother wordpress, multi user blogging is a real strength in this system.

Now, all what’s still missing is the killer idea for the next social networking platform: is there already one for enthusiasts of twelve-tone music?

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google
  • E-mail this story to a friend!
  • LinkedIn
  • MySpace
  • Netvibes
  • ThisNext
  • TwitThis
  • Yahoo! Buzz
  • MisterWong.DE
  • Webnews.de
  • Blogosphere News