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

Встречайте: “Программирование на VBA в Excel. Самоучитель”

Программирование на VBA в Excel . Самоучитель

Книга посвящена возможностям программирования на языке Visual Basic for Applications (VBA) в современном офисном приложении Microsoft Office Excel. Приведена информация о сервисах Power по работе с данными, новинках Excel 2021, в том числе о динамических массивах и функциях для работы с ними. Даны теоретические сведения о программировании, элементах объектной модели Excel, запуске и отладке макросов. Рассмотрены вопросы автоматизации рабочего листа при помощи элементов управления Excel. Описаны приемы создания макросов, пользовательских функций и форм в редакторе Visual Basic. Приведены способы взаимодействия при помощи VBA с другими программами пакета Microsoft Office. Для закрепления материала рассмотрены примеры пользовательских приложений в виде листингов программ с анализом и поясняющими комментариями. В приложениях содержатся глоссарии с основными терминами VBA и редактора Visual Basic VBE.

Файлы рабочих книг с поддержкой макросов для каждой главы размещены на сайте издательства.

  • Основы VBA для Excel и настройки безопасности
  • Новинки Excel 2021 и службы Power
  • Объекты, методы, свойства, события
  • Макросы: программирование, запуск и отладка
  • Функции, определенные пользователем
  • Работа с ячейками, датами и временем
  • Динамические массивы в Excel и VBA
  • Графические элементы и диаграммы средствами VBA
  • Создание пользовательских форм, диалоговых окон, сообщений
  • Автоматизация рабочего листа: элементы управления формы и ActiveX

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

Введение………………………………………………………………………………………………… 11

Язык VBA……………………………………………………………………………………………………………………………………. 11

Нововведения Excel 2021 и службы Power……………………………………………………………………………… 11

Совместное редактирование рабочей книги……………………………………………………………………. 12

Службы Power……………………………………………………………………………………………………………………. 12

Динамические массивы……………………………………………………………………………………………………… 17

Новые функции в Excel 2021……………………………………………………………………………………………… 19

Оператор неявного пересечения……………………………………………………………………………………….. 20

Зачем нужен VBA в Excel 2021?……………………………………………………………………………………………….. 21

Объектно-ориентированное программирование…………………………………………………………………….. 22

Общие положения………………………………………………………………………………………………………………. 22

Объект…………………………………………………………………………………………………………………………………. 24

Объектная модель Microsoft Excel 2021…………………………………………………………………………………… 24

Объектная модель VBA……………………………………………………………………………………………………… 24

Объект Application……………………………………………………………………………………………………………… 25

Классы………………………………………………………………………………………………………………………………… 26

Свойства……………………………………………………………………………………………………………………………… 26

Методы……………………………………………………………………………………………………………………………….. 27

События………………………………………………………………………………………………………………………………. 28

Глава 1. Основные понятия VBA…………………………………………………………… 31

Базовые конструкции языка Visual Basic…………………………………………………………………………………. 31

Типы данных в VBA…………………………………………………………………………………………………………… 32

Константы и переменные, переменные объектов……………………………………………………………. 34

Область действия переменных и констант……………………………………………………………… 34

Объявление констант и переменных……………………………………………………………………….. 35

Начало работы………………………………………………………………………………………………………………………….. 35

Настройка безопасности…………………………………………………………………………………………………………… 39

Запись макроса………………………………………………………………………………………………………………………….. 41

Имя макроса……………………………………………………………………………………………………………………….. 41

Разработка проекта…………………………………………………………………………………………………………………… 42

Создание модуля……………………………………………………………………………………………………………………….. 44

Создание модуля с помощью контекстно-зависимого меню………………………………………….. 45

Окно кода……………………………………………………………………………………………………………………………. 45

Оператор Option Explicit…………………………………………………………………………………………………… 46

Первая процедура……………………………………………………………………………………………………………………… 47

Объявление переменной в VBA…………………………………………………………………………………………. 48

Оператор Debug.Print………………………………………………………………………………………………………… 49

Автоматический ввод атрибутов команд…………………………………………………………………………. 51

Структура кода процедуры………………………………………………………………………………………………………. 52

Метод Worksheets.Activate…………………………………………………………………………………………………. 53

Активная ячейка ActiveCell……………………………………………………………………………………………….. 53

Открытие книги с макросом………………………………………………………………………………………………. 55

Ввод данных……………………………………………………………………………………………………………………….. 56

Оператор With…………………………………………………………………………………………………………………….. 57

Свойство Selection……………………………………………………………………………………………………………… 58

Свойство Orientation………………………………………………………………………………………………………….. 59

Объект Range………………………………………………………………………………………………………………………. 60

Кнопка (элемент управления ActiveX)……………………………………………………………………………… 61

Свойство Offset…………………………………………………………………………………………………………………… 62

Функция Environ…………………………………………………………………………………………………………………. 63

Функция MsgBox…………………………………………………………………………………………………………………. 64

Константы табуляции Chr(9) и перевода строки Chr(10)………………………………………………. 66

Диалоговое окно, создаваемое функцией InputBox………………………………………………………… 67

Переменная типа String……………………………………………………………………………………………………… 68

Переменная типа Long……………………………………………………………………………………………………….. 68

Переменная типа Byte………………………………………………………………………………………………………… 69

Методы Protect и Unprotect………………………………………………………………………………………………. 69

Запуск макроса при помощи нажатия сочетания клавиш……………………………………………………… 71

Как удалить модуль?…………………………………………………………………………………………………………………. 73

Глава 2. Основы программирования в VBA…………………………………………… 75

Ячейка и диапазон ячеек…………………………………………………………………………………………………………… 75

Арифметические выражения…………………………………………………………………………………………………….. 76

Правила записи арифметических выражений…………………………………………………………………. 77

Арифметические выражения в ячейке………………………………………………………………………………. 77

Арифметические выражения с ячейками………………………………………………………………………….. 78

Обрамление ячейки — метод BorderAround……………………………………………………………………………. 79

Оператор With……………………………………………………………………………………………………………………………. 80

Вложенные операторы With……………………………………………………………………………………………………… 81

Генерация случайных чисел СЛЧИС()……………………………………………………………………………………. 82

Генерация динамического массива случайных чисел RandArray………………………………………… 83

Перевод градусов по Фаренгейту в градусы по Цельсию……………………………………………………… 84

Замена значений формул числом…………………………………………………………………………………………….. 85

Работа с цветом………………………………………………………………………………………………………………………….. 88

Функция RGB………………………………………………………………………………………………………………………. 88

Свойства Color и ColorIndex…………………………………………………………………………………………….. 89

Свойство Color………………………………………………………………………………………………………….. 89

Свойство ColorIndex…………………………………………………………………………………………………. 90

Палитра цветов…………………………………………………………………………………………………………. 93

Подсчет цветов в рисунке…………………………………………………………………………………………. 95

Заливка ячейки цветом……………………………………………………………………………………………… 98

Защита ячеек рабочего листа от форматирования……………………………………………….. 99

Выделение ячеек по цветовому соответствию в диапазоне………………………………… 101

Заливка строк с заданным шагом………………………………………………………………………….. 102

Выделение миганием………………………………………………………………………………………………. 103

Календарь……………………………………………………………………………………………………………….. 105

Заливка ячеек, содержащих формулы………………………………………………………………….. 106

Подсветка минимального и максимального значений………………………………………… 108

Цветовая шкала………………………………………………………………………………………………………. 109

Глава 3. Логические операторы……………………………………………………………. 111

Оператор If…Then…Else…………………………………………………………………………………………………………… 111

Операторы сравнения……………………………………………………………………………………………………………… 111

Неполная форма оператора If…Then……………………………………………………………………………… 113

Полная форма оператора If…Then…Else………………………………………………………………………… 114

Оператор ElseIf…………………………………………………………………………………………………………………. 114

Вложенные логические операторы………………………………………………………………………………………… 115

Примеры использования логических операторов………………………………………………………………… 116

Свойство Name…………………………………………………………………………………………………………………. 116

Свойство Value…………………………………………………………………………………………………………………. 116

Функции IsEmpty и IsNumeric…………………………………………………………………………………………… 117

Свойство Range.HasFormula…………………………………………………………………………………………… 117

Переход к ячейке A2021………………………………………………………………………………………………….. 118

Пример с оператором Case……………………………………………………………………………………………… 119

Функция InputBox…………………………………………………………………………………………………………….. 121

Оператор GoTo…………………………………………………………………………………………………………………. 122

Проверка существования файла…………………………………………………………………………………….. 123

Глава 4. Операторы цикла…………………………………………………………………… 125

Цикл For…To…Step…Next…………………………………………………………………………………………………………. 125

Цикл For…To…Next…………………………………………………………………………………………………………………… 126

Заполнение столбца………………………………………………………………………………………………………… 127

Заполнение столбца с большим шагом………………………………………………………………………….. 128

Отрицательный шаг…………………………………………………………………………………………………………. 128

Выход из цикла по условию……………………………………………………………………………………………. 129

Кнопка для запуска макроса (элемент управления формы)………………………………………………… 130

Вложенный цикл For…To…Next………………………………………………………………………………………. 131

Цикл For…Each…………………………………………………………………………………………………………………………. 133

Цикл Do…Loop………………………………………………………………………………………………………………………….. 134

Цикл While…Wend…………………………………………………………………………………………………………………….. 137

Время работы программы………………………………………………………………………………………………………. 138

Глава 5. Функции, определенные пользователем…………………………………. 145

Построение функций……………………………………………………………………………………………………………….. 145

График функции одной переменной……………………………………………………………………………….. 145

Структура кода функции пользователя…………………………………………………………………………. 146

График функции одной переменной (продолжение)…………………………………………………….. 146

Расчет функции одной переменной с использованием динамических массивов……….. 149

График кусочно-непрерывной функции с двумя условиями………………………………………… 150

Расчет кусочно-непрерывной функции с двумя условиями с использованием динамических массивов   153

График кусочно-непрерывной функции с тремя условиями………………………………………… 154

Расчет кусочно-непрерывной функции с тремя условиями с использованием динамических массивов   156

Названия формул на английском языке…………………………………………………………………………. 158

Пользовательская функция с тремя аргументами…………………………………………………………. 160

Создание собственной категории…………………………………………………………………………………………… 161

Функция без аргументов………………………………………………………………………………………………….. 163

Переименование рабочего листа……………………………………………………………………………………. 164

Функция с аргументом типа Range…………………………………………………………………………………. 165

Функция с массивом…………………………………………………………………………………………………………. 166

Формулы динамического массива………………………………………………………………………………….. 168

Функция с массивом в качестве аргумента……………………………………………………………………. 169

Вызов функции из процедуры…………………………………………………………………………………………. 171

Вызов процедуры, использующей функцию, из другой процедуры……………………………. 173

Запись названий формул…………………………………………………………………………………………………. 174

Вычисление определенного интеграла…………………………………………………………………………………. 176

Метод прямоугольников………………………………………………………………………………………………….. 177

Метод трапеций……………………………………………………………………………………………………………….. 177

Метод Симпсона………………………………………………………………………………………………………………. 177

Переключатели OptionButton…………………………………………………………………………………………………. 180

Глава 6. Пользовательская форма………………………………………………………… 183

Создание форм средствами VBA……………………………………………………………………………………………. 183

Форма UserForm………………………………………………………………………………………………………………………. 183

Семейство форм……………………………………………………………………………………………………………….. 184

Свойства формы……………………………………………………………………………………………………………….. 184

Разметочная сетка……………………………………………………………………………………………………………. 186

Методы формы…………………………………………………………………………………………………………………. 187

События формы………………………………………………………………………………………………………………… 187

Командная кнопка для показа формы……………………………………………………………………………. 188

Элементы управления……………………………………………………………………………………………………………… 190

Префиксы………………………………………………………………………………………………………………………….. 193

Элемент управления Label………………………………………………………………………………………………. 193

Элемент управления CommandButton……………………………………………………………………………. 196

Элемент управления TextBox………………………………………………………………………………………….. 199

Элементы управления OptionButton и Frame………………………………………………………………… 202

Ключевое слово Me………………………………………………………………………………………………………….. 205

Элемент управления ScrollBar……………………………………………………………………………………….. 206

Элемент управления ListBox…………………………………………………………………………………………… 210

Элемент управления ComboBox……………………………………………………………………………………… 213

Элемент управления Image……………………………………………………………………………………………… 216

Элемент управления SpinButton…………………………………………………………………………………….. 220

Элемент управления TabStrip…………………………………………………………………………………………. 224

Элементы управления CheckBox и MultiPage……………………………………………………………….. 228

Элемент управления RefEdit…………………………………………………………………………………………… 232

Элемент управления ToggleButton…………………………………………………………………………………. 235

Пользовательский элемент управления…………………………………………………………………………………. 237

Элементы управления формы…………………………………………………………………………………………………. 238

Элемент управления Полоса прокрутки……………………………………………………………………….. 239

Глава 7. Программирование объектов Shape, инфографики и фракталов 243

Типы объектов, свойства и методы семейства Shapes………………………………………………………….. 243

Тип объекта msoShapeRectangle (прямоугольник) с заливкой (Fill)……………………………. 244

Тип объекта msoConnectorCurve (соединительная линия)…………………………………………… 246

Метод AddConnector……………………………………………………………………………………………………….. 247

Метод Patterned……………………………………………………………………………………………………………….. 248

Рисование линии: метод AddLine……………………………………………………………………………………. 250

Тип объекта msoShapeSmileyFace…………………………………………………………………………………… 251

Свойство Name…………………………………………………………………………………………………………………. 252

Стрелка……………………………………………………………………………………………………………………………… 253

Метод FillFormat.OneColorGradient………………………………………………………………………………. 255

Текстовый фрейм……………………………………………………………………………………………………………… 255

Тип фигуры msoShapeHeart (сердце) с заливкой (Fill)………………………………………………….. 257

Метод Group…………………………………………………………………………………………………………………….. 258

Создание выноски с текстовым фреймом………………………………………………………………………. 259

Свойство ThreeD………………………………………………………………………………………………………………. 260

Частичное и полное удаление фигур……………………………………………………………………………… 262

Оператор Set…………………………………………………………………………………………………………………….. 264

Создание собственных элементов инфографики………………………………………………………………….. 265

Фракталы………………………………………………………………………………………………………………………………….. 267

Тип данных, определенный пользователем…………………………………………………………………… 268

Фракталы из треугольников……………………………………………………………………………………………. 269

Фракталы из многоугольников……………………………………………………………………………………….. 273

Фракталы из четырехугольников…………………………………………………………………………………… 275

Глава 8. Работа с ячейками и областями………………………………………………. 279

Объект Application…………………………………………………………………………………………………………………… 279

Свойства объекта Application…………………………………………………………………………………………. 279

Методы объекта Application…………………………………………………………………………………………… 280

Объект Range……………………………………………………………………………………………………………………………. 281

Адресация ячеек……………………………………………………………………………………………………………….. 281

Свойства объекта Range………………………………………………………………………………………………….. 282

Методы объекта Range……………………………………………………………………………………………………. 284

Объект Selection……………………………………………………………………………………………………………………….. 284

Объект Cell……………………………………………………………………………………………………………………………….. 284

Выделение нескольких областей……………………………………………………………………………………………. 284

Выделение последней ячейки в диапазоне……………………………………………………………………………. 286

Свойство Range.End………………………………………………………………………………………………………………… 287

Выделение ячеек с формулами……………………………………………………………………………………………….. 288

Выделение используемого диапазона данных……………………………………………………………………… 290

Форматирование объединенных ячеек………………………………………………………………………………….. 290

Выделение по условию……………………………………………………………………………………………………………. 292

Удаление символов из ячеек…………………………………………………………………………………………………… 293

Убираем текст………………………………………………………………………………………………………………………….. 294

Имена и фамилии……………………………………………………………………………………………………………………… 295

Метод Delete…………………………………………………………………………………………………………………………….. 297

Метод Clear……………………………………………………………………………………………………………………………… 298

Метод Application.Goto…………………………………………………………………………………………………………… 299

Скрытие данных………………………………………………………………………………………………………………………. 299

Копирование и специальная вставка…………………………………………………………………………………….. 299

Поиск минимума и максимума в диапазоне………………………………………………………………………….. 300

Поиск минимума и максимума в динамическом массиве…………………………………………………….. 301

Глава 9. Работа с данными…………………………………………………………………… 305

Массив из трех элементов………………………………………………………………………………………………………. 305

Динамический массив данных……………………………………………………………………………………………….. 308

Сравнение областей на одном листе……………………………………………………………………………………… 310

Сравнение областей на разных листах…………………………………………………………………………………. 311

Сортировка………………………………………………………………………………………………………………………………. 316

Сортировка диапазона данных………………………………………………………………………………………. 317

Сортировка областей (блоков)……………………………………………………………………………………….. 318

Простая сортировка блоков…………………………………………………………………………………… 319

Сортировка блоков с изменением ее условий………………………………………………………. 320

Сортировка по цвету……………………………………………………………………………………………………….. 322

Контроль автофильтра посредством VBA…………………………………………………………………………….. 325

Команда Итоги………………………………………………………………………………………………………………………… 325

Сортировка данных при помощи среза…………………………………………………………………………………. 328

Сводные таблицы PivotTable………………………………………………………………………………………………….. 332

Глава 10. Автоматизация диаграмм……………………………………………………… 337

Объектная модель диаграмм…………………………………………………………………………………………………… 337

Типы диаграмм…………………………………………………………………………………………………………………. 339

Свойства объекта Chart…………………………………………………………………………………………………… 342

Методы объекта Chart…………………………………………………………………………………………………….. 342

Первая диаграмма……………………………………………………………………………………………………………………. 343

Создание диаграммы с помощью VBA………………………………………………………………………….. 346

Коническая гистограмма…………………………………………………………………………………………………. 350

Печать диаграмм……………………………………………………………………………………………………………… 352

Удаление диаграммы………………………………………………………………………………………………………. 354

Форматирование параметров диаграммы…………………………………………………………………………….. 355

Форматирование цветов поверхности…………………………………………………………………………………… 357

Добавление линии тренда………………………………………………………………………………………………………. 359

Геолокация……………………………………………………………………………………………………………………………….. 363

Красивые узоры……………………………………………………………………………………………………………………….. 365

Глава 11. Программирование объектов и событий………………………………. 369

Где и как создаются процедуры обработки событий?…………………………………………………………. 370

Процедура для объекта ЭтаКнига…………………………………………………………………………………. 371

События, связанные с нажатием кнопок мыши…………………………………………………………………….. 372

Процедура в модуле………………………………………………………………………………………………………… 372

Событие для объекта Worksheet (Лист)………………………………………………………………………….. 373

Ключевое слово ByVal и параметр Target……………………………………………………………………… 374

Очистка ячейки…………………………………………………………………………………………………………………. 375

Свойства ScrollRow и ScrollColumn……………………………………………………………………………….. 376

События активации и деактивации………………………………………………………………………………………… 376

Свойство приложения ActiveWindow……………………………………………………………………………… 376

Активный лист………………………………………………………………………………………………………………….. 377

Число обращений к макросу…………………………………………………………………………………………… 378

Управление выделением области…………………………………………………………………………………… 379

События Activate и Deactivate рабочего листа……………………………………………………………… 379

Двойной щелчок левой кнопкой мыши…………………………………………………………………………… 380

Щелчок правой кнопкой мыши……………………………………………………………………………………….. 381

Введите пароль………………………………………………………………………………………………………………… 382

Событие закрытия книги…………………………………………………………………………………………………. 383

Событие сохранения книги……………………………………………………………………………………………… 384

Глава 12. Операторы даты и времени…………………………………………………… 385

Вывод даты и времени в окно Immediate оператором Debug.Print……………………………………… 385

Печать даты и времени с помощью функции CDate……………………………………………………………… 386

Функции DateSerial и TimeSerial…………………………………………………………………………………………….. 387

Текущие дата и время……………………………………………………………………………………………………………… 387

Текущие дата и время с учетом минут и секунд……………………………………………………………………. 388

Функция Weekday — день недели…………………………………………………………………………………………… 388

Функция Format……………………………………………………………………………………………………………………….. 389

Функция DateDiff……………………………………………………………………………………………………………………… 391

Функция DatePart…………………………………………………………………………………………………………………….. 391

Функция WeekdayName……………………………………………………………………………………………………………. 392

Вывод сообщения на 3 секунды……………………………………………………………………………………………… 393

Метод Application.OnTime………………………………………………………………………………………………………. 394

Автоматическое заполнение ячеек датами методом AutoFill……………………………………………… 395

Подсветка даты………………………………………………………………………………………………………………………… 397

Поиск даты……………………………………………………………………………………………………………………………….. 398

Календарь………………………………………………………………………………………………………………………………… 400

Календарь по месяцам…………………………………………………………………………………………………………….. 402

Календарь по неделям…………………………………………………………………………………………………………….. 405

Определение возраста…………………………………………………………………………………………………………….. 409

Глава 13. Действия с рабочей книгой…………………………………………………… 411

Свойства объекта Workbook…………………………………………………………………………………………………… 411

Методы объекта Workbook……………………………………………………………………………………………………… 412

Событие и метод Open…………………………………………………………………………………………………………….. 413

Открытие рабочей книги методом Workbooks.Open……………………………………………………… 414

Свойство Application.Dialogs для работы со встроенными диалоговыми окнами……. 415

Открытие рабочей книги в диалоговом окне…………………………………………………………………. 416

Открытие приложения Блокнот……………………………………………………………………………………………… 418

Свойство Workbook.Name……………………………………………………………………………………………………….. 419

Создание рабочей книги…………………………………………………………………………………………………………. 420

Имя приложения………………………………………………………………………………………………………………………. 420

Сохранение рабочей книги…………………………………………………………………………………………………….. 422

Метод Workbook.Save………………………………………………………………………………………………………. 422

Метод Workbook.SaveAs………………………………………………………………………………………………….. 422

Метод Workbook.SaveCopyAs………………………………………………………………………………………….. 425

Сохранение всех книг и выход из программы……………………………………………………………….. 426

Сохранение всех книг и выход по запросу……………………………………………………………………. 426

Защита рабочей книги методом Workbook.Protect……………………………………………………….. 427

Объект Worksheet……………………………………………………………………………………………………………………… 427

Свойства объекта Worksheet…………………………………………………………………………………………… 428

Методы объекта Worksheet и семейства Worksheets…………………………………………………….. 428

Защита рабочего листа методом Worksheet.Protect……………………………………………………… 428

Деление рабочего листа на страницы для печати……………………………………………………………….. 432

Глава 14. Файловые операции……………………………………………………………… 435

Форматы файлов Microsoft Excel……………………………………………………………………………………………. 435

Метод CreateTextFile для объекта FileSystemObject…………………………………………………………….. 436

Список файлов указанной папки……………………………………………………………………………………………. 437

Режим доступа Input/Output……………………………………………………………………………………………………. 438

Файлы из Application.AddIns…………………………………………………………………………………………………… 440

Объект FileDialog…………………………………………………………………………………………………………………….. 442

Функция GetAttr……………………………………………………………………………………………………………………….. 444

Документирование информации о файле………………………………………………………………………………. 445

Проверка существования файла…………………………………………………………………………………………….. 447

Оператор Kill для удаления файла………………………………………………………………………………………… 448

Оператор FileCopy для копирования файла…………………………………………………………………………. 449

Переименование файла…………………………………………………………………………………………………………… 450

Перемещение файла………………………………………………………………………………………………………………… 450

Глава 15. Отладка программ и сообщения об ошибках………………………… 453

Возникновение ошибок……………………………………………………………………………………………………………. 453

Выявление и исправление ошибок…………………………………………………………………………………………. 454

Три окна для просмотра ошибок……………………………………………………………………………………………. 456

Окно просмотра Immediate………………………………………………………………………………………………. 456

Окно Locals……………………………………………………………………………………………………………………….. 458

Окно наблюдения Watches………………………………………………………………………………………………. 459

Объект Err…………………………………………………………………………………………………………………………………. 462

Оператор On Error…………………………………………………………………………………………………………………… 462

Оператор On Error Resume Next………………………………………………………………………………………. 463

Оператор On Error GoTo: вариант 1………………………………………………………………………………. 464

Оператор On Error GoTo: вариант 2………………………………………………………………………………. 465

Константы xlDisabled и xlInterrupt свойства Application.EnableCancelKey………………. 466

Массив листов………………………………………………………………………………………………………………….. 467

Команда меню Debug………………………………………………………………………………………………………………. 468

Глава 16. Программирование связей……………………………………………………. 471

Гиперссылки…………………………………………………………………………………………………………………………….. 471

Кнопка гиперссылки………………………………………………………………………………………………………………… 473

Передача данных из Excel в Word………………………………………………………………………………………….. 475

Внедрение документа Word в Excel……………………………………………………………………………………….. 475

Передача данных из Excel в PowerPoint…………………………………………………………………………………. 477

Передача данных из PowerPoint в Excel…………………………………………………………………………………. 479

Приложение 1. Глоссарий терминов Visual Basic for Applications………….. 481

Приложение 2. Глоссарий терминов Visual Basic Editor………………………… 485

Приложение 3. Описание электронного архива……………………………………. 501

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

Комолова Нина Владимировна, кандидат технических наук, доцент. Автор 17 книг, среди которых “Компьютерная верстка и дизайн”, “Adobe Photoshop CS4-CC для всех“, “Самоучитель CorelDRAW X3-X8“, “Программирование на VBA в Excel 2016/2019“, а также более 50 статей в журналах и сборниках.

 

Яковлева Елена Сергеевна, кандидат технических наук, автор книг “Adobe Photoshop CS4-CC для всех“, “Самоучитель CorelDRAW X8“, “Самоучитель Skype. Бесплатная связь через Интернет”, “3D-графика и видео в Photoshop CS4 Extended”, “Программирование на VBA в Excel 2016” и 30 статей в журналах и сборниках.
Опубликовано

Новинка: “Книга Kaggle. Машинное обучение и анализ данных”

Книга Kaggle. Машинное обучение и анализ данных

Книга рассказывает о продвинутых приёмах машинного обучения и науки о данных (data science) на основе задач, решаемых на всемирно известной платформе Kaggle. Показано (в том числе на примере увлекательных интервью с Kaggle-гроссмейстерами),  как устроена платформа Kaggle и проводимые на ней соревнования. Изложенный материал позволяет развить необходимые навыки и собрать портфолио по машинному обучению, анализу данных, обработке естественного языка, работе с множествами. Подобран уникальный пул задач, охватывающих различные классификационные и оценочные метрики, методы обучения нейронных сетей, схемы валидации, выявление паттернов и трендов в материале любой сложности.

Конкурсы Kaggle – это поле для состязаний, где меряются силами миллионы специалистов по науке о данных (data science), которые сами себя именуют «кэглерами». Участие в таких конкурсах – верный способ профессионально вырасти в области анализа данных, влиться в замечательное сообщество единомышленников и приобрести бесценный опыт для развития карьеры. Авторы книги – грандмастера Kaggle. Они познакомят вас со стратегиями моделирования, которые более нигде не рассмотрены, и подскажут, как удобнее всего обрабатывать изображения, тексты, таблицы, как правильно реализовать обучение с подкреплением. Вы освоите качественные схемы валидации и станете уверенно ориентироваться в самых разных оценочных метриках.

Лука и Конрад рассказали о Kaggle максимально доступно. Оба они – первоклассные профессионалы, пользующиеся большим авторитетом и уважением в сообществе Kaggle. Проштудировав эту книгу, можете смело регистрироваться на Kaggle и рассчитывать на высокие результаты.
Энтони Голдблум, основатель и генеральный директор Kaggle

В книге рассказано:

  • Как устроена соревновательная платформа Kaggle
  • Как выжать максимум из ноутбуков, датасетов и форумов Kaggle
  • Как правильно собирать портфолио проектов и идеи для развития карьеры
  • Как проектировать k-мерные и вероятностные схемы валидации
  • Как освоить наиболее распространённые и экзотические оценочные метрики
  • Как устроена бинарная и многоклассовая классификация объектов, а также их обнаружение
  • Как эффективно обращаться с временными рядами и обработкой естественного языка (NLP)
  • Как преуспеть в задачах на имитационное моделирование и оптимизацию

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

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

Составители. 13

Об авторах. 13

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

О респондентах. 15

Введение. 18

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

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

Часть I. Знакомство с соревнованиями. 19

Часть II. Оттачивание соревновательных навыков. 20

Часть III. Использование соревнований в своей карьере. 21

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

Загрузите файлы с примерами кода. 21

Загрузите цветные изображения. 22

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

Часть I. Знакомство с соревнованиями Kaggle. 23

Глава 1. Знакомство с Kaggle и другими соревнованиями
по науке о данных. 25

Появление и рост соревновательных платформ. 26

Соревновательная платформа Kaggle. 28

История Kaggle. 28

Другие конкурсные платформы.. 31

Знакомство с Kaggle. 33

Стадии соревнования. 33

Типы соревнований и примеры.. 36

Отправка решения и таблица результатов. 41

Парадигма каркаса для общих задач. 41

Что может пойти не так. 42

Вычислительные ресурсы.. 44

Kaggle Notebooks 45

Создание команд и нетворкинг. 46

Уровни и рейтинг. 49

Критика и возможности. 50

Резюме. 51

Глава 2. Организация данных. 53

Создание датасета. 53

Сбор данных. 57

Работа с датасетами. 62

Kaggle Datasets и Google Colab. 63

Юридические вопросы. 65

Резюме. 66

Глава 3. Работаем и учимся с Kaggle Notebooks 67

Создание блокнота. 68

Запуск блокнота. 71

Сохранение блокнотов на GitHub. 73

Как получить максимум от Kaggle Notebooks 75

Переход на Google Cloud Platform.. 76

На шаг дальше. 77

Курсы Kaggle Learn. 82

Резюме. 86

Глава 4. Используем форумы.. 87

Как работают форумы. 87

Примеры обсуждений. 92

Сетевой этикет. 97

Резюме. 97

Часть II. Оттачивание соревновательных навыков. 99

Глава 5. Задачи и метрики на соревнованиях. 101

Метрики оценивания и целевые функции. 102

Основные типы задач. 103

Регрессия. 104

Классификация. 104

Задачи ранжирования. 105

Датасет Meta Kaggle. 105

Как быть с незнакомыми метриками. 108

Метрики для задач регрессии. 112

Средний квадрат и R-квадрат.. 112

Среднеквадратичная ошибка. 113

Среднеквадратичная логарифмическая ошибка. 114

Средняя абсолютная ошибка. 115

Метрики для задач классификации. 116

Доля правильных ответов. 116

Точность и полнота. 118

F-мера. 120

Log Loss и ROC-AUC. 120

Коэффициент корреляции Мэтьюса. 122

Метрики для многоклассовой классификации. 123

Метрики для задач детектирования объектов. 129

Отношение площадей ограничивающих рамок. 131

Коэффициент Дайса. 132

Метрики для многоклассовой классификации и построение рекомендаций. 133

MAP@{K}. 133

Оптимизация метрики. 134

Нестандартные метрики и целевые функции. 135

Постобработка предсказаний. 138

Предсказание вероятностей и их корректировка. 139

Резюме. 143

Глава 6. Построение схемы валидации. 144

Подглядывание. 144

Почему важна валидация. 147

Смещение и разброс. 150

Стратегии разделения данных. 152

Контроль на отложенных данных. 153

Вероятностные методы оценки качества. 154

Контроль по k блокам. 154

Случайные разбиения. 162

Бутстрэп. 162

Настройка системы валидации. 166

Применение adversarial validation. 169

Пример реализации. 171

Различные распределения обучающих и тестовых данных. 172

Работа с утечками в данных. 176

Резюме. 180

Глава 7. Моделирование для табличных данных. 182

Tabular Playground Series 183

Начальное состояние случайного генератора и воспроизводимость. 186

Разведочный анализ данных. 188

Понижение размерности методами t-SNE и UMAP. 190

Уменьшение размера данных. 191

Преобразования признаков. 193

Простые производные признаки. 194

Метапризнаки на основе строк и столбцов. 196

Целевое кодирование. 197

Важность признаков и оценка качества. 202

Псевдометки. 205

Удаление шума с помощью автокодировщиков. 207

Нейросети для табличных конкурсов. 210

Резюме. 216

Глава 8. Оптимизация гиперпараметров. 218

Базовые методы оптимизации. 219

Поиск по сетке. 219

Случайный поиск. 221

Поиск сокращением вдвое. 222

Ключевые параметры и их использование. 225

Линейные модели. 225

Машины опорных векторов. 225

Случайные леса и экстремально рандомизированные деревья. 227

Градиентный бустинг над деревьями. 228

LightGBM.. 228

XGBoost 230

CatBoost 231

HistGradientBoosting. 232

Байесовская оптимизация. 235

Использование Scikit-optimize. 236

Настройки байесовской оптимизации. 241

Обобщение байесовской оптимизации на параметры нейронных сетей. 248

Создание моделей с KerasTuner 256

Подход TPE и Optuna. 265

Резюме. 270

Глава 9. Ансамбли: блендинг и стекинг. 271

Краткое введение в ансамблевые алгоритмы. 272

Усреднение. 275

Голосование. 277

Усреднение предсказаний. 279

Взвешенные средние. 280

Усреднение и кросс-валидация. 281

Корректируем усреднение для оценок ROC-AUC. 282

Блендинг и метамодели. 283

Блендинг: лучшие практики. 284

Стекинг. 289

Варианты стекинга. 293

Сложные решения с блендингом и стекингом. 294

Резюме. 297

Глава 10. Моделирование в компьютерном зрении. 299

Стратегии аугментации. 299

Встроенные аугментации Keras 305

Подход на основе ImageDataGenerator 305

Слои предварительной обработки. 308

Пакет albumentations 309

Классификация. 312

Обнаружение объектов. 319

Семантическая сегментация. 333

Резюме. 349

Глава 11. Моделирование для обработки естественного языка. 350

Анализ тональности текста. 350

Вопросы и ответы в открытом домене. 359

Стратегии аугментации текста. 374

Основные приемы.. 375

Пакет nlpaug. 380

Резюме. 383

Глава 12. Соревнования по моделированию и оптимизации. 384

Игра Connect X.. 385

Игра “Камень, ножницы, бумага”. 390

Соревнование Santa 2020. 393

Такие разные игры. 397

Резюме. 402

Часть III. Использование соревнований в своей карьере. 403

Глава 13. Создание портфолио проектов и идей. 405

Создание портфолио с помощью Kaggle. 405

Использование блокнотов и обсуждений. 410

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

Организация своего присутствия в Интернете за пределами Kaggle. 417

Блоги и публикации. 418

GitHub. 421

Мониторинг обновлений и информационных бюллетеней о соревнованиях. 423

Резюме. 425

Глава 14. Поиск новых профессиональных возможностей. 426

Налаживание связей с другими исследователями данных на соревнованиях. 427

Участие в Kaggle Days и других встречах Kaggle. 438

Привлечение к себе внимания и другие возможности трудоустройства. 439

Методика STAR. 440

Резюме (и несколько напутственных слов) 442

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

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

3-е издание: “Электроника для начинающих”

Электроника для начинающих, 3-е издание

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

Электронный архив на сайте издательства содержит спецификации и ссылки на электронные компоненты.

 Для начинающих радиолюбителей

МИРОВОЙ БЕСТСЕЛЛЕР ДЛЯ НАЧИНАЮЩИХ РАДИОЛЮБИТЕЛЕЙ!

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

Создание работающих устройств, от простых до сложных

В своей книге автор исходит из того, что вы приступаете к процессу изучения, не имея каких-либо предварительных знаний в области электроники. Поэтому первые эксперименты очень простые, и вам даже не придется использовать паяльник или плату для монтажа схем, а вы будете соединять провода с помощью “крокодилов”. Но очень скоро вы начнете выполнять эксперименты с транзисторами и интегральными микросхемами.

Пошаговые инструкции и более 500 цветных фотографий и рисунков помогут вам легко освоить излагаемый материал.

Новое в третьем издании!

  • Значительная часть текста, схемы и диаграммы обновлены, фотографии пересняты в высоком качестве.
  • Число компонентов и их цены уменьшены.
  • Проекты с использованием платы Arduino переработаны, рассмотрены и другие микроконтроллеры.

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

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

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

Первым проектом Чарльза Платта был телефонный автоответчик, который он сделал в возрасте 15 лет. Впоследствии он был писателем-фантастом, преподавал компьютерную графику и работал ведущим автором в журнале Wired, но всю жизнь сохранял свою любовь к электронике — главному хобби своей жизни. В настоящее время Чарльз работает редактором в журнале MAKE и занимается разработкой новых образцов медицинского оборудования. По его словам, у вас в руках “книга, которую я хотел бы прочитать, будучи подростком”

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

Встречайте: Сетевое программирование на Python

Сетевое программирование на Python

Книга посвящена разработке серверных приложений и клиент-серверных архитектур на Python. Рассказано о поддержке SSL в Python 3, представлены примеры работы с протоколами TCP, UDP, HTTP, SMTP, IMAP, FTP, RPC, взаимодействия с сервисами DNS. Освещена работа с электронной почтой в приложениях. Описаны цели протокола TLS и методы их достижения на Python. Подробно описаны возможности модуля asyncio, входящего в состав Python 3.4, даны рекомендации по разработке сетевых приложений с использованием веб-фреймворков Flask и Django.

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

ПОДРОБНОЕ РУКОВОДСТВО ПО СЕТЕВОМУ ПРОГРАММИРОВАНИЮ НА PYTHON

Книга рассказывает о разработке на языке Python клиент-серверных проектов, взаимодействующих с сетью и веб-приложениями. Всесторонне рассматривается поддержка SSL, показаны примеры работы с протоколами TCP, UDP, HTTP, SMTP, IMAP, FTP, RPC и взаимодействия с сервисами DNS. Рассказано об использовании входящего в состав Python 3.4 модуля asyncio, о сетевых возможностях веб-фреймворков Flask и Django.

В книге описаны
ключевые возможности SSL в Python 3,
цели протокола TLS и методы их достижения на Python,
архитектура серверов и создание серверных приложений,
работа с электронной почтой в приложениях,
применение Flask и Django для создания сетевых веб-приложений.

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

Об авторе. 14

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

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

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

Пакет кода. 19

ГЛАВА 1. Введение в сетевое взаимодействие между клиентом и сервером.. 21

Содержание главы. 21

Цель  22

Основы: стеки и библиотеки. 22

Уровни приложения. 25

Что такое протокол. 26

Сетевое взаимодействие. 28

Слой за слоем. 30

Кодирование и декодирование. 32

Протокол IP. 33

IP-адреса. 34

Маршрутизация. 35

Фрагментация пакетов. 37

Подробно об IP. 38

Резюме. 38

ГЛАВА 2. Протокол UDP. 41

Содержание главы. 42

Цель  42

Множество сервисов в одной системе. 42

Сокет — точка соединения. 44

Клиенты, принимающие любые пакеты. 48

Отсрочка, блокировка и время ожидания. 50

UDP-сокеты. 54

Идентификаторы запросов. 56

От привязки до интерфейсов. 57

Фрагментация UDP. 59

Параметры сокетов. 61

Широковещание. 62

Сценарии применения UDP. 64

Резюме. 64

ГЛАВА 3. Протокол TCP. 67

Содержание главы. 67

Цель  68

Как работает TCP. 68

Когда использовать TCP. 69

Сокеты TCP. 70

TCP-клиент и TCP-сервер. 71

Одно взаимодействие — один сокет. 75

Адрес. 77

От привязки до интерфейсов. 78

Взаимоблокировка. 79

Полуоткрытые соединения, закрытые соединения. 84

Потоки TCP для передачи файлов. 86

Резюме. 86

ГЛАВА 4. DNS и имена сокетов. 89

Содержание главы. 89

Цель  89

Имена сокетов и хостов. 90

Пять координат сокетов. 91

IPv6  92

Современное разрешение адресов. 93

Привязка сервера к порту с помощью getaddrinfo() 94

Метод getaddrinfo() для привязки к сервису. 95

Получение канонического имени хоста с помощью getaddrinfo() 96

Другие флаги getaddrinfo() 98

Примитивные процедуры службы имен. 99

Метод getsockaddr() 100

Протокол DNS. 101

Почему не стоит использовать DNS напрямую.. 104

Python для DNS-запросов. 105

Разрешение почтовых доменов. 106

Резюме. 109

ГЛАВА 5. Данные и ошибки в Интернете. 111

Содержание главы. 111

Цель  111

Строки и байты. 111

Строки символов. 113

Сетевой порядок байтов и двоичные числа. 116

Кадрирование. 119

Pickle и форматы с разделителями. 125

JSON и XML. 126

Сжатие. 127

Исключения в сети. 128

Специфические исключения. 130

Исключения в сети: обнаружение и сообщение об ошибках. 131

Резюме. 133

ГЛАВА 6. Протокол SSL/TLS. 135

Содержание главы. 135

Цель  136

От чего не защищает TLS. 136

Что худшее может случиться?. 137

Создание сертификатов. 139

TLS Offloading. 141

Контексты по умолчанию в Python 3.4. 142

Подходы к обертке сокетов. 146

Выбор шифров вручную и Perfect Forward Security. 147

Поддержка протокола TLS. 149

Дальнейшее изучение. 151

Резюме. 157

ГЛАВА 7. Архитектура сервера. 159

Содержание главы. 159

Цель  160

Несколько слов о развертывании. 160

Базовый протокол. 162

Однопоточный сервер. 166

Многопроцессорный и многопоточный серверы. 169

Фреймворк SocketServer из прошлого. 171

Асинхронные серверы. 172

Фреймворк asyncio с обратными вызовами. 177

Фреймворк asyncio с сопрограммами. 179

Устаревший модуль asyncore. 181

Комбинированный подход. 182

Под влиянием inetd. 183

Резюме. 185

ГЛАВА 8. Очереди сообщений и кеши. 187

Содержание главы. 187

Цель  188

Использование Memcached (кеширование в памяти) 188

Хеширование и сегментирование. 191

Очереди сообщений. 194

Очереди сообщений в Python. 196

Резюме. 201

ГЛАВА 9. HTTP-клиенты.. 203

Содержание главы. 203

Цель  204

Библиотеки клиентов Python. 204

Кадрирование, шифрование и порты. 206

Методы. 208

Хосты и пути. 209

Коды состояний. 210

Валидация и кеширование. 213

Кодирование содержимого. 216

Согласование содержимого. 216

Тип содержимого. 218

Аутентификация по HTTP. 219

Файлы cookie. 221

Поддержание соединения и httplib. 222

Резюме. 223

ГЛАВА 10. Серверы для работы с HTTP. 225

Содержание главы. 225

Цель  226

Стандарт WSGI 226

Серверные фреймворки для асинхронной обработки. 228

Прямые и обратные прокси. 229

Четыре архитектурных стиля. 230

Python на Apache. 232

HTTP-серверы на Python. 232

Преимущество обратных прокси. 233

Платформа как услуга. 234

REST и паттерны GET и POST. 236

WSGI без фреймворка. 238

Резюме. 242

ГЛАВА 11. Всемирная паутина. 245

Содержание главы. 245

Цель  246

URL и гипермедиа. 246

Создание и парсинг URL. 247

Относительные URL. 250

Язык гипертекстовой разметки HTML. 251

Чтение и запись с использованием базы данных. 253

Ужасное веб-приложение на Flask. 255

Методы и формы HTTP. 261

Когда формы используют неподходящие методы. 263

Опасные и безопасные сookie. 264

Непостоянный межсайтовый скриптинг. 266

Постоянный межсайтовый скриптинг. 268

Подделка межсайтовых запросов. 269

Улучшенная программа. 270

Приложение для оплаты на Django. 273

Выбор фреймворка для веб-сайта. 277

Веб-сокеты. 279

Веб-скрейпинг. 279

Получение страниц. 281

Страницы для веб-скрейпинга. 285

Рекурсивный веб-скрейпинг. 287

Резюме. 291

ГЛАВА 12. Составление и парсинг сообщений электронной почты.. 293

Содержание главы. 293

Цель  294

Форматирование электронного письма. 294

Составление электронного письма. 296

HTML и мультимедиа. 298

Создание контента. 303

Парсинг электронного письма. 305

Использование MIME. 307

Кодирование заголовков. 309

Парсинг дат. 311

Резюме. 312

ГЛАВА 13. Протокол SMTP. 313

Содержание главы. 313

Цель  314

Веб-сервисы электронной почты и почтовые клиенты. 314

Все началось с командной строки. 314

Развитие клиентов. 315

Переход на веб-сервисы электронной почты. 317

Функции SMTP. 318

Передача электронной почты. 319

Получатель на конверте и заголовки. 320

Несколько прыжков. 320

Библиотека для работы с протоколом SMTP. 322

Обработка ошибок и отладка. 323

EHLO для сбора информации. 326

SSL и TLS. 329

Аутентификация SMTP. 332

Советы по SMTP. 333

Резюме. 334

ГЛАВА 14. Протокол POP. 335

Содержание главы. 335

Цель  336

Серверы POP и стандарты. 336

Аутентификация и подключение. 336

Получение информации о почтовом ящике. 339

Загрузка и удаление писем. 340

Резюме. 343

ГЛАВА 15. Протокол IMAP. 345

Содержание главы. 346

Цель  347

Реализация IMAP в Python. 347

Клиент IMAP. 349

Просмотр папок. 351

UID и номера писем. 351

Интервалы между письмами. 352

Общая информация. 352

Получение всего почтового ящика. 354

Загрузка отдельных писем. 356

Добавление и удаление флагов. 363

Удаление писем. 364

Поиск. 364

Работа с папками. 366

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

Резюме. 367

ГЛАВА 16. Протоколы SSH и Telnet 369

Содержание главы. 369

Цель  370

Автоматизация с помощью командной строки. 370

Раскрытие выражения и экранирование в командной строке. 371

Аргументы в командах UNIX.. 372

Экранирование символов. 374

Ужасная командная строка Windows 376

Терминал. 377

Терминалы и буферизация. 380

Telnet 381

SSH: безопасная оболочка. 386

SSH: краткий обзор. 386

Ключи хоста для SSH.. 387

Аутентификация в SSH.. 390

Отдельные команды и сеансы. 391

Протокол SFTP. 396

Дополнительные возможности. 399

Резюме. 399

ГЛАВА 17. Протокол FTP. 401

Содержание главы. 402

Цель  402

Что делать, если невозможно использовать FTP. 402

Каналы коммуникации. 403

FTP в Python. 404

Двоичные файлы и файлы ASCII 405

Расширенная загрузка двоичных файлов с сервера. 407

Отправка данных на удаленный компьютер. 409

Расширенная отправка двоичных данных. 410

Обработка ошибок. 411

Поиск по каталогам. 412

Обнаружение каталогов и загрузка в рекурсивном режиме. 414

Создание и удаление каталогов. 416

Безопасное использование FTP. 416

Резюме. 416

ГЛАВА 18. RPC — удаленный вызов процедур. 419

Содержание главы. 420

Цель  421

Характеристики RPC. 421

XML-RPC. 422

JSON-RPC. 429

Самодокументируемые данные. 432

Объекты: Pyro и RPyC. 434

Пример RPyC. 435

Очереди сообщений, RPC и веб-фреймворки. 438

Восстановление после ошибок в сети. 438

Резюме. 439

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

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

Удивительная книга для детей: “Мама, не отвлекай. Я Python учу!”

Мама, не отвлекай. Я Python учу!

Эта книга + телефон – все, что нужно ребенку, чтобы полностью самостоятельно без помощи взрослых освоить основы программирования на языке Python, написать десятки игр, интерактивных программ и поделиться ими в любых привычных мессенджерах и соцсетях.
Книгу отличает сверхбыстрый старт, удобство обучения, легкость изложения и авторский юмор, .
При этом новички узнают о командах, циклах, типах данных, переменных, условных выражениях, графических примитивах и координатах. Освоят игры и анимацию, работу со строками, комментарии, методы (функции), операторы сравнения, случайные числа, условные выражения и многое другое. Электронный архив на сайте издательства содержит коды примеров и изображения эмодзи.

Для детей младшего и среднего школьного возраста

Читать и программировать можно весело и непринужденно

Телефон есть практически у каждого ребенка 10+ лет. Осталось только купить эту книгу, чтобы ребенок полностью самостоятельно смог изучить основы самого популярного языка программирования Python.

Читать и программировать можно весело и непринужденно: сидя на диване, на даче у бабушки, на прогулке или на переменках в школе – в одной руке телефон, в другой эта книга.

Первую программу на Python можно выполнить за пару минут, еще даже не открыв книгу, а только считав телефоном QR-код с ее обложки!

Прочитав всю книгу, ребенок

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

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

Лазаревский Игорь Вадимович

Лазаревский Игорь Вадимович – программист, автор книг и курсов, преподаватель Американского университета в Центральной Азии, основатель онлайн-школы по программированию Khasang со стажем преподавания современных языков программирования более 10 лет, вырастивший десятки высококлассных Senior-разработчиков с полного нуля. Ведет личный блог igor.kg.

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

3-е издание: “Внутреннее устройство Linux”

Внутреннее устройство Linux, 3 изд.

Эта книга — введение во внутреннее устройство ОС Linux. Рассмотрены основные подсистемы ядра и их сущности, механизмы контроля доступа и привилегии, принципы и механизмы контейнеризации. Уделено внимание компонентам, подсистемам Linux и их функционированию как единой системы. Подробно описано пользовательское окружение, интерфейс командной строки CLI, язык командного интерпретатора и его использование для автоматизации актуальных задач. Все положения наглядно проиллюстрированы  примерами,  разработанными автором и проверенными им на практике.

В 3-м издании описаны механизмы принудительного разграничения доступа и контроля целостности, уникальные для российского защищенного дистрибутива Astra Linux и операционных систем в целом.  Учтены последние изменения в компонентах ОС и обновлены листинги примеров. Расширена глава про сетевую подсистему, добавлена глава по современным средствам трассировки, измерения нагрузки и мониторинга производительности.

 Для студентов, пользователей, программистов и системных администраторов Linux

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

Совет для начинающих

И напоследок, самый важный совет для начинающих — начните!
Цитата из книги

  • Импортозамещение и российский Linux: все, что вы хотели знать
  • Пользовательское окружение и интерфейс командной строки CLI
  • Файлы, каталоги и файловые системы
  • Процессы и нити, каналы, сокеты и разделяемая память
  • Дискреционное и мандатное разграничение доступа, мандатный контроль целостности и привилегии процессов
  • Сетевая подсистема и службы
  • Графический интерфейс GUI: оконные системы X Window и Wayland
  • Программирование на языке командного интерпретатора
  • Контейнеры и виртуализация
  • От отдельных компонент — к системе: Linux своими руками
  • Нагрузка, производительность, мониторинг и трассировка

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

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

Импортозамещение и российский Linux: все, что вы хотели знать,
но боялись спросить. 9

Сертифицированные операционные системы.. 10

Другие операционные системы.. 11

Введение. 12

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

Кому адресована книга. 13

Принятые соглашения и обозначения. 14

Методические рекомендации.. 15

Что должен знать читатель. 16

Совет для начинающих. 19

Глава 1. Архитектура ОС Linux. 20

1.1. Обзор внутреннего устройства. 20

1.2. Внеядерные компоненты: программы и библиотеки.. 22

1.3. Ядерные компоненты: подсистемы управления процессами, памятью, вводом-выводом, файлами   22

1.4. Трассировка системных и библиотечных вызовов. 23

1.5. Интерфейсы прикладного программирования. 25

1.6. В заключение. 26

Глава 2. Пользовательское окружение ОС Linux. 27

2.1. Командный интерфейс. 27

2.2. Виртуальные терминалы.. 29

2.2.1. Псевдотерминалы.. 31

2.3. Управляющие символы.. 33

2.4. Управляющие последовательности.. 40

2.5. Основной синтаксис командной строки.. 43

2.5.1. Опции командной строки.. 45

2.6. Справочные системы.. 46

2.6.1. Система страниц руководства. 46

2.6.2. Справочная система GNU.. 50

2.6.3. Встроенная справка командного интерпретатора. 50

2.7. Пользователи и группы.. 51

2.7.1. Передача полномочий.. 53

2.7.2. Хранилища учетных записей.. 54

2.8. Переменные окружения и конфигурационные dot-файлы.. 55

2.9. В заключение. 62

Глава 3. Подсистема управления файлами и вводом-выводом.. 63

3.1. Файлы и дерево каталогов. 63

3.1.1. Путевые имена файлов. 64

3.2. Типы файлов. 65

3.2.1. Обычные файлы.. 66

3.2.2. Каталоги.. 67

3.2.3. Имена, данные, метаданные и индексные дескрипторы.. 68

3.2.4. Ссылки.. 69

3.2.5. Специальные файлы устройств. 73

3.2.6. Именованные каналы и файловые сокеты.. 76

3.3. Файловые дескрипторы.. 77

3.4. Файловые системы.. 80

3.4.1. Файловые системы и процедура монтирования. 80

3.4.2. Дисковые файловые системы.. 82

3.4.3. Сетевые файловые системы.. 83

3.4.4. Специальные файловые системы.. 85

3.4.5. Внеядерные файловые системы.. 86

3.5. Дискреционное разграничение доступа. 90

3.5.1. Владельцы и режим доступа к файлам.. 91

3.5.2. Базовые права доступа и дополнительные атрибуты.. 92

Режим доступа новых файлов. 94

Семантика режима доступа разных типов файлов. 95

Дополнительные атрибуты.. 97

3.5.3. Списки контроля доступа POSIX. 101

Групповая маска. 103

Права по умолчанию.. 104

3.6. Мандатное (принудительное) разграничение доступа. 105

3.6.1. Модуль принудительного разграничения доступа AppArmor. 107

3.6.2. Модуль принудительного разграничения доступа SELinux. 109

3.6.3. Модуль принудительного разграничения доступа Astra Linux. 114

3.7. Дополнительные свойства файлов. 125

3.7.1. Расширенные атрибуты файлов. 125

3.7.2. Флаги файлов. 127

3.8. В заключение. 128

Глава 4. Управление процессами и памятью.. 129

4.1. Программы и библиотеки.. 129

4.1.1. Ядро Linux. 132

4.2. Процессы и нити.. 135

4.3. Порождение процессов и нитей, запуск программ.. 139

4.3.1. Параллельные многопроцессные программы.. 143

4.3.2. Параллельные многонитевые программы.. 144

4.3.3. Двойственность процессов и нитей Linux. 148

4.4. Дерево процессов. 150

4.5. Атрибуты процесса. 152

4.5.1. Маркеры доступа. 153

4.5.2. Привилегии.. 156

4.5.3. Другие атрибуты.. 160

4.6. Классы и приоритеты процессов. 160

4.6.1. Распределение процессора между процессами.. 160

4.6.2. Распределение устройств ввода-вывода между процессами.. 167

4.7. Память процесса. 176

4.7.1. Виртуальная память. 177

4.7.2. Отображение файлов в память. 179

4.7.3. Потребление памяти.. 183

4.8. Механизм сигналов. 187

4.8.1. Сеансы и группы процессов: управление заданиями.. 192

4.9. Межпроцессное взаимодействие. 195

4.9.1. Неименованные каналы.. 196

4.9.2. Именованные каналы.. 197

4.9.3. Неименованные локальные сокеты.. 198

4.9.4. Именованные локальные сокеты.. 200

4.9.5. Разделяемая память, семафоры и очереди сообщений.. 202

Разделяемая память. 202

Семафоры и очереди сообщений.. 206

4.10. В заключение. 207

Глава 5. Программирование на языке командного интерпретатора. 209

5.1. Интерпретаторы и их сценарии.. 209

5.2. Встроенные и внешние команды.. 211

5.3. Перенаправление потоков ввода-вывода. 212

5.4. Подстановки командного интерпретатора. 218

5.4.1. Подстановки имен файлов. 218

5.4.2. Подстановки параметров. 220

Переменные — именованные параметры.. 220

Позиционные параметры.. 223

Специальные параметры.. 224

5.4.3. Подстановки вывода команд. 225

5.4.4. Подстановки арифметических выражений.. 227

5.5. Экранирование. 230

5.6. Списки команд. 233

5.6.1. Условные списки.. 234

5.6.2. Составные списки: ветвление. 236

5.6.3. Составные списки: циклы.. 241

5.6.4. Функции.. 246

5.7. Сценарии на языке командного интерпретатора. 249

5.8. Инструментальные средства обработки текста. 252

5.8.1. Фильтр строк grep. 253

5.8.2. Фильтр символов и полей cut 255

5.8.3. Процессор текстовых таблиц awk. 256

5.8.4. Потоковый редактор текста sed. 257

5.9. В заключение. 261

Глава 6. Сетевая подсистема. 262

6.1. Сетевые интерфейсы, протоколы и сетевые сокеты.. 262

6.2. Конфигурирование сетевых интерфейсов и протоколов. 266

6.2.1. Ручное конфигурирование. 266

6.2.2. Автоматическое конфигурирование. 268

6.3. Служба имен и DNS/mDNS-резолверы.. 276

6.4. Сетевые службы.. 281

6.4.1. Служба SSH.. 281

6.4.2. Почтовые службы SMTP, POP/IMAP. 289

6.4.3. Служба WWW… 292

6.4.4. Служба FTP. 294

6.4.5. Служба NFS. 296

NFS-клиент. 296

NFS-сервер. 297

6.4.6. Служба SMB/CIFS. 298

Имена NetBIOS. 299

CIFS-клиенты.. 300

6.4.7. Служба каталогов LDAP. 302

Служба имен и пользовательские учетные записи.. 306

6.5. Средства сетевой диагностики.. 307

6.5.1. Анализаторы пакетов tcpdump и tshark. 307

6.5.2. Сетевой сканер nmap. 310

6.5.3. Мониторинг сетевых соединений процессов. 311

6.6. В заключение. 313

Глава 7. Графическая система X Window System… 315

7.1. X-сервер. 315

7.2. X-клиенты и X-протокол. 317

7.3. Оконные менеджеры.. 322

7.3.1. Декорирование на клиентской стороне. 325

7.4. Настольные пользовательские окружения. 327

7.5. Библиотеки интерфейсных элементов. 329

7.6. Расширения Х-протокола. 332

7.6.1. Расширение Composite и композитный менеджер. 334

7.6.2. GLX, DRI и 3D-графика. 336

7.7. Запуск X Window System… 338

7.7.1. Локальный запуск X-клиентов. 338

7.7.2. Дистанционный запуск X-клиентов. 338

7.7.3. Управление X-дисплеями: XDMCP-менеджер и протокол. 341

7.8. Программный интерфейс X Window System… 342

7.8.1. Трассировка X-библиотек и X-протокола. 342

7.8.2. 3D-графика и инфраструктура прямого рендеринга DRI 348

7.9. В заключение. 354

Глава 8. Графическая система Wayland. 356

8.1. Wayland-композитор. 358

8.2. Wayland-клиенты и Wayland-протокол. 359

8.3. Запуск графической среды на основе Wayland. 365

8.4. В заключение. 366

Глава 9. Контейнеры и виртуальные машины.. 367

9.1. Чрутизация. 368

9.2. Пространства имен.. 372

9.3. Контейнеризация: runc и docker. 377

9.4. Группы управления (cgroups). 381

9.5. В заключение. 385

Глава 10. От отдельных компонент — к системе. 386

10.1. Как Linux загружается. 386

10.2. Как обнаруживаются драйверы устройств. 390

10.3. Как запускаются системные службы.. 393

10.4. Linux своими руками.. 402

10.5. В заключение. 411

Глава 11. Нагрузка, производительность, мониторинг и трассировка. 412

11.1. Метрики и инструменты измерения нагрузки и производительности.. 412

11.1.1. Центральный процессор и память. 412

11.1.2. Устройства ввода-вывода. 420

11.2. Мониторинг и трассировка. 424

11.2.1. Трассировка и отладка программ.. 426

11.3. В заключение. 439

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

Список литературы.. 442

Для удовольствия. 442

Начинающим.. 442

Программистам.. 442

Бесстрашным.. 443

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

Кетов Дмитрий Владимирович, ведущий преподаватель в области операционных систем и сетевых технологий Санкт-Петербургского политехнического университета (СПбПУ) с многолетним стажем, начальник отдела разработки программного обеспечения Санкт-Петербургского филиала АО “Концерн радиостроения «Вега»”. Профессионально занимается теорией построения и практикой разработки операционных систем и системного программного обеспечения.

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

Встречайте: “Конфиденциальность данных”

Конфиденциальность данных

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

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

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

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

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

Ключевые аспекты книги

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

Книга предназначена как для технических специалистов, так и для руководителей бизнеса, стремящихся повысить

 

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

Вступительное слово. 13

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

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

О книге. 20

Кому следует прочитать эту книгу. 20

Структура книги. 20

О коде. 22

Об авторе. 23

Об иллюстрации на обложке. 24

Часть I. Конфиденциальность, данные и ваш бизнес. 25

Глава 1. Инженерия конфиденциальности: зачем нужна
и как ее масштабировать. 27

1.1. Что такое конфиденциальность. 28

1.2. Как данные поступают в компанию и перемещаются внутри нее. 32

1.3. Почему конфиденциальность имеет значение. 34

1.3.1. Штрафы реальны. 34

1.3.2. Погоня за эффективностью в начале пути может вызвать проблемы конфиденциальности в будущем  36

Gamesbuster: анализ конкретного примера. 36

1.3.3. Расследования нарушений конфиденциальности — не просто преграда
на пути к успеху. 39

Еврокомиссия оштрафовала компанию WhatsApp на 110 млн евро
за искажение данных. 40

Антимонопольный регулятор Италии оштрафовал WhatsApp
на 3 млн евро. 41

Пять органов ЕС по надзору за соблюдением законодательства
по защите данных подают иски к корпорации Facebook
за изменения политики в 2014-м и другие действия с данными. 42

1.3.4. Защита конфиденциальности как возможность для бизнеса:
реальный пример. 44

1.4. Конфиденциальность: ментальная модель. 46

1.5. Как конфиденциальность влияет на бизнес на макроуровне. 49

1.5.1. Конфиденциальность и безопасность: период ковида. 49

1.5.2. Конфиденциальность и правила: циклический процесс. 51

1.6. Инструменты и техники защиты конфиденциальности: возможности
и варианты. 53

1.6.1. Дилемма: разрабатывать или покупать. 54

1.6.2. Инструменты защиты конфиденциальности от сторонних
разработчиков: они действительно работают и масштабируются?. 56

Платформенные решения для обеспечения конфиденциальности:
BigID и OneTrust 56

Специализированные решения для защиты конфиденциальности: Privicera, Collibra, DataGrail, Informatica, SailPoint 59

1.6.3. Риски при покупке сторонних инструментов защиты конфиденциальности. 60

1.7. В чем эта книга не поможет. 61

1.8. Как изменение роли инженеров повлияло на защиту конфиденциальности. 61

Резюме. 64

Глава 2. Представление о данных и конфиденциальности. 65

2.1. Что следует из понятия конфиденциальности. 65

2.1.1. Почему обеспечить конфиденциальность трудно. 66

2.1.2. Инженерия конфиденциальности на местах: чего необходимо добиться. 67

2.1.3. Конфиденциальность, системы данных и соблюдение политики. 70

2.2. Это могла бы быть ваша компания. 72

2.3. Данные, стратегия развития бизнеса и конфиденциальность. 76

2.4. Примеры нарушения конфиденциальности данных. 78

2.4.1. Equifax. 78

2.4.2. Нарушение в работе Службы управления персоналом. 80

2.4.3. Компании LabCorp и Quest Diagnostics 82

2.5. Конфиденциальность и нормативно-правовая база. 83

2.5.1. Как нормативные акты влияют на ваш продукт и его пользователей. 83

2.5.2. Как ваша программа должна помочь подготовиться к изменению законодательства о защите конфиденциальности данных. 85

2.6. Конфиденциальность и пользователь. 86

2.6.1. Превращение в полноправного американца и конфиденциальность. 86

2.6.2. Опасения современных пользователей по поводу конфиденциальности. 87

2.7. После создания инструментов наступает самое сложное: разработка
программы. 88

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

Резюме. 95

Часть II. Упреждающая программа защиты конфиденциальности: управление данными  97

Глава 3. Классификация данных. 99

3.1. Классификация данных в контексте клиента. 100

3.2. Зачем нужна классификация данных. 101

3.2.1. Классификация как часть управления данными. 102

3.2.2. Классификация данных: как она помогает выстраивать приоритеты. 103

Как определяются приоритеты защиты данных. 103

Сегментация данных. 106

Упражнение по защите данных: линза определения приоритетов. 108

3.2.3. Сопоставление примеров по классификации данных в отрасли технологий. 110

3.2.4. Неструктурированные данные и управление. 111

3.2.5. Классификация данных как этап на пути к зрелости. 112

Что такое зрелость организации. 113

Классификация данных и зрелость организации. 114

3.3. Как применить классификацию данных для повышения
конфиденциальности. 116

3.3.1. Классификация данных и варианты доступа к ним. 116

3.3.2. Классификация данных, управление доступом и конфиденциальность: пример 1  118

3.3.3. Классификация данных, управление доступом и конфиденциальность: пример 2  120

3.4. Классификация данных согласно законам о конфиденциальности. 121

3.4.1. Классификация данных как выделение главного в законах
о конфиденциальности. 121

3.4.2. Классификация данных для разрешения противоречий
в интерпретациях законов о конфиденциальности. 122

3.5. Процесс классификации данных. 124

3.5.1. Работа над классификацией данных с участниками из разных отделов. 124

3.5.2. Оформление и переработка классификации данных. 127

3.5.3. Процесс классификации данных: шаблон Microsoft 128

3.6. Классификация данных: пример. 129

Резюме. 133

Глава 4. Учет данных. 134

4.1. Учет данных: что это такое и зачем это нужно. 135

4.2. Машиночитаемые метки. 138

4.2.1. Что такое метки для учета данных. 138

4.2.2. Метки для учета данных: конкретный пример. 139

4.3. Разработка базовой версии. 143

4.4. Техническая архитектура. 145

4.4.1. Структурированные и неструктурированные данные. 145

4.4.2. Архитектурные возможности учета данных. 148

4.4.3. Рабочий процесс учета данных. 150

4.5. Представление о данных. 153

4.5.1. Процесс определения метаданных. 154

4.5.2. Процесс обнаружения метаданных. 156

4.6. Когда следует приступать к учету данных. 157

4.6.1. Почему процесс учета данных так сложен?. 157

4.6.2. Учет данных: лучше раньше, чем позже. 158

4.7. Учет данных — небинарный процесс. 161

4.7.1. Первый уровень учета данных. 161

4.7.2. Второй уровень учета данных. 163

4.7.3. Третий уровень учета данных. 164

Поддержка функций загрузки личных данных и запросы субъекта
на доступ к персональным данным. 165

Поддержка функции удаления данных. 165

Получение информации о бизнесе. 166

4.8. Как выглядит успешный процесс учета данных. 167

4.8.1. Объективные показатели успешности учета данных. 167

4.8.2. Субъективные показатели успешности учета данных. 168

Резюме. 169

Глава 5. Совместное использование данных. 171

5.1. Совместное использование данных: зачем компаниям ими делиться. 172

5.1.1. Совместное использование данных: службы такси. 173

5.1.2. Совместное использование данных: интернет-реклама. 174

5.1.3. Конфиденциальность в рекламе. 178

5.2. Как безопасно обмениваться данными: безопасность — союзник конфиденциальности  180

5.2.1. Отслеживание президента Трампа. 180

5.2.2. Защита передаваемых данных. 182

5.2.3. Защита данных в состоянии покоя. 183

Контроль доступа как инструмент защиты конфиденциальности. 184

Шифрование как инструмент защиты конфиденциальности. 185

5.3. Методы обфускации для безопасного обмена данными. 187

5.3.1. Обмен данными и национальная безопасность США.. 188

5.3.2. Анонимизация данных: связь между точностью и сроком хранения. 189

5.3.3. Анонимизация данных: взаимосвязь между точностью и доступом. 191

5.3.4. Анонимизация данных: сопоставление универсальных
идентификаторов с внутренними. 194

5.4. Передача внутренних идентификаторов третьим лицам. 196

5.4.1. Сценарий использования № 1: минимальная сессия
(без связи видов деятельности пользователя) 197

Предлагаемые методы псевдонимизации. 198

5.4.2. Сценарий использования № 2: одна сессия на каждый набор данных (связывание действий одного пользователя в рамках набора данных) 198

Предлагаемые методы псевдонимизации. 198

5.4.3. Сценарий использования № 3: наборы данных, охватывающие
всю сессию (связывание между наборами данных) 199

Предлагаемые методы псевдонимизации. 199

5.4.4. Восстановление псевдонимизированных значений. 200

Таблица сопоставления. 200

Двусторонняя криптографическая функция. 200

5.5. Измерение воздействия на конфиденциальность. 201

5.5.1. K-анонимность. 201

K-анонимность с неточными данными. 202

K-анонимность с точными данными. 203

K-анонимность и лучшая практика в отрасли. 204

5.5.2. L-разнообразие. 205

5.6. Ущерб конфиденциальности: это не учения. 206

5.6.1. Facebook и Cambridge Analytica. 207

5.6.2. Совместное использование данных и слабые места. 208

Резюме. 209

Часть III. Инструменты и процессы.. 211

Глава 6. Техническая проверка защиты конфиденциальности. 213

6.1. Что такое проверка защиты конфиденциальности. 214

6.1.1. Оценка воздействия на конфиденциальность. 216

6.1.2. Оценка воздействия на защиту данных. 217

Определите необходимость оценки воздействия на защиту данных. 219

Опишите процесс обработки данных. 220

Опишите отношения с пользователем. 221

Консультация. 222

Проведите оценку риска. 222

Определите меры по смягчению риска. 223

6.2. Внедрение процесса юридической проверки защиты конфиденциальности. 223

6.3. Обоснование необходимости технической проверки защиты конфиденциальности. 226

6.3.1. Сроки и объем. 226

6.3.2. Что входит в техническую проверку, но не входит в юридическую.. 228

6.4. Интеграция технических проверок защиты конфиденциальности в процесс внедрения инноваций  231

6.4.1. Когда проводится техническая проверка защиты конфиденциальности. 232

6.4.2. Как реализовать техническую защиту конфиденциальности. 234

6.5. Масштабирование процесса технической проверки защиты конфиденциальности. 240

6.5.1. Совместное использование данных. 240

6.5.2. Модели машинного обучения. 241

Машинное обучение и данные. 241

Машинное обучение, данные и конфиденциальность. 243

6.6. Примеры технических проверок защиты конфиденциальности. 244

6.6.1. Приложения-мессенджеры и приложения для взаимодействия:
связаны ли они?. 244

6.6.2. Маски и отслеживание контактов. 247

Резюме. 249

Глава 7. Удаление данных. 250

7.1. Почему компания должна удалять данные. 251

7.2. Как выглядит современная архитектура сбора данных. 253

7.2.1. Распределенная архитектура и микросервисы: как компании
собирают данные. 253

7.2.2. Как хранятся получаемые в реальном времени данные
и как организуется к ним доступ. 255

7.2.3. Хранение архивных данных. 255

7.2.4. Другие места хранения данных. 257

7.2.5. Как хранилище данных превращается из коллекции в архив. 258

7.3. Как работает архитектура сбора данных. 260

7.4. Удаление данных на уровне учетной записи: отправная точка. 262

7.4.1. Удаление учетной записи: разработка инструментария и процесса. 262

7.4.2. Масштабирование удаления учетной записи. 263

7.5. Удаление данных на уровне учетной записи: автоматизация
и масштабирование для распределенных услуг. 265

7.5.1. Регистрация сервисов и полей данных для удаления. 267

7.5.2. Планирование удаления данных. 269

7.6. Удаление конфиденциальных данных. 270

7.7. Кто должен управлять удалением данных. 274

Резюме. 276

Глава 8. Экспорт пользовательских данных:
запрос субъекта на доступ к персональным данным.. 277

8.1. Что такое DSAR. 278

8.1.1. Какие права предоставляют пользователям нормативные положения
о DSAR. 281

8.1.2. Обзор процесса выполнения DSAR. 283

8.2. Настройка процесса работы с DSAR. 285

8.2.1. Ключевые этапы создания системы выполнения DSAR. 286

8.2.2. Создание панели мониторинга состояния DSAR. 288

8.3. Автоматизация DSAR, структуры и потоки данных. 290

8.3.1. Компоненты DSAR. 290

8.3.2. Модели в форме параллелепипеда: подмножество данных
запроса DSAR. 292

8.3.3. Шаблоны DSAR. 295

8.3.4. Источники данных для шаблонов DSAR. 297

8.4. Интерфейсы и информационные панели для сотрудников. 299

Резюме. 307

Часть IV. Безопасность, масштабирование и кадровое обеспечение. 311

Глава 9. Разработка платформы управления согласием.. 311

9.1. В чем важность управления согласием. 312

9.1.1. Управление согласием и нормативные документы в области защиты конфиденциальности  313

9.1.2. Управление согласием и изменения в технологической отрасли. 315

9.1.3. Управление согласием и ваш бизнес. 317

9.2. Платформа управления согласием. 318

9.3. Модель схемы данных для управления согласием. 320

9.3.1. Отношения элементов, помогающие структурировать CMP. 321

9.3.2. Схемы отношений элементов: база данных CMP. 322

Таблица Feature. 323

Таблица Disclosure_Version. 325

Таблица «Согласие пользователя». 326

Таблица Locale_Copy. 328

Таблица LocaleTerritory. 329

9.4. Код согласия: объекты. 330

9.4.1. API для проверки статуса согласия. 331

9.4.2. API для получения документа о разглашении данных. 333

9.4.3. API для обновления статуса согласия на документ о разглашении
данных. 336

9.4.4. API для обработки нескольких документов о разглашении данных. 339

9.4.5. API для регистрации в сервисе получения согласия. 342

9.4.6. Полезные определения для сервиса получения согласия. 343

9.5. Другие полезные возможности CMP. 345

9.6. Интеграция управления согласием в рабочий процесс продукта. 347

Резюме. 351

Глава 10. Закрытие уязвимостей системы безопасности. 352

10.1. Защита конфиденциальности путем уменьшения поверхности атаки. 354

10.1.1. Управление поверхностью атаки. 354

10.1.2. Как тестирование может вызвать риски нарушения безопасности
и конфиденциальности. 356

Использование производственных данных в тестировании. 356

Гибкое тестирование, но с расширенной поверхностью атаки. 358

Потенциальные способы смягчения последствий изучены
и отвергнуты. 358

Выводы для инженеров и технических специалистов. 359

10.1.3. Модель риска предприятия для обеспечения безопасности и конфиденциальности  360

Автоматизированное обнаружение для управления поверхностью
атаки. 360

Внедрение управления рисками безопасности. 362

Сегментация сервисов. 364

Глубокая защита. 365

Обеспечение поддержки. 366

10.2. Защита конфиденциальности путем управления доступом к периметру. 367

10.2.1. Взлом компании Target 368

Разведка с целью обнаружения сетевых уязвимостей. 370

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

поставщику. 370

Использование уязвимости веб-приложения. 371

Поиск данных о клиентах. 372

Получение и поддержание доступа к данным клиентов. 372

Расширение доступа к данным клиента. 373

Кража личных данных клиентов и данных кредитных карт. 373

Отправка украденных данных за пределы сети компании. 374

10.2.2. Слабые места безопасности системы MongoDB. 376

10.2.3. Лучшие практики в сфере авторизации. 379

Принудительное разделение политики авторизации и кода. 379

Как сделать авторизацию безопасной, ориентированной на сервисы
и легко интегрируемой. 380

Проверка надежности каналов передачи данных и подтверждение подлинности личности  384

10.2.4. Почему важен непрерывный мониторинг учетных записей
и учетных данных. 387

10.2.5. Удаленная работа и риск для конфиденциальности. 389

10.3. Защита конфиденциальности путем устранения пробелов в управлении доступом. 391

10.3.1. Как работает уязвимость IDOR. 392

10.3.2. Тестирование на уязвимость IDOR и смягчение последствий. 394

Резюме. 396

Глава 11. Масштабирование, найм и рассмотрение правил. 397

11.1. Модель зрелости для инженерии конфиденциальности. 399

11.1.1. Идентификация. 401

Управление активами. 402

Управление конфиденциальностью.. 403

Управление рисками. 404

11.1.2. Защита. 406

Управление идентификацией и доступом. 406

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

Безопасность и конфиденциальность разработки программного обеспечения. 409

Защита данных в облаке. 411

Защита данных на основе инфраструктуры. 412

11.1.3. Обнаружение. 415

Разведка угроз безопасности. 415

Непрерывный мониторинг. 416

Инсайдерская угроза. 417

11.1.4. Смягчение последствий. 419

Управление реагированием на инциденты. 419

11.2. Область инженерии конфиденциальности: необходимые навыки. 420

Разработчики программного обеспечения для защиты конфиденциальности. 421

Специалисты по соблюдению нормативно-правовых требований. 421

Аналитики по вопросам конфиденциальности. 422

Менеджеры по продуктам для защиты конфиденциальности. 422

Аналитики данных. 422

Специалисты по инфраструктуре конфиденциальности. 423

UX-дизайнеры в области защиты конфиденциальности. 423

Архитекторы конфиденциальности. 423

11.3. Защита конфиденциальности и нормативно-правовой климат. 424

Резюме. 428

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

NISHANT BHAJARIA

Нишант Бхаджария (Nishant Bhajaria)– руководитель отдела стратегии и технологии конфиденциальности в компании Uber. Ранее возглавлял отделы инженерии конфиденциальности в компании Netflix, а также обеспечения безопасности данных в Google.

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

Новинка: “Сети Linux. Модели и приложения”

Сети Linux. Модели и приложения

Последовательно разобраны различные стороны сетевой инфраструктуры в Linux: базовые понятия сетей и TCP/IP, программные инструменты управления сетевым трафиком, программирование пользовательских сетевых приложений и драйверов сетевых протоколов для ядра Linux. Также исследованы  сети TOR, Yggdrasil, I2P, адресация IPv6, службы DNS, DHCP, SSH, DNS-системы разрешения имён EmerDNS и Alfis, что позволяет оценить тенденции развития современного Интернета.

Для специалистов по безопасности, сетевых администраторов, программистов

Новейшие сетевые разработки.

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

В первой части книги подробно рассказано о протоколе IPv6, который в настоящее время постепенно приходит на смену протоколу IPv4, доминировавшему на протяжении последних 30 лет.

Следующая часть подробно иллюстрирует, как устанавливать, настраивать и использовать все основные протокольные механизмы и инструменты, обеспечивающие работу Интернета и локальных сетей: DNS, DHCP, SSH.

Последняя часть, самая свежая с хронологической точки зрения, содержит выборочный обзор альтернативных проектов «Интернет завтрашнего дня»: сети TOR, Yggdrasil, I2P, альтернативные DNS-системы разрешения имён EmerDNS и Alfis. Хотя рассмотренные технологии выбраны на вкус автора, но в целом дают весьма полное впечатление о том, как эволюционирует современный Интернет.

Автор этой книги на протяжении свыше 40 лет являлся непосредственным участником разработки проектов из области системотехники и программного обеспечения разного масштаба и разной целевой ориентации. При этом практически все из них в большей или меньшей мере были связаны с сетевыми обменами. Предлагаемый в этой книге материал является обобщением практического опыта автора.

Это книга о том как выживать в эпоху обрушения сети Интернет.
автор книги

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

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

Что есть и чего нет в книге?……………………………………………………………………………………………………………… 7

Соглашения и выделения, принятые в тексте…………………………………………………………………………………….. 8

Код примеров и замеченные опечатки……………………………………………………………………………………………….. 8

Источники использованной информации…………………………………………………………………………………………… 8

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

Часть I. Сетевой стек: архитектура………………………………………………………………………………………. 10

RFC……………………………………………………………………………………………………………………………………………….. 10

Принципы сетевого стека………………………………………………………………………………………………………………… 12

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

Cетевой порядок байтов………………………………………………………………………………………………………….. 14

Адреса MAC………………………………………………………………………………………………………………………………….. 15

Разрешение аппаратных адресов………………………………………………………………………………………………. 18

Адреса IP……………………………………………………………………………………………………………………………………….. 19

IPv4……………………………………………………………………………………………………………………………………….. 20

Маски и подсети……………………………………………………………………………………………………………. 20

Широковещательный и групповой обмен……………………………………………………………………….. 22

Частные адреса………………………………………………………………………………………………………………. 23

Частные IPv4 и NAT……………………………………………………………………………………………………… 24

IPv6……………………………………………………………………………………………………………………………………….. 24

Префикс адреса……………………………………………………………………………………………………………… 25

Сокращения записи IPv6………………………………………………………………………………………………… 26

Локальные адреса………………………………………………………………………………………………………….. 28

Синтаксис записи IPv6…………………………………………………………………………………………………… 29

Прогноз………………………………………………………………………………………………………………………… 31

Адресные переменные в программном коде…………………………………………………………………………….. 32

Разрешение адресов и имен……………………………………………………………………………………………………… 34

Разрешение имен в программном коде…………………………………………………………………………… 35

Сетевые интерфейсы………………………………………………………………………………………………………………………. 37

Таблица маршрутизации………………………………………………………………………………………………………….. 44

Управление роутингом………………………………………………………………………………………………….. 46

Алиасные IP-адреса………………………………………………………………………………………………………………… 49

Петлевой интерфейс……………………………………………………………………………………………………………….. 53

Переименование сетевого интерфейса……………………………………………………………………………………… 54

Альтернативные имена………………………………………………………………………………………………….. 56

Порты транспортного уровня………………………………………………………………………………………………………….. 58

Источники использованной информации…………………………………………………………………………………………. 59

Часть II. Протоколы и инструменты прикладного уровня………………………………………………. 61

Инструменты диагностики………………………………………………………………………………………………………………. 61

Инструменты наблюдения………………………………………………………………………………………………………. 63

Инструменты тестирования…………………………………………………………………………………………………….. 67

Сервисы сети и systemd…………………………………………………………………………………………………………………… 69

Протокол SSH……………………………………………………………………………………………………………………………….. 70

Передача файлов по SSH………………………………………………………………………………………………………… 74

SSH и Midnight Commander…………………………………………………………………………………………………….. 75

Графическая сессия в SSH………………………………………………………………………………………………………. 79

SSH в скриптах………………………………………………………………………………………………………………………. 80

Протокол DHCP…………………………………………………………………………………………………………………………….. 81

Разрешение имен: служба DNS……………………………………………………………………………………………………….. 85

Локальный DNS-резолвер bind……………………………………………………………………………………………….. 86

Кеширующий DHCP/DNS-сервер Dnsmasq……………………………………………………………………………… 87

Кеширующий DNS-сервер средствами systemd………………………………………………………………………… 93

Оптимизация используемых серверов DNS…………………………………………………………………………….. 96

Защищенность сети: брандмауэр……………………………………………………………………………………………………. 100

Брандмауэр ufw…………………………………………………………………………………………………………………….. 102

Суперсервер inetd…………………………………………………………………………………………………………………………. 107

Сервер telnet…………………………………………………………………………………………………………………………. 109

Сокетная активация в systemd……………………………………………………………………………………………….. 112

Прокси-серверы……………………………………………………………………………………………………………………………. 118

Прокси сквозь SSH………………………………………………………………………………………………………………. 125

Клиенты прокси……………………………………………………………………………………………………………………. 125

Кто и как использует прокси?………………………………………………………………………………………………… 128

Источники использованной информации……………………………………………………………………………………….. 130

Часть III. Программирование сетевых приложений……………………………………………………….. 131

Общие принципы………………………………………………………………………………………………………………………….. 131

Клиент и сервер…………………………………………………………………………………………………………………….. 132

Сети датаграммные и потоковые……………………………………………………………………………………………. 132

Фазы соединения TCP………………………………………………………………………………………………….. 134

Адаптивные механизмы TCP……………………………………………………………………………………….. 135

Сообщения прикладного уровня в TCP………………………………………………………………………… 136

Присоединенный UDP…………………………………………………………………………………………………. 138

Сетевые сокеты и операции…………………………………………………………………………………………………………… 138

Обменные операции………………………………………………………………………………………………………………. 144

Параметры сокета…………………………………………………………………………………………………………………. 147

Использование сокетного API……………………………………………………………………………………………….. 149

UDP клиент-сервер……………………………………………………………………………………………………… 150

TCP клиент-сервер………………………………………………………………………………………………………. 152

Клиент-сервер в UNIX-домене…………………………………………………………………………………….. 157

Управляющие операции………………………………………………………………………………………………………………… 157

Классы обслуживания сервером……………………………………………………………………………………………………. 158

Последовательный сервер……………………………………………………………………………………………………… 162

Параллельный сервер……………………………………………………………………………………………………………. 162

Предварительное клонирование процесса………………………………………………………………………………. 163

Создание потока по запросу…………………………………………………………………………………………………… 164

Пул потоков…………………………………………………………………………………………………………………………. 165

Последовательный сервер с очередью обслуживания……………………………………………………………… 167

Суперсервер и сокетная активация…………………………………………………………………………………………. 168

Расширенные операции ввода/вывода……………………………………………………………………………………………. 175

Примеры реализации…………………………………………………………………………………………………………….. 176

Неблокируемый ввод/вывод…………………………………………………………………………………………………. 176

Замечания к примерам…………………………………………………………………………………………………. 177

Мультиплексирование ввода/вывода……………………………………………………………………………………… 179

Замечания к примерам…………………………………………………………………………………………………. 182

Ввод/вывод, управляемый сигналом……………………………………………………………………………………… 183

Асинхронный ввод/вывод……………………………………………………………………………………………………… 184

Символьный сокет……………………………………………………………………………………………………………………….. 185

Канальный уровень………………………………………………………………………………………………………………………. 186

Источники использованной информации……………………………………………………………………………………….. 187

Часть IV. Драйверы сетевых устройств в ядре Linux……………………………………………………….. 188

Введение в модули ядра……………………………………………………………………………………………………………….. 189

Сборка модуля……………………………………………………………………………………………………………………… 189

Точки входа и завершения…………………………………………………………………………………………………….. 190

Вывод диагностики модуля…………………………………………………………………………………………………… 191

Загрузка модулей………………………………………………………………………………………………………………….. 192

Параметры загрузки модуля………………………………………………………………………………………… 194

Подсчет ссылок использования……………………………………………………………………………………………… 198

Структуры данных сетевого стека…………………………………………………………………………………………………. 199

Путь пакета сквозь стек протоколов……………………………………………………………………………………………… 200

Прием: традиционный подход……………………………………………………………………………………………….. 200

Прием: высокоскоростной интерфейс…………………………………………………………………………………….. 201

Передача пакетов………………………………………………………………………………………………………………….. 204

Драйверы: сетевой интерфейс………………………………………………………………………………………………………… 205

Статистика интерфейса………………………………………………………………………………………………………….. 211

Виртуальный сетевой интерфейс……………………………………………………………………………………………. 213

Протокол сетевого уровня……………………………………………………………………………………………………………. 218

Еще раз о виртуальном интерфейсе……………………………………………………………………………………….. 224

Протокол транспортного уровня…………………………………………………………………………………………………… 230

Источники использованной информации……………………………………………………………………………………….. 233

Часть V. За границами традиций Интернета……………………………………………………………………. 234

Обсуждение………………………………………………………………………………………………………………………………….. 234

Стек Tor……………………………………………………………………………………………………………………………………….. 236

Tor как прокси для любых служб…………………………………………………………………………………………… 237

Ресурсы onion……………………………………………………………………………………………………………………….. 239

Mesh-сети…………………………………………………………………………………………………………………………………….. 242

Сеть Yggdrasil………………………………………………………………………………………………………………………. 243

Выбор пиров для хоста………………………………………………………………………………………………… 247

Майнинг IPv6-адресов…………………………………………………………………………………………………. 252

Yggdrasil в локальной сети…………………………………………………………………………………………… 259

Короткие адреса…………………………………………………………………………………………………………… 261

Работа в Yggdrasil без установки клиента……………………………………………………………………… 263

Скоростные показатели………………………………………………………………………………………………… 265

Еще одна сеть: I2P………………………………………………………………………………………………………………… 269

Запуск сети………………………………………………………………………………………………………………….. 270

Использование сети……………………………………………………………………………………………………… 272

Доступ к ресурсам извне………………………………………………………………………………………………. 274

Альтернативные DNS…………………………………………………………………………………………………………………… 277

Регистрация домена………………………………………………………………………………………………………………. 277

Блокчейн как регистратор домена………………………………………………………………………………………….. 278

EmerСoin………………………………………………………………………………………………………………………………. 279

OpenNIC……………………………………………………………………………………………………………………… 287

Alfis……………………………………………………………………………………………………………………………………… 289

Доступ к локальным хостам………………………………………………………………………………………………………….. 296

Источники использованной информации……………………………………………………………………………………….. 300

Некоторые краткие итоги…………………………………………………………………………………………………….. 302

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

Цилюрик Олег Иванович

Цилюрик Олег Иванович — программист-разработчик с более чем 40-летним опытом, преподаватель, автор книг по Linux и Unix , в том числе «Расширения ядра Linux. Драйверы и модули» и «Linux и Go. Эффективное низкоуровневое программирование», высоко оцененных профессионалами и широкой читательской аудиторией.

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

Новинка: Вологодские сказки

Вологодские сказки

В книге собраны сказки самого красивого  и самобытного края русского Севера — Вологды. Издавна вологодская земля славилась ажурным кружевом, тончайшей резьбой по бересте и искусством слова. Персонажи вологодских сказок —  находчивый Иван-дурак, храбрый царский сын, хитрая лиса  и, конечно, баба Яга, чья избушка притаилась в дремучих северных лесах.

Для младшего школьного возраста

Вологодские сказки

Славянские поселения на территории современной Вологодской области известны с VI–XII веков. Через Белоозеро и реку Сухону новгородские дружины проникали далеко на северо-восток. К середине IX века северорусский город Белоозеро был уже одним из крупнейших экономических и культурных центров Древней Руси. А в 1147 году, по сообщению «Вологодского летописца», на реку Вологду, «на великий лес» пришёл монах Герасим. На берегу он увидел церковь Воскресения, на Ленивой площадке — небольшой торжок. Так дошло до нас первое известие о Вологде.

Не только Вологда имеет богатую историю. Ряд других городов и населённых пунктов области: Белозерск (до 1777 года — Белоозеро), Устюжна, Тотьма, Великий Устюг — являются музеями под открытым небом. А последний считается ещё и родиной российского Деда Мороза.

Художник

Лукина Ольга

Художник Ольга Лукина.

Родилась в 1991 году в Донецкой области, потом переехали с родителями в Ханты-мансийский округ (г. Радужный), там познакомилась с миром искусства в местной художественной школе. После окончания школы переехала на юг страны, в Краснодар, где продолжила обучение в сфере графического дизайна (КубГУ). С 2018 года основной сферой деятельности стала иллюстрация.

Черпаю вдохновление из истории, декоративных искусств, природы и путешествий.

Редактор-составитель

Виктор Васильевич Гура
Виктор Васильевич Гура (1925–1991) — советский литературовед, писатель, заслуженный деятель
науки РСФСР, доктор филологических наук. Участвовал в Великой Отечественной войне. Заметный
след в его жизни оставила встреча с Михаилом Шолоховым, которая определила дальнейшие интересы
Виктора. Закончил Саратовский универститет, преподавал на кафедре литературы Вологодского
государственного педагогического института. Параллельно с преподаванием Гура продолжал
заниматься творчеством Шолохова. Написал несколько книг об истории русского советского романа.
Опубликовано

Суперхит: “Изучаем DDD – предметно-ориентированное проектирование”

Изучаем DDD – предметно-ориентированное проектирование

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

 Для архитекторов ПО, бизнес-аналитиков и разработчиков корпоративного программного обеспечения  

Сегодня создавать  программное обеспечение стало сложно как никогда. Приходится не только учитывать постоянно меняющиеся технологические тренды, но и понимать ту предметную область (бизнес), для которой оно создаётся.

В этой практичной книге приведён ключевой набор паттернов, принципов и практик для анализа предметной области, понимания стратегий бизнеса и, что самое важное, соотнесение процесса разработки с меняющимися потребностями заказчика.

Автор показывает, как при помощи этих практик надёжно реализовать бизнес-логику, а также обеспечить прочность программной архитектуры на годы вперёд. Вы исследуете, как предметно-ориентированное проектирование (DDD – domain-driven design) соотносится с другими методологиями, и гарантируете, что принимаемые архитектурные решения соответствуют предъявляемым бизнес-требованиям. В книге подробно разобрано внедрение DDD в рамках стартапа.

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

  • Проанализировать предметную область, в которой работает компания, и определить, как создаваемая система вписывается в эту область и обеспечивает конкурентное преимущество
  • Пользоваться стратегическими и тактическими средствами DDD для выстраивания эффективных программных решений, удовлетворяющих потребности заказчика
  • Приходить к общему пониманию любой предметной области, с которой приходится иметь дело
  • Разбивать систему на ограниченные контексты
  • Координировать работу сразу нескольких команд
  • Постепенно вводить DDD в реорганизуемые проекты

Владик Хононов – уникальный мыслитель, много лет занимающийся внедрением DDD для решения задач в самых разных предметных областях. Его идеи – постоянный источник вдохновения, подпитывающий всё сообщество DDD, а эта книга станет незаменимым ресурсом для всех, кто только начинает практиковать DDD.
 Ник Тьюн, технологический консультант в компании Empathy Software, автор книги «Modernizing Architecture»

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

Предисловие редакторской группы……………………………………………………….. 15

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

Введение………………………………………………………………………………………………… 21

Зачем я написал эту книгу………………………………………………………………………………………………………… 22

Кому следует прочитать эту книгу………………………………………………………………………………………….. 22

Навигация по книге……………………………………………………………………………………………………………………. 23

Пример предметной области: WolfDesk………………………………………………………………………………….. 24

Соглашения, используемые в этой книге…………………………………………………………………………………. 25

Порядок использования примеров кода…………………………………………………………………………………… 26

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

Вступление…………………………………………………………………………………………….. 29

Часть I. Стратегическое проектирование……………………………. 31

Глава 1. Анализ предметной области……………………………………………………… 33

Так что же такое предметная область?……………………………………………………………………………………. 33

Что такое поддомен (subdomain)?……………………………………………………………………………………………. 34

Типы поддоменов……………………………………………………………………………………………………………. 34

Основные поддомены (core subdomains)………………………………………………………………. 34

Универсальные поддомены (generic subdomains)………………………………………………… 36

Вспомогательные поддомены (supporting subdomains)………………………………………. 36

Сравнение поддоменов………………………………………………………………………………………………….. 37

Конкурентное преимущество………………………………………………………………………………… 37

Сложность………………………………………………………………………………………………………………. 38

Изменчивость………………………………………………………………………………………………………….. 39

Стратегия решения (solution)…………………………………………………………………………………. 40

Определение границ поддоменов………………………………………………………………………………….. 41

Выделение поддоменов (Distilling subdomains)……………………………………………………. 42

Поддомены с позиции согласующихся сценариев использования……………………. 42

Сосредоточьтесь на главном………………………………………………………………………………… 44

Примеры анализа предметной области…………………………………………………………………………………… 44

Gigmaster………………………………………………………………………………………………………………………….. 44

Предметная область (домен) и поддомены………………………………………………………….. 45

Архитектурные решения……………………………………………………………………………………….. 45

BusVNext…………………………………………………………………………………………………………………………. 46

Предметная область (домен) и поддомены………………………………………………………….. 46

Архитектурные решения……………………………………………………………………………………….. 47

Кто такие специалисты в предметной области?…………………………………………………………………….. 47

Выводы……………………………………………………………………………………………………………………………………….. 48

Упражнения………………………………………………………………………………………………………………………………… 49

Глава 2. Экспертные знания о предметной области……………………………….. 50

Задачи бизнеса (business problems)………………………………………………………………………………………….. 50

Выявление экспертных знаний…………………………………………………………………………………………………. 51

Общение……………………………………………………………………………………………………………………………………… 51

Что такое единый язык?…………………………………………………………………………………………………………….. 53

Язык бизнеса………………………………………………………………………………………………………………………………. 54

Сценарии…………………………………………………………………………………………………………………………. 54

Согласованность…………………………………………………………………………………………………………….. 55

Неоднозначные понятия………………………………………………………………………………………… 55

Понятия-синонимы…………………………………………………………………………………………………. 55

Модель предметной области……………………………………………………………………………………………………. 56

Что такое модель?…………………………………………………………………………………………………………… 56

Эффективное моделирование………………………………………………………………………………………… 56

Моделирование предметной области…………………………………………………………………………… 57

Непрерывная работа……………………………………………………………………………………………………… 57

Инструменты…………………………………………………………………………………………………………………… 58

Сложности………………………………………………………………………………………………………………………. 59

Вывод………………………………………………………………………………………………………………………………………….. 60

Упражнения………………………………………………………………………………………………………………………………… 61

Глава 3. Как осмыслить сложность предметной области……………………….. 62

Противоречивые модели…………………………………………………………………………………………………………… 62

Что такое ограниченный контекст?………………………………………………………………………………………….. 64

Границы модели……………………………………………………………………………………………………………… 65

Уточнение термина «единый язык»………………………………………………………………………………. 65

Область применения ограниченного контекста…………………………………………………………… 66

Сравнение ограниченных контекстов и поддоменов……………………………………………………………… 67

Поддомены………………………………………………………………………………………………………………………. 67

Ограниченные контексты………………………………………………………………………………………………. 68

Взаимодействие поддоменов и ограниченных контекстов…………………………………………. 68

Границы……………………………………………………………………………………………………………………………………… 70

Физические границы………………………………………………………………………………………………………. 70

Границы владения………………………………………………………………………………………………………….. 70

Ограниченные контексты в реальной жизни…………………………………………………………………………… 71

Семантические области…………………………………………………………………………………………………. 71

Наука……………………………………………………………………………………………………………………………….. 72

Покупка холодильника………………………………………………………………………………………………….. 73

Вывод………………………………………………………………………………………………………………………………………….. 75

Упражнения………………………………………………………………………………………………………………………………… 75

Глава 4. Интеграция ограниченных контекстов…………………………………….. 77

Сотрудничество (Cooperation)………………………………………………………………………………………………….. 77

Партнерство (Partnership)………………………………………………………………………………………………. 78

Общее ядро (shared kernel)……………………………………………………………………………………………… 78

Общие рамки (Shared scope)………………………………………………………………………………….. 79

Реализация………………………………………………………………………………………………………………. 79

Когда следует воспользоваться общим ядром…………………………………………………….. 80

Потребитель-Поставщик (Customer-supplier)…………………………………………………………………………… 81

Конформист (Conformist)……………………………………………………………………………………………….. 81

Предохранительный слой (Anticorruption layer)………………………………………………………….. 82

Сервис с открытым протоколом (Open-Host Service)…………………………………………………… 83

Разные пути (Separate Ways)…………………………………………………………………………………………………….. 84

Проблемы общения………………………………………………………………………………………………………… 84

Универсальный поддомен (Generic Subdomain)…………………………………………………………… 84

Различия в моделях………………………………………………………………………………………………………… 85

Карта контекстов (Context Map)………………………………………………………………………………………………. 85

Поддержка в актуальном состоянии…………………………………………………………………………….. 86

Ограничения……………………………………………………………………………………………………………………. 86

Вывод………………………………………………………………………………………………………………………………………….. 87

Упражнения………………………………………………………………………………………………………………………………… 87

Часть II. Тактический замысел………………………………………………… 89

Глава 5. Реализация простой бизнес-логики………………………………………….. 90

Транзакционный сценарий……………………………………………………………………………………………………….. 90

Реализация………………………………………………………………………………………………………………………. 91

Это не так-то просто!……………………………………………………………………………………………………… 91

Отсутствие транзакционного поведения……………………………………………………………… 91

Распределенные транзакции…………………………………………………………………………………. 93

Неявные распределенные транзакции…………………………………………………………………. 94

Когда следует применять транзакционный сценарий………………………………………………… 96

Активная запись…………………………………………………………………………………………………………………………. 97

Реализация………………………………………………………………………………………………………………………. 97

Когда следует применять активную запись…………………………………………………………………. 98

Придерживайтесь прагматичного подхода…………………………………………………………………………….. 99

Вывод………………………………………………………………………………………………………………………………………….. 99

Упражнения……………………………………………………………………………………………………………………………… 100

Глава 6. Проработка сложной бизнес-логики……………………………………….. 102

Предыстория…………………………………………………………………………………………………………………………….. 102

Модель предметной области (доменная модель)…………………………………………………………………. 102

Реализация…………………………………………………………………………………………………………………….. 103

Сложность…………………………………………………………………………………………………………….. 104

Единый язык………………………………………………………………………………………………………….. 104

Строительные блоки…………………………………………………………………………………………………….. 104

Объект-значение…………………………………………………………………………………………………… 104

Сущности………………………………………………………………………………………………………………. 110

Агрегаты……………………………………………………………………………………………………………….. 111

Доменные сервисы (domain service)……………………………………………………………………. 119

Управление сложностью……………………………………………………………………………………………… 121

Вывод………………………………………………………………………………………………………………………………………… 122

Упражнения……………………………………………………………………………………………………………………………… 123

Глава 7. Моделирование фактора времени…………………………………………… 125

События как источник данных (Event Sourcing)……………………………………………………………………. 125

Поиск……………………………………………………………………………………………………………………………… 130

Анализ……………………………………………………………………………………………………………………………. 132

Источник истины………………………………………………………………………………………………………….. 133

Хранилище событий…………………………………………………………………………………………………….. 133

Модель предметной области, основанная на событиях………………………………………………………. 134

Преимущества………………………………………………………………………………………………………………. 137

Недостатки……………………………………………………………………………………………………………………. 138

Часто задаваемые вопросы…………………………………………………………………………………………………….. 139

Производительность…………………………………………………………………………………………………….. 139

Удаление данных…………………………………………………………………………………………………………. 141

А почему просто нельзя ………………………………………………………………………………………………. 141

Вывод………………………………………………………………………………………………………………………………………… 142

Упражнения……………………………………………………………………………………………………………………………… 142

Глава 8. Архитектурные паттерны……………………………………………………….. 144

Сопоставление бизнес-логики и архитектурных паттернов……………………………………………….. 144

Слоеная архитектура (Layered Architecture)…………………………………………………………………………. 145

Слой представления (Presentation layer)…………………………………………………………………….. 145

Слой бизнес-логики (Business logic layer)……………………………………………………………………. 146

Слой доступа к данным (Data access layer)………………………………………………………………… 146

Связь между слоями……………………………………………………………………………………………………… 147

Вариация……………………………………………………………………………………………………………………….. 148

Сервисный слой (Service layer)……………………………………………………………………………. 148

Терминология……………………………………………………………………………………………………….. 151

Когда предпочтительнее использовать слоеную архитектуру……………………………….. 151

Дополнительно: сравнение слоев и уровней……………………………………………………… 152

Порты и адаптеры (Ports and adapters)………………………………………………………………………………….. 152

Терминология……………………………………………………………………………………………………………….. 152

Принцип инверсии зависимостей (Dependency inversion principle)…………………………… 153

Интеграция инфраструктурных компонентов……………………………………………………………. 154

Варианты………………………………………………………………………………………………………………………. 155

Когда предпочтительнее использовать порты и адаптеры……………………………………… 155

Разделение ответственности команд и запросов (Command-Query Responsibility Segregation) 155

Мультипарадигменное моделирование (Polyglot modelling)…………………………………….. 156

Реализация…………………………………………………………………………………………………………………….. 156

Модель выполнения команд……………………………………………………………………………….. 157

Модели чтения (проекции)………………………………………………………………………………….. 157

Проецирование моделей чтения………………………………………………………………………………….. 157

Синхронные проекции…………………………………………………………………………………………. 158

Асинхронные проекции……………………………………………………………………………………….. 159

Сложности…………………………………………………………………………………………………………………….. 160

Разделение моделей……………………………………………………………………………………………………… 160

Когда предпочтительнее использовать CQRS…………………………………………………………… 160

Область применения………………………………………………………………………………………………………………… 161

Вывод………………………………………………………………………………………………………………………………………… 162

Упражнения……………………………………………………………………………………………………………………………… 163

Глава 9. Паттерны взаимодействия……………………………………………………… 164

Преобразование моделей………………………………………………………………………………………………………… 164

Преобразование моделей без сохранения состояния……………………………………………….. 165

Синхронный режим……………………………………………………………………………………………… 165

Асинхронный режим……………………………………………………………………………………………. 167

Преобразование моделей с отслеживанием состояния…………………………………………….. 168

Агрегирование входящих данных………………………………………………………………………. 168

Объединение нескольких источников………………………………………………………………… 169

Интеграция агрегатов……………………………………………………………………………………………………………… 170

Паттерн исходящих сообщений (Outbox)…………………………………………………………………… 172

Извлечение неопубликованных событий…………………………………………………………… 173

Сага……………………………………………………………………………………………………………………………….. 174

Согласованность………………………………………………………………………………………………….. 177

Диспетчер процессов……………………………………………………………………………………………………. 177

Вывод………………………………………………………………………………………………………………………………………… 180

Упражнения……………………………………………………………………………………………………………………………… 181

Часть III. Применение предметно-ориентированного проектирования на практике………………………………………………………………………………………….. 183

Глава 10. Эвристика проектирования………………………………………………….. 184

Эвристика…………………………………………………………………………………………………………………………………. 184

Ограниченные контексты………………………………………………………………………………………………………… 184

Паттерны реализации бизнес-логики…………………………………………………………………………………….. 186

Архитектурные паттерны……………………………………………………………………………………………………….. 188

Стратегия тестирования………………………………………………………………………………………………………….. 189

Пирамида тестирования………………………………………………………………………………………………. 190

Ромб тестирования……………………………………………………………………………………………………….. 190

Перевернутая пирамида тестирования………………………………………………………………………. 190

Дерево тактических проектных решений………………………………………………………………………………. 191

Вывод………………………………………………………………………………………………………………………………………… 192

Упражнения……………………………………………………………………………………………………………………………… 192

Глава 11. Эволюция проектных решений…………………………………………….. 194

Изменения в предметных областях………………………………………………………………………………………… 194

Из основного в универсальный……………………………………………………………………………………. 195

Из универсального в основной……………………………………………………………………………………. 195

Из вспомогательного в универсальный………………………………………………………………………. 196

Из вспомогательного в основной………………………………………………………………………………… 196

Из основного во вспомогательный……………………………………………………………………………… 196

Из универсального во вспомогательный……………………………………………………………………. 196

Стратегические аспекты проектирования…………………………………………………………………………….. 197

Тактические аспекты проектирования…………………………………………………………………………………… 198

Преобразование транзакционного сценария в активную запись…………………………….. 198

Преобразование активной записи в модель предметной области…………………………… 199

Преобразование модели предметной области в модель предметной области, основанную на событиях           200

Генерация прошлых переходов состояния………………………………………………………………… 201

Моделирование событий миграции……………………………………………………………………………. 202

Организационные изменения………………………………………………………………………………………………….. 202

Переход от партнерства к отношениям потребитель-поставщик……………………………. 203

Переход от отношений потребитель-поставщик к модели разных путей……………….. 204

Знания предметной области…………………………………………………………………………………………………… 204

Рост проекта…………………………………………………………………………………………………………………………….. 205

Поддомены……………………………………………………………………………………………………………………. 205

Ограниченные контексты…………………………………………………………………………………………….. 206

Агрегаты………………………………………………………………………………………………………………………… 207

Вывод………………………………………………………………………………………………………………………………………… 207

Упражнения……………………………………………………………………………………………………………………………… 208

Глава 12. EventStorming……………………………………………………………………….. 210

Что такое EventStorming?………………………………………………………………………………………………………… 210

Кто принимает участие в EventStorming?……………………………………………………………………………… 210

Что нужно для проведения EventStorming?…………………………………………………………………………… 211

Процесс проведения EventStorming……………………………………………………………………………………….. 212

Этап 1: Проведение неструктурированного исследования……………………………………… 212

Этап 2: Выстраивание в хронологическом порядке…………………………………………………. 213

Этап 3: Проблемные места (pain points)…………………………………………………………………….. 213

Этап 4: Выявление ключевых событий (pivotal events)…………………………………………….. 214

Этап 5: Выявление команд (commands)…………………………………………………………………….. 215

Этап 6: Выявление правил (policies)……………………………………………………………………………. 216

Этап 7: Выявление моделей чтения (read model)………………………………………………………. 217

Этап 8: Выявление внешних систем (external systems)……………………………………………… 217

Этап 9: Выявление агрегатов………………………………………………………………………………………. 218

Этап 10: Выявление ограниченных контекстов………………………………………………………… 218

Варианты………………………………………………………………………………………………………………………………….. 219

Когда следует проводить EventStorming……………………………………………………………………………….. 220

Советы по проведению……………………………………………………………………………………………………………. 221

Отслеживание динамики проведения семинара………………………………………………………… 221

Проведение EventStorming с удаленными участниками…………………………………………… 222

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

Упражнения……………………………………………………………………………………………………………………………… 222

Глава 13. Предметно-ориентированное проектирование на практике….. 224

Стратегический анализ…………………………………………………………………………………………………………… 225

Осмысление предметной области……………………………………………………………………………….. 225

Основные поддомены (core subdomains)……………………………………………………………. 225

Универсальные поддомены…………………………………………………………………………………. 226

Вспомогательные поддомены (supporting subdomains)…………………………………….. 226

Изучение текущего проекта…………………………………………………………………………………………. 226

Оценка тактического замысла…………………………………………………………………………….. 227

Оценка стратегического замысла……………………………………………………………………….. 227

Определение стратегии модернизации………………………………………………………………………………….. 228

Стратегическая модернизация……………………………………………………………………………………. 228

Тактическая модернизация………………………………………………………………………………………….. 230

Развитие единого языка……………………………………………………………………………………………….. 230

Паттерн «Душитель» (Strangler)………………………………………………………………………….. 231

Рефакторинг тактических проектных решений…………………………………………………. 233

Прагматичное предметно-ориентированное проектирование……………………………………………. 234

Как «продать» предметно-ориентированное проектирование?………………………………………….. 234

Законспирированное предметно-ориентированное проектирование……………………… 235

Единый язык………………………………………………………………………………………………………….. 235

Ограниченные контексты…………………………………………………………………………………….. 236

Тактические проектные решения………………………………………………………………………… 236

Модель предметной области, основанная на событиях…………………………………… 237

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

Упражнения……………………………………………………………………………………………………………………………… 238

Часть IV. Взаимоотношения с другими методологиями и паттернами     239

Глава 14. Микросервисы……………………………………………………………………… 240

Что такое сервис?…………………………………………………………………………………………………………………….. 240

Что такое микросервис?………………………………………………………………………………………………………….. 241

Метод как Сервис (Method as a Service): путь к созданию идеальных микросервисов? 242

Цель проектирования…………………………………………………………………………………………………… 243

Сложность системы……………………………………………………………………………………………………… 244

Микросервисы как «глубокие» сервисы (deep services)…………………………………………….. 245

Микросервисы как глубокие модули………………………………………………………………………….. 246

Предметно-ориентированное проектирование и границы микросервисов………………………… 248

Ограниченные контексты…………………………………………………………………………………………….. 248

Агрегаты……………………………………………………………………………………………………………….. 250

Поддомены……………………………………………………………………………………………………………………. 251

Сокращение публичных интерфейсов микросервисов…………………………………………………………. 252

Сервис с открытым протоколом………………………………………………………………………………….. 252

Предохранительный слой (anticorruption layer, ACL)……………………………………………….. 253

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

Упражнения……………………………………………………………………………………………………………………………… 254

Глава 15. Событийно-ориентированная архитектура…………………………… 256

Событийно-ориентированная архитектура………………………………………………………………………….. 256

События……………………………………………………………………………………………………………………………………. 257

События, команды и сообщения…………………………………………………………………………………. 257

Структура……………………………………………………………………………………………………………………… 258

Типы событий……………………………………………………………………………………………………………….. 258

Уведомление…………………………………………………………………………………………………………. 258

Передача состояния с помощью события………………………………………………………….. 260

События предметной области (domain event)…………………………………………………… 262

Сравнение событий предметной области и уведомлений………………………………… 262

Сравнение событий предметной области с ECST-сообщениями…………………….. 262

Типы событий: Пример………………………………………………………………………………………… 263

Проектирование событийно-ориентированной интеграции……………………………………………….. 264

Распределенный большой ком грязи…………………………………………………………………………… 264

Временнáя связанность (связанность по времени)…………………………………………………….. 265

Функциональная связанность……………………………………………………………………………………… 266

Связанность на уровне реализации……………………………………………………………………………. 266

Реорганизация событийно-ориентированной интеграции……………………………………….. 266

Творческий подход к событийно-ориентированному проектированию…………………. 267

Предполагайте худшее………………………………………………………………………………………… 267

Используйте публичный интерфейс и приватные события……………………………… 268

Оценивайте требования к согласованности………………………………………………………. 268

Вывод………………………………………………………………………………………………………………………………………… 269

Упражнения……………………………………………………………………………………………………………………………… 269

Глава 16. Сеть данных (Data Mesh)………………………………………………………. 271

Сравнение аналитической модели данных (OLAP) с моделью транзакционных данных (OLTP)        271

Таблица фактов…………………………………………………………………………………………………………….. 272

Таблица измерений………………………………………………………………………………………………………. 274

Аналитические модели………………………………………………………………………………………………… 274

Платформы управления аналитическими данными…………………………………………………………….. 276

Хранилище данных — Data Warehouse……………………………………………………………………… 276

Озеро данных — Data Lake…………………………………………………………………………………………. 279

Проблемы архитектур хранилища данных и озера данных……………………………………. 280

Сеть данных (Data mesh)………………………………………………………………………………………………………… 281

Разбиение данных по предметным областям…………………………………………………………….. 281

Данные как продукт……………………………………………………………………………………………………… 283

Обеспечение автономии………………………………………………………………………………………………. 284

Построение экосистемы……………………………………………………………………………………………….. 284

Совмещение сети данных (data mesh) и предметно-ориентированного проектирования          285

Вывод………………………………………………………………………………………………………………………………………… 287

Упражнения……………………………………………………………………………………………………………………………… 287

Заключение………………………………………………………………………………………….. 289

Задача………………………………………………………………………………………………………………………………………. 289

Решение…………………………………………………………………………………………………………………………………….. 290

Реализация……………………………………………………………………………………………………………………………….. 291

Рекомендуемая литература…………………………………………………………………………………………………….. 291

Дополнительные сведения о предметно-ориентированном проектировании………… 291

Архитектурные и интеграционные шаблоны…………………………………………………………….. 292

Модернизация устаревших систем…………………………………………………………………………….. 292

EventStorming………………………………………………………………………………………………………………… 293

Вывод………………………………………………………………………………………………………………………………………… 294

Приложение 1. Применение DDD: пример из практики………………………… 295

Пять ограниченных контекстов………………………………………………………………………………………………. 295

Предметная область…………………………………………………………………………………………………….. 295

Ограниченный контекст № 1: Маркетинг…………………………………………………………………… 297

Своеобразная магия…………………………………………………………………………………………….. 297

Наши ранние взгляды на предметно-ориентированное проектирование………. 297

Ограниченный контекст № 2: CRM…………………………………………………………………………….. 297

Еще больше «агрегатов»!…………………………………………………………………………………….. 298

Разработка решения: Дубль два…………………………………………………………………………. 299

Вавилонская башня 2.0……………………………………………………………………………………….. 299

Более широкий взгляд на предметно-ориентированное проектирование………. 300

Ограниченный контекст № 3: Обработчики событий……………………………………………….. 301

Ограниченный контекст № 4: Бонусы………………………………………………………………………… 302

Проектирование: Дубль два………………………………………………………………………………… 303

Единый язык………………………………………………………………………………………………………….. 303

Классическое понимание предметно-ориентированного проектирования……. 303

Ограниченный контекст № 5: Центр маркетинга………………………………………………………. 304

Микро — что?………………………………………………………………………………………………………. 304

Реальная проблема………………………………………………………………………………………………. 305

Обсуждение………………………………………………………………………………………………………………………………. 305

Единый язык………………………………………………………………………………………………………………….. 305

Поддомены……………………………………………………………………………………………………………………. 306

Сопоставление проектных решений с поддоменами………………………………………… 307

Не игнорируйте боль……………………………………………………………………………………………. 308

Границы ограниченных контекстов……………………………………………………………………………. 308

Вывод………………………………………………………………………………………………………………………………………… 309

Приложение 2. Ответы на вопросы упражнений………………………………….. 310

Глава 1……………………………………………………………………………………………………………………………………… 310

Глава 2……………………………………………………………………………………………………………………………………… 311

Глава 3……………………………………………………………………………………………………………………………………… 311

Глава 4……………………………………………………………………………………………………………………………………… 312

Глава 5……………………………………………………………………………………………………………………………………… 312

Глава 6……………………………………………………………………………………………………………………………………… 313

Глава 7……………………………………………………………………………………………………………………………………… 313

Глава 8……………………………………………………………………………………………………………………………………… 313

Глава 9……………………………………………………………………………………………………………………………………… 314

Глава 10……………………………………………………………………………………………………………………………………. 314

Глава 11……………………………………………………………………………………………………………………………………. 314

Глава 12……………………………………………………………………………………………………………………………………. 315

Глава 13……………………………………………………………………………………………………………………………………. 315

Глава 14……………………………………………………………………………………………………………………………………. 315

Глава 15……………………………………………………………………………………………………………………………………. 315

Глава 16……………………………………………………………………………………………………………………………………. 316

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

Об авторе       320

Влад Хононов

Влад Хононов — инженер-программист, более 20 лет занимающийся промышленной разработкой. Успел поработать во множестве больших и малых компаний на разных позициях – от вебмастера до главного архитектора. Активно выступает на конференциях, пишет статьи в блоге, консультирует по темам, связанным с предметно-ориентированным проектированием, микросервисами, а также с программной архитектурой и унаследованным кодом.