<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
  <title>Статьи — Алексей Ушаровский</title>
  <subtitle>Статьи Алексея Ушаровского о Java, Spring, Hibernate, HTTP, разборе выражений, программах для гитаристов и разработке с ИИ-агентами.</subtitle>
  <link href="https://usharik.dev/ru/articles/"/>
  <link rel="self" href="https://usharik.dev/ru/articles/feed.xml"/>
  <id>https://usharik.dev/ru/articles/</id>
  <updated>2026-10-07T00:00:00Z</updated>
  <author><name>Alex Usharovski</name><uri>https://usharik.dev/</uri></author>
  <entry>
    <title>Студия из одного человека и ИИ-команды</title>
    <link href="https://usharik.dev/ru/articles/small-ai-team/"/>
    <id>https://usharik.dev/ru/articles/small-ai-team/</id>
    <published>2026-10-07T00:00:00Z</published>
    <updated>2026-10-07T00:00:00Z</updated>
    <summary>Как я делаю и выпускаю четыре приложения для Android и два веб-приложения вместе с ИИ-агентами: кто что делает, файл правил, который растёт из каждой ошибки, проверки, которые агенту не переспорить, ревью второй моделью и где по-прежнему нужен человеческий взгляд.</summary>
  </entry>
  <entry>
    <title>Как компьютер подбирает аппликатуры гитарных аккордов</title>
    <link href="https://usharik.dev/ru/articles/chord-fingerings-engine/"/>
    <id>https://usharik.dev/ru/articles/chord-fingerings-engine/</id>
    <published>2026-10-07T00:00:00Z</published>
    <updated>2026-10-07T00:00:00Z</updated>
    <summary>Что происходит между вводом «Am7» и списком аппликатур: разбор названия аккорда, перебор играбельных форм на двенадцати ладах, подбор пальцев, ранжирование как в сборниках аккордов, определение аккорда по форме и поза руки в 3D.</summary>
  </entry>
  <entry>
    <title>Liquibase в приложении на Spring Boot 4</title>
    <link href="https://usharik.dev/ru/articles/liquibase-spring-boot/"/>
    <id>https://usharik.dev/ru/articles/liquibase-spring-boot/</id>
    <published>2026-10-07T00:00:00Z</published>
    <updated>2026-10-07T00:00:00Z</updated>
    <summary>Версионирование схемы БД с Liquibase 5 в Spring Boot 4: changelog в YAML, ddl-auto=validate, генерация changeset сравнением базы с JPA-сущностями через liquibase-hibernate7 и откат изменений — включая ловушку с путём к changelog, из-за которой откат молча ничего не делает.</summary>
  </entry>
  <entry>
    <title>Односторонние и двусторонние отношения в Hibernate 7</title>
    <link href="https://usharik.dev/ru/articles/hibernate-relations/"/>
    <id>https://usharik.dev/ru/articles/hibernate-relations/</id>
    <published>2026-10-07T00:00:00Z</published>
    <updated>2026-10-07T00:00:00Z</updated>
    <summary>Почему @OneToMany вдруг создаёт таблицу связи, почему @ManyToMany с двух сторон даёт две таких таблицы, что на самом деле делает mappedBy и почему обратная сторона в одиночку сохраняет null во внешний ключ. Весь DDL и SQL в статье напечатал Hibernate 7.4.</summary>
  </entry>
  <entry>
    <title>Знакомство с HTTP через простейший веб-сервер на Java</title>
    <link href="https://usharik.dev/ru/articles/java-http-server/"/>
    <id>https://usharik.dev/ru/articles/java-http-server/</id>
    <published>2026-10-07T00:00:00Z</published>
    <updated>2026-10-07T00:00:00Z</updated>
    <summary>Веб-сервер на голом сокете в сотню строк Java 21: строка запроса, заголовки, Content-Length, тело запроса, коды ответа и виртуальные потоки, а потом то же на встроенном в JDK HttpServer. И что было не так в моей версии 2019 года.</summary>
  </entry>
  <entry>
    <title>Разбор выражений рекурсивным спуском: новая версия на Java 21</title>
    <link href="https://usharik.dev/ru/articles/recursive-descent-parser/"/>
    <id>https://usharik.dev/ru/articles/recursive-descent-parser/</id>
    <published>2026-10-07T00:00:00Z</published>
    <updated>2026-10-07T00:00:00Z</updated>
    <summary>Как разобрать арифметическое выражение методом рекурсивного спуска: грамматика, приоритет и ассоциативность операций, унарный минус, степень и функции. Небольшой парсер на Java 21 с records и sealed-интерфейсами.</summary>
  </entry>
</feed>
