Commit b609d12f authored by Antonios Angelakis's avatar Antonios Angelakis

Write about Mooshak

parent 785b6f20
......@@ -293,7 +293,7 @@ privacy.) Τέλος, η σύγκριση του Grader με τα συγκεκρ
\begin{itemize}
\setlength\itemsep{0em}
\item CMS
\item Mooshak2
\item Mooshak 2.0
\item CATS
\end{itemize}
......@@ -305,22 +305,27 @@ privacy.) Τέλος, η σύγκριση του Grader με τα συγκεκρ
Το πρώτο σύστημα που θα μελετήσουμε είναι το Contest Management System, CMS εν
συντομία. Πρόκειται για ένα κατανεμημένο σύστημα διαχείρισης και διεξαγωγής
διαγωνισμών το οποίο σχεδιάστηκε αρχικά για την Διεθνή Ολυμπιάδα Πληροφορικής του 2012.
Αποτελείται από ένα πλήθος μικρο-υπηρεσιών που συνθέτουν το συνολικό σύστημα.
διαγωνισμών το οποίο σχεδιάστηκε αρχικά για την Διεθνή Ολυμπιάδα Πληροφορικής
του 2012. Αποτελείται από ένα πλήθος μικρο-υπηρεσιών που συνθέτουν το συνολικό
σύστημα.
\bigskip
Είναι, πιθανότατα, το πιο ολοκληρωμένο σύστημα για διαγωνισμούς δεδομένου του μεγάλου
αριθμού διαπιστευτηρίων που κατέχει, συμπεριλαμβανομένης της χρήσης του σε όλες σχεδόν
τις Διεθνείς Ολυμπιάδες από το 2012. Οι δημιουργοί του είχαν ως στόχο τη δημιουργία ενός
Είναι, πιθανότατα, το πιο ολοκληρωμένο σύστημα για διαγωνισμούς δεδομένου του
μεγάλου αριθμού διαπιστευτηρίων που κατέχει, συμπεριλαμβανομένης της χρήσης του
σε όλες σχεδόν τις Διεθνείς Ολυμπιάδες από το 2012. Οι δημιουργοί του είχαν ως
στόχο τη δημιουργία ενός
% https://www.mii.lt/olympiads_in_informatics/pdf/INFOL107.pdf
συστήματος ασφαλούς, ανθεκτικού σε σφάλματα λογισμικού και υλικού, ανοιχτού, επεκτάσιμου
και εύχρηστου.
συστήματος ασφαλούς, ανθεκτικού σε σφάλματα λογισμικού και υλικού, ανοιχτού,
επεκτάσιμου και εύχρηστου.
\bigskip
Η ανάπτυξη του ξεκίνησε το 2010 και πλέον βασίζεται στην κοινότητα για συνεισφορά στην
ανάπτυξη του, στην προσθήκη μεταφράσεων και στη βελτίωση του documentation.
Η ανάπτυξη του ξεκίνησε το 2010 και πλέον βασίζεται στην κοινότητα για
συνεισφορά στην ανάπτυξη του, στην προσθήκη μεταφράσεων και στη βελτίωση του
documentation. H άδεια που χρησιμοποιεί είναι η AGPL-3+ (GNU Affero General
Public License), η οποία επιτρέπει εμπορική χρήση, τροποποίηση και διανομή, με
την προϋπόθεση να παραμείνει η ίδια άδεια και να δημοσιευτεί ο πηγαίος κώδικας.
\subsection{Τεχνικά Χαρακτηριστικά}
......@@ -362,7 +367,7 @@ privacy.) Τέλος, η σύγκριση του Grader με τα συγκεκρ
% https://www.mii.lt/olympiads_in_informatics/files/volume8.pdf#page=125
Όλες οι παραπάνω λειτουργίες αλληλεπιδρούν μεταξύ τους με τον τρόπο που φαίνεται
στην εικόνα που ακουλουθεί.
στην εικόνα που ακουλουθεί.
(TODO: εικόνα συννεφο)
......@@ -409,7 +414,7 @@ C\#, Haskell, Python3 και Rust. Για την επέκταση του με π
\bigskip
Οι διαγωνιζόμενοι συμμετέχουν στο διαγωνισμό μέσω της σελίδας του
ContestWebServer. Εκεί, βλέπουν για κάθε πρόβλημα την περιγραφή του και όλα
ContestWebServer. Εκεί βλέπουν για κάθε πρόβλημα την περιγραφή του και όλα
τα σχετικά με αυτό στοιχεία και μπορούν να υποβάλλουν τις λύσεις τους. Ένα
ενδιαφέρον χαρακτηριστικό είναι ότι οι διαγωνιζόμενοι μπορούν να δημιουργούν
δικά τους αρχεία ελέγχου, στα οποία θα ελεγχθεί η λύση τους. Επιπλέον, υπάρχει
......@@ -423,14 +428,84 @@ ContestWebServer. Εκεί, βλέπουν για κάθε πρόβλημα τ
των αποτελεσμάτων.
\section{Mooshak2}
\section{Mooshak 2.0}
% https://www.dcc.fc.up.pt/~zp/papers/mooshak-eunis.pdf
% https://www.dcc.fc.up.pt/~zp/papers/mooshak-spe.pdf
% https://www.mii.lt/olympiads_in_informatics/pdf/INFOL020.pdf
Το Mooshak 2.0 είναι κι αυτό ένα σύστημα διαχείρισης διαγωνισμών με αυτόματη
αξιολόγηση για τις υποβολές. Αποτελεί τη νεότερη υλοποίηση του Mooshak, με μεταφορά
του κώδικά από C++ και Tcl σε Java με χρήση της εργαλειοθήκης Google Web Toolkit.
H αρχική έκδοση του Mooshak δημιουργήθηκε το 2000 και βασίζεται σε ένα παλαιότερο
διαδικτυακό σύστημα εκμάθησης, το Ganesh. Ο κώδικας του διατίθεται επίσης ελεύθερα
με χρήση της άδειας Artistic License, η οποία δεν προϋποθέτει την διατήρηση
άδειας ελεύθερου λογισμικού σε μελλοντική τροποποίηση και διανομή.
\bigskip
Οι βασικές του προδιαγραφές βασίζονται στους κανόνες των διαγωνισμών ICPC, αλλά
υποστηρίζει και άλλες μορφές διαγωνισμών, όπως είναι οι Ολυμπιάδες πληροφορικής.
Έχει χρησιμοποιηθεί σε πληθώρα τοπικών και διεθνών διαγωνισμών αλλά και σταθερά
στο πλαίσιο εκμάθησης και αξιολόγησης φοιτητών.
\subsection{Τεχνικά Χαρακτηριστικά}
- https://mooshak.dcc.fc.up.pt/
Το Mooshak 2.0 βασίζεται σε μια κοινή αρχιτεκτονική εξυπηρετητή και πελατών με τη
διαφορά ότι υποστηρίζει τη δημιουργία πρόσθετων κόμβων. Οι κόμβοι αυτοί έχουν σκοπό
τη διατήρηση της σταθερότητας και απαιτούν συνεχή συγχρονισμό με τον κεντρικό
εξυπηρετητή ώστε να αναλαμβάνουν μέρος του δικτυακού φόρτου αλλά και να αποτελούν
εφεδρικές λύσεις σε περίπτωση βλάβης των υπολοίπων κόμβων.
\bigskip
(TODO: φωτο αρχιτεκτονικής)
\bigskip
Αντίθετα με άλλα συστήματα, το Mooshak δε χρησιμοποιεί βάση και περιορίζεται
στην αποθήκευση όλων των δεδομένων του στο σύστημα αρχείων. Οι γλώσσες
προγραμματισμού που υποστηρίζει περιλαμβάνουν τις C, C++, Java, Pascal, Perl,
Python, Haskell, Haskell και Prolog, ενώ η επέκταση του ώστε να υποστηρίξει
πρόσθετες γλώσσες δεν αποτελεί δύσκολη διαδικασία.
\bigskip
Το σύστημα είναι επίσης παραμετροποιήσιμο ως προς τον τρόπο αξιολόγησης καθώς
έχει σχεδιαστεί για πολλούς διαφορετικούς τύπους διαγωνισμών. Χαρακτηριστικό
είναι ότι στη διαδικασία της υποβολής, πριν από τα στάδια της μεταγλώττισης,
της εκτέλεσης και της αξιολόγησης, δίνεται η δυνατότητα προσθήκης μιας
λειτουργίας στατικής ανάλυσης του πηγαίου κώδικα της υποβολής και αξιολόγησης
του με χρήση κριτηρίων ορισμένων από τους διαχειριστές του διαγωνισμού. Αυτό
επιτρέπει τη χρήση του Mooshak, παραδείγματος χάρη για ένα διαγωνισμό τύπου
code golf, δηλαδή επίτευξης της λύσης με το λιγότερο κώδικα.
\subsection{Χρήση}
Η εγκατάσταση του Mooshak 2 δεν έχει πολλές απαιτήσεις. Συγκεκριμένα,
χρειάζεται μόνο το περιβάλλον της Java και το λογισμικό του εξυπηρετητή. Σε
αυτό το σημείο, μπορούν να στηθούν επίσης επιπλέον κόμβοι εάν είναι επιθυμητό,
τοπικά ή απομακρυσμένα. Μόλις στηθεί το σύστημα, η δημιουργία των διαγωνισμών
και των προβλημάτων γίνεται μέσω της δικτυακής διεπαφής του Διαχειριστή.
\bigskip
Οι διαγωνιζόμενοι, μπαίνοντας στην ιστοσελίδα του Mooshak, μπορούν να διαβάσουν
τις περιγραφές των προβλημάτων και να πραγματοποιήσουν τις υποβολές τους είτε
ανεβάζοντας το πρόγραμμα τους, είτε χρησιμοποιώντας τον επεξεργαστή κειμένου της
ιστοσελίδας ώστε να το συντάξουν επιτόπου.
\bigskip
Οι δημιουργοί του Mooshak παραθέτουν στη σελίδα του μόνιμα περιβάλλοντα δοκιμών,
στα οποία μπορεί ο οποιοσδήποτε να χρησιμοποιήσει ένα ζωντανό Mooshak σύστημα είτε
για να πραγματοποιήσει υποβολές, είτε για να δημιουργήσει νέους διαγωνισμούς και
προβλήματα.
\bigskip
(TODO: Φωτογραφίες)
\section{CATS}
\subsection{Τεχνικά Χαρακτηριστικά}
......@@ -1387,7 +1462,7 @@ manual της PHP (https://secure.php.net/manual/en/mysql.php TODO).
προσφέροντας στο χρήστη ένα API υψηλού επιπέδου και επιτρέποντας του να αλλάξει
πολύ εύκολα βάση δεδομένων, αν χρειαστεί. Και οι δύο επεκτάσεις έχουν αρκετές
δυνατότητες που μας ενδιαφέρει να υλοποιηθούν με σημαντικότερη αυτή των
prepared statements.
prepared statements.
\bigskip
......@@ -1397,7 +1472,7 @@ prepared statements.
TODO) Αρχικά, αυξάνει ιδιαίτερα την απόδοση στην εκτέλεση διαδοχικών queries
βασισμένων στο ίδιο prepared statement. Επιπλέον, αυξάνει πολύ την ασφάλεια της
εφαρμογής μας, καθώς αποκλείει ουσιαστικά την πιθανότητα επίθεσης έκχυσης
(injection) κώδικα SQL.
(injection) κώδικα SQL.
\bigskip
......@@ -1430,7 +1505,7 @@ TODO) Αρχικά, αυξάνει ιδιαίτερα την απόδοση στ
δεδομένων σε PHP. Μέσω των διάφορων, χαμηλού επιπέδου, οδηγών της επιτρέπει την
ενοποίηση του πλήθους των μεθόδων κάθε βάσης σε μια κοινή, πλούσια διεπαφή που
περιστρέφεται γύρω από κοινά αντικείμενα που αντιστοιχούν σε κάθε πίνακα ξεχωριστά.
(http://php.net/manual/en/intro.pdo.php).
(http://php.net/manual/en/intro.pdo.php).
\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