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.