Popis tématu

Diplomová práce v oboru Ostatní / Nespecifikováno.

Různá témata z oblasti webových technologií na míru

Konkrétní zadání bude připraveno dle zájmu a znalostí studenta.

Externí konzultant: u všech témat bude externím odborným konzultantem firma RT Soft, která poskytne technické poradenství s jednotlivými tématy.

Minimální požadované znalosti: dobrá znalost webových technologií - HTML5, CSS 3, Php + MySql apod.

***************************************************************
Hrubá verze témat:

1. Logování a reportování chyb napříč projekty
Popis problému
Kontrola, zda aplikace funguje správně a nevyskytují se v ní chyby se většinou provede tak, že se zkontroluje error log.
To zdržuje, a navíc se na to často i zapomene. Pokud je projektů více, tak to zabere i nemalé množství času. Logy jsou také často plné duplicitních chyb a obsahují velké množství dat, ve kterých se nelze zpětně skoro vyznat a obtížně se s nimi pracuje. Chyby jsou také děleny do více úrovní, a ne vždy nás zajímají všechny chyby.

Řešení
Automatizace procesu. Parsovat logy a ukládat všechny tyto chyby do centrálního úložiště a odtud periodicky posílat reporty podle specifických požadavků. Dokázat filtrovat a shlukovat data a ty pak předat dále ve formě reportu.

Požadavky
• využít Elastic Stack (Elastic, Logstash, Kibana, Beats)
• využít alespoň 2 typy reportování (1 z nich musí být email)
• pro reportování použít X-Pack (30 denní trial) a minimálně jeden další nástroj (např. https://github.com/Yelp/elastalert/blob/master/docs/source/elastalert.rst)
• porovnání testovaných systémů mezi sebou (cena, výkon, požadavky, omezení, možnosti reportování atd.)
• zpracovat minimálně 3 reporty dle zadání


2. Robustní framework pro vytváření dynamických webových aplikací
Popis problému
Cílem práce bude zpracovat robustní framework pro jednoduché vytváření SPA (Single Page Application) aplikací. Framework bude napsán v JS, v některém z frameworků VueJS, React nebo Angular. Backendová část frameworku bude napsaná v PHP, v Nette frameworku.
JS část frameworku bude zahrnovat:
• modul pro autentizaci,
• možnost konfigurace aplikace pomocí konfiguračního souboru (např. meta data frontendu),
• konfigurovatelnou podporu serverového renderování,
• rozdělení na backend a frontend,
• robustní komponenty pro definice gridů, grid bude umět:
o změna pořadí sloupců,
o řazení řádků,
o filtrace v rámci jednotlivých sloupců,
o stránkování nebo načítání dat (load more),
o inline editace,
o vzhled jako tabulkový editor
• robustní komponenty pro definice formulářů, formuláře budou umět pracovat se všemi formulářovými poli,
• možnost jednoduše definovat nový CRUD (Create, Read, Update, Delete) v backendu,
• obecný modul pro komunikaci s API.

PHP část frameworku bude zahrnovat:
• API pro autentizace,
• možnost přes konfiguraci definovat API pro grid,
• možnost přes konfiguraci definovat API pro formulář,
o načtení defaultních hodnot,
o validace
• možnost přes konfiguraci definovat API pro celý CRUD

Demonstrace frameworku
Framework bude předveden na aplikaci, ve které bude možno pomocí UI a za použití výše uvedeného zadat a vygenerovat:
• jen kód formuláře,
• jen kód gridu,
• jen kód CRUDu,
• kód celého nového projektu.
Zpracování dat (backend) pro tuto aplikace bude řešeno pomocí Nette frameworku.


3. Porovnání frameworku React Native s ostatními jazyky pro vytváření mobilní aplikací
Popis problému
Porovnání relativně nového JS frameworku React Native s Javou a Objective C (případně Swiftem), zpracování jeho detailního popisu, určení jeho kladných a záporných stránek a návrh, pro jaké aplikace a v jakých oblastech je vhodný.

Řešení
Vyzkoušení vlastností Reactu Native, porovnávání s Javou a Objective C. Zpracování aplikace, na které bude možné demonstrovat silné a slabé stránky frameworku.

Požadavky
• zpracování detailního popisu a vlastností React Native
• zpracování porovnání vlastností s Javou a Objective C
• zpracování výkonnostního benchmarku
• vytvoření vzorové aplikace k demonstraci vlastností frameworku
• závěr v podobě doporučení, kde a na jaký typ aplikací framework použít


4. UI rozhraní pro vytváření webových aplikací
Popis problému
Vytváření a designování webových aplikací pomocí UI v prohlížeči tak, aby byl uživatel odstíněn od psaní zdrojového kódu. Aplikace ulehčí kodérovi nebo zákazníkovi jednoduše vytvářet nové stránky v aplikaci a v jednotlivých stránkách moduly jako např. formuláře, tabulky, datagridy, sekce s obsahem.
Vytvořená aplikace přes UI půjde pojmenovat, uložit a případně editovat. Výstupem aplikace pro uživatele bude vygenerovaný zdrojový kód aplikace, kterou uživatel vytvořil.
Uživatel si bude moci zvolit, zda bude výstupem zdrojový kód SPA (Single Page Application) aplikace nebo zda bude celá renderována na serveru.

Řešení
Použití JS frameworku, ukládání dat do vhodné databáze a generování zdrojového kódu pomocí backendu, který bude psaný v PHP frameworku Nette.
Backend bude generovat jak frontendový kód, tak kód backendu.

Požadavky
• vytvoření drag and drop UI pro umisťování modulů na stránku (canvas)
• použití některého z JS frameworků – React, Angular, VueJS
• použití Nette frameworku na backend
• formuláře budou podporovat všechny formulářové prvky a budou podporovat validaci
• uživatel si bude moci definovat eventy (odesílání formuláře, kliknutí na tlačítko, ...)
• použití AJAXu pro zpracování formulářů


5. Webové UI pro vytváření mobilních aplikací v React Native
Popis problému
Vytváření a designování mobilních aplikací pomocí UI v prohlížeči tak, aby byl uživatel odstíněn od psaní zdrojového kódu. Aplikace ulehčí programátorovi nebo zákazníkovi jednoduše vytvářet nové stránky v aplikaci a v jednotlivých stránkách moduly jako např. formuláře, tabulky, datagridy, sekce s obsahem.
Vytvořená aplikace přes UI půjde pojmenovat, uložit a případně editovat. Výstupem aplikace pro uživatele bude vygenerovaný zdrojový kód aplikace, kterou uživatel vytvořil.

Řešení
Použití JS frameworku, ukládání dat do vhodné databáze a generování zdrojového kódu pomocí backendu, který bude psaný v PHP frameworku Nette.
Generovaný bude jak kód frontendu (JS), tak kód API (Nette).

Požadavky
• vytvoření drag and drop UI pro umisťování modulů na stránku (canvas)
• použití některého z JS frameworků - React, Angular, VueJS
• použití Nette frameworku na backend
• generování kódu frontendu aplikace v React Native a API v Nette
• formuláře budou podporovat všechny formulářové prvky a budou podporovat validaci
• uživatel si bude moci definovat eventy (odesílání formuláře, kliknutí na tlačítko, ...)
• použití fetch pro zpracování formulářů a vytvoření obecné komponenty pro komunikaci s API


6. Nástroj pro testování bezpečnosti webové aplikace
Popis problému:
Kontrola odolnosti webové aplikace proti základním bezpečnostním útokům.
Součástí by měl být nástroj pro kontrolu hesel proti databázi nejpoužívanějších a uniklých hesel.

Řešení:
Naprogramování nástroje, který na zadaných webových stránkách pokusí prověřit co nejvíce míst s potenciální příležitostí k bezpečností chybě.

Požadavky:
Součástí práce by měl být přehled všech nejčastějších bezpečnostních chyb v aplikacích, jejich ukázky a řešení.
Nástroj musí kontrolovat tyto bezpečnostní chyby:
• Cross Site Scripting (XSS)
• SQL Injection
• Session hijacking
• Kontrola hesla u zadaných uživatelských účtů
• Omezení výpisu chyb
• Nezabezpečený přímý odkaz na objekt
• Dostupnost konfigurace
• Kontrola dostupnosti dat verzovacích systémů (.git)
• Zabezpečení síťové komunikace


7. Měření a statistiky výkonu webové aplikace – osobní konzultace nutná
Popis problému:
Cílem práce bude seznámit se s dostupnými nástroji pro testování rychlosti odezvy a vykreslení stránek, jejich srovnání a doporučení nejlepšího.

Měření by se měla dělit na 2 části:
1) Měření výkonu backendu webové aplikace na serveru (zátěžové testy, testy hraniční zátěže, testy objemu dat).
2) Měření rychlosti odezvy frontendu (čas první odezvy, doba načtení stránek, velikost, počet requestů na externí zdroje).

Testování by mělo probíhat na různých vzorových aplikacích napsaných v PHP s různým nastavením a rozsahem.

Téma vypsal: Ing. Martin Dostal, Ph.D. (UN 307)

Vypsáno pro akademický rok 2017/2018 dne: 2017-05-04

Zadáno komu: (Nedokončené)

Aktualizováno 0