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
c430e460
Commit
c430e460
authored
Mar 17, 2018
by
Antonios Angelakis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Finish editing in 5,6,7 and bibliography
parent
caf94ce9
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
223 additions
and
178 deletions
+223
-178
thesis.bib
thesis.bib
+40
-4
thesis.tex
thesis.tex
+183
-174
No files found.
thesis.bib
View file @
c430e460
@misc{
website:
popularpython,
@misc{popularpython,
author = "Philip Guo",
author = "Philip Guo",
title = "Python Is Now the Most Popular Introductory Teaching Language at Top U.s. Universities",
title = "Python Is Now the Most Popular Introductory Teaching Language at Top U.s. Universities",
month = "July",
month = "July",
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
note = "https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-u-s-universities/fulltext"
note = "https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-u-s-universities/fulltext"
}
}
@misc{
website:
pythongrowth,
@misc{pythongrowth,
author = "David Robinson",
author = "David Robinson",
title = "The Incredible Growth of Python",
title = "The Incredible Growth of Python",
month = "September",
month = "September",
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
note = "https://stackoverflow.blog/2017/09/06/incredible-growth-python/"
note = "https://stackoverflow.blog/2017/09/06/incredible-growth-python/"
}
}
@misc{w
ebsite:w
hypython,
@misc{whypython,
author = "David Robinson",
author = "David Robinson",
title = "Why is Python Growing So Quickly?",
title = "Why is Python Growing So Quickly?",
month = "September",
month = "September",
...
@@ -92,7 +92,6 @@
...
@@ -92,7 +92,6 @@
year={2015},
year={2015},
}
}
@MastersThesis{Rozhkov,
@MastersThesis{Rozhkov,
author={Рожков М.},
author={Рожков М.},
title={Система автоматического тестирования программ и организации соревнований по программированию},
title={Система автоматического тестирования программ и организации соревнований по программированию},
...
@@ -100,3 +99,40 @@
...
@@ -100,3 +99,40 @@
address={Russia},
address={Russia},
year={2004},
year={2004},
}
}
@misc{deprecation,
author={Adam Harvey},
title={Request for Comments: ext/mysql deprecation},
month={December},
year={2012},
howpublished={https://wiki.php.net/rfc/mysql\_deprecation},
note={Accessed: 2018-03-17},
}
@misc{mysqlapis,
author = "PHP Contributors",
title = "Choosing an API",
note = "https://secure.php.net/manual/en/mysqlinfo.api.choosing.php"
}
@misc{pdo,
author = "PHP Contributors",
title = "PHP Data Objects",
note = "https://secure.php.net/manual/en/book.pdo.php"
}
@misc{dsn,
author = "Wikipedia contributors",
title = "Data source name --- Wikipedia{,} The Free Encyclopedia",
year = "2017",
url = "https://en.wikipedia.org/w/index.php?title=Data_source_name&oldid=796073781",
note = "[Online; accessed 17-March-2018]"
}
@misc{pep8,
author={Guido van Rossum <guido at python.org>, Barry Warsaw <barry at python.org>, Nick Coghlan <ncoghlan at gmail.com>},
title={PEP 8 -- Style Guide for Python Code},
month={July},
year={2001},
howpublished={https://www.python.org/dev/peps/pep-0008/},
note={Accessed: 2018-03-17},
}
thesis.tex
View file @
c430e460
...
@@ -127,7 +127,7 @@ Software development, Free and open source software.
...
@@ -127,7 +127,7 @@ Software development, Free and open source software.
Επιπλέον, κρίθηκε σημαντικό να προστεθεί η Python στις διαθέσιμες γλώσσες
Επιπλέον, κρίθηκε σημαντικό να προστεθεί η Python στις διαθέσιμες γλώσσες
υποβολής καθώς πρόκειται για μια από τις πλέον δημοφιλείς γλώσσες και
υποβολής καθώς πρόκειται για μια από τις πλέον δημοφιλείς γλώσσες και
χρησιμοποιείται ως εισαγωγική γλώσσα προγραμματισμού σε σπουδαία ακαδημαϊκά
χρησιμοποιείται ως εισαγωγική γλώσσα προγραμματισμού σε σπουδαία ακαδημαϊκά
ιδρύματα, όπως είναι το MIT και το Stanford
\cite
{
website:
popularpython
}
.
ιδρύματα, όπως είναι το MIT και το Stanford
\cite
{
popularpython
}
.
Τέλος, ήταν απαραίτητο να γίνουν μικρές βελτιστοποιήσεις στη λογική του Grader,
Τέλος, ήταν απαραίτητο να γίνουν μικρές βελτιστοποιήσεις στη λογική του Grader,
να προστεθούν μικρότερες δυνατότητες που επιδιώκουν τη βελτίωση της ευκολίας
να προστεθούν μικρότερες δυνατότητες που επιδιώκουν τη βελτίωση της ευκολίας
χρήσης για διαγωνιζόμενους και διαχειριστές και να αντικατασταθούν
χρήσης για διαγωνιζόμενους και διαχειριστές και να αντικατασταθούν
...
@@ -265,7 +265,7 @@ Public License), η οποία επιτρέπει εμπορική χρήση,
...
@@ -265,7 +265,7 @@ Public License), η οποία επιτρέπει εμπορική χρήση,
\bigskip
\bigskip
Όλες οι παραπάνω λειτουργίες αλληλεπιδρούν μεταξύ τους με τον τρόπο που φαίνεται
Όλες οι παραπάνω λειτουργίες αλληλεπιδρούν μεταξύ τους με τον τρόπο που φαίνεται
στ
ην εικόν
α 2.1.
στ
ο σχήμ
α 2.1.
\begin{figure}
\begin{figure}
\centering
\centering
...
@@ -904,7 +904,7 @@ Grader για διοργανώσεις και όχι για ακαδημαϊκο
...
@@ -904,7 +904,7 @@ Grader για διοργανώσεις και όχι για ακαδημαϊκο
\bigskip
\bigskip
Οι αλλαγές που αφορούν στο frontend κομμάτι έγιναν κυρίως στη σελίδα της
Οι αλλαγές που αφορούν στο frontend κομμάτι έγιναν κυρίως στη σελίδα της
διαχείρισης αρχείων ελέγχων. Όπως φαίνεται στ
ην εικόν
α 4.1, δίπλα σε κάθε
διαχείρισης αρχείων ελέγχων. Όπως φαίνεται στ
ο σχήμ
α 4.1, δίπλα σε κάθε
αρχείο ελέγχου είναι τα χρωματικά tags και χάρη στη CSS διακρίνεται το
αρχείο ελέγχου είναι τα χρωματικά tags και χάρη στη CSS διακρίνεται το
επιλεγμένο. Για την προσθήκη του blue tag, χρησιμοποιήθηκε η εικόνα από το
επιλεγμένο. Για την προσθήκη του blue tag, χρησιμοποιήθηκε η εικόνα από το
hellenico, και αυτή προστέθηκε μετά το κίτρινο tag. Αντίστοιχα, προστέθηκε η
hellenico, και αυτή προστέθηκε μετά το κίτρινο tag. Αντίστοιχα, προστέθηκε η
...
@@ -1017,7 +1017,7 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
...
@@ -1017,7 +1017,7 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
τα πεδία testcaseID και groupID, πεδίο για τον τύπο εκτέλεσης του αρχείου
τα πεδία testcaseID και groupID, πεδίο για τον τύπο εκτέλεσης του αρχείου
ελέγχου στη συγκεκριμένο group, επιτρέποντας ένα αρχείο π.χ. να ανήκει ως
ελέγχου στη συγκεκριμένο group, επιτρέποντας ένα αρχείο π.χ. να ανήκει ως
φανερό (κίτρινο) σε ένα group και ως τελικό (πράσινο) σε ένα άλλο. Οι σχετικοί
φανερό (κίτρινο) σε ένα group και ως τελικό (πράσινο) σε ένα άλλο. Οι σχετικοί
πίνακες παρουσιάζονται στ
ις εικόνες
4.2 και 4.3.
πίνακες παρουσιάζονται στ
α σχήματα
4.2 και 4.3.
\begin{figure}
\begin{figure}
...
@@ -1061,7 +1061,7 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
...
@@ -1061,7 +1061,7 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
βαθμολογίες τους και το ποια αρχεία εμπεριέχει η κάθε μια, να εμφανίζεται στη
βαθμολογίες τους και το ποια αρχεία εμπεριέχει η κάθε μια, να εμφανίζεται στη
συγκεκριμένη σελίδα χωρίς να είναι απαραίτητη η μετάβαση στη σελίδα της
συγκεκριμένη σελίδα χωρίς να είναι απαραίτητη η μετάβαση στη σελίδα της
διαχείρισης ομάδας αρχείων ελέγχου. Οι δύο προαναφερθείσες σελίδες εμφανίζονται
διαχείρισης ομάδας αρχείων ελέγχου. Οι δύο προαναφερθείσες σελίδες εμφανίζονται
στ
ις εικόνες
4.4 και 4.5.
στ
α σχήματα
4.4 και 4.5.
\bigskip
\bigskip
...
@@ -1157,7 +1157,7 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
...
@@ -1157,7 +1157,7 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
μερικό refactoring των κλάσεων και των συναρτήσεων, χρησιμοποιώντας πολλές από
μερικό refactoring των κλάσεων και των συναρτήσεων, χρησιμοποιώντας πολλές από
τις αρχές που περιγράφονται στο Clean Code του Robert Martin
τις αρχές που περιγράφονται στο Clean Code του Robert Martin
\cite
{
martin2009clean
}
. Μέρος των αλλαγών ήταν και η προσθήκη ενός πεδίου στον
\cite
{
martin2009clean
}
. Μέρος των αλλαγών ήταν και η προσθήκη ενός πεδίου στον
πίνακα των υποβολών, με τίτλο resultsjson (
εικόν
α 4.3), το οποίο περιέχει τα
πίνακα των υποβολών, με τίτλο resultsjson (
σχήμ
α 4.3), το οποίο περιέχει τα
αναλυτικά αποτελέσματα μιας υποβολής, κωδικοποιημένα σε μορφή JSON, έτσι ώστε
αναλυτικά αποτελέσματα μιας υποβολής, κωδικοποιημένα σε μορφή JSON, έτσι ώστε
να μην υπολογίζονται κάθε φορά που απαιτούνται. Επιπλέον, αλλαγές έγιναν ώστε
να μην υπολογίζονται κάθε φορά που απαιτούνται. Επιπλέον, αλλαγές έγιναν ώστε
να αφαιρεθούν κομμάτια επαναλαμβανόμενου κώδικα με την αντίστοιχη δημιουργία
να αφαιρεθούν κομμάτια επαναλαμβανόμενου κώδικα με την αντίστοιχη δημιουργία
...
@@ -1165,8 +1165,6 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
...
@@ -1165,8 +1165,6 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
μείωση της πολυπλοκότητας μεγάλων κομματιών κώδικα με δημιουργία μικρότερων
μείωση της πολυπλοκότητας μεγάλων κομματιών κώδικα με δημιουργία μικρότερων
συναρτήσεων με περιγραφικά ονόματα.
συναρτήσεων με περιγραφικά ονόματα.
\bigskip
\chapter
{
Σχεδίαση για διαχωρισμό Προβλημάτων - Διαγωνισμών
}
\chapter
{
Σχεδίαση για διαχωρισμό Προβλημάτων - Διαγωνισμών
}
...
@@ -1175,31 +1173,28 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
...
@@ -1175,31 +1173,28 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
στο πλαίσιο μαθημάτων προγραμματισμού και σειρών ασκήσεων. Αυτό απαιτεί την
στο πλαίσιο μαθημάτων προγραμματισμού και σειρών ασκήσεων. Αυτό απαιτεί την
μερική αποσύνδεση των προβλημάτων από τους διαγωνισμούς ώστε αυτά να μπορούν
μερική αποσύνδεση των προβλημάτων από τους διαγωνισμούς ώστε αυτά να μπορούν
να επαναχρησιμοποιηθούν. Θα αναλύσουμε πρώτα το κίνητρο για την αλλαγή αυτή
να επαναχρησιμοποιηθούν. Θα αναλύσουμε πρώτα το κίνητρο για την αλλαγή αυτή
και έπειτα
οι
λεπτομέρειες της υλοποίησης.
και έπειτα
τις
λεπτομέρειες της υλοποίησης.
\section
{
Κίνητρο
}
\section
{
Κίνητρο
}
Ο πρωταρχικός στόχος που δημιουργήθηκε ο Grader ήταν η χρήση του για διαγωνισμούς
Ο πρωταρχικός στόχος που δημιουργήθηκε ο Grader ήταν η χρήση του για διαγωνισμούς
πληροφορικής. Κάθε διαγωνισμός θα αποτελούσε ξεχωριστό, one-time γεγονός με
πληροφορικής. Κάθε διαγωνισμός θα αποτελούσε ξεχωριστό, μεμονωμένο γεγονός με
προβλήματα που θα είχαν δημιουργηθεί για αυτόν, διαγωνιζόμενους "μιας χρήσης"
προβλήματα που θα είχαν δημιουργηθεί για το συγκεκριμένο διαγωνισμό και υποβολές
και υποβολές άρρηκτα συνδεδεμένες τόσο στον διαγωνισμό όσο και στο εκάστοτε
που αντιστοιχούν αποκλειστικά στο πρόβλημα.
πρόβλημα.
\bigskip
\bigskip
Τα προβλήματα, έπειτα από τη δημιουργία τους, παραμένουν ανένταχτα, στην κατηγορία
Τα προβλήματα, έπειτα από τη δημιουργία τους, παραμένουν ανένταχτα, στην
"Προβλήματα εκτός διαγωνισμών" της σελίδας διαχείρισης
κατηγορία "Προβλήματα εκτός διαγωνισμών" της σελίδας διαχείρισης όπως φαίνεται
όπως φαίνεται και στο σχήμα 5.1. Το επόμενο βήμα είναι η μετακίνηση τους
και στο σχήμα 5.1. Το επόμενο βήμα είναι η μετακίνηση τους σε κάποιον
σε κάποιον διαγωνισμό με χρήση του μενού στα δεξιά του προβλήματος. Η μετακίνηση
διαγωνισμό με χρήση του μενού στα δεξιά του προβλήματος. Η μετακίνηση αυτού του
αυτού του τύπου είναι ο μόνος τρόπος να επαναχρησιμοποιηθεί το πρόβλημα και σε
τύπου είναι ο μόνος τρόπος να επαναχρησιμοποιηθεί το πρόβλημα και σε άλλους
άλλους διαγωνισμούς, αφότου τελειώσει αυτός για τον οποίο δημιουργήθηκε
διαγωνισμούς, αφότου τελειώσει αυτός για τον οποίο δημιουργήθηκε (ουσιαστικά, ο
(ουσιαστικά, ο πρώτος στον οποίο μετακινήθηκε). Το θέμα που δημιουργείται, σε αυτό
πρώτος στον οποίο μετακινήθηκε). Το θέμα που δημιουργείται σε αυτό το σημείο
το σημείο, είναι ότι κατά τη μετακίνηση του, το πρόβλημα διατηρεί όλες τις
είναι ότι κατά τη μετακίνηση του, το πρόβλημα διατηρεί όλες τις προηγούμενες
προηγούμενες υποβολές του, οι οποίες πρακτικά αγνοούνται στο νέο διαγωνισμό, ενώ
υποβολές του, οι οποίες πρακτικά αγνοούνται στο νέο διαγωνισμό, ενώ ο
ο προηγούμενος διαγωνισμός χάνει το πρόβλημα που είχε. Όλα τα παραπάνω οφείλονται
προηγούμενος διαγωνισμός χάνει το πρόβλημα που είχε. Όλα τα παραπάνω οφείλονται
στον τρόπο που είναι σχεδιασμένη η βάση, ο οποίος παρουσιάζεται παρακάτω.
στον τρόπο που είναι σχεδιασμένη η βάση, ο οποίος παρουσιάζεται στο σχήμα 5.2.
\bigskip
\begin{figure}
\begin{figure}
\centering
\centering
...
@@ -1232,10 +1227,15 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
...
@@ -1232,10 +1227,15 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
\bigskip
\bigskip
Τέλος, είναι αξιοσημείωτος ο τρόπος που στον πίνακα finalresults, στον
Τέλος, είναι αξιοσημείωτος ο τρόπος που στον πίνακα finalresults, στον οποίο
οποίο καταχωρούνται τα αποτελέσματα μετά την τελική αξιολόγηση, αποθηκεύονται
καταχωρούνται τα αποτελέσματα μετά την τελική αξιολόγηση, αποθηκεύονται τα
τα επιμέρους σκορ των προβλημάτων του· χωρισμένα απλά με κόμμα, σύμφωνα με μια
επιμέρους σκορ των προβλημάτων του. Αυτό γίνεται στο πεδίο scoreDetails, όπου
αύξουσα ταξινόμηση των id των προβλημάτων που περιείχε κατά την τελική αξιολόγηση.
εισάγονται οι βαθμολογίες των προβλημάτων του διαγωνισμού χωρισμένες απλά με
κόμμα, σύμφωνα με μια αύξουσα ταξινόμηση των id των προβλημάτων που περιείχε ο
διαγωνισμός κατά την τελική αξιολόγηση.
\bigskip
Παραδείγματος χάρη, αν ο διαγωνισμός 15 περιέχει τα προβλήματα 48 και 51 και ένας
Παραδείγματος χάρη, αν ο διαγωνισμός 15 περιέχει τα προβλήματα 48 και 51 και ένας
διαγωνιζόμενος έχει λάβει 7 βαθμούς στο πρώτο και 9 στο δεύτερο, το πεδίο score θα
διαγωνιζόμενος έχει λάβει 7 βαθμούς στο πρώτο και 9 στο δεύτερο, το πεδίο score θα
έχει την τιμή 16 και το πεδίο scoreDetails θα έχει την τιμή 7,9. Όπως γίνεται
έχει την τιμή 16 και το πεδίο scoreDetails θα έχει την τιμή 7,9. Όπως γίνεται
...
@@ -1248,23 +1248,23 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
...
@@ -1248,23 +1248,23 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
\section
{
Υλοποίηση
}
\section
{
Υλοποίηση
}
Η κύρια λειτουργική αλλαγή/δυνατότητα που θα προστεθεί είναι αυτή της προσθήκης
Η κύρια λειτουργική αλλαγή/δυνατότητα που θα προστεθεί είναι αυτή της προσθήκης
των προβλημάτων σε νέους διαγωνισμούς χωρίς να επηρεάζονται οι προηγούμενοι
.
των προβλημάτων σε νέους διαγωνισμούς χωρίς να επηρεάζονται οι προηγούμενοι
, με
Το κύριο μέρος της υλοποίησης για τη συγκεκριμένη δυνατότητα/βελτίωση αποτελεί
αντιγραφή δηλαδή των προβλημάτων. Το κυριότερο μέρος της υλοποίησης έχει να κάνει
η αλλαγή στους πίνακες της βάσης και στις σχέσεις
μεταξύ τους.
με την αλλαγή των πινάκων της βάσης και των σχέσεων
μεταξύ τους.
\bigskip
\bigskip
Αρχικά, θα πρέπει να δημιουργηθεί ένας πίνακας που να συνδέει κάθε διαγωνισμό
Αρχικά, θα πρέπει να δημιουργηθεί ένας πίνακας που να συνδέει κάθε διαγωνισμό
με τα προβλήματα που διαθέτει. Το πεδίο στον πίνακα των προβλημάτων που έως
με τα προβλήματα που διαθέτει. Το πεδίο στον πίνακα των προβλημάτων που έως
τώρα χρησίμευε για αυτή τη σύνδεση
, δεν αρκεί αφού πλέον θέλουμε
να υπάρχει
τώρα χρησίμευε για αυτή τη σύνδεση
δεν αρκεί αφού θέλουμε πλέον
να υπάρχει
σχέση
πολλά προς ένα για προβλήματα και διαγωνισμούς. Ο νέος πίνακας χρειάζεται
σχέση
"πολλά προς ένα¨ για προβλήματα και διαγωνισμούς. Ο νέος πίνακας
απλά να περιέχει τα πεδία competitionID και probID.
χρειάζεται
απλά να περιέχει τα πεδία competitionID και probID.
\bigskip
\bigskip
Όπως αναφέρθηκε και παραπάνω, οι υποβολές θα πρέπει να συνδέονται με το
Όπως αναφέρθηκε και παραπάνω, οι υποβολές θα πρέπει να συνδέονται με το
διαγωνισμό και όχι με το πρόβλημα. Αυτό θα επιτευχθεί με την προσθήκη του
διαγωνισμό και όχι με το πρόβλημα. Αυτό θα επιτευχθεί με την προσθήκη του
πεδίου competitionID στον πίνακα των υποβολών. Με αυτό τον τρόπο
,
είναι εύκολο να
πεδίου competitionID στον πίνακα των υποβολών. Με αυτό τον τρόπο είναι εύκολο να
γίνει ο διαχωρισμός των υποβολών ανά διαγωνισμό και πρόβλημα ώστε κάθε πρόβλημα
γίνει ο διαχωρισμός των υποβολών ανά διαγωνισμό και πρόβλημα ώστε κάθε πρόβλημα
να μπορεί να έχει ξεχωριστά δεδομένα υποβολών και αποτελεσμάτων σε κάθε
να μπορεί να έχει ξεχωριστά δεδομένα υποβολών και αποτελεσμάτων σε κάθε
διαγωνισμό που ανήκει.
διαγωνισμό που ανήκει.
...
@@ -1293,7 +1293,7 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
...
@@ -1293,7 +1293,7 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
σχήμα 5.3. Ο πίνακας CompProblems είναι η νέα προσθήκη που είναι αναγκαία για
σχήμα 5.3. Ο πίνακας CompProblems είναι η νέα προσθήκη που είναι αναγκαία για
τη σύνδεση προβλημάτων με διαγωνισμός διατηρώντας μια κανονικοποιημένη βάση για
τη σύνδεση προβλημάτων με διαγωνισμός διατηρώντας μια κανονικοποιημένη βάση για
αποφυγή του πλεονασμού δεδομένων. Νέα πεδία προστέθηκαν επίσης και στους
αποφυγή του πλεονασμού δεδομένων. Νέα πεδία προστέθηκαν επίσης και στους
πίνακες
submissions και finalr
esults.
πίνακες
Submissions και FinalR
esults.
\bigskip
\bigskip
...
@@ -1308,18 +1308,17 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
...
@@ -1308,18 +1308,17 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
FinalResults.
}
FinalResults.
}
\end{figure}
\end{figure}
\bigskip
(TODO: ισως subsection) Έχοντας αλλάξει τη βάση, αυτό που μένει είναι η
Έχοντας αλλάξει τη βάση, το επόμενο βήμα ήταν η υλοποίηση των αλλαγών στον
υλοποίηση των αλλαγών στο Grader ώστε να δίνεται η δυνατότητα της αντιγραφής
Grader ώστε να δίνεται η δυνατότητα της αντιγραφής των προβλημάτων και να
των προβλημάτων και να αξιοποιούνται τα νέα πεδία και πίνακες. Η πλειοψηφία των
αξιοποιούνται τα νέα πεδία και πίνακες. Η πλειοψηφία των αλλαγών αφορούν τη
αλλαγών αφορούν τη σελίδα διαχείρισης, καθώς εκεί πρέπει να αλλάξει ο τρόπος
σελίδα διαχείρισης, καθώς εκεί πρέπει να αλλάξει ο τρόπος που αντιστοιχίζονται
που αντιστοιχίζονται τα προβλήματα με τους διαγωνισμούς, όπως και οι υποβολές
τα προβλήματα με τους διαγωνισμούς, όπως και οι υποβολές αυτών. Ακόμα, η
αυτών. Ακόμα, η λειτουργία του πλήκτρου μετακίνησης αλλάζει σε αντιγραφή, πάλι
λειτουργία του πλήκτρου μετακίνησης αλλάζει σε αντιγραφή, πάλι επιλέγοντας
επιλέγοντας διαγωνισμό. Τέλος, στο κάτω μέρος της σελίδας, όπου αναγράφονταν
τα
διαγωνισμό. Τέλος, στο κάτω μέρος της σελίδας, όπου αναγράφονταν τα ανένταχ
τα
ανένταχτα προβλήματα, κρίθηκε προτιμότερο να αναγράφονται όλα τα προβλήματα
προβλήματα, κρίθηκε προτιμότερο να αναγράφονται όλα τα προβλήματα ώστε να είναι
ώστε να είναι ευκολότερο να αναζητηθεί και να αντιγραφεί κάποιο σε ένα νέο
ευκολότερο να αναζητηθεί και να αντιγραφεί κάποιο σε ένα νέο διαγωνισμό. Η νέα
δια
γωνισμό. Η νέα διαχείριση παρουσιάζεται στις φωτογραφίες
5.4 και 5.5.
δια
χείριση παρουσιάζεται στα σχήματα
5.4 και 5.5.
\bigskip
\bigskip
...
@@ -1330,7 +1329,7 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
...
@@ -1330,7 +1329,7 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
δεν έχει κάποια διαφορά εμφανισιακά, αλλά πλέον επιτρέπεται η χρήση ενός
δεν έχει κάποια διαφορά εμφανισιακά, αλλά πλέον επιτρέπεται η χρήση ενός
προβλήματος σε πολλαπλούς διαγωνισμούς, όπως φαίνεται στο πρόβλημα sudokugame.
προβλήματος σε πολλαπλούς διαγωνισμούς, όπως φαίνεται στο πρόβλημα sudokugame.
Το πρώην πλήκτρο μεταφοράς στα δεξιά κάθε προβλήματος πλέον αντιγράφει το πρόβλημα
Το πρώην πλήκτρο μεταφοράς στα δεξιά κάθε προβλήματος πλέον αντιγράφει το πρόβλημα
στον επιλεγμένο διαγωνισμό.
}
στον επιλεγμένο διαγωνισμό
, ενώ το X το αφαιρεί χωρίς να το διαγράφει
.
}
\end{figure}
\end{figure}
\begin{figure}
\begin{figure}
...
@@ -1347,30 +1346,31 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
...
@@ -1347,30 +1346,31 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
διαγωνισμό, απλά αλλάζει τους συσχετισμούς στη βάση, προσθέτοντας μια νέα
διαγωνισμό, απλά αλλάζει τους συσχετισμούς στη βάση, προσθέτοντας μια νέα
εγγραφή στον CompProblems. Τόσο τα αρχεία ελέγχου, που είναι αποθηκευμένα στο
εγγραφή στον CompProblems. Τόσο τα αρχεία ελέγχου, που είναι αποθηκευμένα στο
δίσκο του εξυπηρετητή για να διαβάζονται από τον Kewii, όσο και οι ομάδες
δίσκο του εξυπηρετητή για να διαβάζονται από τον Kewii, όσο και οι ομάδες
αρχείων ελέγχου, που αντιστοιχίζονται στη βάση με τα προβλήματα, δεν
αρχείων ελέγχου που αντιστοιχίζονται στη βάση με τα προβλήματα, δεν
αντιγράφονται και, ως αποτέλεσμα χαρακτηρίζουν το πρόβλημα σε όλους τους
αντιγράφονται και ως αποτέλεσμα αντιστοιχούν στο πρόβλημα σε όλους τους
διαγωνισμούς που αυτό ανήκει. Η σχεδιαστική επιλογή έγινε κυρίως γιατί το
διαγωνισμούς που αυτό ανήκει. Η συγκεκριμένη σχεδιαστική επιλογή στηρίχθηκε στο
πρόβλημα δεν αναμένεται να αλλάζει σημαντικά κατά την επαναχρησιμοποίηση του.
σκεπτικό ότι το πρόβλημα δεν αναμένεται να αλλάζει σημαντικά κατά την
Το ενδεχόμενο να χρειαστεί κάποια αλλαγή σε πρόβλημα που ανήκει ήδη σε
επαναχρησιμοποίηση του. Το ενδεχόμενο να χρειαστεί κάποια αλλαγή σε πρόβλημα
παλαιότερους ή παράλληλους διαγωνισμούς δε μπορεί να αποκλειστεί, και για το
που ανήκει ήδη σε παλαιότερους ή παράλληλους διαγωνισμούς δε μπορεί να
λόγο αυτό προστέθηκε ένα προειδοποιητικό μήνυμα προς όποιο διαχειριστή
αποκλειστεί, και για το λόγο αυτό προστέθηκε ένα προειδοποιητικό μήνυμα στη
επιχειρήσει τέτοιες αλλαγές.
σελίδα διαχείρισης αρχείων ελέγχου, προς όποιο διαχειριστή επιχειρήσει τέτοιες
αλλαγές.
\chapter
{
Λοιπές Προσθήκες
}
\chapter
{
Λοιπές Προσθήκες
}
Εκτός από τις νέες δυνατότητες που αναλύθηκαν στα προηγούμενα κεφάλαια,
Εκτός από τις νέες δυνατότητες που αναλύθηκαν στα προηγούμενα κεφάλαια,
υλοποιήθηκαν και αλλαγές μικρότερης πολυπλοκότητας, που δε χρειάζονται
υλοποιήθηκαν και αλλαγές μικρότερης πολυπλοκότητας, που δε χρειάζονται
ολόκληρο κεφάλαιο για να περιγραφούν
. Οι σημαντικότερες από αυτές
ολόκληρο κεφάλαιο για να περιγραφούν
ξεχωριστά. Στο συγκεκριμένο κεφάλαιο θα
θα αναφερθούν σε αυτό το κεφάλαιο
.
αναφερθούν οι σημαντικότερες από αυτές
.
\section
{
Προσθήκη γλώσσας προγραμματισμού Python
}
\section
{
Προσθήκη γλώσσας προγραμματισμού Python
}
\subsection
{
Προσθήκη γλωσσών στο Grader/Kewii
}
\subsection
{
Προσθήκη γλωσσών στο Grader/Kewii
}
Ο Grader, όπως έχει αναφερθεί και σε προηγούμενα κεφάλαια, επιτρέπει
Ο Grader, όπως έχει αναφερθεί και σε προηγούμενα κεφάλαια, επιτρέπει στους
στους διαγωνιζόμενους την υποβολή λύσεων σε οποιαδήποτε γλώσσα
διαγωνιζόμενους την υποβολή λύσεων σε οποιαδήποτε γλώσσα προγραμματισμού
προγραμματισμού από τις υποστηριζόμενες. Οι υποστηριζόμενες γλώσσες
υποστηρίζεται. Οι υποστηριζόμενες γλώσσες προγραμματισμού είναι οι παρακάτω:
προγραμματισμού είναι οι παρακάτω:
\begin{itemize}
\begin{itemize}
\setlength\itemsep
{
0em
}
\setlength\itemsep
{
0em
}
...
@@ -1387,13 +1387,14 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
...
@@ -1387,13 +1387,14 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
\bigskip
\bigskip
Η προσθήκη μιας νέας γλώσσας στο Grader δεν είναι δύσκολη διαδικασία.
Η προσθήκη μιας νέας γλώσσας στο Grader δεν αποτελεί δύσκολη διαδικασία. Όσον
Όσον αφορά στο frontend, αρκεί απλά η προσθήκη στο μενού επιλογής γλώσσας
αφορά στο frontend, αρκεί απλά η προσθήκη στο μενού επιλογής γλώσσας στην
στην υποβολή και η αντίστοιχη κωδικοποίηση (που γίνεται συνήθως με την επέκταση
υποβολή και η αντίστοιχη κωδικοποίηση που θα χρησιμοποιηθεί για την καταχώρηση
των πηγαίων αρχείων της γλώσσας) που θα χρησιμοποιηθεί για την καταχώρηση της
της υποβολής σε βάση και Kewii (γίνεται συνήθως με χρήση της επέκταση των
υποβολής σε βάση και Kewii. Όπως ο Kewii δεν εμπλέκεται στη διαδικασία της
πηγαίων αρχείων της γλώσσας, π.χ. cpp για C++). Όπως ο Kewii δεν εμπλέκεται
αξιολόγησης, ο Grader, αντίστοιχα, έχει καθήκον απλά να περάσει την επιλογή
στη διαδικασία της αξιολόγησης, ο Grader, αντίστοιχα, έχει καθήκον απλά να
της γλώσσας και τον πηγαίο κώδικα ώστε να αναλάβει ο Kewii τον έλεγχο.
περάσει την επιλογή της γλώσσας και τον πηγαίο κώδικα ώστε να αναλάβει ο Kewii
τον έλεγχο.
\bigskip
\bigskip
...
@@ -1403,42 +1404,42 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
...
@@ -1403,42 +1404,42 @@ testcase groups και τα χαρακτηριστικά τους (όνομα,
γίνεται σε ένα περιορισμένο περιβάλλον, με τη χρήση μόνο των αναγκαίων
γίνεται σε ένα περιορισμένο περιβάλλον, με τη χρήση μόνο των αναγκαίων
μεταγλωττιστών και βιβλιοθηκών. Για την προσθήκη μιας γλώσσας θα πρέπει να
μεταγλωττιστών και βιβλιοθηκών. Για την προσθήκη μιας γλώσσας θα πρέπει να
εγκατασταθούν στο συγκεκριμένο περιβάλλον τα αντίστοιχα εκτελέσιμα και να
εγκατασταθούν στο συγκεκριμένο περιβάλλον τα αντίστοιχα εκτελέσιμα και να
τροποποιηθεί
ένα αρχείο διαμόρφωσης που περιέχει τις αντιστοιχίσεις γλωσσ
ών
τροποποιηθεί
το αρχείο που περιέχει τις αντιστοιχίσεις γλωσσών και εντολ
ών
και εντολών
μεταγλώττισης/εκτέλεσης.
μεταγλώττισης/εκτέλεσης.
\subsection
{
Επιλογή Python
}
\subsection
{
Επιλογή Python
}
% TODO: ερωτηση παπασπυρου για φακτορ παηθον
Η Python είναι μια interpreted προγραμματιστική γλώσσα υψηλού επιπέδου
Η Python είναι μια interpreted προγραμματιστική γλώσσα υψηλού επιπέδου
γενικού
γενικού σκοπού. Διαθέτει πολύ πλούσια βιβλιοθήκη για μια ευρεία γκάμα
σκοπού. Διαθέτει πολύ πλούσια βιβλιοθήκη για μια ευρεία γκάμα λειτουργιών και
λειτουργιών και επιστημονικών πεδίων. Έχει σχεδιαστεί με έμφαση στην
επιστημονικών πεδίων. Έχει σχεδιαστεί με έμφαση στην αναγνωσιμότητα και στη
αναγνωσιμότητα και στη χρησιμοποίηση λιγότερου κώδικα, ενώ ευνοεί πολλαπλά
χρησιμοποίηση λιγότερου κώδικα, ενώ ευνοεί πολλαπλά προγραμματιστικά στυλ όπως
προγραμματιστικά στυλ όπως είναι ο δομημένος, ο αντικειμενοστρεφής και ο συναρτησιακό
προγραμματισμός.
είναι ο δομημένος, ο αντικειμενοστρεφής και ο συναρτησιακός
προγραμματισμός.
\bigskip
\bigskip
Δεδομένης της δημοτικότητας της Python και της ευκολίας χρήσης της, είναι μια
Δεδομένης της δημοτικότητας της Python και της ευκολίας χρήσης της, είναι μια
απαραίτητη προσθήκη στο Grader που πιθανότατα θα εκτιμηθεί από διαγωνιζόμενους
απαραίτητη προσθήκη στο Grader που πιθανότατα θα εκτιμηθεί από διαγωνιζόμενους
μαθητές και φοιτητές. Η Python δε λείπει από κανένα από τα συστήματα
μαθητές και φοιτητές, για τους οποίους είναι αρκετά πιθανό να αποτέλεσε πρώτη
αξιολόγησης που μελετήθηκαν, ενώ πλέον αποτελεί τη δημοφιλέστερη επιλογή στα
γλώσσα εισαγωγής στον προγραμματισμό. Η Python δε λείπει από κανένα από τα
κορυφαία αμερικάνικα πανεπιστήμια όσον αφορά στα εισαγωγικά μαθήματα των
συστήματα αξιολόγησης που μελετήθηκαν, ενώ πλέον αποτελεί τη δημοφιλέστερη
τμημάτων επιστήμης των υπολογιστών
\cite
{
website:popularpython
}
. Είναι μια από
επιλογή στα κορυφαία αμερικάνικα πανεπιστήμια όσον αφορά στα εισαγωγικά
τις πιο αναπτυσσόμενες προγραμματιστικές γλώσσες σύμφωνα με στοιχεία του Stack
μαθήματα των τμημάτων επιστήμης των υπολογιστών (
\cite
{
popularpython
}
).
Overflow
\cite
{
website:pythongrowth
}
χάρη, κυρίως, στην καθιέρωση της σε πολλά
Είναι μια από τις πιο αναπτυσσόμενες προγραμματιστικές γλώσσες σύμφωνα με
προγράμματα προπτυχιακών σπουδών και στην ανάπτυξη των τομέων της ανάλυσης
στοιχεία του Stack Overflow (
\cite
{
pythongrowth
}
) χάρη κυρίως στην
δεδομένων και μηχανικής μάθησης, στους οποίους κυριαρχεί ως εργαλείο
καθιέρωση της σε πολλά προγράμματα προπτυχιακών σπουδών και στην ανάπτυξη των
\cite
{
website:whypython
}
.
τομέων της ανάλυσης δεδομένων και μηχανικής μάθησης, στους οποίους κυριαρχεί ως
εργαλείο (
\cite
{
whypython
}
).
\bigskip
\bigskip
Η διαφορά της Python με τις γλώσσες που υποστηρίζει ο Kewii είναι ότι αυτή
Η διαφορά της Python με τις γλώσσες που υποστηρίζει ο Kewii είναι ότι αυτή
αποτελεί μια interpreted γλώσσα και ως αποτέλεσμα δεν έχει ιδιαίτερο νόημα η
αποτελεί μια interpreted γλώσσα και ως αποτέλεσμα δεν έχει ιδιαίτερο νόημα η
μεταγλώττιση της σε ένα εκτελέσιμο. Σε κάθε υποβολή
με χρήση της, θα γίνεται
μεταγλώττιση της σε ένα εκτελέσιμο. Σε κάθε υποβολή
που χρησιμοποιείται, θα
απευθείας εκτέλεση με είσοδο τα αρχεία ελέγχου και θα εμφανίζονται μόνο τα
γίνεται απευθείας εκτέλεση με είσοδο τα αρχεία ελέγχου και θα εμφανίζονται μόνο
σφάλματα κατά τον χρόνο εκτέλεσης στον διαγωνιζόμενο, αντίθετα με τις υπόλοιπε
ς
τα σφάλματα κατά τον χρόνο εκτέλεσης στον διαγωνιζόμενο, αντίθετα με τι
ς
γλώσσες που υπάρχουν και σφάλματα μεταγλώττισης. Στο μέλλον θα μπορούσε ν
α
υπόλοιπες γλώσσες όπου υπάρχουν και σφάλματα μεταγλώττισης. Στο μέλλον θ
α
διερευνηθεί η δυνατότητα ενός εργαλείου ανάλυσης του πηγαίου κώδικα για τη
μπορούσε να διερευνηθεί η δυνατότητα ενός εργαλείου ανάλυσης του πηγαίου κώδικα
διευκόλυνση των διαγωνιζόμενων με καλύτερα μηνύματα σφαλμάτων.
για τη
διευκόλυνση των διαγωνιζόμενων με καλύτερα μηνύματα σφαλμάτων.
\bigskip
\bigskip
...
@@ -1453,23 +1454,23 @@ Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέ
...
@@ -1453,23 +1454,23 @@ Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέ
Κατά τη διαδικασία δημιουργίας ενός προβλήματος, είναι απαραίτητο να προστεθεί
Κατά τη διαδικασία δημιουργίας ενός προβλήματος, είναι απαραίτητο να προστεθεί
ένας συχνά μεγάλος αριθμός αρχείων ελέγχου. Ο μόνος τρόπος να γίνει αυτό είναι
ένας συχνά μεγάλος αριθμός αρχείων ελέγχου. Ο μόνος τρόπος να γίνει αυτό είναι
μέσω της σελίδας διαχείρισης των αρχείων ελέγχου, όπως φαίνεται στ
η
μέσω της σελίδας διαχείρισης των αρχείων ελέγχου, όπως φαίνεται στ
ο σχήμα 4.1,
φωτογραφία 4.1, και κάθε νέο αρχείο ανεβαίνει ξεχωριστά, δηλαδή δεν υπάρχει
και κάθε νέο αρχείο ανεβαίνει ξεχωριστά, δηλαδή δεν υπάρχει κάποια μαζική
κάποια μαζική
διαδικασία.
διαδικασία.
\bigskip
\bigskip
Για να αποφευχθεί η επαναληπτική και χρονοβόρα διαδικασία, οι έως τώρα διαχειριστές
Για να αποφευχθεί η επαναληπτική και χρονοβόρα διαδικασία, οι έως τώρα διαχειριστές
έγραφαν απλά PHP scripts για την ενημέρωση της βάσης με τα νέα αρχεία ελέγχου,
έγραφαν απλά PHP scripts για την ενημέρωση της βάσης με τα νέα αρχεία ελέγχου,
και αντέγραφαν
τα τελευταία, χειροκίνητα,
στους αντίστοιχους φακέλους του Kewii.
και αντέγραφαν
χειροκίνητα τα αρχεία
στους αντίστοιχους φακέλους του Kewii.
Μετά την προσθήκη των
ομάδων αρχείων ελέγχου
, στη διαδικασία αυτή προστέθηκε και
Μετά την προσθήκη των
testcase groups
, στη διαδικασία αυτή προστέθηκε και
η δημιουργία και παραμετροποίηση των
ομάδων
με τα επιθυμητά αρχεία και tags.
η δημιουργία και παραμετροποίηση των
groups
με τα επιθυμητά αρχεία και tags.
\bigskip
\bigskip
Για τους παραπάνω λόγους κρίθηκε αναγκαία η προσθήκη ενός αυτοματοποιημένου
Για τους παραπάνω λόγους κρίθηκε αναγκαία η προσθήκη ενός αυτοματοποιημένου
τρόπου μαζικής προσθήκης αρχείων για τα προβλήματα, στο οποίο να υπάρχει και η
τρόπου μαζικής προσθήκης αρχείων για τα προβλήματα, στο οποίο να υπάρχει και η
δυνατότητα ορισμού των κατάλληλων
ομάδων αρχείων ελέγχου
. Το εργαλείο που θα
δυνατότητα ορισμού των κατάλληλων
testcase groups
. Το εργαλείο που θα
υλοποιηθεί θα οφείλει τόσο να ενημερώνει τη βάση, όσο και να φορτώνει τα αρχεία
υλοποιηθεί θα οφείλει τόσο να ενημερώνει τη βάση, όσο και να φορτώνει τα αρχεία
στον εξυπηρετητή του Kewii. Για την επεξεργασία των ομάδων, θα πρέπει να
στον εξυπηρετητή του Kewii. Για την επεξεργασία των ομάδων, θα πρέπει να
χρησιμοποιηθεί ένα περιγραφικό αρχείο, ιδανικά σε ένα ανθρωπίνως αναγνώσιμο
χρησιμοποιηθεί ένα περιγραφικό αρχείο, ιδανικά σε ένα ανθρωπίνως αναγνώσιμο
...
@@ -1479,7 +1480,7 @@ Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέ
...
@@ -1479,7 +1480,7 @@ Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέ
Το εργαλείο που περιγράφηκε θα προστεθεί στη σελίδα διαχείρισης των αρχείων
Το εργαλείο που περιγράφηκε θα προστεθεί στη σελίδα διαχείρισης των αρχείων
ελέγχου κάτω από το ήδη υπάρχον ανέβασμα μεμονωμένου αρχείου. Μετά την προσθήκη
ελέγχου κάτω από το ήδη υπάρχον ανέβασμα μεμονωμένου αρχείου. Μετά την προσθήκη
η σελίδα θα έχει τη μορφή τ
ης εικόνα
ς 6.1. Ο διαχειριστής θα ανεβάζει ένα
η σελίδα θα έχει τη μορφή τ
ου σχήματο
ς 6.1. Ο διαχειριστής θα ανεβάζει ένα
συμπιεσμένο αρχείο (zip) με τα αρχεία εισόδου και εξόδου που θέλει να προσθέσει
συμπιεσμένο αρχείο (zip) με τα αρχεία εισόδου και εξόδου που θέλει να προσθέσει
στο πρόγραμμα. Στο αρχείο θα πρέπει, επιπλέον, να υπάρχει και ένα αρχείο με
στο πρόγραμμα. Στο αρχείο θα πρέπει, επιπλέον, να υπάρχει και ένα αρχείο με
όνομα descriptor.json το οποίο θα αναλαμβάνει να περιγράψει στο εργαλείο τις
όνομα descriptor.json το οποίο θα αναλαμβάνει να περιγράψει στο εργαλείο τις
...
@@ -1488,7 +1489,7 @@ Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέ
...
@@ -1488,7 +1489,7 @@ Overflow \cite{website:pythongrowth} χάρη, κυρίως, στην καθιέ
\bigskip
\bigskip
Η μορφή JSON επιλέχθηκε για τους λόγους που αναφέρθηκαν παραπάνω, δηλαδή για τα
Η μορφή JSON επιλέχθηκε για τους λόγους που αναφέρθηκαν παραπάνω, δηλαδή για τα
χαρακτηριστικά της
,
ως αναγνώσιμη και με δυνατότητα εύκολης εισαγωγής αντικειμένων
χαρακτηριστικά της ως αναγνώσιμη και με δυνατότητα εύκολης εισαγωγής αντικειμένων
και λιστών. Στο συγκεκριμένο αρχείο θέλαμε να περιγράφονται τα παρακάτω:
και λιστών. Στο συγκεκριμένο αρχείο θέλαμε να περιγράφονται τα παρακάτω:
\begin{itemize}
\begin{itemize}
...
@@ -1522,15 +1523,15 @@ descriptor.json σαν λίστες αντικειμένων. Κάθε αντι
...
@@ -1522,15 +1523,15 @@ descriptor.json σαν λίστες αντικειμένων. Κάθε αντι
μια νέα ομάδα, έχει πεδία για το όνομα της, τους πόντους που αξίζει και τα
μια νέα ομάδα, έχει πεδία για το όνομα της, τους πόντους που αξίζει και τα
αρχεία ελέγχου που θα περιέχει. Το τελευταίο πεδίο αποτελεί λίστα και περιέχει
αρχεία ελέγχου που θα περιέχει. Το τελευταίο πεδίο αποτελεί λίστα και περιέχει
αντικείμενα με δύο πεδία: αριθμός αρχείου ελέγχου και τύπος εκτέλεσης. Ο τύπος
αντικείμενα με δύο πεδία: αριθμός αρχείου ελέγχου και τύπος εκτέλεσης. Ο τύπος
εκτέλεσης θα δίνεται με το όνομα του χρώματος δηλαδή θα μπορεί να έχει τις
εκτέλεσης θα δίνεται με το όνομα του χρώματος
,
δηλαδή θα μπορεί να έχει τις
τιμές orange, yellow, blue, green, purple. Ακολουθεί ένα πρότυπο
τιμές orange, yellow, blue, green, purple. Ακολουθεί ένα πρότυπο
descriptor.json στο οποίο έχουν συμπληρωθεί όλα τα διαθέσιμα πεδία.
descriptor.json στο οποίο έχουν συμπληρωθεί όλα τα διαθέσιμα πεδία.
\FloatBarrier
\FloatBarrier
\lstinputlisting
[frame=single,captionpos=b,caption=Παράδειγμα descriptor.json.
\lstinputlisting
[frame=single,captionpos=b,caption=Παράδειγμα descriptor.json.
Το συγκεκριμένο αρχείο περιγράφει 4 αρχεία ελέγχου σε 3 ομάδες αρχείων. Ακόμα
Το συγκεκριμένο αρχείο περιγράφει 4 αρχεία ελέγχου σε 3 ομάδες αρχείων. Ακόμα
\,
δίν
ει τη μορφή ονομασίας των αρχείων εισόδου και
ορίζ
ει τη μορφή ονομασίας των αρχείων εισόδου και
εξόδου.]
{
Listings/descriptordiploma.json
}
εξόδου.]
{
Listings/descriptordiploma.json
}
\begin{figure}
\begin{figure}
...
@@ -1545,7 +1546,7 @@ descriptor.json στο οποίο έχουν συμπληρωθεί όλα τα
...
@@ -1545,7 +1546,7 @@ descriptor.json στο οποίο έχουν συμπληρωθεί όλα τα
\subsection
{
Εργαλείο δημιουργίας
}
\subsection
{
Εργαλείο δημιουργίας
}
Χάρη στην αναγνώσιμη μορφή του JSON είναι εύκολο ένας διαχειριστής να συντάξει
Χάρη στην αναγνώσιμη μορφή του JSON είναι εύκολο ένας διαχειριστής να συντάξει
ένα JSON αρχείο για το ανέβασμα αρχείων ελέγχου και καθορισμό
ομάδων
. Παρόλα
ένα JSON αρχείο για το ανέβασμα αρχείων ελέγχου και καθορισμό
groups
. Παρόλα
αυτά, θα είναι αρκετά χρήσιμο το συγκεκριμένο αρχείο να μη συντάσσεται με το
αυτά, θα είναι αρκετά χρήσιμο το συγκεκριμένο αρχείο να μη συντάσσεται με το
χέρι, ώστε να μην υπάρχει και η πιθανότητα σφάλματος. Για το λόγο αυτό
χέρι, ώστε να μην υπάρχει και η πιθανότητα σφάλματος. Για το λόγο αυτό
δημιουργήθηκε ένα interactive script σε Python για την αυτόματη παραγωγή ενός
δημιουργήθηκε ένα interactive script σε Python για την αυτόματη παραγωγή ενός
...
@@ -1556,9 +1557,8 @@ descriptor.json αρχείου.
...
@@ -1556,9 +1557,8 @@ descriptor.json αρχείου.
Το συγκεκριμένο script, μόλις εκτελεστεί, σε οποιοδήποτε περιβάλλον, διατυπώνει
Το συγκεκριμένο script, μόλις εκτελεστεί, σε οποιοδήποτε περιβάλλον, διατυπώνει
ερωτήσεις σχετικές με τον αριθμό και τα ονόματα των αρχείων ελέγχου και ομάδων
ερωτήσεις σχετικές με τον αριθμό και τα ονόματα των αρχείων ελέγχου και ομάδων
και έπειτα για κάθε ομάδα σχετικά με το ποια αρχεία περιέχει και τους τύπους
και έπειτα για κάθε ομάδα σχετικά με το ποια αρχεία περιέχει και τους τύπους
εκτέλεσης τους. Στο τέλος, παράγει το αρχείο που περιγράφηκε. Παρακάτω φαίνεται
εκτέλεσης τους. Στο τέλος, παράγει το αρχείο που περιγράφηκε. Στο σχήμα 6.2
μια τυπική εκτέλεση του συγκεκριμένου script.
φαίνεται μια τυπική εκτέλεση του συγκεκριμένου εργαλείου.
\begin{figure}
\begin{figure}
\centering
\centering
...
@@ -1574,8 +1574,8 @@ descriptor.json αρχείου.
...
@@ -1574,8 +1574,8 @@ descriptor.json αρχείου.
επικοινωνίας της PHP με τη MySQL βάση δεδομένων μας. Η επέκταση, που
επικοινωνίας της PHP με τη MySQL βάση δεδομένων μας. Η επέκταση, που
χρησιμοποιείται τόσο από τον Grader όσο και από τον Kewii, είναι το πρωτότυπο
χρησιμοποιείται τόσο από τον Grader όσο και από τον Kewii, είναι το πρωτότυπο
(original) MySQL API. Το συγκεκριμένο API έχει αρκετά μειονεκτήματα, που έχουν
(original) MySQL API. Το συγκεκριμένο API έχει αρκετά μειονεκτήματα, που έχουν
οδηγήσει και στην παύση της υποστήριξης του όπως περιγράφεται στο
(TODO:
οδηγήσει και στην παύση της υποστήριξης του όπως περιγράφεται στο
https://wiki.php.net/rfc/mysql
\_
deprecation)
.
\cite
{
deprecation
}
.
\bigskip
\bigskip
...
@@ -1583,10 +1583,9 @@ https://wiki.php.net/rfc/mysql\_deprecation).
...
@@ -1583,10 +1583,9 @@ https://wiki.php.net/rfc/mysql\_deprecation).
εμφανίζει E
\_
DEPRECATED σφάλματα ήδη από την έκδοση 5.5 της PHP (στην 7 δεν
εμφανίζει E
\_
DEPRECATED σφάλματα ήδη από την έκδοση 5.5 της PHP (στην 7 δεν
υπάρχει), είναι επιτακτικό να αφαιρεθεί από τον κώδικα της εφαρμογής μας και να
υπάρχει), είναι επιτακτικό να αφαιρεθεί από τον κώδικα της εφαρμογής μας και να
αντικατασταθεί με μια πιο σύγχρονη. Οι επίσημα υποστηριζόμενες επεκτάσεις που
αντικατασταθεί με μια πιο σύγχρονη. Οι επίσημα υποστηριζόμενες επεκτάσεις που
μπορούμε να χρησιμοποιήσουμε είναι οι mysqli και PDO
μπορούμε να χρησιμοποιήσουμε είναι οι mysqli και PDO. Για την επιλογή
(https://secure.php.net/manual/en/mysql.php). Για την επιλογή χρησιμοποιήθηκε ο
χρησιμοποιήθηκε ο πίνακας σύγκρισης των προαναφερθέντων επεκτάσεων που υπάρχει
παρακάτω πίνακας σύγκρισης των προαναφερθέντων επεκτάσεων που υπάρχει στο
στο manual της PHP (
\cite
{
mysqlapis
}
) και φαίνεται στο σχήμα 6.3.
manual της PHP (https://secure.php.net/manual/en/mysql.php TODO).
\begin{figure}
\begin{figure}
\centering
\centering
...
@@ -1611,26 +1610,26 @@ prepared statements.
...
@@ -1611,26 +1610,26 @@ prepared statements.
Τα prepared statements επιτρέπουν την εκτέλεση συγκεκριμένων επερωτημάτων
Τα prepared statements επιτρέπουν την εκτέλεση συγκεκριμένων επερωτημάτων
(queries) με αντικατάσταση των παραμέτρων που αλλάζουν κάθε φορά. Αυτό έχει δύο
(queries) με αντικατάσταση των παραμέτρων που αλλάζουν κάθε φορά. Αυτό έχει δύο
σημαντικά πλεονεκτήματα. (http://php.net/manual/en/pdo.prepared-statements.php
σημαντικά πλεονεκτήματα. Αρχικά, αυξάνει ιδιαίτερα την απόδοση στην εκτέλεση
TODO) Αρχικά, αυξάνει ιδιαίτερα την απόδοση στην εκτέλεση διαδοχικών queries
διαδοχικών queries βασισμένων στο ίδιο prepared statement. Επιπλέον, βελτιώνει
βασισμένων στο ίδιο prepared statement. Επιπλέον, αυξάνει πολύ την ασφάλεια της
σε μεγάλο βαθμό την ασφάλεια της εφαρμογής μας, καθώς αποκλείει ουσιαστικά την
εφαρμογής μας, καθώς αποκλείει ουσιαστικά την πιθανότητα επίθεσης έκχυσης
πιθανότητα επίθεσης έκχυσης (injection) κώδικα SQL.
(injection) κώδικα SQL.
\bigskip
\bigskip
Η επίθεση με SQL injection γίνεται δυνατή λόγω του τρόπου που δημιουργείται το
Η επίθεση με SQL injection γίνεται δυνατή λόγω του τρόπου που δημιουργείται το
κάθε query. Αν δεν ελεγχθεί σωστά η είσοδος του χρήστη, υπάρχει η περίπτωση ο
κάθε query. Αν δεν ελεγχθεί σωστά η είσοδος του χρήστη, υπάρχει η περίπτωση ο
τελευταίος να εκμεταλλευτεί ειδικούς χαρακτήρες της SQL, π.χ. τον χαρακτήρα που
τελευταίος να εκμεταλλευτεί ειδικούς χαρακτήρες της SQL, π.χ. τον χαρακτήρα που
ξεκινάει ένα σχόλιο, και να αλλοιώσει το Query, επηρεάζοντας την εκτέλεση και
ξεκινάει ένα σχόλιο, και να αλλοιώσει το query, επηρεάζοντας την εκτέλεση και
επιτυγχάνοντας, ιδανικά, την πρόσβαση σε ευαίσθητα δεδομένα ή σελίδες.
επιτυγχάνοντας, ιδανικά για τον επιτιθέμενο, την πρόσβαση σε ευαίσθητα δεδομένα
ή σελίδες.
\bigskip
\bigskip
Ο τρόπος που επιτυγχάνεται η αντοχή στις προαναφερθείσες επιθέσεις βασίζεται
Ο τρόπος που επιτυγχάνεται η αντοχή στις προαναφερθείσες επιθέσεις βασίζεται
τρόπος
λειτουργίας των prepared statements. Σε πρώτη φάση, δημιουργείται το
στον τρόπο
λειτουργίας των prepared statements. Σε πρώτη φάση, δημιουργείται το
πρότυπο επερώτημα δίχως τις παραμέτρους και μεταγλωττίζεται ξεχωριστά. Οι
πρότυπο επερώτημα δίχως τις παραμέτρους και μεταγλωττίζεται ξεχωριστά. Οι
παράμετροι, στέλνονται
ξεχωριστά
με διαφορετικό πρότυπο επικοινωνίας με
παράμετροι, στέλνονται
έπειτα
με διαφορετικό πρότυπο επικοινωνίας με
αποτέλεσμα να μην είναι δυνατόν να εισαχθούν ειδικοί χαρακτήρες που θα
αποτέλεσμα να μην είναι δυνατόν να εισαχθούν ειδικοί χαρακτήρες που θα
επηρεάσουν την εκτέλεση του query.
επηρεάσουν την εκτέλεση του query.
...
@@ -1639,7 +1638,8 @@ TODO) Αρχικά, αυξάνει ιδιαίτερα την απόδοση στ
...
@@ -1639,7 +1638,8 @@ TODO) Αρχικά, αυξάνει ιδιαίτερα την απόδοση στ
Για την υλοποίηση επιλέχθηκε, τελικά, το PDO για τους λόγους επεκτασιμότητας
Για την υλοποίηση επιλέχθηκε, τελικά, το PDO για τους λόγους επεκτασιμότητας
που αναφέρθηκαν παραπάνω δεδομένου ότι στα υπόλοιπα κριτήρια δεν υστερεί σε
που αναφέρθηκαν παραπάνω δεδομένου ότι στα υπόλοιπα κριτήρια δεν υστερεί σε
σχέση με το mysqli, και η υπάρχουσα σχεδίαση μας είναι αντικειμενοστρεφής ούτως
σχέση με το mysqli, και η υπάρχουσα σχεδίαση μας είναι αντικειμενοστρεφής ούτως
ή άλλως, που υποστηρίζεται από το PDO (που δεν υποστηρίζει δομημένο στυλ).
ή άλλως, που υποστηρίζεται από το PDO (που δεν υποστηρίζει στυλ δομημένου
προγραμματισμού).
\subsection
{
Συνοπτική περιγραφή επέκτασης PDO
}
\subsection
{
Συνοπτική περιγραφή επέκτασης PDO
}
...
@@ -1648,22 +1648,22 @@ TODO) Αρχικά, αυξάνει ιδιαίτερα την απόδοση στ
...
@@ -1648,22 +1648,22 @@ TODO) Αρχικά, αυξάνει ιδιαίτερα την απόδοση στ
δεδομένων σε PHP. Μέσω των διάφορων, χαμηλού επιπέδου, οδηγών της επιτρέπει την
δεδομένων σε PHP. Μέσω των διάφορων, χαμηλού επιπέδου, οδηγών της επιτρέπει την
ενοποίηση του πλήθους των μεθόδων κάθε βάσης σε μια κοινή, πλούσια διεπαφή που
ενοποίηση του πλήθους των μεθόδων κάθε βάσης σε μια κοινή, πλούσια διεπαφή που
περιστρέφεται γύρω από κοινά αντικείμενα που αντιστοιχούν σε κάθε πίνακα ξεχωριστά.
περιστρέφεται γύρω από κοινά αντικείμενα που αντιστοιχούν σε κάθε πίνακα ξεχωριστά.
(
http://php.net/manual/en/intro.pdo.php
).
(
\cite
{
pdo
}
).
\bigskip
\bigskip
Η σχεδίαση της συγκεκριμένης επέκτασης έχει γίνει με έμφαση στην ευκολία χρήσης
Η σχεδίαση της συγκεκριμένης επέκτασης έχει γίνει με έμφαση στην ευκολία χρήσης
και την επαναχρησιμοποίηση του ίδιου κώδικα για διαφορετικές βάσεις δεδομένων
και την επαναχρησιμοποίηση του ίδιου κώδικα για διαφορετικές βάσεις δεδομένων
και συναφείς λειτουργίες. Η σύνδεση στην εκάστοτε βάση δεδομένων γίνεται με τη
και συναφείς λειτουργίες. Η σύνδεση στην εκάστοτε βάση δεδομένων γίνεται με τη
χρήση μιας σειριακής δομής δεδομένων, με όνομα Data Source Name
χρήση μιας σειριακής δομής δεδομένων, με όνομα Data Source Name (
\cite
{
dsn
}
),
(https://en.wikipedia.org/wiki/Data
\_
source
\_
name), έπειτα από την οποία,
έπειτα από την οποία, δημιουργείται ένα αντικείμενο που αντιστοιχεί στη
δημιουργείται ένα αντικείμενο που αντιστοιχεί στη σύνδεση. Τα queries
σύνδεση. Τα queries εκτελούνται με τη χρήση της μεθόδου query, εκτός αν
εκτελούνται με τη χρήση της μεθόδου query, εκτός αν χρησιμοποιηθούν prepared
χρησιμοποιηθούν prepared statements (PDOStatement), όπου χρησιμοποιούνται οι
statements (PDOStatement), όπου χρησιμοποιούνται οι μέθοδοι prepare και
μέθοδοι prepare και execute. Η επέκταση εμπεριέχει, επίσης, και δική της κλάση
execute. Η επέκταση εμπεριέχει, επίσης, και δική της κλάση εξαιρέσεων
εξαιρέσεων (PDOException). Ακολουθούν παραδείγματα απλών λειτουργιών
(PDOException). (https://secure.php.net/manual/en/book.pdo.php) Ακολουθούν
χρησιμοποιώντας τη συγκεκριμένη επέκταση/API.
παραδείγματα απλών λειτουργιών χρησιμοποιώντας τη συγκεκριμένη επέκταση/API.
\bigskip
\FloatBarrier
\FloatBarrier
...
@@ -1674,46 +1674,50 @@ execute. Η επέκταση εμπεριέχει, επίσης, και δική
...
@@ -1674,46 +1674,50 @@ execute. Η επέκταση εμπεριέχει, επίσης, και δική
\section
{
Καταληκτικές Παρατηρήσεις
}
\section
{
Καταληκτικές Παρατηρήσεις
}
Στη συγκεκριμένη εργασία έγινε μια προσπάθεια βελτίωσης του συστήματος
Στη συγκεκριμένη εργασία έγινε μια προσπάθεια βελτίωσης του συστήματος
αυτόματ
ο
ς αξιολόγησης Grader και προσθήκης δυνατοτήτων που θα το καταστήσουν
αυτόματ
η
ς αξιολόγησης Grader και προσθήκης δυνατοτήτων που θα το καταστήσουν
πιο ευέλικτο και εύκολο στη χρήση του. Για να επιτευχθεί αυτό, διερευνήθηκε ο
πιο ευέλικτο και εύκολο στη χρήση του. Για να επιτευχθεί αυτό, διερευνήθηκε ο
τρόπος λειτουργίας του όπως και ο τρόπος λειτουργίας άλλων παρόμοιων
τρόπος λειτουργίας του όπως και ο τρόπος λειτουργίας άλλων παρόμοιων
συστημάτων. Για τις τροποποιήσεις και τις προσθήκες που υλοποιήθηκαν, έγινε
συστημάτων. Για τις τροποποιήσεις και τις προσθήκες που υλοποιήθηκαν, έγινε
προσπάθεια να χρησιμοποιηθούν σωστές σχεδιαστικές επιλογές με έμφαση στη
προσπάθεια να χρησιμοποιηθούν σωστές σχεδιαστικές επιλογές με έμφαση στη
βελτίωση της ποιότητας του κώδικα
,
στην μετέπειτα ευκολία συντήρησης και
βελτίωση της ποιότητας του κώδικα
και
στην μετέπειτα ευκολία συντήρησης και
επέκτασης του.
επέκτασης του.
\bigskip
\bigskip
Στο Κεφάλαιο 2, παρουσιάστηκαν συστήματα αυτόματης αξιολόγησης
ανοιχτού λογισμικού
Στο Κεφάλαιο 2, παρουσιάστηκαν συστήματα αυτόματης αξιολόγησης
ελεύθερου
που προσφέρονται για τη διενέργεια διαγωνισμών και λειτουργούν με παρόμοιο τρόπο
λογισμικού που προσφέρονται για τη διενέργεια διαγωνισμών και λειτουργούν με
με το Grader. Αναλύθηκε η σχεδίαση τους, τα σενάρια χρήσης τους και οι διαφορές
παρόμοιο τρόπο με το Grader. Αναλύθηκε η σχεδίαση, οι δυνατότητες και ο
τ
ους με το δικό μας σύστημα
.
τ
ρόπος χρήσης τους
.
\bigskip
\bigskip
Στο κεφάλαιο 3, είδαμε τον τρόπο λειτουργίας του Grader και του Kewii, της
Στο κεφάλαιο 3, είδαμε τον τρόπο λειτουργίας του Grader και του Kewii, της
εφαρμογής που τρέχει στον εξυπηρετητή και αναλαμβάνει την εκτέλεση των
εφαρμογής που τρέχει στον εξυπηρετητή και αναλαμβάνει την εκτέλεση των
υποβληθέντων προγραμμάτων. Αναλύθηκε η αρχιτεκτονική και ο τρόπος επικοινωνίας
υποβληθέντων προγραμμάτων. Αναλύθηκε η αρχιτεκτονική και ο τρόπος επικοινωνίας
μεταξύ τους. Αναφέρθηκαν, ακόμα, όλα τα
συστατ
ικά στοιχεία του συστήματος, οι
μεταξύ τους. Αναφέρθηκαν, ακόμα, όλα τα
βασ
ικά στοιχεία του συστήματος, οι
σ
χέσεις τους και κατά πόσο εμπλέκονται με
Kewii και Grader. Το συγκεκριμένο
σ
υσχετισμοί τους και η χρήση τους από
Kewii και Grader. Το συγκεκριμένο
κεφάλαιο έχει
σκοπό να λειτουργήσει στο μέλλον σαν έγγραφο αναφοράς για όποιον
κεφάλαιο έχει
τον επιπρόσθετο σκοπό να λειτουργήσει στο μέλλον σαν έγγραφο
επιθυμεί να επεκτείνει το σύστημα, βοηθώντας τον να αντιληφθεί γρηγορότερα τον
αναφοράς για όποιον επιθυμεί να επεκτείνει το σύστημα, βοηθώντας τον να
σχεδιασμό του.
αντιληφθεί γρηγορότερα τον
σχεδιασμό του.
\bigskip
\bigskip
Στα κεφάλαια 4,5 και 6, αναλύθηκαν οι σημαντικότερες αλλαγές που έγιναν κατά τη
Στα κεφάλαια 4,5 και 6, αναλύθηκαν οι σημαντικότερες αλλαγές που έγιναν κατά τη
διάρκεια της παρούσας εργασίας. Αυτές συμπεριλάμβαναν τη δημιουργία μιας νέας
διάρκεια της παρούσας εργασίας. Αυτές συμπεριλάμβαναν τη δημιουργία μιας νέας
έννοιας για το σύστημα, αυτής των ομάδων αρχείων ελέγχου
,
και ως αποτέλεσμα την
έννοιας για το σύστημα, αυτής των ομάδων αρχείων ελέγχου
(
και ως αποτέλεσμα την
επέκταση ολόκληρου του συστήματος για την υποστήριξη τ
ου
, την αλλαγή της
επέκταση ολόκληρου του συστήματος για την υποστήριξη τ
ης)
, την αλλαγή της
αρχιτεκτονικής προβλημάτων, διαγωνισμών και υποβολών προς διευκόλυνση της
αρχιτεκτονικής προβλημάτων, διαγωνισμών και υποβολών προς διευκόλυνση της
λειτουργίας του Grader και ένα σύνολο άλλων, μικρότερης σημασίας, προσθηκών.
λειτουργίας του Grader και ένα σύνολο άλλων, μικρότερης σημασίας, προσθηκών.
Κατά τη διαδικασία υλοποίησης κάθε τροποποίησης έγινε προσπάθεια βελτίωσης της
εκάστοτε διαμόρφωσης με αναδιαμόρφωση κλάσεων μεθόδων και δομών δεδομένων ώστε
\bigskip
ο κώδικας να είναι περισσότερο κατανοητός και διαχειρίσιμος από τους μελλοντικούς
συντηρητές του. Επίσης, καταγράφηκε η διαδικασία εγκατάστασης της συνολικής
Κατά τη διαδικασία προσθήκης των παραπάνω δυνατοτήτων έγινε προσπάθεια
εφαρμογής του σε ένα καινούριο σύστημα ώστε να είναι εύκολο να μετεγκατασταθεί
βελτίωσης της εκάστοτε υλοποίησης με αναδιαμόρφωση κλάσεων μεθόδων και δομών
στο μέλλον ή να δημιουργηθεί περιβάλλον δοκιμών. (TODO: πρώτη φορά τα αναφέρω αυτά!)
δεδομένων ώστε ο κώδικας να είναι περισσότερο κατανοητός και διαχειρίσιμος από
τους μελλοντικούς συντηρητές του. Επίσης, καταγράφηκε η διαδικασία εγκατάστασης
της συνολικής εφαρμογής του σε ένα καινούριο σύστημα ώστε να είναι εύκολο να
μετεγκατασταθεί στο μέλλον ή να δημιουργηθεί περιβάλλον δοκιμών.
%(TODO: πρώτη φορά τα αναφέρω αυτά!)
\section
{
Μελλοντική Εργασία
}
\section
{
Μελλοντική Εργασία
}
...
@@ -1722,17 +1726,18 @@ execute. Η επέκταση εμπεριέχει, επίσης, και δική
...
@@ -1722,17 +1726,18 @@ execute. Η επέκταση εμπεριέχει, επίσης, και δική
επισκόπησης και σχολιασμού υποβληθέντων λύσεων (code reviews) όπου οι διαχειριστές
επισκόπησης και σχολιασμού υποβληθέντων λύσεων (code reviews) όπου οι διαχειριστές
ή υπεύθυνοι για τους διαγωνισμούς θα μπορούσαν να σχολιάζουν τις λύσεις των
ή υπεύθυνοι για τους διαγωνισμούς θα μπορούσαν να σχολιάζουν τις λύσεις των
διαγωνιζόμενων και εκεί να γίνεται συζήτηση μεταξύ τους για τυχόν βελτιστοποιήσεις
διαγωνιζόμενων και εκεί να γίνεται συζήτηση μεταξύ τους για τυχόν βελτιστοποιήσεις
ή
σφάλματα.
και
σφάλματα.
\bigskip
\bigskip
Επιπροσθέτως, θα ήταν αρκετά θετικό αν μπορούσε να διενεργηθεί ένας επανασχεδιασμός
Επιπροσθέτως, θα ήταν αρκετά θετικό αν μπορούσε να διενεργηθεί ένας
της διαδικτυακής εφαρμογής σύμφωνα με μια αρχιτεκτονική MVC ή παρόμοια με χρήση
επανασχεδιασμός της διαδικτυακής εφαρμογής σύμφωνα με μια αρχιτεκτονική
κάποιου σύγχρονου πλαισίου (framework) ώστε να γίνει άμεσα πιο κατανοητός ο
Model-View-Controller (MVC) ή παρόμοια με χρήση κάποιου σύγχρονου πλαισίου
διαχωρισμός παρουσίασης και υλοποίησης της λογικής της αξιολόγησης και των
(framework) ώστε να γίνει άμεσα πιο κατανοητός ο διαχωρισμός παρουσίασης και
υπόλοιπων λειτουργιών. Κάτι τέτοιο θα είχε ως προϋπόθεση πλήρη κατανόηση του Grader
υλοποίησης της λογικής της αξιολόγησης και των υπόλοιπων λειτουργιών. Κάτι
και του συνόλου των μερών του, αλλά θα επιβράβευε άμεσα όσους θα ήταν υπεύθυνοι για
τέτοιο θα είχε ως προϋπόθεση πλήρη κατανόηση του Grader και του συνόλου των
την περαιτέρω ανάπτυξη του.
μερών του, αλλά θα επιβράβευε άμεσα όσους θα ήταν υπεύθυνοι για την περαιτέρω
ανάπτυξη και συντήρηση του.
\bigskip
\bigskip
...
@@ -1740,29 +1745,33 @@ execute. Η επέκταση εμπεριέχει, επίσης, και δική
...
@@ -1740,29 +1745,33 @@ execute. Η επέκταση εμπεριέχει, επίσης, και δική
Αρχικά, όπως έχει αναφερθεί και στο κεφάλαιο 6.1.2 για την Python, οι
Αρχικά, όπως έχει αναφερθεί και στο κεφάλαιο 6.1.2 για την Python, οι
διαγωνιζόμενοι θα επωφελούνταν στην περίπτωση προσθήκης ενός μηχανισμού για
διαγωνιζόμενοι θα επωφελούνταν στην περίπτωση προσθήκης ενός μηχανισμού για
ανάλυση του πηγαίου κώδικα των υποβολών τους, καθώς δεν εκτελείται μεταγλώττιση
ανάλυση του πηγαίου κώδικα των υποβολών τους, καθώς δεν εκτελείται μεταγλώττιση
και όλα τα σφάλματα είναι κατά την εκτέλεση. Ένα εργαλείο που θα μπορούσε να
και όλα τα σφάλματα εμφανίζονται κατά την εκτέλεση. Ένα εργαλείο που θα
χρησιμοποιηθεί για το συγκεκριμένο σκοπό είναι το pylint (TODO:
μπορούσε να χρησιμοποιηθεί για το συγκεκριμένο σκοπό είναι το pylint
https://www.pylint.org/). Το συγκεκριμένο πρόγραμμα, έχει τη δυνατότητα τόσο να
\footnote
{
https://www.pylint.org/
}
. Το συγκεκριμένο πρόγραμμα, έχει τη
εντοπίζει σφάλματα πριν την εκτέλεση, όσο και να ελέγχει την ποιότητα του
δυνατότητα τόσο να εντοπίζει σφάλματα πριν την εκτέλεση, όσο και να ελέγχει την
κώδικα σύμφωνα με συγκεκριμένα στάνταρ όπως είναι π.χ. το PEP-8 (TODO: link).
ποιότητα του κώδικα σύμφωνα με συγκεκριμένα στάνταρ όπως είναι π.χ. το PEP 8.
\cite
{
pep8
}
\bigskip
\bigskip
Άλλο ένα θέμα που επιδέχεται βελτίωση είναι η ασφάλεια εκτέλεσης του Kewii.
Άλλο ένα θέμα που επιδέχεται βελτίωση είναι η ασφάλεια εκτέλεσης του Kewii.
Προφανώς, είναι αρκετά δύσκολο να επιτυγχάνεται η απόλυτη ασφάλεια όταν εξ ορισμού
Προφανώς, είναι αρκετά δύσκολο να επιτυγχάνεται η απόλυτη ασφάλεια όταν εξ
εκτελείται άγνωστος κώδικας σε έναν εξυπηρετητή. Παρόλα αυτά, μπορεί να υλοποιηθεί
ορισμού εκτελείται άγνωστος κώδικας σε έναν εξυπηρετητή. Παρόλα αυτά, μπορεί να
ένα πιο αποκλεισμένο (sandboxed) περιβάλλον, πιθανόν με τη χρήση ενός εικονικού
υλοποιηθεί ένα πιο αποκλεισμένο (sandboxed) περιβάλλον, πιθανόν με τη χρήση
μηχανήματος που να έχει ως στόχο τον αποκλεισμό των εκτελούμενων προγραμμάτων ή
ενός εικονικού μηχανήματος που να έχει ως στόχο τον αποκλεισμό των εκτελούμενων
με χρήση ειδικευμένου λογισμικού ως container, π.χ. Docker (TODO: link).
προγραμμάτων ή με χρήση ειδικευμένου λογισμικού ως container, π.χ. Docker
\footnote
{
https://www.docker.com/
}
.
\bigskip
\bigskip
Τέλος, θα ήταν ωφέλιμο για την απόδοση του Kewii να υλοποιηθεί μια παραλληλοποίηση
Τέλος, θα ήταν ωφέλιμο για την απόδοση του Kewii να υλοποιηθεί μια παραλληλοποίηση
των εκτελέσεων πολλαπλών υποβολών ταυτόχρονα, που θα μείωνε σε μεγάλο βαθμό το
των εκτελέσεων πολλαπλών υποβολών ταυτόχρονα, που θα μείωνε σε μεγάλο βαθμό το
χρόνο εκτέλεσης, εάν χρησιμοποιούνταν με χρήση συστάδας εικονικών ή φυσικών
χρόνο εκτέλεσης, εάν χρησιμοποιούνταν με χρήση συστάδας εικονικών ή φυσικών
μηχανημάτων. Η συγκεκριμένη υλοποίηση έχει ήδη γίνει στο
(TODO: τσιαμητρος)
και
μηχανημάτων. Η συγκεκριμένη υλοποίηση έχει ήδη γίνει στο
\cite
{
Tsiamitros
}
και
είναι συμβατή με το σύστημα μας. Μένει να διερευνηθούν οι λεπτομέρειες της
είναι συμβατή με το σύστημα μας. Μένει να διερευνηθούν οι λεπτομέρειες της
προσθήκης και να διεξαχθεί αξιολόγηση της λειτουργίας.
προσθήκης και να υλοποιηθεί, με την προϋπόθεση να υπάρχει δυνατότητα πλήρης
αξιοποίησης του νέου συστήματος σε θέμα πόρων.
%%% Bibliography
%%% Bibliography
\bibliographystyle
{
softlab-thesis
}
\bibliographystyle
{
softlab-thesis
}
...
...
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