HazifeladatEllenorzoTeacher
Tartalomjegyzék |
Tájékoztató
Ez az oldal a Házifeladat Ellenőrző rendszer használatát írja le, hogy hogyan lehet feladatokat feladni, felhasználókat és kurzusokat kezelni.
Belépés
A rendszer maga egy leibniz-es felhasználón keresztül érhető el:
hazi@leibniz.math.bme.hu
Ide be lehet ssh-zni, scp-zni vagy a webmail-jébe belépni.
Mappaszerkezet
Ennek a felhasználónak a home mappájában a következőket találjuk:
~ ├───hazijavitorendszer │ ├───HW │ │ ├───feladat │ │ . │ │ . (többi feladat) │ │ . │ │ ├───main │ │ ├───validate │ │ ├───userinfo.tsv │ │ ├───auxiliary.py │ │ ├───off │ │ ├───feladattipus1 │ │ ├───feladattipus2 │ │ ├───... │ │ └───getsenderinfo │ └───mailsend-go_1.0.6_linux-64bit.deb ├───solution ├───logs ├───archive ├───test │ └───(itt lényegében a felette lévőnek egy másolata van) ├───digest_logs.sh ├───archive.sh ├───Dockerfile └───run.sh
Mit csináljunk
Hallgatók kezelése
Ezt lényegében a userinfo.tsv (tab-separated-values) fájl szerkesztésével tehetjük meg.
Formátuma:
email name course borbely@math.bme.hu Gábor Borbély info2,lecturer
- Minden sora egy felhasználó
- A felhasználók az email-címükkel vannak azonosítva, a nevük csak tájékoztató jellegű.
- Egy felhasználóhoz megadhatunk course-t, ami az általa látogatott kurzusok listája: egy vesszővel elválasztott lista.
- Egy kurzus neve csak latin alfanumerikus karakterekből állhat (szóköz, vessző, ékezetes karakter nem lehet benne) vagy alulvonásból (azaz regex \w+).
- A példában meg van adva egy lecturer csoport is a tanároknak.
- Ha több csoportot adunk meg, tegyük vesszővel vagy szóközzel elválasztva.
- Ha egy hallgató többször szerepel a listában, akkor csak a legelső előfordulását vesszük figyelembe.
- Régi hallgatókat nem érdemes kitörölni, ha a kurzusa évszámmal is meg van jelölve.
- például a kurzus info2_2019 nem fog összeakadni az info2_2020 kurzussal
Ha a userinfo.tsv fájlt változtatjuk, akkor a módosítások csak akkor jutnak érvényre, ha újra build-eljük a docker image-et
cd ~ && docker build -f Dockerfile -t hazicp hazijavitorendszer
Feladatok felvétele
Egy feladatot a hazijavitorendszer/HW/ mappában lévő mappa definiál.
- a mappa neve a feladat neve
- almappákat nem vesz figyelembe a rendszer, ezen belül nem lehet más almappa
- kell legyen egy manifest.json fájl a feladat mappájában
- kellenek tesztek a mappában.
- minden teszt neve egy i betűvel kell kezdődjön.
- a tesztek formátuma feladattípustól függ. lásd lentebb
Például a fahrenheit nevű feladat felvételéhez hozzuk létre az alábbiakat:
HW └───fahrenheit ├───manifest.json ├───i1.json ├───i2.json └───i3.json
manifest
feladattipus
Ahhoz hogy új feladattípust
Mit NE csináljunk
Az egész rendszer működésének lényege, hogy egy levél megérkezésekor lefuttatja a run.sh-t. Ez a script meg kell hogy kapja a beérkezett levél tartalmát. Lehet egy mappa neve, amiben benne van a levél és a csatolmányai, vagy fájlok egy listája.