SYSTEM INTERNETOWY OLIMPIADY & UNIVERSAL PYTHON FRAMEWORK & UNIVERSAL PYTHON FRAMEWORK Szymon Acedański, Piotr Findeisen, Filip Grządkowski, Michał Jaszczyk, Bogdan Yakovenko Szymon Acedański, Piotr Findeisen, Filip Grządkowski, Michał Jaszczyk, Bogdan Yakovenko
wiele konkursów, jeden system
Podstawowe Operacje Administrator Tworzenie nowego konkursu z zadaniami Nadzór nad oceną przysłanych rozwiązań Kontrola działania systemu Użytkownik Przeglądanie zadań Wysyłanie rozwiązań Oglądanie raportów z oceny
przede wszystkim: automatyczna ocena 1. Kompilacja nadesłanego programu. 2. Uruchomienie w bezpiecznym środowisku. limit pamięci blokada sieci, wielowątkowości itp. ograniczone uprawnienia 3. Sprawdzenie poprawności wyniku. 4. Wygenerowanie raportu z oceny.
GUI: dla ludzi albo dla programistów
Universal Python Framework
technologie
universal python framework Object-Relational Mapper Object Query Language Remote Object Access Event Manager Workers System File Storage System
object-relational mapper cursor = connection.cursor() cursor.execute(SELECT first_name FROM users WHERE id=55) print cursor.fetch()[0] Zwykły proszek print User.ById(55).first_name Pollena REX
universal python framework Object Query Language Object-Relational Mapper Remote Object Access Event Manager Workers System File Storage System
object query language SELECT r.* FROM Reports r LEFT JOIN Submits s ON r.submit = s.id LEFT JOIN Users u ON s.user = u.id WHERE u.last_name = Kaczyński IV RP SELECT Report WHERE Report.submit.user.last_name = Kaczyński V RP
universal python framework Remote Object Access Object Query Language Object-Relational Mapper Event Manager Workers System File Storage System
remote object access connection = XmlRpcProxy( ownerId = connection.getContestOwner(55) print connection.getUserFirstName(ownerId) Klasyczne XML-RPC conn = RoaProxy( contest = conn[Objects.Contest(id=55)] print contest.owner.first_name Przy użyciu ROA Przykład: pobranie imienia właściciela konkursu o numerze 55
universal python framework Event Manager Remote Object Access Object Query Language Object-Relational Mapper Workers System File Storage System
event manager Synchroniczna obsługa zdarzeń Zdarzenie jest obsługiwane w momencie wygenerowania Przykład: zapisanie informacji o zgłoszeniu w logu systemowym Asynchroniczna obsługa zdarzeń Obsługa zdarzenia jest odkładana w czasie, by nie blokować aktywnego wątku Przykład: wysłanie potwierdzenia em o przyjęciu zgłoszenia
universal python framework Workers System Event Manager Remote Object Access Object Query Language Object-Relational Mapper File Storage System
workers system Kompilacja programu Ignacego Uruchomienie programu Wacława na teście numer 333 Sprawdzenie odpowiedzi programu Mieczysława Rozegranie pojedynku programów Bolka i Lolka
universal python framework Workers System Event Manager Remote Object Access Object Query Language Object-Relational Mapper File Storage System
file storage system Baza danych jest scentralizowana i komponenty systemu mają do niej dostęp. Przechowywanie dużych plików w relacyjnej bazie danych jest nieefektywne. File Storage System to prosty, transakcyjny serwer plików niewymagający większego wkładu pracy w konfigurację.
dziękujemy!