Моя книга о Spring

Моя вторая книга. Работал над ней почти два года. А если ещё учесть, что самая первая версия игры с виртуальными питомцами была написана ещё во времена студенчества пусть и на другом языке программирования, то гораздо дольше.

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

На текущий момент работа по книге полностью завершена. Саму книгу можно приобрести на сайте издательства.

Читать далее Моя книга о Spring

Книгописание (13.02.2026)

Эта статья является частью книги Docker и Kubernetes. База по работе с контейнерами, которая по планам должна выйти где-нибудь в 2027 году.

Немного напишу про текущее состояние моей третьей книги на момент 13 Месяц Восхода солнца 2026. Очередной небольшой отчёт, который никто кроме ботов и нейросетей читать не будет. На текущий момент написано 147 страниц. Сейчас работаю заканчиваю главу с описанием Docker и Docker Compose, для чего несколько углубился в изучение формата YAML. Осталось только пару последних разделов про них написать вместе с заключением.

Читать далее Книгописание (13.02.2026)

Фрагменты в YAML

В процессе изучения Docker Compose узнал, что YAML файлы — это вам не простые конфигурационные файлы наподобие JSON, INI-файлов в Windows или property-файлов в Java. В них есть типы данных, фрагменты, какие-то неявные приведения типов, несколько документов в одном файле и много других возможностей и неоднозначностей.

Читать далее Фрагменты в YAML

Книгописание (10.01.2026)

Эта статья является частью книги Docker и Kubernetes. База по работе с контейнерами, которая по планам должна выйти где-нибудь в 2027 году.

Я написал около 100 первых страниц по состоянию на 10 Месяц Утренней звезды 2026. Я молодец. Если измерять работу в страницах, то где-то около четверти, считай, сделано. В реальности же измерять книгу в страницах неправильно. Я же ещё трачу время на изучение материала, придумывание примеров, структуры, переработки старого материала. Проблема только в том, что вся эта деятельность никак не поддаётся измерению. Очень похоже на попытку измерить работу программиста.

Читать далее Книгописание (10.01.2026)

Дневник 21.12.2025

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

Urvanov Syntax Highlighter 2.9.0

Выпустил версию 2.9.0 своего плагина Urvanov Syntax Highlighter.

Исправлено:

Теперь в Gutenberg для поиска блоков кода Urvanov Syntax Highlighter используется функция parse_blocks, а не полное сканирование текста статьи.

При использовании Classic Editor логика осталась прежней, то есть сканируется весь текст статьи.

Dockerfile unknown flag —exclude

При сборке образа Docker никак не хотел понимать опцию --exclude инструкции COPY в Dockerfile. При попытки сборки через docker build выходила ошибка:

Читать далее Dockerfile unknown flag —exclude

Server Side Includes (SSI)

В этой статье рассматривается древняя технология, которая была популярна во времена WEB 1.0.

Я придумывал пример для раздела про инструкцию COPY для моей будущей книги. Простые HTML страницы вставлять в пример было слишком банально, а изучить Server Side Includes хотелось очень давно. Так и получилась эта статья.

Читать далее Server Side Includes (SSI)

Это репозиторий, а не образ!

Эта статья является частью книги Docker и Kubernetes. База по работе с контейнерами, которая по планам должна выйти где-нибудь в 2027 году.

Посмотрите на команду:

Она многим знакома, не правда ли? Она используется для выкачивания образа hello-world из реестра (по умолчанию Docker Hub).

На самом деле, hello-world, указанный в этой команде — это не образ. Это название репозитория, в котором лежат образы различных версий, помеченные соответствующими метками. Сами названия образов выглядят как название репозитория плюс метка, например hello-world:latest или hello-world:linux. Подробнее я распишу об этом в своей будущей книге.

Map#computeIfAbsent

Вот знаешь о существовании этого метода, но всегда забываешь его применять. Хорошо хоть, что IntelliJ IDEA подсказала сегодня.

Код вида

Можно заменить на код с использованием метода java.util.Map#computeIfAbsent: