Python for ingeniører - kursus 65.000 gnid. fra Slurm, træning 3 måneder, Dato 15. januar 2024.
Miscellanea / / November 27, 2023
Techlead, Data Engineer hos Skyeng / ex Slurm, ISPsystem, Grid Dynamics
Sr. Softwareingeniør i Test, Auriga, ex ISPsystem
#1: Grundlæggende Python-syntaks og -strukturer
Hvorfor: At lære at forstå logikken i Python-programmer, såvel som at skrive simple programmer, er den vigtigste opgave. "Fantastisk", hvis du ikke er bekendt med Python-syntaks.
- Datatyper og variabler, foranderlige/uforanderlige og simple/sammensatte datatyper, fejlfindingsteknikker.
- Betinget sætning - logiske operatorer, simple betingelser, indlejrede betingelser og erstatning af switch-sætning.
- Grundlæggende loops - mens og for loops, iteratorer, loop interrupts.
- Funktioner, metoder til strenge, lister og ordbøger.
- Generering og håndtering af undtagelser.
Øvelse: et sæt små mikroopgaver til hver lektion.
#2: Forbedret Python-færdighed: Optimeringer og OOP
Hvorfor: Lad os mestre funktionerne i Python – det er på grund af dem, at det er så enkelt og praktisk. Vi vil også afsløre betydningen af disse tre bogstaver (vi taler om OOP) uden akademisk teori og med et klart formål
- Avanceret arbejde med loops - yield statement og generatorer, indsigt om loops i Python, ellers statement in a loop, optimering af comprehensions loops mv.
- Særlige typer strukturer: frozendict, defaultdict osv.
- Grundlæggende OOP-begreber: klasser, klasseforekomster, indkapsling, arv og polymorfi.
- Oprettelse af kontekstadministratorer til dine typer: med konstruktionen.
Øvelse: et sæt små mikroopgaver til hver lektion.
Avanceret praksis: Revision af servicebrug.
CTO'en begyndte at mistænke, at nogle tjenester ikke længere blev brugt af holdene. Problemet er, at modulet til overvågning af brugte tjenester ikke er blevet opdateret i de sidste ti år: det gør det ikke kan uploade aggregerede data, og formatet af de returnerede værdier svarer ikke til generelt accepterede standarder. Du er blevet valgt til at udtrække de registrerede metrics, aggregere dem efter type og team og give disse oplysninger til CTO'en for en indledende vurdering af problemets omfang.
#3: Netværksforbindelser
Hvorfor: Næsten alle tjenester har en grænseflade til tilslutning via en eller anden netværksprotokol. Og uden forbindelse er interaktion umulig. Heldigvis har Python-økosystemet klientmoduler til næsten enhver protokol.
- Pip-pakke og installation af tredjepartsmoduler.
- Paramiko-modul til at udføre kommandoer via ssh.
- Anmodningsmodulet til at lave HTTP-anmodninger.
- Oversigt over moduler til at arbejde med databaser og meddelelsesmæglere.
Øve sig. Udviklingsteamet introducerer en ny metode: Hvis du tillader en advarsel, vil du modtage en opgave. Det analytiske undersystem leder kun efter udvalgte fejl og sender beskeder om dem til Kafka-meddelelsesmægleren. Din opgave er at fuldføre cyklussen med at returnere fejl til udviklere: din forbruger skal automatisk oprette opgaver med den nødvendige beskrivelse og prioritet i Trello.
Nr. 4: Arbejde med tekst i forskellige formater
Hvorfor: At oprette forbindelse til tjenesten er kun halvdelen af kampen. Den anden halvdel er informationsdeling. Og information er ofte et sæt teksttegn i et bestemt format. Moduler hjælper dig med at afkode og kode. Har du ikke brug for alle oplysningerne? Regelmæssige udtryk hjælper dig med at udtrække det vigtige og kassere resten.
- Re-modulet og regulære udtryk.
- Moduler til at arbejde med data i forskellige formater: adskilte værdier, json, yaml, xml.
- Brug af kommandolinjeargumenter: argparse-modul.
Øvelse: Oprettelse af en kilde til tjenestebrugsdata.
Under revisionen af brugen af tjenester identificerede du vigtige oplysninger for virksomheden, selv den administrerende direktør blev interesseret. Det blev besluttet at analysere de tabte penge og ikke tillade sådanne situationer at ske igen. For at gøre dette skal du give analytikere et dataindsamlingsværktøj, så de kan udarbejde rapporter. Problemet er, at overvågningsmodulet returnerer servicegrænser for en separat anmodning i yaml-formater, og priser for tjenester returneres af faktureringssystemet i xml-format. Det er nødvendigt at kombinere data om den aktuelle belastning med grænser og priser. Analyseafdelingen anmodede om aggregeret information i JSON-format med mulighed for at specificere et tidsinterval og aggregeringstrin.
Nr. 5: Interaktion med styresystemet
Hvorfor: Vigtigheden af at interagere med operativsystemet behøver ikke at blive forklaret yderligere. Hvordan man forbinder det med Python er i denne lektion.
- Læse og skrive filer.
- os modul - læse miljøvariabler, arbejde med mapper og rettigheder, arbejde med processer.
- Delprocesmodulet til interaktiv interaktion med processer.
Praksis: automatisk levering af adgang til servere.
Under kampagnen for at opgive ubrugte tjenester opstod en mærkelig situation: en dagligvareserver teams lukkede ned, men infrastrukturteamet brugte det periodisk som vært for iscenesættelse. Det viste sig, at produktteamet ikke brugte det, fordi nogen med jævne mellemrum ville overskrive deres indstillinger med deres egne. Det blev besluttet, at nu vil ressourcen kun blive tildelt til medlemmer af et team, og automatisering vil hjælpe med at undgå fejl. Du, som den, der startede dette rod, skal skrive en agent, der med jævne mellemrum vil spørge rettighedsstyringssystemet og foretage ændringer i konfigurationen af rettigheder inden for installerede tjenester og om nødvendigt give tjenesterne en kommando om at genlæse konfigurationer.
Nr. 6: K8S-operatør i Python (live-kodning stream)
13. oktober klokken 19.00
Hvorfor: lad os udvide K8S's muligheder, så de passer til dine opgaver.
Nr. 7: At skrive vores eget modul til Ansible
Hvorfor: Ansible er et kraftfuldt konfigurationsstyringssystem, som endda kan udvides med sine egne moduler. Sikke et tilfælde, at det selv og de fleste af modulerne er skrevet i Python.
- At skrive dine egne moduler til Ansible.
Praksis: at skrive et rettighedsstyringsmodul.
For lang tid siden, i en galakse langt, langt væk, skrev du allerede en agent for at udstede rettigheder til visse tjenester. Det er tid til at ændre pull til push, og Ansible vil hjælpe med dette. Alt du behøver er blot et modul.
Nr. 8: Oprettelse og brug af dit API
Hvorfor: Forberedelse af kode til implementering er en af de vigtigste opgaver. Vores egne scripts til scenepipelines hjælper med at gøre denne proces mere fleksibel og bekvem.
- Oprettelse af en REST API i Flask.
- Oprettelse af din egen prometheus-eksportør med Prometheus Python Client og Flask.
Praksis: uploade data til et tredjeparts overvågningssystem.
Udgifterne til ubrugt udstyr oversteg selv pessimistiske prognoser. Nu har ingeniørteamet et andet ansvarsområde - overvågning af ubrugte tjenester. For at gøre dette skal du med jævne mellemrum polle faktureringssystemet gennem dit script og videregive dataene til Prometheus. Formatet på de modtagne data er stadig ikke egnet. Du skal implementere en forbindelse. Og skriv samtidig et slutpunkt, så analyseafdelingen altid har opdateret information i JSON-format ved hånden.
AMA session + UFORMELT møde med kursusoplægsholdere
28. oktober klokken 19.00
Vi mødes for at diskutere kursdeltagernes bekymringer.
#9: Test af din applikations API
Hvorfor: Nogle gange er det bedre ikke at have nogen kode end kode, der er ustabil. For ikke at være bange for at knække din kode, skal du skrive test.
- Typer af test: enhed, integration og ende-til-ende.
- Oversigt over pyhamcrest-modulet og dets matchere.
- Arkitektur og muligheder for pytest.
- Brug af pytest og pyhamcrest til at skrive enhedstests.
Øv: at skrive test ved hjælp af pytest og pyhamcrest til din API.
Nr. 10: Interaktion med CVS og DevOps systemer
- Brug af tredjepartsmoduler ved hjælp af eksemplet med integration i Gitlab-pipelines.
- Brug af pygit til at få information om kodeændringer.
Øv: Generering af en ændringslog fra commits.
Ingeniørteamet kunne lide dine løsninger så meget, at de blev inspireret af dem og begyndte at skrive deres egne. Men folk glemmer altid at skrive beskrivelser til udgivelser. For at opnå dette besluttede teamet at implementere commit-konventioner og generere changelogs direkte fra commits når fletning af dev-grenen med udgivelses-en, og hvis navnet på commit ikke overholder commit-konventioner, tillad ikke merge-anmodning før fusionere.
#11: Chatops med Errbot i Python
Hvorfor: De vigtigste forretningsproblemer er ikke applikationsydelse eller endda fejl i koden. De alvorligste problemer opstår, når medarbejderkommunikation er ineffektiv. Chatops er en måde at løse dette problem på.
- Chatops koncept: hvilke problemer løser Chatops?
- Errbot-ramme: installation, oprettelse af en grundlæggende plugin-skabelon, konfiguration og lancering.
- Errbot framework: Opret dit eget plugin til Chatops med forskellige muligheder for at behandle beskeder.
Afsluttende projekt
Deadline gennemgang og beskyttelse for interesserede
Efter kurset vil du have et projekt om Git: du kan automatisere din arbejdsopgave eller lave en af de foreslåede muligheder.
Det færdige projekt kan bruges som portfolio case og vises ved jobsøgning.