Python pre inžinierov - kurz 65 000 rub. zo Slurmu, tréning 3 mesiace, Termín 15.1.2024.
Rôzne / / November 27, 2023
Techlead, Data Engineer v Skyeng / ex Slurm, ISPsystem, Grid Dynamics
Sr. Softvérový inžinier v Test, Auriga, bývalý ISPsystem
#1: Základná syntax a štruktúry Pythonu
Prečo: naučiť sa porozumieť logike programov Python, ako aj písať jednoduché programy, je najdôležitejšou úlohou. „Skvelé“, ak nie ste oboznámení so syntaxou Pythonu.
- Dátové typy a premenné, premenlivé/nezmeniteľné a jednoduché/zložené dátové typy, techniky ladenia.
- Podmienený príkaz - logické operátory, jednoduché podmienky, vnorené podmienky a nahradenie príkazu switch.
- Základné cykly – cykly while a for, iterátory, prerušenia cyklu.
- Funkcie, metódy reťazcov, zoznamy a slovníky.
- Generovanie a spracovanie výnimiek.
Cvičenie: súbor malých mikroúloh pre každú hodinu.
#2: Vylepšená znalosť jazyka Python: Optimalizácie a OOP
Prečo: Osvojme si vlastnosti Pythonu – vďaka nim je taký jednoduchý a praktický. Prezradíme aj význam tých troch písmen (hovoríme o OOP) bez akademickej teórie a s jasným účelom
- Pokročilá práca s cyklami - príkaz a generátory výnosov, prehľad o slučkách v Pythone, príkaz else v cykle, optimalizácia cyklov porozumenia atď.
- Špeciálne typy štruktúr: frozendict, defaultdict atď.
- Základné koncepty OOP: triedy, inštancie tried, zapuzdrenie, dedičnosť a polymorfizmus.
- Vytváranie kontextových manažérov pre vaše typy: konštrukt with.
Cvičenie: súbor malých mikroúloh pre každú hodinu.
Pokročilá prax: Audit používania služby.
CTO začal mať podozrenie, že niektoré služby už tímy nevyužívajú. Problémom je, že modul na sledovanie využívaných služieb nebol za posledných desať rokov aktualizovaný: nie je môže nahrávať agregované údaje a formát vrátených hodnôt nezodpovedá všeobecne akceptovaným štandardy. Boli ste vybraní, aby ste extrahovali zachytené metriky, agregovali ich podľa typu a tímu a poskytli tieto informácie CTO na počiatočné posúdenie rozsahu problému.
#3: Sieťové pripojenia
Prečo: Takmer každá služba má rozhranie na pripojenie cez nejaký sieťový protokol. A bez spojenia je interakcia nemožná. Našťastie, ekosystém Pythonu má klientske moduly pre takmer akýkoľvek protokol.
- Pip balík a inštalácia modulov tretích strán.
- Modul Paramiko na vykonávanie príkazov cez ssh.
- Modul požiadaviek na vytváranie požiadaviek HTTP.
- Prehľad modulov pre prácu s databázami a sprostredkovateľmi správ.
Prax. Vývojový tím predstavuje novú metodiku: Ak povolíte výskyt výstrahy, dostanete úlohu. Analytický subsystém hľadá iba vybrané chyby a posiela o nich správy sprostredkovateľovi správ Kafka. Vašou úlohou je dokončiť cyklus vracania chýb vývojárom: váš spotrebiteľ by mal v Trello automaticky vytvárať úlohy s požadovaným popisom a prioritou.
č. 4: Práca s textom v rôznych formátoch
Prečo: Pripojenie k službe je len polovica úspechu. Druhou polovicou je zdieľanie informácií. A informácia je často súbor textových znakov v určitom formáte. Moduly vám pomôžu dekódovať a zakódovať. Nepotrebujete všetky informácie? Regulárne výrazy vám pomôžu vybrať to, čo je dôležité, a zvyšok zahodiť.
- Modul re a regulárne výrazy.
- Moduly pre prácu s dátami v rôznych formátoch: oddelené hodnoty, json, yaml, xml.
- Použitie argumentov príkazového riadku: modul argparse.
Cvičenie: Vytvorenie zdroja údajov o používaní služby.
Pri audite využívania služieb ste identifikovali dôležité informácie pre obchod, dokonca sa začal zaujímať aj generálny riaditeľ. Bolo rozhodnuté analyzovať stratené peniaze a nedovoliť, aby sa takéto situácie opakovali. Ak to chcete urobiť, musíte analytikom poskytnúť nástroj na získavanie údajov, aby mohli pripravovať správy. Problém je v tom, že monitorovací modul vracia limity služieb na samostatnú požiadavku vo formátoch yaml a ceny za služby vracia fakturačný systém vo formáte xml. Je potrebné kombinovať údaje o aktuálnom zaťažení s limitmi a cenami. Analytické oddelenie si vyžiadalo súhrnné informácie vo formáte JSON s možnosťou špecifikovať časový interval a krok agregácie.
č. 5: Interakcia s operačným systémom
Prečo: Dôležitosť interakcie s operačným systémom nie je potrebné ďalej vysvetľovať. Ako ho prepojiť s Pythonom je v tejto lekcii.
- Čítanie a zápis súborov.
- os modul - čítanie premenných prostredia, práca s adresármi a právami, práca s procesmi.
- Modul podprocesov pre interaktívnu interakciu s procesmi.
Prax: automatické poskytovanie prístupu k serverom.
Počas kampane za opustenie nevyužívaných služieb nastala kuriózna situácia: server s potravinami tímy boli vypnuté, ale tím infraštruktúry ho pravidelne používal ako hostiteľ inscenovanie. Ukázalo sa, že produktový tím ho nepoužil, pretože pravidelne niekto prepisuje ich nastavenia svojimi vlastnými. Rozhodlo sa, že teraz bude zdroj pridelený iba členom jedného tímu a automatizácia pomôže vyhnúť sa chybám. Vy, ako ten, kto začal tento neporiadok, musíte napísať agenta, ktorý bude pravidelne dotazovať systém správy práv a vykonať zmeny v konfigurácii práv v rámci nainštalovaných služieb a v prípade potreby dať službám príkaz na opätovné načítanie konfigurácie.
č. 6: Operátor K8S v Pythone (stream živého kódovania)
13. októbra o 19:00
Prečo: rozšírme možnosti K8S tak, aby vyhovovali vašim úlohám.
č. 7: Napísanie vlastného modulu pre Ansible
Prečo: Ansible je výkonný systém na správu konfigurácie, ktorý možno dokonca rozšíriť pomocou vlastných modulov. Aká náhoda, že on sám a väčšina modulov sú napísané v Pythone.
- Písanie vlastných modulov pre Ansible.
Cvičenie: písanie modulu správy práv.
Dávno, v ďalekej galaxii ste už napísali agenta, ktorý by vydal práva na určité služby. Je čas zmeniť ťah na tlačenie a Ansible vám s tým pomôže. Všetko, čo potrebujete, je len modul.
Č. 8: Tvorba a prípady použitia vášho API
Prečo: Príprava kódu na nasadenie je jednou z najdôležitejších úloh. Naše vlastné skripty pre etapy pomáhajú urobiť tento proces flexibilnejším a pohodlnejším.
- Vytvorenie REST API vo Flasku.
- Vytvorenie vlastného exportéra prometheus pomocou klienta Prometheus Python a banky.
Prax: nahrávanie údajov do monitorovacieho systému tretej strany.
Náklady na nevyužité zariadenia prekonali aj pesimistické prognózy. Teraz má inžiniersky tím ďalšiu oblasť zodpovednosti - monitorovanie nevyužitých služieb. Ak to chcete urobiť, musíte prostredníctvom skriptu pravidelne vyhľadávať fakturačný systém a odovzdávať údaje spoločnosti Prometheus. Formát prijímaných údajov stále nie je vhodný. Musíte implementovať konektor. A zároveň napíšte koncový bod, aby malo analytické oddelenie vždy po ruke aktuálne informácie vo formáte JSON.
AMA session + NEFORMÁLNE stretnutie s lektormi kurzu
28. októbra o 19:00
Stretávame sa, aby sme prediskutovali obavy účastníkov kurzu.
#9: Testovanie API vašej aplikácie
Prečo: Niekedy je lepšie nemať žiadny kód ako kód, ktorý je nestabilný. Aby ste sa nebáli prelomiť svoj kód, musíte písať testy.
- Typy testov: jednotkové, integračné a end-to-end.
- Prehľad modulu pyhamcrest a jeho porovnávačov.
- Architektúra a možnosti pytestu.
- Použitie pytestu a pyhamcrestu na písanie jednotkových testov.
Cvičenie: písanie testov pomocou pytest a pyhamcrest pre vaše API.
č. 10: Interakcia so systémami CVS a DevOps
- Použitie modulov tretích strán na príklade integrácie do Gitlab pipeline.
- Použitie pygit na získanie informácií o zmenách kódu.
Prax: generovanie protokolu zmien z odovzdaní.
Technickému tímu sa vaše riešenia natoľko páčili, že sa nimi inšpirovali a začali písať svoje vlastné. Ale ľudia vždy zabudnú napísať popisy k vydaniam. Na dosiahnutie tohto cieľa sa tím rozhodol implementovať konvencie odovzdávania a generovať protokoly zmien priamo z odovzdania zlúčenie vývojovej vetvy s verziou, a ak názov odovzdania nie je v súlade s konvenciami odovzdania, nepovoliť merge-request, kým zlúčiť.
#11: Chatopy s Errbotom v Pythone
Prečo: Hlavnými obchodnými problémami nie je výkon aplikácie alebo dokonca chyby vyskytujúce sa v kóde. Najvážnejšie problémy vznikajú vtedy, keď je komunikácia zamestnancov neúčinná. Chatops je jedným zo spôsobov, ako tento problém vyriešiť.
- Koncept chatopov: aké problémy rieši chatops?
- Errbot framework: inštalácia, vytvorenie základnej šablóny pluginu, konfigurácia a spustenie.
- Errbot framework: vytvorenie vlastného pluginu pre Chatops s rôznymi možnosťami spracovania správ.
Konečný pojekt
Kontrola termínu a ochrana pre záujemcov
Po kurze budete mať projekt na Git: môžete zautomatizovať svoju pracovnú úlohu alebo urobiť jednu z navrhovaných možností.
Hotový projekt môže byť použitý ako portfólio a zobrazený pri uchádzaní sa o prácu.