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

Представляем книгу “Ум программиста”

Ум программиста. Как понять и осмыслить любой код

В издательстве “БХВ” вышла книга Фелины Херманс”Ум программиста. Как понять и осмыслить любой код“.

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

Для программистов и других IT-специалистов

ВСЁ, ЧТО ПРОГРАММИСТ ДОЛЖЕН ЗНАТЬ О МЫШЛЕНИИ

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

Внутри книги

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

Узнайте, как оптимизировать естественные когнитивные процессы вашего мозга, чтобы легче читать код, писать код быстрее и осваивать новые языки за гораздо меньшее время. Эта книга поможет вам справиться с замешательством, которое вы испытываете, столкнувшись со странным и сложным кодом, и объяснит кодовую базу таким образом, чтобы новый член команды мог продуктивно работать в считанные дни!

О технологии

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

Эта книга особенно заинтересует программистов, работающих сразу с несколькими языками.

Отзывы профессионалов

Великолепная и глубоко информативная книга, помогает перекинуть мостик между программированием и мышлением.
 Майк Тейлор, компания CGI Inc.

Книга о том, как именно работает мозг, как эффективнее читать, писать и совместно разрабатывать код .
 Бен Мак-Намара, консалтинговое агентство DataGeek

В книге изложен научный подход, помогающий программисту разгрузить голову при работе и самому себе проторить путь к вершинам мастерства!
 Даниэла Запата Риеско, стартап M1 Finance

Если вы когда-нибудь задумывались, как брать умом, а не только усердием – прочтите эту книгу. Я каждый день убеждаюсь, насколько она помогла мне в работе.
 Чжицзюнь Лю, рекламный холдинг Mediaocean

Рисунок на обложке данной книги называется «Femme Sauvage du Canada», или «Коренная жительница Канады». Изображение взято из коллекции костюмов разных стран Жака Грассе де Сен-Совера (1757–1810) под названием «Costumes civils actuels de tous les peuples connus», изданной во Франции в 1788 году.

Издательство Manning демонстрирует изобретательность компьютерного производства с помощью обложек книг, которые основаны на богатом разнообразии региональной жизни 200 лет назад, описанном в книге Грассе де Сен-Совера.

Femme Sauvage du Canada
Фелина Херманс

Доктор Фелина Херманс — доцент Лейденского университета в Нидерландах, где она проводит научные исследования языков программирования и методов обучения программированию. Она читает лекции в академии учителей Амстердамского свободного университета, специализируясь на дидактике компьютерных наук, а также преподает в средней школе Кралингена в Роттердаме.

Фелина является создателем языка программирования Hedy, предназначенного для начинающих программистов, а также ведет подкаст Software Engineering Radio, один из крупнейших интернет-подкастов о программном обеспечении.

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

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

От автора……………………………………………………………………………………………….. 15

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

О книге………………………………………………………………………………………………….. 19

Структура книги………………………………………………………………………………………………………………………… 19

Дискуссионный форум liveBook……………………………………………………………………………………………….. 20

Об авторе……………………………………………………………………………………………….. 21

Об обложке…………………………………………………………………………………………….. 23

Часть I. Об улучшении навыков чтения кода…………………….. 25

Глава 1. Определение вашего типа замешательства при кодировании….. 27

1.1. Разные типы замешательства в коде…………………………………………………………………………………. 28

1.1.1. Первый тип замешательства — недостаток знаний……………………………………………… 29

1.1.2. Второй тип замешательства — недостаток информации…………………………………….. 29

1.1.3. Третий тип замешательства — недостаток вычислительной мощности…………….. 30

1.2. Различные когнитивные процессы, влияющие на процесс кодирования………………………. 31

1.2.1. Долговременная память и программирование………………………………………………………. 31

Программа на APL с точки зрения долговременной памяти……………………………….. 32

1.2.2. Кратковременная память и программирование…………………………………………………….. 32

Программа на Java с точки зрения кратковременной памяти…………………………….. 32

1.2.3. Рабочая память и программирование…………………………………………………………………….. 33

Программа на BASIC с точки зрения рабочей памяти………………………………………… 33

1.3. Совместная работа когнитивных процессов……………………………………………………………………. 34

1.3.1. Краткое описание того, как когнитивные процессы взаимодействуют
друг с другом………………………………………………………………………………………………………………………. 34

1.3.2. Когнитивные процессы и программирование……………………………………………………….. 35

Выводы……………………………………………………………………………………………………………………………………….. 37

Глава 2. Скорочтение кода…………………………………………………………………….. 39

2.1. Быстрое чтение кода…………………………………………………………………………………………………………… 40

2.1.1. Что только что происходило в вашем мозге………………………………………………………….. 41

2.1.2. Перепроверка воспроизведенного кода…………………………………………………………………. 42

Вторая попытка воспроизведения кода………………………………………………………………… 43

2.1.3. Перепроверка воспроизведенного………………………………………………………………………….. 44

2.1.4. Почему читать незнакомый код так сложно………………………………………………………….. 44

2.2. Преодоление лимитов памяти……………………………………………………………………………………………. 45

2.2.1. Сила чанков………………………………………………………………………………………………………………. 45

Чанки кода……………………………………………………………………………………………………………….. 48

2.2.2. Опытные программисты запоминают код лучше начинающих программистов.. 48

2.3. Вы видите намного больше кода, чем можете прочитать……………………………………………….. 49

2.3.1. Иконическая память…………………………………………………………………………………………………. 50

Иконическая память и код………………………………………………………………………………………. 51

2.3.2. Это не то, что вы помните; это то, как вы запоминаете………………………………………… 51

Как написать код, который можно разделить на чанки………………………………………. 52

Используйте паттерны проектирования……………………………………………………………….. 53

Пишите комментарии………………………………………………………………………………………………. 54

Оставляйте «маячки»………………………………………………………………………………………………. 55

2.3.3. Применяйте чанки…………………………………………………………………………………………………….. 58

Выводы……………………………………………………………………………………………………………………………………….. 59

Глава 3. Как быстро выучить синтаксис……………………………………………….. 61

3.1. Советы по запоминанию синтаксиса………………………………………………………………………………… 62

3.1.1. Отвлечение снижает производительность……………………………………………………………… 62

3.2. Как быстро выучить синтаксис с использованием карточек………………………………………….. 63

3.2.1. Когда использовать карточки…………………………………………………………………………………. 64

3.2.2. Расширяем набор карточек……………………………………………………………………………………… 64

3.2.3. Убираем ненужные карточки………………………………………………………………………………….. 64

3.3. Как не забывать информацию……………………………………………………………………………………………. 65

3.3.1. Почему мы забываем……………………………………………………………………………………………….. 65

Иерархия и сеть……………………………………………………………………………………………………….. 66

Кривая забывания……………………………………………………………………………………………………. 66

3.3.2. Интервальное повторение……………………………………………………………………………………….. 67

3.4. Как запомнить синтаксис надолго…………………………………………………………………………………….. 69

3.4.1. Два способа запоминания информации…………………………………………………………………. 69

Уровень хранения……………………………………………………………………………………………………. 69

Уровень воспроизведения……………………………………………………………………………………….. 69

3.4.2. Просто увидеть недостаточно………………………………………………………………………………… 70

3.4.3. Воспоминания укрепляют память…………………………………………………………………………… 70

3.4.4. Укрепление памяти путем активного мышления…………………………………………………… 71

Схемы……………………………………………………………………………………………………………………….. 72

Проработка для запоминания концепций программирования……………………………. 73

Выводы……………………………………………………………………………………………………………………………………….. 74

Глава 4. Как читать сложный код………………………………………………………….. 75

4.1. Почему так тяжело понимать сложный код……………………………………………………………………… 76

4.1.1. Чем друг от друга отличаются рабочая память и кратковременная память………. 77

4.1.2. Типы когнитивной нагрузки и как они связаны с программированием………………. 78

Внутренняя когнитивная нагрузка при чтении кода……………………………………………. 78

Внешняя когнитивная нагрузка при чтении кода…………………………………………………. 79

4.2. Способы снижения когнитивной нагрузки……………………………………………………………………….. 80

4.2.1. Рефакторинг………………………………………………………………………………………………………………. 80

4.2.2. Замена незнакомых языковых конструкций………………………………………………………….. 82

Лямбда-функции………………………………………………………………………………………………………. 82

Генератор списков…………………………………………………………………………………………………… 83

Тернарные операторы…………………………………………………………………………………………….. 84

4.2.3. Синонимизация — отличное дополнение к дидактическим карточкам……………… 85

4.3. Вспомогательные средства при перегрузке рабочей памяти…………………………………………. 85

4.3.1. Создание графа зависимостей………………………………………………………………………………… 86

4.3.2. Использование таблицы состояний………………………………………………………………………… 88

4.3.3. Сочетание графов зависимостей и таблиц состояний………………………………………….. 91

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

Часть II. Продолжаем думать о коде………………………………………. 95

Глава 5. Совершенствуем навыки углубленного понимания кода…………. 97

5.1. Роли переменных………………………………………………………………………………………………………………… 98

5.1.1. Разные переменные выполняют разные действия…………………………………………………. 98

5.1.2. Одиннадцать ролей, охватывающие почти все переменные……………………………….. 99

5.2. Роли и принципы……………………………………………………………………………………………………………….. 101

5.2.1. Польза ролей…………………………………………………………………………………………………………… 102

Практические советы по работе с ролями переменных…………………………………….. 103

5.2.2. Венгерская нотация……………………………………………………………………………………………….. 104

Системная и прикладная венгерские нотации……………………………………………………. 104

5.3. Углубленное понимание программ…………………………………………………………………………………. 106

5.3.1. Понимание текста и понимание плана…………………………………………………………………. 106

5.3.2. Этапы понимания программы………………………………………………………………………………. 106

Применение этапов углубленного понимания……………………………………………………. 107

5.4. Чтение кода как обычного текста……………………………………………………………………………………. 109

5.4.1. Что происходит в мозге при чтении кода…………………………………………………………….. 110

Поля Бродмана………………………………………………………………………………………………………. 110

Показания фМРТ……………………………………………………………………………………………………. 111

5.4.2. Если вы можете выучить французский, то сможете выучить и Python……………… 111

Как люди читают код……………………………………………………………………………………………. 113

Перед тем как читать код, программисты сканируют его…………………………………. 114

Начинающие и опытные программисты читают код по-разному……………………. 114

5.5. Стратегии понимания текста, которые можно применить к коду………………………………… 115

5.5.1. Активация пассивных знаний……………………………………………………………………………….. 116

5.5.2. Наблюдение……………………………………………………………………………………………………………. 116

5.5.3. Определение важности разных строк кода………………………………………………………….. 117

5.5.4. Предположения о значении имен переменных……………………………………………………. 118

5.5.5. Визуализация………………………………………………………………………………………………………….. 119

Таблица операций…………………………………………………………………………………………………. 119

5.5.6. Постановка вопросов…………………………………………………………………………………………….. 120

5.5.7. Резюмирование кода………………………………………………………………………………………………. 121

Выводы……………………………………………………………………………………………………………………………………… 122

Глава 6. Совершенствуем навыки решения задач программирования…. 123

6.1. Использование моделей для размышлений о коде………………………………………………………… 124

6.1.1. Преимущества использования моделей……………………………………………………………….. 124

Не все модели одинаково полезны………………………………………………………………………. 125

 

6.2. Ментальные модели…………………………………………………………………………………………………………. 126

6.2.1. Подробное исследование ментальных моделей………………………………………………….. 128

6.2.2. Изучение новых ментальных моделей…………………………………………………………………. 129

6.2.3. Как эффективно использовать ментальные модели во время размышлений о коде 130

Ментальные модели в рабочей памяти……………………………………………………………….. 130

Точные модели работают лучше…………………………………………………………………………. 131

Создание ментальных моделей исходной программы в рабочей памяти……….. 131

Ментальные модели в долговременной памяти…………………………………………………. 132

Создание ментальных моделей исходной программы в долговременной памяти 133

Ментальные модели, одновременно хранящиеся в долговременной
и рабочей памяти…………………………………………………………………………………………………… 134

6.3. Условные машины…………………………………………………………………………………………………………….. 135

6.3.1. Что такое условная машина………………………………………………………………………………….. 135

6.3.2. Примеры условных машин……………………………………………………………………………………. 136

6.3.3. Разные уровни условных машин…………………………………………………………………………… 137

6.4. Условные машины и язык…………………………………………………………………………………………………. 138

6.4.1. Расширяем набор условных машин……………………………………………………………………… 139

6.4.2. Разные условные машины могут создать взаимно конфликтующие ментальные модели   140

6.5. Условные машины и схемы……………………………………………………………………………………………… 141

6.5.1. Почему схема важна………………………………………………………………………………………………. 141

6.5.2. Являются ли условные машины семантическими……………………………………………….. 142

Выводы……………………………………………………………………………………………………………………………………… 142

Глава 7. Заблуждения…………………………………………………………………………… 143

7.1. Почему второй язык программирования выучить намного проще, чем первый…………. 144

7.1.1. Как увеличить шанс воспользоваться знаниями по программированию…………. 146

7.1.2. Разные виды трансференции…………………………………………………………………………………. 147

Осознанная и неосознанная трансференция………………………………………………………. 147

Близкая и дальняя трансференция……………………………………………………………………….. 147

7.1.3. Знания: добро или зло?………………………………………………………………………………………….. 148

7.1.4. Сложности трансференции……………………………………………………………………………………. 149

7.2. Заблуждения. Ошибки в мышлении………………………………………………………………………………… 150

7.2.1. Исправление заблуждений путем концептуальных замен…………………………………. 152

7.2.2. Подавление заблуждений……………………………………………………………………………………… 152

7.2.3. Заблуждения о языках программирования………………………………………………………….. 153

7.2.4. Предотвращение заблуждений при изучении нового языка
программирования…………………………………………………………………………………………………………… 155

7.2.5. Выявление заблуждений в новой базе кода…………………………………………………………. 156

Выводы……………………………………………………………………………………………………………………………………… 157

Часть III. О хорошем коде………………………………………………………….. 159

Глава 8. Совершенствуем навыки присваивания имен………………………… 161

8.1. Почему присваивание имен так важно……………………………………………………………………………. 162

8.1.1. Почему присваивание имени так важно………………………………………………………………. 162

Имена составляют существенную часть кодовой базы…………………………………….. 163

Имена играют роль в обзорах кода……………………………………………………………………… 163

Имена — это самая удобная форма документации……………………………………………. 163

Имена могут служить маячками…………………………………………………………………………… 163

8.1.2. Разные точки зрения на присваивание имен………………………………………………………… 163

Хорошее имя можно определить синтаксически………………………………………………… 164

Имена во всей базе кода должны быть единообразны………………………………………. 165

8.1.3. Важно грамотно подбирать имена……………………………………………………………………….. 166

Заключения о практике присваивания имен……………………………………………………….. 167

8.2. Когнитивные аспекты присваивания имен……………………………………………………………………… 167

8.2.1. Форматирование имен поддерживает кратковременную память……………………… 168

8.2.2. Понятные имена лучше закрепляются в долговременной памяти…………………….. 169

8.2.3. Полезная информация в именах переменных………………………………………………………. 170

8.2.4. Когда стоит оценивать качество имен…………………………………………………………………. 171

8.3. Какие типы имен проще всего понимать………………………………………………………………………… 172

8.3.1. Использовать аббревиатуры или нет?…………………………………………………………………. 172

Однобуквенные имена переменных…………………………………………………………………….. 173

8.3.2. Змеиный или верблюжий регистры?…………………………………………………………………….. 176

8.4. Влияние имен на ошибки кода…………………………………………………………………………………………. 177

8.4.1. В коде с некачественными именами больше ошибок………………………………………….. 177

8.5. Как выбирать хорошие имена…………………………………………………………………………………………. 178

8.5.1. Шаблоны имен……………………………………………………………………………………………………….. 178

8.5.2. Трехступенчатая модель Фейтельсона для хороших имен переменных………….. 180

Трехступенчатая модель во всех деталях…………………………………………………………… 181

Успех трехступенчатой модели Фейтельсона……………………………………………………. 181

Выводы……………………………………………………………………………………………………………………………………… 182

Глава 9. Боремся с плохим кодом и когнитивной нагрузкой.
Две концепции……………………………………………………………………………………… 183

9.1. Почему код с запахами кода создает большую когнитивную нагрузку……………………… 184

9.1.1. Краткая информации о запахах кода…………………………………………………………………… 184

Запахи кода на уровне метода…………………………………………………………………………….. 186

Запахи кода на уровне класса……………………………………………………………………………… 186

Запахи кода на уровне базы кода……………………………………………………………………….. 187

Влияние запахов кода…………………………………………………………………………………………… 187

9.1.2. Как запахи кода вредят мышлению……………………………………………………………………… 188

«Длинный список параметров», сложные «Операторы переключения» — перегрузка рабочей памяти      188

«Всемогущий класс», «Длинный метод» — невозможно эффективно разбить код на чанки             189

«Клоны кода» — невозможно правильно разбить код на чанки………………………. 189

9.2. Зависимость когнитивной нагрузки от плохих имен……………………………………………………… 190

9.2.1. Лингвистические антипаттерны проектирования……………………………………………….. 190

9.2.2. Измерение когнитивной нагрузки…………………………………………………………………………. 191

Шкала Пааса для когнитивной нагрузки…………………………………………………………….. 192

Измерение нагрузки по глазам……………………………………………………………………………… 193

Измерение нагрузки по коже………………………………………………………………………………… 193

Измерение нагрузки по мозгу……………………………………………………………………………….. 194

Запись биотоков мозга………………………………………………………………………………………….. 194

Функциональная fNIRS-томография и программирование………………………………. 195

9.2.3. Лингвистические антипаттерны и когнитивная нагрузка…………………………………… 195

9.2.4. Почему лингвистические антипаттерны вызывают замешательство……………….. 196

Выводы……………………………………………………………………………………………………………………………………… 197

Глава 10. Совершенствуем навыки решения сложных задач……………….. 199

10.1. Что такое решение задач……………………………………………………………………………………………….. 200

10.1.1. Элементы решения задач…………………………………………………………………………………… 200

10.1.2. Пространство состояний……………………………………………………………………………………. 200

10.2. Какую роль при решении задач программирования играет
долговременная память………………………………………………………………………………………………….. 201

10.2.1. Решение задачи — это отдельный когнитивный процесс?……………………………… 201

При решении задач вы используете долговременную память……………………….. 202

Вашему мозгу проще решить знакомые задачи………………………………………………. 202

10.2.2. Как научить долговременную память решать задачи…………………………………….. 203

10.2.3. Два вида памяти, наиболее существенные при решении задачи…………………… 203

Какие виды памяти играют роль при решении задач…………………………………….. 204

Потеря знаний или навыков………………………………………………………………………………. 205

10.3. Автоматизация: создание имплицитной памяти………………………………………………………….. 206

10.3.1. Имплицитная память с течением времени………………………………………………………… 207

Когнитивный этап………………………………………………………………………………………………. 208

Ассоциативный этап………………………………………………………………………………………….. 208

Автономный этап……………………………………………………………………………………………….. 209

10.3.2. Почему автоматизация помогает программировать быстрее………………………… 210

10.3.3. Улучшение имплицитной памяти……………………………………………………………………… 211

10.4. Обучение на основе кода и его объяснения………………………………………………………………….. 212

10.4.1. Новый вид когнитивной нагрузки: соответствующая нагрузка……………………… 213

10.4.2. Примеры с решением на практике…………………………………………………………………….. 215

Работайте вместе с коллегой…………………………………………………………………………….. 215

Используйте GitHub…………………………………………………………………………………………… 215

Читайте книги или блоги об исходном коде…………………………………………………….. 216

Выводы……………………………………………………………………………………………………………………………………… 216

Часть IV. О совместной работе над кодом…………………………. 217

Глава 11. Процесс написания кода………………………………………………………. 219

11.1. Различные активности, выполняемые во время программирования………………………….. 220

11.1.1. Поиск……………………………………………………………………………………………………………………. 220

11.1.2. Осмысление…………………………………………………………………………………………………………. 221

11.1.3. Переписывание……………………………………………………………………………………………………. 221

11.1.4. Наращивание………………………………………………………………………………………………………. 222

11.1.5. Исследование………………………………………………………………………………………………………. 222

11.1.6. А как же отладка?……………………………………………………………………………………………….. 223

11.2. Программист отвлекся……………………………………………………………………………………………………. 223

11.2.1. Задачи программирования нуждаются в «разогреве»…………………………………….. 224

11.2.2. Что происходит после отвлечения……………………………………………………………………. 225

11.2.3. Как подготовиться к отвлечению………………………………………………………………………. 225

Сохраняйте воображаемую модель…………………………………………………………………. 225

Помогите своей проспективной памяти……………………………………………………………. 226

Определитесь с промежуточными целями……………………………………………………….. 228

11.2.4. Когда отвлекать программиста…………………………………………………………………………. 228

11.2.5. Пара слов о многозадачности…………………………………………………………………………… 230

Многозадачность и автоматизация………………………………………………………………….. 230

Исследования многозадачности……………………………………………………………………….. 231

Выводы……………………………………………………………………………………………………………………………………… 231

Глава 12. Проектирование и усовершенствование больших систем……… 233

12.1. Проверка свойств базы кода………………………………………………………………………………………….. 234

12.1.1. Когнитивные измерения……………………………………………………………………………………… 234

Подверженность ошибкам…………………………………………………………………………………. 235

Согласованность………………………………………………………………………………………………… 236

Размытость………………………………………………………………………………………………………….. 236

Скрытые зависимости………………………………………………………………………………………… 237

Преждевременная фиксация решения………………………………………………………………. 238

Вязкость………………………………………………………………………………………………………………. 238

Поэтапное оценивание………………………………………………………………………………………. 239

Выразительность ролей…………………………………………………………………………………….. 239

Близость соответствия……………………………………………………………………………………….. 240

Трудность мыслительных операций………………………………………………………………… 241

Вторичные обозначения……………………………………………………………………………………. 242

Градиент абстракции………………………………………………………………………………………… 242

Наглядность……………………………………………………………………………………………………….. 243

12.1.2. Использование когнитивных измерений базы кода
для улучшения базы кода………………………………………………………………………………………………. 243

12.1.3. Проектные маневры и их плюсы и минусы………………………………………………………. 244

Подверженность ошибкам и вязкость………………………………………………………………. 244

Преждевременная фиксация решения и поэтапное оценивание
против подверженности ошибкам…………………………………………………………………….. 245

Выразительность ролей и размытость…………………………………………………………….. 245

12.2. Измерения и активности…………………………………………………………………………………………………. 245

12.2.1. Влияние измерений на разные активности………………………………………………………. 245

Поиск…………………………………………………………………………………………………………………… 245

Осмысление………………………………………………………………………………………………………… 246

Переписывание…………………………………………………………………………………………………… 246

Наращивание……………………………………………………………………………………………………… 246

Исследование……………………………………………………………………………………………………… 247

12.2.2. Изменение базы кода под ожидаемые активности………………………………………….. 247

Выводы……………………………………………………………………………………………………………………………………… 247

Глава 13. Как ввести новых программистов в курс дела………………………. 249

13.1. Проблемы процесса адаптации…………………………………………………………………………………….. 249

13.2. Различия между профессионалами и новичками…………………………………………………………. 251

13.2.1. Поведение новичка более подробно…………………………………………………………………. 251

Оригинальная концепция Пиаже………………………………………………………………………. 251

Концепция неопиажизма для программирования…………………………………………… 252

При изучении новой информации вы можете временно забывать
некоторые вещи………………………………………………………………………………………………….. 255

13.2.2. Разница между вещественным и абстрактным видением концепций…………….. 255

13.3. Активности для улучшения процесса адаптации………………………………………………………… 258

13.3.1. Ограничение заданий до одной активности…………………………………………………….. 258

13.3.2. Поддержка памяти новичка……………………………………………………………………………….. 259

Поддержка долговременной памяти: объяснение
релевантной информации………………………………………………………………………………….. 259

Поддержка кратковременной памяти: ставьте небольшие
конкретные задачи…………………………………………………………………………………………….. 260

Поддержка рабочей памяти: используйте диаграммы…………………………………… 261

13.3.3. Совместное чтение кода…………………………………………………………………………………….. 261

Активация……………………………………………………………………………………………………………. 262

Определение важности………………………………………………………………………………………. 262

Постановка предположений……………………………………………………………………………… 262

Наблюдение……………………………………………………………………………………………………….. 262

Визуализация……………………………………………………………………………………………………… 263

Постановка вопросов…………………………………………………………………………………………. 263

Резюмирование…………………………………………………………………………………………………… 263

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

Эпилог. Пара слов перед прощанием……………………………………………………. 265

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

 

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

Новая книга: “Python 3 и PyQt 6. Разработка приложений”

Python 3 и PyQt 6. Разработка приложений

Представляем новинку: книгу Владимира Дронова и Николая Прохоренка “Python 3 и PyQt 6. Разработка приложений“.

В книге Описан язык Python 3: типы данных, операторы, условия ветвления и выбора, циклы, регулярные выражения, функции, классы, работа с файлами и каталогами, взаимодействие с механизмами Windows, часто используемые модули стандартной библиотеки. Особое внимание уделено библиотеке PyQt, позволяющей создавать приложения с графическим интерфейсом. Описаны средства для создания и вывода окон, основных компонентов (кнопок, полей, полей, списков, таблиц, меню, панелей инструментов и др.). Рассмотрена обработка событий и сигналов, разработка многопоточных программ, работа с базами данных, вывод графики, воспроизведение мультимедиа, запись аудио, видео и фото, печать документов, экспорт их в формат Adobe PDF и сохранения настроек программ. Дан пример полнофункционального приложения для создания и решения головоломок судоку. На сайте издательства размещен электронный архив со всеми примерами из книги.

Вы изучите:

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

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

Python………………………………………………………………………………………………………………………………………….. 15

PyQt……………………………………………………………………………………………………………………………………………… 16

Использованное ПО…………………………………………………………………………………………………………………… 16

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

Часть I. Основы языка Python………………………………………………….. 19

Глава 1. Первые шаги……………………………………………………………………………. 21

1.1. Установка Python………………………………………………………………………………………………………………… 21

1.2. Интерактивный режим Python. Утилита IDLE…………………………………………………………………. 24

1.3. Введение в Python-программирование……………………………………………………………………………… 25

1.4. Принципы написания Python-программ……………………………………………………………………………. 27

1.4.1. Комментарии и строки документирования…………………………………………………………….. 30

1.4.2. Кодировки, поддерживаемые Python………………………………………………………………………. 31

1.4.3. Подготовка Python-программ для выполнения в UNIX…………………………………………. 31

1.5. Дополнительные возможности IDLE………………………………………………………………………………… 32

1.6. Вывод данных……………………………………………………………………………………………………………………… 33

1.7. Ввод данных………………………………………………………………………………………………………………………… 35

1.8. Утилита pip: установка дополнительных библиотек……………………………………………………… 37

1.9. Доступ к документации………………………………………………………………………………………………………. 42

1.10. Компиляция Python-файлов……………………………………………………………………………………………… 44

Глава 2. Переменные и типы данных…………………………………………………….. 46

2.1. Переменные…………………………………………………………………………………………………………………………. 46

2.2. Типы данных. Понятие объекта и ссылки…………………………………………………………………………. 47

2.3. Присваивание значений переменным……………………………………………………………………………….. 50

2.4. Проверка типа данных……………………………………………………………………………………………………….. 52

2.5. Преобразование типов данных………………………………………………………………………………………….. 53

2.6. Удаление переменных………………………………………………………………………………………………………… 56

Глава 3. Операторы……………………………………………………………………………….. 57

3.1. Математические операторы………………………………………………………………………………………………. 57

3.2. Двоичные операторы………………………………………………………………………………………………………….. 59

3.3. Операторы для работы с последовательностями……………………………………………………………. 60

3.4. Операторы присваивания…………………………………………………………………………………………………… 61

3.5. Пустой оператор…………………………………………………………………………………………………………………. 63

3.6. Приоритет операторов……………………………………………………………………………………………………….. 63

Глава 4. Инструкции ветвления, выбора и циклы…………………………………. 65

4.1. Операторы сравнения…………………………………………………………………………………………………………. 66

4.2. Инструкция ветвления………………………………………………………………………………………………………… 68

4.3. Инструкция выбора…………………………………………………………………………………………………………….. 71

4.4. Цикл перебора последовательности…………………………………………………………………………………. 77

4.5. Цикл с условием………………………………………………………………………………………………………………….. 78

4.6. Оператор continue: переход на следующую итерацию цикла……………………………………….. 79

4.7. Оператор break: прерывание цикла………………………………………………………………………………….. 79

4.8. Оператор присваивания в составе инструкции………………………………………………………………… 80

Глава 5. Числа……………………………………………………………………………………….. 82

5.1. Запись чисел………………………………………………………………………………………………………………………… 82

5.2. Обработка чисел…………………………………………………………………………………………………………………. 84

5.3. Математические функции………………………………………………………………………………………………….. 87

5.4. Генерирование случайных чисел……………………………………………………………………………………… 89

Глава 6. Строки и двоичные данные……………………………………………………… 92

6.1. Создание строк……………………………………………………………………………………………………………………. 92

6.1.1. Специальные символы……………………………………………………………………………………………… 94

6.1.2. Необрабатываемые строки……………………………………………………………………………………… 95

6.2. Операции над строками……………………………………………………………………………………………………… 96

6.3. Форматирование строк………………………………………………………………………………………………………. 98

6.4. Метод format()…………………………………………………………………………………………………………………… 104

6.4.1. Форматируемые строки………………………………………………………………………………………….. 108

6.5. Функции и методы для работы со строками…………………………………………………………………… 109

6.6. Настройка локали…………………………………………………………………………………………………………….. 112

6.7. Изменение регистра символов…………………………………………………………………………………………. 113

6.8. Функции для работы с символами…………………………………………………………………………………… 114

6.9. Поиск и замена в строке……………………………………………………………………………………………………. 114

6.10. Проверка содержимого строки………………………………………………………………………………………. 118

6.11. Двоичные данные типа bytes…………………………………………………………………………………………. 121

6.12. Двоичные данные типа bytearray………………………………………………………………………………….. 125

6.13. Сериализация и десериализация значений………………………………………………………………….. 128

6.14. Хеширование значений………………………………………………………………………………………………….. 129

Глава 7. Регулярные выражения………………………………………………………….. 131

7.1. Синтаксис регулярных выражений…………………………………………………………………………………. 131

7.2. Поиск первого совпадения с шаблоном………………………………………………………………………….. 140

7.3. Поиск всех совпадений с шаблоном……………………………………………………………………………….. 145

7.4. Замена в строке…………………………………………………………………………………………………………………. 146

7.5. Прочие функции и методы……………………………………………………………………………………………….. 148

Глава 8. Списки, кортежи, множества и диапазоны…………………………….. 150

8.1. Создание списков……………………………………………………………………………………………………………… 150

8.2. Операции над списками……………………………………………………………………………………………………. 152

8.3. Многомерные списки………………………………………………………………………………………………………… 155

8.4. Перебор списков……………………………………………………………………………………………………………….. 155

8.5. Генераторы списков и выражения-генераторы……………………………………………………………… 156

8.6. Функции map(), zip(), filter() и reduce()…………………………………………………………………………….. 158

8.7. Добавление и удаление элементов списка……………………………………………………………………… 161

8.8. Поиск элемента в списке и получение сведений об элементах списка………………………… 163

8.9. Переворачивание и перемешивание списка…………………………………………………………………… 164

8.10. Выбор элементов списка случайным образом…………………………………………………………….. 165

8.11. Сортировка списка…………………………………………………………………………………………………………. 166

8.12. Заполнение списка числами………………………………………………………………………………………….. 168

8.13. Преобразование списка в строку…………………………………………………………………………………… 168

8.14. Кортежи…………………………………………………………………………………………………………………………… 169

8.15. Множества, изменяемые и неизменяемые…………………………………………………………………….. 170

8.16. Диапазоны……………………………………………………………………………………………………………………….. 175

8.17. Модуль itertools………………………………………………………………………………………………………………. 177

8.17.1. Генерирование неопределенного количества значений…………………………………. 177

8.17.2. Генерирование комбинаций значений……………………………………………………………… 178

8.17.3. Фильтрация элементов последовательности…………………………………………………… 180

8.17.4. Прочие функции………………………………………………………………………………………………….. 181

Глава 9. Словари………………………………………………………………………………….. 185

9.1. Создание словаря……………………………………………………………………………………………………………… 185

9.2. Операции над словарями…………………………………………………………………………………………………. 187

9.3. Перебор элементов словаря…………………………………………………………………………………………….. 189

9.4. Методы и функции для работы со словарями………………………………………………………………… 190

9.5. Генераторы словарей……………………………………………………………………………………………………….. 193

Глава 10. Работа с датой и временем……………………………………………………. 194

10.1. Получение текущих даты и времени…………………………………………………………………………….. 194

10.2. Форматирование даты и времени………………………………………………………………………………….. 196

10.3. Приостановка выполнения программы………………………………………………………………………… 198

10.4. Значения даты и времени……………………………………………………………………………………………….. 198

10.4.1. Временне промежутки……………………………………………………………………………………… 198

10.4.2. Значения даты…………………………………………………………………………………………………….. 201

10.4.3. Значения времени……………………………………………………………………………………………….. 204

10.4.4. Временне отметки…………………………………………………………………………………………….. 207

10.5. Вывод календаря…………………………………………………………………………………………………………….. 213

10.5.1. Вывод календаря в текстовом виде…………………………………………………………………… 213

10.5.2. Вывод календаря в формате HTML………………………………………………………………….. 215

10.5.3. Другие полезные функции………………………………………………………………………………….. 217

10.6. Измерение времени выполнения фрагментов кода………………………………………………………. 220

Глава 11. Функции………………………………………………………………………………. 222

11.1. Определение и вызов функции……………………………………………………………………………………….. 222

11.1.1. Расположение определений функций……………………………………………………………….. 224

11.1.2. Локальные и глобальные переменные……………………………………………………………… 225

11.1.3. Позиционные и именованные параметры………………………………………………………… 228

11.1.4. Необязательные параметры………………………………………………………………………………. 230

11.1.5. Произвольное количество параметров…………………………………………………………….. 231

11.1.6. Распаковка последовательностей и отображений………………………………………….. 233

11.1.7. Функция как значение. Функции обратного вызова………………………………………… 233

11.2. Анонимные функции……………………………………………………………………………………………………….. 234

11.3. Функции-генераторы………………………………………………………………………………………………………. 236

11.4. Декораторы функций……………………………………………………………………………………………………… 237

11.5. Рекурсия…………………………………………………………………………………………………………………………… 239

11.6. Вложенные функции……………………………………………………………………………………………………….. 240

11.7. Аннотации функций………………………………………………………………………………………………………… 242

Глава 12. Модули, пакеты и импорт…………………………………………………….. 243

12.1. Импорт модуля целиком…………………………………………………………………………………………………. 243

12.2. Импорт отдельных идентификаторов…………………………………………………………………………… 246

12.2.1. Указание идентификаторов, доступных для импорта…………………………………….. 248

12.2.2. Управление доступом к идентификаторам………………………………………………………. 248

12.3. Пути поиска модулей……………………………………………………………………………………………………… 249

12.4. Перезагрузка модулей……………………………………………………………………………………………………. 251

12.5. Пакеты……………………………………………………………………………………………………………………………… 252

Глава 13. Объекты и классы………………………………………………………………… 256

13.1. Определение классов, создание объектов и работа с ними………………………………………… 256

13.2. Атрибуты класса…………………………………………………………………………………………………………….. 259

13.3. Конструкторы и деструкторы……………………………………………………………………………………….. 260

13.4. Наследование………………………………………………………………………………………………………………….. 261

13.4.1. Множественное наследование………………………………………………………………………….. 263

13.4.1.1. Примеси и их использование………………………………………………………………. 265

13.5. Специальные методы……………………………………………………………………………………………………… 266

13.6. Перегрузка операторов………………………………………………………………………………………………….. 269

13.7. Статические методы и методы класса………………………………………………………………………….. 271

13.8. Абстрактные методы………………………………………………………………………………………………………. 272

13.9. Закрытые атрибуты и методы……………………………………………………………………………………….. 273

13.10. Свойства………………………………………………………………………………………………………………………… 274

13.11. Декораторы классов…………………………………………………………………………………………………….. 276

Глава 14. Исключения и их обработка…………………………………………………. 278

14.1. Обработчики исключений……………………………………………………………………………………………… 279

14.2. Обработчики контекстов………………………………………………………………………………………………… 283

14.3. Классы встроенных исключений…………………………………………………………………………………… 285

14.4. Генерирование исключений…………………………………………………………………………………………… 287

14.5. Пользовательские исключения………………………………………………………………………………………. 289

14.6. Проверочная инструкция……………………………………………………………………………………………….. 290

Глава 15. Итераторы, контейнеры и перечисления………………………………. 292

15.1. Итераторы……………………………………………………………………………………………………………………….. 292

15.2. Контейнеры……………………………………………………………………………………………………………………… 293

15.2.1. Контейнеры-последовательности…………………………………………………………………….. 293

15.2.2. Контейнеры-отображения…………………………………………………………………………………. 295

15.3. Перечисления………………………………………………………………………………………………………………….. 296

Глава 16. Работа с файлами и каталогами……………………………………………. 302

16.1. Открытие файлов…………………………………………………………………………………………………………….. 302

16.1.1. Указание путей к файлам и каталогам……………………………………………………………… 305

16.1.2. Текущий рабочий каталог…………………………………………………………………………………. 306

16.2. Чтение и запись данных: объектные инструменты……………………………………………………… 307

16.3. Чтение и запись данных: низкоуровневые инструменты…………………………………………….. 313

16.4. Файлы в памяти………………………………………………………………………………………………………………. 315

16.5. Задание прав доступа к файлам и каталогам………………………………………………………………. 319

16.6. Работа с файлами……………………………………………………………………………………………………………. 321

16.7. Работа с путями………………………………………………………………………………………………………………. 325

16.8. Перенаправление ввода/вывода……………………………………………………………………………………. 326

16.9. Сохранение объектов в файлах…………………………………………………………………………………….. 328

16.10. Работа с каталогами…………………………………………………………………………………………………….. 331

16.10.1. Функция scandir()……………………………………………………………………………………………… 335

16.11. Исключения, генерируемые файловыми операциями……………………………………………….. 337

Глава 17. Работа с механизмами Windows…………………………………………….. 338

17.1. Работа с реестром…………………………………………………………………………………………………………… 338

17.1.1. Открытие и закрытие ветвей реестра………………………………………………………………… 339

17.1.2. Чтение и запись данных реестра……………………………………………………………………….. 340

17.1.3. Перебор элементов и вложенных ветвей реестра……………………………………………. 343

17.2. Получение путей к системным каталогам……………………………………………………………………. 344

17.3. Создание ярлыков…………………………………………………………………………………………………………… 345

Часть II. Библиотека PyQt 6………………………………………………………. 347

Глава 18. Введение в PyQt 6…………………………………………………………………. 349

18.1. Установка PyQt 6…………………………………………………………………………………………………………….. 349

18.2. Первая оконная программа……………………………………………………………………………………………. 349

18.3. Структура PyQt-программы…………………………………………………………………………………………… 350

18.4. ООП-стиль создания окна………………………………………………………………………………………………. 352

18.5. Создание окон с помощью программы Qt Designer……………………………………………………… 356

18.5.1. Создание окон…………………………………………………………………………………………………….. 356

18.5.2. Использование UI-файла в программе……………………………………………………………… 359

18.5.3. Преобразование UI-файла в модуль Python…………………………………………………….. 361

18.6. Модули PyQt 6………………………………………………………………………………………………………………… 362

18.7. Управление циклом обработки событий………………………………………………………………………. 363

18.8. Многопоточные программы………………………………………………………………………………………….. 365

18.8.1. Потоки………………………………………………………………………………………………………………….. 365

18.8.2. Управление потоками………………………………………………………………………………………… 368

18.8.3. Очереди……………………………………………………………………………………………………………….. 372

18.8.4. Блокировщики и автоблокировщики………………………………………………………………… 376

18.9. Вывод заставки……………………………………………………………………………………………………………….. 379

Глава 19. Окна…………………………………………………………………………………….. 382

19.1. Создание и вывод окон…………………………………………………………………………………………………… 382

19.1.1. Типы окон……………………………………………………………………………………………………………. 383

19.2. Размеры окон и управление ими……………………………………………………………………………………. 384

19.3. Местоположение окна и управление им………………………………………………………………………. 387

19.4. Классы, задающие координаты и размеры………………………………………………………………….. 390

19.4.1. Класс QPoint: координаты точки……………………………………………………………………… 390

19.4.2. Класс QSize: размеры прямоугольной области……………………………………………….. 391

19.4.3. Класс QRect: координаты и размеры прямоугольной области………………………. 393

19.5. Разворачивание и сворачивание окон………………………………………………………………………….. 399

19.6. Управление прозрачностью окна………………………………………………………………………………….. 401

19.7. Модальные окна……………………………………………………………………………………………………………… 401

19.8. Смена значка окна………………………………………………………………………………………………………….. 403

19.9. Изменение цвета фона окна……………………………………………………………………………………………. 404

19.10. Вывод изображения в качестве фона………………………………………………………………………….. 405

19.11. Окна произвольной формы…………………………………………………………………………………………… 406

19.12. Всплывающие и расширенные подсказки………………………………………………………………….. 408

19.13. Программное закрытие окна……………………………………………………………………………………….. 409

19.14. Использование таблиц стилей CSS для оформления окон………………………………………… 409

Глава 20. Обработка сигналов и событий…………………………………………….. 414

20.1. Назначение обработчиков сигналов…………………………………………………………………………….. 414

20.1.1. Слоты…………………………………………………………………………………………………………………… 417

20.1.2. Передача данных в обработчик сигнала…………………………………………………………. 418

20.2. Блокировка и удаление обработчиков сигналов…………………………………………………………. 419

20.3. Генерирование сигналов………………………………………………………………………………………………… 421

20.4. Пользовательские сигналы…………………………………………………………………………………………….. 421

20.5. Использование таймеров……………………………………………………………………………………………….. 423

20.6. Обработка всех событий………………………………………………………………………………………………… 426

20.7. События окна………………………………………………………………………………………………………………….. 429

20.7.1. Изменение состояния окна…………………………………………………………………………………. 429

20.7.2. Изменение местоположения и размеров окна………………………………………………….. 430

20.7.3. Перерисовка окна или его части……………………………………………………………………….. 431

20.7.4. Предотвращение закрытия окна……………………………………………………………………….. 431

20.8. События клавиатуры……………………………………………………………………………………………………… 432

20.8.1. Управление фокусом ввода……………………………………………………………………………….. 432

20.8.2. Назначение клавиш быстрого доступа…………………………………………………………….. 435

20.8.3. Нажатие и отпускание клавиш………………………………………………………………………….. 437

20.9. События мыши………………………………………………………………………………………………………………… 439

20.9.1. Нажатие и отпускание кнопок мыши……………………………………………………………….. 439

20.9.2. Перемещение курсора мыши……………………………………………………………………………… 440

20.9.3. Наведение и увод курсора мыши………………………………………………………………………. 441

20.9.4. Прокрутка колесика мыши………………………………………………………………………………… 441

20.9.5. Изменение курсора мыши………………………………………………………………………………….. 442

20.10. Операция перетаскивания (drag & drop)……………………………………………………………………… 443

20.10.1. Запуск перетаскивания…………………………………………………………………………………….. 443

20.10.1.1. Задание перетаскиваемых данных………………………………………………….. 445

20.10.2. Обработка перетаскивания и сброса……………………………………………………………… 446

20.11. Работа с буфером обмена…………………………………………………………………………………………….. 448

20.12. Фильтрация событий……………………………………………………………………………………………………. 449

20.13. Генерирование событий………………………………………………………………………………………………. 450

20.14. Пользовательские события………………………………………………………………………………………….. 450

Глава 21. Размещение компонентов в окнах. Контейнеры…………………… 451

21.1. Абсолютное позиционирование……………………………………………………………………………………. 451

21.2. Контейнерыстопки………………………………………………………………………………………………………… 452

21.3. Контейнер-сетка……………………………………………………………………………………………………………… 455

21.4. Контейнер-форма……………………………………………………………………………………………………………. 457

21.5. Стеки………………………………………………………………………………………………………………………………… 460

21.6. Управление размерами компонентов……………………………………………………………………………. 461

21.7. Группа……………………………………………………………………………………………………………………………… 462

21.8. Панель с рамкой……………………………………………………………………………………………………………… 464

21.9. Панель с вкладками………………………………………………………………………………………………………… 465

21.10. Аккордеон……………………………………………………………………………………………………………………… 469

21.11. Панель с изменяемыми областями………………………………………………………………………………. 471

21.12. Прокручиваемая панель………………………………………………………………………………………………. 473

Глава 22. Основные компоненты…………………………………………………………. 475

22.1. Надпись……………………………………………………………………………………………………………………………. 475

22.2. Кнопка……………………………………………………………………………………………………………………………… 477

22.3. Переключатель……………………………………………………………………………………………………………….. 479

22.4. Флажок…………………………………………………………………………………………………………………………….. 480

22.5. Поле ввода……………………………………………………………………………………………………………………….. 480

22.5.1. Основные методы и сигналы……………………………………………………………………………… 481

22.5.2. Ввод данных по маске………………………………………………………………………………………… 484

22.5.3. Контроль ввода с помощью валидаторов………………………………………………………… 485

22.6. Область редактирования……………………………………………………………………………………………….. 486

22.6.1. Основные методы и сигналы……………………………………………………………………………… 486

22.6.2. Задание параметров области редактирования……………………………………………….. 488

22.6.3. Указание параметров текста и фона…………………………………………………………………. 490

22.6.4. Класс QTextDocument…………………………………………………………………………………………. 491

22.6.5. Класс QTextCursor………………………………………………………………………………………………. 494

22.7. Текстовый браузер………………………………………………………………………………………………………….. 497

22.8. Поля для ввода целых и вещественных чисел……………………………………………………………… 499

22.9. Поля для ввода даты и времени…………………………………………………………………………………….. 501

22.10. Календарь……………………………………………………………………………………………………………………… 504

22.11. Семисегментный индикатор………………………………………………………………………………………… 506

22.12. Индикатор процесса…………………………………………………………………………………………………….. 507

22.13. Шкала с ползунком………………………………………………………………………………………………………. 508

22.14. Круговая шкала с ползунком………………………………………………………………………………………. 510

22.15. Полоса прокрутки…………………………………………………………………………………………………………. 511

22.16. Веб-браузер…………………………………………………………………………………………………………………… 511

Глава 23. Списки и таблицы………………………………………………………………… 516

23.1. Раскрывающийся список………………………………………………………………………………………………… 516

23.1.1. Добавление, изменение и удаление элементов………………………………………………… 516

23.1.2. Изменение параметров списка…………………………………………………………………………… 517

23.1.3. Поиск элементов…………………………………………………………………………………………………. 518

23.1.4. Сигналы……………………………………………………………………………………………………………….. 519

23.2. Список для выбора шрифта…………………………………………………………………………………………… 519

23.3. Роли элементов……………………………………………………………………………………………………………….. 520

23.4. Модели…………………………………………………………………………………………………………………………….. 521

23.4.1. Доступ к данным внутри модели………………………………………………………………………. 521

23.4.2. Класс QStringListModel……………………………………………………………………………………… 523

22.4.3. Класс QStandardItemModel………………………………………………………………………………… 524

23.4.4. Класс QStandardItem………………………………………………………………………………………….. 528

23.5. Представления………………………………………………………………………………………………………………… 531

23.5.1. Класс QAbstractItemView……………………………………………………………………………………. 532

23.5.2. Простой список…………………………………………………………………………………………………… 535

23.5.3. Таблица……………………………………………………………………………………………………………….. 537

23.5.4. Иерархический список……………………………………………………………………………………….. 539

23.5.5. Управление заголовками строк и столбцов……………………………………………………… 541

23.6. Управление выделением элементов………………………………………………………………………………. 544

22.7. Промежуточные модели…………………………………………………………………………………………………. 546

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

Глава 24. Работа с базами данных……………………………………………………….. 551

24.1. Соединение с базой данных…………………………………………………………………………………………… 551

24.2. Получение сведений о структуре таблиц……………………………………………………………………… 554

24.2.1. Получение сведений о таблицах……………………………………………………………………….. 554

24.2.2. Получение сведений о полях таблиц………………………………………………………………… 555

24.2.3. Получение сведений о ключевом индексе………………………………………………………… 556

24.2.4. Получение сведений об ошибке………………………………………………………………………… 556

24.3. Выполнение SQL-запросов и получение их результатов……………………………………………. 557

24.3.1. Выполнение запросов………………………………………………………………………………………… 557

24.3.2. Обработка результатов выполнения запросов………………………………………………… 560

24.3.3. Очистка запроса…………………………………………………………………………………………………. 562

24.3.4. Получение служебных сведений о запросе……………………………………………………… 563

24.4. Модели, связанные с данными………………………………………………………………………………………. 563

24.4.1. Модель, связанная с SQL-запросом………………………………………………………………….. 563

24.4.2. Модель, связанная с таблицей…………………………………………………………………………… 565

24.4.3. Модель, поддерживающая межтабличные связи…………………………………………….. 570

24.4.4. Использование связанных делегатов………………………………………………………………… 573

Глава 25. Работа с графикой………………………………………………………………… 575

25.1. Вспомогательные классы………………………………………………………………………………………………. 575

25.1.1. Класс QColor: цвет……………………………………………………………………………………………… 575

25.1.2. Класс QPen: перо………………………………………………………………………………………………… 579

25.1.3. Класс QBrush: кисть……………………………………………………………………………………………. 580

25.1.4. Класс QLine: линия…………………………………………………………………………………………….. 581

24.1.5. Класс QPolygon: многоугольник……………………………………………………………………….. 582

25.1.6. Класс QFont: шрифт…………………………………………………………………………………………… 584

25.2. Класс QPainter………………………………………………………………………………………………………………… 586

25.2.1. Рисование линий и фигур…………………………………………………………………………………… 587

25.2.2. Вывод текста……………………………………………………………………………………………………….. 589

25.2.3. Вывод изображений……………………………………………………………………………………………. 590

25.2.4. Преобразование систем координат…………………………………………………………………… 592

25.2.5. Сохранение команд рисования в файл……………………………………………………………… 593

25.3. Работа с растровыми изображениями………………………………………………………………………….. 594

25.3.1. Класс QPixmap……………………………………………………………………………………………………. 594

25.3.2. Класс QBitmap…………………………………………………………………………………………………….. 597

25.3.3. Класс QImage………………………………………………………………………………………………………. 598

25.3.4. Класс QIcon…………………………………………………………………………………………………………. 601

Глава 26. Графическая сцена……………………………………………………………….. 603

26.1. Графическая сцена…………………………………………………………………………………………………………. 603

26.1.1. Настройка графической сцены………………………………………………………………………….. 603

26.1.2. Добавление и удаление графических объектов……………………………………………….. 604

26.1.3. Добавление компонентов на сцену…………………………………………………………………… 605

26.1.4. Поиск графических объектов…………………………………………………………………………….. 605

26.1.5. Управление фокусом ввода……………………………………………………………………………….. 607

26.1.6. Управление выделением объектов……………………………………………………………………. 607

26.1.7. Прочие методы и сигналы………………………………………………………………………………….. 608

26.2. Графическое представление………………………………………………………………………………………….. 609

26.2.1. Настройка графического представления…………………………………………………………. 609

26.2.2. Преобразования между координатами представления и сцены…………………….. 611

26.2.3. Поиск объектов……………………………………………………………………………………………………. 612

26.2.4. Преобразование системы координат………………………………………………………………… 612

26.2.5. Прочие методы……………………………………………………………………………………………………. 613

26.3. Графические объекты…………………………………………………………………………………………………….. 614

26.3.1. Класс QGraphicsItem: базовый класс для графических объектов………………….. 614

26.3.1.1. Настройка графического объекта………………………………………………………. 614

26.3.1.2. Выполнение преобразований……………………………………………………………… 616

26.3.1.3. Прочие методы…………………………………………………………………………………….. 617

26.3.2. Готовые графические объекты………………………………………………………………………….. 618

26.3.2.1. Линия…………………………………………………………………………………………………….. 618

26.3.2.2. Класс QAbstractGraphicsShapeItem……………………………………………………. 618

26.3.2.3. Прямоугольник…………………………………………………………………………………….. 619

26.3.2.4. Многоугольник…………………………………………………………………………………….. 619

26.3.2.5. Эллипс…………………………………………………………………………………………………… 619

26.3.2.6. Изображение………………………………………………………………………………………… 620

26.3.2.7. Простой текст……………………………………………………………………………………….. 621

26.3.2.8. Форматированный текст……………………………………………………………………… 621

26.4. Группировка объектов……………………………………………………………………………………………………. 622

26.5. Эффекты…………………………………………………………………………………………………………………………… 623

26.5.1. Класс QGraphicsEffect………………………………………………………………………………………… 623

26.5.2. Тень………………………………………………………………………………………………………………………. 624

26.5.3. Размытие……………………………………………………………………………………………………………… 625

26.5.4. Изменение цвета………………………………………………………………………………………………….. 625

26.5.5. Изменение прозрачности……………………………………………………………………………………. 625

26.6. Обработка событий………………………………………………………………………………………………………… 626

26.6.1. События клавиатуры………………………………………………………………………………………….. 626

26.6.2. События мыши……………………………………………………………………………………………………. 627

26.6.3. Обработка перетаскивания и сброса………………………………………………………………… 630

26.6.4. Фильтрация событий………………………………………………………………………………………….. 631

26.6.5. Обработка изменения состояния объекта………………………………………………………… 631

Глава 27. Диалоговые окна………………………………………………………………….. 634

27.1. Пользовательские диалоговые окна……………………………………………………………………………… 634

27.2. Класс QDialogButtonBox………………………………………………………………………………………………… 636

27.3. Класс QMessageBox………………………………………………………………………………………………………… 639

27.3.1. Основные методы и сигналы……………………………………………………………………………… 640

27.3.2. Окно информационного сообщения………………………………………………………………….. 642

27.3.3. Окно подтверждения…………………………………………………………………………………………… 643

27.3.4. Окно предупреждающего сообщения……………………………………………………………….. 644

27.3.5. Окно критического сообщения………………………………………………………………………….. 644

27.3.6. Окно сведений о программе……………………………………………………………………………….. 645

27.3.7. Окно сведений о фреймворке Qt………………………………………………………………………… 645

27.4. Класс QInputDialog………………………………………………………………………………………………………… 646

27.4.1. Основные методы и сигналы……………………………………………………………………………… 647

27.4.2. Окно для ввода строки……………………………………………………………………………………….. 649

27.4.3. Окно для ввода целого числа…………………………………………………………………………….. 649

27.4.4. Окно для ввода вещественного числа……………………………………………………………….. 650

27.4.5. Окно для выбора пункта из списка……………………………………………………………………. 651

27.4.6. Окно для ввода большого текста………………………………………………………………………. 651

27.5. Класс QFileDialog…………………………………………………………………………………………………………… 652

27.5.1. Основные методы и сигналы……………………………………………………………………………… 653

27.5.2. Окно для выбора каталога…………………………………………………………………………………. 655

27.5.3. Окно для открытия файлов………………………………………………………………………………… 656

27.5.4. Окно для сохранения файла………………………………………………………………………………. 658

27.6. Окно для выбора цвета…………………………………………………………………………………………………… 659

27.7. Окно для выбора шрифта……………………………………………………………………………………………….. 660

27.8. Окно для вывода сообщения об ошибке……………………………………………………………………….. 661

27.9. Окно с индикатором хода процесса……………………………………………………………………………… 662

27.10. Создание многостраничного мастера………………………………………………………………………… 663

27.10.1. Класс QWizard…………………………………………………………………………………………………… 663

27.10.2. Класс QWizardPage………………………………………………………………………………………….. 667

Глава 28. Создание SDI- и MDI-программ…………………………………………….. 670

28.1. Главное окно программы……………………………………………………………………………………………….. 670

28.2. Меню и действия…………………………………………………………………………………………………………….. 675

28.2.1. Класс QMenuBar…………………………………………………………………………………………………. 675

28.2.2. Класс QMenu……………………………………………………………………………………………………….. 676

28.2.3. Контекстное меню компонента…………………………………………………………………………. 679

28.2.4. Класс QAction……………………………………………………………………………………………………… 680

28.2.5. Объединение действий-переключателей в группу…………………………………………… 683

28.3. Панели инструментов…………………………………………………………………………………………………….. 684

28.3.1. Класс QToolBar…………………………………………………………………………………………………… 685

28.3.2. Класс QToolButton……………………………………………………………………………………………… 686

28.4. Прикрепляемые панели………………………………………………………………………………………………….. 688

28.5. Строка состояния……………………………………………………………………………………………………………. 689

28.6. MDI-программы………………………………………………………………………………………………………………. 690

28.6.1. Класс QMdiArea………………………………………………………………………………………………….. 690

28.6.2. Класс QMdiSubWindow………………………………………………………………………………………. 693

28.7. Добавление значка программы в область уведомлений…………………………………………….. 694

Глава 29. Мультимедиа………………………………………………………………………… 696

29.1. Воспроизведение мультимедиа……………………………………………………………………………………… 696

29.1.1. Мультимедийный проигрыватель…………………………………………………………………….. 696

29.1.2. Звуковой выход. Воспроизведение звука…………………………………………………………. 699

29.1.3. Метаданные мультимедийного источника………………………………………………………. 704

29.1.4. Видеопанель. Воспроизведение видео……………………………………………………………… 707

29.2. Запись мультимедиа……………………………………………………………………………………………………….. 709

29.2.1. Транспорт……………………………………………………………………………………………………………. 709

29.2.2. Звуковой вход……………………………………………………………………………………………………… 710

29.2.3. Кодировщик звука и видео…………………………………………………………………………………. 710

29.2.4. Указание форматов кодирования. Запись звука………………………………………………. 712

29.2.5. Камера. Запись видео…………………………………………………………………………………………. 716

29.2.6. Кодировщик статичных изображений. Захват фото……………………………………….. 720

29.3. Воспроизведение звуковых эффектов……………………………………………………………………………. 722

Глава 30. Печать документов……………………………………………………………….. 726

30.1. Основные средства печати…………………………………………………………………………………………….. 726

30.1.1. Класс QPrinter…………………………………………………………………………………………………….. 726

30.1.2. Вывод на печать…………………………………………………………………………………………………. 729

30.1.3. Служебные классы……………………………………………………………………………………………… 735

30.1.3.1. Класс QPageSize…………………………………………………………………………………… 735

30.1.3.2. Класс QPageLayout……………………………………………………………………………… 737

30.2. Задание параметров принтера и страницы………………………………………………………………….. 739

30.2.1. Класс QPrintDialog…………………………………………………………………………………………….. 739

30.2.2. Класс QPageSetupDialog……………………………………………………………………………………. 740

30.3. Предварительный просмотр………………………………………………………………………………………….. 742

30.3.1. Класс QPrintPreviewDialog……………………………………………………………………………….. 742

30.3.2. Класс QPrintPreviewWidget……………………………………………………………………………….. 745

30.4. Класс QPrinterInfo: получение сведений об устройстве печати………………………………… 747

30.5. Класс QPdfWriter: экспорт в формат PDF…………………………………………………………………….. 749

Глава 31. Сохранение настроек программ……………………………………………. 752

31.1. Создание объекта класса QSettings………………………………………………………………………………. 752

31.2. Запись и чтение данных…………………………………………………………………………………………………. 753

31.2.1. Базовые средства записи и чтения данных………………………………………………………. 753

31.2.2. Группировка сохраняемых значений. Ключи………………………………………………….. 755

31.2.3. Запись списков……………………………………………………………………………………………………. 757

31.3. Вспомогательные методы класса QSettings…………………………………………………………………. 759

31.4. Где хранятся настройки?……………………………………………………………………………………………….. 759

Глава 32. Программа «Судоку»……………………………………………………………. 761

32.1. Правила судоку………………………………………………………………………………………………………………. 761

32.2. Описание программы «Судоку»…………………………………………………………………………………….. 762

32.3. Разработка программы…………………………………………………………………………………………………… 764

32.3.1. Подготовительные действия………………………………………………………………………………. 764

32.3.2. Класс MyLabel: ячейка поля судоку…………………………………………………………………. 764

32.3.3. Класс Widget: поле судоку………………………………………………………………………………… 768

32.3.3.1. Конструктор класса Widget………………………………………………………………… 769

32.3.3.2. Прочие методы класса Widget……………………………………………………………. 771

32.3.4. Класс MainWindow: основное окно программы………………………………………………. 775

32.3.4.1. Конструктор класса MainWindow……………………………………………………… 776

32.3.4.2. Остальные методы класса MainWindow……………………………………………. 779

32.3.5. Главный модуль………………………………………………………………………………………………….. 779

32.3.6. Копирование и вставка головоломок……………………………………………………………….. 780

32.3.6.1. Форматы данных…………………………………………………………………………………. 780

32.3.6.2. Реализация копирования и вставки в классе Widget…………………………. 780

32.3.6.3. Реализация копирования и вставки в классе MainWindow………………. 783

32.3.7. Сохранение и загрузка данных…………………………………………………………………………. 787

32.3.8. Печать и предварительный просмотр………………………………………………………………. 789

32.3.8.1. Реализация печати в классе Widget……………………………………………………. 790

32.3.8.2. Класс PreviewDialog: диалоговое окно предварительного просмотра 791

32.3.8.3. Реализация печати в классе MainWindow…………………………………………. 794

Заключение………………………………………………………………………………………….. 796

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

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

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

Вышла книга “Обучение с подкреплением для реальных задач”

Обучение с подкреплением для реальных задач

В нашем издательстве вышла книга Фила Уиндера “Обучение с подкреплением для реальных задач“.

Книга посвящена промышленно-ориентированному применению обучения с подкреплением (Reinforcement Learning, RL). Объяснено, как обучать промышленные и научные системы решению любых пошаговых задач методом проб и ошибок – без  подготовки узкоспециализированных учебных множеств данных и без риска переобучить или переусложнить алгоритм. Рассмотрены марковские процессы принятия решений, глубокие Q-сети, градиенты политик и их вычисление, методы устранения энтропии и многое другое. Данная  книга – первая на русском языке, где теоретический базис RL и  алгоритмы даны  в  прикладном, отраслевом ключе.

ПЕРВАЯ КНИГА на русском языке, где теоретический базис RL и  алгоритмы даны  в  прикладном, отраслевом ключе!

Оригинальное название книги “Reinforcement Learning: Industrial Applications of Intelligent Agents 1st Edition”

На сайте поддержки книги Reinforcement Learning Book Supplementary Materials вы найдете дополнительные материалы от автора.

На обложке африканский пингвин (Spheniscus demersus). Четыре вида рода Spheniscus известны как полосатые пингвины из-за черной полосы, опоясывающей их тела.  Пингвины живут колониями вдоль юго-западного побережья Африки, в основном на 24 островах, и лишь несколько колоний на материке. Вид занесён в Международную Красную книгу.

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

Кому следует прочитать эту книгу?

Цель этой книги — продвигать использование RL в производственных системах.
Если вы (сейчас или в будущем) создаете продукты в области RL, будь то исследования, разработки или прикладные вещи, то эта книга для вас. Это также означает, что я написал книгу, скорее, для практиков, чем для людей из академических кругов.

Phil Winder

Фил Уиндер — междисциплинарный инженер, эксперт и автор онлайн-курсов на платформе O’Reilly. Возглавляет компанию Winder Research, оказывающую консультации в области науки о данных (data science) для облачно-ориентированных приложений. Компания помогает оптимизировать процессы, связанные с обработкой данных, а также обслуживает платформы и продукты, работающие в этой нише. Автор имеет степени PhD и MEng в электротехнике, полученные в Университете Халла.

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

Отзывы………………………………………………………………………………………………….. 15

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

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

Цель…………………………………………………………………………………………………………………………………………….. 21

Кому следует прочитать эту книгу?………………………………………………………………………………………… 22

Руководящие принципы и стиль……………………………………………………………………………………………….. 22

Предварительная подготовка…………………………………………………………………………………………………… 24

Объем и план………………………………………………………………………………………………………………………………. 24

Дополнительные материалы…………………………………………………………………………………………………….. 25

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

Аббревиатуры………………………………………………………………………………………………………………………. 26

Математические обозначения…………………………………………………………………………………………….. 27

Глава 1. Для чего нужно обучение с подкреплением?…………………………….. 29

Почему сейчас?………………………………………………………………………………………………………………………….. 30

Машинное обучение………………………………………………………………………………………………………………….. 31

Обучение с подкреплением……………………………………………………………………………………………………….. 32

Когда следует использовать обучение с подкреплением?……………………………………………….. 33

Варианты применения обучения с подкреплением…………………………………………………………… 35

Таксономия подходов обучения с подкреплением…………………………………………………………………. 37

Без модели или на основе модели………………………………………………………………………………………. 37

Как агенты используют и обновляют свою стратегию…………………………………………………….. 38

Дискретные или непрерывные действия…………………………………………………………………………….. 39

Методы оптимизации…………………………………………………………………………………………………………… 39

Оценка и улучшение политики……………………………………………………………………………………………. 40

Фундаментальные концепции обучения с подкреплением……………………………………………………. 41

Первый RL-алгоритм……………………………………………………………………………………………………………. 41

Оценка ценности……………………………………………………………………………………………………….. 42

Ошибка предсказания………………………………………………………………………………………………. 43

Правило обновления веса………………………………………………………………………………………… 43

RL — это то же самое, что ML?………………………………………………………………………………………….. 44

Награда и отклик…………………………………………………………………………………………………………………. 45

Отложенные награды……………………………………………………………………………………………….. 46

Ретроспектива……………………………………………………………………………………………………………. 46

Обучение с подкреплением как дисциплина…………………………………………………………………………… 47

Резюме…………………………………………………………………………………………………………………………………………. 49

Дополнительные материалы для чтения…………………………………………………………………………………. 49

Использованные источники………………………………………………………………………………………………………. 50

Глава 2. Марковские процессы принятия решений,
динамическое программирование и методы Монте-Карло……………………… 53

Алгоритм многорукого бандита……………………………………………………………………………………………….. 53

Разработка наград……………………………………………………………………………………………………………….. 53

Оценка стратегии: функция ценности………………………………………………………………………………… 54

Совершенствование политики: выбор лучшего действия………………………………………………… 57

Моделирование среды…………………………………………………………………………………………………………. 58

Запуск эксперимента……………………………………………………………………………………………………………. 59

Улучшение e-жадного алгоритма………………………………………………………………………………………. 61

Марковские процессы принятия решений……………………………………………………………………………….. 62

Контроль запасов…………………………………………………………………………………………………………………. 64

Таблица переходов…………………………………………………………………………………………………… 65

Граф переходов…………………………………………………………………………………………………………. 66

Матрица переходов………………………………………………………………………………………………….. 66

Симуляция управления запасами……………………………………………………………………………………….. 68

Политики и функции ценности………………………………………………………………………………………………….. 70

Дисконтированные вознаграждения………………………………………………………………………………….. 70

Прогнозирование вознаграждений с помощью функции ценности состояния……………….. 71

Моделирование с использованием функции ценности состояния……………………….. 73

Прогнозирование вознаграждений с помощью функции ценности действия…………………. 75

Оптимальные политики……………………………………………………………………………………………………….. 76

Генерирование политики Монте-Карло………………………………………………………………………………….. 78

Итерация по ценности с динамическим программированием……………………………………………….. 80

Реализация итерации по ценности……………………………………………………………………………………… 82

Результаты итерации по ценнности……………………………………………………………………………………. 84

Резюме…………………………………………………………………………………………………………………………………………. 85

Дополнительные материалы для чтения…………………………………………………………………………………. 86

Использованные источники………………………………………………………………………………………………………. 86

Глава 3. Обучение с учетом временных различий, Q-обучение
и n-шаговые алгоритмы…………………………………………………………………………. 87

Обучение с учетом временных различий: формулировка подхода………………………………………. 88

Q-обучение……………………………………………………………………………………………………………………………. 90

SARSA……………………………………………………………………………………………………………………………………. 92

Q-обучение против SARSA………………………………………………………………………………………………….. 93

Пример использования: автоматическое масштабирование контейнеров приложений для снижения затрат          96

Отраслевой пример: торги рекламы в режиме реального времени……………………………………….. 98

Определение марковского процесса принятия решения…………………………………………………… 98

Результаты торгов в режиме реального времени………………………………………………………………. 99

Дальнейшие улучшения…………………………………………………………………………………………………….. 101

Расширения для Q-обучения…………………………………………………………………………………………………… 102

Двойное Q-обучение………………………………………………………………………………………………………….. 102

Отложенное Q-обучение……………………………………………………………………………………………………. 103

Сравнение стандартного, двойного и отложенного Q-обучения…………………………………… 103

Обучение с подкреплением на основе противодействия………………………………………………… 104

n-Шаговые алгоритмы…………………………………………………………………………………………………………….. 105

n-Шаговые алгоритмы в распределенных средах………………………………………………………….. 108

Трассировки соответствия………………………………………………………………………………………………………. 109

Расширения для трассировки соответствия………………………………………………………………………….. 112

Алгоритм обучения Q(λ) Уоткинса…………………………………………………………………………………… 112

Нечеткие стирания в алгоритме обучения Q(λ) Уоткинса……………………………………………… 113

Быстрое Q-обучение………………………………………………………………………………………………………….. 113

Накопление или замена трассировок соответствия……………………………………………………….. 113

Резюме………………………………………………………………………………………………………………………………………. 114

Дополнительные материалы для чтения……………………………………………………………………………….. 114

Использованные источники……………………………………………………………………………………………………. 114

Глава 4. Глубокие Q-сети…………………………………………………………………….. 117

Архитектуры глубокого обучения…………………………………………………………………………………………. 118

Основные положения…………………………………………………………………………………………………………. 118

Архитектуры нейронных сетей…………………………………………………………………………………………. 119

Фреймворки глубокого обучения……………………………………………………………………………………… 120

Глубокое обучение с подкреплением………………………………………………………………………………. 121

Глубокое Q-обучение………………………………………………………………………………………………………………. 122

Воспроизведение опыта…………………………………………………………………………………………………….. 122

Клоны Q-сети……………………………………………………………………………………………………………………… 123

Архитектура нейронной сети……………………………………………………………………………………………. 123

Внедрение глубокой Q-сети………………………………………………………………………………………………. 124

Пример: глубокая Q-сеть в среде CartPole……………………………………………………………………….. 125

Зачем обучаться онлайн?………………………………………………………………………………………. 127

Что лучше? Глубока Q-сеть против Q-обучения………………………………………………….. 128

Практический пример: сокращение энергопотребления в зданиях………………………………. 128

Радужная DQN…………………………………………………………………………………………………………………………. 130

Распределительное RL………………………………………………………………………………………………………. 130

Воспроизведение приоритетного опыта………………………………………………………………………….. 132

Зашумленные сети……………………………………………………………………………………………………………… 133

Дуэльные сети…………………………………………………………………………………………………………………….. 133

Пример: радужная глубокая Q-сеть в Atari Games……………………………………………………………….. 134

Результаты………………………………………………………………………………………………………………………….. 134

Обсуждение………………………………………………………………………………………………………………………… 136

Другие улучшения глубокой Q-сети………………………………………………………………………………………. 138

Улучшение исследования………………………………………………………………………………………………….. 138

Повышение вознаграждения……………………………………………………………………………………………… 139

Обучение на основе автономных данных……………………………………………………………………….. 140

Резюме………………………………………………………………………………………………………………………………………. 142

Дополнительные материалы для чтения……………………………………………………………………………….. 143

Использованные источники……………………………………………………………………………………………………. 143

Глава 5. Методы градиента политики………………………………………………….. 145

Преимущества прямого изучения политики………………………………………………………………………….. 145

Как рассчитать градиент политики……………………………………………………………………………………….. 146

Теорема о градиенте политики………………………………………………………………………………………………. 147

Функции политики…………………………………………………………………………………………………………………… 149

Линейные политики……………………………………………………………………………………………………………. 150

Логистическая политика………………………………………………………………………………………… 150

Политика softmax…………………………………………………………………………………………………… 151

Произвольные политики……………………………………………………………………………………………………. 152

Основные реализации……………………………………………………………………………………………………………… 152

Метод Монте-Карло (алгоритм REINFORCE)………………………………………………………………… 153

Пример: алгоритм REINFORCE в среде CartPole…………………………………………………. 153

Алгоритм REINFORCE с базовыми показателями………………………………………………………….. 154

Пример: алгоритм REINFORCE с базовыми показателями в среде CartPole…….. 156

Уменьшение градиентной дисперсии……………………………………………………………………………….. 158

n-Шаговый и улучшенный алгоритмы “актор — критик”………………………………………………. 159

Пример: n-шаговый алгоритм “актор — критик” в среде CartPole……………………… 161

Темпы затухания ценностного обучения по сравнению с темпами
ослабления политики……………………………………………………………………………………………… 163

Трассировки соответствия алгоритма “актор — критик”………………………………………………. 164

Пример: трассировка соответствия требованиям алгоритма “актор — критик” в среде CartPole     165

Сравнение основных алгоритмов градиента политики………………………………………………….. 166

Отраслевой пример: автоматическая продажа товаров клиентам…………………………………….. 166

Рабочее окружение: корзина заказов, написанная при помощи библиотеки Gym……… 167

Ожидания……………………………………………………………………………………………………………………………. 168

Результаты из среды “Корзина покупок”…………………………………………………………………………. 169

Резюме………………………………………………………………………………………………………………………………………. 172

Дополнительные материалы для чтения……………………………………………………………………………….. 173

Использованные источники……………………………………………………………………………………………………. 173

Глава 6. Другие методы………………………………………………………………………… 175

Алгоритмы, действующие вне политик………………………………………………………………………………….. 175

Выборка по значимости…………………………………………………………………………………………………….. 176

Поведенческие и целевые политики…………………………………………………………………………………. 178

Q-обучение, действующее вне политики………………………………………………………………………….. 178

Градиентное обучение с учетом временных различий………………………………………………….. 179

Жадный GQ-алгоритм……………………………………………………………………………………………………….. 180

Алгоритм “актор — критик” вне политики………………………………………………………………………. 181

Детерминированные градиенты политики……………………………………………………………………………. 182

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

Глубокие детерминированные градиенты политики……………………………………………………… 184

Вывод DDPG……………………………………………………………………………………………………………. 184

Внедрение DSP………………………………………………………………………………………………………… 185

Дважды отложенный DPG…………………………………………………………………………………………………. 188

Отложенные обновления политики……………………………………………………………………….. 188

Ограниченное двойное Q-обучение………………………………………………………………………. 189

Сглаживание целевой политики……………………………………………………………………………. 189

Реализация TD3………………………………………………………………………………………………………. 190

Практический пример: рекомендации на основе отзывов……………………………………………… 192

Улучшения DPG………………………………………………………………………………………………………………….. 193

Методы доверительной области……………………………………………………………………………………………. 194

Дивергенция Кульбака — Лейблера………………………………………………………………………………… 196

Эксперименты по дивергенции Кульбака — Лейблера………………………………………. 196

Естественные градиенты политики и оптимизация политики
доверительной области……………………………………………………………………………………………………… 197

Проксимальная оптимизация политики…………………………………………………………………………… 200

Усеченная цель PPO………………………………………………………………………………………………… 201

Ценностная функция PPO и цели разведки……………………………………………………………. 203

Пример: использование сервоприводов для Real-Life Reacher……………………………………………. 205

Описание эксперимента…………………………………………………………………………………………………….. 205

Реализация алгоритма RL…………………………………………………………………………………………………. 206

Повышение сложности алгоритма……………………………………………………………………………………. 208

Настройка гиперпараметров в моделировании………………………………………………………………. 209

Результирующие политики……………………………………………………………………………………………….. 210

Другие алгоритмы градиента политики………………………………………………………………………………… 212

Алгоритм Retrace (λ)…………………………………………………………………………………………………………… 212

Алгоритм ACER………………………………………………………………………………………………………………….. 212

Алгоритм ACKTR……………………………………………………………………………………………………………….. 213

Эмпатические методы……………………………………………………………………………………………………….. 214

Расширения для алгоритмов градиента политики……………………………………………………………….. 214

Квантильная регрессия в алгоритмах градиента политики…………………………………………… 215

Резюме………………………………………………………………………………………………………………………………………. 215

Какой алгоритм следует использовать?………………………………………………………………………….. 215

Замечание об асинхронных методах……………………………………………………………………………….. 216

Дополнительные материалы для чтения……………………………………………………………………………….. 216

Использованные источники……………………………………………………………………………………………………. 217

Глава 7. Изучение всех возможных политик
с помощью энтропийных методов………………………………………………………… 221

Что такое энтропия?………………………………………………………………………………………………………………… 221

Максимальная энтропия обучения с подкреплением…………………………………………………………… 222

Мягкий “актор — критик”……………………………………………………………………………………………………….. 223

Детали реализации SAC и дискретные пространства действий……………………………………. 224

Автоматическая регулировка температуры……………………………………………………………………. 224

Практический пример: автоматическое управление трафиком
для сокращения очередей………………………………………………………………………………………………….. 225

Расширения методов максимальной энтропии……………………………………………………………………… 226

Другие меры энтропии (и ансамбли)………………………………………………………………………………… 226

Оптимистичное исследование с использованием верхней границы
двойного Q-обучения…………………………………………………………………………………………………………. 227

Играем с воспроизведением опыта…………………………………………………………………………………… 227

Мягкий градиент политики……………………………………………………………………………………………….. 227

Мягкое Q-обучение (и производные)………………………………………………………………………………… 228

Обучение согласованности пути………………………………………………………………………………………. 228

Сравнение производительности: SAC против PPO……………………………………………………………….. 228

Как энтропия способствует исследованиям?………………………………………………………………………… 230

Как температурный параметр влияет на исследование?……………………………………………….. 233

Отраслевой пример: обучение вождению автомобиля с дистанционным управлением….. 235

Описание задачи………………………………………………………………………………………………………………… 235

Минимизация времени обучения………………………………………………………………………………………. 236

Выразительные действия…………………………………………………………………………………………………… 238

Поиск гиперпараметров…………………………………………………………………………………………………….. 239

Финальная политика………………………………………………………………………………………………………….. 240

Дальнейшие улучшения…………………………………………………………………………………………………….. 240

Резюме………………………………………………………………………………………………………………………………………. 241

Эквивалентность градиентов политики и мягкого Q-обучения……………………………………… 242

Что это означает для будущего?………………………………………………………………………………………. 242

Что это значит сейчас?………………………………………………………………………………………………………. 242

Использованные источники……………………………………………………………………………………………………. 243

Глава 8. Улучшение процесса обучения агента……………………………………. 245

Переосмысление марковских процессов принятия решений……………………………………………….. 246

Частично наблюдаемый марковский процесс принятия решений………………………………… 246

Предсказание доверительного состояния…………………………………………………………….. 247

Практический пример: POMDP в автономных транспортных средствах…………………….. 248

Контекстные MDP………………………………………………………………………………………………………………. 249

MDP с изменяющимися действиями………………………………………………………………………………….. 249

Регуляризованные MDP…………………………………………………………………………………………………….. 250

Иерархическое обучение с подкреплением…………………………………………………………………………… 250

Наивный HRL…………………………………………………………………………………………………………………….. 251

Высокоуровневые и низкоуровневые иерархии с внутренними наградами…………………. 252

Навыки обучения и неконтролируемое RL……………………………………………………………………… 254

Использование навыков в HRL…………………………………………………………………………………………. 255

Выводы HRL………………………………………………………………………………………………………………………. 255

Мультиагентное обучение с подкреплением………………………………………………………………………… 256

Фреймворки MARL…………………………………………………………………………………………………………….. 257

Централизованное или децентрализованное………………………………………………………………….. 259

Алгоритмы с одним агентом……………………………………………………………………………………………… 260

Практический пример: использование децентрализованного обучения
с одним агентом в беспилотном летательном аппарате………………………………………………… 261

Централизованное обучение, децентрализованное выполнение………………………………….. 262

Децентрализованное обучение…………………………………………………………………………………………. 263

Другие комбинации……………………………………………………………………………………………………………. 264

Проблемы MARL……………………………………………………………………………………………………………….. 265

Выводы о MARL………………………………………………………………………………………………………………… 266

Экспертное руководство…………………………………………………………………………………………………………. 267

Клонирование поведения………………………………………………………………………………………………….. 267

Имитационное RL………………………………………………………………………………………………………………. 267

Обратное RL……………………………………………………………………………………………………………………….. 268

Обучение по учебной программе……………………………………………………………………………………… 270

Другие парадигмы…………………………………………………………………………………………………………………… 271

Метаобучение…………………………………………………………………………………………………………………….. 271

Трансферное обучение………………………………………………………………………………………………………. 272

Резюме………………………………………………………………………………………………………………………………………. 273

Дополнительные материалы для чтения……………………………………………………………………………….. 274

Использованные источники……………………………………………………………………………………………………. 275

Глава 9. Практическое обучение с подкреплением………………………………. 279

Жизненный цикл проекта RL………………………………………………………………………………………………….. 279

Определение жизненного цикла……………………………………………………………………………………….. 281

Жизненный цикл науки о данных………………………………………………………………………….. 281

Жизненный цикл обучения с подкреплением……………………………………………………….. 282

Определение проблемы: что такое проект RL?…………………………………………………………………….. 284

Проблемы с RL являются последовательными……………………………………………………………….. 284

Проблемы RL имеют стратегический характер………………………………………………………………. 285

Низкоуровневые индикаторы RL……………………………………………………………………………………… 286

Сущность…………………………………………………………………………………………………………………. 286

Среда……………………………………………………………………………………………………………………….. 286

Состояние………………………………………………………………………………………………………………… 287

Действие…………………………………………………………………………………………………………………… 287

Количественная оценка успеха или неудачи………………………………………………………. 287

Типы обучения……………………………………………………………………………………………………………………. 288

Онлайн-обучение……………………………………………………………………………………………………. 288

Автономное или пакетное обучение……………………………………………………………………… 288

Параллельное обучение…………………………………………………………………………………………. 290

Обучение без сброса………………………………………………………………………………………………. 291

Проектирование и доработка RL…………………………………………………………………………………………… 292

Процесс……………………………………………………………………………………………………………………………….. 293

Инженерия среды……………………………………………………………………………………………………………….. 293

Реализация………………………………………………………………………………………………………………. 294

Моделирование………………………………………………………………………………………………………. 294

Взаимодействие с реальной жизнью…………………………………………………………………….. 295

Инжиниринг состояния или обучение представлениям………………………………………………….. 296

Перспективные модели обучения………………………………………………………………………….. 297

Ограничения……………………………………………………………………………………………………………. 297

Преобразование (уменьшение размерности, автоэнкодеры и модели мира)……. 298

Разработка политики…………………………………………………………………………………………………………. 299

Дискретные состояния……………………………………………………………………………………………. 300

Непрерывные состояния………………………………………………………………………………………… 301

Преобразование в дискретные состояния…………………………………………………………….. 303

Пространства смешанных состояний…………………………………………………………………… 304

Сопоставление политик с пространствами действий…………………………………………………….. 305

Бинарные действия…………………………………………………………………………………………………. 305

Непрерывные действия…………………………………………………………………………………………… 306

Гибридные пространства действий………………………………………………………………………. 306

Когда выполнять действия…………………………………………………………………………………….. 307

Обширные пространства действий……………………………………………………………………….. 307

Исследование……………………………………………………………………………………………………………………… 308

Является ли внутренняя мотивация исследованием?………………………………………….. 309

Количество посещений (выборка)…………………………………………………………………………. 310

Прирост информации (сюрприз)……………………………………………………………………………. 310

Прогноз состояния (любопытство или саморефлексия)………………………………………. 311

Любопытные задачки…………………………………………………………………………………………….. 311

Случайные вложения (сети случайной дистилляции)…………………………………………. 312

Расстояние до новизны (эпизодическое любопытство)………………………………………. 313

Выводы по разведке……………………………………………………………………………………………….. 313

Разработка вознаграждений……………………………………………………………………………………………… 314

Рекомендации по разработке вознаграждений……………………………………………………. 315

Формирование вознаграждения…………………………………………………………………………….. 316

Общие награды……………………………………………………………………………………………………….. 317

Выводы о вознаграждении…………………………………………………………………………………….. 318

Резюме………………………………………………………………………………………………………………………………………. 318

Дополнительные материалы для чтения……………………………………………………………………………….. 319

Использованные источники……………………………………………………………………………………………………. 320

Глава 10. Этапы в обучении с подкреплением……………………………………… 325

Реализация……………………………………………………………………………………………………………………………….. 325

Фреймворки………………………………………………………………………………………………………………………… 326

Фреймворки RL……………………………………………………………………………………………………….. 326

Другие фреймворки…………………………………………………………………………………………………. 328

Масштабирование RL……………………………………………………………………………………………………….. 329

Распределенное обучение (Gorila)…………………………………………………………………………. 330

Обучение на одной машине (A3C, PAAC)…………………………………………………………….. 331

Распределенное воспроизведение (Ape-X)……………………………………………………………. 333

Синхронное распределение (DD-PPO)………………………………………………………………….. 333

Повышение эффективности использования (IMPALA, SEED)…………………………….. 334

Масштабирование сделанных выводов……………………………………………………………….. 336

Оценка…………………………………………………………………………………………………………………………………. 337

Показатели эффективности политики…………………………………………………………………… 338

Статистические сравнения политик……………………………………………………………………… 340

Показатели производительности алгоритма……………………………………………………….. 343

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

Объяснимость………………………………………………………………………………………………………….. 344

Выводы оценки……………………………………………………………………………………………………….. 345

Развертывание………………………………………………………………………………………………………………………….. 346

Цели…………………………………………………………………………………………………………………………………….. 346

Цели на разных этапах развития…………………………………………………………………………… 346

Лучшие практики……………………………………………………………………………………………………. 347

Иерархия потребностей…………………………………………………………………………………………. 348

Архитектура……………………………………………………………………………………………………………………….. 349

Вспомогательные инструменты……………………………………………………………………………………….. 351

Разработка против покупки…………………………………………………………………………………… 352

Мониторинг…………………………………………………………………………………………………………….. 352

Регистрация и отслеживание…………………………………………………………………………………. 353

Непрерывная интеграция и непрерывная доставка…………………………………………….. 353

Отслеживание экспериментов……………………………………………………………………………….. 354

Настройка гиперпараметров…………………………………………………………………………………. 355

Развертывание нескольких агентов………………………………………………………………………. 355

Развертывание политик………………………………………………………………………………………….. 356

Безопасность, защита и этика…………………………………………………………………………………………… 357

Безопасное RL…………………………………………………………………………………………………………. 357

Защитное RL……………………………………………………………………………………………………………. 359

Этическое RL…………………………………………………………………………………………………………… 361

Резюме………………………………………………………………………………………………………………………………………. 363

Дополнительные материалы для чтения……………………………………………………………………………….. 364

Использованные источники……………………………………………………………………………………………………. 365

Глава 11. Выводы и будущее……………………………………………………………….. 369

Советы и рекомендации………………………………………………………………………………………………………….. 369

Формулирование задачи…………………………………………………………………………………………………… 369

Ваши данные………………………………………………………………………………………………………………………. 370

Тренировка…………………………………………………………………………………………………………………………. 371

Оценка…………………………………………………………………………………………………………………………………. 372

Развертывание……………………………………………………………………………………………………………………. 373

Отладка…………………………………………………………………………………………………………………………………….. 373

Алгоритм не может решить проблемы среды!…………………………………………………………………. 375

Мониторинг для отладки…………………………………………………………………………………………………… 376

Будущее обучения с подкреплением……………………………………………………………………………………… 377

Рыночные возможности RL……………………………………………………………………………………………….. 377

Будущее RL и направления исследований………………………………………………………………………. 379

Исследования в промышленности…………………………………………………………………………. 379

Исследования в науке…………………………………………………………………………………………….. 381

Этические стандарты……………………………………………………………………………………………… 383

Заключительные замечания……………………………………………………………………………………………………. 384

Дальнейшие шаги………………………………………………………………………………………………………………. 384

Теперь ваша очередь…………………………………………………………………………………………………………. 385

Дополнительные материалы для чтения……………………………………………………………………………….. 385

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

Приложение 1. Градиент логистической политики для двух действий…. 389

Приложение 2. Градиент политики softmax………………………………………….. 393

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

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

Представляем книгу “Тестирование на проникновение с Kali Linux”

Тестирование на проникновение с Kali Linux

Поступила в продажу книга Джоши Пранава иЧанда Дипаяна “Тестирование на проникновение с Kali Linux“.

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

Прочитав книгу, вы познакомитесь с основным инструментарием, доступным пентестеру в Kali Linux:

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

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

Нет фото

Пранав Джоши обладает более чем 20-летним опытом работы в области информационной и кибербезопасности, был руководителем и участником крупно-масштабных проектов в различных сферах бизнеса, таких как банковское дело,финансы, национальные фондовые биржи, страхование, энергетика, нефтехимия, розничная торговля, СМИ, реклама, электронная коммерция, IT/ITES, правительственные и оборонные организации, включая компании из списка Fortune100.

Нет фото

Дипаян Чанда, опытный специалист по кибербезопасности, архитектор и стратег в области кибербезопасности, а также консультант, твердо намеренный решать проблемы кибербезопасности для предприятий. Благодаря более чем 24-летнему опыту работы в различных областях, связанных с безопасностью, ему удалось найти баланс между кибербезопасностью и бизнес-целями. Бывший сотрудник вооруженных сил (ВВС Индии), в настоящее время работает в Национальном банке Австралии.

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

От рецензентов………………………………………………………………………………………. 11

Об авторах……………………………………………………………………………………………… 17

О рецензентах………………………………………………………………………………………… 18

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

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

Глава 1. Основы тестирования на проникновение…………………………………. 25

Структура…………………………………………………………………………………………………………………………………… 25

Цели…………………………………………………………………………………………………………………………………………….. 25

Что такое тестирование на проникновение?…………………………………………………………………………… 26

Предварительные действия для тестирования на проникновение………………………………………… 26

Этапы тестирования на проникновение………………………………………………………………………………….. 27

Сбор информации………………………………………………………………………………………………………………. 28

Разведка и сканирование…………………………………………………………………………………………………… 28

Исследование уязвимостей……………………………………………………………………………………………….. 28

Эксплуатация и получение доступа………………………………………………………………………………… 28

Постэксплуатация и поддержание доступа…………………………………………………………………….. 28

Документация и отчетность………………………………………………………………………………………………. 29

Виды тестирования на проникновение……………………………………………………………………………………. 29

Внутреннее тестирование…………………………………………………………………………………………………. 29

Внешнее тестирование………………………………………………………………………………………………………. 29

«Черный ящик», «белый ящик» и «серый ящик»………………………………………………………………. 29

Настройка виртуальной лаборатории тестирования на проникновение…………………………….. 30

Установка VirtualBox…………………………………………………………………………………………………………. 31

Настройка сети VirtualBox………………………………………………………………………………………………… 33

Установка Kali Linux………………………………………………………………………………………………………….. 34

Заключение………………………………………………………………………………………………………………………………… 39

Вопросы……………………………………………………………………………………………………………………………………… 39

Глава 2. Лаборатория для тестирования на проникновение…………………… 41

Структура…………………………………………………………………………………………………………………………………… 41

Цели…………………………………………………………………………………………………………………………………………….. 41

Целевые машины……………………………………………………………………………………………………………………….. 42

Настройка целей………………………………………………………………………………………………………………… 43

Импорт виртуальных целей……………………………………………………………………………………… 44

Специальная инструкция по импорту Kioptrix: 2014…………………………………………….. 45

Концепции, охваченные упражнениями на тестирование…………………………………………………….. 47

Заключение………………………………………………………………………………………………………………………………… 48

Контрольные вопросы………………………………………………………………………………………………………………. 48

Глава 3. Знакомство с Kali Linux……………………………………………………………. 49

Структура…………………………………………………………………………………………………………………………………… 49

Цели…………………………………………………………………………………………………………………………………………….. 49

Изменение пароля по умолчанию…………………………………………………………………………………………….. 51

Изменение часового пояса………………………………………………………………………………………………………… 51

Справка по командам………………………………………………………………………………………………………………… 52

Установка, удаление и обновление пакетов……………………………………………………………………………. 53

apt search <строка-поиска>……………………………………………………………………………………………….. 53

apt show <имя пакета>……………………………………………………………………………………………………….. 54

apt install <имя пакета>……………………………………………………………………………………………………… 54

apt remove <имя пакета>……………………………………………………………………………………………………. 54

apt update……………………………………………………………………………………………………………………………. 55

apt upgrade………………………………………………………………………………………………………………………….. 56

dpkg……………………………………………………………………………………………………………………………………… 56

Поиск файлов……………………………………………………………………………………………………………………………… 56

locate <имя файла>…………………………………………………………………………………………………………….. 56

whereis <имя файла>………………………………………………………………………………………………………….. 57

find <каталог поиска> <критерий> <строка поиска>……………………………………………………… 57

Управление службами в Kali Linux………………………………………………………………………………………….. 58

service <имя службы> start………………………………………………………………………………………………… 58

service <имя службы> restart……………………………………………………………………………………………… 58

service <имя службы> status………………………………………………………………………………………………. 59

service <имя службы> stop…………………………………………………………………………………………………. 59

Обеспечение постоянной работы службы с помощью update-rc.d……………………………….. 60

Основы создания скриптов (сценариев) оболочки………………………………………………………………….. 60

Подстановка команд………………………………………………………………………………………………………….. 60

Цепочка команд и перенаправление ввода, вывода, ошибки………………………………………… 61

Циклы………………………………………………………………………………………………………………………………………….. 64

Плагины для браузера………………………………………………………………………………………………………………. 65

HackBar V2…………………………………………………………………………………………………………………………. 67

Cookie Quick Manager………………………………………………………………………………………………………… 67

Tamper Data for FF Quantum…………………………………………………………………………………………….. 67

Заключение………………………………………………………………………………………………………………………………… 68

Вопросы……………………………………………………………………………………………………………………………………… 68

Глава 4. Понимание этапов процесса тестирования………………………………. 69

Структура…………………………………………………………………………………………………………………………………… 69

Цели…………………………………………………………………………………………………………………………………………….. 69

Важность структурированного тестирования на проникновение………………………………………… 70

Фреймворк для тестирования на проникновение……………………………………………………………………. 71

Этап 1: предварительные действия………………………………………………………………………………………….. 72

Этап 2: планирование……………………………………………………………………………………………………………….. 73

Этап 3: сбор информации…………………………………………………………………………………………………………. 74

Пассивный сбор информации……………………………………………………………………………………………. 74

Активный сбор информации……………………………………………………………………………………………… 75

Историческая информация………………………………………………………………………………………………… 75

Этап 4: разведка………………………………………………………………………………………………………………………… 76

Этап 5: составление перечня служб………………………………………………………………………………………… 77

Получение информации NetBIOS……………………………………………………………………………………… 78

Получение информации SNMP…………………………………………………………………………………………. 79

Получение информации DNS…………………………………………………………………………………………….. 79

Этап 6: исследование уязвимостей………………………………………………………………………………………….. 79

Этап 7: эксплуатация………………………………………………………………………………………………………………… 80

Этап 8: отчетность…………………………………………………………………………………………………………………….. 80

Цели тестирования…………………………………………………………………………………………………………….. 81

Предполагаемые заинтересованные стороны…………………………………………………………………. 81

Краткое резюме………………………………………………………………………………………………………………….. 81

Методология………………………………………………………………………………………………………………………. 81

Выводы и связанные с ними подробности……………………………………………………………………….. 81

Образцы и примеры……………………………………………………………………………………………………………. 82

Уровни риска…………………………………………………………………………………………………………….. 82

Подробные выводы…………………………………………………………………………………………………… 83

Заключение………………………………………………………………………………………………………………………………… 83

Вопросы……………………………………………………………………………………………………………………………………… 83

Глава 5. Планирование и разведка………………………………………………………… 85

Структура…………………………………………………………………………………………………………………………………… 85

Цели…………………………………………………………………………………………………………………………………………….. 85

Планирование теста на проникновение…………………………………………………………………………………… 85

Ожидания клиентов……………………………………………………………………………………………………………………. 86

Объем тестирования………………………………………………………………………………………………………………….. 86

Способы коммуникации……………………………………………………………………………………………………………. 87

Иерархия эскалации в случае возникновения проблем…………………………………………………………. 87

Ключевой персонал…………………………………………………………………………………………………………………… 87

Окно тестирования…………………………………………………………………………………………………………………….. 88

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

Разведка………………………………………………………………………………………………………………………………………. 89

DC:7…………………………………………………………………………………………………………………………………………….. 90

Digitalworld.local:Joy…………………………………………………………………………………………………………………… 96

Kioptrix:5…………………………………………………………………………………………………………………………………… 100

HackInOS:1………………………………………………………………………………………………………………………………. 103

Sunset:Nightfall…………………………………………………………………………………………………………………………. 105

Mumbai:1………………………………………………………………………………………………………………………………….. 108

Заключение………………………………………………………………………………………………………………………………. 110

Вопросы……………………………………………………………………………………………………………………………………. 110

Глава 6. Составление перечня и сканирование служб………………………….. 111

Структура…………………………………………………………………………………………………………………………………. 111

Цели…………………………………………………………………………………………………………………………………………… 111

ДС-7…………………………………………………………………………………………………………………………………………… 111

Digitalworld.local: Joy……………………………………………………………………………………………………………….. 116

Kioptrix:5…………………………………………………………………………………………………………………………………… 123

HackInOS:1………………………………………………………………………………………………………………………………. 127

Sunset: Nightfall………………………………………………………………………………………………………………………… 131

Mumbai:1………………………………………………………………………………………………………………………………….. 137

Заключение………………………………………………………………………………………………………………………………. 145

Вопросы……………………………………………………………………………………………………………………………………. 145

Глава 7. Исследование уязвимостей……………………………………………………… 147

Структура…………………………………………………………………………………………………………………………………. 147

Цели…………………………………………………………………………………………………………………………………………… 147

DC-7…………………………………………………………………………………………………………………………………………… 148

Digitalworld.local:Joy………………………………………………………………………………………………………………… 153

Kioptrix:5…………………………………………………………………………………………………………………………………… 157

HackInOS:1………………………………………………………………………………………………………………………………. 162

Sunset:Nightfall…………………………………………………………………………………………………………………………. 167

Mumbai:1………………………………………………………………………………………………………………………………….. 170

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

Вопросы……………………………………………………………………………………………………………………………………. 174

Глава 8. Эксплуатация…………………………………………………………………………. 175

Структура…………………………………………………………………………………………………………………………………. 175

Цели…………………………………………………………………………………………………………………………………………… 175

DC-7…………………………………………………………………………………………………………………………………………… 176

Digitalworld.local:Joy………………………………………………………………………………………………………………… 179

Kioptrix:5…………………………………………………………………………………………………………………………………… 187

HackInOS:1………………………………………………………………………………………………………………………………. 192

Sunset:Nightfall…………………………………………………………………………………………………………………………. 194

Mumbai:1………………………………………………………………………………………………………………………………….. 196

Заключение………………………………………………………………………………………………………………………………. 198

Вопросы……………………………………………………………………………………………………………………………………. 198

Глава 9. Постэксплуатация………………………………………………………………….. 199

Структура…………………………………………………………………………………………………………………………………. 199

Цели…………………………………………………………………………………………………………………………………………… 199

DC-7…………………………………………………………………………………………………………………………………………… 200

Digitalworld.local:Joy………………………………………………………………………………………………………………… 202

Kioptrix:5…………………………………………………………………………………………………………………………………… 206

HackInOS:1………………………………………………………………………………………………………………………………. 209

Sunset:Nightfall…………………………………………………………………………………………………………………………. 213

Mumbai:1………………………………………………………………………………………………………………………………….. 218

Заключение………………………………………………………………………………………………………………………………. 222

Вопросы……………………………………………………………………………………………………………………………………. 222

Глава 10. Отчет…………………………………………………………………………………….. 223

Структура…………………………………………………………………………………………………………………………………. 223

Цели…………………………………………………………………………………………………………………………………………… 223

Составление отчетов……………………………………………………………………………………………………………….. 224

Заинтересованные стороны……………………………………………………………………………………………………. 224

Исполнительный менеджмент…………………………………………………………………………………………. 224

Технический персонал…………………………………………………………………………………………………….. 225

Аудиторы и службы надзора………………………………………………………………………………………….. 225

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

Что можно делать…………………………………………………………………………………………………………….. 226

Определять приоритеты факторов риска……………………………………………………………… 226

Повышать квалификацию………………………………………………………………………………………. 226

Не преуменьшать значение отчета……………………………………………………………………….. 226

Участвовать в устранении обнаруженных уязвимостей…………………………………….. 227

Обязательно сделать резервную копию всех ваших данных……………………………… 227

Чего нельзя делать……………………………………………………………………………………………………………. 228

Быть неэтичным………………………………………………………………………………………………………. 228

Не соглашаться с результатами тестирования……………………………………………………. 228

Не соблюдать ограничения объема тестирования………………………………………………. 229

Устанавливать большие промежутки в графике тестирования или проводить тестирование исключительно для соблюдения требований соответствия………………………………………………………………….. 229

Использовать неавторизованные инструменты и скрипты…………………………………. 230

Заключение………………………………………………………………………………………………………………………………. 230

Вопросы……………………………………………………………………………………………………………………………………. 230

ОТЧЕТ ПО РЕЗУЛЬТАТАМ ТЕСТА НА ПРОНИКНОВЕНИЕ (пример)……………………… 231

Детали проекта………………………………………………………………………………………………………………… 233

Список версий…………………………………………………………………………………………………………. 233

Список рассылки…………………………………………………………………………………………………….. 233

Информация о команде тестирования…………………………………………………………………… 233

Информация о представителях заказчика……………………………………………………………. 234

Объем работ……………………………………………………………………………………………………………………… 234

Сроки исполнения проекта…………………………………………………………………………………….. 234

Окно тестирования………………………………………………………………………………………………….. 234

Ограничения теста………………………………………………………………………………………………….. 234

Методология тестирования…………………………………………………………………………………………….. 234

Этап 1: определение объема и планирование……………………………………………………… 235

Этап 2: сбор информации и разведка……………………………………………………………………. 235

Этап 3: составление перечня и сканирование служб………………………………………….. 236

Этап 4: исследование уязвимостей……………………………………………………………………….. 236

Этап 5: эксплуатация……………………………………………………………………………………………… 236

Этап 6: отчетность………………………………………………………………………………………………….. 236

Стандартные определения……………………………………………………………………………………………… 237

Рейтинг уязвимостей………………………………………………………………………………………………………… 237

Краткое резюме………………………………………………………………………………………………………………… 238

Графическое представление результатов тестирования…………………………………….. 238

Список уязвимостей………………………………………………………………………………………………… 238

Обобщенный анализ……………………………………………………………………………………………….. 239

Стратегические рекомендации………………………………………………………………………………. 239

Техническое резюме………………………………………………………………………………………………………… 240

Низкий уровень — 1……………………………………………………………………………………………….. 240

Низкий уровень — 2……………………………………………………………………………………………….. 241

Высокий уровень — 1…………………………………………………………………………………………….. 242

Высокий уровень — 2…………………………………………………………………………………………….. 244

Низкий уровень — 3……………………………………………………………………………………………….. 245

Средний уровень — 1……………………………………………………………………………………………… 246

Средний уровень — 2……………………………………………………………………………………………… 247

Высокий уровень — 3…………………………………………………………………………………………….. 248

Высокий уровень — 4…………………………………………………………………………………………….. 249

Ссылки………………………………………………………………………………………………………………………………. 250

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

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

Вышла книга “Случай с Евсейкой. Сказки”

Случай с Евсейкой. Сказки

 книгу вошли одни из самых известных сказок выдающегося писателя  Максима Горького  «Миша», «Воробьишко», «Иванушка-дурачок», «Случай с Евсейкой». Герои этих сказок — мальчик Евсейка, любопытный воробьишко, добрый, но недогадливый Иванушка, начинающий писатель Миша — очень похожи на современных детей. Кроме того, произведения Горького, словно посредники, передают детям разнообразные знания об окружающем мире. А сам Горький считал, что книжки для самых маленьких должны быть просты, понятны, и  самое главное, учить добру.

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

 

Выдающийся отечественный писатель Максим Горький был организатором и редактором первого советского журнала для детей «Северное сияние», первого детского издательства «Детгиз».  С особой ответственностью он подходил к созданию сказок для детей, помня о своем нелегком детстве. Простота изложения, мудрость, добрый юмор — причина того, что произведения великого писателя столь востребованы и по сегодняшний день, не случайно его сказки вошли в золотой фонд детской литературы.

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

 

Книгу можно купить в нашем интернет-магазине.

 

О художнике

Инна Глебова
Глебова Инна Валерьевна
Родилась в городе Брянске. Окончила Российскую академию живописи ваяния и зодчества им. Глазунова. В 2006г.принимала участие во III Всероссийском конкурсе молодых художников им. П.М. Третьякова. Сотрудничает с издательствами Москвы и Санкт-Петербурга: «Адонис», «Алтей»,«Филипок и Ко», «Школьная книга», «Издательство Сретенского монастыря», «Искателькнига», «Махаон», «Антология», «Качели» , «БХВ». Член Союза художников Подмосковья. Преподаватель в детской изостудии.

Об авторе

Максим Горький
Максим Горький (Алексей Максимович Пешков) родился 28 марта  1868 г. в Нижнем Новгороде. Его отец был столяром-краснодеревщиком, мать происходила из мещанской семьи. После окончания ремесленного училища пытался поступить в Казанский университет. С 1888 года ездил по России, общаясь с революционными деятелями и участвуя в нелегальных кружках.
В начале 1906 года Максим Горький прибыл в Америку, спасаясь от преследования царских властей, где пробыл до осени. Здесь были написаны памфлеты “Мои интервью” и очерки “В Америке”. Вернувшись в Россию в 1906 году Горький написал роман “Мать”. В 1921 г. эмигрировал в знак протеста против политики советской власти, но в 1931 г. вернулся. Еще при жизни, в 1932 г. в честь 40-летие писательской деятельности Горького его имя было присвоено городу Нижнему Новгороду. Горький пять раз был номинирован на Нобелевскую премию по литературе.
Опубликовано

Скидка 25% в честь Дня Тестировщика!

День тестировщика

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

‼ 9 сентября эти специалисты отмечают свой профессиональный праздник – День тестировщика. В честь этой даты мы предлагаем скидку 25% на книги по тестированию и информационной безопасности:

👉 Что такое тестирование. Курс молодого бойца

👉 Дружеское знакомство с тестированием программ

👉 Пентест. Секреты этичного взлома 

👉 Взлом. Приемы, трюки и секреты хакеров. Версия 2.0

🎁 Торопитесь! Скидка будет действовать только один день, 9 сентября!

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

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

Представляем книгу “Квантовые информационные системы. Теория и практика применения”

Квантовые информационные системы. Теория и практика применения

В издательстве “БХВ” вышла книга Сергея Запрягаева “Квантовые информационные системы. Теория и практика применения“.

Учебное пособие представляет собой введение в квантовые информационные системы. Рассмотрены  основные вопросы квантовой теории, классическая и квантовая модели информационных систем, квантовые алгоритмы и квантовые каналы связи, элементная база квантовых компьютеров. Дан обзор физических методов реализации кубитов,  квантовых языков программирования (Open QASM, Qiskit) и программных оболочек (IBM Q Experience, Quantum Composer, Jupiter Notebooks). Рассмотрены практические вопросы  реализации квантовых алгоритмов, применения квантовых информационных систем к решению задач квантовой криптографии,  использования защищенных квантовых каналов связи и др.

Для студентов направлений “Математика и компьютерные науки” и “Информационные системы и технологии”

Запрягаев-Сергей-Александрович

Запрягаев Сергей Александрович, доктор физико-математических наук, профессор кафедры цифровых технологий факультета компьютерных наук Воронежского государственного университета. Почетный работник высшего профессионального образования Российской Федерации. Автор более 550 научных публикаций в области физики, математики, в том числе квантовой теории информации и квантовых вычислений.

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

Оглавление 3
Предисловие 7
Часть 1. Квантовая теория 12
1 Основы квантовой теории 13
1.1 Постулат состояния 13
1.2 Алгебра операторов 19
1.3 Принцип суперпозиции состояний 23
1.4 Постулат об операторах физических величин 25
1.5 Постулат об измерении физической величины 28
1.6 Постулат об эволюции квантовых состояний 31
1.7 Представление квантовых состояний и операторов 33
1.8 Координатное представление квантовой теории 38
1.9 Преобразование квантовых состояний 43
1.10 Оператор момента импульса 48
1.11 Оператор углового момента 50
1.12 Квантовая теория и уравнение Шрёдингера 53
1.13 Квантовые интегралы движения 57
1.14 Примеры решения уравнения Шрёдингера 59
2 Спин 73
2.1 Спин электрона 73
2.2 Свойства матриц Паули 75
2.3 Собственные векторы оператора спина 1/2 78
2.4 Вращение собственных векторов матриц Паули 81
2.5 Уравнение Паули 84
2.6 Прецессия спина в однородном магнитном поле 86
2.7 Спиновый резонанс для свободного электрона 88
2.8 Многоэлектронные атомы. Молекулы 92
2.9 Кубит 99
З Матрица плотности 102
3.1 Чистые и смешанные состояния 102
3.2 Эволюция оператора матрицы плотности 109
3.3 Спиновая матрица плотности 111
3.4 Теорема Шмидта 115
Часть П. Классическая модель информационных систем 117
4 Компьютерные технологии 118
4.1 Основные понятия алгебры логики 119
4.2 Классические логические гейты 121
4.3 Обратимые логические гейты 129
4.4 Коррекция ошибок в классических каналах связи 136
4.5 Классическое шифрование. RSA алгоритм 138
Часть III. Квантовая модель информационных систем 141

5 Квантовые компьютерные технологии 142
5.1 Введение 142
5.2 Сфера Блоха 144
5.3 Однокубитовые гейты 145
5.4 Квантовый интерферометр 150
5.5 Квантовый регистр 153
5.6 Многокубитовые квантовые гейты 156
5.7 Преобразование многокубитовых регистров 162
5.8 Невозможность клонирования кубита 165
5.9 Запутанные состояния 166
5.10 Декогеренция 170
5.11 Вычисление функций и квантовый параллелизм 174
5.12 Общие свойства оператора Уолша Адамара 179
6 Квантовые алгоритмы 182
6.1 Алгоритм Дойча (Deutsch) 182
6.2 Алгоритм Дойча-Йожи (Deutsch-Jozsa) 187
6.3 Алгоритм Саймона 191
6.4 Квантовое преобразование Фурье 195
6.5 Квантовая цепь алгоритма преобразования Фурье 198
6.6 Оценка фазы 206
6.7 Квантовая цепь оценки фазы 209
6.8 Возврат фазы в регистр данных 213
6.9 Собственные значения улитарного оператора 215
6.10 Алгоритм Шора 218
6.11 Алгоритм Гравера. 224
Часть IV. Квантовые каналы связи 229
7 Применение квантовых каналов связи 230
7.1 Квантовый канал связи 230
7.2 Квантовая телепортация 231
7.3 Сверхплотное кодирование 236
7.4 Коррекция ошибок в квантовых каналах связи 239
7.5 Протокол кваптового распределепия ключа ВВ84 242
7.6 Обнаружение злоумышленника в протоколе ВВ84 247
7.7 Протокол квантового распределения ключа В92 249
7.8 Протоколы на основе запутанных состояний 253
7.9 Атаки на протоколы распределения ключа 256
Часть V. Физические реализации квантовых вычислений 259
8 Элементная база 260
8.1 Ионная ловушка 260
8.2 Ядерный магнитный резонанс 267
8.3 Сверхпроводники 271
8.4 Другие технологии 276
8.5 Квантовый компьютер IBM 278
8.5.1 Платформа IBM Quantum Experience 279
8.5.2 Quantum Composer 280
8.5.3 Язык Open QASM 285
8.5.4 Отладочный комплект Qiskit 287
Приложения 290
А Алгоритм факторизации чисел 290
А.1 Порядок числа по модулю 291
А.2 Алгоритм разложения числа 291
В Алгоритм Шора для произвольного периода 294
В.1 Пример 295
С Алгоритм RSA 298
С.1 RSА-шифрование 299
С.2 Цифровая подпись 300
С.3 Взлом RSА-шифрования 300
D Практическая работа на IBM Q 302
D.1 Работа с IBM Q 303
D.2 Пример 312
Литература 315

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

Представляем книгу “Kubernetes на практике”

Kubernetes на практике

Представляем долгожданную книгу Александра Бранда, Ричарда Ландера, Джоша Россо и Джона Харриса “Kubernetes на практике.

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

Это руководство поможет вам:

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

Александр Бранд начал использовать Kubernetes в 2016 году, помогая в создании одного из первых установщиков этой системы в компании Apprenda. С тех пор Александр поработал в Heptio и VMware, где он занимался проектированием и реализацией платформ на основе Kubernetes для организаций в разных отраслях, включая финансы, здравоохранение, легкую промышленность и др. Являясь программистом по призванию, Александр также участвовал в разработке Kubernetes и других открытых проектов в облачно-ориентированной экосистеме.

Рич Ландер

Рич Ландер был в числе первых пользователей Docker и еще в 2015 году начал применять контейнеры для выполнения промышленных рабочих заданий. Он усвоил пользу контейнерной оркестрации на собственном опыте и выполняет промышленные приложения в Kubernetes, начиная с версии 1.3. Используя накопленные знания, Рич впоследствии поработал в командах инженерно-технического обеспечения в таких компаниях, как CoreOS (RedHat), Heptio и VMware, помогая внедрять Kubernetes и облачно-ориентированные технологии предприятиям в производственной, торговой и других сферах.

Джош Россо

Джош Россо помогает организациям внедрять Kubernetes с момента выхода версии 1.2 (2016 год). За это время он поработал инженером и архитектором в CoreOS (RedHat), Heptio и теперь в VMware. Он участвовал в проектировании и реализации вычислительных платформ для финансовых учреждений, создании граничных вычислительных систем для поддержки 5G и многих других проектах. У него есть опыт работы с окружениями, варьирующимися от аппаратных комплексов, которые администрируются внутри предприятий, до виртуальных машин, предоставляемых облачными провайдерами.

Джон Харрис

Джон Харрис применяет Docker с 2014 года. Он консультирует многие компании из списка Fortune 50, помогая им успешно внедрять контейнерные технологии и методики. Обладая опытом создания облачно-ориентированных архитектур, проектирования и DevOps, он помогает компаниям любых размеров создавать надежные платформы и приложения на основе Kubernetes. Прежде чем перейти в VMware (через Heptio), он работал архитектором в компании Docker, консультируя ее наиболее стратегически важных клиентов.

 

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

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

ПРИГЛАШАЕМ НА 35-Ю ММКЯ: БОЛЕЕ 350 МЕРОПРИЯТИЙ ПОД КУПОЛОМ «ГОСТИНОГО ДВОРА»

35-я Московская международная книжная ярмарка

Сегодня в Москве стартовала 35-я Московская международная книжная ярмарка.  Она будет проходить со 2 по 5 сентября 2022 года в выставочном комплексе «Гостиный Двор» (г. Москва, ул. Ильинка, д. 4), в 150 метрах от Кремля и Красной площади.

Более 300 участников представят на ММКЯ новинки и бестселлеры всех жанров по издательским ценам.

За четыре дня ярмарки состоится более 350 мероприятий: презентации книг, встречи с авторами, дискуссии, читки, поэтические перформанс.

Добро пожаловать на наш стенд Д19!

Мы отобрали для вас самые лучшие книги.

Налетай, торопись, книгой детской закупись!!!

ММКЯ35. Наш стенд Д19
Опубликовано

Вышла долгожданная книга “Информационная безопасность для пользователя. Правила самозащиты в Интернете”

Информационная безопасность для пользователя. Правила самозащиты в Интернете

В издательстве “БХВ” вышла книга Михаила Райтмана “Информационная безопасность для пользователя. Правила самозащиты в Интернете“.

Книга о безопасной работе в Интернете и защите персональных данных, в том числе с соблюдением мер анонимизации и приватности. Рассматриваются вопросы выбора надежных паролей, использования прокси-серверов, анонимных сетей и VPN, технологии шифрования и защищенного общения. Особое внимание уделено анонимной операционной системе Tails, рекомендуемой Эдвардом Сноуденом. Приведены способы конспиративного общения по защищенным каналам связи и подключения к анонимным сетям, таким как I2P RetroShare и др. Даются практические рекомендации по безопасной работе с торрентами, мессенджерами, файловыми архивами. Книга поможет разобраться в устройстве Даркнета и варезной Сцены. Отдельная глава посвящена луковой архитектуре и браузеру Tor. Особое внимание уделено кастомизации устанавливаемых программ.

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

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

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

Райтман Михаил — специалист в области ИТ-технологий, автор и редактор книг по компьютерной тематике. Пишет на тему безопасной работы в Интернете и защиты компьютеров и мобильных устройств пользователей. Автор бестселлера «Как найти и скачать в Интернете любые файлы», выдержавшего 5 переизданий, а также книги «Искусство легального, анонимного и безопасного доступа к ресурсам Интернета», положенной в основу данного издания.

Книгу “Информационная безопасность для пользователя. Правила самозащиты в Интернете” можно купить со скидкой в интернет-магазине издательства “БХВ”.

Оглавление

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

Часть I. Анонимность и конфиденциальность в Интернете       15

Глава 1. Защита персональных данных…………………………………………………. 17

Защита компьютеров и мобильных устройств……………………………………………………………………….. 18

Шифрование данных в операционной системе Windows……………………………………………….. 20

Упрощенное шифрование Windows…………………………………………………………………………. 20

Стандартное шифрование BitLocker………………………………………………………………………. 21

Шифрование данных в операционной системе macOS………………………………………………….. 22

Шифрование данных на iOS/iPadOS-устройствах………………………………………………………….. 24

Шифрование данных на Android-устройствах………………………………………………………………… 26

Система разблокировки Google Smart Lock……………………………………………………………. 27

Защита портативных накопителей данных…………………………………………………………………………….. 28

Безопасность при использовании сетей Wi-Fi…………………………………………………………………………. 29

Угрозы, возникающие при подключении к открытой сети Wi-Fi……………………………………. 30

Защита собственной сети Wi-Fi………………………………………………………………………………………… 33

Еще о защите персональных данных………………………………………………………………………………………. 36

Безопасный веб-серфинг……………………………………………………………………………………………………………. 38

Приватные режимы браузеров………………………………………………………………………………………….. 38

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

Расширение HTTPS Everywhere………………………………………………………………………………………… 40

Удаление истории посещений и cookie-файлов………………………………………………………………. 41

Глава 2. Надежные пароли и двухфакторная аутентификация………………. 44

Создание надежных паролей……………………………………………………………………………………………………. 45

О «секретных вопросах»……………………………………………………………………………………………………………. 45

Менеджеры паролей………………………………………………………………………………………………………………….. 46

Выбор мастер-пароля………………………………………………………………………………………………………… 47

Использование файла-ключа……………………………………………………………………………………………. 47

Комбинация мастер-пароля и файла-ключа……………………………………………………………………. 47

Работа с программой KeePassXC……………………………………………………………………………………… 48

Установка программы………………………………………………………………………………………………. 48

Добавление паролей…………………………………………………………………………………………………. 48

Использование паролей……………………………………………………………………………………………. 50

Дополнительные функции………………………………………………………………………………………… 50

Синхронизация паролей между несколькими устройствами…………………………………………. 50

Двухфакторная аутентификация и одноразовые пароли………………………………………………………. 51

Настройка двухфакторной аутентификации…………………………………………………………………… 51

Как включить двухфакторную аутентификацию?………………………………………………………….. 53

Создание второстепенных аккаунтов……………………………………………………………………………………… 54

Глава 3. Фишинговые атаки………………………………………………………………….. 55

Признаки фишинговой атаки…………………………………………………………………………………………………….. 55

Защита от фишинговых атак…………………………………………………………………………………………………….. 62

Проверка писем через отправителей………………………………………………………………………………… 62

Использование облачных хранилищ и файловых хостингов………………………………………… 63

Безопасный просмотр подозрительных документов………………………………………………………. 63

Анализ отправленных по электронной почте сообщений……………………………………………… 64

Аутентификация электронной почты……………………………………………………………………………….. 64

Глава 4. Вредоносные программы и защита от них……………………………….. 65

Виды вредоносных программ…………………………………………………………………………………………………… 65

Вирусы………………………………………………………………………………………………………………………………… 65

Черви……………………………………………………………………………………………………………………………………. 66

Троянские программы……………………………………………………………………………………………………….. 67

DNS-спуферы…………………………………………………………………………………………………………….. 68

RAT-инструменты…………………………………………………………………………………………………….. 68

Блокировщики…………………………………………………………………………………………………………… 68

Ботнеты……………………………………………………………………………………………………………………… 69

Буткиты……………………………………………………………………………………………………………………… 69

Бэкдоры……………………………………………………………………………………………………………………… 69

Банковские трояны……………………………………………………………………………………………………. 69

Вымогатели……………………………………………………………………………………………………………….. 70

Даунлоадеры…………………………………………………………………………………………………………….. 70

Дропперы…………………………………………………………………………………………………………………… 70

Загрузчики…………………………………………………………………………………………………………………. 71

Кейлоггеры………………………………………………………………………………………………………………… 71

Кликеры……………………………………………………………………………………………………………………… 71

Майнеры……………………………………………………………………………………………………………………. 71

Оверлеи………………………………………………………………………………………………………………………. 71

Платные вызовы и SMS-сообщения………………………………………………………………………… 71

Прокси-трояны………………………………………………………………………………………………………….. 72

Руткиты………………………………………………………………………………………………………………………. 72

Рутовальщики……………………………………………………………………………………………………………. 72

Стилеры (PSW)………………………………………………………………………………………………………….. 73

Шифровальщики……………………………………………………………………………………………………….. 73

Шпионское ПО…………………………………………………………………………………………………………… 73

Эксплойты…………………………………………………………………………………………………………………. 73

Прочие вредоносные программы……………………………………………………………………………………… 73

Adware………………………………………………………………………………………………………………………… 74

Pornware……………………………………………………………………………………………………………………… 74

Riskware……………………………………………………………………………………………………………………… 75

Stalkerware…………………………………………………………………………………………………………………. 76

Другие киберугрозы…………………………………………………………………………………………………………………… 77

APT-атаки……………………………………………………………………………………………………………………………. 77

DDoS-атаки…………………………………………………………………………………………………………………………. 77

MITM-атаки (атака «человек посередине»)…………………………………………………………………….. 77

SQL-инъекции (внедрение SQL-кода)……………………………………………………………………………….. 78

Вишинг………………………………………………………………………………………………………………………………… 78

Дипфейки…………………………………………………………………………………………………………………………….. 78

Кликджекинг……………………………………………………………………………………………………………………….. 78

Кража банковских данных……………………………………………………………………………………………….. 79

Кража личности…………………………………………………………………………………………………………………. 79

Целевые атаки…………………………………………………………………………………………………………………….. 79

Как защититься от вредоносных программ?…………………………………………………………………………… 80

Антивирусные программы………………………………………………………………………………………………… 82

Онлайн-проверка файлов на вирусы………………………………………………………………………………… 85

Действия при обнаружении вредоносной программы……………………………………………………………. 86

Глава 5. Бесследное удаление данных……………………………………………………. 88

Удаление файлов в программе BleachBit………………………………………………………………………………… 89

Интерфейс программы BleachBit………………………………………………………………………………………. 89

Безвозвратное удаление файлов и папок в программе BleachBit………………………………….. 90

Ограничения программ надежного удаления данных……………………………………………………………. 91

Уничтожение данных с жестких дисков………………………………………………………………………………….. 91

Уничтожение оптических дисков……………………………………………………………………………………………… 92

Надежное стирание данных с твердотельных накопителей…………………………………………………. 93

Глава 6. Вкратце о шифровании…………………………………………………………….. 94

Шифрование: три важных понятия………………………………………………………………………………………….. 94

Закрытые и открытые ключи…………………………………………………………………………………………….. 94

Сертификаты безопасности………………………………………………………………………………………………. 94

Отпечатки ключей……………………………………………………………………………………………………………… 95

Основы PGP-шифрования………………………………………………………………………………………………………….. 95

Шифрование с двумя ключами…………………………………………………………………………………………. 96

Электронная подпись………………………………………………………………………………………………………… 96

Принцип работы PGP…………………………………………………………………………………………………………. 97

Сеть доверия……………………………………………………………………………………………………………………….. 98

Метаданные: что не может PGP……………………………………………………………………………………….. 98

Практическое руководство по PGP-шифрованию…………………………………………………………………… 99

Установка Mozilla Thunderbird……………………………………………………………………………………….. 100

Создание ключей……………………………………………………………………………………………………………… 102

Оповещение своих адресатов об использовании PGP………………………………………………….. 103

Поиск других пользователей PGP…………………………………………………………………………………… 105

Подтверждение принятых ключей………………………………………………………………………………….. 107

Отправка зашифрованных сообщений…………………………………………………………………………… 108

Чтение зашифрованных сообщений……………………………………………………………………………….. 109

Отзыв PGP-ключа……………………………………………………………………………………………………………… 109

Глава 7. Приватный обмен информацией…………………………………………….. 111

Основы безопасного общения………………………………………………………………………………………………… 111

Принцип работы сквозного шифрования……………………………………………………………………….. 111

Голосовые вызовы……………………………………………………………………………………………………………. 112

SMS- и MMS-сообщения………………………………………………………………………………………………….. 112

Мгновенные сообщения…………………………………………………………………………………………………… 112

Электронная почта………………………………………………………………………………………………………….. 113

Безопасность при использовании сотовой связи………………………………………………………………….. 113

Определение местонахождения……………………………………………………………………………………… 115

Отслеживание сигнала по вышкам сотовой связи……………………………………………….. 115

Отслеживание сигнала с помощью IMSI-ловушки……………………………………………… 115

Отслеживание сигнала с помощью Wi-Fi и Bluetooth………………………………………….. 116

Утечка данных о местонахождении при работе приложений и веб-серфинге….. 117

Пользовательские данные……………………………………………………………………………………… 118

Выключение телефона…………………………………………………………………………………………………….. 118

Одноразовые телефоны…………………………………………………………………………………………………… 118

Защита от прослушивания сотовой связи……………………………………………………………………… 120

Заражение телефона вредоносной программой……………………………………………………………. 120

Защита от анализа содержимого телефона…………………………………………………………………… 121

Приватная электронная почта……………………………………………………………………………………………….. 121

Приватное получение/отправка SMS-сообщений………………………………………………………………… 123

Приватная голосовая связь……………………………………………………………………………………………………… 124

Программа Signal……………………………………………………………………………………………………………… 124

Установка и первый запуск……………………………………………………………………………………. 125

Делаем зашифрованный звонок…………………………………………………………………………….. 126

Отправляем зашифрованное сообщение………………………………………………………………. 126

Приватный обмен мгновенными сообщениями…………………………………………………………………….. 127

Клиентское приложение qTox………………………………………………………………………………………… 127

Telegram…………………………………………………………………………………………………………………………….. 129

Общение в Telegram………………………………………………………………………………………………… 130

Секретные чаты………………………………………………………………………………………………………. 131

Создание секретного чата……………………………………………………………………………… 132

Самоуничтожение сообщений………………………………………………………………………. 132

Удаление аккаунта…………………………………………………………………………………………………. 132

Pidgin………………………………………………………………………………………………………………………………….. 133

Установка Pidgin с OTR………………………………………………………………………………………….. 133

Добавление учетной записи…………………………………………………………………………………… 134

Добавление контакта……………………………………………………………………………………………… 135

Настройка модуля OTR………………………………………………………………………………………….. 136

Безопасное общение……………………………………………………………………………………………….. 137

Adium………………………………………………………………………………………………………………………………… 138

Установка программы Adium………………………………………………………………………………… 139

Настройка учетной записи…………………………………………………………………………………….. 139

Защищенный чат…………………………………………………………………………………………………….. 140

 

Глава 8. Безопасное подключение к Интернету……………………………………. 143

Использование альтернативных адресов веб-ресурсов………………………………………………………. 144

Использование анонимайзеров………………………………………………………………………………………………. 148

Настройка системы для работы через прокси-серверы……………………………………………………….. 151

Подключение компьютеров…………………………………………………………………………………………….. 151

Настройки для Windows…………………………………………………………………………………………. 152

Настройки для macOS……………………………………………………………………………………………. 153

Подключение мобильных устройств……………………………………………………………………………… 154

Настройки для iOS………………………………………………………………………………………………….. 154

Настройки для Android…………………………………………………………………………………………… 155

Использование цепочек прокси………………………………………………………………………………………. 155

Использование сценариев автоконфигурации прокси-сервера…………………………………… 157

Подключение компьютеров……………………………………………………………………………………. 157

Настройки для Windows…………………………………………………………………………………. 157

Настройки для macOS……………………………………………………………………………………. 158

Подключение мобильных устройств…………………………………………………………………….. 158

Настройки для iOS………………………………………………………………………………………….. 158

Настройки для Android…………………………………………………………………………………… 159

Использование VPN-сервисов…………………………………………………………………………………………………. 159

VPN-сервис Surfshark……………………………………………………………………………………………………….. 160

Универсальное решение ZenMate………………………………………………………………………………….. 162

SSH-туннель к серверу Amazon……………………………………………………………………………………… 164

Изменение IP-адресов DNS-серверов……………………………………………………………………………………… 171

Настройки для Windows………………………………………………………………………………………………….. 173

Настройки для macOS……………………………………………………………………………………………………… 176

Настройки для iOS/iPadOS………………………………………………………………………………………………. 176

Настройки для Android……………………………………………………………………………………………………. 177

Маршрутизаторы и прочие сетевые устройства………………………………………………………….. 177

Использование туннельных брокеров IPv6…………………………………………………………………………… 178

Вкратце о IPv4 и IPv6………………………………………………………………………………………………………. 179

Использование туннельных брокеров……………………………………………………………………………. 181

Подключение к Интернету через внешние устройства………………………………………………………… 184

Настройки для Android……………………………………………………………………………………………………. 185

Настройки для iOS/iPadOS………………………………………………………………………………………………. 187

Часть II. Анонимные сети…………………………………………………………. 189

Глава 9. Основные анонимные сети…………………………………………………….. 191

Базовые сведения об анонимных сетях…………………………………………………………………………………. 191

Децентрализованные анонимные сети………………………………………………………………………………….. 192

Bitmessage…………………………………………………………………………………………………………………………. 192

Freenet……………………………………………………………………………………………………………………………….. 194

Gnutella……………………………………………………………………………………………………………………………… 194

I2P……………………………………………………………………………………………………………………………………… 196

RetroShare…………………………………………………………………………………………………………………………. 196

ZeroNet………………………………………………………………………………………………………………………………. 196

Гибридные анонимные сети……………………………………………………………………………………………………. 197

Cjdns………………………………………………………………………………………………………………………………….. 197

Psiphon………………………………………………………………………………………………………………………………. 198

Tor……………………………………………………………………………………………………………………………………… 200

JAP…………………………………………………………………………………………………………………………………………….. 200

Глава 10. Freenet: концепция свободной сети………………………………………. 204

Принцип работы………………………………………………………………………………………………………………………. 204

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

Просмотр и публикация фрисайтов……………………………………………………………………………………….. 205

Глава 11. I2P: проект невидимого Интернета……………………………………….. 207

Принцип работы сети I2P……………………………………………………………………………………………………….. 208

Чесночная маршрутизация……………………………………………………………………………………………………… 210

Установка программного обеспечения I2P…………………………………………………………………………… 211

Настройка браузеров для работы с I2P………………………………………………………………………………… 214

Настройки для Windows………………………………………………………………………………………………….. 215

Настройки для macOS……………………………………………………………………………………………………… 216

Проверка работоспособности I2P………………………………………………………………………………………….. 216

Глава 12. Платформа RetroShare………………………………………………………….. 218

Принцип работы………………………………………………………………………………………………………………………. 218

Общение в RetroShare………………………………………………………………………………………………………………. 219

Обмен файлами в RetroShare…………………………………………………………………………………………………… 220

Установка и настройка клиента RetroShare………………………………………………………………………….. 221

Добавление друзей………………………………………………………………………………………………………………….. 222

Глава 13. Tor: луковая маршрутизация……………………………………………….. 225

Луковая маршрутизация…………………………………………………………………………………………………………. 226

Принцип работы Tor………………………………………………………………………………………………………………… 227

Установка приложения Tor Browser……………………………………………………………………………………….. 230

Часть III. Обеспечение максимального уровня анонимности и безопасности с помощью Tails………………………………………………………………………….. 233

Глава 14. Основы операционной системы Tails……………………………………. 235

Что такое Tails?………………………………………………………………………………………………………………………… 235

Системные требования Tails…………………………………………………………………………………………………… 236

Программное обеспечение в составе Tails…………………………………………………………………………….. 236

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

Скомпрометированное аппаратное обеспечение…………………………………………………………. 239

Установка и подключение к недоверенным системам………………………………………………….. 239

Модификация BIOS и другого встроенного ПО…………………………………………………………….. 239

Перехват трафика с выходных узлов Tor………………………………………………………………………. 239

Вскрытие использования Tor и Tails………………………………………………………………………………. 240

Атаки посредника…………………………………………………………………………………………………………….. 240

Атаки на опознание трафика………………………………………………………………………………………….. 241

Недостатки шифрования документов…………………………………………………………………………….. 241

Метаданные документов и открытые данные зашифрованных сообщений………………. 242

Системы глобальной слежки…………………………………………………………………………………………… 242

Двойная жизнь………………………………………………………………………………………………………………….. 243

Слабые пароли…………………………………………………………………………………………………………………. 243

Эволюция Tails…………………………………………………………………………………………………………………. 243

Обеспечение защиты пользователя Tails……………………………………………………………………………….. 243

Сокрытие факта использования Tails…………………………………………………………………………………….. 245

Важные замечания касательно посещаемых сайтов……………………………………………………. 245

Важные замечания касательно провайдеров и сетевых администраторов……………….. 245

Глава 15. Загрузка и установка Tails……………………………………………………. 246

Загрузка и проверка образа Tails…………………………………………………………………………………………… 246

Выбор типа носителя………………………………………………………………………………………………………………. 247

Развертывание ISO-образа системы………………………………………………………………………………………. 248

Развертывание ISO-образа Tails на DVD……………………………………………………………………….. 248

ОС Windows……………………………………………………………………………………………………………… 248

MacOS………………………………………………………………………………………………………………………. 250

ОС Linux…………………………………………………………………………………………………………………… 250

В окружении GNOME…………………………………………………………………………………….. 250

В окружении KDE…………………………………………………………………………………………… 251

Развертывание ISO-образа Tails на Flash-накопитель………………………………………………….. 251

ОС Windows……………………………………………………………………………………………………………… 251

MacOS………………………………………………………………………………………………………………………. 252

ОС Linux…………………………………………………………………………………………………………………… 252

Развертывание Tails на Flash-накопитель с помощью Tails Installer…………………… 252

Обновление Tails………………………………………………………………………………………………………………………. 254

Автоматическое обновление с помощью Tails Upgrader………………………………………………. 254

Обновление вручную с помощью Tails Installer…………………………………………………………….. 255

Глава 16. Запуск Tails…………………………………………………………………………… 256

Запуск операционной системы Tails………………………………………………………………………………………. 256

Параметры загрузки………………………………………………………………………………………………………… 260

Пароль администратора………………………………………………………………………………………… 260

Анонимизация MAC-адресов…………………………………………………………………………………. 261

Необходимость в смене MAC-адреса…………………………………………………………… 261

Отмена анонимизации MAC-адреса…………………………………………………………….. 262

Офлайновый режим………………………………………………………………………………………………… 263

Небезопасный браузер…………………………………………………………………………………………… 263

Настройка подключения через Tor………………………………………………………………………………… 264

Обзор рабочего стола Tails…………………………………………………………………………………………………….. 268

Верхняя навигационная панель……………………………………………………………………………………… 268

Обзор приложений…………………………………………………………………………………………………………… 270

Рабочий стол…………………………………………………………………………………………………………………….. 270

Зашифрованное хранилище……………………………………………………………………………………………………. 271

Меры безопасности при работе с зашифрованным хранилищем……………………………….. 271

Создание зашифрованного хранилища…………………………………………………………………………. 272

Запуск мастера создания зашифрованного хранилища……………………………………… 272

Настройки хранилища…………………………………………………………………………………………… 273

Использование зашифрованного хранилища……………………………………………………………….. 276

Копирование зашифрованного хранилища на новый носитель………………………………….. 276

Удаление зашифрованного хранилища…………………………………………………………………………. 277

Безопасное стирание зашифрованного хранилища……………………………………………………… 277

Завершение работы Tails………………………………………………………………………………………………………… 277

Безопасное стирание Tails………………………………………………………………………………………………………. 278

ОС Windows………………………………………………………………………………………………………………………. 278

MacOS……………………………………………………………………………………………………………………………….. 279

ОС Linux……………………………………………………………………………………………………………………………. 280

Глава 17. Анонимное подключение к Интернету в Tails……………………….. 282

Способы подключения к Интернету в Tails…………………………………………………………………………… 282

Информация о подключении в приложении Onion Circuits………………………………………………….. 284

Безопасный веб-серфинг в Tor Browser………………………………………………………………………………….. 285

Упреждающая защита с помощью AppArmor……………………………………………………………….. 285

Шифрование передачи данных с помощью HTTPS……………………………………………………… 285

Расширение HTTPS Everywhere………………………………………………………………………………………. 286

Защита от вредоносного JavaScript-кода………………………………………………………………………. 287

Дополнение NoScript для управления JavaScript-сценариями……………………………………… 287

Изменение уровня безопасности…………………………………………………………………………………….. 287

Смена цепочки узлов в Tor Browser………………………………………………………………………………… 288

Смена личности в Tor Browser………………………………………………………………………………………… 288

Функция Letterboxing……………………………………………………………………………………………………….. 289

Анонимное общение в мессенджере Pidgin……………………………………………………………………………. 289

Протокол шифрования OTR……………………………………………………………………………………………. 290

Защищенная электронная почта Thunderbird……………………………………………………………………….. 290

Настройка учетной записи……………………………………………………………………………………………… 290

OpenPGP-шифрование……………………………………………………………………………………………………… 292

Обеспечение дополнительной защиты…………………………………………………………………………… 292

Обмен файлами с помощью OnionShare………………………………………………………………………………… 292

Глава 18. Шифрование и конфиденциальность в Tails…………………………. 294

Доступ к жесткому диску компьютера…………………………………………………………………………………… 294

Экранная клавиатура……………………………………………………………………………………………………………… 295

Зашифрованные разделы………………………………………………………………………………………………………… 295

Создание зашифрованных разделов………………………………………………………………………………. 295

Определение внешнего носителя…………………………………………………………………………… 295

Форматирование носителя…………………………………………………………………………………….. 296

Создание зашифрованного раздела……………………………………………………………………… 296

Доступ к ранее созданным зашифрованным разделам………………………………………………… 298

Шифрование текста с помощью OpenPGP…………………………………………………………………………….. 299

Шифрование сообщения с помощью пароля…………………………………………………………………. 300

Шифрование и подписание сообщения с помощью открытого ключа……………………….. 302

Расшифровка и проверка сообщения……………………………………………………………………………… 303

Надежное удаление данных…………………………………………………………………………………………………… 305

Бесследное удаление файлов………………………………………………………………………………………….. 307

Затирание свободного места………………………………………………………………………………………….. 308

Управление паролями с помощью KeePassXC……………………………………………………………………… 308

Создание и сохранение базы паролей…………………………………………………………………………… 309

Разблокировка базы данных в новом сеансе работы…………………………………………………… 310

Использование KeePassXC для подстановки паролей………………………………………………….. 310

Вычисление контрольных сумм с помощью GtkHash………………………………………………………….. 310

Предотвращение атак методом холодной перезагрузки……………………………………………………… 311

Глава 19. Работа с файлами в Tails……………………………………………………….. 312

Работа с документами…………………………………………………………………………………………………………….. 312

Просмотр и редактирование графических файлов……………………………………………………………….. 313

Управление мультимедийными данными……………………………………………………………………………… 314

Печать и сканирование……………………………………………………………………………………………………………. 315

Глава 20. Дополнительные возможности работы с Tails……………………….. 317

Установка дополнительного программного обеспечения…………………………………………………… 317

Запуск Tails в виртуальной машине……………………………………………………………………………………….. 318

Обеспечение безопасности……………………………………………………………………………………………… 318

Приложения виртуализации……………………………………………………………………………………………. 319

VirtualBox………………………………………………………………………………………………………………………….. 319

Установка VirtualBox……………………………………………………………………………………………… 319

Запуск Tails из ISO-образа……………………………………………………………………………………… 319

Обеспечение безопасности при работе в локальной сети……………………………………………………. 322

Приложения…………………………………………………………………………………… 323

Приложение 1. Даркнет: подполье Интернета………………………………………. 325

Глубинная паутина и Даркнет……………………………………………………………………………………………….. 325

Доступ к Даркнету…………………………………………………………………………………………………………………… 326

Анонимная мобильность…………………………………………………………………………………………………………. 326

Аудитория Даркнета……………………………………………………………………………………………………………….. 327

Черные рынки Даркнета………………………………………………………………………………………………………….. 329

Криптовалюты…………………………………………………………………………………………………………………………. 329

Реакция властей на Даркнет…………………………………………………………………………………………………… 330

Заключение………………………………………………………………………………………………………………………………. 330

Приложение 2. Варез и Сцена………………………………………………………………. 332

Варез: киберпиратство……………………………………………………………………………………………………………. 332

История киберпиратства…………………………………………………………………………………………………. 334

Причины, повлиявшие на рост пиратства…………………………………………………………….. 334

Распространение через скомпрометированные FTP-серверы…………………………….. 335

Автоматизированное распространение вареза с помощью IRC-ботов…………….. 335

Разновидности вареза……………………………………………………………………………………………………… 336

Пиратство в сфере киноиндустрии…………………………………………………………………………………. 337

Обозначения варезных файлов……………………………………………………………………………………….. 338

Формат…………………………………………………………………………………………………………………….. 339

Архивация……………………………………………………………………………………………………………….. 339

Имена файлов………………………………………………………………………………………………………….. 340

Сопроводительные файлы релизов……………………………………………………………………….. 340

Файл FILE_ID.DIZ…………………………………………………………………………………………… 340

NFO-файлы………………………………………………………………………………………………………. 341

SFV-файл…………………………………………………………………………………………………………. 343

Прочие файлы…………………………………………………………………………………………………. 343

Последствия нарушения стандартов……………………………………………………………………………… 344

Аудио- и видеорелизы……………………………………………………………………………………………………… 344

Типы видеорелизов…………………………………………………………………………………………………. 344

Типы аудиорелизов………………………………………………………………………………………………… 350

Релизы программного обеспечения………………………………………………………………………………… 351

Инструменты обхода защиты программ от нелегального копирования…………………….. 352

Преследование по закону………………………………………………………………………………………………… 355

Опасности, связанные с использованием вареза…………………………………………………………… 355

Варезные сайты……………………………………………………………………………………………………………….. 358

Форумы, где ссылки лежат……………………………………………………………………………………………… 361

FTP- и HTTP-архивы………………………………………………………………………………………………………… 362

Электронные библиотеки………………………………………………………………………………………………… 364

Сцена: андеграунд Интернета……………………………………………………………………………………………….. 365

Развитие Сцены………………………………………………………………………………………………………………… 365

Создание релизов…………………………………………………………………………………………………………….. 366

«Нюки» релизов………………………………………………………………………………………………………………… 366

Взлом и обратная разработка………………………………………………………………………………………… 368

Топ-сайты…………………………………………………………………………………………………………………………. 368

Система кредитов…………………………………………………………………………………………………………….. 369

Варезные группы……………………………………………………………………………………………………………… 369

Курьеры…………………………………………………………………………………………………………………… 369

Релизные группы…………………………………………………………………………………………………….. 369

aPOCALYPSE pRODUCTION cREW (aPC)……………………………………………………. 370

Challenge Of Reverse Engineering (CORE)………………………………………………………. 370

Centropy…………………………………………………………………………………………………………… 371

CLASS (CLS)……………………………………………………………………………………………………. 371

DEViANCE……………………………………………………………………………………………………….. 372

DrinkOrDie………………………………………………………………………………………………………… 372

Echelon…………………………………………………………………………………………………………….. 374

FairLight……………………………………………………………………………………………………………. 374

HYBRID…………………………………………………………………………………………………………… 375

International Network of Crackers (INC)…………………………………………………………. 375

Kalisto………………………………………………………………………………………………………………. 375

LineZer0 (Lz0)………………………………………………………………………………………………….. 376

Myth…………………………………………………………………………………………………………………. 376

PARADOX (PDX)……………………………………………………………………………………………… 377

Rabid Neurosis (RNS)……………………………………………………………………………………….. 377

Radium…………………………………………………………………………………………………………….. 378

Razor 1911 (RZR)……………………………………………………………………………………………. 378

RELOADED (RLD)…………………………………………………………………………………………… 379

RiSCiSO……………………………………………………………………………………………………………. 379

SKIDROW………………………………………………………………………………………………………… 380

Superior Art Creations (SAC)……………………………………………………………………………. 381

The Humble Guys (THG)…………………………………………………………………………………. 381

Tristar and Red Sector Incorporated (TRSI)…………………………………………………….. 383

United Software Association (USA)………………………………………………………………….. 383

Несколько слов в заключение раздела…………………………………………………………………. 383

Приложение 3. Компьютерное искусство……………………………………………… 385

Искусство ASCII-Art………………………………………………………………………………………………………………… 385

Трекерная музыка……………………………………………………………………………………………………………………. 387

Интро, демо и крэктро……………………………………………………………………………………………………………… 390

Источники……………………………………………………………………………………………. 393

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