Zadania:

Transkrypt

Zadania:
Zadania na projekt z TIN – lato 2008
Prowadzący: Łukasz Mosiej
Informacje ogólne o projekcie
1. Terminy konsultacji: czwartek 8-10 (po uprzednim potwierdzeniu spotkania z
prowadzącym). Jeśli jakiś zespół chciałby się spotkać proszę o informację drogą
mailową minimum dwa dni przed spotkaniem.
2. Ostateczne terminy oddania kolejnych etapów projektu:
a. Sprawozdanie wstępne: 17 kwiecień 2008 (każdy tydzień opóźnienia – 5 pkt
mniej)
b. Prezentacja i oddanie sprawozdania końcowego: 29 maja 2008
3. Sprawozdanie wstępne (4-6 stron):
a. Szkic przyjętego rozwiązania
b. Opis technologii z uzasadnieniem
c. Specyfikacja wykorzystanych protokołów
d. Wstępny opis testów i przypadków testowych
4. Sprawozdanie końcowe (6-10 stron):
a. Opis przyjętego rozwiązania
b. Opis wykorzystanych technologii
c. Szczegółowa specyfikacja wykorzystanych protokołów
d. Opis przeprowadzonych testów wraz z analizą wyników
e. Schemat architektury rozwiązania ze wszystkimi przejściami
f. Instrukcja instalacji i uruchomienia
5. Punktacja (maksymalnie 50 punktów):
a. Sprawozdanie wstępne – 10 pkt
b. Sprawozdanie końcowe – 10 pkt
c. Aplikacja – 20 pkt
d. Testy – 10 pkt
6. Zasady:
a. Do każdego projektu może zgłosić się maksymalnie jeden zespół. Decyduje
kolejność zgłoszeń drogą mailową.
b. Tematy zarezerwowane będą zaznaczane w tym dokumencie.
c. Korzystamy tylko z czystych gniazd – nie korzystamy z gotowych bibliotek,
który wspomagają komunikację na poziomie gniazd (również w przypadku
buforowania danych)
d. Program powinien być napisany w języku C, C++ (w szczególnych
przypadkach po ustaleniu z prowadzącym możliwe będzie napisanie programu
w innym języku)
e. Interfejs użytkownika jest sprawą drugorzędną (wystarczy tryb tekstowy).
Istotą zadania jest komunikacja sieciowa i protokół.
f. Oddanie projektu odbywa się na środowisku i sprzęcie przygotowanym przez
zespół projektowy (możliwe jest oddanie projektu na własnym laptopie, bądź
na zdalnym serwerze)
g. Dokumentacja wstępna jak i dokumentacja końcowa oddawana jest w formie
papierowej (dodatkowo należy wysłać dokumentację do prowadzącego)
h. Kody źródłowe, instrukcję instalacji i uruchomienia należy wysłać po
oddaniem projektu do prowadzącego
Tematy projektów
1. System wymiany plików tekstowych i binarnych (ZAD1)
Status: ZAJĘTE (ZESPÓŁ 2)
Zadanie polega na stworzeniu narzędzia opartego na architekturze klient – serwer,
umożliwiającego udostępnianie plików tekstowych i binarnych pomiędzy klientami za
pośrednictwem serwera. Każdy klient ma skonfigurowane dwa foldery:
a) share - z plikami do udostępnienia
b) download - z plikami, które ściągnął
Klient po zalogowaniu się na serwer przesyła listę plików, które udostępnia (łącznie z
tymi które są w katalogu „download”), wraz z informacją o ich rozmiarze i dacie ostatniej
modyfikacji.
Każdy zalogowany klient może pobrać z serwera posortowaną listę (po dacie, nazwie,
typie, rozmiarze, identyfikatorze klienta) plików i zacząć je pobierać do swojego katalogu.
Plik całkowicie pobrany jest automatycznie wstawiany do listy plików udostępnionych.
Klient powinien cyklicznie informować serwer o zmianach w udostępnionych plikach (po
dodaniu lub usunięciu pliku po określonym czasie np. 5 sekundach) oraz cyklicznie
pobierać informacje o udostępnionych plikach (np. co 5 sekund).
Program powinien mieć oddzielny plik konfiguracyjny, w którym będzie można
manipulować czasami pobierania listy oraz aktualizowania danych.
Należy wykorzystać otwieranie wielu gniazd na raz - możliwe jest pobieranie wielu
plików na raz z jednoczesnym udostępnianiem innych plików.
2. Bezpieczny komunikator (ZAD2)
Status: WOLNE
Zadanie polega na stworzeniu bezpiecznego komunikatora, który będzie w sposób
dynamiczny zmieniał porty nasłuchujące i wysyłające. Komunikacja pomiędzy klientami
ma się odbywać w dwóch trybach: z i bez użycia serwera.
Dodatkowym atutem będzie wprowadzenie autoryzacji.
3. Zakłady bukmacherskie (ZAD3)
Status: ZAJĘTE (ZESPÓŁ 1)
Zadanie polega na stworzeniu mechanizmu, umożliwiającego złożenie zakładu.
Każdy klient ma swoje konto na serwerze z odpowiednią sumą pieniędzy. Serwer ma za
zadanie przyjmować zakłady, jeśli suma zakładów na jedną grę nie przekroczy
konfigurowalnej sumy.
Serwer posiada interfejs do zamykania zakładów i ustalania wyniku. Klienci są
powiadamiani o wyniku i saldzie swojego konta. Każdy klient na starcie ma ustaloną
konfigurowalną kwotę na zakłady.
4. Serwer proxy z blokadą rodzicielską + opcją cachowania
danych (ZAD4)
Status: ZAJĘTE (ZESPÓŁ 3)
Zadanie polega na stworzeniu prostego serwera proxy, blokującego wszystkie
niedozwolone treści. Niedozwolone treści są konfigurowalne z poziomu pliku tekstowego.
Serwer ma logować wszystkie żądania.
Dodatkowo serwer ma „cachować” poprzednio odwiedzone strony.
5. Gra - warcaby lub kółko i krzyżyk (ZAD5)
Status: ZAJĘTE (ZESPÓŁ 6 – kółko i krzyżyk; ZESPÓŁ 5 - statki)
Zadanie polega na stworzeniu jednej z powyższych gier (bądź innej po ustaleniu z
prowadzącym), w której może uczestniczyć dowolna liczba graczy.
Każdy gracz występuje w jednej z drużyn i w kolejności zgłoszenia do serwera wykonuje
odpowiedni ruch.
Serwer powinien umożliwiać obsługę wielu gier tego samego typu (warcaby, bądź kółko i
krzyżyk) jednocześnie. Każdy klient podczas podłączenia do serwera dostaje listę
trwających gier i może dołączyć się do jednej z nich, bądź może stworzyć nową grę.
Serwer powinien stwierdzić kiedy gra się zakończyła i poinformować graczy o wyniku.
6. Bezpieczny komunikator gadu – gadu (ZAD6)
Status: WOLNE
Zadanie polega na stworzeniu klienta do gadu – gadu, który umożliwia transmisję
szyfrowaną pomiędzy dwoma klientami. Klient musi posiadać mechanizmy do
odszyfrowywania wiadomości.
Klient powinien rozróżniać tryb transmisji danych i w przypadku stwierdzenia otrzymania
zaszyfrowanej wiadomości powinien ją odszyfrować.
Sposób szyfrowania i przedstawiania wiadomości do ustalenia na etapie projektu
wstępnego.
7. Czat wielotematyczny (ZAD7)
Status: ZAJĘTE (ZESPÓŁ 4)
Zadanie polega na stworzeniu czatu, który umożliwiałby rozmowę z odpowiednimi
osobami. Każdy użytkownik czatu przy logowaniu wybierałby swoją profesję (np. technik
informatyk). Następnie mógłby z listy wybrać osobę z którą chciałby zadać pytanie.
Każda osoba na raz może zadawać pytania wielu osobom. Jednakże rozmowa zostaje
przerwana, gdy inna osoba zada danej osobie pytanie. Komunikaty są kolejkowane na
serwerze. Po udzieleniu odpowiedzi klient może kontynuować rozmowę z innym
użytkownikiem. Komunikacja pomiędzy klientami odbywa się przez serwer.
Zespoły
1. Zespół 1
Skład zespołu:
a) Krzysztof Piech
b) Witold Gruszczyński
c) Jacek Gębala
d) Jan Jacek Skorupiński
Zadanie: Zakłady bukmacherskie (ZAD3)
Termin wyboru: 04-04-2008 21:27
2. Zespół 2
Skład zespołu:
a) Zbigniew Fabijański
b) Marcin Wyrzykowski
c) Robert Słowiński
d) Tomasz Nikiel
Zadanie: System wymiany plików tekstowych i binarnych (ZAD1)
Termin wyboru: 04-04-2008 22:39 (zespół 1 zgłosił się do zadania 3 o godzinę wcześniej
i dlatego ZAD3 przypadło im)
3. Zespół 3
Skład zespołu:
a) Paweł Laszewski
b) Radosław Osiński
c) Paweł Pasznik
d) Maciej Zbierski
Zadanie: Serwer proxy z blokadą rodzicielską + opcją cachowania danych (ZAD4)
Termin wyboru: 07-04-2008 15:10
4. Zespół 4
Skład zespołu:
a) Bartosz Kotłowski
b) Kamil Boczkal
c) Bartłomiej Jurek
d) Przemysław Seneczko
Zadanie: Czat wielotematyczny (ZAD7)
Termin wyboru: 11-04-2008 22:21
5. Zespół 5
Skład zespołu:
a) Weronika Gutfeter
b) Adam Stelmaski
c) Jakub Kochańczyk
d) Michał Romanowski
Zadanie: Gra - statki (ZAD5)
Termin wyboru: 09-04-2008 14:01.
6. Zespół 6
Skład zespołu:
a) Piotr Bratkowski
b) Michał Domański
c) Andrzej Fryzka
d) Maciej Gugała
Zadanie: Gra - kółko i krzyżyk (ZAD5)
Termin wyboru: 08-04-2008 11:28