Python pentru ingineri - curs 65.000 de ruble. din Slurm, antrenament 3 luni, Data 15 ianuarie 2024.
Miscelaneu / / November 27, 2023
Techlead, Data Engineer la Skyeng / ex Slurm, ISPsystem, Grid Dynamics
Sr. Inginer software in Test, Auriga, ex ISPsystem
#1: Sintaxa și structurile Python de bază
De ce: a învăța să înțelegeți logica programelor Python, precum și a scrie programe simple, este cea mai importantă sarcină. „Genial” dacă nu sunteți familiarizat cu sintaxa Python.
- Tipuri de date și variabile, tipuri de date mutabile/imuabile și simple/compozite, tehnici de depanare.
- Declarație condiționată - operatori logici, condiții simple, condiții imbricate și înlocuirea instrucțiunii switch.
- Bucle de bază - bucle while și for, iteratoare, întreruperi de buclă.
- Funcții, metode de șiruri, liste și dicționare.
- Generarea și gestionarea excepțiilor.
Practică: un set de microsarcini mici pentru fiecare lecție.
#2: Îmbunătățirea competenței Python: Optimizări și OOP
De ce: Să stăpânim caracteristicile Python - datorită lor este atât de simplu și practic. Vom dezvălui și semnificația acelor trei litere (vorbim despre POO) fără teorie academică și cu un scop clar
- Lucru avansat cu bucle - declarație de randament și generatoare, informații despre bucle în Python, declarație else într-o buclă, optimizarea buclelor de înțelegere etc.
- Tipuri speciale de structuri: frozendict, defaultdict etc.
- Concepte de bază OOP: clase, instanțe de clasă, încapsulare, moștenire și polimorfism.
- Crearea de manageri de context pentru tipurile dvs.: the with construct.
Practică: un set de microsarcini mici pentru fiecare lecție.
Practică avansată: auditul utilizării serviciului.
CTO a început să bănuiască că unele servicii nu mai erau folosite de echipe. Problema este că modulul de monitorizare a serviciilor utilizate nu a fost actualizat în ultimii zece ani: nu poate încărca date agregate, iar formatul valorilor returnate nu corespunde cu cele general acceptate standardele. Ați fost ales să extrageți valorile capturate, să le agregați după tip și echipă și să furnizați aceste informații CTO pentru o evaluare inițială a sferei problemei.
#3: Conexiuni de rețea
De ce: Aproape fiecare serviciu are o interfață pentru conectarea prin intermediul unui protocol de rețea. Și fără conexiune, interacțiunea este imposibilă. Din fericire, ecosistemul Python are module client pentru aproape orice protocol.
- Pachetul Pip și instalarea modulelor terțe.
- Modul Paramiko pentru executarea comenzilor prin ssh.
- Modulul de cereri pentru efectuarea de cereri HTTP.
- Prezentare generală a modulelor pentru lucrul cu baze de date și brokeri de mesaje.
Practică. Echipa de dezvoltare introduce o nouă metodologie: dacă permiteți să apară o alertă, veți primi o sarcină. Subsistemul analitic caută doar erorile selectate și trimite mesaje despre acestea către brokerul de mesaje Kafka. Sarcina dvs. este să finalizați ciclul de returnare a erorilor către dezvoltatori: consumatorul dvs. ar trebui să creeze automat sarcini cu descrierea și prioritate necesare în Trello.
Nr. 4: Lucrul cu text în diverse formate
De ce: conectarea la serviciu este doar jumătate din luptă. Cealaltă jumătate este schimbul de informații. Iar informațiile sunt adesea un set de caractere text într-un anumit format. Modulele vă vor ajuta să decodați și să codificați. Nu aveți nevoie de toate informațiile? Expresiile regulate vă vor ajuta să extrageți ceea ce este important și să renunțați la restul.
- Modulul re și expresiile regulate.
- Module pentru lucrul cu date în diferite formate: valori separate, json, yaml, xml.
- Utilizarea argumentelor liniei de comandă: modulul argparse.
Practică: Crearea unei surse de date privind utilizarea serviciului.
În timpul auditului privind utilizarea serviciilor, ați identificat informații importante pentru afacere, chiar și CEO-ul a devenit interesat. S-a decis să se analizeze banii pierduți și să nu se mai permită astfel de situații să se repete. Pentru a face acest lucru, trebuie să oferiți analiștilor un instrument de achiziție de date, astfel încât să poată pregăti rapoarte. Problema este că modulul de monitorizare returnează limitele serviciului pentru o cerere separată în formate yaml, iar prețurile pentru servicii sunt returnate de sistemul de facturare în format xml. Este necesar să combinați datele despre sarcina curentă cu limite și prețuri. Departamentul de analiză a solicitat informații agregate în format JSON cu posibilitatea de a specifica un interval de timp și un pas de agregare.
Nr. 5: Interacțiunea cu sistemul de operare
De ce: importanța interacțiunii cu sistemul de operare nu trebuie explicată în continuare. Cum să-l conectați cu Python este în această lecție.
- Citirea și scrierea fișierelor.
- modul os - citirea variabilelor de mediu, lucrul cu directoare și drepturi, lucrul cu procese.
- Modulul subproces pentru interacțiunea interactivă cu procesele.
Practică: asigurarea automată a accesului la servere.
În cadrul campaniei de abandonare a serviciilor neutilizate a apărut o situație curioasă: un server de băcănie echipele se închid, dar echipa de infrastructură îl folosea periodic ca gazdă pentru punerea în scenă. S-a dovedit că echipa de produs nu l-a folosit pentru că periodic cineva își suprascriea setările cu ale lor. S-a decis ca acum resursa să fie atribuită doar membrilor unei echipe, iar automatizarea va ajuta la evitarea greșelilor. Tu, ca cel care a început această mizerie, trebuie să scrii un agent care va sonda periodic sistemul de gestionare a drepturilor și efectuați modificări în configurația drepturilor în cadrul serviciilor instalate și, dacă este necesar, dați serviciilor o comandă de recitit configuratii.
Nr. 6: operator K8S în Python (flux de codare live)
13 octombrie ora 19:00
De ce: haideți să extindem capacitățile K8S pentru a se potrivi sarcinilor dvs.
Nr. 7: Scrierea propriului nostru modul pentru Ansible
De ce: Ansible este un sistem puternic de gestionare a configurației și chiar extins cu module proprii. Ce coincidență că el însuși și majoritatea modulelor sunt scrise în Python.
- Scrierea propriilor module pentru Ansible.
Practică: scrierea unui modul de gestionare a drepturilor.
Cu mult timp în urmă, într-o galaxie departe, departe, ai scris deja unui agent să emită drepturi pentru anumite servicii. Este timpul să schimbați tragerea în împingere și Ansible vă va ajuta în acest sens. Tot ce ai nevoie este doar un modul.
Nr. 8: Crearea și cazurile de utilizare ale API-ului dvs
De ce: Pregătirea codului pentru implementare este una dintre cele mai importante sarcini. Propriile noastre scripturi pentru conductele de etapă ajută la realizarea acestui proces mai flexibil și mai convenabil.
- Crearea unui API REST în Flask.
- Crearea propriului exportator prometheus cu Prometheus Python Client și Flask.
Practică: încărcarea datelor într-un sistem de monitorizare terță parte.
Costurile echipamentelor nefolosite au depășit chiar și previziunile pesimiste. Acum echipa de ingineri are o altă zonă de responsabilitate - monitorizarea serviciilor neutilizate. Pentru a face acest lucru, trebuie să interogați periodic sistemul de facturare prin intermediul scriptului și să transmiteți datele lui Prometheus. Formatul datelor primite nu este încă potrivit. Trebuie să implementați un conector. Și, în același timp, scrieți un punct final, astfel încât departamentul de analiză să aibă întotdeauna la îndemână informații actualizate în format JSON.
Sesiune AMA + întâlnire INFORMAlă cu vorbitorii de curs
28 octombrie ora 19:00
Ne întâlnim pentru a discuta preocupările participanților la curs.
#9: Testarea API-ului aplicației dvs
De ce: uneori este mai bine să nu ai cod decât un cod instabil. Pentru a nu vă teme să vă spargeți codul, trebuie să scrieți teste.
- Tipuri de teste: unitare, de integrare și end-to-end.
- Prezentare generală a modulului pyhamcrest și a potrivirilor acestuia.
- Arhitectura și capabilitățile pytest.
- Folosind pytest și pyhamcrest pentru a scrie teste unitare.
Practică: scrieți teste folosind pytest și pyhamcrest pentru API-ul dvs.
Nr. 10: Interacțiunea cu sistemele CVS și DevOps
- Utilizarea modulelor terțe utilizând exemplul de integrare în conductele Gitlab.
- Folosind pygit pentru a obține informații despre modificările codului.
Practică: generarea unui jurnal de modificări din comiteri.
Echipa de ingineri i-au plăcut atât de mult soluțiile tale încât s-au inspirat de ele și au început să le scrie pe ale lor. Dar oamenii uită întotdeauna să scrie descrieri pentru lansări. Pentru a realiza acest lucru, echipa a decis să implementeze convențiile de comitere și să genereze jurnalele de modificări direct din comiteri când îmbinând ramura dev cu cea de lansare, iar dacă numele commit-ului nu respectă convențiile de commit, nu permiteți cererea de îmbinare până când combina.
#11: Chatops cu Errbot în Python
De ce: Principalele probleme de afaceri nu sunt performanța aplicației sau chiar erorile care apar în cod. Cele mai grave probleme apar atunci când comunicarea cu angajații este ineficientă. Chatops este o modalitate de a rezolva această problemă.
- Conceptul Chatops: ce probleme rezolvă Chatops?
- Cadru Errbot: instalare, crearea unui șablon de plugin de bază, configurare și lansare.
- Frame Errbot: crearea propriului plugin pentru Chatops cu diverse opțiuni pentru procesarea mesajelor.
Proiect final
Revizuirea termenului limită și protecție pentru cei interesați
După curs, vei avea un proiect pe Git: poți să-ți automatizezi sarcina de lucru sau să faci una dintre opțiunile propuse.
Proiectul finalizat poate fi folosit ca un caz de portofoliu și afișat atunci când aplicați pentru un loc de muncă.