Die Entwicklung geht weiter…

Ich hab lange nichts von mir hören lassen. Ich hab die Zeit effektiv genutzt um mich der Galerie zu widmen. Eigentlich wollte ich letztes Wochenende eine Vorabversion ins Netz stellen, hab mich dann aber doch dagegen entschieden. Die Performance war mies und entscheidende Features haben gefehlt.

Heute hab ich fast alle meine Wunschfeatures zusammengeschaltet, so dass ich im Laufe der nächsten Tage mal eine Testversion zeigen kann. Was habe ich bis jetzt umgesetzt:

  • Eine Simple Goole-Map auf der ein Pfad angezeigt wird (nicht weiter wild)
  • Auf der Map werden Markierungen angezeigt, wo welche Bilder geschossen worden ist. Da meine Galerien jedoch meist viele Bilder beinhalten (>200 Bilder) musste ich hierbei etwas geschickter vorgehen:
    • nur Bilder die sich in dem sichtbaren Kartenbereich befinden werden überhaupt dargestellt (bzw an den Client übertragen)
    • Bilder die zu nah bei einander sind, so dass sie sich, aufgrund der Kartenauflösung/Zoomstufe, überlappen würden, werden zusammengefasst.
  • Es gibt eine Schnellauswahl der Bilder über eine Eingabe von Tags. Diese Tags werden dabei aus den Bildern extrahiert. Für die Eingabe steht die von Google bekannte „Suggest“-Funktion zur Verfügung (mit allen Annehmlichkeiten der Maus und Tastatursteuerung)
  • Zusätzlich gibt es einen Slider am unteren Rand, wie ihn Lightroom zur Verfügung stellt
  • Das ganze ist mittels C#/ASP.NET entwickelt und voll Mono tauglich

Noch ein wenig Feintuning und ich kann am WE geht eine Testseite online.

Brainfuck die zweite

Nach zwei Wochen hab ich so langsam den Dreh raus. Wenn man sich mal auf die Widrigkeiten von JavaScript eingelassen hat und JQuery nutzt kommt man recht gut vorran. Ohne JQuery geht es zwar auch, aber dann hat man mehr schmerzen als ohne 😉

Was hab ich nun die letzten zwei Wochen so getrieben. Nun ja erstmal grundlegend JavaScript am Beispiel „Wie interagiere ich mit GoogleMaps“ gelernt/eingearbeitet. Das „Erfahrene“ dann so in ein ASP-Steuerelement umgesetzt, dass man so halbwegs aus dem Codebehind die Steuerung übernehmen kann.

Es stellte sich schnell herraus, dass der aktuelle „Arbeitsprozess“ des ASP AJAX-Frameworks (Atlas) nicht dafür gemacht ist eigene Steuerelemente zu unterstützen die mehr Interaktion benötigen, als „clicked“-Handler. Ein vollständiger PostBack (ob nun mittels JavaScript oder ohne) ist ein wenig zu viel, wenn man nur ein paar Bilder bewegen will.

Nach dieser Erkenntnis und dem Empfinden, dass mein bisheriger JS-Code scheiße aussieht, hab ich nochmal alles überarbeitet und JQuery eingesetzt. Der Code ist zwar immer noch kaum „wartbar“ aber immerhin schön schlank.

Die Servercontrols wurden mit einem eigenen ResponseHandler versehen. Sie agieren völlig losgelöst vom eigentlichen ASP-Seiten-Lebenzyklus. Mittels eines eigenen RequestHandlers werden sie parallel zum den normalen Requestes mit Daten versorgt. Dahinter stehen selbstgeschrieben Bibliotheken die eine die Verarbeitung von GPS-Daten und Exif-Infomrationen erleichtern. Und das alles läuft unter Mono 😉

In den folgenden Tagen werde ich mal eine Beispielseite online stellen.

JavaScript und ASP-AJAX oder Brainfuck

Ich hab nun 1 1/2 wochen Testen und Rumprobieren hintermier und zieh mein erstes Fazit.

Ich hab zwei ASP – UserControls die jeweils miteinander kommunizieren. Einen Slider der eine Bilderliste nach rechts oder links „sliden“ lässt und eine GoogleMaps-Grafik auf der alle Bilder zurückgelegtem Weg angezeigt werden. Die beiden Controls kommunizieren auch mit einander. Fährt man über eine Bild , wird die karte verschoben und umgekehrt, klickt man auf ein Markersucht der Slider das entsprechende Bild.

Bei der Erstellung dieser  Funktionalitäten haben sich zwei dinge gezeigt.

  1. das AJAX-ASP.NET Framework  lässt einen ziehmlich schnell im regen stehen, wenn manmehr will als nur den herkommlichen Postback in AJAX gegossen.
  2. Von vernünftigen Hochsprachen auf JavaScript zu wechseln ist doch ziehmlicher Brainfuck

Erst nachdem ich mal für einige Zeit alles vergessen hab, was ich biss her über guten Programmierstiel gelernt habe und alle Konzepte ignoriert habe die ich so kannte, kam ich mit JS klar. Nach zwei Stunden fluchen waren die ersten vorzeigbaren Ergebnisse zu bestaunen.

Der Port auf Mono  lief ohne Probleme.  Sowohl LINQ als auch die ASP AJAX Extensions machten keine Probleme. Einzige die Performance war nicht sooo berauschend. Das es in meiner Umsetztung noch 3 Dicke Perfomence-Fresser gibt, war mir klar. Dass diese aber zu einem Timeout führen hätt icch auf einem 1.7Ghz Dualcore nicht erwartet. Da knie ich mich am wochenende rein, nachdem ich mich mit JQuery beschäftigt habe

Apache und Mono die zweite

Unter ubuntu hat man ein „kleines“ Problem wenn man nur Mono 2.0 installiert und eine ASP WebtSeite via Apache hosten will. Es fehlt dann an einem symbolischen Link.

Es müssen sowohl /usr/bin/gmcs und /usr/bin/gmcs2 vorhanden sein. Ist nur letzteres vorhanden muss das erste über einen symbolischen Link „hergestellt“ werden.

Um es bei der administration/einrichten von Webspaces etwas einfacher zu haben bieten sich ‚mono-server2-admin‘ und ‚mono-server2-update‘ an. Damit lässt sich eine ASP Seite recht einfach einrichten. Die erste Testseite grinnst einen in wenigen „Sekunden“ an…

Hello Mono (ASP)

mit folgenen befehlen installiert man das mono plugin für apache (unter ubuntu)

sudo apt-get install libapache2-mod-mono
sudo apt-get install mono-apache-server2

und mittels

sudo a2enmod mod_mono(_ autoload)

aktiviert man den ganzen kram…

aber vorsicht: vorher noch die Datei /etc/apache2/mods-available/mod_mono.conf checken, welche mono version geladen wird, standartmäßig ist das die 1.0…