Kleine Lebenszeichen

Kleinere und größere Updates sowie ein sanfter Relaunch im Vordergrund, doch im Hintergrund ist einiges mehr passiert.

Die Zeit ist knapp, und somit verlieren sich die letzten Einträge irgendwann im vorigen Jahr. Doch tatsächlich hat sich auf und vor allem unter dieser Site einiges getan – hier eine kurze Zusammenfassung.

Zunächst wurde der gesamte bestehende Code aufgeräumt. Die wichtigste Änderung ist die Strukturierung in Applikationen und Sites. Diese Trennung war in den Anfangstagen von Django zunächst nicht gegeben – zu Beginn wurde ein Projekt definiert, in dem die Applikationen sowie die site-spezifischen Dateien Platz fanden, z.B. Templates und Konfigurationsdateien. Beim Betrieb mehrerer, verschiedener Web-Sites, welche sich die Applikationen teilen sollten, war dies letztlich suboptimal. Daher existieren nun die Applikationen in einem eigenenSubversion-Repository. Dies kann somit von mehreren Sites, die sich auf demselben Server befinden, genutzt werden.

Weiterhin wurde die Codebasis der aktuellen Django-Entwicklungsversion angepasst. Da diese bislang ausdrücklich als nicht-stabil gekennzeichnet war, mußte während der Entwicklung die eine oder andere Anpassung stattfinden. Die Formulare wurden dabei bereits frühzeitig mit Hilfe von newforms erstellt. Andere Anpassungen waren eher marginaler Natur, kleinere Änderungen in den Models aufgrund geänderter Optionen, etwa max_length statt maxlength. Letztlich nicht der Rede wert. 😉 Und die Kommentare wehren sich nun endlich ein wenig gegen SPAM.

Da Apache zusammen mit mod_python immer wieder Probleme verursachte und sich bislang dafür keine Lösung fand, wird nun FastCGI und lighttpd genutzt. Dies lief nahezu auf Anhieb, die Installation ist einfach, die Konfiguration flexibel, und nach meinem subjektiven Eindruck läuft es sogar schneller als die vormals verwendete Kombination.

Das Design ist ein wenig überarbeitet worden, jedoch den bisherigen Grundsätzen treu geblieben. Zwar existierte bereits eine weitere Version, die größere Änderungen mit sich gebracht hätte, aber letztlich fiel die Entscheidung zugunsten der aktuellen Variante.

Als JavaScript-Framework wird nun durchgängig jQuery benutzt, dies betrifft auch die Image Cropping Funktionen des Profilbildes. Das Beispiel von jQuery UI konnte hier fast unverändert übernommen werden. Mit Firefox, Opera und Safari funktioniert es bestens, nur im Internet Explorer ist das Bild nach dem Upload noch etwas verschoben. Ergo die üblichen Probleme, dazu werde ich noch den HTML-Experten meines Vertrauens konsultieren müssen.

Natürlich gibt es auch weiterhin Baustellen und Bugs, aber ansonsten wäre es ja auch langweilig. 🙂 Fortsetzung folgt…

Tags:
Kategorie: Allgemein

Foto-Alben mit Lightbox / Thickbox Ansicht

Schnell noch ein Feature: Lightbox in den Foto-Alben.

Thickbox, eine Adaption der beliebten Lightbox-Libraries für jQuery ist endlich eine Lightbox, die mir gefällt. Denn um ehrlich zu sein, habe ich diese Ansicht für Fotos auf Web-Seiten bisher eher gemieden. Thickbox bietet aber eine sehr elegante Implementierung, die noch dazu mit zusätzlicher Funktionalität wie Anzeige des Foto-Titels undBlättern innerhalb des Albums einher kommt. Daher wieder ein Update: Die Foto-Alben auf dieser Site, welche auf einer Django-Implementierung meiner damals yapa (yet another photo album), bzw. yapa2 genannten PHP-Skripte basieren, unterstützen nun die Ansicht mit Thickbox.

Ein kleines Beispiel befindet sich jetzt nicht mehr hier, einige Bilder aus dem Udo Jürgens Wiederholungskonzert in der Kölnarena von 2006.

Achtung, Beta! 😉

Tags:
Kategorie: Allgemein

Kleinere Optimierungen

Auch heute gibt es wieder ein paar kleinere Optimierungen.

Die auffälligste Änderung betrifft die Tag Cloud – sie ist jetzt endlich eine. Wie üblich bei derartigen Wortwolken wird nun die Schriftgrösse der Links durch die Anzahl der mit den jeweiligen Wörtern getaggten Artikeln bestimmt. Eine Kleinigkeit, aber so wirkt die ganze Angelegenheit doch bereits viel “Web 2.0”-mäßiger…

Darüber hinaus wird neben dem Link zum Trackback der “Permalink” dargestellt, unter dem der jeweilige Artikel dauerhaft verfügbar ist. Oder zumindest so lange, wie diese Site in dieser Form existiert.

Tags:
Kategorie: Allgemein

Blog oder nicht Blog – Trackbacks!

Was ist ein Blog? Eine Software? Eine Web-Site? Eine Lebensphilosophie?

Diese Frage lässt sich wohl nicht abschliessend beantworten. Aber Stück für Stück kommt kuerbis.org dem näher, was allgemein als Blog bezeichnet wird. Typisch für jene Gattung Software ist die Trackback-Funktion, mit der man sich beim Verfassen eines Artikels direkt auf einen anderen beziehen kann. Der zitierte Artikel wird darüber mittels Trackback benachrichtigt (“angepingt”), woraufhin der Verweis automatisch hinzugefügt wird.

Zumindest diese Hälfte des Trackback-Protokolls ist nun auf kuerbis.org implementiert, zu erkennen an dem unter jedem Artikel vorhandenen Hinweis auf die jeweilige Trackback-URL. Diese kann einfach kopiert und in der jeweiligen Blog-Software eingetragen werden.

Die andere Hälfte, die ausgehende Benachrichtigung per Trackback beim Schreiben eines Artikels fehlt dem System zwar noch, aber auch das ist nur noch eine Frage der Zeit – man erinnere sich, hier wird Django und somit Python eingesetzt – Stichwort “Batteries included”…

In der nächsten Zeit werde ich mich aber verstärkt um die Klausuren des aktuellen Semesters kümmern müssen, insofern könnte es doch noch ein wenig länger dauern. Also VWL und Kostenrechnung anstatt entspannter Programmierung mit Django / Python…

Tags:
Kategorie: Allgemein

“Sprechende” URLs in einer Minute

Der “slugify”-Filter macht’s möglich.

Längere URLs, dafür “sprechend”, d.h. der Titel der jeweiligen Seite wird – ein wenig abgewandelt – zusätzlich in den Link gepackt. Der Web-Server muss schliesslich nur noch damit umgehen können.

Dieses Feature gibt es nun auch für den Artikel-Bereich auf dieser Site.

Zeit für die Umsetzung: Etwa eine Minute.

Zwei, drei Templates ändern, dazu die Datei urls.py, in der beim Django-Framework das Mapping von URL zum betreffenden View enthalten ist. Genial. Habe ich schon erwähnt, dass mir Django immer besser gefällt? Und Python natürlich. Aber das versteht sich ja von selbst.

Des weiteren gibt es nun Links am Ende eines jeden Artikels, mit denen die URLs selbiger zu einigen der allseits beliebten “Social Bookmarking” Dienste gepostet werden können. Den Anfang machen del.icio.us, Digg und Mister Wong.

 

Tags:
Kategorie: Allgemein

Detailverbesserungen und Profilbilder

Nach geraumer Zeit gibt es heute mal wieder ein paar Neuigkeiten auf kuerbis.org.

Die erste betrifft den Footer, dieser ist ein wenig verändert worden, zeigt nun an prominenter Stelle einen Hinweis, dass diese Site auf Basis von Django erstellt wurde.

Die zweite ist weniger offensichtlich und betrifft den internen User-Bereich. Dort ist es nun möglich, eigene Profilbilder hochzuladen. Dies allein ist zugegebenermassen wenig aufregend. Doch da Profilbilder eine feste Grösse besitzen sollen, ist es wünschenswert, die Bilder nach dem Upload bearbeiten zu können. Dafür gibt es z.B. die JavaScript Image Cropper UI, die mit Hilfe der JavaScript-Libraries Prototype und Scriptaculous eine simple, web-basierte Oberfläche für diese Funktionalität bereitstellt. Diese Demo-Anwendung, welche auf PHP und ImageMagick basiert, hat bei der Implementierung ebenfalls geholfen.

Wir sind jedoch in der Welt von Django und Python, insofern kommt statt ImageMagick die Python Imaging Libraryzum Einsatz. Die Adaption ist – wie nicht anders zu erwarten – simpel und elegant.

Dennoch wird das Zuschneiden des Bildes bis auf weiteres die einzige Stelle sein, an der Scriptaculous hier Verwendung findet, denn an anderer Stelle setzt diese Site auf die wundervolle JavaScript-Library jQuery. Zum Beispiel beim Löschen des Profilbildes – kleine, aber nette Effekte sowie Ajax zur Kommunikation mit dem Server.

Der gesamte Quellcode steht selbstverständlich als Open-Source zur Verfügung, bislang bin ich zwar noch nicht dazu gekommen, das Subversion-Repository zu veröffentlichen, aber für Fragen stehe ich jederzeit zur Verfügung.

Update: Da haben sich wohl doch noch ein paar Fehler eingeschlichen, man sollte nicht zuviele Updates auf einmal machen…

Update 2: Die Fehler sind nun behoben. Eines der Probleme lag in der Verwendung der newforms-Library von Django, die sich noch in stetem Wandel befindet. So wurde aus clean_data nun cleaned_data. Nicht unlogisch, und sogar dokumentiert, aber bis gestern hatte ich noch nicht auf die aktuelle Version updated, so dass dies beim Testen natürlich nicht auffiel.
Ein zweites Problem lag schon etwas tiefer. Es handelte sich um fehlerhafte Lookups, infolge derer nicht diejenigen Objekte zurückgeliefert wurden, die man eigentlich erwartete. Auch dieser Fehler ist nun behoben.

Tags:
Kategorie: Allgemein

Neu: Der User-Bereich

Und wieder eine kleine Neuerung auf dieser Site: Seit heute gibt es wieder einen User- bzw. “Community”-Bereich.

Damit knüpft diese Site langsam wieder an das an, was es auf den alten kuerbis.org-Seiten bereits vor langer Zeit gegeben hat. Doch diesmal natürlich auf Basis von Django und Python.

Der User-Bereich bietet eine kleine, aber feine Basis für Community-Anwendungen. Für die Anmeldung reichen grundlegende Daten wie Name und E-Mail-Adresse. Letztere muß natürlich bestätigt werden, bevor der Account freigeschaltet wird. Nach dem Einloggen können im internen Bereich dann z.B. die Nutzerdaten vervollständigt oder das Passwort geändert werden. Selbstverständlich ist eine jederzeitige Löschung des Accounts ebenfalls möglich.

Insgesamt alles nicht unbedingt neu oder besonders aufregend, aber dennoch beinhaltet die “ComCore” getaufte Application die bis dato meisten Views und die umfangreichste Logik innerhalb der kuerbis.org-Anwendungen. Nur das Model ist vergleichsweise simpel gehalten, da es auf der von Django innerhalb Contrib zur Verfügung gestellten User Application basiert.

Ein kleines Schmankerl gibt es aber dennoch: Für sämtliche Formulare und deren Handling wurde die brandneue und nur in der Developer-Version vorhandene django.newforms-Library benutzt. Da die Dokumentation momentan noch etwas dünn ist, musste an einigen Stellen zunächst ein wenig experimentiert werden, aber es hat sich gelohnt. Die neue Library bietet wesentliche Verbesserungen, angefangen bei der Erstellung bis hin zur Validierung.

Momentan bietet der User-Bereich zwar noch nichts, was hier nicht auch ohne Account erreichbar wäre, aber die Voraussetzungen sind nun geschaffen, etwa wie auf der alten Site für private Fotoalben – oder auch ganz neue Anwendungen – also einfach abwarten…

Tags:
Kategorie: Allgemein

Zeitreisen – es gibt sie.

Geschichten über Zeitreisen sowieso. Aber das meine ich nicht. Nicht im Fernsehen, nicht im Film.

Rein persönlich, individuell. Ob in die Siebziger oder irgendwann Anfang der Neunziger, beinahe täglich können sie uns begegnen, vielleicht beim Tanken, vielleicht im Supermarkt oder der Bäckertheke.

Dummerweise hat man in solchen Augenblicken ausgerechnet keine Zeit, um dies vielleicht geniessen zu können, um vielleicht ein Stückchen davon in die Gegenwart zu bringen. Geschweige denn dass man vielleicht mal schnell genug ist, um nicht nur ein paar Kennzahlen errechnen zu können. Aber die eigene Reaktionsgeschwindigkeit ist naturgemäß reziprok zur nachträglich empfundenen Relevanz. Und ändern läßt sich daran vermutlich nie etwas.

Sicherlich – die nächste Gelegenheit kommt bestimmt – so in ca. fünf Jahren…
Und Allegro. Danke sehr.

Aktuelle Empfehlung:

Tags:
Kategorie: Allgemein

Feedback? Ja, bitte!

Eine kleine Neuerung am Rande – den Spammern sei Dank…

Heutzutage ist es leider nicht mehr möglich, ein ganz normales Feedback-Formular ohne (noch mehr) Anti-SPAM-Maßnahmen ins Web zu stellen. Zwar konnte dieses Feedback-Formular niemals missbraucht werden, dass Dritte Schaden genommen hätten (etwa durch Eingabemöglichkeit beliebiger Mailadressen, das wäre auch einfach nur grob fahrlässig). Somit war ich der einzige, der jene zweckfreien Ergüsse zu lesen bekam. Aber auf Dauer ist auch diese Werbung störend, eben aufgrund der Sinnlosigkeit derselben.

Daher die heutige kleine Neuerung – ab sofort wird das Feedback-Formular durch eine kleine Rechnung geschützt. Ich denke, das kleine Einmaleins beherrscht jeder, und ein wenig Addieren oder Subtrahieren ist auch nicht zuviel verlangt. Schliesslich sind die bekannten CAPTCHA-Bilder auch mitunter sehr mühsam zu lesen. Ergo einfach ein wenig rechnen, das Ergebnis eingeben, und schon kommt das Feedback auch bei mir an.

Wem das zuviel ist, kann natürlich gerne per E-Mail mit mir in Kontakt treten (Adresse dürfte bekannt sein, wenn nicht, hilft z.B. Google), oder sich “Social Software” wie OpenBC/Xing bedienen.

Tags:
Kategorie: Allgemein

Django – 200!

Mindestens…

Die nächste Mini-Applikation von kuerbis.org wird ein kleines Quickpoll-System. Nichts Besonderes, aber aus irgend welchen Gründen bin ich in den letzten Jahren mit PHP nie dazu gekommen, dies zu programmieren.

Falls man dazu ein Konzept haben muss, hatte ich dies längst in der Schublade – beispielsweise sollte quips im Gegensatz zu den meisten ähnlichen Systemen die Möglichkeit besitzen, nicht nur Einfach- sondern auch eine Mehrfachauswahl anzubieten.
Nur eine Kleinigkeit, aber nett.

Und natürlich das Admin-Tool nicht zu vergessen – öffentlich unsichtbar, aber zwingend notwendig für den Betrieb, und wie so häufig der aufwendigste Teil des gesamten Programms.

Nun sitze ich im ICE von Köln nach Hannover. Das Data-Model hatte ich am letzten Sonntag in etwa einer Stunde hineingezimmert. Heute sitze ich seit vielleicht einer halben Stunde an der Abstimmungs-Routine. Jetzt. Django mit Tempo 200 zwischen Hamm und Bielefeld. Der Kern von quips ist fertig.

Noch ein paar Verschönerungen, noch ein paar Aufräumarbeiten, der Code der Kommentierungs-Funktion gefällt mir noch nicht ganz, die IP-Sperre muss noch integriert werden, und später soll quips auch die Auswertung grafisch darstellen können.

Dank Django mit “Batteries included” Python lassen sich derartige Web-Anwendungen jedoch unglaublich schnell entwickeln. Sicherlich ist Django nicht zu vergleichen mit z.B. reinem PHP – ohne zusätzliche Frameworks. Und die Entwicklungen der letzten Zeit zeigen auch hier Fortschritte, etwa in Symfony, CakePHP o.ä.. Und der Urvater, Ruby on Rails, soll hier auch nicht vergessen werden.

Fazit: Web-Applikationen programmieren macht wieder Spass. Schnelle Ergebnisse, sauber erstellt, leistungsfähig in der Anwendung.

Aktuell fährt dieser ICE nur noch 160 km/h. Naja, man kann nicht alles haben…

Tags:
Kategorie: Allgemein