Sprawozdanie 2 Node.js + MongoDB Sprawozdania przysyłamy na

Transkrypt

Sprawozdanie 2 Node.js + MongoDB Sprawozdania przysyłamy na
Sprawozdanie 2
Node.js + MongoDB
W drugim sprawozdaniu oczekuję od Państwa zaprezentowania umiejętności obsługi bazy
MongoDB i ewentualnie umiejętności napisania aplikacji w Node.js, która wykorzysta bazę
MongoDB i pozwoli użytkownikowi na dostęp do danych w bazie i ich modyfikację,
zarządzanie nimi (choć nie jest to konieczne).
Aplikacja napisana w Node.js 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ę MongoDB i np. wykorzystać pakiet
mongodb 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]
Sprawozdania wysłane na inny mail będę odsyłał z powrotem.
Termin: ponad dwa tygodnie, do 14.01 (sobota) 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 2
Załączniki: Nazwisko.pdf, Nazwisko.zip
Wartości dodane do oceny (wddo) zależnie od zrobionego zadania
Poniżej jest lista różnych zadań do zrobienia z bazą MongoDB i Node.js. Zakładam na
początek, że każdy student ma z drugiego sprawozdania ocenę 2.0. Każde zadanie podnosi
ocenę ze sprawozdania o określoną wartość. Zrobienie wybranych (w zasadzie dowolnie)
zadań z poniższej listy skutkuje odpowiednią oceną. Drugie sprawozdanie będzie
najważniejsze ze wszystkich, będzie miało największą wagę do oceny końcowej. Na 3.0
wystarczy zrobić zadanie 1 i 3. To jest takie minimum. Jakby zrobić maksymalny wariant to
wychodzi z tego sprawozdania … 7,6 czyli dużo :) nie ma takiej oceny nawet w szkołach. Tak
więc mają Państwo dużą dowolność ale na 5.0 trochę się trzeba napracować. Studenci
niestacjonarni mają mniejszą dowolność ale spokojnie możecie oddać sprawozdania na 5.0.
WDDO
Zadania
Zadanie 1 - Zaprojektowanie i utworzenie danych jednej kolekcji
0,5
Wymyślenie jakiejś sensownej kolekcji z danymi różnych typów. Należy
uwzględnić dane zagnieżdżone jak również pole będące tablicą, przynajmniej
jedno. Chodzi o dobre przykładowe dane, na których można pokazać
funkcjonalność języka zapytań w MongoDB, strumienia agregacji, sortowania, itp.
Do takiej kolekcji należy wstawić trochę danych. Myślę, że 15 różnorodnych
dokumentów to absolutne minimum.
Zadanie 2 - Zaprojektowanie i utworzenie danych dwóch kolekcji
powiązanych _id albo DBRef
0,8
To samo co w zadaniu pierwszym tylko dwie kolekcje zamiast jednej. Kolekcje
powinny być powiązane przez pole _id (ewentualnie DBRef ale to jest potrzebne
tylko w bardziej skomplikowanym przypadku). Kolekcje też powinny być
różnorodne (różne typy danych, jakaś tablica, pola zagnieżdżone). Obie kolekcje w
sumie powinny mieć przynajmniej 25 dokumentów. Jedna z kolekcji może być
trochę prostsza (mniej pól, nieco uboższa struktura).
Zadanie 3 – zapytania
0,5
Do zdefiniowanej w zadaniu 1 albo 2 struktury dokumentu(ów) należy stworzyć
zbiór zapytań, które pozwolą na wybór odpowiednich danych z dokumentu. Chodzi
tutaj o zapytania proste jak i te złożone z użyciem AND i OR i różnych operatorów.
Cztery proste zapytania i cztery złożone powinny wystarczyć na +0,5 do oceny.
Zadanie 4 – aktualizacja i usuwanie danych
0,5
Do posiadanej struktury naszych dokumentów proszę stworzyć zapytania, które
aktualizują dane albo je usuwają. Warto tutaj wykorzystać jakieś ciekawe operatory
służące do aktualizacji zawartości dokumentów, np. $unset usuwający pola z
dokumentu. Sześć dobrych, nietrywialnych zapytań wystarczy na +0,5 do oceny.
Zadanie 4 – strumień agregacji
+0,1 do oceny za każde zapytanie wykorzystujące strumień agregacji składające się
przynajmniej z trzech etapów. Jest dużo dostępnych operatorów: $project, $match,
$redact, $sort, … na złożonym dokumencie można wymyślić dużo fajnych
0,1–0,8
przekształceń, wyboru potrzebnych danych odpowiednio pogrupowanych,
generowania innych kolekcji wyjściowych, … Maksymalnie można tutaj uzyskać
+0,8 do oceny za osiem fajnych, nieoczywistych zapytań strumienia agregacji.
Zadanie 5 – funkcje operujące na kolekcji MongoDB
Piszemy zbiór funkcji jak w laboratorium 8. +0,2 do oceny za każdą napisaną
poprawnie i działającą funkcję JavaScript operującą na bazie danych. Funkcja
0,2–0,8
wykorzystując dane z dwóch kolekcji łącząca je po _id albo IDRef liczy się za 0,4
punktu. Maksymalnie 0,8 za to zadanie.
Zadanie 6 – projekt w Node.js
1,2
Piszemy prosty projekt w Node.js korzystający z szablonu aplikacji Express.js,
który pozwoli na przeglądanie danych naszej kolekcji, wybór części z nich,
uzyskanie jakiś pogrupowanych danych, posortowanych po jakimś polu itp. Projekt
powinien pozwalać na modyfikację danych, usuwanie niektórych pól i całych
dokumentów. Trzeba będzie wykorzystać formularze, parametry w URL, metody
GET i POST, silnik szablonów. Naturalnie narzuca się wykorzystanie w projekcie
zapytań opracowanych w zadania wcześniejszych. Tam opracowaliśmy zapytanie
operujące na danych, a tutaj je wkładamy w działający projekt. Plus do oceny:
• +0,3 – przeglądanie danych na różne sposoby,
• +0,3 – aktualizacja i usuwanie danych,
• +0,2 – parametry w adresach URL,
• +0,2 – formularze z metodą GET i POST,
• +0,2 – wykorzystanie silnika szablonów.
Zadanie 7 – aplikacja działająca online
0,5
Umieszczenie aplikacji na heroku: https://www.heroku.com/ i wykorzystanie
mLab: https://mlab.com/ podnosi ocenę o 0,5. Można wykorzystać innych hosting.
W każdym razie projekt działający online podnosi ocenę o 0,5.
Zadanie 8 – inne możliwości
0,5
Mogę dać +0,5 za ładny wygląd przy wykorzystaniu jakiejś biblioteki frontend, np.
Bootstrap czy innej. Mogę dać +0,5 za zaprezentowanie jak wykorzystanie
indeksów przyśpiesza wykonywanie zapytania. Jak ktoś napisze coś fajnego z
wykorzystanie danych przestrzennych też mogę dać +0,5 do oceny. Można
wykorzystać przeszukiwanie tekstowe w MongoDB. Jak to ładnie opisać i zrobić
fajne przykłady będzie +0,5 do oceny. Inne ciekawe funkcjonalności i pomysły też
będą punktowane ale nie może być to bez realizacji przynajmniej zadania 1 i 3.
Proszę napisać na górze sprawozdania na jaką ocenę ono jest, żebym miał łatwiej sprawdzać.
Sprawozdanie powinno zawierać osobne punkty do każdego zrealizowanego zadania z
opisem tego co zrobiono: struktura dokumentu, przykładowe zapytanie czy fragment
działającego kodu. Od razu będę wiedział za co jest taka a nie inna ocena. Tak więc
opisujemy co zrobiliśmy na dany plus do oceny.
Jeśli jest aplikacja w Node.js to proszę robić listę adresów URL i za co każdy z nich
odpowiada. Warto by to zrobić z podziałem na metody protokołu HTTP.
Gdyby ktoś chciał wdrożyć swój projekt np. na heroku:
https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction
Alternatywny sposób na zaliczenie drugiego sprawozdania
Daję z drugiego sprawozdania 5.0 za napisanie poniższej aplikacji. Taką możliwość
przewiduję dla maksymalnie 6 osób, po dwie z każdej grupy (gr. 1 stac., gr. 2 stac., gr.
niestac.), które się do tego zobowiążą i taką aplikację napiszą. Tych osób powyższe
sprawozdanie nie będzie dotyczyć.
Osoby zainteresowane proszę o przysyłanie mi na maila [email protected]
propozycji funkcjonalności aplikacji, jej przykładowego wyglądu, sposobu działania. Ja
jestem klientem, a Państwo chcą mi sprzedać aplikację za 5.0 z tego sprawozdania. 6
najlepszych ofert (jeśli w ogóle jakieś będą), po dwie z każdej grupy, wybiorę do
zaimplementowania zamiast sprawozdania. Na oferty czekam do 2 stycznia 2017 do północy.
3 stycznia osobom zainteresowanym roześlę moją decyzje.
Przydałby się na zajęcia i dla studentów również taki fajny generator dokumentów JSON.
Takie generowanie dokumentów JSON z podanego schematu z przykładowymi wartościami.
Coś podobnego do http://www.json-generator.com/ albo https://github.com/webroo/dummyjson. Chcemy określać strukturę dokumentu, nazwy i typy pól, liczbę wygenerowanych
dokumentów, różnorodność danych i ich obligatoryjność, zawartość tablic i ich wielkość stałą
czy losową … coś w tym stylu.
Aplikacja powinna działać z Node.js, łączyć się z bazą danych i przynajmniej generować
dokumenty do jednej wybranej przez użytkownika kolekcji. Fajnie jakby można było określać
wiele elementów graficznie, wybierać kolekcję z dokumentem zawierającym schemat,
wybierać zbiór danych z przykładowymi imionami, nazwiskami, zakres dat, …
Jeśli będą tutaj jeszcze jakiś pytania proszę pisać na maila.