Томаш Лелек , Джон Скит - Software: Ошибки и компромиссы при разработке ПО
Название: | Software: Ошибки и компромиссы при разработке ПО | |
Автор: | Томаш Лелек , Джон Скит | |
Жанр: | Отладка, тестирование и оптимизация ПО | |
Изадано в серии: | Библиотека программиста | |
Издательство: | Питер | |
Год издания: | 2023 | |
ISBN: | 978-5-4461-2320-9 | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Software: Ошибки и компромиссы при разработке ПО"
Создание программных продуктов всегда связано с компромиссами. В попытках сбалансировать скорость, безопасность, затраты, время доставки, функции и многие другие факторы можно обнаружить, что вполне разумное дизайнерское решение на практике оказывается сомнительным. Советы экспертов и яркие примеры, представленные в этой книге, научат вас делать правильный выбор в дизайне и проектировании приложений.
Мы будем рассматривать реальные сценарии, в которых были приняты неверные решения, а затем искать пути, позволяющие исправить подобную ситуацию. Томаш Лелек и Джон Скит делятся опытом, накопленным за десятки лет разработки ПО, в том числе рассказывают о собственных весьма поучительных ошибках. Вы по достоинству оцените конкретные советы и практические методы, а также неустаревающие паттерны, которые изменят ваш подход к проектированию.
16+
Читаем онлайн "Software: Ошибки и компромиссы при разработке ПО". [Страница - 4]
6.4. Добавление новой настройки для облачной .
клиентской библиотеки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
6.4.1. Добавление новой настройки в пакетный инструмент . . . . . 187
6.4.2. Добавление новой настройки в стриминговый сервис . . . . . 188
6.4.3. Сравнение UX-ориентированности и удобства .
обслуживания в двух решениях . . . . . . . . . . . . . . . . . . . . . . . 189
6.5. Удаление настроек в облачной клиентской библиотеке . . . . . . . . 190
6.5.1. Удаление настройки из пакетного инструмента . . . . . . . . . 192
6.5.2. Удаление настроек из стримингового сервиса . . . . . . . . . . 194
6.5.3. Сравнение UX-ориентированности и затрат .
на обслуживание для двух решений . . . . . . . . . . . . . . . . . . . . 196
Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Глава 7. Эффективная работа с датой и временем . . . . . . . . . . . . . . . . 198
7.1. Концепции представления даты и времени . . . . . . . . . . . . . . . . 200
7.1.1. Машинное время: моменты времени, эпохи и интервалы . . . 200
7.1.2. Календарные системы, даты, время и периоды . . . . . . . . . . 204
7.1.3. Часовые пояса, UTC и смещения от UTC . . . . . . . . . . . . . 211
7.1.4. Концепции даты и времени, вызывающие приступ .
головной боли . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
7.2. Подготовка к работе с информацией о дате и времени . . . . . . . . . 219
7.2.1. Ограничение объема работ . . . . . . . . . . . . . . . . . . . . . . 219
7.2.2. Уточнение требований к дате и времени . . . . . . . . . . . . . . 221
7.2.3. Использование подходящих библиотек или пакетов . . . . . . 227
7.3. Реализация кода даты и времени . . . . . . . . . . . . . . . . . . . . . . . 229
7.3.1. Последовательное применение концепций . . . . . . . . . . . . 229
7.3.2. Отказ от значений по умолчанию в целях улучшения
тестируемости . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
14 Оглавление
7.3.3. Текстовое представление даты и времени . . . . . . . . . . . . . 239
7.3.4. Объяснение кода в комментариях . . . . . . . . . . . . . . . . . . 246
7.4. Граничные случаи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
7.4.1. Арифметические операции с календарями . . . . . . . . . . . . 249
7.4.2. Переходы часовых поясов в полночь . . . . . . . . . . . . . . . . 250
7.4.3. Обработка неоднозначного или пропущенного времени . . . . 251
7.4.4. Изменения данных часовых поясов . . . . . . . . . . . . . . . . . 251
Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Глава 8. Локальность данных и использование памяти . . . . . . . . . . . . . 258
8.1. Что такое локальность данных? . . . . . . . . . . . . . . . . . . . . . . . 259
8.1.1. Перемещение вычислений к данным . . . . . . . . . . . . . . . . 260
8.1.2. Масштабирование обработки с использованием .
локальности данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
8.2. Секционирование и разбиение данных . . . . . . . . . . . . . . . . . . . 263
8.2.1. Автономное секционирование больших данных . . . . . . . . . 263
8.2.2. Секционирование и сегментирование . . . . . . . . . . . . . . . . 266
8.2.3. Алгоритмы секционирования . . . . . . . . . . . . . . . . . . . . . 267
8.3. Соединение наборов больших данных из нескольких секций . . . . . 270
8.3.1. Соединение данных на одной физической машине . . . . . . . 271
8.3.2. Соединение, требующее перемещения данных . . . . . . . . . . 273
8.3.3. Оптимизация соединения за счет широковещательной .
рассылки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
8.4. Обработка данных: память и диск . . . . . . . . . . . . . . . . . . . . . . 276
8.4.1. Обработка с хранением данных на диске . . . . . . . . . . . . . . 276
8.4.2. Для чего нужна парадигма MapReduce? . . . . . . . . . . . . . . 277
8.4.3. Вычисление времени обращения . . . . . . . . . . . . . . . . . . . 280
8.4.4. Обработка данных в памяти . . . . . . . . . . . . . . . . . . . . . . 281
8.5. Реализация соединений с использованием Apache Spark . . . . . . . 283
8.5.1. Реализация соединения без рассылки . . . . . . . . . . . . . . . 284
8.5.2. Реализация соединения с рассылкой . . . . . . . . . . . . . . . . 287
Итоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Оглавление 15
Глава 9. Сторонние библиотеки: используемые библиотеки .
становятся кодом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
9.1. Импортирование библиотеки и ответственность за ее настройки:
берегитесь значений по умолчанию . . . . . . . . . . . . . . . . . . . . . . . 291
9.2. Модели параллельного выполнения и масштабируемость . . . . . . . 296
9.2.1. --">
Книги схожие с «Software: Ошибки и компромиссы при разработке ПО» по жанру, серии, автору или названию:
Кент Бек - Экстремальное программирование: Разработка через тестирование Жанр: Современные российские издания Год издания: 2017 Серия: Библиотека программиста |
Джульен Данжу - Путь Python. Черный пояс по разработке, масштабированию, тестированию и развертыванию Жанр: Python Год издания: 2020 Серия: Библиотека программиста |
Другие книги из серии «Библиотека программиста»:
Коллектив авторов - Язык СИ для профессионалов Жанр: Советские издания Год издания: 1991 Серия: Библиотека программиста |
Дэвид Клинтон - Linux в действии Жанр: Linux Год издания: 2019 Серия: Библиотека программиста |
Митч Сеймур - Kafka Streams и ksqlDB: данные в реальном времени Жанр: Программирование: прочее Год издания: 2023 Серия: Библиотека программиста |
Ферроне Харрисон - Изучаем C# через разработку игр на Unity Жанр: Программирование игр Год издания: 2022 Серия: Библиотека программиста |