Commit caf94ce9 authored by Antonios Angelakis's avatar Antonios Angelakis

Edit chapters 3 and 4

parent a5f2376d
...@@ -336,7 +336,7 @@ ContestWebServer. Εκεί βλέπουν για κάθε πρόβλημα τη ...@@ -336,7 +336,7 @@ ContestWebServer. Εκεί βλέπουν για κάθε πρόβλημα τη
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/cmscontestant.png} \includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/cmscontestant.png}
\caption[Οθόνη προβλήματος CMS]{Η οθόνη ενός προβλήματος, όπως τη βλέπει ένας \caption[Σελίδα προβλήματος CMS]{Η σελίδα ενός προβλήματος, όπως τη βλέπει ένας
διαγωνιζόμενος. Διακρίνονται τα στοιχεία του προβλήματος και όλα τα διαγωνιζόμενος. Διακρίνονται τα στοιχεία του προβλήματος και όλα τα
επισυναπτόμενα. Πηγή: https://cms-dev.github.io/screenshots.html} επισυναπτόμενα. Πηγή: https://cms-dev.github.io/screenshots.html}
\end{figure} \end{figure}
...@@ -344,14 +344,14 @@ ContestWebServer. Εκεί βλέπουν για κάθε πρόβλημα τη ...@@ -344,14 +344,14 @@ ContestWebServer. Εκεί βλέπουν για κάθε πρόβλημα τη
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/cmsranking.png} \includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/cmsranking.png}
\caption[Οθόνη βαθμολογιών CMS]{Η οθόνη της βαθμολογίας, με τη συνολική κατάταξη \caption[Σελίδα βαθμολογιών CMS]{Η σελίδα της βαθμολογίας, με τη συνολική κατάταξη
και ανά διαγωνιζόμενο σε όλα τα προβλήματα. Πηγή: https://cms-dev.github.io/screenshots.html} και ανά διαγωνιζόμενο σε όλα τα προβλήματα. Πηγή: https://cms-dev.github.io/screenshots.html}
\end{figure} \end{figure}
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/cmsadmin.png} \includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/cmsadmin.png}
\caption[Οθόνη διαχείρισης διαγωνισμού CMS]{Η οθόνη της διαχείρισης ενός \caption[Σελίδα διαχείρισης διαγωνισμού CMS]{Η σελίδα της διαχείρισης ενός
διαγωνισμού. Διακρίνονται συνολικά στατιστικά για τις υποβολές, η κατάσταση διαγωνισμού. Διακρίνονται συνολικά στατιστικά για τις υποβολές, η κατάσταση
της ουράς και των Workers. Πηγή: https://cms-dev.github.io/screenshots.html} της ουράς και των Workers. Πηγή: https://cms-dev.github.io/screenshots.html}
\end{figure} \end{figure}
...@@ -420,7 +420,7 @@ code golf, δηλαδή επίτευξης της λύσης με το λιγό ...@@ -420,7 +420,7 @@ code golf, δηλαδή επίτευξης της λύσης με το λιγό
χρειάζεται μόνο το περιβάλλον της Java και το λογισμικό του εξυπηρετητή. Μόλις χρειάζεται μόνο το περιβάλλον της Java και το λογισμικό του εξυπηρετητή. Μόλις
γίνει αυτό, μπορούν να στηθούν επίσης επιπλέον κόμβοι εάν είναι επιθυμητό, γίνει αυτό, μπορούν να στηθούν επίσης επιπλέον κόμβοι εάν είναι επιθυμητό,
τοπικά ή απομακρυσμένα. Η δημιουργία των διαγωνισμών και των προβλημάτων τοπικά ή απομακρυσμένα. Η δημιουργία των διαγωνισμών και των προβλημάτων
γίνεται μέσω της δικτυακής διεπαφής του Διαχειριστή. γίνεται μέσω της διαδικτυακής διεπαφής του Διαχειριστή.
\bigskip \bigskip
...@@ -441,14 +441,14 @@ code golf, δηλαδή επίτευξης της λύσης με το λιγό ...@@ -441,14 +441,14 @@ code golf, δηλαδή επίτευξης της λύσης με το λιγό
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/mooshakproblem.png} \includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/mooshakproblem.png}
\caption[Οθόνη προβλήματος Mooshak]{Η οθόνη παρουσίασης ενός προβλήματος για τους \caption[Σελίδα προβλήματος Mooshak]{Η σελίδα παρουσίασης ενός προβλήματος για τους
διαγωνιζόμενους στο σύστημα Mooshak.} διαγωνιζόμενους στο σύστημα Mooshak.}
\end{figure} \end{figure}
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/mooshakrankings.png} \includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/mooshakrankings.png}
\caption[Οθόνη βαθμολογίας Mooshak]{Η οθόνη βαθμολογίας όλων των διαγωνιζόμενων \caption[Σελίδα βαθμολογίας Mooshak]{Η σελίδα βαθμολογίας όλων των διαγωνιζόμενων
ομάδων σε ένα διαγωνισμό.} ομάδων σε ένα διαγωνισμό.}
\end{figure} \end{figure}
...@@ -499,7 +499,7 @@ University (\cite{Rozhkov}). Χρησιμοποιείται τόσο για με ...@@ -499,7 +499,7 @@ University (\cite{Rozhkov}). Χρησιμοποιείται τόσο για με
περιγραφή και τα απαραίτητα αρχεία ελέγχου. περιγραφή και τα απαραίτητα αρχεία ελέγχου.
\lstinputlisting[language=XML,frame=single,captionpos=b,caption=Παράδειγμα xml προβλήματος \lstinputlisting[language=XML,frame=single,captionpos=b,caption=Παράδειγμα xml προβλήματος
CATS. Το CATS δημιουργεί την οθόνη του προβλήματος και τα χαρακτηριστικά του CATS. Το CATS δημιουργεί τη σελίδα του προβλήματος και τα χαρακτηριστικά του
σύμφωνα με το συγκεκριμένο αρχείο ενώ διαθέτει δυνατότητα παρουσίασης LaTeX σύμφωνα με το συγκεκριμένο αρχείο ενώ διαθέτει δυνατότητα παρουσίασης LaTeX
τύπων\, όπως αυτός στο ProblemConstraints.]{Listings/catsexample.xml} τύπων\, όπως αυτός στο ProblemConstraints.]{Listings/catsexample.xml}
...@@ -528,8 +528,8 @@ C\#, Perl, Python, Ruby, PHP, Erlang, Javascript και SQL. ...@@ -528,8 +528,8 @@ C\#, Perl, Python, Ruby, PHP, Erlang, Javascript και SQL.
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/catsproblem.png} \includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/catsproblem.png}
\caption[Διατύπωση προβλήματος CATS]{Η οθόνη του προβλήματος στο CATS. Δεν \caption[Διατύπωση προβλήματος CATS]{Η σελίδα του προβλήματος στο CATS. Δεν
περιέχει τίποτα παραπάνω από τη διατύπωση, αφού η υποβολή γίνεται από την οθόνη περιέχει τίποτα παραπάνω από τη διατύπωση, αφού η υποβολή γίνεται από τη σελίδα
του διαγωνισμού. Το σύστημα του CATS επιτρέπει και τη χρήση LaTeX όπως του διαγωνισμού. Το σύστημα του CATS επιτρέπει και τη χρήση LaTeX όπως
φαίνεται στο Restrictions.} φαίνεται στο Restrictions.}
\end{figure} \end{figure}
...@@ -537,28 +537,29 @@ C\#, Perl, Python, Ruby, PHP, Erlang, Javascript και SQL. ...@@ -537,28 +537,29 @@ C\#, Perl, Python, Ruby, PHP, Erlang, Javascript και SQL.
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/catssubmission.png} \includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/catssubmission.png}
\caption[Οθόνη διαγωνισμού και υποβολής CATS]{Η οθόνη του διαγωνισμού που \caption[Σελίδα διαγωνισμού και υποβολής CATS]{Η σελίδα του διαγωνισμού που
περιέχει όλα τα προβλήματα του. Επιλέγοντας ένα πρόβλημα μπορούμε να υποβάλουμε περιέχει όλα τα προβλήματα του. Επιλέγοντας ένα πρόβλημα μπορούμε να υποβάλουμε
τη λύση στο κάτω μέρος της οθόνης.} τη λύση στο κάτω μέρος της σελίδας.}
\end{figure} \end{figure}
\FloatBarrier
\chapter{Περιγραφή Grader - Kewii} \chapter{Περιγραφή Grader - Kewii}
Το σύστημα αποτελείται από το το σύστημα αξιολόγησης Kewii, το backend της Το σύστημα αποτελείται από το το σύστημα αξιολόγησης Kewii, το backend της
εφαρμογής μας που λειτουργεί ως δαίμονας στον εξυπηρετητή με σκοπό την εφαρμογής μας που λειτουργεί ως δαίμονας (πρόγραμμα που τρέχει συνεχώς) στον
μεταγλώττιση και αξιολόγηση των υποβολών που λαμβάνει, και από τη διαδικτυακή εξυπηρετητή με σκοπό την μεταγλώττιση και αξιολόγηση των υποβολών που λαμβάνει,
εφαρμογή Grader, η οποία αναλαμβάνει την αλληλεπίδραση με χρήστες και και από τη διαδικτυακή εφαρμογή Grader, η οποία αναλαμβάνει την αλληλεπίδραση
διαχειριστές, την (έμμεση) επικοινωνία με τον Kewii και τη συνολική υλοποίηση με χρήστες και διαχειριστές, την (έμμεση) επικοινωνία με τον Kewii και τη
της λογικής του συστήματος όσον αφορά στον τρόπο λειτουργίας των επιμέρους συνολική υλοποίηση της λογικής του συστήματος όσον αφορά στον τρόπο λειτουργίας
στοιχείων του και τον τρόπο αξιολόγησης. των επιμέρους στοιχείων του και τον τρόπο αξιολόγησης. Ακολουθεί μια πρώτη
ανάλυση των δομικών στοιχείων και των αλληλεπιδράσεων τους, πριν αναλυθούν Kewii
και Grader.
\section{Στοιχεία και έννοιες του συστήματος} \section{Στοιχεία και έννοιες του συστήματος}
Στην ενότητα αυτή θα περιγραφούν συνοπτικά τα συστατικά στοιχεία του συστήματος Στην ενότητα αυτή θα περιγραφούν συνοπτικά τα επιμέρους στοιχεία του συστήματος
μας. Η γνώση τους είναι απαραίτητη για να γίνει αντιληπτός ο διαχωρισμός μεταξύ μας. Η έννοια και η λειτουργία τους είναι απαραίτητη για να γίνει αντιληπτός ο
Kewii και Grader, δηλαδή backend και frontend. διαχωρισμός μεταξύ Kewii και Grader, δηλαδή backend και frontend.
\subsection{Προβλήματα} \subsection{Προβλήματα}
...@@ -571,10 +572,9 @@ Kewii και Grader, δηλαδή backend και frontend. ...@@ -571,10 +572,9 @@ Kewii και Grader, δηλαδή backend και frontend.
\bigskip \bigskip
Τα προβλήματα έχουν νόημα μόνο μέσα σε διαγωνισμούς, καθώς ο διαγωνιζόμενος Τα προβλήματα έχουν νόημα αποκλειστικά μέσα σε διαγωνισμούς, καθώς η τελική
παίρνει μέρος σε διαγωνισμούς που περιέχουν προβλήματα και η τελική βαθμολογία αξιολόγηση αφορά τους διαγωνισμούς και το σύνολο των προβλημάτων που περιέχουν.
του είναι το άθροισμα των επιδόσεων του στα προβλήματα του διαγωνισμού. Η Η αρχική σχεδίαση του συστήματος είχε ως στόχο τη χρήση του σε διαγωνισμούς
αρχική σχεδίαση του συστήματος είχε ως στόχο τη χρήση αυτού σε διαγωνισμούς
πληροφορικής, οπότε τα προβλήματα είναι συνδεδεμένα στενά τόσο με τον πληροφορικής, οπότε τα προβλήματα είναι συνδεδεμένα στενά τόσο με τον
διαγωνισμό που ανήκουν όσο και με τις υποβολές που έχουν γίνει σε αυτά. Κάθε διαγωνισμό που ανήκουν όσο και με τις υποβολές που έχουν γίνει σε αυτά. Κάθε
πρόβλημα μπορεί να ανήκει μόνο σε ένα διαγωνισμό. πρόβλημα μπορεί να ανήκει μόνο σε ένα διαγωνισμό.
...@@ -582,27 +582,28 @@ Kewii και Grader, δηλαδή backend και frontend. ...@@ -582,27 +582,28 @@ Kewii και Grader, δηλαδή backend και frontend.
\bigskip \bigskip
Σε επόμενο κεφάλαιο θα διερευνηθεί και θα περιγραφεί η υλοποίηση ενός εναλλακτικού Σε επόμενο κεφάλαιο θα διερευνηθεί και θα περιγραφεί η υλοποίηση ενός εναλλακτικού
σχεδιασμού που επιτρέπει την χρήση των προβλημάτων σε διάφορους διαγωνισμούς και σχεδιασμού που επιτρέπει την χρήση των προβλημάτων σε πολλαπλούς διαγωνισμούς και
την αλλαγή της σύνδεσης των υποβολών από το πρόβλημα προς τους διαγωνισμούς. την αλλαγή της σύνδεσης των υποβολών από το πρόβλημα προς τους διαγωνισμούς.
\subsection{Διαγωνισμοί} \subsection{Διαγωνισμοί}
Οι διαγωνισμοί αντιστοιχούν σε πραγματικούς διαγωνισμούς, εξετάσεις ή σειρές Οι διαγωνισμοί αντιστοιχούν σε διοργανώσεις πληροφορικής, εξετάσεις ή σειρές
ασκήσεων. Εμπεριέχουν προβλήματα και είναι ενεργοί/ορατοί σε ένα χρονικό ασκήσεων. Εμπεριέχουν προβλήματα και είναι ενεργοί/ορατοί σε ένα χρονικό
διάστημα όπου οι διαγωνιζόμενοι μπορούν να υποβάλλουν τις λύσεις τους. Μόλις διάστημα όπου οι διαγωνιζόμενοι μπορούν να υποβάλλουν τις λύσεις τους. Μόλις
ολοκληρωθεί η διεξαγωγή τους, ο διαχειριστής μπορεί να εκκινήσει την τελική ολοκληρωθεί η διεξαγωγή τους, ο διαχειριστής μπορεί να εκκινήσει την τελική
αξιολόγηση, κατά την οποία βαθμολογούνται οι ενεργές υποβολές των αξιολόγηση, κατά την οποία βαθμολογούνται οι ενεργές υποβολές των
διαγωνιζόμενων σε όλα τα προβλήματα του διαγωνισμού. Οι διαγωνισμοί μπορούν να διαγωνιζόμενων σε όλα τα προβλήματα του διαγωνισμού. Οι διαγωνισμοί μπορούν να
είναι ορατοί μόνο από επιλεγμένους χρήστες ή από όλους. είναι ορατοί σε όλους ή μόνο σε επιλεγμένους χρήστες.
\subsection{Αρχεία Ελέγχου} \subsection{Αρχεία Ελέγχου}
Τα αρχεία ελέγχου είναι ζευγάρια αρχείων εισόδου και εξόδου και ανήκουν σε Τα αρχεία ελέγχου είναι ζευγάρια αρχείων εισόδου και εξόδου και ανήκουν σε
προβλήματα. Μια σωστή υποβολή/λύση θα πρέπει για κάθε αρχείο εισόδου προβλήματα. Μια σωστή υποβολή/λύση θα πρέπει για κάθε αρχείο εισόδου που
που δέχεται, να παράγει έξοδο ίδια με αυτή του αντίστοιχου αρχείο εξόδου. δέχεται, να παράγει έξοδο ίδια με αυτή του αντίστοιχου αρχείου εξόδου. Κάθε
Κάθε αρχείο ελέγχου χαρακτηρίζεται από τον τύπο του, αναφορικά με το πότε αρχείο ελέγχου χαρακτηρίζεται από τους πόντους που αξίζει και από τον τύπο
εκτελείται και αν είναι ορατό στους χρήστες. Οι τύποι εκτέλεσης αντιστοιχούν εκτέλεσης του, που σχετίζεται με το πότε εκτελείται και αν είναι ορατό στους
σε χρώματα (tags) και παρουσιάζονται στον Πίνακα 3.1. χρήστες. Οι τύποι εκτέλεσης αντιστοιχούν σε χρώματα (tags) και παρουσιάζονται
στον Πίνακα 3.1.
\begin{table} \begin{table}
\begin{tabular}{ | l | p{10cm} |} \begin{tabular}{ | l | p{10cm} |}
...@@ -624,9 +625,9 @@ Kewii και Grader, δηλαδή backend και frontend. ...@@ -624,9 +625,9 @@ Kewii και Grader, δηλαδή backend και frontend.
\bigskip \bigskip
Σε επόμενο κεφάλαιο θα δημιουργηθεί άλλος ένας τύπος εκτέλεσης. Επιπλέον, θα Σε επόμενο κεφάλαιο θα δημιουργηθεί ένας νέος τύπος εκτέλεσης. Επιπλέον, θα
αλλάξει ριζικά ο τρόπος αξιολόγησης καθώς θα εισαχθεί η έννοια των ομάδων αλλάξει ριζικά ο τρόπος αξιολόγησης καθώς θα εισαχθεί η έννοια των ομάδων
αρχείων ελέγχου και τα αρχεία θα έχουν νόημα μόνο μέσα σε αυτές. αρχείων ελέγχου και τα αρχεία θα αξιολογούνται μόνο μέσα σε αυτές.
\subsection{Χρήστες/Διαγωνιζόμενοι} \subsection{Χρήστες/Διαγωνιζόμενοι}
...@@ -640,7 +641,7 @@ Kewii και Grader, δηλαδή backend και frontend. ...@@ -640,7 +641,7 @@ Kewii και Grader, δηλαδή backend και frontend.
\subsection{Υποβολές} \subsection{Υποβολές}
Η υποβολή μιας λύσης εμπεριέχει το "ανέβασμα" του κώδικα του διαγωνιζόμενου για Η υποβολή μιας λύσης προϋποθέτει το "ανέβασμα" του κώδικα του διαγωνιζόμενου για
να γίνει η μεταγλώττιση του στον εξυπηρετητή, να εκτελεστεί από τον Kewii για να γίνει η μεταγλώττιση του στον εξυπηρετητή, να εκτελεστεί από τον Kewii για
κάθε αρχείο ελέγχου που αντιστοιχεί στο είδος της υποβολής και να αξιολογηθεί η κάθε αρχείο ελέγχου που αντιστοιχεί στο είδος της υποβολής και να αξιολογηθεί η
ορθότητα της εξόδου. Οι υποβολές χωρίζονται σε δύο κύριες κατηγορίες, την ορθότητα της εξόδου. Οι υποβολές χωρίζονται σε δύο κύριες κατηγορίες, την
...@@ -648,29 +649,29 @@ Kewii και Grader, δηλαδή backend και frontend. ...@@ -648,29 +649,29 @@ Kewii και Grader, δηλαδή backend και frontend.
κανονικές και εφόσον υπάρχει, για έναν διαγωνιζόμενο, τουλάχιστον μία υποβολή κανονικές και εφόσον υπάρχει, για έναν διαγωνιζόμενο, τουλάχιστον μία υποβολή
που περνάει όλα τα αρχεία ελέγχου στα οποία αξιολογήθηκε, αυτή θεωρείται ενεργή που περνάει όλα τα αρχεία ελέγχου στα οποία αξιολογήθηκε, αυτή θεωρείται ενεργή
για αυτόν. Όταν ολοκληρωθεί η περίοδος ανοιχτών υποβολών ενός διαγωνισμού, όλες για αυτόν. Όταν ολοκληρωθεί η περίοδος ανοιχτών υποβολών ενός διαγωνισμού, όλες
οι ενεργές υποβολές για κάθε πρόβλημα του διαγωνισμού επαναυποβάλλονται για την οι ενεργές υποβολές για κάθε πρόβλημα του διαγωνισμού επαναυποβάλλονται στον
τελική αξιολόγηση τους. Kewii για την τελική αξιολόγηση τους.
\subsection{Προγράμματα Αξιολόγησης} \subsection{Προγράμματα Αξιολόγησης}
Οι υποβολές σε κάθε πρόβλημα αξιολογούνται με σύγκριση της εξόδου του υποβληθέντος Οι υποβολές σε κάθε πρόβλημα αξιολογούνται συνήθως με σύγκριση της εξόδου του
προγράμματος με αυτήν του αρχείου ελέγχου για την αντίστοιχη είσοδο. Εξαίρεση σε υποβληθέντος προγράμματος με αυτήν του αρχείου ελέγχου για την αντίστοιχη
αυτό τον τρόπο αξιολόγησης, αποτελούν τα προβλήματα που διαθέτουν το δικό τους είσοδο. Εξαίρεση σε αυτό αποτελεί η δυνατότητα που παρέχει ο Kewii για ορισμό
πρόγραμμα αξιολόγησης το οποίο αναλαμβάνει να συγκρίνει την αναμενόμενη έξοδο ενός ειδικού προγράμματος αξιολόγησης στο πρόβλημα το οποίο αναλαμβάνει να
με αυτήν που παρήγαγε το υποβληθέν πρόγραμμα και να βαθμολογήσει αυτή την έξοδο συγκρίνει την αναμενόμενη έξοδο με αυτήν που παρήγαγε το υποβληθέν πρόγραμμα
στην κλίμακα [0, 1]. Το πρόγραμμα αξιολόγησης είναι και αυτό αποθηκευμένο στον και να βαθμολογεί στην κλίμακα [0, 1]. Το πρόγραμμα αξιολόγησης είναι και αυτό
εξυπηρετητή και μεταγλωττίζεται και εκτελείται από τον Kewii. αποθηκευμένο στον εξυπηρετητή και μεταγλωττίζεται και εκτελείται κατά τη
διαδικασία αξιολόγησης.
\section{Σύστημα αξιολόγησης Kewii} \section{Σύστημα αξιολόγησης Kewii}
Ο Kewii είναι μια εφαρμογή γραμμένη σε γλώσσα C και τρέχει στον εξυπηρετητή Ο Kewii είναι μια εφαρμογή γραμμένη στη γλώσσα C και τρέχει στον εξυπηρετητή
ελέγχοντας διαρκώς για νέες υποβολές. Για κάθε νέα υποβολή που εντοπίζει, ελέγχοντας διαρκώς για την ύπαρξη νέων υποβολών. Για κάθε νέα υποβολή που εντοπίζει,
βρίσκει τον πηγαίο κώδικα που έχει αποθηκευτεί από τον Grader μαζί με συγκεκριμένα βρίσκει τον πηγαίο κώδικα που έχει αποθηκευτεί από τον Grader μαζί με συγκεκριμένα
μεταδεδομένα, μεταγλωττίζει τον κώδικα δημιουργώντας το εκτελέσιμο αρχείο και το μεταδεδομένα, μεταγλωττίζει τον κώδικα δημιουργώντας το εκτελέσιμο αρχείο και το
εκτελεί χρησιμοποιώντας τα απαραίτητα μέτρα ασφαλείας ώστε να συγκρίνει την έξοδο εκτελεί χρησιμοποιώντας τα απαραίτητα μέτρα ασφαλείας ώστε να συγκρίνει την έξοδο
για κάθε αρχείο ελέγχου με την σωστή. Μόλις τελειώσει η εκτέλεση ή ξεπεραστούν τα για κάθε αρχείο ελέγχου με την σωστή. Μόλις τελειώσει η εκτέλεση ή ξεπεραστούν τα
όρια της, ενημερώνει τη βάση δεδομένων, με χρήση ενός PHP script, με την έκβαση της όρια της, ενημερώνει τη βάση δεδομένων, με χρήση ενός PHP script, για την έκβαση της
εκτέλεσης και ειδοποιεί το Grader καλώντας ένα μοναδικό για κάθε υποβολή σύνδεσμο εκτέλεσης και ειδοποιεί το Grader καλώντας ένα μοναδικό για κάθε υποβολή σύνδεσμο
(callback) ώστε αυτός να αναλάβει την ανάλυση των αποτελεσμάτων. (callback) ώστε αυτός να αναλάβει την ανάλυση των αποτελεσμάτων.
...@@ -700,19 +701,17 @@ Kewii και Grader, δηλαδή backend και frontend. ...@@ -700,19 +701,17 @@ Kewii και Grader, δηλαδή backend και frontend.
κοινό κορμό που έχει τεθεί για το συγκεκριμένο πρόβλημα. Ο τρόπος αξιολόγησης κοινό κορμό που έχει τεθεί για το συγκεκριμένο πρόβλημα. Ο τρόπος αξιολόγησης
μπορεί να είναι κανονικός ή ειδικός. Στον κανονικό ελέγχεται η ομοιότητα της μπορεί να είναι κανονικός ή ειδικός. Στον κανονικό ελέγχεται η ομοιότητα της
εξόδου του προγράμματος της υποβολής με την ορθή απάντηση, ενώ στον ειδική εξόδου του προγράμματος της υποβολής με την ορθή απάντηση, ενώ στον ειδική
αξιολόγηση γίνεται χρήση ενός προγράμματος, που θα έχει τεθεί για το αξιολόγηση γίνεται χρήση ειδικού προγράμματος αξιολόγησης για την βαθμολόγηση
συγκεκριμένο πρόβλημα, ώστε να βαθμολογηθεί η λύση, επιτρέποντας έτσι την της λύσης επιτρέποντας έτσι την ύπαρξη προβλημάτων βελτιστοποίησης.
ύπαρξη προβλημάτων βελτιστοποίησης.
\bigskip \bigskip
Οι υποβολές που στέλνονται στον Kewii αποθηκεύονται σε μια ουρά σύμφωνα με τον Οι υποβολές που στέλνονται στον Kewii αποθηκεύονται σε μια ουρά σύμφωνα με τον
αύξοντα αριθμό που παίρνουν και ο Kewii γνωρίζει κάθε στιγμή ποιος θα είναι ο αύξοντα αριθμό που παίρνουν και ο Kewii γνωρίζει κάθε στιγμή ποιος θα είναι ο
επόμενος αριθμός υποβολής που θα αξιολογήσει. Το πρόγραμμα κοιμάται έως ότου επόμενος αριθμός υποβολής που θα αξιολογήσει. Το πρόγραμμα "κοιμάται" έως ότου
βρει μια νέα υποβολή ελέγχοντας για αρχεία με τον συγκεκριμένο αριθμό. Επίσης, βρει μια νέα υποβολή ελέγχοντας για αρχεία με τον συγκεκριμένο αριθμό. Επίσης,
αν η διαδικασία της αξιολόγησης διακοπεί ενδιάμεσα, μπορεί να συνεχίσει από το αν η διαδικασία της αξιολόγησης διακοπεί ενδιάμεσα, μπορεί να συνεχίσει από το
σημείο που σταμάτησε. Μια ακριβέστερη περιγραφή της ροής φαίνεται στο παρακάτω σημείο που σταμάτησε. Η ροή λειτουργίας του παρουσιάζεται στο σχήμα 3.1.
σχήμα:
\begin{figure} \begin{figure}
\centering \centering
...@@ -723,16 +722,17 @@ Kewii και Grader, δηλαδή backend και frontend. ...@@ -723,16 +722,17 @@ Kewii και Grader, δηλαδή backend και frontend.
\bigskip \bigskip
Γενικά, ο Kewii περιορίζεται στο να δέχεται υποβολές για συγκεκριμένα προβλήματα Γενικά, η λειτουργία του Kewii περιορίζεται στο να δέχεται υποβολές για
με συγκεκριμένα αρχεία ελέγχου (και σε μερικές περιπτώσεις συγκεκριμένο πρόγραμμα προβλήματα με συγκεκριμένα αρχεία ελέγχου. Αξιολογεί κάθε υποβολή με 0 - λάθος
αξιολόγησης). Αξιολογεί την κάθε υποβολή με 0 - λάθος και 1 - σωστό για κάθε αρχείο και 1 - σωστό για κάθε αρχείο ή αναθέτει την αξιολόγηση στο ειδικό πρόγραμμα
ή αναθέτει την αξιολόγηση στο αρμόδιο πρόγραμμα που θα επιστρέψει μια τιμή ανάμεσα που θα επιστρέψει μια τιμή ανάμεσα στα 0 και 1. Τότε, η "ευθύνη" του τελειώνει,
στα 0 και 1. Τότε οι "ευθύνες" του τελειώνουν, δηλαδή δεν ασχολείται με την συνολική δηλαδή δεν εμπλέκεται στη συνολική αξιολόγηση των διαγωνισμών και των
αξιολόγηση των διαγωνισμών και των προβλημάτων και ποια υποβολή θεωρείται ενεργή, προβλημάτων, τον ορισμό υποβολών ως ενεργών, ή με το ποια αρχεία ελέγχου θα
ούτε με το ποια αρχεία ελέγχου θα επιλεγούν κατά την υποβολή. Τα παραπάνω κρίνονται επιλεγούν για κάθε υποβολή. Η αποστασιοποίηση του από τα παραπάνω, το γεγονός
σημαντικά γιατί θα μας επιτρέψουν να επανασχεδιάσουμε τον αλγόριθμο της υποβολής, δηλαδή ότι δρα ως ένα μαύρο κουτί για την εκτέλεση των υποβολών, είναι πολύ
δημιουργώντας ομάδες αρχείων ελέγχου, όπως και άλλα κομμάτια του Grader χωρίς να σημαντικό διότι θα μας επιτρέψουν να επανασχεδιάσουμε τον αλγόριθμο της
χρειαστεί να τροποποιήσουμε τον Kewii. υποβολής, δημιουργώντας ομάδες αρχείων ελέγχου, όπως και άλλα κομμάτια του
Grader χωρίς να χρειαστεί να τροποποιήσουμε τον Kewii.
\section{Διαδικτυακή εφαρμογή Grader} \section{Διαδικτυακή εφαρμογή Grader}
...@@ -745,7 +745,7 @@ Kewii και Grader, δηλαδή backend και frontend. ...@@ -745,7 +745,7 @@ Kewii και Grader, δηλαδή backend και frontend.
\bigskip \bigskip
\noindent Τα συνήθη σενάρια χρήσης της εφαρμογής αναφέρονται παρακάτω. Τα συνήθη σενάρια χρήσης της εφαρμογής αναφέρονται παρακάτω.
\subsection{Εμφάνιση διαθέσιμων διαγωνισμών και προβλημάτων} \subsection{Εμφάνιση διαθέσιμων διαγωνισμών και προβλημάτων}
...@@ -761,18 +761,19 @@ Kewii και Grader, δηλαδή backend και frontend. ...@@ -761,18 +761,19 @@ Kewii και Grader, δηλαδή backend και frontend.
για καθένα από τα προβλήματα του. Σε αυτή τη σελίδα υπάρχουν όλες οι υποβολές για καθένα από τα προβλήματα του. Σε αυτή τη σελίδα υπάρχουν όλες οι υποβολές
που έχει κάνει για αυτό το πρόβλημα, ενώ υπάρχει χρωματική διάκριση ανάμεσα σε που έχει κάνει για αυτό το πρόβλημα, ενώ υπάρχει χρωματική διάκριση ανάμεσα σε
σωστές και λανθασμένες υποβολές, καθώς και για την ενεργή υποβολή. Ως ενεργή σωστές και λανθασμένες υποβολές, καθώς και για την ενεργή υποβολή. Ως ενεργή
υποβολή τίθεται η τελευταία σωστή, αν και υπάρχει η δυνατότητα, στην ίδια υποβολή τίθεται η τελευταία σωστή, αν και υπάρχει η δυνατότητα στην ίδια
οθόνη, να επιλεχθεί μια διαφορετική σωστή υποβολή ως ενεργή. Επιλέγοντας μια σελίδα να επιλεχθεί μια διαφορετική σωστή υποβολή ως ενεργή. Επιλέγοντας μια
υποβολή, ο χρήστης μεταφέρεται στην οθόνη λεπτομερειών της υποβολής του, όπου υποβολή, ο χρήστης μεταφέρεται στη σελίδα λεπτομερειών της υποβολής του, όπου
εμφανίζονται και τα ακριβή αποτελέσματα της λύσης του για κάθε αρχείο ελέγχου. εμφανίζονται και τα ακριβή αποτελέσματα της λύσης του για κάθε αρχείο ελέγχου.
Για τα αρχεία ελέγχου που το επιτρέπουν, υπάρχει η οθόνη προεπισκόπησης. Για τα αρχεία ελέγχου που το επιτρέπουν, υπάρχει η σελίδα προεπισκόπησης.
Παρόμοια δυνατότητα δίνεται και για τον πηγαίο κώδικα της υποβολής, αν ο Παρόμοια δυνατότητα δίνεται και για τον πηγαίο κώδικα της υποβολής, αν ο
χρήστης θέλει να τον δει στην εφαρμογή. χρήστης θέλει να τον δει στην εφαρμογή.
TODO: μιλαμε για σεναρια οχι για οθονες, μηπως θελουν αλλαγη οι περιγραφες; (% todo search for οθόν)
\subsection{Δημιουργία και διαχείριση προβλημάτων και διαγωνισμών} \subsection{Δημιουργία και διαχείριση προβλημάτων και διαγωνισμών}
Στη συγκεκριμένη οθόνη, που δεν είναι προσβάσιμη στους κανονικούς χρήστες, ο Η δημιουργία και η διαχείριση διαγωνισμών γίνεται από τη σελίδα της διαχείρισης
που δεν είναι προσβάσιμη στους κανονικούς χρήστες. Σε αυτή τη σελίδα, ο
διαχειριστής μπορεί να δει όλους τους διαγωνισμούς και τα προβλήματα που έχουν διαχειριστής μπορεί να δει όλους τους διαγωνισμούς και τα προβλήματα που έχουν
δημιουργηθεί. Οι διαγωνισμοί παρουσιάζονται ταξινομημένοι κατά χρονολογική δημιουργηθεί. Οι διαγωνισμοί παρουσιάζονται ταξινομημένοι κατά χρονολογική
σειρά δημιουργίας μαζί με τα προβλήματα που περιέχονται στον καθένα. Δίνονται σειρά δημιουργίας μαζί με τα προβλήματα που περιέχονται στον καθένα. Δίνονται
...@@ -784,72 +785,72 @@ TODO: μιλαμε για σεναρια οχι για οθονες, μηπως ...@@ -784,72 +785,72 @@ TODO: μιλαμε για σεναρια οχι για οθονες, μηπως
\bigskip \bigskip
Εξαιτίας της άμεσης σύνδεσης προβλημάτων και υποβολών σε αυτά, κατά τη Εξαιτίας της άμεσης σύνδεσης προβλημάτων και υποβολών, τα προβλήματα διατηρούν
μετακίνηση ενός προβλήματος μεταξύ διαγωνισμών, αυτό διατηρεί τις υποβολές που τις υποβολές που έχουν γίνει σε αυτά κατά τους σε νέους διαγωνισμούς.
είχε αν και είναι πλέον σε διαφορετικό διαγωνισμό. Επιπροσθέτως, όπως είναι Επιπροσθέτως, όπως είναι προφανές, ο διαγωνισμός στον οποίο άνηκε αρχικά το
προφανές, ο διαγωνισμός που ήταν αρχικά το πρόβλημα φαίνεται κενός και πρόβλημα φαίνεται κενός και ουσιαστικά χάνει και την ιστορικότητα του. Ο
ουσιαστικά χάνει και την ιστορικότητα του. Ο συγκεκριμένος τρόπος λειτουργίας συγκεκριμένος τρόπος λειτουργίας αποτελεί απόρροια της αρχικής σχεδίασης του
αποτελεί απόρροια της αρχικής σχεδίασης του Grader για διοργανώσεις και όχι για Grader για διοργανώσεις και όχι για ακαδημαϊκούς σκοπούς, με αποτέλεσμα να μην
ακαδημαϊκούς σκοπούς, με αποτέλεσμα να μην έχει προβλεφθεί η δημιουργία έχει προβλεφθεί η δημιουργία διαγωνισμών-σειρών ασκήσεων με επαναχρησιμοποίηση
διαγωνισμών-σειρών ασκήσεων με επαναχρησιμοποίηση προβλημάτων. προβλημάτων.
\bigskip \bigskip
Μια ακόμα οθόνη που είναι προσβάσιμη από την κεντρική της διαχείρισης προβλημάτων Μια ακόμα σελίδα που είναι προσβάσιμη από την κεντρική της διαχείρισης προβλημάτων
και διαγωνισμών είναι αυτή των αρχείων ελέγχου του προβλήματος. Σε αυτήν μπορεί και διαγωνισμών είναι αυτή των αρχείων ελέγχου του προβλήματος. Σε αυτήν μπορεί
ο διαχειριστής να ανεβάσει καινούρια αρχεία ελέγχου, καθώς και να αλλάξει τον τύπο ο διαχειριστής να ανεβάσει καινούρια αρχεία ελέγχου, καθώς και να αλλάξει τον τύπο
εκτέλεσης και την βαθμολογία τους. Η συγκεκριμένη οθόνη θα μας απασχολήσει αρκετά εκτέλεσης και την βαθμολογία τους. Η συγκεκριμένη σελίδα θα μας απασχολήσει αρκετά
στα επόμενα κεφάλαια. στα επόμενα κεφάλαια, δεδομένου ότι θα τροποποιηθεί τόσο για τις ομάδες αρχείων
ελέγχου όσο και για την προσθήκη μαζικής δημιουργίας αρχείων και ομάδων.
\subsection{Ενεργοποίηση διαγωνισμού και τελική αξιολόγηση} \subsection{Ενεργοποίηση διαγωνισμού και τελική αξιολόγηση}
Ένα πολύ συνηθισμένο σενάριο χρήσης για έναν διαχειριστή είναι αυτό κατά το Ένα πολύ συνηθισμένο σενάριο χρήσης για έναν διαχειριστή είναι αυτό κατά το
οποίο, αφού έχει δημιουργήσει ένα νέο διαγωνισμό και τα προβλήματα του, πρέπει οποίο, αφού έχει δημιουργήσει ένα νέο διαγωνισμό και τα προβλήματα του, πρέπει
να το δημοσιοποιήσει στους χρήστες. Μέσα από την οθόνη διαχείρισης των να το δημοσιοποιήσει στους χρήστες. Μέσα από τη σελίδα διαχείρισης των
διαγωνισμών, έχει τη δυνατότητα, αρχικά, να επιλέξει τους χρήστες που διαγωνισμών, έχει τη δυνατότητα αρχικά να επιλέξει τους χρήστες που επιτρέπεται
επιτρέπεται να συμμετέχουν (ή όλους) στο διαγωνισμό. Έπειτα, έχοντας επιλέξει να συμμετέχουν στο διαγωνισμό. Έπειτα, έχοντας επιλέξει την επιθυμητή
και τη σωστή ημερομηνία έναρξης και λήξης του διαγωνισμού κατά τη δημιουργία ημερομηνία έναρξης και λήξης του διαγωνισμού κατά τη δημιουργία του, μπορεί να
του, μπορεί να επιλέξει την ενεργοποίηση αυτού με το αντίστοιχο πλήκτρο στην επιλέξει την ενεργοποίηση αυτού με το αντίστοιχο πλήκτρο στη σελίδα
οθόνη διαχείρισης. Τότε το πρόβλημα γίνεται ορατό στους επιλεγμένους χρήστες διαχείρισης. Τότε ο διαγωνισμός και τα προβλήματα του γίνονται ορατά στους
και οι τελευταίοι μπορούν να ξεκινήσουν να κάνουν υποβολές. επιλεγμένους χρήστες και οι τελευταίοι μπορούν να ξεκινήσουν να κάνουν
υποβολές.
\bigskip \bigskip
Όταν λήξει ή απενεργοποιηθεί ο διαγωνισμός, ο διαχειριστής μπορεί να εκκινήσει Όταν λήξει ή απενεργοποιηθεί ο διαγωνισμός, ο διαχειριστής μπορεί να εκκινήσει
την τελική αξιολόγηση, κατά την οποία επιλέγονται όλες οι ενεργές υποβολές για την τελική αξιολόγηση, κατά την οποία επιλέγονται όλες οι ενεργές υποβολές για
κάθε πρόβλημα του διαγωνισμού (μία ανά διαγωνιζόμενο με τουλάχιστον μία σωστή κάθε πρόβλημα του διαγωνισμού και αυτές αποστέλλονται στον Kewii για να
υποβολή) και αυτές αποστέλλονται ξανά στον Kewii για να αξιολογηθούν εκ νέου αξιολογηθούν εκ νέου συμπεριλαμβάνοντας αυτή τη φορά τα αρχεία ελέγχου που
συμπεριλαμβάνοντας αυτή τη φορά τα αρχεία ελέγχου που είναι αποκλειστικά για είναι αποκλειστικά για την τελική αξιολόγηση (πράσινα). Μόλις ολοκληρωθεί η
την τελική αξιολόγηση. Μόλις ολοκληρωθεί η διαδικασία, εμφανίζονται στην οθόνη διαδικασία, εμφανίζονται στη σελίδα τα τελικά αποτελέσματα, τα οποία μπορούν να
τα τελικά αποτελέσματα, τα οποία μπορούν να δημοσιοποιηθούν σαν νέα στην αρχική δημοσιοποιηθούν σαν δημοσιεύσεις στην αρχική σελίδα του Grader. Η βαθμολογία
σελίδα του Grader. Η βαθμολογία υπολογίζεται από το άθροισμα των ενεργών υπολογίζεται από το άθροισμα των ενεργών υποβολών του κάθε διαγωνιζόμενου στα
υποβολών του κάθε διαγωνιζόμενου στα προβλήματα που περιέχει ο διαγωνισμός. Η προβλήματα που περιέχει ο διαγωνισμός. Η βαθμολογία του προβλήματος είναι το
βαθμολογία του προβλήματος είναι το άθροισμα των αρχείων ελέγχου της τελικής άθροισμα των πόντων των αρχείων ελέγχου της τελικής αξιολόγησης.
αξιολόγησης (αποκλειστικά και μη).
TODO: Καλύτερη περιγραφή της λειτουργίας της υποβολης; + ισως μια συμπερασματική παράγραφο
\chapter{Προσθήκη Ομάδων Αρχείων Ελέγχου} \chapter{Προσθήκη Ομάδων Αρχείων Ελέγχου}
Η μεγαλύτερη σε πολυπλοκότητα αλλαγή λειτουργικότητας του Grader ήταν η Η μεγαλύτερη σε πολυπλοκότητα αλλαγή λειτουργικότητας του Grader ήταν η
τροποποίηση του τρόπου αξιολόγησης των υποβολών με την εισαγωγή ομάδων αρχείων τροποποίηση του τρόπου αξιολόγησης των υποβολών με την εισαγωγή ομάδων αρχείων
ελέγχου (testcase groups) για ομαδοποίηση των τελευταίων, καθώς και ενός νέου ελέγχου (testcase groups) για ομαδοποίηση των τελευταίων, καθώς και η
τύπου εκτέλεσης των αρχείων ελέγχου. Η υλοποίηση του νέου τύπου εκτέλεσης, που δημιουργία ενός νέου τύπου εκτέλεσης των αρχείων. Η υλοποίηση του νέου τύπου
θα αντιστοιχεί στο μπλε χρώμα (blue tag), κατά την αντιστοίχιση που εκτέλεσης, που θα αντιστοιχεί στο μπλε χρώμα (blue tag
παρουσιάστηκε στο κεφάλαιο 3.1.3, ήταν μια χρήσιμη εισαγωγή στη \includegraphics[scale=0.8]{Figures/tag_blue.png}) κατά την αντιστοίχιση που
λειτουργία και στο codebase του Grader αλλά και στη βάση και τους σχετικούς παρουσιάστηκε στον πίνακα 3.1, ήταν μια χρήσιμη εισαγωγή στη λειτουργία και
πίνακες. Στο παρόν κεφάλαιο θα περιγραφεί πρώτα η μικρή αυτή προσθήκη και στον κώδικα του Grader αλλά και τη βάση δεδομένων. Στο παρόν κεφάλαιο θα
έπειτα η λογική και η υλοποίηση της προσθήκης των testcase groups. περιγραφεί πρώτα η μικρή αυτή προσθήκη και έπειτα η λογική και η υλοποίηση της
προσθήκης των testcase groups.
\section{Προσθήκη blue tag για μη απαραίτητα αρχεία ελέγχου} \section{Προσθήκη blue tag για μη απαραίτητα αρχεία ελέγχου}
\subsection{Κίνητρο} \subsection{Κίνητρο}
Ένα αρχείο ελέγχου χαρακτηρισμένο με blue tag, ελέγχεται κανονικά σε κάθε Ένα αρχείο ελέγχου χαρακτηρισμένο με blue tag ελέγχεται κανονικά σε κάθε
αξιολόγηση, αλλά το αποτέλεσμα της εκτέλεσης του δεν επηρεάζει την ορθότητα της αξιολόγηση αλλά το αποτέλεσμα της εκτέλεσης του δεν επηρεάζει την ορθότητα της
υποβολής. Όπως τα "κίτρινα" αρχεία ελέγχου, τα "μπλε", δεν διαθέτουν την είσοδο υποβολής. Όπως τα "κίτρινα" αρχεία ελέγχου, τα "μπλε" διατηρούν κρυφή την είσοδο
τους προς προβολή στους διαγωνιζόμενους. Ο συγκεκριμένος τύπος εκτέλεσης είχε τους από τους διαγωνιζόμενους. Ο συγκεκριμένος τύπος εκτέλεσης είχε
υλοποιηθεί πρώτα (πριν την παρούσα εργασία), στο branch του Grader που υλοποιηθεί πρώτα (πριν την παρούσα εργασία), στο branch του Grader που
χρησιμοποιεί το hellenico.gr, το οποίο όμως διαφέρει αρκετά από αυτό του softlab, χρησιμοποιεί το hellenico.gr, το οποίο όμως διαφέρει αρκετά από αυτό του softlab,
γεγονός που δεν επέτρεπε το απλό merge του σχετικού κώδικά. γεγονός που δεν επέτρεπε το απλό merge του σχετικού κώδικά.
...@@ -868,24 +869,24 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της ...@@ -868,24 +869,24 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
\bigskip \bigskip
Αυτό δημιουργεί το πρόβλημα ότι αρχεία ελέγχου με μη-φανερές δυσκολίες του Αυτό δημιουργεί το πρόβλημα ότι αρχεία ελέγχου με μη εμφανείς δυσκολίες του
αλγόριθμου (corner/edge cases) ή αρχεία ελέγχου που φέρνουν τις υποβληθείσες αλγόριθμου (corner/edge cases) ή αρχεία με μεγάλο μέγεθος εισόδου, αποτελούν
λύσεις κοντά στα εκτελεστικά τους όρια, αποτελούν ρίσκο όσον αφορά τον ρίσκο όσον αφορά τον χαρακτηρισμό τους ως "κίτρινα" ή "πορτοκαλί", δηλαδή
χαρακτηρισμό τους ως "κίτρινα" ή "πορτοκαλί", δηλαδή αρχεία ελέγχου που τρέχουν αρχεία ελέγχου που τρέχουν σε κανονικές και τελικές υποβολές. Όσοι
σε κανονικές και τελικές υποβολές. Όσοι διαγωνιζόμενοι δεν καταφέρουν να διαγωνιζόμενοι δεν καταφέρουν να υποβάλουν λύση που να αξιολογηθεί σωστά σε όλα
υποβάλουν λύση που να τις "περάσει" δε θα καταφέρει να βαθμολογηθεί καθόλου, τα αρχεία ελέγχου δεν καταφέρνουν να βαθμολογηθούν καθόλου, πιθανόν άδικα. Ως
πιθανόν άδικα. Ως φυσικό επακόλουθο, τέτοιου τύπου αρχεία ελέγχου μπορούν να φυσικό επακόλουθο, τέτοιου τύπου αρχεία ελέγχου μπορούν να χαρακτηριστούν μόνο
χαρακτηριστούν μόνο ως πράσινα, δηλαδή να τρέχουν μόνο στην τελική αξιολόγηση. ως πράσινα, δηλαδή να χρησιμοποιούνται αποκλειστικά στην τελική αξιολόγηση.
\bigskip \bigskip
Τα μπλε αρχεία ελέγχου προσφέρουν μια λύση στο πρόβλημα, καθώς επιτρέπουν, Τα μπλε αρχεία ελέγχου προσφέρουν μια λύση στο πρόβλημα, καθώς επιτρέπουν
ουσιαστικά, μια υποβολή να χαρακτηριστεί ορθή/ενεργή χωρίς να έχει "περάσει" ουσιαστικά μια υποβολή να χαρακτηριστεί ορθή/ενεργή χωρίς να έχει "περάσει" όλα
όλα τα αρχεία ελέγχου. Ακόμα κι αν ο διαγωνιζόμενος δεν καταφέρει να βελτιώσει τα αρχεία ελέγχου. Ακόμα κι αν ο διαγωνιζόμενος δεν καταφέρει να βελτιώσει την
την υλοποίηση του, έτσι ώστε να ικανοποιεί όλα τα αρχεία ελέγχου, θα διαθέτει υλοποίηση του έτσι ώστε να ικανοποιεί όλα τα αρχεία ελέγχου, θα διαθέτει μια
μια ενεργή υποβολή και συνεπώς θα βαθμολογηθεί. Παράλληλα, θα γνωρίζει ότι ενεργή υποβολή και συνεπώς θα βαθμολογηθεί. Παράλληλα, θα γνωρίζει ότι έχει
έχει αποτύχει σε τουλάχιστον μία περίπτωση και θα έχει κίνητρο να συνεχίσει τις αποτύχει σε τουλάχιστον μία περίπτωση και θα έχει κίνητρο να συνεχίσει τις
υποβολές ώστε να μη χάσει την πιθανότητα να πάρει πλήρη βαθμολογία. υποβολές ώστε να μη χάσει τη δυνατότητα να πάρει πλήρη βαθμολογία.
\subsection{Υλοποίηση} \subsection{Υλοποίηση}
...@@ -895,38 +896,39 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της ...@@ -895,38 +896,39 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
που τρέχει μόλις ολοκληρωθεί η αξιολόγηση μιας υποβολής. Ο Kewii δε χρειάστηκε που τρέχει μόλις ολοκληρωθεί η αξιολόγηση μιας υποβολής. Ο Kewii δε χρειάστηκε
τροποποιήσεις, διότι όπως έχει περιγραφεί σε προηγούμενο κεφάλαιο, σε κάθε τροποποιήσεις, διότι όπως έχει περιγραφεί σε προηγούμενο κεφάλαιο, σε κάθε
υποβολή λαμβάνει απλά τη λίστα με τα αρχεία ελέγχου που πρέπει να υποβολή λαμβάνει απλά τη λίστα με τα αρχεία ελέγχου που πρέπει να
χρησιμοποιήσει και επιστρέφει την έκβαση τους. Η βάση δεδομένων, επίσης δεν χρησιμοποιήσει και επιστρέφει την έκβαση τους. Η βάση δεδομένων επίσης δεν
υποβλήθηκε σε αλλαγές, καθώς η μόνη αλλαγή που την επηρεάζει είναι η προσθήκη υποβλήθηκε σε αλλαγές, καθώς η μόνη αλλαγή που την επηρεάζει είναι η προσθήκη
μιας πιθανής τιμής στο πεδίο του τύπου εκτέλεσης του πίνακα των αρχείων μιας πιθανής τιμής στο πεδίο του τύπου εκτέλεσης του πίνακα των αρχείων
ελέγχου. ελέγχου.
\bigskip \bigskip
Οι αλλαγές που αφορούν το frontend κομμάτι έγιναν κυρίως στη σελίδα της διαχείρισης Οι αλλαγές που αφορούν στο frontend κομμάτι έγιναν κυρίως στη σελίδα της
αρχείων ελέγχων. Όπως φαίνεται στην εικόνα 4.1, δίπλα σε κάθε αρχείο ελέγχου είναι διαχείρισης αρχείων ελέγχων. Όπως φαίνεται στην εικόνα 4.1, δίπλα σε κάθε
τα χρωματικά tags και χάρη στη CSS διακρίνεται το επιλεγμένο. Για την προσθήκη αρχείο ελέγχου είναι τα χρωματικά tags και χάρη στη CSS διακρίνεται το
του blue tag, δανειστήκαμε την εικόνα από το hellenico, και αυτή προστέθηκε μετά επιλεγμένο. Για την προσθήκη του blue tag, χρησιμοποιήθηκε η εικόνα από το
το κίτρινο και πορτοκαλί. Αντίστοιχα, προστέθηκε η περιγραφή του συγκεκριμένου hellenico, και αυτή προστέθηκε μετά το κίτρινο tag. Αντίστοιχα, προστέθηκε η
tag και ο κώδικας που διαχειριζόταν το πάτημα του tag και την αλλαγή στη βάση. περιγραφή του συγκεκριμένου tag και τροποποιήθηκε ο κώδικας που διαχειρίζεται
το πάτημα του tag και τροποποιεί τη βάση.
\bigskip \bigskip
Στον κώδικα που τρέχει κατά την υποβολή, επιλέγονται τα αρχεία ελέγχου που θα Στον κώδικα που τρέχει κατά την υποβολή, επιλέγονται τα αρχεία ελέγχου που θα
εκτελεστούν και γράφονται σε ένα αρχείο στον εξυπηρετητή ώστε να μπουν στην εκτελεστούν και γράφονται σε ένα αρχείο στον εξυπηρετητή ώστε να μπουν στην
ουρά του Kewii. Εκεί προστέθηκε ο νέος τύπος εκτέλεσης σε αυτά που στέλνονται ουρά του Kewii. Εκεί προστέθηκε ο νέος τύπος εκτέλεσης σε αυτούς που στέλνονται
σε όλες τις υποβολές. Αντίστοιχα στο callback script, το κομμάτι του Grader που σε όλες τις υποβολές. Αντίστοιχα, στο callback script, το κομμάτι του Grader
τρέχει με πρωτοβουλία του Kewii, μόλις αυτός έχει τελειώσει την αξιολόγηση μιας που τρέχει μόλις έχει ολοκληρωθεί η βασική αξιολόγηση μιας υποβολής από τον
υποβολής, υλοποιήθηκε η λογική των "μπλε" αρχείων ελέγχου, που ακόμα και να Kewii, υλοποιήθηκε η λογική των "μπλε" αρχείων ελέγχου, που ακόμα και να έχουν
έχουν έρθει ως λανθασμένα, δεν επηρεάζουν την έκβαση. χαρακτηριστεί ως λανθασμένα, δεν επηρεάζουν την έκβαση.
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/bluetag.png} \includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/bluetag.png}
\caption[Προσθήκη blue tag]{Η οθόνη διαχείρισης αρχείων ελέγχου μετά την \caption[Προσθήκη blue tag]{Η σελίδα διαχείρισης αρχείων ελέγχου μετά την
προσθήκη του blue tag.} προσθήκη του blue tag.}
\end{figure} \end{figure}
\section{Testcase Groups} \section{Ομάδες αρχείων ελέγχου (testcase groups)}
Έχοντας προσθέσει το blue tag, τροποποιώντας πολλαπλά σημεία του Grader τόσο Έχοντας προσθέσει το blue tag, τροποποιώντας πολλαπλά σημεία του Grader τόσο
για την υποβολή όσο και για την αξιολόγηση, μπορούσαμε να προχωρήσουμε στην για την υποβολή όσο και για την αξιολόγηση, μπορούσαμε να προχωρήσουμε στην
...@@ -934,120 +936,139 @@ tag και ο κώδικας που διαχειριζόταν το πάτημα ...@@ -934,120 +936,139 @@ tag και ο κώδικας που διαχειριζόταν το πάτημα
\subsection{Κίνητρο} \subsection{Κίνητρο}
Πριν τις αλλαγές μας, ο διαχειριστής, κατά την δημιουργία του προβλήματος, Πριν τις αλλαγές μας ο διαχειριστής, κατά την δημιουργία του προβλήματος,
έπρεπε να δημιουργήσει αρχεία ελέγχου και να επιλέξει στο καθένα βαθμολογία και έπρεπε να δημιουργήσει αρχεία ελέγχου και να επιλέξει στο καθένα βαθμολογία και
τύπο εκτέλεσης. Από κείνο το σημείο και έπειτα, τα αρχεία ελέγχου δεν είχαν τύπο εκτέλεσης. Τα αρχεία ελέγχου δεν είχαν δυνατότητα για οποιαδήποτε
κάποια κατηγοριοποίηση ή διαχωρισμό. Ο διαχειριστής, σε κάθε σημείο, όφειλε να κατηγοριοποίηση ή διαχωρισμό. Ο διαχειριστής, σε κάθε σημείο, όφειλε να
διατηρεί την ισορροπία όσον αφορά στις βαθμολογίες των αρχείων ελέγχου και να διατηρεί την ισορροπία όσον αφορά στις βαθμολογίες των αρχείων ελέγχου και να
θυμάται την αναλογία εύκολων και δύσκολων αρχείων ή οποιαδήποτε άλλης θυμάται την αναλογία εύκολων και δύσκολων αρχείων.
κατηγορίας.
\bigskip \bigskip
Άλλο ένα πρόβλημα που υπήρχε ήταν η δυνατότητα για δημιουργία ειδικών λύσεων σε Άλλο ένα πρόβλημα που υπήρχε ήταν η δυνατότητα για δημιουργία ειδικών λύσεων σε
συγκεκριμένα προβλήματα έτσι ώστε να λαμβάνουν αξιοπρεπή βαθμολογία έχοντας συγκεκριμένα προβλήματα έτσι ώστε να λαμβάνουν αξιοπρεπή βαθμολογία έχοντας
υλοποιήσει μέρος μόνο του αλγορίθμου, αρκεί να περνούσαν τα αναγκαία αρχεία της υλοποιήσει περιορισμένο μέρος του αλγόριθμου που να αρκεί για την ορθότητα της
κανονικής υποβολής. Κάθε αρχείο ελέγχου είχε δικιά του βαθμολογία οπότε θα υποβολής. Κάθε αρχείο ελέγχου που αξιολογείται ως σωστό αθροίζεται στην
μπορούσε κανείς να επιτύχει στα μισά παραδείγματος χάρη σε ένα true/false βαθμολογία της τελικής αξιολόγησης και μια τέτοια υποβολή μπορεί να επιτύχει
πρόβλημα. καλύτερη βαθμολογία από ότι θα έπρεπε.
\bigskip \bigskip
Η προσθήκη testcase groups θα επιτρέψει την ομαδοποίηση των αρχείων ελέγχου σε Η προσθήκη testcase groups θα επιτρέψει την ομαδοποίηση των αρχείων ελέγχου σε
ομάδες ανεξάρτητες στην αξιολόγηση με δική τους βαθμολογία με την ορθότητα τους groups ανεξάρτητα στην αξιολόγηση, με δική τους βαθμολογία και με την ορθότητα
να κρίνεται από την ορθότητα όλων των αρχείων ελέγχουν που περιέχουν. Έτσι, θα τους να κρίνεται στην ορθότητα όλων των επιμέρους αρχείων ελέγχου. Έτσι, θα
δοθεί μεγάλη ευελιξία στη δημιουργία διαφορετικών κατηγοριών αρχείων. Ένας δοθεί μεγάλη ευελιξία στη δημιουργία διαφορετικών κατηγοριών αρχείων. Ένας
χρήσιμος διαχωρισμός θα μπορεί να είναι ανάλογα με το μέγεθος της εισόδου, χρήσιμος διαχωρισμός θα μπορεί να είναι ανάλογα με το μέγεθος της εισόδου,
δηλαδή σε μικρά, μεσαία και μεγάλα. Με αυτό τον τρόπο ο διαχειριστής γλιτώνει δηλαδή σε μικρά, μεσαία και μεγάλα. Με αυτό τον τρόπο ο διαχειριστής γλιτώνει
πολύ κόπο πετυχαίνοντας την επιθυμητή αναλογία βαθμολογίας στις διάφορες πολύ κόπο πετυχαίνοντας την επιθυμητή αναλογία βαθμολογίας στις διάφορες λύσεις
υλοποιήσεις βάζοντας απλά τους βαθμούς που θέλει ανεξάρτητα με το πόσα αρχεία βάζοντας απλά τους βαθμούς που επιθυμεί στο group, ανεξάρτητα με το πόσα αρχεία
ελέγχου εμπεριέχει κάθε group. ελέγχου ανήκουν σε κάθε group.
\bigskip \bigskip
Επιπροσθέτως, λύνεται το πρόβλημα των προσαρμοσμένων λύσεων, αφού αν τα Επιπροσθέτως, λύνεται το πρόβλημα των προσαρμοσμένων λύσεων, αφού αν τα
υπάρχοντα groups εμπεριέχουν αρχεία πολλαπλών περιπτώσεων, οι συγκεκριμένες υπάρχοντα groups αποτελούνται από αρχεία πολλαπλών περιπτώσεων, οι λύσεις αυτού
λύσεις δε θα καταφέρνουν να ικανοποιήσουν ταυτόχρονα τα αρχεία και δε θα του τύπου δε θα καταφέρνουν να ικανοποιήσουν ταυτόχρονα τα αρχεία και δε θα
βαθμολογούνται σε αυτά τα groups. βαθμολογούνται σε αυτά τα groups.
\subsection{Προδιαγραφές} \subsection{Προδιαγραφές}
Για την καθοδήγηση της υλοποίησης τέθηκαν συγκεκριμένες προδιαγραφές όσον Για την καθοδήγηση της υλοποίησης τέθηκαν συγκεκριμένες προδιαγραφές όσον
αφορά τις ομάδες αρχείων ελέγχου και τη λειτουργία τους. αφορά στις ομάδες αρχείων ελέγχου και τη λειτουργία τους.
\begin{itemize} \begin{itemize}
\item Οι ομάδες αρχείων ελέγχου, όπως περιγράφηκαν και παραπάνω, θα μπορούν \item Οι ομάδες αρχείων ελέγχου, όπως περιγράφηκαν και παραπάνω, θα μπορούν
να περιέχουν οποιοδήποτε υποσύνολο των διαθέσιμων αρχείων. Επιθυμούμε, να περιέχουν οποιοδήποτε υποσύνολο των διαθέσιμων αρχείων. Επιθυμούμε,
για μεγαλύτερη ευελιξία, τα αρχεία ελέγχου να μπορούν να ανήκουν σε για μεγαλύτερη ευελιξία, τα αρχεία ελέγχου να μπορούν να ανήκουν σε
πολλαπλές ομάδες και με διαφορετικό τύπο εκτέλεσης. πολλαπλές ομάδες, με επιλογή για διαφορετικό τύπο εκτέλεσης σε κάθε ομάδα.
\item Η αξιολόγηση θα γίνεται με βάση μόνο τις ομάδες, ανεξάρτητα με το \item Η αξιολόγηση θα γίνεται με βάση μόνο τις ομάδες, ανεξάρτητα με το
πόσα αρχεία ελέγχου υπάρχουν. Μια υποβολή θα θεωρείται ορθή και θα μπορεί πόσα αρχεία ελέγχου υπάρχουν. Μια υποβολή θα θεωρείται ορθή και θα μπορεί
να τεθεί ως ενεργή αν ικανοποιεί τουλάχιστον μια ομάδα. να τεθεί ως ενεργή αν ικανοποιεί τουλάχιστον μια ομάδα.
\item Οι ομάδες θα μπορούν να αποκτήσουν τίτλο από το διαχειριστή και θα \item Οι ομάδες θα μπορούν να αποκτήσουν τίτλο από το διαχειριστή και θα
διαθέτουν βαθμολογία. Τα παραπάνω καθιστούν τις βαθμολογίες και τύπους διαθέτουν πόντους. Τα παραπάνω καθιστούν πόντους και τύπους
εκτέλεσης των αρχείων ελέγχου ανούσιες. εκτέλεσης των αρχείων ελέγχου ανούσιους.
\item Οι ομάδες που περιέχουν τουλάχιστον ένα αρχείο ελέγχο με τύπο εκτέλεσης \item Οι ομάδες που περιέχουν τουλάχιστον ένα αρχείο ελέγχου με τύπο εκτέλεσης
μη-τελικής αξιολόγησης, δηλαδή κίτρινο, πορτοκαλί ή μπλε, θα αξιολογούνται μη τελικής αξιολόγησης, δηλαδή κίτρινο, πορτοκαλί ή μπλε, θα αξιολογούνται
κατά τις κανονικές υποβολές και θα είναι εμφανείς στους διαγωνιζόμενους κατά τις κανονικές υποβολές και θα είναι εμφανείς στους διαγωνιζόμενους
μαζί με τα αρχεία ελέγχου που διαθέτουν. μαζί με τα αρχεία ελέγχου που αξιολογήθηκαν.
\end{itemize} \end{itemize}
\subsection{Υλοποίηση} \subsection{Υλοποίηση}
Με βάση τις προδιαγραφές που περιγράφηκαν παραπάνω σχηματίζεται η εικόνα της Με βάση τις προδιαγραφές που περιγράφηκαν παραπάνω διαμορφώνεται η εικόνα της
υλοποίησης και των κρίσιμων κομματιών της. Ως προς τη βάση δεδομένων, θα υλοποίησης και των κρίσιμων μερών της.
χρειαστεί ένας νέος πίνακας για τα testcase groups και τα χαρακτηριστικά τους
(όνομα, βαθμολογία).
\bigskip \bigskip
Δεδομένου ότι η σχέση αρχείων ελέγχου και ομάδων είναι N-to-N, δηλαδή τόσο οι Αρχικά, όσον αφορά στη βάση δεδομένων, θα χρειαστεί ένας νέος πίνακας για τα
ομάδες περιέχουν πολλαπλά αρχεία και τα αρχεία ανήκουν σε πολλαπλές ομάδες, θα testcase groups και τα χαρακτηριστικά τους (όνομα, βαθμολογία). Δεδομένου ότι η
χρειαστεί και δεύτερος πίνακας αντιστοίχισης ομάδων με τα αρχεία που περιέχουν. σχέση αρχείων ελέγχου και groups είναι N-to-N, δηλαδή τόσο τα groups περιέχουν
Ο συγκεκριμένος πίνακας θα έχει και πεδίο για τον τύπο εκτέλεσης του αρχείου πολλαπλά αρχεία και τα αρχεία ανήκουν σε πολλαπλά groups, θα χρειαστεί και
ελέγχου στη συγκεκριμένη ομάδα, επιτρέποντας ένα αρχείο να ανήκει ως φανερό δεύτερος πίνακας, για την καταχώρηση όλων των αρχείων ελέγχου κάθε group.
(κίτρινο) σε μία ομάδα και ως τελικό (πράσινο) σε μία άλλη. Οι σχετικοί πίνακες
παρουσιάζονται στις εικόνες 38 και 39. \bigskip
Ο δεύτερος αυτός πίνακας θα ονομαστεί GroupDetails και θα περιέχει, εκτός από
τα πεδία testcaseID και groupID, πεδίο για τον τύπο εκτέλεσης του αρχείου
ελέγχου στη συγκεκριμένο group, επιτρέποντας ένα αρχείο π.χ. να ανήκει ως
φανερό (κίτρινο) σε ένα group και ως τελικό (πράσινο) σε ένα άλλο. Οι σχετικοί
πίνακες παρουσιάζονται στις εικόνες 4.2 και 4.3.
\begin{figure}
\centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/groupsbefore.png}
\caption[Βάση πριν τα testcase groups]{Οι πίνακες και οι σχέσεις της βάσης πριν
τις αλλαγές μας.}
\end{figure}
\begin{figure}
\centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/groupsafter.png}
\caption[Βάση μετά τα testcase groups]{Δημιουργήθηκε ο νέος πίνακας GroupDetails,
που είναι απαραίτητος για την αντιστοίχιση testcase groups με αρχεία ελέγχου.
Επίσης, προστέθηκε το πεδίο resultsjson για την αποθήκευση των υπολογισμένων
αποτελεσμάτων της υποβολής.}
\end{figure}
\bigskip \bigskip
Από τη στιγμή που υπάρχει η πιθανότητα δύο ομάδες να έχουν κοινά αρχεία ελέγχου Από τη στιγμή που υπάρχει η πιθανότητα δύο groups να έχουν κοινά αρχεία ελέγχου
σε πρόβλημα, δημιουργείται το θέμα της πιθανής αχρείαστης αξιολόγησης των ίδιων , δημιουργείται το θέμα της πιθανής αχρείαστης αξιολόγησης των ίδιων αρχείων
αρχείων ελέγχου πολλές φορές. Στην υλοποίηση μας αυτό θα αποφευχθεί διατηρώντας ελέγχου πολλές φορές. Στην υλοποίηση μας αυτό θα αποφευχθεί διατηρώντας την
την αρχιτεκτονική της εφαρμογής όσον αφορά στις αρμοδιότητες Kewii και Grader αρχιτεκτονική της εφαρμογής όσον αφορά στις αρμοδιότητες Kewii και Grader
απαράλλαχτη. Αυτό σημαίνει ότι ο Kewii θα συνεχίσει να παίρνει απλά μια λίστα απαράλλαχτη. Αυτό σημαίνει ότι ο Kewii θα συνεχίσει να παίρνει απλά μια λίστα
με τα αρχεία ελέγχου που πρέπει να εκτελέσει και θα επιστρέφει το αποτέλεσμα με τα αρχεία ελέγχου που πρέπει να εκτελέσει και θα επιστρέφει το αποτέλεσμα
τους. Πρακτικά, δε θα "αντιληφθεί" την αλλαγή, καθώς ο Grader θα είναι τους. Πρακτικά, δε θα "αντιληφθεί" την αλλαγή, καθώς ο Grader θα παραμείνει
υπεύθυνος κατά την υποβολή μιας λύσης να φιλτράρει τα μοναδικά αρχεία ελέγχου υπεύθυνος, κατά την υποβολή μιας λύσης, να φιλτράρει τα μοναδικά αρχεία ελέγχου
που του χρειάζονται για τις ομάδες που συμμετέχουν στην αξιολόγηση, και κατά το που του χρειάζονται και κατά το callback να συνθέτει τα αποτελέσματα που θα
callback για την χρησιμοποίηση αυτών των αποτελεσμάτων για να λάβει την τελική λάβει κατάλληλα ώστε να αποφανθεί για την ορθότητα κάθε group.
έκβαση των testcase groups.
\bigskip \bigskip
Για τη διαχείριση των testcase groups κρίθηκε αναγκαίο να δημιουργηθεί μια νέα Για τη διαχείριση και τη δημιουργία των testcase groups κρίθηκε αναγκαίο να
οθόνη για την διαχείριση και τη δημιουργία testcase groups, η οποία εισάχθηκε δημιουργηθεί μια νέα σελίδα, η οποία εισάχθηκε στην ήδη υπάρχουσα διαχείριση
στην ήδη υπάρχουσα διαχείριση αρχείων ελέγχου. Η τελευταία χρειάστηκε αρχείων ελέγχου. Η τελευταία χρειάστηκε σημαντικές τροποποιήσεις, καθώς πλέον
σημαντικές τροποποιήσεις, καθώς πλέον τα αρχεία ελέγχου δεν μπορούν να έχουν τα αρχεία ελέγχου δεν μπορούν να έχουν βαθμολογίες και τύπους εκτέλεσης (tags)
βαθμολογίες και τύπους εκτέλεσης (χρώματα) εκτός των ομάδων που ανήκουν. Τα έξω των ομάδων που ανήκουν. Τα χρωματικά tags παρέμειναν, δίνοντας τη
χρωματικά tags παρέμειναν, δίνοντας τη δυνατότητα στο διαχειριστή να αλλάξει δυνατότητα στο διαχειριστή να αλλάξει μαζικά τον τύπο ενός αρχείου ελέγχου σε
μαζικά τον τύπο ενός αρχείου ελέγχου σε όλες τις ομάδες που ανήκει. Κρίθηκε όλες τις ομάδες που ανήκει. Κρίθηκε σημαντικό η πληροφορία για τις ομάδες, τις
σημαντικό η πληροφορία για τις ομάδες, τις βαθμολογίες τους και το ποια αρχεία βαθμολογίες τους και το ποια αρχεία εμπεριέχει η κάθε μια, να εμφανίζεται στη
εμπεριέχει η κάθε μια, να εμφανίζεται στη συγκεκριμένη οθόνη χωρίς να είναι συγκεκριμένη σελίδα χωρίς να είναι απαραίτητη η μετάβαση στη σελίδα της
απαραίτητη η μετάβαση στη οθόνη της διαχείρισης ομάδας αρχείων ελέγχου. Οι δύο διαχείρισης ομάδας αρχείων ελέγχου. Οι δύο προαναφερθείσες σελίδες εμφανίζονται
προαναφερθείσες οθόνες εμφανίζονται στις εικόνες 4.3 και 4.4. στις εικόνες 4.4 και 4.5.
\bigskip \bigskip
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/groupoverview.png} \includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/groupoverview.png}
\caption[Επισκόπηση ομάδων αρχείων ελέγχου]{Η οθόνη διαχείρισης των αρχείων \caption[Επισκόπηση ομάδων αρχείων ελέγχου]{Η σελίδα διαχείρισης των αρχείων
ελέγχου μετά την προσθήκη των testcase groups. Διακρίνεται η επισκόπηση τους, ελέγχου μετά την προσθήκη των testcase groups. Διακρίνεται η επισκόπηση τους,
μαζί με τα αρχεία ελέγχου που περιέχουν και τους βαθμούς τους.} μαζί με τα αρχεία ελέγχου που περιέχουν και τους βαθμούς τους.}
\end{figure} \end{figure}
...@@ -1055,31 +1076,31 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -1055,31 +1076,31 @@ callback για την χρησιμοποίηση αυτών των αποτελ
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/groupedit.png} \includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/groupedit.png}
\caption[Διαχείριση ομάδας αρχείων ελέγχου]{Εδώ φαίνεται η νέα οθόνη που \caption[Διαχείριση ομάδας αρχείων ελέγχου]{Εδώ φαίνεται η νέα σελίδα που
δημιουργήθηκε για την δημιουργία και τροποποίηση μιας ομάδας αρχείων ελέγχου.} δημιουργήθηκε για την δημιουργία και τροποποίηση μιας ομάδας αρχείων ελέγχου.}
\end{figure} \end{figure}
\bigskip \bigskip
Η εισαγωγή των testcase groups στο Grader επηρέασε, ακόμα, μεγάλο πλήθος οθονών Η εισαγωγή των testcase groups στο Grader επηρέασε, ακόμα, μεγάλο πλήθος σελίδων
και λειτουργιών συμπεριλαμβανομένων των παρακάτω: και λειτουργιών συμπεριλαμβανομένων των παρακάτω:
\begin{itemize} \begin{itemize}
\item Αλλαγές στην οθόνη των λεπτομερειών υποβολής. Στη συγκεκριμένη \item Αλλαγές στη σελίδα των λεπτομερειών υποβολής. Στη συγκεκριμένη
οθόνη πλέον εμφανίζονται ομάδες αντί για αρχεία, οι οποίες περιέχουν σελίδα πλέον εμφανίζονται ομάδες αντί για αρχεία, οι οποίες περιέχουν
τα αρχεία που αντιστοιχούν σε αυτές μέσα σε πλαίσια. Οι χρωματικές ενδείξεις τα αρχεία που αντιστοιχούν σε αυτές μέσα σε πλαίσια. Οι χρωματικές ενδείξεις
επιτυχίας (πράσινο φόντο) και αποτυχίας (κόκκινο) έχουν παραμείνει, με την επιτυχίας (πράσινο φόντο) και αποτυχίας (κόκκινο) έχουν παραμείνει. Το φόντο
προσθήκη αλλαγής του φόντου του τίτλου της ομάδας ανάλογα με τη συνολική του τίτλου του group χρωματίζεται και αυτό ανάλογα με την ορθότητα του.
έκβαση.
\item Αλλαγές στη σελίδα παρουσίασης όλων των υποβολών και επιλογής της
\item Αλλαγές στην οθόνη παρουσίασης όλων των υποβολών και επιλογής της ενεργής. ενεργής. Εδώ έπρεπε να προστεθεί μία ένδειξη ορθότητας κάθε υποβολής σε
Εδώ έπρεπε να προστεθεί μία ένδειξη ορθότητας κάθε υποβολής πέρα από τις σχέση με το πόσα σωστά groups έχει. Πρόκειται απλά για ένα κλάσμα των
υπάρχουσες, δηλαδή πράσινο/κόκκινο. Μια ορθή υποβολή θα είναι πράσινη αλλά σωστών groups προς όλα όσα ελέγχθηκε. Μια ορθή υποβολή θα είναι πράσινη
μπορεί π.χ. να έχει περάσει μόνο το ένα από τα τρία testcase groups, κάτι αλλά μπορεί π.χ. να έχει περάσει μόνο το ένα από τα τρία testcase groups,
που δεν είναι εμφανές μέχρι να μεταβεί ο διαγωνιζόμενος στις λεπτομέρειες κάτι που δεν είναι εμφανές μέχρι να μεταβεί ο διαγωνιζόμενος στις
υποβολής. Στο συγκεκριμένο παράδειγμα θα αναγράφεται 1/3. λεπτομέρειες υποβολής. Σε αυτή την περίπτωση θα αναγράφεται 1/3.
\item Στην οθόνη διαχείρισης προβλημάτων και διαγωνισμών άλλαξαν τα στατιστικά \item Στη σελίδα διαχείρισης προβλημάτων και διαγωνισμών άλλαξαν τα στατιστικά
δίπλα σε κάθε πρόβλημα που έως τώρα παρουσίαζαν την αναλογία αρχείων ελέγχου δίπλα σε κάθε πρόβλημα που έως τώρα παρουσίαζαν την αναλογία αρχείων ελέγχου
ανά τύπο εκτέλεσης. Πλέον, εμφανίζονται μόνο δύο αριθμοί, ο συνολικός αριθμός ανά τύπο εκτέλεσης. Πλέον, εμφανίζονται μόνο δύο αριθμοί, ο συνολικός αριθμός
αρχείων ελέγχου και ομάδων. αρχείων ελέγχου και ομάδων.
...@@ -1089,7 +1110,7 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -1089,7 +1110,7 @@ callback για την χρησιμοποίηση αυτών των αποτελ
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/allsubmissions.png} \includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/allsubmissions.png}
\caption[Νέα οθόνη εμφάνισης υποβολών]{Η τροποποιημένη παρουσίαση όλων των \caption[Νέα σελίδα εμφάνισης υποβολών]{Η τροποποιημένη παρουσίαση όλων των
υποβολών ενός διαγωνιζόμενου, όπου διακρίνεται ο βαθμός επιτυχίας της υποβολής υποβολών ενός διαγωνιζόμενου, όπου διακρίνεται ο βαθμός επιτυχίας της υποβολής
ως προς τα testcase groups που είχε σωστά.} ως προς τα testcase groups που είχε σωστά.}
\end{figure} \end{figure}
...@@ -1097,8 +1118,8 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -1097,8 +1118,8 @@ callback για την χρησιμοποίηση αυτών των αποτελ
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/cursubmission.png} \includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/cursubmission.png}
\caption[Νέα οθόνη λεπτομέρειων υποβολής]{Η οθόνη τροποποιήθηκε σύμφωνα με τον \caption[Νέα σελίδα λεπτομέρειων υποβολής]{Η σελίδα τροποποιήθηκε σύμφωνα με τον
νέο τρόπο αξιολόγησης, παρουσιάζοντας για κάθε ομάδα την αξιολόγηση της υποβολής νέο τρόπο αξιολόγησης, παρουσιάζοντας για κάθε group την αξιολόγηση της υποβολής
για κάθε αρχείο ελέγχου που περιέχει.} για κάθε αρχείο ελέγχου που περιέχει.}
\end{figure} \end{figure}
...@@ -1116,19 +1137,19 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -1116,19 +1137,19 @@ callback για την χρησιμοποίηση αυτών των αποτελ
Ο τρόπος να επιτευχθεί η ισοδυναμία προηγούμενης και νέας κατάστασης είναι η Ο τρόπος να επιτευχθεί η ισοδυναμία προηγούμενης και νέας κατάστασης είναι η
δημιουργία ενός group που να περιέχει μόνο τα αρχεία ελέγχου κανονικών δημιουργία ενός group που να περιέχει μόνο τα αρχεία ελέγχου κανονικών
υποβολών, δηλαδή μπλε, κίτρινα και πορτοκαλί, με βαθμολογία 0. Αυτή η ομάδα, υποβολών, δηλαδή μπλε, κίτρινα και πορτοκαλί, με βαθμολογία 0. Αυτό το group,
ουσιαστικά, πετυχαίνει την προσομοίωση της προηγούμενης κατάστασης όπου οι πετυχαίνει ουσιαστικά, την προσομοίωση της προηγούμενης κατάστασης όπου οι
υποβολές ελέγχονταν στα συγκεκριμένα αρχεία ελέγχου και εφόσον τα περνούσαν υποβολές ελέγχονταν στα συγκεκριμένα αρχεία ελέγχου και εφόσον τα περνούσαν
όλα, η λύση ήταν σωστή και γινόταν ενεργή. Αυτή η ομάδα όμως δεν αρκεί, καθώς όλα, η λύση ήταν σωστή και γινόταν ενεργή. Αυτό το group όμως δεν αρκεί, καθώς
χρειάζονται και ομάδες για την τελική αξιολόγηση. Αντίστοιχα, θα πρέπει να χρειάζονται και άλλα για την τελική αξιολόγηση. Αντίστοιχα, θα πρέπει να
δημιουργηθούν ακόμα ίσος αριθμός ομάδων με τα ενεργά αρχεία ελέγχου (όλα εκτός δημιουργηθούν ακόμα ίσος αριθμός groups με τα ενεργά αρχεία ελέγχου (όλα εκτός
των μωβ), και πιο συγκεκριμένα, κάθε ομάδα θα περιέχει ένα αρχείο ελέγχου με των μωβ), και πιο συγκεκριμένα, κάθε group θα περιέχει ένα αρχείο ελέγχου με
χρώμα πράσινο και η βαθμολογία της θα είναι ίση με τη βαθμολογία του αρχείου χρώμα πράσινο και η βαθμολογία της θα είναι ίση με τη βαθμολογία του αρχείου
ελέγχου. Έτσι, πετυχαίνουμε την προσομοίωση και της τελικής αξιολόγησης, καθώς ελέγχου. Έτσι, πετυχαίνουμε την προσομοίωση και της τελικής αξιολόγησης, καθώς
όλες αυτές οι ομάδες δε θα ελέγχονται στην κανονική υποβολή αφού περιέχουν μόνο όλα αυτά τα groups δε θα ελέγχονται στην κανονική υποβολή διότι περιέχουν μόνο
πράσινα αρχεία ελέγχου (και συγκεκριμένα ένα η κάθε μία). Για τη διαδικασία πράσινα αρχεία ελέγχου (από ένα κάθε group). Για την αυτοματοποίηση της
αυτή, υλοποιήθηκε script, το οποίο εισάχθηκε στην οθόνη διαχείρισης αρχείων διαδικασίας μετατροπής που περιγράφηκε υλοποιήθηκε script, το οποίο εισάχθηκε
ελέγχου του προβλήματος. στη σελίδα διαχείρισης αρχείων ελέγχου του προβλήματος.
\bigskip \bigskip
...@@ -1136,31 +1157,16 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -1136,31 +1157,16 @@ callback για την χρησιμοποίηση αυτών των αποτελ
μερικό refactoring των κλάσεων και των συναρτήσεων, χρησιμοποιώντας πολλές από μερικό refactoring των κλάσεων και των συναρτήσεων, χρησιμοποιώντας πολλές από
τις αρχές που περιγράφονται στο Clean Code του Robert Martin τις αρχές που περιγράφονται στο Clean Code του Robert Martin
\cite{martin2009clean}. Μέρος των αλλαγών ήταν και η προσθήκη ενός πεδίου στον \cite{martin2009clean}. Μέρος των αλλαγών ήταν και η προσθήκη ενός πεδίου στον
πίνακα των υποβολών, με τίτλο resultsjson, το οποίο περιέχει τα αναλυτικά πίνακα των υποβολών, με τίτλο resultsjson (εικόνα 4.3), το οποίο περιέχει τα
αποτελέσματα μιας υποβολής, κωδικοποιημένα σε μορφή JSON, έτσι ώστε να μην αναλυτικά αποτελέσματα μιας υποβολής, κωδικοποιημένα σε μορφή JSON, έτσι ώστε
υπολογίζονται κάθε φορά που απαιτούνται. Επιπλέον, αλλαγές έγιναν ώστε να να μην υπολογίζονται κάθε φορά που απαιτούνται. Επιπλέον, αλλαγές έγιναν ώστε
αφαιρεθούν κομμάτια επαναλαμβανόμενου κώδικα με την αντίστοιχη δημιουργία νέων να αφαιρεθούν κομμάτια επαναλαμβανόμενου κώδικα με την αντίστοιχη δημιουργία
δομών και κλάσεων, αποσύνδεση της λογικής διαφορετικών αντικειμένων και μείωση νέων δομών και κλάσεων, αποσύνδεση της λογικής διαφορετικών αντικειμένων και
της πολυπλοκότητας μεγάλων κομματιών κώδικα με δημιουργία μικρότερων μείωση της πολυπλοκότητας μεγάλων κομματιών κώδικα με δημιουργία μικρότερων
συναρτήσεων με περιγραφικά ονόματα. συναρτήσεων με περιγραφικά ονόματα.
\bigskip \bigskip
\begin{figure}
\centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/groupsbefore.png}
\caption[Βάση πριν τα testcase groups]{Οι πίνακες και οι σχέσεις της βάσης πριν
τις αλλαγές μας.}
\end{figure}
\begin{figure}
\centering
\includegraphics[scale=0.3,trim=4 4 4 4,clip]{Figures/groupsafter.png}
\caption[Βάση μετά τα testcase groups]{Δημιουργήθηκε ο νέος πίνακας GroupDetails,
που είναι απαραίτητος για την αντιστοίχιση testcase groups με αρχεία ελέγχου.
Επίσης, προστέθηκε το πεδίο resultsjson για την αποθήκευση των υπολογισμένων
αποτελεσμάτων της υποβολής.}
\end{figure}
\chapter{Σχεδίαση για διαχωρισμό Προβλημάτων - Διαγωνισμών} \chapter{Σχεδίαση για διαχωρισμό Προβλημάτων - Διαγωνισμών}
...@@ -1182,7 +1188,7 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -1182,7 +1188,7 @@ callback για την χρησιμοποίηση αυτών των αποτελ
\bigskip \bigskip
Τα προβλήματα, έπειτα από τη δημιουργία τους, παραμένουν ανένταχτα, στην κατηγορία Τα προβλήματα, έπειτα από τη δημιουργία τους, παραμένουν ανένταχτα, στην κατηγορία
"Προβλήματα εκτός διαγωνισμών" της οθόνης διαχείρισης "Προβλήματα εκτός διαγωνισμών" της σελίδας διαχείρισης
όπως φαίνεται και στο σχήμα 5.1. Το επόμενο βήμα είναι η μετακίνηση τους όπως φαίνεται και στο σχήμα 5.1. Το επόμενο βήμα είναι η μετακίνηση τους
σε κάποιον διαγωνισμό με χρήση του μενού στα δεξιά του προβλήματος. Η μετακίνηση σε κάποιον διαγωνισμό με χρήση του μενού στα δεξιά του προβλήματος. Η μετακίνηση
αυτού του τύπου είναι ο μόνος τρόπος να επαναχρησιμοποιηθεί το πρόβλημα και σε αυτού του τύπου είναι ο μόνος τρόπος να επαναχρησιμοποιηθεί το πρόβλημα και σε
...@@ -1307,10 +1313,10 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -1307,10 +1313,10 @@ callback για την χρησιμοποίηση αυτών των αποτελ
(TODO: ισως subsection) Έχοντας αλλάξει τη βάση, αυτό που μένει είναι η (TODO: ισως subsection) Έχοντας αλλάξει τη βάση, αυτό που μένει είναι η
υλοποίηση των αλλαγών στο Grader ώστε να δίνεται η δυνατότητα της αντιγραφής υλοποίηση των αλλαγών στο Grader ώστε να δίνεται η δυνατότητα της αντιγραφής
των προβλημάτων και να αξιοποιούνται τα νέα πεδία και πίνακες. Η πλειοψηφία των των προβλημάτων και να αξιοποιούνται τα νέα πεδία και πίνακες. Η πλειοψηφία των
αλλαγών αφορούν την οθόνη διαχείρισης, καθώς εκεί πρέπει να αλλάξει ο τρόπος αλλαγών αφορούν τη σελίδα διαχείρισης, καθώς εκεί πρέπει να αλλάξει ο τρόπος
που αντιστοιχίζονται τα προβλήματα με τους διαγωνισμούς, όπως και οι υποβολές που αντιστοιχίζονται τα προβλήματα με τους διαγωνισμούς, όπως και οι υποβολές
αυτών. Ακόμα, η λειτουργία του πλήκτρου μετακίνησης αλλάζει σε αντιγραφή, πάλι αυτών. Ακόμα, η λειτουργία του πλήκτρου μετακίνησης αλλάζει σε αντιγραφή, πάλι
επιλέγοντας διαγωνισμό. Τέλος, στο κάτω μέρος της οθόνης, όπου αναγράφονταν τα επιλέγοντας διαγωνισμό. Τέλος, στο κάτω μέρος της σελίδας, όπου αναγράφονταν τα
ανένταχτα προβλήματα, κρίθηκε προτιμότερο να αναγράφονται όλα τα προβλήματα ανένταχτα προβλήματα, κρίθηκε προτιμότερο να αναγράφονται όλα τα προβλήματα
ώστε να είναι ευκολότερο να αναζητηθεί και να αντιγραφεί κάποιο σε ένα νέο ώστε να είναι ευκολότερο να αναζητηθεί και να αντιγραφεί κάποιο σε ένα νέο
διαγωνισμό. Η νέα διαχείριση παρουσιάζεται στις φωτογραφίες 5.4 και 5.5. διαγωνισμό. Η νέα διαχείριση παρουσιάζεται στις φωτογραφίες 5.4 και 5.5.
...@@ -1447,7 +1453,7 @@ Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέ ...@@ -1447,7 +1453,7 @@ Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέ
Κατά τη διαδικασία δημιουργίας ενός προβλήματος, είναι απαραίτητο να προστεθεί Κατά τη διαδικασία δημιουργίας ενός προβλήματος, είναι απαραίτητο να προστεθεί
ένας συχνά μεγάλος αριθμός αρχείων ελέγχου. Ο μόνος τρόπος να γίνει αυτό είναι ένας συχνά μεγάλος αριθμός αρχείων ελέγχου. Ο μόνος τρόπος να γίνει αυτό είναι
μέσω της οθόνης διαχείρισης των αρχείων ελέγχου, όπως φαίνεται στη μέσω της σελίδας διαχείρισης των αρχείων ελέγχου, όπως φαίνεται στη
φωτογραφία 4.1, και κάθε νέο αρχείο ανεβαίνει ξεχωριστά, δηλαδή δεν υπάρχει φωτογραφία 4.1, και κάθε νέο αρχείο ανεβαίνει ξεχωριστά, δηλαδή δεν υπάρχει
κάποια μαζική διαδικασία. κάποια μαζική διαδικασία.
...@@ -1471,9 +1477,9 @@ Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέ ...@@ -1471,9 +1477,9 @@ Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέ
\subsection{Υλοποίηση} \subsection{Υλοποίηση}
Το εργαλείο που περιγράφηκε θα προστεθεί στην οθόνη διαχείρισης των αρχείων Το εργαλείο που περιγράφηκε θα προστεθεί στη σελίδα διαχείρισης των αρχείων
ελέγχου κάτω από το ήδη υπάρχον ανέβασμα μεμονωμένου αρχείου. Μετά την προσθήκη ελέγχου κάτω από το ήδη υπάρχον ανέβασμα μεμονωμένου αρχείου. Μετά την προσθήκη
η οθόνη θα έχει τη μορφή της φωτογραφίας 6.1. Ο διαχειριστής θα ανεβάζει ένα η σελίδα θα έχει τη μορφή της εικόνας 6.1. Ο διαχειριστής θα ανεβάζει ένα
συμπιεσμένο αρχείο (zip) με τα αρχεία εισόδου και εξόδου που θέλει να προσθέσει συμπιεσμένο αρχείο (zip) με τα αρχεία εισόδου και εξόδου που θέλει να προσθέσει
στο πρόγραμμα. Στο αρχείο θα πρέπει, επιπλέον, να υπάρχει και ένα αρχείο με στο πρόγραμμα. Στο αρχείο θα πρέπει, επιπλέον, να υπάρχει και ένα αρχείο με
όνομα descriptor.json το οποίο θα αναλαμβάνει να περιγράψει στο εργαλείο τις όνομα descriptor.json το οποίο θα αναλαμβάνει να περιγράψει στο εργαλείο τις
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment