Dokumentacja AlgoJudge
Otwartoźródłowe oprogramowanie self-hosted do organizacji zawodów i kursów programistycznych z automatycznym ocenianiem przesłanych rozwiązań.
AlgoJudge to otwartoźródłowe oprogramowanie self-hosted do organizacji zawodów i kursów programistycznych z automatycznym ocenianiem przesłanych rozwiązań.
Uruchamiasz je u siebie. Nikt poza Tobą nie przechowuje kont uczestników, zadań ani wyników.
Od czego zacząć
Dla uczestnika
Wejdź do aktywności, przeczytaj zadanie, wyślij rozwiązanie i sprawdź, co się z nim stało.
Dla prowadzącego
Buduj aktywności i serie, prowadź bibliotekę zadań, odpowiadaj na pytania, decyduj, kto co może.
Instalacja i utrzymanie
Postaw instalację na własnej maszynie, utrzymaj ją i odzyskaj po awarii.
Server
Model dziedziny, model uprawnień i referencja REST generowana z samego API. Po angielsku.
Runner
Maszyny oceniające zgłoszenia: czego wymagają, jak są izolowane i jaką pracę dostają. Po angielsku.
Protocol
Kontrakt między Serverem a Runnerem, dla kogoś, kto pisze własnego Runnera. Po angielsku.
Z czego się składa
Trzy programy, a żaden nie robi tego, co należy do pozostałych:
- Client to część, którą widzą ludzie. Rysuje aktywności, zadania, formularze i wyniki.
- Server przechowuje wszystko, co trwałe — konta, zadania, zgłoszenia, wyniki — i decyduje, kto co może zrobić. Nigdy nie kompiluje ani nie uruchamia nadesłanego rozwiązania i nie rozumie, co znaczy konkretny rodzaj zadania.
- Uruchamianiem zajmuje się Runner. Pobiera zlecenie, ocenia je w izolacji i odsyła wynik. Połączenie zawsze nawiązuje Runner, więc może pracować za domowym routerem, bez własnego adresu.
Warto od razu wiedzieć, co z tego wynika: dodanie nowego rodzaju zadania nie wymaga zmiany w Serverze. Wystarczy, że Client nauczy się go wyświetlać, a Runner — oceniać rozwiązania.
Której wersji dotyczy
AlgoJudge 0.1.0 jest wydany i to jego opisują te strony: pięć repozytoriów ma
ten tag, a osiem obrazów jest publicznych. Witryna założyła tego samego dnia swój
pierwszy katalog z wersją, więc pod nazwą u góry stoi 0.1, a numer jest
w adresie: /pl/install/v0.1/backup. Bez numeru dostajesz wersję najnowszą — tam
przekierowuje /pl/install/.
Każda sekcja ma własne wersjonowanie. /install/ zmienia się przy wydaniu
AlgoJudge-Ops, /server/ przy wydaniu Servera, /protocol/ przy zmianie
kontraktu. Nie ma jednej wersji całej witryny, bo produkty nie wydają się razem
— i dlatego numer stoi wewnątrz sekcji, a nie przed nią.
Wersjonujemy z dokładnością do minor. Wydanie patch aktualizuje swój katalog w miejscu, a jeżeli miałoby zmienić opisane zachowanie, to nie było wydanie patch.
AlgoJudge jest w fazie 0.x, a wydanie 0.x nie daje żadnej obietnicy
zgodności wstecznej. Do każdego wydania minor dołączamy notatkę: co się zepsuło
i co z tym zrobić. Dokumentacji starszych wersji nigdy nie usuwamy i nigdy
nie dopisujemy jej po fakcie — powstaje w dniu wydania albo wcale. Dla
instalacji, której nikt nie zaktualizował, stara strona jest jedyną działającą.