Tutorial vmchecker

Descriere

vmchecker este o aplicație de testare automată a temelor. Este un produs open-source realizat de către și pentru studenții din Facultatea de Automatică și Calculatoare - UPB, și este menit atât să ușureze munca asistenților de a corecta teme cât și sa ofere studenților o evaluare cât mai obiectivă (https://vmchecker.cs.pub.ro/ui/)

Setup

Pentru a putea efectua modificări din serverul vmchecker este necesară conectarea la acesta prin intermediul unei chei ssh RSA. Un user nou va trebui să-și genereze această cheie și să o trimită către echipă pentru a i se acorda acces la server.

Generarea unei chei ssh

În funcție de sistemul de operare:

În directorul .ssh vor exista după generare două chei: una privată - id_rsa și una publică - id_rsa.pub. Cheia care va fi adăugată în server este cea publică, iar utilizatorul se va conecta la server cu cea privată.

Conectarea la server

Odată ce utilizatorul are acces la server, se poate conecta utilizând comanda:

ssh -i .ssh/id_rsa ac@elf.cs.pub.ro

Parola solicitată este aceea folosită la generarea cheii RSA.

Serverul vmchecker @AC

/home/ac (unde se poate ajunge utilizând comanda cd ~) reprezintă spațiul în care membrii echipei AC au acces la date și pot efectua modificări. Este recomandat ca orice modificare să fie făcută cu mare atenție, având în vedere că nu există backup pentru datele din server.

Oferirea drepturilor de acces la vmchecker unui nou utilizator

vi ~/.ssh/authorized_keys

Apăsați tasta I pentru a modifica în fișier. (În cazul în care vreți să ieșiți fără salvați modificările, apăsați Esc și introduceți :q! ) Copiați cheia publică oferită de noul membru în acest fișier și salvați (apăsați Esc și introduceți :wq)

Notare studenți utilizând vmchecker

Pentru a accesa ultima versiune a temei încărcată de un student:

cd ~/vmchecker-storer/repo/tema<X>/<nume_student>/current/

Unde <X> este indexul temei iar <nume_student> este userul studentului de pe moodle (implicit contul e vmchecker)

În acest director vor exista: arhiva propriu-zisă, conținutul arhivei (în git) și rezultatele vmchecker-ului (în results)

Feedback-ul vmchecker ului va fi creat automat în grade.vmr.

Procedura de notare este următoarea:

  • Asistentul creează un fișier numit grade.tmp în care va oferi feedback-ul corespunzător, în funcție de corectură.
  • Punctajul default oferit de vmchecker este 10, iar acesta parsează liniile din fișierul grade, adunând orice valoare numerică aflată la începutul liniei. Exemplu:
-0.5: indentare haotică
+1: explicații bine documentate

Semnătură Asistent

În acest exemplu vmchecker-ul îi va calcula studentului nota 10.5

Observație: Feedback-urile de genul: “10 cu felicitări” (sau fără felicitări) vor transforma implicit nota în 20 plus sau minus alte depunctări.

  • După ce toate fișierele grade.tmp vor fi create și completate, se va observa că nicio modificare nu poate fi observată în interfața grafică. Pasul final în publicarea notelor este dat de executarea unui script care copiază toate fișierele grade.tmp în grade.vmr:

~/scripts/publish_grades.sh

Notare studenți utilizând google sheets

Pentru a simplifica metoda de notare prin intermediul serverului de vmchecker și pentru a evita eventualele erori cauzate de utilizare consolei, notarea se poate face prin completarea unui document spreadsheet, după modelul următor:

https://docs.google.com/spreadsheets/d/1j0cfuhRyCyHZvE6s-k-YbomCsVNLYfPgb9mPHhjDlQk/edit#gid=0

Scripturi utile pentru automatizarea flow-ului de corectare (instrucțiuni trimise în mail-ul din 9.11.2019 către grupul asistenti-ac “Script Corectare Teme” - scripturile pot fi găsite pe drive:

https://drive.google.com/drive/folders/1jqsC7dmp7DJUZmJt75mAApgRqc03duc4?fbclid=IwAR0GCGmczNwG2q52qA0qghUI2x4JXhjgt5EZnrOPadjIrmMeaz614KPa9SQ

  • grader.py - primește ca input un fișier csv ce conține textul pe care noi ar fi trebuit să-l scriem la fiecare temă în parte pe vmchecker în grade.tmp și generează câte un grade.tmp personalizat.
  • spread_grades.sh - L-am adăugat pe vmchecker în /home/ac/scripts/ - scriptul primește ca input calea către directorul cu toate grade-urile personalizate (Generate cu grader.py și ulterior copiate cu scp pe vmchecker) și le trimite pe fiecare la calea corespunzătoare fiecărui student.
  • sort_students.py - l-am adăugat și pe ăsta pe drive, deși nu face parte din acest flow, dar eu l-am folosit pentru a-mi extrage din toate directoarele cu username-urile de pe moodle doar pe cele ale studenților (poate fi configurat pentru fiecare asistent în parte) și să mi-i sorteze pe grupe. Pentru a-l folosi veți avea nevoie și de datele din moodle și din catalog, iar în unele cazuri s-ar putea să genereze erori deoarece nu toți studenții sunt înrolați - o să rezolvăm asta pe parcurs.

Pentru a corecta temele va trebui să urmăm următorii pași:

TOATĂ LUMEA:
  1. Accesați spreadsheet-ul corectare_teme [2] și pentru fiecare student în parte adăugați feedback-ul în coloana temei pe care o corectați. Feedback-ul va fi adăugat în aceeași manieră în care ați completat fișierele grade.tmp (conținutul de aici va fi vărsat de script în grade.tmp deci scrieți practic același lucru)
O SINGURĂ PERSOANĂ:

(de obicei la final, după ce toată lumea a corectat)

  1. Se descarcă spreadsheet-ul în format csv.
  2. Se descarcă utilizatorii de la fiecare serie din moodle (pentru a obține username-urile lor) - găsiți tot în drive csv-urile pentru seria comună AB_AC și pentru seria AA.
  3. Se rulează scriptul (pentru configurări particulare folosiți grader.py –help). Dacă îl rulați fără niciun argument, comanda default este echivalentă cu: python3 grader.py –catalog corectare_teme.csv –homework 0 –moodle moodle_AA.csv moodle_AB_AC.csv
  4. Vor fi generate grade-urile în directorul curent, ce vor fi puse într-un nou fișier manual, sau din linia de comandă astfel:
    mkdir grades
    mv *_grade.tmp grades
  5. Se va copia directorul cu toate grade-urile în vmchecker astfel: scp -r grades/ ac@elf.cs.pub.ro:/home/ac/scripts
  6. Se accesează vmchecker-ul: cd /home/ac/scripts și se adaptează indexul temei în scriptul bash: (Exemplu: în loc de homework=“tema0” se scrie homework=“tema1”)
  7. Se rulează scriptul utilizând comanda ./spread_grades.sh -i grades/. Eventual, se verifică dacă în directorul grades a mai rămas vreun student - deși acesta ar trebui să fie gol și se șterge prin: rm -rf grades

Revenire la o versiune anterioară a unei teme încărcate de un student

Versiunea de temă cea mai recent încărcată este considerată by default versiunea finală. Astfel că, vmchecker-ul creează automat un pointer în directorul asociat fiecărui student numit “current” care indică locația ultimei teme încărcate. Cu toate acestea, unii studenți pot opta pentru revenirea la o versiune anterioară, iar acest lucru se face prin ștergerea pointerului actual și crearea unui pointer nou către versiunea dorită.

cd ~/vmchecker-storer/repo/tema<X>/<nume_student>
rm current
ln -s <versiunea_dorită> current

unde: <X> este indexul temei, <nume_student> este contul de moodle al studentului, <versiunea_dorită> este directorul cu încărcarea temei (acesta are forma sb_<timestamp>_rnd<random_number> și poate fi ales ușor datorită timestamp-ului)

După acest pas rulăm: vmchecker-update-db -c AC -a temaX -u student

Acest pas ne asigură că o să fie actualizată mai repede baza de date. Se face însă și automat.

Recompilarea temelor

Există situații în care recompilarea temei unui student (sau a mai multor studenți) este necesară. Aceasta se poate efectua cu ajutorul “vmchecker-resubmit”

vmchecker-resubmit -c AC -a tema<X> -u <nume_student>

sau

vmchecker-resubmit -c AC -a tema<X>

Configurarea unui nou storer (se va face o singură dată, la începutul anului)

  • cream folderul: mkdir ~/vmchecker/storer-2019
  • initializam folderul: cd ~/vmchecker/storer-2019; vmchecker-init-course storer
  • stergem prostiile: rm -rf auth_file.json config repo/ so-* tests/ vmchecker_bundle_dir/
  • copiem configuratia noastra de anul trecut: cp -rn ../storer-2017/*
  • editam fisierul de config: vim config
    • Holidays = numarul de vacante (cand nu se scad puncte de intarziere)
    • HolidayStart = lista de date de start pentru vacante; vezi formatul anterior, tot ce e dupa # e comment
    • HolidayFinish = lista de date de sfarsit vacante
    • UploadActiveFrom/Until = datele intre care sunt acceptate upload-uri
    • [assignment DEFAULT] setarile implicite pentru parametrii care sunt sunt configurati de o tema
    • [assignment intro] sectiunea pentru o tema, numele intro e folosit pentru a cauta arhiva de teste in tests
    • OrderNumber =ordinea in care apar temele
  • schimbam link-ul: ln -sfT vmchecker/storer-2019/ vmchecker-storer
ac-is/internal/tutorial-vmchecker.txt · Last modified: 2021/10/02 14:45 by eduard.ciurezu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0