Commit 67ccb534 authored by Antonios Angelakis's avatar Antonios Angelakis

Finish figures and listings

parent 97787d6f
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
author="Admin" inputFile="titlos.in" outputFile="titlos.out"> author="Admin" inputFile="titlos.in" outputFile="titlos.out">
<Keyword code="alg.geometry"/> <Keyword code="alg.geometry"/>
<ProblemStatement> <ProblemStatement>
Problem statement and description. Problem statement and description.
</ProblemStatement> </ProblemStatement>
...@@ -17,15 +18,15 @@ ...@@ -17,15 +18,15 @@
</OutputFormat> </OutputFormat>
<ProblemConstraints> <ProblemConstraints>
$1 \le m \le 100$, $-100 \le x_i \le 100, 0 &lt; y_i \le 100$ $1 \le m \le 100$, $-100 \le x_i \le 100, 0 &lt; y_i \le 100$
</ProblemConstraints> </ProblemConstraints>
<Sample rank="1"> <Sample rank="1">
<SampleIn> <SampleIn>
3 3
1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9
</SampleIn> </SampleIn>
<SampleOut> <SampleOut>
6 6
...@@ -38,7 +39,10 @@ $1 \le m \le 100$, $-100 \le x_i \le 100, 0 &lt; y_i \le 100$ ...@@ -38,7 +39,10 @@ $1 \le m \le 100$, $-100 \le x_i \le 100, 0 &lt; y_i \le 100$
<Import guid="std.testlib.1.1" type="checker" /> <Import guid="std.testlib.1.1" type="checker" />
<Checker name="ch" src="check.dpr" style="testlib"/> <Checker name="ch" src="check.dpr" style="testlib"/>
<TestRange from="1" to="42"><In src="tests/%0n"/><Out use="sol"/></TestRange> <TestRange from="1" to="42">
<In src="tests/%0n"/>
<Out use="sol"/>
</TestRange>
</Problem> </Problem>
</CATS> </CATS>
<?php <?php
// Connecting to a MySQL database
$user = "root"; $user = "root";
$pass = "root"; $pass = "root";
$dsn = "mysql:host=localhost;dbname=test";
$charset = "utf8"; $charset = "utf8";
$dsn = "mysql:host=localhost;dbname=test;charset=$charset";
$dbh = new PDO('mysql:host=localhost;dbname=test;charset=$charset', $user, $pass); $db = new PDO($dsn, $user, $pass);
?>
<?php
$query = "SELECT * FROM foo WHERE bar = " . $db->quote($zip); // Executing a simple query
$val = 42;
$query = "SELECT * FROM foo WHERE bar = " . $db->quote($val);
$result = $db->query($query); $result = $db->query($query);
while($row = $result->fetch(PDO::FETCH_ASSOC)) { while($row = $result->fetch(PDO::FETCH_ASSOC)) {
print_r($row); print_r($row);
} }
?>
<?php // Sequential executions of a prepared statement
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)"); $query = "INSERT INTO REGISTRY (name, value)
VALUES (:name, :value)";
$stmt = $db->prepare($query);
$stmt->bindParam(':name', $name); $stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value); $stmt->bindParam(':value', $value);
// insert one row // First execution
$name = 'one'; $name = 'one';
$value = 1; $value = 1;
$stmt->execute(); $stmt->execute();
// insert another row with different values // Second execution with different values
$name = 'two'; $name = 'two';
$value = 2; $value = 2;
$stmt->execute(); $stmt->execute();
......
...@@ -491,7 +491,10 @@ To CATS είναι το τρίτο σύστημα που θα αναλυθεί. ...@@ -491,7 +491,10 @@ To CATS είναι το τρίτο σύστημα που θα αναλυθεί.
γίνεται με το ανέβασμα ενός συμπιεσμένου αρχείου το οποίο περιέχει μια XML γίνεται με το ανέβασμα ενός συμπιεσμένου αρχείου το οποίο περιέχει μια XML
περιγραφή και τα απαραίτητα αρχεία ελέγχου. περιγραφή και τα απαραίτητα αρχεία ελέγχου.
\lstinputlisting[frame=single,captionpos=b,caption=Παράδειγμα xml]{Listings/catsexample.xml} \lstinputlisting[language=XML,frame=single,captionpos=b,caption=Παράδειγμα xml προβλήματος
CATS. Το CATS δημιουργεί την οθόνη του προβλήματος και τα χαρακτηριστικά του
σύμφωνα με το συγκεκριμένο αρχείο ενώ διαθέτει δυνατότητα παρουσίασης LaTeX
τύπων\, όπως αυτός στο ProblemConstraints.]{Listings/catsexample.xml}
\bigskip \bigskip
...@@ -1190,16 +1193,21 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -1190,16 +1193,21 @@ callback για την χρησιμοποίηση αυτών των αποτελ
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/beforesep.png} \includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/beforesep.png}
\caption[Βάση πριν το διαχωρισμό]{Διακρίνου} \caption[Προβλήματα εκτός διαγωνισμών]{Το κάτω μέρος της διαχείρισης
διαγωνισμών περιέχει τα προβλήματα που δεν έχουν ενταχτεί σε κάποιο
διαγωνισμό. Με το πράσινο κουμπί στα δεξιά μπορούν να μεταφερθούν σε
διαγωνισμό. Με τον ίδιο τρόπο μπορούν όλα τα προβλήματα να μεταφερθούν σε
καινούριους διαγωνισμούς ώστε να επαναχρησιμοποιηθούν.}
\end{figure} \end{figure}
(TODO εδώ εικόνα διαχείρισης και ισως αλλαγή αναφορών σε εικονα 1, 2 κτλ.)
\bigskip \bigskip
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/sepbefore.png} \includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/sepbefore.png}
\caption[Η αρχιτεκτονική του CMS]{Οι υπηρεσίες του CMS και οι σχέσεις μεταξύ τους} \caption[Βάση πριν το διαχωρισμό]{Οι πίνακες και οι σχέσεις τους πριν την
αλλαγή μας. Παρατηρούμε, ότι οι υποβολές δεν έχουν σύνδεση με το διαγωνισμό,
ενώ τα προβλήματα μπορούν να ανήκουν μόνο σε ένα διαγωνισμό.}
\end{figure} \end{figure}
\bigskip \bigskip
...@@ -1270,18 +1278,23 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -1270,18 +1278,23 @@ callback για την χρησιμοποίηση αυτών των αποτελ
\bigskip \bigskip
Έπειτα από τις αλλαγές που περιγράφηκαν, η νέα μορφή της βάσης φαίνεται στο σχήμα3. Έπειτα από τις αλλαγές που περιγράφηκαν, η νέα μορφή της βάσης φαίνεται στο
Ο πίνακας compproblems είναι η νέα προσθήκη που είναι αναγκαία για τη σύνδεση σχήμα 5.3. Ο πίνακας CompProblems είναι η νέα προσθήκη που είναι αναγκαία για
προβλημάτων με διαγωνισμός διατηρώντας μια κανονικοποιημένη βάση για αποφυγή του τη σύνδεση προβλημάτων με διαγωνισμός διατηρώντας μια κανονικοποιημένη βάση για
πλεονασμού δεδομένων. (TODO: ισως αναφορα σε κατι σχετικο). Νέα πεδία προστέθηκαν, αποφυγή του πλεονασμού δεδομένων. Νέα πεδία προστέθηκαν επίσης και στους
επίσης και στους πίνακες submissions και finalresults. πίνακες submissions και finalresults.
\bigskip \bigskip
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/sepafter.png} \includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/sepafter.png}
\caption[Η αρχιτεκτονική του CMS]{Οι υπηρεσίες του CMS και οι σχέσεις μεταξύ τους} \caption[Βάση μετά το διαχωρισμό]{Δημιουργήθηκε ο πίνακας CompProblems που
μας επιτρέπει τη σύνδεση προβλημάτων με πολλούς διαγωνισμούς ταυτόχρονα.
Παράλληλα, οι υποβολές απέκτησαν σύνδεση με το διαγωνισμό ώστε να
ανεξαρτητοποιηθούν από το πρόβλημα και να ανήκουν στο διαγωνισμό για τον
οποίο δημιουργήθηκαν. Επίσης, προστέθηκε και το πεδίο scoreDetailsjson στο
FinalResults.}
\end{figure} \end{figure}
\bigskip \bigskip
...@@ -1295,27 +1308,33 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -1295,27 +1308,33 @@ callback για την χρησιμοποίηση αυτών των αποτελ
επιλέγοντας διαγωνισμό. Τέλος, στο κάτω μέρος της οθόνης, όπου αναγράφονταν τα επιλέγοντας διαγωνισμό. Τέλος, στο κάτω μέρος της οθόνης, όπου αναγράφονταν τα
ανένταχτα προβλήματα, κρίθηκε προτιμότερο να αναγράφονται όλα τα προβλήματα ανένταχτα προβλήματα, κρίθηκε προτιμότερο να αναγράφονται όλα τα προβλήματα
ώστε να είναι ευκολότερο να αναζητηθεί και να αντιγραφεί κάποιο σε ένα νέο ώστε να είναι ευκολότερο να αναζητηθεί και να αντιγραφεί κάποιο σε ένα νέο
διαγωνισμό. Η νέα διαχείριση παρουσιάζεται στις φωτογραφίες 5.2 και 5.3. διαγωνισμό. Η νέα διαχείριση παρουσιάζεται στις φωτογραφίες 5.4 και 5.5.
\bigskip \bigskip
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/aftersep.png} \includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/aftersep.png}
\caption[Η αρχιτεκτονική του CMS]{Οι υπηρεσίες του CMS και οι σχέσεις μεταξύ τους} \caption[Διαχείριση διαγωνισμών με αντιγραφή προβλημάτων]{Η διαχείριση διαγωνισμών
δεν έχει κάποια διαφορά εμφανισιακά, αλλά πλέον επιτρέπεται η χρήση ενός
προβλήματος σε πολλαπλούς διαγωνισμούς, όπως φαίνεται στο πρόβλημα sudokugame.
Το πρώην πλήκτρο μεταφοράς στα δεξιά κάθε προβλήματος πλέον αντιγράφει το πρόβλημα
στον επιλεγμένο διαγωνισμό.}
\end{figure} \end{figure}
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/aftersepall.png} \includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/aftersepall.png}
\caption[Η αρχιτεκτονική του CMS]{Οι υπηρεσίες του CMS και οι σχέσεις μεταξύ τους} \caption[Εμφάνιση όλων των προβλημάτων]{Το κάτω μέρος της διαχείρισης
επανασχεδιάστηκε ώστε να περιέχει όλα τα προβλήματα για εύκολη επισκόπηση,
τροποποίηση τους και αντιγραφή τους σε διαγωνισμούς.}
\end{figure} \end{figure}
\bigskip \bigskip
Μια ενδιαφέρουσα παρατήρηση είναι ότι η αντιγραφή ενός προβλήματος σε νέο Μια ενδιαφέρουσα παρατήρηση είναι ότι η αντιγραφή ενός προβλήματος σε νέο
διαγωνισμό, απλά αλλάζει τους συσχετισμούς στη βάση, προσθέτοντας μια νέα διαγωνισμό, απλά αλλάζει τους συσχετισμούς στη βάση, προσθέτοντας μια νέα
εγγραφή στον compproblems. Τόσο τα αρχεία ελέγχου, που είναι αποθηκευμένα στο εγγραφή στον CompProblems. Τόσο τα αρχεία ελέγχου, που είναι αποθηκευμένα στο
δίσκο του εξυπηρετητή για να διαβάζονται από τον Kewii, όσο και οι ομάδες δίσκο του εξυπηρετητή για να διαβάζονται από τον Kewii, όσο και οι ομάδες
αρχείων ελέγχου, που αντιστοιχίζονται στη βάση με τα προβλήματα, δεν αρχείων ελέγχου, που αντιστοιχίζονται στη βάση με τα προβλήματα, δεν
αντιγράφονται και, ως αποτέλεσμα χαρακτηρίζουν το πρόβλημα σε όλους τους αντιγράφονται και, ως αποτέλεσμα χαρακτηρίζουν το πρόβλημα σε όλους τους
...@@ -1337,8 +1356,6 @@ callback για την χρησιμοποίηση αυτών των αποτελ ...@@ -1337,8 +1356,6 @@ callback για την χρησιμοποίηση αυτών των αποτελ
\subsection{Προσθήκη γλωσσών στο Grader/Kewii} \subsection{Προσθήκη γλωσσών στο Grader/Kewii}
% TODO: ερωτηση παπασπυρου για chroot jail
Ο Grader, όπως έχει αναφερθεί και σε προηγούμενα κεφάλαια, επιτρέπει Ο Grader, όπως έχει αναφερθεί και σε προηγούμενα κεφάλαια, επιτρέπει
στους διαγωνιζόμενους την υποβολή λύσεων σε οποιαδήποτε γλώσσα στους διαγωνιζόμενους την υποβολή λύσεων σε οποιαδήποτε γλώσσα
προγραμματισμού από τις υποστηριζόμενες. Οι υποστηριζόμενες γλώσσες προγραμματισμού από τις υποστηριζόμενες. Οι υποστηριζόμενες γλώσσες
...@@ -1500,12 +1517,18 @@ descriptor.json στο οποίο έχουν συμπληρωθεί όλα τα ...@@ -1500,12 +1517,18 @@ descriptor.json στο οποίο έχουν συμπληρωθεί όλα τα
\FloatBarrier \FloatBarrier
\lstinputlisting[frame=single,captionpos=b,caption=Παράδειγμα descriptor.json]{Listings/descriptordiploma.json} \lstinputlisting[frame=single,captionpos=b,caption=Παράδειγμα descriptor.json.
Το συγκεκριμένο αρχείο περιγράφει 4 αρχεία ελέγχου σε 3 ομάδες αρχείων. Ακόμα
δίνει τη μορφή ονομασίας των αρχείων εισόδου και
εξόδου.]{Listings/descriptordiploma.json}
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/massupload.png} \includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/massupload.png}
\caption[Η αρχιτεκτονική του CMS]{Οι υπηρεσίες του CMS και οι σχέσεις μεταξύ τους} \caption[Προσθήκη επιλογής μαζικού ανεβάσματος αρχείων]{Η επιλογή μαζικού
ανεβάσματος αρχείων ελέγχου τοποθετήθηκε κάτω από το ανέβασμα μεμονωμένων αρχείων.
Στον τίτλο συμπεριλήφθηκε και η προειδοποίηση για τη διαγραφή υπαρχόντων αρχείων
και ομάδων κατά το ανέβασμα.}
\end{figure} \end{figure}
\subsection{Εργαλείο δημιουργίας} \subsection{Εργαλείο δημιουργίας}
...@@ -1529,7 +1552,9 @@ descriptor.json αρχείου. ...@@ -1529,7 +1552,9 @@ descriptor.json αρχείου.
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/interactive.png} \includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/interactive.png}
\caption[Παράδειγμα χρήσης interactive generator script]{Οι υπηρεσίες του CMS και οι σχέσεις μεταξύ τους} \caption[Εκτέλεση διαδραστικού generator αρχείου descriptor.json]{Ένα παράδειγμα
εκτέλεσης του generatejson.py για την αυτόματη παραγωγή του απαραίτητου
descriptor.json. Οι εντολές του χρήστη είναι υπογραμμισμένες.}
\end{figure} \end{figure}
\section{Αλλαγή MySQL connector} \section{Αλλαγή MySQL connector}
...@@ -1555,7 +1580,9 @@ manual της PHP (https://secure.php.net/manual/en/mysql.php TODO). ...@@ -1555,7 +1580,9 @@ manual της PHP (https://secure.php.net/manual/en/mysql.php TODO).
\begin{figure} \begin{figure}
\centering \centering
\includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/mysqlconnectors.png} \includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/mysqlconnectors.png}
\caption[Παράδειγμα χρήσης interactive generator script]{Οι υπηρεσίες του CMS και οι σχέσεις μεταξύ τους} \caption[Σύγκριση των επεκτάσεων MySQL της PHP]{Οι δυνατότητες των επίσημων
επεκτάσεων της PHP για επικοινωνία με MySQL βάση. Παρατηρούμε ότι mysqli και
PDO\_MySQL είναι εξίσου καλές επιλογές.}
\end{figure} \end{figure}
\bigskip \bigskip
...@@ -1629,7 +1656,7 @@ execute. Η επέκταση εμπεριέχει, επίσης, και δική ...@@ -1629,7 +1656,7 @@ execute. Η επέκταση εμπεριέχει, επίσης, και δική
\FloatBarrier \FloatBarrier
\lstinputlisting[frame=single,captionpos=b,caption=Παραδείγματα χρήσης PDO]{Listings/pdoexamples.php} \lstinputlisting[frame=single,captionpos=b,caption=Παραδείγματα χρήσης PDO για σύνδεσή με βάση\, εκτέλεση απλών queries και εκτέλεση prepared statement.]{Listings/pdoexamples.php}
\chapter{Συμπεράσματα} \chapter{Συμπεράσματα}
......
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