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.

Podobne dokumenty