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

Как сохранить свои данные и конфиденциальность в безопасности?

Мои данные. Моя конфиденциальность. Мой выбор

Представляем книгу “Мои данные. Моя конфиденциальность. Мой выбор”.

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

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

 

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

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

Отзывы.. 13

Об авторе. 14

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

О русском издании книги. 16

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

Глава 1. Пролог. 21

Введение. 21

Прежде чем мы начнем… 21

Кому стоит прочитать эту книгу?. 22

Как читать эту книгу?. 23

Что такое #РохитРекомендует?. 23

Базовый уровень. 24

Средний уровень. 24

Высокий уровень. 25

Экспертный уровень. 25

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

Глава 2. Интернет и конфиденциальность. 28

Введение. 28

Конфиденциальность? Какая конфиденциальность?! 29

Microsoft 30

Facebook. 31

Cambridge Analytica. 31

Злоумышленники и угрозы.. 32

Пассивные злоумышленники. 33

Активные злоумышленники. 33

Навязчивая реклама. 34

Невидимые угрозы.. 34

Что мы уже знаем о вас. 34

Основы шпионажа. 36

Расширенный поиск или OSINT.. 37

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

Глава 3. Устройства с операционной системой Android. 40

Введение. 40

Экосистема Google-Android. 40

Android Open-Source Project (AOSP) 42

Почему Google делает это?. 43

Что такое ROM (постоянное запоминающее устройство, ПЗУ)?. 43

Официальные прошивки. 44

Пользовательские прошивки. 44

Официальные прошивки против пользовательских. 45

Android и конфиденциальность. 47

Телеметрия от Google. 47

Телеметрия не от Google. 49

Телеметрия от OnePlus. 49

Телеметрия от Xiaomi и утечка данных. 49

…и от других! 50

Рекомендации и предложения. 50

Датчики. 50

Разрешения. 51

#РохитРекомендует. 52

Телеметрия от Google. 52

Базовый уровень (1 балл) 53

Средний уровень (2 балла) 54

Высокий уровень (3 балла) 55

Экспертный уровень (5 баллов) 56

Телеметрия не от Google. 56

Базовый уровень (1 балл) 57

Датчики. 57

Базовый уровень (1 балл) 58

Разрешения. 59

Базовый уровень (1 балл) 59

Средний уровень (2 балла) 62

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

Глава 4. Apple iPhone. 64

Введение. 64

Экосистема Apple. 65

iOS. 66

iCloud. 66

Джейлбрейк. 67

Apple и конфиденциальность. 69

Датчики. 70

Разрешения. 70

Приложение Настройки (Settings) 71

Аналитика и реклама. 71

#РохитРекомендует. 73

iOS и iCloud. 73

Датчики. 75

Разрешения. 76

Настройки | Конфиденциальность (Settings | Privacy) 79

Аналитика и реклама. 80

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

Глава 5. Приложения для смартфона. 84

«Мусорное» ПО.. 84

Как определить «мусорные» приложения на Android?. 85

Вредоносное ПО.. 85

Какие существуют виды вредоносных программ?. 85

Как я узнаю, что стал жертвой вредоносного ПО?. 87

Тогда почему никто ничего не делает?. 87

Как я могу предотвратить атаки вредоносных программ?. 88

Технология «песочниц». 89

Разрешения. 89

#РохитРекомендует. 90

«Мусорные» приложения. 91

На Android. 91

Удаление «мусорных» программ на устройствах Apple. 95

Вредоносное ПО.. 95

Технология «песочниц». 96

Разрешения. 97

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

Глава 6. «Умные» устройства и Интернет вещей. 99

Введение. 99

Интернет вещей. 100

Уязвимости безопасности в Интернете вещей и «умных» устройствах. 101

Приложение Strava. 102

Смарт-телевизоры.. 102

Alexa, Siri и Google. 103

«Умные» устройства. 104

#РохитРекомендует. 104

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

Глава 7. Операционные системы для настольных компьютеров. 108

Введение. 108

Операционные системы.. 109

Microsoft Windows. 109

Современные версии Windows (11, 10, 8.1, и 8) 110

Windows 7 и более ранние версии. 111

macOS. 112

Linux. 113

Конфигурации с несколькими ОС.. 115

Пользователь по умолчанию: администратор vs гость. 117

Телеметрия. 118

Телеметрия Windows 10/11. 119

Диагностика и обратная связь. 119

Регистрация нажатий клавиш.. 121

Cortana. 122

Wi-Fi Sense. 123

Keychain и KeySteal от Apple. 124

Другие настройки конфиденциальности. 124

#РохитРекомендует. 125

Операционная система (ОС) 125

Шпион против шпиона! 128

Телеметрия. 129

Другие настройки конфиденциальности. 130

macOS. 132

Linux. 133

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

Глава 8. Приложения для настольных компьютеров. 136

Введение. 136

Приложения. 137

«Мусорное» ПО.. 138

Утилиты под торговой маркой производителя. 139

Сторонние приложения и утилиты.. 140

Интегрированное «мусорное» ПО.. 141

Программное обеспечение безопасности. 142

Брандмауэры.. 142

Антивирусы и защита от вредоносных программ.. 142

#РохитРекомендует. 142

Приложения. 143

Песочницы.. 145

Шифрование файлов. 145

Восстановление системы.. 146

Удаление «мусорного» ПО.. 147

Windows 10 и 11. 147

Apple (macOS) 151

Linux. 151

Обеспечение безопасности программными средствами. 152

Windows. 152

Брандмауэры.. 152

Антивирусы и антивредоносное ПО.. 153

macOS и Linux. 154

Брандмауэры.. 154

Антивирус и антивредоносное ПО.. 155

Брандмауэры.. 156

Антивирусы и антивредоносное ПО.. 156

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

Глава 9. Браузеры для настольных компьютеров. 159

Введение. 159

Как работают современные браузеры?. 159

Популярные браузеры.. 160

Браузеры с защитой конфиденциальности. 161

Браузер Brave. 161

Браузер Epic. 162

Браузер Tor 162

Является ли Tor действительно анонимным?. 163

Настройки конфиденциальности. 164

Приватные окна. 165

Отказ от телеметрии. 165

Синхронизация и персонализация. 165

Интеграция с поисковой системой. 165

Файлы cookie, отслеживание и блокировка контента. 166

Формы и автозаполнение. 166

Разрешения и настройки сайтов. 166

Плагины и расширения. 167

Разница между плагинами и расширениями. 167

Плагины и расширения принципиально разные. 167

Потенциальные проблемы безопасности из-за плагинов. 168

Потенциальные проблемы безопасности, связанные с расширениями. 169

#РохитРекомендует. 170

Средний уровень (10 баллов) 177

Высокий уровень (15 баллов) 180

Экспертный уровень (25 баллов) 182

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

Глава 10. Службы — электронная почта. 186

Введение. 186

Электронная почта. 186

Доступ к электронной почте. 187

Веб-порталы.. 187

Почтовые приложения-клиенты.. 188

Компрометация электронной почты.. 188

Фишинг. 188

Слабые пароли. 189

Вредоносное ПО.. 190

Реклама по электронной почте. 191

Размещение собственного почтового сервера. 191

Использование почтового сервиса, заботящегося о конфиденциальности. 192

Спам.. 192

#РохитРекомендует. 193

Доступ к вашей электронной почте. 193

Компрометация электронной почты.. 195

Фишинг. 195

Пароли и аутентификация. 196

Вредоносное ПО.. 197

Реклама по электронной почте. 199

Спам.. 200

Предотвращение утечки данных и смягчение последствий. 202

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

Глава 11. Программное обеспечение как услуга
(Software-as-a-Service, SaaS) 206

Введение. 206

Итак, что такое SaaS?. 207

Типы SaaS. 208

Социальные услуги SaaS. 208

SaaS для шопинга. 208

Финансовые услуги SaaS. 209

Прочие услуги SaaS. 210

Вопросы конфиденциальности и безопасности. 211

Условия использования и политика конфиденциальности. 211

Надежность сервиса. 213

Безопасность и прозрачность. 213

Нарушение безопасности данных и реакция на них. 214

Обновления безопасности. 215

Доступ к данным.. 215

#РохитРекомендует. 216

Виды SaaS. 217

Проблемы конфиденциальности сервисов SaaS. 221

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

Глава 12. Сети: связь и Интернет. 225

Введение. 225

Итак, как работают сети?. 225

Проводные сети. 226

Беспроводные сети. 226

Распространенные векторы атак. 228

Идентификация. 228

Перехват. 229

Векторы атак на беспроводные сети. 230

Bluetooth. 232

NFC.. 233

#РохитРекомендует. 233

Базовый уровень (1 балл) 234

Средний уровень (2 балла) 235

Высокий уровень (3 балла) 236

Экспертный уровень (5 баллов) 239

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

Глава 13. Операционная безопасность (Operational Security, OPSEC) 242

Введение. 242

Видеть во всех противников. 243

Процесс OPSEC.. 244

Что можно и чего нельзя делать. 245

Мобильная связь. 245

Безопасность устройств. 246

Новые учетные записи. 247

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

Глава 14. Эпилог. 250

Введение. 250

Подсчет баллов. 251

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

Глава 15. Бонус: полезные советы и рекомендации. 254

10 разрешений Android в категории «Опасные». 254

Как настроить Android без служб Google. 257

Полезные приложения, об установке которых стоит задуматься. 260

Альтернативные магазины приложений. 263

Для Android. 264

Для Apple. 265

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

Проверка электронной почты на неизвестном компьютере. 266

Оценка степени вашей конфиденциальности. 267

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

Рохит Шриваства — серийный предприниматель, обладатель степени Microsoft MVP в области “Безопасность предприятий”. Консультирует ряд военных ведомств, правоохранительных органов, корпоративных и правительственных структур разных стран в сфере кибербезопасности. Рохит – основатель первой в Индии конференции и сообщества хакеров под названием “ClubHack”. Участвовал во многих технических и новостных мероприятиях, связанных с кибервойнами и кибербезопасностью, выступал на различных конференциях по всему миру, включая TEDx и Microsoft Digital Crime Convention. Разработал курс M.Tech по информационной безопасности, который в настоящее время преподается в Университете г. Пуна. Является приглашенным преподавателем в нескольких высших учебных заведениях, таких как Индийский институт технологии (IITs), Индийский институт управления (IIMs), Институт технологии и науки имени Бирлы (BITS) и др.

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

Новая книга Дениса Колисниченко: “Командная строка Linux”

Командная строка Linux

В книге рассматриваются задачи, которые выполняются из командной строки операционной системы Linux. Объясняется, как попасть в командную строку, работать в консоли, настраивать систему с помощью программ, обладающих только текстовым интерфейсом. Описаны особенности файловой системы Linux, наиболее полезные команды для работы с текстом, сетью и Интернетом, а также команды системного администратора. Особое внимание уделено написанию сценариев автоматизации рутинных задач на языках командных оболочек bash и tcsh. Рассмотрены способы перенаправления ввода-вывода, маски и псевдонимы, различные варианты запуска программ, эффективные приемы использования клавиатуры, примеры сложных команд и другие вопросы.

Эффективная работа в командной строке Linux.

Настоящий линуксоид должен уметь работать в консоли, что требует определенной квалификации пользователя. Рассмотрены задачи, которые выполняются из командной строки Linux. Объясняется, как попасть в командную строку, работать в консоли, настраивать систему с помощью программ, обладающих только текстовым интерфейсом. Описаны особенности файловой системы Linux, наиболее полезные команды для работы с текстом, сетью и  Интернетом, а также команды системного администратора. Особое внимание уделено написанию сценариев автоматизации рутинных задач на языках командных оболочек bash и tcsh. Рассмотрены способы  перенаправления ввода-вывода, маски и псевдонимы, различные варианты запуска программ, эффективные приемы использования клавиатуры, примеры сложных команд и другие вопросы.

  • Работа в консоли
  • Автоматизация на языках оболочек bash и tcsh
  • Особенности файловой системы Linux
  • Управление процессами
  • Команды системного администратора
  • Команды для обработки текста и для работы в сети

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

Глава 1. Как попасть в командную строку?…………………………………………….. 9

1.1. Переключаемся из графического режима в консоль………………………………………………………….. 9

1.2. Графические терминалы…………………………………………………………………………………………………….. 12

1.3. Удаленная консоль……………………………………………………………………………………………………………… 12

1.4. Завершение работы из консоли. Команды poweroff, halt, reboot, shutdown………………….. 14

Глава 2. Как работать в консоли?………………………………………………………….. 15

2.1. Ввод команд………………………………………………………………………………………………………………………… 15

2.2. Ввод/вывод и каналы………………………………………………………………………………………………………….. 16

2.3. Шесть полезных команд…………………………………………………………………………………………………….. 17

2.3.1. Команда wc……………………………………………………………………………………………………………………. 17

2.3.2. Команда head………………………………………………………………………………………………………………… 18

2.3.3. Команда cut…………………………………………………………………………………………………………………… 19

2.3.4. Команда grep…………………………………………………………………………………………………………………. 19

2.3.5. Команда sort………………………………………………………………………………………………………………….. 20

2.3.6. Команда uniq…………………………………………………………………………………………………………………. 21

Глава 3. Оболочка bash………………………………………………………………………….. 23

3.1. Маски имен файлов…………………………………………………………………………………………………………….. 23

3.2. Переменные окружения………………………………………………………………………………………………………. 24

3.3. Псевдонимы…………………………………………………………………………………………………………………………. 25

3.4. Изменение приглашения командной строки…………………………………………………………………….. 25

3.5. Еще раз о перенаправлении ввода/вывода………………………………………………………………………. 26

3.6. Пробелы в именах файлов………………………………………………………………………………………………….. 28

3.7. Инициализация переменных………………………………………………………………………………………………. 29

3.8. Просмотр истории команд…………………………………………………………………………………………………. 29

3.9. Вызов предыдущих команд……………………………………………………………………………………………….. 30

3.10. Защита от случайного удаления файла…………………………………………………………………………. 30

3.11. Использование последнего вывода команды…………………………………………………………………. 31

3.12. Редактирование командной строки…………………………………………………………………………………. 31

Глава 4. Файловая система. Команды для работы с файловой системой… 33

4.1. Особенности файловой системы Linux……………………………………………………………………………… 33

4.1.1. Имена файлов в Linux…………………………………………………………………………………………………… 33

4.1.2. Файлы и устройства……………………………………………………………………………………………………… 33

4.1.3. Корневая файловая система и монтирование…………………………………………………………….. 34

4.1.4. Стандартные каталоги Linux………………………………………………………………………………………. 35

4.2. Команды для работы с файлами и каталогами……………………………………………………………….. 36

4.2.1. Работа с файлами………………………………………………………………………………………………………….. 36

4.2.2. Работа с каталогами…………………………………………………………………………………………………….. 39

4.2.3. Удобная навигация по файловой системе…………………………………………………………………… 41

4.3. Команда ln: создание ссылок…………………………………………………………………………………………….. 44

4.4. Команды chmod, chown и chattr…………………………………………………………………………………………. 45

4.4.1. Команда chmod: права доступа к файлам и каталогам…………………………………………….. 45

4.4.2. Команда chown: смена владельца файла…………………………………………………………………… 47

4.4.3. Специальные права доступа (SUID и SGID)………………………………………………………………. 47

4.4.4. Команда chattr: атрибуты файла, запрет изменения файла……………………………………… 48

4.5. Монтирование файловых систем………………………………………………………………………………………. 49

4.5.1. Команды mount и umount……………………………………………………………………………………………… 49

4.5.2. Файлы устройств и монтирование………………………………………………………………………………. 50

Жесткие диски………………………………………………………………………………………………………………….. 50

Приводы оптических дисков…………………………………………………………………………………………… 52

Дискеты…………………………………………………………………………………………………………………………….. 52

Флешки и внешние жесткие диски………………………………………………………………………………….. 53

4.5.3. Опции монтирования файловых систем……………………………………………………………………… 53

4.5.4. Монтирование разделов при загрузке………………………………………………………………………… 54

4.5.5. Подробно о UUID и файле /etc/fstab……………………………………………………………………………. 56

4.5.6. Монтирование флешек…………………………………………………………………………………………………. 59

4.6. Настройка журнала файловой системы ext3…………………………………………………………………… 59

4.7. Файловая система ext4……………………………………………………………………………………………………….. 60

4.7.1. Сравнение ext3 и ext4…………………………………………………………………………………………………… 61

4.7.2. Совместимость с ext3……………………………………………………………………………………………………. 62

4.8. Особые команды…………………………………………………………………………………………………………………. 62

4.8.1. Команда mkfs: создание файловой системы……………………………………………………………….. 62

4.8.2. Команда fsck: проверка и восстановление файловой системы…………………………………. 62

4.8.3. Команда chroot: смена корневой файловой системы………………………………………………… 63

4.8.4. Установка скорости CD/DVD………………………………………………………………………………………. 63

4.8.5. Монтирование каталога к каталогу……………………………………………………………………………. 64

4.8.6. Команды поиска файлов………………………………………………………………………………………………. 64

4.9. Многофункциональная команда dd………………………………………………………………………………….. 65

4.9.1. Копирование файлов с помощью команды dd……………………………………………………………. 66

4.9.2. Разделение файла на несколько частей………………………………………………………………………. 67

4.9.3. Создание резервной копии жесткого диска………………………………………………………………… 67

4.9.4. Создание архива с резервной копией всего жесткого диска…………………………………….. 67

4.9.5. Уничтожение всех данных раздела жесткого диска………………………………………………….. 68

4.10. Команда du………………………………………………………………………………………………………………………… 68

Глава 5. Процессы…………………………………………………………………………………. 70

5.1. Оболочки, команды и программы……………………………………………………………………………………… 70

5.2. Родительский и дочерний процессы………………………………………………………………………………….. 71

5.3. Команды kill, killall, xkill и ps…………………………………………………………………………………………….. 72

5.4. Программа top: кто больше всех расходует процессорное время?……………………………….. 74

5.5. Команды nice и renice: изменение приоритета процесса………………………………………………… 76

5.6. Команда fuser: кто открыл ресурс?…………………………………………………………………………………… 77

Глава 6. Различные способы выполнения команд…………………………………. 78

6.1. Списки………………………………………………………………………………………………………………………………….. 78

6.1.1. Условные списки…………………………………………………………………………………………………………… 78

6.1.2. Безусловные списки………………………………………………………………………………………………………. 79

6.2. Подстановка………………………………………………………………………………………………………………………… 80

6.2.1. Подстановка команды………………………………………………………………………………………………….. 80

6.2.2. Подстановка процесса………………………………………………………………………………………………….. 81

6.3. Команда как строка……………………………………………………………………………………………………………. 82

6.3.1. Передача команды в виде аргумента………………………………………………………………………….. 82

6.3.2. Перенаправление команды на стандартный ввод bash…………………………………………….. 82

6.4. Удаленное выполнение команды по SSH…………………………………………………………………………. 83

6.5. Фоновое выполнение команд…………………………………………………………………………………………….. 83

Глава 7. Некоторые полезные команды…………………………………………………. 85

7.1. Команда seq…………………………………………………………………………………………………………………………. 85

7.2. Фигурные скобки…………………………………………………………………………………………………………………. 86

7.3. Команда find……………………………………………………………………………………………………………………….. 86

Глава 8. Команды для работы с текстом………………………………………………… 88

8.1. Команда sort: сортировка файлов…………………………………………………………………………………….. 88

8.2. Команда diff: сравнение файлов……………………………………………………………………………………….. 88

8.3. Команда diff3: сравнение трех файлов…………………………………………………………………………….. 89

8.4. Команда cmp: сравнение двух файлов……………………………………………………………………………… 90

8.5. Команда comm: еще одна команда для сравнения файлов……………………………………………… 90

8.6. Команда column: разбивка текста на столбцы………………………………………………………………… 91

8.7. Команда egrep: расширенный текстовый фильтр……………………………………………………………. 91

8.8. Команда expand: замена символов табуляции пробелами…………………………………………….. 92

8.9. Команда fmt…………………………………………………………………………………………………………………………. 93

8.10. Команда fold……………………………………………………………………………………………………………………… 93

8.11. Команда grep: текстовый фильтр……………………………………………………………………………………. 93

8.12. Команды more и less: постраничный вывод……………………………………………………………………. 94

8.13. Команды head и tail: вывод начала и хвоста файла……………………………………………………… 94

8.14. Команда look…………………………………………………………………………………………………………………….. 94

8.15. Команда split: разбиение файлов на несколько частей………………………………………………… 94

8.16. Команда unexpand: замена пробелов символами табуляции………………………………………. 95

8.17. Команды vi, nano, ee, mcedit, pico: текстовые редакторы……………………………………………… 95

8.18. Команда sed: потоковый текстовый редактор……………………………………………………………….. 99

8.19. Команда wc: подсчет слов в файле……………………………………………………………………………….. 100

8.20. Некоторые команды преобразования символов и форматов……………………………………… 101

Глава 9. Эффективное использование клавиатуры………………………………. 102

9.1. Работа с окнами………………………………………………………………………………………………………………… 102

9.2. Доступ к веб-браузерам из командной строки……………………………………………………………….. 104

9.3. Работаем с буфером обмена…………………………………………………………………………………………….. 106

Глава 10. Команды для работы с сетью и Интернетом…………………………. 107

10.1. Команда ifconfig: управление сетевыми интерфейсами……………………………………………… 107

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

10.2.1. Команда netstat: просмотр таблицы маршрутизации и другой
сетевой информации…………………………………………………………………………………………………………….. 109

10.2.2. Команда route: изменение таблицы маршрутизации……………………………………………. 113

10.3. Команды получения информации об узле……………………………………………………………………. 116

10.3.1. Получение информации о доменном имени……………………………………………………………. 116

10.3.2. Команды host и dig……………………………………………………………………………………………………. 116

10.3.3. Утилита DMitry…………………………………………………………………………………………………………. 118

10.4. Текстовые браузеры……………………………………………………………………………………………………….. 118

10.5. Команда ftp: FTP-клиент………………………………………………………………………………………………… 118

10.6. Команда wget: загрузка файлов…………………………………………………………………………………….. 120

10.7. Команды для диагностики сети…………………………………………………………………………………….. 121

10.8. Команда ssh…………………………………………………………………………………………………………………….. 125

10.9. Сетевой сканер nmap………………………………………………………………………………………………………. 127

10.9.1. Что такое nmap?………………………………………………………………………………………………………… 127

10.9.2. Где мне взять nmap?…………………………………………………………………………………………………. 128

10.9.3. Примеры использования nmap………………………………………………………………………………… 128

Глава 11. Команды системного администратора………………………………….. 131

11.1. Программы разметки диска……………………………………………………………………………………………. 131

11.1.1. Программа fdisk………………………………………………………………………………………………………… 131

11.1.2. Программа parted……………………………………………………………………………………………………… 134

11.1.3. Добавление диска на виртуальном сервере…………………………………………………………… 138

11.1.4. Расширение существующего диска…………………………………………………………………………. 141

11.1.5. Несколько слов о GPT. Утилиты для работы с GPT………………………………………………. 144

11.2. Информация о системе и пользователях………………………………………………………………………. 145

11.2.1. Команда uptime: информация о работе системы…………………………………………………… 145

11.2.2. Команда users: информация о пользователях………………………………………………………… 145

11.2.3. Команды w, who, ftpwho и whoami: информация о пользователях………………………. 146

11.2.4. Мониторинг работы системы………………………………………………………………………………….. 147

11.3. Планировщик at………………………………………………………………………………………………………………. 149

11.3.1. Команда at: добавление задания…………………………………………………………………………….. 149

11.3.2. Команды atq и atrm: очередь заданий и удаление задания………………………………….. 149

11.4. Планировщик crond………………………………………………………………………………………………………… 150

11.5. Команда date: вывод и установка даты и времени……………………………………………………… 151

11.6. Команды free и df: информация о системных ресурсах………………………………………………. 152

Глава 12. Автоматизация рутинных задач с помощью оболочки bash….. 153

12.1. Настройка bash……………………………………………………………………………………………………………….. 153

12.2. Автоматизация задач с помощью сценариев bash………………………………………………………. 154

12.3. Привет, мир!…………………………………………………………………………………………………………………….. 154

12.4. Использование переменных в собственных сценариях………………………………………………. 155

12.5. Передача параметров сценарию…………………………………………………………………………………… 156

12.6. Массивы и bash……………………………………………………………………………………………………………….. 157

12.7. Циклы……………………………………………………………………………………………………………………………….. 157

12.8. Условные операторы……………………………………………………………………………………………………… 158

12.9. Функции…………………………………………………………………………………………………………………………… 160

12.10. Примеры сценариев………………………………………………………………………………………………………. 160

12.10.1. Сценарий мониторинга журнала………………………………………………………………………….. 160

12.10.2. Переименование файлов………………………………………………………………………………………… 161

12.10.3. Преобразование систем счисления……………………………………………………………………….. 161

12.10.4. Проверка прав пользователя…………………………………………………………………………………. 162

12.10.5. Генератор имени временного файла…………………………………………………………………….. 162

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

Глава 13. Полезные примеры……………………………………………………………….. 164

13.1. Поиск дубликатов файлов……………………………………………………………………………………………… 164

13.2. Сценарий scanner……………………………………………………………………………………………………………. 165

13.3. Изменение прав доступа к файлам и каталогам………………………………………………………….. 166

13.4. Аварийный перезапуск сервисов…………………………………………………………………………………… 166

13.4.1. Проверка работоспособности веб-сервера…………………………………………………………….. 166

13.4.2. Проверка работоспособности MySQL……………………………………………………………………. 167

13.4.3. Если «падают» процессы…………………………………………………………………………………………. 167

13.5. Поиск битых ссылок с помощью AWK………………………………………………………………………….. 168

13.6. Считаем количество файлов в папке и подпапках………………………………………………………. 169

13.7. Резервное копирование базы данных……………………………………………………………………………. 169

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

Денис_Николавич_Колисниченко

Колисниченко Денис Николаевич, инженер-программист и системный администратор. Имеет богатый опыт эксплуатации и создания локальных сетей от домашних до уровня предприятия, разработки приложений для различных платформ. Автор более 50 книг компьютерной тематики, в том числе “Microsoft Windows 10. Первое знакомство”, “Самоучитель Microsoft Windows 8”, “Программирование для Android 5. Самоучитель”, “PHP и MySQL. Разработка веб-приложений”, “Планшет и смартфон на базе Android для ваших родителей”, “”Linux. От новичка к профессионалу” и др.

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

Интерпретируемое машинное обучение на Python

Интерпретируемое машинное обучение на Python

Представляем книгу Серга Масиса “Интерпретируемое машинное обучение на Python”.

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

На сайте издательства размещен архив с цветными иллюстрациями.

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

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

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

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

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

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

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

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

    Вы изучите:

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

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

Об авторе. 15

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

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

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

Что эта книга охватывает. 21

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

Загрузка файлов с исходным кодом.. 24

Загрузка цветных изображений. 25

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

Часть I. Введение в интерпретацию машинного обучения. 27

Глава 1. Интерпретация, интерпретируемость и объяснимость:
почему всё это важно?. 29

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

Что такое интерпретация машинного обучения?. 30

Изучение простой модели предсказания веса. 31

Понимание разницы между интерпретируемостью и объяснимостью.. 37

Что такое интерпретируемость?. 37

Что такое объяснимость?. 40

Деловое обоснование интерпретируемости. 42

Более качественные решения. 42

Более надежные бренды.. 44

Более высокий уровень этичности. 46

Более высокая прибыльность. 49

Резюме. 50

Источники изображений. 50

Справочные материалы.. 50

Глава 2. Ключевые понятия интерпретируемости. 52

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

Миссия. 52

Подробности о сердечно-сосудистых заболеваниях. 53

Подход. 54

Подготовительные работы.. 54

Загрузка библиотек. 54

Изучение проблемы и подготовка данных. 54

Ознакомление с типами методов интерпретации и диапазонами интерпретируемости  57

Типы методов модельной интерпретации. 61

Диапазоны модельной интерпретируемости. 61

Интерпретирование отдельных предсказаний с помощью логистической регрессии  62

Оценивание препятствий, мешающих интерпретируемости результатов машинного обучения  67

Нелинейность. 69

Интерактивность. 72

Немонотонность. 72

Миссия выполнена. 74

Резюме. 75

Справочные материалы.. 75

Глава 3. Трудности интерпретации. 76

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

Миссия. 76

Подход. 78

Подготовительные работы.. 78

Загрузка библиотек. 78

Изучение проблемы и подготовка данных. 79

Обзор традиционных методов модельной интерпретации. 84

Предсказывание минут задержки с помощью различных
регрессионных методов. 84

Классифицирование рейсов как задержанных либо незадержанных
с использованием различных классификационных методов. 89

Визуализация задержанных рейсов с помощью методов понижения размерности  96

Ограничения традиционных методов модельной интерпретации. 102

Изучение имманентно интерпретируемых моделей (типа белого ящика) 103

Обобщенные линейные модели. 103

Деревья решений. 118

RuleFit 123

Метод ближайших соседей. 125

Наивный Байес. 127

Распознавание компромисса между результативностью
и интерпретируемостью.. 130

Особые модельные свойства. 130

Диагностика результативности. 131

Обнаружение более новых интерпретируемых (аквариумных) моделей. 134

Объяснимая бустинговая машина. 134

Skoped-Rules. 138

Миссия выполнена. 140

Резюме. 141

Источник набора данных. 141

Справочные материалы.. 142

Часть II. Освоение методов интерпретации. 143

Глава 4. Основы важности признаков и их влияние. 145

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

Миссия. 146

Личность и очередность рождения. 146

Подход. 147

Подготовительные работы.. 147

Загрузка библиотек. 147

Изучение проблемы и подготовка данных. 148

Как измерить влияние признака на исход. 150

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

Важность признаков в логистической регрессии. 156

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

Важность признаков в многослойном персептроне. 161

Применение перестановочной важности признаков на практике. 162

Недостатки метода перестановочной важности признаков. 165

Интерпретирование графиков частичной зависимости. 166

Интеракционные графики частичной зависимости. 171

Недостатки графиков частичной зависимости. 174

Объяснение графиков индивидуального условного ожидания. 174

Недостатки графиков индивидуального условного ожидания. 179

Миссия выполнена. 179

Резюме. 180

Источник набора данных. 180

Справочные материалы.. 180

Глава 5. Модельно-агностические методы глобальной интерпретации. 182

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

Миссия. 183

Подход. 184

Подготовительные работы.. 185

Загрузка библиотек. 185

Изучение проблемы и подготовка данных. 186

Значения Шепли. 196

Интерпретирование сводки SHAP и графиков зависимости. 198

Генерирование сводных графиков SHAP. 202

Изучение взаимодействий. 204

Графики зависимости SHAP. 207

Силовые графики SHAP. 215

Графики накопленных локальных эффектов. 217

Глобальные суррогаты.. 221

Подгонка суррогатов. 221

Оценивание суррогатов. 222

Интерпретирование суррогатов. 223

Миссия выполнена. 225

Резюме. 225

Справочные материалы.. 226

Глава 6. Модельно-агностические методы локальной интерпретации. 227

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

Миссия. 227

Подход. 228

Подготовительные работы.. 229

Загрузка библиотек. 229

Изучение проблемы и подготовка данных. 230

Задействование ядерного объяснителя SHAP для локальных интерпретаций
со значениями SHAP. 236

Обучение модели C-SVC.. 237

Вычисление значений SHAP с помощью ядерного объяснителя. 239

Локальная интерпретация для группы предсказаний с использованием графиков решений  241

Локальная интерпретация по одному предсказанию за раз
с использованием силового графика. 244

Применение локально интерпретируемых модельно-агностических
объяснений. 247

Что такое LIME?. 247

Локальная интерпретация по одному предсказанию за раз
с использованием табличного объяснителя на основе LIME. 249

Использование метода LIME для NLP. 251

Обучение модели LightGBM.. 253

Локальная интерпретация по одному предсказанию за раз
с использованием текстового объяснителя на основе LIME. 254

Опробование SHAP в обработке естественного языка. 257

Сравнение SHAP с LIME. 260

Миссия выполнена. 261

Резюме. 262

Источник набора данных. 262

Справочные материалы.. 262

Глава 7. Якорные и контрфактические объяснения. 264

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

Миссия. 264

Необъективная смещенность в диагностиках риска рецидивизма. 266

Подход. 267

Подготовительные работы.. 267

Загрузка библиотек. 267

Изучение проблемы и подготовка данных. 268

Якорные объяснения. 278

Подготовительные работы для якорных и контрафактических
объяснений с помощью библиотеки alibi 279

Локальные интерпретации якорных объяснений. 281

Анализ контрфактических объяснений. 284

Контрфактические объяснения под руководством прототипов. 285

Получение контрфактических экземпляров и многого другого
с помощью инструмента What-If Tool (WIT) 289

Сравнение с помощью метода контрастивного объяснения. 299

Миссия выполнена. 303

Резюме. 304

Источник набора данных. 304

Справочные материалы.. 304

Глава 8. Визуализация сверточных нейронных сетей. 306

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

Миссия. 307

Подход. 308

Подготовительные работы.. 309

Загрузка библиотек. 309

Изучение проблемы и подготовка данных. 310

Диагностика CNN-классификатора традиционными методами интерпретации  315

Визуализирование процесса усвоения с помощью активационных методов. 323

Промежуточные активации. 325

Максимизация активации. 328

Оценивание ошибочных классификаций с помощью градиентных методов атрибуции  332

Карты значимости. 333

Метод градиентных карт активаций классов Grad-CAM.. 336

Интегрированные градиенты.. 338

Окончательная сборка. 341

Объяснение классификаций с помощью пертурбационных методов
атрибуции. 344

Окклюзивная чувствительность. 344

Объяснитель изображений методом LIME. 347

Метод контрастивных объяснений. 349

Окончательная сборка. 354

Бонусный метод: глубокий объяснитель SHAP. 357

Миссия выполнена. 358

Резюме. 359

Источники данных и изображений. 359

Справочные материалы.. 360

Глава 9. Методы интерпретации для многопеременного
прогнозирования и анализа чувствительности. 361

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

Миссия. 362

Подход. 364

Подготовительные работы.. 365

Загрузка библиотек. 365

Изучение проблемы и подготовка данных. 366

Диагностика моделей временного ряда с использованием традиционных методов интерпретации  375

Использование стандартных регрессионных метрик. 376

Агрегации предсказательных ошибок. 378

Оценивание как классификационная задача. 380

Генерирование LSTM-атрибуций с помощью интегрированных градиентов. 381

Вычисление глобальных и локальных атрибуций с помощью ядерного объяснителя SHAP  387

Зачем использовать ядерный объяснитель?. 387

Определение стратегии, позволяющей работать с моделью многопеременного временного ряда  388

Заложение основы для стратегии аппроксимации перестановок. 389

Выявление влияющих признаков с помощью факторной приоритизации. 394

Вычисление индексов чувствительности Морриса. 395

Анализирование элементарных эффектов. 398

Квантифицирование неопределенности и стоимостной чувствительности
с помощью фиксирования факторов. 401

Генерирование и предсказывание на образцах Сальтелли. 402

Выполнение анализа чувствительности по методу Соболя. 403

Встраивание реалистичной функции стоимости. 405

Миссия выполнена. 409

Резюме. 410

Источники данных и изображений. 411

Справочные материалы.. 411

Часть III. Настройка на интерпретируемость. 413

Глава 10. Отбор и конструирование признаков для обеспечения интерпретируемости  415

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

Миссия. 416

Подход. 417

Подготовительные работы.. 418

Загрузка библиотек. 418

Изучение проблемы и подготовка данных. 419

Изучение эффекта нерелевантных признаков. 420

Построение базовой модели. 421

Оценивание модели. 422

Обучение базовой модели на разных максимальных глубинах. 425

Обзор фильтрационных методов отбора признаков. 427

Базовые фильтрационные методы.. 428

Корреляционные фильтрационные методы.. 430

Ранжирующие фильтрационные методы.. 432

Сравнение фильтрационных методов. 434

Анализ встроенных методов отбора признаков. 435

Раскрытие потенциала оберточных, гибридных и продвинутых методов
отбора признаков. 439

Оберточные методы.. 439

Гибридные методы.. 441

Продвинутые методы.. 443

Оценивание всех моделей, построенных с применением отбора
признаков. 445

Обзор конструирования признаков. 447

Миссия выполнена. 455

Резюме. 457

Источники наборов данных. 457

Справочные материалы.. 457

Глава 11. Ослабление систематического смещения
и причинно-следственный вывод. 459

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

Миссия. 460

Подход. 461

Подготовительные работы.. 462

Загрузка библиотек. 462

Изучение проблемы и подготовка данных. 463

Обнаружение систематического смещения. 467

Визуализирование систематического смещения набора данных. 469

Квантифицирование систематического смещения набора данных. 472

Квантифицирование систематического смещения модели. 476

Ослабление систематического смещения. 479

Методы ослабления систематического смещения стадии
предварительной обработки. 480

Методы ослабления систематического смещения стадии
промежуточной обработки. 487

Методы ослабления систематического смещения стадии
последующей обработки. 490

Окончательная сборка. 493

Построение причинно-следственной модели. 495

Изучение результатов эксперимента. 497

Изучение причинно-следственных моделей. 500

Инициализация линейного дважды устойчивого ученика. 502

Обучение причинно-следственной модели. 502

Гетерогенные эффекты экспериментальной процедуры.. 503

Выбор политики. 507

Проверка устойчивости оценки. 510

Добавление случайной общей причины.. 510

Замена экспериментальной процедуры случайной переменной. 511

Миссия выполнена. 512

Резюме. 513

Источник набора данных. 513

Справочные материалы.. 513

Глава 12. Монотонные ограничения и настройка моделей
на интерпретируемость. 515

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

Миссия. 516

Подход. 518

Подготовительные работы.. 518

Загрузка библиотек. 519

Изучение проблемы и подготовка данных. 519

Установка ограничений с помощью конструирования признаков. 522

Упорядочение. 523

Дискретизация. 525

Члены взаимодействия и нелинейные преобразования. 526

Категориальное кодирование. 530

Другие подготовительные работы.. 531

Настройка моделей на интерпретируемость. 532

Настройка нейронной сети Keras. 533

Настройка других популярных модельных классов. 536

Оптимизация под объективность с помощью байесовой гиперпараметрической настройки и прикладных метрик. 544

Имплементирование модельных ограничений. 550

Ограничения в XGBoost 551

Ограничения в TensorFlow Lattice. 556

Миссия выполнена. 563

Резюме. 564

Источник набора данных. 565

Справочные материалы.. 565

Глава 13. Устойчивость к антагонизму. 566

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

Миссия. 567

Подход. 569

Подготовительные работы.. 569

Загрузка библиотек. 569

Изучение проблемы и подготовка данных. 570

Загрузка базовой модели CNN.. 573

Диагностика базового классификатора CNN.. 575

Эвазивные атаки. 576

Атака быстрым методом на основе знака градиента. 578

Атака методом инфинитной нормы Карлини и Вагнера. 581

Целенаправленная атака методом антагонистических заплат. 583

Защита от целенаправленных атак с помощью предобработки. 585

Защита от любой эвазивной атаки с помощью антагонистического
обучения устойчивого классификатора. 590

Оценивание и сертифицирование устойчивости к антагонизму. 595

Сравнение устойчивости модели с силой атаки. 595

Сертифицирование устойчивости с помощью рандомизированного сглаживания  597

Миссия выполнена. 604

Резюме. 605

Источники наборов данных. 605

Справочные материалы.. 606

Глава 14. Интерпретируемость машинного обучения: что дальше?. 607

Современное состояние интерпретируемости машинного обучения. 607

Связываем всё воедино! 607

Текущие тренды.. 612

Размышления о будущем интерпретируемости машинного обучения. 614

Новое видение машинного обучения. 615

Междисциплинарный подход. 616

Соответствующая требованиям стандартизация. 616

Исполнение регуляторных предписаний. 616

Бесшовная автоматизация машинного обучения со встроенной интерпретацией  617

Более тесная интеграция с инженерами MLOps. 617

Справочные материалы.. 618

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

Об авторе

Serg Masís

Серг Масис (Serg Masís) в течение последних двух десятилетий трудится на стыке веб-разработки, разработки приложений и аналитики. В настоящее время он является специалистом по климатическим и агрономическим данным в Syngenta, веду- щей агробизнес-компании с миссией по улучшению глобальной продовольственной безопасности. До этого стал одним из основателей стартапа, созданного Harvard Innovation Labs, который объединил возможности облачных вычислений и машинного обучения с принципами из науки принятия решений, чтобы знакомить пользователей с новыми местами и событиями. Независимо от того, к чему это относится: к досугу, болезням растений или пожизненной ценности клиента, — Серг увлечен нахождением часто недостающих связей между данными  и процессом принятия решений, и интерпретация результатов работы моделей машинного обучения эффективно помогает преодолевать этот разрыв.

Я рад, что моя книга получила 4,5 звезды в Goodreads и 4,7 в Amazon , а также следующие награды:и «Лучшая книга об искусственном интеллекте  всех времен» от Book Authority.

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

Представляем “Разбойничьи сказки”

Разбойничьи сказки

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

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

 

Авторы

Братья Чапеки

Писатель, журналист, драматург и переводчик Карел Чапек (1890–1938) и его старший брат художниккубист Йозеф Чапек (1887–1945) создали в соавторстве несколько произведений для взрослых и детей.

Их отец работал врачом на текстильной фабрике, а мама занималась фольклором. Йозеф был старше Карела на три года. Маленький Карел во всём подражал брату. Йозеф хорошо рисовал и Карел тоже брался за краски. Вдвоём они выходили на улицу, устанавливали табличку с надписью «Не глазеть» и рисовали. Став школьником, Йозеф решил написать роман. Младший брат тоже взялся за перо Так появился знаменитый роман «Война с саламандрами». Для своей дочери Алёнки Карел  писал для изумительные сказки, делал к ним смешные иллюстрации. На мультфильме по одной из этих сказок выросло пять поколений российских детей. Он назывался «Как кошечка и собачка мыли пол».

Художник

Зоя Канторович

Зоя Канторович — иллюстратор, дизайнер-полиграфист, выпускница отделения живописи СПБХУ им. Н.К. Рериха.

Переводчик

Наталья Рубцова

Наталья Рубцова — переводчик, преподаватель чешского языка, Ph.D. Закончила филологический факультет Нижегородского государственного университета им. Н. И. Лобачевского, а потом уехала на 6 лет в Чехию, в прекрасный город Брно, – учиться в докторантуре и преподавать в университете. Сейчас занимается изучением русско-чешских культурных связей, а также переводит книги для детей с чешского языка.

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

Новинка: книга-игра “Как славный рыцарь сэр Бидон дракона победил”

Как славный рыцарь сэр Бидон дракона победил.

Описание

Хотите весёлую историю из жизни рыцарей? Однажды утром к славному рыцарю сэру Бидону примчался королевский гонец со срочным приказом. Всего делов-то — сразиться с драконом, но… так бывает в обычной книге, а это — книга-игра! И поэтому читатель сам решает, как поступит наш герой. А значит, на каждой странице вас ждут головокружительные повороты сюжета!

Павел Линицкий по образованию психолог и знает, как увлечь детей чтением, его книга «Мой папа — пират» вошла в короткий список премии им. К. Чуковского.

Как славный рыцарь сэр Бидон дракона победил.

Жил в одном королевстве храбрый рыцарь. Были у него железные доспехи, он как их наденет — ну вылитый молочный бидон. Так его и прозвали: сэр Бидон. Однажды в королевстве завелся огнедышащий дракон, и пришло время сэру Бидону показать, кто тут настоящий рыцарь — он без промедления отправится на битву… Хотя,  может быть, вначале почитать в книжках, как правильно сражаться с драконами? И конечно, он никогда-никогда не будет врать, что болен!

У тебя в руках не просто книга, а книга-игра. Вместе с отважным рыцарем сэром Бидоном ты отправишься в путешествие — и только тебе решать, как поступит рыцарь на каждой странице. Вперёд, навстречу подвигам!

 

Об авторе

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

О художнике

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

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

Новинка! “Java. Состояние языка и его перспективы”

Java. Состояние языка и его перспективы

Книга о современном состоянии языка Java, векторе его развития, а также о грамотном программировании в духе паттернов GoF. Книга дает базовое представление о фреймворке Spring, контейнерах Docker, принципах ООП, затрагивая, в частности, переход к облачным решениям, обращение с IDE. Также освещены темы из enterprise-разработки: файловый ввод/вывод NIO2, многопоточность, локализация, интеграция и оптимизация производительности. В книге отражено состояние языка по состоянию на версию Java 17 с разбором некоторых аспектов Java 18.

Будет интересна специалистам, возвращающимся к работе с Java после перерыва, бэкенд-разработчикам, читателям, готовящимся к сертификационным экзаменам.

Изучив предложенные примеры, Вы:

  • познакомитесь с объектно-ориентированным программированием на Java;
  • основами фреймворка Spring;
  • контейнерами Docker;
  • структурами данных;
  • идиомами программирования.

Язык Java более 20 лет занимает ведущие позиции в программировании для больших предприятий, бэкенд-разработке, банковском секторе, распределенных вычислениях. Java – ключевой язык для программирования под Android, несмотря на растущую популярность Kotlin. Виртуальная машина Java (JVM) является платформой для множества сложных и востребованных языков, прежде всего, Kotlin и Scala. Наконец, именно Java и его крупный фреймворк Spring наиболее отвечают современным вызовам, связанным с облачными и бессерверными вычислениями.  При этом в последние 5-6 лет экосистема Java меняется на глазах. В области Enterprise-разработки открыто соперничают Java EE и Jakarta EE. Каденция версий Java ускорилась, и новая мажорная версия теперь выходит примерно раз в полгода. Естественно, приходится поддерживать и актуализировать массу legacy-кода, где в лучшем случае реализованы возможности Java 8, например, лямбда-выражения.

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

Нет фото

Федор Урванов обладает более чем тринадцатилетним опытом профессионального программирования. Обладает сертификатами 1Z0-803 (Oracle Certified Associate, Java SE 7 Programmer) и 1Z0-804 (Oracle Certified Professional, Java SE 7 Programmer), 7 лет ведёт блог по разработке программного обеспечения https://urvanov.ru, имеет богатый опыт коммерческой разработки на Java, участвовал в разработке программного обеспечения для нескольких крупнейших банков России.

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

Глава 1. Введение………………………………………… 7

1.1. Для кого эта книга……………………………………….. 7

1.2. Что понадобится…………………………………………. 7

1.3. Первая программа………………………………………. 8

1.4. Задания…………………………………………………… 11

Глава 2. Переменные…………………………………. 11

2.1. Типы переменных……………………………………… 11

2.2. Соглашение об именовании переменных…………. 13

2.3. Типы данных……………………………………………. 13

2.4. Значения по умолчанию………………………………. 14

2.5. Литералы………………………………………………… 15

2.6. Целочисленные литералы……………………………. 15

2.7. Литералы с плавающей точкой……………………… 16

2.8. Символьные и строковые литералы……………….. 17

2.9. Другие литералы……………………………………….. 18

2.10. Массивы……………………………………………….. 19

2.11. Задания…………………………………………………. 20

Глава 3. Операции……………………………………… 21

3.1. Операция присваивания……………………………… 21

3.2. Преобразование примитивных типов………………. 22

3.3. Расширяющее преобразование примитивов……… 22

3.4. Сужающее преобразование примитивов………….. 23

3.5. Арифметические операции…………………………… 24

3.6. Унарные операции…………………………………….. 26

3.7. Отличие постфиксного и префиксного инкремента и декремента            27

3.8. Операции сравнения………………………………….. 28

3.9. Логические И и ИЛИ…………………………………… 29

3.10. Операция instanceof…………………………………. 29

3.11. Тернарная операция…………………………………. 31

3.12. Битовые операции……………………………………. 31

3.13. Присвоение с выполнением другой операции….. 32

3.14. Приоритеты операций……………………………….. 33

3.15. Задания…………………………………………………. 34

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

4.1. Операторы управления порядком выполнения….. 36

4.2. Операторы if-then и if-then-else……………………… 37

4.3. Оператор switch………………………………………… 39

4.4. Оператор while………………………………………….. 43

4.5. Оператор do-while……………………………………… 45

4.6. Оператор for…………………………………………….. 45

4.7. Оператор break…………………………………………. 47

4.8. Оператор continue……………………………………… 48

4.9. Оператор return…………………………………………. 49

4.10. Задания…………………………………………………. 50

Глава 5. Классы и объекты………………………… 50

5.1. Классы……………………………………………………. 50

5.2. Поля………………………………………………………. 51

5.3. Объявление методов………………………………….. 53

5.4. Конструкторы……………………………………………. 56

5.5. Передача параметров…………………………………. 58

5.6. Сборка мусора………………………………………….. 61

5.7. Ключевое слово this…………………………………… 61

5.8. Ключевое слово static………………………………… 63

5.9. Ключевое слово final………………………………….. 64

5.10. Инициализация полей……………………………….. 66

5.11. Задания…………………………………………………. 68

Глава 6. Аннотации…………………………………….. 69

6.1. Объявление аннотаций……………………………….. 69

6.2. Предопределенные аннотации………………………. 72

6.3. Мета-аннотации………………………………………… 73

6.4. Задания…………………………………………………… 75

Глава 7. Вложенные классы
и лямбда-выражения………………………………….. 75

7.1. Что такое вложенные классы……………………….. 75

7.2. Для чего использовать вложенные классы………. 76

7.3. Статические вложенные классы……………………. 77

7.4. Внутренние классы……………………………………. 79

7.5. Внутренний класс, являющийся нестатическим членом класса              80

7.6. Локальные классы…………………………………….. 81

7.7. Анонимные классы…………………………………….. 82

7.8. Затенение переменных……………………………….. 84

7.9. Лямбда-выражения…………………………………….. 85

7.10. Ссылки на методы……………………………………. 89

7.11. Когда использовать вложенные классы, локальные классы, анонимные классы
и лямбда-выражения……………………………………… 91

7.12. Задания…………………………………………………. 92

Глава 8. Интерфейсы…………………………………. 93

8.1. Теория……………………………………………………. 93

8.2. Задания…………………………………………………… 99

Глава 9. Наследование……………………………….. 99

9.1. Введение…………………………………………………. 99

9.2. Приведение типов……………………………………. 101

9.3. Переопределение (overriding) и скрытие (hiding) методов       102

9.4. Использование ключевого слова super………….. 106

9.5. Общий предок Object и его методы……………….. 109

9.6. Ключевое слово final и неизменяемые классы…. 112

9.7. Абстрактные методы и классы…………………….. 112

9.8. Задания…………………………………………………. 113

Глава 10. Пакеты……………………………………… 114

10.1. Теория…………………………………………………. 114

10.2. Задания……………………………………………….. 118

Глава 11. Перечисления……………………………. 118

11.1. Теория…………………………………………………. 118

11.2. Задания……………………………………………….. 123

Глава 12. Записи………………………………………. 123

12.1. Теория…………………………………………………. 123

12.2. Задания……………………………………………….. 125

Глава 13. Числа………………………………………… 126

13.1. Введение……………………………………………… 126

13.2. BigInteger……………………………………………… 128

13.3. BigDecimal……………………………………………. 130

13.4. Math……………………………………………………. 132

13.5. Задания……………………………………………….. 133

Глава 14. Строки………………………………………. 134

14.1. Класс String…………………………………………… 134

14.2. Методы класса String………………………………. 140

14.3. StringBuilder и StringBuffer…………………………. 143

14.4. Задания……………………………………………….. 145

Глава 15. Автоупаковка и распаковка……….. 146

15.1. Теория…………………………………………………. 146

15.2. Задания……………………………………………….. 148

Глава 16. Optional…………………………………….. 149

16.1. Теория…………………………………………………. 149

16.2. Задания……………………………………………….. 154

Глава 17. Модули……………………………………… 154

17.1. Теория…………………………………………………. 154

17.2. Задания……………………………………………….. 159

Глава 18. Обобщения………………………………… 160

18.1. Введение……………………………………………… 160

18.2. Класс Lair……………………………………………… 160

18.3. Обобщенная версия класса Lair…………………. 161

18.4. Соглашение об именовании переменных типа.. 162

18.5. Создание экземпляра обобщенного типа и обращение к нему              162

18.6. Бриллиантовая операция (Diamond operator)…. 163

18.7. Несколько параметров типа………………………. 164

18.8. Сырой тип (Raw type)……………………………… 164

18.9. Сообщения об ошибках “unchecked”……………. 165

18.10. Обобщенные методы……………………………… 166

18.11. Ограниченные параметры типа…………………. 167

18.12. Обобщения, наследование и дочерние типы… 169

18.13. Выведение типов………………………………….. 171

18.14. Выведение типов и обобщенные методы…….. 172

18.15. Выведение типов и создание экземпляра обобщенного класса           173

18.16. Выведение типа и обобщенные конструкторы обобщенных и необобщенных классов          174

18.17. Целевые типы……………………………………… 175

18.18. Подстановочный символ (wildcard)……………. 176

18.19. Подстановочный символ, ограниченный сверху (Upper bounded wildcard)           176

18.20. Неограниченный подстановочный символ (Unbounded wildcard)         177

18.21. Подстановочные символы и дочерние типы… 179

18.22. Захват символа подстановки (Wildcard Capture) и вспомогательные методы       180

18.23. Руководство по использованию подстановочного символа 182

18.24. Стирание типа (Type Erasure)…………………… 184

18.25. Стирание типа в обобщенных типах…………… 184

18.26. Стирание типа в обобщенных методах……….. 185

18.27. Получение аргумента типа родительского класса 185

18.28. Влияние стирания типа и методы-мосты
(bridge methods)………………………………………….. 186

18.29. Методы-мосты (Bridge Methods)……………….. 187

18.30. Загрязнение кучи (Heap pollution)………………. 188

18.31. Подавление предупреждений для методов с произвольным количеством параметров с нематериализуемыми формальными
параметрами………………………………………………. 191

18.32. Ограничения обобщений…………………………. 192

18.33. Задания………………………………………………. 195

Глава 26. Коллекции…………………………………. 278

26.1. Введение……………………………………………… 278

26.2. Интерфейс Collection………………………………. 278

26.3. Интерфейс Set………………………………………. 280

26.4. Интерфейс List………………………………………. 281

26.5. Интерфейс Queue…………………………………… 283

26.6. Интерфейс Deque…………………………………… 284

26.7. Интерфейс Map……………………………………… 285

26.8. Интерфейс ConcurrentMap………………………… 286

26.9. Класс Dictionary и его наследник Hashtable…… 287

26.10. Сортировка объектов……………………………… 287

26.11. Интерфейс SortedSet……………………………… 292

26.12. Интерфейс SortedMap……………………………. 294

26.13. Другие реализации интерфейсов коллекций…. 295

26.14. Java Stream API……………………………………. 296

26.15. Алгоритмы…………………………………………… 303

26.16. Задания………………………………………………. 304

Глава 27. Дата и время……………………………… 305

27.1. Введение……………………………………………… 305

27.2. Класс Date……………………………………………. 305

27.3. Класс Calendar………………………………………. 306

27.4. Пакет java.time………………………………………. 308

27.5. Перечисление DayOfWeek……………………….. 308

27.6. Перечисление Month……………………………….. 309

27.7. Класс LocalDate……………………………………… 311

27.8. Класс LocalTime…………………………………….. 311

27.9. Класс LocalDateTime……………………………….. 311

27.10. Класс YearMonth…………………………………… 312

27.11. Класс MonthDay……………………………………. 313

27.12. Класс Year…………………………………………… 313

27.13. Классы ZoneId и ZoneOffset…………………….. 313

27.14. Класс ZonedDateTime…………………………….. 315

27.15. Класс OffsetDateTime…………………………….. 315

27.16. Класс OffsetTime………………………………….. 316

27.17. Класс Instant……………………………………….. 316

27.18. Форматирование и преобразование из строки. 317

27.19. Интерфейс TemporalAdjuster……………………. 318

27.20. Интерфейс TemporalQuery………………………. 319

27.21. Класс Duration……………………………………… 319

27.22. Перечисление ChronoUnit……………………….. 320

27.23. Класс Period………………………………………… 320

27.24. Класс Clock…………………………………………. 321

27.25. Задания………………………………………………. 321

Глава 28. Форматирование и парсинг………… 322

28.1. Введение……………………………………………… 322

28.2. Класс NumberFormat……………………………….. 323

28.3. Класс DecimalFormat………………………………. 324

28.4. Класс DateFormat…………………………………… 325

28.5. Класс DateTimeFormatter…………………………. 326

28.6. Класс SimpleDateFormat…………………………… 326

28.7. Класс PrintStream…………………………………… 328

28.8. Класс Formatter……………………………………… 328

28.9. Класс Scanner……………………………………….. 333

28.10. Задания………………………………………………. 335

Глава 29. Работа с консолью…………………….. 336

29.1. Теория…………………………………………………. 336

29.2. Задание……………………………………………….. 338

Глава 30. Локализация……………………………… 339

30.1. Теория…………………………………………………. 339

30.2. Задание……………………………………………….. 341

Глава 31. Пример сервиса со Spring………….. 342

31.1. Что за сервис мы напишем……………………….. 342

31.2. Spring Initializr………………………………………… 343

31.3. Разбор сгенерированного скелета приложения.. 346

31.4. Добавление конечных точек………………………. 349

31.5. Слой бизнес-сервисов……………………………… 351

31.6. Работа с базой данных…………………………….. 357

31.7. Вызов методов с Postman………………………… 360

31.8. Docker…………………………………………………. 360

31.9. Kubernetes……………………………………………. 363

31.10. Задания………………………………………………. 366

Глава 32. Заключение……………………………….. 367

 

 

 

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

Представляем книгу “Разработка веб-приложений с помощью ASP.Net Core MVC”

Разработка веб-приложений с помощью ASP.Net Core MVC

Книга посвящена фреймворку ASP.NET Core MVC. Представлены особенности MVC-архитектуры (Model-View-Controller), основные принципы проектирования веб-приложений и организации корректной работы с различными типами веб-запросов. Показано, как взаимодействовать с базами данных посредством популярных ORM (объектно-реляционное отображение). В книге рассматриваются методы определения пользовательского интерфейса с помощью среды Razor и открытых клиентских библиотек, описаны способы построения Web API и использование его в клиентских приложениях.  Подробно описаны различные варианты публикации приложений. Электронный архив на сайте издательства содержит результаты выполнения всех рассмотренных в книге проектов.

ASP.NET Core MVC для современных веб-разработчиков

  • ASP.NET Core MVC
  • Контроллеры MVC
  • Razor
  • Entity Framework Core
  • Web API
  • Фронтенд-фреймворки AJAX
Умрихин Евгений

Умрихин Евгений Дмитриевич, кандидат технических наук, инженер-программист в крупной региональной страховой компании. Имеет многолетний опыт разработки и внедрения распределенных IT-решений с использованием веб-сервисов ASP.NET и мобильных платформ Android и iOS. Обладатель ряда авторских свидетельств об официальной регистрации программ для ЭВМ.

Книгу “Разработка веб-приложений с помощью ASP.Net Core MVC” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Введение………………………………………………………………………………………………….. 7

Что вы узнаете из этой книги………………………………………………………………………………………………………. 9

Что нужно знать…………………………………………………………………………………………………………………………. 11

Основные термины и понятия…………………………………………………………………………………………………… 11

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

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

Глава 1. Основные сведения………………………………………………………………….. 13

Создание первого приложения…………………………………………………………………………………………………. 15

Структура проекта и файловая система………………………………………………………………………………….. 18

Точка входа в приложение……………………………………………………………………………………………………….. 20

Конфигурация приложения………………………………………………………………………………………………………. 23

Создание сервисов и внедрение зависимостей……………………………………………………………………….. 27

Компоненты Middleware……………………………………………………………………………………………………………. 35

Использование статического контента……………………………………………………………………………………. 42

Добавление инфраструктуры MVC…………………………………………………………………………………………. 43

Глава 2. Контроллеры MVC…………………………………………………………………… 46

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

Понятие контроллера………………………………………………………………………………………………………………… 53

Результаты действий контроллера…………………………………………………………………………………………… 54

Общие сведения о представлениях…………………………………………………………………………………………… 57

Представление списков данных……………………………………………………………………………………………….. 59

Создание службы данных…………………………………………………………………………………………………………. 61

Атрибуты контроллера……………………………………………………………………………………………………………… 64

Ограничение типов запросов……………………………………………………………………………………………………. 65

Контекст контроллера………………………………………………………………………………………………………………. 65

Отправка файлов с сервера………………………………………………………………………………………………………. 68

Глава 3. Модели…………………………………………………………………………………….. 72

Понятие модели………………………………………………………………………………………………………………………….. 72

Передача моделей в представление…………………………………………………………………………………………. 75

Использование ViewModel………………………………………………………………………………………………………… 83

Передача моделей в контроллеры……………………………………………………………………………………………. 91

Создание элементов коллекции данных………………………………………………………………………………….. 97

Аннотации………………………………………………………………………………………………………………………………… 101

Проверка модели на сервере…………………………………………………………………………………………………… 103

Глава 4. Представления Razor……………………………………………………………… 108

Синтаксис Razor………………………………………………………………………………………………………………………. 108

Внедрение зависимостей в представление……………………………………………………………………………. 115

Компиляция среды выполнения Razor…………………………………………………………………………………… 117

Передача данных в представление………………………………………………………………………………………… 120

Компоновки………………………………………………………………………………………………………………………………. 122

Файл _ViewStart……………………………………………………………………………………………………………………….. 126

Файл _ViewImports………………………………………………………………………………………………………………….. 128

HTML-хелперы………………………………………………………………………………………………………………………… 129

Тег-хелперы……………………………………………………………………………………………………………………………… 137

Частичные представления………………………………………………………………………………………………………. 148

Компоненты представлений…………………………………………………………………………………………………… 150

Компоненты Blazor………………………………………………………………………………………………………………….. 152

Глава 5. Использование баз данных…………………………………………………….. 159

Обзор Entity Framework Core………………………………………………………………………………………………….. 159

Добавление службы для работы с базой данных…………………………………………………………………. 168

Применение Dapper………………………………………………………………………………………………………………….. 175

Глава 6. Введение в веб-API…………………………………………………………………. 180

Определение контроллера веб-API………………………………………………………………………………………… 181

Тестирование методов контроллера веб-API………………………………………………………………………… 187

Клиент службы веб-API…………………………………………………………………………………………………………… 192

Валидация в веб-API……………………………………………………………………………………………………………….. 203

Настройка форматов……………………………………………………………………………………………………………….. 208

Создание чат-бота…………………………………………………………………………………………………………………… 211

Глава 7. Фронтенд-фреймворки……………………………………………………………. 218

Добавление клиентских библиотек………………………………………………………………………………………… 218

Стилизация с помощью Bootstrap………………………………………………………………………………………….. 223

Проверка данных на клиентской стороне……………………………………………………………………………… 226

Знакомство с jQuery UI……………………………………………………………………………………………………………. 229

Глава 8. Технология AJAX…………………………………………………………………… 235

Основы AJAX……………………………………………………………………………………………………………………………. 235

Обработка запросов………………………………………………………………………………………………………………… 239

Основные методы AJAX-библиотеки jQuery…………………………………………………………………………. 245

Методы обработки событий…………………………………………………………………………………………………… 252

Обработка данных перед отправкой……………………………………………………………………………………… 257

Использование jQuery Unobtrusive AJAX………………………………………………………………………………. 259

CRUD-операции с использованием AJAX……………………………………………………………………………… 265

Глава 9. Основные сценарии, используемые при построении приложений 275

Сессии в ASP.NET Core……………………………………………………………………………………………………………. 275

Использование cookie……………………………………………………………………………………………………………… 280

Использование фильтров………………………………………………………………………………………………………… 284

Создание защищенных страниц…………………………………………………………………………………………….. 293

Комбинированный список с автоподстановкой……………………………………………………………………. 306

Динамический поиск по базе данных…………………………………………………………………………………….. 312

Раскрывающиеся списки…………………………………………………………………………………………………………. 314

Реализация фоновых задач…………………………………………………………………………………………………….. 321

Сортировка данных в таблицах…………………………………………………………………………………………….. 326

Группировка табличных данных…………………………………………………………………………………………… 332

Постраничное представление в таблицах…………………………………………………………………………….. 338

Изменение данных в таблицах……………………………………………………………………………………………….. 344

Разработка файлообменника………………………………………………………………………………………………….. 355

Создание формы обратной связи……………………………………………………………………………………………. 361

Добавление капчи……………………………………………………………………………………………………………………. 369

Использование переключателей…………………………………………………………………………………………….. 375

Глава 10. Публикация и развертывание приложений…………………………… 380

Публикация приложений………………………………………………………………………………………………………… 381

Развертывание приложения с помощью IIS………………………………………………………………………….. 386

Запуск приложения в виде службы Windows………………………………………………………………………… 390

Развертывание приложения в виде фонового сервиса под Linux………………………………………… 393

Заключение………………………………………………………………………………………….. 399

Приложение 1. Основные элементы HTML………………………………………….. 401

Базовые теги…………………………………………………………………………………………………………………………….. 401

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

Элементы навигации……………………………………………………………………………………………………………….. 404

Встраивание элементов…………………………………………………………………………………………………………… 404

Работа с таблицами…………………………………………………………………………………………………………………. 405

Создание форм и кнопок…………………………………………………………………………………………………………. 405

Приложение 2. Содержимое электронного архива………………………………… 406

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Вышла книга “Linux и Go. Эффективное низкоуровневое программирование”

Linux и Go. Эффективное низкоуровневое программирование

Первая русскоязычная книга об интеграции языка Go в архитектуру ядра Linux. Содержит вводный курс по языку Go для системного программирования, описывает применение Go для реализации конкурентности и параллелизма, рассказывает об интероперабельности между имеющимся кодом на C с новым кодом на Go, а также исследует возможности внедрения Go для повышения производительности различных дистрибутивов.

Книга ориентирована на программистов и системных администраторов, работающих с Linux, будет интересна разработчикам ядра Linux и драйверов устройств.

 

Ядро операционной системы Linux и множество модулей для различных дистрибутивов написаны на языке C. Притом, что язык С продолжает развиваться и активно использоваться на практике, в область системного программирования постепенно проникают и более молодые языки, в частности Go.

Перед вами – первая фундаментальная книга об использовании Go в Linux. Здесь вы познакомитесь с основами системного программирования, изучите детали взаимодействия между ядром и пользовательским пространством Linux, а также узнаете об интероперабельности между С и Go, о том, в каких аспектах и нюансах Linux язык Go может заменить и уже заменяет язык C. Особое внимание уделено конкурентности, параллелизму и стандарту POSIX. В конце книги для закрепления материала приведены реализации нескольких популярных алгоритмов.

Цилюрик Олег Иванович

Цилюрик Олег Иванович — программист-разработчик с более чем 40-летним опытом, преподаватель, автор нескольких книг по Linux и Unix, высоко оцененных профессионалами и широкой читательской аудиторией.

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

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

Предназначение и целевая аудитория. 7

Код примеров и замеченные опечатки. 9

Соглашения и выделения, принятые в тексте. 10

Напоминание. 11

Источники информации. 11

Часть I. Инструментарий языка Go. 13

Глава 1. Предыстория Go. 15

«Отцы-основатели» о целях и мотивации…… 15

Применимость: беглый взгляд. 16

Go, C, C++ и другие…… 17

Источники информации. 22

Глава 2. Разворачиваем экосистему Go. 23

Создание среды. 23

Стандартная инсталляция. 23

Версии среды. 25

Альтернативы. 26

«Самая последняя» версия. 27

Смена версий. 30

Проверяем: простейшая программа. 30

Проверяем на простейшем приложении. 32

Библиотеки статические и динамические. 34

Компиляция или интерпретация. 34

Выбор: GoLang или GCC?. 35

Инфраструктура GoLang. 36

Команды go. 36

Переменные окружения. 39

Платформы, переносимость и кросс-компиляция. 47

Стиль кодирования (автоформатирование — fmt) 49

Сборка приложений (build) 51

Сценарии на языке Go (run) 51

Загрузка проектов из сети (get) 52

Утилиты GoLang (tool) 57

Связь с кодом C (Cgo) 60

Сторонний и дополнительный инструментарий. 63

Источники информации. 65

Глава 3. Неформально о синтаксисе Go. 66

Типы данных. 71

Переменные. 73

Выполнение такого приложения. 74

Повторные декларации и переприсваивания. 76

Константы. 77

Агрегаты данных. 79

Массивы и срезы. 79

Двухмерные массивы и срезы. 84

Структуры. 85

Таблицы (хэши) 87

Динамическое создание переменных. 89

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

Операции. 91

Функции. 94

Вариативные функции. 98

Стек процедур завершения. 100

Обобщенные функции. 101

Функции высших порядков. 102

Встроенные функции. 104

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

Методы. 107

Интерфейсы. 113

Обработка ошибочных ситуаций. 117

Структура пакетов (библиотек) Go. 121

Функция init 125

Импорт для использования побочных эффектов. 126

Некоторые полезные и интересные стандартные пакеты. 126

Пакет runtime. 127

Форматированный ввод-вывод. 128

Строки и пакет strings 129

Большие числа. 134

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

Источники информации. 135

Часть II. Конкурентность и многопроцессорность. 137

Глава 4. Процессоры в Linux. 139

Процессоры, ядра и гипертрэдинг. 142

Загадочная нумерация процессоров. 144

Управление процессорами Linux. 147

Привязка к процессору. 147

Как происходит диспетчирование в Linux. 150

Источники информации. 156

Глава 5. Параллелизм и многопроцессорность. 157

Эволюция модели параллелизма. 157

Параллельные процессы и fork. 157

Потоки ядра и pthread_t POSIX.. 160

Сопрограммы — модель параллелизма Go. 166

Параллелизм в Go. 167

Сопрограммы — как это выглядит. 168

Возврат значений функцией. 171

Ретроспектива: сопрограммы в C++. 172

Каналы. 172

Функциональные замыкания в сопрограммах. 177

Примитивы синхронизации. 179

Конкурентность и параллельность. 185

Источники информации. 190

Глава 6. Масштабирование. 191

Планирование активности сопрограмм. 191

Испытательный стенд. 193

Микрокомпьютеры (Single-Board Computers) 193

Рабочие десктопы. 196

Серверы промышленного класса. 197

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

1-я попытка …… 199

2-й подход к снаряду…… 205

О числе потоков исполнения. 213

Источники информации. 217

Часть III. Некоторые примеры и сравнения. 219

Глава 7. Осваиваемся в синтаксисе Go. 221

Утилита echo. 221

Итерационное вычисление вещественного корня. 223

Вычисление числа π. 225

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

Обсчет параметров 2D выпуклых многоугольников. 230

Тривиальный web-сервер. 235

Источники информации. 236

Глава 8. Структуры данных, типы и их методы.. 237

Массивы и срезы. 237

Многомерные срезы и массивы. 242

Функции с множественным возвратом. 243

Глава 9. Элементы функционального программирования. 246

Функциональные замыкания. 246

Карринг. 253

Рекурсия. 255

Рекурсия с кэшированием. 255

Чистые функции. 257

Источники информации. 257

Глава 10. Скоростные и другие сравнения языков. 258

Алгоритмические задачи для сравнения. 258

Некоторые известные алгоритмы. 259

Числа Фибоначчи. 260

Пузырьковая сортировка. 263

Ханойская башня. 268

Решето Эратосфена. 272

Глава 11. Многопроцессорные параллельные вычисления. 276

Скорость активации параллельных ветвей. 276

Гонки. 281

Защита критических данных. 285

Многопроцессорный брутфорс. 289

Каналы в сопрограммах. 295

Таймеры. 296

Тикеры. 298

Когда не нужно злоупотреблять многопроцессорностью.. 299

Источники информации. 302

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

Об авторе. 304

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

Представляем новинку: “Надежный Python”

Надежный Python

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

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

Пишем чистый код, который удобно поддерживать

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

Прочитав книгу Вы:

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

С помощью этих советов и приемов вы сможете писать более понятный и удобный для сопровождения код.

Книга идеально подходит для

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

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

Патрик Виафоре

Патрик Виафоре более 13 лет занимался разработкой ПО повышенной надежности, в том числе для обнаружения молний, решения телекоммуникационных задач. Участвовал в разработке операционных систем. В настоящее время руководит собственной компанией Kudzera, LLC, занимающейся консалтингом и заказными проектами, связанными с Ubuntu. Свою миссию видит в демократизации высококачественной программной инженерии на благо профессионального сообщества.

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

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

Для кого предназначена книга?……………………………………………………………………………………………….. 12

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

Условные обозначения……………………………………………………………………………………………………………… 15

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

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

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

Глава 1. Введение в надежный Python……………………………………………………. 19

Надежность кодовой базы………………………………………………………………………………………………………… 19

Почему важна надежность?…………………………………………………………………………………………… 22

Обмен полезной информацией………………………………………………………………………………………………….. 23

Асинхронное взаимодействие……………………………………………………………………………………….. 26

Примеры понятного кода на Python…………………………………………………………………………………………. 29

Коллекции……………………………………………………………………………………………………………………….. 29

Итерации…………………………………………………………………………………………………………………………. 32

Принцип наименьшего удивления…………………………………………………………………………………. 34

Резюме…………………………………………………………………………………………………………………………………………. 35

Часть I. Аннотации типов…………………………………………………………… 37

Глава 2. Введение в типы Python……………………………………………………………. 39

Что такое тип?……………………………………………………………………………………………………………………………. 39

Машинное представление……………………………………………………………………………………………… 39

Семантическое представление……………………………………………………………………………………… 41

Системы типов……………………………………………………………………………………………………………………………. 44

Сильная и слабая типизации…………………………………………………………………………………………. 44

Динамическая и статическая типизации………………………………………………………………………. 45

Неявная (утиная) типизация………………………………………………………………………………………….. 46

Резюме…………………………………………………………………………………………………………………………………………. 48

Глава 3. Аннотации типов……………………………………………………………………… 49

Что такое аннотации типов?…………………………………………………………………………………………………….. 49

Использование аннотаций типов……………………………………………………………………………………………… 53

Автодополнение……………………………………………………………………………………………………………… 53

Проверка типов……………………………………………………………………………………………………………….. 53

Примеры найденных ошибок………………………………………………………………………………………… 55

Когда добавлять аннотации типа…………………………………………………………………………………………….. 57

Резюме…………………………………………………………………………………………………………………………………………. 57

Глава 4. Ограничивающие типы……………………………………………………………. 59

Аннотация Optional…………………………………………………………………………………………………………………… 59

Аннотация Union……………………………………………………………………………………………………………………….. 65

Тип-произведение и тип-сумма……………………………………………………………………………………… 67

Аннотация Literal………………………………………………………………………………………………………………………. 69

Аннотация Annotated…………………………………………………………………………………………………………………. 70

Аннотация NewType…………………………………………………………………………………………………………………… 70

Аннотация Final…………………………………………………………………………………………………………………………. 73

Резюме…………………………………………………………………………………………………………………………………………. 74

Глава 5. Коллекции……………………………………………………………………………….. 75

Аннотирование коллекций………………………………………………………………………………………………………… 75

Однородные и разнородные коллекции…………………………………………………………………………………… 76

Аннотация TypedDict…………………………………………………………………………………………………………………. 80

Создание новых типов коллекций……………………………………………………………………………………………. 82

Дженерики……………………………………………………………………………………………………………………….. 83

Изменение существующих типов………………………………………………………………………………….. 85

Так же просто, как ABC…………………………………………………………………………………………………. 88

Резюме…………………………………………………………………………………………………………………………………………. 90

Глава 6. Настройка проверки типов………………………………………………………. 91

Инструмент проверки типов mypy…………………………………………………………………………………………… 91

Параметры конфигурации……………………………………………………………………………………………… 92

Поиск динамической типизации……………………………………………………………………………. 93

Нетипизированные функции…………………………………………………………………………………. 94

Отслеживание None/Optional………………………………………………………………………………… 94

Отчеты mypy…………………………………………………………………………………………………………………… 95

Ускорение mypy……………………………………………………………………………………………………………… 96

Другие инструменты проверки типов………………………………………………………………………………………. 97

Pyre…………………………………………………………………………………………………………………………………… 97

Запросы к кодовой базе…………………………………………………………………………………………. 98

Pysa………………………………………………………………………………………………………………………… 100

Pyright…………………………………………………………………………………………………………………………….. 103

Резюме………………………………………………………………………………………………………………………………………. 105

Глава 7. Внедрение проверки типов……………………………………………………… 106

Поиск компромиссов……………………………………………………………………………………………………………….. 107

Быстрое получение выгоды……………………………………………………………………………………………………. 108

Поиск слабых мест……………………………………………………………………………………………………….. 108

Стратегические фрагменты кода………………………………………………………………………………… 109

Аннотирование только нового кода…………………………………………………………………… 109

Аннотирование снизу вверх………………………………………………………………………………… 109

Аннотирование основной бизнес-логики…………………………………………………………… 110

Аннотирование часто меняющегося кода………………………………………………………….. 110

Аннотирование сложного кода…………………………………………………………………………… 110

Использование инструментов……………………………………………………………………………………… 110

MonkeyType………………………………………………………………………………………………………….. 112

Pytype…………………………………………………………………………………………………………………….. 116

Резюме………………………………………………………………………………………………………………………………………. 117

Часть II. Определение ваших собственных типов…………. 119

Глава 8. Пользовательские типы: перечисления………………………………….. 121

Пользовательские типы…………………………………………………………………………………………………………… 121

Перечисления…………………………………………………………………………………………………………………………… 122

Тип Enum……………………………………………………………………………………………………………………….. 124

Когда не надо их использовать…………………………………………………………………………………… 125

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

Автоматические значения……………………………………………………………………………………………. 126

Тип Flag…………………………………………………………………………………………………………………………. 127

Целочисленные перечисления…………………………………………………………………………………….. 129

Уникальные значения…………………………………………………………………………………………………… 130

Резюме………………………………………………………………………………………………………………………………………. 131

Глава 9. Пользовательские типы: классы данных……………………………….. 132

Примеры классов данных……………………………………………………………………………………………………….. 132

Использование классов данных……………………………………………………………………………………………… 136

Строковые представления…………………………………………………………………………………………… 136

Равенство………………………………………………………………………………………………………………………. 137

Реляционное сравнение……………………………………………………………………………………………….. 138

Неизменяемость……………………………………………………………………………………………………………. 139

Сравнение с другими типами………………………………………………………………………………………………….. 141

Классы данных и словари…………………………………………………………………………………………… 141

Классы данных и TypedDict………………………………………………………………………………………… 142

Классы данных и namedtuple………………………………………………………………………………………. 142

Резюме………………………………………………………………………………………………………………………………………. 143

Глава 10. Пользовательские типы: классы…………………………………………… 144

Строение класса………………………………………………………………………………………………………………………. 144

Конструктор………………………………………………………………………………………………………………….. 145

Инварианты……………………………………………………………………………………………………………………………… 146

Нарушение инвариантов……………………………………………………………………………………………… 148

Зачем нужны инварианты……………………………………………………………………………………………. 149

Информативные инварианты………………………………………………………………………………………. 151

Для пользователей класса…………………………………………………………………………………… 152

При сопровождении кода…………………………………………………………………………………….. 153

Инкапсуляция и поддержка инвариантов……………………………………………………………………………… 155

Инкапсуляция……………………………………………………………………………………………………………….. 155

Доступ к данным…………………………………………………………………………………………………………… 155

Работа с данными…………………………………………………………………………………………………………. 158

Резюме………………………………………………………………………………………………………………………………………. 160

Глава 11. Определение своих интерфейсов…………………………………………… 162

Проектирование естественного интерфейса…………………………………………………………………………. 163

Думай как пользователь………………………………………………………………………………………………. 164

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

Разработка через README…………………………………………………………………………………. 165

Юзабилити-тестирование……………………………………………………………………………………. 166

Естественные взаимодействия………………………………………………………………………………………………… 167

Естественные интерфейсы в действии………………………………………………………………………… 167

Магические методы……………………………………………………………………………………………………… 173

Контекстные менеджеры……………………………………………………………………………………………… 175

Резюме………………………………………………………………………………………………………………………………………. 177

Глава 12. Создание подтипов……………………………………………………………….. 178

Наследование…………………………………………………………………………………………………………………………… 178

Взаимозаменяемость……………………………………………………………………………………………………………….. 183

Рекомендации по проектированию………………………………………………………………………………………… 188

Композиция…………………………………………………………………………………………………………………… 189

Резюме………………………………………………………………………………………………………………………………………. 191

Глава 13. Протоколы……………………………………………………………………………. 193

Структурная и номинальная типизации………………………………………………………………………………… 193

Пустой тип и Any…………………………………………………………………………………………………………… 195

Использование Union…………………………………………………………………………………………………… 195

Использование наследования……………………………………………………………………………………… 196

Использование миксинов……………………………………………………………………………………………… 197

Протоколы………………………………………………………………………………………………………………………………… 198

Создание протокола…………………………………………………………………………………………………….. 199

Расширенное использование………………………………………………………………………………………………….. 200

Составные протоколы………………………………………………………………………………………………….. 200

Протоколы времени выполнения………………………………………………………………………………… 201

Протоколы для модулей………………………………………………………………………………………………. 202

Резюме………………………………………………………………………………………………………………………………………. 203

Глава 14. Проверки во время выполнения с помощью pydantic……………. 204

Динамическая конфигурация………………………………………………………………………………………………….. 204

Библиотека pydantic………………………………………………………………………………………………………………… 210

Валидаторы………………………………………………………………………………………………………………….. 212

Валидация и парсинг……………………………………………………………………………………………………. 215

Резюме………………………………………………………………………………………………………………………………………. 216

Часть III. Расширяемый код……………………………………………………… 219

Глава 15. Расширяемость……………………………………………………………………… 221

Что такое расширяемость?……………………………………………………………………………………………………… 221

Реструктуризация кода………………………………………………………………………………………………… 223

Принцип открытости/закрытости…………………………………………………………………………………………… 227

Поиск нарушений принципа………………………………………………………………………………………… 228

Недостатки OCP……………………………………………………………………………………………………………. 229

Резюме………………………………………………………………………………………………………………………………………. 230

Глава 16. Зависимости…………………………………………………………………………. 231

Взаимосвязи……………………………………………………………………………………………………………………………… 232

Типы зависимостей………………………………………………………………………………………………………………….. 234

Физические зависимости……………………………………………………………………………………………… 234

Логические зависимости………………………………………………………………………………………………. 238

Временные зависимости………………………………………………………………………………………………. 240

Визуализация зависимостей…………………………………………………………………………………………………… 241

Визуализация пакетов………………………………………………………………………………………………….. 242

Визуализация импорта………………………………………………………………………………………………… 243

Визуализация вызовов функций………………………………………………………………………………….. 243

Интерпретация графа зависимостей…………………………………………………………………………… 245

Резюме………………………………………………………………………………………………………………………………………. 246

Глава 17. Компонуемость…………………………………………………………………….. 248

Что такое компонуемость?……………………………………………………………………………………………………… 248

Разделение политик и механизмов…………………………………………………………………………………………. 252

Компонуемость в меньшем масштабе……………………………………………………………………………………. 255

Компонуемые функции………………………………………………………………………………………………… 255

Декораторы…………………………………………………………………………………………………………… 256

Компонуемые алгоритмы…………………………………………………………………………………………….. 259

Резюме………………………………………………………………………………………………………………………………………. 262

Глава 18. Событийно-ориентированная архитектура…………………………… 263

Как это работает……………………………………………………………………………………………………………………… 263

Недостатки……………………………………………………………………………………………………………………. 264

Простые события……………………………………………………………………………………………………………………… 266

Использование брокера сообщений……………………………………………………………………………. 266

Шаблон наблюдателя………………………………………………………………………………………………….. 268

Поток событий…………………………………………………………………………………………………………………………. 270

Резюме………………………………………………………………………………………………………………………………………. 273

Глава 19. Подключаемый код………………………………………………………………. 274

Шаблонный метод…………………………………………………………………………………………………………………… 275

Шаблон стратегии…………………………………………………………………………………………………………………… 278

Архитектура плагинов…………………………………………………………………………………………………………….. 279

Резюме………………………………………………………………………………………………………………………………………. 283

Часть IV. Ваша страховочная сетка……………………………………… 285

Глава 20. Статический анализ……………………………………………………………… 287

Линтинг…………………………………………………………………………………………………………………………………….. 287

Написание собственного плагина для Pylint……………………………………………………………… 289

Разбор плагина……………………………………………………………………………………………………………… 291

Другие статические анализаторы………………………………………………………………………………………….. 293

Проверки сложности…………………………………………………………………………………………………….. 294

Цикломатическая сложность Маккейба…………………………………………………………….. 294

Проверка отступов……………………………………………………………………………………………….. 296

Анализ безопасности……………………………………………………………………………………………………. 297

Утечка секретных данных…………………………………………………………………………………… 297

Проверка уязвимостей…………………………………………………………………………………………. 297

Резюме………………………………………………………………………………………………………………………………………. 298

Глава 21. Стратегия тестирования……………………………………………………….. 299

Определение вашей стратегии тестирования……………………………………………………………………….. 299

Что такое тесты?…………………………………………………………………………………………………………… 300

Пирамида тестирования………………………………………………………………………………………. 302

Снижение стоимости тестирования……………………………………………………………………………………….. 304

AAA-тестирование……………………………………………………………………………………………………….. 304

Arrange (настройка предусловий)……………………………………………………………………….. 305

Annihilate (очистка ресурсов)……………………………………………………………………………… 308

Act (действие)……………………………………………………………………………………………………….. 310

Assert (утверждение)…………………………………………………………………………………………….. 311

Резюме………………………………………………………………………………………………………………………………………. 314

Глава 22. Приемочное тестирование…………………………………………………….. 315

Разработка через поведение (BDD)………………………………………………………………………………………… 316

Язык Gherkin………………………………………………………………………………………………………………….. 316

Исполняемые спецификации……………………………………………………………………………………….. 318

Дополнительные возможности behave…………………………………………………………………………………… 321

Параметризованные шаги……………………………………………………………………………………………. 321

Требования, составленные в виде таблиц………………………………………………………………….. 321

Регулярные выражения………………………………………………………………………………………………… 322

Настройка жизненного цикла теста……………………………………………………………………………. 322

Использование тегов для выборочного запуска тестов……………………………………………. 323

Генерация отчетов……………………………………………………………………………………………………….. 323

Резюме………………………………………………………………………………………………………………………………………. 325

Глава 23. Тестирование на основе свойств…………………………………………… 326

Тестирование с помощью Hypothesis…………………………………………………………………………………….. 326

Магия Hypothesis………………………………………………………………………………………………………….. 330

Отличия от традиционных тестов………………………………………………………………………………. 331

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

Стратегии Hypothesis…………………………………………………………………………………………………… 332

Генерирование алгоритмов…………………………………………………………………………………………. 333

Резюме………………………………………………………………………………………………………………………………………. 337

Глава 24. Мутационное тестирование………………………………………………….. 338

Что такое мутационное тестирование?…………………………………………………………………………………. 338

Использование mutmut…………………………………………………………………………………………………………….. 341

Исправление мутантов…………………………………………………………………………………………………. 343

Отчеты о тестировании………………………………………………………………………………………………… 343

Внедрение мутационного тестирования……………………………………………………………………………….. 344

Проблема с показателем покрытия (и другими метриками)…………………………………….. 346

Резюме………………………………………………………………………………………………………………………………………. 347

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

Вышел новый сборник: “iOS и iPhone глазами хакера”

iOS и iPhone глазами хакера

В про­дажу пос­тупил новый сбор­ник пос­тоян­ных авто­ров легендарного журнала “Хакер” — «iOS и iPhone гла­зами хакера».

Эта книга — сборник лучших, тщательно отобранных статей из легендарного журнала «Хакер». Рассмотрена система безопасности iOS 16, методы сбора и передачи информации устройствами Apple при выключенном питании. Рассказано о методах взлома файловой системы (джейлбрейк), об уязвимости эксплоита checkm8, об установке твиков и сторонних приложений на iPhone. Раскрыты методы установки стороннего ПО на мобильные устройства с iOS без джейлбрейка. Приведены альтернативы менеджеру пакетов Cydia, рассказано об использовании виртуальных машин в iOS. Представлены способы настройки VPN и автоматизации iOS при помощи инструмента «Команды». Приведен обзор возможностей Pyto — среды программирования на Python для мобильных устройств Apple.

Мобильные устройства от Apple уже давно перестали быть «просто телефоном» и «просто планшетом». Сейчас iPhone и iPad — это полноценные, мощные компьютеры, позволяющие решать широчайший круг задач. Но еще более эффективно их можно использовать, если ты знаешь все многочисленные тонкости, хитрости и трюки, которые скрывает в себе iOS. Раскрытию таких секретов и посвящена эта книга. Если ты хочешь быть не просто рядовым пользователем, а мечтаешь почувствовать себя настоящим хакером и выжать из своего айфона максимум — это издание для тебя!

Валентин Холмогоров, Ведущий редактор журнала «Хакер»

Вы узнаете:

  • Средства безопасности и новые возможности в iOS 16
  • Особенности распространения троянов для iOS
  • Шпионаж за пользователем при помощи выключенного iPhone
  • Эксплоит checkm8 и его использование
  • Джейлбрейк — как сделать и зачем он нужен?
  • Неофициальные твики и приложения для iOS с джейлбрейком
  • Альтернативы для Cydia
  • Установка сторонних приложений на iPhone без джейлбрейка
  • Настройка VPN на iPhone
  • Автоматизация iOS с помощью инструмента «Команды»
  • Установка альтернативных ОС на iPhone с помощью виртуальных машин
  • Написание программ на Python в среде разработки Pyto

Авторы

Авторы

Андрей Письменный, Валентин Холмогоров, Ася Холмогорова, Олег Афонин, Олег Сивченко

«Хакер» — легендарный журнал об информационной безопасности, издающийся с 1999 года. На протяжении 20 лет на страницах «Хакера» публикуются интересные статьи об операционных системах, программах, сетях, гаджетах и компьютерном «железе». На сайте «Хакера» ежедневно появляются знаковые новости из мира компьютерных технологий, мануалы по кодингу и взлому, гайды по новым эксплойтам, подборки хакерского софта и обзоры веб-сервисов. Среди авторов журнала —  авторитетные эксперты по кибербезопасности и IT-специалисты.

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

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

От редакции…………………………………………………………………………………………… 11

  1. Самая небезопасная ОС. Как популярность iOS ставит ее пользователей под угрозу (Олег Афонин) 13

Физическая безопасность устройств iOS…………………………………………………………………………………. 13

Облачная безопасность iOS………………………………………………………………………………………………………. 16

Анализ модели безопасности Apple на примере категории «Сообщения»…………………………… 18

iOS и зловредное программное обеспечение…………………………………………………………………………… 20

Защита от атак MITM (man in the middle)………………………………………………………………………………. 21

Выводы……………………………………………………………………………………………………………………………………….. 21

  1. Вредонос для iOS. Как распространяются трояны для самой закрытой мобильной платформы (Валентин Холмогоров)……………………………………………………………………………. 23

Немного теории………………………………………………………………………………………………………………………….. 23

Шпионские игры………………………………………………………………………………………………………………………… 24

Технология MDM………………………………………………………………………………………………………………………. 26

Технология DRM……………………………………………………………………………………………………………………….. 28

Выводы……………………………………………………………………………………………………………………………………….. 30

  1. Атака на Apple. Как вайтхеты внедрились в сеть Apple
    и добрались доисходников iOS (Валентин Холмогоров)………………………….. 31

Рекогносцировка………………………………………………………………………………………………………………………… 32

Компрометация учетных записей преподавателей Apple……………………………………………………… 33

Кража данных iCloud с использованием сетевого червя……………………………………………………….. 35

Доступ к репозиторию с исходниками…………………………………………………………………………………….. 39

Итоги…………………………………………………………………………………………………………………………………………… 42

  1. Неспящий iPhone. Как выключенный iPhone может шпионить
    за своим владельцем (Олег Сивченко)………………………………………………………. 43

Как это работает?……………………………………………………………………………………………………………………… 44

Экспресс-карты и Find My………………………………………………………………………………………………………… 45

«Автомобильные» ключи DCK 3.0……………………………………………………………………………………………. 48

Недостатки Find My Phone……………………………………………………………………………………………………….. 49

Вмешательство в прошивку………………………………………………………………………………………………………. 50

Заключение………………………………………………………………………………………………………………………………… 51

  1. Шах и мат! Как устроен нашумевший эксплойт checkm8
    и как им воспользоваться (Валентин Холмогоров)…………………………………… 53

Коррозия железа………………………………………………………………………………………………………………………… 53

История с географией………………………………………………………………………………………………………………… 54

Раз, два, три, четыре, пять, начинаем загружать…………………………………………………………………….. 55

Протокол DFU…………………………………………………………………………………………………………………………….. 56

Уязвимость………………………………………………………………………………………………………………………………….. 57

Checkmate…………………………………………………………………………………………………………………………………… 58

Как использовать checkm8……………………………………………………………………………………………………….. 59

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

Джейлбрейк………………………………………………………………………………………………………………………… 62

Выводы……………………………………………………………………………………………………………………………………….. 67

  1. Украшаем iOS с джейлбрейком при помощи неофициальных твиков (Ася Холмогорова) 69

Джейлбрейк………………………………………………………………………………………………………………………………… 69

Как пользоваться Cydia?…………………………………………………………………………………………………………… 71

RecordPause………………………………………………………………………………………………………………………………… 73

ColorMyBattery…………………………………………………………………………………………………………………………… 73

Carrierizer…………………………………………………………………………………………………………………………………….. 73

HideYourApps……………………………………………………………………………………………………………………………… 74

DeleteForever……………………………………………………………………………………………………………………………….. 75

HomeGesture……………………………………………………………………………………………………………………………….. 76

Activator………………………………………………………………………………………………………………………………………. 77

RealCC………………………………………………………………………………………………………………………………………… 79

ShortLook……………………………………………………………………………………………………………………………………. 79

ToldYouPreferences…………………………………………………………………………………………………………………….. 80

Выводы……………………………………………………………………………………………………………………………………….. 81

  1. Ставим самые интересные приложения для iOS с джейлбрейком (Валентин Холмогоров) 83

Filza                                                                                                                                                                   83

iCleaner………………………………………………………………………………………………………………………………………… 85

MTerminal…………………………………………………………………………………………………………………………………… 85

iWep Pro………………………………………………………………………………………………………………………………………. 86

SnapBack…………………………………………………………………………………………………………………………………….. 87

AirShou………………………………………………………………………………………………………………………………………… 88

iTransmission……………………………………………………………………………………………………………………………….. 89

Flex 3……………………………………………………………………………………………………………………………………………. 90

Succession……………………………………………………………………………………………………………………………………. 91

Выводы……………………………………………………………………………………………………………………………………….. 92

  1. Выбираем альтернативу для Cydia (Валентин Холмогоров)………………….. 95

Sileo                                                                                                                                                                   95

Zebra……………………………………………………………………………………………………………………………………………. 97

Installer 5……………………………………………………………………………………………………………………………………… 99

Saily…………………………………………………………………………………………………………………………………………… 101

Выводы……………………………………………………………………………………………………………………………………… 102

  1. Не App Store единым. Устанавливаем сторонние приложения в iOS безджейла (Олег Афонин)…………………………………………………………………………………………………………….. 103

Почему нельзя просто установить приложение……………………………………………………………………. 103

Официальный путь: аккаунт разработчика………………………………………………………………………….. 103

Полуофициальный путь: Cydia Impactor………………………………………………………………………………. 105

Идем в серую зону: подпись пакета обычным Apple ID………………………………………………………. 106

Nullximpactor…………………………………………………………………………………………………………………….. 106

iOS App Signer……………………………………………………………………………………………………………………. 107

AltDeploy и AltStore………………………………………………………………………………………………………………….. 107

Подпись в режиме онлайн……………………………………………………………………………………………………….. 109

Альтернативные магазины приложений……………………………………………………………………………….. 110

TestFlight……………………………………………………………………………………………………………………………………. 110

Заключение………………………………………………………………………………………………………………………………. 111

  1. Как мы создали софтверный метод вскрытия знаменитого iPhone 5c (Олег Афонин) 113

Альтернативы…………………………………………………………………………………………………………………………… 114

Как это работает……………………………………………………………………………………………………………………… 114

Шаг 1. Переводим телефон в режим DFU……………………………………………………………………….. 115

Шаг 2. Эксплойт DFU………………………………………………………………………………………………………. 116

Шаг 3. Отключаем проверки подписи……………………………………………………………………………. 117

Шаг 4. Патчим RAMDisk…………………………………………………………………………………………………. 117

Шаг 5. Патч ядра……………………………………………………………………………………………………………… 118

Шаг 6. Монтируем разделы…………………………………………………………………………………………….. 120

Взлом пароля……………………………………………………………………………………………………………………………. 121

Скорость работы: пароль из четырех или шести цифр………………………………………………………… 123

Буквенно-цифровые пароли……………………………………………………………………………………………………. 125

  1. Сильный лебедь. Делаем VPN на strongSwan и автоматизируем подключение в iOS (Андрей Письменный)………………………………………………………………………………………….. 127

Ставим и настраиваем strongSwan на сервере………………………………………………………………………. 127

Генерируем сертификаты………………………………………………………………………………………………… 128

Настраиваем strongSwan…………………………………………………………………………………………………. 129

Настраиваем сеть…………………………………………………………………………………………………………….. 130

Настраиваем подключение…………………………………………………………………………………………….. 131

Куем профиль для iOS……………………………………………………………………………………………………………… 133

Добавляем правила подключения………………………………………………………………………………………….. 136

Выводы……………………………………………………………………………………………………………………………………… 139

  1. Винда на айфоне. Используем виртуалку UTM для установки Windows на iOS (Валентин Холмогоров)………………………………………………………………………………………….. 141

Что такое UTM?……………………………………………………………………………………………………………………….. 141

Установка…………………………………………………………………………………………………………………………………. 142

На устройство с джейлбрейком……………………………………………………………………………………… 142

На устройство без джейлбрейка…………………………………………………………………………………….. 143

Создание виртуальной машины…………………………………………………………………………………………….. 143

Управление виртуальной машиной……………………………………………………………………………………….. 145

Использование готовых образов ВМ…………………………………………………………………………………….. 145

Установка ОС из дистрибутива……………………………………………………………………………………………… 147

Выводы……………………………………………………………………………………………………………………………………… 150

  1. Всех айфонов командир. Автоматизируем работу в iOS
    с помощью «Команд» (Валентин Холмогоров)……………………………………….. 153

Возможности……………………………………………………………………………………………………………………………. 153

Под капотом……………………………………………………………………………………………………………………………… 156

Лайфхак……………………………………………………………………………………………………………………………………. 159

Выводы……………………………………………………………………………………………………………………………………… 160

  1. Делаем веб-сервер на iOS и качаем видео с youtube-dl (Андрей Письменный) 161

Pythonista………………………………………………………………………………………………………………………………….. 161

Встречайте — Pyto!…………………………………………………………………………………………………………………. 161

Особенности Pyto…………………………………………………………………………………………………………………….. 163

Командная строка……………………………………………………………………………………………………………. 163

Использование файловой системы…………………………………………………………………………………. 164

Запуск фоновых задач…………………………………………………………………………………………………….. 164

Другие фичи и модули……………………………………………………………………………………………………… 164

Пишем веб-сервер…………………………………………………………………………………………………………………….. 166

Задача……………………………………………………………………………………………………………………………….. 166

Инструментарий………………………………………………………………………………………………………………. 166

Код…………………………………………………………………………………………………………………………………….. 166

Первый запуск………………………………………………………………………………………………………………….. 170

Выводы……………………………………………………………………………………………………………………………………… 171

  1. Новые способы защиты данных в iOS 16 (Олег Афонин)………………….. 173

Safety Check……………………………………………………………………………………………………………………………… 173

Новое разрешение: доступ к буферу обмена………………………………………………………………………… 174

Защита скрытых и удаленных фотографий………………………………………………………………………….. 176

Функции, относящиеся к безопасности………………………………………………………………………………….. 176

Lockdown Mode………………………………………………………………………………………………………………… 177

Passkeys…………………………………………………………………………………………………………………………….. 178

Rapid Security Response……………………………………………………………………………………………………. 180

Face ID в альбомной ориентации……………………………………………………………………………………. 180

iOS 14 и 15: что мы пропустили……………………………………………………………………………………………… 180

По горячим следам…………………………………………………………………………………………………………………… 182

Выводы……………………………………………………………………………………………………………………………………… 183

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

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