Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
S
softlab-thesis
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Antonios Angelakis
softlab-thesis
Commits
f0ca7330
Commit
f0ca7330
authored
Feb 28, 2018
by
Antonios Angelakis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Writing chapter 4
parent
7e569349
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
107 additions
and
16 deletions
+107
-16
test.tex
test.tex
+107
-16
No files found.
test.tex
View file @
f0ca7330
...
@@ -322,7 +322,7 @@ Kewii και Grader, δηλαδή backend και frontend.
...
@@ -322,7 +322,7 @@ Kewii και Grader, δηλαδή backend και frontend.
που δέχεται, να παράγει έξοδο ίδια με αυτή του αντίστοιχου αρχείο εξόδου.
που δέχεται, να παράγει έξοδο ίδια με αυτή του αντίστοιχου αρχείο εξόδου.
Κάθε αρχείο ελέγχου χαρακτηρίζεται από τον τύπο του, αναφορικά με το πότε
Κάθε αρχείο ελέγχου χαρακτηρίζεται από τον τύπο του, αναφορικά με το πότε
εκτελείται και αν είναι ορατό στους χρήστες. Οι τύποι εκτέλεσης αντιστοιχούν
εκτελείται και αν είναι ορατό στους χρήστες. Οι τύποι εκτέλεσης αντιστοιχούν
σε χρώματα. Αυτά είναι τα παρακάτω:
σε χρώματα
(tags)
. Αυτά είναι τα παρακάτω:
\begin{itemize}
\begin{itemize}
\item
\textit
{
Πορτοκαλί
}
TODO μηπως φωτο εδω;
\\
\item
\textit
{
Πορτοκαλί
}
TODO μηπως φωτο εδω;
\\
...
@@ -344,12 +344,13 @@ Kewii και Grader, δηλαδή backend και frontend.
...
@@ -344,12 +344,13 @@ Kewii και Grader, δηλαδή backend και frontend.
\subsection
{
Χρήστες/Διαγωνιζόμενοι
}
\subsection
{
Χρήστες/Διαγωνιζόμενοι
}
Οι χρήστες ή διαγωνιζόμενοι είναι τα άτομα που αλληλεπιδρούν με το σύστημα με σκοπό
Οι χρήστες ή διαγωνιζόμενοι είναι τα άτομα που αλληλεπιδρούν με το σύστημα με
την υποβολή λύσεων στους διαγωνισμούς που συμμετέχουν. Οι διαχειριστές αποτελούν
σκοπό την υποβολή λύσεων στους διαγωνισμούς που συμμετέχουν. Οι διαχειριστές
κι αυτοί χρήστες, με τη διαφορά ότι έχουν δικαίωμα πρόσβασης στις σελίδες διαχείρισης
αποτελούν κι αυτοί χρήστες, με τη διαφορά ότι έχουν δικαίωμα πρόσβασης στις
διαγωνισμών και προβλημάτων. Οι τελευταίοι έχουν επίσης δικαίωμα να εισάγουν νέους
σελίδες διαχείρισης διαγωνισμών και προβλημάτων. Οι τελευταίοι έχουν επίσης
χρήστες από ένα αρχείο, να ορίσουν την ορατότητα των διαγωνισμών για συγκεκριμένους
δικαίωμα να εισάγουν νέους χρήστες από ένα αρχείο, να ορίσουν την ορατότητα των
διαγωνιζόμενους και να απαντήσουν σε μηνύματα αυτών.
διαγωνισμών για συγκεκριμένους διαγωνιζόμενους και να απαντήσουν σε μηνύματα
αυτών.
\subsection
{
Υποβολές
}
\subsection
{
Υποβολές
}
...
@@ -537,12 +538,98 @@ TODO: μιλαμε για σεναρια οχι για οθονες, μηπως
...
@@ -537,12 +538,98 @@ TODO: μιλαμε για σεναρια οχι για οθονες, μηπως
TODO: Καλύτερη περιγραφή της λειτουργίας της υποβολης; + ισως μια συμπερασματική παράγραφο
TODO: Καλύτερη περιγραφή της λειτουργίας της υποβολης; + ισως μια συμπερασματική παράγραφο
\chapter
{
Προσθήκη Ομάδων Αρχείων Ελέγχου
}
\chapter
{
Προσθήκη Ομάδων Αρχείων Ελέγχου και blue tag
}
Η μεγαλύτερη σε πολυπλοκότητα αλλαγή λειτουργικότητας του Grader ήταν η
τροποποίηση του τρόπου αξιολόγησης των υποβολών με την εισαγωγή ομάδων αρχείων
ελέγχου (testcase groups) για ομαδοποίηση των τελευταίων, καθώς και ενός νέου
τύπου εκτέλεσης των αρχείων ελέγχου. Η υλοποίηση του νέου τύπου εκτέλεσης, που
θα αντιστοιχεί στο μπλε χρώμα (blue tag), κατά την αντιστοίχιση που
παρουσιάστηκε στο κεφάλαιο 3.1.3 (TODO: link), ήταν μια χρήσιμη εισαγωγή στη
λειτουργία και στο codebase του Grader αλλά και στη βάση και τους σχετικούς
πίνακες. Στο παρόν κεφάλαιο θα περιγραφεί πρώτα η μικρή αυτή προσθήκη και
έπειτα η λογική και η υλοποίηση της προσθήκης των testcase groups.
\section
{
Προσθήκη blue tag για μη απαραίτητα αρχεία ελέγχου
}
\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 απάντηση
- Δυνατότητα εύκολης δημιουργίας προβλημάτων με true/false απάντηση
...
@@ -553,7 +640,7 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
...
@@ -553,7 +640,7 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
- Γκρουπάρισμα αρχείων ελέγχου για μεγαλυτέρη ευελιξία και παρουσίαση στο χρήστη
- Γκρουπάρισμα αρχείων ελέγχου για μεγαλυτέρη ευελιξία και παρουσίαση στο χρήστη
\section
{
Υλοποίηση
}
\s
ubs
ection
{
Υλοποίηση
}
- Εξήγηση σχέσεων πινάκων
- Εξήγηση σχέσεων πινάκων
...
@@ -561,6 +648,7 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
...
@@ -561,6 +648,7 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
- Φωτογραφίες από ανέβασμα ομάδων αρχείων ελέγχου
- Φωτογραφίες από ανέβασμα ομάδων αρχείων ελέγχου
\chapter
{
Σχεδίαση για διαχωρισμό Προβλημάτων - Διαγωνισμών
}
\chapter
{
Σχεδίαση για διαχωρισμό Προβλημάτων - Διαγωνισμών
}
Στο παρόν κεφάλαιο θα περιγραφούν οι αλλαγές που έγιναν στο Grader για την
Στο παρόν κεφάλαιο θα περιγραφούν οι αλλαγές που έγιναν στο Grader για την
...
@@ -593,9 +681,13 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
...
@@ -593,9 +681,13 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
στον τρόπο που είναι σχεδιασμένη η βάση, ο οποίος παρουσιάζεται παρακάτω.
στον τρόπο που είναι σχεδιασμένη η βάση, ο οποίος παρουσιάζεται παρακάτω.
\bigskip
\bigskip
(TODO εδώ εικόνα διαχείρισης και ισως αλλαγή αναφορών σε εικονα 1, 2 κτλ.)
(TODO εδώ εικόνα διαχείρισης και ισως αλλαγή αναφορών σε εικονα 1, 2 κτλ.)
\bigskip
\bigskip
(TODO εδώ εικόνα βάσης σχημα1)
(TODO εδώ εικόνα βάσης σχημα1)
\bigskip
\bigskip
Στο σχήμα1 αρχίζει να διακρίνεται το πρόβλημα που δημιουργείται. Η σύνδεση
Στο σχήμα1 αρχίζει να διακρίνεται το πρόβλημα που δημιουργείται. Η σύνδεση
...
@@ -629,12 +721,11 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
...
@@ -629,12 +721,11 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
\bigskip
\bigskip
Αρχικά, θα πρέπει
Αρχικά, θα πρέπει να δημιουργηθεί ένας πίνακας που να συνδέει κάθε διαγωνισμό
να δημιουργηθεί ένας πίνακας που να συνδέει κάθε διαγωνισμό με τα προβλήματα που
με τα προβλήματα που διαθέτει. Το πεδίο στον πίνακα των προβλημάτων που έως
διαθέτει. Το πεδίο στον πίνακα των προβλημάτων που έως τώρα χρησίμευε για αυτή
τώρα χρησίμευε για αυτή τη σύνδεση, δεν αρκεί αφού πλέον θέλουμε να υπάρχει
τη σύνδεση, δεν αρκεί αφού πλέον θέλουμε να υπάρχει σχέση πολλά προς ένα για
σχέση πολλά προς ένα για προβλήματα και διαγωνισμούς. Ο νέος πίνακας χρειάζεται
προβλήματα και διαγωνισμούς. Ο νέος πίνακας χρειάζεται απλά να περιέχει τα πεδία
απλά να περιέχει τα πεδία compid και probid.
compid και probid.
\bigskip
\bigskip
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment