Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

OPENECLASS & HACKEREARTH API Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας Δημοσθένης Νικούδης Κύκλος Εκπαίδευσης «Συστήματα Ηλεκτρονικής Μάθησης & Ηλεκτρονική Αξιολόγηση»

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "OPENECLASS & HACKEREARTH API Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας Δημοσθένης Νικούδης Κύκλος Εκπαίδευσης «Συστήματα Ηλεκτρονικής Μάθησης & Ηλεκτρονική Αξιολόγηση»"— Μεταγράφημα παρουσίασης:

1 OPENECLASS & HACKEREARTH API Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας Δημοσθένης Νικούδης Κύκλος Εκπαίδευσης «Συστήματα Ηλεκτρονικής Μάθησης & Ηλεκτρονική Αξιολόγηση»

2 Στόχος  Θα δημιουργήσουμε μια διασύνδεση του Openeclass με το API του hackerearth.com έτσι ώστε όταν ανεβαίνει μια εργασία με κατάληξη.py, αυτή να εκτελείται και το output να προστίθεται ως σχόλιο βαθμολογητή.  Στη συνέχεια θα τροποποιήσουμε το interface του εργαλείου εισαγωγής εργασίας, ώστε να υπάρχει ένα checkbox που θα επιτρέπει στον καθηγητή να ενεργοποιεί ή να απενεργοποιεί αυτή τη λειτουργία σε επίπεδο εργασίας.

3 Βήμα 1: Προετοιμασία  Προσθέτουμε το API key του hackerearth στο αρχείο config/config.php  $hackerEarthKey = 'ef34f0279e1af1fd967cbf7bd6562bece9e05041';  Δημιουργούμε τη στήλη auto_judge (INT(1) ή αλλιώς TINYINT) στον πίνακα assignments στη βάση δεδομένων του openeclass

4

5

6

7

8

9

10 Βήμα 2: Εύρεση κώδικα υποβολής νέας εργασίας  Στο αρχείο modules/work/index.php βρίσκουμε τη συνάρτηση submit_work στη γραμμή 392:  function submit_work($id, $on_behalf_of = null) {  Στη συνέχεια βρίσκουμε το τέλος του if($submit_ok) { στη γραμμή 525

11

12 Βήμα 3: Προσθήκη λειτουργικότητας // Auto-judge: Send file to hackearth global $hackerEarthKey; $content = file_get_contents("$workPath/$filename"); //set POST variables $url = 'http://api.hackerearth.com/code/run/'; $fields = array('client_secret' => $hackerEarthKey, 'source' => $content, 'lang' => 'PYTHON'); //url-ify the data for the POST foreach($fields as $key=>$value) { $fields_string.= $key.'='.$value.'&'; } rtrim($fields_string, '&'); //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //execute post $result = curl_exec($ch); $result = json_decode($result, true); $result['run_status']['output'] = trim($result['run_status']['output']); // Add the output as a comment submit_grade_comments($id, $sid, 10, 'Output: '.$result['run_status']['output'], false); // End Auto-judge

13

14 Βήμα 4: Εύρεση κώδικα φόρμας δημιουργίας εργασίας  Στο αρχείο modules/work/index.php βρίσκουμε τη συνάρτηση new_assignment στη γραμμή 554:  function new_assignment() {  Η μεταβλητή $tool_content περιέχει τον κώδικα html που εμφανίζεται μέσα στο εργαλείο  Βρίσκουμε τον παρακάτω κώδικα στη γραμμή 596: $m[WorkAssignTo]: Όλους $m[WorkToUser]

15

16 Βήμα 5: Τροποποίηση φόρμας  Προσθέτουμε τα παρακάτω: Auto-judge:

17

18 Βήμα 6: Εύρεση κώδικα δημιουργίας εργασίας  Στο αρχείο modules/work/index.php βρίσκουμε τη συνάρτηση add_assignment στη γραμμή 318:  function add_assignment() {  Οι μεταβλητές από τη φόρμα ανακτώνονται και φιλτράρονται στις γραμμές 321-329

19 Βήμα 7: Προσθήκη κώδικα δημιουργίας εργασίας  Στη γραμμή 329 προσθέστε:  $auto_judge = filter_input(INPUT_POST, 'auto_judge', FILTER_VALIDATE_INT);  Τροποποιούμε τη γραμμή 337 προσθέτοντας το νέο πεδίο auto_judge ώστε να καταχωρείται στη βάση

20

21

22

23

24

25

26 Βήμα 8: Προσθήκη ελέγχου στον κώδικα υποβολής εργασίας  Τροποποιούμε τη γραμμή 425  $row = Database::get()->querySingle("SELECT title, group_submissions FROM assignment WHERE course_id = ?d AND id = ?d", $course_id, $id);  Προσθέτουμε στο select το πεδίο auto_judge, δηλαδή SELECT title, group_submissions, auto_judge  2 γραμμές παρακάτω δημιουργούμε τη μεταβλητή: $auto_judge = $row->auto_judge;

27 Βήμα 8: Προσθήκη ελέγχου στον κώδικα υποβολής εργασίας  Επιστρέφουμε τον κώδικα του βήματος 3 και βάζουμε όλο το block μέσα σε ένα if  if($auto_judge) { … }

28

29

30

31

32

33 Ασκήσεις 1. Βελτιώστε τον κώδικα ώστε να λειτουργεί όχι μόνο για αρχεία Python αλλά για όλες τις γλώσσες που υποστηρίζει το hackerearth. Hint: Οι υποστηριζόμενες γλώσσες βρίσκονται στο documentation developer.hackerearth.comdeveloper.hackerearth.com 2. Προσθέστε τη δυνατότητα ο καθηγητής να επιλέγει, σε επίπεδο εργασίας, για ποιες γλώσσες θα είναι ενεργοποιημένη/απενεργοποιημένη η παραπάνω λειτουργικότητα.

34 Σας ευχαριστώ πολύ Ερωτήσεις; Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας


Κατέβασμα ppt "OPENECLASS & HACKEREARTH API Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας Δημοσθένης Νικούδης Κύκλος Εκπαίδευσης «Συστήματα Ηλεκτρονικής Μάθησης & Ηλεκτρονική Αξιολόγηση»"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google