Commit 074142ed authored by Antonios Angelakis's avatar Antonios Angelakis

Some writing about CMS

parent 64365e4a
...@@ -91,7 +91,7 @@ ...@@ -91,7 +91,7 @@
\begin{keywordsgr} \begin{keywordsgr}
Συστήματα αυτόματης αξιολόγησης, CMS, Grader, PHP, Python, Ανάπτυξη Λογισμικού, Συστήματα αυτόματης αξιολόγησης, CMS, Grader, PHP, Python, Ανάπτυξη Λογισμικού,
Ανοιχτό και ελεύθερο λογισμικό. Ανοιχτός Κώδικας, Ελεύθερο λογισμικό.
\end{keywordsgr} \end{keywordsgr}
\end{abstractgr} \end{abstractgr}
...@@ -297,18 +297,112 @@ privacy.) Τέλος, η σύγκριση του Grader με τα συγκεκρ ...@@ -297,18 +297,112 @@ privacy.) Τέλος, η σύγκριση του Grader με τα συγκεκρ
\item CATS \item CATS
\end{itemize} \end{itemize}
Και τα 3 έχουν σχεδιαστεί με σκοπό τη διεξαγωγή προγραμματιστικών διαγωνισμών,
ολυμπιάδων πληροφορικής, αλλά και χρήση για εργαστηριακές ασκήσεις και
εργασίες.
\section{CMS} \section{CMS}
Το πρώτο σύστημα που θα μελετήσουμε είναι το Contest Management System, CMS εν
συντομία. Πρόκειται για ένα κατανεμημένο σύστημα διαχείρισης και διεξαγωγής
διαγωνισμών το οποίο σχεδιάστηκε αρχικά για την Διεθνή Ολυμπιάδα Πληροφορικής του 2012.
Αποτελείται από ένα πλήθος μικρο-υπηρεσιών που συνθέτουν το συνολικό σύστημα.
\bigskip
Είναι, πιθανότατα, το πιο ολοκληρωμένο σύστημα για διαγωνισμούς δεδομένου του μεγάλου
αριθμού διαπιστευτηρίων που κατέχει, συμπεριλαμβανομένης της χρήσης του σε όλες σχεδόν
τις Διεθνείς Ολυμπιάδες από το 2012. Οι δημιουργοί του είχαν ως στόχο τη δημιουργία ενός
% https://www.mii.lt/olympiads_in_informatics/pdf/INFOL107.pdf
συστήματος ασφαλούς, ανθεκτικού σε σφάλματα λογισμικού και υλικού, ανοιχτού, επεκτάσιμου
και εύχρηστου.
\bigskip
Η ανάπτυξη του ξεκίνησε το 2010 και πλέον βασίζεται στην κοινότητα για συνεισφορά στην
ανάπτυξη του, στην προσθήκη μεταφράσεων και στη βελτίωση του documentation.
\subsection{Τεχνικά Χαρακτηριστικά}
Το CMS είναι γραμμένο σε Python και αποτελείται από πολλά μικρά κομμάτια που
αναλαμβάνουν μια ξεχωριστή λειτουργία. Αυτά μπορούν να έχουν εγκατασταθεί σε
διαφορετικούς εξυπηρετητές, σε απομακρυσμένα συστήματα. Οι υπηρεσίες-κομμάτια, από
τα οποία αποτελείται είναι τα παρακάτω:
\begin{itemize}
\setlength\itemsep{0em}
\item LogService
Συλλέγει σε ένα μέρος όλα τα μηνύματα καταγραφής.
\item ResourceService
Λαμβάνει δεδομένα για όλες τις υπηρεσίες που τρέχουν και μπορεί να τις
ξεκινήσει ταυτόχρονα.
\item Checker
Ελέγχει την κατάσταση των υπηρεσιών.
\item EvaluationService
Οργανώνει την ουρά υποβολών και διανέμει τις εργασίες στους Workers.
\item Worker
Εκτελεί τις εργασίες σε ένα αποκλεισμένο περιβάλλον.
\item ScoringService
Συλλέγει τα αποτελέσματα των εκτελέσεων και τα αξιολογεί για να παράξει
τις βαθμολογίες.
\item ProxyService
Στέλνει τις βαθμολογίες στον εξυπηρετητή Αποτελεσμάτων.
\item PrintingService
Αναλαμβάνει την εκτύπωση των εγγράφων.
\item ContestWebServer
Ο εξυπηρετητής της ιστοσελίδας του διαγωνισμού, με τον οποίο αλληλεπιδρούν
οι διαγωνιζόμενοι.
\item AdminWebServer
Ο εξυπηρετητής της ιστοσελίδας διαχείρισης του διαγωνισμού.
\item RankingWebServer
Ο εξυπηρετητής της ιστοσελίδας εμφάνισης των αποτελεσμάτων.
\end{itemize}
\bigskip
% https://www.mii.lt/olympiads_in_informatics/files/volume8.pdf#page=125
Όλες οι παραπάνω λειτουργίες αλληλεπιδρούν μεταξύ τους με τον τρόπο που φαίνεται
στην εικόνα που ακουλουθεί.
(TODO: εικόνα συννεφο)
\bigskip
Ο κύκλος διεξαγωγής ενός διαγωνισμού είναι γνώριμος. Αφού στηθούν όλες οι
απαραίτητες υπηρεσίες, οι διαχειριστές μπορούν να δημιουργήσουν το διαγωνισμό
μέσω του AdminWebServer, μαζί με τα προβλήματα και τα τεστ που περιέχει. Έπειτα,
κάθε διαγωνιζόμενος αλληλεπιδρά με τη σελίδα υποβάλλοντας τις λύσεις του. Αυτές
αποθηκεύονται στο δίσκο μέχρι να δοθούν σε κάποιο Worker από το EvaluationService
και να εκτελεστούν στο ασφαλές περιβάλλον. Σε εκείνο το σημείο αναλαμβάνει τα ηνία
το ScoringService που αξιολογεί τις εκτελέσεις και στέλνει τα αποτελέσματα στο
RankingWebServer, ώστε να ανανεωθεί με την τελευταία εικόνα.
- https://github.com/cms-dev/cms - https://github.com/cms-dev/cms
- βαση!
- ισως μερικά ενδιαφεροντα εξτρα χαρακτηριστικα του cms
\subsection{Χρήση}
\section{Mooshak2} \section{Mooshak2}
\subsection{Τεχνικά Χαρακτηριστικά}
- https://mooshak.dcc.fc.up.pt/ - https://mooshak.dcc.fc.up.pt/
\subsection{Χρήση}
\section{CATS} \section{CATS}
\subsection{Τεχνικά Χαρακτηριστικά}
- https://github.com/klenin/cats-main - https://github.com/klenin/cats-main
\subsection{Χρήση}
\section{Σύγκριση με Grader}
\chapter{Υπάρχον Σύστημα} \chapter{Υπάρχον Σύστημα}
Το σύστημα αποτελείται από το το σύστημα αξιολόγησης Kewii, το backend της Το σύστημα αποτελείται από το το σύστημα αξιολόγησης Kewii, το backend της
......
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