Lizenzierung Teil 1

Verfasst am: Mittwoch, 12. Okt. 2011 um 22:03

Mit dem heutigen Update des BVASystems kommt wahrscheinlich eine eher unbeliebte Funktion zum Programm hinzu. Kurz nach dem Programmstart öffnet sich, unhabhängig aller Benutzerinteraktionen, ein kleiner Hinweis auf die unlizenzierte Verwendung des Programms. Man möge mir diesen Dialog entschuldigen, aber ich stecke sehr viel Herzblut in die Bildverwaltung, ohne auch nur einen kleinen geldlichen Vorteil zu haben. Ich erhoffe mir, dass wenigstens die Kosten für die Entwicklungsumgebung und die Kosten für diese Homepage durch die Lizenzierung getragen werden können.

Shareware Hinweis

Shareware Hinweis

In der nächsten Version werde ich dann die Möglichkeit schaffen, das Lizenznummern eingetragen und geprüft werden können, damit ihr auch eine Chance habt, den ungeliebten Hinweisdialog zu verbannen.

Aber auch funktional hat sich in den letzten 2 Wochen einiges getan. Die Vollbildansicht bietet nun deutlich mehr Funktionen. Es kann innerhalb der aktuellen Bildliste navigiert werden, es kann zwischen Graubildansicht und Normalansicht gewechselt werden, das aktuelle Bild kann gedreht werden und es kann sogar eine Slideshow gestartet werden.

Als zweite wichtige Neuerung ist es nun möglich, dass Fotos aus einem Fotoalbum entfernt werden können, ohne das sie gänzlich aus der Datenbank gelöscht werden. Es wäre schon ziemlich dumm, wenn die Bilder automatisch zu Fotoalben zugeordnet werden und der Anwender keine Chance hat zu korrigieren.

Das neue Homepage-Konzept

Verfasst am: Donnerstag, 22. Sep. 2011 um 23:34

Wie bereits angekündigt, strebe ich es an, das ich dieses Jahr noch eine einsatzfähige Version der Bilddatenbank veröffentlichen möchte. Als ersten kleinen Schritt, zum Erreichen des Ziels, habe ich vorrige Woche die alte BVASystem Homepage vom Netz genommen. Damit ist es nun nicht mehr möglich, das alte Programm käuflich zu erwerben. Außerdem hoffe ich, das die Softwarearchive die Verknüpfungen auf das BVASystem aktualisieren und ich dadurch hier mehr Aufmerksamkeit erzielen kann.

Stattdessen befindet sich nun auf http://www.bvasystem.de eine neue Seite, auf der ich Platz habe, die einsatzfähige Version der Software zu beschreiben. Da Sie  noch nicht komplett fertig ist, werde ich in nächster Zeit dort nach und nach weitere Seiten erstellen. Fertig ist bisher die Download-Seite und natürlich das Impressum. Außerdem ist die Installationsanleitung, die bisher hier im Blog stand, auf die neue Seite umgezogen.

Screenshot der neuen Homepage

Screenshot der neuen Homepage

Als weiteren Schritt in Richtung einsatzfähige Softwareversion habe ich einen Lizenznummerngenerator geschrieben, mit dem ich die Bildverwaltungssoftware absichern möchte. Mit dieser Lösung bin ich sehr zufrieden, da die neue Homepage dadurch keinen Loginbereich benötigt. Außerdem spare ich es mir, beim Veröffentlichen einer neuen Version, mehrere verschiedene Exe-Dateien und die dazugehörigen Installationsprogramme zu erzeugen.

Welche Änderungen gibt es am Programm?

Nun aber genug der Vorrede, denn ich habe auch wieder eine neue Programmversion fertiggestellt. Dieses mal lag der Hauptschwerpunkt in der Beseitigung von Fehlern. Beispielsweise war eine Änderung der Sortierungsreihenfolge einer Bildliste nur im aktiven Programmteil gültig. Richtig wäre gewesen, das sowohl bei Fotos von der Festplatte, als auch bei Fotos aus der Datenbank die geänderte Sortierreihenfolge gilt. Sehr erfreut bin ich darüber, das ich das Laden der Miniaturbilder nochmals beschleunigen konnte.

Als neue Funktion werden nun Bilder, die automatisch einem Fotoalbum zugeordnet worden sind, durch ein kleines Fähnchen markiert. Dadurch soll es einfacher sein, eventuell notwendige Korrekturen vorzunehmen. Fehlerhafte Zuordnungen fallen eher auf, wenn sie markiert sind. In einer der nächsten Versionen werde ich noch eine Funktion nachreichen, mit der die Fähnchen entfernt werden können. Dies dient quasi als Bestätigung des Nutzers, das die Bilder dort an der richtigen Stelle stehen.

Außerdem werde ich mich demnächst darum kümmern, das der Vollbildmodus mehr Funktionen erhält. Mich stört, das wenn ich mir Bilder angucke, ich für jeden Bildwechsel den Vollbildmodus schließen muss. Es liegt also nahe, das der Vollbildmodus ebenfalls Navigationsfunktionen erhält.

Automatisches Drehen von Fotos und andere neue Funktionen

Verfasst am: Mittwoch, 31. Aug. 2011 um 22:14

Für die Version 2.0.0.27 der Bildverwaltung habe ich diesmal die kompletten drei Wochen Entwicklungszeit benötigt. Dafür sind aber auch drei größere neue Funktionen entstanden, die ich mittlerweile nicht mehr missen möchte. Gerade die Erweiterung des EXIF-Moduls hab ich liebgewonnen.

Die erste Woche habe ich damit verbracht, das kürzlich vorgestellte EXIF-Modul zu erweitern. Es wird nun, sofern es vorhanden ist, das Orientierungs-Tag ausgewertet. Einige Digitalkameras mit Lagesensor speichern dort ab, ob das Bild im Hochformat oder Querformat aufgenommen wurde. Mit dieser Information ist es ein leichtes, die Fotos vor der Anzeige in die korrekte Richtung zu drehen. Es ist richtig schön, das der Aufwand zum Drehen der Bilder quasi komplett wegfällt.

Weiterhin wird das Thumbnail des EXIF-Headers genutzt, damit die Bildmatrix und der Filmstreifen schneller aufgebaut werden können. Es geht nämlich schneller, ein kleines Bild zu laden, als das Gesamtbild zu öffnen und dieses klein zu skalieren. Da das EXIF-Thumbnail wahrscheinlich kleiner ist als die Thumbnails im BVASystem, werden nachdem alle EXIF-Thumbnails geladen wurden, skalierte Originalbilder geladen.  Dieser Vorgang kann allerdings jederzeit abgebrochen werden. Für die Zukunft habe ich mir vorgenommen, den Ladevorgang so zu modifizieren, das zuerst die Bilder geladen werden, die sich im sichtbaren Bereich befinden. Vorerst muss es aber reichen, das die Bilder der Reihe nach geladen werden.

Neu ist auch im Datenbankmodus ein Eintrag für „Fotos ohne Fotoalbum“. Dieser dient dazu, das nachdem die automatischen Zuordnungen durchgeführt wurden, Bilder leicht gefunden werden können, welche noch keinem Fotoalbum zugeordnet sind. Von dort können die Bilder dann manuell einem Fotoalbum zugeordnet werden.

Fotos ohne Album

Fotos ohne Album

Die letzte Änderung betrifft die Metadatendefinitionen. Dort ist es nun möglich, das bereits gespeicherte Definitionen verändert werden können. Kompliziert daran war, das durch eine Änderung ebenfalls der Entscheidungsbaum aktualisiert werden musste. Auch werden nun nicht mehr benötigte Metadatendefinitionen gelöscht. Gelöscht wird zum Beispiel, wenn einem bereits angelegtem Fotoalbum eine neue bereits vorhandene Metadatendefinition zugewiesen wird. In diesem Fall wird die alte Definition nicht mehr benötigt. Beim Löschen von Fotoalben werden ebenfalls nicht mehr benötigte Metadatendefinitionen gelöscht.

Wichtige Ankündigung

Verfasst am: Donnerstag, 11. Aug. 2011 um 22:55

Bekanntlich werfen große Ereignisse ihre Schatten voraus und so soll es auch beim BVASystem sein. Bevor ich allerdings zur wichtigen Ankündigung komme, möchte ich diesen Blog kurz nutzen um die neue Programmversion vorzustellen.

BVASystem 2.0.0.26

Die wichtigste Änderung diesmal ist sicherlich das EXIF-Modul, welches ich bereits vor ein paar Tagen vorgestellt habe. Optisch fällt das neue Modul leider überhaupt nicht auf. Erst beim Import von Fotos sollte dem aufmerksamen Nutzer auffallen, das nicht mehr das Änderungsdatum der Bilddateien ausschlaggebend ist.

Auffälliger dagegen ist eine „Kleinigkeit“ die einen deutlichen Komfortgewinn mit sich bringt. Und zwar kann nun mit Hilfe des Mausrades  innerhalb der Komponente, die gerade den Eingabefocus hat, navigiert werden. In der Komponente, die zur Bildanzeige genutzt wird, kann sogar in vertikaler und horizontaler Richtung mit dem Mausrad navigiert werden. Zur Aktivierung der horizontalen Navigation muss während man das Mausrad bewegt die Strg-Taste der Tastatur gedrückt werden.

Die dritte größere Änderung, die mich am meisten Zeit gekostet hat, betrifft den Dialog zum Anlegen eines Fotoalbums. Ich hoffe, das ich es geschafft habe, das die Metadatendefinitionen nun komfortabler angelegt werden können. Und ich hoffe, das  für jeden Zustand des Dialoges gültige Daten angezeigt werden. Es wird nun nämlich der Metadatenname automatisch festgelegt und bei Namensgleichheit mit einer bestehenden Definition wird diese geladen.

Wichtige Ankündigung

Nun aber zum eigentlichen Themagebenden Teil des Blogs: Ich denke langsam aber sicher ist es an der Zeit, das vom BVASystem nach nun etwas mehr als einem Jahr Entwicklungszeit eine stabile nutzbare Version veröffentlich wird. Da meine eigenen Bilder sehnlichst darauf warten, kategoriert zu werden, ist der Schritt zur stabilen Programmversion auch nicht ganz uneigennützlich. Die stabile Version hat zur Konsequenz, das ich garantiere, das die angelegten Daten bei späteren Programmversionen nicht wieder neu angelegt werden müssen.

Die nächste Zeit werde ich damit verbringen, Fehler zu beseitigen und kleinere Erweiterungen zu entwickeln, die den Komfort erhöhen. Wie lange ich dafür brauchen werde, ist schwierig abzuschätzen. Da ich nicht weiß, was sich noch so an Fehlern im Programm befindet. Ich rechne aber damit, das ich noch dieses Jahr die stabile Programmversion fertigstellen kann. Die Aufgaben, die noch erledigt werden müssen, habe ich in den letzten Tagen im Bugtracker eingetragen.

Die stabile Programmversion BVASysten 2.1 werde ich sobald sie fertig ist, käuflich für ein paar Euro anbieten. Aber trotzdem bleibt die Programmversion, die heruntergeladen werden kann, frei von zeitlichen und funktionellen Einschränkungen. Der unregistrierte Nutzer wird „nur“ einen kleinen Hinweis auf die Kaufversion hinnehmen müssen. Ich hoffe, das Ihr so ehrlich seid und das Programm nach einer uneingeschränkten Testphase, bei Gefallen käuflich erwerbt. Für mich wäre es jedenfalls ein toller Anreiz, wenn ich durch die Arbeit den einen oder anderen Euro bekommen würde. Danke schonmal im voraus.

Was ist der EXIF Header und wofür ist er gut?

Verfasst am: Montag, 08. Aug. 2011 um 11:07

Der aufmerksame Leser meiner im Bugtracker veröffentlichten Roadmap hat bereits gesehen, das in der neuen Programmversion 2.0.0.26 ein neues Modul genutzt wird, welches den EXIF-Header eines Bildes auslesen kann. Obwohl der EXIF Header recht weit verbreitet ist, und demnach viele Nutzer mit der Abkürzung wohl etwas anfangen können, so möchte ich trotzdem kurz für den Rest erklären was der EXIF Header ist und wofür er gut ist.

EXIF ist die Abkürzung für Exchangeable Image File Format. Moderne Digitalkameras nutzen diesen Standard der Japan Electronics and Information Technology Industries Association (JEITA) um aufnahmerelevante Informationen direkt mit dem Bild zusammen abzuspeichern. Die Daten werden in einem sogenannten Header am Anfang einer Bilddatei abgelegt. Der Header selber besteht aus einer sequentiellen Auflistung von sogenannten EXIF-Tags. In jedem Tag wird eine Information, wie zum Beispiel das Aufnahmedatum, gespeichert. Es gibt einige dutzend Tags, die so gut wie immer in einem EXIF-Header vorhanden sind.

Zu diesen Tags zählen:

  • Kamerahersteller
  • Kameramodell
  • Aufnahmedatum
  • Bildorientierung
  • Belichtungszeit
  • Blende
  • Brennweite
  • ISO-Wert

Zusätzlich könnten beispielsweise bei einer Kamera mit integriertem GPS die Koordinaten der Bildaufnahme im Bild ablegt werden. Ebenfalls ist es möglich, das bereits ein kleines Vorschaubild im Header integriert ist. Auch werden häufig herstellerabhängige technische Parameter mit im Header abgespeichert, die sich nicht ohne weiteres allgemein gültig interpretieren lassen. Insgesamt gibt es mehrere hundert verschiedene EXIF-Tags.

Für die Bildverwaltung ganz interessant ist, das der EXIF Header durch die sogenannten IPTC Tags nachträglich erweitert werden kann. Dort lassen sich Bildbeschreibungen, der Fotograph des Bildes und Copyright-Hinweise ablegen. In einer Bildverwaltung sollte diese Möglichkeit genutzt werden, damit für den Anwender die Möglichkeit besteht das Verwaltungsprogramm zu wechseln ohne das wieder alle Bilder neu beschrieben werden müssen.

Vorerst habe ich mir für das BVASystem nur vorgenommen, das das Aufnahmedatum eines Bildes ausgelesen werden kann, damit auch bearbeitete Bilder an die richtigen Stellen der Datenbank sortiert werden können. Nach und nach werde ich das EXIF Modul erweitern, bis möglichst alle Informationen ausgewertet werden können.

Dreifaches Jubiläum

Verfasst am: Dienstag, 19. Jul. 2011 um 23:22

Dieses mal freue ich mich ganz besonders darauf, eine neue Programmversion der Bildverwaltung anzukündigen. Denn ich habe, fast auf den Tag genau, nach nun einem Jahr „BVA goes Datenbank„, ein für mich ganz wichtiges Ziel erreicht. Die Bilddatenbank ist nun in der Lage, bereits beim Archivieren von neuen Fotos, diese zu Fotoalben zuzuordnen. Außerdem ist es auch noch die 25. Programmversion, die ich soeben veröffentlicht habe.

Die, für die automatischen Zuordnungen, genutzten Metadaten wurden ja bereits in älteren Blogs ausführlich beschrieben. Auch der Ablauf der Zuordnungen über den Entscheidungsbaum wurde erläutert. Im letzten Schritt wurde in der neuen Version die Suche im Entscheidungsbaum programmiert und natürlich ebenso die Speicherung der gefundenen Verknüpfungen.

Screenshot der Version 2.0.0.25 der Bilddatenbank BVASystem

Screenshot der Version 2.0.0.25 der Bilddatenbank BVASystem

Ich muss aber ehrlich zugeben, das noch immer eine Menge Details nicht funktionieren. Wichtig ist es mir, darauf hinzuweisen, das zur Zeit Änderungen an den Metadatendefinitionen erst nach einem erneutem Start des Programmes aktiv sind. Änderungen am Entscheidungsbaum werden vorerst nur durch den Initialisierungs-Workertask vorgenommen. Diesen Umstand werde ich in einer der nächsten Versionen auf jeden Fall korrigieren.

Apropos korrigieren. Vor bereits relativ langer Zeit wurden mir Unstimmigkeiten im Programm gemeldet, die die Steuerung per Tastatur betrafen. Diese Unstimmigkeiten waren mir allerdings bisher nicht so wichtig. Da ich das Programm mittlerweile fast täglich benutze, stören mich solche „Kleinigkeiten“ immer mehr. Also bin ich der Sache nun nachgegangen, damit das Programm in sich stimmiger wird.

Tastatursteuerungen erfolgen nun nicht mehr global, sondern sie werden von der Komponente gesteuert, die gerade den Focus besitzt. Wo sich der Focus gerade befindet, kann durch den gestrichelten Rahmen am Rand festgestellt werden. Je nachdem, welche Komponente den Focus bestitzt, stehen unterschiedliche Funktionen zur Verfügung. In den Baumansichten kann per Pfeiltaste hoch bzw. runter navigiert werden. Mit der Pfeiltaste nach rechts der aktuelle Knoten im Baum geöffnet und mit der Pfeiltaste nach links wieder geschlossen werden. Besitzt der Filmstreifen den Focus, kann mit den Pfeiltasten nach links bzw. nach rechts in der Liste navigiert werden. Das gleiche ist auch in der Miniaturbilderansicht möglich.

Als Ausblick auf die nächste Programmversion der Bildverwaltung kann ich den Hinweis geben, das ich die nächsten 14 Tage damit verbringen werde, ein Modul zu entwickeln, mit dem ich die EXIF Informationen eines Bildes auslesen kann. Im Speziellen geht es darum, das das korrekte Aufnahmedatum des Bildes ausgelesen werden kann. Es ist toll, das ich Fotoalben-Zuordnungen aufgrund des Aufnahmedatums vornehmen kann. Es ist allerdings weniger toll, wenn ich dafür das Dateiänderungsdatum nutze, da sich dieses vom wirklichen Aufnahmedatum unterscheiden kann.

 

Der Metadaten Entscheidungsbaum

Verfasst am: Montag, 04. Jul. 2011 um 07:34

In der Zwischenzeit sind die angekündigten 2 Wochen fast um, aber ich hatte die letzten 2 Wochen auch noch alle Hände voll zu tun. Da langsam aber sicher die Anzahl der Downloads des BVASystems steigen, war es für mich plötzlich ziemlich wichtig, die Installationsanleitung für das Programm fertig zu schreiben. Ich hoffe, das dadurch die technische Hürde, die vor dem Benutzen des Programmes steht, gesenkt werden konnte.

Trotzdem ist die Version 2.0.0.24 nun fertig und kann an alt bekannter Stelle heruntergeladen werden. Neben einigen kleineren Bugfixes steckt dieses mal der größte Teil der Arbeit in dem Workertask zur Initialisierung eines Entscheidungsbaumes, der für die Zuordnungen zwischen Bild und Fotoalbum genutzt werden soll.

Direkt nachdem die Verbindung zur Datenbank hergestellt wurde, wird der Initialisierungstask angeworfen. Spätestens nach einigen Sekunden ist der Task abgearbeitet und es kann wie gewohnt mit der Datenbank gearbeitet werden. Die erfolgreiche Beendigung des Tasks kann über den Statusdialog des Workers bei Bedarf kontrolliert werden.

Aufbau des Entscheidungsbaumes

Der Entscheidungsbaum, wie er beim BVASystem zum Einsatz kommt, besitzt eine feste Struktur. Als erstes Entscheidungskriterium wird das Metadatenelement „Besitzer des Bildes“ gewählt. Als Unterknoten der dadurch entstehenden Knoten wird das Metadatenelement „Aufnahmedatum“ eingefügt. Damit der Baum nicht zu sehr in die Breite wächst, habe ich das Aufnahmedatum dreistufig zerlegt. Die erste Einteilung wird grob über das Aufnahmejahr vorgenommen, die zweite Einteilung wird durch das Aufnahmedatum definiert und erst in der dritten Ebene wird das komplette Aufnahmedatum genutzt. Den genauen Aufbau des Baumes habe ich versucht durch folgendes Bild darzustellen:

Metadaten Entscheidungsbaum des BVASystems

Metadaten Entscheidungsbaum des BVASystems

Sonderfälle

Auf dem Bild sieht man deutlich einige Sonderfälle, die dadurch entstehen, das der Anwender bei den Metadatendefinitionen nicht eingeschränkt ist.

Wenn der Anwender zum Beispiel kein Metdatenelement „Besitzer des Bildes“ hinzufügt, dann kann bereits die erste Ebene des Baumes nicht entschieden werden. Damit trotzdem mit dem Baum gearbeitet werden kann, wird in diesem Fall ein Knoten mit der Information: „Der Bildbesitzer ist nicht relevant“ angelegt. Die vorhandenen Aufnahmedatum Metadatenelemente werden dann als Unterknoten dieses Knotens angelegt. Im Bild ist dies bei der Metadatendefinition für Fotoalbum 2 der Fall.

Ein weiterer Sonderfall tritt ein, wenn ein Metadatenelement doppelt definiert wurde. Grundsätzlich bedeutet es ja, wenn mehrere Metadatenelemente definiert wurden, das alle erfüllt sein müssen. Es macht aber keinen Sinn, wenn man beispielsweise definiert: Besitzer des Bildes ist Max und Besitzer des Bildes ist Paul. Denn diese Bedingungen werden niemals erfüllt werden können, denn der Besitzer des Bildes ist immer derjenige, der das Bild in die Datenbank eingestellt hat. Also immer eine Person. Daher werden mehrfach vorhandene Metadatenelemente immer als „oder“  interpretiert. Im oben genanten Beispiel wäre die Bedingung erfüllt, wenn der Besitzer des Bildes Max oder Pault ist. Im Bild ist dieser Sonderfall bei Fotoalbum 3 zu sehen.

Ausblick

So langsam aber sicher befindet sich das BVASystem auf der Zielgeraden. In der nächsten Version wird dann endlich der Entscheidungsbaum genutzt um die Zuordnungen zwischen Foto und Fotoalbum automatisch herzustellen. Eigentlich mag man meinen, das dann wieder ein großer Meilenstein abgeschlossen ist, aber leider fehlen dann noch die ganzen Feinheiten. Die Metadatendefinitionen können nicht editiert werden, nicht gelöscht werden, es gibt keine Handhabung für falsche Zuordnungen, der Umfang der möglichen Metadatenelemente ist noch stark ausbaufähig … es bleibt also immernoch sehr sehr viel zu tun.

Wozu dient ein Entscheidungsbaum?

Verfasst am: Mittwoch, 22. Jun. 2011 um 21:56

Im Ausblick bei der letzten Programmaktualisierung habe ich beschrieben, das ich auf der Suche nach einer sinnvollen Datenstruktur bin, um die Zuordnungen zwischen Fotos und Fotoalben effizient erstellen zu können. Entschieden habe ich mich für einen Entscheidungsbaum. Bevor ich in 1 bis 2 Wochen die Version 2.0.0.24 veröffentliche, die eine Implementierung eines Entscheidungsbaumes enthält, möchte ich kurz erklären, was ein Entscheidungsbaum ist und worin ich die Vor- bzw. Nachteile sehe.

Was ist ein Entscheidungsbaum?

In der Informatik stellen Entscheidungsbäume eine Möglichkeit dar, mit der automatische Klassifizierungen vorgenommen werden können. Um eine Klassifizierung vornehmen zu können, wird der Entscheidungsprozess durch mehrere formale Regeln beschrieben. Diese formalen Regeln werden hierarchisch angeordnet. Ein simpler Entscheidungsbaum könnte wie folgt aussehen:

Ein einfacher Entscheidungsbaum

Ein einfacher Entscheidungsbaum

Zur Klassifizierung wird beim Wurzelelement begonnen, die formale Regel zu beantworten. Anschließend wird beim passenden Kindknoten des Baumes fortgefahren. Es wird wieder die formale Regel abgearbeitet und anschließend wieder der Kindknoten untersucht. Der Prozess endet, sobald der Baum keine weiteren Kindknoten enthält.

Möchte ich, nach dem obigen Beispiel, einen roten runden Ball in eines der Fächer einordnen, dann gehe ich wie folgt vor: Als erstes schaue ich, ob der Ball rot oder gelb ist. Da der Ball rot ist, muss ich auf der linken Hälfte des Baumes weitersuchen. Der rechte Teil des Baumes muss nicht weiter betrachtet werden. Anschließend schaue ich mir die Form des Balls an: Er ist rund und somit ist wieder der linke Teil des Baumes der gesuchte Teil. Da die unterste Ebene des Baumes erreicht wurde, ist nun bekannt, das der Ball in das Fach1 gehört.

Welche Vorteile hat ein Entscheidungsbaum?

Der größte Vorteil eines Entscheidungsbaumes ist, das der Anwender durch die formalen Regeln  relativ gut nachvollziehen kann, warum eine Entscheidung so getroffen wurde, wie sie getroffen wurde. Treten falsche Klassifizierungen auf, so kann der Anwender problemlos durch Anpassung der formalen Regeln, korrigierend eingreifen. Bei alternativen Ansätzen, zum Beispiel neuralen Netzen, ist es für den Anwender absolut unmöglich eine Klassifizierung nachzuvollziehen.

Auch der Aufwand, der zur Klassifikation eines Elementes benötigt wird, wird reduziert. Ohne Entscheidungsbaum würde man für jedes mögliche Klassifikationsergebnis testen, ob die Bedingungen erfüllt sind. Schauen wir wieder auf das Beispiel, so müssten für die Fächer 1 bis 4 jeweils 2 Vergleiche, insgesamt also 8, durchgeführt werden. Mit Entscheidungsbaum fallen mit jeder Hierarchiestufe eine Anzahl nicht möglicher Klassifikationsergebnisse weg. Beim Beispiel bleiben somit nur 2 Vergleiche übrig um das richige Fach zu finden. 

Welche Nachteile hat ein Entscheidungsbaum?

Ein Nachteil eines Entscheidungsbaumes ist, das er nur für abzählbare Datentypen anwendbar ist. Wählt man beispielsweise die Länge eines Objektes als Kriterium, so kann es vorkommen, das für jedes Objekt ein neuer Knoten eingefügt wird. Der Grund dafür ist, das jedes Objekt eine leicht andere Länge aufweisen kann: Eines ist 2,5cm lang, das nächste, 2,49cm und das übernächste 2,495, usw. Entgegen wirken kann man dem, indem die Länge nur gerundet in die Bewertung eingeht. Durch die Rundung kann sich allerdings das Klassifikationsergebnis leicht verschlechtern, da möglicherweise Elemente einem falschen Knoten zugeordnet werden.

Ein weiterer Nachteil ist, das der Baum sehr schnell in die Breite wachsen kann, wenn eine Eigenschaft sehr viele verschiedene Ausprägungen besitzt. Je breiter der Entscheidungsbaum wird, desto mehr büßt man von dem eingesparten Aufwand zur Entscheidungsfindung ein. Tritt so ein Fall ein, so ist es ratsam, den Baum so umzuformen, das eine weitere Ebene entsteht.

Fazit

Für mich scheinen Entscheidungsbäume genau der richtige Weg zu sein, um die Zuordnungen zwischen Foto und Fotoalbum effizient treffen zu können. Allerdings sehe ich schon noch Schwierigkeiten darin, wie er sinnvoll aufgebaut werden sollte. Bereits bei dem Metadatentyp „Aufnahmedatum“ habe ich die Befürchtung, das der Baum zu sehr in die Breite wächst. Vorteilhaft ist aber, das der Entscheidungsbaum nur temporär entstellt wird. Daher kann ich die Struktur des Baumes ohne Probleme aktualisieren, wenn die alte Struktur sich als ineffizent herrausstellen sollte.

Seltsames Hint-Verhalten

Verfasst am: Mittwoch, 15. Jun. 2011 um 23:26
PageControl mit Hint

PageControl mit Hint

Ich habe ja schon viele komische Sachen in der Zeit erlebt, in der ich Delphi programmiere. Das Hint-Verhalten der TPageControl und TTabsheet Komponenten ist mir völlig unlogisch. Dem Tabsheets kann man wunderbar jeweils einen Hint zuweisen. Dieser wird aber nur angezeigt, wenn man sich innerhalb des Clientbereiches des Tabsheets bewegt. Wofür braucht man da bitte schön einen Hint? In dem Bereich liegen normalerweise weitere Oberflächenelemente mit eigenständigen Funktionen. Dort wo man den Hint bräuchte, nämlich auf dem Reiter zum wechseln der Tabsheets, erscheint er nicht. Auf den Reitern wird der Hint angezeigt, den man dem PageControl zugewiesen hat.  Also für alle Reiter der gleiche.

TBVAPageControl

Nun habe ich mir die Mühe gemacht, dieses Verhalten dahingehend zu korrigieren, das es für meine Zwecke einsetzbar ist. Ich habe eine  neue Komponente TBVAPageControl von TPageControl abgeleitet. Falls jemand das TBVAPageControl benötigen sollte: Hier ist es.

Das neue PageControl kann genauso wie das TPageControl verwendet werden, nur das Hint-Verhalten ist halt ein anderes. Beim TBVAPageControl werden die Hints nur noch auf den Reitern angezeigt. Sie sollen als Erklärung dienen, was dem Anwender beim Wechsel auf die jeweilige Seite erwartet. Die Tabsheets selber zeigen keine Hints an und auch das PageControl hat keinen eigenen Hint mehr. In der Entwicklungsumgebung setzt man seine Wunschhints einfach bei den jeweiligen Tabsheets. Der Hint des PageControls bleibt leer.

Wie funktioniert das ganze?

Eigentlich ist das TBVAPageControl ziemlich simpel. Im Mousemove Event wird überprüft, welcher der Reiter sich an der Mausposition befindet. Wenn ein Reiter bestimmt werden konnte, wird der Hint des jeweiligen Tabsheets dem PageControl zugewiesen. Befindet sich die Maus auf keinem Reiter oder verlässt die Maus das PageControl, so wird der Hint des PageControls wieder gelöscht.  Zu erwähnen ist vielleicht noch, das ich das PageControl um ein OnMouseEnter und ein OnMouseLeave Event erweitert habe, da diese in der Standardimplementierung nicht vorhanden waren.

Metadatenverwaltung Teil 2

Verfasst am: Sonntag, 05. Jun. 2011 um 09:24

Die Zeit vergeht wie im Fluge. Schon wieder sind die 2 Wochen um und somit steht wieder eine Aktualisierung der Programmversion an.

Leider muss ich diesmal gleich vorab einen unangenehmen Fehler beichten: Ich habe vergessen, bei einer neuen Datenbanktabelle das Häkchen zum automatischen Hochzählen des Index-Feldes vergessen. Daher gibt es diesmal wieder eine aktualisierte Datenbankstruktur, die erstellt werden muss. Es tut mir Leid, das schon wieder eine Aktualisierung notwendig ist.

Wie die korrigierte Datenbankstruktur vermuten lässt, habe ich die Metadatenverwaltung so erweitert, das die XML-Strukturen in der Datenbank abgespeichert werden können. Beim Erstellen eines neuen Fotoalbums können die Metadateneinstellungen vorgenommen werden. Diese werden dann automatisch mit dem Fotoalbum zusammen gespeichert. Für die Speicherung ist es notwendig, das die Metadaten einen eindeutigen Namen erhalten. Dieser Name muss im aktuellen Entwicklungsstand manuell festgelegt werden. Bereits verwendete Namen sind in der Auswahlliste des Namenfeldes eingetragen. Ein Editieren der gespeicherten Metadaten ist aktuell noch nicht möglich.

Neues Fotoalbum anlegen mit eingetragenen Metadaten

Neues Fotoalbum anlegen mit eingetragenen Metadaten

Die zweite riesige Änderung der letzten 14 Tagen wird wohl jedem, der das Programm benutzt, sofort ins Auge stechen. Ich habe die Funktionen in den Menüs neu geordnet. Neu hinzugekommen ist, das nun auch ebenfalls auf dem Vorschaubild ein Popup-Menü geöffnet werden kann. Jetzt sollte es möglich sein, das jede Funktion in jeder der drei Ansichtsmodi verwendet werden kann. Es hatte mich gestört, das man in der Einzelbildansicht beispielsweise kein Bild in die Datenbank importieren konnte. Ich hoffe, das die neue Anordnung klarer strukturiert ist und keine logischen Unstimmigkeiten mehr aufweist.

Ich schätze, das ich noch 2 weitere Versionen benötigen werde, um eine allererste durchgängig funktionierende Metadatenverwaltung am Start zu haben. In den nächsten 14 Tagen will ich mich damit beschäftigen, eine Worker-Aufgabe zu implementieren, die mir die gespeicherten Metadaten in einer sinnvollen Datenstruktur ablegt. Diese Datenstruktur will ich dann in der übernächsten Version nutzen, um direkt beim Import Zuordnungen zu Fotoalben zu erstellen.