Open source · linia wydań 0.1

Jedna platforma. Różne aktywności. Różne typy zadań.

AlgoJudge to otwartoźródłowe oprogramowanie self-hosted do organizacji zawodów i kursów programistycznych z automatycznym ocenianiem przesłanych rozwiązań.

Jedno miejsce dla całego przepływu

Czym jest AlgoJudge?

Bazowo webowa platforma łączy organizację aktywności, publikowanie zadań i automatyczną ocenę rozwiązań. Instytucje i zespoły mogą uruchomić własną instalację.

01

Organizuj aktywności

Zawody, kursy, laboratoria, warsztaty i treningi — z jednym spójnym modelem organizacji.

02

Publikuj zadania

Treści, załączniki, terminy, limity, punktacja oraz polityki zgłoszeń zarządzane razem.

03

Oceniaj automatycznie

Kolejkowanie, izolowane wykonanie, testy, punkty i czytelne werdykty.

Najważniejszy wyróżnik

Nie tylko klasyczny Online Judge

Zaprojektowany dla różnych aktywności i różnych sposobów oceniania.

Nowe typy bez zmian w centralnym Serverze

Client dobiera renderer, Runner dobiera handler oceniania, a Server zachowuje wspólną kopertę danych. Dzięki temu rozszerzenie może powstać na obrzeżach systemu bez wiązania rdzenia ze szczegółami zadania.

Typy aktywności

  • ZawodyDostępne w linii 0.1
  • KursDostępne w linii 0.1
  • LaboratoriumPrzewidziane przez architekturę
  • WarsztatyPrzewidziane przez architekturę
  • TreningPrzewidziane przez architekturę

Typy zadań

  • Standard I/ODostępne w linii 0.1
  • Output-onlyDostępne w linii 0.1
  • Zadania interaktywnePrzewidziane przez architekturę
  • Własne checkeryPrzewidziane przez architekturę
  • OptymalizacyjnePrzewidziane przez architekturę
  • WieloplikowePrzewidziane przez architekturę
  • Sieciowe i rozproszonePrzewidziane przez architekturę
Od pomysłu do werdyktu

Jak to działa

Server utrzymuje trwały stan i zlecenia. Kod trafia do wymiennego Runnera, który działa w odseparowanym środowisku i odsyła wynik.

  1. 1

    Utwórz aktywność

    Manager konfiguruje zawody lub kurs.

  2. 2

    Dodaj zadanie

    Publikuje treść, pliki, limity i punktację.

  3. 3

    Otwórz zadanie

    Uczestnik poznaje wymagania i format.

  4. 4

    Wyślij rozwiązanie

    Kod oraz metadane trafiają do Servera.

  5. 5

    Utwórz zlecenie

    Server zapisuje zgłoszenie i kolejkuje pracę.

  6. 6

    Oceń w Runnerze

    Runner pobiera zlecenie, izoluje wykonanie i testuje.

  7. 7

    Pokaż wynik

    Status i werdykt wracają do aplikacji na żywo.

  • Statusy aktualizowane na żywo
  • Odseparowane wykonywanie kodu
  • Wymienne Runnery
  • Trwały stan po stronie Servera
Client · Server · Runner · Identity

Modularna architektura bez wiązania platformy z jednym silnikiem wykonawczym

Każdy komponent ma jasno określoną odpowiedzialność. Server koordynuje i przechowuje dane, ale nigdy nie kompiluje ani nie uruchamia kodu.

AlgoJudge Client

Interfejs i renderery

  • Widoki użytkownika i managera
  • Renderery aktywności i zadań
  • Formularze zgłoszeń
  • Prezentacja wyników
API i aktualizacje

AlgoJudge Server

Dane i koordynacja

  • Aktywności, zadania i pliki
  • Uprawnienia i zgłoszenia
  • Zlecenia i wyniki
  • Nie uruchamia kodu

Identity

Tożsamość i dostęp

  • OpenID Connect i OAuth 2.0
  • Uczelniane SSO
  • Lokalne konta
  • Konta krótkoterminowe
Uwierzytelnianie

AlgoJudge Runner

Bezpieczne wykonanie

  • Pobieranie zleceń
  • Kompilacja i izolacja
  • Limity zasobów i testy
  • Obliczanie wyniku
Połączenie wychodzące · działa za NAT-em

Server pozostaje ogólny

Nie zna semantyki konkretnego typu zadania.

Runner inicjuje połączenie

Może działać w innej sieci, także za NAT-em.

Implementacje są wymienne

Różne Runnery mogą obsługiwać różne typy zadań.

Dla edukacji, konkursów i eksperymentów

Jedna baza, różne zastosowania

Wspólny rdzeń wspiera odmienne scenariusze organizacyjne, a rozszerzalność pozostawia miejsce na nowe modele oceniania.

Kursy akademickie

Serie zadań, wiele prób, prywatne wyniki i szczegółowa informacja zwrotna.

Warsztaty i wydarzenia

Szybkie aktywności i konta krótkoterminowe z wygasaniem dostępu.

Nowe sposoby oceniania

Wyspecjalizowane Runnery, dodatkowe handlery i renderery — bez zmian w centralnym Serverze.

Budowane otwarcie

Poznaj kod AlgoJudge

Client, Server, Runner, External-Runner i Ops są publiczne, a każdy z tych komponentów ma wydanie v0.1.0. Przejrzyj ich kod, zgłoś problem albo pomóż rozwijać platformę.

Dołącz do rozwoju
v0.1.0

AlgoJudge External-Runner

Przekazuje rozwiązania do zewnętrznych systemów oceniających i zwraca ich werdykty bez lokalnego wykonywania kodu.

v0.1.0

AlgoJudge Ops

Produkcyjny stos Compose oraz skrypty do instalowania, aktualizowania i tworzenia kopii zapasowych wdrożenia self-hosted.

Niezależnie wersjonowane komponenty

Linia wydań 0.1 jest dostępna

Komponenty AlgoJudge są wersjonowane niezależnie. Ich pierwsze wydania zaczynają się od 0.1.0 i razem zapewniają kompletny przepływ self-hosted.

0.1.0

Pięć niezależnie wersjonowanych wydań

Client, Server, Runner, External-Runner i Ops zachowują własne historie wydań.

  • Client v0.1.0
  • Server v0.1.0
  • Runner v0.1.0
  • External-Runner v0.1.0
  • Ops v0.1.0
Dostępne

Podstawa linii 0.1

Kompletny przepływ od konfiguracji aktywności do automatycznie ocenionego wyniku.

  • Zawody i kursy
  • Zadania Standard I/O i output-only
  • Wysyłanie rozwiązań i izolowane wykonanie w Runnerze
  • Werdykty, punkty, historia i statusy na żywo
  • Logowanie, konta krótkoterminowe i wdrożenie self-hosted
Dalej

Po linii 0.1

Dalsze kierunki możliwe dzięki modularnej architekturze.

  • Zadania interaktywne i optymalizacyjne
  • Własne checkery i projekty wieloplikowe
  • Więcej wyspecjalizowanych implementacji Runnera
  • Praca Servera w wielu instancjach
  • Klucze API i tokeny dostępu dla kont
Open source od pierwszej linii

Twórz zadania. Organizuj aktywności. Rozwijaj otwartą platformę oceniania.

Zobacz architekturę, przejrzyj kod i pomóż kształtować platformę, która nie zamyka nowych pomysłów w jednym modelu oceniania.