maellak / openeclass Goto Github PK
View Code? Open in Web Editor NEWThe Open eClass Platform 3.0 - maellak fork
Home Page: http://www.openeclass.org/
The Open eClass Platform 3.0 - maellak fork
Home Page: http://www.openeclass.org/
Homework 4ου workshop
Φέρνει τις περιοχές συζητήσεων που ανήκουν στο μάθημα :cid
Ο χρήστης θα πρέπει να μπορεί να ορίζει το κλειδί για το hackerearth μέσα από σελίδα που θα υπάρχει στο interface του διαχειριστή πλατφόρμας και όχι από το config.php
Video παρουσίασης των functions του αυτόματου κριτή.
Μέγιστη διάρκεια 5:00.
Ουσιαστικά πρόκειται για screen capture με αφήγηση.
Ότι υλικό χρειάζεται π.χ λογότυπα ή εργαλεία θα δοθεί.
Στο τέλος της εγκατάστασης εμφανιστηκε το παρακάτω sql error. Ολοκληρώθηκε κανονικά όμως. Το βάζω εδώ να το κοιτάξουμε σε περίπτωση που μας δημιουργήσει πρόβλημα.
In file C:\xampp\htdocs\openeclass\install\install_db.php on line 684
Error: Unable to execute statement with error: "You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to
use near ' `attempt_status` tinyint(4) NOT NULL DEFAULT 1, ' at line 9" (SQLSTATE=1064 ERROR=42000)
[Statement='CREATE TABLE IF NOT EXISTS `exercise_user_record` ( `eurid` INT(11) NOT NULL AUTO_INCREMENT
PRIMARY KEY, `eid` INT(11) NOT NULL DEFAULT 0, `uid` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT 0,
`record_start_date` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `record_end_date` DATETIME DEFAULT NULL,
`total_score` INT(11) NOT NULL DEFAULT 0, `total_weighting` INT(11) DEFAULT 0, `attempt` INT(11) NOT NULL DEFAULT 0),
`attempt_status` tinyint(4) NOT NULL DEFAULT 1, `secs_remaining` INT(11) NOT NULL DEFAULT '0')
DEFAULT CHARACTER SET=utf8' Elapsed=0.00097599999999998]
Αυτή τη στιγμή το expected output που ορίζει ο καθηγητής πρέπει να είναι απολύτως ίδιο με αυτό που επιστρέφει το πρόγραμμα που ανέβασε ο φοιτητής αλλιώς το σενάριο θεωρούμε ότι απέτυχε.
Αυτό θα θέλαμε να γίνει πιο παραμετροποιήσιμο, επιτρέποντας στον καθηγητή να ορίζει και τον τελεστή ελέγχου όταν δημιουργεί ένα σενάριο (πχ. =, !=, >, >=, <, <=, contains, !contains, startsWith, endsWith, κτλ.). Στο UI αυτό μπορεί να αναπαρασταθεί ως ένα select element με όλους τους πιθανούς τελεστές ως επιλογές.
Για την υλοποίηση των ελέγχων προτείνεται η χρήστη της βιβλιοθήκης https://github.com/beberlei/assert που επιτρέπει τη δημιουργία πολλαπλών και σύνθετων assertions.
Θα επιτρέπει στον χρήστη να δει τα διαθέσιμα μαθήματα, να φιλτράρει με βάση αυτά που είναι εγγεγγραμμένος και αν η πολιτική των μαθημάτων το επιτρέπει να εγγραφεί και να διαγραφεί από μαθήματα.
Αυτή η οθόνη θα εμφανίζει τα posts ενός forum (που ανήκει σε κάποιο μάθημα)
Η πρώτη σελίδα που θα βλέπει ο χρήστης μόλις αυθεντικοποιηθεί. Θα έχει τις ανακοινώσεις από όλα τα μαθήματα που είναι εγγεγραμμένος. Στην αρχική έκδοση δεν θα υπάρχει διαχωρισμός αναγνωσμένων και μη-αναγνωσμέων. Η ανακοίνωση μπορεί να περιέχει και link προς το μάθημα (θα το δούμε στη φάση design με τους εκπαιδευόμενους).
Αυτό το call θα μαρκάρει ένα announcement ώς read. Αυτό θα γίνεται μέσω ενός νέου πίνακα announcements_users όπου θα κρατάμε announcement id (ann_id), user_id και timestamp του πότε διαβάστηκε.
Το GET announcements θα τροποποιηθεί κατάλληλα ώστε να αξιοποιεί αυτό τον πίνακα και να επιστρέφει ένα attribute του αν διαβάστηκε ή όχι. (δεν είναι μέρους αυτού του task)
Στη διάρκεια των workshops των σεμιναρίων προσθέσαμε κάποιες νέες στήλες στη βάση. Το install.php θα πρέπει να τροποποιηθεί κατάλληλα ώστε να τις προσθέτει.
Ο κώδικας που αναπτύχθηκε για τον κριτή είναι άμεσα συνδεδμένος με τη χρήση της υπηρεσίας hackerearth για το compilation/execution. Αυτό θα πρέπει να αλλάξει και ο κώδικας που αφορά το συγκεκριμένο μέρος να γίνει modular ώστε να μπορούν εύκολα να προσθαφαιρούνται άλλες αντίστοιχες υπηρεσίες.
Μια πιθανή αντίστοιχη υπηρεσία είναι το http://compileonline.com/
Εμφανίζει στον χρήστη τα έγγραφα που έχουν αναρτηθεί σε ένα μάθημα χρησιμοποιώντας τον πόρο που δημιούργησε η ομάδα server. Θα υποστηρίζει τη δυνατότητα εμφάνισης κάποιων τύπων εγγράφων (πχ. pdf) απευθείας μέσα από την εφαρμογή στον κατάλληλο viewer.
Αυτό το resource θα δημιουργεί ένα νέο post σε ένα υπάρχον topic.
Φέρνει τα posts που ανήκουν στην περιοχή συζητήσεων με id :did που ανήκει στο μάθημα :cid
Όποιος θέλει να ασχοληθεί με html.
Ο Απόστολος ζήτησε να στέλνουμε ένα άσσο κάτι σαν ping για να ελέγχει εάν έχει net το κινητό.
Σε αυτή την οθόνη ο χρήστης θα μπορεί να γράψει ένα νέο topic σε forum (ας μη βάλουμε replies προς το παρόν)
Η βαθμολογία αυτή τη στιγμή βγαίνει βάσει των σεναρίων που πέρασαν/τον συνολικό αριθμό σεναρίων. Για να είναι πιο customizable θα πρέπει κατά τη δημιουργία ενός σεναρίου να μπορεί να οριστεί ένα βάρος σε μια κλίμακα 1-10 και ο βαθμός να προκύπτει λαμβάνοντας υπόψη τα βάρη κάθε σεναρίου.
Οκ, πιστεύω να έκανα σωστά τη μετατροπή :p
Επίσης έκανα sync με upstream. Το θέμα είναι ότι αν δουλέψουν την επομενη φορα από το master θα εχουν εξαφανιστει τα μαθηματα, καθως ο φακελος courses σβήστηκε.
Αυτό είναι το commit, ελπίζω να μην έχει σβηστεί κάτι άλλο. Το student_view.php
δεν ξερω πως δημιουργηθηκε, δεν το εχουν ουτε στο .hgignore
.
Αυτή η οθόνη θα εμφανίζει μια λίστα με τα forums ενός μαθήματος
Αυτός ο πορος θα αφορά τις ανακοινώσεις από όλα τα μαθήματα στα οποία είναι εγγεγραμμένος ο φοιτητής (θα κάνει δηλαδή aggregation). Θα υποστηρίζει μόνο μέθοδο GET.
Όταν μια εργασία διορθώνεται με τη βοήθεια αυτόματου κριτή, εμφανίζονται δύο flash messages ως εξής (και όπως φαίνεται αναλυτικότερα στο συννημένο screenshot):
Αυτά θα πρέπει να συγχωνευτούν σε ένα, ιδανικά με διαφορετικό κείμενο όταν γίνεται αυτόματη διόρθωση μέσω κριτή.
Αυτό το call θα δέχεται το access_token και θα επιστρέφει απλά true αν ο χρήστης είναι logged-in ή EXPIRED αν το access_token έχει λήξει.
Το συγκεκριμένο θα αφορά ένα νέο αυτόνομο εργαλείο ανεξάρτητο από τον κριτή (αν και θα μοιράζεται κώδικα). Μέσα από το εργαλείο κάθε φοιτητής θα μπορεί να δημιουργεί “Σενάρια Αυτοαξιολόγησης” (ΣΑ). Κάθε ΣΑ περιέχει σενάρια με input και expected output αντίστοιχα με τον τρόπο που τα ορίζει ο καθηγητής κατά τη δημιουργία εργασίας.
Στη συνέχεια θα μπορεί να ανεβάζει αρχεία σε ένα ΣΑ και να λαμβάνει ένα αντίστοιχο report με αυτό των εργασιών. Η ιδέα είναι το εργαλείο να διδάσκει τον φοιτητή πως μπορεί να δοκιμάσει τον κώδικα του και τι θα πρέπει να ελέγχει για να καλύψει τα διάφορα ενδεχόμενα edge-cases.
Απλός code editor με syntax highlighting και δυνατότητα ανεβάσματος εργασίας χωρίς να χρειάζεται τοπική έκδοση του αρχείου στον υπολογιστή του φοιτητή
Το συγκεκριμένο bug εμποδίζει την δημιουργία εργασιών χωρίς κριτή.
Για την ομάδα του PR #82
Αυτός ο πόρος θα αφορά τα έγγραφα που έχουν αναρτηθεί σ ένα μάθημα (παρουσιάσεις, σημειώσεις κτλ.). Θα υποστηρίζει μόνο μέθοδο GET. Επιπλέον θα επιτρέπει το "κατέβασμα" ενός εγγράφου μέσα από URL του τύπου /courses/:cid/documents/:did
Επειδή ασχολούμαστε τώρα με issue 70, το οποίο κάνουμε χρησιμοποιώντας σαν βάση τον κώδικα για το issue 69, θεωρώ ότι ενδεχομένως να υπάρχει ένα πρόβλημα στο issue 69. Συγκεκριμένα, στην γραμμη 80 του work_result_rpt
function get_assignment_submit_details($sid) {
return Database::get()->querySingle("SELECT * FROM assignment_submit WHERE id = ?d",$sid);
}
τραβάει το assignment_submit_details με βάση τον κωδικό του assignment μόνο, ενώ θα έπρεπε να ελέγχει και το uid. Αν υποβληθούν παραπάνω από μία submits θα υπάρχει προβλημα
Αυτός ο πόρος θα αφορά τα μαθήματα στα οποία έχει εγγραφεί ο φοιτητής. Θα υποστηρίζει μεθόδους GET, POST, DELETE. Η εγγραφή/διαγραφή θα γίνεται μέσα από URL του τύπου /enrolled_courses/:cid
Αυτός ο πόρος θα αφορά τα μαθήματα που έχουν καταχωρηθεί στο openclass. Θα υποστηρίζει μεθόδους GET. Αυτός ο πόρος δεν απαιτεί αυθεντικοποίηση (όπως και στο κανονικό openclass).
Όποιος θέλει να ασχοληθεί με javascript.
Αυτυό το resource θα επιστρέφει τα posts που ανήκουν σε ένα topic.
Αυτός ο πόρος θα επιστρέφει τις ανακοινώσεις στα ίδια πλαίσια με το GET /announcements, αλλά επιπρόσθετα θα εμφανίζει και αναρτήσεις εγγράφων, ασκήσεων και εργασιών.
Δημιουργεί ένα νέο post στην περιοχή συζητήσεων με id :did που ανήκει στο μάθημα :cid
Όποιος θέλει να ασχοληθεί με css.
Σε περίπτωση που είναι κενή, η υποβολή θα πρέπει να διακόπτεται και να εμφανίζεται σχετικό error message.
Το πρόβλημα παρατηρήθηκε στο pull request #78
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.