MASARYKOVA UNIVERZITA FAKULTA I N F O R M A T I K Y Rozšírenie aplikácií pre prácu s dátami o pozorovaní premenných hviezd DIPLOMOVÁ PRÁCA Bc. Michal Krajčovič Brno, jeseň 2018 Na tomto mieste sa v tlačenej práci nachádza oficiálne podpísané zadanie práce a vyhlásenie autora školského diela. Vyhlásenie Vyhlasujem, že táto diplomová práca je mojím pôvodným autorským dielom, ktoré som vypracoval samostatne. Všetky zdroje, pramene a literatúru, ktoré som pri vypracovaní používal alebo z nich čerpal, v práci riadne citujem s uvedením úplného odkazu na príslušný zdroj. Bc. Michal Krajčovič Vedúci práce: RNDr. Martin Kuba, Ph.D. i Poďakovanie Ďakujem RNDr. Martinovi Kubovi, Ph.D. za vedenie mojej práce a užitočné rady pri písaní textovej časti práce. Taktiež chcem poďakovať môjmu konzultantovi doc. RNDr. Miloslavovi Zejdovi, Ph.D za odbornú pomoc. Ďalej ďakujem mojej rodine a priateľom za podporu pri štúdiu, Zuzke Pápayovej za pomoc pri tvorbe zrozumiteľných viet a Dominikovi Szalaiovi za odpovede na všetky moje technické otázky. Špeciálne poďakovanie venujem mojej starej mame Eve Bohušovej za obrovský záujem o celé moje štúdium na Masarykovej Univerzite. ii Zhrnutie Cieľom tejto diplomovej práce je reimplementovať a rozšíriť aplikácie pre prácu s dátami o pozorovaní premenných hviezd pre Sekciu premenných hviezd a exoplanét Českej astronomickej spoločnosti. Nové aplikácie slúžia na zobrazovanie odchýlok nameraných miním jasností premenných hviezd,taktiež zahŕňajú katalóg premenných hviezd CzeV a predpovedanie, kedy minimá jasností nastanú. Text práce obsahuje analýzu pôvodného stavu, analýzu požiadaviek pre nové aplikácie, návrh riešenia a popis implementácie nových aplikácií v tvare webovej služby a jednostránkovej webovej aplikácie. iii Kľúčové slová fotometria, premenné hviezdy, jednostránková webová aplikácia, Java, React iv Obsah 1 Úvod 1 2 Analýza požiadaviek 2 2.1 Počiatočný stav 2 2.1.1 O-C brána 3 2.1.2 Katalóg CzeV 3 2.1.3 Predpovede miním premenných hviezd 5 2.2 Funkčné požiadavky 6 2.2.1 O-C brána 6 2.2.2 Katalóg CzeV 7 2.2.3 Predpovede miním premenných hviezd 9 2.3 Nefunkčné požiadavky 10 3 Návrh riešenia 12 3.1 Návrh webovej služby 12 3.1.1 Architektúra 12 3.2 Návrh klientskej webovej aplikácie 13 3.2.1 Jednostránková webová aplikácia 13 3.2.2 Vykreslovanie grafov v prehliadači 14 3.3 Návrh O-C brány 15 3.4 Návrh katalógu CzeV 17 3.5 Návrh predpovedí miním 19 4 Implementácia 21 4.1 Použité technológie 21 4.1.1 Webová služba 21 4.1.2 Webová aplikácia 22 4.1.3 Git 24 4.2 Štruktúra projektu 24 4.3 Implementácia webovej služby 24 4.3.1 Nastavenie viacerých databáz 24 4.3.2 Nastavenie bezpečnosti 25 4.3.3 Perzistenčná vrstva 25 4.3.4 Servisná vrstva 26 4.3.5 Prezentačná vrstva 28 v 4.4 Implementácia jednostránkové] aplikácie 29 4.4.1 O-C brána 30 4.4.2 CzeV katalóg 31 4.4.3 Predpovede miním 33 4.5 Inštalácia a spustenie 34 5 Budúce práce 36 6 Záver 37 Literatúra 38 A Elektronické prílohy 40 vi 1 Úvod Astronómovia začali so systematickým výskumom premenných hviezd už koncom 18. storočia. [1, kap. 2] Premenné hviezdy sú hviezdy, ktorých jasnosť sa mení v čase. V najväčšom katalógu premenných hviezd, VSX, pribudlo za posledné roky cez 150 tisíc hviezd, čo predstavuje približne jednu tretinu záznamov. [2] Tento nárast majú na svedomí hlavne automatické prehliadky generujúce obrovské množstvo dát, ktorých spracovanie je tiež zautomatizované. Napriek takejto obrovskej konkurencií je stále možné pre amatérskeho pozorovateľa objaviť novú premennú hviezdu pomocou fotoaparátu. Sekcia premenných hviezd a exoplanét Českej astronomickej spoločnosti sa venuje výzkumu a pozorovaniu premenných hviezd v Českej republike už od roku 1924. [3] Portál SPHE ČAS1 obsahuje niekoľko aplikácií pre prácu s dátami o pozorovaní premenných hviezd. Niektoré z týchto aplikácií sú O-C brána, katalóg Czev a predpovedanie miním jasností premenných hviezd. O-C brána slúži na zobrazenie odchýlok medzi časom kedy nastalo minimum jasnosti premennej hviezdy O a časom, ktorý bol predpovedaný C. Katalóg premenných hviezd CzeV obsahuje novoobjavené premenné hviezdy českými astronómami. Aplikácia pre predpovedanie miním slúži ako pomôcka pri rozhodovaní, ktoré hviezdy bude astronóm sledovať. Tieto aplikácie boli vyvinuté už dávno a nemá ich kto spravovať. Členovia SPHE ČAS by ocenili pridanie nových funkcionalit vo všetkých aplikáciách, ktoré by im ušetrili čas. Cieľom tejto diplomovej práce je reimplementovať a rozšíriť tieto aplikácie o nové funkcie, ktoré majú uľahčiť astronómom prácu. Text práce je rozdelený do šiestich kapitol. Obsahuje analýzu pôvodného stavu, analýzu požiadaviek pre nové aplikácie, návrh riešenia a popis implementácie nových aplikácií v tvare webovej služby a jednostránkovej webovej aplikácie. 1. http://vax2.astro.cz 1 2 Analýza požiadaviek Výsledná webová aplikácia má slúžiť hlavne členom SPHE ČAS, ale môže byť vhodnou pomôckou aj pre iných pozorovateľov premenných hviezd. Aplikácia by mala zjednodušiť publikovanie nových premenných hviezd a uľahčiť správu odchýliek O-C. Vďaka predpovediam minimálnych hodnôt jasnosti, ktoré sú súčasťou aplikácie, môžu pozorovatelia ľahšie sledovať výskyt a zmeny týchto premenných hviezd. Požiadavky užívateľov sú dôležitou súčasťou vývoja každého softvéru. Ich analýza pomáhala určiť ciele týchto aplikácií, ktoré následne formovali rozhodovania v každej časti vývoja. V tejto kapitole sa budem venovať požiadavkám z oficiálneho zadania, ktoré boli konzultované osobne s RNDr. Miloslavom Zejdom, Ph.D. a ostatnými členmi SPHE CAS e-mailovou komunikáciou. 2.1 Počiatočný stav Všetky aplikácie, ktoré sú súčasťou tejto diplomovej práce už existujú na portáli SPHE CAS. Boli programované postupne s odstupom niekoľkých rokov a tiež rôznymi ľuďmi. Z týchto dôvodov nie sú aplikácie medzi sebou takmer vôbec prepojené. Užívatelia by integráciu medzi aplikáciami vo veľa prípadoch ocenili. Podľa môjho názoru sú pôvodné aplikácie schopné splniť základné potreby užívateľov a na dobu, kedy boli tvorené, sú dobre prepracované. No hneď na prvý pohlad si môžeme všimnúť, že nie sú užívateľsky prívetivé a je na nich mnoho priestoru pre zlepšenie. V nasledujúcich troch podsekciách zdôvodním toto tvrdenie. Pôvodný web a aj všetky aplikácie sú naprogramované v programovacom jazyku PHP bez pridaných knižníc. Výsledkom je obrovský projekt s velkým množstvom súborov, v ktorých je kombinácia P H P kódu s H T M L 1 neprehľadná. Takúto aplikáciu je, podľa môjho názoru, lepšie prepísať odznova ako sa akokoľvek pokúšať s ňou pracovať. Na ukladanie dát používa portál databázu MySQL, ktorá je rozdelená na tri schémy: var_astro_cz, var_astro_cz_ocgate a var_astro_cz_brno. 1. Hyper Text Markup Language 2 2. ANALÝZA POŽIADAVIEK Väčšina tabuliek nespĺňa ani I N F 2 , tabuľky nemajú zavedené cudzie klúče alebo indexy. Výsledná aplikácia však nebude nahrádzať celý portál SPHE CAS. To znamená, že nové schéma databázy pre všetky súčasti aplikácie nebude možné implementovat, keďže by sa pokazili ostatné aplikácie, ktoré závisia na týchto dátach. 2.1.1 O-C brána O-C brána slúži na zobrazenie grafu odchýliek časov, ktoré zachytávajú kedy nastalo minimum jasnosti premennej hviezdy podľa predpovede C a kedy nastalo minimum podľa pozorovania O. Databázu tvoria pozorované minimá z projektu B.R.N.O a z iných dostupných zdrojov v rôznych publikáciách a časopisoch. Pôvodná aplikácia slúži na túto jednoduchú úlohu veľmi dobre, ale graf sa zobrazuje ako vygenerovaný obrázok. Ten nie je prehľadný a problémom je aj komplikované vyčítanie presných údajov. Interakcia prebieha cez formulár, ktorý je možné odoslať a server tak vygeneruje každý krát nový obrázok (obr. 2.1). Správu dát v O-C bráne má na starosti jeden z členov SPHE CAS, ktorý pri zadávaní či úprave nových dát musí manuálne nahrávať svoju lokálnu databázu z počítača na server. Tento systém správy dát nie je z dlhodobého hľadiska udržateľný a taktiež neumožňuje iným osobám pracovať v systéme. 2.1.2 Katalóg CzeV Táto aplikácia slúži českým astronómom na ukladanie novoobjavených premenných hviezd, ktoré sa raz za čas publikujú v on-line elektronickom časopise OEJV3 . [5] Katalóg CzeV je jednou z novších aplikácií na SPHE CAS portáli, no tiež sa na nej nájde niekoľko nedostatkov. Je to jedna z mála stránok webu, ktorá využíva JavaScript a to na zobrazovanie tabuliek objavených hviezd a pre záznamy o zmene údajov. Interakcia na stránke spočíva v triedení a filtrovaní údajov v tabuľke. Aplikácia ukladá len posledných 200 zmien v údajoch hviezd, čo znamená, že veľa zmien už nie je možné spätne dopátrať. Veľmi 2. Prvá normálna forma 3. Open European Journal on Variable stars h t t p : //var. astro. cz/oej v/ 3 2. ANALÝZA POŽIADAVIEK Hvězda: RW Com IDENTIFIKACE HVĚZDNÉ VELIKOSTI 12 33 0.28 + 25 42 58.4 EXTERNÍ O-C Atlas M.Kreinerc MO PER PER/2 [47613.439 | 10.2373463 | |p [47613.558 | [0.2373463 | |s I 1 I 1 i " * |4Q022.4163~ 0.2373459 Zvolte r o z s a h os x a y [je možné upřesnit jen některý) O-C min: | | O-C rnax: Q ~ EPOCH min: I I EPOCH max: T enty] I (GCVS) I +/- O.OSd, O.Id I automaticky •1 = 47613.5^3 - ••.2373463 t E -11B30Ů -96SO0 -7B9Ů0 -59200 -39500 -19800 -100 19600 39300 59000 EPOCH (years 1911 - 2t>17, 709 records) Obr. 2.1: Zobrazenie pôvodnej stránky O-C grafu s formulárom pre interakciu [4] tažko by sa napríklad hľadali zmeny ktoré sa udiali už aj od poslednej publikácie v OEJV. Pôvodná aplikácia funguje nasledovne: po kliknutí na identifikátor hviezdy sa dostaneme na stránku s údajmi o hviezde doplnenej obrázkom hviezdnej oblohy s vyznačenou hviezdou, s odkazmi na denníky pozorovateľov a komentárom k hviezde. Údaje na stránke nie sú otvorené žiadnej interakcií (obr. 2.2). Zadávanie nových hviezd funguje pomocou formulára, v ktorom chýba validácia vstupov. To z veľkej časti znamená, že je možné do políčok nahrať akékolvek údaje. Absentujúca validácia údajov môže sťažovať prácu administrátora, ktorý musí hviezdy kontrolovať manuálne jednu po druhej a po skontrolovaní všetkých údajov novú hviezdu schváliť alebo zamietnuť. Táto kontrola administrátorom pre- 4 2. ANALÝZA POŽIADAVIEK CzeV 1489 Cas N á z e v S o u ř a d n i c e RA: 13 2 4 5 0 . 9 1 DE: 6 1 OS 2 4 . S I C r o s s - i d e n t i f i k a c e UCAC4 7 5 6 - 0 7 7 9 4 2 Typ EB Max 1 4 . 1 7 Miř ( p r i m ) 1 4 . 3 1 Min ( s e c ) 1 4 . 2 5 O b o r V Perioda 0 . 5 6 S 6 0 0 d Epocha 2 4 5 8 3 7 3 . 4 2 6 D O D M - m 0.5 Rok o b j e v j 2 0 1 S O b j e v i t e l Z b y n é k Henzl Obr. 2.2: Zobrazenie pôvodnej stránky detailu hviezdy v CzeV katalogu [6] bieha tak, že hviezdu vyhľadáva a jej údaje overuje v iných katalógoch napríklad na stránke VSX4 alebo S I M B A D 5 . 2.1.3 Predpovede miním premenných hviezd Pôvodná aplikácia na predpovede miním jasností premenných hviezd slúži na výpočet a zobrazenie týchto predpovedí a zisťuje, ktoré minimá bude možné sledovať v danú noc. Predpovede sa pre Českú republiku spočítavajú vždy na niekoľko dní dopredu, ale na požiadanie je možné spočítať ich aj pre konkrétny dátum a miesto na Zemi (obr. 2.3). Po prejdení myšou na názov hviezdy sa zobrazí O-C graf danej hviezdy, čo pozorovateľom pomáha pri rozhodovaní, ktorú hviezdu sledovať. Graf však nezobrazuje kompletne aktualizované dáta a tak je vo veľa prípadoch nepoužitelný. Ďalej som si všimol, že napriek tomu, že za jednu noc môže nastať minimum jasnosti jednej hviezdy aj niekoľkokrát, každá hviezda v kombinácii s typom minima sa v zozname nachádza vždy len raz. 4. Katalóg premenných hviezd. Dostupný na: h t t p s : //www. aavso. org/vsx/ 5. http://simbad.u-strasbg.fr/simbad/ 5 2. ANALÝZA POŽIADAVIEK Souřadnice pozorovacího místa Z e m ě p i s n á délka: Délka se počítá směrem na východ od nultého poledníku. Z e m ě p i s n á šířka: Zadejte kladné číslo na severní polokouli, záporné na jižní. Večerní datum pozorovací noci Večerní datum: 2018-11-30 Zadejte datum ve formátu RRRR-MM-DD. Filtr Bodování: a vice. N á z e v h v ě z d y : Poloha na o b l o z e v čase N MAG o d : ^ do Q Z k r a t k a s o u h v ě z d í : m i n i m a : Nb MAG o d : ^ do Q V ý š k a H : ° A z i m u t : E s u b m í t Sb s u b m í t S Obr. 2.3: Formulár zadania požiadavku na výpočet predpovedí [7] 2.2 Funkčné požiadavky 2.2.1 O-C brána Nová O-C brána má byť oproti pôvodnej verzií lepšia hlavne v zobrazení dát v grafe, s ktorým je možné interaktívne pracovať. Požiadavky sú graficky znázornené pomocou Use Case diagramu na obrázku 2.4. Po prejdení myšou na O-C bod by sa mali zobraziť detaily s presnými údajmi namerania minima jasnosti a jeho hodnoty. Nová aplikácia by mala taktiež jednoduchšie zobraziť len určitú časť grafu a to bez potreby znova odosielať formulár na server. Musí byť možné vložiť vlastné údaje pre epochu a periódu hviezdy, na ktorých závisí hodnota O-C. Do grafu má byť možne taktiež vložiť vlastné hodnoty miním. Užitočné by bolo mať možnosť výpočtu modelu krivky z O-C dát. Správa databázy by sa mala z časti zautomatizovať pomocou astronomického archívu A M P E R 6 , z ktorého by užívateľ mohol odoslať namerané minimum do O-C brány na kontrolu. Okrem automatického vkladania je potrebné mať možnosť vkladať dáta z iných publikácií. V čase písania tejto diplomovej práce ešte nie sú stanovené presné podmienky kto a ako bude s dátami pracovať v budúcnosti a AMPER nie je momentálne pripravený na exportovanie dát do iných databáz. To by nemalo ovplyvniť tvorbu novej klientskej aplikácie pre súčasný tvar dát s využitím správnej abstrakcie. 6. Archive of Measurements of Periodic Variable Stars http://meca.physics, muni.cz/ 6 2. ANALÝZA POŽIADAVIEK O-C brán. Obr. 2.4: Use case diagram požiadaviek pre O-C bránu 2.2.2 Katalog CzeV Katalog novoobjavených premenných hviezd CzeV slúži českým astronómom pre zverejňovanie ich objavov, ktoré sa raz za čas publikujú v časopise OEJV. Požiadavky sú graficky znázornené pomocou Use Case diagramu na obrázku 2.5. Najdôležitejšiou zmenou oproti pôvodnému stavu je vkladanie nových objavených hviezd a ich kontrola. Pri zadávaní nových objavov je potrebné zautomatizovať validáciu vstupných dát a skontrolovať ich prípadnú duplicitu v ostatných katalógoch premenných hviezd. Táto automatizácia ušetrí administrátorovi katalógu čas pri schvaľovaní objavených hviezd. Pri zadávaní objavov sa preferujú súradnice hviezdy podľa prehliadky U C A C 47 . Tieto údaje by sa v novej aplikácií mali automaticky doplniť do formuláru bez nutnosti pôvodného manuálneho vyhľadávania. Pri zadávaní typu premennej hviezdy do 7. Dostupný na http://vizier.u-strasbg.fr/viz-bin/VizieR?-source=I/ 322 7 2. ANALÝZA POŽIADAVIEK Prihlásený užívateľ Administrátor Katalóg CzeV 7 Pridanie nového návrhu premennej Pridanie viacerých ->• návrhov naraz v CSV súbore Odmietnutie návrhu s daným dôvodom Schválenie návrhu * Zobrazenie údajov z iných katalógov hviezd pre porovnávanie Prihlásenie užívateľa C Zobrazenie katalógu Filtrovanie údajov v _^ Anonymný užívateľ katalógu Zobrazenie zmien údajov v katalógu Obr. 2.5: Use case diagram požiadaviek pre CzeV katalóg formulára má prebiehať kontrola, ktorá určí, či typ súhlasí s typmi podľa VSX8 . Po odoslaní návrhu musí byť taktiež možné údaje meniť. Niekedy majú pozorovatelia pripravené veľké množstvo nových objavov a nie je praktické, aby ich vkladali jeden po druhom formou formulára na webovej stránke. Z tohto dôvodu by aplikácia mala umožňovať vkladanie viacerých objavov naraz v súbore vo formáte CSV s dopredu špecifikovanými stĺpcami. Administrátor potom môže návrh schváliť. Pri schválení sa vytvorí nový záznam v katalógu CzeV a hviezde sa priradí poradové číslo. Administrátor môže návrh objavu zamietrnuť a zadať dôvod, ktorý sa ukáže danému pozorovateľovi. Údaje odmietnutej hviezdy bude užívateľ môcť opraviť. Pri schvaľovaní majú byť k dispozícií údaje z katalógov dostupných cez službu 8. Zoznam typov dostupný na h t t p s : //www. aavso. org/vsx/index. php?view= about.vartypes 8 2. ANALÝZA POŽIADAVIEK Vizier9 a Sesame1 0 , ktoré sa získajú podľa zadaných súradníc a identifikátora hviezdy. Vďaka nim je jednoduché určiť, či je objav nový alebo nie. Súčasťou aplikácie je zobrazenie katalógu, v ktorom má byť možnosť filtrovať dáta podľa kritérií ako sú súradnice, súhvezdie, typ premennej hviezdy, objaviteľ a rok objavu. Takto filtrovaný zoznam by malo byť možné vyexportovat do CSV súboru, poprípade v budúcnosti rozšíriť export pre ďalšie formáty. Zobrazenie detailu hviezdy má obsahovať všetky údaje z katalógu a mapu hviezdnej oblohy s označenou konkrétnou hviezdou. Údaje hviezd možno v katalógu meniť. Každý prihlásený užívateľ by mal mať ku katalógu a zmenám prístup. Oproti pôvodnej verzii by mala nová aplikácia určite ukladať všetky zmeny údajov, nielen posledných 200. 2.2.3 Predpovede miním premenných hviezd Aplikácie pre predpovede miním pomáha astronómom pri rozhodovaní, ktoré premenné hviezdy budú pozorovať. Požiadavky sú graficky znázornené pomocou Use Case diagramu na obrázku 2.6. Anonymný užívateľ 'redpov& Zobrazenie predpovedí pre danú noc Filtrovanie predpovedí podľa rôznych parametrov Zobrazenie O-C grafu pre hviezdu v predpovedi Zadanie akejkoľvek polohy na Zemi pre predpovede Obr. 2.6: Use case diagram požiadaviek pre predpovede miním V novej verzií tejto aplikácie je potrebné vypočítať niekoľko parametrov, ktorých zhoda podmieňuje možnosť sledovať minimum 9. h t t p s : / / v i z i e r . u - s t r a s b g . f r / v i z - b i n / V i z i e R 10. http://cds.u-strasbg.fr/cgi-bin/Sesame 9 2. ANALÝZA POŽIADAVIEK jasnosti v istý deň alebo v nasledujúce obdobie. Ide o minimum jasnosti v danú noc, polohu Slnka, ktoré musí byť v rovnaký okamžik za obzorom a určitú výšku hviezdy nad obzorom, aby ju bolo možné vôbec sledovať. Predpoveď minima jasnosti určujú tieto konkrétne hodnoty vyššie uvedených parametrov. Predpoveď vieme spočítať pomocou epochy hviezdy, ktorá označuje časový údaj merajúci začiatok periódy zmeny jasnosti a dĺžky periódy. Slnko musí byť maximálne vo výške 12° pod obzorom miesta pozorovateľa, čo je označované ako astronomický súmrak. [8] Hviezda je pozorovateľná len vtedy, ak sa nachádza minimálne vo výške 20° nad obzorom. Po spočítaní predpovedí sa užívateľovi zobrazí zoznam miním s názvom hviezdy, čas kedy nastane minimum, výška hviezdy, svetová strana, na ktorej sa nachádza hviezda od pozorovateľa a magnitúda jasnosti.Vďaka magnitúde jasnosti sa pozorovateľ rozhodne, či je danú hviezdu schopný pozorovať pomocou jemu dostupnej techniky. Pri každej hviezde by mala byť možnosť zobrazenia O-C grafu, ktorý tiež napomáha pri volbe vhodnej hviezdy na pozorovanie. N a všetkých údajoch by malo byť možné predpovede filtrovať. Poloha pozorovateľa bude predvolená na 50° severnej zemepisnej šírky a 15° východnej zemepisnej dĺžky, čo približne odpovedá polohe Českej republiky. [9] Polohu si môže užívateľ ľubovoľne zmeniť. Pre predpovede sa používajú rovnaké dáta ako pre O-C bránu. 2.3 Nefunkčné požiadavky Na implementáciu tejto webovej aplikácie neboli špecifikované žiadne presné požiadavky na výkon, dostupnosť alebo spoľahlivosť. To určite neznamená, že by sa tieto kvality mali zanedbať. Využitím novších technológií by sa mohla dosiahnuť rýchlejšia odozva oproti pôvodnej aplikácií. Taktiež by tieto technológie mohli predchádzať spomaleniam, ktoré sa, podľa slov užívateľov portálu, niekedy dejú. Pre webovú aplikáciu nie sú kladené žiadne obmedzenia a nie je potrebné podporovať užívateľov s vypnutou podporou pre JavaScript. Požiadavky, ktoré naopak stanovené boli, sú udržovatelnosť a rozšiřitelnost v budúcnosti. Je potrebné, aby v prípade potreby mohlo 10 2. ANALÝZA POŽIADAVIEK spravovanie aplikácie prechádzať pod nových správcov bez toho, aby bolo aplikáciu potrebné za každým prerobiť. Pri volbe technológií, okrem databázy MySQL, ktorá už existuje, som mal voľnú ruku, ale bolo potrebné dbať na to, aby výber nevytváral prekážky pre užívateľov v budúcnosti. 11 3 Návrh riešenia V tejto kapitole sa venujem môjmu návrhu na efektívne fungovanie aplikácie. Projekt bude rozdelený na dve časti, webovú službu a klientskú webovú aplikáciu. Toto rozdelenie uľahčí vývoj a v budúcnosti môže pomôcť pri prepojení na iné aplikácie. 3.1 Návrh webovej služby Webová služba sa bude starať o správu databázy a aplikačnú logiku. Komunikácia s klientom bude umožnená cez REST1 API2 . 3.1.1 Architektúra Webová služba bude používať jeden z najznámejších architektúrnych vzorov, známy ako n-vrstvový architektúrny vzor. Komponenty sú v tomto vzore rozdelené do vrstiev, pričom každá vrstva plní špecifickú úlohu. [10] Tento projekt bude zložený z troch vrstiev: perzistenčnej, servisnej a prezentačnej. Každá vrstva má svoje rozhranie, ktoré na komunikáciu využíva iba nasledujúca vrstva (obr. 3.1). Obr. 3.1: Zobrazenie komunikácie medzi vrstvami a ostatnými časťami aplikácie Perzistenčná vrstva slúži na komunikáciu s databázou a prevedenie výsledkov hľadaného výrazu do objektov v aplikácii. N a zjednali Representational state transfer 2. Application programming interface 12 3- NÁVRH RIEŠENIA dusenie vývoja použijeme jeden z dostupných O R M 3 frameworkov. Perzistenčná vrstva poskytuje rozhranie pre komunikáciu servisnej vrstve. Servisná vrstva je jadro aplikácie, slúži na všetku aplikačnú logiku. Zahŕňa autorizáciu a biznisovú logiku. Autorizácia bude prebiehať na základe užívateľských rolí. Táto vrstva využije rozhranie z perzistenčnej vrstvy a zároveň poskytne rozhranie pre prezentačnú vrstvu. Prezentačná vrstva bude sprostredkovávať komunikáciu medzi klientom a službou pomocou REST API. Jej úlohou bude taktiež prekladanie výnimiek, ktoré sa vyskytnú v aplikácii, na odpovede s chybou a s užitočnými informáciami pre klienta. V tejto vrstve je taktiež potrebné získať informácie o užívateľovi z H T T P 4 hlavičky žiadosti vo forme JWT5 . JWT je potrebné validovať a údaje o užívateľovi uložiť do kontextu vlákna. Využíva rozhranie servisnej vrstvy. 3.2 Návrh klientskej webovej aplikácie Webová aplikácia bude slúžiť hlavne na vizualizáciu a správu množstva astronomických dát. Najmä z tohoto dôvodu bude jednoduchšie pracovať s jednostránkovou webovou aplikáciou. Službu a klientskú aplikáciu bude možné spustiť oddelene, no pre jednoduchosť je lepšie zabaliť klientskú aplikáciu spolu so službou do jedného balíka. 3.2.1 Jednostránková webová aplikácia Pre veľké množstvo projektov je riešenie generovania H T M L stránok na serveri dostatočným riešením. Pri aplikácii, v ktorej sa bude pracovať s veľkým množstvom dát a užívateľské rozhranie potrebuje byť bohaté na funkcionalitu, je jednostránková webová aplikácia lepším riešením. Jednostránková webová aplikácia je taká, ktorá, ako vyplýva z názvu, má naozaj len jednu stránku, ktorú si užívateľ musí načítať raz. O všetku ostatnú manipuláciu s H T M L D O M 6 sa stará JavaScript kód. [11] 3. Object-relational mapping 4. HyperText Transfer Protocol 5. JSON Web Token 6. Document Object Model 13 3- NÁVRH RIEŠENIA Ďalšou výhodou, ktorú nám takáto JavaScript aplikácia umožní je, že LocalStorage môžeme jednoduchšie využiť v prehliadači na ukladanie dát a zmenšiť tým počet žiadostí odoslaných na server. Existuje niekoľko JavaScript frameworkov pre tvorbu takýchto aplikácií, najobľúbenejšie sú React, Vue.js a Angular. [12] Pri tvorbe užívateľských rozhraní, ktoré slúžia na prácu s dátami a nie len na ich zobrazovanie, je jednoduchšie vytvoriť jednostránkovú aplikáciu a ušetriť tým čas pri vývoji. Práca s jednostránkovou aplikáciou má pravdaže niekoľko nevýhod. Je to napríklad podpora len pre užívateľov so zapnutým JavaScript alebo fakt, že je potrebné takmer celý JavaScript kód aplikácie nahrať do prehliadača, aby bola použitelná. Tieto dôvody však môžeme pre potreby tohoto projektu celkovo zanedbať. [11] 3.2.2 Vykreslovanie grafov v prehliadači Pre vykreslovanie grafov sa v dnešnej dobe používajú hlavne dve technológie: SVG7 a element canvas z HTML5. S SVG sa jednoducho pracuje a vytvorené grafy škálujú na akúkoľvek veľkosť obrazovky. O jednoduchú manipuláciu sa stará fakt, že je možné SVG objekty manipulovať rovnakým spôsobom ako H T M L , pomocou CSS8 a JavaScript. Toto ale prináša jednu veľkú nevýhodu, pri veľkom množstve SVG objektov sa výkon drasticky zmenšuje, pretože objekty sú reprezentované v D O M štruktúre a musí ich spravovať prehliadač. [13] Druhá možnosť, canvas, slúži na vykresľovanie 2D grafiky v prehliadači. Práca s ním vôbec nie je taká jednoduchá ako SVG, ale nemá žiadne obmedzenie pri vykresľovaní veľkého počtu objektov. Pre jednoduchšiu manipuláciu je pravdaže možné použiť mnoho rôznych knižníc. [13] Z analýzy vieme, že v O-C bráne bude potrebné vykresľovať aj grafy s niekoľko tisíc bodmi, čo by pri použití SVG mohlo spôsobovať problémy. Preto bude vhodnejšie použiť canvas. 7. Scalable Vector Graphics 8. Cascading Style Sheets 14 3- NÁVRH RIEŠENIA 3.3 Návrh O-C brány Z analýzy momentálne nevieme určiť ako sa v budúcnosti tvar dát pre O-C bránu zmení, ale momentálne budeme pracovať s dátami v súčasnej databáze. Aby sme predišli čo najviac problémom, ktoré sa môžu neskôr objaviť, je potrebné zvoliť správny tvar dát, ktoré bude poskytovať REST API aplikácie. Tento tvar by malo byť možné použiť aj po dohodnutí ukladania nových dát. Čo môžeme ale vylepšiť hneď, je vytvorenie indexov v databáze na cudzích klúčoch, ktoré tam chýbajú. Získavanie všetkých dát z rôznych tabuliek tak bude rýchlejšie. Na webovej službe je potrebné zabezpečiť získanie informácií o danej hviezde z databázy. Údaje, ktoré sú potrebné na výstupe, sú zobrazené diagramom na obrázku 3.2. Star id name constellation coordinates 0. Minima id kind julianDate 1 . . * Element id kind epoch period Briahtness id band maxP minP minS Obr. 3.2: Doménový class diagram pre O-C bránu Je potrebné zamerať sa na užívateľské rozhranie, ktoré by sa malo stať intuitívnejším a rýchlejším. Jedna z najdôležitejších častí je interakcia s grafom odchýliek. Musí umožňovať priblíženie k jednotlivým bodom a zobrazenie detailných informácií o meraní po prejdení kurzorom na bod. Pri implementácii je dôležité správne zvoliť knižnicu na tvorbu grafov, ktorá bude spĺňať čo najviac požiadaviek. Pre výpočet hodnoty O-C sa použije hodnota epochy a periódy z databázy, ale dostupné budú aj políčka pre vlastné hodnoty. Osa Y grafu nesie hodnotu 15 3- NÁVRH RIEŠENIA 0-C. Pre výpočet modelu krivky grafu bude možné vybrat stupeň polynomu. Pre osu X bude možné zvolit hodnotu medzi dátumom podľa gregoriánskeho kalendára, epochou a juliánskym dátumom9 . Pri grafe bude dostupný zoznam použitých miním a ich zdroj. N a pridanie vlastných meraní bude slúžiť vyhradené textové pole. Obrys navrhovaného užívateľského rozhrania je na obrázku 3.3. RW Com 12 33 000.28+26 42 58.4 Epoch: 2447613.431 Period: 0.2373463 Polym order: DATE T EPOCH T FIT JD Database Custom 2419127.23400 2419183.36400 2419188.34800 2419207.33400 2419209.35300 •120020 -0,01307 -119783 -0.01515 -119762 -0.01542 -119682 -0.01712 -119674 -0.01589 Obr. 3.3: Obrys užívateľského rozhrania O-C brány 9. Počet dní od 1. januára v roku 4713 pred naším letopočtom [14] 16 3- NÁVRH RIEŠENIA 3.4 Návrh katalogu CzeV Pri návrhu nového CzeV katalogu treba hlavne zjednodušiť prácu administrátora, ktorý musí nové objavy premenných hviezd schvaľovať. Zobrazenie dát je dostačujúce už v súčasnej verzii, pridať je potrebné len vyhľadávanie podľa súradníc. Pre lepší prehľad o doméne aplikácie slúži diagram na obrázku 3.4. Starldentification name orderNumber 1.." 1 . " 1 1 id name StarType id name Star id amplitude magnitude year type vsxld o— 0. Constellation id name abbreviation id amplitude magnitude year type rejected rejectedNote 0..-Ý o..^ ^ CosmicCoordinates _ rightAscension 1 declination UserRole id name — O id email password StarObserver id firstName lastName email abbreviation Obr. 3.4: Zjednodušený doménový class diagram pre aplikáciu CzeV Nový záznam v katalogu vzniká tak, že pozorovateľ do katalogu najprv vloží návrh na objav. K nemu musí doložiť údaje potrebné pre 17 3- NÁVRH RIEŠENIA identifikáciu hviezdy a dôkaz, že hviezda je premenná. Ako dôkaz slúžia dáta z merania v aplikácii AMPER. Úlohou administrátora je potom skontrolovať údaje a rozhodnúť o schválení alebo zamietnutí. Po schválení je hviezde pridelený unikátny CzeV identifikátor a je zaradená do hlavného katalógu. Stav hviezdy v katalógu znázorňuje diagram na obrázku 3.5. Waiting for approval update update approve reject Approved entry / addToCatalogue update Rejected v / Obr. 3.5: State diagram hviezdy v katalógu V aplikácii treba rozdeliť užívateľom roly. Momentálne budú stačiť dve, užívateľa administrátor. Užívateľ bude môcť pridávať svoje nové návrhy na objav premenných hviezd, upravovať ich a upravovať taktiež dáta v katalógu. Administrátor bude môcť schvalovat alebo odmietať návrhy na objav od užívateľov. Katalóg si môže zobraziť aj neprihlásený užívateľ. Pri kontrole hviezd musí administrátor skontrolovať iné katalógy a zistiť, či sa v nich hviezda už nenachádza. K tomu môžeme použiť dáta dostupné zo služby Sesame a databázy Vizier. Rovnaká hviezda je identifikovaná takmer v každom katalógu iným identifikátorom. Služba Sesame slúži na získavanie týchto identifikátorov. Okrem toho obsahuje aj niektoré údaje navyše ako sú súradnice a typ hviezdy ktoré môžu pomôcť pri kontrole. Služba je dostupná cez REST API, takže dotazovat sa k nej cez webovú službu nebude problém. Vizier ponúka prístup k mnohým publikovaným astronomickým katalógom. Pre aplikáciu CzeV sú dôležité najmä katalógy VSX a UCAC4. VSX je katalóg všetkých objavených premenných hviezd. U C A C 4 je katalóg všetkých hviezd, nie len premenných. Administrátor v nich 18 3- NÁVRH RIEŠENIA momentálne vyhľadáva ručne, čo je možné uľahčiť pomocou služby TAPVizieR1 0 . A k sa hviezda už nachádza v katalógu VSX, je to indikátor, že nejde o nový objav. Katalóg UCAC4 sa používa na konzistentnú identifikáciu hviezd a ich súradníc v katalógu CzeV. Po implementácii prístupu k službe TAPVizieR nebude problém pridať aj ďalšie katalógy podľa potreby Tieto informácie o objave je potrebné ukázať administrátorovi pri schvaľovaní. Vkladať návrhy na objav bude možné dvomi spôsobmi, formulárom alebo importovaním súboru vo formáte csv s viacerými objavmi naraz. Pri použití formuláru je potrebné, aby boli niektoré údaje voliteľné len z určitých možností. Týka sa to údajov ako súhvezdie, použitý filter pri pozorovaní a kto objavil hviezdu. Vyrieši to veľký nedostatok súčasnej aplikácie, do ktorej políčok je možné vložiť čokoľvek. Administrátor musí tieto políčka ručne opravovať. Pri vkladaní typu premennosti musí prebiehať kontrola, či je daný typ v správnom formáte. Je veľa možných typov, možnosťou je aj kombinácia niekoľkých typov. Pre tento prípad bude lepšie použiť voľné textové pole s jednoduchým automatickým dopĺňaním a validáciou formátu pre základné typy. Práve kvôli komplikovanosti údaju je nutné nechať okrem predvolených možností aj možnosť vpísať ľubovoľnú hodnotu. Katalóg vyžaduje identifikáciu hviezdy aspoň z jedného katalógu všetkých hviezd. Túto identifikáciu musí zadávateľ momentálne vyhladávať ručne. V novej aplikácii je potrebné pridať automatické vyhľadávanie v katalógu UCAC4 podľa zadaných súradníc hviezdy, rovnako ako pre kontrolu administrátorom. 3.5 Návrh predpovedí miním Cieľom aplikácie pre predpoveď miním je spočítanie miním pre danú noc, súradnice a ich zobrazenie užívateľovi. V súčasnej aplikácii sú predpovede spočítané dopredu na niekoľko dní. Tento prepočet musí administrátor stránok spúšťať manuálne. V novej aplikácii bude prepočet prebiehať na žiadosť. Výsledok je možné uložiť do pamäte, aby nebolo potrebné opakovať výpočty niekoľko krát. Pôvodný algoritmus funguje tak, že vyberie všetky hviezdy z O-C databázy. Najprv pre každú spočíta čas, kedy nastane najbližšie mini- 10. Služba ponúka prístup do databázy VizieR cez TAP protokol 19 3- NÁVRH RIEŠENIA mum jasnosti. To spočítame ako C = MO + P * \e], kde MO je juliánsky dátum počiatočného minima, P je dĺžka periódy premennej hviezdy, e = ^ D ~ M 0 j e počet uplynutých epoch od MO a JD je juliánsky dátum, od ktorého hľadáme najbližšie minimum. Pre spočítané C je potrebné zistiť či je vtedy tma a kde sa vtedy bude hviezda nachádzať. Namiesto počítania polohy Slnka pre každé jedno minimum, môžeme spočítať raz kedy nastanú astronomické súmraky pre danú noc a potom už len kontrolovať, či je minimum medzi nimi. Získame tým navyše užitočnú informáciu pre užívateľa o intervale danej noci. Pre výpočet polohy Slnka a prepočet medzi obzorníkovými súradnicami na rovníkové je možné použiť algoritmy z knihy Astronomical Algorithms [15], kapitoly 12. Transformation of Coordinates a 24. Solar Coordinates. Užívateľské rozhranie sa bude skladať zo vstupu pre dátum noci, súradníc pozorovateľa a tabulky výsledných predpovedí. K u každej predpovedi bude napísaný názov hviezdy, jej výška v momente predpovedaného minima, svetová strana od pozorovateľa a magnitúda hviezdy. Pre uľahčenie výberu hviezdy na pozorovanie bude dostupný O-C graf. N a všetkých dátach bude dostupné filtrovanie pre jednoduchší výber objektu pre pozorovanie. 20 4 Implementácia V tejto kapitole sa budem podrobnejšie venovať tomu, ako som postupoval pri implementácii jednotlivých častí aplikácie. Počas implementácie som sa snažil byť schopný čo najrýchlejšie ukázať výsledok, ktorý je možné prediskutovať a upraviť požiadavky. 4.1 Použité technológie 4.1.1 Webová služba Na implementáciu webovej služby s aplikačnou logikou a REST API rozhraním som sa rozhodol kvôli nasledujúcim technológiám. Kotlin Kotlin je programovací jazyk, ktorý v poslednom čase zaznamenáva veľký nárast popularity. [12]. Používa sa pri programovaní aplikácií pre Android, ale je v ňom možné naprogramovať prakticky čokolvek. Tak isto ako Java, beží Kotlin nad J V M 1 a je ich možné voľne kombinovať. Uprednostnil som použitie jazyka Kotlin pred jazykom Java kvôli tomu, že ponúka o niečo jednoduchší syntax, rozlišuje medzi nulovateľnými a nenulovateľnými typmi, čo pomáha predchádzať NullPointerException výnimkám a pridáva možnosť vytvoriť tzv. extension methods. [16, Comparison to Java Programming Language] Spring Boot Spring Boot je framework, ktorý umožňuje jednoducho a rýchlo vytvoriť samostatnú webovú aplikáciu, ktorá nepotrebuje na spustenie nič okrem JVM. Oproti klasickej aplikácie, ktorá využíva framework Spring, je odľahčená od priveľa konfigurácie. Obsahuje vstavaný webový server, takže je možné vytvoriť JAR2 súbor, ktorý stačí spustiť z príkazového riadku. Ostatné prídavné funkcie, ktoré som využil v implementácii, zjednodušujú spravovanie 1. Java virtual machine 2. Java archive 21 4- IMPLEMENTÁCIA závislostí tried, pomocou kontajneru pre správu závislostí medzi triedami, spravovanie databázových transakcií, komunikáciu s databázou pomocou Spring Data JPA a správu užívateľov, autentikáciu a autorizáciu pomocou Spring Security. [17] Aby bolo možné framework použiť spolu s jazykom Kotlin, je potrebné nainštalovať niekoľko rozšírení pre kompilátor. Je to z dôvodu, že v jazyku Kotlin sú přednastavené všetky triedyfinal čo znamená, že sa nedajú ďalej rozšíriť bez toho, aby bola trieda označená ako open. Framework Spring vyžaduje rozšířitelné triedy, ktoré je možné zabaliť do proxy objektov. [16, Compiler Plugins] Hibernate Knižnica Spring Data JPA používa predvolené implementáciu JPA3 od Hibernate. Okrem nastavenia prístupu k databázi netreba nastavovať takmer nič ďalšie. [18]. Na automatické auditovanie zmien entít som použil prídavný modul Hibernate Envers. [19] MySQL Pôvodná verzia aplikácie už využíva databázový systém MySQL a je potrebné napojiť novú aplikáciu na tento systém. Gradle Na kompilovanie zdrojových kódov som použil nástroj Gradle, ktorý zároveň slúži na jednoduché spravovanie závislostí projektu. [20] S nastavením vlastných úloh je možné pri kompilácii do výsledného JAR súboru pribaliť klientskú webovú aplikáciu. 4.1.2 Webová aplikácia Na implementáciu jednostránkovej webovej aplikácie, ktorá so službou komunikuje REST rozhraním, som sa rozhodol pre nasledujúce technológie. 3. Java Persistance API 22 4- IMPLEMENTÁCIA React React je posledné roky najpoužívanejšia JavaScript knižnica na tvorbu moderných webových užívateľských rozhraní deklaratívnym štýlom programovania. [12] Na ešte jednoduchšie vybudovanie aplikácie som využil nástroj create-react-app, ktorý zjednodušuje vytvorenie aplikácie a odstraňuje potrebu konfigurácie nástrojov Webpack a Babel. [21] Pre navigáciu medzi komponentami na stránke je použitá knižnica React Router. antd Knižnica antd obsahuje množstvo užitočných komponentov pre tvorbu užívateľských rozhraní a preto drasticky urychluje implementáciu. Knižnica sa riadi dizajnovou špecifikáciou Ant Design, ktorá je vytvorená na zlepšenie skúseností užívateľov s užívateľskými rozhraniami. [22] [23] Echarts Echarts je JavaScript knižnica, ktorá slúži na vykreslovanie grafov s velkým množstvom dát v prehliadači. Využíva na to element canvas z HTML5. [13] Spomedzi ostatných knižníc, ktoré som nielen vyskúšal, ale používajú aj canvas a zároveň je ich možné jednoducho používať spolu s React, považujem Echarts za najviac konfigurovateľnú knižnicu pre veľké množstvo potrieb. Aladin Lite Na zobrazenie vizualizácie hviezdnej oblohy som použil JavaScript knižnicu Aladin Lite. Pomocou tejto knižnice je možné zobraziť obrázky hviezd z rôznych vizuálnych prehliadok. Aladin Lite obsahuje aj prepojenie so službou Vizier, cez ktorú je možné pridať hviezdam na obrázku údaje z rôznych katalógov hviezd. [24] Bohužial, táto knižnica je závislá na JQuery, čo pridáva zbytočnú závislosť pre celý projekt. Bohužiaľ som však neobjavil žiadna inú možnosť pre interaktívne mapy hviezdnej oblohy. 23 4- IMPLEMENTÁCIA 4.1.3 Git Ako verzovací systém pre celý projekt som zvolil Git. Na hosting vzdialeného repozitára som využil webovú službu GitHub4 . 4.2 Štruktúra projektu štruktúra je ako klasický Java projekt. V zložke src sa nachádza zdrojový kód webovej služby. Zdrojové kódy sú rozdelené do dvoch zložiek podľa použitého programovacieho jazyka, java a kotlin. Základný balík aplikácie je cz.astro.var.data, v ktorom sú ďalej rozdelené balíky podľa aplikácie oc a czev. Na výpočet predpovedí sa používa rovnaký balík ako pre O-C bránu, pretože používajú rovnaké dáta. Toto členenie podľa aplikácií bude užitočné pri nastavovaní prístupov do databázy. Závislosti služby spolu s nastavením kompilácie sú spravované v súbore build.gradle V zložke react-app je zdrojový kód klientskej webovej aplikácie. Na správu závislostí je použitý npm5 . Závislosti sú vypísané v súbore package. j s on. 4.3 Implementácia webovej služby 4.3.1 Nastavenie viacerých databáz Pri implementácii služby je potrebné nastaviť prístup k dátam z databázy. V prípade jednej databázy je to pri použití frameworku Spring Boot veľmi jednoduché. Pre túto aplikáciu sú však tri rôzne databázy a je potrebné mať pre každú vlastný reťazec pre pripojenie JDBC6 URL7 . Pri vývoji ich spolu s prístupovými údajmi môžeme mať uložené v súbore application.properties. V produkcií ich bude lepšie mať uložené v premennej prostredia, v ktorej bude aplikácia spustená. Pre každú databázu potrebujeme v Spring konfigurácii vytvoriť inštancie tried DataSource, LocalContainerEntityManagerFactoryBean a Plat- 4. Repozitár projektu je dostupný na: https://github.com/m-krajcovic/ var-astro-data 5. Node Package Manager 6. Java Database Connectivity 7. Uniform Resource Locator 24 4- IMPLEMENTÁCIA formTransactionManager, aby ich bolo možné použiť spolu s knižnicou Spring Data JPA. V konfigurácii anotácie EnableJpaRepositories treba taktiež uviesť, ktoré balíky tried majú byť spravované, ktorou inštanciou tried LocalContainerEntityManagerFactoryBean majú byť spravované a PlatformTransactionManager. Pre správne fungovanie viacerých inštancií triedy PlatformTransactionManager ešte vytvoríme inštanciu triedy ChainedTransactionManager, ktorá je schopná spravovať transakcie viacerých databáz naraz. Všetky spomenuté nastavenia pre Spring je možne nájsť v súboroch SpringConfig, OcJPAConfig a CzevJPAConfig 4.3.2 Nastavenie bezpečnosti Pre fungovanie autentizácie a autorizácie cez knižnicu Spring Security je potrebná jeho konfigurácia. Pre hašovanie hesiel som zvolil implementáciu funkcie bcrypt BCryptPasswordEncoder. Na overovanie identity je použitý JWT, ktorý treba pri každej HTTP žiadosti zvalidovať a údaje o užívateľovi uložiť do SecurityContext. Táto funkcionalita je zabezpečená v triede JwtAuthenticationFilter, ktorá rozširuje triedu OncePerRequestFilter. Tá slúži na implementovanie vlastného filtru, ktorý sa spustí pre každú prichádzajúcu HTTP žiadosť do aplikácie. Vnútri metódy doFilterlnternal je implementované získanie JWT z hlavičky žiadosti, jeho validácia, získanie údajov o užívateľovi a následne uloženie do SecurityContext. Filter je zaregistrovaný v konfigurácii SecurityConfig. V ostatku aplikácie je možný prístup k údajom o užívateľovi pomocou statickej metódy SecurityContextHolder.getContextO. Pre ešte jednoduchší prístup slúži v aplikácii rozhranie SecurityService. Pre kontrolu prístupov určitých metód sú v implementácii použité anotácie PreAuthorize, PostAuthorize a PostFilter. Pomocou Spring-EL8 je v nich možné definovať prístup na základe užívateľských rolí, vstupných a výstupných parametrov metódy. 4.3.3 Perzistenčná vrstva Pre perzistenčnú vrstvu sú vytvorené databázové objekty s JPA anotáciami v balíkoch: 8. Spring Expression language 25 4- IMPLEMENTÁCIA • cz.astro.var.data.oc.repository • cz.astro.var.data.czev.repository Pre aplikáciu CzeV sa databázové tabuľky vytvoria podľa definovaných tried a anotácií v aplikácii. Pre O-C bránu sú tabuľky v databáze už vytvorené a tak bolo potrebné vytvoriť objekty v aplikácii a pridať im JPA anotácie zodpovedajúcim údajom v databáze. Takmer o všetko ostatné na tejto vrstve sa stará knižnica Spring Data JPA. Stačí vytvoriť rozhranie, ktoré rozširuje rozhranie JpaRepository a základné C R U D 9 pre entitu T implementuje Spring Data. Všetky ostatné potrebné operácie s databázou sú definované ako metódy v rozhraní s anotáciou Query a JPA dotazom. 4.3.4 Servisná vrstva Servisná vrstva, ktorá je medzi perzistenčnou a prezentačnou, slúži na aplikačnú logiku. Triedy servisnej vrstvy sa nachádzajú v balíkoch: • cz.astro.var.data.oc.service • cz.astro.var.data.czev.service Metódy na servisnej vrstve sú označené anotáciami pre riadenie prístupu z knižnice Spring Security. Na vstupoch a výstupoch rozhraní sú použité D T O 1 0 objekty, ktoré len tie premenné, ktoré sú potrebné pre jej využitie. V metódach je vstupné DTO potrebné transformovať na JPA entitu a na výstupe naopak. Pre jednoduchosť je na servisnej vrstve jediná výnimka ServiceException, obsahuje správu s vysvetlením prečo bola vyvolaná. Servisná vrstva pre aplikáciu O-C brány je veľmi jednoduchá. Obsahuje jedno rozhranie OcService. Jeho implementácia deleguje metódy z perzistenčnej vrstvy a transformuje databázové entity na DTO. Najdôležitejšie rozhrania pre aplikáciu CzeV sú CzevStarDraftService a CzevStarService. CzevStarDraftService slúži na spravovanie návrhov objavov premenných hviezd, ktoré ešte neboli pridané do katalógu. Obsahuje metódy pre schvalovanie, odmietnutie, vloženie jednej 9. Create Retrieve Update Delete 10. Data Transfer Object 26 4- IMPLEMENTÁCIA alebo viacerých návrhov, nájdenie návrhu podľa id, získanie všetkých návrhov alebbo len tých od prihláseného užívateľa, vymazanie a úpravu návrhu. StarService slúži na získavanie detailných informácií jednej hviezdy, alebo zjednodušenú verziu všetkých hviezd v katalógu, exportovanie do CSV súboru a úpravu ich dát. Všetky metódy majú v Spring Security anotáciách nastavené pravidlá pre prístup. Pre výpočet predpovedí miním slúži rozhranie PredictionService. Obsahuje jedinú metódu getAUPredictionsForNight, ktorá na vstupe berie dátum noci a súradnice pozorovateľa v tvare zemepisnej šírky a dĺžky. Jej implementácia najprv vypočíta časy súmrakov a z databázy pre O-C bránu vyberie všetky dostupné hviezdy. Pre každú hviezdu zistí najbližšie minimum, ktoré ma nastať v danú noc. Pre toto a každé nasledujúce minimum, ktoré nastane v tú noc sa vypočítajú súradnice hviezdy. V prípade, že je výška hviezdy aspoň 20° stupňov nad obzorom sa minimum pridá do konečného výsledku predpovedaných miním. Astronomické algoritmy sú implementované v súbore Helper.kt. Získavanie dát z katalógov hviezd Na získavanie informácií z ostatných katalógov hviezd na internete slúžia rozhrania VariableStarlnformationCoordinatesResolverService, VariableStarlnfortnationNatneResolverService a StarlnformationResolverService. Závislosti medzi nimi a ich implementáciami sú zobrazené na diagrame na obrázku 4.1. Implementácia pre službu Sesame využíva REST A P I Sesame služby. Výsledky z nej sú vo formáte X M L 1 1 . N a transformovanie X M L na objekty je použitý JAXB1 2 . Volanie služby je implementované pomocou triedy WebClient, ktorá je súčasťou frameworku Spring. Ku katalógom premenných hviezd, VSX a UCAC4, je sprostredkuváva prístup rozhranie TAPVizierService cez službu TAPVizieR. Jednotlivé implementácie pre VSX a U C A C 4 využívajú rozhranie TAPVizierService na komunikáciu a starajú sa na transformáciu údajov do objektov aplikácie. 11. Extensible Markup Language 12. Java Architecture for X M L Binding 27 4- IMPLEMENTÁCIA V a r i a b l e S t a r l n f o r m a t i o n M o d e l + coordinates: CosmicCoordinatesModel? + originalName: String + names: Set + type: String + mO: BigDecimal? + period: BigDecimal? + vsxld: Long? Use «!nterface» Vari a bleSta rl n formation Nam eResolver Serv ice • findByName(name: String) D i s t a n c e M o d e l < T > - distance: Double • model: T lha «lnterface» VariableStarlnfarmationCoordinatesResolverService + findByCoordinates(coordinates, radiusD + findNearest(coordinates) «interfaces S e s a m e V a r i a b l e S t a r l n f o r m a t i o n R e s o l v e r S e r v i c e «interfaces V s x V a r i a b l e S t a r l n f o r m a t i o n R e s o l v e r S e r v i c e S t a r l n f o r m a t i o n M o d e l - coordinates: CosmicCoordinatesModel? • identifier: String - magnitudes: Map Use «lnteiface» StarlnformationResolverService • findByName(name: String) findByCoordinates(coordinates, radiusDegrees) - findNearest(coordinates) A Extends I «interfaces U c a c 4 S t a r l n f o r m a t i o n R e s o l v e r 5 e r v i c e A SesameVariableStarlnformationResolverServicelrnpl V s x V a r i a b l e S t a r l n f o r m a t i o n R e s o l v e r S e r v i c e l m p I " ' " U s e , . U c a c 4 S t a r l n f o r m a t i o n R e s o l v e r S e r v i c e l m p l . ..Use"" «interface» T A P V i z i e r S e r v i c e Obr. 4.1: Class diagram tried na získavanie dát z katalógov hviezd Všetky metódy týchto rozhraní vracajú ako výsledok objekt typu CompletableFuture a je ich možné spúšťať asynchrónne. Aby ich Spring spustil asynchrónne musia byť implementované metódy označené anotáciou Async. 4.3.5 Prezentačná vrstva Triedy prezentačnej vrstvy sa nachádzajú v balíkoch: • cz.astro.var.data.oc.controller • cz.astro.var.data.czev.controller Kontroléry s anotáciou RestController slúžia ako prístupové body cez REST API. Definujú pod akou URI, HTTP metódou a s akými parametrami sú dostupné zdroje. Výsledky v kontroléroch sú automaticky vrátené so stavovým kódom 200 OK. V prípade keď je potrebné vrátiť inú odpoveď, je výstup metódy trieda ResponseEntity, v ktorej je možné nastaviť stavový kód a telo odpovede. Kontroléry v aplikácii sú triedy AuthController, CzevController, CzevExportController a Oc- 28 4- IMPLEMENTÁCIA Controller. AuthController ponúka metódy na registráciu a prihlásenie získaním JWT. Trieda CzevController obsahuje metódy na správu CzeV katalógu. Vo väčšine metód je to len o delegovaní metód servisných tried. Metóda, ktorá získava dáta z ostatných katalógov, spúšťa asynchrónne ďalšie metódy zbierajúce informácie, pričom výsledky spája do jedného objektu. CzevExportController zabezpečuje export katalógu v danom formáte. Momentálne je to len formát CSV. Metódy v triede OcController slúžia na získanie dát pre O-C bránu a získanie predpovedí miním. Pre validáciu vstupných parametrov sú použité anotácie z balíku javax. validation, pomocou ktorých Spring automaticky validuje vstup. Pre validáciu a transformáciu rôznych formátov zápisu súradníc hviezd sú vytvorené triedy v balíkoch • cz.astro.var.data.czev.validation • cz.astro.var.data.czev.conversion Na tejto vrstve je taktiež implementovaná transformácia výnimok z aplikácie na REST odpovede. Väčšina výnimiek, ktoré sú vyvolané frameworkom Spring alebo použitými knižnicami sa transformuje automaticky. Výnimky vyvolané kvôli neoprávnenému prístupu sú transformované na odpoveď so stavovým kódom 403 Forbidden. Trieda GlobalExceptionHandler definuje ako sa má transformovať výnimka zo servisnej vrstvy ServiceException. 4.4 Implementácia jednostránkovej aplikácie V tejto sekcii sa budem snažiť priblížiť niektoré zaujímavejšie prvky implementácie, ktoré nie sú len klasické React komponenty. Koreňová trieda aplikácie je App. Definuje základné rozmiestnenie komponentov na obrazovke. React komponenty v aplikácií sú rozdelené podľa ich funkcionality. Pre väčšinu grafických prvkov je použitá knižnica antd, čo z veľkej časti uľahčilo implementáciu. Komponenty sú uložené v zložke components a rozdelené podľa jednotlivých aplikácií do zložiek czev, ocgate, predictions. Zložka common obsahuje komponenty, ktoré je možné použiť vo všetkých častiach aplikácie. 29 4- IMPLEMENTÁCIA Na redukciu duplicitného kódu sú použité React H O C1 3 , ktoré obaľujú komponenty a obohacujú ich o novú funkcionalitu. Jeden z nich je CdsCallHolder, ktorý obsahuje metódy na získavanie dát z hviezdnych katalógov. Pre navigáciu v aplikácii slúži knižnica react-router-dom. Na mieste, kde je potrebné prepínať komponenty, je komponent Switch. Vnútri elementu Switch sa v komponentoch Route nachádzajú jednotlivé trasy a komponenty, ku ktorým je možné navigovat. Pre odkazy vnútri aplikácie sa používa komponent Link s atribútom to. Riadenie prístupu ku komponentov podľa prihláseného užívateľa je vytvorené pomocou React Context1 4 . V triede AuthProvider sa udržiava stav prihlásenia a metódy na prihlásenie a odhlásenie užívateľa. N a skrývanie niektorých prvkov na stránke ich stačí obalit do OrdyAuth alebo OnlyAdmin komponentov. Autorizačná hlavička sa pridáva automaticky ku všetkým HTTP žiadostiam volaným cez knižnicu axios. 4.4.1 O-C brána V implementácii novej O-C brány je vytvorený zoznam hviezd zoskupených podľa súhvezdí. Po kliknutí na hviezdu je zobrazený O-C graf s údajmi o hviezde (obr. 4.2). V grafe s použitím knižnice Echarts je možné zvoliť rozmedzie pre osu X aj Y. Pre osu X je možné zvoliť medzi juliánskym dátumom, gregoriánskym dátumom alebo epochou. Po prejdení na bod v grafe sa zobrazia jeho detaily. Typy nameraných miním su v grafe odlíšené farebne a je možné si zvoliť, ktoré typy majú byť zobrazené. Pomocou vstupných políčok pri údajoch o hviezde je možné nastaviť vlastné hodnoty pre epochu a periódu. Vlastné minimá je možné pridať v textovej oblasti pod grafom. Grafje možné preložiť logaritmickou alebo polynomiálnou krivkou prvého až desiateho stupňa. Na výpočet modelov kriviek na základe metódy najmenších štvorcov som pre jednoduchosť použil JavaScript knižnicu regression. 13. Higher order components. Viac na https://reactjs.org/docs/ higher-order-components.html 14. Viac na https://reactj s.org/docs/context.html 30 4- IMPLEMENTÁCIA Obr. 4.2: Nové zobrazenie grafu O-C 4.4.2 CzeV katalóg V novom CzeV katalógu je vytvorená tabuľka s hviezdami obsahujúca základné informácie o objave. Oproti starej verzií som pridal pokročilé filtrovanie a katalóg je možné stiahnuť vo formáte CSV (obr. 4.3). Po kliknutí na záznam sa zobrazí detailný výpis údajov s mapou hviezdnej oblohy, na ktorej je hviezda vyznačená. Prihlásenému užívateľovi sa zobrazuje možnosť zadať nový objav premennej hviezdy. Má na výber zadanie jedného objavu pomocou formulára alebo viacerých objavov nahratím CSV súboru. Formulár pre zadávanie objavov v novej verzií obsahuje niekoľko zmien. Údaje o súhvezdí, objaviteľoch a použitom filtry sa vyberajú z možností. Políčko pre typ premennej hviezdy obsahuje automatické dopĺňanie pre základné typy. Vstupné políčka sú automaticky validované pre pred- 31 4- IMPLEMENTÁCIA RA: 08 29 39.31 Type: Cons. Type EA RA (J 2000) DEC (J2000) 29 39.312 +17 17 80.58 + 17 17 00.5 Radius: 0.1 cleg Fett Pravec v Filter Band: o — o Year: 0 1S9C Epoch Period 2452500.939 1.469331 2018 Clear Discoverer "ravec Download Total 1 star < ["T"] > 20 / page Goto Obr. 4.3: Nový CzeV katalog s pokročilím filtrovaním písaný formát. Pri zadaní súradníc alebo identifikátora sa zobrazia doplňujúce informácie z katalógov hviezd. Údaje z katalógu UCAC4 je možné skopírovať do formulára (obr. 4.4). Coordinates search © CzeV: 2 stars nearby CzeV 1 Cnc (0.0000 arcsec) CzeV 31 Aps (0.0000 arcsec) VSX: 1 star nearby FF Cnc (0.0411 arcsec) Cross id search (UCAC4 S37-046686) 0 UCAC4: UCAC4 537-046686 (0.0000 arcsec) RA 127.4138903 DEC: 17.2834942 0 V: 9.384 J: 10.766 K: 8.853 (7) CzeV: CzeV 1 Cnc O VSX: No result (7) UCAC4: UCAC4 537-046686 RA: 127.4138003 DEC: 17.2834942 V: 9.384 J: 10.766 K: 8.853 0 0 SESAME: RA: 127.413792 DEC: 17.28349268 UCAC4 537-046686 Show more Obr. 4.4: Zobrazenie prídavných informácií z katalógov hviezd 32 4- IMPLEMENTÁCIA Prihlásený užívateľ je schopný zobraziť si svoje návrhy na objavy premenných hviezd, upraviť ich alebo vymazať. Administrátor si môže zobraziť všetky objavy, ktoré čakajú na schválenie. Môže ich schváliť, zamietnuť alebo vymazať. 4.4.3 Predpovede miním Zobrazenie predpovedí miním obsahuje vstupné políčko pre dátum, súradnice pozorovateľa a tabuľky s predpoveďami (obr. 4.5). Súradnice sú štandardne nastavené na 50° zemepisnej šírky a 15° zemepisnej dĺžky. V tabuľke je možné všetky údaje filtrovať. Pri predpovedi je ikonka grafu, ktorá po prejdení kurzorom zobrazí O-C graf s aktuálnymi údajmi. Night of: 2018-12-04 Lat: 50° Lon: 15" £ Snow elemente Star V0467 And Ľ p 16:15:10 0.01 - 0.009- • 0.01 - 0.009- 0.007-0.007- * 0.005 - 0.004- 0.003 t • 0.005 - 0.004- 0.003 - 0.005 - 0.004- 0.003 - • 0.002 - * CzeV161 L a c Ľ QS And L i 16:27:09 16:29:17 III2 3 4 5 > Goto Poi nts T Altitude Azimuth T Magnitudes 65.64° SE 15.43 15.73 (V) 65.06" SE 8.13-8.19 [V) 68.96° SE 12.34-12.85 (c) 66.80° SE 11.68-11.85 (R) 63.94° S 12.13 12.61 (p) 38.72° S 12.4-13.1 (V) 66.27° SE 13.36-14.14 (c) 5 27.66° S 14.09-14.09 (p) ) 64.86° S 13-13 (c), 13-13 (c) 84.75° S 15.3-15.8 (R) 9 59.14° SE 16.67-17.09 (V) Obr. 4.5: Zobrazenie predpovedí miním v novej implementácii 33 4- IMPLEMENTÁCIA 4.5 Inštalácia a spustenie Podmienky na spustenie webovej služby je mať nainštalovaný J D K 1 5 8 a databázový server MySQL. O všetko ostatné sa postará nástroj Gradle. Pred spustením webovej služby je potrebné mať nastavenú databázu. V súbore application.properties je potrebné mať nastavené prístupy do databáz var_astro_cz a var_astro_cz_ocgate. A k databázy neobsahujú potrebné tabuľky je možné ich vytvoriť pri spustení služby tým, že zmeníme hodnoty oc.hibernate.hbm2ddl.auto=create czev.hibernate.hbm2ddl.auto=create Na spustenie webovej služby z príkazového riadku slúži nasledujúci príkaz. gradlew bootRun Služba bude potom dostupná na adrese http: //localhost: 8080. Pri prvom spustení príkazu gradlew sa stiahne nástroj Gradle s verziou, ktorá je kompatibilná s projektom. Na spustenie klientskej aplikácie slúži nasledujúci príkaz. gradlew npmStart Pri jeho prvom spustení sa pre projekt stiahnu nástroje node a npm. Aplikácia bude potom dostupná na adrese http: //localhost: 3000. Na kompiláciu a zabalenie webovej služby aj klientskej aplikácie do JAR súboru slúži príkaz gradlew stage Výsledný balík sa bude po dokončení nachádzať v zložke build • l i b s s názvom var-astro-data. j ar. Tento súbor je spustitelný z príkazového riadka pomocou príkazu java -jar var-astro-data.jar Služba spolu s klientskou aplikáciou bude potom dostupná na adrese http: //localhost :8080. Port, na ktorom má aplikácia bežať, je možné nastaviť parametrom —server.port= V produkčnom prostredí bude na komunikáciu aplikácia používať zabezpečený protokol HTTPS1 6 . V prvom rade je nutné mať vytvorený digitálny certifikát v PKCS1217 súbore. Ďalej je potrebné konfiguro- 15. Java Development Kit 16. Hypertext Transfer Protocol Secure 17. Označenie typu súboru pre ukladanie digitálnych certifikátov 34 4- IMPLEMENTÁCIA vať aplikáciu. Do application.properties alebo cez parametre pri spúštaní treba vložiť nasledujúce údaje. server.ssl.key-store=keystore.pl2 server.ssl.key-store-password=password server.ssl.keyStoreType=PKCS12 server.ssl.keyAlias=tomcat Prvý riadok je názov súboru, v ktorom je certifikát uložený. Druhý riadok je heslo k súboru. Tretí riadok je formát súboru s certifikátom a posledný riadok je názov certifikátu. S takýmto nastavením bude fungovať komunikácia s aplikáciou len cez protokol HTTPS. 35 5 Budúce práce Aplikácia je pripravená na nasadenie do produkčného prostredia na server SPHE CAS. V budúcnosti je plánované na aplikácii naďalej pracovať. Po aktualizácií formátu dát O-C brány bude do aplikácie pridaná implementácia pre ich úpravu, pridávanie nových miním z publikácií alebo aplikácie AMPER. Dôležitá je integrácia s aplikáciou A M P E R . Malo by byť možné napríklad odosielať dáta priamo do CzeV katalógu a O-C brány. Administrátor by pri schvaľovaní hviezd v CzeV katalógu mal mať možnosť zobraziť si pozorovacie dáta z AMPER. Ďalšia možná integrácia môže byť so softvérom Silicups1 , ktorý vyvíjajú členovia SPHE CAS. Mohla by medzi nimi prebiehať synchronizácia pri zmene údajov v CzeV katalógu. V budúcnosti sa taktiež plánuje reimplementácia aj ďalších aplikácií z portálu SPHE C A S ako je napríklad projekt B.R.N.O pre publikáciu miním jasností hviezd a slovenský katalóg premenných hviezd SvkV 1. https://github.com/HinataSoft/Silicups 36 6 Záver Cieľom práce bolo reimplementovať a rozšíriť webové aplikácie na zobrazovanie a správu astronomických dát o premenných hviezdach pre Sekciu premenných hviezd a exoplanét Českej astronomickej spo­ ločnosti. V prvej časti sa venujem úvodu do problematiky a dôvodom, kvôli ktorým je reimplementácia potrebná. Druhá kapitola obsahuje analýzu súčasného stavu a požiadaviek na výslednú aplikáciu. Tretia kapitola je zameraná na návrh riešenia a popis, ako by mala aplikácia fungovať. V štvrtej kapitole opisujem prečo som si vybral jednotlivé technológie pre implementáciu. Venujem sa princípom, na základe ktorých som implementoval webovú službu a jednostránkovú aplikáciu a spôsobom, ako možno obe nainštalovať a spustiť. Piata kapitola obsahuje plány do budúcnosti. Uvádza možnosti ďalšieho rozširovania aplikácie a spôsobom, ktoré ju môžu vylepšiť. Výsledkom práce je webová služba a klient vo forme jednostránkovej webovej aplikácie. Reimplementované sú tri aplikácie, O-C brána, katalóg CzeV a predpovede miním jasností hviezd. O-C brána, slúži na interaktívne zobrazenie O-C odchýlok nameraných miním od predpovedaných. Katalóg CzeV slúži na zaznamenávanie premenných hviezd objavených českými astronómami. Aplikácia pre predpovede miním spočítava a zobrazuje predpovede miním jasností hviezd pre vybranú noc a polohu pozorovateľa. Oproti pôvodným aplikáciám sú zmeny hlavne v novom užívateľskom rozhraní a nových funkciách, ktoré uľahčujú prácu s informáciami o hviezdach. 37 Literatúra [1] Zdeněk MIKULÁŠEK a Miloslav ZEJDA. Úvod do studia proměnných hvězd. Brno: Masarykova univerzita, 2013. [2] Michal KRAJČOVIČ. Nástroj pro vyhledání fotometrických dat stelárních objektů [online]. Bakalářská práce. 2016 (cit. 2018-11-30). URL: https://is.muni.cz/th/z0wh7/. [3] Sekce proměnných hvězd a exoplanet ČAS. var2.astro.cz. (cit. 2.12.2018). [4] Sekce proměnných hvězd a exoplanet ČAS. O-C Gateway. (cit. 2.12.2018). [5] Open European Journal on Variable stars. Open European Journal on Variable stars. (cit. 30.11.2018). [6] Sekce proměnných hvězd a exoplanet ČAS. CzeV katalog. (cit. 2.12.2018). [7] Sekce proměnných hvězd a exoplanet ČAS. Předpovědi minim. (cit. 2.12.2018). [8] I. Ridpath. A Dictionary of Astronomy. Oxford Paperback Reference. OUP Oxford, 2012. ISBN: 9780199609055. [9] Pedagogická fakulta Masarykovy univerzity. Základní geografické charakteristiky ČR. (cit. 30.11.2018). [10] Mark Richards. Software Architecture Patterns. O'Reilly Media, Inc., 2015. ISBN: 9781491925409. [11] Solovei V , Olshevska O. a Bortsova Y. „THE DIFFERENCE BETW E E N DEVELOPING SINGLE PAGE APPLICATION A N D TRADITIONAL WEB APPLICATION BASED O N MECHATRONICS ROBOT LABORATORY O N A F T APPLICATION." Avtomatizaciä Tehnologičeskih i Biznes-Processov, Vol 10, Iss 1 (2018) 1 (2018). ISSN: 2312-3125. URL: https : //doi . org/10.15673/atbp. vlOil.874. [12] JetBrains. The State of Developer Ecosystem in 2018. (cit. 30.11.2018). 38 LITERATÚRA [13] Deqing L i et al. „ECharts: A declarative framework for rapid construction of web-based visualization". Visual Informatics 2.2 (2018), s. 136-146. ISSN: 2468-502X. DOI: https : //doi . org/10 . 1016/j . v i s i n f . 2018.04.011. URL: http: //www. sciencedirect. com/science/article/pii/S2468502X18300068. [14] Dennis D. McCarthy. „The Julian and modified Julian dates." Journalfor the History ofAstronomy 29.4 (1998), s. 327. ISSN: 00218286 URL: http://dx.doi.org/10.1177/002182869802900402. [15] Jean H . Meeus. Astronomical Algorithms. Willmann-Bell, Incorporated, 1991. ISBN: 0943396352. [16] Kotlin Programming Language. Kotlin Language Documentation. (cit. 30.11.2018). [17] Spring. Spring Boot Reference Guide. (cit. 30.11.2018). [18] Spring. Spring Data JPA - Reference Documentation. (cit. 30.11.2018). [19] Hibernate. Envers - Hibernate ORM. (cit. 30.11.2018). [20] Gradle Inc. Gradle User Manual. (cit. 30.11.2018). [21] Create React App. Getting started. (cit. 30.11.2018). [22] Ant Design. Ant Design of React - Ant Design. (cit. 30.11.2018). [23] Ant Design. Introduction - Ant Design. (cit. 30.11.2018). [24] Thomas Boch. Aladin Lite A lightweight sky atlas running in the browser. (cit. 30.11.2018). 39 A Elektronické prílohy • var-astro-data.zip - obsahuje Gradle projekt so zdrojovými kódmi aplikácie • var-astro-data.jar - spustitelný program v súbore JAR 40