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/)
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.
În funcție de sistemul de operare:
ssh-keygen
Î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ă.
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.
/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.
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
)
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:
-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.
~/scripts/publish_grades.sh
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:
Pentru a corecta temele va trebui să urmăm următorii pași:
(de obicei la final, după ce toată lumea a corectat)
mkdir grades mv *_grade.tmp grades
scp -r grades/ ac@elf.cs.pub.ro:/home/ac/scripts
cd /home/ac/scripts
și se adaptează indexul temei în scriptul bash: (Exemplu: în loc de homework=“tema0” se scrie homework=“tema1”)./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
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.
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>
mkdir ~/vmchecker/storer-2019
cd ~/vmchecker/storer-2019; vmchecker-init-course storer
rm -rf auth_file.json config repo/ so-* tests/ vmchecker_bundle_dir/
cp -rn ../storer-2017/*
vim config
ln -sfT vmchecker/storer-2019/ vmchecker-storer