<?xml version="1.0" encoding="utf-8"?>
<!-- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
-->
<?xml-stylesheet type="text/xsl" href="https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/roller-ui/styles/rss.xsl" media="screen"?><rss version="2.0" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
  <title>aary</title>
  <link>https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/aary/</link>
    <atom:link rel="self" type="application/rss+xml" href="https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/aary/feed/entries/rss?cat=%D0%96%D0%96" />
  <description></description>
  <language>en-us</language>
  <copyright>Copyright 2026</copyright>
  <lastBuildDate>Fri, 15 May 2026 04:13:43 +0000</lastBuildDate>
  <generator>Apache Roller 6.1.5</generator>
  <item>
    <guid isPermaLink="true">https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/aary/entry/%D1%81%D0%BE%D0%B1%D1%80%D0%B0%D0%BB-heritrix-3-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-gitlab</guid>
    <title>Собрал Heritrix 3 через GitLab CI</title>
    <dc:creator>aary</dc:creator>
    <link>https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/aary/entry/%D1%81%D0%BE%D0%B1%D1%80%D0%B0%D0%BB-heritrix-3-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-gitlab</link>
    <pubDate>Fri, 15 May 2026 04:08:16 +0000</pubDate>
    <category>ЖЖ</category>
    <category>gitlab</category>
<description>Немало времени на это потратил. И на перенастройку самого Heritrix3.
Оказалось, что нельзя пытаться заблокировать скачивание robots.txt,
потому что это обязательный ритуал у Heritrix3, он их с каждого сайта качает первыми.
&lt;br /&gt;
&lt;br /&gt;
В этот раз HEAD/master (3.14.1+), а не 3.10 как в прошлый. Впрочем, разница незаметна.
Теперь контейнеры делаются через Dockerfile + docker-compose.yml
&lt;br /&gt;
&lt;br /&gt;
Предыдущая запись была 9 апреля, эта 15 мая. Получается, что больше месяца времени на это потратил.</description>  </item>
  <item>
    <guid isPermaLink="true">https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/aary/entry/%D0%BF%D0%BE%D0%BF%D1%80%D0%BE%D0%B1%D0%BE%D0%B2%D0%B0%D0%BB-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%B2%D0%B0%D1%82%D1%8C-%D0%B1%D0%B4-%D0%BF%D1%80%D0%B8-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D0%B8</guid>
    <title>Попробовал создавать БД при помощи Liquibase 5.0.2</title>
    <dc:creator>aary</dc:creator>
    <link>https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/aary/entry/%D0%BF%D0%BE%D0%BF%D1%80%D0%BE%D0%B1%D0%BE%D0%B2%D0%B0%D0%BB-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%B2%D0%B0%D1%82%D1%8C-%D0%B1%D0%B4-%D0%BF%D1%80%D0%B8-%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D0%B8</link>
    <pubDate>Thu, 9 Apr 2026 20:45:32 +0000</pubDate>
    <category>ЖЖ</category>
<description>&lt;p&gt;Технический отчёт за сегодня&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Настройка развёртывания приложения&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Устранена ошибка сборки, связанная с несуществующей версией родительского POM Spring Boot.&lt;/li&gt;
  &lt;li&gt;Настроен Tomcat Manager API для удалённого деплоя WAR-файла через HTTP-запросы.&lt;/li&gt;
  &lt;li&gt;Решена проблема доступа к Manager API (403), вызванная ограничениями по IP в конфигурации контекста Tomcat.&lt;/li&gt;
  &lt;li&gt;Создан скрипт предварительной инициализации контейнера для копирования стандартной конфигурации Tomcat и веб-приложения Manager.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;2. Подключение к базе данных&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Настроена сетевая связанность между Docker-контейнером Tomcat и сервером PostgreSQL на хосте.&lt;/li&gt;
  &lt;li&gt;Исправлены синтаксические ошибки в конфигурации pg_hba.conf, приводившие к отказу в подключении.&lt;/li&gt;
  &lt;li&gt;Зафиксирована подсеть Docker в compose.yaml для обеспечения стабильного IP-адреса контейнера и корректной аутентификации в БД.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;3. Управление схемой базы данных&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Подключена и настроена миграционная система Liquibase.&lt;/li&gt;
  &lt;li&gt;Созданы файлы миграций для автоматического развёртывания таблиц пользователей и ролей.&lt;/li&gt;
  &lt;li&gt;Реализована проверка актуальности схемы БД при запуске приложения с перенаправлением на инструкции по обновлению в случае несоответствия.&lt;/li&gt;
  &lt;li&gt;Добавлено логирование статуса выполнения миграций.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;4. Система аутентификации и авторизации&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Настроена Spring Security с хранением учётных записей в базе данных PostgreSQL.&lt;/li&gt;
  &lt;li&gt;Реализована публичная страница регистрации новых пользователей.&lt;/li&gt;
  &lt;li&gt;Создана административная панель с возможностью просмотра списка пользователей и блокировки/разблокировки учётных записей.&lt;/li&gt;
  &lt;li&gt;Реализовано автоматическое создание учётной записи администратора при первом запуске либо через веб-форму мастера установки, либо через переменные окружения.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;5. Мастер первоначальной настройки&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Разработан контроллер, выполняющий проверку готовности окружения (наличие БД, версия СУБД, состояние схемы, наличие администратора).&lt;/li&gt;
  &lt;li&gt;Создан набор информационных страниц с пошаговыми инструкциями для устранения типовых проблем (отсутствие подключения к БД, необходимость обновления СУБД, запуск миграций и др.).&lt;/li&gt;
  &lt;li&gt;Обеспечено блокирование доступа к страницам мастера после завершения настройки.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;6. Доработка интерфейса и навигации&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Скорректированы ссылки в шаблонах для корректной работы с контекстом приложения.&lt;/li&gt;
  &lt;li&gt;Устранены ошибки в Thymeleaf-выражениях, вызывавшие исключения при отсутствии активного профиля Spring.&lt;/li&gt;
  &lt;li&gt;Актуализировано содержимое главной страницы в соответствии с предметной областью.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;7. Оптимизация и диагностика&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Выявлена и решена проблема длительного запуска Tomcat, связанная со сканированием TLD в JAR-файлах.&lt;/li&gt;
  &lt;li&gt;Добавлены инструкции по точечному отключению сканирования TLD через контекстный XML-файл.&lt;/li&gt;
  &lt;li&gt;Рассмотрены рекомендации по улучшению аутентификации в PostgreSQL с использованием SSL-сертификатов и по управлению ограничениями доступа для пользователей.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Результаты&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Приложение успешно развёртывается и работает в целевой среде.&lt;/li&gt;
  &lt;li&gt;Обеспечена возможность самостоятельной настройки окружения администратором без ручного вмешательства в конфигурационные файлы.&lt;/li&gt;
  &lt;li&gt;Реализован базовый функционал управления пользователями и ролями.&lt;/li&gt;
&lt;/ul&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/aary/entry/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BB-heritrix-3-10-0</guid>
    <title>Настроил Heritrix 3.10.0 и OpenWayback</title>
    <dc:creator>aary</dc:creator>
    <link>https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/aary/entry/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BB-heritrix-3-10-0</link>
    <pubDate>Tue, 7 Apr 2026 20:33:21 +0000</pubDate>
    <category>ЖЖ</category>
<description>&lt;span&gt;Отчёт о настройке системы веб-архивации&lt;/span&gt;&lt;/h2&gt;&lt;h3&gt;&lt;span&gt;1. Цель работы&lt;/span&gt;&lt;/h3&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Настроить полный цикл сбора и последующего воспроизведения веб-контента:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Запустить и сконфигурировать краулер для выборочного скачивания сайтов.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Обеспечить передачу собранных данных в систему воспроизведения архивных копий.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Настроить фильтрацию: скачивать только нужные сайты, но при этом подхватывать все внешние ресурсы (стили, скрипты, изображения, файлы книг), необходимые для корректного отображения страниц.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Исключить нежелательный переход на посторонние сайты по обычным гиперссылкам.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Проверить работоспособность всей цепочки и выявить оптимальные настройки.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;span&gt;2. Используемые компоненты&lt;/span&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;strong&gt;&lt;span&gt;Краулер&lt;/span&gt;&lt;/strong&gt;&lt;span&gt; – программа для сбора веб-страниц и файлов.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;strong&gt;&lt;span&gt;Система воспроизведения архивов&lt;/span&gt;&lt;/strong&gt;&lt;span&gt; – для просмотра сохранённых копий.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;strong&gt;&lt;span&gt;Контейнеризация&lt;/span&gt;&lt;/strong&gt;&lt;span&gt; – для изолированного запуска компонентов на выделенном сервере.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;strong&gt;&lt;span&gt;Рабочая станция&lt;/span&gt;&lt;/strong&gt;&lt;span&gt; – для подготовки конфигураций и анализа логов.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;span&gt;3. Выполненные этапы&lt;/span&gt;&lt;/h3&gt;&lt;h4&gt;&lt;span&gt;3.1. Развёртывание и начальная настройка&lt;/span&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Краулер и система воспроизведения запущены в отдельных контейнерах на серверной машине.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Настроен общий том (директория) для обмена собранными архивными файлами между краулером и системой воспроизведения.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Организована сетевая доступность между компонентами.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;span&gt;3.2. Настройка краулера (базовый режим)&lt;/span&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Подготовлен минимальный рабочий конфигурационный файл, позволяющий краулеру запускаться и обрабатывать указанный начальный адрес.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;В процессе отладки были устранены ошибки, связанные с аутентификацией веб-интерфейса краулера и правами на запись в рабочие каталоги.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;span&gt;3.3. Организация рекурсивного обхода сайта&lt;/span&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Изначально краулер скачивал только главную страницу и не переходил по внутренним ссылкам.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Путём корректировки правил обхода («scope») удалось настроить бесконечную глубину перехода по ссылкам внутри целевого сайта.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Достигнуто стабильное скачивание сотен внутренних страниц (количество обработанных URL выросло с единиц до тысяч).&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;span&gt;3.4. Ограничение области сканирования&lt;/span&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;В конфигурацию добавлены правила, запрещающие переход на посторонние домены по обычным гиперссылкам.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Это предотвратило «уход» краулера во внешний интернет и позволило сфокусироваться на целевом сайте.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;span&gt;3.5. Разрешение внешних ресурсов (стили, скрипты, картинки)&lt;/span&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Обнаружено, что при ограничении доменов перестали скачиваться необходимые элементы оформления (CSS, JavaScript, изображения), которые физически расположены на других сайтах.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Разработана комбинация правил:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Список разрешённых доменов для таких ресурсов задан в отдельном файле.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Включена проверка «родительской страницы» – внешний ресурс скачивается только если на него есть ссылка с уже принятой страницы целевого сайта.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;В результате стили и скрипты стали корректно сохраняться в архив, что обеспечивает правильное отображение страниц при воспроизведении.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;span&gt;3.6. Настройка скачивания файлов (книг, документов)&lt;/span&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;В конфигурацию добавлено правило, принимающее любые ссылки на файлы с типичными расширениями (PDF, EPUB, FB2, DJVU, DOC и др.) независимо от их домена.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Это позволило автоматически собирать все книжные и архивные файлы, на которые есть ссылки со страниц целевого сайта.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;span&gt;3.7. Отладка синтаксиса правил&lt;/span&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;В ходе работы выяснились особенности синтаксиса, используемого правилами фильтрации.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;После нескольких итераций был найден рабочий вариант записи префиксов, обеспечивающий корректное распознавание доменов.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Лишние, неиспользуемые правила удалены для упрощения конфигурации.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;span&gt;3.8. Проверка целостности данных&lt;/span&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Выполнен анализ логов краулера, подтверждающий, что скачиваются как страницы целевого сайта, так и внешние стили, скрипты, а также файлы книг.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Через интерфейс системы воспроизведения подтверждена возможность просмотра сохранённых страниц (со стилями) и доступа к скачанным файлам.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;span&gt;4. Достигнутые результаты&lt;/span&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;strong&gt;&lt;span&gt;Стабильная работа краулера&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;: система запускается, обрабатывает тысячи URL, не «падает» и не уходит на посторонние сайты.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;strong&gt;&lt;span&gt;Полное воспроизведение страниц&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;: архивные копии отображаются с оригинальными стилями и оформлением.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;strong&gt;&lt;span&gt;Автоматический сбор внешних файлов&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;: все ссылки на книги, документы и архивы, встречающиеся на целевых страницах, сохраняются в архив.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;strong&gt;&lt;span&gt;Гибкая настройка&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;: правила фильтрации легко дополнять новыми типами файлов или разрешёнными доменами.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;strong&gt;&lt;span&gt;Прозрачность работы&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;: все действия логируются, что позволяет отслеживать поведение краулера и выявлять возможные проблемы.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;span&gt;5. Замечания и рекомендации&lt;/span&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Для обеспечения полноты архива периодически следует проверять, не появились ли на сайте ссылки на новые типы ресурсов (например, аудио, видео), и при необходимости расширять список разрешённых расширений.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;При значительном росте объёма архива рекомендуется рассмотреть использование внешнего индексатора (например, CDX-сервера) для ускорения поиска и масштабирования.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;В случае изменения структуры внешних ресурсов (смена домена CDN) потребуется обновить список разрешённых доменов.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Все конфигурационные файлы и сценарии запуска целесообразно хранить в системе контроля версий для воспроизводимости.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;&lt;span&gt;6. Вывод&lt;/span&gt;&lt;/h3&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;В результате проделанной работы создана полностью функционирующая система веб-архивации, которая:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;собирает контент с заданного сайта, включая все необходимые внешние ресурсы и файлы;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;ограничивает обход только нужными доменами, не допуская бесконечного блуждания по интернету;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;сохраняет собранные данные в формате, пригодном для последующего просмотра через интерфейс архивной системы.&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class=&quot;ds-markdown-paragraph&quot;&gt;&lt;span&gt;Настройки могут быть повторно использованы для любых других сайтов с минимальными правками (замена целевого домена и, при необходимости, списка внешних ресурсов).&lt;/span&gt;</description>  </item>
  <item>
    <guid isPermaLink="true">https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/aary/entry/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D0%BB-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BB-apache-archiva-2</guid>
    <title>Установил/настроил Apache Archiva 2.2.10</title>
    <dc:creator>aary</dc:creator>
    <link>https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/aary/entry/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D0%BB-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D0%BB-apache-archiva-2</link>
    <pubDate>Fri, 3 Apr 2026 07:04:08 +0000</pubDate>
    <category>ЖЖ</category>
<description>&lt;h2&gt;✅ Сборка из исходников&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Успешно выполнена полная сборка Apache Archiva 2.2.10 из официального Git-репозитория по релизному тегу&lt;/li&gt;
  &lt;li&gt;Сгенерирован целевой артефакт: &lt;code&gt;archiva-webapp-2.2.10.war&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Все 68 модулей проекта прошли компиляцию и тестирование зависимостей без критических сбоев&lt;/li&gt;
  &lt;li&gt;Настроено стабильное разрешение артефактов через внутренний Maven-репозиторий&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;✅ Исправление JavaUtils (совместимость с современными JRE)&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Выявлена причина падений персистентного слоя: устаревший парсер версий в &lt;code&gt;org.jpox.util.JavaUtils&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Переписана логика сравнения версий: устранено затенение переменных, добавлена корректная обработка формата &lt;code&gt;major.minor.patch&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Патч применён к библиотеке JPOX 1.1.9, пересобран и опубликован в локальном репозитории&lt;/li&gt;
  &lt;li&gt;Обеспечена стабильная работа JDO-слоя на актуальных версиях Java (17+)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;✅ Настройка mail.jar&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Устранены конфликты класслоадеров: почтовая библиотека вынесена в общий classpath сервера приложений&lt;/li&gt;
  &lt;li&gt;Настроен JNDI-ресурс &lt;code&gt;javax.mail.Session&lt;/code&gt; для корректной работы почтовых уведомлений Archiva&lt;/li&gt;
  &lt;li&gt;Обеспечена совместимость с современными API активации и предотвращён дублирующий класс-лоадинг из WEB-INF&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;✅ Конфигурация Tomcat 9 и деплой через Manager API&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Развёрнут и оптимизирован Tomcat 9 с настройкой пулов соединений и политик безопасности&lt;/li&gt;
  &lt;li&gt;Сконфигурированы JNDI-ресурсы для подключения к PostgreSQL и инициализации контекста приложения&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Освоен удалённый деплой через Tomcat Manager API:&lt;/strong&gt;
    &lt;ul&gt;
      &lt;li&gt;Настроен безопасный доступ к управляющему REST-интерфейсу&lt;/li&gt;
      &lt;li&gt;Реализована автоматическая выгрузка, обновление и откат WAR-артефактов без ручного вмешательства&lt;/li&gt;
      &lt;li&gt;Интегрирована проверка статуса развёртывания и логирование операций деплоя&lt;/li&gt;
      &lt;li&gt;Процесс полностью автоматизирован и готов к интеграции с CI/CD-конвейерами&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;✅ Настройка сборочного и клиентского окружения&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Подготовлена стандартизированная среда разработки: JDK, Maven, Git, системные зависимости&lt;/li&gt;
  &lt;li&gt;Настроен защищённый канал передачи артефактов между сборочным узлом и сервером приложений&lt;/li&gt;
  &lt;li&gt;Документирован полный цикл поставки: от клонирования кода до рабочего экземпляра в production-подобной среде&lt;/li&gt;
  &lt;li&gt;Обеспечена полная воспроизводимость процесса на любых совместимых хостах&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;📋 Итоговые артефакты и готовность&lt;/h2&gt;
&lt;pre&gt;
Сборка:
  - Исходный код: официальный релизный тег 2.2.10
  - Патч JPOX: применён, собран и зафиксирован в артефакторее
  - WAR-файл: archiva-webapp-2.2.10.war (готов к публикации)

Инфраструктура:
  - Сервер приложений: Tomcat 9 с настроенными JNDI-ресурсами
  - СУБД: PostgreSQL с выделенной схемой и пользователем для Archiva
  - Деплой: автоматизирован через Tomcat Manager REST API
&lt;/pre&gt;

&lt;h2&gt;🎯 Готовность к следующему этапу&lt;/h2&gt;
&lt;ol&gt;
  &lt;li&gt;Работает автоматический деплой актуальной сборки через Manager API&lt;/li&gt;
  &lt;li&gt;Настроен веб-интерфейс, аутентификации и управления репозиториями&lt;/li&gt;
  &lt;li&gt;Протестирована интеграция с внешними хранилищами и системами сборки&lt;/li&gt;
  &lt;li&gt;Настройкы политики хранения, резервного копирования и мониторинга&lt;/li&gt;
&lt;/ol&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/aary/entry/%D0%BF%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D0%BB-tightblog</guid>
    <title>Поставил TightBlog</title>
    <dc:creator>aary</dc:creator>
    <link>https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/aary/entry/%D0%BF%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D0%BB-tightblog</link>
    <pubDate>Sat, 28 Mar 2026 04:40:31 +0000</pubDate>
    <category>ЖЖ</category>
<description>  1. Технические достижения
  &lt;ul&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Запуск TightBlog 4.2.0&lt;/strong&gt; на Java 25, PostgreSQL с SSL, исправлены проблемы:&lt;/p&gt;
    &lt;ul&gt;
     &lt;li&gt;&lt;p&gt;Десериализация пароля: &lt;code&gt;@JsonProperty&lt;/code&gt; перенесены на сеттеры в &lt;code&gt;UserCredentials.java&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
     &lt;li&gt;&lt;p&gt;Схема БД: &lt;code&gt;password_hash&lt;/code&gt; в &lt;code&gt;weblogger_user&lt;/code&gt; снят &lt;code&gt;NOT NULL&lt;/code&gt; (двухэтапное сохранение: INSERT с NULL → UPDATE с хешем). Также исправлены &lt;code&gt;date_updated&lt;/code&gt; и &lt;code&gt;publish_time&lt;/code&gt; в &lt;code&gt;weblog_entry&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
     &lt;li&gt;&lt;p&gt;Фиды (Atom): исправлен шаблон &lt;code&gt;entries-atom.html:37&lt;/code&gt; (замена &lt;code&gt;updateTime&lt;/code&gt; на &lt;code&gt;dateUpdated&lt;/code&gt;).&lt;/p&gt;&lt;/li&gt;
     &lt;li&gt;&lt;p&gt;Добавлен заголовок &lt;code&gt;Content-Disposition: inline&lt;/code&gt; для отображения в браузере.&lt;/p&gt;&lt;/li&gt;
    &lt;/ul&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Роутинг&lt;/strong&gt; работает: &lt;code&gt;/aary/feed&lt;/code&gt; перенаправляется на &lt;code&gt;/tb-ui/rendering/feed/aary&lt;/code&gt; через &lt;code&gt;RequestMappingFilter&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Feedbro&lt;/strong&gt; (расширение Firefox) успешно читает локальный фид, решая проблему внешней валидации.&lt;/p&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3&gt;2. Понимание архитектуры TightBlog&lt;/h3&gt;
  &lt;ul&gt;
   &lt;li&gt;&lt;p&gt;Таблица &lt;code&gt;user_weblog_role&lt;/code&gt; была переименована из &lt;code&gt;roller_permission&lt;/code&gt; в 2015 году, семантика изменена с «права» на «роль». Это наследие Roller, но TightBlog упростил модель.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;Миграции БД перешли от Velocity-генерации к прямым SQL-файлам (Flyway). Это снизило универсальность (только PostgreSQL), но повысило прозрачность и управляемость.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;В TightBlog несколько блогов на пользователя поддерживаются, хотя в UI Roller эта функция могла отсутствовать.&lt;/p&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3&gt;3. Ключевые концепции, выработанные в диалоге&lt;/h3&gt;
  &lt;ul&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Плоские категории vs теги&lt;/strong&gt;: категории — рубрикация, теги — кросс-тематический поиск. В TightBlog категории не иерархичны.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Фиды&lt;/strong&gt;: Atom 1.0 + JSON Feed + ActivityPub (последние — для гибкости). Обнаружение фидов через &lt;code&gt;&amp;lt;link rel=&quot;alternate&quot;&amp;gt;&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Мультиязычность&lt;/strong&gt; в фидах возможна через отдельные фиды по языкам или через атрибут &lt;code&gt;xml:lang&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Поиск&lt;/strong&gt;: без ИИ — использовать обратный индекс, ранжирование по доверенному кругу (организации, подписки), группировку по источникам, уточняющие вопросы.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Приватность и обнаружение&lt;/strong&gt;: нужен баланс между «кругами доверия» и шлюзами наружу. Организация как единица доверия может сертифицировать ключи, управлять доступом, модерацией.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Теги как сообщества&lt;/strong&gt;: теги становятся точками входа, имеют свои фиды, модерацию, могут быть scoped по организациям.&lt;/p&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3&gt;4. Уроки из истории&lt;/h3&gt;
  &lt;ul&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;«Мой Круг»&lt;/strong&gt; показал, что неявные круги друзей сложны в UX и не обеспечивают рост. Ваша модель «Планет» с явным членством и уставом может быть понятнее.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Провалы XMPP, Matrix, RetroShare&lt;/strong&gt; связаны с тем, что они решали технические задачи, забывая о массовом пользователе: сложный старт, отсутствие обнаружения, привязка к серверу, метаданные открыты.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Успешные системы&lt;/strong&gt; (Email, DNS) работают потому, что владельцы идентичностей заинтересованы поддерживать свои записи.&lt;/p&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3&gt;5. Предложения для будущего движка&lt;/h3&gt;
  &lt;ul&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Прогрессивная децентрализация&lt;/strong&gt;: начать с централизованного приложения, затем добавить свой домен, федерацию, P2P.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Организация как КА&lt;/strong&gt; (центр сертификации): выдаёт сертификаты участникам, публикует каталог, управляет модерацией.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Теги как службы&lt;/strong&gt;: каждый тег может иметь правила модерации, фид, уровень доступа (публичный/только для участников).&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Идентичность&lt;/strong&gt;: &lt;code&gt;did:web:org:user&lt;/code&gt; — портативная, с возможностью миграции.&lt;/p&gt;&lt;/li&gt;
   &lt;li&gt;&lt;p&gt;&lt;strong&gt;Поиск&lt;/strong&gt;: контекстный, с приоритетом доверенного круга, группировкой по источникам, опциональными шлюзами наружу.&lt;/p&gt;&lt;/li&gt;
  &lt;/ul&gt;
</description>  </item>
  <item>
    <guid isPermaLink="true">https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/aary/entry/%D0%BC%D0%B5%D1%81%D1%82%D0%BE-%D0%B4%D0%BB%D1%8F-%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8-%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2</guid>
    <title>Место для публикации текстов</title>
    <dc:creator>aary</dc:creator>
    <link>https://xn--90aepkp.xn--e1aqbccjfc.xn--p1acf/aary/entry/%D0%BC%D0%B5%D1%81%D1%82%D0%BE-%D0%B4%D0%BB%D1%8F-%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8-%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2</link>
    <pubDate>Thu, 19 Mar 2026 16:20:49 +0000</pubDate>
    <category>ЖЖ</category>
<description>Здесь я буду писать свои мысли. Пока, наверное, на тему создания &quot;схемы технологических работ&quot;. Можно подписаться (если есть чем читать подписки).</description>  </item>
</channel>
</rss>