<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Александр Ануфриев — Заметки из реальных задач.</title>
    <link>https://anu3ev.com/ru/blog/</link>
    <description>Делаю сложные браузерные инструменты на Vue и TypeScript: редакторы изображений, текста и кода с AI-функциями внутри, сценарии для продавцов и общие библиотеки, на которых они работают.
Пять лет писал фронтенд в inSales, B2B SaaS-платформе для управления онлайн-бизнесом, на которой работают 60 000+ клиентов: брал задачи с размытыми требованиями, доводил до продакшена и поддерживал после релиза.</description>
    <language>ru</language>
    <atom:link href="https://anu3ev.com/ru/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>Как я заменил таймер кеша вопросом «изменился ли товар?»</title>
      <link>https://anu3ev.com/ru/blog/cache-by-change-not-timer/</link>
      <guid isPermaLink="true">https://anu3ev.com/ru/blog/cache-by-change-not-timer/</guid>
      <description>Библиотека витрин хранила данные товаров фиксированное время, поэтому страницы то показывали устаревшие данные, то заново запрашивали товары, которые не менялись. Проверка даты изменения каждого товара сократила число запросов примерно на 70%.</description>
      <pubDate>Tue, 20 Oct 2026 20:00:00 GMT</pubDate>
    </item>
<item>
      <title>Учим Monaco читать Liquid-шаблоны: главное — понять, какой язык под курсором</title>
      <link>https://anu3ev.com/ru/blog/monaco-liquid-tokenizer/</link>
      <guid isPermaLink="true">https://anu3ev.com/ru/blog/monaco-liquid-tokenizer/</guid>
      <description>Как собственный токенизатор для HTML с Liquid и вставками JavaScript и CSS научил подсказки следовать за курсором и почему редактор стал версионируемым пакетом с API из трёх функций.</description>
      <pubDate>Tue, 20 Oct 2026 20:00:00 GMT</pubDate>
    </item>
<item>
      <title>Один токен капчи, две ждущие формы: что сломала невидимая проверка на целой платформе</title>
      <link>https://anu3ev.com/ru/blog/one-token-two-forms/</link>
      <guid isPermaLink="true">https://anu3ev.com/ru/blog/one-token-two-forms/</guid>
      <description>Невидимая капча выглядит как один тег script. В формах нескольких поколений она превратилась в ошибки асинхронного состояния и откат в продакшене из-за записи настроек, которой просто не было.</description>
      <pubDate>Tue, 20 Oct 2026 20:00:00 GMT</pubDate>
    </item>
<item>
      <title>Редизайн убрал сайдбар, а вместе с ним единственный способ починить сломанную страницу</title>
      <link>https://anu3ev.com/ru/blog/redesign-recovery-mode/</link>
      <guid isPermaLink="true">https://anu3ev.com/ru/blog/redesign-recovery-mode/</guid>
      <description>В новом визуальном редакторе управление виджетами переехало в предпросмотр витрины. Если пользовательский код ломает предпросмотр, кнопки пропадают вместе с ним. Как я нашёл эту дыру и какой режим восстановления для неё сделал.</description>
      <pubDate>Tue, 20 Oct 2026 20:00:00 GMT</pubDate>
    </item>
<item>
      <title>244 650 сравнений: почему после миграции на Vue 3 автокомплит открывался 12 секунд</title>
      <link>https://anu3ev.com/ru/blog/vue-3-proxy-deep-comparison/</link>
      <guid isPermaLink="true">https://anu3ev.com/ru/blog/vue-3-proxy-deep-comparison/</guid>
      <description>После перехода на Vue 3 автокомплит с 700 доменными зонами открывался около 12 секунд. Виноват оказался старый квадратичный поиск дублей, который стал дорогим, когда начал читать каждый объект через реактивный Proxy.</description>
      <pubDate>Tue, 20 Oct 2026 20:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>
