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

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

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

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

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

Встречайте хит: “Хакерство. Секреты мастерства”

Хакерство. Секреты мастерства

В сборнике избранных статей из журнала «Хакер» описаны способы поиска уязвимостей в сетевом оборудовании MikroTik и использования этого оборудования для постэксплуатации Windows. Показаны методы защиты MikroTik от хакерских атак. Рассказывается об эксплуатации XSS-уязвимостей DOM XSS с помощью Web Messaging, о поиске уязвимостей в приложениях Android на примере Viber и в драйвере AdGuard для Windows. Приводится подробное руководство по атакам NTLM Relay и защите от них. Даны инструкции по фаззингу JS-приложений при помощи Fuzzilli, описана ошибка use after free в движке Blink. Изложены практические способы реализации антиотладки в исполняемых файлах для Linux. Показано, как работает GRE-пивотинг поверх сетевого оборудования. Отдельная глава посвящена практическому способу спуфинга GPS.

Для читателей, интересующихся информационной безопасностью

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

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

  • осуществлять атаки NTLM Relay и защищаться от них,
  • искать уязвимости в сетевом оборудовании MikroTik и использовать его для постэксплуатации,
  • обезопасить MikroTik от хакерских атак,
  • обнаруживать и использовать уязвимости DOM XSS,
  • выполнять фаззинг JS-приложений с помощью Fuzzilli,
  • использовать ошибку use after free в движке Blink,
  • искать уязвимости в приложениях Android на примере Viber,
  • заставить исполняемые файлы Linux сопротивляться отладке,
  • выявить уязвимость в драйвере AdGuard для Windows,
  • осуществлять GRE-пивотинг поверх сетевого оборудования,
  • подделывать данные, передаваемые GPS-спутниками.

Информационная безопасность — чрезвычайно динамичная сфера, изменения в которой происходят стремительно. Новые уязвимости в операционных системах и программных продуктах обнаруживаются едва ли не каждый день, а разработчики в свою очередь оперативно выпускают закрывающие их обновления и патчи. Эта «борьба снаряда и брони» продолжается непрерывно на протяжении многих лет, поэтому для того, чтобы всегда быть в курсе событий, необходимо следить за новостями и читать профильные издания. Одно из них – журнал «Хакер», где публикуются опытные специалисты по информационной безопасности: исследователи, пентестеры, практикующие эксперты в сфере защиты данных.
Валентин Холмогоров, Ведущий редактор  журнала «Хакер»

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

  1. Caster Remix. Используем виртуальный MikroTik
    для постэксплуатации Windows (Caster)…………………………………………………. 11

Caster Remix……………………………………………………………………………………………………………………………….. 11

CHR Deploy………………………………………………………………………………………………………………………………… 12

VXLAN-туннелирование…………………………………………………………………………………………………………… 14

Атака…………………………………………………………………………………………………………………………………………… 16

Зачистка……………………………………………………………………………………………………………………………………… 16

Выводы……………………………………………………………………………………………………………………………………….. 17

  1. JavaScript альденте. Фаззим JS-движки при помощи Fuzzilli (sploitem [secware]) 19

Стенд…………………………………………………………………………………………………………………………………………… 19

JavaScript-движки……………………………………………………………………………………………………………….. 21

Подготовка фаззера…………………………………………………………………………………………………………………… 22

Сборка и фаззинг V8………………………………………………………………………………………………………………….. 25

Теория…………………………………………………………………………………………………………………………………. 25

Сборка…………………………………………………………………………………………………………………………………. 25

Фаззинг………………………………………………………………………………………………………………………………… 27

Сборка и фаззинг SpiderMonkey……………………………………………………………………………………………….. 28

Теория…………………………………………………………………………………………………………………………………. 28

Сборка…………………………………………………………………………………………………………………………………. 28

Фаззинг………………………………………………………………………………………………………………………………… 31

Сборка и фаззинг JavaScriptCore………………………………………………………………………………………………. 32

Теория…………………………………………………………………………………………………………………………………. 32

Сборка…………………………………………………………………………………………………………………………………. 32

Фаззинг………………………………………………………………………………………………………………………………… 34

Выводы……………………………………………………………………………………………………………………………………….. 35

  1. Жидкий хром. Как работает баг use after free в движке Blink (sploitem [secware]) 37

Стенд…………………………………………………………………………………………………………………………………………… 37

Теория…………………………………………………………………………………………………………………………………………. 39

Потоки сжатия……………………………………………………………………………………………………………………. 40

Promise…………………………………………………………………………………………………………………………………. 40

postMessage…………………………………………………………………………………………………………………………. 42

Запуск PoC………………………………………………………………………………………………………………………………….. 43

Анализ PoC…………………………………………………………………………………………………………………………………. 48

Анализ исходного кода……………………………………………………………………………………………………………… 49

Патч…………………………………………………………………………………………………………………………………………….. 53

Выводы……………………………………………………………………………………………………………………………………….. 53

  1. Препарируем Viber. Мини-гид по анализу приложений для Android (saruman9) 55

Цель…………………………………………………………………………………………………………………………………………….. 55

Разделяемые библиотеки…………………………………………………………………………………………………………… 56

Предварительные результаты анализа……………………………………………………………………………. 57

Функции………………………………………………………………………………………………………………………………………. 58

libFlatBuffersParser.so…………………………………………………………………………………………………………. 59

libsvg.so………………………………………………………………………………………………………………………………… 59

libnativehttp.so…………………………………………………………………………………………………………………….. 60

Другие библиотеки…………………………………………………………………………………………………………….. 61

Анализ цели………………………………………………………………………………………………………………………………… 61

Досягаемость функции………………………………………………………………………………………………………. 62

Фаззинг………………………………………………………………………………………………………………………………… 65

Harness……………………………………………………………………………………………………………………….. 67

Эксперименты и улучшения……………………………………………………………………………………………… 71

Выводы……………………………………………………………………………………………………………………………………….. 73

  1. Гид по NTLM Relay. Захватываем NTLM-аутентификацию
    для Relay-атаки (Владислав Дриев)………………………………………………………….. 75

Теория…………………………………………………………………………………………………………………………………………. 75

Захват с Responder…………………………………………………………………………………………………………………….. 77

Захват NTLM-аутентификации для Relay-атак………………………………………………………………………. 80

SMB (445/TCP)…………………………………………………………………………………………………………………………… 80

Coerce-атаки……………………………………………………………………………………………………………………….. 81

Ярлыки………………………………………………………………………………………………………………………………… 82

Триггерим вручную…………………………………………………………………………………………………… 83

MITM…………………………………………………………………………………………………………………………. 83

RPC (135/TCP)……………………………………………………………………………………………………………………………. 83

SweetPotato…………………………………………………………………………………………………………………………. 83

Триггерим вручную……………………………………………………………………………………………………………. 83

Пример получения аутентификации на DCE RPC…………………………………………………………… 84

HTTP (80/TCP)……………………………………………………………………………………………………………………………. 85

Coerce-атаки……………………………………………………………………………………………………………………….. 85

PrivExchange……………………………………………………………………………………………………………………….. 86

Триггерим вручную……………………………………………………………………………………………………………. 86

RemotePotato0……………………………………………………………………………………………………………………. 86

WCF (9389/TCP)…………………………………………………………………………………………………………………………. 87

Триггерим вручную……………………………………………………………………………………………………………. 88

RAW (произвольный TCP)…………………………………………………………………………………………………………. 88

Как получить NTLM-аутентификацию, если мешает NAT или МЭ……………………………………… 91

Бонус № 1……………………………………………………………………………………………………………………………………. 91

Бонус № 2……………………………………………………………………………………………………………………………………. 93

Защита………………………………………………………………………………………………………………………………………… 93

Выводы……………………………………………………………………………………………………………………………………….. 93

  1. Гид по NTLM Relay. Проводим Relay-атаки (Владислав Дриев)…………… 95

Клиенты………………………………………………………………………………………………………………………………………. 95

SMB (445/TCP)……………………………………………………………………………………………………………………. 95

LDAP (389/TCP, 636/TCP)……………………………………………………………………………………………….. 103

RPC (135/TCP)………………………………………………………………………………………………………………….. 109

HTTP (80/TCP)………………………………………………………………………………………………………………….. 112

Выводы……………………………………………………………………………………………………………………………………… 113

Бонус…………………………………………………………………………………………………………………………………………. 114

Защита………………………………………………………………………………………………………………………………………. 116

Итог…………………………………………………………………………………………………………………………………………… 116

  1. BloodHound. Натаскиваем ищейку на поиск NTLM Relay (Владислав Дриев) 117

Описание проблемы………………………………………………………………………………………………………………… 117

Анализ существующих решений……………………………………………………………………………………………. 118

Добавляем атрибуты……………………………………………………………………………………………………………….. 122

Пишем запросы………………………………………………………………………………………………………………………… 127

Выводы……………………………………………………………………………………………………………………………………… 134

  1. Как стать спутником. Спуфим GPS в 2023 году (qeewqq)………………….. 135

Теория……………………………………………………………………………………………………………………………………….. 135

GNSS………………………………………………………………………………………………………………………………….. 135

Частоты…………………………………………………………………………………………………………………………….. 136

Триангуляция и трилатерация………………………………………………………………………………………… 137

Простой способ определить координаты………………………………………………………………………. 138

TTFF…………………………………………………………………………………………………………………………………… 139

Практика…………………………………………………………………………………………………………………………………… 140

Оборудование…………………………………………………………………………………………………………………… 140

GPS-SDR-SIM……………………………………………………………………………………………………………………. 140

iPhone………………………………………………………………………………………………………………………………………… 145

На что обратить внимание……………………………………………………………………………………………………… 145

Выводы……………………………………………………………………………………………………………………………………… 146

  1. Неправильные эльфы. Учим исполняемые файлы Linux
    сопротивляться отладке (kclo3)…………………………………………………………….. 147

Language-theoretic Security и файлы-полиглоты……………………………………………………………………. 147

Parse tree differential attack……………………………………………………………………………………………………… 149

Requests smuggling в GitLab и Zoom……………………………………………………………………………………….. 149

Psychic Paper и CVE-2022-42855…………………………………………………………………………………….. 150

Доверенные сертификаты X.509 на произвольный домен……………………………………………. 150

ELF: запустить нельзя проанализировать……………………………………………………………………… 150

Парсеры ELF…………………………………………………………………………………………………………………………….. 151

Ядро ОС…………………………………………………………………………………………………………………………….. 151

Системные утилиты…………………………………………………………………………………………………………. 152

Отладчики, декомпиляторы, дизассемблеры, эмуляторы……………………………………………. 152

Ищем различия…………………………………………………………………………………………………………………………. 153

Фаззеры…………………………………………………………………………………………………………………………….. 153

Melkor………………………………………………………………………………………………………………………………… 154

Тестируем EDB…………………………………………………………………………………………………………………. 156

Проверяем GDB………………………………………………………………………………………………………………… 159

Radare2: r2hang………………………………………………………………………………………………………………… 160

Interactive Disassembler……………………………………………………………………………………………………. 165

Выводы……………………………………………………………………………………………………………………………………… 165

  1. DOM XSS через Web Messaging. Как работает легкий способ
    получить XSS с помощью postMessage (Андрей “W0lFreaK” Козлов)……….. 171

Что такое DOM?……………………………………………………………………………………………………………………….. 171

Как эксплуатируются DOM-based XSS?………………………………………………………………………………… 171

Механизмы безопасности кросс-доменного взаимодействия……………………………………………… 172

Web Messaging API…………………………………………………………………………………………………………………… 174

DOM-based XSS через Web Messaging……………………………………………………………………………………. 175

Origin Verification отсутствует…………………………………………………………………………………………. 175

Origin verification………………………………………………………………………………………………………………. 176

JSON Parse…………………………………………………………………………………………………………………………. 176

Выводы……………………………………………………………………………………………………………………………………… 177

  1. Sad guard. Ищем и эксплуатируем уязвимость в драйвере AdGuard для Windows (Марсель Шагиев)…………………………………………………………………………………………………………….. 179

Как все начиналось…………………………………………………………………………………………………………………. 179

Почему AdGuard………………………………………………………………………………………………………………………. 180

Поверхность атаки…………………………………………………………………………………………………………………… 180

Фаззинг……………………………………………………………………………………………………………………………………… 184

Подготовка……………………………………………………………………………………………………………………….. 184

DIBF…………………………………………………………………………………………………………………………………… 184

Реверс драйвера……………………………………………………………………………………………………………………….. 187

По следам фаззера…………………………………………………………………………………………………………………… 189

Еще немного реверса……………………………………………………………………………………………………………….. 190

Примитивы……………………………………………………………………………………………………………………………….. 191

Проблемы 1 и 2. KASLR…………………………………………………………………………………………………… 194

Проблема 3. Сравнение с index………………………………………………………………………………………. 195

Эксплуатация…………………………………………………………………………………………………………………………… 196

Демонстрация (видео)……………………………………………………………………………………………………………… 203

  1. Pivoting District. Как работает GRE-пивотинг
    поверх сетевого оборудования (Caster)…………………………………………………. 205

GRE                                                                                                                                                                 205

Лабораторная сеть………………………………………………………………………………………………………………….. 207

L3 GRE VPN поверх Cisco IOS………………………………………………………………………………………………… 208

L3 GRE VPN поверх RouterOS………………………………………………………………………………………………… 211

Обеспечение туннеля L2 GRE с поддержкой L2-атак………………………………………………………….. 214

Возможные проблемы с MTU…………………………………………………………………………………………………. 219

Перехват трафика с помощью Cisco ERSPAN……………………………………………………………………….. 220

Перехват трафика с помощью TZSP (Mikrotik)……………………………………………………………………… 222

Выводы……………………………………………………………………………………………………………………………………… 222

  1. Атаки на DHCP. Разбираем техники DHCP Starvation и DHCP Spoofing и защиту от них (Александр Михайлов)……………………………………………………………………………………………… 223

Теория……………………………………………………………………………………………………………………………………….. 223

Сообщения DHCP…………………………………………………………………………………………………………….. 223

Структура заголовка DHCP……………………………………………………………………………………………. 225

Тестируем DHCP на стойкость……………………………………………………………………………………………….. 226

Лабораторный стенд……………………………………………………………………………………………………….. 226

DHCP Starvation……………………………………………………………………………………………………………………….. 227

Rogue DHCP или DHCP Spoofing……………………………………………………………………………………. 230

Нейтрализуем атаки на DHCP-протокол………………………………………………………………………………. 232

Trusted- и Untrusted-порты………………………………………………………………………………………………. 232

Limit Rate………………………………………………………………………………………………………………………….. 234

Verify MAC-Address………………………………………………………………………………………………………….. 234

Port Security……………………………………………………………………………………………………………………….. 235

Выводы……………………………………………………………………………………………………………………………………… 237

  1. MikroTik Nightmare. Пентестим сетевое оборудование MikroTik
    (Caster)………………………………………………………………………………………………….. 239

Проблемы сетевой безопасности……………………………………………………………………………………………. 239

DAI…………………………………………………………………………………………………………………………………….. 239

RA Guard…………………………………………………………………………………………………………………………… 239

Абьюз DP…………………………………………………………………………………………………………………………… 240

Спуфинг в системе резервирования VRRPv3………………………………………………………………………… 240

Перечисление информации……………………………………………………………………………………………… 241

Инъекция…………………………………………………………………………………………………………………………… 242

GARP-кадр………………………………………………………………………………………………………………………… 243

Уклонение от трассировки………………………………………………………………………………………………. 244

Проблема асимметричной маршрутизации…………………………………………………………………… 244

Маршрутизация……………………………………………………………………………………………………………….. 245

Импакт………………………………………………………………………………………………………………………………. 245

RouterOS Traffic Hijacking………………………………………………………………………………………………………. 246

GreenDog — Easy Hack #196 (Caster Bootleg)………………………………………………………………… 246

TZSP…………………………………………………………………………………………………………………………………… 247

Угон трафика……………………………………………………………………………………………………………………. 248

Обработка TZSP-заголовков…………………………………………………………………………………………… 248

RouterOS Pivoting……………………………………………………………………………………………………………………… 250

L3 GRE VPN………………………………………………………………………………………………………………………. 250

L2 EoIP VPN……………………………………………………………………………………………………………………… 253

Выводы……………………………………………………………………………………………………………………………………… 254

  1. MikroTik Daymare. Защищаем оборудование MikroTik
    от хакерских атак (Caster)…………………………………………………………………….. 255

Неиспользуемые интерфейсы…………………………………………………………………………………………………. 255

Discovery-протоколы……………………………………………………………………………………………………………….. 256

Безопасность Winbox на L2……………………………………………………………………………………………………. 256

DHCP Snooping…………………………………………………………………………………………………………………………. 256

Настройка файрвола……………………………………………………………………………………………………………….. 257

Корректная обработка трафика……………………………………………………………………………………… 258

Аккуратная работа с ICMP…………………………………………………………………………………………….. 258

TTL Shift……………………………………………………………………………………………………………………………. 258

Риск DNS-флуда……………………………………………………………………………………………………………….. 258

Drop All Other…………………………………………………………………………………………………………………….. 259

Динамическая маршрутизация………………………………………………………………………………………………. 259

Пассивные интерфейсы……………………………………………………………………………………………………. 259

Криптографическая аутентификация…………………………………………………………………………….. 259

Безопасность системы резервирования VRRP………………………………………………………………………. 260

Проблема псевдобалансировки……………………………………………………………………………………… 260

Безопасность дерева STP………………………………………………………………………………………………………… 261

Осторожность при выборе STP Root………………………………………………………………………………. 262

Безопасность панели управления (MGMT)…………………………………………………………………………… 262

Защита RMI……………………………………………………………………………………………………………………… 262

Защита учетных записей на оборудовании………………………………………………………………….. 263

Выводы……………………………………………………………………………………………………………………………………… 263

«Хакер»: безопасность, разработка, DevOps…………………………………………. 265

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

Авторы

Caster, sploitem [secware], saruman9, Владислав Дриев, qeewqq, kclo3, Андрей “W0lFreaK” Козлов, Марсель Шагиев, Александр Михайлов

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

Новая книга: “HTML5 и CSS3. Мастер-класс”

HTML5 и CSS3. Мастер-класс

Книга посвящена разработке веб-сайтов и веб-приложений с нуля, с применением самых современных клиентских и серверных технологий, селекторов CSS и подходов к веб-дизайну. Рассмотрены стандарт CSS 3+, отрисовка на холсте (технология Canvas), адаптивный веб-дизайн (технологии Flexbox и Grid), технология SASS, расширяющая возможности CSS, а также художественные аспекты веб-дизайна, обеспечение кроссплатформенности  сайтов и приложений и приверженность отзывчивому веб-дизайну.

Для веб-дизайнеров и веб-разработчиков

От новичка к эксперту за 29 простых шагов.

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

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

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

  • Пошаговое руководство, в котором описано, как придумать, набросать, спроектировать, создать, протестировать и запустить веб-сайт или веб-приложение
  • Подробные примеры и иллюстрации работы с HTML и CSS
  • Разбор интерактивных технологий, в частности HTML5 Canvas, CSS-преобразования в 2D и 3D, Flexbox, CSS Grid
  • Технология SASS, являющаяся надстройкой над CSS
  • Программирование анимации, геолокации, аудиовизуальных эффектов
  • Технология отзывчивого веб-дизайна
  • Кроссплатформенная разработка

Здесь все, что нужно знать о современной веб-разработке.

Чему вы сможете научиться

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

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

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

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

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

Об авторе. 17

ГЛАВА 1. Начальные сведения о HTML5 и CSS3. 19

Введение. 19

Структура. 21

Цели  21

Знакомство с HTTP и HTML. 21

Знакомство с CSS. 24

Использование атрибутов id и class. 25

Чем обусловлена необходимость применения HTML5 и CSS3. 28

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

ГЛАВА 2. Установка веб-сервера. 31

Вступление. 31

Структура. 31

Цели  31

Представление о WAMP, MAMP и LAMP. 32

Установка под Windows. 32

Работа с корнем документа. 36

Установка под MacOS. 39

Работа с корнем документа. 41

Установка под Linux. 43

Работа с корнем документа. 44

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

ГЛАВА 3. Visual Studio Code. 45

Вступление. 45

Структура. 45

Цели  45

Популярность VS Code. 46

Установка VS Code под Windows. 47

Установка VS Code под MacOS. 49

Установка VS Code под Linux. 51

Начало работы с VS Code. 52

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

ГЛАВА 4. Консоль разработчика. 55

Вступление. 55

Структура. 55

Цели  55

Доступ к консоли разработчика. 56

Польза, извлекаемая из работы с консолью.. 60

Автозавершение. 61

Просмотр элементов. 63

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

ГЛАВА 5. Введение в HTML5. 67

Введение. 67

Структура. 67

Цели  68

HTML5 гораздо серьезнее, чем просто HTML4 + 1. 68

SVG и MathML. 79

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

ГЛАВА 6. Использование холста в HTML5. 81

Введение. 81

Структура. 81

Цели  81

Ускоренный курс JavaScript 82

Размещение кода внутри тегов <script>. 82

Размещение кода в отдельном файле. 85

Функция getElementByID() 87

Превращение холста в изображение. 88

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

ГЛАВА 7. Прямоугольники и заливки. 91

Введение. 91

Структура. 91

Цели  91

О примерах работы с холстом.. 92

Рисование прямоугольников. 93

Использование переменных. 94

Применение стилей рисования. 95

Изменение толщины линии. 96

Очистка прямоугольника. 97

Применение градиентной заливки. 98

Применение радиального градиента. 100

Разноцветные градиентные заливки. 101

Использование заполнения узором.. 103

Использование перемещения. 106

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

ГЛАВА 8. Надписи на холсте. 111

Введение. 111

Структура. 111

Цели  111

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

Изменение способа отображения текста. 112

Выравнивание текста. 113

Изменение толщины обводки. 115

Надписи с заполнением.. 118

Использование узора для заполнения надписи. 121

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

ГЛАВА 9. Рисование на холсте. 123

Введение. 123

Структура. 123

Цели  123

Рисование линий с использованием путей. 124

Применение заполнений. 128

Ограничения областей холста. 128

Рисование кривых линий. 131

Выбор направления. 132

Рисование дуги к конкретной точке. 136

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

Завершение и схождение линий. 141

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

ГЛАВА 10. Работа с холстом.. 145

Введение. 145

Структура. 145

Цели  145

Рисование с использованием изображений. 146

Извлечение частей изображений. 148

Использование холста в качестве исходного изображения. 149

Прикрепление теней. 151

Тени прикрепляются не только к изображениям.. 153

Непосредственное редактирование пикселей. 154

Как хранятся данные о цвете. 156

Последовательный перебор данных. 157

Обработка данных изображения. 157

Усреднение данных о цвете. 158

Другие эффекты.. 158

Создание собственных данных изображения. 162

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

ГЛАВА 11. Расширенные возможности работы с холстом.. 163

Введение. 163

Структура. 163

Цели  163

Выстраивание композиции и прозрачность. 164

Использование цикла. 167

Рисование изображения. 167

Изменение прозрачности. 168

Применение преобразований. 169

Использование поворотов. 171

Применение перемещений. 172

Применение сразу нескольких преобразований. 173

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

ГЛАВА 12. Применение геолокации. 175

Введение. 175

Структура. 175

Цели  176

Что такое GPS. 176

Альтернативы применению GPS. 176

Проверка доступности геолокации. 177

Использование консоли разработчика. 179

Перенаправление пользователей. 180

Получение сведений о местоположении пользователя. 182

Именованные функции. 184

Когда получено разрешение. 185

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

ГЛАВА 13. Работа с формами. 187

Введение. 187

Структура. 187

Цели  187

Атрибуты формы HTML5. 188

Атрибут autofocus. 188

Атрибут autocomplete. 190

Атрибут form.. 191

Атрибут formaction. 193

Другие переопределения формы.. 194

Атрибут multiple. 195

Атрибут novalidate. 196

Атрибуты width и height 196

Атрибут list и теги <datalist> и <option>. 197

Атрибуты min, max и step. 198

Другие типы ввода даты и времени. 200

Атрибут pattern. 200

Атрибут placeholder 201

Атрибут required. 202

Тип ввода color 203

Числа и диапазоны.. 204

Тип ввода search. 206

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

ГЛАВА 14. Локальное хранилище и многое другое. 209

Введение. 209

Структура. 209

Цели  209

Использование локального хранилища. 210

Хранение и извлечение локальных данных. 210

Удаление и очистка локальных данных. 213

Использование взамен этого хранилища сеансов. 214

Микроданные. 214

Веб-воркеры.. 217

Автономные веб-приложения. 220

Как работают автономные веб-приложения. 220

Перетаскивание. 222

Обмен сообщениями между документами. 223

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

ГЛАВА 15. Аудио и видео. 225

Введение. 225

Структура. 225

Цели  225

Аудио в HTML5. 226

Аудиокодеки. 226

Воспроизведение аудио. 227

Видео в HTML5. 229

Видеокодеки. 230

Воспроизведение видео. 230

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

ГЛАВА 16. Введение в CSS3. 237

Введение. 237

Структура. 237

Цели  237

Разработка CSS3 продолжается. 238

Новое в CSS3. 239

Селекторы атрибутов. 239

Фоновые решения. 240

Границы.. 242

Тени блоков. 244

Столбцы и перетекания. 246

Цвета и прозрачность. 247

Текстовые эффекты и шрифты.. 248

Перемещения и преобразования. 250

Flexbox-разметка. 252

Flexbox как отдельный модуль. 252

CSS grid. 255

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

ГЛАВА 17. Селекторы атрибутов CSS3. 259

Введение. 259

Структура. 259

Цели  259

Селекторы атрибутов CSS. 260

Селектор по имени атрибута. 260

Селектор по значению атрибута. 261

Селектор по слову из списка. 262

Селектор по дефису. 263

Селектор по начальным символам.. 264

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

Глобальный селектор. 267

Флажок невосприимчивости к регистру символов. 268

Флажок восприимчивости к регистру символов. 269

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

ГЛАВА 18. Создание фона. 271

Введение. 271

Структура. 271

Цели  271

Обрезка и начало фона. 272

Литералы шаблонов. 272

Использование свойства background-clip. 274

Использование свойства background-origin. 275

Совместное использование обрезки и начала фона. 275

Раздел сценария JavaScript 278

Размер фона. 280

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

Точки остановки цвета. 284

Удаленность точек остановки цвета и повторения. 284

Радиальные и конические градиенты.. 285

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

ГЛАВА 19. Построение границ. 287

Введение. 287

Структура. 287

Цели  287

Радиус границы.. 288

Цвета границ. 290

Градиентные границы.. 291

Использование нескольких фонов. 293

Использование одного изображения. 295

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

ГЛАВА 20. Свойства блока и текста. 299

Введение. 299

Структура. 299

Цели  299

Добавление теней. 299

Переполнение элементов. 302

Макет, составленный из нескольких колонок. 303

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

ГЛАВА 21. Цвета и прозрачность. 311

Введение. 311

Структура. 311

Цели  311

RGB-цвета. 312

Использование цветового круга. 315

RGBA-цвета. 316

HSL-цвета. 318

Применение прозрачности. 321

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

ГЛАВА 22. Текстовые эффекты и шрифты.. 325

Введение. 325

Структура. 325

Цели  326

Задание размеров блока. 326

Текстовое переполнение. 328

Перенос длинных слов. 329

Изменение размеров элементов пользователем.. 331

Выделение фокуса. 333

Текстовые тени. 334

Веб-шрифты.. 335

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

ГЛАВА 23. Двумерные преобразования. 341

Введение. 341

Структура. 341

Цели  342

Преобразования. 342

Переходы.. 344

Перемещения. 347

Ожидаемое вскоре свойство translate. 347

Масштабирование. 347

Вращение. 349

Наклон. 350

Использование матриц. 352

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

ГЛАВА 24. Трехмерная графика и анимация. 355

Введение. 355

Структура. 355

Цели  355

3D-преобразования. 356

Задание перспективы.. 358

Два способа изменения перспективы.. 360

Задание стиля преобразования. 362

Изменение исходной точки преобразования. 363

Работа в 3D-пространстве. 364

Управление кубом.. 366

3D-перемещение. 367

3D-масштабирование. 367

3D-вращение. 367

Видимость обратных сторон граней. 369

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

ГЛАВА 25. Макет Flexbox. 371

Введение. 371

Структура. 371

Цели  371

Сведения о Flexbox. 372

Создание интерактивной среды Flexbox. 372

Как работает пример. 375

Работа с примером.. 378

Flex-направление. 379

Перенос flex-элементов. 382

Выравнивание всего содержимого по главной оси. 382

Выравнивание элементов по поперечной оси. 386

Выравнивание всего содержимого по поперечной оси. 389

Другие свойства. 393

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

ГЛАВА 26. CSS Grid. 395

Введение. 395

Структура. 395

Цели  395

Сведения о CSS Grid. 396

Как работает пример. 399

Работа с примером.. 400

Задание потока Grid-элементов. 401

Выравнивание содержимого. 402

Выравнивание элементов. 407

Задание промежутков. 412

Изменение местоположения и размеров. 412

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

ГЛАВА 27. Знакомство с Sass. 419

Введение. 419

Структура. 419

Цели  420

Sass — достойное решение. 420

Сведения о Sass. 420

Различные версии Sass. 421

Установка под Windows. 421

Другие установщики под Windows. 424

Установка под MacOS. 424

Установка под Linux. 426

Альтернативные установки под Linux. 427

Препроцессинг в CSS. 428

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

ГЛАВА 28. Переменные и потоки выполнения в Sass. 431

Введение. 431

Структура. 431

Цели  431

Переменные в CSS. 432

Переменные в Sass. 434

Значения переменных, используемые по умолчанию.. 435

Область видимости переменных. 437

Принудительное задание глобальной видимости. 438

Управление потоком выполнения. 439

Sass-операторы.. 439

Sass-выражения (Sass-сценарий) 440

@if … @else. 441

Влияние скобок. 443

@else if. 443

@each … in. 444

@for … from … through. 445

@for … from … to. 447

@while. 448

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

ГЛАВА 29. Расширенный Sass. 449

Введение. 449

Структура. 449

Цели  450

Вложенность, используемая в Sass. 450

Вложенные свойства. 452

Наследование в Sass. 453

Использование миксинов. 455

Модули Sass. 456

Будущие версии. 457

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

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

Описание. 459

Чему вы сможете научиться. 460

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

Содержание. 461

Биография автора. 462

Robin Nixon

Робин Никсон (Robin Nixon) более 40 лет создаёт софт, разрабатывает сайты и веб-приложения и много лет пишет о сетевых технологиях, Интернете и вебе. В его портфолио более 200 журнальных статей и более 40 книг, переведённых на многие языки мира, в том числе, бестселлер «Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5». Кроме того, он создаёт и проводит собственные видеокурсы на тему Интернета.

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

Новинка: “Node.js, Express, MongoDB и React. 23 урока для начинающих”

Node.js, Express, MongoDB и React. 23 урока для начинающих

В книге 23 урока, более 40 практических упражнений и заданий для самостоятельной работы. Даны основы программирования на Node.js: проекты и манифесты, установка дополнительных библиотек, импорт и экспорт. Описан серверный веб-фреймворк Express: работа с запросами и ответами, маршрутизация, шаблонизатор EJS, обработка пользовательских данных, статических файлов, валидация, сохранение выгруженных файлов, вывод сообщений об ошибках и разграничение доступа. Показана работа с СУБД MongoDB: запись и выборка данных, фильтрация, сортировка, применение моделей Mongoose. Рассказано о двухзвенных веб-приложениях, бэкендах и фронтендах. Рассмотрено программирование бэкендов средствами Express и фронтендов с применением клиентского веб-фреймворка React. Затронуты вопросы повышения производительности и защищённости веб-приложений, ввод их в эксплуатацию. Электронный архив на сайте издательства содержит полный исходный код описанных в книге примеров.

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

Что такое MERN?

MERN — это «связка» из четырех ключевых технологий, применяемых при разработке веб-приложений на JavaScript, «фантастическая четверка» веб-программирования.

  • Последняя буква: «N» — это, безусловно, Node.js.
  • Вторая по счету буква: «E» — это веб-фреймворк Express. Веб-фреймворк — это программная библиотека, реализующая основную функциональность, своего рода каркас веб-приложения. Разработчик «навешивает» на этот каркас свои модули, добавляющие к нему нужные функции.
  • Первая буква: «M» — это СУБД MongoDB. MongoDB не только мощна и быстра, но и как будто специально предназначена для того, чтобы работать совместно с Node.js.
  • Предпоследняя буква: «R» — это клиентский веб-фреймворк React.

Современный бэкенд и фронтенд на Node.js

Простым языком, кратко, наглядно рассказывается о разработке веб-приложений на языке JavaScript, работающих в исполняющей среде Node.js. В книге 23 урока, более 40 практических упражнений и заданий для самостоятельной работы.

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

  • программно генерировать веб-страницы;
  • работать с базами данных;
  • получать данные от пользователей и проверять их на корректность;
  • получать от пользователей файлы;
  • защищать веб-приложения от несанкционированного доступа;
  • выводить сообщения об ошибках;
  • повысить производительность и защищённость веб-приложений;
  • разрабатывать фронтенды и бэкенды.

Вы изучите популярные программные платформы:

  • серверный веб-фреймворк Express;
  • документную СУБД MongoDB;
  • клиентский веб-фреймворк

Книгу “Node.js, Express, MongoDB и React. 23 урока для начинающих” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие…………………………………………………………………………………………… 15

Почему Node.js?…………………………………………………………………………………………………………………………. 15

Что такое MERN?………………………………………………………………………………………………………………………. 16

Использованные программные продукты……………………………………………………………………………….. 17

Типографские соглашения………………………………………………………………………………………………………… 18

Часть I. Начала программирования на Node.js………………….. 21

Урок 1. Введение в Node.js……………………………………………………………………… 23

1.1. Упражнение. Запуск Node.js и работа в интерактивном режиме……………………………………. 24

1.2. Упражнение. Написание простейшего консольного Node-приложения………………………… 25

Теория………………………………………………………………………………………………………………………………….. 25

Практика……………………………………………………………………………………………………………………………… 26

1.3. Упражнение. Создание манифеста проекта……………………………………………………………………… 28

Теория………………………………………………………………………………………………………………………………….. 28

Практика……………………………………………………………………………………………………………………………… 29

1.4. Манифест проекта: подробности………………………………………………………………………………………. 32

1.4.1. Создание манифеста проекта………………………………………………………………………………….. 32

1.4.2. Формат JSON……………………………………………………………………………………………………………… 32

1.4.3. Структура манифеста проекта………………………………………………………………………………… 34

1.4.4. Нумерация версий…………………………………………………………………………………………………….. 35

1.5. Упражнение. Расцвечивание вывода приложения. Использование
дополнительных библиотек………………………………………………………………………………………………. 36

Теория………………………………………………………………………………………………………………………………….. 36

Практика……………………………………………………………………………………………………………………………… 37

1.6. Установка, обновление и удаление зависимостей. Реестр проекта……………………………….. 38

1.7. Экспорт, импорт и прогон………………………………………………………………………………………………….. 41

1.7.1. Экспорт………………………………………………………………………………………………………………………. 42

1.7.1.1. Экспорт по умолчанию……………………………………………………………………………….. 42

1.7.1.2. Множественный экспорт…………………………………………………………………………….. 42

Синтаксис № 1………………………………………………………………………………………………….. 43

Синтаксис № 2………………………………………………………………………………………………….. 43

1.7.1.3. Гибридный экспорт……………………………………………………………………………………… 44

1.7.2. Импорт……………………………………………………………………………………………………………………….. 44

1.7.2.1. Импорт по умолчанию………………………………………………………………………………… 44

1.7.2.2. Множественный импорт……………………………………………………………………………… 45

Синтаксис № 1………………………………………………………………………………………………….. 45

Синтаксис № 2………………………………………………………………………………………………….. 46

1.7.2.3. Гибридный импорт………………………………………………………………………………………. 46

1.7.2.4. Написание путей к модулям……………………………………………………………………….. 46

1.7.2.5. Как выполняется импорт?…………………………………………………………………………… 48

1.7.3. Прогон модулей………………………………………………………………………………………………………… 48

1.8. Окружение и переменные окружения………………………………………………………………………………… 49

1.9. Упражнение. Поддержка переменных окружения…………………………………………………………… 53

1.10. Упражнение. Написание сценариев проекта…………………………………………………………………. 55

Теория………………………………………………………………………………………………………………………………… 55

Практика……………………………………………………………………………………………………………………………. 55

1.11. Восстановление проекта………………………………………………………………………………………………….. 56

1.12. Самостоятельные упражнения………………………………………………………………………………………… 57

Урок 2. Основные принципы веб-разработки на Node.js………………………… 58

2.1. Как функционирует Всемирная паутина?………………………………………………………………………… 58

2.1.1. Клиенты и серверы. Ресурсы. Веб-серверы……………………………………………………………. 58

2.1.2. Интернет-адрес и его составляющие………………………………………………………………………. 59

2.1.3. Взаимодействие веб-обозревателя и веб-сервера………………………………………………….. 62

2.1.3.1. Клиентский запрос………………………………………………………………………………………. 62

2.1.3.2. Серверный ответ………………………………………………………………………………………….. 63

2.1.4. Веб-сайты и веб-приложения…………………………………………………………………………………… 64

2.1.4.1. Веб-сайт………………………………………………………………………………………………………… 64

2.1.4.2. Веб-приложение…………………………………………………………………………………………… 65

2.2. Упражнение. Написание простейшего тестового веб-приложения……………………………….. 66

2.3. События и их обработка…………………………………………………………………………………………………….. 68

2.4. Упражнение. Использование утилиты nodemon……………………………………………………………… 69

2.5. Утилита nodemon: подробности……………………………………………………………………………………….. 71

2.6. Упражнение. Реализация маршрутизатора……………………………………………………………………… 73

Теория………………………………………………………………………………………………………………………………….. 74

Практика……………………………………………………………………………………………………………………………… 74

2.7. Упражнение. Использование базы данных и модели………………………………………………………. 78

Теория………………………………………………………………………………………………………………………………….. 78

Практика……………………………………………………………………………………………………………………………… 78

2.8. Синхронные и асинхронные функции………………………………………………………………………………. 83

2.9. Самостоятельное упражнение…………………………………………………………………………………………… 86

Часть II. Веб-фреймворк Express………………………………………………… 87

Урок 3. Введение в Express…………………………………………………………………….. 89

3.1. Упражнение. Простейшее веб-приложение на Express……………………………………………………. 89

3.2. Приложение Express……………………………………………………………………………………………………………. 95

3.2.1. Создание объекта приложения………………………………………………………………………………… 95

3.2.2. Параметры приложения…………………………………………………………………………………………… 95

3.2.3. Запуск приложения…………………………………………………………………………………………………… 96

3.3. Клиентский запрос Express………………………………………………………………………………………………… 97

3.4. Серверный ответ Express………………………………………………………………………………………………….. 100

Урок 4. Маршрутизация и контроллеры………………………………………………. 104

4.1. Маршрутизатор Express. Маршруты и URL-параметры………………………………………………. 104

4.1.1. Встроенный маршрутизатор…………………………………………………………………………………. 104

4.1.2. Маршруты……………………………………………………………………………………………………………….. 104

4.1.2.1. Создание маршрутов…………………………………………………………………………………. 105

4.1.2.2. Написание шаблонных путей…………………………………………………………………… 106

4.1.2.3. URL-параметры и параметризованные маршруты………………………………… 108

4.1.2.4. Выполнение маршрутизации: устранение коллизий……………………………… 109

4.2. Контроллеры…………………………………………………………………………………………………………………….. 109

4.2.1. Объявление контроллеров……………………………………………………………………………………… 109

4.2.2. Указание контроллеров в маршрутах…………………………………………………………………… 111

4.2.3. Доступ к URL-параметрам и сведениям о совпавшем маршруте………………………. 111

4.3. Упражнение. Реализация маршрутизатора……………………………………………………………………. 112

4.4. Выделенный маршрутизатор…………………………………………………………………………………………… 114

4.4.1. Вложенные маршрутизаторы………………………………………………………………………………… 116

4.5. Упражнение. Использование выделенного маршрутизатора………………………………………. 118

4.6. Настройки маршрутизаторов………………………………………………………………………………………….. 118

4.6.1. Настройки встроенного маршрутизатора……………………………………………………………. 118

4.6.2. Настройки выделенных и вложенных маршрутизаторов…………………………………… 119

4.7. Вложенные приложения Express……………………………………………………………………………………… 119

Урок 5. Шаблоны. Шаблонизатор EJS…………………………………………………. 121

5.1. Упражнение. Использование шаблонов…………………………………………………………………………. 122

5.2. Интеграция Express и EJS…………………………………………………………………………………………………. 125

5.3. Написание шаблонов EJS. Команды EJS………………………………………………………………………… 125

5.4. Рендеринг шаблонов…………………………………………………………………………………………………………. 127

5.4.1. Задание контекста шаблона………………………………………………………………………………….. 128

5.5. Включения…………………………………………………………………………………………………………………………. 129

5.6. Упражнение. Использование включений………………………………………………………………………… 130

5.7. Настройки шаблонизатора EJS……………………………………………………………………………………….. 131

5.8. Упражнение. Стилизация приложения. CSS-фреймворк Picnic CSS……………………………… 132

Теория………………………………………………………………………………………………………………………………. 132

Практика………………………………………………………………………………………………………………………….. 132

Урок 6. Получение данных, отправленных пользователем…………………… 138

6.1. Настройка приложения для получения данных…………………………………………………………….. 138

6.1.1. Настройка обработки GET-параметров……………………………………………………………….. 138

6.1.2. Настройка обработки POST-параметров……………………………………………………………… 139

6.2. Получение отправленных данных………………………………………………………………………………….. 141

6.3. Упражнение. Поиск дел……………………………………………………………………………………………………. 141

6.4. Добавление, правка и удаление данных………………………………………………………………………… 144

6.4.1. Старый подход……………………………………………………………………………………………………….. 144

6.4.2. Новый подход…………………………………………………………………………………………………………. 145

6.4.3. Перекрытие HTTP-метода. Библиотека method-override…………………………………….. 146

6.5. Упражнение. Добавление, пометка и удаление дел………………………………………………………. 147

Урок 7. Посредники, статические файлы и обработка ошибок…………….. 155

7.1. Посредники………………………………………………………………………………………………………………………… 155

7.1.1. Привязка посредников……………………………………………………………………………………………. 156

7.1.2. Объявление посредников……………………………………………………………………………………….. 158

7.1.2.1. Объявление фабрик функций, выдающих посредники…………………………… 162

7.2. Упражнение. Написание первого посредника……………………………………………………………….. 162

7.3. Обработка статических файлов………………………………………………………………………………………. 163

7.4. Упражнение. Стилизация приложения с помощью собственной таблицы стилей……… 167

7.5. Обработка ошибок……………………………………………………………………………………………………………. 170

7.5.1. Оповещение о возникновении ошибки………………………………………………………………….. 170

7.5.1.1. Оповещение об ошибке средствами Node.js и Express……………………………. 171

7.5.1.2. Оповещение об ошибке средствами библиотеки http-errors…………………… 172

7.5.1.3. Оповещение об ошибках в асинхронных контроллерах
и посредниках…………………………………………………………………………………………………………. 173

7.5.2. Обработчики ошибок……………………………………………………………………………………………… 174

7.5.2.1. Обработчик ошибок по умолчанию…………………………………………………………. 174

7.5.2.2. Собственные обработчики ошибок………………………………………………………….. 174

7.6. Упражнение. Реализация обработки ошибок…………………………………………………………………. 175

Урок 8. Валидация……………………………………………………………………………….. 180

8.1. Валидация данных, полученных от пользователя………………………………………………………… 180

8.1.1. Валидация средствами JavaScript…………………………………………………………………………. 180

8.1.2. Валидация средствами библиотеки express-validator………………………………………….. 181

8.1.2.1. Введение в express-validator………………………………………………………………………. 181

8.1.2.2. Создание валидаторов………………………………………………………………………………. 182

8.1.2.3. Задание правил валидации………………………………………………………………………. 182

8.1.2.4. Задание очистителей…………………………………………………………………………………. 190

8.1.2.5. Задание модификаторов……………………………………………………………………………. 191

8.1.2.6. Последовательность выполнения правил валидации и очистителей…… 192

8.1.2.7. Получение сообщений об ошибках ввода……………………………………………….. 193

8.1.2.8. Получение данных, прошедших валидацию…………………………………………… 194

8.2. Упражнение. Валидация добавляемых дел……………………………………………………………………. 195

8.3. Валидация значений URL-параметров…………………………………………………………………………… 197

Урок 9. Cookie, серверные сессии и всплывающие сообщения…………….. 200

9.1. Cookie…………………………………………………………………………………………………………………………………. 200

9.1.1. Подготовка Express для работы с cookie. Библиотека cookie-parser………………….. 200

9.1.2. Работа с cookie………………………………………………………………………………………………………… 201

9.1.2.1. Создание cookie…………………………………………………………………………………………. 201

9.1.2.2. Получение cookie……………………………………………………………………………………….. 203

9.1.2.3. Удаление cookie…………………………………………………………………………………………. 203

9.2. Упражнение. Задание порядка вывода дел……………………………………………………………………. 203

9.3. Серверные сессии……………………………………………………………………………………………………………… 206

9.3.1. Подготовка Express для работы с серверными сессиями…………………………………….. 206

9.3.1.1. Библиотека express-session: обработка сессий……………………………………….. 206

9.3.1.2. Библиотека session-file-store: файловое хранилище сессий…………………… 209

9.3.2. Работа с серверными сессиями……………………………………………………………………………… 211

9.4. Всплывающие сообщения………………………………………………………………………………………………… 212

9.4.1. Работа со всплывающими сообщениями средствами библиотеки
express-session……………………………………………………………………………………………………………………. 213

9.4.2. Использование библиотеки express-flash-message……………………………………………….. 213

9.5. Упражнение. Отображение сообщений об ошибках ввода…………………………………………… 215

Урок 10. Выгрузка файлов……………………………………………………………………. 220

10.1. Выгрузка файлов средствами библиотеки multer………………………………………………………… 220

10.1.1. Получение генератора посредников…………………………………………………………………. 220

10.1.1.1. Задание хранилища выгруженных файлов………………………………………. 221

Хранилище DiskStorage………………………………………………………………………………… 221

Хранилище MemoryStorage…………………………………………………………………………… 223

10.1.1.2. Задание правил валидации выгруженных файлов…………………………… 224

10.1.1.3. Задание функции валидации выгруженных файлов………………………… 225

10.1.2. Получение посредников, сохраняющих выгруженные файлы……………………….. 227

10.1.3. Использование полученных посредников………………………………………………………… 229

10.1.4. Получение сведений о выгруженном файле……………………………………………………… 230

Особенности использования хранилища MemoryStorage………………………………. 231

10.2. Вывод выгруженных файлов…………………………………………………………………………………………. 231

10.2.1. Вывод средствами посредника, обрабатывающего статические файлы………. 231

10.2.2. Вывод в контроллерах……………………………………………………………………………………….. 232

10.3. Упражнение. Добавление иллюстраций к запланированным делам…………………………. 234

Урок 11. Разграничение доступа и промисификация……………………………. 240

11.1. Основы разграничения доступа…………………………………………………………………………………….. 240

11.1.1. Собственно разграничение доступа…………………………………………………………………. 240

11.1.2. Многопользовательские веб-приложения………………………………………………………… 242

11.1.3. Реализация разграничения доступа………………………………………………………………….. 242

11.2. Хеширование…………………………………………………………………………………………………………………… 243

11.2.1. Генерирование хешей…………………………………………………………………………………………. 243

11.2.1.1. Генерирование случайной соли…………………………………………………………. 244

11.2.2. Сверка хешей………………………………………………………………………………………………………. 245

11.3. Промисификация…………………………………………………………………………………………………………….. 246

11.4. Упражнение. Превращение веб-приложения в многопользовательское……………………. 246

11.4.1. Регистрация новых пользователей……………………………………………………………………. 246

11.4.2. Вход и выход……………………………………………………………………………………………………….. 254

11.4.3. Разграничение доступа к запланированным делам………………………………………… 260

11.5. Самостоятельные упражнения………………………………………………………………………………………. 262

Часть III. СУБД MongoDB. Модели Mongoose………………………… 263

Урок 12. СУБД MongoDB……………………………………………………………………… 265

12.1. Серверные СУБД и их преимущества перед «самоделками»……………………………………… 265

12.2. Введение в MongoDB……………………………………………………………………………………………………… 266

12.2.1. Базы данных, коллекции и документы……………………………………………………………… 267

12.2.2. Типы данных, поддерживаемые MongoDB………………………………………………………. 268

12.2.3. Встраивание и связывание документов…………………………………………………………….. 269

12.2.3.1. Встраивание вторичных документов в первичный………………………….. 269

12.2.3.2. Связывание вторичных документов с первичным……………………………. 271

12.2.4. Операции, выполняемые над документами………………………………………………………. 272

12.2.5. Индексы……………………………………………………………………………………………………………….. 273

12.3. Клиентская библиотека MongoDB………………………………………………………………………………… 274

12.3.1. Подключение к серверу MongoDB…………………………………………………………………….. 274

12.3.2. Выбор базы данных……………………………………………………………………………………………. 275

12.3.3. Выбор коллекции………………………………………………………………………………………………… 275

12.3.4. Добавление документов……………………………………………………………………………………… 276

12.3.4.1. Добавление одного документа…………………………………………………………… 276

12.3.4.2. Добавление нескольких документов………………………………………………….. 277

12.3.5. Поиск документа…………………………………………………………………………………………………. 278

12.3.5.1. Написание условий поиска………………………………………………………………… 278

Условия простого сравнения………………………………………………………………………… 279

Поиск документа по объектному идентификатору…………………………………….. 280

Условия, использующие операторы сравнения………………………………………….. 280

Составные условия, содержащие логические операторы…………………………. 281

12.3.5.2. Указание набора выдаваемых атрибутов…………………………………………. 284

12.3.5.3. Типы значений атрибутов у выдаваемого документа……………………… 285

12.3.6. Фильтрация документов…………………………………………………………………………………….. 285

12.3.6.1. Выдача всех документов из коллекции……………………………………………… 286

12.3.6.2. Сортировка выданных документов……………………………………………………. 286

12.3.6.3. Выдача части отфильтрованных документов………………………………….. 287

12.3.6.4. Курсор. Получение отфильтрованных документов…………………………. 287

12.3.7. Исправление документов……………………………………………………………………………………. 289

12.3.7.1. Исправление одного документа…………………………………………………………. 289

12.3.7.2. Исправление нескольких документов………………………………………………… 291

12.3.8. Удаление документов…………………………………………………………………………………………. 292

12.3.8.1. Удаление одного документа………………………………………………………………. 292

12.3.8.2. Удаление нескольких документов……………………………………………………… 292

12.4. Вместо упражнения………………………………………………………………………………………………………… 292

Урок 13. Mongoose: объектные модели и их написание………………………… 294

13.1. Введение в объектные модели. Mongoose…………………………………………………………………….. 294

13.2. Mongoose: подключение к базе данных……………………………………………………………………….. 295

13.3. Mongoose: создание моделей…………………………………………………………………………………………. 296

13.3.1. Схемы Mongoose…………………………………………………………………………………………………. 297

13.3.1.1. Написание перечней атрибутов…………………………………………………………. 297

13.3.1.2. Типы значений атрибутов, поддерживаемые Mongoose………………….. 297

13.3.1.3. Указание простых индексов……………………………………………………………….. 298

13.3.1.4. Дополнительные параметры атрибутов……………………………………………. 299

13.3.1.5. Создание схем……………………………………………………………………………………… 301

13.3.1.6. Указание индексов любой сложности……………………………………………….. 303

13.3.1.7. Виртуальные атрибуты и создание…………………………………………………… 303

13.3.2. Создание моделей……………………………………………………………………………………………….. 305

13.4. Упражнение. Перевод веб-приложения на работу с базой данных MongoDB (часть 1) 305

Урок 14. Mongoose: запись данных………………………………………………………. 310

14.1. Mongoose: добавление, правка и удаление документов……………………………………………… 310

14.1.1. Добавление документов……………………………………………………………………………………… 310

14.1.1.1. Добавление одного документа…………………………………………………………… 310

14.1.1.2. Добавление нескольких документов………………………………………………….. 311

14.1.2. Правка документов……………………………………………………………………………………………… 312

14.1.2.1. Правка одного документа…………………………………………………………………… 312

Способ первый: в стиле моделей Mongoose………………………………………………… 312

Способ второй: в стиле клиентской библиотеки MongoDB………………………. 314

14.1.2.2. Правка нескольких документов………………………………………………………….. 316

14.1.3. Удаление документов…………………………………………………………………………………………. 316

14.1.3.1. Удаление одного документа………………………………………………………………. 316

14.1.3.2. Удаление нескольких документов……………………………………………………… 317

14.2. Низкоуровневые и высокоуровневые инструменты…………………………………………………….. 317

14.3. Упражнение. Перевод веб-приложения на работу с базой данных MongoDB (часть 2) 318

Урок 15. Mongoose: выборка данных……………………………………………………. 324

15.1. Mongoose: поиск документов…………………………………………………………………………………………. 324

15.1.1. Базовые инструменты поиска……………………………………………………………………………. 324

15.1.1.1. Особенности указания значений в условиях поиска………………………… 325

15.1.2. Запрос к базе данных и получение результата……………………………………………….. 325

15.1.3. Конструирование запросов на поиск………………………………………………………………… 326

15.1.3.1. Условия простого сравнения………………………………………………………………. 327

15.1.3.2. Условия, использующие операторы сравнения………………………………… 328

15.1.3.3. Составные условия с логическими операторами……………………………… 330

15.1.3.4. Указание выдаваемых атрибутов………………………………………………………. 330

15.2. Mongoose: фильтрация документов………………………………………………………………………………. 331

15.2.1. Базовые инструменты фильтрации……………………………………………………………………. 331

15.2.2. Конструирование запросов на фильтрацию…………………………………………………….. 331

15.2.2.1. Сортировка документов……………………………………………………………………… 331

15.2.2.2. Выдача части отфильтрованных документов………………………………….. 332

15.3. Mongoose: получение количества документов…………………………………………………………….. 332

15.4. Упражнение. Перевод веб-приложения на работу с базой данных MongoDB (часть 3) 333

Урок 16. Mongoose: агрегатные вычисления и расширение моделей……. 334

16.1. Агрегатные вычисления…………………………………………………………………………………………………. 334

16.1.1. Конвейер агрегатных вычислений и его создание…………………………………………… 334

16.1.1.1. Стадия фильтрации документов………………………………………………………… 336

16.1.1.2. Стадия сортировки документов…………………………………………………………. 336

16.1.1.3. Стадия формирования групп………………………………………………………………. 336

Поддерживаемые агрегатные вычисления………………………………………………….. 337

Выполнение агрегатных вычислений по всем документам из коллекции… 339

16.1.1.4. Стадия фильтрации групп…………………………………………………………………… 339

16.1.1.5. Стадия сортировки групп……………………………………………………………………. 340

16.1.1.6. Стадия выборки части групп……………………………………………………………… 340

16.1.2. Получение результатов агрегатных вычислений…………………………………………….. 341

16.1.3. Выборка связанных документов……………………………………………………………………….. 341

16.1.3.1. Стадия связывания документов………………………………………………………….. 341

16.1.3.2. Доступ к атрибутам поддокументов………………………………………………….. 342

16.1.3.3. Стадия разворачивания массива……………………………………………………….. 343

16.2. Упражнение. Создание веб-страницы наиболее активных пользователей………………. 344

16.3. Расширение функциональности моделей……………………………………………………………………… 346

16.3.1. Обычные методы моделей………………………………………………………………………………….. 346

16.3.2. Статические методы моделей……………………………………………………………………………. 348

16.3.3. Методы, задающие условия при конструировании запросов………………………… 348

16.4. Упражнение. Расширение моделей……………………………………………………………………………….. 349

16.5. Самостоятельные упражнения………………………………………………………………………………………. 351

Часть IV. Фронтенды и бэкенды. Веб-фреймворк React….. 353

Урок 17. Программирование бэкендов средствами Express………………….. 355

17.1. Традиционные и двухзвенные веб-приложения. Фронтенды и бэкенды……………………. 355

17.2. REST…………………………………………………………………………………………………………………………………. 357

17.2.1. Введение в REST…………………………………………………………………………………………………. 357

17.2.2. Практическая реализация REST………………………………………………………………………… 357

17.2.3. Разграничение доступа в стиле REST. Жетонная аутентификация……………….. 359

17.3. Программные инструменты, применяемые при разработке бэкендов……………………….. 360

17.3.1. Инструменты Express для отправки ответов…………………………………………………….. 360

17.3.2. Инструменты Express для проверки типа требуемых клиентом данных……….. 361

17.3.3. Инструменты Express для получения от пользователя данных
в формате JSON……………………………………………………………………………………………………………….. 362

17.3.4. Инструменты Mongoose для преобразования документов в JSON…………………. 363

17.4. Работа с жетонами пользователей средствами библиотеки jsonwebtoken……………….. 364

17.5. Обработка межсайтовых запросов. Библиотека cors………………………………………………….. 367

17.5.1. Проблема с доступом к «чужим» cookie……………………………………………………………. 370

17.6. Упражнение. Превращение веб-приложения в бэкенд………………………………………………… 370

Урок 18. Программирование фронтендов. React: компоненты……………… 382

18.1. Одностраничные фронтенды. Экраны………………………………………………………………………….. 382

18.2. Веб-фреймворк React……………………………………………………………………………………………………… 383

18.2.1. Введение в React…………………………………………………………………………………………………. 383

18.2.1.1. Компоненты…………………………………………………………………………………………. 383

18.2.1.2. Реактивные данные. Пропы и состояния компонентов…………………….. 385

18.2.1.3. Передача данных между компонентами. Спуск и подъем данных…. 385

18.2.1.4. Разработка React-фронтендов……………………………………………………………. 386

18.2.2. React-проект: создание и структура…………………………………………………………………. 387

18.2.2.1. Создание React-проекта……………………………………………………………………… 387

18.2.2.2. Структура React-проекта……………………………………………………………………. 387

18.2.3. Разработка компонентов……………………………………………………………………………………. 389

18.2.3.1. Объявление компонентов……………………………………………………………………. 389

18.2.3.2. Формирование содержимого компонентов. Язык JSX. Фрагменты…. 391

Указание встроенных стилей……………………………………………………………………….. 394

Условный вывод…………………………………………………………………………………………….. 394

Вывод последовательностей………………………………………………………………………… 395

Вывод потомков…………………………………………………………………………………………….. 396

18.2.3.3. Работа с состояниями компонентов…………………………………………………… 397

18.2.3.4. Обработка событий…………………………………………………………………………….. 398

18.2.3.5. Взаимодействие с элементами управления………………………………………. 399

18.2.3.6. Прямое обращение к DOM компонента. Рефы………………………………….. 400

Использование рефов для постоянного хранения данных………………………… 401

18.2.3.7. Хуки………………………………………………………………………………………………………. 401

18.2.3.8. Стилизация фронтенда……………………………………………………………………….. 404

18.2.3.9. Использование внедренных элементов в компонентах……………………. 406

18.2.4. Использование компонентов……………………………………………………………………………… 406

18.2.5. Запуск React-проекта на выполнение……………………………………………………………….. 407

18.3. Упражнение. Написание фронтенда (часть 1)……………………………………………………………… 407

18.3.1. Вывод перечня дел……………………………………………………………………………………………… 407

18.3.2. Поиск и сортировка дел……………………………………………………………………………………… 412

18.3.3. Реализация входа и выхода……………………………………………………………………………….. 415

Урок 19. React: контексты и маршрутизация……………………………………….. 420

19.1. Контексты React……………………………………………………………………………………………………………… 420

19.2. Упражнение. Написание фронтенда (часть 2)……………………………………………………………… 422

19.3. Навигация во фронтендах. Пакет React Router……………………………………………………………. 425

19.3.1. Основные понятия React Router…………………………………………………………………………. 426

19.3.2. Маршрутизация средствами React Router……………………………………………………….. 426

19.3.2.1. Маршрутизатор…………………………………………………………………………………… 426

19.3.2.2. Коммутатор………………………………………………………………………………………….. 427

19.3.2.3. Маршруты……………………………………………………………………………………………. 428

19.3.3. Навигация средствами React Router…………………………………………………………………. 429

19.3.3.1. Гиперссылки………………………………………………………………………………………… 429

Link: простая гиперссылка……………………………………………………………………………. 429

NavLink: расширенная гиперссылка……………………………………………………………. 430

19.3.3.2. Перенаправление…………………………………………………………………………………. 431

Компонент Navigate………………………………………………………………………………………. 431

Хук useNavigate()…………………………………………………………………………………………… 432

19.3.4. Получение значений URL-параметров……………………………………………………………… 432

19.3.5. Получение дополнительного значения…………………………………………………………….. 433

19.4. Упражнение. Написание фронтенда (часть 3)……………………………………………………………… 433

19.5. Самостоятельные упражнения………………………………………………………………………………………. 444

Часть V. Ввод веб-приложений в эксплуатацию……………… 445

Урок 20. Повышение производительности веб-приложений…………………. 447

20.1. Кеширование…………………………………………………………………………………………………………………… 447

20.1.1. Кеширование на стороне клиента…………………………………………………………………….. 448

20.1.1.1. Кеширование статических файлов средствами Express…………………… 448

20.1.1.2. Кеширование сгенерированных программно ресурсов
средствами Express…………………………………………………………………………………………….. 450

20.1.1.3. Управление кешированием средствами библиотеки
express-cache-ctrl…………………………………………………………………………………………………. 451

20.1.2. Кеширование на стороне сервера……………………………………………………………………… 453

20.1.2.1. Кеширование шаблонов средствами Express……………………………………. 453

20.1.2.2. Кеширование произвольных данных средствами библиотеки cache-manager  453

Библиотека cache-manager-fs-hash: файловое хранилище
кешированных данных………………………………………………………………………………….. 456

20.2. Сжатие ответов……………………………………………………………………………………………………………….. 457

20.3. Самостоятельные упражнения………………………………………………………………………………………. 458

Урок 21. Дополнительная защита веб-приложений………………………………. 459

21.1. Защита от других распространенных сетевых атак средствами библиотеки helmet. 459

21.2. Защита от атак CSRF……………………………………………………………………………………………………… 460

21.3. Защита базы данных MongoDB…………………………………………………………………………………….. 463

21.3.1. Создание суперадминистратора……………………………………………………………………….. 463

21.3.2. Создание пользователей…………………………………………………………………………………….. 465

21.3.3. Вход на сервер MongoDB в веб-приложении…………………………………………………… 466

21.4. Самостоятельные упражнения………………………………………………………………………………………. 467

Урок 22. Журналирование. Библиотека morgan…………………………………… 468

22.1. Введение в библиотеку morgan……………………………………………………………………………………… 468

22.2. Задание формата записей………………………………………………………………………………………………. 469

22.2.1. Предопределенные форматы……………………………………………………………………………… 469

22.2.2. Написание строк форматов……………………………………………………………………………….. 470

22.2.3. Расширенные инструменты для работы с форматами записей………………………. 471

22.2.3.1. Создание своих предопределенных форматов…………………………………. 471

22.2.3.2. Создание своих литералов для строк форматов………………………………. 472

22.3. Задание параметров журналирования…………………………………………………………………………. 473

22.3.1. Вывод журнала в файл……………………………………………………………………………………….. 473

22.3.2. Вывод журнала в последовательность файлов……………………………………………….. 474

22.4. Самостоятельное упражнение………………………………………………………………………………………. 476

Урок 23. Ввод веб-приложений в эксплуатацию…………………………………… 477

23.1. Отладочный и эксплуатационный режимы работы веб-приложения……………………….. 477

23.2. Подготовка фронтенда и бэкенда к эксплуатации………………………………………………………. 478

23.2.1. Подготовка бэкенда……………………………………………………………………………………………. 479

23.2.2. Подготовка фронтенда……………………………………………………………………………………….. 480

23.2.3. Создание эксплуатационной редакции фронтенда и встраивание ее
в бэкенд……………………………………………………………………………………………………………………………. 481

23.3. Подготовка веб-приложения к эксплуатации………………………………………………………………. 482

23.4. Развертывание веб-приложения…………………………………………………………………………………….. 483

23.5. Самостоятельные упражнения………………………………………………………………………………………. 483

Заключение………………………………………………………………………………………….. 485

Приложения…………………………………………………………………………………… 487

Приложение 1. Node.js: подготовка к работе………………………………………… 488

П1.1. Установка Node.js…………………………………………………………………………………………………………… 488

П1.2. Проверка работоспособности Node.js………………………………………………………………………….. 493

Приложение 2. Visual Studio Code: установка и использование…………….. 494

П2.1. Установка Visual Studio Code………………………………………………………………………………………… 494

П2.2. Запуск и завершение работы Visual Studio Code…………………………………………………………. 500

П2.3. Главное окно Visual Studio Code…………………………………………………………………………………… 500

П2.4. Расширения Visual Studio Code и работа с ними…………………………………………………………. 503

П2.5. Работа с отдельными файлами……………………………………………………………………………………… 509

П2.5.1. Создание файлов………………………………………………………………………………………………… 509

П2.5.2. Открытие файлов………………………………………………………………………………………………… 510

П2.5.2.1. Работа с вкладками главной области……………………………………………….. 510

П2.5.2.2. Разделение главной области на секции…………………………………………….. 511

Разделение на секции при открытии файлов………………………………………………. 511

Разделение на секции после открытия файлов……………………………………………. 514

П2.5.3. Сохранение файлов……………………………………………………………………………………………. 514

П2.5.4. Отмена правок, сделанных в файле………………………………………………………………….. 515

П2.5.5. Закрытие файлов………………………………………………………………………………………………… 515

П2.6. Работа с папками……………………………………………………………………………………………………………. 516

П2.6.1. Открытие папки………………………………………………………………………………………………….. 516

П2.6.1.1. Область Открытые редакторы боковой панели…………………………….. 518

П2.6.2. Работа с содержимым открытой папки……………………………………………………………. 519

П2.6.2.1. Создание файлов и папок…………………………………………………………………… 519

П2.6.2.2. Открытие файлов………………………………………………………………………………… 520

П2.6.2.3. Закрытие файлов…………………………………………………………………………………. 520

П2.6.2.4. Переименование файлов и папок………………………………………………………. 520

П2.6.2.5. Перемещение файлов и папок……………………………………………………………. 521

П2.6.2.6. Удаление файлов и папок…………………………………………………………………… 521

П2.7. Работа с программным кодом……………………………………………………………………………………….. 521

П2.7.1. Автоматическая установка отступов……………………………………………………………….. 521

П2.7.2. Синтаксическая подсветка кода……………………………………………………………………….. 522

П2.7.3. Команды для работы с кодом……………………………………………………………………………. 522

П2.7.4. Списки быстрого выбора…………………………………………………………………………………… 522

П2.7.5. Подсказки по коду………………………………………………………………………………………………. 523

П2.7.6. Выявление ошибок……………………………………………………………………………………………… 524

П2.7.6.1. Ошибки времени компиляции…………………………………………………………….. 524

П2.7.6.2. Ошибки времени выполнения…………………………………………………………….. 525

П2.7.7. Просмотр структуры программного кода………………………………………………………… 526

П2.7.8. Поиск и замена……………………………………………………………………………………………………. 528

П2.7.8.1. Поиск и замена в файле из активной папки………………………………………. 528

Поиск………………………………………………………………………………………………………………. 528

Замена…………………………………………………………………………………………………………….. 529

П2.7.8.2. Поиск и замена в файлах……………………………………………………………………. 530

Поиск………………………………………………………………………………………………………………. 530

Замена…………………………………………………………………………………………………………….. 532

П2.8. Терминал…………………………………………………………………………………………………………………………. 533

П2.9. Отладка…………………………………………………………………………………………………………………………… 534

П2.9.1. Запуск приложения для отладки………………………………………………………………………. 535

П2.9.2. Точки останова…………………………………………………………………………………………………… 535

П2.9.3. Пошаговое выполнение кода…………………………………………………………………………….. 537

П2.9.4. Просмотр состояния приложения……………………………………………………………………… 539

П2.9.5. Просмотр вывода приложения………………………………………………………………………….. 541

П2.9.6. Создание конфигурации отладки……………………………………………………………………… 541

П2.10. Вспомогательные инструменты………………………………………………………………………………….. 543

П2.10.1. Область Сценарии NPM боковой панели……………………………………………………….. 543

П2.10.2. Палитра команд……………………………………………………………………………………………….. 544

П2.10.3. Создание нескольких главных окон……………………………………………………………….. 545

П2.10.4. Мини-карта……………………………………………………………………………………………………….. 546

П2.11. Настройка Visual Studio Code……………………………………………………………………………………… 547

П2.11.1. Задание параметров Visual Studio Code…………………………………………………………. 547

П2.11.2. Задание цветовой схемы………………………………………………………………………………….. 550

П2.11.3. Задание тем значков………………………………………………………………………………………… 551

Приложение 3. MongoDB: установка……………………………………………………. 552

Приложение 4. MongoDB Shell: установка и использование…………………. 558

П4.1. Установка MongoDB Shell……………………………………………………………………………………………… 558

П4.2. Запуск и завершение MongoDB Shell……………………………………………………………………………. 560

Приложение 5. MongoDB Compass: установка и использование…………… 561

П5.1. Установка MongoDB Compass……………………………………………………………………………………… 561

П5.2. Запуск и завершение работы MongoDB Compass………………………………………………………. 562

П5.3. Главное окно MongoDB Compass…………………………………………………………………………………. 563

П5.4. Работа с соединениями………………………………………………………………………………………………….. 564

П5.4.1. Создание соединений…………………………………………………………………………………………. 564

П5.4.2. Перечни соединений…………………………………………………………………………………………… 565

П5.4.3. Удаление соединений………………………………………………………………………………………… 566

П5.5. Подключение к серверам MongoDB и отключение от них…………………………………………. 566

П5.5.1. Подключение к серверу……………………………………………………………………………………… 566

П5.5.1.1. Правка соединения……………………………………………………………………………… 567

П5.5.1.2. Подключение с входом……………………………………………………………………….. 567

П5.5.2. Просмотр списка баз данных и коллекций………………………………………………………. 567

П5.5.3. Отключение от сервера……………………………………………………………………………………… 569

П5.6. Работа с базами данных………………………………………………………………………………………………… 569

П5.6.1. Создание базы данных………………………………………………………………………………………. 569

П5.6.2. Удаление базы данных………………………………………………………………………………………. 570

П5.7. Работа с коллекциями……………………………………………………………………………………………………. 570

П5.7.1. Создание коллекции…………………………………………………………………………………………… 570

П5.7.2. Удаление коллекции…………………………………………………………………………………………… 571

П5.8. Работа с индексами………………………………………………………………………………………………………… 571

П5.8.1. Создание индекса……………………………………………………………………………………………….. 571

П5.8.2. Удаление индекса………………………………………………………………………………………………. 573

П5.9. Работа с документами……………………………………………………………………………………………………. 574

П5.9.1. Добавление документов в коллекцию………………………………………………………………. 574

П5.9.2. Просмотр документов, имеющихся в коллекции……………………………………………… 575

П5.9.2.1. Фильтрация и сортировка документов……………………………………………… 577

П5.9.3. Правка и удаление документов…………………………………………………………………………. 578

П5.9.4. Прочие операции над документами…………………………………………………………………. 579

П5.10. Экспорт и импорт документов…………………………………………………………………………………….. 580

П5.10.1. Экспорт документов…………………………………………………………………………………………. 580

П5.10.2. Импорт документов………………………………………………………………………………………….. 581

П5.11. Встроенная программа Mongosh………………………………………………………………………………… 582

Приложение 6. Postman: установка и использование……………………………. 583

П6.1. Установка Postman………………………………………………………………………………………………………… 583

П6.2. Запуск и завершение работы Postman…………………………………………………………………………. 584

П6.3. Главное окно Postman……………………………………………………………………………………………………. 585

П6.4. Отправка клиентских запросов…………………………………………………………………………………….. 587

П6.4.1. Задание целевого интернет-адреса и HTTP-метода……………………………………….. 587

П6.4.2. Указание GET-параметров………………………………………………………………………………… 588

П6.4.3. Указание POST-параметров………………………………………………………………………………. 590

П6.4.4. Указание жетона пользователя для аутентификации…………………………………….. 590

П6.4.5. Указание заголовков запроса……………………………………………………………………………. 591

П6.4.6. Работа с cookie……………………………………………………………………………………………………. 591

П6.4.7. Отправка созданного клиентского запроса……………………………………………………… 594

П6.5. Просмотр серверных ответов………………………………………………………………………………………… 594

П6.5.1. Просмотр тела ответа………………………………………………………………………………………… 595

П6.5.2. Просмотр cookie, полученных с ответом…………………………………………………………. 596

П6.5.3. Просмотр заголовков ответа……………………………………………………………………………… 596

П6.6. Работа с вкладками главной области…………………………………………………………………………… 597

П6.7. Работа с историей Postman…………………………………………………………………………………………… 599

Приложение 7. Описание файлового архива………………………………………… 601

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

Дронов Владимир Александрович, профессиональный программист, писатель и журналист, работает с компьютерами с 1987 года. Автор более 30 популярных компьютерных книг, в том числе «Django 2.1. Практика создания веб-сайтов на Python», “HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера“, «Python 3. Самое необходимое», «Python 3 и PyQt 5. Разработка приложений», “Laravel. Быстрая разработка современных динамических Web-сайтов на PHP, MySQL, HTML и CSS“, “Angular 4. Быстрая разработка сверхдинамических Web-сайтов на TypeScript и PHP” и книг по продуктам Adobe Flash и Adobe Dreamweaver различных версий. Его статьи публикуются в журналах “Мир ПК” и “ИнтерФейс” (Израиль) и интернет-порталах “IZ City” и “TheVista.ru”.

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

Вышла книга Дуга Фаррелла “Python. Как стать профессионалом”

Python. Как стать профессионалом

Книга ориентирована на читателей, имеющих базовый опыт программирования на языке Python и желающих быстро научиться применять его в реальных проектах или изучить Python в качестве второго языка. Рассмотрен широкий круг тем от соблюдения чистоты кода и грамотного именования функций и переменных, до проектирования API, правил объектно-ориентированного программирования, обеспечения безопасности (аутентификация, авторизация) и взаимодействия с базами данных. Затронут широкий круг вопросов, связанных с программированием модулей на Python, автоматизацией задач, использования веб-фреймворков, в частности Flask.

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

Разработка приложений с Python и Flask

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

Эта книга поможет вам пройти путь от начинающего Python-программиста до уверенного Python-разработчика.

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

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

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

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

Введение. 15

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

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

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

Структура книги: ее дорожная карта. 20

О коде. 22

Об авторе. 23

Глава 1. Становление питониста. 25

1.1. Стремление к обучению.. 26

1.2. Достижение целей. 27

1.2.1. Стиль мышления разработчика. 27

1.2.2. Создание приложений. 28

1.3. Использование языка Python. 28

1.3.1. Парадигмы программирования. 28

1.3.2. Создание сопровождаемого кода. 29

1.3.3. Производительность. 30

1.3.4. Сообщество приверженцев языка. 32

1.3.5. Инструментарий разработчика. 33

1.4. Выбор используемой версии Python. 34

1.5. Заключительные размышления. 35

1.6. Резюме. 35

Часть I. Закладка фундамента. 37

Глава 2. Подходящие имена. 39

2.1. Имена. 39

2.1.1. Присвоение имен. 41

2.1.2. Эксперимент по присвоению имен. 44

2.2. Пространства имен. 46

2.3. Пространства имен в языке Python. 47

2.3.1. Уровень встроенных модулей. 48

2.3.2. Уровень модуля. 49

2.3.3. Уровень функций. 53

2.3.4. Область видимости пространства имен. 54

2.3.5. Эксперимент с пространством имен. 56

2.4. Резюме. 60

Глава 3. API: давайте пообщаемся. 61

3.1. Начало разговора. 62

3.1.1. Соглашение, заключаемое между частями кода. 63

3.1.2. Что передается в качестве входных данных. 64

3.1.3. Что ожидается на выходе. 66

3.2. Работа API 69

3.2.1. Именование. 69

3.2.2. Параметры. 70

3.2.3. Возвращаемое значение. 73

3.2.4. Единственная ответственность. 73

3.2.5. Длина функции. 74

3.2.6. Идемпотентность. 75

3.2.7. Побочные эффекты. 75

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

3.4. Заключительные размышления. 78

3.5. Резюме. 78

Глава 4. Объект разговора. 80

4.1. Объектно-ориентированное программирование. 80

4.1.1. Определение класса. 81

4.1.2. Рисование с помощью класса. 83

4.1.3. Наследование. 94

4.1.4. Полиморфизм. 102

4.1.5. Композиция. 103

4.2. Заключительные размышления. 107

4.3. Резюме. 107

Глава 5. Исключительные события. 109

5.1. Исключения. 111

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

5.2.1. Обработка исключения, если код способен как-то исправить ситуацию.. 114

5.2.2. Предоставление исключениям возможности перемещаться вверх
по коду ваших программ. 114

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

5.2.4. Не стоит замалчивать исключения. 115

5.3. Выдача исключений. 120

5.4. Создание пользовательских исключений. 121

5.5. Заключительные размышления. 124

5.6. Резюме. 124

Часть II. Работа над конкретным заданием.. 125

Глава 6. Обмен информацией по Интернету. 127

6.1. Делитесь своей работой с другими. 127

6.1.1. Преимущества веб-приложений. 128

6.1.2. Сложности, связанные с использованием веб-приложений. 128

6.2. Серверы. 129

6.2.1. Модель “запрос — ответ”. 130

6.3. Веб-серверы. 131

6.4. Flask. 134

6.4.1. Почему именно Flask?. 134

6.4.2. Ваш первый веб-сервер. 135

6.4.3. Обслуживание содержимого. 138

6.4.4. Дополнительные функции Jinja2. 141

6.5. Запуск веб-сервера. 153

6.5.1. Gunicorn. 154

6.5.2. Коммерческий хостинг. 154

6.6. Заключительные размышления. 155

6.7. Резюме. 155

Глава 7. Работа со стилем.. 157

7.1. Стилизация приложения. 157

7.1.1. Создание привлекательных стилей. 158

7.1.2. Согласованность стилей. 158

7.1.3. Нормализация стилей. 159

7.1.4. Адаптивный дизайн. 159

7.2. Встраивание Bootstrap. 160

7.2.1. Предыдущий пример, теперь с Bootstrap. 160

7.3. Помощь в развитии приложения MyBlog. 169

7.3.1. Экземпляр приложения Flask. 169

7.4. Пространства имен. 174

7.4.1. Flask Blueprints 174

7.4.2. Добавление Blueprints в MyBlog. 175

7.4.3. Создание страницы “О сайте”. 179

7.4.4. Реструктуризированный app-экземпляр. 181

7.5. Навигация. 181

7.5.1. Создание навигационной информации. 182

7.5.2. Отображение навигационной информации. 183

7.5.3. Текущий вид MyBlog. 184

7.6. Конфигурация приложения. 186

7.6.1. Файлы конфигурации. 186

7.6.2. Закрытая информация. 186

7.7. Панель инструментов отладки Flask. 187

7.7.1. FlaskDynaConf 187

7.8. Регистрационная информация. 192

7.8.1. Конфигурация. 192

7.9. Добавление фавикона. 196

7.10. Заключительные размышления. 198

7.11. Резюме. 198

Глава 8. А я тебя знаю? Аутентификация. 200

8.1. Протокол HTTP, не имеющий состояния. 200

8.1.1. Сессии. 201

8.2. Запоминание пользователя. 202

8.2.1. Аутентификация. 203

8.2.2. Вход в систему. 213

8.3. Экстренные сообщения. 219

8.3.1. Усовершенствование формы входа. 220

8.4. Расширение круга друзей. 223

8.4.1. Blueprint-схема аутентификации. 224

8.4.2. Новая форма для пользователя. 225

8.4.3. Ах да: выход из системы. 228

8.5. Что дальше. 229

8.6. Резюме. 229

Глава 9. Какие действия вам разрешены? Авторизация. 230

9.1. Переход ко входу и выходу. 230

9.2. Подтверждение новых друзей. 232

9.2.1. Отправка электронной почты. 233

9.3. Сброс паролей. 239

9.4. Профили пользователей. 243

9.5. Безопасность. 246

9.5.1. Защита маршрутов. 246

9.6. Роли пользователей, задаваемые авторизацией. 247

9.6.1. Создание ролей. 247

9.6.2. Авторизация маршрутов. 250

9.7. Защита форм. 253

9.8. Заключительные размышления. 253

9.9. Резюме. 254

Глава 10. Выгоды от постоянства: базы данных. 255

10.1. Вторая половина дела. 255

10.1.1. Долговременное хранение информации. 256

10.2. Доступ к данным. 256

10.3. Системы управления базами данных. 262

10.3.1. Таблицы. 262

10.3.2. Отношения. 263

10.3.3. База данных транзакций. 266

10.3.4. Язык структурированных запросов SQL. 268

10.4. Использование SQLite в качестве базы данных. 271

10.5. SQLAlchemy. 271

10.5.1. Преимущества. 272

10.6. Моделирование базы данных. 272

10.6.1. Определение классов. 273

10.7. Создание и использование базы данных. 277

10.7.1. Добавление данных. 277

10.7.2. Использование данных. 280

10.8. Заключительные размышления. 283

10.9. Резюме. 283

Глава 11. Мне есть что сказать. 285

11.1. Публикации в MyBlog. 285

11.1.1. Моделирование баз данных. 286

11.2. Изменение порядка изложения материала. 289

11.3. Blueprint-схема контента. 289

11.4. Отображение и создание публикаций. 290

11.4.1. Обработчик отображения. 290

11.4.2. Шаблон отображения. 291

11.5. Создание публикаций. 292

11.5.1. Обработчик создания. 292

11.5.2. Форма создания. 293

11.5.3. Шаблон создания. 294

11.6. Отображение и редактирование публикации. 295

11.6.1. Обработчик отображения. 295

11.6.2. Шаблон отображения. 296

11.6.3. Обработчик обновления. 298

11.6.4. Форма обновления. 299

11.6.5. Шаблон обновления. 300

11.7. Иерархия контента для комментариев. 301

11.7.1. Изменение класса сообщения. 304

11.7.2. Обработчик отображения. 305

11.7.3. Шаблон отображения. 308

11.8. Создание комментариев. 310

11.8.1. Шаблон создания. 310

11.8.2. Форма создания. 311

11.8.3. Обработчик создания. 311

11.9. Уведомление пользователей. 312

11.10. Обработка ошибок сайта. 314

11.11. Заключительные размышления. 317

11.12. Резюме. 317

Глава 12. И что, на этом всё?. 319

12.1. Тестирование. 319

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

12.1.2. Функциональное тестирование. 321

12.1.3. Сквозное тестирование. 321

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

12.1.5. Нагрузочное тестирование. 321

12.1.6. Тестирование производительности. 321

12.1.7. Регрессионное тестирование. 322

12.1.8. Тестирование доступности. 322

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

12.2. Отладка. 323

12.2.1. Воспроизведение ошибок. 323

12.2.2. Точки останова. 323

12.2.3. Ведение журнала. 324

12.2.4. Неприемлемые результаты. 324

12.2.5. Процесс исключения. 325

12.2.6. Проговаривание проблемы. 325

12.3. Инструменты. 325

12.3.1. Управление исходным кодом. 325

12.3.2. Оптимизация. 326

12.3.3. Контейнеры. 327

12.3.4. Базы данных. 327

12.3.5. Языки. 328

12.4. Среды операционных систем. 329

12.5. Облачные вычисления. 329

12.6. Сеть. 330

12.7. Сотрудничество. 330

12.8. Заключительные размышления. 331

12.9. Резюме. 331

Приложение. Ваша среда разработки. 333

П1. Установка Python. 333

П1.1. Windows 334

П1.2. Mac. 334

П1.3. Linux. 335

П2. Виртуальная среда Python. 336

П2.1. Windows 337

П2.2. Mac и Linux. 338

П3. Настройка Visual Studio Code. 339

П3.1. Установка Visual Studio Code. 339

П3.2. Установка Python-расширения. 340

П3.3. Другие полезные расширения. 340

П3.4. Запуск из командной строки. 341

П3.5. Запуск проекта. 341

П4. Ряд полезных советов. 343

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

Doug Farrell

Дуг Фаррелл (Doug Farrell) занимается разработкой программных средств с 1983 года, хотя имеет степени бакалавра по двум явно смежным областям — по физике и по прикладному искусству. Дуг — программист-самоучка, на протяжении многих лет использовавший немало языков во многих отраслях: Pascal, Fortran, C/C++, PHP, Python и JavaScript. С Python он работает с 2000 года, а с 2006 года Python стал его основным языком. Дуг написал множество статей для RealPython.com. Он также преподавал в центре STEM, где использовалась существенная часть материалов разработанного им обучающего курса.

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

Бестселлер: “Интернет-магазин без программирования”

Интернет-магазин без программирования

Книга рассказывает о том, как собрать работающий интернет-магазин из готовых блоков, подключить платежные системы и быстро запустить продажи. Приводится подробная инструкция по созданию и запуску интернет-магазина в социальной сети «ВКонтакте». Описаны возможности бесплатных он-лайн конструкторов Nethouse, ExpertPlus, Diafan, Битрикс24. Рассказано о выборе хостинга и регистрации домена для собственного интернет-магазина. Показано создание интернет-магазина с помощью конструктора сайтов Tilda. Рассмотрены функциональные возможности специализированных систем для создания интернет-магазинов  PHPShop, OpenCart, PrestaShop, Ecwid, а также плагина WooCommerce для CMS WordPress.

Для пользователей ПК

Откройте свой интернет-магазин без помощи программистов и дизайнеров за несколько простых шагов!

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

Эта книга расскажет, как организовать продажу товаров в социальной сети «ВКонтакте», а также познакомит вас с эффективными и бесплатными конструкторами, позволяющими собрать работающий интернет-магазин из готовых блоков, подключить платежные системы и быстро запустить продажи. Авторы подробно рассматривают возможности бесплатных специализированных  CMS для создания интернет-магазинов и сравнивают их функции. Прочитав эту книгу, вы сможете начать собственный путь в сферу он-лайн торговли, даже если не являетесь IT-специалистом.

В книге рассмотрены:

  • Интернет-магазины «ВКонтакте»
  • Он-лайн конструкторы Nethouse, ExpertPlus, Diafan, Битрикс24
  • Tilda
  • PHPShop
  • OpenCart
  • PrestaShop
  • Ecwid
  • WooCommerce

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

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

Для кого эта книга?……………………………………………………………………………………………………………………… 8

Чего нет в этой книге?………………………………………………………………………………………………………………….. 8

Структура книги………………………………………………………………………………………………………………………… 10

Прежде, чем начать……………………………………………………………………………………………………………………. 11

Обратная связь…………………………………………………………………………………………………………………………… 12

Глава 1. Интернет-магазин в социальной сети «ВКонтакте»………………….. 13

Интернет-магазины в социальной сети «ВКонтакте»…………………………………………………………….. 13

Создание сообщества для интернет-магазина………………………………………………………………………… 17

Оформление сообщества: общие рекомендации…………………………………………………………………….. 24

Интернет-магазин: базовые товары…………………………………………………………………………………………. 27

Интернет-магазин: расширенные товары……………………………………………………………………………….. 29

Просмотр заказов……………………………………………………………………………………………………………….. 29

Настройка оплаты……………………………………………………………………………………………………………… 30

Дополнительные настройки……………………………………………………………………………………………… 31

Настройка доставки…………………………………………………………………………………………………………… 32

Скидки и промокоды………………………………………………………………………………………………………….. 33

Создание и редактирование товара…………………………………………………………………………………………. 35

Глава 2. Конструкторы интернет-магазинов………………………………………….. 39

Nethouse………………………………………………………………………………………………………………………………………. 40

ExpertPlus……………………………………………………………………………………………………………………………………. 43

Diafan………………………………………………………………………………………………………………………………………….. 45

«Битрикс24»……………………………………………………………………………………………………………………………….. 49

Подводя итог………………………………………………………………………………………………………………………………. 53

Глава 3. Создание интернет-магазина с помощью конструктора Tilda…… 55

Кратко о возможностях Tilda……………………………………………………………………………………………………. 55

Регистрация………………………………………………………………………………………………………………………………… 56

Выбор шаблона магазина и подключение карточек товаров……………………………………………….. 57

Добавление товаров в магазин…………………………………………………………………………………………………. 57

Способ 1. Добавляем товар вручную………………………………………………………………………………. 57

Способ 2. Добавляем товары через Каталог товаров…………………………………………………… 60

Работа с корзиной……………………………………………………………………………………………………………………… 63

Настройка денежных единиц для магазина……………………………………………………………………………. 64

Настройка платежной системы для оплаты товара………………………………………………………………. 66

Продажа единичного товара или услуги………………………………………………………………………………… 66

Продажа единичного товара через корзину……………………………………………………………………. 67

Продажа единичного товара без корзины (с переходом сразу в платежную систему). 69

Глава 4. Домен и хостинг……………………………………………………………………….. 77

Основные понятия……………………………………………………………………………………………………………………… 77

Сайт…………………………………………………………………………………………………………………………………….. 77

Хостинг……………………………………………………………………………………………………………………………….. 77

Виртуальный хостинг………………………………………………………………………………………………. 78

Хостинг на выделенном сервере……………………………………………………………………………… 78

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

Домен…………………………………………………………………………………………………………………………………… 79

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

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

Резюме  86

Глава 5. Интернет-магазин на бесплатной версии PHPShop…………………… 87

Системные требования……………………………………………………………………………………………………………… 87

Установка…………………………………………………………………………………………………………………………………… 88

Обзор возможностей………………………………………………………………………………………………………………….. 91

Администрирование и настройка внешнего вида…………………………………………………………………… 93

Создание страницы……………………………………………………………………………………………………………………. 96

Управление меню………………………………………………………………………………………………………………………. 99

Добавление корзины………………………………………………………………………………………………………………….. 99

Возможности приема платежей……………………………………………………………………………………………… 100

Заключение………………………………………………………………………………………………………………………………. 101

Глава 6. Создание интернет-магазина на базе OpenCart………………………. 103

Коротко о CMS OpenCart………………………………………………………………………………………………………… 103

Особенности и функции OpenCart………………………………………………………………………………………….. 104

Загрузка и установка………………………………………………………………………………………………………………. 105

Базовые настройки………………………………………………………………………………………………………………….. 108

Установка русского языка………………………………………………………………………………………………. 110

Добавление шаблона оформления…………………………………………………………………………………………. 112

Управление категориями………………………………………………………………………………………………………… 114

Настройка производителей…………………………………………………………………………………………………….. 118

Управление атрибутами товаров…………………………………………………………………………………………… 119

Создание карточки товара……………………………………………………………………………………………………… 121

Управление продажами………………………………………………………………………………………………………….. 124

Заключение………………………………………………………………………………………………………………………………. 126

Глава 7. Интернет-магазин на основе бесплатной CMS PrestaShop………. 127

Системные требования……………………………………………………………………………………………………………. 128

Функциональные возможности………………………………………………………………………………………………. 128

Установка…………………………………………………………………………………………………………………………………. 129

Пульт — административная панель PrestaShop……………………………………………………………………. 132

Управление внешним видом и установка шаблонов……………………………………………………………. 134

Просмотр и управление заказами………………………………………………………………………………………….. 136

Управление категорями, атрибутами и поставщиками……………………………………………………….. 138

Заполнение карточки товара………………………………………………………………………………………………….. 142

Заключение………………………………………………………………………………………………………………………………. 148

Глава 8. Создание магазина на Ecwid…………………………………………………… 149

Вариант 1: создаем магазин на платформе Ecwid + CMS WordPress………………………………….. 149

Регистрация………………………………………………………………………………………………………………………. 149

Добавление товара………………………………………………………………………………………………………….. 153

Настройка в Ecwid-магазине системы оплаты за товар……………………………………………….. 153

Вариант 2: создаем магазин на плагине Магазин Эквид……………………………………………………… 155

Шаг 1: добавление товаров…………………………………………………………………………………………….. 158

Шаг 2: настройка способа доставки………………………………………………………………………………. 161

Шаг 3: настройка способа оплаты…………………………………………………………………………………. 162

Шаг 4: сделайте тестовый заказ……………………………………………………………………………………… 163

Резюме………………………………………………………………………………………………………………………………………. 164

Глава 9. Плагин WooCommerce для создания магазина на WordPress…… 165

Кратко о WordPress………………………………………………………………………………………………………………….. 165

WooCommerce………………………………………………………………………………………………………………………….. 167

Настройка интернет-магазина на WooCommerce………………………………………………………………… 168

Подробный способ настройки плагина WooCommerce………………………………………………… 168

Вкладка Основные…………………………………………………………………………………………………… 168

Раздел Адрес магазина…………………………………………………………………………………… 168

Раздел Основные настройки………………………………………………………………………….. 169

Раздел Настройки валюты……………………………………………………………………………. 170

Вкладка Товары | Основные…………………………………………………………………………………… 171

Раздел Страницы магазина…………………………………………………………………………… 171

Раздел Габариты……………………………………………………………………………………………. 172

Вкладка Товары | Отзывы……………………………………………………………………………………… 172

Вкладка Товары | Запасы………………………………………………………………………………………. 173

Вкладка Товары | Скачиваемые товары………………………………………………………………. 173

Вкладка Платежи………………………………………………………………………………………………….. 175

Вкладка Аккаунты и приватность……………………………………………………………………….. 176

Раздел Политика конфиденциальности……………………………………………………….. 176

Вкладка Email’ы……………………………………………………………………………………………………… 178

Быстрый способ настройки плагина WooCommerce…………………………………………………….. 178

Делаем магазин главной страницей сайта…………………………………………………………………….. 182

Пример создания скачиваемых цифровых товаров………………………………………………………. 182

Советы по оформлению SEO-текста………………………………………………………………………………. 185

Как продавать виртуальный товар-услугу?………………………………………………………………….. 186

Добавление магазина в сервисы «Яндекса»………………………………………………………………….. 186

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

 

Валентин Холмогоров

Валентин Холмогоров — автор 49 книг, в том числе, «Термоядерный контент. Практическое руководство по созданию текстов для SMM», и более 400 публикаций в печатных СМИ, соавтор Сергея Лукьяненко, преподаватель, IT-журналист и блогер. В течение 8 лет трудился копирайтером и техническим писателем в одной из ведущих российских IT-компаний. Получил звание почетного профессора в Санкт-Петербургской Академии философии, экономики и права, где выступал с лекциями и обучал слушателей основам интернет-маркетинга. В настоящее время работает ведущим редактором в популярном журнале «Хакер».

 

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

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

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

Долгожданная “Библия C#. 6-е издание”

Библия C#. 6-е издание

Книга посвящена программированию на языке C#  для платформы Microsoft .NET, начиная с основ языка и разработки программ для работы в режиме командной строки и заканчивая созданием современных веб-приложений. Материал сопровождается большим количеством практических примеров. Подробно описывается логика выполнения каждого участка программы. Уделено внимание вопросам повторного использования кода. В 6-м издании примеры переписаны с учетом современной платформы .NET 7, большой упор сделан на веб–приложения и фреймворк доступа к данным  Entity Framework. На сайте издательства находятся коды программ, дополнительная справочная информация и копия базы данных для выполнения примеров из книги.

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

Программирование может быть доступно каждому!

Книга будет полезна всем, кто хочет научиться писать программы для платформы Microsoft .NET на современном и удобном языке программирования C#. Большое количество практических примеров, легкость изложения материала и интересные комментарии призваны сделать обучение занимательным и нескучным, а подробное описание логики выполнения каждого участка кода поможет читателю использовать полученные знания при разработке собственных приложений.
Дополнительным источником знаний в процессе дальнейшего обучения служит электронный архив к книге, содержащий коды программ, дополнительную справочную информацию и копию базы данных для выполнения примеров из книги.

  • Программирование для .NET на C#
  • Платформа .NET
  • Базы данных
  • Веб-программирование
  • Сетевое программирование
  • Повторное использование кода
  • Изучение языка на полезных примерах

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

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

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

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

Бонус……………………………………………………………………………………………………… 15

Структура книги……………………………………………………………………………………. 17

Глава 1. Введение в .NET……………………………………………………………………….. 19

1.1. Платформа .NET………………………………………………………………………………………………………………….. 19

1.1.1. «Кубики» .NET…………………………………………………………………………………………………………… 20

1.1.2. Сборки……………………………………………………………………………………………………………………….. 21

1.2. Обзор среды разработки Visual Studio .NET…………………………………………………………………….. 23

1.2.1. Работа с проектами и решениями……………………………………………………………………………. 23

1.2.2. Работа с файлами……………………………………………………………………………………………………… 31

1.3. Простейший пример .NET-приложения…………………………………………………………………………….. 31

1.3.1. Проект на языке C#…………………………………………………………………………………………………… 31

1.3.2. Компиляция и запуск проекта на языке C#…………………………………………………………….. 32

1.4. Компиляция приложений……………………………………………………………………………………………………. 34

1.4.1. Компиляция в .NET Framework………………………………………………………………………………… 34

1.4.2. Компиляция в .NET Core или .NET 5 и старше……………………………………………………….. 35

1.5. Поставка сборок………………………………………………………………………………………………………………….. 37

1.6. Формат исполняемого файла .NET……………………………………………………………………………………. 40

1.7. Код верхнего уровня…………………………………………………………………………………………………………… 41

Глава 2. Основы C#……………………………………………………………………………….. 42

2.1. Комментарии……………………………………………………………………………………………………………………….. 42

2.2. Переменная………………………………………………………………………………………………………………………….. 43

2.3. Именование элементов кода………………………………………………………………………………………………. 46

2.4. Работа с переменными……………………………………………………………………………………………………….. 49

2.4.1. Строки и символы…………………………………………………………………………………………………….. 52

2.4.2. Массивы…………………………………………………………………………………………………………………….. 55

2.4.3. Перечисления……………………………………………………………………………………………………………. 58

2.5. Простейшая математика…………………………………………………………………………………………………….. 61

2.6. Условные операторы………………………………………………………………………………………………………….. 66

2.6.1. Условный оператор if………………………………………………………………………………………………. 66

2.6.2. Условный оператор switch………………………………………………………………………………………. 69

2.6.3. Сокращенная проверка……………………………………………………………………………………………. 70

2.7. Циклы…………………………………………………………………………………………………………………………………… 71

2.7.1. Цикл for……………………………………………………………………………………………………………………… 71

2.7.2. Цикл while………………………………………………………………………………………………………………….. 74

2.7.3. Цикл do…while…………………………………………………………………………………………………………… 75

2.7.4. Цикл foreach………………………………………………………………………………………………………………. 76

2.8. Управление циклом…………………………………………………………………………………………………………….. 77

2.8.1. Оператор break…………………………………………………………………………………………………………. 77

2.8.2. Оператор continue…………………………………………………………………………………………………….. 78

2.9. Константы……………………………………………………………………………………………………………………………. 79

2.10. Нулевые значения…………………………………………………………………………………………………………….. 80

2.11. Начальные значения переменных…………………………………………………………………………………… 80

2.12. Системы счисления…………………………………………………………………………………………………………… 81

2.13. Логические операции……………………………………………………………………………………………………….. 84

Глава 3. Объектно-ориентированное программирование………………………. 86

3.1. Объекты на C#…………………………………………………………………………………………………………………….. 86

3.2. Свойства………………………………………………………………………………………………………………………………. 90

3.3. Методы………………………………………………………………………………………………………………………………… 96

3.3.1. Описание методов…………………………………………………………………………………………………….. 97

3.3.2. Параметры методов………………………………………………………………………………………………….. 99

3.3.3. Перегрузка методов………………………………………………………………………………………………… 107

3.3.4. Конструктор……………………………………………………………………………………………………………. 107

3.3.5. Статичность……………………………………………………………………………………………………………. 112

3.3.6. Рекурсия…………………………………………………………………………………………………………………… 115

3.3.7. Деструктор………………………………………………………………………………………………………………. 118

3.3.8. Упрощенный синтаксис…………………………………………………………………………………………. 119

3.4. Метод Main()……………………………………………………………………………………………………………………… 120

3.5. Оператор Using…………………………………………………………………………………………………………………. 122

3.6. Объекты только для чтения……………………………………………………………………………………………… 123

3.7. Объектно-ориентированное программирование……………………………………………………………. 124

3.7.1. Наследование…………………………………………………………………………………………………………. 124

3.7.2. Инкапсуляция………………………………………………………………………………………………………….. 128

3.7.3. Полиморфизм………………………………………………………………………………………………………….. 131

3.8. Наследование от класса Object……………………………………………………………………………………….. 133

3.9. Переопределение методов……………………………………………………………………………………………….. 134

3.10. Обращение к предку из класса………………………………………………………………………………………. 138

3.11. Вложенные классы…………………………………………………………………………………………………………. 140

3.12. Область видимости…………………………………………………………………………………………………………. 142

3.13. Ссылочные и простые типы данных…………………………………………………………………………….. 144

3.14. Проверка класса объекта……………………………………………………………………………………………….. 145

3.15. Неявный тип данных var………………………………………………………………………………………………… 146

3.16. Абстрактные классы………………………………………………………………………………………………………. 147

3.17. Инициализация свойств………………………………………………………………………………………………….. 150

3.18. Частицы класса……………………………………………………………………………………………………………….. 151

Глава 4. Консольные приложения………………………………………………………… 152

4.1. Украшение консоли………………………………………………………………………………………………………….. 153

4.2. Работа с буфером консоли……………………………………………………………………………………………….. 155

4.3. Окно консоли…………………………………………………………………………………………………………………….. 157

4.4. Запись в консоль……………………………………………………………………………………………………………….. 157

4.5. Чтение данных из консоли……………………………………………………………………………………………….. 160

Глава 5. Продвинутое программирование……………………………………………. 162

5.1. Приведение и преобразование типов………………………………………………………………………………. 162

5.2. Все в .NET — это объекты………………………………………………………………………………………………… 164

5.3. Работа с перечислениями Enum………………………………………………………………………………………. 166

5.3.1. Перечисления — это значения………………………………………………………………………………. 166

5.3.2. Перечисления-флаги………………………………………………………………………………………………. 169

5.4. Структуры…………………………………………………………………………………………………………………………. 172

5.5. Дата и время………………………………………………………………………………………………………………………. 177

5.6. Класс строк……………………………………………………………………………………………………………………….. 180

5.7. Перегрузка операторов…………………………………………………………………………………………………….. 183

5.7.1. Математические операторы………………………………………………………………………………….. 184

5.7.2. Операторы сравнения…………………………………………………………………………………………….. 186

5.7.3. Операторы преобразования………………………………………………………………………………….. 187

5.8. Шаблоны……………………………………………………………………………………………………………………………. 189

5.9. Анонимные типы……………………………………………………………………………………………………………….. 192

5.10. Кортежи…………………………………………………………………………………………………………………………… 194

5.11. Форматирование строк…………………………………………………………………………………………………… 195

5.12. Динамика…………………………………………………………………………………………………………………………. 196

Глава 6. Интерфейсы……………………………………………………………………………. 198

6.1. Объявление интерфейсов………………………………………………………………………………………………….. 199

6.2. Реализация интерфейсов………………………………………………………………………………………………….. 201

6.3. Использование реализации интерфейса…………………………………………………………………………. 202

6.4. Интерфейсы в качестве параметров………………………………………………………………………………… 205

6.5. Перегрузка интерфейсных методов…………………………………………………………………………………. 206

6.6. Наследование……………………………………………………………………………………………………………………. 208

6.7. Клонирование объектов…………………………………………………………………………………………………… 209

6.8. Реализация по умолчанию……………………………………………………………………………………………….. 210

Глава 7. Массивы, списки, коллекции и словари…………………………………. 213

7.1. Базовый класс для массивов……………………………………………………………………………………………. 213

7.2. Невыровненные массивы…………………………………………………………………………………………………. 215

7.3. Динамические массивы…………………………………………………………………………………………………….. 217

7.4. Индексаторы массива………………………………………………………………………………………………………. 220

7.5. Интерфейсы массивов………………………………………………………………………………………………………. 221

7.5.1. Интерфейс IEnumerable………………………………………………………………………………………….. 222

7.5.2. Интерфейсы IComparer и IComparable…………………………………………………………………. 225

7.6. Оператор yield…………………………………………………………………………………………………………………… 228

7.7. Стандартные списки…………………………………………………………………………………………………………. 229

7.7.1. Класс Queue…………………………………………………………………………………………………………….. 229

7.7.2. Класс Stack……………………………………………………………………………………………………………… 230

7.7.3. Класс Hashtable………………………………………………………………………………………………………. 231

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

7.9. Словарь……………………………………………………………………………………………………………………………… 236

Глава 8. Обработка исключительных ситуаций…………………………………… 238

8.1. Исключительные ситуации………………………………………………………………………………………………. 239

8.2. Исключения в C#……………………………………………………………………………………………………………….. 241

8.3. Оформление блоков try…………………………………………………………………………………………………….. 244

8.4. Ошибки в визуальных приложениях……………………………………………………………………………….. 245

8.5. Генерирование исключительных ситуаций……………………………………………………………………. 247

8.6. Иерархия классов исключений………………………………………………………………………………………… 248

8.7. Собственный класс исключения……………………………………………………………………………………… 249

8.8. Блок finally………………………………………………………………………………………………………………………… 252

8.9. Переполнение……………………………………………………………………………………………………………………. 253

8.10. Замечание о производительности…………………………………………………………………………………. 256

Глава 9. События…………………………………………………………………………………. 257

9.1. Делегаты……………………………………………………………………………………………………………………………. 257

9.2. События и их вызов…………………………………………………………………………………………………………… 258

9.3. Использование собственных делегатов………………………………………………………………………….. 261

9.4. Делегаты изнутри……………………………………………………………………………………………………………… 265

9.5. Анонимные методы…………………………………………………………………………………………………………… 267

Глава 10. LINQ…………………………………………………………………………………….. 268

10.1. LINQ при работе с массивами……………………………………………………………………………………….. 268

10.1.1. SQL-стиль использования LINQ………………………………………………………………………… 268

10.1.2. Использование LINQ через методы………………………………………………………………….. 271

10.2. Магия IEnumerable………………………………………………………………………………………………………….. 271

10.3. Доступ к данным…………………………………………………………………………………………………………….. 275

10.4. Использование LINQ для доступа к XML…………………………………………………………………….. 276

Глава 11. Хранение информации………………………………………………………….. 279

11.1. Файловая система…………………………………………………………………………………………………………… 279

11.2. Текстовые файлы…………………………………………………………………………………………………………….. 282

11.3. Бинарные файлы…………………………………………………………………………………………………………….. 285

11.4. XML-файлы……………………………………………………………………………………………………………………… 289

11.4.1. Создание XML-документов……………………………………………………………………………….. 289

11.4.2. Чтение XML-документов……………………………………………………………………………………. 293

11.5. Потоки Stream………………………………………………………………………………………………………………….. 296

11.6. Потоки MemoryStream…………………………………………………………………………………………………….. 297

11.7. Сериализация………………………………………………………………………………………………………………….. 299

11.7.1. Отключение сериализации………………………………………………………………………………… 302

11.7.2. Сериализация в XML…………………………………………………………………………………………. 304

11.7.3. Особенности сериализации……………………………………………………………………………….. 305

11.7.4. Управление сериализацией……………………………………………………………………………….. 307

Глава 12. Многопоточность………………………………………………………………….. 310

12.1. Класс Thread……………………………………………………………………………………………………………………. 311

12.2. Передача параметра в поток…………………………………………………………………………………………. 314

12.3. Конкурентный доступ…………………………………………………………………………………………………….. 316

12.4. Пул потоков…………………………………………………………………………………………………………………….. 318

12.5. Домены приложений .NET……………………………………………………………………………………………… 320

12.6. Ключевые слова async и await………………………………………………………………………………………. 323

12.7. Задачи или потоки — что выбрать?……………………………………………………………………………… 330

Глава 13. Добро пожаловать в веб-программирование…………………………. 332

13.1. Создание первого веб-приложения……………………………………………………………………………….. 332

13.2. Работа с конфигурацией сайта……………………………………………………………………………………… 339

13.3. Работа со статичными файлами……………………………………………………………………………………. 342

13.4. Модель – Представление – Контроллер………………………………………………………………………. 343

13.5. Маршрутизация………………………………………………………………………………………………………………. 345

13.6. Подробнее про контроллеры…………………………………………………………………………………………. 352

13.7. Представления………………………………………………………………………………………………………………… 355

13.8. Модель представления…………………………………………………………………………………………………… 359

13.9. Представления Razor……………………………………………………………………………………………………… 362

13.9.1. Комментарии………………………………………………………………………………………………………. 362

13.9.2. Вывод данных в представлениях……………………………………………………………………… 363

13.9.3. C#-код………………………………………………………………………………………………………………….. 364

13.9.4. Условные операторы…………………………………………………………………………………………. 365

13.9.5. Циклы…………………………………………………………………………………………………………………… 367

13.9.6. Исключительные ситуации……………………………………………………………………………….. 370

13.9.7. Ключевое слово using………………………………………………………………………………………… 370

13.10. Создание представлений……………………………………………………………………………………………… 372

13.10.1. Макеты………………………………………………………………………………………………………………. 372

13.10.2. Стартовый файл……………………………………………………………………………………………….. 376

13.10.3. Встраиваемые представления…………………………………………………………………………. 378

13.10.4. Компоненты………………………………………………………………………………………………………. 382

13.10.5. Секции……………………………………………………………………………………………………………….. 385

13.11. Работа с формами…………………………………………………………………………………………………………. 386

13.12. Проверка данных………………………………………………………………………………………………………….. 391

13.13. Работа с сессиями…………………………………………………………………………………………………………. 395

13.14. Cookie…………………………………………………………………………………………………………………………….. 397

13.15. Доступ к запросу…………………………………………………………………………………………………………… 399

Глава 14. Базы данных………………………………………………………………………… 401

14.1. Библиотека ADO.NET…………………………………………………………………………………………………….. 401

14.2. Строка подключения………………………………………………………………………………………………………. 403

14.3. Подключение к базе данных………………………………………………………………………………………….. 405

14.4. Инъекция зависимостей на примере подключений……………………………………………………… 408

14.5. Пул соединений………………………………………………………………………………………………………………. 412

14.6. Чтение данных из БД………………………………………………………………………………………………………. 413

14.7. Запросы с параметрами…………………………………………………………………………………………………. 417

14.8. Редактирование данных…………………………………………………………………………………………………. 420

14.9. Транзакции………………………………………………………………………………………………………………………. 421

14.10. Библиотека Dapper……………………………………………………………………………………………………….. 422

Глава 15. Entity Framework Core………………………………………………………….. 425

15.1. Создаем EF-приложение………………………………………………………………………………………………… 426

15.2. Код первичен…………………………………………………………………………………………………………………… 427

15.3. Контекст базы данных……………………………………………………………………………………………………. 429

15.4. Доступ к базе данных…………………………………………………………………………………………………….. 431

15.5. Миграции…………………………………………………………………………………………………………………………. 433

15.6. База данных первична……………………………………………………………………………………………………. 439

15.7. LINQ…………………………………………………………………………………………………………………………………. 441

15.8. Связи: один ко многим……………………………………………………………………………………………………. 442

15.9. Работа со связями……………………………………………………………………………………………………………. 444

15.10. Связи: многие ко многим………………………………………………………………………………………………. 446

15.11. Связи: один к одному……………………………………………………………………………………………………. 451

15.12. Журналы……………………………………………………………………………………………………………………….. 453

15.13. Как сохраняются данные?…………………………………………………………………………………………… 456

15.14. Погружение в запросы………………………………………………………………………………………………….. 459

15.15. Асинхронный доступ……………………………………………………………………………………………………. 468

15.16. Поиск по шаблону………………………………………………………………………………………………………… 469

15.17. Удаление данных………………………………………………………………………………………………………….. 470

15.18. Отслеживание изменений…………………………………………………………………………………………….. 471

15.19. Погружение в связи……………………………………………………………………………………………………….. 475

Глава 16. Повторное использование кода…………………………………………….. 481

16.1. Библиотеки………………………………………………………………………………………………………………………. 481

16.2. Создание библиотеки……………………………………………………………………………………………………… 482

16.3. Приватные сборки…………………………………………………………………………………………………………… 488

Глава 17. Сетевые сервисы…………………………………………………………………… 490

17.1. История……………………………………………………………………………………………………………………………. 490

17.2. Создаем WebAPI……………………………………………………………………………………………………………… 492

17.3. Теория Web API………………………………………………………………………………………………………………. 496

17.4. Сессии………………………………………………………………………………………………………………………………. 498

17.5. Полный цикл……………………………………………………………………………………………………………………. 500

Заключение………………………………………………………………………………………….. 503

Список литературы………………………………………………………………………………. 505

Приложение. Описание электронного архива, сопровождающего книгу 507

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

 

Фленов Михаил

Флёнов Михаил, профессиональный программист. Работал в журнале «Хакер», в котором несколько лет вел рубрики «Hack-FAQ» и «Кодинг» для программистов, печатался в журналах «Игромания» и «Chip-Россия». Автор бестселлеров «Библия Delphi», «Программирование в Delphi глазами хакера», «Программирование на C++ глазами хакера», «Компьютер глазами хакера» и др. Некоторые книги переведены на иностранные языки и изданы в США, Канаде, Польше и других странах.

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

Новинка: “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.

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

Встречайте: “Контролируемый взлом. Библия социальной инженерии”

Контролируемый взлом. Библия социальной инженерии

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

Для специалистов по информационной безопасности

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

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

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

В книге вы найдете:

  • 130 практических примеров атак,
  • методику создания 10 000 сценариев учебных атак,
  • более 110 ссылок на дополнительную полезную информацию,
  • пошаговую инструкцию для проведения учебных атак от этапа подготовки до составления отчета;
  • десятки организационных и технических методов защиты от социальной инженерии в компаниях.

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

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

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

От автора………………………………………………………………………………………………………………………………… 9

Кому и как можно использовать эту книгу?………………………………………………………………………. 11

Для представителей служб ИБ, СБ и ИТ-служб………………………………………………………… 13

Для пентестеров…………………………………………………………………………………………………………… 13

Для хакеров………………………………………………………………………………………………………………….. 14

Что такое социальная инженерия?……………………………………………………………………………………… 14

Опасность социальной инженерии…………………………………………………………………………………….. 15

Цитаты………………………………………………………………………………………………………………………….. 15

Ущерб от СИ…………………………………………………………………………………………………………………. 16

Глава 1. Онлайн-атаки………………………………………………………………………. 21

Подготовка……………………………………………………………………………………………………………………………. 21

Пентестеру……………………………………………………………………………………………………………………. 22

OSINT для СИ………………………………………………………………………………………………………. 22

Разведка боем………………………………………………………………………………………………………. 23

Проверка антиспама…………………………………………………………………………………………… 26

Переходим на личности……………………………………………………………………………………… 26

Какую фишинговую форму создавать?…………………………………………………………….. 27

Несуществующий адрес…………………………………………………………………………….. 27

Пробиваем MX-записи……………………………………………………………………………….. 28

Неведение…………………………………………………………………………………………………….. 28

От чьего имени писать?………………………………………………………………………………………. 29

BEC-атака……………………………………………………………………………………………………. 30

Таблица персонализации…………………………………………………………………………… 31

Пример email-MITM……………………………………………………………………………………. 32

Какой фишинговый домен купить?……………………………………………………………………. 33

Безопаснику………………………………………………………………………………………………………………….. 33

Готовим атаки………………………………………………………………………………………………………………………. 33

Атаки по email………………………………………………………………………………………………………………. 34

Идеи по составлению темы письма……………………………………………………………………. 34

Какую подпись и оформление использовать?………………………………………………….. 35

Выбираем контекст……………………………………………………………………………………………… 35

Векторы и сценарии……………………………………………………………………………………………. 36

Контекст: событийные атаки (Event attacks)……………………………………………………. 36

Событийные атаки: чрезвычайная ситуация…………………………………………… 36

Событийные атаки: праздники………………………………………………………………….. 37

Событийные атаки: политика……………………………………………………………………. 37

Контекст: причина………………………………………………………………………………………………. 38

Якобы взлом………………………………………………………………………………………………… 38

Внеплановая проверка от СРО………………………………………………………………….. 39

Неудачные попытки авторизации…………………………………………………………….. 40

Уведомление………………………………………………………………………………………………… 40

Что вы делаете в Бразилии?……………………………………………………………………….. 41

Контекст: запросы………………………………………………………………………………………………. 41

Контекст: вопросы………………………………………………………………………………………………. 41

Вопрос с вложением……………………………………………………………………………………. 41

А что это вы мне отправили?……………………………………………………………………… 42

Контекст: отправка……………………………………………………………………………………………… 42

Контекст: изменения……………………………………………………………………………………………. 42

Контекст: желание………………………………………………………………………………………………. 43

Контекст: «непонятки»………………………………………………………………………………………… 43

Переписка-ссылка……………………………………………………………………………………….. 43

Одинокий файл……………………………………………………………………………………………. 44

Усиление контекста…………………………………………………………………………………………….. 44

Усиление контекста: эмоции……………………………………………………………………… 44

Усиление контекста: давление…………………………………………………………………… 46

Письма от госорганов…………………………………………………………………………………. 46

Срочно обновитесь……………………………………………………………………………………… 47

Усиление контекста: ложь………………………………………………………………………….. 47

Фейковая переписка……………………………………………………………………………………. 48

Фейковая пересылка…………………………………………………………………………………… 48

Усиление контекста: совпадение………………………………………………………………. 49

Источники фишинговых писем…………………………………………………………………………… 49

Файлы……………………………………………………………………………………………………………………………. 50

Некорректное отображение……………………………………………………………………………….. 50

Подарочный сертификат…………………………………………………………………………………….. 50

Пустой файл…………………………………………………………………………………………………………. 51

Документ с «мыльцой»………………………………………………………………………………………… 53

Имитация Excel-таблицы в Word-документе…………………………………………………….. 57

Небезопасный PDF-файл…………………………………………………………………………………….. 57

Файл как прокладка перед нагрузкой……………………………………………………………….. 59

Отсутствующий сертификат………………………………………………………………………………. 61

Разрешите и заполните……………………………………………………………………………………….. 62

Файл ICS………………………………………………………………………………………………………………. 63

Социальные сети………………………………………………………………………………………………………….. 64

Подготовка…………………………………………………………………………………………………………… 65

О поиске сотрудников в соцсетях………………………………………………………………………. 69

Клонирование аккаунтов……………………………………………………………………………………. 70

Медленно, но верно…………………………………………………………………………………………….. 70

Многоходовка в соцсети…………………………………………………………………………………….. 70

Терпеливо ждем…………………………………………………………………………………………………… 71

Мессенджеры……………………………………………………………………………………………………………….. 71

Telegram-каналы………………………………………………………………………………………………….. 72

Сотрудник — физлицо………………………………………………………………………………………… 72

Онлайн-консультанты…………………………………………………………………………………………………. 73

Веб-сайты……………………………………………………………………………………………………………………… 73

Поддельное окно для ввода логина и пароля…………………………………………………… 74

Скачайте на нашем сайте…………………………………………………………………………………… 74

Корпоративные порталы……………………………………………………………………………………. 74

Разрешите уточнить……………………………………………………………………………………………. 75

Новостные ресурсы…………………………………………………………………………………………….. 75

Туда, да не туда…………………………………………………………………………………………………… 76

Фейковая капча и предупреждение о cookie…………………………………………………….. 76

Всплывающее окно……………………………………………………………………………………………… 77

Персонализированный сайт……………………………………………………………………………….. 79

Покажи себя…………………………………………………………………………………………………………. 80

Реклама…………………………………………………………………………………………………………………………. 81

Таргет по MAC-адресу……………………………………………………………………………………….. 81

Таргет по геолокации………………………………………………………………………………………….. 82

Адвёртинг…………………………………………………………………………………………………………….. 82

Фиктивный APK-файл…………………………………………………………………………………………. 83

Лидеры мнений…………………………………………………………………………………………………………….. 83

Видео-deepfake…………………………………………………………………………………………………………….. 83

Видео без видео……………………………………………………………………………………………………………. 84

Аудио-deepfake……………………………………………………………………………………………………………. 84

«Find trap» сценарии…………………………………………………………………………………………………….. 85

Find trap с помощью рекомендаций…………………………………………………………………… 86

Выдуманная компания……………………………………………………………………………………….. 87

Find trap с помощью звонков………………………………………………………………………………. 87

Продажа фиктивного сертификата……………………………………………………………………. 87

Комментарии………………………………………………………………………………………………………………… 87

Легализованная СИ……………………………………………………………………………………………………… 88

Отправили к вам………………………………………………………………………………………………….. 89

Фишинг………………………………………………………………………………………………………………………….. 90

Проверка на утечку…………………………………………………………………………………………….. 90

Data-phishing………………………………………………………………………………………………………… 90

Многоходовки………………………………………………………………………………………………………………. 91

Фейковое интервью……………………………………………………………………………………………………… 93

Цепочки писем……………………………………………………………………………………………………………… 93

Цепочки писем: неправильная кодировка как повод……………………………………….. 93

Цепочки писем: простите, не туда……………………………………………………………………… 94

Цепочки писем: нас взломали…………………………………………………………………………….. 94

Цепочки писем: использование для data-фишинга…………………………………………… 94

Глава 2. Технологические трюки введения в заблуждение………………… 95

Маскировка ссылок……………………………………………………………………………………………………………… 95

Символ @……………………………………………………………………………………………………………………… 95

Слеш в Unicode…………………………………………………………………………………………………………….. 96

Домены в Punycode………………………………………………………………………………………………………. 96

Зашумление юникодом……………………………………………………………………………………………….. 96

Обфускация ссылок……………………………………………………………………………………………………… 96

QR-коды………………………………………………………………………………………………………………………… 97

Некорректный протокол……………………………………………………………………………………………… 97

Ссылки в виде картинок………………………………………………………………………………………………. 98

Ссылка в документах…………………………………………………………………………………………………… 99

Очень длинная ссылка…………………………………………………………………………………………………. 99

Ссылка виде цифр………………………………………………………………………………………………………. 100

Невидимая при наведении мыши……………………………………………………………………………… 100

Редиректы…………………………………………………………………………………………………………………… 100

Неактивные ссылки……………………………………………………………………………………………………. 102

Похожие на официальные…………………………………………………………………………………………. 103

Ссылки в поддоменах………………………………………………………………………………………………… 103

Сращивание с поддоменом……………………………………………………………………………………….. 104

Сращивание с протоколом……………………………………………………………………………………….. 104

Домен после слеша……………………………………………………………………………………………………. 104

В дополнение……………………………………………………………………………………………………………… 104

Капча от ботов защитного ПО…………………………………………………………………………. 104

Одноразовые ссылки…………………………………………………………………………………………. 105

Подделка отправителя………………………………………………………………………………………………………. 105

Email с официального ресурса………………………………………………………………………………………….. 106

Вложения и файлы……………………………………………………………………………………………………………… 107

Файлы Microsoft Office……………………………………………………………………………………………… 107

Рушим шаблоны поведения через печать………………………………………………………………… 108

PDF-файлы………………………………………………………………………………………………………………….. 109

HTML-файлы……………………………………………………………………………………………………………… 110

Маскировка расширения html…………………………………………………………………………………… 111

Архивы с паролем……………………………………………………………………………………………………… 112

Архивы без пароля…………………………………………………………………………………………………….. 112

Редко используемые форматы архивов……………………………………………………………………. 113

Онлайн-документы…………………………………………………………………………………………………………….. 113

Excel-файл, размещенный онлайн……………………………………………………………………………. 113

Глава 3. Атаки в офлайне………………………………………………………………… 117

Проникновение на физические объекты…………………………………………………………………………… 117

Предмет в руках…………………………………………………………………………………………………………. 117

Подслушанная легенда……………………………………………………………………………………………… 118

Проведение интервью………………………………………………………………………………………………… 119

Давайте помогу………………………………………………………………………………………………………….. 119

Корпоративная столовая………………………………………………………………………………………….. 119

Небезопасные парковки……………………………………………………………………………………………. 120

Паровозик…………………………………………………………………………………………………………………… 120

Мусорный дайвинг…………………………………………………………………………………………………….. 120

Отделение банка………………………………………………………………………………………………………… 121

Отвлекающий маневр………………………………………………………………………………………………… 121

Потенциальный клиент……………………………………………………………………………………………… 122

Собеседование…………………………………………………………………………………………………………… 122

Гостевой пропуск………………………………………………………………………………………………………. 122

Подделка карты-пропуска………………………………………………………………………………………… 122

Черный ход…………………………………………………………………………………………………………………. 122

Плечевая атака…………………………………………………………………………………………………………………… 123

USB-устройства………………………………………………………………………………………………………………….. 123

Таргетированная флешка………………………………………………………………………………………….. 123

Флешка с легендой…………………………………………………………………………………………………….. 123

«За букет роз»…………………………………………………………………………………………………………….. 124

Juice jacking………………………………………………………………………………………………………………… 124

Смишинг……………………………………………………………………………………………………………………………… 125

Вишинг………………………………………………………………………………………………………………………………… 126

Подделка номера……………………………………………………………………………………………………….. 126

Многоходовый звонок……………………………………………………………………………………………….. 126

Вернитесь на работу…………………………………………………………………………………………………. 126

Забыл кодовое слово…………………………………………………………………………………………………. 127

Отсылка к отпускнику……………………………………………………………………………………………….. 127

Синхронный ввод………………………………………………………………………………………………………. 127

Телефон + find trap…………………………………………………………………………………………………….. 127

Любой добавочный……………………………………………………………………………………………………. 128

Китовые атаки……………………………………………………………………………………………………………. 128

Усиление звонком………………………………………………………………………………………………………. 129

Квид про кво……………………………………………………………………………………………………………….. 129

Callback phishing………………………………………………………………………………………………………… 130

Бумага не во благо…………………………………………………………………………………………………………….. 131

Подбрасывание корпоративных документов………………………………………………………….. 131

Визуальный пропуск…………………………………………………………………………………………………. 131

Реклама на бумаге……………………………………………………………………………………………………… 131

QR-коды на бумажных носителях……………………………………………………………………………. 131

Справка………………………………………………………………………………………………………………………. 132

Общественный транспорт…………………………………………………………………………………………………. 133

Wi-Fi…………………………………………………………………………………………………………………………………….. 133

Мероприятия………………………………………………………………………………………………………………………. 134

Двухдневное мероприятие………………………………………………………………………………………… 134

Организовал себе на голову……………………………………………………………………………………… 134

Конференции, выставки и форумы…………………………………………………………………………… 134

Пришел к одним, пошел к другим…………………………………………………………………………….. 135

Корпоратив………………………………………………………………………………………………………………… 135

Комбинирование………………………………………………………………………………………………………………… 135

Глава 4. Проведение онлайн-атак по email………………………………………. 137

Какой софт использовать?………………………………………………………………………………………………… 137

Список email-пользователей……………………………………………………………………………………………… 138

Как создавать сообщения для атак?………………………………………………………………………………… 138

Чек-лист применения электронной СИ…………………………………………………………………………….. 140

Как повысить киберграмотность сотрудников?……………………………………………………………… 140

Технические аспекты обучения………………………………………………………………………………………… 142

Глава 5. Технические меры противодействия СИ…………………………….. 145

Софт…………………………………………………………………………………………………………………………………….. 145

Корпоративный браузер…………………………………………………………………………………………… 145

Сегментация сети и Zero Trust…………………………………………………………………………………… 146

Невозможность залогиниться в почте с недоверенных IP-адресов………………………. 146

Обнаружение повторного использования пароля………………………………………………….. 146

Фиды о фишинге…………………………………………………………………………………………………………. 146

Антифишинговый шрифт…………………………………………………………………………………………… 147

Настройка DKIM, SPF и DMARC……………………………………………………………………………… 148

Предотвращение выполнения исходного кода……………………………………………………….. 149

Sandbox………………………………………………………………………………………………………………………. 150

Hardware……………………………………………………………………………………………………………………………… 150

Межсетевые экраны…………………………………………………………………………………………………… 150

FIDO…………………………………………………………………………………………………………………………….. 151

Различия между UAF, U2F и FIDO2…………………………………………………………………. 152

Недостатки этого способа защиты………………………………………………………………….. 153

OTP-токены…………………………………………………………………………………………………………………. 153

Глава 6. Организационные меры…………………………………………………….. 155

Модель зрелости осведомленности о безопасности………………………………………………. 155

Одобрение процесса повышения осведомленности у руководителей………………….. 157

Обучение: памятки, курсы, форматы обучения………………………………………………………. 158

Регламенты…………………………………………………………………………………………………………………. 159

Регламент обучения персонала……………………………………………………………………….. 160

Некоторые аспекты для учета в регламентах………………………………………………… 160

Контроль реквизитов………………………………………………………………………………………… 161

Дополнительная проверка перед оплатой……………………………………………………… 161

Как вести себя с гостями?…………………………………………………………………………………. 161

Общение с коллегами………………………………………………………………………………………… 162

72 минуты до начала конца……………………………………………………………………………… 162

Сотни регламентов по информационной безопасности………………………………… 162

Послесловие…………………………………………………………………………………….. 165

Приложение 1. Генератор онлайн-СИ………………………………………………. 167

Приложение 2. Классификатор СИ…………………………………………………… 169

Электронная социальная инженерия v0.81……………………………………………………………………… 169

Офлайн социальная инженерия v0.2………………………………………………………………………………… 175

Приложение 3. Таблица персонализации…………………………………………. 177

Приложение 4. Бесплатное в помощь службе ИБ и ИТ…………………….. 179

Приложение 5. Критерии выбора платформы по повышению осведомленности   181

Приложение 6. Словарь терминов……………………………………………………. 187

Юрий Другач

Другач Юрий Станиславович— участник программ Bug Bounty, находил уязвимости в PayPal, Google, Яндекс, Mail.ru. Автор статей в журнале «Хакер», на порталах SecurityLab, «Хабр», а также создатель и автор блога о социальной инженерии stopphish.ru. Сооснователь компании по обучению киберграмотности S

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

Новинка: “Обработка данных на Python. Data Wrangling и Data Quality”

Обработка данных на Python. Data Wrangling и Data Quality

Книга посвящена первичной обработке данных (Data Wrangling) на Python  и  оценке их качества (Data Quality). Материал содержит основополагающие концепции, экспертные советы и  ресурсы, необходимые для первичной обработки, извлечения, оценки и анализа данных. Все темы раскрыты на простых и наглядных примерах из практики. Даны необходимые и достаточные сведения о языке программирования  Python 3.8+ для чтения, записи и преобразования данных из различных источников, а также  для обработки данных в больших масштабах. Приведены лучшие практики  документирования и структурирования кода. Описан сбор данных из файлов, веб-страниц и API. Рассмотрены приемы проведения базового статистического анализа наборов данных, а также наглядные и убедительные способы визуализации и представления  данных. Изложение рассчитано как на новичков по обработке данных, так и на профессионалов. Электронный архив на сайте издательства содержит цветные иллюстрации к книге.

Для специалистов по обработке данных

Начните работу с чтения, очистки и анализа данных

Мир вокруг нас полон данных, которые содержат уникальные и ценные сведения, но полезную информацию из этих «сырых» данных нужно уметь извлечь!

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

В этой книге ярко проявляется опыт Сьюзан Макгрегор в преподавании журналистики данных (data journalism) студентам всех уровней. Она приводит примеры из реальной жизни и объясняет, как подходить к поиску, проверке и анализу данных доступным способом.
 Джоанна С. Као , технический руководитель журналистики данных в газете Файнэншл Таймс

  • Применяйте Python 3.8+ для чтения, записи и преобразования данных из различных источников, а также для обработки данных в больших масштабах.
  • Организуйте, документируйте и структурируйте свой код, используя лучшие практики
  • Собирайте данные из файлов, веб-страниц и API
  • Проводите базовый статистический анализ, чтобы осмыслить наборы данных
  • Визуализируйте и представляйте данные наглядным и убедительным образом

Книгу “Обработка данных на Python. Data Wrangling и Data Quality” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Введение. 11

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

Поедете сами или возьмете такси?. 12

Кому не следует читать эту книгу?. 13

Что ожидать от этой книги. 13

Типографские соглашения. 14

Использование примеров кода. 15

Цветные иллюстрации. 16

Возможности онлайнового обучения от компании O’Reilly. 16

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

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

ГЛАВА 1. Введение в первичную обработку (выпас) и качество данных. 19

Что такое выпас данных?. 20

Что такое качество данных?. 22

Целостность данных. 23

Соответствие данных. 23

Почему мы выбрали Python?. 25

Универсальность. 25

Доступность. 25

Удобочитаемость. 26

Сообщество. 26

Альтернативы языку Python. 27

Написание и исполнение программ на языке Python. 27

Работа с кодом Python на локальном устройстве. 30

Введение в работу с командной строкой. 30

Установка языка Python, среды Jupyter Notebook и редактора кода. 33

Работа с кодом Python в режиме онлайн. 39

Hello World! 39

Создание файла автономного сценария Python при помощи Atom.. 39

Создание блокнота кода Python в Jupyter Notebook. 41

Создание блокнота кода Python в Google Colab. 42

Создаем программу. 43

В файле автономного сценария. 43

В блокноте. 43

Исполняем программу. 43

В файле автономного сценария. 43

В блокноте. 44

Документирование, сохранение и управление версиями своего кода. 44

Документирование. 44

Сохранение. 46

Управление версиями. 46

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

ГЛАВА 2. Введение в Python. 57

“Части речи” языков программирования. 58

Существительные ≈ переменные. 59

Важно ли конкретное имя?. 61

Наилучшие практики для именования переменных. 62

Глаголы ≈ функциям. 62

Применение пользовательских функций. 67

Библиотеки: занимаем пользовательские функции у других программистов. 68

Структуры управления: циклы и условные операторы. 69

Циклы. 69

Условные операторы. 72

Понимание ошибок. 77

Синтаксические ошибки. 78

Ошибки времени исполнения. 79

Логические ошибки. 83

Отправляемся в путь с данными Citi Bike. 85

Начинаем с создания псевдокода. 86

Масштабирование. 92

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

ГЛАВА 3. Понимание качества данных. 95

Оценка соответствия данных. 97

Достоверность данных. 98

Надежность данных. 100

Репрезентативность данных. 101

Оценка целостности данных. 104

Необходимые, но недостаточные. 106

Важные. 108

Достижимость. 111

Улучшение качества данных. 114

Очистка данных. 115

Аугментация данных. 115

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

ГЛАВА 4. Работа с файловыми и канальными данными
на языке Python. 117

Структурированные и неструктурированные данные. 119

Работа со структурированными данными. 123

Файловые табличные форматы данных. 124

Выпас табличных данных посредством языка Python. 126

Выпас реальных данных: понимание безработицы. 133

XLSX, ODS и все остальные. 136

Данные фиксированной ширины. 143

Канальные данные — интерактивные обновления через Интернет. 147

Выпас канальных данных средствами языка Python. 150

Формат JSON: данные следующего поколения. 160

Работа с неструктурированными данными. 165

Текст на основе изображений: доступ к данным в формате PDF. 165

Выпас PDF-данных, используя Python. 166

Обращение к таблицам PDF посредством Tabula. 171

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

ГЛАВА 5. Доступ к интернет-данным.. 173

Доступ к веб-данным XML и JSON.. 175

Знакомство с API-интерфейсами. 178

Базовые API-интерфейсы на примере поисковой системы. 179

Специализированные API-интерфейсы: добавление простой
аутентификации. 181

Получение ключа для API-интерфейса FRED.. 181

Использование ключа API для запроса данных. 182

Чтение документации по API-интерфейсу. 183

Защита своего ключа API при использовании сценариев Python. 186

Создание файла учетных данных. 188

Использование учетных данных в отдельном сценарии. 189

Основы работы с файлом .gitignore. 190

Специализированные API-интерфейсы: работа с протоколом OAuth. 193

Получение учетной записи разработчика Twitter 194

Создание приложения и учетных данных Twitter 196

Кодирование ключа API и ключа секрета API 201

Запрос токена доступа и данных из API-интерфейса Twitter 202

Этические нормы при работе с API-интерфейсами. 206

Извлечение веб-данных: источник данных последней надежды. 207

Осторожно извлекаем данные с веб-сайта УГПТ. 210

Использование средств инспектирования браузера. 211

Решение Python для извлечения данных из веб-страницы:
библиотека Beautiful Soup. 214

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

ГЛАВА 6. Оценка качества данных. 219

Пандемия и программа PPP. 221

Оценка целостности данных. 222

Имеют ли данные известное происхождение?. 223

Актуальны ли данные?. 223

Полные ли данные?. 224

Хорошо ли данные аннотированы?. 236

Являются ли данные крупномасштабными?. 242

Непротиворечивы ли данные?. 244

Многомерны ли наши данные?. 248

Атомарны ли данные?. 250

Понятны ли данные?. 250

Размерностно структурированы ли данные?. 252

Оценка соответствия данных. 253

Достоверность данных. 253

Надежность данных. 257

Репрезентативность данных. 258

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

ГЛАВА 7. Очистка, преобразование и дополнение данных. 261

Выбор подмножества данных системы Citi Bike. 262

Простое разбиение. 263

Регулярные выражения: супермощное средство сопоставления строк. 265

Создание дат. 270

Удаление хлама из файлов данных. 272

Декодирование дат Excel 276

Создание настоящих данных CSV из данных фиксированной ширины. 279

Исправление разнообразности написаний. 282

Тернистый путь к “простым” решениям. 288

Опасные подводные камни. 290

Дополнение данных. 292

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

ГЛАВА 8. Структурирование и рефакторинг кода. 296

Обзор пользовательских функций. 296

Многократное использование кода. 297

Аккуратное и понятное документирование. 297

Недостаточная функциональность по умолчанию.. 298

Область видимости. 298

Определение параметров функции. 301

Доступные опции. 302

Предоставление аргументов. 303

Возвращаемые значения. 303

Работа со стеком. 305

Рефакторинг для получения удовольствия и прибыли. 306

Функция для определения рабочих дней. 306

Опрятные метаданные. 309

Использование pydoc для документирования сценариев и пользовательских функций. 317

О полезности аргументов командной строки. 321

Отличия во взаимодействии со сценариями в автономных файлах и блокнотах. 325

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

ГЛАВА 9. Введение в анализ данных. 327

Вся суть — в контексте. 328

Одинаковые, но не совсем. 329

Что типично? Оценка центральной тенденции. 329

Что это значит?. 330

Поразмыслим нестандартно: выявляем выбросы. 332

Визуализация для анализа данных. 332

Какова форма наших данных? Учимся понимать гистограммы. 336

Вопрос за $2 миллиона. 346

Пропорциональный ответ. 359

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

ГЛАВА 10. Представление данных. 364

Основы визуального красноречия. 365

Сформулируйте свои данные. 367

Диаграммы, графики и картограммы — вот это да! 368

Круговые диаграммы. 369

Линейчатые и столбчатые диаграммы. 372

Линейные диаграммы. 377

Диаграмма рассеяния. 380

Картограммы. 383

Элементы красноречивых визуальных эффектов. 386

“Мелкие” детали действительно имеют значение. 386

Доверяйте своим глазам (и экспертам) 387

Выбор масштаба. 388

Выбор цветовой гаммы. 389

Прежде всего делайте аннотации! 389

От базового к красивому: настройка визуализации с помощью seaborn и matplotlib. 390

Выйдите за рамки основ. 395

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

ГЛАВА 11. За пределами Python. 397

Дополнительные инструменты для анализа данных. 398

Программы для работы с электронными таблицами. 398

OpenRefine. 399

Дополнительные инструменты для обмена и представления данных. 402

Редактирование изображений в форматах JPG, PNG и GIF. 402

Программное обеспечение для редактирования SVG и других векторных форматов. 402

Размышления об этике. 404

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

Приложение А. Другие ресурсы по программированию на Python. 406

Официальная документация Python. 406

Установка ресурсов Python. 407

Где искать библиотеки. 407

Следите за остротой своих инструментов. 408

Где получить больше информации. 409

Приложение Б. Еще несколько слов о Git 410

Вы запускаете команду git push/pull и оказываетесь в странном текстовом редакторе. 410

Ваша команда git push/pull отклоняется. 412

Выполните команду git pull 412

Краткое руководство по Git 414

приложение В. Поиск данных. 416

Репозитории данных и API 416

Эксперты по предметным вопросам. 417

Запросы FOIA/L. 418

Кастомные методы сбора данных. 419

приложение Г. Ресурсы для визуализации и информационного дизайна. 421

Основополагающие книги по визуализации информации. 421

Краткое руководство, за которым вы потянетесь. 422

Источники вдохновения. 422

Об авторе. 423

Колофон. 424

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

Susan McGregor

Сьюзен Макгрегор (Susan McGregor) — исследователь Института науки о данных Колумбийского университета. На протяжении более десяти лет она применяет свой успешный подход к преподаванию программирования и анализа данных для студентов нетехнических специальностей.