HazifeladatEllenorzoTeacher

A MathWikiből
(Változatok közti eltérés)
(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 '''kurzusok listája, egy vesszővel elválasztott lista'''
+
* 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 bármi lehet, itt meg van adva egy <tt>lecturer</tt> csoport is a tanároknak.
+
 
* 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 ha a kurzusom <tt>info2_1996</tt> akkor nem fog összeakadni az <tt>info2_2020</tt> hallgatókkal
+
** 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.

Személyes eszközök