Semanchuk.com - Python IPC Modules - inter-prozess-Kommunikation mit Python.
python - 3.11.2009 - 1.3.2010
Johnny Cache v0.1 documentation - unbedingt mit einem Projekt in der Firma mal ausprobieren, denn das Modell ist ziemlich heftig und ich könnte damit ein paar der Probleme elegant lösen für die ich derzeit Sonderlösungen habe. Ist auch ziemlich ähnlich zu meinem ersten Ansatz für dieses Problem (allerdings habe ich die grössten Performance-Probleme jetzt durch redundante Datenhaltung und automatische Updates an Objekten ebenfalls recht elegant gelöst).
LinuxTuples - ein Tuple-Space Server für Linux, in C geschrieben, aber mit Python-API. Sollte ich mir mal näher angucken, könnte interessant für verteilte Apps sein. Wobei ich ja lieber eine python-lokale Implementation auf Basis von Standard-Prozess-Kommunikationsmitteln hätte, um vernünftiger mit multiprocessing in Python arbeiten zu können. Gerade für einfache Tools oder Webapps wäre es einfacher manche Sachen direkt vom dort zu forken und dann über TupleSpaces zu kommunizieren. Aber dafür immer gleich einen extra Server zu starten, das ist es irgendwie auch nicht.
PiCloud | Cloud Computing. Simplified. - sehr interessanter Dienst: triviales verteilen von Python-Code (mit Zugriff auf C/C++ Bibliotheken für Numbercrunching und anderes, z.B. auch Bildbearbeitung, sogar eigene C/C++ Bibliotheken sind möglich) auf ein vom Anbieter gemanagetes EC2-Grid. Der Programmierer schreibt nur noch seinen Python-Code, testet lokal, wenn alles mit kleinen Sets gut läuft, Basisdaten hochladen, import, Funktionsaufruf und warten bis die Ergebnisse da sind - bezahlt wird nach Benutzungszeit. Durchaus mal im Auge behalten, falls mal größere Datenmengen durchzuwühlen sind - sowas kann durchaus günstiger sein als sich die nötigen Ressourcen selber bereitzuhalten.
rfc1437 / django-standalone / overview — bitbucket.org - da ich immer mal wieder auf bitbucket, github oder google code verweise, hier mal der Verweis auf ein eigenes kleines Paket das ich selber auf bitbucket jetzt habe: django-standalone. Entstanden weil ich für kleine Scripte und Tools immer mal wieder einen ORM brauchen könnte, aber ich dafür möglichst wenig Umstand haben will - nicht ein ganzes Django-Projekt aufsetzen, sondern einfach ein paar Modelle in meinem Script definieren und per Parameter die DB initialisieren und danach benutzen. Möglichst auch mit sqlite3. Mit der Lib hier geht das ganz wunderbar und ich kann mal wieder eines meiner Dauerprojekte - "schreibe einen simplen ORM für simple Scripte selber" - von der ToDo-Liste streichen.
iphone-backup-decoder - Project Hosting on Google Code - das gleiche nochmal als Kommandozeilen-Script in Python. Eventuell für mich sogar noch interessanter als das GUI Tool.
dajaxproject.com - easy to use ajax library for django - sollte ich mir vielleicht mal angucken, das aktuelle Projekt wird unter Umständen recht viel Ajax benutzen und wenn man den Anteil JavaScript reduzieren kann wär das ja durchaus erstrebenswert.
IronPython 2.0 and Jython 2.5 performance compared to Python 2.5 - word of warning: sowohl Jython als auch IronPython sind in vielen Situationen deutlich (und ich mein deutlich deutlich) langsamer als CPython. Der Overhead wird bei Jython bei sehr großen Datenstrukturen irgendwann besser als bei CPython, aber für normalen Einsatz siehts nicht so richtig toll aus.
IronPython hammers CPython when not mutating class attributes - weitere Informationen zu dem Performanceproblem. Hier bezogen auf IronPython - scheinbar sind Klassenvariablen unter Umständen problematisch, da darüber sich die Klassen selber ändern und dadurch Just-in-Time-Compiler Informationen verworfen werden müssen (wegen der recht statischen Struktur der VM sowohl bei der JVM als auch bei der CLI warscheinlich sehr ähnliches Problem), wodurch der JIT-Compiler dann alles neu durchnudeln muss und damit nicht nur Performance-Vorteile verloren gehen, sondern potentiell sogar kontraproduktiv sein können.
bpython interpreter - unbedingt mal in der Firma mit spielen, zu Hause machte diese alternative Python-Shell einen echt guten Eindruck. In einigen Punkten besser als ipython und das ist schon sehr gut (aber meiner Meinung nach zu sehr auf eigene Features ausgerichtet und weg von der Python-Philosophie, wärend bpython mehr pythonisch wirkt)
DreamPie: The Python shell you've always dreamed about! - eine weitere interessante alternative Python-Shell, diese hier als GTK Fenster. Das öffnet ganz neue Möglichkeiten, wie z.B. echte Popups als kleine grafische Fenster und direkter grafischer Output. Allerdings ist py-gtk für OS X noch eher wackelig (wie alles GTK-Zeugs derzeit, ist halt noch Alpha) und eigentlich habe ich lieber ähnliche Umgebungen unter OS X und Linux.
ZODB - a native object database for Python — ZODB v3.9.0 documentation - weil ichs immer wieder vergesse: die ZODB gibts auch standalone, ohne das Monster Zope oben drüber. Und bei direktem Zugriff von Python bietet ZODB einige sehr interessante Features. Immer noch eine der am weitesten ausgebauten echten Objekt-Datenbanken für Python (aber leider immer noch keine allgemeine Query-Language auf die Datenbank zur effizienteren Behandlung von Objektmengen).
django-piston - muss ich mir auch mal näher angucken, es soll gerade den Bau von Web-APIs mit Django erleichtern. Und einige meiner Firmenprojekte könnten davon profitieren.
Front Range Pythoneering: Realizing Jython 2.5 - da stehts weiter unten drin. Jython hat ein GIL als witziges Easteregg im future Modul (das mit dem zukünftige Sprachfeatures als "Beta" verfügbar gemacht werden). Also kein GIL, sondern nur ein Joke. Hätte mich auch anders stark verdutzt.
Interactive Python GIL Visualization [dabeaz] - sehr interessante Auswertung der Auswirkungen des GIL in multithreaded Python Projekten. Ob Jython (kein GIL, threading auf Basis der Java-Standards) da eine Aushilfe ist?
maven-jython-plugin - Maven Jython Plugin - hmm, der Jython-Support für Maven ist ziemlich veraltet - das Artifact geht nur gegen 2.2.1 und auch das Plugin geht nur auf 2.2.1. Da fehlt dringend wohl ein bischen Updaten.
Presenting django-devserver, a better runserver. - interessante Idee, eine Erweiterung des runserver die SQL Statements logged und Cache-Informationen liefert. Das könnte für mein derzeitiges Django-Projekt recht interessant sein, da ich dort zeitweilig etwas komplexeres SQL produziere. (und ja, ich hacke wieder mit Django herum, eventuell kommt ja sogar was veröffentlichbares dabei raus - ist aber primär ein Arbeitsprojekt).
Faster or Lazier Pagination - interessanter Ansatz, einfach nicht die Menge der Sätze ermitteln, sondern stattdessen eine Anzahl Seiten annehmen und diese aktualisieren wenn man auf spätere Seiten zugreift. Ein bischen ähnlich zu manchen Websites die nur einen Ausschnitt der Seitenliste als Navigation anbieten - dafür braucht man dann nicht wissen wie viele Seiten es wirklich sind. Google mogelt ja auch, in dem die Seitenanzahl maximal beschränkt wird. Für große Datenmengen mit langsamem count(*) sicherlich sehr sinnvoll und evtl. könnte man das auch kombinieren mit gecachten maximalen Seitenzahlen für verschiedene Queries, so das beim nächsten Mal die Vermutung über die Menge schon präziser ist.
mongoengine - Python-API für Zugriff auf MongoDB mit einer an den Django-ORM angelehnten Struktur.
The Definitive Guide to Jython — Jython Book v0.91 documentation - ist drin was drauf steht. Bezieht sich auf Jython 2.5.1 und gibts auch als (aktualisiertes mit zusätzlichen Inhalten, die Open Source Version des Buches ist noch nicht voll aktualisiert) totes Holz von APress.
django-extensions - sehr nützliche Tools für Django die sich in den Manage mit einhängen. Zum Beispiel ein Diff für SQL.
IronPython in Action: Front Page - garnicht mitbekommen, es gibt mitlerweile ein Buch über IronPython, die Version von Python die in Microsofts .NET Umgebung läuft. Könnte für einige Firmenprojekte interessant werden, vor allem da es die ersten Erfolge von Django auf IronPython ja schon 2008 gab ...
Trellis - Library zur eventgesteuerten Programmierung in Python. Die Idee ist, statt handgedengelter Callbacks einfach Regeln zu formulieren, die auf Objekte angewendet werden und bei entsprechenden Änderungen werden automatisch diese Regeln ausgeführt. Dabei sorgt das System für saubere Trennung dieser Events, so das keine Deadlocks auftreten.
django-history-tables - könnte für ein Projekt in der Firma interessant werden, dort gibt es auch die Anforderung einer Historie von Datenänderungen.
pylint (analyzes Python source code looking for bugs and signs of poor quality.) (Logilab.org) - für die Kollegen geblogmarkt, denn wenn Code-Standards entworfen werden, ist es ja auch nett wenn man wenigstens einen Teil davon automatisch prüfen kann. Ausserdem kann pylint (eingeschränkte) statische Analyse von Python code machen und komisch aussehende Teile als Warnungen auswerfen.
matthiask's feincms - erweiterbares CMS für Django. Sieht sehr interessant aus, speziell die recht kompakte Erweiterbarkeit um eigene Content-Typen.
ReusableAppResources - Django - Trac - genereller Startpunkt wenn man Django-Apps suchen will, von hier wird auf die verschiedenen Vergleichslisten verwiesen.
stream – Lazily-evaluated, parallelizable pipeline - interessante kleine Bibliothek für Python mit der Streams als lazy evaluation lists für bessere Parallelisierbarkeit von Code benutzt werden können. Und da Python ja durch das GIL bei Threads etwas limitiert ist, werden hier auch gleich Modelle für die Nutzung von Multiprocessing angeboten (durch unabhängige Prozesse lassen sich auch bei Python mehrere Cores effizient nutzen, allerdings zum Preis von Kommunikationsoverhead zwischen den Prozessen). Sicherlich wegen diverser Gründe mit Vorsicht einzusetzen - massive Parallelität sollte man damit eher vermeiden, denn da Systemthreads und Systemprozesse benutzt werden, ists nix mit tausenden von parallelen Abläufen (wie es z.B. mit Microthreads ja durchaus möglich wäre). Aber trotzdem für manche Probleme sicherlich sinnvoll nutzbar.
entrian.com - goto for Python - goto for Python - goto und comefrom für Python. Ja, war ein Aprilscherz, tuts aber trotzdem.
Nullege: A Search Engine for Python source code - ganz nützlich, wenn man zu einem API gucken will wie es verwendet wird in verschiedenen Projekten. Manchmal sind Dokumentationen etwas unklar und Beispielsource angucken macht die Sache klarer.
Python Package Index : promise 0.2.1 - ziemlich cooler bytecodehack für Python der mittels Dekoratoren Funktionen als "pure" oder "constant" deklariert (oder ein paar andere) und dadurch Optimierungen von Python-Code ermöglicht. Speziell teure Lookups können so vermieden werden wenn man dem Compiler zusichert, das innerhalb einer Funktion z.B. Builtins oder benamste Funktionen sich nicht dynamisch ändern sondern konstant bleiben.
generator_tools - weil man immer mal wieder auf die Situation stößt Generatoren in Python wegspeichern zu wollen (z.B. wenn man Continuations oder Coroutinen mittels Generatoren simuliert und diese als State eines laufenden Webworkflows in einem Webframework benutzt), mit diesem Modul (hack auf Bytecode-Introspection aufbauend) geht es eingeschränkt. Alleine schon interessant wegen der Einblicke die in den Interpreter gegeben werden.
MetaPython Documentation - eine der Sachen die mich immer wieder von Python zu Lisp bringen sind die netten Lisp Makros, mit denen man elegant embedded DSLs für verschiedene Zwecke bauen kann, die sich gut in die Hostsprache einbinden. Mit MetaPython kann man sowas vielleicht mit Python hinbekommen. Zumindestens sind alle Bauteile da.
Socket Benchmark of Asynchronous Servers in Python - interessanter Artikel über die Performance und Skalierbarkeit auf hohe Hit-Raten verschiedener asynchroner Server in Python.
Invent with Python - interessantes freies Buch über Python Programmierung. Unter anderem wird in Kapitel 16 PyGame herangenommen.
Haystack - Search for Django - und das ist dann die Einbindung von Whoosh in Django. Gibt noch andere, aber das hier sieht am weitesten ausgebaut aus.
Whoosh - Volltextindexing in reinem Python. Könnte für einige Projekte interessant werden.
IronPython - Release: 2.6 - damit ist IronPython auch auf dem aktuellen Stand der Python2 Reihe. Und angeblich soll mit wenigen Änderungen Django auch direkt auf IronPython laufen, allerdings hab ich da keine aktuellen Postings zu gefunden, nur welche aus 2008. .NET ist zwar nicht meine Lieblingsumgebung, aber auf der Arbeit werden wir das schon auf die Dauer wohl mal anschauen, einfach weil die Integration mit dem Rest der Systemwelt unter Windows damit einfacher sein dürfte als mit dem normalen CPython.
ProjectPlan - unladen-swallow - Plans for optimizing Python - interessanter Status über Unladen Swallow, die Python-Version die auf LLVM als JIT aufbaut.
Python Package Index : python-daemon 1.5.2 - weil ich es immer mal wieder brauche und dann immer wieder von Hand stricke: dieses Modul hilft dabei ein Python-Script in einen ordentlichen Unix-Daemon zu verwandeln, mit korrektem Forken und PID-File-Handling.
samuel's python-bert - und weil ich grade dabei bin, auch noch BERT in Python.
Code tutorial: make your application sync with Ubuntu One - Ubuntu One (der Dateien und Synchronisierdienst von Canonical für Ubuntu) benutzt intern CouchDB (und die Synchronisation ist auf CouchDB Replikation aufgebaut!) und dieses Tutorial zeigt, wie man Applikationen so umbauen kann, das sie mit CouchDB zusammenarbeiten. Beispiele sind in Python und nutzen auch einige Aspekte von DBUS (Gnome) mit, so das es generell ein recht interessantes Tutorial für Desktop-Programmierung unter Linux ist. Ich denke es ist eine gute Idee von Ubuntu One auf CouchDB Replikation zu setzen - das Gemurkse von MobileMe bei der Synchronisation sollte da deutlich besser in den Griff zu kriegen sein.
clutchski's fileutils - macht Python noch besser für Shell-Scripte indem es diverse Basiskommandos als Python-Funktionen zur Verfügung stellen. Nett.
formsets und inline forms in Django - ein ähnliches Problem kam letztens in der Firma auf, daher hier mal geblogmarkt, das könnte die Lösung sein.
uWSGI - könnte interessant für die Django-Projekte in der Firma sein, klingt von der Beschreibung her ganz gut.
PyGoWave Server - keine Ahnung ob ich das schon hatte, aber gerade aus aktuellem Anlass wieder nach gesucht: eine Implementierung der Google Wave Idee in Python. Und das witzige: die Website darunter ist mit Django gebaut!
Python moratorium and the future of 2.x [LWN.net] - eine gute Zusammenfassung der aktuellen Diskussionen rund um Python Releases, speziell die Diskussion ob 2.6 das letzte 2er Python ist, oder ob das schon existierende 2.7er noch released wird, ob es danach auch noch 2.8 oder mehr geben wird, oder ob der Wechsel zu 3.x forciert werden soll.
for post in leo.blog():: Django-Jython 1.0.0 released! - für ein Projekt auf der Arbeit nicht unwichtig: Django-Jython hat fertig. Und mit dabei der Oracle-Client, den wir in dem Projekt auch dringend brauchen würden. Nett.
Lazy Pythonista: Diving into Unladen Swallow's Optimizations - unladen swallow ist die Python-Variante für LLVM. Sieht immer interessanter aus.
Large Problems in Django, Mostly Solved: Search - interessantes Projekt: Haystack. Eine Erweiterung von Django um Volltextsuche mit einem Interface das sehr ähnlich zum normalen Datenbank-Interface von Django ist.