• Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2025
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien und Schutzgläser der Eigenmarken
    "Upscreen", "Screenleaf", BROTECT" und "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • Nicht erreichbare Adressen im Benutzerkonto
    Wir bekommen zurzeit eine große Anzahl an E-Mails, die das System zum Beispiel als Benachrichtigungen an Nutzer verschickt,
    als unzustellbar zurück, weil z.B. die Adressen nicht erreichbar sind oder das Postfach gar nicht existiert.
    Stellt doch bitte sicher, dass die Benachrichtigungen, die ihr vom System erwartet, auch zugestellt werden können.
    Nicht erreichbare E-Mail-Adressen sind dazu wenig hilfreich.
    Danke!
WERBUNG

Tool für Foto-Wettbewerbsauswertung programmieren

wol

Themenersteller
Hallo,

ich mache nun zum ersten Mal beim Fotowettbewerb mit und finde es doch etwas unübersichtlich / umständlich, die Punkte für die Bilder "von Hand" zusammenzuzählen.
Deshalb kam mir die Idee ein kleines Tool zu programmieren welches das erledigt.
Ich denke jetzt nicht an was großartig Aufwändiges mit eigener Oberfläche oder so sondern eher daran die Bildnummer und die Punktzahl in einem vorgegebenen Format von den Usern in den Thread schreiben zu lassen. Ein Tool könnte dann dieses vorgegebene Format einfach auswerten.
Das könnte in "Echtzeit" passieren, also schon während die Bewertungen abgegeben werden und natürlich am Schluss.
Habe zwar mit Webentwicklung keine große Erfahrung aber ich fände es spannend und ein großes Problem sollte es nicht sein.
Java-Entwicklung ist jedenfalls nicht das Thema.
Schreibt mir mal bitte ob das interessant sein könnte, dann könnte man ggf. weiter drauf eingehen.

Stefan
 
Hi,

da stimme ich Dir klar zu, würde mir gerne Deine Ideen anhören/-sehen. Ich selber halte den Wettbewerb für sehr unübersichtlich. Mir war es nur wichtig das wir hier überhaupt einen haben auch wenns etwas unübersichtlich ist.

Weiß ja nicht wie Du Dir den vorstellst, aber wenn das Tool Server-Zugriff benötigt, mußte Dich wohl mit Thomas mal auseinander setzen. Ich selber aber bin klar dafür keine Frage.
 
Hi,

von der programmtechnischen Seite würde ich vorschlagen die Bewertungen direkt in die DB zu schreiben und beim Auswerten die Berechnung vorzunehmen. Damit kann man auch ein Archiv führen und vergangene Bewertungen abrufen. Es sollte kein Problem sein, dass eine grafische Oberfläche nur die bewertbaren Bilder zeigt und die bereits vergebenen Punkte abzieht.

Programmtechnisch wäre das mit Servlets machbar. Dazu benötigt ihr nur einen Webcontainer oder als Alternative (eleganter) könnte man das mittels App.-Server machen. (z.B. JBoss) ....

ja wäre da nicht die Forumssoftware in PHP geschrieben... :eek: :D

Also nix mit Java ... :mad: Wenn möglich sollte sich noch ein PHP - Profi dafür finden.

Was die Umsetzung betrifft könnte ich erst irgendwann ab Ende November helfen da ich im Moment noch Aufträge bis Anschlag habe und gerade ins neue Haus umziehe.

Gruß Axel
 
Stop! Ich habe da viel pragmatischer gedacht:
Und zwar würde ich das Tool als Java-Applet implementieren. Man muss ihm den Link zum Wettbwerbs-Thread übergeben und dann analysiert es die HTML-Seite (Parser).
Ich weiß, es geht viel eleganter wenn es auf dem Server abläuft aber ehrlich gesagt wird mir das dann zu aufwändig.
Mein Tool ist vergleichbar mit dem was man manuell macht:
Es "schaut" sich den Thread an, sucht nach Punktevergaben und zählt diese zusammen und gibt das Ergebnis als Text aus. Das passiert alles lokal. Mehr soll es erstmal nicht sein. Später könnte noch eine Grafik dazukommen, die Bilder als Thumbs usw.
Der erste Wurf wäre aber ein relativ "dummer Threadleser und Zusammenzähler". Ich denke das würde schonmal helfen, oder?
Ganz abgesehen davon könnte man es dann allgemeiner einsetzen.

Stefan
 
wol schrieb:
Der erste Wurf wäre aber ein relativ "dummer Threadleser und Zusammenzähler". Ich denke das würde schonmal helfen, oder?
Ganz abgesehen davon könnte man es dann allgemeiner einsetzen.
das setzt allerdings voraus, dass sich die bewertenden user exakt an eine vorgegebene syntax zur punktevergabe halten. ich habe da so meine zweifel, dass sowas gelingt. regeln und vorgaben lesen (und dann auch noch sich dran halten) gehört hier definitiv nicht zu den top10 ;)
 
@wol
genauso hatte ich dich auch verstanden. Jedoch ist ein solcher Parser entweder sehr fehleranfällig oder sehr aufwendig zu programmieren. Mag sein, das man mit hinreichend Aufwand einen Kompromiss zwischen Aufwand und Fehlertoleranz findet. Jedoch wird sich dieser mit der Zeit in Richtung Aufwand verschieben. Ich weiss wovon ich rede. Ich programmiere und designe jeden Tag solches "Zeug" nur 3 Nummern größer :D .

Warum dann die Fehlerquote nicht gleich bei der Eingabe einengen bzw. Eingabefehler gleich bei der Eingabe unterdrücken ?

Übrigens, wenn du nur den Wettbwerbs-Thread parsen willst, muss es nicht unbedingt ein Applet sein. Allerdings, wenn du Java beherrschst, sollte PHP für dich kein Problem sein. Sieht ähnlich wie C++ aus, hat Objekte, wird geparst wie JSP's. Außerdem gibt es tonnenweise fertige Scripte im Netz die nur entsprechend angepasst werden müssten. Oder wie gesagt, wenn sich hier mal ein PHP Profi melden könnte wäre das sehr hilfreich.

Allerdings müssten der Admin das allerheiligste offenlegen... den Quelltext... :D

Dann könnte man "Nägel mit Köpfen" machen.

@scorpio
den Befürchtungen kann ich nur beipflichten... :D
 
@karatekid,
das sind sicher sinnvolle Vorschläge, aber ich werde bei Java bleiben...
Wenn ich mir den bisherigen September-Auswertungs-Thread anschaue dann würde bis auf wenige Ausnahmen folgendes Parsing-Verhalten funktionieren:
Für jede Zeile prüfen:
beliebige Zeichenkette - Ziffern: Bildnummer - beliebige Zeichenkette - Ziffer: Punkteanzahl - beliebige Zeichenkette (evtl. noch auf ein 'P' oder 'p' prüfen).
Ich schreibe gerade ein Konzept, welches ich dann hier einstelle. Bitte noch kurz warten.

Stefan
 
Noch was vergessen:
Bzgl. Regeln einhalten für die Punktevergabe:
Sollten sagen wird 95 von 100 Bewertungen von dem Tool auswertbar sein, dann muss man halt noch die restlichen 5 manuell dazuzählen.
Außerdem: Es werden ja schon einige Regeln beim Wettbwerb eingehalten, ist das denn soo unmöglich dass noch eine einfache Regel für die Punktevergabe eingehalten wird?
 
wol schrieb:
das sind sicher sinnvolle Vorschläge, aber ich werde bei Java bleiben..
Ich mit Sicherheit auch. PHP nur wenn es unbedingt sein muss. :D Aber wie gesagt, auch damit kann man einiges machen. Und die Forumsoftware ist nun mal damit geschrieben.

wol schrieb:
...bis auf wenige Ausnahmen folgendes Parsing-Verhalten funktionieren:
Für jede Zeile prüfen:
beliebige Zeichenkette - Ziffern: Bildnummer - beliebige Zeichenkette - Ziffer: Punkteanzahl - beliebige Zeichenkette (evtl. noch auf ein 'P' oder 'p' prüfen).
...eine evtl. Mehrfachbewertung bzw. falsche Punktezahl sollte ebenfalls abgefangen werden. Am Anfang würde ja ein Verweis im Logfile auf Usernamen und IP reichen.

wol schrieb:
...Ich schreibe gerade ein Konzept, welches ich dann hier einstelle. Bitte noch kurz warten.
ok
 
OK, habe jetzt mal eine Seite zusammengeschrieben (Anhang).
Bitte unter dem Gesichtspunkt eines ersten Wurfs reviewen (das ist ja schon fast wie auf der Arbeit ;) und Feedback geben.
Danke schonmal

Stefan

Oh mann, jetzt kann ich PDF anhängen! Es sind nur 19,5 KB für ein PDF erlaubt :mad:
HTML geht auch nicht.
Dann kopiere ichs halt hier rein:


Tool für Foto-Wettbewerbsauswertung

Motivation:
Beim DSLR-Forum (www.dslr-forum.de) wird ein monatlicher Foto-Wettbewerb über das Forum veranstaltet. Die User stellen Bilder über einen Wettbwerbs-Thread ein. In einem zweiten Thread (Wettbwerbs-Auswertungs-Thread) werden dann die Punktevergaben in den Text geschrieben.
Im Moment findet die Auswertung der Punktevergaben manuell statt, d. h. der Thread muss manuell gelesen und die Punktevergaben geprüft und zusammengezählt werden.
Um dieses etwas umständliche Vorgehen zu vereinfachen soll ein Tool implementiert werden, welches die Auswertung automatisch vornimmt.

Abgrenzung:
Das Tool bekommt keine Oberfläche und läuft nicht auf dem Server. Es ruft den Auswertungs-Thread lokal über Web-Zugriffe ab und analysiert diesen (Parser).
Der „erste Wurf“ wird pragmatisch, aber korrekt arbeiten.

Arbeitsweise aus Benutzersicht:
Das Tool bietet ein Eingabefeld in welches der Einstiegslink zum Wettbwerbs-Thread übergeben wird. Über einen Knopf „Thread auswerten“ wird die Auswertung gestartet.
Nach wahrscheinlich einigen Sekunden (je nachdem wie viele Seiten abgerufen werden müssen) wird die Auswertung als Text angezeigt.
Die Auswertung besteht aus zwei Teilen:
1.Der erste Teil ist eine Statistik über die ausgewerteten Userbewertungen.
Diese beinhaltet zu jedem Kommentar den Benutzernamen und die Information ob die Punktvergabe korrekt erkannt wurde und die Punkte je Bild
2.Der zweite Teil der Ausgabeliste zeigt die Punktzahl für jedes Bild an.

Arbeitsweise aus Programmsicht:
Nach Starten der Auswertung wird ein HTTP-Request auf den Einstiegslink abgesetzt und der Thread wie folgt analysiert.
Der erste Beitrag wird verworfen, da hier die Einleitung und die Regeln von -Silvax- stehen.
Schleife Seite für Seite:
Schleife Beitrag für Beitrag:
Schleife Zeile für Zeile
Parsing vereinfacht:
Prüfen auf Zeichenkette, durchgehen bis Ziffern, diese umwandeln in Zahl, merken als Bildnummer, prüfen auf Zeichenkette, durchgehen bis einstellige Ziffer, diese merken als Punkteanzahl
Ausgabe Info über Parsing (s. oben unter Auswertung aus Benutzersicht).
Ende Zeilenschleife
Ende Beitragsschleife
Ende Seitenschleife
In der Schleife wird eine Speichertabelle aufgebaut in der die Summen der Punkte pro Bildnummer gebildet werden.
Am Ende wird die Speichertabelle ausgegeben.

Probleme:
Parsing ist nur möglich wenn der Text entsprechend verfasst wird
Die Auswertung wird im Bereich von Sekunden dauern
Da das Parsing der Website selbst (Feststellen der Beitragsnummern, Aufrufen des Links für die nächste Seite usw.) „relativ hart“ programmiert wird, können sich beim Ändern der Forumssoftware Probleme dabei ergeben.
 
Hi Stefan,

ok, mein Feedback :

wol schrieb:
Abgrenzung : ...Der ?erste Wurf? wird pragmatisch, aber korrekt arbeiten...
Wie definierst du korrekt ? Sicher korrekt nach Programmcode. Basierend auf den Möglichkeiten der Datenbasis in Form von Freitext (denn das ist eine Website), ist eine korrekte Auswertung unmöglich. Denn sonst würdest du eine fehlerfreie Einhaltung der Syntax vom User fordern die per Def. nicht möglich ist. Thema : Tippfehler.


wol schrieb:
Schleife Beitrag für Beitrag:
Schleife Zeile für Zeile
Prüfen auf Zeichenkette, durchgehen bis Ziffern, diese umwandeln in Zahl, merken als Bildnummer, prüfen auf Zeichenkette, durchgehen bis einstellige Ziffer, diese merken als Punkteanzahl
Ausgabe Info über Parsing (s. oben unter Auswertung aus Benutzersicht).
Ende Zeilenschleife
Ende Beitragsschleife
Ende Seitenschleife
Diese Auswertung ist nicht sehr fehlertolerant und wird mit Sicherheit zu entsprechenden Fehlauswertungen führen.

ich würde es wie folgt definieren :

--------------------------------------------------------------------------Schleife Beitrag
User / IP ermitteln
Fehlercheck : Check User Mehrfachposting
Fehlerfall : Eintrag ins Log, Abbruch des Beitrags (weiter mit nächsten Beitrag)

call Schleife Zeilen

Ende Beitragschleife

--------------------------------------------------------------------------
Schleife Zeilen
call Analyse Zeile
Summiere Punkte für User
Ende Schleife Zeilen

--------------------------------------------------------------------------
Analyse Zeile
1. Key für Bildnummer ermitteln (kann auch die Bildnummer selbst sein), Bildnummer ermitteln
Fehlercheck : Check auf Syntax
Fehlerfall : Eintrag ins Log, Abbruch der Zeile (weiter mit nächster Zeile)

2. Key für Punkteanzahl ermitteln (kann auch die Punkteanzahl selbst sein), Punkteanzahl ermitteln
Fehlercheck : Check auf Syntax, Check ob Punkteanzahl pro Bild korrekt (max. 5),
Fehlerfall : Eintrag ins Log, Abbruch der Zeile (weiter mit nächster Zeile)
Fehlercheck : Check ob max. Punkteanzahl des Users nicht überschritten,
Fehlerfall : Eintrag ins Log, Abbruch des Beitrags (weiter mit nächsten Beitrag)
Ende Analyse Zeile

--------------------------------------------------------------------------


Zusatz zu deinen aufgeführten Problemen :
* Check auf Semantik/richtige Bildnummer (z.B. vertippt) nicht möglich, muss per Hand geprüft werden.
* Falls es die durch Tippfehler abgegebene Bildnummer gibt, werden die Punkte einem falschen Bild zugeordet
* ungültige Bewertungen gleich welcher Art, müssen von Hand in die Statistik nachgepflegt werden
* Die Nachanalyse per Hand muss bei jeder Auswertung neu vorgenommen werden.
* Check das ein User, der ein Bild einstellt im nächsten Monat voten muss, kann weiterhin nur per Hand erfolgen


Alles in allem kann es aber nur ein Hilfstool werden. Denn auch der beste fehlertoleranteste Parser kann nicht erahnen ob sich der User nur vertippt hat. Deshalb ist meine Meinung nach wie vor : wenn, dann richtig. D.h. die Fehler dort abfangen wo diese auftreten können. Eine saubere Datenbasis ist die Grundlage einer jeden Statistik.

Aber evtl. könnten sich noch weitere Informatiker im Forum äußern...

Gruß Axel
 
wol schrieb:
Parsing vereinfacht:
Prüfen auf Zeichenkette, durchgehen bis Ziffern, diese umwandeln in Zahl, merken als Bildnummer, prüfen auf Zeichenkette, durchgehen bis einstellige Ziffer, diese merken als Punkteanzahl
und einer schreibt: 5 punkte für bild nummer 6. und nun? wird nicht gewertet? oder bekommt jetzt bild nummer 5 die 6 punkte? klar, ist zwar falsch, wird aber so ausgewertet.
also geht das ganze nur dann, wenn sich alle user, die bewerten, an eine fest vorgegebene struktur halten. wie ich oben schrieb: zweifelhaft ;)
tippfehler wurden ja schon angesprochen, aber die kann man auch bei manueller auszählung nicht abfangen.
 
scorpio schrieb:
und einer schreibt: 5 punkte für bild nummer 6. und nun? wird nicht gewertet? oder bekommt jetzt bild nummer 5 die 6 punkte? klar, ist zwar falsch, wird aber so ausgewertet.
Eben. Deshalb arbeiten Parser auch mit Keys und überprüfen neben der Syntax die Semantik.

Das heisst zum Beispiel :

5 Punkte für Bild Nummer 6
Ich gebe 5 Punkte für Bild 6
Bild Nr. 6 bekommt von mir 5 Punkte
Nr. 6 : 5 Punkte

ergibt immer die gleiche Wertung : 5 Punkte für Bild 6.

Dann haben wir aber einen Aufwand der jeglichen Rahmen sprengt. Wie gesagt, ich programmiere und designe solche Software. Allerdings nicht allein. Einfachere Systeme schreiben die Informatiker schon selbst (im Team). Bei komplexeren Themen sitzen in den Teams Mathematiker für die Algorithmen.


scorpio schrieb:
tippfehler wurden ja schon angesprochen, aber die kann man auch bei manueller auszählung nicht abfangen.
Das nicht, aber bei einer Oberflächengeführten Eingabe. Da sieht der User das Bild was er bewertet. Wenn er sich dann noch vertippt hilft allerdings nix mehr :D Allerdings kann er auch nicht mehr Punkte als erlaubt vergeben. :p

Zumindest kann er keine Punkte Bildern geben, die nicht im Wettbewerb existieren.

Vielleicht sehe ich das (aus meiner täglichen Erfahrung) aber auch zu schwarz und das Tool von Stefan hilft wirklich.

Ob es einen Versuch wert ist, müsst ihr entscheiden.
 
karatekid schrieb:
Eben. Deshalb arbeiten Parser auch mit Keys und überprüfen neben der Syntax die Semantik.

Das heisst zum Beispiel :

5 Punkte für Bild Nummer 6
Ich gebe 5 Punkte für Bild 6
Bild Nr. 6 bekommt von mir 5 Punkte
Nr. 6 : 5 Punkte

ergibt immer die gleiche Wertung : 5 Punkte für Bild 6.
und wenn sich jemand an die konventionen der deutschen sprache hält und zahlen unter zehn ausschreibt ("sechs" anstatt "6") haben wir den salat :D
(jaja, ich weiss, ich bin fies ;))
 
karatekid schrieb:
...Vielleicht sehe ich das (aus meiner täglichen Erfahrung) aber auch zu schwarz und das Tool von Stefan hilft wirklich.

Du siehst nicht schwarz, solch ein Parser ist zu Fehleranfällig und bei freier Eingabemöglichkeit, wird mind. ein User ihn aus dem Konzept bringen!

Einzigst sinnvolle, weil ordentlich funktionierende Lösung: Serverseitig ein eigenes Interfaces bauen und an die DB des Forums für die Validierung anhängen. Wenn ihr es gescheit machen wollt, macht es objektorientiert und hängt gleich da die Bilder mit rein und nicht relational(evtl. noch die Ergebnisse, aber auch die kann man als Attribut an die Bildobjekte speichern und gleich die EXIFs mit auslesen)

BTW: O.g. PAPs sind schon fast der Quälcode direkt (schleife auf/schleife Ende). Ein wenig Syntax austauschen, und man kann es laufen lassen ;)

just my 2 Cts.

hth,
Axel
 
Ich hab grad so das Gefühl ihr versucht mit Kanonen auf Spatzen zu schiessen.

Der einfachste und sicherste Weg ist doch wohl der, von jedem die Wertung in die Datenbank zu schreiben.
Nr. 1 entfällt der gesamte unsinnige - und auch fehleranfällige - Aufwand des Parsens
Nr. 2 kann damit jeder User genau einmal abstimmen
Nr. 3 kann sehr einfach das Ergebnis zusammengezählt werden.

öhmm.. seh grad Axel hat etwa das Selbe geschrieben ...

in diesem Sinne
viel Spass beim "designen der Software"
 
scorpio schrieb:
und wenn sich jemand an die konventionen der deutschen sprache hält und zahlen unter zehn ausschreibt ("sechs" anstatt "6") haben wir den salat :D
(jaja, ich weiss, ich bin fies ;))
Keine Sorge, das beherrschen solche Parser auch. :p

Aber ich weiss worauf du hinauswillst. Genau davor will ich ja warnen. Einen 100%tigen Parser gibt es nicht. Je sicherer der werden soll um so mehr steigt der Aufwand gegen Unendlich. Irgendwann hilft dann selbst die beste Architektur nicht mehr.

@Axel, psp
Genau mein reden. Das Voting durch eine entspechende Oberfläche, die serverseitig generiert wird, gegen Fehleingaben absichern. (inkl. Check gegen die Datenbasis)

Gruß Axel
 
Danke für das konstruktive Feedback!
Natürlich ist klar, dass ein Parser nicht 100% sicher sein kann.
Interessant wäre daren nebenei noch bemerkt dass man alte Wettbewerbe nochmal nachträglich auswerten kann.
Zum Thema serverseitiges Programm:
Das wäre sicher die beste Möglichkeit, und da gibt´s ja auch schon fertige Lösungen. Aber es soll eben einfach sein und nicht mehr als ein Hilfstool. Ich habe ehrlich gesagt keine Lust / Zeit eine richtige Lösung auf dem Server zu implementieren. Wahrscheinlich zählt sowieso (auch heute schon) jeder User seine eigenen Punkte zusammen und meldet sich wenn was falsch ist.

Sollte jemand eine "richtige" serverbasierte Lösung bauen, dann sagt bitte Bescheid, dann erübrigt sich mein Tool nämlich!

Ansonsten schätze ich nach wie vor dass ein Parser - wenn er "vorsichtig" gemacht ist, also lieber einen Fehler meldet bevor er was falsch interpretiert - recht gut funktionieren kann.
 
Gerade sehe ich im momentan letzten Beitrag von User sHoeTa im September-Auswertungs-Thread dass z. B. ein Doppelpunkt eine interessante Sache aus Parsersicht sein kann...
 
WERBUNG
Zurück
Oben Unten