Design-Refresh

Und wieder ein paar Neuigkeiten, diesmal auf Design-Ebene.

Schon wieder ist ein Monat vergangen seit der letzten sichtbaren Änderung dieser Site. Ich schreibe gerade an einer weiteren Applikation. Da jene Seiten noch gestaltet werden müssen, fiel mir erneut auf, dass eine Überarbeitung des Designs längst überfällig war. Die ersten Stylesheets stammen noch aus einer Zeit statischen HTMLs. Seitdem wurden sie angepasst, neue Elemente hinzugefügt, aber angesichts jener iterativen Entwicklung beschäftigte ich mich bereits viel länger mit dem Thema Design als ich dies je wollte. Ein Refactoring war somit dringend nötwendig geworden.

Ich bin jedoch kein begnadeter Web-Designer, der mit jedem Browser-Bug auf Du und Du ist. Lieber eine Seite im „Null-Design„, dafür mit der gewünschten Funktionalität, als jedes Pixel ein drittes Mal umzudrehen. Daher habe ich mich entschlossen, diese Site auf Basis des (X)HTML/CSS Frameworks YAML (Yet Another Multicolumn Layout) neu aufzubauen. Der YAML Builder war dabei eine große Hilfestellung.

Das Vorgehen im Einzelnen: Zunächst erfolgte die Einrichtung von YAML, die das Ziel hatte, die Struktur einer Seite so darzustellen, wie diese im YAML Builder festgelegt wurde. Anschließend wurden die kuerbis.org-spezifischen CSS-Klassen in die dafür vorgesehenen Dateien eingebracht. Der letzte Schritt bestand aus der Anpassung des Basis-Templates. Tatsächlich waren Änderungen nur darin notwendig, alle abgeleiteten Templates blieben ohne Modifikationen erhalten. Das Ergebnis: Eine Site, die mit allen gängigen Browsern betrachtbar ist, selbst mit betagten Versionen wie MSIE 5.5 lassen sich die Seiten zumindest noch lesen. Wenngleich jene Browservarianten natürlich nicht mehr zu empfehlen sind… Noch ist zwar nicht alles perfekt, aber das wäre schließlich auch langweilig. Es wird folglich auch weiterhin Anpassungen geben, spätestens beim Hinzufügen neuer Features. Der Einsatz desFrameworks unterstützt dies auf einfache Art und Weise.

Somit muß ich mich nicht mit den vielen Kleinigkeiten beschäftigen, wenn dies Experten bereits übernommen haben. Ich ziehe definitiv meinen Hut vor den Autoren jenes Frameworks! Ich muss nicht mit Browsern kämpfen, mich nicht mit unzureichenden Debug-Möglichkeiten herumschlagen (Eine Seite mit dem Internet Explorer debuggen? Da kommt Freude auf!), sondern kann mich auf diejenigen Aspekte konzentrieren, die mir persönlich letztlich mehr Spass bereiten. Beispielsweise Programmierung mit Django/Python. Oder in letzter Zeit sogar JavaScript, die wohl am meisten mißverstandene und unterschätzte Programmiersprache der Welt. Aber das ist ein ganz anderes Thema…

 

Tags:
Kategorie:

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:

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:

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:

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:

„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:

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:

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:

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:

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: