Разработка на Python в условиях жестких дедлайнов: От оптимизации и отладки до умных ассистентов и создания автономных ИИ-агентов

Разработка на Python в условиях жестких дедлайнов: От оптимизации и отладки до умных ассистентов и создания автономных ИИ-агентов

Разработка на Python в условиях жестких дедлайнов: От оптимизации и отладки до умных ассистентов и создания автономных ИИ-агентов
Автор: Телфорд Алекс
Оригинальное название: Practical Python for Production Under Pressure: Managing the Insanity That is Developing Pipelines Alongside a Production at Full Speed
Оригинальный правообладатель: Leanpub
Переводчик: Гинько А. Ю.
Дата выхода: 2026
Издательство: ДМК Пресс
Количество страниц: 442
Размер файла: 5,4 МБ
Тип файла: PDF
Добавил: it-books
 Дополнительные материалы 

От издательства....16

Глава 1. Программирование в условиях стресса....17

Введение....17

Почему Python?....18

Об авторе....19

О переводчике....19

Всего я не знаю, а что знаю – весьма спорно....20

Заметка о LeanPub....20

Сопроводительные материалы....20

Прифронтовые инструменты и технический долг....21

Так почему мы продолжаем это делать?....22

Первым делом проект....23

Глава 2. Взаимодействие и коммуникация....24

Подготовка к задаче....24

Уточнения и пояснения....24

Планирование....25

Упражнения....25

Задание 1....26

Задание 2....27

Задание 3....30

Задание 4....31

Задание 5....33

Управление рабочей нагрузкой....34

Взаимодействие и коммуникация....35

Знайте свою меру....35

Нет – на все случаи ответ!....36

Обратная связь....37

Просто получите обратную связь....37

Так как же получить эту обратную связь?....38

Контроль за рабочим процессом....38

Синдром самозванца....41

Глава 3. Структура....43

Управление окружениями при помощи Rez....43

Почему Rez?....44

Настройка Rez....44

Что такое Rez?....44

AllzparkBleeding-rez....44

Установка Rez....45

Создание файла конфигурации....46

Rez на Windows....47

Установка внешних пакетов....48

Компилирование внешних пакетов....49

Исправление для PySide....49

Добавление других версий Python....49

Разрешение зависимостей в окружении....50

Создание пользовательских пакетов....51

package.py....51

Зависимости....51

Команды....52

Тесты....52

build.py....52

Релиз....54

Релиз, подготовка и разработка....54

Эфемерные пакеты....55

Обеспечение корректной работы зависимостей, включенных в DCC....55

Упражнения....56

Задание 1....56

Задание 2....56

Задание 3....56

Структурирование проектов....57

Все приватное, пока не понадобится....57

Что должно находиться в публичном API....58

Обособление кода....58

Создание поддерживаемых API....59

Один файл – один класс....60

Используйте понятные имена файлов....61

Используйте типизацию везде, где это возможно....62

Абстрактные интерфейсы....63

Когда не стоит использовать интерфейсы....65

Структуры данных....65

Упражнение....67

Декораторы....71

Упражнения....73

Прочие советы....75

Стек и рекурсия....75

Кросс-платформенная разработка....77

Использование схем....77

Когда стоит использовать схемы?....78

Примеры использования схем....78

Jsonschema....78

Defs и Ref....85

JSON5....86

Версионирование схем....87

Разработка при помощи диаграмм....88

Структурные диаграммы....88

Упражнения....90

Диаграммы потоков....90

Упражнения....91

Создание поддерживаемых пайплайнов....92

Компромисс, связанный с гибкостью....92

Рукопожатие данных....93

Узлы и данные....93

Реорганизация схемы....94

Рефакторинг....96

Перед началом рефакторинга....96

Примеры....96

Исключения....98

Поиск использования....98

Регрессионные тесты....99

По окончании рефакторинга....99

Поддержка конкурирующих API....100

Набор полезных библиотек....102

Встроенные библиотеки....102

pathlib....102

dataclasses....102

itertools....103

collections....103

functools....103

Структуры....103

attrs....103

box....103

PyDantic....104

Алгоритмы....104

numpy....104

pandas....104

matplotlib....104

Форматы....105

jsonschema....105

pyYAML....105

pyjson5....105

Глава 4. Тестирование....106

Автоматизированное тестирование....106

Типы тестирования....106

Модульныеинтеграционные тесты....106

Регрессионные тесты....107

Тесты взаимодействия....107

Сквозные, или циклические, тесты....107

Написание тестов....107

Советы по подготовке и написанию тестов....108

Простой пример с использованием модуля unittest....108

Простой пример с использованием модуля pytest....109

Файл conftest.py....110

Плагины pytest....110

Разработка на основе тестирования....110

Управляемые тесты....111

Глава 5. Данные в рабочей среде....113

Контроль за данными....113

Схема – наше все....113

Балансировка нагрузки....114

Пагинация....114

Отслеживание источников....115

Бережно относитесь к ключам API....116

FlowShotgrid....117

API....117

Сущности....118

Схема....118

Оптимизация....120

FTrack....123

API....123

Сущности....124

Схема....124

Оптимизация....126

Kitsu....127

Локальная установка....127

API....128

Предварительное кеширование....129

Codecks....130

Python API....131

Jira....135

Обертки API....139

Когда не стоит применять обертки API....140

Написание обертки API....141

Структуры....142

Бэкенд....143

Адаптеры....143

Клиент....146

Глава 6. Отладка....148

Интерактивный отладчик PDB....148

Расширение отладчика PDB....150

Исключения....154

Инспекция....156

Отслеживание объектов....156

Инспекция с помощью QEventLoop....159

QObject....160

Аварийное завершение....162

Логирование....165

Процесс логирования....165

Как должен выглядеть лог?....166

Глава 7. Оптимизация....170

Профилирование....171

cProfile....171

LineProfiler....173

Дизассемблер....174

Оптимизация....175

Кеширование....176

Упражнения....177

Многопоточность....178

Простой пример с потоками....178

Простой асинхронный пример с потоками....180

asyncio....181

Порядок выполнения операций....184

Многопроцессорная обработка....190

Глава 8. Qt....195

Общий обзор....195

Не Qt единым....195

Советы по применению....196

Метаданные....197

Структура метаданных....198

Исследование данных....199

Как это использовать?....202

Стили и рисование....203

Стили Qt....203

Согласующиеся со стилем виджеты....205

Цветовые различия....205

QStylePainter....207

Таблицы стилей....209

HTML....214

Конечные автоматы....216

Что такое конечные автоматы?....216

Структура конечных автоматов....216

Анимация....218

Конечный автомат с именованными состояниями....221

SCXML....224

Отзывчивый интерфейс пользователя....228

Асинхронность....230

Способы реализации асинхронного выполнения кода....230

Какой код можно сделать асинхронным....231

Qt против встроенной асинхронности....232

Многопоточный интерфейс пользователя....232

Сетевые запросы....234

Информативность....236

Индикаторы прогресса....237

Многопроцессность....239

Индикация состояния....240

Адаптивность....243

Интерфейс, управляемый данными....246

Делегаты....247

Редактируемые делегаты....247

Графические делегаты....248

Использование делегатов....249

Подробнее о делегатах....252

Мапперы данных....255

Тестирование....257

pytest-qt....257

Перед началом тестирования....257

Цикл событий....258

Ожидание....258

Таймеры....259

Виджет для тестирования....260

Написание тестов....262

Фикстуры....262

Исходное состояние....263

Ваш первый тест в Qt....263

Сквозные тесты....264

Управляемые тесты....267

QML в DCC....272

Стилизация....272

Встраивание....275

QML в QWidget....275

QWidget в QML....276

Глава 9. Взаимодействие с пользователем....280

Что такое взаимодействие с пользователем?....280

Пять компонентов взаимодействия с пользователем....282

Стратегия....283

Наполнение....284

Структура....285

Скелет приложения....286

Интерфейс пользователя....287

Исследование....288

Каркасное моделирование....289

Пример....290

Прототипирование....292

Бумажные прототипы....292

Макеты....293

Порядок и важность....294

Порядок расположения виджетов....296

Пространство и расположение....302

Представления данных....307

Советы по сокращению отображаемых данных....310

Анимации....314

Когда стоит использовать анимацию?....314

Обеспечение общедоступности....315

Цвет....316

Макеты....316

Иконки....319

Ключ к успеху – единообразие....320

Где взять иконки?....321

Не заставляйте пользователя думать....324

Модель мышления....324

Упрощение интерфейса пользователя....324

Постепенное раскрытие....325

Главное – предсказуемость....325

Угадываем и проверяем....327

Не заставляйте пользователя ждать....329

Асинхронный интерфейс пользователя....330

Перенос запросов в отдельный поток....330

Циклы событий для отзывчивости интерфейса пользователя....330

Запуск в отдельном процессе....331

Информирование пользователя....332

Индикаторы прогресса....332

Вращающийся индикатор....332

Курсор ожидания....333

Мониторинг внешних процессов....333

Сделаем вид, что все работает, потом проверим....334

Оптимистичные обновления интерфейса пользователя....334

Ленивая загрузка и пагинация....335

Резервные сценарии в коде....335

Что такое резервные сценарии?....336

Упражнения....336

Что с этим можно сделать?....337

Наиболее важный резервный сценарий....338

Как протестировать резервные сценарии?....338

Дополнительная литература....339

Глава 10. Искусственный интеллект....340

Искусственный интеллект на службе студий....341

Порталы искусственного интеллекта....342

OpenRouter....342

Ollama....343

Терминология....343

Искусственный интеллект (ИИ)....343

Большая языковая модель (LLM)....343

Машинное обучение (ML)....344

Векторное хранилище эмбеддинги....344

Анализ главных компонент (PCA)....345

Агенты....345

Инструменты....345

Поисково-дополненная генерация (RAG)....345

Протокол контекста модели (MCP)....346

Длина контекста....346

Температура....346

Безопасность данных....347

Выбор большой языковой модели....347

Ограничения памяти....348

Квантование....349

Дообучение....349

С чего начать?....350

Промпт-инжиниринг....350

Шаблоны промптов....351

Чем проще, тем лучше....352

Структура промпта....352

Адаптирование промптов под большую языковую модель....356

Вредоносное внедрение промптов....357

Локальный запуск....359

Локальные модели....359

Установка Ollama....359

vLLM....361

Локальные ИИ-приложения....362

Anything LLM....362

LM Studio....363

OpenWebUI....363

Премиумные модели, развернутые на собственной инфраструктуре....364

Разработка с ИИ в качестве помощника....365

Вы – разработчик....367

ИИ-редакторы кода....367

Copilot....369

Continue.dev....374

Cline....378

Извлечение максимума пользы из ИИ....386

Структура....386

Автономные ИИ-разработчики....402

Вайб-кодинг?....404

Пример создания генератора диаграмм при помощи вайб-кодинга....405

Разработка ИИ-инструментов....409

Типы ИИ-инструментов....411

API....412

Простой пример....412

Простой агент....416

MCP-серверы....426

Глава 11. Важная информация....428

Юридические лицензии....428

Открытый исходный код ! бесплатный....428

Лицензия GPL....429

Кому какое дело?....430

Дополнительная информация....431

Ссылки....431

Заключение....435

Заключение....435

Предметный указатель....436

Предметный указатель....436

Разработка....-1

От издательства....16

Глава 1. Программирование в условиях стресса....17

Введение....17

Почему Python?....18

Об авторе....19

О переводчике....19

Всего я не знаю, а что знаю – весьма спорно....20

Заметка о LeanPub....20

Сопроводительные материалы....20

Прифронтовые инструменты и технический долг....21

Так почему мы продолжаем это делать?....22

Первым делом проект....23

Глава 2. Взаимодействие и коммуникация....24

Подготовка к задаче....24

Уточнения и пояснения....24

Планирование....25

Упражнения....25

Задание 1....26

Задание 2....27

Задание 3....30

Задание 4....31

Задание 5....33

Управление рабочей нагрузкой....34

Взаимодействие и коммуникация....35

Знайте свою меру....35

Нет – на все случаи ответ!....36

Обратная связь....37

Просто получите обратную связь....37

Так как же получить эту обратную связь?....38

Контроль за рабочим процессом....38

Синдром самозванца....41

Глава 3. Структура....43

Управление окружениями при помощи Rez....43

Почему Rez?....44

Настройка Rez....44

Что такое Rez?....44

AllzparkBleeding-rez....44

Установка Rez....45

Создание файла конфигурации....46

Rez на Windows....47

Установка внешних пакетов....48

Компилирование внешних пакетов....49

Исправление для PySide....49

Добавление других версий Python....49

Разрешение зависимостей в окружении....50

Создание пользовательских пакетов....51

package.py....51

Зависимости....51

Команды....52

Тесты....52

build.py....52

Релиз....54

Релиз, подготовка и разработка....54

Эфемерные пакеты....55

Обеспечение корректной работы зависимостей, включенных в DCC....55

Упражнения....56

Задание 1....56

Задание 2....56

Задание 3....56

Структурирование проектов....57

Все приватное, пока не понадобится....57

Что должно находиться в публичном API....58

Обособление кода....58

Создание поддерживаемых API....59

Один файл – один класс....60

Используйте понятные имена файлов....61

Используйте типизацию везде, где это возможно....62

Абстрактные интерфейсы....63

Когда не стоит использовать интерфейсы....65

Структуры данных....65

Упражнение....67

Декораторы....71

Упражнения....73

Прочие советы....75

Стек и рекурсия....75

Кросс-платформенная разработка....77

Использование схем....77

Когда стоит использовать схемы?....78

Примеры использования схем....78

Jsonschema....78

Defs и Ref....85

JSON5....86

Версионирование схем....87

Разработка при помощи диаграмм....88

Структурные диаграммы....88

Упражнения....90

Диаграммы потоков....90

Упражнения....91

Создание поддерживаемых пайплайнов....92

Компромисс, связанный с гибкостью....92

Рукопожатие данных....93

Узлы и данные....93

Реорганизация схемы....94

Рефакторинг....96

Перед началом рефакторинга....96

Примеры....96

Исключения....98

Поиск использования....98

Регрессионные тесты....99

По окончании рефакторинга....99

Поддержка конкурирующих API....100

Набор полезных библиотек....102

Встроенные библиотеки....102

pathlib....102

dataclasses....102

itertools....103

collections....103

functools....103

Структуры....103

attrs....103

box....103

PyDantic....104

Алгоритмы....104

numpy....104

pandas....104

matplotlib....104

Форматы....105

jsonschema....105

pyYAML....105

pyjson5....105

Глава 4. Тестирование....106

Автоматизированное тестирование....106

Типы тестирования....106

Модульныеинтеграционные тесты....106

Регрессионные тесты....107

Тесты взаимодействия....107

Сквозные, или циклические, тесты....107

Написание тестов....107

Советы по подготовке и написанию тестов....108

Простой пример с использованием модуля unittest....108

Простой пример с использованием модуля pytest....109

Файл conftest.py....110

Плагины pytest....110

Разработка на основе тестирования....110

Управляемые тесты....111

Глава 5. Данные в рабочей среде....113

Контроль за данными....113

Схема – наше все....113

Балансировка нагрузки....114

Пагинация....114

Отслеживание источников....115

Бережно относитесь к ключам API....116

FlowShotgrid....117

API....117

Сущности....118

Схема....118

Оптимизация....120

FTrack....123

API....123

Сущности....124

Схема....124

Оптимизация....126

Kitsu....127

Локальная установка....127

API....128

Предварительное кеширование....129

Codecks....130

Python API....131

Jira....135

Обертки API....139

Когда не стоит применять обертки API....140

Написание обертки API....141

Структуры....142

Бэкенд....143

Адаптеры....143

Клиент....146

Глава 6. Отладка....148

Интерактивный отладчик PDB....148

Расширение отладчика PDB....150

Исключения....154

Инспекция....156

Отслеживание объектов....156

Инспекция с помощью QEventLoop....159

QObject....160

Аварийное завершение....162

Логирование....165

Процесс логирования....165

Как должен выглядеть лог?....166

Глава 7. Оптимизация....170

Профилирование....171

cProfile....171

LineProfiler....173

Дизассемблер....174

Оптимизация....175

Кеширование....176

Упражнения....177

Многопоточность....178

Простой пример с потоками....178

Простой асинхронный пример с потоками....180

asyncio....181

Порядок выполнения операций....184

Многопроцессорная обработка....190

Глава 8. Qt....195

Общий обзор....195

Не Qt единым....195

Советы по применению....196

Метаданные....197

Структура метаданных....198

Исследование данных....199

Как это использовать?....202

Стили и рисование....203

Стили Qt....203

Согласующиеся со стилем виджеты....205

Цветовые различия....205

QStylePainter....207

Таблицы стилей....209

HTML....214

Конечные автоматы....216

Что такое конечные автоматы?....216

Структура конечных автоматов....216

Анимация....218

Конечный автомат с именованными состояниями....221

SCXML....224

Отзывчивый интерфейс пользователя....228

Асинхронность....230

Способы реализации асинхронного выполнения кода....230

Какой код можно сделать асинхронным....231

Qt против встроенной асинхронности....232

Многопоточный интерфейс пользователя....232

Сетевые запросы....234

Информативность....236

Индикаторы прогресса....237

Многопроцессность....239

Индикация состояния....240

Адаптивность....243

Интерфейс, управляемый данными....246

Делегаты....247

Редактируемые делегаты....247

Графические делегаты....248

Использование делегатов....249

Подробнее о делегатах....252

Мапперы данных....255

Тестирование....257

pytest-qt....257

Перед началом тестирования....257

Цикл событий....258

Ожидание....258

Таймеры....259

Виджет для тестирования....260

Написание тестов....262

Фикстуры....262

Исходное состояние....263

Ваш первый тест в Qt....263

Сквозные тесты....264

Управляемые тесты....267

QML в DCC....272

Стилизация....272

Встраивание....275

QML в QWidget....275

QWidget в QML....276

Глава 9. Взаимодействие с пользователем....280

Что такое взаимодействие с пользователем?....280

Пять компонентов взаимодействия с пользователем....282

Стратегия....283

Наполнение....284

Структура....285

Скелет приложения....286

Интерфейс пользователя....287

Исследование....288

Каркасное моделирование....289

Пример....290

Прототипирование....292

Бумажные прототипы....292

Макеты....293

Порядок и важность....294

Порядок расположения виджетов....296

Пространство и расположение....302

Представления данных....307

Советы по сокращению отображаемых данных....310

Анимации....314

Когда стоит использовать анимацию?....314

Обеспечение общедоступности....315

Цвет....316

Макеты....316

Иконки....319

Ключ к успеху – единообразие....320

Где взять иконки?....321

Не заставляйте пользователя думать....324

Модель мышления....324

Упрощение интерфейса пользователя....324

Постепенное раскрытие....325

Главное – предсказуемость....325

Угадываем и проверяем....327

Не заставляйте пользователя ждать....329

Асинхронный интерфейс пользователя....330

Перенос запросов в отдельный поток....330

Циклы событий для отзывчивости интерфейса пользователя....330

Запуск в отдельном процессе....331

Информирование пользователя....332

Индикаторы прогресса....332

Вращающийся индикатор....332

Курсор ожидания....333

Мониторинг внешних процессов....333

Сделаем вид, что все работает, потом проверим....334

Оптимистичные обновления интерфейса пользователя....334

Ленивая загрузка и пагинация....335

Резервные сценарии в коде....335

Что такое резервные сценарии?....336

Упражнения....336

Что с этим можно сделать?....337

Наиболее важный резервный сценарий....338

Как протестировать резервные сценарии?....338

Дополнительная литература....339

Глава 10. Искусственный интеллект....340

Искусственный интеллект на службе студий....341

Порталы искусственного интеллекта....342

OpenRouter....342

Ollama....343

Терминология....343

Искусственный интеллект (ИИ)....343

Большая языковая модель (LLM)....343

Машинное обучение (ML)....344

Векторное хранилище эмбеддинги....344

Анализ главных компонент (PCA)....345

Агенты....345

Инструменты....345

Поисково-дополненная генерация (RAG)....345

Протокол контекста модели (MCP)....346

Длина контекста....346

Температура....346

Безопасность данных....347

Выбор большой языковой модели....347

Ограничения памяти....348

Квантование....349

Дообучение....349

С чего начать?....350

Промпт-инжиниринг....350

Шаблоны промптов....351

Чем проще, тем лучше....352

Структура промпта....352

Адаптирование промптов под большую языковую модель....356

Вредоносное внедрение промптов....357

Локальный запуск....359

Локальные модели....359

Установка Ollama....359

vLLM....361

Локальные ИИ-приложения....362

Anything LLM....362

LM Studio....363

OpenWebUI....363

Премиумные модели, развернутые на собственной инфраструктуре....364

Разработка с ИИ в качестве помощника....365

Вы – разработчик....367

ИИ-редакторы кода....367

Copilot....369

Continue.dev....374

Cline....378

Извлечение максимума пользы из ИИ....386

Структура....386

Автономные ИИ-разработчики....402

Вайб-кодинг?....404

Пример создания генератора диаграмм при помощи вайб-кодинга....405

Разработка ИИ-инструментов....409

Типы ИИ-инструментов....411

API....412

Простой пример....412

Простой агент....416

MCP-серверы....426

Глава 11. Важная информация....428

Юридические лицензии....428

Открытый исходный код ! бесплатный....428

Лицензия GPL....429

Кому какое дело?....430

Дополнительная информация....431

Ссылки....431

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

Автор книги работает в сфере геймдева и vfx, поэтому в книге часто используются специфические примеры из этой области. Но это не мешает усвоению материала, т.к. полученные знания можно легко перенести в любую другую область.


Прочитав книгу, вы научитесь:


  • взаимодействовать с конечными пользователями на стадии планирования;
  • определять структуру проекта с использованием окружений и схем;
  • применять на практике оптимальные структуры данных и методы программирования на Python;
  • отлаживать, оптимизировать и тестировать свои решения;
  • использовать большие языковые модели в разработке ПО;
  • создавать с нуля ИИ-инструменты и RAG-хранилища;
  • создавать собственных ИИ-агентов.

Книга нацелена на разработчиков с опытом работы на Python, желающих оптимизировать свои рабочие процессы. Желательно знакомство с библиотеками Qt/PySide.


Похожее:

Список отзывов:

Нет отзывов к книге.