HazifeladatEllenorzoTeacher
(→Mit csináljunk) |
|||
50. sor: | 50. sor: | ||
* Minden sora egy felhasználó | * 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ű. | * 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 <tt>course</tt>-t, ami az általa látogatott | + | * Egy felhasználóhoz megadhatunk <tt>course</tt>-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 <tt>\w+</tt>). | * Egy kurzus neve csak latin alfanumerikus karakterekből állhat (szóköz, vessző, ékezetes karakter nem lehet benne) vagy alulvonásból (azaz regex <tt>\w+</tt>). | ||
− | * Ha több csoportot adunk meg, tegyük vesszővel vagy szóközzel elválasztva | + | ** A példában meg van adva egy <tt>lecturer</tt> 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. | * 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 | + | * Régi hallgatókat nem érdemes kitörölni, ha a kurzusa évszámmal is meg van jelölve. |
− | ** például | + | ** például a kurzus <tt>info2_2019</tt> nem fog összeakadni az <tt>info2_2020</tt> kurzussal |
+ | |||
+ | Ha a <tt>userinfo.tsv</tt> fájlt változtatjuk, akkor a módosítások csak akkor jutnak érvényre, ha '''újra <tt>build</tt>-eljük a <tt>docker image</tt>-et''' | ||
+ | |||
+ | cd ~ && docker build -f Dockerfile -t hazicp hazijavitorendszer | ||
+ | |||
+ | == Feladatok felvétele == | ||
+ | Egy feladatot a <tt>hazijavitorendszer/HW/</tt> 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 <tt>manifest.json</tt> fájl a feladat mappájában | ||
+ | * kellenek tesztek a mappában. | ||
+ | ** minden teszt neve egy '''<tt>i</tt>''' betűvel kell kezdődjön. | ||
+ | ** a tesztek formátuma feladattípustól függ. [[HazifeladatEllenorzoTeacher#feladattipus| lásd lentebb]] | ||
+ | |||
+ | Például a <tt>fahrenheit</tt> 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 = | = Mit NE csináljunk = | ||
Az egész rendszer működésének lényege, hogy egy levél megérkezésekor lefuttatja a <tt>run.sh</tt>-t. Ez a script meg kell hogy kapja a beérkezett levél tartalmát. | Az egész rendszer működésének lényege, hogy egy levél megérkezésekor lefuttatja a <tt>run.sh</tt>-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. | Lehet egy mappa neve, amiben benne van a levél és a csatolmányai, vagy fájlok egy listája. |
A lap 2020. február 14., 17:25-kori változata
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.