Blog zur MediaDB

From EWIKI
Jump to navigation Jump to search

MediaDB "Blog"

Juli 2011: Die Idee reift.

31.07.2011:

  • Idee
  • Basisanforderungen
  • Basisfunktionen

August 2011: Konzeption und Prototype

01.08.2011:

  • Use Case Analyse
  • UML DB Modell erstellt (Informationsobjektanalyse: Entitäten/IDs/Relationen/Attribute/Type-Defs)
  • Create Table Script erstellt
  • rudimentäre Test Daten angelegt
  • WIKI Seite MediaDB in einzelne Seiten aufgeteilt

02.08.2011

  • Metadaten: Type-Erweiterungen um Mandantenfähigkeit ergänzt
  • Aufbau einer Infrastruktur (Apache, PHP, mySQL)
  • Architektur: Blueprint und Strukturierung
  • Nachdem das logische Datenmodell zu einer mySQL Modellierung verkommen war, habe ich noch mal ein separates logisches DB Modell erstellt, siehe MediaDB Datenmodellierung.
  • Erste Überlegungen zu den Komponenten und Methodensignaturen des AJAX Backend Service

03.08.2011:

  • Detaillierte Beschreibung des wichtigsten UCs Import New Media + Verlagerung dieses UCs in einen Prototypen.
  • TODO (für morgen) aus der UC Detailbeschreibung:
    • Das Datenmodell muss noch um die Entitäten Importverzeichnisse, Archiv-Verzeichnisse etc. erweitert werden.
    • Zudem sind einige neue Attribute für die schon bestehenden Entitäten notwendig.
    • Es können direkt einige notwendige Backend Services abgeleitet werden.
  • Erstellen einer Liste von Entscheidungen als bessere Alternative zur "offenen Punkte Liste". Entscheidungen können natürlich auch wieder geändert werden, muss als Change (auch =Entscheidung) untersucht werden und die Änderungen können u.U. natürlich recht aufwändig sein.

04.08.2011:

  • Client-abhängige Konfiguration von (Basis-)Archivierungsverzeichnissen (MediaBaseDir)
  • Client-abhängige Konfiguration von Importverzeichnissen (oder URLs)
  • Media: Name, TODO-Flag, Datum, Basisdatei, Info, OK-Version, Mini-Ansicht, Vorschau
  • aktuellen XAMPP installiert
  • erste Layoutidee (+Recherche) und Start des Aufbaus eines Klick-Dummys

06.08.2011:

12.08.2011:

  • Nachtschicht mit jQuery, um "selectable" Thumb-View mit modalem Preview zu erstellen.

13.08.2011:

  • Ouch, vor dem Urlaub ist es immer am härtesten -- aber jetzt...
  • habe einen Vormittag gebraucht um mal wieder Apache im SELinux so zum laufen zu bekommen, wie ein Entwickler es benötigt:
    • ein Teil der Magie ist der Zauberspruch: setsebool -P httpd_enable_homedirs 1
    • der Rest steht auf [1]

14.08.2011:

  • PHP Routine zum Scanning des Import Verzeichnisses
  • wieder Probleme mit SELinux: Thumbnails erzeugen und speichern

15.08.2011:

  • Nach systematischer Lektüre zur Funktionsweise von SELinux habe ich nun die Lösung, siehe Release Notes - -jetzt geht es wieder "vor Kohle"

September 2011: Code Explosion

03.09.2011:

  • zurück aus Mallorca - hab einige Lines-of-Code als Souvenir mitgebracht
  • JS-Event Handling in Import UI verbessert

05.09.2011:

  • zwei Tage CSS Programmierung und der Snapshot sieht etwas angenehmer aus und hat eine Haupt-Navigation, die auf allen Seiten verwendbar ist.

09.09.2011:

  • Meta Data Handling: Save, Update, Reload in JS Code und PHP Code

10.09.2011:

  • Seclection/Deselection Logik für ein Thumbnail

11.09.2011:

  • Multiselect Logik implementiert (jQuery hat so was zwar schon, das kann man aber nur sehr schwer mit anderer Logik kombinieren)

12.09.2011:

  • Neuer Modaler Dialog für Import Button mit backend Anbindung für Archivauswahl und Zielpfadanzeige.
  • Nachtrag: Irgendwas ist schon wieder beim Multiselect gestört, aber es ist gleich Mitternacht.

13.09.2011:

  • Yessss! 2000+ LoC!!

14.09.2011: "kleine Code Explosion"

  • Motivationsschub durch Video ansehen geht. Ohh ja: Bin großer Fan von den Thesen von Guy Kawasaki 'The Art of Innovation' for Informatics Ventures -- ok den meisten Thesen, auch wenn es sehr amerikanisch ist ;-)
  • Trash erstellt: Web, CSS, JS, Backend
  • "Import -> Trash -> Import" Media State Lifecycle funktioniert (hakt aber noch teils: update zieht nicht)

17.09.2011:

  • Umbau HTML 2 PHP
  • Index Seite: "remove speed bumps"
  • Upload Seite gestartet

18.09.2011:

  • Index Seite wieder entstrüppt
  • Cat6 Dose in meinem Arbeitssessel installiert (WLAN sucks w Windows)
  • Upload fertig gestellt (wunderschön mit drag-n-drop)
  • Einige Änderungen in Richtung Theming

19.09.2011:

  • Directoy Type Konzept überarbeitet, Codeschnippsel in Modul zusammengezogen
  • Mandanten Config UI gestartet (mit Link auf Service Admin UI)

20.09.2011:

  • Es funktioniert immer mehr, 4000+ eigene LoC. Config mit Tabs für Import, Service und Archiv-Konfiguration erstellt. JS für Speichern in Richtung Backend noch TODO.
  • Preview-Generierung von Uploads killen meinen Browser, wenn ich viele Bilder ins Upload schiebe. Muss ich noch ausbauen.

21.09.2011:

  • Datenbank Erweiterungen für EXIF und Meta Qualität und deren Anzeige
  • Datenbank Umbau der Tag Tabellen
  • UI für Tags: Anzeige der möglichen Tags in Tag-Kategorie-Tabs und der Tag Zuordnungen in den Thumnails.
    • Es fehlt noch die Zuordnung von Tags zu Medien (aber wenn ich jetzt weiter mache, ist gleich morgen).
  • Recherche zu Funktionalitäten und möglichen PlugIns, siehe Web 2.0 Link Sammlung

22.09.2011:

  • Grrrr, alles kaputt! Nach 2h Debugging war es ein simples Leerzeichen in einem JS, was wo war, wo es nicht hin gehörte, in einem Funktionsnamen :-(
  • Yehaaa: Tag-Zuordnung zu Medien funktioniert komplett: laden, selektieren, setzen, wieder löschen -- und alles sehr robust und intuitiv. Bin mehr als zufrieden.
  • Habe auch den Multiselect mit der Shift Taste wieder repariert (war seit einigen Tage hin). Irgendwas war mit dem Page-Lifecycle, die Medien-Liste war immer leer, dann klappt natürlich nix.
    • BTW: beim Archivieren geht die Medien-Liste und die Medien-Select-Liste auch über den Jordan. Ist ein TODO.

23.09.2011:

  • Medien-Tag Verwaltung fertig -- und geil geworden
  • User und Rollen Verwaltung OK -- und mit geilem drag 'n drop

30.09.2011: (nach Dienstreise Woche)

  • Improvements für User-Verwaltung - dieses schön-machen dauert immer viiiiieeeel zu laaaaaangeeeee :-(
  • PHP für Installation:
    • Initial PHP Checks
    • Create Table auf PHP umgestellt, incl. COL check und ALTER-auto-gen
    • Initiale Füllung durch vordefinierte INSERTs für neu erstellte Tabellen

Oktober 2011: Features, Features, Features

02.09.2011:

  • die Archivierung hatte ich im Blindflug geschrieben, ohne Möglichkeit zu testen. Das Debugging hat einige Tage gedauert. Jetzt klappt es. Zur Archivierung wird eine Version der Mediendatei in der DB angelegt, die Datei verschoben, dieses auf Erfolg getestet. Die vielen Kleinigkeiten, wie Verzeichnisse erstellen etc mussten auch alle gebaut werden. Auch die Manage Sicht funktioniert.
  • Die Archivierung wird in der Tabelle log protokolliert.
  • Upload vom Android Smartphone geht immer noch nicht, da JScript die Dateigröße nicht ermitteln kann :-(

03.09.2011:

  • Das Goggelfon macht Fotos mit lustigen Dateinamen, die mochte mein Server nicht. Es ist nun eine Dateinamen Korrektur integriert.
  • Tsja, der PHP Safe Mode macht auf meinem Test-Server neue Probleme, die gelöst werden mussten.

06.09.2011:

  • Geschäftsreisen halten mich vom Hobby ab
  • Formular zur Registrierung neuer User erstellt, es fehlen noch CSS und Backend, DB mal wieder erweitert um Funktionen zur Selbstregistrierung

09.09.2011:

  • User-Selbst-Registrierung steht
  • Login Form war eine harte Nuss
  • Security in alle Seiten integriert
  • Offene Security Funktionen:
    • Passwort ändern
    • Check auf Client nach Login und Sorry-Seite, falls User noch nicht zugeordnet
    • Client Request zuordnen (vielleicht neues Drag-N-Drop für Anträge)?
    • Check auf Admin für Config

10.09.2011:

  • Seite zum Anzeigen, Bearbeiten, Versionieren und Download eines einzelnen Bildes angefangen.

13.09.2011

  • Die Grundfunktionen stehen, jetzt geht es an das abarbeiten der TODOs
    • Suchfunktionen für Tags und Archive implementiert, optisch noch nicht ansprechend, aber das kommt später
  • Auftrennung von Upload (u/p) und Access URL.
    • DB Modell erweitert (oh ist das cool mit dem PHP Install Script -- die Mühe hat sich echt gelohnt)
    • in Upload mit Switch implementiert (Upl-Url leer > Download URL)
    • Config GUI nachziehen (uuhuuaaahhhaahaa -- grrr -- wieder min. 'ne Stunde mit CSS Layout gekämpft. Komisch, sobald alle Schreibfehler weg sind, klappt es auch).

16.10.2011:

  • Ich war nicht untätig, habe gegen viele kleine Probleme im Test gekämpft. Mein NAS ist über FTP integrierbar, ging aber nur mit diversen Security Verrenkungen (siehe Release Notes).
  • Aus der Test-Praxis lassen sich direkt Improvements ableiten:
    • Import-Refresh-Automatik, bis alle Verarbeitungen fertig sind
    • Upload für alte Browser (FF < 4)
    • Size Check nur als Warnung konfigurierbar (Remote Server Dateien haben abweichende Größe)
    • ChckSum als Check konfigurierbar
    • Selektion im Archiv als Sliedeshow speicherbar (!!)
    • FTP Dispatcher (Browser -> SVR -> FTP)

18.10.2011:

  • Dispatcher steht, ist aber auf dem Keller Server extrem langsam: Vermutungen: Round Trips mit ADSL
  • komplette Navigation ist auf Menüführung umgestellt und in der Applikation als Hook mit Call Back eingebettet, das entschlackt den Code der eigentlichen Seite. Navigationsfunktionalitäten sind so zentral programmiert.
  • erste Logik zur Zustandsführung (User Properties): Anzahl der Treffer pro Page (ach ja Paginator ist im Archiv drin)
  • DB Erweiterungen für Properties, Directory Funktionen etc. (Kleinkram) sind hinzu gekommen.

27.10.2011:

  • Es ist einiges passiert, auch ohne Log Eintrag:
    • (aus aktuellem Anlaß) Copyright Verträge können an Bilder gehängt werden
    • Such-Filter ausprogrammiert
    • mit Timestamp gekämpft bis ich feststellte, dass Datetime der korrekte Feldtyp ist
    • Uuuund: Directory Scan neu und funktionsfähig. Nice to have fehlt noch: "Rückwärts-parsen" von Directory Patterns

November 2011: Beta Test

Ich musste etwas zurückstecken und konnte nur hier und da die eine oder andere Stunde opfern.

12.11.2011:

  • Nachdoku:
    • Testserver wurde beschafft: www.mh-svr.de
    • Installation war nicht ganz so einfach, da sind noch TODOs (Stichwort: Henne-Ei)
    • Wieder fallen diverse kleine Unstimmigkeiten und Fehlerchen auf -- aber remote werde ich nicht schneller.
    • Performance ist so-la-la, könnte besser sein.
    • Passwort-Form sollte dringend als AJAX nach geladen werden, statt statisch drin. Der verzögerte CSS Load macht es so lange sichtbar -- unschön.
    • Inverse Tags: Alles steht, aber ich muss noch den Query testen (thx to Arne, da ging mir das SQL aus)

13.11.2011:

  • eMail Versand an neuen Nutzer und Admin bei Selbstregistrierung und an User bei Gruppenzuordnung
  • Scan-Dir scheint bei FTP-URLs Probleme zu haben, lande immer im Hauptverzeichnis. Muss also die Logik auf die FTP API umstellen, schade...
  • Bug-Fixing (seeehr server-spezifische)

14.11.2011:

  • On-the-fly-web-preview-o-matic (Blindflug, test!!)

15.11.2011:

  • FTP Dir Scan:
    • SELinux hat mich wieder eine Stunde gekostet -- Grrrr -- aber wer sein eigenes WIKI nicht liest :-(
    • Wollte nicht, passive FTP geflaggt und siehe da, dir kommt!
    • Nu geht's: Loop OK, jetzt muss nur wieder die Logik rein und ich bin platt (aber gleich spielt D-NL)

20.11.2011:

  • Bug Fixing
  • Installation Wizard
  • Installationshilfe

30.11.2011

  • es geht schleppend weiter -- kein antrieb mehr
  • eingier feinschliff, nichts grosses

Dezember 2011: Es gibt noch viel zu tun ...

01.12.2011:

  • Backup Funktionen gestartet
  • angedachte Backup Modi:
    • zweites Dir in-sync
    • XML Export
    • Copy-Button (to Dir, oder to-Zip)

06.12.2011:

  • Das Menü habe ich aufgegeben zugunsten einer "grafischen" Eingangsscreen. Diese visualisiert die Konfiguration eines Clients und ist gleichzeitig mit der Funktionalität verlinkt.

11.12.2011:

  • ich war nicht untätig, nur ein wenig
  • das Status- und Fehlerhandling von DIR ist nun asynchron, heißt: Dir im Fehlerstatus wird ignoriert, bis es in der Config erfolgreich getestet wurde
  • Status-Text wird nun auch in der Tabelle gespeichert und nicht jedes mal (mit) timeout getestet.

13.12.2011:

  • Reeeeefactoring

18.12.2011:

  • Custom Meta Info (siehe Konzeption zu Tag Meta Daten): Ist eine menge Holz! Was noch fehlt ist der AJAX Form Commit, der Rest steht.

19.12.2011:

  • Das Form Commit für Tag Meta Daten ist fertig und funktioniert. Hat viele Schleifen, da Daten ja komplett Dynamisch sein können. Das Feature ist ein echter Gewinn.
  • BTW: JQuery Ajax From Plugin ist soo genial. Das hat mir bei dynamisch generierten Froms bestimmt einen Tag Arbeit gespart.
  • TODO: Bei MySQL Inserts oder Updates muss ich noch die String Parameter, die über Froms komen mit mysql_real_escape_string() umwandeln,um keine SQL Injects zuzulassen.

23.12.2011:

  • Versionierungslogik

24.12.2011:

  • Neue Version aus Verzeichnis einlesen. Damit kann der normale Arbeitsablauf mit jeder Bildverarbeitung beibehalten werden. Neue Bildversion muss neben der Originaldatei im selben Verzeichnis liegen und den selben Basisnamen haben. Beispiel:
    • Original: temp/Test.JPG
    • neue Version temp/Test_1.JPG
  • Ho-ho ...

25.12.2011:

  • Visualisierung der Versionierung ist OK
  • Settings für Displaygröße

26.12.2011:

  • Change Password auf AJAX umgestellt
  • Kleinigkeiten
  • TODO: nervig, dass nach Rücksprung aus Einzelsicht alle Suchfilter gelöscht sind.

27.12.2011:

  • Suchfilter wird nun in PHP-Session gespeichert und kann re-initialisiert werden, wenn die Manage-Seite geladen wird.
  • TODO
    1. Ähm: Wenn es beim Import Probleme mit dem Version Record gibt, ist er danach nicht sichtbar :-(
      • : Es muss also eine Repair Funktion geben.
    2. Es ist mir unklar, warum auf meinem HE-Server kein Upload von Handy und die Pixlr-Integration nicht klappt.

Januar 2012: Die Realität ist immer etwas anders

04.01.2012:

  • PHP Security nervt. Es sollte eigentlich nun mein Foto-Archiv (Keller Server) eingelesen werden, aber es hakt noch.
  • Scanning nun mit
    • Session Cache der abgearbeiteten Files
    • Formular Änderung: Sub Dir
    • Dir List Funktion
  • Tag Anzeige nicht OK
  • Keys der Tag Tabelle passen nicht. TODO: Key Verwaltung für DB Versionen
    • Alternativen: Bereinigungsscript pro Version / Überprüfung der Keys

15.01.2012:

  • Lasttest auf Kellerserver: 12k Bilder jeglichen Alterns importiert. Ergebnis:
    • Performance ist noch OK
    • Import scheint aber ein Memory Leak zu haben
  • Aufgefallenes Verbesserungspotential
    • TODO: Manager: Anzeige nach Jahr und Monat optimieren
    • TODO: Manager: Datumskorrektur
    • TODO: Import: Bilder-Versionen zusammenführen
    • TODO: Import: Scanning mit zyklischen Modus
    • TODO: Manager: Tag-Metadaten: Select nach Metadaten

21.01.2012:

  • TODO: Bilder mit integriertem Preview haben kein Web Preview. Die Logik muss dringend korrigiert werden.(22.01.2012)

22.01.2012:

  • OK, Web-Peview wird nun on demand beim Click auf die Lupe erstellt und dann angezeigt
  • Hilfe angefangen
  • GUI Navigation ist nun modifizieren (Pull Down Menü soll entfallen)
    • Titel: Sprung auf Hauptseite
    • Titel-Grafik mit Sprung auf jeweiliges Dir-Scan
    • Change Password neben Logout

Noch Offene TODOs:

    • User Daten und Einstellung bearbeiten
    • Dir Scan mit Tabs
      • Scan Tab
      • Versionen zusammenführen Tab

28.01.2012:

  • Die Queries konnten durch optimierte SQL Statements um einen großen Faktor beschleunigt werden (ca. 1000)

29.01.2012:

  • Install und Update script, halbwegs intelligent mit update site

Februar 2012: ReFactoring

04.02.2012:

  • Install Script hat eine Menge Features bekommen (Versionierung, Lizenz-Anzeige, ...), für die Update Site generiert man nun das distfiles.txt per Browser
  • Der modale Previews Dialog wurde komplett geändert:
    • AJAX content, für 3 Device-Größen
    • Prev/Next Funktion in der letztn Suche
    • Tags können direkt im Preview vergeben werden, das ist praktisch, wenn die Beurteilung anhand des Thumbnails nicht ohne weiteres möglich ist.
    • noch geplant: Metadaten Formular.

05.02.2012:

  • Medientypen haben die Funktionen nun Plug-In gekapselt. Das hat eine Menge refactoring gekostet, aber für JPG nun klappt es ganz gut. Es müsste jetzt ein Plug-In-Template her.

12.02.2012: (nach ein paar Tage Pause ;-)

  • irgendwas stimmt mit dem Datum nicht -- da muss ich noch mal analysieren
  • da ich aber dringend Bilder finden musste, hab ich kurzerhand noch eine Suche über die Unterverzeichnisse erstellt, da die ja meist nach Datum gegliedert sind. Das ist schon seeeehr nützlich.

Sept. 2012: ReWork

24.09.2012: After some time without MDB: So I don't use it myself -- Why?? The analysis is not easy. Some points are easy to find -- it is not "smart" to use. And I was a little bit frustrated about import: Too much interaction -- some infrequent errors in import handling -- and no way to interact there. One big point: There is no good flow to work with the camera. And the name!!

So the decision is to invest some time to renew some things -- the basic functionality is good. So only minor improvements have to be done there. To be more professional, a JIRA is set up now.