Předchozí díl - Analýza II.

S PHP na oběžnou dráhu, 4. díl: Návrh a realizace

image_8

V minulém díle této série jsme dokončili analýzu a nyní si na jejích výsledcích navrhneme a vytvoříme novou aplikaci.

Výběr platforem

Při návrhu musíme nejdříve vybrat vhodné nástroje. Vycházel jsem z původní aplikace, která byla založena na kombinaci PHP-MySQL-HTML-Javascript. Kvůli kompatibilitě se současnou aplikací i družicí je potřeba zachovat MySQL. Místo čistého PHP byl vybrán Nette Framework (široká komunita uživatelů, lepší správa kódu v budoucnu, ...), grafické prvky jsem se rozhodl realizovat pomocí Bootstrap 3, vykreslování grafů zajišťuje javascriptová knihovna Plot.ly. Mobilní zobrazení je realizováno pomocí CSS techniky @media.

Backend/Frontend

Logiku s nastavením parametrů komunikace s družicí jsem se rozhodl zpřístupnit pouze operátorům, aby o ní běžný návštěvník neměl tušení a nelákalo ho snažit se formulářům "podstrčit" nechtěná data. To obnášelo vytvoření backend rozhraní s přihlášením operátora. Pro ostatní uživatele byl vytvořen frontend, na kterém jsou veškeré informace, které lze z dat družice získat. Jedná se o fyzikální veličiny naměřené družicí ve vesmíru, ale i data o poloze a přeletech družice, její vnitřní fyzikální parametry (teplota, napětí či kapacita zdroje) aj. Data jsou zobrazena v gridech, grafech, uživatel si je může filtrovat a řadit, dohledávat zpětně, provádět printscreeny oblasti grafu atd.

Grafy

U grafů se nyní zastavíme. Vzhledem k objemu dat ukládaných do databáze (zhruba 10 000 záznamů týdně jen při komunikaci s družicí), je potřeba zajistit, aby zobrazení dat v grafech příliš nezatěžovalo databázi - její hlavní funkcí je přijímání data z družice a proto nesmí být ohrožen její chod pouhým zobrazováním grafů. Do grafu je tak možné poslat data maximálně za 7 dní. Rozmezí dnů si uživatel může zvolit pomocí připraveného formuláře. Ve formuláři si může zvolit typ grafu, definovat popisky os, legendu, název grafu, barvu a tloušťku křivky aj. Zároveň je myšleno i na uživatele, kteří na stránky přistupují přes mobilní data - tzn. data jsou do grafu plněna až po odeslání formuláře, nikoliv po příchodu na stránku (uživatel se tak sám může rozhodnout, zda si na grafech bude plýtvat mobilní data).

Šťouravého uživatele by určitě napadlo, že stačí formulář opakovaně odeslat a způsobí tím vysoké vytížení databáze - i na to je pamatováno. Z každé IP adresy může být jen určitý počet požadavků za určitou dobu (např. 5 požadavků za 15 minut). Pokud tyto parametry uživatel překročí - bude mu dočasně odepřena možnost odeslat formulář. Operátor má možnost tyto parametry individuálně nastavit pro libovolnou IP adresu, případně ji může blokovat trvale.

Databáze

Na základě analýzy jsem zapracoval i možnost připojení na více databází. Je tak možné přidat připojení k databázi přes config.neon a následně si vybrat, z které databáze chceme zobrazovat data pro grida a grafy.

Fotogalerie

V poslední části práce jsem se věnoval fotogalerii. V aplikaci tak je možné zobrazit náhled fotky v plné velikosti, včetně čitelného popisku. Při příchodu na stránku je znovu myšleno na uživatele s mobilními daty - nejsou načteny všechny fotky v plné velikosti, pouze jejich miniatury. Uživatel tak má opět možnost rozhodnout se, zda si zobrazí náhled.

Tím byla zcela vyčerpána analýza, systém je navržen a zrealizován. Na závěr už jen zmíním, že jsem k programu zpracoval i dokumentaci, pro budoucí možnost úpravy či rozšíření kódu a lepší orientaci v něm.

V nejlepším se má přestat. A proto v tomto momentě ukončíme i naší sérii článků o zkoumání vesmíru prostřednictvím PHP aplikace.

Zpět nahoru
david-kruml
David Kruml

Autor dostal úkol napsat o sobě pár řádků. Mělo by to být něco hezkého, vtipného, inteligentního a věcného. Autor se domnívá, že jeho fotka splňuje všechny tyto parametry a není proto potřeba cokoliv dodávat.