Open Source Versionsverwaltungssysteme: Konzepte und Anwendungen

Ein langer Titel, doch so lautet die Studienarbeit, die ich im letzten Semester geschrieben habe.

Diese Hausarbeit entstand im Rahmen der Vorlesung “Betriebsinformatik III” an der Fachhochschule für Oekonomie & Management (FOM) im Sommersemester 2008. Zwar ist dies bereits einige Monate her, doch da ich momentan mit der Diplomarbeit beschäftigt bin und daher nur wenig Zeit habe, hier weitere Artikel, z.B. über Django, Python, Frameworks und der Programmierung selbiger zu veröffentlichen, ist dieser Text quasi ein kleines vorweihnachtliches Schmankerl.
Weiterlesen bei Open Source Versionsverwaltungssysteme: Konzepte und Anwendungen »

Tags:
Kategorie:

kuerbis.org, kein Halloween!

Das ist kuerbis.org. Nein, kein Halloween. Tut mir leid, wenn Sie diese Seite durch nette Suchmaschinen erreicht haben und Inhalte von, über und zu Kürbissen respektive Halloween erwarten. Darum geht es hier nicht.

Das ist nur eine kleine, private Seite, die ausser dem Logo und der URL nichts mit Kürbissen zu tun hat. Und erst recht nichts mit Halloween. Wirklich nicht! Sie sind aber herzlich eingeladen, die Artikel zu lesen, die eben nichts mit Kürbissen oder Halloween zusammenhängen. Oder die anderen, die überhaupt nichts damit zu tun haben. Oder einfach mal die leicht versteckten Bilder anschauen. Oder auch einfach schnell wieder diese Seite zu verlassen, weil sie eben nichts über Halloween oder Kürbisse hier finden. Na gut, vielleicht stelle ich demnächst mal ein Rezept für Kürbis-irgendwas online. Damit Sie wenigstens ein kleines Gimmick über Kürbisse finden. Nicht jedoch überHalloween, davon gibt es schon genug. Viel Spass bei und mit Kürbissen, Halloween und kuerbis.org.

Tags:
Kategorie:

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: