1 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
2 wiele konkursów, jeden system
3 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
4 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.
5 GUI: dla ludzi albo dla programistów
6 Universal Python Framework
7 technologie
8 universal python framework Object-Relational Mapper Object Query Language Remote Object Access Event Manager Workers System File Storage System
9 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
10 universal python framework Object Query Language Object-Relational Mapper Remote Object Access Event Manager Workers System File Storage System
11 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
12 universal python framework Remote Object Access Object Query Language Object-Relational Mapper Event Manager Workers System File Storage System
13 remote object access connection = XmlRpcProxy(http://cuś/') ownerId = connection.getContestOwner(55) print connection.getUserFirstName(ownerId) Klasyczne XML-RPC conn = RoaProxy(http://cuś/') 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
14 universal python framework Event Manager Remote Object Access Object Query Language Object-Relational Mapper Workers System File Storage System
15 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 e-mailem o przyjęciu zgłoszenia
16 universal python framework Workers System Event Manager Remote Object Access Object Query Language Object-Relational Mapper File Storage System
17 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
18 universal python framework Workers System Event Manager Remote Object Access Object Query Language Object-Relational Mapper File Storage System
19 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ę.
20 dziękujemy!