Python inženieriem - kurss 65 000 rub. no Slurm, apmācība 3 mēneši, datums 2024. gada 15. janvāris.
Literārs Mistrojums / / November 27, 2023
Techlead, datu inženieris uzņēmumā Skyeng / ex Slurm, ISPsystem, Grid Dynamics
Sr. Programmatūras inženieris uzņēmumā Test, Auriga, bijušais ISPsystem
#1: Python pamata sintakse un struktūras
Kāpēc: iemācīties izprast Python programmu loģiku, kā arī rakstīt vienkāršas programmas, ir vissvarīgākais uzdevums. “Lieliski”, ja neesat pazīstams ar Python sintaksi.
- Datu tipi un mainīgie, mainīgie/nemainīgie un vienkāršie/saliktie datu tipi, atkļūdošanas metodes.
- Nosacījuma paziņojums - loģiskie operatori, vienkārši nosacījumi, ligzdotie nosacījumi un slēdža priekšraksta aizstāšana.
- Pamatcilpas - while un for cilpas, iteratori, cilpas pārtraukumi.
- Virkņu funkcijas, metodes, sarakstus un vārdnīcas.
- Izņēmumu ģenerēšana un apstrāde.
Prakse: mazu mikrouzdevumu komplekts katrai nodarbībai.
#2: Uzlabota Python prasme: optimizācijas un OOP
Kāpēc: apgūsim Python funkcijas – pateicoties tām, tas ir tik vienkārši un praktiski. Mēs arī atklāsim šo trīs burtu nozīmi (mēs runājam par OOP) bez akadēmiskas teorijas un ar skaidru mērķi
- Padziļināts darbs ar cilpām - ienesīguma paziņojums un ģeneratori, ieskati par cilpām Python, cits paziņojums cilpā, izpratnes cilpu optimizācija utt.
- Īpaši konstrukciju veidi: frozendict, defaultdict utt.
- OOP pamatjēdzieni: klases, klases gadījumi, iekapsulēšana, pārmantošana un polimorfisms.
- Kontekstu pārvaldnieku izveide jūsu tipiem: ar konstruktu.
Prakse: mazu mikrouzdevumu komplekts katrai nodarbībai.
Uzlabotā prakse: pakalpojuma lietošanas audits.
CTO sāka aizdomas, ka komandas vairs neizmanto dažus pakalpojumus. Problēma ir tā, ka izmantoto pakalpojumu uzraudzības modulis pēdējos desmit gadus nav atjaunināts: tā nav var augšupielādēt apkopotus datus, un atgriezto vērtību formāts neatbilst vispārpieņemtajiem standartiem. Jūs esat izvēlēts iegūt tverto metriku, apkopot tos pēc veida un komandas un sniegt šo informāciju CTO sākotnējam problēmas apjoma novērtējumam.
#3: tīkla savienojumi
Kāpēc? Gandrīz katram pakalpojumam ir interfeiss savienojuma izveidei, izmantojot kādu tīkla protokolu. Un bez savienojuma mijiedarbība nav iespējama. Par laimi, Python ekosistēmā ir klienta moduļi gandrīz jebkuram protokolam.
- Pip pakotne un trešo pušu moduļu instalēšana.
- Paramiko modulis komandu izpildei, izmantojot ssh.
- Pieprasījumu modulis HTTP pieprasījumu veikšanai.
- Pārskats par moduļiem darbam ar datu bāzēm un ziņojumu brokeriem.
Prakse. Izstrādes komanda ievieš jaunu metodiku: ja atļausiet brīdinājumu, jūs saņemsit uzdevumu. Analītiskā apakšsistēma meklē tikai atlasītās kļūdas un nosūta ziņojumus par tām Kafka ziņojumu brokerim. Jūsu uzdevums ir pabeigt kļūdu atgriešanas ciklu izstrādātājiem: jūsu patērētājam Trello automātiski jāizveido uzdevumi ar nepieciešamo aprakstu un prioritāti.
Nr. 4: Darbs ar tekstu dažādos formātos
Kāpēc: savienojuma izveide ar pakalpojumu ir tikai puse no panākumiem. Otra puse ir informācijas apmaiņa. Un informācija bieži vien ir teksta rakstzīmju kopa noteiktā formātā. Moduļi palīdzēs jums atšifrēt un kodēt. Vai nevajag visu informāciju? Regulāras izteiksmes palīdzēs izvilkt svarīgo un atmest pārējo.
- Re modulis un regulārās izteiksmes.
- Moduļi darbam ar datiem dažādos formātos: atdalītās vērtības, json, yaml, xml.
- Izmantojot komandrindas argumentus: argparse modulis.
Prakse: pakalpojuma lietošanas datu avota izveide.
Pakalpojumu izmantošanas audita laikā jūs noskaidrojāt uzņēmumam svarīgu informāciju, pat uzņēmuma vadītājs ieinteresējās. Tika nolemts analizēt zaudēto naudu un nepieļaut, ka šādas situācijas atkārtojas. Lai to izdarītu, analītiķiem ir jāiesniedz datu iegūšanas rīks, lai viņi varētu sagatavot pārskatus. Problēma ir tā, ka uzraudzības modulis atgriež pakalpojuma ierobežojumus atsevišķam pieprasījumam yaml formātā, un pakalpojumu cenas atgriež norēķinu sistēma xml formātā. Ir nepieciešams apvienot datus par pašreizējo slodzi ar limitiem un cenām. Analītikas nodaļa pieprasīja apkopotu informāciju JSON formātā ar iespēju norādīt laika intervālu un apkopošanas darbību.
Nr. 5: Mijiedarbība ar operētājsistēmu
Kāpēc? Nav nepieciešams sīkāk paskaidrot, cik svarīgi ir mijiedarboties ar operētājsistēmu. Šajā nodarbībā ir aprakstīts, kā to savienot ar Python.
- Failu lasīšana un rakstīšana.
- os modulis - vides mainīgo lasīšana, darbs ar direktorijiem un tiesībām, darbs ar procesiem.
- Apakšprocesu modulis interaktīvai mijiedarbībai ar procesiem.
Prakse: automātiska piekļuves nodrošināšana serveriem.
Neizmantoto pakalpojumu atteikšanās kampaņas laikā radās kurioza situācija: pārtikas preču serveris komandas tika slēgtas, bet infrastruktūras komanda periodiski to izmantoja kā saimniekdatoru iestudējums. Izrādījās, ka produktu komanda to neizmantoja, jo periodiski kāds pārrakstīja savus iestatījumus ar saviem. Tika nolemts, ka tagad resurss tiks piešķirts tikai vienas komandas dalībniekiem, un automatizācija palīdzēs izvairīties no kļūdām. Jums kā tam, kurš sāka šo putru, ir jāuzraksta aģents, kas periodiski aptaujās tiesību pārvaldības sistēmu un veikt izmaiņas tiesību konfigurācijā instalētajos servisos un, ja nepieciešams, dot pakalpojumiem komandu atkārtoti lasīt konfigurācijas.
Nr. 6: K8S operators Python (tiešraides kodēšanas straume)
13.oktobrī plkst.19:00
Kāpēc: paplašināsim K8S iespējas, lai tās atbilstu jūsu uzdevumiem.
Nr. 7: sava Ansible moduļa rakstīšana
Kāpēc: Ansible ir jaudīga konfigurācijas pārvaldības sistēma, un to var pat paplašināt ar saviem moduļiem. Kāda sakritība, ka tas pats un lielākā daļa moduļu ir rakstīti Python valodā.
- Savu moduļu rakstīšana programmai Ansible.
Prakse: tiesību pārvaldības moduļa rakstīšana.
Jau sen, tālā galaktikā, jūs jau uzrakstījāt aģentu, lai izsniegtu tiesības uz noteiktiem pakalpojumiem. Ir pienācis laiks mainīt vilkšanu pret stumšanu, un Ansible palīdzēs ar to. Viss, kas jums nepieciešams, ir tikai modulis.
Nr. 8: API izveide un lietošanas gadījumi
Kāpēc: koda sagatavošana izvietošanai ir viens no svarīgākajiem uzdevumiem. Mūsu pašu skripti skatuves konveijeriem palīdz padarīt šo procesu elastīgāku un ērtāku.
- REST API izveide programmā Flask.
- Sava Prometheus eksportētāja izveide, izmantojot Prometheus Python Client un Flask.
Prakse: datu augšupielāde trešās puses uzraudzības sistēmā.
Neizmantotās tehnikas izmaksas pārsniedza pat pesimistiskās prognozes. Tagad inženieru komandai ir vēl viena atbildības joma - neizmantoto pakalpojumu uzraudzība. Lai to izdarītu, jums periodiski jāaptauj norēķinu sistēma, izmantojot savu skriptu, un jānodod dati Prometheus. Saņemto datu formāts joprojām nav piemērots. Jums ir jāievieš savienotājs. Un tajā pašā laikā ierakstiet beigu punktu, lai analīzes nodaļai vienmēr būtu pieejama jaunākā informācija JSON formātā.
AMA sesija + NEFORMĀLA tikšanās ar kursa lektoriem
28.oktobrī plkst.19:00
Tiekamies, lai pārrunātu kursu dalībnieku bažas.
#9: lietojumprogrammas API pārbaude
Kāpēc: dažreiz ir labāk, ja nav koda, nevis kods, kas ir nestabils. Lai nebaidītos uzlauzt savu kodu, ir jāraksta testi.
- Testu veidi: vienība, integrācija un end-to-end.
- Pārskats par pyhamcrest moduli un tā piemērotājiem.
- Pytest arhitektūra un iespējas.
- Pytest un pyhamcrest izmantošana vienību testu rakstīšanai.
Prakse: testu rakstīšana, izmantojot pytest un pyhamcrest savai API.
Nr. 10: Mijiedarbība ar CVS un DevOps sistēmām
- Izmantojot trešo pušu moduļus, izmantojot piemēru par integrāciju Gitlab cauruļvados.
- Pygit izmantošana, lai iegūtu informāciju par koda izmaiņām.
Prakse: izmaiņu žurnāla ģenerēšana no saistībām.
Inženieru komandai jūsu risinājumi tik ļoti patika, ka viņi no tiem iedvesmojās un sāka rakstīt savus. Bet cilvēki vienmēr aizmirst uzrakstīt aprakstus izlaidumiem. Lai to panāktu, komanda nolēma ieviest saistību izpildes konvencijas un ģenerēt izmaiņu žurnālus tieši no saistībām, kad sapludinot izstrādes zaru ar izlaiduma filiāli un, ja saistības nosaukums neatbilst izpildes noteikumiem, neatļaut sapludināšanas pieprasījumu līdz plkst. sapludināt.
11. sarunas ar Errbot programmā Python
Kāpēc: galvenās biznesa problēmas ir lietojumprogrammas veiktspējas trūkums vai pat kļūdas kodā. Visnopietnākās problēmas rodas, ja darbinieku komunikācija ir neefektīva. Chatops ir viens no veidiem, kā atrisināt šo problēmu.
- Chatops koncepcija: kādas problēmas Chatops atrisina?
- Errbot ietvars: instalēšana, pamata spraudņa veidnes izveide, konfigurēšana un palaišana.
- Errbot framework: izveidojiet savu Chatops spraudni ar dažādām ziņu apstrādes iespējām.
Nobeiguma projekts
Termiņa pārskatīšana un aizsardzība interesentiem
Pēc kursa jums būs Git projekts: jūs varat automatizēt savu darba uzdevumu vai veikt kādu no piedāvātajām iespējām.
Gatavo projektu var izmantot kā portfolio lietu un parādīt, piesakoties darbam.