HimeraSearchDB
Carding_EbayThief
triada
CrackerTuch
d-shop
HimeraSearchDB

НОВОСТИ Как научиться разработке на Python: новый видеокурс Яндекса

Bonnie
Оффлайн
Регистрация
12.04.17
Сообщения
19.095
Реакции
107
Репутация
0
Осенью прошлого года в московском офисе Яндекса прошла первая Школа бэкенд-разработки. Мы сняли занятия на видео и сегодня рады поделиться на Хабре полным видеокурсом Школы. Он позволит вам научиться промышленной разработке на Python. Авторы лекций — опытные разработчики в Яндексе. К каждому видео приложены ссылки на примеры и полезные материалы.

Для изучения курса нужно знать основы Python и понимать, как приложения развёртываются на серверах. Мы ждём, что вы умеете делать запросы к базам данных и знаете, как создаются веб‑приложения, — хотя бы на начальном уровне.














1. Устройство CPython — Егор Овчаренко


Поговорим о том, почему и что мы пишем на Python. Обсудим устройство интерпретатора и словарей, менеджмент памяти и типизацию. Вы узнаете, как работают генераторы и как устроены исключения.


Презентация:

Ссылки


Интепретатор в целом:




Управление памятью:





Исключения:


2. Объектно-ориентированное программирование — Валерий Лисай


Поговорим об ООП и его реализации в языке Python. Рассмотрим такие темы и понятия, как декораторы, дескрипторы и метаклассы.


Презентация:

Ссылки








3. Тестирование — Мария Зеленова


Поговорим о том, что такое тестирование ПО, какие бывают тесты и зачем их писать. Расскажем про библиотеки для тестирования Python-кода: unittest, pytest, doctest. Узнаем, чем они отличаются, и посмотрим на простые примеры тестов. Затронем тему непрерывной интеграции: что это такое, как это используется в разработке.


Презентация:

Ссылки






4. Базы данных — Татьяна Денисова


Поговорим о том, что такое данные, какие базы данных бывают и чем они отличаются. Вы узнаете, какие особенности работы с БД нужно иметь в виду разработчику. Обсудим, как характеризовать, структурировать и хранить данные с расчётом на текущие особенности системы и её будущее масштабирование.

Благодаря полученным на лекции знаниям разработчик сможет понять, в какую из упомянутых тем нужно углубиться для решения конкретной задачи, а в случае возникновения багов — определить, является ли источником проблемы работа с БД. И если да, то в какую сторону копать.


Презентация:

5. Базы данных: модели, миграции, тестирование — Александр Васин


Это лекция о практической работе с реляционными базами данных на примере PostgreSQL. Поговорим о том, как выбрать РСУБД, как выглядит инфраструктура в продакшене, сравним синхронные и асинхронные драйверы PostgreSQL. Узнаем, как устроен драйвер БД. Обсудим эффективную работу с данными, именованные и неименованные курсоры, использование транзакций, RETURNING и UPSERT.

Вы узнаете, как сделать отказоустойчивое и масштабируемое приложение, что такое Query Builder, ORM и когда их использовать (на примере SQLAlchemy), как писать миграции БД (на примере Alembic), а также зачем и как их тестировать.


Презентация:
Примеры:

6. Архитектура — Олег Ермаков


Рассмотрим три части проектирования новой функциональности системы:

— API для клиент-серверного взаимодействия;
— паттерны проектирования на уровне кода (обоснование необходимости декомпозиции со ссылкой на Мартина Фаулера);
— архитектура межсервисного взаимодействия.


Презентация:

Ссылки


Спецификация протокола HTTP:



15 тривиальных фактов о правильной работе с протоколом HTTP:


Стажер Вася и его история об идемпотентности API:


Patterns of Enterprise Application Architecture:
Microservices Patterns:
Паттерны проектирования:
Domain-Driven Design: Tackling Complexity in the Heart of Software:
Optimizing the Netflix API:

7. Инфраструктура — Дмитрий Орлов


Обсудим инфраструктуру вокруг программы на Python: репозиторий Python Package Index (PyPI), инструмент virtualenv, процесс деплоймента, систему управления конфигурациями Ansible, виртуализацию и контейнеризацию.


Презентация:

Ссылки


Python Package:
virtualenv:
Развёртывание ПО:
Ansible:
Виртуализация:
Контейнеризация:

8. Алгоритмы — Илья Волков


Поговорим о структурах данных, вычислительной и амортизированной сложности.

На примере простого списка задач и его эволюции с постепенными улучшениями рассмотрим подходы к задачам написания серверной части веб-приложений. Сделаем обзор подходов и обычных приёмов оптимизации задач и кода. В заключительной части лекции рассмотрим процесс прохождения технических собеседований в IT-компаниях.


Презентация:

Cсылки


Реализация списков в Python:
Разбор реализации списков в Python на Хабре:
Разбор алгоритма B-Tree на Хабре:
Разбор алгоритма LRU:
Работа LRU кэша в Redis:
Список команд Redis с вычислительными сложностями — можно поугадывать, что происходит под капотом:
Галактические алгоритмы:
Пример задачи на собеседовании из лекции:

Введение в теорию сложности на Хабре:
Дайджест сервисов для практики программирования:
Пример сервиса с более-менее простым набором задач для знакомства с новыми языками:

9. Дебаг, логирование, профилирование — Юрий Шиканов


В начале лекции вас ждёт введение в базовые знания по операционным системам (в частности, Linux). Затем рассмотрим управление памятью, процессами, многозадачность, IPC, файлы, системные вызовы. Покажем, как работать со встроенным в Python дебаггером Pdb. Поговорим про логирование в целом и про библиотеку logging в Python. Узнаем, как бороться с недостаточной производительностью программ и как найти узкое место, в котором тратится больше всего ресурсов процессора или памяти.


Презентация:
Книга «Linux System Programming»:

10. Асинхронное программирование. Лекция первая — Эдуард Жук


Рассмотрим, в чём проблема синхронных приложений и что с этим можно сделать.

Обсудим, что происходит с точки зрения ОС при HTTP-запросе, как обрабатывать несколько запросов одновременно и какие есть преимущества и недостатки у процессов и потоков в веб-серверах. Вы узнаете об особенностях потоков в Python. Обсудим неблокирующий ввод-вывод: как обрабатывать несколько запросов в одном потоке.

Поговорим о том, что такое event-loop и зачем он нужен. Затронем тему выбора между синхронным и асинхронным решением.


Презентация:

Ссылки


A Web Crawler With asyncio Coroutines:
David Beazley: Generators: The Final Frontier:

11. Асинхронное программирование. Лекция вторая — Александр Васин


Эта лекция — небольшая обзорная экскурсия по asyncio: библиотеке, интерфейсу и стандарту для асинхронного программирования в Python.

Мы рассмотрим высокоуровневый интерфейс asyncio (coroutine, task, future и методы для работы с ними), низкоуровневый интерфейс (цикл событий, политики), а также асинхронные интерфейсы Python (менеджеры контекста, итераторы, генераторы, comprehensions). Расскажем, зачем нужен aiohttp, как на нем написать веб-приложения. Вы узнаете, что такое middleware, каким образом aiohttp позволяет сериализовать данные и как выполнять асинхронные задачи в фоне.


Презентация:

Ссылки


Build your own async (David Beazley):
Asyncio сегодня и завтра (Юрий Селиванов):
PEP 492: Coroutines with async and await syntax:
PEP 530: Asynchronous Comprehensions:

12. Асинхронное программирование. Лекция третья — Дмитрий Орлов


При разработке асинхронных приложений с Python и asyncio иногда возникают проблемы, связанные c управлением фоновыми задачами, блокировкой stdout, retry policy и блокирующими операциями. Вы узнаете о том, как команда сервиса Едадил решает эти проблемы при помощи aiomisc, об основных концепциях этого опенсорсного проекта, базовых классах, готовых сервисах, декораторах, работе с потоками и о многом другом.


Презентация:
Документация к aiomisc:
 
Сверху Снизу