Python за инженери - курс 65 000 rub. от Slurm, обучение 3 месеца, дата 15 януари 2024 г.
разни / / November 27, 2023
Techlead, инженер по данни в Skyeng / ex Slurm, ISPsystem, Grid Dynamics
старши Софтуерен инженер в Test, Auriga, ex ISPsystem
#1: Основен синтаксис и структури на Python
Защо: да се научите да разбирате логиката на програмите на Python, както и писането на прости програми, е най-важната задача. „Страхотно“, ако не сте запознати със синтаксиса на Python.
- Типове данни и променливи, променливи/неизменни и прости/съставни типове данни, техники за отстраняване на грешки.
- Условен оператор - логически оператори, прости условия, вложени условия и заместване на оператор switch.
- Основни цикли - цикли while и for, итератори, прекъсвания на цикъл.
- Функции, методи на низове, списъци и речници.
- Генериране и обработка на изключения.
Практика: набор от малки микрозадачи за всеки урок.
#2: Подобрено владеене на Python: Оптимизации и ООП
Защо: Нека овладеем функциите на Python - на тях се дължи, че е толкова прост и практичен. Ще разкрием и значението на тези три букви (говорим за ООП) без академична теория и с ясна цел
- Разширена работа с цикли - yield оператор и генератори, прозрения за цикли в Python, else оператор в цикъл, оптимизация на цикли за разбиране и др.
- Специални видове структури: frozendict, defaultdict и др.
- Основни ООП понятия: класове, екземпляри на класове, капсулиране, наследяване и полиморфизъм.
- Създаване на контекстни мениджъри за вашите типове: конструкцията with.
Практика: набор от малки микрозадачи за всеки урок.
Разширена практика: Одит на използването на услугата.
Техническият директор започна да подозира, че някои услуги вече не се използват от екипите. Проблемът е, че модулът за следене на използваните услуги не е актуализиран през последните десет години: не го прави може да качва обобщени данни и форматът на върнатите стойности не отговаря на общоприетите стандарти. Вие сте избрани да извлечете заснетите показатели, да ги обобщите по тип и екип и да предоставите тази информация на CTO за първоначална оценка на обхвата на проблема.
#3: Мрежови връзки
Защо: Почти всяка услуга има интерфейс за свързване чрез някакъв мрежов протокол. А без връзка взаимодействието е невъзможно. За щастие екосистемата на Python има клиентски модули за почти всеки протокол.
- Pip пакет и инсталиране на модули на трети страни.
- Модул Paramiko за изпълнение на команди през ssh.
- Модулът за заявки за правене на HTTP заявки.
- Преглед на модулите за работа с бази данни и брокери на съобщения.
Практикувайте. Екипът за разработка въвежда нова методология: Ако позволите да се появи предупреждение, ще получите задача. Аналитичната подсистема търси само избрани грешки и изпраща съобщения за тях до брокера на съобщения Kafka. Вашата задача е да завършите цикъла на връщане на грешки на разработчиците: вашият потребител трябва автоматично да създава задачи с необходимото описание и приоритет в Trello.
No4: Работа с текст в различни формати
Защо: Свързването с услугата е само половината от битката. Другата половина е споделяне на информация. А информацията често е набор от текстови знаци в определен формат. Модулите ще ви помогнат да декодирате и кодирате. Нямате нужда от цялата информация? Регулярните изрази ще ви помогнат да извлечете важното и да изхвърлите останалото.
- Модулът re и регулярните изрази.
- Модули за работа с данни в различни формати: разделени стойности, json, yaml, xml.
- Използване на аргументи от командния ред: модул argparse.
Практика: Създаване на източник на данни за използването на услугата.
По време на одита на използването на услугите идентифицирахте важна информация за бизнеса, дори главният изпълнителен директор се заинтересува. Беше решено да се анализират загубените пари и да не се допускат подобни ситуации да се случват отново. За да направите това, трябва да дадете на анализаторите инструмент за събиране на данни, за да могат да изготвят отчети. Проблемът е, че модулът за мониторинг връща лимити за услуги за отделна заявка в yaml формати, а цените за услуги се връщат от системата за таксуване в xml формат. Необходимо е да се комбинират данни за текущия товар с лимити и цени. Отделът за анализ поиска обобщена информация във формат JSON с възможност за указване на времеви интервал и стъпка на агрегиране.
№ 5: Взаимодействие с операционната система
Защо: Важността на взаимодействието с операционната система не е необходимо да се обяснява допълнително. Как да го свържете с Python е в този урок.
- Четене и писане на файлове.
- os модул - четене на променливи на средата, работа с директории и права, работа с процеси.
- Модулът за подпроцеси за интерактивно взаимодействие с процесите.
Практика: автоматично предоставяне на достъп до сървъри.
По време на кампанията за изоставяне на неизползваните услуги възникна любопитна ситуация: сървър за хранителни стоки екипи затвориха, но инфраструктурният екип периодично го използваше като хост за постановка. Оказа се, че екипът на продукта не го е използвал, защото периодично някой презаписва техните настройки със свои. Беше решено, че сега ресурсът ще бъде присвоен само на членове на един екип, а автоматизацията ще помогне да се избегнат грешки. Вие, като този, който започна тази каша, трябва да напишете агент, който периодично да проверява системата за управление на правата и правете промени в конфигурацията на правата в рамките на инсталираните услуги и, ако е необходимо, дайте на услугите команда за повторно четене конфигурации.
№ 6: K8S оператор в Python (поток за кодиране на живо)
13 октомври от 19:00ч
Защо: нека разширим възможностите на K8S, за да отговаря на вашите задачи.
№ 7: Писане на наш собствен модул за Ansible
Защо: Ansible е мощна система за управление на конфигурацията и дори може да се разшири със собствени модули. Какво съвпадение, че самият той и повечето от модулите са написани на Python.
- Писане на ваши собствени модули за Ansible.
Практика: писане на модул за управление на права.
Преди много време, в далечна, далечна галактика, вече сте написали агент, който да издава права за определени услуги. Време е да промените издърпване на натискане и Ansible ще ви помогне с това. Всичко, от което се нуждаете, е само модул.
№ 8: Създаване и използване на вашия API
Защо: Подготовката на кода за внедряване е една от най-важните задачи. Нашите собствени скриптове за етапни конвейери помагат да направим този процес по-гъвкав и удобен.
- Създаване на REST API във Flask.
- Създаване на ваш собствен prometheus exporter с Prometheus Python Client и Flask.
Практика: качване на данни в система за наблюдение на трета страна.
Разходите за неизползвано оборудване надхвърлиха дори песимистичните прогнози. Сега инженерният екип има друга област на отговорност - наблюдение на неизползваните услуги. За да направите това, трябва периодично да проверявате системата за таксуване чрез вашия скрипт и да предавате данните на Prometheus. Форматът на получените данни все още не е подходящ. Трябва да внедрите конектор. И в същото време напишете крайна точка, така че отделът за анализи винаги да има под ръка актуална информация във формат JSON.
AMA сесия + НЕФОРМАЛНА среща с лектори на курса
28 октомври от 19:00ч
Срещаме се, за да обсъдим притесненията на участниците в курса.
#9: Тестване на API на вашето приложение
Защо: Понякога е по-добре да нямате код, отколкото код, който е нестабилен. За да не се страхувате да разбиете кода си, трябва да пишете тестове.
- Видове тестове: единични, интеграционни и крайни.
- Преглед на модула pyhamcrest и неговите съвпадения.
- Архитектура и възможности на pytest.
- Използване на pytest и pyhamcrest за писане на модулни тестове.
Практика: писане на тестове с помощта на pytest и pyhamcrest за вашия API.
№ 10: Взаимодействие с CVS и DevOps системи
- Използване на модули на трети страни, като се използва примерът за интеграция в конвейери на Gitlab.
- Използване на pygit за получаване на информация за промени в кода.
Практика: генериране на регистър на промените от ангажименти.
Инженерният екип толкова хареса вашите решения, че се вдъхнови от тях и започна да пише свои собствени. Но хората винаги забравят да напишат описания за издания. За да постигне това, екипът реши да внедри конвенции за ангажименти и да генерира журнали за промени директно от ангажименти, когато сливане на клона за разработка с изданието и ако името на ангажимента не отговаря на конвенциите за ангажименти, не позволявайте merge-request, докато сливане.
#11: Chatops с Errbot в Python
Защо: Основните бизнес проблеми не са производителността на приложението или дори грешките, възникващи в кода. Най-сериозните проблеми възникват, когато комуникацията между служителите е неефективна. Chatops е един от начините за решаване на този проблем.
- Концепция Chatops: какви проблеми решава Chatops?
- Errbot framework: инсталиране, създаване на основен шаблон на плъгин, конфигурация и стартиране.
- Errbot framework: създаване на ваш собствен плъгин за Chatops с различни опции за обработка на съобщения.
Финален проект
Преглед на срока и защита на желаещите
След курса ще имате проект в Git: можете да автоматизирате работната си задача или да направите една от предложените опции.
Готовият проект може да се използва като портфолио случай и да се показва при кандидатстване за работа.