<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Nikita Redko - Блог</title>
    <link>https://nikitaredko.ru</link>
    <description>Блог Никиты Редко: статьи о разработке, проектах, мыслях вслух и всём подряд.</description>
    <lastBuildDate>Wed, 16 Sep 2026 04:45:09 +0000</lastBuildDate>
    <atom:link href="https://nikitaredko.ru/api/rss.xml" rel="self" type="application/rss+xml"/>
    
    <item>
      <title><![CDATA[Новости 15.09.2026]]></title>
      <link>https://nikitaredko.ru/articles/be780a65-fdd8-4096-a744-f64a20d8dc3f</link>
      <description><![CDATA[Небольшой апдейт по проекту: добрался до интерфейса и добавил немного визуальных улучшений.]]></description>
      <pubDate>Tue, 15 Sep 2026 05:12:58 +0000</pubDate>
      <guid isPermaLink="false">be780a65-fdd8-4096-a744-f64a20d8dc3f</guid>
    </item>
    
    <item>
      <title><![CDATA[Новости 14.09.2026]]></title>
      <link>https://nikitaredko.ru/articles/3c3aedab-2978-4539-8ade-b867ae287e55</link>
      <description><![CDATA[Всем снова привет! Я всё так же продолжаю работу над менеджером паролей и, кажется, по тихоньку привыкаю писать статьи буквально к каждому пуке в **проекте**. Сегодняшний апдейт небольшой, но очень ва...]]></description>
      <pubDate>Mon, 14 Sep 2026 04:03:03 +0000</pubDate>
      <guid isPermaLink="false">3c3aedab-2978-4539-8ade-b867ae287e55</guid>
    </item>
    
    <item>
      <title><![CDATA[Новости 11.09.2026]]></title>
      <link>https://nikitaredko.ru/articles/d1afb9d4-5dac-4885-b44e-3feecbadd498</link>
      <description><![CDATA[Я вернулся с новостями. И нет, проект **всё ещё не заброшен** — наоборот, сейчас в самом разгаре **полный рефакторинг кода**. Улучшение производительности, правки багов, чтобы приложение не падало в п...]]></description>
      <pubDate>Fri, 11 Sep 2026 08:43:38 +0000</pubDate>
      <guid isPermaLink="false">d1afb9d4-5dac-4885-b44e-3feecbadd498</guid>
    </item>
    
    <item>
      <title><![CDATA[Новости 10.09.2026]]></title>
      <link>https://nikitaredko.ru/articles/b9807755-c469-4a2e-8a92-d69eea50cb1a</link>
      <description><![CDATA[Хочу поделиться свежим статусом по разработке моего локального менеджера паролей **Passman** (пока рабочее название, в будущем оно будет другим).

Работа кипит, и я решил немного структурировать проце...]]></description>
      <pubDate>Thu, 10 Sep 2026 08:16:02 +0000</pubDate>
      <guid isPermaLink="false">b9807755-c469-4a2e-8a92-d69eea50cb1a</guid>
    </item>
    
    <item>
      <title><![CDATA[Новости 09.09.2026]]></title>
      <link>https://nikitaredko.ru/articles/ebe4b21b-f0ae-4b4f-890b-f36394510aa0</link>
      <description><![CDATA[Работа над моим сайтом временно приостановлена — базовый функционал готов (осталось только частично закрыть всё авто-тестами), и теперь пришло время наполнять его контентом. А пока я переключился на н...]]></description>
      <pubDate>Wed, 09 Sep 2026 04:19:55 +0000</pubDate>
      <guid isPermaLink="false">ebe4b21b-f0ae-4b4f-890b-f36394510aa0</guid>
    </item>
    
    <item>
      <title><![CDATA[Новости 02.09.2026]]></title>
      <link>https://nikitaredko.ru/articles/47816233-dc5d-45a9-981c-0158a7064189</link>
      <description><![CDATA[Добавил **автоматическую генерацию OG-картинок** (Open Graph) для каждого поста. Теперь превью подтягивается с уникальным заголовком, датой и категорией.

Самое интересное тут — **как** это сделано. Р...]]></description>
      <pubDate>Wed, 02 Sep 2026 07:10:59 +0000</pubDate>
      <guid isPermaLink="false">47816233-dc5d-45a9-981c-0158a7064189</guid>
    </item>
    
    <item>
      <title><![CDATA[Вебхук, который никогда не срабатывал: история одного 403]]></title>
      <link>https://nikitaredko.ru/articles/123bfbe3-e015-4616-8905-013f429ff539</link>
      <description><![CDATA[Когда я строил кэширование для блога, я сразу подумал про инвалидацию: ладно, список статей будет жить в кэше полчаса, но новые статьи должны появляться на сайте сразу после кнопки «Опубликовать» в Ou...]]></description>
      <pubDate>Thu, 27 Aug 2026 02:21:39 +0000</pubDate>
      <guid isPermaLink="false">123bfbe3-e015-4616-8905-013f429ff539</guid>
    </item>
    
    <item>
      <title><![CDATA[Скучные оптимизации, которые реально работают]]></title>
      <link>https://nikitaredko.ru/articles/27e16c39-927b-48aa-9cd0-d16f71867186</link>
      <description><![CDATA[Когда блог только-только начинался, бэкенд ходил в Outline почти на каждый клик: открывал новое соединение, тянул документы, строил дерево, сортировал, отдавал. Работало, но сайт ощущался медленным. Я...]]></description>
      <pubDate>Wed, 26 Aug 2026 03:47:22 +0000</pubDate>
      <guid isPermaLink="false">27e16c39-927b-48aa-9cd0-d16f71867186</guid>
    </item>
    
    <item>
      <title><![CDATA[Новости 25.08.2026]]></title>
      <link>https://nikitaredko.ru/articles/f2f26541-28e8-4d20-958b-3aa847e7528f</link>
      <description><![CDATA[Хочу поделиться небольшим, но, как мне кажется, очень полезным апдейтом.

Недавно поймал себя на мысли, что читать технические блоги в метро, в поезде или просто при плохом Wi-Fi — та ещё боль. Страни...]]></description>
      <pubDate>Tue, 25 Aug 2026 04:55:12 +0000</pubDate>
      <guid isPermaLink="false">f2f26541-28e8-4d20-958b-3aa847e7528f</guid>
    </item>
    
    <item>
      <title><![CDATA[cached.(string) — мина замедленного действия в Go: как я защитил кэш от падения приложения]]></title>
      <link>https://nikitaredko.ru/articles/20742a0c-7776-4b6e-975e-627acaceb382</link>
      <description><![CDATA[Когда я проектировал кэш для своего блога, выбор пал на `patrickmn/go-cache` — простая in-memory библиотека, которая возвращает значения как `interface{}`. Удобно: кладёшь что угодно, достаёшь что уго...]]></description>
      <pubDate>Tue, 25 Aug 2026 04:34:50 +0000</pubDate>
      <guid isPermaLink="false">20742a0c-7776-4b6e-975e-627acaceb382</guid>
    </item>
    
    <item>
      <title><![CDATA[SEO для Vue SPA без SSR: инъекция мета-тегов регулярками на Go-сервере]]></title>
      <link>https://nikitaredko.ru/articles/c46dd68b-eb2d-4f42-9f51-cce8be1a9323</link>
      <description><![CDATA[Как я оставил SPA, но научил Go-сервер подменять `<title>`, `og:*` и JSON-LD прямо в `index.html` перед отдачей. Поисковики и соцсети видят правильные теги, пользователи получают мгновенную загрузку, ...]]></description>
      <pubDate>Mon, 24 Aug 2026 04:36:56 +0000</pubDate>
      <guid isPermaLink="false">c46dd68b-eb2d-4f42-9f51-cce8be1a9323</guid>
    </item>
    
    <item>
      <title><![CDATA[DOMPurify съел кнопку копирования кода]]></title>
      <link>https://nikitaredko.ru/articles/28031254-15dc-4bf9-93af-23ee7f73ca11</link>
      <description><![CDATA[В один момент я решил, что мой блог недостаточно безопасен. Контент из Outline рендерится через `v-html`, а значит любой зловредный markdown с `<script>` или `onclick="alert(1)"` выполнится в браузере...]]></description>
      <pubDate>Mon, 24 Aug 2026 04:21:56 +0000</pubDate>
      <guid isPermaLink="false">28031254-15dc-4bf9-93af-23ee7f73ca11</guid>
    </item>
    
    <item>
      <title><![CDATA[Интеграция Giscus во Vue 3 и решение проблемы тёмной темы]]></title>
      <link>https://nikitaredko.ru/articles/2cdfcd62-0971-41eb-ac24-ec91531b4263</link>
      <description><![CDATA[Добавление системы комментариев на личный блог или сайт-портфолио — это классическая дилемма. С одной стороны, хочется дать возможность обсудить материал. С другой — не хочется превращать свой пет-про...]]></description>
      <pubDate>Fri, 07 Aug 2026 05:14:43 +0000</pubDate>
      <guid isPermaLink="false">2cdfcd62-0971-41eb-ac24-ec91531b4263</guid>
    </item>
    
    <item>
      <title><![CDATA[Как я научил поисковики находить мой блог на Vue 3 и Go]]></title>
      <link>https://nikitaredko.ru/articles/da8d748f-f50d-40bc-844e-2602a86020a6</link>
      <description><![CDATA[Когда я запускал свой блог, я думал, что достаточно просто написать хорошие статьи — и читатели сами найдут их через Google и Яндекс. Спойлер: не найдут. Поисковые роботы, оказывается, довольно ленивы...]]></description>
      <pubDate>Tue, 04 Aug 2026 03:19:47 +0000</pubDate>
      <guid isPermaLink="false">da8d748f-f50d-40bc-844e-2602a86020a6</guid>
    </item>
    
    <item>
      <title><![CDATA[Новости 03.08.2026]]></title>
      <link>https://nikitaredko.ru/articles/52c2d1e1-7814-4ba2-91b4-38ac34b02c37</link>
      <description><![CDATA[Прошлый месяц я провёл в отпуске — наконец-то выбрался из рутины, перезагрузился и просто отдыхал. Без кода, без дедлайнов, без мыслей «а не прикрутить ли мне ещё фичу». Сайт стоял тихонько, статьи не...]]></description>
      <pubDate>Mon, 03 Aug 2026 07:51:40 +0000</pubDate>
      <guid isPermaLink="false">52c2d1e1-7814-4ba2-91b4-38ac34b02c37</guid>
    </item>
    
    <item>
      <title><![CDATA[Как я оптимизировал Go-бэкенд, потому что поиск жрал память (и спамил API)]]></title>
      <link>https://nikitaredko.ru/articles/6940e11a-dc31-47c6-a186-4e5d83d1f043</link>
      <description><![CDATA[Решил сделать поиск по статьям на своём сайте. Бэкенд на Go, статьи хранятся в Outline. Логика казалась простой: при запросе `GET /api/articles/search?q=go` бэкенд идёт в Outline API, тянет все докуме...]]></description>
      <pubDate>Wed, 08 Jul 2026 11:00:53 +0000</pubDate>
      <guid isPermaLink="false">6940e11a-dc31-47c6-a186-4e5d83d1f043</guid>
    </item>
    
    <item>
      <title><![CDATA[Новости 03.07.2026]]></title>
      <link>https://nikitaredko.ru/articles/5390b795-7f86-4e5f-b347-9094d49fcf99</link>
      <description><![CDATA[Продолжение истории с [CI/CD](https://www.nikitaredko.ru/articles/f7b85cf2-5c79-4107-a843-739adea9d2bb). В предыдущей новости я писал, что сайт теперь сам пересобирается и деплоится, когда я пушу тег....]]></description>
      <pubDate>Fri, 03 Jul 2026 06:46:48 +0000</pubDate>
      <guid isPermaLink="false">5390b795-7f86-4e5f-b347-9094d49fcf99</guid>
    </item>
    
    <item>
      <title><![CDATA[Как я настраивал автосоздание релизов с changelog]]></title>
      <link>https://nikitaredko.ru/articles/ef2c7a3c-2b45-4ab0-a70d-2ec565a50fbc</link>
      <description><![CDATA[Решил сделать удобную фичу: чтобы при создании тега `v*` GitHub Actions автоматически создавал Release на GitHub с описанием всех изменений между версиями.

Заходишь на страницу релизов, а там аккурат...]]></description>
      <pubDate>Fri, 03 Jul 2026 03:31:07 +0000</pubDate>
      <guid isPermaLink="false">ef2c7a3c-2b45-4ab0-a70d-2ec565a50fbc</guid>
    </item>
    
    <item>
      <title><![CDATA[Как я выводил версию релиза и коммит в футере (и чуть не сошёл с ума)]]></title>
      <link>https://nikitaredko.ru/articles/62493623-1cd8-4a0f-85e7-f5af0a8e9ad1</link>
      <description><![CDATA[Решил сделать красивую фичу: чтобы в футере сайта отображалась текущая версия (тег) и хэш коммита, на котором собрана сборка. Заходишь на сайт, а внизу видно: `v0.1.2` и `720d374`. Красиво, информатив...]]></description>
      <pubDate>Thu, 02 Jul 2026 04:41:19 +0000</pubDate>
      <guid isPermaLink="false">62493623-1cd8-4a0f-85e7-f5af0a8e9ad1</guid>
    </item>
    
    <item>
      <title><![CDATA[Новости 01.07.2026]]></title>
      <link>https://nikitaredko.ru/articles/f7b85cf2-5c79-4107-a843-739adea9d2bb</link>
      <description><![CDATA[Наконец-то допилил автосборку проекта. Честно скажу — пришлось с этим изрядно ~~пое\*\*\*ся~~ потрудиться, но теперь всё работает как надо: вешаю тег, GitHub Actions сам собирает Docker-образ, тестиру...]]></description>
      <pubDate>Wed, 01 Jul 2026 09:23:43 +0000</pubDate>
      <guid isPermaLink="false">f7b85cf2-5c79-4107-a843-739adea9d2bb</guid>
    </item>
    
  </channel>
</rss>