Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 634932)
Контекстум
Руконтекст антиплагиат система

Clojure на производстве (4000,00 руб.)

0   0
Первый авторГришаев Иван Викторович
ИздательствоМ.: ДМК Пресс
Страниц426
ID809592
АннотацияКнига рассказывает о Clojure — современном диалекте Лиспа. Это функциональный язык с акцентом на неизменяемость и многопоточность. Он появился десять лет назад и постепенно набирает популярность в России. В семи главах мы рассмотрим, как работать с Clojure на производстве. Эта книга не для тех, кто учит язык с нуля. Ожидается, что читатель знаком с Clojure или другим диалектом Лиспа. Чтобы лучше усвоить материал, желательно иметь опыт программирования. Для аудитории продвинутого уровня.
Кому рекомендованоДля аудитории продвинутого уровня.
ISBN978-5-93700-055-2
УДК004.432.42
ББК32.973-018.1
Гришаев, И. В. Clojure на производстве / И. В. Гришаев .— 2-е изд. — Москва : ДМК Пресс, 2022 .— 426 с. — ISBN 978-5-93700-055-2 .— URL: https://rucont.ru/efd/809592 (дата обращения: 29.04.2024)

Предпросмотр (выдержки из произведения)

Clojure_на_производстве.pdf
Стр.3
Стр.4
Стр.5
Стр.6
Clojure_на_производстве.pdf
УДК 004.432.42Clojure ББК 32.973-018.1 Г82 Гришаев И. В. Г82 Clojure на производстве. Второе издание. — М.: ДМК Пресс. 2022 — 424 с. ISBN 978-5-93700-055-2 Книга рассказывает о Clojure — современном диалекте Лиспа. Это функциональный язык с акцентом на неизменяемость и многопоточность. Он появился десять лет назад и постепенно набирает популярность в России. В семи главах мы рассмотрим, как работать с Clojure на производстве. Эта книга не для тех, кто учит язык с нуля. Ожидается, что читатель знаком с Clojure или другим диалектом Лиспа. Чтобы лучше усвоить материал, желательно иметь опыт программирования. Для аудитории продвинутого уровня. УДК 004.432.42Clojure ББК 32.973-018.1 Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. © Гришаев И.В., 2021 ISBN 978-5-93700-055-2 © Издание, ДМК Пресс, 2022
Стр.3
Оглавление 1 Веб-разработка 9 1.1 Основы HTTP . . . . . . . . . . . . . . . . . . . . . . 10 1.2 HTTP в Clojure . . . . . . . . . . . . . . . . . . . . . 14 1.3 Запросы и ответы . . . . . . . . . . . . . . . . . . . . 17 1.4 Маршруты . . . . . . . . . . . . . . . . . . . . . . . . 19 1.5 Middleware . . . . . . . . . . . . . . . . . . . . . . . . 28 1.6 Файлы и ресурсы . . . . . . . . . . . . . . . . . . . . 47 1.7 Стриминг и проксирование . . . . . . . . . . . . . . . 50 1.8 Другие библиотеки . . . . . . . . . . . . . . . . . . . 51 1.9 Заключение . . . . . . . . . . . . . . . . . . . . . . . . 52 2 Clojure.spec 55 2.1 Типы и классы . . . . . . . . . . . . . . . . . . . . . . 56 2.2 Основы spec . . . . . . . . . . . . . . . . . . . . . . . 57 2.3 Исключения . . . . . . . . . . . . . . . . . . . . . . . 59 2.4 Спеки-коллекции . . . . . . . . . . . . . . . . . . . . 61 2.5 Вывод значений . . . . . . . . . . . . . . . . . . . . . 65 2.6 Спеки-перечисления . . . . . . . . . . . . . . . . . . . 67 2.7 Продвинутые техники . . . . . . . . . . . . . . . . . . 69 2.8 Логические пути . . . . . . . . . . . . . . . . . . . . . 72 2.9 Обратное действие . . . . . . . . . . . . . . . . . . . . 73 2.10 Анализ ошибок . . . . . . . . . . . . . . . . . . . . . . 76 2.11 Понятные ошибки . . . . . . . . . . . . . . . . . . . . 77 2.12 Парсинг . . . . . . . . . . . . . . . . . . . . . . . . . . 92 2.13 Разбор Clojure-кода (теория) . . . . . . . . . . . . . . 104 2.14 Спецификация функций . . . . . . . . . . . . . . . . 108 2.15 Повторное использование спек . . . . . . . . . . . . . 112 2.16 Дополнения . . . . . . . . . . . . . . . . . . . . . . . . 113 2.17 Заключение . . . . . . . . . . . . . . . . . . . . . . . . 117
Стр.4
3 Исключения 119 3.1 Основы исключений . . . . . . . . . . . . . . . . . . . 120 3.2 Цепочки и контекст . . . . . . . . . . . . . . . . . . . 123 3.3 Переходим к Clojure . . . . . . . . . . . . . . . . . . . 124 3.4 Подробнее о контексте . . . . . . . . . . . . . . . . . 128 3.5 Когда бросать исключения . . . . . . . . . . . . . . . 129 3.6 Подробнее о цепочках . . . . . . . . . . . . . . . . . . 131 3.7 Печать исключений . . . . . . . . . . . . . . . . . . . 133 3.8 Логирование . . . . . . . . . . . . . . . . . . . . . . . 135 3.9 Контекст исключений . . . . . . . . . . . . . . . . . . 137 3.10 Сбор исключений . . . . . . . . . . . . . . . . . . . . 140 3.11 Sentry и Ring . . . . . . . . . . . . . . . . . . . . . . . 143 3.12 Переходы по коду . . . . . . . . . . . . . . . . . . . . 145 3.13 Finally и контекстный менеджер . . . . . . . . . . . . 148 3.14 Исключения на предикатах . . . . . . . . . . . . . . 151 3.15 Приёмы и функции . . . . . . . . . . . . . . . . . . . 154 3.16 Заключение . . . . . . . . . . . . . . . . . . . . . . . . 158 4 Изменяемость 159 4.1 Общие проблемы . . . . . . . . . . . . . . . . . . . . 159 4.2 Атомы . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 4.3 Volatile . . . . . . . . . . . . . . . . . . . . . . . . . . 174 4.4 Переходные коллекции . . . . . . . . . . . . . . . . . 177 4.5 Переменные и alter-var-root . . . . . . . . . . . . . . 184 4.6 Присваивание с set! . . . . . . . . . . . . . . . . . . . 193 4.7 Изменения в контексте . . . . . . . . . . . . . . . . . 196 4.8 Локальные переменные в контексте . . . . . . . . . . 203 4.9 Глобальные изменения в контексте . . . . . . . . . . 205 4.10 Заключение . . . . . . . . . . . . . . . . . . . . . . . . 210 5 Конфигурация 213 5.1 Постановка проблемы . . . . . . . . . . . . . . . . . . 213 5.2 Семантика . . . . . . . . . . . . . . . . . . . . . . . . 214 5.3 Цикл конфигурации . . . . . . . . . . . . . . . . . . . 215 5.4 Ошибки конфигурации . . . . . . . . . . . . . . . . . 217 5.5 Загрузчик конфигурации . . . . . . . . . . . . . . . . 217 5.6 Подробнее о переменных среды . . . . . . . . . . . . 224 5.7 Конфигурация в среде . . . . . . . . . . . . . . . . . 226 5.8 Недостатки среды . . . . . . . . . . . . . . . . . . . . 228 5.9 Переменные среды в Clojure . . . . . . . . . . . . . . 232 5.10 Простой менеджер конфигурации . . . . . . . . . . . 237
Стр.5
5.11 Чтение среды из конфигурации . . . . . . . . . . . . 240 5.12 Короткий обзор форматов . . . . . . . . . . . . . . . 243 5.13 Промышленные решения . . . . . . . . . . . . . . . . 248 5.14 Заключение . . . . . . . . . . . . . . . . . . . . . . . . 256 6 Системы 257 6.1 Подробнее о системе . . . . . . . . . . . . . . . . . . . 257 6.2 Подготовка к обзору . . . . . . . . . . . . . . . . . . 259 6.3 Mount . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 6.4 Component . . . . . . . . . . . . . . . . . . . . . . . . 279 6.5 Integrant . . . . . . . . . . . . . . . . . . . . . . . . . 309 6.6 Заключение . . . . . . . . . . . . . . . . . . . . . . . . 320 7 Тесты 323 7.1 Основные понятия . . . . . . . . . . . . . . . . . . . . 323 7.2 Тесты в Clojure . . . . . . . . . . . . . . . . . . . . . 333 7.3 Полезные практики . . . . . . . . . . . . . . . . . . . 340 7.4 Фикстуры . . . . . . . . . . . . . . . . . . . . . . . . . 347 7.5 This is fine . . . . . . . . . . . . . . . . . . . . . . . . 355 7.6 Метки и селекторы . . . . . . . . . . . . . . . . . . . 357 7.7 Проблема окружения . . . . . . . . . . . . . . . . . . 362 7.8 Тестирование веб-приложений . . . . . . . . . . . . . 387 7.9 Тестирование систем . . . . . . . . . . . . . . . . . . 392 7.10 Интеграционные тесты . . . . . . . . . . . . . . . . . 396 7.11 Другие решения . . . . . . . . . . . . . . . . . . . . . 402 7.12 Заключение . . . . . . . . . . . . . . . . . . . . . . . . 407 Что дальше Предметный указатель 411 412
Стр.6

Облако ключевых слов *


* - вычисляется автоматически
Антиплагиат система на базе ИИ