Notatki do specyfikacji protokoĹĂłw Krzysztof RzÄ dca Ostatnia modyfikacja: 30/05/2011 19:05 Za uwagi i pytania dziÄkujÄ panom MichaĹowi Czerskiemu, Jackowi Jendrejowi, Krzysztofowi KrĂłlakowi, Adamowi Michalikowi i pani Jadwidze Sosnowskiej. OgĂłlnie: Specyfikacja RQP zawiera wiÄcej komunikatĂłw, wiÄc jej implementacja bÄdzie nieznacznie trudniejsza niĹź implementacja protokoĹu Cytaty. BÄdÄ to braĹ pod uwagÄ oceniajÄ c zadania. Biblioteka klienta ma byÄ thread-safe, tzn. moĹźe byÄ uĹźywana jednoczeĹnie przez wiele wÄ tkĂłw jednego procesu. MoĹźna zakĹadaÄ "wspĂłĹczesne" wersje jÄzykĂłw programowania. MoĹźna zakĹadaÄ, Ĺźe klient i serwer dziaĹajÄ pod linuksem. ZarĂłwno klient, jak i serwer, muszÄ byÄ przygotowane na odbiĂłr komunikatĂłw niepoprawnych lub zĹoĹliwych. Odebranie takiego komunikatu moĹźna sygnalizowaÄ lokalnemu uĹźytkownikowi. Natomiast bĹÄdny komunikat nie moĹźe spowodowaÄ niepoprawnego dziaĹania serwera (zawieszenie siÄ, koniec procesu, itp.), czy klienta (poza zgĹoszeniem niepoprawnego formatu odpowiedzi). PodziaĹ cytatĂłw na fragmenty nie musi byÄ zrobiony juĹź w bazie cytatĂłw (specyfikacja protokoĹu nie powinna tego okreĹlaÄ). Cytat moĹźe zawieraÄ dowolne znaki oprĂłcz \0; w szczegĂłlnoĹci znak nowej linii moĹźe byÄ czÄĹciÄ cytatu (by mĂłc wysyĹaÄ poezjÄ!). ProszÄ o przesĹanie PaĹstwa rozwiÄ zania emailem z tytuĹem "SK - projekt". CaĹy kod powinien znajdowaÄ siÄ w katalogu login-ze-students_imie_nazwisko/ . Cytaty: 4.1: zamiast formatu ASCII proszÄ przyjÄ Ä UTF-8 4.2.1 i 6: KEY = 15 , NUMBER_KEY = 240 (a nie, odpowiednio, 621 i 923) 4.2.1: typ komunikatu to REQUEST_MSG_NUMBER_T (a nie REQUEST_MSG_NUMER_T) 4.2.2: string_len bierze pod uwagÄ '\0' koĹczÄ ce quote, czyli dla quote="abc" string_len=4 4.2.2: quote_id jest typu uint32 (a nie uint8) 4.2.2: pole quote_checksum wygodniej bÄdzie traktowaÄ jako: uint8 quote_checksum[16] 5.2, stan WAIT_MORE: packet_id -> quote_id , sprawdzenie polega na porĂłwnaniu z wartoĹciÄ otrzymanÄ w pierwszym pakiecie quote_checksum nie jest sprawdzane w tym stanie RQP: 5.1: nazwa kodowania tekstu (pole encoding) zgodna jest z nazwami MIME ( http://www.iana.org/assignments/character-sets/ - preferred MIME name ) 5.1 i 7: Wszystkie czÄĹci jednego cytatu majÄ to samo kodowanie (wartoĹÄ pola encoding). 5.1: part_no w QDATA_T jest numerowany od 0. 5.2, 7.1.1: PrzydziaĹ request_id przez klienta: poniewaĹź protokóŠwymusza numery unikalne (w ramach jednej instancji klienta), proszÄ przyjÄ Ä, Ĺźe request_id jest kolejnym (sekwencyjnym) numerem ĹźÄ dania, liczonym od 0. ProszÄ uwaĹźaÄ na wielowÄ tkowoĹÄ (biblioteka ma byÄ thread-safe). 5.1: Pole error_buf w ERROR_T zawiera tekstowy opis bĹÄdu (po angielsku, kodowanie ASCII) 5.1: Pole encoding w QDATA_T, gdy nazwa kodowania jest krĂłtsza niĹź 24 znaki, jest uzupeĹniane przez '\0'. (Co najmniej raz) Zadawane Pytania: > Czy za poprawnÄ implementacjÄ protokoĹu Cytaty bÄdzie moĹźna rĂłwnieĹź > otrzymaÄ maksymalnÄ iloĹÄ punktĂłw? Tak. Za Cytaty moĹźna dostaÄ maksimum punktĂłw. Przy ocenianiu bÄdÄ braĹ pod uwagÄ to, Ĺźe Cytaty sÄ prostsze, wiÄc gdy bÄdÄ miaĹ bardzo podobne implementacje CytatĂłw i RQP (w sensie architektury, zastosowanych rozwiÄ zaĹ w celu zwiÄkszenia wydajnoĹci serwera, itd.), to wyĹźej oceniÄ RQP. Ale lepsza implementacja CytatĂłw bÄdzie oceniona wyĹźej niĹź (lub tak samo jak) gorsza implementacja RQP. > Czy wystarczajÄ cym interfejsem uĹźytkownika jest konsola? Tak, jeĹli interfejs bÄdzie speĹniaÄ specyfikacjÄ (m.in. serwer: moĹźliwoĹÄ dopisywania cytatĂłw w trakcie dziaĹania serwera). > W jakich jÄzykach moĹźna pisaÄ? W C, C++, Pythonie i Javie. > Czy planowane sÄ jakieĹ testy wydajnoĹciowe rozwiÄ zaĹ? Tak, bÄdÄ testowaĹ wydajnoĹÄ serwera. WyĹlÄ do serwera na raz duĹźÄ liczbÄ ĹźÄ daĹ i zmierzÄ liczbÄ odpowiedzi ktĂłre doszĹy w okreĹlonym czasie (np. 1s, 5s, 10s).