Python dla inżynierów - kurs 65 000 rub. ze Slurm, szkolenie 3 miesiące, data 15 stycznia 2024 r.
Miscellanea / / November 27, 2023
Techlead, inżynier danych w Skyeng / ex Slurm, ISPsystem, Grid Dynamics
senior Inżynier oprogramowania w Test, Auriga, były ISPsystem
#1: Podstawowa składnia i struktury Pythona
Dlaczego: nauka rozumienia logiki programów w Pythonie, a także pisanie prostych programów, to najważniejsze zadanie. „Świetnie”, jeśli nie znasz składni Pythona.
- Typy danych i zmienne, zmienne/niezmienne i proste/złożone typy danych, techniki debugowania.
- Instrukcja warunkowa - operatory logiczne, warunki proste, warunki zagnieżdżone i zamiana instrukcji switch.
- Podstawowe pętle - pętle while i for, iteratory, przerwania pętli.
- Funkcje, metody ciągów znaków, listy i słowniki.
- Generowanie i obsługa wyjątków.
Przećwicz: zestaw małych mikrozadań do każdej lekcji.
#2: Poprawiona biegłość w Pythonie: optymalizacje i OOP
Dlaczego: Opanujmy możliwości Pythona – to dzięki nim jest on tak prosty i praktyczny. Odkryjemy także znaczenie tych trzech liter (mówimy o OOP) bez akademickiej teorii i z jasnym celem
- Zaawansowana praca z pętlami - instrukcja Yield i generatory, informacje o pętlach w Pythonie, instrukcja else w pętli, optymalizacja pętli wyrażeń itp.
- Specjalne typy struktur: mrożony, domyślny, itp.
- Podstawowe pojęcia OOP: klasy, instancje klas, enkapsulacja, dziedziczenie i polimorfizm.
- Tworzenie menedżerów kontekstu dla swoich typów: konstrukcja with.
Przećwicz: zestaw małych mikrozadań do każdej lekcji.
Zaawansowana praktyka: Audyt wykorzystania usług.
CTO zaczął podejrzewać, że zespoły nie korzystają już z niektórych usług. Problem w tym, że moduł monitorowania używanych usług nie był aktualizowany przez ostatnie dziesięć lat: nie jest może przesyłać dane zagregowane, a format zwracanych wartości nie odpowiada ogólnie przyjętym standardy. Wybrano Cię do wyodrębnienia przechwyconych wskaźników, zagregowania ich według typu i zespołu oraz dostarczenia tych informacji CTO w celu wstępnej oceny zakresu problemu.
#3: Połączenia sieciowe
Dlaczego: Prawie każda usługa ma interfejs umożliwiający połączenie za pośrednictwem jakiegoś protokołu sieciowego. A bez połączenia interakcja jest niemożliwa. Na szczęście ekosystem Pythona ma moduły klienckie dla prawie każdego protokołu.
- Pakiet Pip i instalowanie modułów innych firm.
- Moduł Paramiko do wykonywania poleceń poprzez ssh.
- Moduł żądań służący do tworzenia żądań HTTP.
- Przegląd modułów do pracy z bazami danych i brokerami komunikatów.
Ćwiczyć. Zespół programistów wprowadza nową metodologię: Jeśli pozwolisz na wystąpienie alertu, otrzymasz zadanie. Podsystem analityczny wyszukuje tylko wybrane błędy i wysyła o nich komunikaty do brokera komunikatów Kafki. Twoim zadaniem jest dokończenie cyklu zwracania błędów programistom: Twój konsument powinien automatycznie utworzyć w Trello zadania z wymaganym opisem i priorytetem.
Nr 4: Praca z tekstem w różnych formatach
Dlaczego: Połączenie z usługą to tylko połowa sukcesu. Druga połowa to wymiana informacji. Informacje to często zbiór znaków tekstowych w określonym formacie. Moduły pomogą Ci dekodować i kodować. Nie potrzebujesz wszystkich informacji? Wyrażenia regularne pomogą Ci wyodrębnić to, co ważne i odrzucić resztę.
- Moduł re i wyrażenia regularne.
- Moduły do pracy z danymi w różnych formatach: wartości rozdzielone, json, yaml, xml.
- Używanie argumentów wiersza poleceń: moduł argparse.
Sprawdź swoją wiedzę: Tworzenie źródła danych o korzystaniu z usług.
Podczas audytu korzystania z usług zidentyfikowałeś ważne dla firmy informacje, zainteresował się nawet dyrektor generalny. Postanowiono przeanalizować utracone pieniądze i nie dopuścić do powtórzenia się takich sytuacji. Aby to zrobić, trzeba dać analitykom narzędzie do pozyskiwania danych, aby mogli przygotowywać raporty. Problem w tym, że moduł monitorujący zwraca limity usług dla osobnego zapytania w formatach yaml, a ceny za usługi system bilingowy zwraca w formacie xml. Konieczne jest połączenie danych o aktualnym obciążeniu z limitami i cenami. Dział analityki poprosił o informacje zagregowane w formacie JSON z możliwością określenia przedziału czasowego i kroku agregacji.
Nr 5: Interakcja z systemem operacyjnym
Dlaczego: Znaczenie interakcji z systemem operacyjnym nie wymaga dalszych wyjaśnień. Jak połączyć to z Pythonem, znajdziesz w tej lekcji.
- Odczyt i zapis plików.
- moduł os - czytanie zmiennych środowiskowych, praca z katalogami i uprawnieniami, praca z procesami.
- Moduł podprocesów umożliwiający interaktywną interakcję z procesami.
Praktyka: automatyczne zapewnianie dostępu do serwerów.
W trakcie akcji rezygnacji z niewykorzystanych usług powstała ciekawa sytuacja: serwer spożywczy zespoły zostały zamknięte, ale zespół ds. infrastruktury okresowo używał go jako hosta inscenizacja. Okazało się, że zespół produktowy z niego nie korzystał, gdyż co jakiś czas ktoś nadpisywał jego ustawienia własnymi. Zdecydowano, że teraz zasób będzie przydzielany tylko członkom jednego zespołu, a automatyzacja pomoże uniknąć błędów. Ty, jako ten, który zacząłeś ten bałagan, musisz napisać agenta, który będzie okresowo odpytywał system zarządzania prawami i dokonać zmian w konfiguracji uprawnień w ramach zainstalowanych usług i w razie potrzeby wydać usługom polecenie ponownego odczytu konfiguracje.
Nr 6: Operator K8S w Pythonie (streaming na żywo)
13 października o godzinie 19:00
Dlaczego: rozszerzmy możliwości K8S tak, aby odpowiadał Twoim zadaniom.
Nr 7: Napisanie własnego modułu dla Ansible
Dlaczego: Ansible to potężny system zarządzania konfiguracją, który można rozszerzyć nawet o własne moduły. Co za zbieg okoliczności, że on sam i większość modułów jest napisana w Pythonie.
- Pisanie własnych modułów dla Ansible.
Przećwicz: pisanie modułu zarządzania prawami.
Dawno, dawno temu, w odległej galaktyce, napisałeś już agenta, który wydał prawa do niektórych usług. Czas zmienić pull na push, a Ansible w tym pomoże. Wszystko czego potrzebujesz to tylko moduł.
Nr 8: Tworzenie i przypadki użycia Twojego API
Dlaczego: Przygotowanie kodu do wdrożenia jest jednym z najważniejszych zadań. Nasze własne skrypty dla potoków etapów pomagają uczynić ten proces bardziej elastycznym i wygodnym.
- Tworzenie API REST w Flasku.
- Tworzenie własnego eksportera Prometheus za pomocą klienta Prometheus Python i Flask.
Przećwicz: przesyłanie danych do zewnętrznego systemu monitorowania.
Koszty niewykorzystanego sprzętu przekroczyły nawet pesymistyczne prognozy. Teraz zespół inżynierów ma inny obszar odpowiedzialności – monitorowanie niewykorzystanych usług. Aby to zrobić, musisz okresowo odpytywać system rozliczeniowy za pomocą swojego skryptu i przekazywać dane do Prometheusa. Format odbieranych danych w dalszym ciągu nie jest odpowiedni. Musisz zaimplementować łącznik. A jednocześnie napisz endpoint, aby dział analityki miał zawsze pod ręką aktualne informacje w formacie JSON.
Sesja AMA + NIEFORMALNE spotkanie z prelegentami kursu
28 października o godzinie 19:00
Spotykamy się, aby omówić wątpliwości uczestników kursu.
#9: Testowanie API aplikacji
Dlaczego: Czasami lepiej nie mieć kodu niż kod, który jest niestabilny. Aby nie bać się złamania kodu, trzeba pisać testy.
- Rodzaje testów: jednostkowe, integracyjne i end-to-end.
- Przegląd modułu pyhamcrest i jego elementów dopasowujących.
- Architektura i możliwości pytestu.
- Używanie pytest i pyhamcrest do pisania testów jednostkowych.
Przećwicz: pisanie testów przy użyciu pytest i pyhamcrest dla swojego API.
Nr 10: Interakcja z systemami CVS i DevOps
- Wykorzystanie modułów innych firm na przykładzie integracji z potokami Gitlab.
- Użycie pygit do uzyskania informacji o zmianach w kodzie.
Przećwicz: generowanie dziennika zmian na podstawie zatwierdzeń.
Zespołowi inżynierów tak bardzo spodobały się Twoje rozwiązania, że zainspirowali się nimi i zaczęli pisać własne. Ale ludzie zawsze zapominają napisać opisy wydań. Aby to osiągnąć, zespół zdecydował się wdrożyć konwencje zatwierdzania i generować dzienniki zmian bezpośrednio na podstawie zatwierdzeń łączenie gałęzi dev z gałęzią wydania i jeśli nazwa zatwierdzenia nie jest zgodna z konwencjami zatwierdzenia, nie zezwalaj na żądanie połączenia do czasu łączyć.
#11: Chatops z Errbotem w Pythonie
Dlaczego: Głównymi problemami biznesowymi nie jest wydajność aplikacji, ani nawet błędy występujące w kodzie. Najpoważniejsze problemy pojawiają się, gdy komunikacja z pracownikami jest nieskuteczna. Chatops jest jednym ze sposobów rozwiązania tego problemu.
- Koncepcja Chatops: jakie problemy rozwiązuje Chatops?
- Framework Errbot: instalacja, utworzenie podstawowego szablonu wtyczki, konfiguracja i uruchomienie.
- Framework Errbot: tworzenie własnej wtyczki do Chatops z różnymi opcjami przetwarzania wiadomości.
Ostateczny projekt
Przegląd terminu i ochrona dla zainteresowanych
Po kursie będziesz miał projekt na Git: możesz zautomatyzować swoje zadanie robocze lub wykonać jedną z proponowanych opcji.
Gotowy projekt można wykorzystać jako portfolio i pokazać przy ubieganiu się o pracę.