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

Новинка: Марийские народные сказки

Марийские народные сказки

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

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

Марийские народные сказки

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

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

Встречайте: “Ленинград Довлатова. Исторический путеводитель (4-е издание)”

Ленинград Довлатова. Исторический путеводитель

Эта книга — путеводитель по Ленинграду, каким он был в 1944–1978 годах, когда там гулял с няней, ходил в школу, учился в университете, влюблялся, женился, писал рассказы и пытался их напечатать Сергей Довлатов, самый популярный русский прозаик второй половины XX века. Три маршрута проведут читателей по памятным местам, познакомят с городским ландшафтом позднего Ленинграда и историческим контекстом. В четвертом издании появились новые воспоминания, всплыли прежде незамеченные детали, сделаны уточнения и дополнения.

Для широкого круга читателей

Стоит ли говорить, что я вас не забыл и постоянно думаю о Ленинграде. Хотите, перечислю вывески от “Баррикады” до “Титана”? Хотите, выведу проходными дворами от Разъезжей к Марата?.
С. Довлатов «Марш одиноких»

Авторы путеводителя приглашают на прогулку по Ленинграду эпохи самого популярного русского прозаика второй половины XX века Сергея Довлатова. Читатель может выбрать любой из трех маршрутов. Это аннотированный перечень адресов, где Довлатов жил в период 1944–1978 годов, квартир его друзей, учебных заведений, в которых он учился, учреждений, где работал. Или короткие рассказы о магазинах, кинотеатрах, ресторанах, рюмоч­ных, книжных лавках, о том, что происходило в эти годы в городских театрах, на Ленфильме и в Пушкинском доме. А возможно, кому-то покажется интересным проследить судьбоносные события и процессы, политические и эстетические обстоятельства ленинградского периода жизни Сергея Донатовича. В четвертом издании появились новые воспоминания, всплыли прежде незамеченные детали, сделаны уточнения и дополнения.

В наши дни улица Рубинштейна — одна из самых загульных в Петербурге. Не случайно в знаменитом клипе Сергея Шнурова и Анны Парнас «В Питере пить» симпатичные герои, принадлежащие к разным стратам городского общества радуются жизни именно здесь. Это наша барная миля: стрит-фуд, крафтовое пиво и рестораны паназиатской кухни, нарядная молодежь, памятник Довлатову. Место живое, но и опасное: ночные пьянки-гулянки не всегда опрятны и привлекают и различных социальных маргиналов.

После смерти Сталина, 5 марта 1953 года, началось некоторое смягчение идеологической и эстетической цензуры. Уже через несколько дней было прекращено «Дело врачей». Поутих государственный антисемитизм. Из лагерей постепенно стали выпускать «политических». Уже в июне 1953 года в Союз писателей снова приняли Михаила Зощенко.  С сентября 1954 года было отменено раздельное обучение, одновременно в прокат вышел индийский кинофильм «Бродяга», наряду с «Тарзаном» главный экранный хит для подростков эпохи оттепели. Одноклассники подмечали сходство школьника Довлатова с Раджем Капуром, он даже нарисовал автошарж в образе индийской звезды.

Валерий Попов в написанной им биографии Сергея Довлатова с некоторой долей ревности удивляется его невероятному успеху. Он, пишет Попов, «бежал в конце двадцатки» — имеется в виду группа сверстников-ленинградцев, вошедшая в литературу на рубеже 1950–1960-х годов. Ахматова называла их представителями «бронзового века» (пушкинский — «золотой», блоковский — «серебряный»).

Кто-то заметил, что все великие русские писатели, начиная от Пушкина (1799) и заканчивая Львом Толстым (1828), а с ними Гоголь, Белинский, Герцен, Тургенев, Гончаров, Достоевский, Салтыков-Щедрин, Чернышевский теоретически могли быть рождены одной матерью. То же можно сказать и о поколении «бронзового века».

Книгу “Ленинград Довлатова. Исторический путеводитель (4-е издание)” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Софья Лурье — филолог-итальянист и журналист, одна из авторов путеводителя «Вокруг Петербурга», много лет изучает город Довлатова «на местности», проводя экскурсии по литературному Ленинграду 1950–1970-х.

 

Лев Лурье — историк и журналист. Обладатель «Анциферовской премии» за лучшее исследование истории Петербурга и «Золотого пера» за достижения в журналистике. Один из основателей Санкт-Петербургской классической гимназии. В 2006–2009 возглавлял Дирекцию документального вещания ТРК «Петербург — Пятый канал», вел авторские передачи «Культурный слой» и «Живая история». Автор 15 книг, среди которых «Над вольной Невой. От блокады до „оттепели“», «Поздние Ленинградцы. От застоя до перестройки», «22 смерти, 63 версии», «Петербург Достоевского. Исторический путеводитель».

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

Новинка: “Разработка веб-приложений на PHP 8”

Разработка веб-приложений на PHP 8

На практических примерах описано создание веб-приложений на языке PHP версии 8.x. Даны начала разработки на PHP: установка и настройка Apache 2.4, PHP, MySQL и кроссплатформенной сборки XAMPP, выбор редактора PHP-кода, синтаксис языка, самые полезные функции и нововведения PHP 8.x. Рассмотрено создание веб-приложений с использованием популярного фреймворка Laravel и шаблонизатора Blade. В качестве хранилища данных использованы два сервера – самая современная версия MySQL и набирающая популярность СУБД MongoDB. Раскрыты особенности создания индикатора загрузки файла и разыменовывания массивов, приведены примеры устранения типичных SEO-ошибок, допускаемых программистами, описана работа с PDO, JSON, MP3, Curl, MobileDetec Особое внимание уделяется безопасности веб-приложений – рассматривается, как уберечь их от основных атак, как установить SSL-сертификат и как уберечь сам сервер от неприятностей.
На сайте издательства находятся дополнительные главы, листинги из книги, а также необходимое программное обеспечение.

  • Синтаксис PHP. Нововведения PHP 8.x
  • Объектно-ориентированное программирование на PHP 8.x
  • Кроссплатформенная сборка XAMPP
  • MySQL и MongoDB
  • Работа с PDO, JSON, MP3, Curl, MobileDetect
  • Введение во фреймворк Laravel, шаблонизатор Blade
  • Безопасность веб-приложений

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

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

Немного истории……………………………………………………………………………………………………………………….. 15

Основные нововведения в PHP версии 8………………………………………………………………………………….. 17

Улучшена производительность благодаря компиляции Just-In-Time……………………………….. 17

Именованные аргументы……………………………………………………………………………………………………….. 17

Атрибуты вместо аннотаций PHPDoc…………………………………………………………………………………… 17

Объявление свойств в конструкторе……………………………………………………………………………………… 18

Выражение Match и оператор nullsafe…………………………………………………………………………………. 18

Новые классы, интерфейсы и функции…………………………………………………………………………………. 19

Улучшения в системе типов и обработке ошибок……………………………………………………………….. 19

Прочие улучшения синтаксиса……………………………………………………………………………………………… 20

Часть I.  Теория……………………………………………………………………………. 21

Раздел 1. Быстрый старт………………………………………………………………. 23

Глава 1. Установка необходимого программного обеспечения………………. 25

1.1. Нужно ли устанавливать программное обеспечение?……………………………………………………. 25

1.2. Выбор PHP-редактора и FTP-клиента………………………………………………………………………………. 27

1.3. Установка связки Apache + PHP + MySQL в Windows……………………………………………………… 30

1.3.1. Для опытных пользователей: установка вручную…………………………………………………….. 30

Установка веб-сервера Apache………………………………………………………………………………………… 30

Установка PHP…………………………………………………………………………………………………………………… 32

1.3.2. Установка для новичков (рекомендуется)…………………………………………………………………… 39

Глава 2. Программа на PHP…………………………………………………………………… 43

2.1. Ваша первая программа…………………………………………………………………………………………………….. 43

2.2. Запуск PHP-программы………………………………………………………………………………………………………. 44

2.3. Вывод текста без echo………………………………………………………………………………………………………… 45

Глава 3. Основы синтаксиса PHP………………………………………………………….. 48

3.1. Переменные…………………………………………………………………………………………………………………………. 48

3.1.1. Правила объявления переменных. Имена переменных……………………………………………… 48

3.1.2. Типы данных переменных……………………………………………………………………………………………. 49

3.1.3. Булевы переменные………………………………………………………………………………………………………. 51

3.1.4. Операции над переменными………………………………………………………………………………………… 51

3.1.5. Ссылки……………………………………………………………………………………………………………………………. 52

3.2. Константы……………………………………………………………………………………………………………………………. 53

3.3. Выражения и операции………………………………………………………………………………………………………. 57

3.3.1. Что такое выражение?………………………………………………………………………………………………….. 57

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

3.3.3. Логические выражения…………………………………………………………………………………………………. 58

3.3.4. Битовые операции…………………………………………………………………………………………………………. 58

3.3.5. Приоритеты операций………………………………………………………………………………………………….. 59

3.3.6. Операторы эквивалентности == и ===……………………………………………………………………….. 60

3.3.7. Оператор ?? — сокращенная форма тернарной условной операции……………………… 61

3.3.8. Операции со строками………………………………………………………………………………………………….. 61

3.3.9. Оператор nullsafe………………………………………………………………………………………………………….. 62

3.4. Условный оператор…………………………………………………………………………………………………………….. 63

3.5. Циклы…………………………………………………………………………………………………………………………………… 64

3.5.1. Цикл со счетчиком for………………………………………………………………………………………………….. 64

3.5.2. Цикл while………………………………………………………………………………………………………………………. 65

3.5.3. Цикл do-while…………………………………………………………………………………………………………………. 65

3.5.4. Принудительное завершение цикла и пропуск итерации………………………………………….. 65

3.6. Оператор выбора switch-case…………………………………………………………………………………………….. 66

3.7. Выражение match в PHP 8………………………………………………………………………………………………….. 67

Глава 4. Файл конфигурации php.ini………………………………………………………. 68

4.1. Каталог /etc/php………………………………………………………………………………………………………………….. 68

4.2. Параметры памяти……………………………………………………………………………………………………………… 69

4.3. Zend OPcache……………………………………………………………………………………………………………………….. 69

4.4. Максимальное время выполнения…………………………………………………………………………………….. 71

4.5. Загрузка файлов………………………………………………………………………………………………………………….. 72

4.6. Обработка сессий……………………………………………………………………………………………………………….. 72

4.7. Буферизация вывода…………………………………………………………………………………………………………… 73

4.8. Директива error_reporting()……………………………………………………………………………………………….. 73

4.9. Отключение потенциально опасных функций…………………………………………………………………. 73

4.10. Директива allow_url_open……………………………………………………………………………………………….. 74

Раздел 2. Передача параметров PHP-программам……………….. 75

Глава 5. Методы GET и POST…………………………………………………………………. 77

5.1. Интерфейс CGI…………………………………………………………………………………………………………………….. 77

5.2. Метод GET…………………………………………………………………………………………………………………………… 79

5.3. Метод POST…………………………………………………………………………………………………………………………. 79

Глава 6. Протокол HTTP и интерфейс CGI…………………………………………….. 81

6.1. Специальные переменные окружения CGI……………………………………………………………………….. 81

6.2. Заголовки протокола HTTP……………………………………………………………………………………………….. 82

6.3. Коды ответов протокола HTTP…………………………………………………………………………………………. 83

Глава 7. Передача параметров посредством HTML-формы…………………….. 85

7.1. Создание простейшей формы и ее обработка в сценарии………………………………………………. 85

7.2. Создание пользовательского интерфейса с помощью формы………………………………………… 88

7.2.1. Ввод текста. Теги INPUT и TEXTAREA………………………………………………………………………… 88

7.2.2. Зависимые и независимые переключатели…………………………………………………………………. 90

7.2.3. Списки выбора………………………………………………………………………………………………………………. 91

7.2.4. Форма для передачи файлов………………………………………………………………………………………… 93

7.2.5. Кнопки……………………………………………………………………………………………………………………………. 93

7.3. Проверка параметров формы…………………………………………………………………………………………….. 94

7.3.1. Проверка корректности e-mail……………………………………………………………………………………… 95

7.3.2. Проверка правильности номера банковской карты…………………………………………………… 96

7.3.3. Удаление лишних пробелов…………………………………………………………………………………………. 97

7.4. Директива @csrf шаблонизатора Blade……………………………………………………………………………. 97

Глава 8. Не забываем о поисковой оптимизации…………………………………… 99

8.1. «Дружественные» интернет-адреса…………………………………………………………………………………… 99

8.1.1. Организация SEF URL с помощью файла .htaccess………………………………………………….. 100

8.1.2. Использование фреймворков……………………………………………………………………………………… 102

8.2. Идентификаторы сеансов…………………………………………………………………………………………………. 102

8.3. Производительность сценария………………………………………………………………………………………… 102

8.3.1. Использование шаблонизатора. Сокращение количества инструкций echo………… 103

8.3.2. Включение OPcache……………………………………………………………………………………………………. 103

8.3.3. Включение HTTP 2.0…………………………………………………………………………………………………… 104

8.3.4. Обновление версии PHP……………………………………………………………………………………………… 104

Раздел 3. Массивы и списки…………………………………………………….. 105

Глава 9. Основные операции над массивами и списками…………………….. 107

9.1. Массив и список. Цикл foreach………………………………………………………………………………………… 107

9.2. Функции list() и array()……………………………………………………………………………………………………… 110

9.3. Удаление массива…………………………………………………………………………………………………………….. 112

9.4. Слияние массивов……………………………………………………………………………………………………………… 112

9.5. Функция print_r()………………………………………………………………………………………………………………. 114

9.6. Разыменовывание массива………………………………………………………………………………………………. 115

Глава 10. Функции сортировки массивов…………………………………………….. 117

10.1. Сортировка массивов……………………………………………………………………………………………………… 117

10.2. Функция sort() — сортировка списка…………………………………………………………………………….. 117

10.3. Функция asort() — сортировка массива по значениям………………………………………………… 118

10.4. Функция ksort() — сортировка по ключам……………………………………………………………………. 119

10.5. Функции array_reverse() и shuffle()………………………………………………………………………………… 120

10.6. Собственная функция сортировки…………………………………………………………………………………. 120

10.7. Натуральная сортировка……………………………………………………………………………………………….. 121

Глава 11. Особые операции над массивами…………………………………………. 123

11.1. Добавление и удаление элементов массива…………………………………………………………………. 123

11.2. Упаковка переменных в массив и их извлечение…………………………………………………………. 124

11.3. Получение части массива………………………………………………………………………………………………. 126

11.4. Функции автоматического заполнения массива………………………………………………………….. 126

11.5. Сравнение массивов……………………………………………………………………………………………………….. 127

11.6. Полезные операции над массивом………………………………………………………………………………… 128

11.6.1. Вычисление суммы и произведения всех элементов массива………………………………. 128

11.6.2. Проверка существования элемента в массиве……………………………………………………….. 128

11.6.3. Получение случайного элемента из массива…………………………………………………………. 129

11.6.4. Удаление дубликатов из массива……………………………………………………………………………. 129

11.6.5. Получение значений и ключей массива………………………………………………………………….. 130

11.6.6. Замена местами значений и ключей……………………………………………………………………….. 130

11.6.7. Подсчет значений в массиве…………………………………………………………………………………….. 130

11.6.8. Замена в массиве………………………………………………………………………………………………………. 131

11.6.9. Поиск в массиве…………………………………………………………………………………………………………. 131

11.6.10. Прогулка по массиву………………………………………………………………………………………………. 132

Раздел 4. Функции в PHP………………………………………………………………. 135

Глава 12. Полезные стандартные функции. Работа с датой………………….. 137

12.1. Генератор случайных чисел………………………………………………………………………………………….. 137

12.2. Дата и время……………………………………………………………………………………………………………………. 138

12.2.1. Кратко о timestamp…………………………………………………………………………………………………… 138

12.2.2. Функции strtotime() и checkdate()……………………………………………………………………………… 138

12.2.3. Вывод даты……………………………………………………………………………………………………………….. 139

12.2.4. Использование type=”date”……………………………………………………………………………………… 141

12.2.5. Функция checkdate(): проверка даты на корректность………………………………………….. 141

12.2.6. Класс DateTime: удобная работа с датой и временем…………………………………………… 143

Создание даты по строке………………………………………………………………………………………………… 143

Вычисление количества дней между двумя датами…………………………………………………….. 144

Работа с временнми интервалами……………………………………………………………………………….. 145

12.2.7. Настройка PHP для корректной работы с датами…………………………………………………. 146

12.3. Математические функции………………………………………………………………………………………………. 146

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

13.1. Основные строковые функции……………………………………………………………………………………….. 148

13.2. Специальные функции замены………………………………………………………………………………………. 152

13.3. Функции преобразования строки………………………………………………………………………………….. 154

13.4. Функции преобразования кодировок……………………………………………………………………………. 156

13.5. Функции для работы с отдельными символами строки. Разыменовывание строки…. 157

13.6. Функция md5() и другие функции шифрования/хеширования. API хеширования
паролей……………………………………………………………………………………………………………………………. 158

13.7. Функции explode() и implode(): работа с подстроками………………………………………………… 159

13.8. Статистические функции……………………………………………………………………………………………….. 160

13.9. Функции вывода текста………………………………………………………………………………………………….. 161

13.10. Установка локали…………………………………………………………………………………………………………. 163

13.11. Форматирование чисел и денежных величин…………………………………………………………….. 164

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

13.13. Строки в PHP 7/8…………………………………………………………………………………………………………… 165

Глава 14. Работаем с файлами и каталогами………………………………………… 166

14.1. Права доступа в UNIX……………………………………………………………………………………………………. 166

14.2. Чтение файла…………………………………………………………………………………………………………………… 168

14.2.1. Функции fopen() и fread()………………………………………………………………………………………….. 169

14.2.2. Функция file(): построчное чтение файла……………………………………………………………….. 171

14.2.3. Чтение всего файла: функция file_get_contents()……………………………………………………. 172

14.3. Запись файла…………………………………………………………………………………………………………………… 172

14.4. Создание временных файлов…………………………………………………………………………………………. 173

14.5. Работа с CSV-файлами…………………………………………………………………………………………………… 173

14.6. Специальные функции для работы с файлами…………………………………………………………….. 175

14.6.1. Функции для работы с именами файлов…………………………………………………………………. 175

14.6.2. Работа с правами доступа……………………………………………………………………………………….. 176

14.6.3. Копирование, переименование и удаление файлов………………………………………………. 177

14.6.4. Время доступа к файлу…………………………………………………………………………………………….. 178

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

14.7. Совместный доступ к файлу………………………………………………………………………………………….. 179

14.8. Функции для работы с каталогами……………………………………………………………………………….. 180

Глава 15. Вывод графических изображений средствами PHP……………….. 182

15.1. Библиотека GD………………………………………………………………………………………………………………… 182

15.1.1. Получение информации об изображении……………………………………………………………….. 182

15.1.2. Конвертирование графических форматов………………………………………………………………. 185

15.1.3. Вывод текста поверх картинки. Задание цвета……………………………………………………… 187

15.1.4. Прозрачность…………………………………………………………………………………………………………….. 190

15.1.5. Рисование графических примитивов……………………………………………………………………….. 191

15.1.6. Поворот изображения………………………………………………………………………………………………. 193

15.2. Изменение размера изображения………………………………………………………………………………….. 193

15.3. Создание водяных знаков………………………………………………………………………………………………. 195

15.4. Поддержка графического формата WebP…………………………………………………………………….. 197

Глава 16. Работа с сетевыми сокетами в PHP. Сетевые функции…………. 199

16.1. Еще раз о том, что такое сокет………………………………………………………………………………………. 199

16.2. Функция fsockopen()………………………………………………………………………………………………………… 199

16.3. Примеры работы с сокетами………………………………………………………………………………………….. 200

16.3.1. Работаем с протоколом HTTP…………………………………………………………………………………. 200

16.3.2. Отправка почты с использованием сокетов……………………………………………………………. 202

16.3.3. Простейший клиент/сервер………………………………………………………………………………………. 204

16.4. Блокирующий и неблокирующий режимы сокета……………………………………………………….. 206

16.5. DNS-функции…………………………………………………………………………………………………………………… 206

Глава 17. Собственные функции………………………………………………………….. 208

17.1. Зачем нужны собственные функции?……………………………………………………………………………. 208

17.2. Особенности функций в PHP………………………………………………………………………………………….. 208

17.3. Объявление функции………………………………………………………………………………………………………. 209

17.4. Области видимости функции…………………………………………………………………………………………. 211

17.5. Вложенность функций……………………………………………………………………………………………………. 211

17.6. Переменное число аргументов………………………………………………………………………………………. 213

17.7. Передача массивов в качестве параметров………………………………………………………………….. 214

17.8. Передача аргументов по ссылке……………………………………………………………………………………. 216

17.9. Генераторы……………………………………………………………………………………………………………………… 217

17.10. Полезные примеры……………………………………………………………………………………………………….. 219

17.10.1. Получение реального IP-адреса клиента……………………………………………………………… 219

17.10.2. Генерирование сложного пароля………………………………………………………………………….. 220

17.10.3. Рекурсивное удаление каталога……………………………………………………………………………. 220

17.10.4. Отправка файла в браузер……………………………………………………………………………………… 221

17.10.5. Сжатие файла «на лету»………………………………………………………………………………………… 222

Раздел 5. База данных MySQL…………………………………………………….. 225

Глава 18. Установка MySQL на VDS……………………………………………………. 227

18.1. Несколько вводных слов………………………………………………………………………………………………… 227

18.2. Установка сервиса MySQL…………………………………………………………………………………………….. 227

18.3. Настройка MySQL………………………………………………………………………………………………………….. 228

18.4. Создание MySQL-пользователя…………………………………………………………………………………….. 229

18.5. Запуск и останов сервера………………………………………………………………………………………………. 230

Глава 19. Основы SQL…………………………………………………………………………. 231

19.1. Немного истории…………………………………………………………………………………………………………….. 231

19.2. Преимущества SQL…………………………………………………………………………………………………………. 231

19.3. Как выглядят запросы?…………………………………………………………………………………………………… 232

19.4. Что такое база данных?…………………………………………………………………………………………………. 233

19.5. Создание таблиц…………………………………………………………………………………………………………….. 234

19.6. Добавление записей в таблицу……………………………………………………………………………………… 238

19.7. Обновление записей……………………………………………………………………………………………………….. 238

19.8. Выборка записей…………………………………………………………………………………………………………….. 239

19.9. Удаление записей……………………………………………………………………………………………………………. 240

19.10. Встроенные функции……………………………………………………………………………………………………. 241

19.11. Группировка записей. Сложные запросы…………………………………………………………………… 242

19.12. Копирование записей из одной таблицы в другую……………………………………………………. 245

19.13. Кеширование запросов………………………………………………………………………………………………… 245

Глава 20. Функции для работы с MySQL……………………………………………… 248

20.1. Способы работы с базой данных………………………………………………………………………………….. 248

20.2. Расширение mysqli………………………………………………………………………………………………………….. 249

20.2.1. Подключение к серверу MySQL………………………………………………………………………………. 249

20.2.2. Передача запросов серверу……………………………………………………………………………………… 250

20.2.3. Метод real_escape_string()………………………………………………………………………………………. 252

20.3. Расширение PDO……………………………………………………………………………………………………………… 252

20.3.1. Соединение с базой данных…………………………………………………………………………………….. 252

20.3.2. Выполнение запросов и чтение результата……………………………………………………………. 254

20.3.3. Получение данных……………………………………………………………………………………………………. 256

20.3.4. Особенности использования операторов LIKE, LIMIT и IN…………………………………… 257

20.3.5. Имена таблиц и полей при работе с PDO……………………………………………………………….. 258

20.3.6. Запросы вставки и обновление………………………………………………………………………………… 258

Глава 21. Работа с базой данных в Laravel…………………………………………… 260

21.1. Способы работы с базой данных………………………………………………………………………………….. 260

21.2. Сырые (прямые) запросы……………………………………………………………………………………………….. 261

21.3. Конструктор запросов……………………………………………………………………………………………………. 262

21.4. Система Eloquent…………………………………………………………………………………………………………….. 265

Раздел 6. Инструменты для создания
сложных проектов……………………………………………………………………… 269

Глава 22. Разработка собственного шаблонизатора……………………………… 271

22.1. Организация файлов и каталогов проекта……………………………………………………………………. 271

22.2. Выносим параметры в отдельный файл……………………………………………………………………….. 273

22.3. Подключение дополнительных файлов………………………………………………………………………… 274

22.3.1. Инструкции include и require…………………………………………………………………………………… 274

22.3.2. Альтернативный способ подключения сценариев…………………………………………………. 275

22.3.3. Инструкции include_once и require_once……………………………………………………………….. 277

22.4. Шаблоны…………………………………………………………………………………………………………………………. 277

Глава 23. Шаблонизатор Blade……………………………………………………………… 282

23.1. Введение в Blade……………………………………………………………………………………………………………… 282

23.2. Вывод значений скалярных переменных……………………………………………………………………… 283

23.3. Директивы Blade……………………………………………………………………………………………………………… 283

23.3.1. Директива @if……………………………………………………………………………………………………………. 283

23.3.2. Директивы @for, @foreach и @while………………………………………………………………………. 284

23.3.3. Директивы @forelse и @endforelse………………………………………………………………………….. 284

23.4. Включение представлений. Директива @include………………………………………………………… 285

23.5. Директива @csrf……………………………………………………………………………………………………………… 287

Глава 24. Объектно-ориентированное программирование…………………… 288

24.1. Основы ООП…………………………………………………………………………………………………………………….. 288

24.2. Классы и объекты…………………………………………………………………………………………………………… 289

24.3. Конструкторы и деструкторы класса…………………………………………………………………………… 291

24.4. Наследование классов. Полиморфизм………………………………………………………………………….. 293

24.5. Область видимости членов класса………………………………………………………………………………… 294

24.6. Абстрактные классы и методы………………………………………………………………………………………. 295

24.7. Служебное слово final……………………………………………………………………………………………………. 295

24.8. Клонирование объектов…………………………………………………………………………………………………. 296

24.9. Константы — члены класса…………………………………………………………………………………………… 297

24.10. Статические члены класса…………………………………………………………………………………………… 297

24.11. Оператор instanceof……………………………………………………………………………………………………… 298

24.12. Итераторы……………………………………………………………………………………………………………………… 298

24.13. Пространства имен……………………………………………………………………………………………………….. 299

24.13.1. Общая концепция……………………………………………………………………………………………………. 299

24.13.2. Объявление пространства имен…………………………………………………………………………….. 300

24.13.3. Псевдонимы…………………………………………………………………………………………………………….. 301

24.14. Типажи…………………………………………………………………………………………………………………………… 302

24.15. Вызов метода или свойства класса выражением………………………………………………………. 303

24.16. Генераторы……………………………………………………………………………………………………………………. 303

24.17. Атрибуты……………………………………………………………………………………………………………………….. 305

Глава 25. Хранение данных в Cookies и сессиях…………………………………… 306

25.1. Зачем нужны Cookies и сессии?…………………………………………………………………………………….. 306

25.2. Cookies или хранение данных на стороне клиента……………………………………………………… 306

25.2.1. Что такое Cookies?……………………………………………………………………………………………………. 306

25.2.2. Установка Cookies…………………………………………………………………………………………………….. 307

25.2.3. Удаление Cookies……………………………………………………………………………………………………… 308

25.2.4. Организация корзины с помощью Cookies……………………………………………………………… 309

25.3. Механизм сессий…………………………………………………………………………………………………………….. 311

25.3.1. Для чего нужны сессии?…………………………………………………………………………………………… 311

25.3.2. Автоматическое создание сессии……………………………………………………………………………. 312

25.3.3. Хранение данных в сессии……………………………………………………………………………………….. 312

Глава 26. Обработка исключений………………………………………………………… 313

26.1. Введение в обработку исключений……………………………………………………………………………….. 313

26.2. Блок catch………………………………………………………………………………………………………………………… 314

26.3. Блок finally………………………………………………………………………………………………………………………. 315

26.4. Глобальный обработчик исключений………………………………………………………………………….. 317

Глава 27. Контроль версий…………………………………………………………………… 318

27.1. Выбор системы контроля версий…………………………………………………………………………………… 318

27.2. Первоначальная настройка…………………………………………………………………………………………… 319

27.3. Создание нового репозитория или получение его по существующему URL-адресу.. 319

27.4. Операции с файлами. Перемещение и удаление версий файлов репозитория………….. 320

27.5. Сохранение и восстановление незавершенных изменений………………………………………… 321

27.6. Просмотр изменений и создание коммитов (фиксация изменений)…………………………….. 321

27.7. Коллективная работа……………………………………………………………………………………………………… 322

27.8. Просмотр и изучение истории изменений файлов проекта…………………………………………. 322

27.9. Откат изменений. Удаление ошибок и корректировка созданной истории………………. 323

27.10. Синхронизация с удаленным репозиторием.
Регистрация удаленного репозитория и обмен изменениями……………………………………. 323

Глава 28. Тестирование PHP-сценариев……………………………………………….. 324

28.1. Программа работает, но не так, как нам нужно…………………………………………………………… 324

28.2. «Самодельные» точки останова……………………………………………………………………………………. 325

28.3. Система автоматического тестирования……………………………………………………………………… 327

28.4. Директива error_reporting……………………………………………………………………………………………… 330

Часть II.  Практика……………………………………………………………………. 331

Раздел 7. Разработка основных элементов сайта…………… 333

Глава 29. Загрузка файлов на сервер……………………………………………………. 335

29.1. Что нужно знать о загрузке файлов на сервер?……………………………………………………………. 335

29.2. Реализация загрузки файла……………………………………………………………………………………………. 338

29.3. Загрузка нескольких файлов………………………………………………………………………………………….. 340

29.4. Индикатор загрузки файла…………………………………………………………………………………………….. 342

29.4.1. Некоторые теоретические предпосылки………………………………………………………………… 342

29.4.2. Пример практической реализации………………………………………………………………………….. 345

29.5. Проблемы при загрузке файлов…………………………………………………………………………………….. 352

Глава 30. Использование FTP-функций……………………………………………….. 353

30.1. Функции для работы с FTP…………………………………………………………………………………………….. 353

30.2. Примеры использования FTP-функций…………………………………………………………………………. 356

Глава 31. Отправка и прием почты………………………………………………………. 359

31.1. Отправка почты средствами PHP: функция mail()……………………………………………………….. 359

31.1.1. Использование функции…………………………………………………………………………………………… 359

31.1.2. Подробно о настройке сервера……………………………………………………………………………….. 360

31.2. Класс PHPMailer. Разработка сценария автоматической рассылки прайс-листа…… 361

31.3. Получение писем по протоколу POP3…………………………………………………………………………… 365

31.4. Получение писем по протоколу IMAP………………………………………………………………………….. 367

Глава 32. Введение в PEAR………………………………………………………………….. 370

32.1. Серьезные проекты и PEAR……………………………………………………………………………………………. 370

32.2. Пример использования класса DB…………………………………………………………………………………. 372

Глава 33. Импорт и экспорт данных…………………………………………………….. 375

33.1. Импорт прайс-листов из формата CSV в базу данных MySQL………………………………….. 375

33.2. Преобразование файлов Excel в CSV с помощью PHP. Импорт прайсов из Excel…….. 379

33.3. Работа с XML-файлами………………………………………………………………………………………………….. 380

33.3.1. Парсинг XML-файла…………………………………………………………………………………………………. 380

33.3.2. Генерирование XML-файла…………………………………………………………………………………….. 382

Глава 34. Работаем с MP3…………………………………………………………………….. 384

34.1. Формат MP3…………………………………………………………………………………………………………………….. 384

34.2. Библиотека PEAR……………………………………………………………………………………………………………. 385

34.3. Вывод ID3-тегов……………………………………………………………………………………………………………… 386

34.4. Редактирование ID3-тегов……………………………………………………………………………………………… 388

34.5. Удаление тега………………………………………………………………………………………………………………….. 388

Глава 35. Расширение cURL: практические примеры………………………….. 390

35.1. Этот загадочный cURL…………………………………………………………………………………………………… 390

35.2. Авторизация на сайте и загрузка файла после нее……………………………………………………… 392

35.3. Замена функции file_get_contents() с помощью cURL…………………………………………………. 395

35.4. Загрузка файла через FTP………………………………………………………………………………………………. 395

35.5. Проверка доступности сайта…………………………………………………………………………………………. 396

Раздел 8. Введение в Laravel…………………………………………………….. 399

Глава 36. Фреймворк или чистый PHP-код?………………………………………… 401

36.1. Что такое фреймворк?…………………………………………………………………………………………………….. 401

36.2. Обзор популярных PHP-фреймворков…………………………………………………………………………… 402

36.2.1. Zend Framework и The Laminas Project……………………………………………………………………. 402

36.2.2. Laravel………………………………………………………………………………………………………………………… 403

36.2.3. Symfony……………………………………………………………………………………………………………………… 403

36.2.4. Yii………………………………………………………………………………………………………………………………… 403

36.2.5. CodeIgniter…………………………………………………………………………………………………………………. 404

Глава 37. Установка Laravel на VDS с Ubuntu Linux…………………………….. 405

37.1. Выбор места для установки…………………………………………………………………………………………… 405

37.2. Установка необходимого ПО…………………………………………………………………………………………. 405

37.2.1. Установка веб-сервера Apache………………………………………………………………………………… 405

37.2.2. Установка PHP и его расширений…………………………………………………………………………… 407

37.2.3. Установка Laravel…………………………………………………………………………………………………….. 409

Глава 38. Определяем маршруты…………………………………………………………. 412

38.1. Запросы протокола HTTP……………………………………………………………………………………………… 412

38.2. Модель. Представление. Контроллер…………………………………………………………………………… 413

38.3. Простейшие маршруты. Сопоставление маршрута с контроллером………………………… 414

38.4. Параметры в маршрутах……………………………………………………………………………………………….. 415

38.5. Имена маршрутов…………………………………………………………………………………………………………… 416

38.6. Префиксы маршрутов…………………………………………………………………………………………………….. 417

38.7. Маршруты новостной страницы…………………………………………………………………………………… 417

Глава 39. Пишем контроллер……………………………………………………………….. 418

39.1. Создание контроллера…………………………………………………………………………………………………… 418

39.2. Простой метод: List()………………………………………………………………………………………………………. 419

39.3. Методы с параметрами: View() и GetArchiveContent()………………………………………………… 420

39.4. Обработка POST-запроса………………………………………………………………………………………………. 421

Глава 40. Создаем представление…………………………………………………………. 422

40.1. Каталог resources/views………………………………………………………………………………………………….. 422

40.2. Получение данных из контроллера………………………………………………………………………………. 423

40.3. Очистка кеша страниц и кеша представлений…………………………………………………………….. 424

Глава 41. Запрос и ответ………………………………………………………………………. 425

41.1. Работаем с запросами. Класс Request…………………………………………………………………………… 425

41.1.1. Основные методы……………………………………………………………………………………………………… 425

41.1.2. Получение информации о пользователе/запросе………………………………………………….. 426

41.1.3. Работа с файлами……………………………………………………………………………………………………… 427

41.1.4. Собирая все вместе…………………………………………………………………………………………………… 427

41.2. Класс Response………………………………………………………………………………………………………………… 428

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

42.1. Файловая система…………………………………………………………………………………………………………… 430

42.1.1. Конфигурация фасада Storage………………………………………………………………………………… 430

42.1.2. Методы фасада Storage……………………………………………………………………………………………. 431

42.1.3. Загрузка файлов на сервер………………………………………………………………………………………. 432

42.1.4. Метод download()……………………………………………………………………………………………………… 433

42.2. Сессии………………………………………………………………………………………………………………………………. 433

42.3. Работа с Cookies……………………………………………………………………………………………………………… 435

Раздел 9. Безопасность сайта………………………………………………….. 437

Глава 43. Как взламываются сайты и как этому помешать?
Основные сведения………………………………………………………………………………. 439

43.1. Основные способы взлома сайта…………………………………………………………………………………… 439

43.2. Два самых распространенных метода взлома…………………………………………………………….. 441

43.2.1. Межсайтовый скриптинг………………………………………………………………………………………….. 441

43.2.2. SQL-инъекции……………………………………………………………………………………………………………. 443

43.3. Остальные методы………………………………………………………………………………………………………….. 446

Глава 44. SSL-сертификат для сайта…………………………………………………….. 447

44.1. Выбор сертификата………………………………………………………………………………………………………… 447

44.1.1. Основные типы сертификатов………………………………………………………………………………….. 447

44.1.2. Какой тип сертификата выбрать?……………………………………………………………………………. 448

44.1.3. Особенности SSL-сертификатов разных типов………………………………………………………. 448

44.2. Где купить SSL-сертификат?………………………………………………………………………………………….. 451

44.3. Установка сертификата на веб-сервер………………………………………………………………………….. 452

44.3.1. Веб-сервер Apache2………………………………………………………………………………………………….. 452

44.3.2. Веб-сервер Ngnix……………………………………………………………………………………………………….. 453

Глава 45. Защита PHP с помощью конфигурационного файла…………….. 454

45.1. Конфигурационный файл php.ini………………………………………………………………………………….. 454

45.2. Отключение потенциально опасных функций……………………………………………………………… 455

45.3. Рекомендованные значения некоторых конфигурационных директив……………………… 455

Раздел 10. Полезные сведения………………………………………………….. 457

Глава 46. Устанавливаем визуальный редактор Summernote……………….. 459

46.1. Знакомство с редактором………………………………………………………………………………………………. 459

46.2. Интеграция Summernote и Laravel………………………………………………………………………………… 459

Глава 47. Работа с MongoDB средствами PHP………………………………………. 462

47.1. Что такое MongoDB?………………………………………………………………………………………………………. 462

47.2. Настройка интерпретатора PHP…………………………………………………………………………………… 463

47.3. Добавление данных в MongoDB……………………………………………………………………………………. 465

47.4. Чтение информации из базы данных…………………………………………………………………………….. 467

47.5. Преобразование объекта в массив………………………………………………………………………………… 469

Приложения…………………………………………………………………………………… 473

Приложение 1. Шаблоны проектирования…………………………………………… 475

П1.1. Введение в шаблоны проектирования………………………………………………………………………….. 475

П1.2. Шаблон «Стратегия»……………………………………………………………………………………………………… 476

П1.3. Шаблон «Адаптер»………………………………………………………………………………………………………… 477

П1.4. Шаблон «Фабрика»………………………………………………………………………………………………………… 478

П1.5. Шаблон «Одиночка»………………………………………………………………………………………………………. 479

Приложение 2. Профайлинг…………………………………………………………………. 481

П2.1. Что такое профайлинг?………………………………………………………………………………………………….. 481

П2.2. Типы профайлеров…………………………………………………………………………………………………………. 481

П2.3. Профайлер Xdebug…………………………………………………………………………………………………………. 482

П2.4. XHProf……………………………………………………………………………………………………………………………… 482

Приложение 3. Виртуальная машина HHVM……………………………………….. 485

П3.1. Что такое HHVM?………………………………………………………………………………………………………….. 485

П3.2. Подойдет ли HHVM именно для вас?…………………………………………………………………………… 486

П3.3. Установка HHVM…………………………………………………………………………………………………………… 487

П3.4. Настройка HHVM………………………………………………………………………………………………………….. 487

П3.5. Язык Hack……………………………………………………………………………………………………………………….. 489

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

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

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

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

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

“Основы искусственного интеллекта в примерах на Python. Самоучитель. 2-е изд.”

Основы искусственного интеллекта в примерах на Python. Самоучитель. 2-е изд.

Описаны инструментальные средства для разработки приложений искусственного интеллекта. Даны основы языка программирования Python. Раскрыты основные понятия и определения искусственного интеллекта. Рассмотрены вопросы программной реализации элементов нейронной сети и построения многослойных нейронных сетей. Большое внимание уделено применению специализированных библиотек PyBrain, Scikit-learn, Keras, TensorFlow для формирования структуры нейронных сетей и их обучения, и библиотек ImageAI и OpenCV для обработки изображений. Материал иллюстрирован простыми и понятными примерами, демонстрирующими использование предварительно обученных нейронных сетей для распознавания объектов на изображениях, создания собственных наборов данных, формирования структуры сети, ее обучения и практического применения. Во 2-м издании обновлены программные коды и версии библиотек, улучшены рисунки, учтены пожелания читателей и исправлены ошибки.
Электронное приложение-архив, доступное на сайте издательства, содержит листинги описанных в книге примеров.
издании обновлены программные коды и версии библиотек, улучшены рисунки, учтены пожелания читателей и исправлены ошибки.

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

  • Необходимые основы языка Python
  • Элементы искусственного интеллекта
  • Разработка приложений искусственного интеллекта
  • Инструментальные средства и полезные библиотеки
  • Новые версии ПО и библиотек
  • Программная реализация нейронных сетей
  • Библиотеки PyBrain, Scikit-learn, Keras, TensorFlow, ImageAI, OpenCV
  • Наглядные примеры нейронных сетей, их обучения и использования

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

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

Глава 1. Инструментальные средства для разработки приложений искусственного интеллекта           15

1.1. Интерпретатор Python………………………………………………………………………………………………………… 16

1.1.1. Установка Python в Windows…………………………………………………………………………………… 17

1.1.2. Установка Python в Linux………………………………………………………………………………………… 19

1.1.3. Проверка интерпретатора Python…………………………………………………………………………… 20

1.2. Интерактивная среда разработки программного кода PyCharm…………………………………… 20

1.2.1. Установка PyCharm в Windows……………………………………………………………………………….. 21

1.2.2. Установка PyCharm в Linux…………………………………………………………………………………….. 23

1.2.3. Проверка PyCharm……………………………………………………………………………………………………. 24

1.3. Установка пакетов в Python с использованием менеджера пакетов pip………………………… 26

1.3.1. Где взять отсутствующий пакет?…………………………………………………………………………….. 27

1.3.2. Менеджер пакетов pip в Python……………………………………………………………………………….. 27

1.3.3. Использование pip…………………………………………………………………………………………………….. 28

Установка пакета……………………………………………………………………………………………………… 28

Удаление пакета………………………………………………………………………………………………………. 29

Обновление пакетов…………………………………………………………………………………………………. 29

Просмотр установленных пакетов…………………………………………………………………………. 29

Поиск пакета в репозитории……………………………………………………………………………………. 29

1.4. Интерактивная среда разработки интерфейса PyQt………………………………………………………… 30

1.5. Краткие итоги главы…………………………………………………………………………………………………………… 33

Глава 2. Основы языка программирования Python………………………………… 34

2.1. Первая программа в среде интерпретатора Python…………………………………………………………. 35

2.2. Оконная форма как основа интерфейса……………………………………………………………………………. 39

2.3. Подключение Windows-формы к программе на Python…………………………………………………… 43

2.4. Сборка исполняемого файла на Python под Windows……………………………………………………… 47

2.5. Базовые конструкции языка Python…………………………………………………………………………………… 51

2.5.1. Переменные……………………………………………………………………………………………………………….. 51

2.5.2. Функции…………………………………………………………………………………………………………………….. 53

2.5.3. Массивы (списки)……………………………………………………………………………………………………… 58

2.5.4. Условия и циклы……………………………………………………………………………………………………….. 60

Условия……………………………………………………………………………………………………………………… 60

Циклы………………………………………………………………………………………………………………………… 61

2.5.5. Классы и объекты…………………………………………………………………………………………………….. 64

Классы………………………………………………………………………………………………………………………. 65

Объекты…………………………………………………………………………………………………………………….. 67

2.5.6. Создание классов и объектов на примере автомобиля…………………………………………. 69

2.5.7. Программные модули………………………………………………………………………………………………. 72

Установка модуля…………………………………………………………………………………………………….. 72

Подключение и использование модуля………………………………………………………………….. 73

2.6. Краткие итоги главы…………………………………………………………………………………………………………… 74

Глава 3. Элементы искусственного интеллекта……………………………………… 75

3.1. Основные понятия и определения искусственного интеллекта………………………………………. 76

3.2. Искусственный нейрон как основа нейронных сетей………………………………………………………. 77

3.2.1. Функция единичного скачка……………………………………………………………………………………. 83

3.2.2. Сигмоидальная функция активации……………………………………………………………………….. 85

3.2.3. Гиперболический тангенс………………………………………………………………………………………… 87

3.3. Нейронные сети…………………………………………………………………………………………………………………… 88

3.3.1. Однослойные нейронные сети…………………………………………………………………………………. 90

3.3.2. Многослойные нейронные сети………………………………………………………………………………. 90

3.4. Обучение нейронных сетей………………………………………………………………………………………………… 92

3.4.1. Что такое обучение сети?………………………………………………………………………………………… 92

3.4.2. Обучающая выборка………………………………………………………………………………………………… 93

3.4.3. Тестовая выборка……………………………………………………………………………………………………… 94

3.4.4. Обучение с учителем………………………………………………………………………………………………… 94

3.4.5. Обучение без учителя………………………………………………………………………………………………. 95

3.5. Краткие итоги главы…………………………………………………………………………………………………………… 95

Глава 4. Программная реализация элементов нейронной сети……………….. 96

4.1. Персептроны……………………………………………………………………………………………………………………….. 96

4.2. Классификация персептронов…………………………………………………………………………………………. 100

4.2.1. Персептрон с одним скрытым слоем…………………………………………………………………….. 100

4.2.2. Однослойный персептрон……………………………………………………………………………………… 100

4.2.3. Виды персептронов………………………………………………………………………………………………… 105

4.3. Роль персептронов в нейронных сетях……………………………………………………………………………. 106

4.4. Линейная разделимость объектов…………………………………………………………………………………… 109

4.5. Решение задач классификации объектов на основе логических функций…………………… 112

4.6. Урок 1. Учим персептрон понимать изображения…………………………………………………………. 117

4.6.1. Распознавание цифр……………………………………………………………………………………………….. 119

4.7. Урок 2. Учим персептрон подбирать веса связей…………………………………………………………… 123

4.8. Дельта-правило…………………………………………………………………………………………………………………. 139

4.9. Линейная аппроксимация………………………………………………………………………………………………… 142

4.10. Учим персептрон классифицировать объекты. Обучение без учителя……………………… 148

4.11. Адаптивные линейные нейроны……………………………………………………………………………………. 157

4.12. Краткие итоги главы………………………………………………………………………………………………………. 171

Глава 5. Построение многослойных нейронных сетей………………………….. 172

5.1. Исследуем простейший искусственный нейрон…………………………………………………………….. 172

5.2. Программируем простейший искусственный нейрон……………………………………………………. 177

5.3. Строим сеть из нейронов………………………………………………………………………………………………….. 179

5.4. Обучаем нейронную сеть…………………………………………………………………………………………………. 182

5.5. Последовательность шагов проектирования нейронных сетей……………………………………. 193

5.6. Краткие итоги главы…………………………………………………………………………………………………………. 196

Глава 6. Полезные библиотеки для создания нейронных сетей на Python 197

6.1. Виды специализированных библиотек…………………………………………………………………………… 198

6.1.1. NumPy……………………………………………………………………………………………………………………… 198

6.1.2. Pandas………………………………………………………………………………………………………………………. 198

6.1.3. matplotlib…………………………………………………………………………………………………………………. 198

6.1.4. Theano……………………………………………………………………………………………………………………… 199

6.1.5. TensorFlow……………………………………………………………………………………………………………….. 199

6.1.6. Keras…………………………………………………………………………………………………………………………. 199

6.1.7. PyBrian…………………………………………………………………………………………………………………….. 200

6.2. Библиотека для построения нейронных сетей PyBrain…………………………………………………. 200

6.2.1. Общие сведения о библиотеке PyBrain…………………………………………………………………. 200

6.2.2. Термины и определения в библиотеке PyBrain……………………………………………………. 203

6.2.3. Установка (подключение) библиотеки PyBrain…………………………………………………… 205

6.2.4. Основы работы с библиотекой PyBrain………………………………………………………………… 207

6.2.5. Работа с наборами данных в библиотеке PyBrain………………………………………………. 209

6.2.6. Пример создания нейронной сети с библиотекой PyBrain………………………………….. 219

6.3. Библиотека scikit-learn для создания и обучения нейронных сетей…………………………….. 223

6.3.1. Наборы данных в библиотеке scikit-learn…………………………………………………………….. 227

6.3.2. Обучающие и тестовые наборы данных в библиотеке scikit-learn…………………….. 230

6.3.3. Предварительный анализ наборов данных…………………………………………………………. 231

6.3.4. Обучение нейронной сети с библиотекой scikit-learn………………………………………….. 234

6.3.5. Оценка качества обучения моделей в библиотеке scikit-learn……………………………. 237

6.3.6. Персептрон и библиотека scikit-learn……………………………………………………………………. 238

6.3.7. Классификаторы на основе логистической регрессии в библиотеке scikit-learn. 244

6.4. Библиотека Keras и сверточные нейронные сети…………………………………………………………… 250

6.4.1. Общие сведения о библиотеке Keras…………………………………………………………………….. 250

6.4.2. Сверточные нейронные сети…………………………………………………………………………………. 251

6.4.3. Строим сверточную нейронную сеть с библиотекой Keras………………………………… 256

6.5. Нейронные сети с библиотекой TensorFlow……………………………………………………………………. 271

6.5.1. Строим простую нейронную сеть с библиотекой TensorFlow……………………………. 272

6.5.2. Строим нейронную сеть для классификации изображений
с библиотекой TensorFlow……………………………………………………………………………………………….. 277

6.6. Краткие итоги главы…………………………………………………………………………………………………………. 295

Глава 7. Создание нейронных сетей обработки изображений:
библиотека ImageAI……………………………………………………………………………… 297

7.1. Классы распознавания и обнаружения объектов на изображениях……………………………. 298

7.1.1. Распознавание объектов в изображениях: класс ImageClassification……………….. 298

Функция .setModelTypeAsMobileNetV2()………………………………………………………………. 301

Функция .setModelTypeAsResNet50()…………………………………………………………………….. 301

Функция .setModelTypeAsInceptionV3()………………………………………………………………… 301

Функция .setModelTypeAsDenseNet121()………………………………………………………………. 301

Функция .setModelPath()………………………………………………………………………………………… 301

Функция .loadModel()…………………………………………………………………………………………….. 302

Функция .classifyImage()…………………………………………………………………………………………. 302

7.1.2. Обнаружение и извлечение объектов из изображений: класс ObjectDetection…. 307

Функция .setModelTypeAsRetinaNet()……………………………………………………………………. 308

Функция .setModelTypeAsYOLOv3()……………………………………………………………………….. 308

Функция .setModelTypeAsTinyYOLOv3()………………………………………………………………… 308

Функция .setModelPath()………………………………………………………………………………………… 309

Функция .loadModel()…………………………………………………………………………………………….. 309

Функция .detectObjectsFromImage()………………………………………………………………………. 309

Функция .CustomObjects()………………………………………………………………………………………. 312

Функция .detectCustomObjectsFromImage()………………………………………………………….. 314

7.2. Классы распознавания объектов в видеофайлах и видеопотоках……………………………….. 320

7.2.1. Обнаружение объектов в видеофайлах и видеопотоках с видеокамер:
класс VideoObjectDetection……………………………………………………………………………………………… 320

Функция .setModelTypeAsRetinaNet()……………………………………………………………………. 321

Функция .setModelTypeAsYOLOv3()……………………………………………………………………….. 321

Функция .setModelTypeAsTinyYOLOv3()………………………………………………………………… 321

Функция .setModelPath()………………………………………………………………………………………… 322

Функция .loadModel()…………………………………………………………………………………………….. 322

Функция .detectObjectsFromVideo()………………………………………………………………………. 322

7.2.2. Примеры программы распознавания объектов в видеофайлах…………………………. 324

7.2.3. Пример программы распознавания объектов в видеопотоках с видеокамер……. 327

7.2.4. Пример программы с пользовательскими функциями для распознавания объектов в видеофайлах               329

7.3. Обучение нейронных сетей на пользовательских наборах данных……………………………. 341

7.3.1. Обучение нейронной сети на пользовательском наборе данных:
класс ClassificationModelTraining………………………………………………………………………………….. 341

Функция .setModelTypeAsMobileNetV2()………………………………………………………………. 343

Функция .setModelTypeAsResNet50()…………………………………………………………………….. 343

Функция .setModelTypeAsInceptionV3()………………………………………………………………… 343

Функция .setModelTypeAsDenseNet121()………………………………………………………………. 344

Функция .setDataDirectory()…………………………………………………………………………………… 344

Функция .trainModel()…………………………………………………………………………………………….. 344

7.3.2. Пример программы обучения нейронной сети на пользовательском наборе данных          346

7.4. Применение пользовательских нейронных сетей с библиотекой ImageAI…………………. 350

7.4.1. Поиск пользовательских объектов в изображениях:
класс CustomImageClassification…………………………………………………………………………………….. 350

Функция .setModelTypeAsResNet50()…………………………………………………………………….. 350

Функция .setModelTypeAsInceptionV3()………………………………………………………………… 351

Функция .setModelTypeAsDenseNet121()………………………………………………………………. 351

Функция .setModelPath()………………………………………………………………………………………… 351

Функция .setJsonPath()…………………………………………………………………………………………… 351

Функция .loadModel()…………………………………………………………………………………………….. 351

Функция .classifyImage()…………………………………………………………………………………………. 352

7.4.2. Пример программы поиска пользовательских объектов в изображениях………… 353

7.5. Нейронные сети с архитектурой YOLOv3 для обнаружения объектов в изображениях 355

7.5.1. Обучение пользовательской модели: класс Custom.DetectionModelTrainer…….. 355

Метод .setModelTypeAsYOLOv3()…………………………………………………………………………… 358

Метод .trainer.setDataDirectory()………………………………………………………………………….. 358

Метод .trainer.setTrainConfig()……………………………………………………………………………… 358

Функция .trainer.evaluateModel()………………………………………………………………………….. 360

7.5.2. Обнаружение и извлечение пользовательских объектов из изображений:
класс CustomObjectDetection…………………………………………………………………………………………… 361

Метод .setModelTypeAsYOLOv3()…………………………………………………………………………… 364

Метод .setModelPath()……………………………………………………………………………………………. 364

Метод .setJsonPath()………………………………………………………………………………………………. 364

Метод .loadModel()………………………………………………………………………………………………… 364

Метод .detectObjectsFromImage()………………………………………………………………………….. 364

7.5.3. Обнаружение и извлечение пользовательских объектов из видеопотоков с видеокамер: класс CustomVideoObjectDetection……………………………………………………………………………………………. 367

Метод .setModelTypeAsYOLOv3()…………………………………………………………………………… 370

Метод .setModelPath()……………………………………………………………………………………………. 370

Метод .setJsonPath()………………………………………………………………………………………………. 370

Метод .loadModel()………………………………………………………………………………………………… 370

Метод .detectObjectsFromVideo()………………………………………………………………………….. 370

7.5.4. Формирование пользовательского обучающего набора данных:
приложение LabelImg………………………………………………………………………………………………………. 374

7.5.5. Пример программы обучения модели YOLOv3 на пользовательском наборе данных        383

7.5.6. Пример программы распознавания с помощью пользовательской модели YOLOv3……….. 384

7.6. Краткие итоги главы…………………………………………………………………………………………………………. 386

Глава 8. Создание приложений для обработки изображений:
библиотека OpenCV……………………………………………………………………………… 387

8.1. Обученные классификаторы Хаара для распознавания объектов в изображениях…… 388

8.2. Пример программы поиска лиц на фотографиях…………………………………………………………… 390

8.3. Пример программы поиска лиц в видеопотоках с видеокамер…………………………………….. 392

8.4. Пример программы распознавания глаз на фотографиях…………………………………………….. 393

8.5. Пример программы распознавания эмоций на изображениях……………………………………… 395

8.6. Пример программы распознавания автомобильных номеров на изображениях……….. 397

8.7. Пример программы распознавания автомобильных номеров в видеопотоке…………….. 398

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

8.9. Пример программы распознавания различных объектов из одного программного кода 403

8.10. Пример программы распознавания пешеходов на изображениях
с использованием OpenCV и HOG-детекторов…………………………………………………………….. 405

8.11. Пример программы распознавания пешеходов на видео с использованием OpenCV и HOG-детекторов               408

8.12. Распознавание конкретных людей на фотографиях в OpenCV………………………………….. 409

8.12.1. Пример программы для обучения модели распознавания лиц по фотографиям 412

8.12.2. Пример программы распознавания лиц конкретных людей на фотографиях. 419

8.13. Создание пользовательской модели распознавания людей в видеопотоке с видеокамеры в OpenCV     423

8.13.1. Пример программы формирования обучающей выборки пользователя для тренировки модели распознавания конкретных людей………………………………………………………………………………………………………….. 423

8.13.2. Пример программы обучения модели на основе обучающей выборки пользователя     425

8.13.3. Программа распознавания лиц людей на основе обучающей выборки пользователя    427

8.14. Краткие итоги главы………………………………………………………………………………………………………. 430

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

Список литературы………………………………………………………………………………. 440

Книги…………………………………………………………………………………………………………………………………………. 440

Электронные ресурсы……………………………………………………………………………………………………………… 440

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

Постолит

Постолит Анатолий Владимирович — доктор технических наук, профессор, академик Российской академии транспорта, лауреат Всероссийского конкурса «Инженер года». Профессиональный программист, автор книг компьютерной тематики, в том числе «Python, Django и Bootstrap для начинающих» и более 120 научных публикаций. Профессор Московского государственного автомобильно-дорожного технического университета (МАДИ). Занимался разработкой и внедрением информационных систем для транспортного комплекса Москвы и Московской области, для транспортного обслуживания зимних Олимпийских игр в г. Сочи, систем оплаты проезда и информирования пассажиров городского общественного транспорта. Специализируется на создании информационных систем на основе MS SQL Server, MS Visual Studio, Bluetooth-технологий, веб-приложений, а также систем искусственного интеллекта, обработки изображений и компьютерного зрения.

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

Новинка: “Microsoft SQL Server 2022”

Microsoft SQL Server 2022

Книга посвящена установке, настройке, администрированию и разработке баз данных с помощью СУБД MS SQL Server 2022. Материал сопровождается большим количеством примеров кода, которые можно использовать на практике. Рассмотрены основы языка запросов,  используемые типы данных, создание базы данных и основных ее объектов, средства отображения объектов и всех их характеристик. Показаны методы проектирования, создания и изменения таблиц; рассмотрены индексы, заполнение таблиц данными, изменение и удаление данных, выборка из базы, представления, транзакции, их характеристики и взаимодействие, хранимые процедуры и триггеры. Исходные коды примеров размещены на сайте издательства.

Эта книга в первую очередь предназначена тем, кто никогда не работал ни с какой версией MS SQL Server, а может быть, даже и вообще ни с какой системой управления базами данных (СУБД) — ни с реляционной, ни с сетевой, ни даже с иерархической, не говоря уж и о совсем простеньких (“настольных”) системах управления данными. Здесь вы не найдете сравнений настоящей версии сервера с предыдущими, детальных описаний того, что нового появилось в SQL Server 2022.

Я главным образом ориентируюсь на разработчиков баз данных (БД) и создателей программного продукта, требующего использования для своей работы баз данных, или на людей, которые собираются стать такими разработчиками и/или программистами.
Александр Бондарь

  • Общие сведения о SQL Server 2022
  • Принципы работы с базами данных
  • Создание базы данных и основных ее объектов
  • Проектирование, создание и изменение таблиц
  • Заполнение таблиц данными, изменение и удаление данных
  • Индексы
  • Представления
  • Транзакции, их характеристики и взаимодействие
  • Выборка данных
  • Хранимые процедуры, функции, определенные пользователем, триггеры
  • Средства отображения объектов и их характеристик

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

Введение. 9

Содержание книги. 11

Дополнительные материалы.. 13

Глава 1. Инсталляция программных средств. 15

1.1. Инсталляция MS SQL Server 2022 Developer 15

1.2. Установка SQL Server Management Studio. 19

Глава 2. Общие сведения о SQL Server 2022. 23

2.1. Реляционные базы данных. 23

2.1.1. Таблицы.. 23

2.1.2. Представления. 29

2.1.3. Хранимые процедуры и триггеры.. 30

2.1.4. Пользователи, привилегии и роли базы данных. 31

2.1.5. Задание первичных ключей таблиц. 31

2.1.6. Транзакции. 32

2.1.7. 12 правил Кодда. 33

2.2. Реализация отношений в реляционной модели. 34

2.2.1. Отношение “один к одному”. 34

2.2.2. Отношение “один ко многим”. 35

2.2.3. Отношение “многие ко многим”. 35

2.3. Нормализация таблиц. 36

2.3.1. Цель нормализации таблиц. 36

2.3.2. Первая нормальная форма. 37

2.3.3. Вторая нормальная форма. 39

2.3.4. Третья нормальная форма. 39

2.3.5. Другие нормальные формы.. 40

2.3.6. Денормализация таблиц. 41

2.4. Проектирование баз данных. 41

2.5. Язык Transact-SQL.. 43

2.5.1. Синтаксис. 43

2.5.2. Основные сведения о составе языка Transact-SQL.. 51

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

Глава 3. Работа с базами данных. 55

3.1. Запуск и останов экземпляра сервера. 56

3.1.1. Запуск экземпляра сервера. 56

3.1.2. Останов экземпляра сервера. 57

3.2. Что собой представляет база данных в SQL Server 58

3.2.1. Системные базы данных. 59

3.2.2. Базы данных пользователей. 61

3.2.3. Некоторые характеристики базы данных. 62

3.2.4. Некоторые характеристики файлов базы данных. 64

3.3. Получение сведений о базах данных и их файлах в текущем экземпляре сервера. 65

3.3.1. Системное представление sys.databases. 65

3.3.2. Системное представление sys.master_files. 66

3.3.3. Системное представление sys.database_files. 68

3.3.4. Системное представление sys.filegroups. 69

3.3.5. Другие средства получения сведений об объектах базы данных. 69

3.4. Создание и удаление базы данных. 72

3.4.1. Использование операторов Transact-SQL для создания, отображения
и удаления баз данных. 72

3.4.2. Создание базы данных с использованием диалоговых средств
Management Studio. 112

3.5. Изменение базы данных. 116

3.5.1. Изменение базы данных в языке Transact-SQL.. 116

3.5.2. Изменение базы данных диалоговыми средствами Management Studio. 128

3.5.3. Удаление базы данных диалоговыми средствами Management Studio. 135

3.6. Создание автономной базы данных. 135

3.6.1. Установка допустимости автономных баз данных. 136

3.6.2. Создание автономной базы данных и пользователя средствами языка Transact-SQL   137

3.6.3. Создание автономной базы данных диалоговыми средствами
Management Studio. 138

3.6.4. Создание автономного пользователя в Management Studio. 139

3.6.5. Соединение с автономной базой данных в Management Studio. 140

3.7. Создание мгновенных снимков базы данных. 141

3.8. Схемы базы данных. 143

3.8.1. Работа со схемами в Transact-SQL.. 143

3.8.2. Работа со схемами в Management Studio. 146

3.9. Средства копирования и восстановления баз данных. 148

3.9.1. Использование операторов Transact-SQL для копирования/восстановления базы данных  148

3.9.2. Использование диалоговых средств Management Studio
для копирования/восстановления базы данных. 149

3.10. Домашнее задание. 153

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

Глава 4. Типы данных. 155

4.1. Классификация типов данных в SQL Server 156

4.2. Объявление локальных переменных. 158

4.3. Числовые типы данных. 159

4.3.1. Тип данных BIT. 161

4.3.2. Целочисленные типы данных TINYINT, SMALLINT, INT, BIGINT. 163

4.3.3. Дробные числа NUMERIC, DECIMAL, SMALLMONEY, MONEY. 165

4.3.4. Числа с плавающей точкой FLOAT, REAL. 169

4.3.5. Функции для работы с числовыми данными. 170

4.4. Символьные данные. 175

4.4.1. Символьные строки CHAR, VARCHAR.. 176

4.4.2. Символьные строки NCHAR, NVARCHAR.. 177

4.4.3. Типы данных VARCHAR(MAX), NVARCHAR(MAX), VARBINARY(MAX) 178

4.4.4. Строковые функции. 178

4.5. Типы данных даты и времени. 189

4.5.1. Описание типов данных даты и времени. 189

4.5.2. Действия с датами и временем.. 191

4.6. Двоичные данные. 201

4.7. Пространственные типы данных. 202

4.7.1. Тип данных GEOMETRY. 203

4.7.2. Тип данных GEOGRAPHY. 215

4.8. Другие типы данных. 220

4.8.1. Тип данных SQL_VARIANT. 220

4.8.2. Тип данных HIERARCHYID.. 224

4.8.3. Тип данных UNIQUEIDENTIFIER.. 229

4.8.4. Тип данных CURSOR.. 230

4.8.5. Тип данных XML. 237

4.9. Создание и удаление пользовательских типов данных. 249

4.9.1. Синтаксис оператора создания пользовательского типа данных. 250

4.9.2. Создание псевдонима средствами Transact-SQL.. 251

4.9.3. Создание псевдонима в диалоговых средствах Management Studio. 252

4.9.4. Создание пользовательского табличного типа данных средствами
Transact-SQL.. 253

4.9.5. Создание пользовательского табличного типа данных диалоговыми средствами Management Studio  257

4.9.6. Удаление пользовательского типа данных. 257

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

Глава 5. Работа с таблицами. 261

5.1. Синтаксис оператора создания таблицы.. 262

5.1.1. Общие характеристики таблицы.. 263

5.1.2. Определение столбца. 265

5.1.3. Ограничения столбца и ограничения таблицы.. 268

5.1.4. Вычисляемые столбцы.. 274

5.1.5. Набор столбцов. 275

5.2. Примеры простых таблиц. 276

5.3. Создание секционированных таблиц. 289

5.3.1. Синтаксические конструкции. 289

5.3.2. Пример создания секционированной таблицы.. 292

5.3.3. Отображение результатов создания таблицы.. 301

5.3.4. Изменение характеристик секционированной таблицы.. 305

5.4. Создание таблиц диалоговыми средствами. 307

5.4.1. Создание таблицы секционирования. 307

5.4.2. Создание таблицы секционирования, схемы секционирования
и функции секционирования. 317

5.5. Отображение состояния секционированных таблиц. 323

5.6. Файловые потоки. 324

5.7. Удаление таблиц. 330

5.7.1. Определение зависимостей таблицы.. 330

5.7.2. Удаление таблицы оператором DROP TABLE.. 333

5.7.3. Удаление таблицы диалоговыми средствами Manager Studio. 333

5.8. Изменение характеристик таблиц. 335

5.8.1. Изменение таблиц при использовании оператора Transact-SQL.. 336

5.8.2. Изменение таблиц средствами Management Studio. 341

5.8.3. Построение диаграммы базы данных. 366

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

Глава 6. Индексы.. 369

6.1. Отображение индексов. 370

6.2. Работа с индексами средствами Transact-SQL.. 371

6.2.1. Создание обычного (реляционного) индекса. 371

6.2.2. Создание индекса для представлений. 378

6.2.3. Создание columnstore индекса. 379

6.2.4. Создание индекса для столбца XML.. 380

6.2.5. Создание пространственного индекса. 385

6.2.6. Удаление индекса. 387

6.2.7. Изменение индекса. 388

6.3. Работа с индексами в диалоговых средствах Management Studio. 390

6.3.1. Создание индекса в Management Studio. 390

6.3.2. Удаление индекса в Management Studio. 394

6.3.3. Изменение индекса в Management Studio. 394

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

Глава 7. Добавление, изменение и удаление данных. 395

7.1. Обобщенное табличное выражение. 395

7.2. Добавление данных (оператор INSERT) 396

7.3. Изменение данных (оператор UPDATE) 403

7.4. Удаление данных (оператор DELETE) 407

7.5. Удаление строк таблицы (оператор TRUNCATE TABLE) 408

7.6. Добавление, изменение или удаление строк таблицы (оператор MERGE) 408

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

Глава 8. Выборка данных. 415

8.1. Оператор SELECT. 415

8.2. Оператор UNION.. 424

8.3. Операторы EXCEPT, INTERSECT. 424

8.4. Примеры выборки данных. 425

8.4.1. Список выбора. 425

8.4.2. Упорядочение результата (ORDER BY) 427

8.4.3. Условие выборки данных (WHERE) 428

8.4.4. Соединение таблиц. 436

8.4.5. Группировка результатов выборки (GROUP BY, HAVING) 444

8.5. Использование операторов UNION, EXCEPT, INTERSECT. 449

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

Глава 9. Представления. 451

9.1. Синтаксис операторов для представлений. 452

9.1.1. Создание представления. 452

9.1.2. Изменение представления. 453

9.1.3. Удаление представления. 453

9.2. Создание представлений в Transact-SQL.. 454

9.3. Создание представлений диалоговыми средствами Management Studio. 458

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

Глава 10. Транзакции. 461

10.1. Понятие и характеристики транзакций. 461

10.2. Операторы работы с транзакциями. 462

10.3. Уровни изоляции транзакции. 464

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

Глава 11. Хранимые процедуры, функции,
определенные пользователем, триггеры.. 467

11.1. Язык хранимых процедур и триггеров. 467

11.1.1. Блок операторов BEGIN/END.. 468

11.2. Хранимые процедуры.. 472

11.2.1. Создание хранимой процедуры.. 472

11.2.2. Изменение хранимой процедуры.. 474

11.2.3. Удаление хранимой процедуры.. 474

11.2.4. Использование хранимых процедур. 475

11.3. Функции, определенные пользователем.. 480

11.3.1. Создание функции. 480

11.3.2. Изменение функций. 481

11.3.3. Удаление функций. 482

11.3.4. Использование функций. 482

11.4. Триггеры.. 483

11.4.1. Создание триггеров. 483

11.4.2. Изменение триггеров. 485

11.4.3. Удаление триггеров. 486

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

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

Приложение 1. Двенадцать правил Кодда. 493

Приложение 2. Зарезервированные слова Transact-SQL.. 495

Приложение 3. Утилита командной строки sqlcmd. 501

Приложение 4. Характеристики базы данных. 503

П4.1. Параметры Auto. 505

П4.2. Параметры доступности базы данных. 506

П4.3. Параметры автономной базы данных. 508

П4.4. Параметры восстановления. 509

П4.5. Общие параметры SQL.. 509

П4.6. Параметры компонента Service Broker 513

Приложение 5. Языки, представленные в SQL Server. 515

Приложение 6. Описание электронного архива. 517

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

Бондарь Александр

Бондарь Александр Григорьевич — преподаватель, опытный технический писатель. Автор переводов на русский язык книг Х. Борри «Firebird. Руководство разработчика баз данных» и Д. Петковича «Microsoft SQL Server 2008. Руководство для начинающих», а также автор книг «InterBase и Firebird. Практическое руководство для умных пользователей и начинающих разработчиков», «Microsoft SQL Server 2012» и «Microsoft SQL Server 2014». Александр является прирожденным методистом, умеющим излагать сложные вопросы программирования доступным для читателя языком.

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

Уникальная книга: “Хакерство. Физические атаки с использованием хакерских устройств”

Хакерство. Физические атаки с использованием хакерских устройств

Представляем уникальную книгу, подготовка которой заняла у нас очень много времени и потребовала значительных усилий. Но оно того стоило!
📚Книгу «Хакерство. Физические атаки с использованием хакерских устройств» написал Андрей Жуков — этичный хакер, пентестер, ведущий специалист по анализу защищенности в компании «Уральский центр систем безопасности» (УЦСБ).

Книга посвящена физическим атакам на беспроводные сети и компьютеры с использованием самодельных хакерских устройств и защите от них. Показан способ дампа памяти компьютера при помощи обычной флешки, метод перехвата сетевого трафика посредством зажимов-«крокодилов». Подробно освещены различные атаки BadUSB, продемонстрирован метод организации несанкционированного доступа к компьютеру при помощи 4G-модема и подключения к локальной сети через хакерское устройство на базе одноплатного компьютера. Описаны атаки на беспроводные сети и уличные IP-камеры с помощью самодельного устройства Wi-Fi Pineapple. Продемонстрирован способ атаки на сеть и устройства с использованием дрона, оборудованного одноплатным компьютером. Описана конструкция защищенного от помех квадрокоптера с управлением по мобильной сотовой сети. Рассказано о том, как превратить обычный мобильный телефон в «трекер» или хакерское устройство, позволяющее управлять гаражными воротами или шлагбаумами.

Для пентестеров и специалистов по информационной безопасности

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

 

Читатель узнает:

  • как сдампить оперативную память компьютера или ноутбука с помощью обычной флешки;
  • как сетевой трафик может быть перехвачен с использованием зажимов-«крокодильчиков»;
  • как хакеры похищают корпоративные пароли в метро и общественном транспорте;
  • как пролетающий мимо окна дрон может взломать компьютер в мгновение ока, даже если он расположен на 25-м этаже;
  • как построить на базе дешевого квадрокоптера такой «хакерский дрон», способный противостоять «глушилкам» и летать на десятки километров, не теряя связи с оператором;
  • как с помощью подключаемого устройства перехватывать сетевой трафик заблокированного компьютера;
  • как подключаться к IP-камерам на столбах;
  • как запустить Linux на телефоне, подключать к нему разнообразные хакерские устройства и управлять гаражными воротами или шлагбаумами, словно в компьютерной игре про хакеров.

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

Жуков Андрей

Жуков Андрей Николаевич, пентестер с восьмилетним стажем. Ведущий специалист по анализу защищенности в компании «Уральский центр систем безопасности» (УЦСБ). Обладатель сертификатов OSCP, OSCE, OSWE. Автор статей в журналах «Хакер» и «PentestMagazine», докладов на международных конференциях Positive Hack Days и Zero Nights.

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

Встречайте: “Ассемблер и программная модель процессоров x86/64”

Ассемблер и программная модель процессоров x86/64

Книга является практическим пособием по программной модели процессоров i80x86/64. Простейшие элементы этой модели (переменные, константы, методы адресации и система команд) изучаются с помощью ассемблера a86, отладчика d86. 32-битные возможности i80x86, включая защищенный режим, вентили, исключения и прерывания, привилегии, страничное преобразование, исключения, LDT и TSS, а также 64-битные режимы процессора x64 с исключениями и прерываниями в long mode изучаются с использованием ассемблера nasm.

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

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

Программирование на машинном уровне

  • Ассемблеры a86/a386
  • Netwide Assembler (nasm)
  • Система команд i80x86/64
  • 32-битный защищенный режим
  • 64-битные режимы

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

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

Примечания………………………………………………………………………………………………………………………………… 11

Часть I. Реальный режим…………………………………………………………….. 13

Глава 1. Установка программ………………………………………………………………… 15

Установка и настройка Bochs…………………………………………………………………………………………………… 15

Формирование образа диска…………………………………………………………………………………………………….. 16

Настройка отладочного варианта Bochs………………………………………………………………………………… 18

Примечания………………………………………………………………………………………………………………………………… 18

Глава 2. Программирование данных……………………………………………………… 21

Вызов a86……………………………………………………………………………………………………………………………………. 21

Программирование последовательностей………………………………………………………………………………. 22

Программирование bmp-файла………………………………………………………………………………………………… 26

Примечания………………………………………………………………………………………………………………………………… 29

Глава 3. Данные, имена и типы……………………………………………………………… 31

Структура программы………………………………………………………………………………………………………………. 31

Директивы определения данных………………………………………………………………………………………………. 32

Обозначение чисел…………………………………………………………………………………………………………………….. 37

Символические обозначения чисел, выражения…………………………………………………………………….. 38

Переменные и метки…………………………………………………………………………………………………………………… 40

Типы имен…………………………………………………………………………………………………………………………………… 41

Типы и выражения……………………………………………………………………………………………………………………… 43

Алгоритм трансляции………………………………………………………………………………………………………………… 46

Повторное определение имен…………………………………………………………………………………………………… 50

Локальные имена……………………………………………………………………………………………………………………….. 51

Предопределенные имена…………………………………………………………………………………………………………. 52

Имя end……………………………………………………………………………………………………………………………………….. 52

Примечания………………………………………………………………………………………………………………………………… 54

Глава 4. Способы адресации………………………………………………………………….. 57

Данные процессора…………………………………………………………………………………………………………………… 57

Обозначения операндов машинных команд……………………………………………………………………………. 59

Способы адресации операндов………………………………………………………………………………………………… 60

Регистровая и непосредственная адресация……………………………………………………………………. 60

Адресация данных в памяти……………………………………………………………………………………………… 61

Прямая адресация…………………………………………………………………………………………………….. 61

Косвенная адресация……………………………………………………………………………………………….. 63

Ограничение на адресацию операндов в памяти……………………………………………………………. 67

Примечания………………………………………………………………………………………………………………………………… 68

Глава 5. Система команд i8086………………………………………………………………. 69

Способы адресации операндов………………………………………………………………………………………………… 69

Регистровая, непосредственная и прямая адресация……………………………………………………… 70

Косвенная адресация…………………………………………………………………………………………………………. 71

Косвенная адресация по значению одного регистра…………………………………………….. 71

Косвенная адресация по сумме значений двух регистров……………………………………. 71

Обзор системы команд………………………………………………………………………………………………………………. 71

Команды пересылки…………………………………………………………………………………………………………… 72

Арифметические команды…………………………………………………………………………………………………. 73

Логические команды………………………………………………………………………………………………………….. 74

Команды сдвигов и вращений…………………………………………………………………………………………… 74

Команды передачи управления………………………………………………………………………………………… 75

Адресация в командах передачи управления………………………………………………………… 76

Команды условных переходов………………………………………………………………………………… 77

Воздействие команд на флаги…………………………………………………………………………………………… 79

Строковые команды…………………………………………………………………………………………………………… 82

Примечания………………………………………………………………………………………………………………………………… 83

Глава 6. Программирование циклов………………………………………………………. 85

Поиск в массиве байтов…………………………………………………………………………………………………………….. 85

Поиск в массиве слов…………………………………………………………………………………………………………………. 87

Поиск байта со значением больше заданного………………………………………………………………………… 88

Подсчет байтов в заданном диапазоне значений…………………………………………………………………… 89

Алгоритмическое решение………………………………………………………………………………………………… 89

Табличное решение……………………………………………………………………………………………………………. 90

Примечания………………………………………………………………………………………………………………………………… 92

Глава 7. Примеры программ………………………………………………………………….. 93

Обработка данных на уровне битов………………………………………………………………………………………… 93

Программирование ввода-вывода……………………………………………………………………………………………. 95

Опережающие ссылки……………………………………………………………………………………………………….. 98

Упаковка четырехбитовых кодов…………………………………………………………………………………………… 100

Задания на составление программ………………………………………………………………………………………… 102

Задания первого уровня сложности……………………………………………………………………………….. 102

Варианты заданий………………………………………………………………………………………………….. 102

Задания второго уровня сложности……………………………………………………………………………….. 104

Примечания………………………………………………………………………………………………………………………………. 108

Глава 8. Математический сопроцессор…………………………………………………. 111

Окно FPU в d86…………………………………………………………………………………………………………………………. 111

Загрузка и выгрузка данных…………………………………………………………………………………………………… 112

Порядок двуместных операций………………………………………………………………………………………………. 114

Организация ветвлений…………………………………………………………………………………………………………… 117

Признаки в слове состояния……………………………………………………………………………………………………. 118

Настройки FPU…………………………………………………………………………………………………………………………. 120

Форматы действительных чисел……………………………………………………………………………………………. 121

Внутренний формат данных FPU……………………………………………………………………………………. 122

Стандартные форматы вещественных чисел………………………………………………………………… 124

Операции FPU…………………………………………………………………………………………………………………………… 125

Пересылки…………………………………………………………………………………………………………………………. 126

Загрузка данных……………………………………………………………………………………………………… 126

Команды выгрузки………………………………………………………………………………………………….. 128

Команда обмена……………………………………………………………………………………………………… 130

Арифметические операции……………………………………………………………………………………………… 130

Основные арифметические операции……………………………………………………………………. 131

Операции над знаковым битом……………………………………………………………………………… 132

Округление до целого…………………………………………………………………………………………….. 133

Получение остатка от деления………………………………………………………………………………. 134

Извлечение корня……………………………………………………………………………………………………. 135

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

Операции сравнения и тестирования……………………………………………………………………. 135

Тригонометрические операции………………………………………………………………………………………. 137

Возведение в степень……………………………………………………………………………………………………….. 137

Возведение числа 2 в целую степень…………………………………………………………………….. 138

Возведение числа 2 в дробную степень………………………………………………………………… 138

Вычисление целой и дробной частей значения степени…………………………………….. 139

Возведение числа 2 в произвольную степень………………………………………………………. 139

Вычисление логарифмов………………………………………………………………………………………… 139

Команды управления………………………………………………………………………………………………………. 141

Сохранение и восстановление состояния……………………………………………………………………… 142

Задачи………………………………………………………………………………………………………………………………………. 143

Примечания………………………………………………………………………………………………………………………………. 145

Глава 9. Сегменты……………………………………………………………………………….. 149

Эффективный адрес…………………………………………………………………………………………………………………. 150

Базовый адрес и сегментные регистры………………………………………………………………………………….. 151

Перепрограммирование сегментных регистров……………………………………………………………………. 154

Регистр es………………………………………………………………………………………………………………………….. 154

Регистр ss…………………………………………………………………………………………………………………………… 156

Регистр cs………………………………………………………………………………………………………………………….. 157

Регистр ds………………………………………………………………………………………………………………………….. 159

Повторный запуск резидентной программы………………………………………………………………….. 160

Программные секции……………………………………………………………………………………………………….. 162

Префикс переназначения сегмента…………………………………………………………………………………. 167

Задачи………………………………………………………………………………………………………………………………………. 172

Примечания………………………………………………………………………………………………………………………………. 173

Глава 10. Исключения………………………………………………………………………….. 177

Таблица векторов…………………………………………………………………………………………………………………….. 177

Векторные вызовы…………………………………………………………………………………………………………………… 178

Исключения и прерывания……………………………………………………………………………………………………… 185

Ассемблер nasm……………………………………………………………………………………………………………………….. 189

Отладочные исключения………………………………………………………………………………………………………… 193

Примечания………………………………………………………………………………………………………………………………. 196

Глава 11. Внешние прерывания…………………………………………………………… 197

Системный таймер…………………………………………………………………………………………………………………… 197

Клавиатура………………………………………………………………………………………………………………………………. 201

Часы реального времени…………………………………………………………………………………………………………. 203

Примечания………………………………………………………………………………………………………………………………. 203

Глава 12. 32-битовые данные и адреса…………………………………………………. 205

Префиксы размерности операнда и адреса…………………………………………………………………………… 205

Косвенная адресация через 32-битовые регистры……………………………………………………….. 211

Новые команды………………………………………………………………………………………………………………… 213

Примечания………………………………………………………………………………………………………………………………. 215

Часть II. Защищенный режим………………………………………………….. 217

Глава 13. Код в защищенном режиме…………………………………………………… 219

Опыты с дескрипторами и защитой памяти………………………………………………………………………….. 225

Первые опыты с привилегиями……………………………………………………………………………………………….. 226

Переключение сегментов кода и вентили вызова…………………………………………………………………. 227

Обратное переключение режима……………………………………………………………………………………………. 231

Примечания………………………………………………………………………………………………………………………………. 232

Глава 14. Данные и стек………………………………………………………………………. 235

Дескрипторы данных………………………………………………………………………………………………………………. 235

Дескриптор стека…………………………………………………………………………………………………………………….. 238

Режим unreal…………………………………………………………………………………………………………………………….. 241

Адресная линия A20………………………………………………………………………………………………………………… 242

Привилегии сегментов данных……………………………………………………………………………………………….. 244

Примечания………………………………………………………………………………………………………………………………. 250

Глава 15. Исключения и прерывания…………………………………………………… 253

Дескрипторы прерываний и исключений………………………………………………………………………………. 253

Коды ошибок для исключений……………………………………………………………………………………………….. 258

Внешние прерывания………………………………………………………………………………………………………………. 259

Поле IOPL в регистре флагов………………………………………………………………………………………………….. 266

Примечания………………………………………………………………………………………………………………………………. 267

Глава 16. LDT и TSS…………………………………………………………………………….. 269

Дескрипторы LDT……………………………………………………………………………………………………………………. 269

Программное переключение контекста…………………………………………………………………………………. 272

Дескрипторы TSS…………………………………………………………………………………………………………………….. 276

Примечания………………………………………………………………………………………………………………………………. 285

Глава 17. Преобразование адресов……………………………………………………….. 287

Первый вариант трансляции адресов……………………………………………………………………………………. 288

Вариант PSE…………………………………………………………………………………………………………………………….. 292

Вариант PAE…………………………………………………………………………………………………………………………….. 295

Плоская модель памяти…………………………………………………………………………………………………………… 301

Примечания………………………………………………………………………………………………………………………………. 305

Глава 18. Привилегии………………………………………………………………………….. 307

Изменение уровня привилегий………………………………………………………………………………………………… 307

Вызов привилегированной процедуры………………………………………………………………………………….. 311

Обращение к портам ввода-вывода……………………………………………………………………………………….. 317

Привилегии при страничном отображении…………………………………………………………………………… 318

Примечания………………………………………………………………………………………………………………………………. 320

Часть III. 64-битовые режимы…………………………………………………… 321

Глава 19. Переход в режим совместимости…………………………………………… 323

Переход в режимы long…………………………………………………………………………………………………………… 323

Особенности режима совместимости…………………………………………………………………………………….. 328

Примечания………………………………………………………………………………………………………………………………. 330

Глава 20. Переход в 64-битовый режим………………………………………………… 331

Загрузчик ld0……………………………………………………………………………………………………………………………. 331

Применимость 64-битовых данных……………………………………………………………………………………….. 339

Примечания………………………………………………………………………………………………………………………………. 339

Глава 21. Особенности 64-битового режима…………………………………………. 341

64-битовые операнды……………………………………………………………………………………………………………… 342

Относительная адресация и перемещаемость………………………………………………………………………. 345

Селекторы fs и gs……………………………………………………………………………………………………………………… 349

Системные вызовы…………………………………………………………………………………………………………………… 352

Сегмент задачи в 64-битовом режиме……………………………………………………………………………………. 357

Обработка прерываний в 64-битовом режиме………………………………………………………………………. 359

Примечания………………………………………………………………………………………………………………………………. 370

Послесловие…………………………………………………………………………………………. 373

Приложения…………………………………………………………………………………… 375

Приложение 1. Компиляция Bochs……………………………………………………….. 377

Подготовка к компиляции для Windows и Linux……………………………………………………………………. 377

Компиляция для Windows……………………………………………………………………………………………………….. 378

Компиляция для Linux…………………………………………………………………………………………………………….. 379

Примечания………………………………………………………………………………………………………………………………. 380

Приложение 2. Инструментальные программы FreeDOS……………………… 381

Файловый менеджер………………………………………………………………………………………………………………… 381

Текстовый редактор edit………………………………………………………………………………………………………….. 382

Редактор памяти e32……………………………………………………………………………………………………………….. 382

Форматы отображения данных в d86……………………………………………………………………………………. 383

Приложение 3. Дополнительные опыты с FPU……………………………………… 384

Команда fisttp…………………………………………………………………………………………………………………………… 384

Формат BCD…………………………………………………………………………………………………………………………….. 385

Прерывания от i80x87……………………………………………………………………………………………………………… 385

Синхронизация процессора и сопроцессора………………………………………………………………………… 388

Расширение MMX……………………………………………………………………………………………………………………. 389

Примечания………………………………………………………………………………………………………………………………. 392

Приложение 4. Ошибки в a86/a386………………………………………………………. 393

Ошибки в a86……………………………………………………………………………………………………………………………. 393

Ошибки в a386………………………………………………………………………………………………………………………….. 394

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

Список источников………………………………………………………………………………. 397

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

Жуков Андрей Владимирович, кандидат технических наук, преподаватель Санкт-Петербургского политехнического университета, программист в области автоматизации управления. Автор книги и практических курсов по ассемблерам, трансляторам, интерфейсам внешних устройств, микроконтроллерам, PLC и промышленным сетям.

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

Новинка: “SQL для анализа данных”

SQL для анализа данных

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

Для аналитиков, исследователей и специалистов по обработке данных

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

• Узнайте о ключевых шагах по подготовке данных к анализу
• Выполняйте анализ временных рядов
• Используйте когортный анализ для изучения изменений групп с течением времени
• Научитесь применять мощные функции SQL для анализа текста
• Выявляйте отклонения и аномалии в данных
• Установите причинно-следственную связь с помощью анализа экспериментов и результатов А/Б-тестирования
• Применяйте SQL для оценки эффективности воронки продаж

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

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

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

Использование примеров кода. 13

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

ГЛАВА 1. Анализ с помощью SQL.. 15

1.1. Что такое анализ данных. 15

1.2. Почему SQL. 18

Что такое SQL. 18

Преимущества SQL. 21

SQL против R или Python. 22

SQL как часть процесса анализа данных. 24

1.3. Типы баз данных. 26

Строчные базы данных. 27

Колоночные базы данных. 29

Другие типы хранилищ данных. 31

1.4. Заключение. 32

ГЛАВА 2. Подготовка данных для анализа. 33

2.1. Типы данных. 34

Типы в базах данных. 34

Структурированные и неструктурированные данные. 36

Количественные и качественные данные. 37

Первичные, вторичные и третичные данные. 38

Разреженные данные. 39

2.2. Структура SQL-запроса. 40

2.3. Профилирование: распределения. 43

Гистограммы и частоты.. 44

Биннинг. 46

n-тили. 49

2.4. Профилирование: качество данных. 52

Поиск дубликатов. 52

Исключение дубликатов с помощью GROUP BY и DISTINCT. 54

2.5. Подготовка: очистка данных. 56

Очистка данных с помощью CASE. 56

Преобразование типов. 59

Работа с null-значениями: функции coalesce, nullif, nvl 62

Отсутствующие данные. 65

2.6. Подготовка: структурирование данных. 69

Зависимость от конечной цели: для BI, визуализации, статистики
или машинного обучения. 70

Сворачивание с помощью оператора CASE. 71

Разворачивание с помощью оператора UNION.. 73

Операторы PIVOT и UNPIVOT. 75

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

ГЛАВА 3. Анализ временных рядов. 79

3.1. Работа с Date, Datetime и Time. 80

Преобразование часовых поясов. 80

Форматирование дат и временных меток. 83

Арифметические действия с датами. 87

Арифметические действия со временем.. 90

Объединение данных из разных источников. 91

3.2. Набор данных о розничных продажах. 92

3.3. Анализ трендов данных. 93

Простые тренды.. 94

Сравнение временных рядов. 96

Вычисление процента от целого. 105

Приведение к базовому периоду. 109

3.4. Скользящие временные окна. 114

Расчет скользящих временных окон. 116

Скользящие окна на разреженных данных. 122

Расчет накопительного итога. 125

3.5. Анализ с учетом сезонности. 127

Сравнение периодов: YoY и MoM.. 129

Сравнение периодов: этот же месяц в прошлом году. 132

Сравнение с несколькими предыдущими периодами. 137

3.6. Заключение. 140

ГЛАВА 4. Когортный анализ. 141

4.1. Составляющие когортного анализа. 141

4.2. Набор данных о законодателях. 144

4.3. Анализ удержания. 146

Общая кривая удержания. 148

Заполнение отсутствующих дат для большей точности. 152

Когорты, полученные из временного ряда. 158

Определение когорт по другой таблице. 164

Работа с разреженными когортами. 169

Когорты по датам, отличным от первой даты.. 174

4.4. Связанные когортные анализы.. 177

Выживаемость. 177

Возвращаемость или поведение при повторной покупке. 182

Накопительный итог. 188

4.5. Поперечный анализ через все когорты.. 192

4.6. Заключение. 201

ГЛАВА 5. Текстовый анализ. 203

5.1. Текстовый анализ и SQL. 203

Что такое текстовый анализ. 204

Как можно использовать SQL для текстового анализа. 204

Когда не стоит использовать SQL. 206

5.2. Набор данных о наблюдениях НЛО.. 206

5.3. Характеристики текста. 207

5.4. Разбор текста. 210

5.5. Преобразование текста. 216

5.6. Поиск в текстовых данных. 225

Подстановочные знаки: LIKE, ILIKE. 225

Точное соответствие: IN, NOT IN.. 231

Регулярные выражения. 234

5.7. Конкатенация и реорганизация. 251

Конкатенация строк. 251

Реорганизация текстовых полей. 255

5.8. Заключение. 259

ГЛАВА 6. Выявление аномалий. 261

6.1. Возможности SQL для обнаружения аномалий. 262

6.2. Набор данных о землетрясениях. 263

6.3. Поиск аномалий. 264

Сортировка для поиска аномалий. 265

Расчет процентилей и стандартных отклонений. 268

Поиск аномалий с помощью графиков. 276

6.4. Виды аномалий. 284

Аномальные значения. 284

Аномальное количество или частота. 288

Аномальное отсутствие данных. 293

6.5. Обработка аномалий. 295

Исследование аномалий. 295

Исключение аномальных записей. 296

Замена на альтернативные значения. 298

Изменение масштаба. 300

6.6. Заключение. 302

ГЛАВА 7. Анализ экспериментов. 303

7.1. Плюсы и минусы SQL для анализа экспериментов. 304

7.2. Набор данных о мобильной игре. 306

7.3. Типы экспериментов. 307

Эксперименты с бинарными результатами: тест хи-квадрат. 308

Эксперименты с непрерывными результатами: t-тест. 310

7.4. Спасение неудачных экспериментов. 313

Система назначения вариантов. 313

Выбросы.. 314

Метод временных рамок. 316

Эксперименты с повторным воздействием.. 317

7.5. Альтернативные анализы, когда контролируемые эксперименты невозможны   319

Анализ «до и после». 319

Анализ естественных экспериментов. 321

Анализ популяции около порогового значения. 323

7.6. Заключение. 324

ГЛАВА 8. Создание сложных наборов данных. 325

8.1. SQL для сложных наборов данных. 325

Преимущества использования SQL. 326

Перенос логики в ETL. 326

Перенос логики в другие инструменты.. 329

8.2. Упорядочивание кода. 330

Комментарии. 330

Регистр, отступы, круглые скобки и другие приемы форматирования. 332

Хранение кода. 335

8.3. Контроль над порядком вычислений. 335

Порядок выполнения операций SQL. 336

Подзапросы.. 339

Временные таблицы.. 342

Общие табличные выражения. 343

Расширения для группировки. 345

8.4. Управление размером набора данных и проблемы конфиденциальности. 349

Частичная выборка с помощью остатка от деления. 349

Уменьшение размерности. 351

Персональные данные и конфиденциальность. 356

8.5. Заключение. 358

ГЛАВА 9. Комбинирование методов анализа и полезные ресурсы.. 359

9.1. Анализ воронки продаж.. 359

9.2. Отток, отставшие и анализ разрывов. 361

9.3. Анализ потребительской корзины.. 366

9.4. Полезные ресурсы.. 368

Книги и блоги. 369

Наборы данных. 370

9.5. Заключение. 371

Об авторе. 373

Об обложке. 374

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

Танимура Кэти

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

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

Изучаем программирование на Kotlin для Android

Программирование на Kotlin для Android

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

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

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

Авторы приводят реализацию наиболее распространенных задач в нативной разработке для Android и показывают, как Kotlin помогает решить проблему параллелизма. Делая акцент на структурированном параллелизме, новой парадигме асинхронного программирования, книга помогает освоить одну из самых мощных конструкций Kotlin — сопрограммы.

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

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

Об авторах. 11

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

Кому адресована эта книга. 14

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

Как организована эта книга. 15

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

Примеры кода. 17

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

ГЛАВА 1. Основы языка Kotlin. 19

Система типов Kotlin. 20

Примитивные типы. 20

Null-безопасность. 21

Тип Unit 23

Функциональные типы. 24

Обобщенные типы. 25

Переменные и функции. 25

Переменные. 26

Лямбда-выражения. 26

Функции-расширения. 27

Классы. 29

Инициализация класса. 29

Свойства. 31

Модификатор lateinit 32

Свойства с отложенной инициализацией. 34

Делегаты. 35

Объекты-компаньоны. 36

Классы данных. 37

Классы перечислений. 38

Запечатанные классы. 40

Модификаторы видимости. 41

Резюме. 42

ГЛАВА 2. Фреймворк коллекций Kotlin. 45

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

Совместимость с Java. 46

Изменяемость. 46

Перегруженные операторы. 48

Создание контейнеров. 49

Функциональное программирование. 50

Сравнение функционального и процедурного программирования:
простой пример. 50

Функциональное программирование в Android. 51

Функции-преобразователи. 52

Булевы функции. 52

Фильтры. 53

Функция map. 53

Функция flatMap. 55

Группировка. 56

Сравнение итераторов и последовательностей. 57

Пример. 59

Проблема. 59

Реализация. 60

Резюме. 66

ГЛАВА 3. Основы Android. 67

Стек Android. 67

Аппаратное обеспечение. 67

Ядро. 68

Системные службы. 68

Среда выполнения Android. 69

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

Прикладное окружение Android. 69

Намерения и фильтры намерений. 70

Контекст. 73

Компоненты приложения Android: строительные блоки. 75

Компонент Activity и его друзья. 76

Службы. 80

Провайдеры контента. 85

BroadcastReceiver 86

Архитектуры приложений Android. 88

MVC: основы. 88

Виджеты. 89

Локальная модель. 89

Паттерны Android. 90

Model-View-Intent 90

Model-View-Presenter 90

Model-View-ViewModel 91

Резюме. 92

ГЛАВА 4. Параллельное программирование в Android. 94

Потокобезопасность. 95

Атомарность. 95

Видимость. 96

Модель многопоточного выполнения Android. 97

Пропуск кадров. 98

Утечка памяти. 101

Инструменты для управления потоками. 103

Looper/Handler 104

Исполнители Executors и объекты ExecutorService. 106

Инструменты для управления заданиями. 107

JobScheduler 109

WorkManager 111

Резюме. 112

ГЛАВА 5. Потокобезопасность. 113

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

Инварианты. 115

Мьютексы. 116

Потокобезопасные коллекции. 116

Привязка к потоку. 119

Конфликт потоков. 120

Сравнение блокирующего и неблокирующего вызовов. 121

Очереди работ. 122

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

Резюме. 125

ГЛАВА 6. Организация параллелизма с использованием обратных вызовов. 127

Пример: функция обработки покупок. 128

Создание приложения. 130

Компонент ViewModel 130

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

Реализация логики. 135

Обсуждение. 136

Ограничения модели многопоточного выполнения. 138

Резюме. 139

ГЛАВА 7. Сопрограммы.. 141

Что такое сопрограмма?. 141

Наша первая сопрограмма. 142

Функция async. 144

Краткий обзор структурированного параллелизма. 146

Связь “родитель — потомок” в структурированном параллелизме. 148

CoroutineScope и CoroutineContext 150

Функции, поддерживающие возможность приостановки. 155

Функции, поддерживающие возможность приостановки, “под капотом”. 156

Использование сопрограмм и функций, поддерживающих возможность
приостановки: практический пример. 160

Не ошибитесь с модификатором suspend. 163

Резюме. 164

ГЛАВА 8. Структурированный параллелизм и сопрограммы.. 166

Функции, поддерживающие возможность приостановки. 166

Настройка места действия. 167

Традиционный подход с использованием java.util.concurrent.ExecutorService. 168

Вспомним, что такое HandlerThread. 172

Использование приостанавливаемых функций и сопрограмм. 175

Сравнение приостанавливаемых и традиционной многопоточности: итоги. 179

Отмена. 179

Жизненный цикл сопрограмм. 180

Отмена сопрограммы. 182

Отмена задачи, делегированной сторонней библиотеке. 184

Сопрограммы, которые действуют согласованно, чтобы их можно было отменить. 188

Функцию delay() можно отменить. 190

Обработка отмены. 191

Причины отмены. 192

Супервизия. 195

Функция supervisorScope. 197

Параллельная декомпозиция. 197

Автоматическая отмена. 199

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

Необработанные и открытые исключения. 199

Открытые исключения. 201

Необработанные исключения. 204

Резюме. 207

Размышления напоследок. 208

ГЛАВА 9. Каналы.. 209

Обзор каналов. 209

Рандеву-канал. 211

Неограниченный канал. 215

Объединенный канал. 216

Буферизованный канал. 217

Функция produce. 218

Взаимодействующие последовательные процессы. 219

Модель и архитектура. 219

Первая реализация. 220

Выражение select 225

Собираем все воедино. 227

Мультиплексор и демультиплексор. 228

Проверка производительности. 229

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

Сходства с моделью акторов. 232

Последовательное выполнение внутри процесса. 232

Размышления напоследок. 233

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

Каналы и взаимоблокировки. 236

Ограничения каналов. 236

“Горячие” каналы. 238

Резюме. 239

ГЛАВА 10. Потоки. 241

Введение в потоки. 241

Более реалистичный пример. 242

Операторы. 244

Терминальные операторы. 245

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

Вариант 1: интерфейс с API на базе функции обратного вызова. 246

Вариант 2: параллельное преобразование потока значений. 251

Вариант 3: создание собственного оператора. 253

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

Блок try/catch. 257

Разделение ответственности важно. 260

Нарушение прозрачности исключения. 260

Оператор catch. 261

Материализация исключений. 264

Горячие потоки и SharedFlow. 267

Создаем SharedFlow. 268

Регистрируем подписчика. 268

Отправляем значения в SharedFlow. 269

Использование SharedFlow для потоковой передачи данных. 269

Использование SharedFlow в качестве шины событий. 275

StateFlow: специализированная версия SharedFlow. 276

Пример использования StateFlow. 277

Резюме. 279

ГЛАВА 11. Вопросы производительности и инструменты
профилирования Android. 280

Android Profiler 282

Network Profiler 285

CPU Profiler 291

Energy Profiler 301

Memory Profiler 303

Обнаружение утечек памяти с помощью LeakCanary. 308

Резюме. 312

ГЛАВА 12. Снижение потребления ресурсов за счет оптимизации производительности  314

Достижение плоской иерархии представлений с помощью ConstraintLayout 315

Сокращение количества операций рисования с помощью экземпляров
класса Drawable. 319

Минимизация данных в сетевых вызовах. 324

Организация пула и кэширование объектов Bitmap. 324

Избавляемся от ненужной работы. 326

Использование статических функций. 329

Минификация и обфускация с R8 и ProGuard. 329

Резюме. 331

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

Нет фото

Майк Данн (Mike Dunn) работал ведущим инженером по мобильным технологиям в издательстве O’Reilly Media.Один из авторов книги «Нативная разработка мобильных приложений. Перекрестный справочник для iOS и Android».

 

 

Лоранс Пьер-Оливье

Пьер-Оливье Лоранс (Pierre-Olivier Laurence) — ведущий инженер-программист компании Safran Aircraft Engines, со штаб-квартирой в окрестностях Парижа.

 

 

G.Blake_Meike

Дж. Блейк Мик (G. Blake Meike) — старший инженер-программист компании Couchbase и автор нескольких книг, среди которых «Программирование под Android».

 

 

Amanda Hinchman-Dominguez

Аманда Хинчман-Домингес (Amanda Hinchman-Dominguez) — эксперт по языку Kotlin в программе Google Developer Expert. Работает разработчиком для Android в компании Groupon и является активным участником глобального сообщества Kotlin.

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

Вышло 3 издание книги “Основы Lean UX”

Основы Lean UX

Книга посвящена методологии Lean UX, позволяющей проектировать на высоком уровне  первоклассные программные продукты в составе Agile-команд. Главный упор сделан на понятии «пользовательского восприятия» (user experience). Даны основы методологии Lean UX и принципы ее успешного внедрения в рабочую Agile-среду. Раскрыт процесс применения Lean UX с использованием  Lean UX Canvas и на наглядных примерах из практики дано описание каждого из его восьми этапов. Подробно рассмотрено сотрудничество проектировщиков с коллегами, не занимающимися проектированием, с применением  ряда  весьма популярных способов работы, таких как дизайн-спринты, системы проектирования и совместные исследования. Даны рекомендации по эффективной интеграции Lean UX в Agile-процесс. Рассмотрены конкретные приемы на уровнях как отдельных сотрудников, так и команды в целом,  позволяющие реально прижиться идеям Lean UX в организации.

Для разработчиков программных продуктов

Что, если мы обнаружим, что строим то, что никому не нужно? В таком случае какое значение имело то, что мы сделали это вовремя и в рамках бюджета?
Эрик Рис

Проектирование первоклассных программных продуктов в составе Agile-команд

Готельф и Сейден — ведущие специалисты в сфере производства программных продуктов. Благодаря совокупному опыту в области, охватывающей как самые динамичные технологические стартапы, так и столетние солидные компании, они дают предельно четкие рекомендации организациям, проходящим цифровую трансформацию. Эти рекомендации представляют реальные рецепты типа «давайте исправим это сейчас», исходящие от настоящих практикующих врачей, а не новомодную гомеопатическую панацею от кабинетных agile-знатоков.
 ДЖОН МАЕДА, старший вице-президент по взаимодействию с пользователями компании Everbridge

Книга по Lean UX навсегда изменила пути создания программных продуктов к лучшему. Демонстрируя компаниям-разработчикам программных систем способы их проектирования и постоянного совершенствования по мере становления и изменения клиентской аудитории, методология Lean UX позволяет создавать новое поколение не только привлекательных, но и весьма толковых продуктов
 КРИСТИНА ВОДТКЕ, лектор факультета компьютерных наук Стэнфордского университета и автор книги «Radical Focus»

В течение последних восьми лет прочтение книги по Lean UX было моей настоятельной рекомендацией для всех команд, изучающих приемы совместной работы, которые позволяют добиваться позитивного пользовательского восприятия. Эта последняя версия книги выходит за рамки прежнего повествования, закрепляя учебный материал в удобном для понимания формате и предоставляя примеры его практического применения. Считаю ее обязательной к прочтению для любой современной команды разработчиков программных продуктов.
 МЕЛИССА ПЕРРИ, генеральный директор компании Produx Labs, старший преподаватель Гарвардской школы бизнеса

В последнем издании книги по Lean UX Джефф и Джош еще раз показали, почему именно они были идейными лидерами в области проектирования на протяжении более десяти лет. Эта книга — вечная классика, место которой на книжной полке каждого проектировщика.
 ТЕРЕЗА ТОРРЕС, автор книги «Continuous Discovery Habits»

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

Рецензии на третье издание книги…………………………………………………………. 13

Рецензии на предыдущие издания книги……………………………………………….. 15

Вступительное слово………………………………………………………………………………. 19

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

От авторов……………………………………………………………………………………………… 27

Примечание от Джеффа…………………………………………………………………………………………………………….. 27

Примечание от Джоша………………………………………………………………………………………………………………. 27

От Джеффа и Джоша………………………………………………………………………………………………………………….. 28

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

Что же такое Lean UX?………………………………………………………………………………………………………………. 29

Для кого предназначена книга по Lean UX?…………………………………………………………………………… 33

Что мы предлагаем в этой книге?……………………………………………………………………………………………… 33

ЧАСТЬ I. ПРЕДСТАВЛЕНИЕ И ПРИНЦИПЫ………………………………………. 35

Глава 1. Сейчас это актуально как никогда…………………………………………… 37

Проектирование немыслимо без постоянного развития………………………………………………………… 37

Глава 2. Принципы………………………………………………………………………………… 40

Основы Lean UX…………………………………………………………………………………………………………………………. 40

Так как же все-таки определить, что такое Lean UX?…………………………………………………………….. 43

Принципы Lean UX……………………………………………………………………………………………………………………. 43

Принципы организации команды……………………………………………………………………………………… 44

Принцип: Кросс-функциональность……………………………………………………………………….. 44

Принцип: Немногочисленность, специализированность, совмещенность………….. 44

Принцип: Самодостаточность и наделенность полномочиями……………………………. 45

Принцип: Ориентированность на решение задачи………………………………………………… 45

Принципы управления культурой разработки………………………………………………………………… 46

Принцип: Переход от сомнений к уверенности……………………………………………………… 46

Принцип: Нужны результаты, а не наработки………………………………………………………. 46

Принцип: Избавление от ненужного……………………………………………………………………….. 47

Принцип: Общее понимание…………………………………………………………………………………….. 47

Принцип: Отказ от “звездных” исполнителей…………………………………………………………. 47

Принцип: Допустимость неудачных решений……………………………………………………….. 48

Принципы управления процессом…………………………………………………………………………… 49

Принцип: Смысл здесь не в том, чтобы привычное делать быстрее……………………. 49

Принцип: Избегайте разбиений на этапы……………………………………………………………….. 49

Принцип: Ключ к гибкости — итерация…………………………………………………………………. 50

Принцип: Разбейте работу на малые части, чтобы снизить проектные риски……. 50

Принцип: Ведите непрерывные исследования……………………………………………………….. 50

Принцип: “Выходите на улицу”………………………………………………………………………………. 51

Принцип: Экстернализируйте свою работу…………………………………………………………… 51

Принцип: Реальные изделия важнее теоретических исследований……………………… 52

Принцип: Исходите из конечных бизнес-результатов…………………………………………… 52

Подведение итогов…………………………………………………………………………………………………………………….. 52

Глава 3. Результаты……………………………………………………………………………….. 53

В чем суть наших дел?………………………………………………………………………………………………………………. 53

История о результатах………………………………………………………………………………………………………. 54

Разбор истории: Изделия, результаты, воздействие……………………………………………………….. 55

Углубленный взгляд на результат…………………………………………………………………………… 56

Результаты, итерация и проверка…………………………………………………………………………………………….. 58

ЧАСТЬ II. ПРОЦЕСС ПРИМЕНЕНИЯ LEAN UX………………………………….. 61

Глава 4. Lean UX Canvas………………………………………………………………………… 63

Предположения в роли новых требований……………………………………………………………………………… 63

Lean UX Canvas…………………………………………………………………………………………………………………………. 65

Использование предписаний…………………………………………………………………………………………………….. 68

А когда нужно использовать Lean UX Canvas?………………………………………………………………. 68

Для чего Lean UX Canvas подходит лучше: для идей, выдвигаемых на начальном этапе, или для процесса поддержки инноваций?…………………………………………………………………………………………………………………………. 68

Кто должен работать с предписаниями?…………………………………………………………………………. 69

Сколько времени нужно потратить на проработку Lean UX Canvas?………………………….. 69

А нужно ли использовать все предписания, чтобы следовать методологии Lean UX?. 69

Проработка каждого раздела…………………………………………………………………………………………… 70

Учитывайте все обстоятельства………………………………………………………………………………. 70

Сравнение дистанционного и личного общения……………………………………………………. 71

Подведение итогов…………………………………………………………………………………………………………………….. 71

Глава 5. Блок 1: Бизнес-задача………………………………………………………………. 72

Проработка предписания………………………………………………………………………………………………………….. 73

Примеры постановки задачи…………………………………………………………………………………………………….. 75

На что следует обратить особое внимание…………………………………………………………………………….. 76

Глава 6. Блок 2: Результаты деятельности……………………………………………… 78

Использование пути потребителя…………………………………………………………………………………………….. 79

Тип пути потребителя: Пиратские метрики — Pirate Metrics…………………………………………. 79

Тип пути потребителя: Гора метрик — Metrics Mountain………………………………………………. 80

Стимуляция обсуждения бизнес-результатов с применением Горы метрик……….. 81

Тип пути потребителя: Пути обслуживания и карты потребительских историй…………. 82

Сопоставление результата и воздействия……………………………………………………………………….. 82

На что следует обратить особое внимание…………………………………………………………………………….. 84

Глава 7. Блок 3: Пользователи……………………………………………………………….. 86

Образ протоперсонажа……………………………………………………………………………………………………………… 88

Проработка предписания………………………………………………………………………………………………………….. 89

Проверка на ранней стадии………………………………………………………………………………………………. 90

На что следует обратить особое внимание…………………………………………………………………………….. 91

Глава 8. Блок 4: Результаты и преимущества, получаемые
пользователями……………………………………………………………………………………… 92

Проработка предписания………………………………………………………………………………………………………….. 93

На что следует обратить особое внимание…………………………………………………………………………….. 94

Глава 9. Блок 5: Решения………………………………………………………………………. 95

Проработка предписания………………………………………………………………………………………………………….. 95

Сопоставление выдвинутых идей…………………………………………………………………………………….. 96

Совместное проектирование: более структурированный подход………………………………… 96

Запуск Design Studio…………………………………………………………………………………………………………………… 97

Приготовления……………………………………………………………………………………………………………………. 97

Команда………………………………………………………………………………………………………………………………. 97

Процесс……………………………………………………………………………………………………………………………….. 97

Принадлежности………………………………………………………………………………………………………………… 98

Определение задачи и ограничений (15 минут)………………………………………………………………. 98

Выработка индивидуальных замыслов (10 минут)………………………………………………………… 98

Представление и критические оценки (по 3 минуты на человека)………………………………. 100

Попарная работа для пересмотра и уточнения идей (10 минут)…………………………………. 101

Выработка командного замысла (45 минут)…………………………………………………………………. 102

Использование результатов проработки……………………………………………………………………….. 102

На что следует обратить особое внимание…………………………………………………………………………… 103

Глава 10. Блок 6: Гипотезы………………………………………………………………….. 104

Проработка предписания……………………………………………………………………………………………………….. 105

Расстановка гипотез по приоритетности………………………………………………………………………………. 107

На что следует обратить особое внимание…………………………………………………………………………… 109

Глава 11. Блок 7: Что здесь самое важное, подлежащее осмыслению в первую очередь?            110

Проработка предписания……………………………………………………………………………………………………….. 111

На что следует обратить особое внимание…………………………………………………………………………… 111

Глава 12. Блок 8: MVP и проведение экспериментов……………………………. 112

Что такое MVP?……………………………………………………………………………………………………………………….. 112

Пример: Нужно ли запускать информационный бюллетень?……………………………………… 113

Создание MVP………………………………………………………………………………………………………………………….. 114

Создание MVP для выявления привносимой ценности………………………………………………… 114

Создание MVP, чтобы разобраться с реализацией идеи……………………………………………… 115

Ряд заключительных рекомендаций по созданию MVP……………………………………………….. 116

Кривая достоверности…………………………………………………………………………………………………….. 117

Примеры MVP…………………………………………………………………………………………………………………… 117

Тест исходной страницы………………………………………………………………………………………… 117

Фикция (также известная как “Кнопка в никуда”)………………………………………………… 119

Волшебник из страны Оз…………………………………………………………………………………………………. 121

Пример: Волшебник из страны Оз для Taproot Plus…………………………………………….. 121

Создание прототипов………………………………………………………………………………………………………………. 124

Бумажные прототипы……………………………………………………………………………………………………… 124

Экранные макеты с низкой степенью приближенности к продукту……………………………. 125

Экранные прототипы со средней и высокой степенью приближенности
к реальному продукту……………………………………………………………………………………………………… 126

MVP без кода……………………………………………………………………………………………………………………. 126

Прототипы с программным кодом и “живыми” данными…………………………………………….. 127

Что должно попасть в ваш прототип?……………………………………………………………………………. 128

Презентации и образцы…………………………………………………………………………………………………… 128

Пример: использование MVP-прототипа………………………………………………………………………. 128

Глава 13. Резюме………………………………………………………………………………….. 130

Применение Lean UX Canvas на предприятии……………………………………………………………………… 130

Validately: проверка посредством интервью и прототипа, созданного всего лишь
за два дня………………………………………………………………………………………………………………………………….. 132

Kaplan Test Prep: использование Lean UX для запуска нового бизнеса……………………………… 133

ЧАСТЬ III. СОТРУДНИЧЕСТВО…………………………………………………………. 137

Глава 14. Совместное проектирование…………………………………………………. 139

Совместное проектирование…………………………………………………………………………………………………… 140

Совместное проектирование: неформальный подход………………………………………………….. 141

Lean UX и дизайн-спринты……………………………………………………………………………………………… 143

Использование Design Sprints в Lean UX-процессе……………………………………………………….. 144

Дизайн-системы……………………………………………………………………………………………………………….. 145

Дизайн-системы: что скрывается в их названии?…………………………………………………………. 146

Ценность дизайн-систем………………………………………………………………………………………………………….. 147

Команды дизайн-систем — это те же разработчики программных продуктов…………. 148

Не нужно пропускать этап использования толстых маркеров……………………………………. 149

Практический пример: Дизайн-система GE…………………………………………………………………… 150

Сотрудничество с географически разбросанными командами…………………………………………… 153

Сотрудничество с распределенными командами…………………………………………………………. 153

Повышение эффективности сотрудничества…………………………………………………………………. 154

Подведение итогов…………………………………………………………………………………………………………………… 156

Глава 15. Обратная связь и исследования……………………………………………. 158

Проведение непрерывных и совместных исследований………………………………………………………. 158

Совместное исследование……………………………………………………………………………………………….. 159

Проведение совместного исследования на общем поле деятельности………………. 159

Пример проведения совместного исследования…………………………………………………… 161

Непрерывное обучение……………………………………………………………………………………………………. 161

Обращение к принципам………………………………………………………………………………………… 161

Постоянные исследования: работа вообще без исследований…………………………… 162

Непрерывное обучение в среде разработки: по три пользователя
каждый четверг……………………………………………………………………………………………………….. 163

Упростите среду тестирования……………………………………………………………………………… 164

Кто должен наблюдать за происходящим?………………………………………………………….. 164

Непрерывное исследование: Примеры…………………………………………………………………. 165

Вторники тестирования………………………………………………………………………………………….. 165

Осмысление исследования: командная работа…………………………………………………………….. 167

Запутанность, противоречивость и отсутствие ясности…………………………………….. 167

Выявление закономерностей по прошествии времени…………………………………………………. 168

Тестируйте уже имеющееся…………………………………………………………………………………… 169

Методы мониторинга при проведении непрерывных и совместных исследований….. 173

Служба поддержки клиентов…………………………………………………………………………………. 174

Получение отзывов при опросах на сайте……………………………………………………………. 174

Подведение итогов…………………………………………………………………………………………………………………… 176

Глава 16. Интеграция Lean UX и Agile…………………………………………………. 177

Проникнитесь Agile-процессом……………………………………………………………………………………………….. 178

Переопределение понятия “Готово”……………………………………………………………………………….. 179

Мы все еще являемся приверженцами поэтапных спринтов. Почему?……………………….. 182

Двуединая модель Agile…………………………………………………………………………………………………… 184

Dual-track работает только при условии, что все действуют в составе
единой команды………………………………………………………………………………………………………. 185

Планирование работы по методу Dual-track……………………………………………………….. 186

Использование Scrum-ритмов для выстраивания практики Lean UX…………………………………. 188

Цели спринта, цели разработки продукта и темы для нескольких спринтов…………….. 190

Начните тему с совместного проектирования……………………………………………………… 190

Встречи по планированию спринта……………………………………………………………………… 191

Экспериментальные истории…………………………………………………………………………………. 192

Расписание исследований пользовательских восприятий………………………………….. 193

Проектировщики должны принимать участие в планировании………………………………….. 194

Заинтересованные стороны и панель управления рисками………………………………………………… 195

Дорожные карты на основе результатов………………………………………………………………………………. 197

Частота ознакомлений…………………………………………………………………………………………………….. 199

Оценка прогресса…………………………………………………………………………………………………………….. 199

Lean UX и Agile на предприятии…………………………………………………………………………………………….. 200

Подведение итогов…………………………………………………………………………………………………………………… 203

ЧАСТЬ IV. LEAN UX В ВАШЕЙ ОРГАНИЗАЦИИ………………………………. 205

Глава 17. Осуществление организационных перемен…………………………… 209

Перемены………………………………………………………………………………………………………………………………….. 210

Перемены, вносимые в культуру поведения………………………………………………………………….. 211

Перемены, вносимые в организацию команды……………………………………………………………… 211

Перемены, вносимые в процесс………………………………………………………………………………………. 211

Перемена сознания: Будьте беспристрастны………………………………………………………………… 211

Перемена сознания: Приобретайте новые навыки……………………………………………………….. 212

Перемена сознания: Создавайте открытую рабочую среду для совместной работы. 213

Перемена сознания: Никаких выдающихся личностей………………………………………………… 214

Перемена сознания: Полюбите задачу, а не решение………………………………………………….. 215

Перемена сознания: Меняйте подходы, сложившиеся в агентстве……………………………… 216

Перемена сознания: Реально оценивайте свое окружение…………………………………………… 217

Перемена сознания: Думайте не о ролях, а о компетенциях……………………………………….. 217

Перемена сознания: Формируйте кросс-функциональные команды…………………………… 218

Перемена сознания: Формируйте небольшие команды……………………………………………….. 219

Перемена сознания: Научитесь работать с разобщенными командами…………………….. 219

Перемена сознания: Выстройте гибкие взаимоотношения со сторонними поставщиками……….. 220

Перемена сознания: Планируйте работу, нацеленную на конечные позитивные перемены, а не на материальные результаты………………………………………………………………………………………………………………………… 220

Перемена сознания: Остерегайтесь BDUF-проникновений в Agile-среды…………………… 221

Перемена сознания: Сначала выдайте скорость, а уж затем эстетику………………………. 223

Перемена сознания: Боритесь с UX-задолженностями………………………………………………… 224

Перемена сознания: Переосмыслите методы документирования……………………………….. 225

Перемена сознания: Контролируйте все, что делается выше и рядом с вами……………. 225

Глава 18. Применение методологии Lean UX в агентстве…………………….. 227

Чем вы собираетесь заниматься?……………………………………………………………………………………………. 227

Продажа услуг, оказываемых по методологии Lean UX, заключается в настройке клиентов на конкретные ожидания         229

Никто не хочет платить за эксперименты……………………………………………………………………………… 229

Итак, услуга продана! Осталось договориться со специалистами по закупкам……………….. 230

Теперь вы уже не аутсорсинговый партнер………………………………………………………………………….. 231

Краткие заметки о партнерах-разработчиках и о сторонних поставщиках……………………… 232

Подведение итогов…………………………………………………………………………………………………………………… 233

Глава 19. Последнее слово……………………………………………………………………. 234

Продукт, создающий другой продукт……………………………………………………………………………………. 235

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

Джефф Готельд

Джефф Готельф (Jeff Gothelf) — дизайнер и практик Agile. Ведущий специалист по темам Agile UX и Lean UX, а также очень востребованным международный спикер. Является директором нью-йоркского офиса Neo. Ранее Джефф руководил командами в TheLadders, Publicis Modem, WebTrends, Fidelity и AOL.

 

 

Сейден Джош

Джош Сейден (Josh Seiden) уже более 20 лет создает различные технологические продукты. Лидер UX-дизайна, Джош работал в области аппаратного и программного обеспечения, потребительского и корпоративного, мобильного, веб- и настольного. Является директором Neo, а до этой должности руководил отделом дизайна продуктов в новаторской ком-пании Liquidnet с Уолл-стрит, а также руководил новаторскими коман-дами по дизайну взаимодействия в Cooper. Основатель и бывший пре-зидент Interaction Design Association.