django

toastdriven/django-tastypie. Hatte ich glaube ich schon mal, macht aber nix, sieht immer noch interessant aus - eine Alternative zu django-piston mit einer deutlich weitergehenden Funktionalität (zum Beispiel recht ausführliche Optionen für Authentifizierung und Authorisierung). Was es macht? REST Interfaces für Django Modelle inklusive deren Relationen. In den verschiedensten Formaten (XML, JSON, YAML).

Make runfcgi fail when database connection is open before fork. Das ist eine Sache nach der ich schon ewige Zeiten jage, zuletzt in ein paar ziemlich wichtigen Projekten. Flup arbeitet so, dass es die WSGI-Anwendung erst initialisiert und mit dieser initialisierten WSGI Anwendung dann die Forks für die Worker macht. Dummerweise gibt es bei uns aber Datenbankzugriffe wärend der Anwendungsinitialisierung - dadurch hat der Basisprozess schon eine offene Datenbankverbindung, jeder Fork kopiert diese Daten. Aber der Socket der Verbindung geht natürlich nicht mit - der neue Prozess denkt nur er wäre verbunden, ist es aber nicht. Zugriffe von denen neuen Prozessen fallen dann mit einer Exception raus. Man kann im verlinkten Patch auch gut den raise auf die Exception einfach durch connection.connection = None ersetzen. Dann wird einfach die Verbindung die sowieso defekt ist weggeworfen und in neuen Prozessen immer eine neue Verbindung aufgebaut. Damit haben wir zumindestens in einem Produktionsumfeld (mit psycopg2) das ganze beheben können und sind guten Mutes, dass es auch bei der Umgebung mit pyodbc helfen wird.

#18251 multithreading deadlock in django.models.loading.get_apps – Django. Und noch eine Sache, die uns vielleicht betreffen könnte - Raceconditions zwischen Django-Threads bei der Initialisierung von Django-Applications. Gibt auch schon einen Patch dafür, der das in den Django Internals behebt.

Using SELECT FOR UPDATE in Django. Drin was dran steht. Denn der Django ORM kann derzeit keinen SELECT FOR UPDATE erzeugen, aber manchmal braucht man ihn einfach.

Radius limited searching with the ORM | Neogeo ramblings with a Python twist. Wenn ich mir das so angucke, da sind schon wirklich nette Features in GeoDjango drin. Leider habe ich derzeit kein Projekt bei dem ich es gebrauchen könnte, also nur mal für später geblogmarkt. Auf dem Blog gibts auch weitere interessante Artikel rund um GeoDjango.

Pinax. Und wieder mal was das ich glaube ich schon hatte. Aber aus aktuellem Grund nochmal auf den Radar gekommen und daher werde ich mir das etwas näher angucken. Sowas wie ein Bauchladen für Django-Projekte mit Fokus auf Social Networks und Community Sites. Klingt auf jeden Fall sehr interessant - ein bischen wirkt es wie Drupal mit Python und auf Django (also eher nicht fertige Sites sondern Bausteine und Framework zur Erstellung derselben).

Django Facebook 2.0 – Integrating Facebook. Weils im Moment interessant ist (jaja, ich weiss, alles macht G+, aber man soll ja antizyklisch handeln), hier ein Link zu einer Django-Library mit der man Open Graph Apps für Facebook bauen kann. Könnte gerade zusammen mit der neuen Timeline von Facebook wieder interessant werden. Und G+? Naja, solange die nur armselige Spar-APIs liefern, ist das für Bastler schlichtweg uninteressant.

Django-nonrel - NoSQL support for Django. Liefert einen ersten Ansatz in Django verschiedene NoSQL Datenbanken zu integrieren, und zwar auf Ebene des Django-ORM. Backends für MongoDB (nein Danke), AppEngine und Cassandra sind in der Mache. Besonders Cassandra interessiert mich im Moment.

chrisdickinson's wilson. Einen noch vor dem Mittagessen, denn das Framework orientiert sich stark an Django, und da ich ja Django-Fan bin, ist das sicherlich einen eigenen Link wert.

robhudson's django-debug-toolbar at master - GitHub - ok, dieses Werkzeug ist ganz offiziell hugo-approved. Schlichtweg genial, liefert genau die richtige Menge an Informationen für Django-Entwicklung und beisst sich nicht mit vorhandenen Layouts (jedenfalls bei mir hats bei Experimenten gut geklappt).

postgres 9 streaming replication and django balancer - Santana läuft zwar noch nicht mit Django 1.2, aber der Balancer für Datenbankzugriffe kombiniert mit PostgreSQL Replikation klingt nach einer netten Methode um Django-Systeme hochzuskalieren wenn die normalen Mittel mit einer Datenbank nicht mehr ausreichen. Muss mir vielleicht mal eine Spielinstallation anlegen.

Filtering Dropdown Lists in the Django Admin — Stereoplex - weil es immer wieder gebraucht wird und weil hier einige gute Wege beschrieben sind.

dcramer's django-sentry at master - GitHub - leider nur Django 1.2 (mein eigenes internes Framework das auf Django aufbaut ist leider derzeit nicht mit 1.2 kompatibel), aber sehr interessant um Fehlermeldungen aus Django in der Datenbank zu sammeln zwecks späterer Auswertung. Natürlich kann man auch die Fehler sich als Mail schicken lassen, das geht schon mit Bordmitteln, aber gerade wenn mehrere Leute ein System betreuen kann die Speicherung in der Datenbank deutlich bequemer sein.

jessemiller's HamlPy - muss ich mir mal angucken, eine Implementation von HAML (im Prinzip eine Kurznotation für HTML) mit Integration für Django. Gerade für die vielen kleinen internen Templates könnte das interessant sein, denn die werden von Programmierern und nicht Designern gemacht. Allerdings müsste ich mir dann erstmal angucken wie gut (oder wie schlecht) ich damit JavaScript integriert bekomme. Aber sicherlich interessant - HTML ist nicht wirklich Diff/Merge-freundlich und schlichtweg nervig zu schreiben und zu lesen.

Aeracode :: On Django And Migrations - South core libraries wandern in der nächsten Zeit möglicherweise in den Django core (vielleicht mit Target Django 1.4). I approve. Die Basis für Migrationen schon im Django core zu haben wäre nicht nur für Migrationen hilfreich, sondern auch für Projekten in denen höhere Dynamik in den Datenmodellen gefordert ist - mein derzeitiger Hack mit sqldiff und einigem selbstgestrickten ist eben nur genau das: ein Hack. Wird wohl Zeit mir South mal genauer anzugucken (bisher nur grob reingeschaut, aber was ich gesehen habe gefiel mir) und zu überlegen, ob ich nicht schon jetzt meinen Hack auf eine etwas leistungsfähigere Basis stelle.

django-pagination - muss ich mir mal genauer angucken, sieht interessant aus. Pagination ist zwar nicht wirklich schwierig, aber lästig jedesmal selber zu bauen - und die bordeigenen Mittel von Django sind nicht immer optimal dafür (besonders bei großen Datenmengen).

django-ajax-filtered-fields - muss ich mir mal näher angucken, das könnte im Admin ganz interessant sein bei größeren Mengen an Sätzen in Relationen.

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).

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.

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.

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.

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.

django-extensions - sehr nützliche Tools für Django die sich in den Manage mit einhängen. Zum Beispiel ein Diff für SQL.

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.

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.

Crowdsourced document analysis and MP expenses - in Django durch Ausgabenlisten von britischen Parlamentsmitgliedern wühlen. Interessanter Artikel über die Stolperstellen und Probleme eines solchen Projektes beim Guardian.

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.

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.

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!

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.

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.

django-jython - weil ich es eventuell für ein Firmenprojekt gebrauchen könnte.

django-queue-service - simples Queueing System auf Basis von Django. Könnte sehr interessant für Projekte in der Firma werden.

Four crowdsourcing lessons from the Guardian’s (spectacular) expenses-scandal experiment - relevant für Django, weil der Developer Simon Willison einer der Djangonauts ist und das ganze mit Django aus dem Boden gestampft wurde. Klasse Job!

Second edition of Practical Django Projects - weil ichs für die Firma auch brauchen werde. Und es ist auf Django 1.1 aufgebaut!

Eine Akkuladung später und ich bin ein Django-Fan - Zed Shaw schaut sich Django an. Und mag es.

Weekend Grid Outages - SL now uses Django internally (last paragraph)! Nicht der einzige interessante Punkt, ein paar nette Insider-Infos bezüglich des Service-Designs. Wie bei allen solchen Projekten, scheinbar ein gewachsenes Chaos schlecht skalierender Ansätze.

Mobile Django Admin Patches - Shifting Bits by Patrick Altman - den Django-Admin über das iPhone bedienen können. Nette Sache.

Django 1.0 released! - hat lange gedauert, aber das kann ja durchaus der Qualität zuträglich sein. Und hier ist es das. Gratulation!

Django on Jython: It's here! - klasse! Damit wird Java als Plattform wieder interessanter für mich - die Fortschritte in Jython in den letzten Monaten sind gigantisch.

Django snippets: MintCache - interessante Idee um den "Dogpile-Effect" zu vermeiden: wenn die Regenerierung von Daten länger dauert, als neue Requests kommen, stapeln sich die Requests die eine Regenerierung von alten Daten anstossen, und dadurch wird die Generierungszeit noch länger. Diese Cache-Idee stösst beim ersten Zugriff auf veraltete Daten die Regenerierung an, liefert allen anderen aber einfach die bisherigen alten Daten aus, und vermeidet so die mehrfache Neugenerierung und den damit verbundenen nervigen Lasteffekt.

The Django Book - progressive Beta-Releases der Django-Buch-Kapitel im Web (mit Angaben wann die Kapitel online gehen).

Introducing Django 0.95 - neue Django-Release raus. Magic removed.

Generische Tabellenrelationen für Django. Sehr interessant, das macht Sachen wie Tags in Datenmodellen wesentlich einfacher. Ich müsste damit einiges aus meiner Stuff-Library loswerden können.

Are you generic? - Wilson Miner beschreibt wie er als Nicht-Programmierer mit Django und dessen einfachen generischen Viewfunktionen Anwendungen ohne Programmiererhilfe selber erstellen kann.

Django for non-programmers - Django aus der Sicht eines Webdesigners.

London 2.0 RC 4 - Montag, 3. April

Zumindest haben sie es dieses Mal richtig gemacht und frühzeitig angekündigt: London 2.0 RC 4 - Montag, 3. April. Hey, wenn adrian_h vorbeischaut, wäre das definitiv ein Anreiz für mich, nach London zu hüpfen (es sind nur so etwa 7-9 Stunden mit dem Zug von meiner Heimatstadt entfernt) und mitzumachen.

Jetzt muss ich nur noch prüfen, ob ich eine Hotelbuchung und Bestellungen im Voraus zu vernünftigen Preisen in der Gegend machen kann, aber was ich gesehen habe, sind die günstigsten Tickets für 49 EUR für die gesamte Fahrt, also gibt es genug Spielraum für die Hotelkosten.