Commit f5e4b910 authored by Antonios Angelakis's avatar Antonios Angelakis

Minor fixes and add Uncle Bob

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