Commit f0ca7330 authored by Antonios Angelakis's avatar Antonios Angelakis

Writing chapter 4

parent 7e569349
......@@ -322,7 +322,7 @@ Kewii και Grader, δηλαδή backend και frontend.
που δέχεται, να παράγει έξοδο ίδια με αυτή του αντίστοιχου αρχείο εξόδου.
Κάθε αρχείο ελέγχου χαρακτηρίζεται από τον τύπο του, αναφορικά με το πότε
εκτελείται και αν είναι ορατό στους χρήστες. Οι τύποι εκτέλεσης αντιστοιχούν
σε χρώματα. Αυτά είναι τα παρακάτω:
σε χρώματα (tags). Αυτά είναι τα παρακάτω:
\begin{itemize}
\item \textit{Πορτοκαλί} TODO μηπως φωτο εδω; \\
......@@ -344,12 +344,13 @@ Kewii και Grader, δηλαδή backend και frontend.
\subsection{Χρήστες/Διαγωνιζόμενοι}
Οι χρήστες ή διαγωνιζόμενοι είναι τα άτομα που αλληλεπιδρούν με το σύστημα με σκοπό
την υποβολή λύσεων στους διαγωνισμούς που συμμετέχουν. Οι διαχειριστές αποτελούν
κι αυτοί χρήστες, με τη διαφορά ότι έχουν δικαίωμα πρόσβασης στις σελίδες διαχείρισης
διαγωνισμών και προβλημάτων. Οι τελευταίοι έχουν επίσης δικαίωμα να εισάγουν νέους
χρήστες από ένα αρχείο, να ορίσουν την ορατότητα των διαγωνισμών για συγκεκριμένους
διαγωνιζόμενους και να απαντήσουν σε μηνύματα αυτών.
Οι χρήστες ή διαγωνιζόμενοι είναι τα άτομα που αλληλεπιδρούν με το σύστημα με
σκοπό την υποβολή λύσεων στους διαγωνισμούς που συμμετέχουν. Οι διαχειριστές
αποτελούν κι αυτοί χρήστες, με τη διαφορά ότι έχουν δικαίωμα πρόσβασης στις
σελίδες διαχείρισης διαγωνισμών και προβλημάτων. Οι τελευταίοι έχουν επίσης
δικαίωμα να εισάγουν νέους χρήστες από ένα αρχείο, να ορίσουν την ορατότητα των
διαγωνισμών για συγκεκριμένους διαγωνιζόμενους και να απαντήσουν σε μηνύματα
αυτών.
\subsection{Υποβολές}
......@@ -537,12 +538,98 @@ TODO: μιλαμε για σεναρια οχι για οθονες, μηπως
TODO: Καλύτερη περιγραφή της λειτουργίας της υποβολης; + ισως μια συμπερασματική παράγραφο
\chapter{Προσθήκη Ομάδων Αρχείων Ελέγχου}
\chapter{Προσθήκη Ομάδων Αρχείων Ελέγχου και blue tag}
Η μεγαλύτερη σε πολυπλοκότητα αλλαγή λειτουργικότητας του Grader ήταν η
τροποποίηση του τρόπου αξιολόγησης των υποβολών με την εισαγωγή ομάδων αρχείων
ελέγχου (testcase groups) για ομαδοποίηση των τελευταίων, καθώς και ενός νέου
τύπου εκτέλεσης των αρχείων ελέγχου. Η υλοποίηση του νέου τύπου εκτέλεσης, που
θα αντιστοιχεί στο μπλε χρώμα (blue tag), κατά την αντιστοίχιση που
παρουσιάστηκε στο κεφάλαιο 3.1.3 (TODO: link), ήταν μια χρήσιμη εισαγωγή στη
λειτουργία και στο codebase του Grader αλλά και στη βάση και τους σχετικούς
πίνακες. Στο παρόν κεφάλαιο θα περιγραφεί πρώτα η μικρή αυτή προσθήκη και
έπειτα η λογική και η υλοποίηση της προσθήκης των testcase groups.
\section{Προσθήκη blue tag για μη απαραίτητα αρχεία ελέγχου}
\subsection{Κίνητρο}
\section{Κίνητρο}
Ένα αρχείο ελέγχου χαρακτηρισμένο με blue tag, ελέγχεται κανονικά σε κάθε
αξιολόγηση, αλλά το αποτέλεσμα της εκτέλεσης του δεν επηρεάζει την ορθότητα της
υποβολής. Όπως τα "κίτρινα" αρχεία ελέγχου, τα "μπλε", δεν διαθέτουν την είσοδο
τους προς προβολή στους διαγωνιζόμενους. Ο συγκεκριμένος τύπος εκτέλεσης είχε
υλοποιηθεί πρώτα (πριν την παρούσα εργασία), στο branch του Grader που
χρησιμοποιεί το hellenico.gr, το οποίο όμως διαφέρει αρκετά από αυτό του softlab,
γεγονός που δεν επέτρεπε το απλό merge του σχετικού κώδικά.
\bigskip
Η ύπαρξη αρχείων ελέγχου που εξετάζονται στις κανονικές υποβολές αλλά δε
κρίνουν την έκβαση τους προσφέρει το κύριο πλεονέκτημα ότι επιτρέπει την
εισαγωγή δυσκολότερων αρχείων ελέγχου εκτός τελικής αξιολόγησης. Ας θυμηθούμε
τη λειτουργία του Grader όσον αφορά στις αρχικές υποβολές και την τελική
αξιολόγηση: Κατά τη διεξαγωγή του διαγωνισμού, κάθε πρόβλημα είναι ανοιχτό σε
υποβολές. Μια υποβολή θεωρείται ορθή μόνο αν όλα τα αρχεία ελέγχου που έτρεξαν
είναι σωστά. Για να πάρει βαθμολογία για το πρόβλημα, ο διαγωνιζόμενος πρέπει
να έχει τουλάχιστον μια ορθή υποβολή σε αυτό (την ενεργή).
\bigskip
Αυτό δημιουργεί το πρόβλημα ότι αρχεία ελέγχου με μη-φανερές δυσκολίες του
αλγόριθμου (corner/edge cases) ή αρχεία ελέγχου που φέρνουν τις υποβληθείσες
λύσεις κοντά στα εκτελεστικά τους όρια, αποτελούν ρίσκο όσον αφορά τον
χαρακτηρισμό τους ως "κίτρινα" ή "πορτοκαλί", δηλαδή αρχεία ελέγχου που τρέχουν
σε κανονικές και τελικές υποβολές. Όσοι διαγωνιζόμενοι δεν καταφέρουν να
υποβάλουν λύση που να τις "περάσει" δε θα καταφέρει να βαθμολογηθεί καθόλου,
πιθανόν άδικα. Ως φυσικό επακόλουθο, τέτοιου τύπου αρχεία ελέγχου μπορούν να
χαρακτηριστούν μόνο ως πράσινα, δηλαδή να τρέχουν μόνο στην τελική αξιολόγηση.
\bigskip
Τα μπλε αρχεία ελέγχου προσφέρουν μια λύση στο πρόβλημα, καθώς επιτρέπουν,
ουσιαστικά, μια υποβολή να χαρακτηριστεί ορθή/ενεργή χωρίς να έχει "περάσει"
όλα τα αρχεία ελέγχου. Ακόμα κι αν ο διαγωνιζόμενος δεν καταφέρει να βελτιώσει
την υλοποίηση του, έτσι ώστε να ικανοποιεί όλα τα αρχεία ελέγχου, θα διαθέτει
μια ενεργή υποβολή και συνεπώς θα βαθμολογηθεί. Παράλληλα, θα γνωρίζει ότι
έχει αποτύχει σε τουλάχιστον μία περίπτωση και θα έχει κίνητρο να συνεχίσει τις
υποβολές ώστε να μη χάσει την πιθανότητα να πάρει πλήρη βαθμολογία.
\subsection{Υλοποίηση}
Η υλοποίηση δεν είχε ιδιαίτερες δυσκολίες αλλά απαιτούσε την κατανόηση της
αρχιτεκτονικής του Grader και του Kewii. Αλλαγές απαιτούνταν τόσο στο frontend
κομμάτι του Grader, όσο και στον κώδικα κατά την υποβολή και κατά το callback,
που τρέχει μόλις ολοκληρωθεί η αξιολόγηση μιας υποβολής. Ο Kewii δε χρειάστηκε
τροποποιήσεις, διότι όπως έχει περιγραφεί σε προηγούμενο κεφάλαιο, σε κάθε
υποβολή λαμβάνει απλά τη λίστα με τα αρχεία ελέγχου που πρέπει να
χρησιμοποιήσει και επιστρέφει την έκβαση τους. Η βάση δεδομένων, επίσης δεν
υποβλήθηκε σε αλλαγές, καθώς η μόνη αλλαγή που την επηρεάζει είναι η προσθήκη
μιας πιθανής τιμής στο πεδίο του τύπου εκτέλεσης του πίνακα των αρχείων
ελέγχου.
\bigskip
Οι αλλαγές που αφορούν το frontend κομμάτι έγιναν κυρίως στη σελίδα της διαχείρισης
αρχείων ελέγχων. Όπως φαίνεται στην εικόνα18, δίπλα σε κάθε αρχείο ελέγχου είναι
τα χρωματικά tags και με χρήση CSS διακρίνεται το επιλεγμένο. Για την προσθήκη
του blue tag, δανειστήκαμε την εικόνα από το hellenico, και αυτή προστέθηκε μετά
το κίτρινο και πορτοκαλί. Αντίστοιχα, προστέθηκε η περιγραφή του συγκεκριμένου
tag και ο κώδικας που διαχειριζόταν το πάτημα του tag και την αλλαγή στη βάση.
\bigskip
Στον κώδικα που τρέχει κατά την υποβολή, επιλέγονται τα αρχεία ελέγχου που θα
εκτελεστούν και γράφονται σε ένα αρχείο στον εξυπηρετητή ώστε να μπουν στην
ουρά του Kewii. Εκεί προστέθηκε Το callback script είναι το κομμάτι του Grader που τρέχει με
πρωτοβουλία του Kewii, μόλις αυτός έχει τελειώσει την αξιολόγηση μιας υποβολής
και
\section{Testcase Groups}
\subsection{Κίνητρο}
- Δυνατότητα εύκολης δημιουργίας προβλημάτων με true/false απάντηση
......@@ -553,7 +640,7 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
- Γκρουπάρισμα αρχείων ελέγχου για μεγαλυτέρη ευελιξία και παρουσίαση στο χρήστη
\section{Υλοποίηση}
\subsection{Υλοποίηση}
- Εξήγηση σχέσεων πινάκων
......@@ -561,6 +648,7 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
- Φωτογραφίες από ανέβασμα ομάδων αρχείων ελέγχου
\chapter{Σχεδίαση για διαχωρισμό Προβλημάτων - Διαγωνισμών}
Στο παρόν κεφάλαιο θα περιγραφούν οι αλλαγές που έγιναν στο Grader για την
......@@ -593,9 +681,13 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
στον τρόπο που είναι σχεδιασμένη η βάση, ο οποίος παρουσιάζεται παρακάτω.
\bigskip
(TODO εδώ εικόνα διαχείρισης και ισως αλλαγή αναφορών σε εικονα 1, 2 κτλ.)
\bigskip
(TODO εδώ εικόνα βάσης σχημα1)
\bigskip
Στο σχήμα1 αρχίζει να διακρίνεται το πρόβλημα που δημιουργείται. Η σύνδεση
......@@ -629,12 +721,11 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
\bigskip
Αρχικά, θα πρέπει
να δημιουργηθεί ένας πίνακας που να συνδέει κάθε διαγωνισμό με τα προβλήματα που
διαθέτει. Το πεδίο στον πίνακα των προβλημάτων που έως τώρα χρησίμευε για αυτή
τη σύνδεση, δεν αρκεί αφού πλέον θέλουμε να υπάρχει σχέση πολλά προς ένα για
προβλήματα και διαγωνισμούς. Ο νέος πίνακας χρειάζεται απλά να περιέχει τα πεδία
compid και probid.
Αρχικά, θα πρέπει να δημιουργηθεί ένας πίνακας που να συνδέει κάθε διαγωνισμό
με τα προβλήματα που διαθέτει. Το πεδίο στον πίνακα των προβλημάτων που έως
τώρα χρησίμευε για αυτή τη σύνδεση, δεν αρκεί αφού πλέον θέλουμε να υπάρχει
σχέση πολλά προς ένα για προβλήματα και διαγωνισμούς. Ο νέος πίνακας χρειάζεται
απλά να περιέχει τα πεδία compid και probid.
\bigskip
......
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