Commit f5e4b910 authored by Antonios Angelakis's avatar Antonios Angelakis

Minor fixes and add Uncle Bob

parent 4186d9ce
...@@ -75,3 +75,10 @@ ...@@ -75,3 +75,10 @@
pages={149--162}, pages={149--162},
year={2008} year={2008}
} }
@book{martin2009clean,
title={Clean code: a handbook of agile software craftsmanship},
author={Martin, Robert C},
year={2009},
publisher={Pearson Education}
}
...@@ -386,7 +386,7 @@ H αρχική έκδοση του Mooshak δημιουργήθηκε το 2000 ...@@ -386,7 +386,7 @@ H αρχική έκδοση του Mooshak δημιουργήθηκε το 2000
\caption[Η αρχιτεκτονική του Mooshak]{Η αρχιτεκτονική του Mooshak με τρεις \caption[Η αρχιτεκτονική του Mooshak]{Η αρχιτεκτονική του Mooshak με τρεις
εξυπηρετητές, όπου οι δύο βρίσκονται στο ίδιο τοπικό δίκτυο και όλοι εξυπηρετητές, όπου οι δύο βρίσκονται στο ίδιο τοπικό δίκτυο και όλοι
συγχρονίζουν τα δεδομένα τους. Βασισμένο στο σχήμα 4 του συγχρονίζουν τα δεδομένα τους. Βασισμένο στο σχήμα 4 του
\cite{leal20.3,trim=4 4 4 4,clipmooshak}.} \cite{leal2003mooshak}.}
\end{figure} \end{figure}
\bigskip \bigskip
...@@ -895,8 +895,8 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της ...@@ -895,8 +895,8 @@ TODO: Καλύτερη περιγραφή της λειτουργίας της
\bigskip \bigskip
Οι αλλαγές που αφορούν το frontend κομμάτι έγιναν κυρίως στη σελίδα της διαχείρισης Οι αλλαγές που αφορούν το frontend κομμάτι έγιναν κυρίως στη σελίδα της διαχείρισης
αρχείων ελέγχων. Όπως φαίνεται στην εικόνα18, δίπλα σε κάθε αρχείο ελέγχου είναι αρχείων ελέγχων. Όπως φαίνεται στην εικόνα 4.1, δίπλα σε κάθε αρχείο ελέγχου είναι
τα χρωματικά tags και με χρήση CSS διακρίνεται το επιλεγμένο. Για την προσθήκη τα χρωματικά tags και χάρη στη CSS διακρίνεται το επιλεγμένο. Για την προσθήκη
του blue tag, δανειστήκαμε την εικόνα από το hellenico, και αυτή προστέθηκε μετά του blue tag, δανειστήκαμε την εικόνα από το hellenico, και αυτή προστέθηκε μετά
το κίτρινο και πορτοκαλί. Αντίστοιχα, προστέθηκε η περιγραφή του συγκεκριμένου το κίτρινο και πορτοκαλί. Αντίστοιχα, προστέθηκε η περιγραφή του συγκεκριμένου
tag και ο κώδικας που διαχειριζόταν το πάτημα του tag και την αλλαγή στη βάση. tag και ο κώδικας που διαχειριζόταν το πάτημα του tag και την αλλαγή στη βάση.
...@@ -1033,12 +1033,10 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -1033,12 +1033,10 @@ callback για την χρησιμοποίηση αυτών των αποτελ
σημαντικό η πληροφορία για τις ομάδες, τις βαθμολογίες τους και το ποια αρχεία σημαντικό η πληροφορία για τις ομάδες, τις βαθμολογίες τους και το ποια αρχεία
εμπεριέχει η κάθε μια, να εμφανίζεται στη συγκεκριμένη οθόνη χωρίς να είναι εμπεριέχει η κάθε μια, να εμφανίζεται στη συγκεκριμένη οθόνη χωρίς να είναι
απαραίτητη η μετάβαση στη οθόνη της διαχείρισης ομάδας αρχείων ελέγχου. Οι δύο απαραίτητη η μετάβαση στη οθόνη της διαχείρισης ομάδας αρχείων ελέγχου. Οι δύο
προαναφερθείσες οθόνες εμφανίζονται στις εικόνες 41 και 42. προαναφερθείσες οθόνες εμφανίζονται στις εικόνες 4.3 και 4.4.
\bigskip \bigskip
(TODO: eikones 41 42)
\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}
...@@ -1129,15 +1127,15 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -1129,15 +1127,15 @@ callback για την χρησιμοποίηση αυτών των αποτελ
\bigskip \bigskip
Η υλοποίηση όσον αφορά στο frontend και τη λογική του Grader, συνδυάστηκε με Η υλοποίηση όσον αφορά στο frontend και τη λογική του Grader, συνδυάστηκε με
μερικό refactoring των κλάσεων και των συναρτήσεων, χρησιμοποιώντας πολλές μερικό refactoring των κλάσεων και των συναρτήσεων, χρησιμοποιώντας πολλές από
από τις αρχές που περιγράφονται στο (TODO: να το βγαλω τελειως ή να βάλω πηγή) τις αρχές που περιγράφονται στο Clean Code του Robert Martin
clean code του Robert Martin. Μέρος των αλλαγών ήταν και η προσθήκη ενός πεδίου \cite{martin2009clean}. Μέρος των αλλαγών ήταν και η προσθήκη ενός πεδίου στον
στον πίνακα των υποβολών, με τίτλο resultsjson, το οποίο περιέχει τα αναλυτικά πίνακα των υποβολών, με τίτλο resultsjson, το οποίο περιέχει τα αναλυτικά
αποτελέσματα μιας υποβολής, κωδικοποιημένα σε μορφή JSON, έτσι ώστε να μην αποτελέσματα μιας υποβολής, κωδικοποιημένα σε μορφή JSON, έτσι ώστε να μην
υπολογίζονται κάθε φορά που απαιτούνται. Επιπλέον, αλλαγές έγιναν ώστε να υπολογίζονται κάθε φορά που απαιτούνται. Επιπλέον, αλλαγές έγιναν ώστε να
αφαιρεθούν κομμάτια επαναλαμβανόμενου κώδικα με την αντίστοιχη δημιουργία αφαιρεθούν κομμάτια επαναλαμβανόμενου κώδικα με την αντίστοιχη δημιουργία νέων
νέων δομών και κλάσεων, αποσύνδεση της λογικής διαφορετικών αντικειμένων και δομών και κλάσεων, αποσύνδεση της λογικής διαφορετικών αντικειμένων και μείωση
μείωση της πολυπλοκότητας μεγάλων κομματιών κώδικα με δημιουργία μικρότερων της πολυπλοκότητας μεγάλων κομματιών κώδικα με δημιουργία μικρότερων
συναρτήσεων με περιγραφικά ονόματα. συναρτήσεων με περιγραφικά ονόματα.
\bigskip \bigskip
...@@ -1167,7 +1165,7 @@ draw this ...@@ -1167,7 +1165,7 @@ draw this
Τα προβλήματα, έπειτα από τη δημιουργία τους, παραμένουν ανένταχτα, στην κατηγορία Τα προβλήματα, έπειτα από τη δημιουργία τους, παραμένουν ανένταχτα, στην κατηγορία
"Προβλήματα εκτός διαγωνισμών" της οθόνης διαχείρισης "Προβλήματα εκτός διαγωνισμών" της οθόνης διαχείρισης
όπως φαίνεται και σε screenshot παρακάτω. Το επόμενο βήμα είναι η μετακίνηση τους όπως φαίνεται και στο σχήμα 5.1. Το επόμενο βήμα είναι η μετακίνηση τους
σε κάποιον διαγωνισμό με χρήση του μενού στα δεξιά του προβλήματος. Η μετακίνηση σε κάποιον διαγωνισμό με χρήση του μενού στα δεξιά του προβλήματος. Η μετακίνηση
αυτού του τύπου είναι ο μόνος τρόπος να επαναχρησιμοποιηθεί το πρόβλημα και σε αυτού του τύπου είναι ο μόνος τρόπος να επαναχρησιμοποιηθεί το πρόβλημα και σε
άλλους διαγωνισμούς, αφότου τελειώσει αυτός για τον οποίο δημιουργήθηκε άλλους διαγωνισμούς, αφότου τελειώσει αυτός για τον οποίο δημιουργήθηκε
...@@ -1193,7 +1191,7 @@ draw this ...@@ -1193,7 +1191,7 @@ draw this
\bigskip \bigskip
Στο σχήμα1 αρχίζει να διακρίνεται το πρόβλημα που δημιουργείται. Η σύνδεση Στο σχήμα 5.2 αρχίζει να διακρίνεται το πρόβλημα που δημιουργείται. Η σύνδεση
κάθε προβλήματος με το διαγωνισμό γίνεται μέσω του πεδίο compid στον πίνακα κάθε προβλήματος με το διαγωνισμό γίνεται μέσω του πεδίο compid στον πίνακα
των προβλημάτων. Ως αποτέλεσμα, το μόνο που κάνει η λειτουργία της μετακίνησης των προβλημάτων. Ως αποτέλεσμα, το μόνο που κάνει η λειτουργία της μετακίνησης
προβλήματος σε άλλον διαγωνισμό είναι να αλλάξει αυτό το πεδίο. Επιπροσθέτως, προβλήματος σε άλλον διαγωνισμό είναι να αλλάξει αυτό το πεδίο. Επιπροσθέτως,
...@@ -1246,7 +1244,7 @@ draw this ...@@ -1246,7 +1244,7 @@ draw this
θα έχει την ίδια λογική, δηλαδή θα αναγράφει τις επιμέρους βαθμολογίες σε κάθε θα έχει την ίδια λογική, δηλαδή θα αναγράφει τις επιμέρους βαθμολογίες σε κάθε
πρόβλημα του διαγωνισμού. Η διαφορά θα είναι ότι δε θα σημειώνεται στη βάση μόνο πρόβλημα του διαγωνισμού. Η διαφορά θα είναι ότι δε θα σημειώνεται στη βάση μόνο
η βαθμολογία αλλά ζευγάρια probid: βαθμολογία. Στο παράδειγμα που χρησιμοποιήθηκε η βαθμολογία αλλά ζευγάρια probid: βαθμολογία. Στο παράδειγμα που χρησιμοποιήθηκε
προηγουμένως, το πεδίο θα έχει τη μορφή {48: 7, 51: 9}. προηγουμένως, το πεδίο θα έχει τη μορφή $\{48: 7, 51: 9\}$.
\bigskip \bigskip
...@@ -1281,7 +1279,7 @@ draw this ...@@ -1281,7 +1279,7 @@ draw this
επιλέγοντας διαγωνισμό. Τέλος, στο κάτω μέρος της οθόνης, όπου αναγράφονταν τα επιλέγοντας διαγωνισμό. Τέλος, στο κάτω μέρος της οθόνης, όπου αναγράφονταν τα
ανένταχτα προβλήματα, κρίθηκε προτιμότερο να αναγράφονται όλα τα προβλήματα ανένταχτα προβλήματα, κρίθηκε προτιμότερο να αναγράφονται όλα τα προβλήματα
ώστε να είναι ευκολότερο να αναζητηθεί και να αντιγραφεί κάποιο σε ένα νέο ώστε να είναι ευκολότερο να αναζητηθεί και να αντιγραφεί κάποιο σε ένα νέο
διαγωνισμό. Η νέα διαχείριση παρουσιάζεται στη φωτογραφία4. διαγωνισμό. Η νέα διαχείριση παρουσιάζεται στις φωτογραφίες 5.2 και 5.3.
\bigskip \bigskip
...@@ -1412,7 +1410,7 @@ Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέ ...@@ -1412,7 +1410,7 @@ Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέ
Κατά τη διαδικασία δημιουργίας ενός προβλήματος, είναι απαραίτητο να προστεθεί Κατά τη διαδικασία δημιουργίας ενός προβλήματος, είναι απαραίτητο να προστεθεί
ένας συχνά μεγάλος αριθμός αρχείων ελέγχου. Ο μόνος τρόπος να γίνει αυτό είναι ένας συχνά μεγάλος αριθμός αρχείων ελέγχου. Ο μόνος τρόπος να γίνει αυτό είναι
μέσω της οθόνης διαχείρισης των αρχείων ελέγχου, όπως φαίνεται στη μέσω της οθόνης διαχείρισης των αρχείων ελέγχου, όπως φαίνεται στη
φωτογραφία18, και κάθε νέο αρχείο ανεβαίνει ξεχωριστά, δηλαδή δεν υπάρχει φωτογραφία 4.1, και κάθε νέο αρχείο ανεβαίνει ξεχωριστά, δηλαδή δεν υπάρχει
κάποια μαζική διαδικασία. κάποια μαζική διαδικασία.
\bigskip \bigskip
...@@ -1436,11 +1434,12 @@ Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέ ...@@ -1436,11 +1434,12 @@ Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέ
\subsection{Υλοποίηση} \subsection{Υλοποίηση}
Το εργαλείο που περιγράφηκε θα προστεθεί στην οθόνη διαχείρισης των αρχείων Το εργαλείο που περιγράφηκε θα προστεθεί στην οθόνη διαχείρισης των αρχείων
ελέγχου κάτω από το ήδη υπάρχον ανέβασμα μεμονωμένου αρχείου, όπως φαίνεται και ελέγχου κάτω από το ήδη υπάρχον ανέβασμα μεμονωμένου αρχείου. Μετά την προσθήκη
στην εικόνα33. Ο διαχειριστής θα ανεβάζει ένα συμπιεσμένο αρχείο (zip) με τα η οθόνη θα έχει τη μορφή της φωτογραφίας 6.1. Ο διαχειριστής θα ανεβάζει ένα
αρχεία εισόδου και εξόδου που θέλει να προσθέσει στο πρόγραμμα. Στο αρχείο θα συμπιεσμένο αρχείο (zip) με τα αρχεία εισόδου και εξόδου που θέλει να προσθέσει
πρέπει, επιπλέον, να υπάρχει και ένα αρχείο με όνομα descriptor.json το οποίο στο πρόγραμμα. Στο αρχείο θα πρέπει, επιπλέον, να υπάρχει και ένα αρχείο με
θα αναλαμβάνει να περιγράψει στο εργαλείο τις προδιαγραφές αρχείων και ομάδων. όνομα descriptor.json το οποίο θα αναλαμβάνει να περιγράψει στο εργαλείο τις
προδιαγραφές αρχείων και ομάδων.
\bigskip \bigskip
...@@ -1506,7 +1505,7 @@ descriptor.json αρχείου. ...@@ -1506,7 +1505,7 @@ descriptor.json αρχείου.
ερωτήσεις σχετικές με τον αριθμό και τα ονόματα των αρχείων ελέγχου και ομάδων ερωτήσεις σχετικές με τον αριθμό και τα ονόματα των αρχείων ελέγχου και ομάδων
και έπειτα για κάθε ομάδα σχετικά με το ποια αρχεία περιέχει και τους τύπους και έπειτα για κάθε ομάδα σχετικά με το ποια αρχεία περιέχει και τους τύπους
εκτέλεσης τους. Στο τέλος, παράγει το αρχείο που περιγράφηκε. Παρακάτω φαίνεται εκτέλεσης τους. Στο τέλος, παράγει το αρχείο που περιγράφηκε. Παρακάτω φαίνεται
η εκτέλεση του συγκεκριμένου script, μαζί με το αρχείο που δημιουργείται. μια τυπική εκτέλεση του συγκεκριμένου script.
\begin{figure} \begin{figure}
......
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