Kinect, PyGame, Numpy, SciPy
pbouda am 26. Jan 12:34
Ich habe die letzten Wochen ein bisschen mit den Python Tools für Visual Studio herumgespielt, auf der Website gibt es mit PyKinect einen schönen Wrapper um das offizielle Kinect-SDK von Microsoft. Ich wollte das mit einem Wassereffekt auf Basis von PyGame und Numpy kombinieren, den habe ich hier gefunden. Heraus kam das:
http://teatrominde.tumblr.com/#15777992755
Der Code dazu ist hier:
https://github.com/pbouda/stuff/blob/master/dances/WaterDance/WaterDance/Program.py
Das Tiefenbild habe ich noch per Gauss-Filter aus SciPy verschönert, damit es nicht so kantig aussieht. Alles läuft auf meinem Notebook recht flüssig, das ist schon beeindruckend. Python gilt als langsam, ist es wohl auch, aber für die meisten Zwecke reicht es dann doch.
Zwischendrin
pbouda am 29. Dez 16:47
In letzter Zeit war es hier leider recht ruhig, Arbeit und andere Aktivitäten hielten mich weitgehend vom Posten ab. Das soll sich ab jetzt aber wieder ändern. Hier erst einmal ein kleiner Zwischenbericht, was in letzter Zeit so passiert ist:
- Ich war bei der Codebits in Lissabon. Eine sehr feine Veranstaltung rund um einen 48-Stunden-Programmierwettbewerb. Wobei es eher um die Kreativität geht als um Code-Qualität oder Ähnliches. Und dieses Jahr haben wir den ersten Preis gewonnen! Hingefahren bin ich mit einer groben Idee, zurück kam ich dann mit einem Haufen Technik. Ich hatte aber auch großartige Unterstützung von Pedro und Rosana, die ich erst bei der Veranstaltung kennengelernt habe und die zusammen mit mir das Lego-Coding-Team gebildet haben. Danke an alle! Und vielleicht gibt's hier bald mehr über das Projekt zu berichten...
- Mein erstes Buch ist fertig! PyQt und PySide. GUI- und Anwendungsentwicklung mit Python und Qt
. Gibt es ab Januar in jedem gut sortiertem Buchladen. Mit zahlreichen Highlights über die GUI-Entwicklung mit Python, PyQt und PySide wie eine komplette Einführung in QML und die Anwendungspaketerstellung für Linux und Windows. Wer schon immer einmal wissen wollte, wie man Anwendungen samt Installer plattformunabhängig entwickelt, der sollte sich das Werk unbedingt zulegen.
Soweit erst einmal für heute. Ich wünsche allen Lesern einen guten Rutsch ins Neue Jahr 2012!
Maschinenlernen für Fortgeschrittene
pbouda am 07. Okt 15:57
Dieser Artikel beschreibt recht eindrucksvoll mit welchen Methoden die Radiochemie heutzutage arbeitet. Und was man doch mit Python alles machen kann. Ich habe einen Vortrag darüber auf der EuroSciPy 2011 in Paris gehört, und war mehr als beeindruckt. Nicht nur wegen der Hardware...
Processing in Javascript in QML in Python
pbouda am 05. Sep 12:31
Es gibt gute und vernünftige Gründe, warum man Desktop-Anwendungen mit Python und PySide entwickeln sollte. Aber man kann damit einfach auch nur Spaß haben. Diesen hatte ich auch, letzte Woche. Und das ist daraus geworden:
https://github.com/pbouda/Process-
Eine Processing-Variante auf Javascript-Basis, die in einer QML-Webkit-Komponente läuft, die wiederum von Python geladen wird. Viel Spaß damit!
Memory Profiling Tools für Python, Teil 2
pbouda am 02. Sep 13:33
Kaum hatte ich den vorhergehenden Blogeintrag fertig, bin ich mehr oder weniger zufällig auf zwei weitaus interessantere Projekte gestoßen, die Speicherlecks in Python-Anwendungen aufspüren sollen. Hier also, der Vollständigkeit halber, die Vo:
- Meliae: Für Python 2, wird aber im Gegensatz zu heapy aktiv weiter entwickelt. Für meine Zwecke aber derzeit unbrauchbar, bis es auch mit Python 3 funktioniert.
- gdb-heap: dies scheint aber nun wirklich der beste Ansatz zu sein: über die Python-Schnittstelle von gdb klinkt man sich direkt in eine laufende Anwendung ein und schaut sich im Speicher um. Es gibt ein spezielles Python-Modul zur Analyse der einzelnen Objekte, das an die Speicherverwaltung von Python angepasst ist. Einziger Wermutstropfen: das Tool scheint sehr an die gdb-Version von Fedora gebunden zu sein. Bei einem kurzen Versuch unter Ubuntu wollte jedenfalls das Python-Modul nicht starten. Definitiv aber ein Projekt, das ich weiter beobachten werde. Auf der Seite findet sich außerdem ein Link auf einen Vortrag auf der PyCon US 2011, der sehr schön die einzelnen Ansätze zur Speicheranalyse unter Python erklärt.
Speicherlecks in Python-Skripten finden
pbouda am 19. Aug 13:10
Da ich gerade ein kleines Speicherproblem mit einer Python-Anwendung hatte (und ich dachte schon, 8 GB RAM reichen erst einmal...), habe ich mich mal nach einem Memory-Profiler für Python-Skripte umgeschaut. Und leider nichts Vernünftiges gefunden. Was auch daran liegt, dass ich komplett auf Python 3 umgestiegen bin, und die Python-2-Profiler dann leider komplett den Dienst versagen. Hier mal drei Pakete, die wohl unter Python 2 funktionieren sollen:
- heapy: Ist angeblich das komplexeste, aber auch beste aller Tools. Als Ergebnis einer Master-Thesis entstanden, die es auch auf der Webseite zum Herunterladen gibt. Portierung auf Python 3 wohl nicht in Sicht. Und nach kurzer Ansicht des Quellcodes wohl auch nicht mal an einem Nachmittag durchführbar.
- PySizer: Weniger mächtig als heapy, und noch älter. Portierung nicht in Sichtweite.
- dowser: Die einfachste Art und Weise für Memory-Profiling. Das Tool lässt sich äußerst einfach in eigene Python-Skripte einbinden und stellt die Information dann per cherrypy zur Verfügung. So hat man während der Laufzeit des Skripts in einem Webbrowser einen Überblick über die aktuellen Objekte und deren Speicherverbrauch. Ich habe es
fast geschafft, das Ding unter Python 3 zum Laufen zu bringen; allerdings benutzt es die Python Imaging Library, für die es noch keine vernünftige Python-3-Version gibt. So fehlen auf der Ausgabe-Webseite dann die Bilder. Außerdem konnte ich die TRACE-Seiten nicht öffnen. Es waren wohl einfach zu viele Objekte in meinem Skript.
Wieder einmal das leidige Thema: Python 3 ist bestimmt toll, aber wenn es halt jeder ignoriert werden wir in 10 Jahren immer noch Anwendungen unter Python 2.x entwickeln. Übrigens habe ich letztendlich einen anderen Weg für das Speicherproblem gefunden. Das Problem war ein Parser; mit regulären Audrücken komme ich jetzt mit weniger Speicher und
Verwaltung von UI- und Ressourcendateien in PyQt- und PySide-Projekte
pbouda am 09. Aug 16:22
Hier mal wieder ein kleines Tutorial zur Entwicklung von Anwendungen mit PyQt bzw. PySide. Dieses Mal geht es um die Verwaltung der Oberflächen- und Ressourcendateien in einem Projekt, die sich auch ohne komplexe IDE einfach mit einem kleinen Python-Skript erleichtern lässt:
Automatisierung von uic und rcc
Viel Spaß damit!
Python auf dem N9
pbouda am 22. Jul 11:40
Die Nachricht ist wohl schon länger veröffentlicht, ich sehe das jedoch gerade erst: auf dem N9, Nokias erstem und letztem (?) MeeGo-Gerät, werden Python-Anwendungen und C++-Anwendungen praktisch gleichgestellt. D.h. das SDK unterstützt die Entwicklung von Anwendungen per Python und PySide, und man kann diese Anwendungen dann im Ovi Store veröffentlichen, oder wie auch immer der Laden jetzt heißt. Hier die offizielle Ankündigung:
http://www.meegoexperts.com/2011/06/harmattan-python-meego/
Damit ist und bleibt Maemo/MeeGo das einzige mobile Betriebssystem, für das sich uneingeschränkt Apps in Python entwickeln lassen. Es ergeht hiermit also ein Kaufbefehl für das N9 an alle Python-Programmierer!
Neues Tutorial: Relative Entropie
pbouda am 07. Jul 14:14
Da ich mich gerade informationstheoretisch weiterbilde hier ein kleines mathematisches Tutorial zur Visualisierung der relativen Entropie zweier binärer Wahrscheinlichkeitsfunktionen:
Relative Entropie visualisieren mit Mayavi
Das Ganze ist ein kleines Python-Skript, das zur Darstellung Mayavi benutzt.
Buchempfehlung: Mastering Regular Expressions von Jeffrey E.F. Friedl
pbouda am 13. Mai 12:28
Und da dachte ich, ich weiß schon so Einiges über reguläre Ausdrücke. Aber nichts da: spätestens im dritten Kapitel von Mastering Regular Expressions von Jeffrey E.F. Friedl schwand der Glaube an meine Fähigkeiten. Die Einsatzmöglichkeiten von Atomic Groupings und Possessive Quantifiers waren mir gar vollkommen fremd. Nach Lektüre des Buches war der Glaube aber wieder da.
Das Buch beginnt mit drei sehr praxisorientierten Kapiteln über reguläre Ausdrücke, die sich zu Beginn auch dem Anfänger erschließen. Die Beispiele sind schön ausgewählt, werden im Laufe der Kapitel immer komplexer, und zeigen den Einsatz der Basisfunktionen in regulären Ausdrücken. Gleich in der Einleitung empfiehlt Herr Friedl auch dem fortgeschrittenen Leser, das Buch von vorn bis hinten zu lesen, und dem kann ich unbedingt zustimmen: selbst wenn man die Basis schon drauf hat, lernt man gleich zu Beginn Vieles über die Geschwindigkeitsvorteile und -nachteile bestimmter Alternativen bei Ausdrücken in unterschiedlichen Einsatzgebieten.
Ab dem vierten Kapitel geht es dann ans Eingemachte. Die interne Verabeitung der verschiedene Implementierungen werden besprochen, zunächst grob nach der Einteilung in deterministische bzw. nicht-deterministische Automaten, in beiden Fällen aber auch immer wieder mit Hinweisen auf einzelne Implementierung der verschiedenen Programmiersprachen. Wer hätte es gedacht: Tcl hat die schnellste Maschine für reguläre Ausdrücke, Perl dafür den umfangreichsten Wortschatz an Ausdrücken. Das Backtracking als zentrale Idee des Parsens regulärer Ausdrücke wird ausführlich und verständlich erläutert, fast denkt der Leser daran, rasch selber eine solchen Parser zu bauen. Gerade in diesem Kapitel merkt man die langjährige Erfahrung des Autors, der durch den Einsatz unterschiedlicher Engines und Fehlersuche in zahlreichen Projekten einen großen Einfluss auf die ein oder andere Implementierung hatte.
Nach den Interna der Verarbeitung folgen dann zwei Kapitel, nach deren Lektüre man sich durchaus als Experte einordnen darf. Zunächst geht es um den allgemeinen Aufbau eines regulären Ausdrucks, wiederum an Praxisbeispielen, und dieses Mal mit dem gesamten, im vorhergegangenen Kapitel erarbeiteten Inventar. Das darauf folgende Kapitel geht noch ausführlich auf die Performanz von regulären Ausdrücken ein, so dass man sich als Leser schließlich für alle Anwendungsfälle gerüstet fühlt. Als wäre das alles noch nicht genug, folgen schließlich noch vier Kapitel über die regulären Ausdrücke und ihren praktischen Einsatz in vier Programmiersprachen bzw. Frameworks (Perl, Java, .NET, PHP). Schade, dass hier Python keine größere Rolle spielt, aber die derzeitige Implemtierung scheint auch einfach noch nicht besonders ausgereift zu sein. Mit dem neuen Python regex-Modul steht aber wohl schon der Ersatz in den Startlöchern.
Am Ende bleibt tatsächlich keine Frage offen. Im der täglichen Entwicklungsarbeit blättert man schnell immer wieder an die entsprechenden Stellen des Buches, und reift so langsam zum Experten auch in der Praxis. Atomic Groupings, Possessive Quantifiers, Backtracking, Laziness vs. Greediness? Alles kein Problem...
Zu kaufen bei Amazon:


