V Ackee jsme opět vypsali závěrečné práce pro studenty ČVUT FIT. Role externích vedoucích se chopili absolventi ČVUT FIT z našich řad a každý si vymyslel 1-2 témata ze svého oboru. Cílem není práce na žádné konkrétní zakázce, jedná se o šuplíková, výzkumná nebo společensky přínosná témata, kterými chceme umožnit studentům, aby mohli pracovat na něčem zajímavém.
Pokud vás témata zaujala, napište rovnou na kontakt pod tématem, budeme se na vás těšit!
Vyhodnocovač výrazů pro šablonové literálové typy v jazyce TypeScript (Backend)
Programovací jazyk TypeScript představil ve verzi 4 šablonové literálové typy (template literal types), které umožňují definovat a konstruovat literálové typy pro konstantní řetězce (string literal types).
- Analyzujte a popište potřebné základní typové konstrukty jazyka (zřetězení, rekurzivní typy, podmíněné typy apod.)
- Navrhněte a implementujte typově bezpečný řešič matematických výrazů s podporou pro sadu základních operací: vstupem je výraz zapsaný jako typový literál pro konstantní řetězec, výstupem výsledek v témže formátu.
- Zvolte vhodný nástroj pro testování typových anotací a program otestujte funkčními testy.
- Diskutujte praktické využití vytvořených meta typů, teoretické a praktické nedostatky plynoucí z typového systému TypeScript.
Zátěžové testování RESTful, GraphQL a gRPC web API (Backend)
Cílem práce je analyzovat doporučené postupy pro zátěžové testování web API a aplikování daných principů k otestování vybraných 3 API služeb: RESTful, GraphQL a gRPC za pomocí vhodných nástrojů.
- Analyzujte různé metody a doporučení zátěžového testování a proveďte rešerši existujících nástrojů.
- Navrhněte a proveďte zátěžové testování vybraných služeb a výsledky interpretujte.
- Vyhodnoťte testování daných API protokolů, jejich případné limity a dostupnost nástrojů.
Interaktivní webová dokumentace pro Protocol Buffers (Backend)
Cílem práce je navrhnout a implementovat generátor statické webové prezentace pro dokumentaci gRPC API. Vstupem jsou soubory proto files, které nesou popis služeb, volání a typů. Výstupem je HTML stránka s dokumentací a možností provolání API (za předpokladu že API podporuje gRPC-web).
- Proveďte rešerši existujících řešení pro Protocol Buffers a porovnejte vlastnosti s obdobnými nástroji pro GraphQL, resp. RESTful API
- Navrhněte a otestujte uživatelské rozhraní
- Navrhněte a implementujte generátor dokumentace s možností provolání existujícího gRPC-web API
- Diskutujte a případně implementujte alternativní zdroj dat pomocí gRPC reflexe
- Aplikaci otestujte automatickými testy a proveďte uživatelské testování
Systém pro vzdálenou správu konfigurace serverové aplikace (Backend)
Cílem práce je navrhnout a implementovat systém pro vzdálenou správu konfigurace serverové aplikace včetně funkcí pro přepínání funkcionalit a A/B testování.
Proveďte rešerši typických případů užití a existujících řešení pro vzdálenou spr ávu konfigurace.
Po dohodě s vedoucím práce vyberte vhodnou serverovou aplikaci.
Navrhněte a implementujte;
- systém pro správu konfigurace,
- uživatelské rozhraní pro úpravy konfigurace,
- klientské SDK pro serverovou aplikaci, pro čtení konfigurace.
Diskutujte možná rozšíření systému, jako alternativní rozhraní pro správu, podpora nových SDK apod.
Systém, rozhraní pro správu a SDK otestujte automatickými testy, zdokumentujte jej pro integrace a podrobte uživatelské rozhraní testování použitelnosti.
Zranitelnosti komunikačních WEB API protokolů (Backend)
Kromě obecných typických zranitelností WEB API, jako je injection, data exposure apod, odhalují nové API technologie také nové zranitelnosti specifické pro dané komunikační protokoly. Zmapujte zranitelnosti specifické pro GraphQL a gRPC a implementujte na vybrané podporované platformě software pro ochranu proti běžným zranitelnostem daného protokolu.
- Analyzujte a popište známé zranitelnosti pro GraphQL a gRPC.
- Diskutujte možnosti snížení rizika pomocí automatizované kontroly.
- Implementujte middleware či rozšíření pro obě API technologie ve vybraném jazyce, které pomůže vývojářům snížit rizika diskutovaných útoků.
- Otestujte implementaci funkčními testy, zdokumentujte a demonstrujte použití v jednoduché aplikaci (volbu proveďte po dohodě s vedoucím práce).
Evaluation of service compliance with SLO before production release (DevOps)
One of the most challenging issues facing backend service development is compliance with the objectives introduced by the SLO (Service-level Objectives). Those objectives could be error rate, latency, availability in time and more. Deciding if service release will follow objectives once in production is generally tricky.
Analyze the current state of proactive service testing before releasing to production.
Implement a tool that generates tests of common SLOs (availability, latency, error rate, ...) from API description (Swagger, proto files, ...):
- Generated tests have to be usable in the Continous Delivery system and mark a service invalid once it doesn't pass the given objectives.
- The format of the test should be a configuration of commonly used benchmarking tools (K6, Locust, Gatling benchmark).
Test the tool implementation on an example application deployment with a basic SLO values of 99.99% availability, 1% error rate and 100 ms latency:
- The application has to be able to simulate the SLO values.
It is not required to develop a benchmark tool, yet it is imperative to bridge the gap between benchmark development and SLO service description. The tool has to help validate the service and free the developer from the time of benchmark preparation.
Mobilní aplikace Racing dashboard (iOS)
Cílem práce je návrh, implementace a testování aplikace pro iOS obsahující grafické znázornění dat ze závodního simulátoru. Budou podporovány mobilní telefony a tablety. Aplikace bude zobrazovat např. aktuální rychlost, nejrychlejší kolo nebo vývoj užití plynového pedálu v průběhu kola.
- Analyzujte již existující aplikace pro zobrazování dat z herních simulátorů.
- Analyzujte a popište strukturu dat poskytovaných vybraným závodním simulátorem.
- Po dohodě s vedoucím práce specifikujte funkční a nefunkční požadavky na mobilní aplikaci.
- Po dohodě s vedoucím práce navrhněte uživatelské rozhraní mobilní aplikace.
- Navrhněte a implementujte síťovou vrstvu, pomocí které bude mobilní aplikace data přicházející ze závodního simulátoru zpracovávat.
- Otestujte správnost implementace síťové vrstvy.
- Naimplementujte mobilní aplikaci podle zadání.
- Otestujte mobilní aplikaci.
- Shrňte výsledek práce, popište její přínosy.
Analýza nálady v komunikačních aplikacích (Backend)
Cílem práce je vytvořit nástroj na analýzu a prezentaci vývoje nálady na komunikačních platformách (Slack, Discord) pomocí sentimentové analýzy a dalších přístupů.
- Analyzujte aktuální používané metody a nástroje pro určení sentimentu.
- Navrhněte metriky pro měření vývoje nálady v čase a jeho prezentaci v jednotlivých kanálech.
- Implementujte nástroj pro sběr, analýzu a prezentaci dat na dané komunikační platformě (Slack, Discord).
- Po dohodě s vedoucím práce otestujte na reálných datech z firemního prostředí.
Konfigurovatelný web scraper internetového zpravodajství (Backend)
Cílem práce je vytvořit web API server na stahování a extrakci dat z webových stránek zpravodajských portálů za pomoci člověkem předpřipraveného nastavení.
- Analyzujte možnosti web scrapingu.
- Navrhněte vhodný formát nastavení pro účely extrakce dat z webových stránek zpravodajských portálů.
- Navrhněte a implementujte API server.
- Připravte nastavení extrakce pro zvolený zpravodajský portál a na něm aplikaci otestujte.
Monitoring trendů v komunikačních aplikacích (Backend)
Cílem práce je navrhnout a implementovat nástroj pro sledování trendů v komunikační aplikaci (Slack, Discord), jako jsou využití konkrétních kanálů, vlastních emotikon, nejdiskutovanější vlákna, vazby mezi kanály na základě společných uživatelů, sdílení apod.
- Diskutujte aktuálně poskytnuté údaje o trendech dostupné v aplikaci.
- Na základě uživatelského průzkumu navrhněte vhodné metriky trendů pro sledování v týmové či firemní kultuře.
- Navrhněte a implementujte nástroj pro sběr, analýzu a prezentaci dat na dané komunikační platformě (Slack, Discord).
- Po dohodě s vedoucím práce otestujte nástroj na reálných datech týmové či firemní aplikace.
Generátor internetových memů (Backend)
Cílem práce je navrhnout, implementovat a otestovat nástroj pro generování titulkovaných internetových memů ze spravovaných šablon.
Proveďte rešerši existujích generátorů memů.
Navrhněte a implementujte;
- aplikaci pro správu šablon memů, včetně grafické konfigurace (např. pozice a velikost šablonového textu) v grafickém uživatelském rozhraní,
- aplikaci pro generování memů za pomocí parametrizace existujících šablon.
Obě aplikace otestujte funkčními testy a podrobte uživatelskému testování.