Posts Tagged ‘Worker’

Fertigstellung der manuellen Bildbewertung

Montag, September 17th, 2012

Bis auf einige Kleinigkeiten ist heute nun auch die manuelle Bildbewertung fertig implementiert. Leider hat die Umsetzung etwas länger gedauert, als ich eigentlich geplant hatte. Zum einen hatte ich den Aufwand für die Nutzerinteraktion unterschätzt und zum zweiten setzte mich eine Krankheit für knapp eine Woche außer Gefecht. Nun ist aber endlich die 50. Version der Bildverwaltung fertig und steht zum Download bereit.

Wie funktioniert die manuelle Bildbewertung?

Die manuelle Bildbewertung setzt sich aus einer Reihe von  Unterbewertungen zusammen, die wiederum Unterbewertungen enthalten können. Als Anwender hat man nun die Wahl, ob man einfach und schnell nur die gängigen 1 bis 5 Sterne vergeben möchte, oder ob jede einzelne Unterbewertung separat gesetzt werden soll. Wird eine Bewertung, die weitere Unterbewertungen enthält, festgelegt, so werden gleichzeitig die Unterbewertungen auf den gleichen Wert gesetzt. Andersherum werden übergeordnete Bewertungen durch eine Mittelwertbildung berechnet.

Manuelle Bildbewertung im ungespeicherten Zustand

Manuelle Bildbewertung im ungespeicherten Zustand

Bereits wenn man die Maus über die Sterne bewegt, wird visuell dargestellt, wie sich das Setzten der Bewertung auswirken wird. Das eigentliche Setzen der Bewertung geschieht, indem auf den gewünschten Stern geklickt wird. Alternativ steht ein Popupmenü zur Verfügung, in dem auch bereits gesetzte Bewertungen wieder entfernt werden können. Sobald mindestens eine Bewertung geändert wurde, werden auf der linken Seite 2 Knöpfe sichtbar. Einer dient zur Speicherung der Änderungen und mit dem zweiten können die Änderungen verworfen werden. Die Speicherung der Bildbewertungen geschieht, wie alle anderen Datenbankänderungen auch, mit Hilfe des Workers.

Ausblick

Die Bildbewertung wird mich auch in der nächsten Version des BVASystems noch einmal beschäftigen, denn ich möchte die fehlenden Kleinigkeiten nicht aus den Augen verlieren. Zum einen möchte ich den Anwender durch eine Frage darauf aufmerksam machen, das wenn er innerhalb der Bildliste navigieren möchte, nicht gespeicherte Bewertungen verloren gehen. Die gleiche Information möchte ich anzeigen, wenn die Bildinformationsansicht verlassen wird. Außerdem erachte ich es für sinnvoll, das die globale manuelle Bewertung  per Tastaturkürzel zu erreichen ist. Wahrscheinlich werde ich Strg+1 für 1 Stern, Strg+2 für 2 Sterne, usw. dafür auswählen. Die Tastaturkürzel sollen dabei global, das heißt in jedem Anzeigemodi funktionieren.

Weiterhin in Planung ist eine Erweiterung des EXIF-Moduls. Vorhandene GPS-Informationen sollen ausgelesen und in dem entsprechenden Bildinformationspanel angezeigt werden.

Der Metadaten Entscheidungsbaum

Montag, Juli 4th, 2011

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.

Bugfixes Teil 2

Donnerstag, Mai 5th, 2011

Nach der letzten Bugfix-Version steht heute nun die nächste Version an, wo ich aber eigentlich ehrlich zugeben muss, das sie im strengen Sinne keine reine Bugfix-Version ist.

Bei der Einführung des Workers habe ich mir gedacht, das es sinnvoll ist, wenn der Anwender über den Status des Workers informiert wird. Welche Aufgaben stehen im Worker? Welche Aufgaben hat der Worker ausgeführt? Bei welchen Aufgaben im Worker ist ein Fehler aufgetreten?

Um die Fragen zu beantworten, hatte ich schon damals einen Dialog in das Programm integriert, der mit einem Klick auf die „Ampel“ des Workers geöffnet werden kann. Bis zum heutigen Tag war dieser Dialog allerdings leer. Von daher kann es entfernt vielleicht doch als Bugfix bezeichnt werden, wenn dieser Dialog nun nicht mehr leer ist.

Wenn der Statusdialog des Workers geöffnet wird, so wird als erstes der Worker pausiert. Solange der Dialog angezeigt wird, werden also keinerlei Aufgaben erledigt. Wenn der Dialog geschlossen wird, nimmt der Worker seine Arbeit wieder auf. Der Dialog selber unterteilt sich in 2 Bereiche. In dem ersten Bereich sieht man, welche Aufgaben noch im Worker aktiv sind, während im zweiten Bereich angezeigt wird, welche Aufgaben bereits abgeschlossen wurden.

Statusdialog des Workers

Statusdialog des Workers

Weiterhin neu ist auch der Info-Dialog, in dem abgelesen werden kann, welche Version gerade verwendet wird. Außerdem steht dort ein Verweis auf diese Seite. Neben den Neuerungen habe ich, wie es der Name dieses Artikel bereits vermuten lässt, einige Bugs beseitigt. Wie immer kann die genaue Liste der abgearbeiteten Punkte im Bugtracker analysiert werden.

Als kleine Vorschau auf die nächste Version gibt es zu sagen, das ein klitzekleines Datenbankupdate erfolgen wird. Damit werde ich dann in der Lage sein, die Fotoalben weiter zu erweitern. Außerdem möchte ich, sofern ich es zeitlich noch schaffe, die Funktionen in den Popup-Menüs leicht anders anordnen, da sie nach der Einführung der 3 Ansichtsmodi nicht mehr so klar getrennt sind wie zuvor.

Konsequenz muss sein

Mittwoch, Februar 9th, 2011

Der erste Monat des Jahres ist schon wieder um und es ist wieder einmal Zeit, eine neue Programmversion zu veröffentlichen. In den letzten Wochen habe ich 2 größere Baustellen bearbeitet.

Bisher war es inkonsequent, das eine einzige Bearbeitungsfunktion, das Erstellen von einem Fotoindex, nicht über den Worker ausgeführt wurde. Außerdem hatte die alte Funktion einen richtig fiesen Fehler. Wenn nämlich nicht alle Thumbnails der Bildliste fertig geladen gewesen sind, als der Index erstellt werden sollte, so gab es auf dem Fotoindex lauter leere Kästchen. Es lag also nahe, die Funktion so umzubauen, das sie nun auch über den Worker ausgeführt wird. Und da ich da schon einmal bei gewesen bin, habe ich der Fotoindex-Funktion auch gleich einen hübschen Einstellungsdialog spendiert.

Einstellungsdialog für den Fotoindex

Einstellungsdialog für den Fotoindex

Die zweite Baustelle war das Löschen von Bildern aus der Datenbank. Bisher war es so, das nach dem Löschen unter Umständen leere Einträge im Aufnahmedatumbaum stehen geblieben sind. Jetzt werden diese Einträge gelöscht. Aufwendig war dieser Punkt, da die vom Worker gelöschten Rubriken auch in der Oberfläche gelöscht werden mussten.

Mit der nächsten Version wird es wieder eine Datenbankstrukturänderung geben. Ich werde nämlich damit beginnen, eine Fotoalbumfunktion in das Programm zu integrieren. Es soll die Möglichkeit geschaffen werden, das der Anwender Fotoalben in der Datenbank anlegen kann. Jedes Album soll wiederrum Unteralben enthalten dürfen. Die in der Datenbank importierten Bilder sollen einem oder mehreren Alben zugewiesen werden können. Ziel ist es, das eine strukturierte Ansicht entsteht, in der man einfacher navigieren kann als im Aufnahmedatumbaum. Es ist beispielsweise einfacher, die Rubrik „Geburtstagsfeiern“ und die Unterrubrik „Tante Trude 2008“ auszuwählen, als die Geburtstagsbilder von Tante Trude im Aufnahmedatumbaum zu finden.

Ich schätze, das die Fotoalbumfunktionen für eine einzelne Version zu umfangreich sein wird. Daher steht nicht nur die nächste, sondern mindestens die nächsten 3 Versionen im Zeichen der Fotoalben.

Aufgaben für den Worker

Montag, November 8th, 2010

Im letzten Blogpost hatte ich es bereits angekündigt, mit der Version 2.0.0.11 sollten die Aufgaben für den Worker hinzukommen. Und genau das ist bis zum heutigen Tag geschehen. Ich muss zugeben, die neue Version ist diesmal eher etwas für neugierige Tester. Die Aufgaben sind zwar fertig programmiert, aber ihre Einbettung in die Oberfläche muss dringend noch verbessert werden. Ich habe mich aber dafür entschieden, die Version hier trotzdem so zur Verfügung zu stellen, da ich ansonsten mein gewolltes Veröffentlichungsraster nicht einhalten könnte.

Es gibt nun einen Automatismus zum Datenimport von Bildern in die Datenbank, den der Anwender in der Toolbar an und ausschalten kann. Bei aktivem Automatismus werden, nachdem auf ein Verzeichnis mit Bildern geklickt wurde, alle Bilder im Worker als Aufgaben eingestellt. Dieser arbeitet die Aufgaben nach und nach ab, speichert die Bilder also in der Datenbank. Fehlen tut hier noch, das vor dem Einfügen des Bildes überprüft wird, ob dieses sich bereits in der Datenbank befindet: siehe Bugtracker Meldung 101

Als zweite Workeraufgabe habe ich das Löschen von Bildern umgesetzt. In einem Popupmenü über der Bildliste befindet sich der Eintrag zum Löschen. Die Funktion ist sowohl für Dateien auf der Festplatte, als auch für Dateien in der Datenbank möglich. Aber Vorsicht, es erscheint keinerlei Sicherheitsabfrage. Wenn löschen geklickt wird, wird auch gelöscht. Was beim Löschen noch fehlt, ist das die Programmoberfläche anschließend aktualisiert wird. Das gelöschte Bild muss aus der Liste entfernt werden und die darunterliegende Scrollbar angepasst werden: siehe Bugtracker Meldung 102

Fazit: Auch wenn in den letzten Wochen einiges an Software entstanden ist, so bleibt noch eine ganze Menge zu tun.

Der Worker

Donnerstag, Oktober 28th, 2010

Es ist wieder einmal Zeit, das BVASystem zu aktualisieren. Neu hinzugekommen in der Software ist dieses Mal ein System, für welches ich leider keinen sinnvollen deutschen Namen gefunden habe.

Worum geht es?

Die Bilder, die in einer Bildverwaltung archiviert werden sollen, müssen logischerweise irgendwie in das System eingefügt werden. Wer das alte BVASystem kennt, sollte wissen, das dies damals über einen Importdialog gelöst wurde. Während des Importierens war die Anwendung dann für den Anwender nicht weiter bedienbar.  Im neuen System dagegen soll der Import so ablaufen, das der Anwender währenddessen das Programm weiter bedienen kann.

Da ich alles immer möglichst allgemein halte, überlegte ich mir, was in einer Bildverwaltung noch so alles durchgeführt werden muss.   Gedacht habe ich zum Beispiel an das Löschen von Dateien, an das Kopieren von Dateien und natürlich an den In- und Export von Bilddaten. Also habe ich ein System entwickelt, das alle diese Aufgaben erledigen kann.

Es sind noch 9 Aufgaben im Worker

Worker

Der Anwender bekommt von dem System im Hintergrund relativ wenig mit, nur oben rechts in der Ecke kann der Status des Systems abgelesen werden. Relativ einfach ist dort zu erkennen, ob noch Aufgaben abzuarbeiten sind. Sofern Aufgaben vorhanden sind, ist durch eine sinkende Aufgabenanzeige zu erkennen, das das System arbeitet. Will der Anwender die Software beenden, wenn noch Aufgaben im System sind, wird natürlich eine Warnung angezeigt.

Da noch keine richtige Aufgabe für das System programmiert wurde, kann über den Knopf „WorkerTest“ das System mit 2 Testaufgaben bestückt werden. Dieser wird in rund 14 Tagen wieder verschwunden sein, da ich bis dahin richtige Aufgaben für das System umsetzen möchte.

Warum heißt das System nun „Worker“?

Die Funktionsweise des Systems hatte ich mir relativ schnell ausgedacht. Ich wollte etwas schaffen, das Aufgaben im Hintergrund der Anwendung abarbeitet und nur möglichst knapp dem Anwender mitteilt, was es gerade tut. Die Namenswahl war mir eigentlich recht egal. Dies änderte sich, als ich die Beschriftungen für den Dialogteil, der auf dem Bild zu sehen ist, festlegen wollte. Ich brauchte einen kurzen prägnanten Namen, der gut in das Dialogelement passt.

Den in der Informatik bekannten Fachbegriff Thread wollte ich nicht nehmen, da ein Normalanwender damit wohl kaum etwas anfangen kann. „Aufgabenbearbeitungssystem“ war für den kleinen Dialogbereich einfach zu lang. Der deutsche Begriff „Arbeiter“ klang irgendwie blöd. Also fiel meine Wahl auf dem Begriff „Worker“. Aber falls jemand eine bessere Idee hat, wie ich den „Worker“ nennen könnte, so soll er mir dies hier per Kommentar mitteilen. Danke.