Python za inženirje - tečaj 65.000 rub. iz Slurma, usposabljanje 3 mesece, datum 15. januar 2024.
Miscellanea / / November 27, 2023
Techlead, podatkovni inženir pri Skyeng / ex Slurm, ISPsystem, Grid Dynamics
Sr. Programski inženir v podjetju Test, Auriga, ex ISPsystem
#1: Osnovna sintaksa in strukture Pythona
Zakaj: naučiti se razumeti logiko programov Python, kot tudi pisanje preprostih programov, je najpomembnejša naloga. »Super«, če niste seznanjeni s sintakso Python.
- Podatkovni tipi in spremenljivke, spremenljivi/nespremenljivi in enostavni/sestavljeni podatkovni tipi, tehnike odpravljanja napak.
- Pogojni stavek - logični operatorji, enostavni pogoji, ugnezdeni pogoji in zamenjava stavka switch.
- Osnovne zanke - zanke while in for, iteratorji, prekinitve zanke.
- Funkcije, metode nizov, seznami in slovarji.
- Ustvarjanje in obravnava izjem.
Praksa: nabor majhnih mikronalog za vsako lekcijo.
#2: Izboljšano znanje Pythona: Optimizacije in OOP
Zakaj: Obvladajmo značilnosti Pythona – zaradi njih je tako preprost in praktičen. Razkrili bomo tudi pomen teh treh črk (govorimo o OOP) brez akademske teorije in z jasnim namenom
- Napredno delo z zankami - stavek yield in generatorji, vpogled v zanke v Pythonu, stavek else v zanki, optimizacija zank razumevanja itd.
- Posebne vrste struktur: frozendict, defaultdict itd.
- Osnovni pojmi OOP: razredi, primerki razreda, enkapsulacija, dedovanje in polimorfizem.
- Ustvarjanje upraviteljev konteksta za vaše vrste: konstrukt with.
Praksa: nabor majhnih mikronalog za vsako lekcijo.
Napredna praksa: revizija uporabe storitve.
Tehnični direktor je začel sumiti, da ekipe ne uporabljajo več nekaterih storitev. Težava je v tem, da modul za spremljanje porabljenih storitev zadnjih deset let ni posodobljen: ni lahko naloži zbirne podatke in oblika vrnjenih vrednosti ne ustreza splošno sprejetim standardi. Izbrani ste bili, da izvlečete zajete meritve, jih združite po vrsti in ekipi ter posredujete te informacije tehničnemu direktorju za začetno oceno obsega težave.
#3: Omrežne povezave
Zakaj: Skoraj vsaka storitev ima vmesnik za povezavo prek nekega omrežnega protokola. In brez povezave je interakcija nemogoča. Na srečo ima ekosistem Python odjemalske module za skoraj vse protokole.
- Paket Pip in namestitev modulov tretjih oseb.
- Paramiko modul za izvajanje ukazov preko ssh.
- Modul zahtev za izdelavo zahtev HTTP.
- Pregled modulov za delo z bazami podatkov in posredniki sporočil.
Vadite. Razvojna skupina uvaja novo metodologijo: Če dovolite, da se pojavi opozorilo, boste prejeli nalogo. Analitični podsistem poišče samo izbrane napake in o njih pošlje sporočila Kafkinemu posredniku sporočil. Vaša naloga je dokončati cikel vračanja napak razvijalcem: vaš uporabnik mora samodejno ustvariti naloge z zahtevanim opisom in prioriteto v Trellu.
Št. 4: Delo z besedilom v različnih formatih
Zakaj: Povezava s storitvijo je le polovica bitke. Druga polovica je izmenjava informacij. Informacije so pogosto nabor besedilnih znakov v določenem formatu. Moduli vam bodo pomagali pri dekodiranju in kodiranju. Ne potrebujete vseh informacij? Regularni izrazi vam bodo pomagali izluščiti, kar je pomembno, in zavreči ostalo.
- Modul re in regularni izrazi.
- Moduli za delo s podatki v različnih formatih: ločene vrednosti, json, yaml, xml.
- Uporaba argumentov ukazne vrstice: modul argparse.
Praksa: Ustvarjanje vira podatkov o uporabi storitve.
Med revizijo uporabe storitev ste ugotovili pomembne informacije za poslovanje, zanimal se je tudi generalni direktor. Odločeno je bilo analizirati izgubljeni denar in preprečiti, da bi se takšne situacije ponovile. Če želite to narediti, morate analitikom dati orodje za pridobivanje podatkov, da bodo lahko pripravljali poročila. Težava je v tem, da modul za spremljanje vrne omejitve storitev za ločeno zahtevo v formatih yaml, cene storitev pa obračunski sistem vrne v formatu xml. Podatke o trenutni obremenitvi je potrebno združiti z limiti in cenami. Oddelek za analitiko je zahteval združene informacije v formatu JSON z možnostjo določitve časovnega intervala in koraka združevanja.
Št. 5: Interakcija z operacijskim sistemom
Zakaj: pomembnosti interakcije z operacijskim sistemom ni treba dodatno razlagati. Kako ga povezati s Pythonom, je v tej lekciji.
- Branje in pisanje datotek.
- os modul - branje spremenljivk okolja, delo z imeniki in pravicami, delo s procesi.
- Podprocesni modul za interaktivno interakcijo s procesi.
Praksa: samodejno zagotavljanje dostopa do strežnikov.
Med kampanjo opuščanja neuporabljenih storitev se je pojavila nenavadna situacija: strežnik za živila ekipe zaprle, vendar ga je ekipa za infrastrukturo občasno uporabljala kot gostitelja za uprizoritev. Izkazalo se je, da ga ekipa izdelka ni uporabila, ker je občasno kdo prepisal njihove nastavitve s svojimi. Odločeno je bilo, da bo zdaj vir dodeljen samo članom ene ekipe, avtomatizacija pa bo pomagala preprečiti napake. Vi, kot tisti, ki ste začeli to zmešnjavo, morate napisati agenta, ki bo občasno preverjal sistem za upravljanje pravic in spremenite konfiguracijo pravic znotraj nameščenih storitev in po potrebi dajte storitvam ukaz za ponovno branje konfiguracije.
Št. 6: Operater K8S v Pythonu (pretok kodiranja v živo)
13. oktober ob 19.00
Zakaj: razširimo zmogljivosti K8S, da bo ustrezal vašim nalogam.
Št. 7: Pisanje lastnega modula za Ansible
Zakaj: Ansible je močan sistem za upravljanje konfiguracije, ki ga je mogoče celo razširiti z lastnimi moduli. Kakšno naključje, da je sam in večina modulov napisanih v Pythonu.
- Pisanje lastnih modulov za Ansible.
Praksa: pisanje modula za upravljanje pravic.
Pred davnimi časi ste v galaksiji daleč, daleč stran že napisali agenta za izdajo pravic do določenih storitev. Čas je, da spremenite pull v push in Ansible vam bo pri tem pomagal. Vse kar potrebujete je le modul.
Št. 8: Ustvarjanje in primeri uporabe vašega API-ja
Zakaj: Priprava kode za uvedbo je ena najpomembnejših nalog. Naši lastni skripti za stopenjske cevovode pomagajo narediti ta postopek bolj prilagodljiv in udoben.
- Ustvarjanje API-ja REST v Flasku.
- Ustvarjanje lastnega izvoznika prometheus s Prometheus Python Client in Flask.
Praksa: nalaganje podatkov v nadzorni sistem tretje osebe.
Stroški neuporabljene opreme so presegli tudi pesimistične napovedi. Zdaj ima inženirska ekipa še eno področje odgovornosti - spremljanje neuporabljenih storitev. Če želite to narediti, morate občasno opraviti anketo v sistemu zaračunavanja s svojim skriptom in posredovati podatke Prometheusu. Format prejetih podatkov še vedno ni primeren. Implementirati morate konektor. In hkrati napišite končno točko, tako da ima oddelek za analitiko vedno pri roki posodobljene informacije v formatu JSON.
AMA seja + NEFORMALNO srečanje z govorci tečaja
28. oktober ob 19.00
Srečamo se, da razpravljamo o pomislekih udeležencev tečaja.
#9: Preizkušanje API-ja vaše aplikacije
Zakaj: včasih je bolje, da nimate kode, kot kodo, ki je nestabilna. Da se ne bi bali zloma kode, morate pisati teste.
- Vrste testov: enotni, integracijski in end-to-end.
- Pregled modula pyhamcrest in njegovih ujemalcev.
- Arhitektura in zmogljivosti pytesta.
- Uporaba pytest in pyhamcrest za pisanje testov enot.
Praksa: pisanje testov z uporabo pytest in pyhamcrest za vaš API.
Št. 10: Interakcija s sistemoma CVS in DevOps
- Uporaba modulov tretjih oseb na primeru integracije v cevovode Gitlab.
- Uporaba pygita za pridobivanje informacij o spremembah kode.
Praksa: ustvarjanje dnevnika sprememb iz odobritev.
Inženirski ekipi so bile vaše rešitve tako všeč, da so jih navdihnile in začele pisati svoje. Toda ljudje vedno pozabijo napisati opise za objave. Da bi to dosegli, se je ekipa odločila za implementacijo konvencij o objavi in ustvarjanje dnevnikov sprememb neposredno iz odobritev združitev razvijalske veje z izdajno, in če ime objave ni v skladu s konvencijami objave, ne dovoli zahteve za spajanje, dokler združiti.
#11: Chatops z Errbotom v Pythonu
Zakaj: Glavne poslovne težave niso zmogljivost aplikacije ali celo napake, ki se pojavljajo v kodi. Najresnejše težave nastanejo, ko je komunikacija zaposlenih neučinkovita. Chatops je eden od načinov za rešitev te težave.
- Koncept Chatops: katere težave rešuje Chatops?
- Errbot framework: namestitev, izdelava osnovne predloge vtičnika, konfiguracija in zagon.
- Errbot framework: ustvarjanje lastnega vtičnika za Chatops z različnimi možnostmi za obdelavo sporočil.
Končni projekt
Pregled rokov in zaščita zainteresiranih
Po tečaju boste imeli projekt na Gitu: lahko avtomatizirate svojo delovno nalogo ali naredite eno od predlaganih možnosti.
Končan projekt lahko uporabite kot portfeljski primer in ga pokažete ob prijavi na delovno mesto.