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

Finish figures and listings

parent 97787d6f
......@@ -4,6 +4,7 @@
author="Admin" inputFile="titlos.in" outputFile="titlos.out">
<Keyword code="alg.geometry"/>
<ProblemStatement>
Problem statement and description.
</ProblemStatement>
......@@ -17,15 +18,15 @@
</OutputFormat>
<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>
<Sample rank="1">
<SampleIn>
3
1 2 3
4 5 6
7 8 9
<SampleIn>
3
1 2 3
4 5 6
7 8 9
</SampleIn>
<SampleOut>
6
......@@ -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" />
<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>
</CATS>
<?php
// Connecting to a MySQL database
$user = "root";
$pass = "root";
$dsn = "mysql:host=localhost;dbname=test";
$charset = "utf8";
$dsn = "mysql:host=localhost;dbname=test;charset=$charset";
$dbh = new PDO('mysql:host=localhost;dbname=test;charset=$charset', $user, $pass);
?>
<?php
$db = new PDO($dsn, $user, $pass);
$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);
while($row = $result->fetch(PDO::FETCH_ASSOC)) {
print_r($row);
}
?>
<?php
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
// Sequential executions of a prepared statement
$query = "INSERT INTO REGISTRY (name, value)
VALUES (:name, :value)";
$stmt = $db->prepare($query);
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);
// insert one row
// First execution
$name = 'one';
$value = 1;
$stmt->execute();
// insert another row with different values
// Second execution with different values
$name = 'two';
$value = 2;
$stmt->execute();
......
......@@ -491,7 +491,10 @@ To CATS είναι το τρίτο σύστημα που θα αναλυθεί.
γίνεται με το ανέβασμα ενός συμπιεσμένου αρχείου το οποίο περιέχει μια 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
......@@ -1190,16 +1193,21 @@ callback για την χρησιμοποίηση αυτών των αποτελ
\begin{figure}
\centering
\includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/beforesep.png}
\caption[Βάση πριν το διαχωρισμό]{Διακρίνου}
\caption[Προβλήματα εκτός διαγωνισμών]{Το κάτω μέρος της διαχείρισης
διαγωνισμών περιέχει τα προβλήματα που δεν έχουν ενταχτεί σε κάποιο
διαγωνισμό. Με το πράσινο κουμπί στα δεξιά μπορούν να μεταφερθούν σε
διαγωνισμό. Με τον ίδιο τρόπο μπορούν όλα τα προβλήματα να μεταφερθούν σε
καινούριους διαγωνισμούς ώστε να επαναχρησιμοποιηθούν.}
\end{figure}
(TODO εδώ εικόνα διαχείρισης και ισως αλλαγή αναφορών σε εικονα 1, 2 κτλ.)
\bigskip
\begin{figure}
\centering
\includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/sepbefore.png}
\caption[Η αρχιτεκτονική του CMS]{Οι υπηρεσίες του CMS και οι σχέσεις μεταξύ τους}
\caption[Βάση πριν το διαχωρισμό]{Οι πίνακες και οι σχέσεις τους πριν την
αλλαγή μας. Παρατηρούμε, ότι οι υποβολές δεν έχουν σύνδεση με το διαγωνισμό,
ενώ τα προβλήματα μπορούν να ανήκουν μόνο σε ένα διαγωνισμό.}
\end{figure}
\bigskip
......@@ -1270,18 +1278,23 @@ callback για την χρησιμοποίηση αυτών των αποτελ
\bigskip
Έπειτα από τις αλλαγές που περιγράφηκαν, η νέα μορφή της βάσης φαίνεται στο σχήμα3.
Ο πίνακας compproblems είναι η νέα προσθήκη που είναι αναγκαία για τη σύνδεση
προβλημάτων με διαγωνισμός διατηρώντας μια κανονικοποιημένη βάση για αποφυγή του
πλεονασμού δεδομένων. (TODO: ισως αναφορα σε κατι σχετικο). Νέα πεδία προστέθηκαν,
επίσης και στους πίνακες submissions και finalresults.
Έπειτα από τις αλλαγές που περιγράφηκαν, η νέα μορφή της βάσης φαίνεται στο
σχήμα 5.3. Ο πίνακας CompProblems είναι η νέα προσθήκη που είναι αναγκαία για
τη σύνδεση προβλημάτων με διαγωνισμός διατηρώντας μια κανονικοποιημένη βάση για
αποφυγή του πλεονασμού δεδομένων. Νέα πεδία προστέθηκαν επίσης και στους
πίνακες submissions και finalresults.
\bigskip
\begin{figure}
\centering
\includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/sepafter.png}
\caption[Η αρχιτεκτονική του CMS]{Οι υπηρεσίες του CMS και οι σχέσεις μεταξύ τους}
\caption[Βάση μετά το διαχωρισμό]{Δημιουργήθηκε ο πίνακας CompProblems που
μας επιτρέπει τη σύνδεση προβλημάτων με πολλούς διαγωνισμούς ταυτόχρονα.
Παράλληλα, οι υποβολές απέκτησαν σύνδεση με το διαγωνισμό ώστε να
ανεξαρτητοποιηθούν από το πρόβλημα και να ανήκουν στο διαγωνισμό για τον
οποίο δημιουργήθηκαν. Επίσης, προστέθηκε και το πεδίο scoreDetailsjson στο
FinalResults.}
\end{figure}
\bigskip
......@@ -1295,27 +1308,33 @@ callback για την χρησιμοποίηση αυτών των αποτελ
επιλέγοντας διαγωνισμό. Τέλος, στο κάτω μέρος της οθόνης, όπου αναγράφονταν τα
ανένταχτα προβλήματα, κρίθηκε προτιμότερο να αναγράφονται όλα τα προβλήματα
ώστε να είναι ευκολότερο να αναζητηθεί και να αντιγραφεί κάποιο σε ένα νέο
διαγωνισμό. Η νέα διαχείριση παρουσιάζεται στις φωτογραφίες 5.2 και 5.3.
διαγωνισμό. Η νέα διαχείριση παρουσιάζεται στις φωτογραφίες 5.4 και 5.5.
\bigskip
\begin{figure}
\centering
\includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/aftersep.png}
\caption[Η αρχιτεκτονική του CMS]{Οι υπηρεσίες του CMS και οι σχέσεις μεταξύ τους}
\caption[Διαχείριση διαγωνισμών με αντιγραφή προβλημάτων]{Η διαχείριση διαγωνισμών
δεν έχει κάποια διαφορά εμφανισιακά, αλλά πλέον επιτρέπεται η χρήση ενός
προβλήματος σε πολλαπλούς διαγωνισμούς, όπως φαίνεται στο πρόβλημα sudokugame.
Το πρώην πλήκτρο μεταφοράς στα δεξιά κάθε προβλήματος πλέον αντιγράφει το πρόβλημα
στον επιλεγμένο διαγωνισμό.}
\end{figure}
\begin{figure}
\centering
\includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/aftersepall.png}
\caption[Η αρχιτεκτονική του CMS]{Οι υπηρεσίες του CMS και οι σχέσεις μεταξύ τους}
\caption[Εμφάνιση όλων των προβλημάτων]{Το κάτω μέρος της διαχείρισης
επανασχεδιάστηκε ώστε να περιέχει όλα τα προβλήματα για εύκολη επισκόπηση,
τροποποίηση τους και αντιγραφή τους σε διαγωνισμούς.}
\end{figure}
\bigskip
Μια ενδιαφέρουσα παρατήρηση είναι ότι η αντιγραφή ενός προβλήματος σε νέο
διαγωνισμό, απλά αλλάζει τους συσχετισμούς στη βάση, προσθέτοντας μια νέα
εγγραφή στον compproblems. Τόσο τα αρχεία ελέγχου, που είναι αποθηκευμένα στο
εγγραφή στον CompProblems. Τόσο τα αρχεία ελέγχου, που είναι αποθηκευμένα στο
δίσκο του εξυπηρετητή για να διαβάζονται από τον Kewii, όσο και οι ομάδες
αρχείων ελέγχου, που αντιστοιχίζονται στη βάση με τα προβλήματα, δεν
αντιγράφονται και, ως αποτέλεσμα χαρακτηρίζουν το πρόβλημα σε όλους τους
......@@ -1337,8 +1356,6 @@ callback για την χρησιμοποίηση αυτών των αποτελ
\subsection{Προσθήκη γλωσσών στο Grader/Kewii}
% TODO: ερωτηση παπασπυρου για chroot jail
Ο Grader, όπως έχει αναφερθεί και σε προηγούμενα κεφάλαια, επιτρέπει
στους διαγωνιζόμενους την υποβολή λύσεων σε οποιαδήποτε γλώσσα
προγραμματισμού από τις υποστηριζόμενες. Οι υποστηριζόμενες γλώσσες
......@@ -1500,12 +1517,18 @@ descriptor.json στο οποίο έχουν συμπληρωθεί όλα τα
\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}
\centering
\includegraphics[scale=0.4,trim=4 4 4 4,clip]{Figures/massupload.png}
\caption[Η αρχιτεκτονική του CMS]{Οι υπηρεσίες του CMS και οι σχέσεις μεταξύ τους}
\caption[Προσθήκη επιλογής μαζικού ανεβάσματος αρχείων]{Η επιλογή μαζικού
ανεβάσματος αρχείων ελέγχου τοποθετήθηκε κάτω από το ανέβασμα μεμονωμένων αρχείων.
Στον τίτλο συμπεριλήφθηκε και η προειδοποίηση για τη διαγραφή υπαρχόντων αρχείων
και ομάδων κατά το ανέβασμα.}
\end{figure}
\subsection{Εργαλείο δημιουργίας}
......@@ -1529,7 +1552,9 @@ descriptor.json αρχείου.
\begin{figure}
\centering
\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}
\section{Αλλαγή MySQL connector}
......@@ -1555,7 +1580,9 @@ manual της PHP (https://secure.php.net/manual/en/mysql.php TODO).
\begin{figure}
\centering
\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}
\bigskip
......@@ -1629,7 +1656,7 @@ execute. Η επέκταση εμπεριέχει, επίσης, και δική
\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{Συμπεράσματα}
......
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