Python for ingeniører - kurs 65 000 gni. fra Slurm, trening 3 måneder, Dato 15. januar 2024.
Miscellanea / / November 27, 2023
Techlead, dataingeniør hos Skyeng / ex Slurm, ISPsystem, Grid Dynamics
Sr. Programvareingeniør i Test, Auriga, ex ISPsystem
#1: Grunnleggende Python-syntaks og -strukturer
Hvorfor: lære å forstå logikken i Python-programmer, samt å skrive enkle programmer, er den viktigste oppgaven. "Flott" hvis du ikke er kjent med Python-syntaks.
- Datatyper og variabler, mutbare/uforanderlige og enkle/sammensatte datatyper, feilsøkingsteknikker.
- Betinget setning - logiske operatorer, enkle betingelser, nestede betingelser og bytte setningserstatning.
- Grunnleggende looper - mens og for looper, iteratorer, loop-avbrudd.
- Funksjoner, metoder for strenger, lister og ordbøker.
- Generering og håndtering av unntak.
Øv: et sett med små mikrooppgaver for hver leksjon.
#2: Forbedret Python-ferdighet: Optimaliseringer og OOP
Hvorfor: La oss mestre funksjonene til Python – det er på grunn av dem at det er så enkelt og praktisk. Vi vil også avsløre betydningen av disse tre bokstavene (vi snakker om OOP) uten akademisk teori og med en klar hensikt
- Avansert arbeid med loops - yield statement og generatorer, innsikt om loops i Python, else statement in a loop, optimalisering av forståelseslooper, etc.
- Spesielle typer strukturer: frozendict, defaultdict, etc.
- Grunnleggende OOP-konsepter: klasser, klasseforekomster, innkapsling, arv og polymorfisme.
- Opprette kontekstadministratorer for typene dine: med-konstruksjonen.
Øv: et sett med små mikrooppgaver for hver leksjon.
Avansert praksis: Revisjon av tjenestebruk.
CTO begynte å mistenke at noen tjenester ikke lenger ble brukt av teamene. Problemet er at modulen for overvåking av brukte tjenester ikke har blitt oppdatert de siste ti årene: det gjør den ikke kan laste opp aggregerte data, og formatet til de returnerte verdiene samsvarer ikke med generelt aksepterte standarder. Du har blitt valgt til å trekke ut de fangede beregningene, aggregere dem etter type og team, og gi denne informasjonen til CTO for en første vurdering av omfanget av problemet.
#3: Nettverkstilkoblinger
Hvorfor: Nesten hver tjeneste har et grensesnitt for tilkobling via en eller annen nettverksprotokoll. Og uten tilknytning er interaksjon umulig. Heldigvis har Python-økosystemet klientmoduler for nesten alle protokoller.
- Pip-pakke og installering av tredjepartsmoduler.
- Paramiko-modul for å utføre kommandoer via ssh.
- Forespørselsmodulen for å lage HTTP-forespørsler.
- Oversikt over moduler for arbeid med databaser og meldingsmeglere.
Øve på. Utviklingsteamet introduserer en ny metodikk: Hvis du lar et varsel oppstå, vil du motta en oppgave. Det analytiske undersystemet ser kun etter utvalgte feil og sender meldinger om dem til Kafka-meldingsmegleren. Din oppgave er å fullføre syklusen med å returnere feil til utviklere: forbrukeren din bør automatisk opprette oppgaver med den nødvendige beskrivelsen og prioritet i Trello.
Nr. 4: Arbeide med tekst i ulike formater
Hvorfor: Å koble til tjenesten er bare halve kampen. Den andre halvparten er informasjonsdeling. Og informasjon er ofte et sett med teksttegn i et bestemt format. Moduler vil hjelpe deg med å dekode og kode. Trenger du ikke all informasjonen? Regelmessige uttrykk vil hjelpe deg å trekke ut det som er viktig og forkaste resten.
- Re-modulen og regulære uttrykk.
- Moduler for arbeid med data i forskjellige formater: separerte verdier, json, yaml, xml.
- Bruke kommandolinjeargumenter: argparse-modul.
Praksis: Opprette en kilde for tjenestebruksdata.
Under revisjonen av bruken av tjenester identifiserte du viktig informasjon for virksomheten, selv administrerende direktør ble interessert. Det ble besluttet å analysere de tapte pengene og ikke la slike situasjoner skje igjen. For å gjøre dette må du gi analytikere et datainnsamlingsverktøy slik at de kan utarbeide rapporter. Problemet er at overvåkingsmodulen returnerer tjenestegrenser for en separat forespørsel i yaml-formater, og priser for tjenester returneres av faktureringssystemet i xml-format. Det er nødvendig å kombinere data om gjeldende belastning med grenser og priser. Analyseavdelingen ba om aggregert informasjon i JSON-format med muligheten til å spesifisere et tidsintervall og aggregeringstrinn.
nr. 5: Interaksjon med operativsystemet
Hvorfor: Viktigheten av å samhandle med operativsystemet trenger ikke å forklares nærmere. Hvordan koble den til Python er i denne leksjonen.
- Lese og skrive filer.
- os-modul - lesing av miljøvariabler, arbeid med kataloger og rettigheter, arbeid med prosesser.
- Delprosessmodulen for interaktiv interaksjon med prosesser.
Praksis: automatisk tilgang til servere.
Under kampanjen for å forlate ubrukte tjenester, oppsto en merkelig situasjon: en dagligvareserver lag stengte, men infrastrukturteamet brukte det med jevne mellomrom som vert for iscenesettelse. Det viste seg at produktteamet ikke brukte det fordi noen med jevne mellomrom ville overskrive innstillingene sine med sine egne. Det ble bestemt at nå skal ressursen bare tildeles medlemmer av ett team, og automatisering vil bidra til å unngå feil. Du, som den som startet dette rotet, må skrive en agent som med jevne mellomrom vil spørre rettighetsstyringssystemet og foreta endringer i konfigurasjonen av rettigheter innenfor installerte tjenester og om nødvendig gi tjenestene en kommando om å lese på nytt konfigurasjoner.
Nr. 6: K8S-operatør i Python (live-kodingsstrøm)
13. oktober kl 19:00
Hvorfor: la oss utvide mulighetene til K8S for å passe dine oppgaver.
Nr. 7: Å skrive vår egen modul for Ansible
Hvorfor: Ansible er et kraftig system for konfigurasjonsadministrasjon, og kan til og med utvides med sine egne moduler. For en tilfeldighet at det selv og de fleste modulene er skrevet i Python.
- Skrive dine egne moduler for Ansible.
Praksis: å skrive en rettighetsstyringsmodul.
For lenge siden, i en galakse langt, langt unna, skrev du allerede en agent for å utstede rettigheter til visse tjenester. Det er på tide å endre pull til push og Ansible vil hjelpe med dette. Alt du trenger er bare en modul.
Nr. 8: Oppretting og bruk av API-en din
Hvorfor: Å forberede kode for distribusjon er en av de viktigste oppgavene. Våre egne skript for scenepipelines bidrar til å gjøre denne prosessen mer fleksibel og praktisk.
- Opprette en REST API i Flask.
- Opprett din egen prometheus-eksportør med Prometheus Python Client and Flask.
Praksis: laste opp data til et tredjeparts overvåkingssystem.
Kostnadene for ubrukt utstyr oversteg selv pessimistiske prognoser. Nå har ingeniørteamet et annet ansvarsområde - overvåking av ubrukte tjenester. For å gjøre dette, må du periodisk spørre faktureringssystemet gjennom skriptet ditt og sende dataene til Prometheus. Formatet på de mottatte dataene er fortsatt ikke egnet. Du må implementere en kobling. Og skriv samtidig et endepunkt slik at analyseavdelingen alltid har oppdatert informasjon i JSON-format for hånden.
AMA-økt + UFORMELLT møte med kursholdere
28. oktober kl 19:00
Vi møtes for å diskutere bekymringer til kursdeltakerne.
#9: Tester applikasjonens API
Hvorfor: Noen ganger er det bedre å ikke ha noen kode enn kode som er ustabil. For ikke å være redd for å knekke koden din, må du skrive tester.
- Typer tester: enhet, integrasjon og ende-til-ende.
- Oversikt over pyhamcrest-modulen og dens matchere.
- Arkitektur og evner til pytest.
- Bruke pytest og pyhamcrest til å skrive enhetstester.
Øv: å skrive tester med pytest og pyhamcrest for API-en din.
Nr. 10: Interaksjon med CVS- og DevOps-systemer
- Bruke tredjepartsmoduler ved å bruke eksempelet på integrasjon i Gitlab-rørledninger.
- Bruker pygit for å få informasjon om kodeendringer.
Øv: generere en endringslogg fra forpliktelser.
Ingeniørteamet likte løsningene dine så godt at de ble inspirert av dem og begynte å skrive sine egne. Men folk glemmer alltid å skrive beskrivelser for utgivelser. For å oppnå dette bestemte teamet seg for å implementere commit-konvensjoner og generere endringslogger direkte fra commits når slå sammen dev-grenen med utgivelsen, og hvis navnet på forpliktelsen ikke samsvarer med forpliktelseskonvensjonene, ikke tillat sammenslåingsforespørsel før slå sammen.
#11: Chatops med Errbot i Python
Hvorfor: De viktigste forretningsproblemene er ikke applikasjonsytelse eller til og med feil som oppstår i koden. De alvorligste problemene oppstår når kommunikasjon med ansatte er ineffektiv. Chatops er en måte å løse dette problemet på.
- Chatops-konsept: hvilke problemer løser Chatops?
- Errbot-rammeverk: installasjon, opprettelse av en grunnleggende plugin-mal, konfigurasjon og lansering.
- Errbot-rammeverk: lag ditt eget plugin for Chatops med ulike alternativer for å behandle meldinger.
Siste prosjekt
Frist gjennomgang og beskyttelse for interesserte
Etter kurset vil du ha et prosjekt om Git: du kan automatisere arbeidsoppgaven din eller gjøre et av de foreslåtte alternativene.
Det ferdige prosjektet kan brukes som porteføljecase og vises ved søknad om jobb.