Python za inženjere - tečaj 65 000 rub. iz Slurma, obuka 3 mjeseca, Datum 15.01.2024.
Miscelanea / / November 27, 2023
Techlead, Data Engineer u Skyeng / ex Slurm, ISPsystem, Grid Dynamics
Sr. Softverski inženjer u Testu, Auriga, bivši ISPsystem
#1: Osnovna sintaksa i strukture Pythona
Zašto: naučiti razumjeti logiku Python programa, kao i pisanje jednostavnih programa, najvažniji je zadatak. "Odlično" ako niste upoznati sa sintaksom Pythona.
- Tipovi podataka i varijable, promjenjivi/nepromjenjivi i jednostavni/kompozitni tipovi podataka, tehnike otklanjanja pogrešaka.
- Uvjetna naredba - logički operatori, jednostavni uvjeti, ugniježđeni uvjeti i zamjena naredbe switch.
- Osnovne petlje - while i for petlje, iteratori, prekidi petlje.
- Funkcije, metode nizova, popisi i rječnici.
- Generiranje i rukovanje iznimkama.
Vježbajte: niz malih mikrozadataka za svaku lekciju.
#2: Poboljšano poznavanje Pythona: Optimizacije i OOP
Zašto: Svladajmo značajke Pythona - zahvaljujući njima je tako jednostavan i praktičan. Otkrit ćemo i značenje ta tri slova (govorimo o OOP-u) bez akademske teorije i s jasnom svrhom
- Napredni rad s petljama - yield naredba i generatori, uvidi u petlje u Pythonu, else naredba u petlji, optimizacija razumijevanja petlji itd.
- Posebne vrste struktura: frozendict, defaultdict itd.
- Osnovni OOP koncepti: klase, instance klasa, enkapsulacija, nasljeđivanje i polimorfizam.
- Stvaranje upravitelja konteksta za vaše tipove: konstrukcija with.
Vježbajte: niz malih mikrozadataka za svaku lekciju.
Napredna praksa: revizija korištenja usluge.
CTO je počeo sumnjati da timovi više ne koriste neke usluge. Problem je što modul za praćenje korištenih usluga nije ažuriran zadnjih desetak godina: nema može učitati agregirane podatke, a format vraćenih vrijednosti ne odgovara općeprihvaćenim standardima. Odabrani ste da izdvojite snimljene metrike, agregirate ih prema vrsti i timu i date te informacije CTO-u za početnu procjenu opsega problema.
#3: Mrežne veze
Zašto: Gotovo svaki servis ima sučelje za povezivanje putem nekog mrežnog protokola. A bez povezanosti interakcija je nemoguća. Srećom, Python ekosustav ima klijentske module za gotovo sve protokole.
- Pip paket i instaliranje modula treće strane.
- Paramiko modul za izvršavanje naredbi putem ssh-a.
- Modul zahtjeva za izradu HTTP zahtjeva.
- Pregled modula za rad s bazama podataka i brokerima poruka.
Praksa. Razvojni tim uvodi novu metodologiju: ako dopustite da se pojavi upozorenje, dobit ćete zadatak. Analitički podsustav traži samo odabrane greške i šalje poruke o njima Kafka brokeru poruka. Vaš zadatak je dovršiti ciklus vraćanja bugova programerima: vaš bi korisnik trebao automatski kreirati zadatke sa potrebnim opisom i prioritetom u Trellu.
Br. 4: Rad s tekstom u različitim formatima
Zašto: Povezivanje s uslugom samo je pola uspjeha. Druga polovica je razmjena informacija. A informacija je često skup tekstualnih znakova u određenom formatu. Moduli će vam pomoći u dekodiranju i kodiranju. Ne trebaju vam sve informacije? Regularni izrazi pomoći će vam da izdvojite ono što je važno i odbacite ostalo.
- Re modul i regularni izrazi.
- Moduli za rad s podacima u različitim formatima: odvojene vrijednosti, json, yaml, xml.
- Korištenje argumenata naredbenog retka: argparse modul.
Praksa: Stvaranje izvora podataka o korištenju usluge.
Tijekom revizije korištenja usluga identificirali ste važne informacije za poslovanje, zainteresirao se čak i direktor. Odlučeno je analizirati izgubljeni novac i ne dopustiti da se ovakve situacije ponove. Da biste to učinili, analitičarima morate dati alat za prikupljanje podataka kako bi mogli pripremati izvješća. Problem je u tome što nadzorni modul vraća limite usluga za poseban zahtjev u yaml formatu, a cijene usluga sustav naplate vraća u xml formatu. Potrebno je objediniti podatke o trenutnom opterećenju s limitima i cijenama. Odjel za analitiku zatražio je agregirane informacije u JSON formatu s mogućnošću određivanja vremenskog intervala i koraka agregacije.
Br. 5: Interakcija s operativnim sustavom
Zašto: važnost interakcije s operativnim sustavom ne treba dodatno objašnjavati. Kako ga povezati s Pythonom je u ovoj lekciji.
- Čitanje i pisanje datoteka.
- os modul - čitanje varijabli okruženja, rad s imenicima i pravima, rad s procesima.
- Modul potprocesa za interaktivnu interakciju s procesima.
Praksa: automatsko osiguranje pristupa poslužiteljima.
Tijekom kampanje za napuštanje neiskorištenih usluga pojavila se zanimljiva situacija: poslužitelj za trgovinu namirnicama timovi ugašeni, ali ga je infrastrukturni tim povremeno koristio kao host za uprizorenje. Ispostavilo se da ga proizvodni tim nije koristio jer bi povremeno netko prebrisao njihove postavke svojima. Odlučeno je da će sada resurs biti dodijeljen samo članovima jednog tima, a automatizacija će pomoći u izbjegavanju pogrešaka. Vi, kao onaj koji je započeo ovu zbrku, trebate napisati agenta koji će povremeno provjeravati sustav upravljanja pravima i napraviti promjene u konfiguraciji prava unutar instaliranih usluga i, ako je potrebno, dati uslugama naredbu za ponovno čitanje konfiguracije.
Br. 6: K8S operator u Pythonu (stream kodiranja uživo)
13. listopada u 19 sati
Zašto: proširimo mogućnosti K8S kako bi odgovarao vašim zadacima.
Br. 7: Pisanje vlastitog modula za Ansible
Zašto: Ansible je moćan sustav za upravljanje konfiguracijom, koji se čak može proširiti vlastitim modulima. Kakva slučajnost da su on sam i većina modula napisani u Pythonu.
- Pisanje vlastitih modula za Ansible.
Praksa: pisanje modula za upravljanje pravima.
Davno, u dalekoj, dalekoj galaksiji, već ste napisali agenta za izdavanje prava na određene usluge. Vrijeme je da promijenite pull u push i Ansible će vam pomoći u tome. Sve što trebate je samo modul.
Br. 8: Stvaranje i slučajevi korištenja vašeg API-ja
Zašto: priprema koda za implementaciju jedan je od najvažnijih zadataka. Naše vlastite skripte za fazne cjevovode pomažu da ovaj proces bude fleksibilniji i praktičniji.
- Stvaranje REST API-ja u Flasku.
- Stvaranje vlastitog prometheus izvoznika s Prometheus Python klijentom i Flaskom.
Praksa: učitavanje podataka u nadzorni sustav treće strane.
Troškovi neiskorištene opreme premašili su čak i pesimistična predviđanja. Sada inženjerski tim ima još jedno područje odgovornosti - praćenje neiskorištenih usluga. Da biste to učinili, morate povremeno ispitivati sustav naplate putem svoje skripte i proslijediti podatke Prometheusu. Format primljenih podataka još uvijek nije odgovarajući. Morate implementirati konektor. I u isto vrijeme napišite krajnju točku kako bi analitički odjel uvijek imao pri ruci ažurne informacije u JSON formatu.
AMA sesija + NEFORMALNI sastanak s govornicima tečaja
28. listopada u 19 sati
Sastajemo se kako bismo razgovarali o problemima polaznika tečaja.
#9: Testiranje API-ja vaše aplikacije
Zašto: Ponekad je bolje nemati kod nego kod koji je nestabilan. Kako se ne biste bojali razbijanja koda, morate pisati testove.
- Vrste testova: jedinični, integracijski i end-to-end.
- Pregled modula pyhamcrest i njegovih podudaranja.
- Arhitektura i mogućnosti pytesta.
- Korištenje pytesta i pyhamcresta za pisanje jediničnih testova.
Vježbajte: pisanje testova koristeći pytest i pyhamcrest za vaš API.
Br. 10: Interakcija sa CVS i DevOps sustavima
- Korištenje modula treće strane na primjeru integracije u Gitlab cjevovode.
- Korištenje pygita za dobivanje informacija o promjenama koda.
Vježbajte: generiranje dnevnika promjena iz obveza.
Inženjerskom timu toliko su se svidjela vaša rješenja da su bili inspirirani njima i počeli su pisati vlastita. Ali ljudi uvijek zaborave napisati opise za izdanja. Kako bi to postigao, tim je odlučio implementirati konvencije o predaji i generirati zapisnike promjena izravno iz obveza kada spajanje razvojne grane s onom za izdanje, a ako naziv urezivanja nije u skladu s konvencijama urezivanja, nemojte dopustiti zahtjev za spajanje dok sjediniti.
#11: Chatops s Errbotom u Pythonu
Zašto: glavni poslovni problemi nisu performanse aplikacije ili čak greške koje se pojavljuju u kodu. Najozbiljniji problemi nastaju kada je komunikacija zaposlenika neučinkovita. Chatops je jedan od načina za rješavanje ovog problema.
- Chatops koncept: koje probleme rješava Chatops?
- Errbot okvir: instalacija, izrada osnovnog predloška dodatka, konfiguracija i pokretanje.
- Errbot framework: kreiranje vlastitog dodatka za Chatops s raznim opcijama za obradu poruka.
Završni projekt
Pregled rokova i zaštita za zainteresirane
Nakon tečaja imat ćete projekt na Gitu: možete automatizirati svoj radni zadatak ili napraviti jednu od predloženih opcija.
Gotov projekt može se koristiti kao portfolio case i prikazati prilikom prijave za posao.