- Регистрация
- 12.04.17
- Сообщения
- 19.095
- Реакции
- 107
- Репутация
- 0
You must be registered for see links
Осенью прошлого года в московском офисе Яндекса прошла первая Школа бэкенд-разработки. Мы сняли занятия на видео и сегодня рады поделиться на Хабре полным видеокурсом Школы. Он позволит вам научиться промышленной разработке на Python. Авторы лекций — опытные разработчики в Яндексе. К каждому видео приложены ссылки на примеры и полезные материалы.Для изучения курса нужно знать основы Python и понимать, как приложения развёртываются на серверах. Мы ждём, что вы умеете делать запросы к базам данных и знаете, как создаются веб‑приложения, — хотя бы на начальном уровне.
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
1. Устройство CPython — Егор Овчаренко
Поговорим о том, почему и что мы пишем на Python. Обсудим устройство интерпретатора и словарей, менеджмент памяти и типизацию. Вы узнаете, как работают генераторы и как устроены исключения.
Презентация:
You must be registered for see links
Ссылки
Интепретатор в целом:
You must be registered for see links
You must be registered for see links
You must be registered for see links
Управление памятью:
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
Исключения:
You must be registered for see links
2. Объектно-ориентированное программирование — Валерий Лисай
Поговорим об ООП и его реализации в языке Python. Рассмотрим такие темы и понятия, как декораторы, дескрипторы и метаклассы.
Презентация:
You must be registered for see links
Ссылки
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
You must be registered for see links
3. Тестирование — Мария Зеленова
Поговорим о том, что такое тестирование ПО, какие бывают тесты и зачем их писать. Расскажем про библиотеки для тестирования Python-кода: unittest, pytest, doctest. Узнаем, чем они отличаются, и посмотрим на простые примеры тестов. Затронем тему непрерывной интеграции: что это такое, как это используется в разработке.
Презентация:
You must be registered for see links
Ссылки
You must be registered for see links
You must be registered for see links
You must be registered for see links
4. Базы данных — Татьяна Денисова
Поговорим о том, что такое данные, какие базы данных бывают и чем они отличаются. Вы узнаете, какие особенности работы с БД нужно иметь в виду разработчику. Обсудим, как характеризовать, структурировать и хранить данные с расчётом на текущие особенности системы и её будущее масштабирование.
Благодаря полученным на лекции знаниям разработчик сможет понять, в какую из упомянутых тем нужно углубиться для решения конкретной задачи, а в случае возникновения багов — определить, является ли источником проблемы работа с БД. И если да, то в какую сторону копать.
Презентация:
You must be registered for see links
5. Базы данных: модели, миграции, тестирование — Александр Васин
Это лекция о практической работе с реляционными базами данных на примере PostgreSQL. Поговорим о том, как выбрать РСУБД, как выглядит инфраструктура в продакшене, сравним синхронные и асинхронные драйверы PostgreSQL. Узнаем, как устроен драйвер БД. Обсудим эффективную работу с данными, именованные и неименованные курсоры, использование транзакций, RETURNING и UPSERT.
Вы узнаете, как сделать отказоустойчивое и масштабируемое приложение, что такое Query Builder, ORM и когда их использовать (на примере SQLAlchemy), как писать миграции БД (на примере Alembic), а также зачем и как их тестировать.
Презентация:
You must be registered for see links
Примеры:
You must be registered for see links
6. Архитектура — Олег Ермаков
Рассмотрим три части проектирования новой функциональности системы:
— API для клиент-серверного взаимодействия;
— паттерны проектирования на уровне кода (обоснование необходимости декомпозиции со ссылкой на Мартина Фаулера);
— архитектура межсервисного взаимодействия.
Презентация:
You must be registered for see links
Ссылки
Спецификация протокола HTTP:
You must be registered for see links
You must be registered for see links
15 тривиальных фактов о правильной работе с протоколом HTTP:
You must be registered for see links
Стажер Вася и его история об идемпотентности API:
You must be registered for see links
Patterns of Enterprise Application Architecture:
You must be registered for see links
Microservices Patterns:
You must be registered for see links
Паттерны проектирования:
You must be registered for see links
Domain-Driven Design: Tackling Complexity in the Heart of Software:
You must be registered for see links
Optimizing the Netflix API:
You must be registered for see links
7. Инфраструктура — Дмитрий Орлов
Обсудим инфраструктуру вокруг программы на Python: репозиторий Python Package Index (PyPI), инструмент virtualenv, процесс деплоймента, систему управления конфигурациями Ansible, виртуализацию и контейнеризацию.
Презентация:
You must be registered for see links
Ссылки
Python Package:
You must be registered for see links
virtualenv:
You must be registered for see links
Развёртывание ПО:
You must be registered for see links
Ansible:
You must be registered for see links
Виртуализация:
You must be registered for see links
Контейнеризация:
You must be registered for see links
8. Алгоритмы — Илья Волков
Поговорим о структурах данных, вычислительной и амортизированной сложности.
На примере простого списка задач и его эволюции с постепенными улучшениями рассмотрим подходы к задачам написания серверной части веб-приложений. Сделаем обзор подходов и обычных приёмов оптимизации задач и кода. В заключительной части лекции рассмотрим процесс прохождения технических собеседований в IT-компаниях.
Презентация:
You must be registered for see links
Cсылки
Реализация списков в Python:
You must be registered for see links
Разбор реализации списков в Python на Хабре:
You must be registered for see links
Разбор алгоритма B-Tree на Хабре:
You must be registered for see links
Разбор алгоритма LRU:
You must be registered for see links
Работа LRU кэша в Redis:
You must be registered for see links
Список команд Redis с вычислительными сложностями — можно поугадывать, что происходит под капотом:
You must be registered for see links
Галактические алгоритмы:
You must be registered for see links
Пример задачи на собеседовании из лекции:
You must be registered for see links
Введение в теорию сложности на Хабре:
You must be registered for see links
Дайджест сервисов для практики программирования:
You must be registered for see links
Пример сервиса с более-менее простым набором задач для знакомства с новыми языками:
You must be registered for see links
9. Дебаг, логирование, профилирование — Юрий Шиканов
В начале лекции вас ждёт введение в базовые знания по операционным системам (в частности, Linux). Затем рассмотрим управление памятью, процессами, многозадачность, IPC, файлы, системные вызовы. Покажем, как работать со встроенным в Python дебаггером Pdb. Поговорим про логирование в целом и про библиотеку logging в Python. Узнаем, как бороться с недостаточной производительностью программ и как найти узкое место, в котором тратится больше всего ресурсов процессора или памяти.
Презентация:
You must be registered for see links
Книга «Linux System Programming»:
You must be registered for see links
10. Асинхронное программирование. Лекция первая — Эдуард Жук
Рассмотрим, в чём проблема синхронных приложений и что с этим можно сделать.
Обсудим, что происходит с точки зрения ОС при HTTP-запросе, как обрабатывать несколько запросов одновременно и какие есть преимущества и недостатки у процессов и потоков в веб-серверах. Вы узнаете об особенностях потоков в Python. Обсудим неблокирующий ввод-вывод: как обрабатывать несколько запросов в одном потоке.
Поговорим о том, что такое event-loop и зачем он нужен. Затронем тему выбора между синхронным и асинхронным решением.
Презентация:
You must be registered for see links
Ссылки
A Web Crawler With asyncio Coroutines:
You must be registered for see links
David Beazley: Generators: The Final Frontier:
You must be registered for see links
11. Асинхронное программирование. Лекция вторая — Александр Васин
Эта лекция — небольшая обзорная экскурсия по asyncio: библиотеке, интерфейсу и стандарту для асинхронного программирования в Python.
Мы рассмотрим высокоуровневый интерфейс asyncio (coroutine, task, future и методы для работы с ними), низкоуровневый интерфейс (цикл событий, политики), а также асинхронные интерфейсы Python (менеджеры контекста, итераторы, генераторы, comprehensions). Расскажем, зачем нужен aiohttp, как на нем написать веб-приложения. Вы узнаете, что такое middleware, каким образом aiohttp позволяет сериализовать данные и как выполнять асинхронные задачи в фоне.
Презентация:
You must be registered for see links
Ссылки
Build your own async (David Beazley):
You must be registered for see links
Asyncio сегодня и завтра (Юрий Селиванов):
You must be registered for see links
PEP 492: Coroutines with async and await syntax:
You must be registered for see links
PEP 530: Asynchronous Comprehensions:
You must be registered for see links
12. Асинхронное программирование. Лекция третья — Дмитрий Орлов
При разработке асинхронных приложений с Python и asyncio иногда возникают проблемы, связанные c управлением фоновыми задачами, блокировкой stdout, retry policy и блокирующими операциями. Вы узнаете о том, как команда сервиса Едадил решает эти проблемы при помощи aiomisc, об основных концепциях этого опенсорсного проекта, базовых классах, готовых сервисах, декораторах, работе с потоками и о многом другом.
Презентация:
You must be registered for see links
Документация к aiomisc:
You must be registered for see links