====== Vývoj webových aplikací 2 [A4M39WA2] ====== * Stránky předmětu: https://edux.feld.cvut.cz/courses/A4M39WA2/start * Přednášející: * Cvičící: Ladislav Čmolík cmolikl@fel.cvut.cz ===== Cvičení ===== ==== Test 2 - 2014 ==== * On premise (nasazeni SW na vlastnim PC) * 2 cloud sluzby od MS (Office 365, Skype, Azure, Hotmail...) * rizika cloud sluzeb (Cloud computing sebou nese dvě hlavní kategorie rizik. První z nich je riziko ztráty nebo poškození, respektive znehodnocení dat. Druhým rizikem je jejich odcizení, respektive expozice dat nežádoucím subjektům.) * 2 moznosti trvaleho ulozeni Azure (Tables, Blobs) * 3 DB funkce, co nejsou v Cloudu (konzistence, pevné schéma, transakce) * Jak se propojuje objekt v JPA (EntityManagerem) * Derefered binding (vlastnost Google Web Toolkit pri konverzi Javy do JavaScriptu, "dynamic class-loading that occurs at compile time instead of execution time". Ruznym prohlizecum se dostanou ruzne varianty skriptu.) * Kde ukladat video v Azure (BLOB) * Validace v JSF (pomocí implementace rozhraní javax.faces.validator.Validator) Testy jsou na 10 bodů, každá otázka za 1 bod, cca 20 minut. ==== Test 1 ==== * Co je to REST * Rozdíl mezi Javou SE a EE * Jaké vrstvy má J2EE aplikace * Co je to anotace v Javě * Co je to PaaS, IaaS a SaaS * Jaké jsou metody RESTu a k čemu slouží * Jak lze realizovat dědičnost entit v databázi * Kdo je vlastníkem ve vztahu 1:N, M:N v ORM a v relační databázi * Nakreslete schéma MVC při využití JSP ==== Test 2 ==== * Typy úložišť (DB) v Cloudu od Google - High Replication a Master/slave * Typy úložišť (DB) v Cloudu od Microsoftu - Table, BLOBS, Drivers, Queue * Jaká jsou omezení pro SQL v Cloudových databázích - omezená podpora transakcí, eventual consistence * Jak zajistíme, aby aplikace poslouchala na portu 1427 v Google a jak v Microsoft Azure - Google: --port=1427 nebo do dev_appserver.xml Azure:? * Jaké jsou typy rolí v Microsoft Azure - work a web * Jaké vlastnosti musí mít RESTful aplikace - Uniformní interface - definován URI; client-server; stateless; cache; layered system; code on demand (optional) * Co to je nasazení aplikace "on premise" - software na desktopu * Co je to škálovatelnost, elasticita a redundance a jaký je mezi tím rozdíl. - ==== Test 2 - 2013 ==== Stejné jako minulý rok. ==== Test 1 - 2013 ==== * Co musí splňovat rest? [2 body] * Jaké jsou požadavky, aby se použil cloud místo on premise? [1 bod] * Co se rozumí pojmem 'container' v souvislosti se servlety? [1 bod] * Jak se obecně chovají servlety ve vícevláknovém prostředí a jak se chovají v google app engine? [2 body] * Jaké jsou tři typy cloudu? [1 bod] * Popište funkci anotací v jave a uveďte příklad. [1 bod] * Jakou funkci má v MVC v ee javě jsp, servlet, java bean, nakreslete obrázek. [asi 1 bod] * Co je to deffered binding v GWT? ===== Zkouška ===== === Zkouška 5.6.2015 === Asi 8 otázek (4 teorie, 4 praktické), 1 hodina času na vypracování, minimum 15 bodů z 35, u ustní lze získat maximálně 15 bodů. Napíše se test, pak jdete popořadě ke Klímovi, kde s ním test projdete a opravíte, většinou se zeptá ještě na nějakou otázku aby věděl že tomu opravdu rozumíte anebo když vám tam něco chybí. Pak jdete k Mudrovi na ústní zkoušku, vybere asi 2 otázky podobné jako byly v semestru u písemky (Frotny v Azure=typy a popis, Lamportovy hodiny,...). Každý je tam dohromady asi 20 minut (oprava + ústní), takže se to pak docela protáhne až do odpoledne. * High replication - Popis, zápis, čtení, může být i obrázek [2 body] * Hadoop, Map a Reduce - Map =, Reduce =, může být i obrázek Hadoop architektury [3 body] * GWT Deferred binding [2 body] * Tu 4. teoretickou už si napamatuji... * Architektura systému podle zadání: Máme databázi elektrických spotřebičů a podle příchozích informací (logo, čárový kód, QR kód,...) máme poznávat o jaký se jedná. - Ideální je nakreslit obrázek Klienti, Webrole, Fronta, Workerrole - musí jich být více, Blob úložiště, Relační DB a popsat co se v jednotlivých uzlech dělá. [14 bodů] * Které operace systému lze paralelizovat [2 body] * Rest rozhraní (které metody (GET, POST, PUT, DELETE) + URL + popis hlavičky když je potřeba) [8 bodů] Zápis, čtení, smazání a úprava spotřebiče Zápis, čtení, smazání a úprava vlastností spotřebiče Dlouho jsem nevěděl co je tím vlastně myšleno, nakonec mu stačilo něco jako: POST .../Spotrebic {"nazev" : "..."} --header 'Content-Type: application/json' a co to vrátí? GET .../Spotrebic/{id} atd... ---- == Zkouška 19.5.2014 == - [[courses:a4m39wa2:zkouska20141905| Zde]] ---- Byla zadaná úloha, docela jednoduchý IS a k němu pak hromada otázek * jak udělat REST rozhraní, když chceme, aby to umělo ... * zvolte platformu a úložiště pro realizaci a zdůvodněte * ukázka kódu pro uložení entity do DB * nějaký složitý use-case a máme navrhnout řešení (třeba výpočet složitých statistik) * udělat ekonomický model * popsat jak bychom to škálovali * navrhnout distribuovaný algoritmus pro daný výpočet (stačí popsat jak řídit instance, co budou dělat a tak) * ústní zkouška je na dlouho, každý tam stráví tak 10-15 minut * dá se s ním o tom dobře diskutovat, občas se stane, že každý tu otázku pochopí jinak, ale to není problém * chce vidět, že tomu člověk rozumí a umí přemýšlet, pak vezme i řešení, která se mu nelíbí. Hodně záleží na zdůvodnění === 20.5.2013 === * Popište architekturu Hadoop * Popište algoritmy Map a Reduce na Hadoop * V jakých stavech se může nacházet entita JPA? * Co je to Content negotiation? * Co je to Deferred binding v GWT? V druhé části byl zadaný systém, něco jako: Navrhněte systém pro zpracování dat s kvalitních kamer. Sys. bude mít REST API pro vložení i získání videa. Sys. bude upravovat formát videa pro mobilní zařízení (iPad, iPhone, tablet, ...). Navrhněte pro platformu MS Azure. * Navrhněte architekturu * Popište sekvenčním dia., jak bude probíhat zpracování videa * Udělejte cenovou kalkulaci (nechtěl konkrétní ceny, ale jak byste postupovali) * Co budete dělat v případě, že se zvýší počet producers (ti co posílají videa z kamer) a consumers (ti co si pouští videa) * Jaká datová uložiště použijete a proč * Popište metody REST API ==Poznámky== Dá se s ním docela dobře diskutovat, pokud nejste úplně dutý. Bacha na ústní se docela dost ptá podrobně na věci z GWT (komunikace klient-server) či Hadoop (high replication). Občas položí fakt divnou otázku: "Jaký je rozdíl mezi Web service a REST?" Trvalo 10 min než jsem z něj dostal, že chce slyšet toto: "Výsledkem volání Web service je nějaká hodnota (když sčítám: 1+1) třeba 2. U RESTu je výsledkem něco jako: {"result": "2"}". Rozdíl je tedy v tom, že WS vrací hodnotu té funkce (integer), ale REST vrací celou odpověď (objekt). ===== Literatura ===== [[https://www.youtube.com/watch?v=rRoy6I4gKWU|Google IO 2012 - SQL vs. NoSQL]] ~~DISCUSSION~~