Опубликовано

Внимание, бестселлер: “Создание микрофронтендов”

Создание микрофронтендов

Книга подробно рассказывает о методах разработки и масштабирования фронтендов веб-приложений с использованием архитектуры, схожей по идеологии с микросервисами. Освещены все аспекты внедрения микрофронтендов, начиная с этапа проектирования и заканчивая организацией команд для миграции существующих или новых проектов на микрофронтенды. Приводятся примеры внедрения микрофронтендов на практике, показаны доступные архитектуры, стратегии автоматизации, описаны шаблоны для интеграции архитектур микрофронтендов с использованием микросервисов или монолитного API.

Для системных архитекторов, разработчиков и руководителей ИТ-проектов

Создание микрофронтендов» — один из тех редких примеров, когда все самые важные аспекты для успешного применения технической идеи на практике собраны в одной книге.
Алессандро Чинелли, руководитель департамента разработки

Если вы — технический руководитель или программист, ищущий исчерпывающее руководство по разработке и внедрению микрофронтендов в организации, то Лука Меццалира написал эту книгу специально для вас.
Йенс Оливер Мейерт, руководитель проектов и автор сайта meiert.com

МАСШТАБИРОВАНИЕ КОМАНД И ПРОЕКТОВ, РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ РАЗРАБОТЧИКОВ

Микрофронтенды — ответ на растущую сложность современных веб-приложений. Основанный на модели микросервисов, этот подход позволяет дробить интерфейсы на отдельные функции, реализуемые разными командами разработчиков. Данная книга рассказывает программным архитекторам, техническим руководителям и разработчикам, как создавать и развертывать интерфейсы веб-приложений атомарно, в противовес традиционной монолитной архитектуре.

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

  • Изучите доступные архитектуры разработки фронтендов
  • Узнайте, как принципы микросервисов применяются к разработке фронтендов
  • Освойте четыре столпа для создания успешной программной архитектуры
  • Изучите преимущества и подводные камни существующих архитектур микрофронтендов
  • Освойте принципы и лучшие практики для создания успешных стратегий автоматизации
  • Откройте для себя шаблоны для интеграции архитектур микрофронтендов с использованием микросервисов или монолитного API

Книгу “Создание микрофронтендов” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Об авторе. 11

Предисловие. 13

Введение. 15

Почему я написал эту книгу. 15

Для кого эта книга. 16

Как устроена книга. 16

Условные обозначения и соглашения. 18

Благодарности. 18

ГЛАВА 1. Виды фронтендов. 21

Микрофронтенд-приложения. 21

Одностраничные приложения. 23

Изоморфные приложения. 25

Статические сайты.. 27

Jamstack. 27

Резюме. 28

ГЛАВА 2. Принципы микрофронтендов. 29

От монолита к микросервисам.. 30

Переход на микросервисы.. 32

Введение в микрофронтенды.. 33

Принципы работы микросервисов. 35

Разделение на домены.. 36

Культура автоматизации. 36

Скрытые детали реализации. 36

Децентрализованное управление. 36

Независимое развертывание. 36

Изоляция сбоев. 37

Хорошая наблюдаемость. 37

Применение принципов к микрофронтендам.. 37

Разделение на домены.. 37

Культура автоматизации. 38

Сокрытие деталей реализации. 38

Децентрализованное управление. 38

Независимое развертывание. 38

Изоляция сбоев. 39

Хорошая наблюдаемость. 39

Микрофронтенды не универсальное решение. 39

Резюме. 40

ГЛАВА 3. Микрофронтенд-архитектуры и связанные с ними трудности. 41

Структура принятия решений. 41

Определение микрофронтендов. 42

Предметно-ориентированный подход к микрофронтендам.. 43

Как определить ограниченный контекст. 45

Композиция микрофронтендов. 46

Маршрутизация для микрофронтендов. 48

Взаимодействие между микрофронтендами. 50

Микрофронтенды на практике. 53

Zalando. 53

HelloFresh. 53

Allegro Tech. 53

Spotify. 54

SAP. 55

OpenTable. 55

DAZN.. 55

Резюме. 56

ГЛАВА 4. Типы микрофронтенд-архитектуры.. 57

Структура принятия решений в действии. 57

Вертикальное разделение. 58

Горизонтальное разделение. 59

Анализ архитектуры.. 61

Архитектура и компромиссы.. 62

Архитектуры с вертикальным разделением.. 63

Оболочка приложения. 63

Сложности. 65

Реализация системы проектирования. 72

Простота и скорость разработки. 75

SEO-оптимизация. 75

Производительность и микрофронтенды.. 76

Доступные фреймворки. 79

Примеры применения. 80

Характеристики архитектуры.. 81

Архитектуры с горизонтальным разделением.. 83

На стороне клиента. 84

Сложности. 87

SEO-оптимизация. 94

Простота и скорость разработки. 95

Примеры применения. 96

Module Federation. 97

Iframe. 103

Веб-компоненты.. 110

На стороне сервера. 114

На границе сети. 124

Резюме. 128

ГЛАВА 5. Техническая реализация микрофронтендов. 129

Проект. 129

Введение в Module Federation. 132

Техническая реализация. 134

Структура проекта. 134

Оболочка приложения. 136

Микрофронтенд аутентификации. 142

Микрофронтенд каталога. 144

Микрофронтенд управления аккаунтами. 146

Развитие проекта. 150

Внедрение традиционного приложения. 150

Разработка интерфейса оформления заказа. 152

Реализация динамических удаленных контейнеров. 154

Зависимость от webpack. 154

Резюме. 155

ГЛАВА 6. Создание и развертывание микрофронтендов. 157

Принципы автоматизации. 158

Быстрая обратная связь. 159

Частые итерации. 160

Поддержка команд. 161

Установка ограничений. 161

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

Простота и скорость разработки. 162

Горизонтальное и вертикальное разделение. 163

Шаблоны микрофронтендов. 164

Стратегия деления на среды.. 165

Контроль версий. 165

Монорепозиторий. 165

Несколько репозиториев. 169

Возможное будущее для системы контроля версий. 172

Стратегии непрерывной интеграции. 173

Тестирование микрофронтендов. 174

Функции проверки соответствия. 178

Операции, специфические для микрофронтендов. 180

Стратегии развертывания. 181

Сине-зеленое развертывание и канареечные релизы.. 181

Паттерн “душитель”. 184

Наблюдаемость. 186

Резюме. 187

ГЛАВА 7. Конвейер автоматизации для микрофронтендов:
практический пример. 189

Подготовка. 189

Контроль версий. 191

Инициализация конвейера. 192

Проверка качества кода. 193

Сборка. 194

Проверка после сборки. 195

Развертывание. 197

Итоги по стратегии автоматизации. 197

Резюме. 198

ГЛАВА 8. Бэкенд-архитектуры, совместимые с микрофронтендами. 199

Интеграция API и микрофронтенды.. 199

Работа со словарем сервисов. 201

Работа со шлюзом API 208

Работа с паттерном BFF. 213

Использование GraphQL с микрофронтендами. 218

Рекомендации. 222

Резюме. 226

ГЛАВА 9. Миграция с монолита на микрофронтенды: практический пример  227

Контекст. 228

Стек технологий. 228

Взаимодействие пользователя с платформой. 229

Технические цели. 232

Стратегия миграции. 233

Структура принятия решений в действии. 233

Разделение одностраничного приложения на несколько поддоменов. 237

Выбор технологий. 240

Детали реализации. 244

Задачи оболочки приложения. 244

Инициализация приложения. 244

Связь для обмена данными. 245

Интеграция бэкенда. 247

Интеграция аутентификации в микрофронтенды.. 247

Управление зависимостями. 250

Интеграция дизайна. 251

Общие компоненты.. 252

Реализация канареечных релизов. 253

Локализация. 255

Резюме. 256

ГЛАВА 10. Внедрение микрофронтендов в организации. 259

Зачем нам микрофронтенды?. 259

Связь между организациями и программной архитектурой. 260

Как комитеты изобретают новое?. 261

Команды по функциям и команды по компонентам.. 264

Реализация системы управления для потоков коммуникации. 267

Запрос комментариев. 267

Реестр архитектурных решений. 268

Совершенствование потоков коммуникации. 270

Работай, начиная с конца. 270

Сообщество практиков и общие собрания. 271

Управление внешними зависимостями. 272

Децентрализованная организация. 274

Децентрализация и микрофронтенды.. 276

Резюме. 278

ПРИЛОЖЕНИЕ. Что сами разработчики и архитекторы думают
о микрофронтендах. 279

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

Лука Меццалира

Лука Меццалира — вице-президент по архитектуре в облачном стриминговом сервисе DAZN с более чем 15-летним опытом работы, архитектор решений на платформе AWS, всемирно известный спикер и автор. На протяжении последних 18 лет занимается созданием фронтендов для облачных приложений и сервисов, работал над передовыми проектами для мобильных, настольных и веб-приложений, телевизоров, приставок и встраиваемых устройств. В свободное время пишет для национальных и международных технических журналов, также является рецензентом в издательствах APress, Packt Publishing, Pragmatic Bookshelf и O’Reilly.

Опубликовано

Новинка: “WebAssembly. Практическое руководство”

WebAssembly. Практическое руководств

Базовая книга о технологии WebAssembly, позволяющей писать браузерный код на многих распространённых языках программирования и интегрировать этот код с JavaScript. В книге избран проектный подход и рассказано, как при помощи библиотек и функций WebAssembly переносить и переиспользовать в веб-приложениях код на C++, Rust и языках для платформы .NET. Рассмотрено, как создавать децентрализованные приложения и средства для периферийных вычислений с повышенными требованиями к безопасности, производительности и интероперабельности при работе в браузере.  Особое внимание уделено библиотеке Tensorflow.js, поддерживающей глубокое обучение в браузере на основе пользовательских запросов.

Для веб-разработчиков и исследователей языков программирования

Животное на обложке — это норвич-терьер. Эти бесстрашные, активные и ласковые собачки были популярны среди студентов Кембриджского университета в 1870-х годах, которые держали их в общежитиях в качестве домашних животных. В США норвичи добились успеха в охоте как на грызунов, так и на лис, поскольку их небольшой размер позволял забираться в узкие норы, в которые гончие залезть не могли.

The Definitive Guide

Эффективный кроссплатформенный код

Перед вами подробное и доступное введение в одну из наиболее революционных технологий современной IT-индустрии.
Исходно язык WebAssembly возник как средство, позволяющее внедрять в браузер иные языки кроме JavaScript, а сегодня превратился в многофункциональный набор инструментов, обеспечивающих переносимость, высокую производительность, безопасность и многоразовость браузерного кода. Сегодня на WebAssembly можно писать для разнообразных платформ, и их круг постоянно расширяется.

Предлагается поступательное введение в технологию: в рамках книги разобрано несколько постепенно усложняющихся примеров, в которых вы научитесь при помощи WebAssembly внедрять в браузер код C++, Rust, .NET, интегрировать в веб-приложение библиотеку машинного обучения Tensorflow.js. Изложенный материал будет полезен при разработке встраиваемых систем, в научных вычислениях, при создании стартапов и повышении производительности и интероперабельности имеющихся продуктов.

  • Как WebAssembly способствует улучшенной переносимости кода с платформы на платформу
  • Как переиспользовать имеющиеся программные ресурсы и развертывать их в разных средах и контекстах
  • Как WebAssembly повышает устойчивость приложения к известным уязвимостям
  • Как WebAssembly помогает развертывать унаследованный код в веб-приложениях
  • Как расширить пользовательскую аудиторию веб-приложения
  • Как при помощи WebAssembly писать децентрализованные приложения и выполнять периферийные вычисления
  • Как интегрировать JavaScript с другими языками для повышения производительности, безопасности и быстродействия приложений и сайтов

Книгу “WebAssembly. Практическое руководство” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие…………………………………………………………………………………………….. 9

Условные обозначения, используемые в этой книге………………………………………………………………. 10

Использование примеров программного кода………………………………………………………………………… 11

Онлайн-обучение O’Reilly…………………………………………………………………………………………………………. 11

Как с нами связаться………………………………………………………………………………………………………………….. 11

Благодарности…………………………………………………………………………………………………………………………… 12

Глава 1. Знакомство с WebAssembly……………………………………………………….. 15

Что WebAssembly может вам предложить……………………………………………………………………………….. 15

История развития веба………………………………………………………………………………………………………………. 18

Истоки JavaScript……………………………………………………………………………………………………………………….. 19

Эволюция веб-платформ…………………………………………………………………………………………………………… 21

Native Client (NaCl)…………………………………………………………………………………………………………………….. 24

asm.js…………………………………………………………………………………………………………………………………………… 26

Появление WebAssembly…………………………………………………………………………………………………………… 28

Глава 2. Нечто вроде “Hello, World”………………………………………………………. 31

Текстовый формат WebAssembly — Wat (WebAssembly Text Format)………………………………….. 32

Преобразование Wat в Wasm……………………………………………………………………………………………………. 36

Выполнение Wasm в Repl………………………………………………………………………………………………………….. 38

Выполнение WebAssembly в браузере…………………………………………………………………………………….. 39

Глава 3. Модули в WebAssembly…………………………………………………………….. 43

Структура модуля……………………………………………………………………………………………………………………… 44

Изучение секций модуля……………………………………………………………………………………………………………. 46

Работа с модулями…………………………………………………………………………………………………………………….. 49

Будущая интеграция с модулями ES6……………………………………………………………………………………… 55

Глава 4. Память в WebAssembly……………………………………………………………… 57

Типизированные массивы…………………………………………………………………………………………………………. 58

Объекты Memory в WebAssembly……………………………………………………………………………………………… 62

Использование Memory API в WebAssembly……………………………………………………………………………. 65

И напоследок строки…………………………………………………………………………………………………………………. 70

Глава 5. Совместное использование C++ и WebAssembly……………………….. 77

Функции в C………………………………………………………………………………………………………………………………… 78

Всё усложняется………………………………………………………………………………………………………………………… 87

C/C++ и Webassembly………………………………………………………………………………………………………………… 95

Наконец-то “Hello, World!” на WebAssembly…………………………………………………………………………. 101

Глава 6. Применение WebAssembly: традиционный код под браузером.. 105

Программа “Hello, World!” — теперь настоящая…………………………………………………………………… 106

Перенос стороннего кода………………………………………………………………………………………………………… 111

Проект libsodium………………………………………………………………………………………………………………………. 125

Глава 7. Таблицы в WebAssembly…………………………………………………………. 127

Статическое и динамическое связывание……………………………………………………………………………… 127

Создание объектов Table в модулях………………………………………………………………………………………. 132

Динамическое связывание в WebAssembly……………………………………………………………………………. 135

Глава 8. WebAssembly в серверных приложениях…………………………………. 139

Нативные расширения для Node.js………………………………………………………………………………………… 140

WebAssembly и Node.js……………………………………………………………………………………………………………. 144

“Атака на цепочку поставок”………………………………………………………………………………………………….. 147

WebAssembly и Deno……………………………………………………………………………………………………………….. 148

Взгляд в будущее……………………………………………………………………………………………………………………… 152

Глава 9. WebAssembly за работой: TensorFlow.js…………………………………… 155

Аппаратная платформа…………………………………………………………………………………………………………… 156

Playground…………………………………………………………………………………………………………………………………. 157

TensorFlow.js…………………………………………………………………………………………………………………………….. 158

Серверный модуль на WebAssembly……………………………………………………………………………………… 161

Глава 10. Rust………………………………………………………………………………………. 165

Введение в Rust………………………………………………………………………………………………………………………… 166

Rust и WebAssembly…………………………………………………………………………………………………………………. 171

wasm-bindgen……………………………………………………………………………………………………………………………. 175

Разработка кода для входа и выхода из браузера……………………………………………………………….. 182

Глава 11. Системный интерфейс WebAssembly (WASI)…………………………. 189

Системный интерфейс WebAssembly (WASI)………………………………………………………………………… 189

Безопасность на основе возможностей………………………………………………………………………………….. 198

Полная картина WebAssembly……………………………………………………………………………………………….. 202

Глава 12. Расширение платформы WebAssembly………………………………….. 207

Время выполнения WASI………………………………………………………………………………………………………… 208

Множественные возвращаемые значения……………………………………………………………………………… 212

Ссылочные типы……………………………………………………………………………………………………………………… 214

Связывание модулей……………………………………………………………………………………………………………….. 218

Тестирование функций……………………………………………………………………………………………………………. 223

Другие предложения……………………………………………………………………………………………………………….. 226

Глава 13. WebAssembly и .NET……………………………………………………………… 229

.NET и Wasmtime……………………………………………………………………………………………………………………… 230

Blazor………………………………………………………………………………………………………………………………………… 234

Платформа Uno………………………………………………………………………………………………………………………… 245

Глава 14. Использование AssemblyScript и WebAssembly………………………. 251

“Вовсе не компилятор TypeScript для WebAssembly”…………………………………………………………… 253

Простой пример……………………………………………………………………………………………………………………….. 255

Сборка “мусора” и среда выполнения AssemblyScript…………………………………………………………. 260

Стандартная библиотека ассемблера…………………………………………………………………………………… 261

Загрузчик AssemblyScript………………………………………………………………………………………………………… 262

Глава 15. Прикладной WebAssembly: в облаке и на границах………………. 267

Кратко о моем опыте работы…………………………………………………………………………………………………. 267

Наша отрасль развивается……………………………………………………………………………………………………… 269

Fastly Compute@Edge……………………………………………………………………………………………………………… 274

Krustlet………………………………………………………………………………………………………………………………………. 276

Suborbital…………………………………………………………………………………………………………………………………… 277

WasmEdge…………………………………………………………………………………………………………………………………. 279

wasmCloud………………………………………………………………………………………………………………………………… 282

Глава 16. Прикладной WebAssembly: децентрализованные приложения 287

Централизация против децентрализации……………………………………………………………………………… 287

От Bitcoin к Ethereum……………………………………………………………………………………………………………….. 289

Как вы решаете проблему, подобную проблеме остановки?………………………………………………. 291

ewasm………………………………………………………………………………………………………………………………………… 293

Polkadot…………………………………………………………………………………………………………………………………….. 295

InterPlanetary File System (IPFS)……………………………………………………………………………………………… 296

Глава 17. WebAssembly и другие языки программирования…………………. 305

TinyGo……………………………………………………………………………………………………………………………………….. 305

Artichoke……………………………………………………………………………………………………………………………………. 311

Swift…………………………………………………………………………………………………………………………………………… 312

Java……………………………………………………………………………………………………………………………………………. 315

Kotlin…………………………………………………………………………………………………………………………………………. 318

Zig………………………………………………………………………………………………………………………………………………. 318

Grain………………………………………………………………………………………………………………………………………….. 322

И что теперь?……………………………………………………………………………………………………………………………. 323

Приложение. Установка инструментов WebAssembly…………………………… 325

Установка WebAssembly Binary Toolkit (WABT)………………………………………………………………….. 325

Установка LLVM……………………………………………………………………………………………………………………… 325

Установка Emscripten………………………………………………………………………………………………………………. 326

Установка Wasm3……………………………………………………………………………………………………………………. 326

Установка Wasmtime………………………………………………………………………………………………………………. 327

Установка Wasmer…………………………………………………………………………………………………………………… 327

Установка инструментов Rust………………………………………………………………………………………………… 327

Установка инструментов .NET……………………………………………………………………………………………….. 328

Установка AssemblyScript……………………………………………………………………………………………………….. 329

Установка IPFS………………………………………………………………………………………………………………………… 329

Установка TinyGo……………………………………………………………………………………………………………………. 329

Установка Artichoke………………………………………………………………………………………………………………… 329

Установка SwiftWasm……………………………………………………………………………………………………………… 329

Установка Zig и Grain………………………………………………………………………………………………………………. 330

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

Об авторе……………………………………………………………………………………………… 335

Об изображении на обложке………………………………………………………………… 336

Brian Sletten

Брайан Слеттен (Brian Sletten) – широко эрудированный программист. Разрабатывал приложения для розничной торговли, банковской сферы, издательского дела, онлайн-игр, оборонной сферы, финансов, гостиничного бизнеса и здравоохранения. За годы работы научился сочетать надёжные решения нетривиальных задач с внедрением самых передовых технологий. Именно поэтому он высоко оценивает потенциал WebAssembly.

Опубликовано

Супер бестселлер: “Python для гиков”

Python для гиков

Книга подробно рассказывает о разработке, развертывании и поддержке крупномасштабных проектов на Python. Представлены такие концепции, как итераторы, генераторы, обработка ошибок и исключений, обработка файлов и ведение журналов. Приведены способы автоматизации тестирования приложений и разработки через тестирование (TDD). Рассказано о написании приложений с использованием кластера Apache Spark для обработки больших данных, о разработке и развертывании бессерверных программ в облаке на примере Google Cloud Platform (GCP), о создании веб-приложений и REST API, использовании среды Flask. Показаны способы применения языка для создания, обучения и оценки моделей машинного обучения, а также их развертывания в облаке, описаны приемы использования Python для извлечения данных с сетевых устройств и систем управления сетью (NMS).

Для программистов

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

Гик — человек, глубоко погруженный в мир компьютерных технологий, стремящийся досконально разобраться в наиболее важных мелочах и нюансах. Эта книга написана для гиков, увлеченных программированием на Python.

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

Вы изучите:

  • Принципы разработки и управления сложными проектами
  • Способы автоматизации тестирования приложений и разработки через тестирование (TDD)
  • Многопоточность и многопроцессорность в Python
  • Написание приложений с использованием кластера Apache Spark для обработки больших данных
  • Разработку и развертывание бессерверных программ в облаке на примере Google Cloud Platform (GCP)
  • Создание на Python веб-приложений и REST API, использование среды Flask
  • Использование Python для извлечения данных с сетевых устройств и систем управления сетью (NMS)
  • Применение Python для анализа данных и машинного обучения

Книгу “Python для гиков” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Об авторе. 14

О рецензентах. 15

Предисловие. 16

Для кого предназначена эта книга. 16

О чем эта книга. 17

Как получить максимальную отдачу от книги. 18

Загрузка файлов с примерами кода. 18

Условные обозначения. 19

Раздел 1. Python помимо основ. 21

Глава 1. Оптимальный жизненный цикл разработки на Python. 23

Культура и сообщество Python. 23

Этапы проекта Python. 26

Стратегия процесса разработки. 27

Итерация по этапам. 28

Стремление к MVP в первую очередь. 28

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

Эффективное документирование кода Python. 32

Комментарии Python. 32

Docstring. 32

Документация на уровне функций или классов. 34

Разработка эффективной схемы именования. 35

Методы. 36

Переменные. 36

Константы. 37

Классы. 37

Пакеты. 38

Модули. 38

Соглашения об импорте. 38

Аргументы. 38

Полезные инструменты. 38

Системы контроля версий. 39

Что не стоит хранить в репозитории системы контроля версий. 39

Понимание стратегий развертывания кода. 40

Пакетная разработка. 40

Среды разработки Python. 42

IDLE. 42

Sublime Text 42

Atom.. 42

PyCharm.. 42

Visual Studio Code. 43

PyDev. 43

Spyder 43

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

Вопросы. 44

Дополнительные ресурсы. 44

Ответы. 44

Глава 2. Использование модулей для сложных проектов. 45

Технические требования. 46

Знакомство с модулями и пакетами. 46

Импорт модулей. 46

Оператор import 48

Оператор __import__. 52

Инструмент importlib.import_module. 52

Абсолютный и относительный импорт. 53

Загрузка и инициализация модуля. 55

Загрузка модуля. 55

Установка параметров для специальных переменных. 55

Выполнение кода. 56

Стандартные модули. 57

Написание многоразовых модулей. 58

Независимая функциональность. 58

Генерализация функционала. 59

Традиционный стиль программирования. 60

Четко определенная документация. 61

Сборка пакетов. 62

Именование. 63

Файл инициализации пакета. 63

Сборка пакета. 63

Доступ к пакетам из любого расположения. 66

Общий доступ к пакету. 70

Создание пакета в соответствии с рекомендациями PyPA.. 70

Установка из локального исходного кода с помощью pip. 73

Публикация пакета в Test PyPI 75

Установка пакета из PyPI 76

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

Вопросы. 77

Дополнительные ресурсы. 77

Ответы. 78

Глава 3. Расширенное объектно-ориентированное программирование
на Python. 79

Технические требования. 80

Знакомство с классами и объектами. 80

Различия между атрибутами класса и атрибутами экземпляра. 80

Конструкторы и деструкторы классов. 83

Различия между методами класса и методами экземпляра. 84

Специальные методы. 85

Принципы ООП.. 86

Инкапсуляция данных. 87

Объединение данных и действий. 87

Сокрытие информации. 89

Защита данных. 91

Традиционный подход к использованию геттеров и сеттеров. 91

Использование декоратора property. 92

Расширение классов с помощью наследования. 94

Простое наследование. 94

Множественное наследование. 96

Полиморфизм. 97

Перегрузка метода. 97

Переопределение метода. 98

Абстракция. 100

Композиция как альтернативный подход к проектированию.. 102

Утиная типизация в Python. 104

Когда не стоит использовать ООП в Python. 105

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

Вопросы. 106

Дополнительные ресурсы. 107

Ответы. 107

Раздел 2. Расширенные концепции программирования. 109

Глава 4. Библиотеки Python для продвинутого программирования. 111

Технические требования. 111

Введение в контейнеры данных Python. 112

Строки. 112

Списки. 113

Кортежи. 114

Словари. 114

Множества. 115

Итераторы и генераторы для обработки данных. 116

Итераторы. 116

Генераторы. 120

Обработка файлов в Python. 122

Операции с файлами. 123

Обработка ошибок и исключений. 126

Работа с исключениями в Python. 127

Вызов исключений. 129

Определение пользовательских исключений. 130

Модуль logging в Python. 131

Основные компоненты системы логирования. 132

Работа с модулем logging. 134

Что стоит и не стоит записывать в журнал. 140

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

Вопросы. 141

Дополнительные ресурсы. 141

Ответы. 141

Глава 5. Тестирование и автоматизация с помощью Python. 143

Технические требования. 144

Понимание различных уровней тестирования. 144

Модульное тестирование. 145

Интеграционное тестирование. 145

Системное тестирование. 145

Приемочное тестирование. 146

Работа с тестовыми фреймворками Python. 146

Работа с фреймворком unittest 148

Фреймворк тестирования pytest 157

Разработка через тестирование. 165

Красный. 165

Зеленый. 166

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

Автоматизированная непрерывная интеграция. 167

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

Вопросы. 168

Дополнительные ресурсы. 168

Ответы. 169

Глава 6. Дополнительные советы и приемы Python. 170

Технические требования. 170

Расширенные приемы использования функций в Python. 171

Функции counter, itertools и zip для итерационных задач. 171

Использование методов filter, map и reduce для преобразования данных. 175

Создание лямбда-функций. 178

Внедрение одной функции в другую.. 179

Изменение поведения функции с помощью декораторов. 181

Расширенные концепции структур данных. 187

Внедрение словаря в словарь. 187

Использование включений. 190

Введение в Pandas DataFrame. 192

Операции с объектом DataFrame. 193

Сложные случаи использования DataFrame. 198

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

Вопросы. 204

Дополнительные ресурсы. 204

Ответы. 204

Раздел 3. Масштабирование за пределы одного потока. 205

Глава 7. Многопроцессорная обработка, многопоточность
и асинхронное программирование. 207

Технические требования. 208

Многопоточность в Python и ее ограничения. 208

Слепое пятно Python. 209

Ключевые компоненты многопоточного программирования на Python. 210

Практический пример: многопоточное приложение для загрузки файлов
с Google Диска. 218

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

Создание нескольких процессов. 221

Обмен данными между процессами. 224

Обмен объектами между процессами. 228

Синхронизация процессов. 230

Практический пример: многопроцессорное приложение
для загрузки файлов с Google Диска. 231

Асинхронное программирование для адаптивных систем. 233

Модуль asyncio. 234

Распределение задач с помощью очередей. 236

Практический пример: асинхронное приложение для загрузки файлов
с Google Диска. 238

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

Вопросы. 240

Дополнительные ресурсы. 241

Ответы. 241

Глава 8. Масштабирование Python с помощью кластеров. 242

Технические требования. 243

Возможности кластеров для параллельной обработки. 243

Hadoop MapReduce. 244

Apache Spark. 246

Устойчивые распределенные наборы данных (RDD) 249

Операции с RDD.. 249

Создание RDD.. 250

PySpark для параллельной обработки данных. 251

Создание программ SparkSession и SparkContext 253

PySpark для операций с RDD.. 254

PySpark DataFrames 257

PySpark SQL. 261

Практические примеры использования Apache Spark и PySpark. 262

Пример 1: калькулятор числа π в Apache Spark. 262

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

Вопросы. 269

Дополнительные ресурсы. 269

Ответы. 270

Глава 9. Программирование на Python для облака. 271

Технические требования. 271

Знакомство с облачными возможностями для приложений Python. 272

Среды разработки Python для облака. 272

Облачные среды выполнения для Python. 274

Создание веб-сервисов Python для облачного развертывания. 276

Использование Google Cloud SDK.. 277

Использование веб-консоли GCP. 284

Использование Google Cloud Platform для обработки данных. 287

Введение в основы Apache Beam.. 287

Конвейеры Apache Beam.. 289

Создание конвейеров для Cloud Dataflow.. 294

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

Вопросы. 299

Дополнительные ресурсы. 299

Ответы. 300

Раздел 4. Python для веб-разработки, облака и сети. 301

Глава 10. Использование Python для разработки веб-приложений
и REST API 303

Технические требования. 304

Требования к веб-разработке. 304

Веб-фреймворки. 304

Пользовательский интерфейс. 305

Веб-сервер/сервер приложений. 306

База данных. 307

Безопасность. 307

API 307

Документация. 307

Знакомство с фреймворком Flask. 308

Создание базового веб-приложения с маршрутизацией. 308

Обработка запросов с разными типами HTTP-методов. 310

Отображение статического и динамического контента. 312

Извлечение параметров из HTTP-запроса. 313

Взаимодействие с системами управления базами данных. 315

Обработка ошибок и исключений в веб-приложениях. 318

Создание REST API 321

Использование Flask для REST API 322

Разработка REST API для доступа к базе данных. 324

Пример: создание веб-приложения с помощью REST API 326

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

Вопросы. 332

Дополнительные ресурсы. 332

Ответы. 332

Глава 11. Разработка микросервисов на Python. 334

Технические требования. 334

Введение в микросервисы. 335

Практические рекомендации по созданию микросервисов. 337

Создание приложений на базе микросервисов. 338

Варианты разработки микросервисов на Python. 339

Варианты развертывания микросервисов. 340

Разработка приложения на основе микросервисов. 341

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

Вопросы. 352

Дополнительные ресурсы. 352

Ответы. 353

Глава 12. Создание бессерверных функций на Python. 354

Технические требования. 355

Знакомство с бессерверными функциями. 355

Преимущества бессерверных функций. 356

Варианты использования. 356

Варианты развертывания бессерверных функций. 357

Написание бессерверных функций. 358

Создание облачной функции на основе HTTP с помощью консоли GCP. 359

Практический пример: создание приложения для уведомлений
о событиях в облачном хранилище. 363

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

Вопросы. 367

Дополнительные ресурсы. 367

Ответы. 367

Глава 13. Python и машинное обучение. 369

Технические требования. 370

Введение в машинное обучение. 370

Использование Python для машинного обучения. 372

Библиотеки машинного обучения в Python. 372

Рекомендации по обучающим данным. 374

Создание и оценка модели машинного обучения. 375

Процесс построения модели машинного обучения. 375

Создание примера машинного обучения. 376

Оценка модели с помощью кросс-валидации и тонкой настройки гиперпараметров. 381

Сохранение ML-модели в файл. 384

Развертывание и прогнозирование ML-модели в GCP Cloud. 385

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

Вопросы. 388

Дополнительные ресурсы. 388

Ответы. 389

Глава 14. Python для автоматизации сети. 390

Технические требования. 391

Введение в автоматизацию сети. 391

Плюсы и минусы автоматизации сети. 392

Варианты использования. 393

Взаимодействие с сетевыми устройствами. 394

Протоколы для взаимодействия с сетевыми устройствами. 394

Взаимодействие с сетевыми устройствами с помощью библиотек Python
на основе SSH.. 397

Взаимодействие с сетевыми устройствами с помощью NETCONF. 404

Интеграция с системами управления сетью.. 408

Использование конечных точек сервиса определения местоположения. 409

Получение токена аутентификации. 410

Получение сетевых устройств и инвентаризация интерфейсов. 411

Обновление порта на сетевом устройстве. 412

Интеграция с событийно-ориентированными системами. 414

Создание подписок для Apache Kafka. 416

Обработка событий от Apache Kafka. 417

Продление и удаление подписки. 418

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

Вопросы. 419

Дополнительные ресурсы. 419

Ответы. 420

 

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

Азиф Мухаммад

Мухаммад Азиф — программный архитектор, обладающий обширным опытом в области веб-разработки, автоматизации сетей и облаков, виртуализации и машинного обучения. ,Возглавлял многие крупномасштабные проекты в различных коммерческих компаниях. В 2012 году, получил степень доктора философии в области компьютерных систем в Карлтонском университете (Оттава, Канада) и в настоящее время работает в компании Nokia в качестве ведущего специалиста.

Опубликовано

Новинка: “Создание сайтов и лендингов на WordPress и Elementor с нуля”

Создание сайтов и лендингов на WordPress и Elementor с нуля

Рассказано о выборе хостинга и регистрации домена для сайта. Подробно рассмотрена установка и настройка WordPress. Рассказано об установке и настройке тем (шаблонов). Дана инструкция по созданию «шапки» сайта, многоуровневого меню, адаптации дизайна для компьютеров, ноутбуков и различных типов мобильных устройств. Рассматриваются наиболее популярные плагины, способы публикации на сайте видеороликов, аудиофайлов, опросов. Описаны способы обработки графики. Приведена подробная инструкция по созданию   лендинга с использованием конструктора Elementor. От читателя не требуется наличия профессиональных знаний в сфере программирования и дизайна.

Для начинающих разработчиков

Создай свой сайт с WordPress и Elementor!

WordPress — бесплатная система управления содержимым сайта с открытым исходным кодом. С помощью WordPress можно создавать как простые сайты «визитки», так и сложные проекты — блоги, корпоративные порталы, интернет-магазины.

Прочитав книгу, вы узнаете, как установить и настроить WordPress, как выбрать подходящий хостинг и самостоятельно зарегистрировать домен. Вы научитесь создавать сайты с нуля, адаптированные для компьютеров, ноутбуков и различных типов мобильных устройств. С помощью конструктора Elementor вы сможете разработать лендинг с современным адаптивным дизайном. Книга поможет выбрать подходящий шаблон оформления, подготовить необходимые графические элементы и иллюстрации. Используя плагины, вы превратите ваш сайт в популярный блог или корпоративный портал.

Эта книга поможет вам с нуля построить свой первый веб-сайт на WordPress и Elementor без знаний программирования и навыков дизайна, даже если до этого вы никогда не занимались веб-разработкой.

Вы узнаете, как:

  • выбрать хостинг для сайта и зарегистрировать домен,
  • самостоятельно установить и настроить WordPress,
  • создать современный веб-сайт,
  • подключить шаблоны оформления,
  • создать лендинг с адаптивным дизайном,
  • настроить необходимые для вашего сайта плагины,
  • создать элементы графического оформления для сайта,
  • разработать современный дизайн одностраничного сайта с использованием конструктора Elementor.

Книгу “Создание сайтов и лендингов на WordPress и Elementor с нуля” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие. 9

Об этой книге. 9

История WordPress. 11

Почему стоит делать сайты на WordPress?. 12

Используемые в книге обозначения. 13

Глава 1. Домен и хостинг. 15

Основные понятия. 15

Сайт. 15

Хостинг. 15

Домен. 16

Покупка домена и хостинга для сайта. 17

Пример настройки службы DNS. 22

Резюме. 24

Глава 2. Создаем сайт на WordPress. 25

О бесплатном хостинге. 25

Пример 1. Бесплатный хостинг на Sprinthost.ru. 26

Шаг 1: регистрация. 26

Шаг 2: изучаем панель управления хостингом.. 27

Шаг 3: установка WordPress. 28

Пример 2. Бесплатное создание сайта на хостинге Beget 31

Шаг 1: получаем доступ на хостинг. 31

Шаг 2: устанавливаем на хостинг WordPress. 32

Запуск сайта. 33

Пример 3. Платное создание сайта на хостинге Timeweb. 35

Шаг 1: регистрация и покупка хостинга на Timeweb. 35

Шаг 2: покупаем домен на Timeweb. 39

Шаг 3: чистим хостинг. 40

Шаг 4: установка WP на хостинг Timeweb. 40

В чем разница двух панелей управления?. 42

Кодекс веб-мастера. 43

Глава 3. Первичные настройки WP-сайта после установки на хостинг. 45

Делаем все востребованные обновления. 45

Обновление версии PHP. 46

Настройка консоли сайта. 47

Раздел Общие настройки. 48

Раздел Чтение (главной страницы) 49

Раздел Постоянные ссылки. 50

Раздел Обсуждения. 51

Первые плагины.. 51

Латинизация ссылок: плагин Rus-To-Lat 51

Делаем ссылки короткими: плагин Bring Back the Get Shortlink Button. 54

Создаем заглушку: плагин WP Maintenance Mode. 55

Исключаем спам на своем сайте: плагин Akismet Spam Protection. 56

Глава 4. Выбор и установка темы.. 61

Пример установки темы через поиск. 61

Пример установки темы из ZIP-архива. 62

Замена темы.. 62

Структура темы WordPress. 63

Удаление лишних записей и страниц, присутствующих в теме по умолчанию.. 64

Проверка темы на паразитные ссылки: плагин Theme Authenticity Checker. 66

Граватар — аватар для сайта. 67

Фавикон — значок сайта. 70

Установка фавикона на WP-сайт с помощью плагина
Favicon by RealFaviconGenerator. 74

Логотип. 75

Установка фона сайта. 78

Глава 5. Шапка и подвал сайта. 79

Шапка сайта. 79

Пример создания шапки в программе XHeader. 80

Добавление шапки на сайт. 84

Пример оформления шапки сайта в теме Astra. 84

Добавим на шапку свои соцсети. 85

Добавим на шапку свою почту. 87

Остальные настройки шапки. 88

Корректировка вида шапки для показа сайта на смартфоне. 89

Подвал сайта. 90

Содержание подвала сайта. 91

Советы.. 92

Пример оформления подвала сайта в теме Astra. 92

Редактируем нижний колонтитул: плагин Remove Footer Credit 94

Использование пространства подвала: плагин Podamibe
Simple Footer Widget Area. 96

Глава 6. Создание страниц сайта. Виджеты.. 97

Создаем обязательные страницы.. 97

Колонки на странице. 98

Виджеты.. 98

Настройка меню: плагин Simple page ordering. 101

HTML-карта сайта: плагин WP DS Blog Map. 102

Защита страниц сайта паролем.. 104

Рубрики (категории) и метки. 106

Создание рубрик. 106

Создание меток. 107

Создание записей. 108

Кнопка Наверх. 109

Плагин jQuery Smooth Scroll 109

Плагин WPFront Scroll Top. 110

Советы по структуре сайта. 111

Глава 7. Форма обратной связи. Создание кнопок. 113

Создание формы Контакты.. 113

Пример 1: плагин Contact Form by BestWebSoft 113

Настройки формы.. 115

Пример 2: плагин Contact Form 7. 117

Создание кнопки. 117

Ссылка на сайте на номер телефона, Skype и отправку СМС.. 119

Глава 8. Меню сайта. Политика конфиденциальности. 121

Создание меню.. 121

Оформление в меню главной страницы сайта. 123

Пример настройки вида меню для темы Astra на ПК.. 124

Пример настройки вида меню для темы Astra на смартфоне. 125

Политика конфиденциальности. 127

Создание политики конфиденциальности. 127

Исключаем из меню соглашение об обработке персональных данных. 130

Глава 9. Полезные плагины. Приемы работы с сайтом.. 135

Защита текста от копирования: плагин WP-CopyProtect 135

Оглавление: плагин Table of Contents Plus (TOC+) 136

Защита сайта от взлома: плагин Limit Login Attempts. 137

Как опубликовать на сайте видео?. 139

Берем видео с YouTube. 139

Способ 1: использование блока HTML. 139

Способ 2: использование блока YouTube. 141

Добавляем на сайт свое видео. 142

Публикуем на сайте звуковые (аудио) файлы.. 143

Публикация неуникального контента: плагин Yoast SEO.. 143

Опрос: плагин WP-Polls. 144

Выводим опрос на странице. 144

Размещаем опрос в сайдбаре. 146

Организация скачивания файла с сайта. 147

Установка цепочки «Хлебные крошки»:
плагины Head, Footer and Post Injections и Flexy Breadcrumb. 149

Глава 10. Наполнение сайта контентом.. 155

Блочный редактор контента Gutenberg. 155

Изменение размера шрифта в редакторе Gutenberg. 160

Классический редактор WordPress. 162

Плагин Classic Editor. 162

Текстовый редактор Advanced Editor Tools. 162

Изменение страниц WordPress на записи и обратно. 164

Создание гиперссылок. 165

Создание ссылки на файл. 166

Вставка баннера на сайт. 167

Загрузка в WordPress PDF-файлов. 168

Скриншот страниц сайта. 170

Глава 11. Работаем с изображениями. 173

Размер изображения. 173

Количество изображений на странице. 173

Правильно называем картинку для сайта. 173

Уменьшение веса картинок. 174

Сервис уменьшения веса изображений https://tinypng.com/ 174

Сжатие изображений: плагин EWWW Image Optimiser. 174

Графический редактор vistacreate. 177

Сервис работы с графикой Сanva. 178

Создание электронной подписи: сервис Signature Generator. 179

Настройка изображений в статьях WordPress. 180

Миниатюра статьи. 181

Грамотная загрузка изображений на сайт. 182

Защита изображений на сайте: плагин водяного знака Image Watermark. 185

Поиск изображений без авторских прав. 188

Ищем анимацию для сайта. 191

Создание слайдера: плагин Smart Slider 3. 194

Публикация слайдера. 199

Глава 12. Сайт на поддомене. 201

Создание поддомена 3-го уровня. 201

Глава 13. Elementor — конструктор лендингов. 207

Чем лендинг отличается от сайта?. 207

Установка Elementor. 209

Практический пример: первый экран лендинга. 210

Создание разделителя между экранами. 215

Добавление анимации. 217

Второй экран лендинга. 218

Третий экран лендинга. 221

Четвертый экран лендинга. 222

Пятый экран лендинга. 224

Шестой экран с формой сообщения от посетителя. 225

Настройка отступов. 226

О работе с графикой. 228

Глава 14. Elementor: инструменты и приемы работы.. 231

Адаптивность лендинга. 231

Включение лендинга в меню сайта. 234

Что дальше?. 234

Кнопка. 235

Блок Прогресс. 235

Динамичный фон. 236

Работа с шаблонами (темами) 238

Если вы случайно что-то нужное удалили… 240

Если лендинг «глючит» (о плохих особенностях Elementor) 241

Инструмент Навигатор. 241

Поиск виджетов (строка поиска Finder) 241

О шрифтах. 242

Стоит ли использовать Elementor PRO?. 243

Генерируем «рыбу» из текста. 244

Бесплатные изображения для лендинга. 245

Ленивая загрузка изображений. 246

Плагин a3 Lazy Load. 246

Плагин Smush — Lazy Load Images, Optimize & Compress Images. 248

Глава 15. Пример создания на Elementor сайта-визитки. 249

Начинаем работу: первый экран сайта-визитки. 249

Тиражирование экранов. 251

Высота макета. Настройка размеров изображения в секции. 252

Разделитель. 254

Положение объекта в секции. 254

Цвет кнопки. 255

Второй экран сайта-визитки. 256

Третий экран сайта-визитки. 257

Четвертый экран сайта-визитки. 258

Пятый экран сайта-визитки: спойлеры и аккордеоны.. 261

Шестой экран сайта-визитки. 262

Подключение меню сайта к Elementor 264

Ставим якорные ссылки. 265

Экран Наши услуги. 266

Шапка лендинга. 267

Якоря для меню шапки. 267

Соцсети. 269

Проверяем адаптивность. 271

Elementor: резюме. 271

Глава 16. Taplink — сервис мгновенного создания лендинга. 273

Предварительная информация. 273

Регистрация. 273

Создание сайта. 277

Создание ссылок. 279

Приложение. Глоссарий. 283

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

Молочков Владимир Петрович

Владимир Петрович Молочков — кандидат педагогических наук, преподаватель высшей квалификационной категории Политехнического колледжа Новгородского госуниверситета им. Ярослава Мудрого. Автор 18 книг по компьютерной тематике и более 200 статей в СМИ.