Sprawozdanie 1 Node.js + Redis Sprawozdania przysyłamy na
Transkrypt
Sprawozdanie 1 Node.js + Redis Sprawozdania przysyłamy na
Sprawozdanie 1 Node.js + Redis W pierwszym sprawozdaniu oczekuję od Państwa zaprezentowania umiejętności obsługi bazy Redis i (w przypadku oceny 4.0 lub większej) umiejętności napisania aplikacji w Node.js, która wykorzysta bazę Redis i pozwoli użytkownikowi na dostęp do danych w bazie i ich modyfikację, zarządzanie nimi. Aplikacja ma działać ale nie musi być w pełni funkcjonalna, tzn. ma być dostęp do danych, które macie w bazie, ale nie musi to być pełna, wyczerpująca dany problem funkcjonalność, której oczekiwalibyśmy od gotowej aplikacji na potrzeby klienta. Aplikacja ma być dowodem, że Państwo umieją obsługiwać bazę Redis i np. wykorzystać pakiet ioredis do obsługi bazy z Node.js. Wygląd w sensie kolorów, doboru odpowiednich znaczników czy rozmieszczenia informacji na stronie nie będzie brany pod uwagę, ale jakaś czytelność danych jest potrzebna i opis pól formularza też. Tak więc w ogóle nie skupiamy się na wyglądzie ale informacje wyświetlanie w przeglądarce mają być zrozumiałe, czytelne, w jakimś porządku. Sprawozdania przysyłamy na adres: [email protected] Termin: dwa tygodnie, do 19.11 włącznie można wysyłać na maila. Załączamy: • sprawozdanie w pliku PDF, • spakowany katalog z projektem, najlepiej zip. Można też podesłać repozytorium git'a. Tytuł: TZT - Nazwisko - Spr 1 Załączniki: Nazwisko.pdf, Nazwisko.zip Proszę też napisać na górze sprawozdania na jaką ocenę ono jest, żebym nie musiał szukać w kodzie czy się domyślać. Sprawozdania wysłane na inny mail będę odsyłał z powrotem. W samym sprawozdaniu proszę opisać jakie struktury danych wykorzystaliście, jakie polecenia z bazy Redis i do czego one służą. Jakie informacje przechowuje baza (jaki fragment rzeczywistości modeluje, np. studenci-uczelnia, …) i jak odpowiedni dobór nazw kluczy i struktur danych ułatwia prawidłowe funkcjonowanie aplikacji i dostęp do danych. Dla ocen od 4.0 w górę proszę zrobić listę wszystkich adresów URL, które obsługuje aplikacja i napisać w kilku słowach do czego one służą. Warto by to zrobić z podziałem na metody protokołu HTTP. Nie będę dokładnie, szczegółowo opisywał jakie mają być punkty sprawozdania, co dokładnie ma ono zawierać. Proszę zaprezentować to co zrobiliście, szczególnie te rzeczy, które były ciekawsze, trochę trudniejsze, z którymi może było ciężko... Baza danych Redis ma do dyspozycji 5 różnych struktur danych: 1. zwyczajna wartość (String) 2. lista (List) 3. zbiór (Set) 4. zbiór posortowany (Sorted Set) 5. tablica asocjacyjna (Hash) Lista poleceń dla poszczególnych struktur danych (i innych): http://redis.io/commands Wymagania do sprawozdania i ocenianie Ocena Wymagania 3.0 Wykorzystujemy tylko narzędzie redis-cli. Wykorzystać 3 wybrane struktury danych z bazy Redis i na przykładowych danych pokazać ich wykorzystanie. Z każdej wybranej struktury danych powinno być przynajmniej 5 poleceń z opisem do czego służą. Dodatkowo proszę jeszcze wykorzystać 5 wybranych poleceń z grupy Keys (ogólne dotyczące wszystkich kluczy), które również proszę opisać. 3.5 Wykorzystujemy tylko narzędzie redis-cli. Proszę na jakimś sensownym zbiorze danych reprezentującym jakiś spójny zbiór informacji (np. studenci-przedmioty-oceny albo piłkarze-bramki-mecze, …, zupełnie dowolny sensowny zbiór informacji) zaprezentować wykorzystanie czterech wybranych struktur danych z bazy Redis. Z każdej wybranej struktury danych powinno być przynajmniej 5 poleceń z opisem do czego służą. Dodatkowo proszę jeszcze wykorzystać 5 wybranych poleceń z grupy Keys (ogólne dotyczące wszystkich kluczy), które również proszę opisać. 4.0 Piszemy aplikację w Node.js z wykorzystaniem szablonu aplikacji Express, która zaprezentuje wykorzystanie 2 wybranych struktur danych z bazy Redis. Aplikacja powinna wyświetlać dane z bazy, pozwolić użytkownikowi na dodawanie nowych danych jak i ich modyfikację za pomocą formularzy. Aplikacja powinna również udostępniać funkcjonalność usuwającą dane. 4.5 Piszemy aplikację w Node.js z wykorzystaniem szablonu aplikacji Express, która zaprezentuje wykorzystanie 3 wybranych struktur danych z bazy Redis. Dane przechowywane w bazie powinny reprezentować jakiś sensowny i spójny zbiór informacyjny, tak samo jak w wymaganiach na ocenę 3.5. Aplikacja powinna wyświetlać dane z bazy, pozwolić użytkownikowi na dodawanie nowych danych jak i ich modyfikację za pomocą formularzy. Aplikacja powinna również udostępniać funkcjonalność usuwającą dane. Będę tutaj też oceniał nazewnictwo kluczy. Należy wykorzystać w przynajmniej jednym formularzu metodę POST. Wykorzystujemy też parametry w adresach URL żeby obsługiwać np. numery użytkowników, których dane chcemy wyświetlić. 5.0 Piszemy aplikację w Node.js z wykorzystaniem szablonu aplikacji Express, która zaprezentuje wykorzystanie 4 wybranych struktur danych z bazy Redis. Dane przechowywane w bazie powinny reprezentować jakiś sensowny i spójny zbiór informacyjny, tak samo jak w wymaganiach na ocenę 3.5. Aplikacja powinna wyświetlać dane z bazy, pozwolić użytkownikowi na dodawanie nowych danych jak i ich modyfikację za pomocą formularzy. Będę tutaj też oceniał nazewnictwo kluczy. Aplikacja powinna również udostępniać funkcjonalność usuwającą dane. Należy wykorzystać w przynajmniej jednym formularzu metodę POST. Wykorzystujemy też parametry w adresach URL żeby obsługiwać np. numery użytkowników, których dane chcemy wyświetlić. Bardzo wskazane byłoby również wykorzystanie szablonów: Template Engines. Wymagania na każdą ocenę są inne. Należy sobie wybrać swój poziom umiejętności, chęci czy zaangażowania i oddać odpowiednie sprawozdanie z działającym programem albo kodem testującym (w przypadku ocen 3.0 i 3.5). Proszę to zrobić samodzielnie, każdy ile i jak potrafi. Proszę być odważnym i pozwolić sobie poznać samego siebie, nawet jeśli się okażę, że umie się maksymalnie na 4.0. Zasadniczo będę oceniał jak w powyższym opisie ale od oceny 4.0 można zamieścić aplikację gdzieś online, np. z użyciem https://www.heroku.com/ i wykorzystać zdalną bazę danych (nie na localhost) np. https://redislabs.com/. Aplikacja działająca online ze zdaną bazą podnosi ocenę o 0.5. Gdyby ktoś chciał wdrożyć swój projekt np. na heroku: https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction Za samo wykorzystanie zdalnej bazy danych daję plusa. Do połączenia się z https://redislabs.com/ dla mojego konta działa poniższe polecenie (z właściwym hasłem) redis-cli -h redis-11869.c10.us-east-1-3.ec2.cloud.redislabs.com -p 11869 -a JakiesMojeHaslo Przykładowy projekt Aplikacja do wystawiania ocen za sprawozdania z przedmiotu TZT Strona: https://rperlinski.herokuapp.com/ Działa na bazie: redis-11869.c10.us-east-1-3.ec2.cloud.redislabs.com na porcie 11869 Skrócony opis projektu: • darmowy hosting NodeJS (i nie tylko): https://www.heroku.com/ • darmowa baza Redis: https://redislabs.com/ • NodeJS, • ExpressJS, • ioredis, • wykorzystałem bardzo prosty silnik szablonów mustache: https://www.npmjs.com/package/mustache Ten przykładowy projekt można by ocenić na 5.5 bo są 4 struktury danych, jest online, są wykorzystane szablony, formularze z metodą POST, parametry w adresach URL. Aż tyle od Państwa nie oczekuję, ale na 5 trzeba się do takie funkcjonalności zbliżyć. Adresy URL, wykorzystanie różnych struktur danych z bazy Redis: Adres Metoda HTTP Struktura danych Znaczenie albo zawartość Zwykła wartość (String) / GET Strona główna, odnośniki do pozostałych stron /about GET Info o aplikacji, dane z bazy, struktura String /about/edit GET Formularz do zmiany informacji o aplikacji /about/update POST URL do aktualizacji danych z informacjami o aplikacji Struktura danych Lista (List) /grades GET Lista możliwych ocen zapisanych w liście, odczytana z bazy /grades/reset GET URL do usunięcia i ponownego utworzenia wszystkich możliwych ocen, od 2.0 do 5.0 Struktura danych Lista (List) /reports GET Lista sprawozdań, za które można ocenić studenta /reports/add GET Formularz pozwalający dodać sprawozdanie do listy /reports/:report/delete GET Usuwa sprawozdanie z listy. Nazwa sprawozdania jest parametrem adresu URL. Przykładowy link: /reports/Spr2%20-%20MongoDB/delete /reports/add POST Dodaje sprawozdanie do listy, nazwa przekazana metodą POST. Struktura danych Zbiór posortowany (Sorted sets) /studrep GET Zwraca listę studentów, którzy mają jakieś oddane sprawozdania. /studrep/:index GET Lista sprawozdań studenta z podanym numerem indeksu, np.: /studrep/99007 /studrep/add POST Dodaje ocenę z wybranego sprawozdania konkretnemu studentowi. Indeks studenta, ocena i sprawozdanie przekazywane metodą POST. GET Formularz pozwalający zmienić studentowi ocenę z wybranego sprawozdania. Indeks i sprawozdanie przekazywane w adresie URL jako parametry, np.: /studrep/99007/Spr2%20-%20MongoDB/edit /studrep/:index/:report/edit /studrep/:index/:report/update POST Aktualizuje ocenę ze sprawozdania danego studenta. Indeks i ocena jako parametry adresu URL. Nowa wartość oceny przekazana metodą POST. /studrep/:index/:report/delete GET Usuwa informacje o oddanym sprawozdaniu razem z oceną. Dwa parametry w adresie URL. /studrep/:index/delete Usuwa informacje o wszystkich sprawozdaniach danego studenta. GET Struktura danych Tablica asocjacyjna (Hash) /students/add GET Formularz do wprowadzania informacji o studentach. /students/add POST Dodaje studenta do bazy. Informacje przekazane metodą POST. /students/:index/edit GET Formularz do aktualizacji informacji o konkretnym studencie. Indeks przekazany jako parametr z adresu URL. /students/:index/delete GET Usuwa studenta o podanym numerze indeksu określony w adresie URL. /students GET Lista studentów zapisanych w bazie. /students/:index GET Informacje o konkretnym, wybranym studencie. /students/:index/:field/delete GET Usuwanie wybranego pola z informacji o wybranym studencie. Numer indeksu i nazwa pola jako składowe adresu URL.