Python 22
Django III

Posledné dve časti seriálu sme venovali teórii a informáciám, ktoré sa týkali tých najpodstatnejších detailov tvorby webových aplikácií s využitím frameworku Django. V tejto časti seriálu sa vrhneme na praktickú prípravu aplikácie a to riadne z ostra.

obr2obr1

Python 21
Django II

V tejto časti seriálu si uvedieme viacero veľmi dôležitých detailov, ktoré musíme poznať predtým, ako sa naplno pustíme do tvorby Django projektov. Ukážeme si ako sprístupníme správcovskú web stránku a v závere sa začneme venovať tzv. zobrazeniam (Views).

obr1

Python 20
Django I

Pri hľadaní témy na ďalšiu časť seriálu som mal v úmysle predstaviť možnosti Pythonu pri práci s databázami. Najdôležitejšou podmienkou bola vizuálna reprezentácia a správa údajov uložených v databáze. Okrem predstavenia vybranej databázy teda bolo potrebné vybrať nástroj, ktorý by vytvoril prezentačnú vrstvu. V minulosti sme si predstavili frameworky Flask a Dash. Tentoraz vystúpime omnoho vyššie a budeme sa venovať frameworku Django. Teoretické informácie, ktoré uvedieme vo veľmi skrátenej forme, pretavíme do aplikácie, ktorá bude určená na správu údajov uložených v databáze MySQL a to prostredníctvom interaktívnej webovej stránky generovanej nástrojmi Django.

obr2obr1

Python 19
Sliedič v.2

Dnešná časť seriálu bude priamym pokračovaním predošlej, v ktorej sme opísali funkcionalitu vzorovej aplikácie Sliedič v.1. Nadväznosť textového obsahu úzko súvisí s nadväznosťou programového kódu aplikácie. V podstate ide o rozšírenie jej prvej verzie o aktívnu časť. Tá bude realizovať tzv. poškodenie ARP záznamov. Ide o jeden zo základných spôsobov aktívneho sliedenia počítačových sietí.

obr2obr1

Python 18
Sliedič v.1

V minulých častiach seriálu sme sa naučili ako pracovať so sieťovým manipulátorom Scapy. Súčasne sme si ukázali ako používať framework Dash a vytvárať pomocou neho prezentačnú vrstvu našich webových aplikácií. Dnes tieto naše ťažko nadobudnuté skúsenosti naplno zužitkujeme. Vytvoríme rozsiahlejšiu aplikáciu, pomocou ktorej implementujeme sieťový sliedič (sniffer). V prvej verzii aplikácii nebudeme do siete nijako zasahovať, tzn. aplikácia bude pracovať v čisto pasívnom móde. Môžeme si ju teda dovoliť spustiť kdekoľvek bez strachu, že by sme tým porušili bezpečnostné pravidlá.

obr2obr1

Python 17
Skener dátovej siete II

Táto časť seriálu bude priamym pokračovaním predošlých dvoch článkov, v ktorých sme sa začali venovať skenom počítačových sietí. Dnes si dokončíme popis funkcií slúžiacich konkrétne na skenovanie portov. Hneď na to si popíšeme aplikáciu netmap, pomocou ktorej prakticky realizujeme jednotlivé skeny.

obr2obr1

Python 16
Skener dátovej siete

V tejto časti seriálu budeme pokračovať v skenovaní počítačovej siete pričom sa zameriame na skenovanie pripojených zariadení. Budeme pritom vychádzať z informácií, ktoré už poznáme. Doplníme ich o podrobnosti týkajúce sa zasielania sieťových paketov a prijímania odpovedí. Prezentačná vrstva bude rovnaká – Dash, avšak detailnejšie rozpracovaná a doplnená o nové prvky. V úvode musíme zdôrazniť, že sa ideme venovať získavaniu detailných informácií o našej počítačovej sieti. Táto aktivita je obvykle prípustná v našom domácom prostredí, resp. po predošlom povolení od správcu siete. Bez tohto povolenia skeny nikdy nespúšťajme!

obr3obr2obr1

Python 15
Scapy

V tejto časti seriálu využijeme nadobudnuté vedomosti týkajúce sa frameworku Dash na vytvorenie grafického rozhrania aplikácie, ktorej úlohou bude skenovať dostupné bezdrôtové siete. Využijeme pritom vizuálne komponenty knižnice Plotly (tabuľka, stĺpcový graf). Programovú logiku postavíme na funkciách paketového analyzátora Scapy (https://scapy.net). Skenovať budeme bezdrôtové siete čím neporušíme žiadne legislatívne pravidlá. Technickým prostriedkom bude obyčajný PC s bezdrôtovým sieťovým adaptérom.

obr2obr1

Python 14
Dash

Touto časťou seriálu síce nadviažeme na predošlé články, avšak diametrálne zmeníme prístup k tvorbe vzorovej aplikácie. Aj naďalej sa budeme venovať grafickej reprezentácii údajov prostredníctvom webových stránok. Budeme pracovať na štvrtej verzii aplikácie, ktorej úloha ostáva nezmenená a síce bude slúžiť na zobrazenie technických parametrov áut vo forme grafov. Framework Flask však vymeníme za jeho nadstavbu s názvom Dash čím kompletne zmeníme náš programátorský prístup k vývoju aplikácie.

obr2obr1

Python 13
Čítanie Excelových tabuliek

V tejto časti seriálu si predstavíme tretiu verziu aplikácie cars_v3, ktorej hlavným rozšírením oproti predchádzajúcej verzii, je schopnosť čítania a prezentácie údajov uložených vo formáte Microsoft Office Excel. Samotné čítanie z Excelových súborov je realizované triviálne pomocou funkcií knižnice Pandas. Problematickejšiu časť kódu tvorí konverzia získaných údajov do stavu, v ktorom ich chceme prezentovať na našej webovej stránke.

obr2obr1

Python 12
Grafická reprezentácia údajov

V tomto článku si predstavíme viacero možností grafickej reprezentácie údajov v rámci dynamicky vytváraných webových stránok. S využitím niekoľkých alternatív vytvoríme druhú verziu aplikácie, ktorej vlastnosti doplníme o možnosť vstupu údajov a ich grafickej vizualizácie.

obr4obr3obr2obr1

Python 11
Webový prihlasovací formulár II

V tomto článku dokončíme popis algoritmu webového prihlasovacieho formulára verzie 1.0. Zameriame sa pritom na viaceré dôležité detaily algoritmu. V úvode si uvedieme adresárovú štruktúru aplikácie s umiestnením jej jednotlivých súborov. Následne sa zameriame na popis významu a funkcionality jej konkrétnych Python modulov a HTML súborov.

obr2obr1

Python 10
Webový prihlasovací formulár I

V tejto a takisto aj v nasledujúcej časti seriálu sa budeme venovať prepojeniu Pythonu s webovým prostredím. Toto naše jasné smerovanie sleduje moderný trend tvorby programových diel, ktorého cieľom je sprístupniť aplikácie maximálnemu počtu používateľov so súčasným využitím výhod aplikačného prostredia typu klient-server. Jednou z najdôležitejších vlastností mnohých internetových stránok je autentifikácia, teda rozpoznanie – identifikácia konkrétneho používateľa. Často je to jeden z prvých krokov pri práci na danom portály a preto začneme práve touto témou. Vytvoríme jednoduchý webový prihlasovací formulár, ktorý okoreníme použitím tzv. jednorázového hesla (OTP – One Time Password).

obr2obr1

Python 9
Kópia snímok z IP kamery

Mnohí z nás majú doma či v práci nainštalované tzv. IP kamery najrôznejšieho typu a využitia. Môže ísť pritom o jednoduché-lacné kamery alebo o zložitý-drahý kamerový systém. V každom prípade pokiaľ hovoríme o technológii IP, takéto kamery pripájame k bežnej počítačovej sieti, prostredníctvom ktorej následne využívame poskytované služby. Najčastejšie ide o sledovanie obrazu snímaného kamerou. V prípade ak chceme obraz sledovať mimo lokálnej počítačovej siete, často sa stretávame s pojmami ako PortForwarding, Public IP, DDNS, IPsec, Onvif, rtsp... Veľkou otázkou je počítačová bezpečnosť. Ďalšou je napr. ukladanie záznamu v lokálnom (domácom) prostredí, ktoré môže byť pri incidente kompletne kompromitované vrátane zničenia záznamu.

obr2obr1

Python 8
Regulárne výrazy, PIP, JSON

Regulárne výrazy (Regular Expressions – RegEx) sú sekvencie znakov, ktoré tvoria tzv. vyhľadávací vzor (search pattern). PIP (Python Package Installer) je manažér balíčkov programovacieho jazyka Python. Na zdôraznenie faktu, že programovací jazyk Python je možné s výhodou využiť na prácu s databázami a ďalšími zdrojmi údajov, v krátkosti si predstavíme formát JSON (JavaScript Object Notation).

obr15obr14

Python 7
Výnimky, objektovo orientované programovanie

Interpreter Pythonu pri vzniku chyby, ktorá nastane počas vykonávania programu (runtime error), vytvorí objekt nazývaný výnimka (exception). So zväčšovaním sa programových balíkov a s tým súvisiacim nabaľovaním kódu, ktorý už nepripravoval jediný programátor, ale veľká skupina ľudí, začalo programovanie nadobúdať omnoho väčšie rozmery. Údaje a im prislúchajúce funkcie preto začali byť zoskupované do celkov – objektov s cieľom systematizácie práce a čo najjednoduchšej orientácie v rozsiahlom programovom kóde. Vzniklo tak objektovo orientované programovanie (OOP).

obr13

Python 6
Súbory, množiny a pevné množiny, rekurzia

V čase kedy pracujeme so spusteným programom (runtime) sú všetky naše údaje uložené v pamäti počítača (RAM), ktorej obsah je po ukončení vykonávania programu, resp. pri vypnutí počítača, zmazaný. V prípade ak chceme spracovávané údaje uchovať pre budúce využite, musíme ich uložiť do súborov (files). Jednou z najbežnejších funkcionalít, ktorá je implementovaná v mnohých programovacích jazykoch, je tzv. rekurzia. Ide o programovú konštrukciu, v rámci ktorej funkcia volá samú seba.

obr12obr11

Python 5
Typy, moduly, menné priestory

List je sekvenčné zoskupenie položiek (items), resp. elementov rôznych typov do jedného celku, ktorý ohraničujeme hranatými zátvorkami. Slovníky sú meniteľným dátovým typom, ktorý mapuje nemeniteľné kľúče (keys) k ľubovolným typom údajov. Modul je súbor, ktorý obsahuje definície a výkonné výrazy, ktoré môžeme využiť v rámci našich programov. Menné priestory (namespaces) sú kolekcie identifikátorov, ktoré patria konkrétnemu modulu, resp. funkcii.

obr10obr9

Python 4
Funkcie, reťazce, typy

Funkcia je pomenovaná sekvencia výrazov, ktoré tvoria jeden funkčný celok. Ich primárny význam je štrukturalizácia programov na menšie celky. Pomocou funkcií zjednodušujeme kód programov a to tým, že väčšie, často opakujúce sa sekvencie výrazov nahrádzame jednoduchým výrazom, resp. volaním funkcie.

priklad5priklad4

Python 3
Tok programu

Interpreter Pythonu vykonáva kód programu krok za krokom, resp. riadok za riadkom. Hovoríme pritom o tzv. toku vykonávania (flow of execution) programu, ktorý môže byť zmenený niekoľkými možnými spôsobmi. Všetky sú pritom založené na tzv. podmienenom vykonávaní (conditional execution). Pomocou podmienok dokážeme riadiť vykonávanie programu, resp. meniť jeho tok nami požadovaným smerom.

obr6obr5

Python 2
Programovanie programu

Programovaním vo vybratom programovacom jazyku rozumieme zápis výrazov v súlade s jasne definovanými pravidlami a stanovenou štruktúrou. Výrazy sa skladajú zo základných elementov (tokens), medzi ktoré patria čísla, slová, špeciálne znaky a operátory (symboly), výkonné prvky (statements) a kľúčové slová (keywords). Štruktúra programu definovaná programovacím jazykom stanovuje spôsob usporiadania výrazov. Preklad alebo interpretácia programu je vykonávaná pomocou tzv. syntaktickej analýzy (parsing), pri ktorej analyzátor (parser) sleduje stanovenú štruktúru, v rámci ktorej identifikuje jednotlivé výrazy a ich základné elementy.

  • Článok: cl2.doc
  • Publikované v PC Revue 11/2019
obr4obr3obr2obr1

Python 1
Úvod

Programovací jazyk Python (python.org) sa za posledný rok stal najdynamickejšie sa rozvíjajúcim jazykom a má viaceré predpoklady stať sa jedničkou v konkurencii omnoho silnejších hráčov. Seriál rozdelíme na dva väčšie celky. Prvý bude obsahovať všeobecné základy programovania v jazyku Python. V druhom sa budeme venovať rozšíreným možnostiam Pythona, resp. riešeniu konkrétnych problémov. Informácie o jazyku Python môžeme získať z extrémneho množstva informačných zdrojov – elektronických aj tlačených. V dnešnej dobe so všadeprítomným Internetom nie je najmenší problém nájsť zdroje, ktoré hĺbkovo popisujú nielen samotný jazyk, ale aj jeho špecifiká a rozdiely v porovnaní s inými programovacími jazykmi. Ambíciou tohto seriálu je informácie roztrúsené na rôznych miestach zosumarizovať a podať v ucelenej podobe.

  • Článok: cl1.doc
  • Publikované v PC Revue 10/2019