<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Блог Алексея Корнилова</title>
    <link>https://kor-nil.ru/blog/</link>
    <atom:link href="https://kor-nil.ru/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Технические разборы из практики: Flutter, Node.js, SEO, ЧатЯдро.</description>
    <language>ru</language>
    <lastBuildDate>Tue, 08 Sep 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>Lighthouse 100/100/100/100 на Eleventy: бандл CSS, Метрика, которая не роняет оценку, и CSP без сюрпризов</title>
      <link>https://kor-nil.ru/blog/lighthouse-100-eleventy-metrika-csp/</link>
      <guid isPermaLink="true">https://kor-nil.ru/blog/lighthouse-100-eleventy-metrika-csp/</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description>Как этот сайт получил четыре сотни в Lighthouse и не потерял их после установки Яндекс.Метрики и заголовков безопасности. С цифрами, кодом и одной ловушкой, в которую легко попасть.</description>
    </item>
    <item>
      <title>Публикация в RuStore: пять шагов формы, отказ по юридическому основанию и почему APK нужно вскрывать, а не грепать</title>
      <link>https://kor-nil.ru/blog/rustore-publikaciya-otkaz-i-vskrytie-apk/</link>
      <guid isPermaLink="true">https://kor-nil.ru/blog/rustore-publikaciya-otkaz-i-vskrytie-apk/</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description>Как ЧатЯдро попало в RuStore за девять дней: что скрывают поля консоли, за что отказали на модерации, как собрать сборку без своего апдейтера и как правильно проверять, что внутри APK.</description>
    </item>
    <item>
      <title>Медиа в чате: как библиотека видео похудела с 630 до 204 МБ, а фото с 3,8 МБ до 729 КБ</title>
      <link>https://kor-nil.ru/blog/szhatie-foto-i-video-flutter-ffmpeg/</link>
      <guid isPermaLink="true">https://kor-nil.ru/blog/szhatie-foto-i-video-flutter-ffmpeg/</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description>Разбор медиа-пайплайна ЧатЯдра: сжатие фото средствами браузера без библиотек, перекодирование видео до 720p на сервере с ffmpeg, превью первым кадром, кэш подписанных ссылок и проценты загрузки. С параметрами и цифрами до/после.</description>
    </item>
    <item>
      <title>Проверка орфографии в PWA на Flutter: hunspell на сервере, своя таблица опечаток и разбор текста в два шага</title>
      <link>https://kor-nil.ru/blog/proverka-orfografii-v-pwa-flutter-hunspell/</link>
      <guid isPermaLink="true">https://kor-nil.ru/blog/proverka-orfografii-v-pwa-flutter-hunspell/</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description>В вебе у Flutter нет системной проверки текста. Оказалось, подчёркивание он рисует сам, а источник вердикта подключаемый. Как сделан сервис на nspell с русским словарём: замеры, кэши, почему встроенный подборщик не чинит «превед» и что нельзя отправлять на сервер.</description>
    </item>
    <item>
      <title>Лента без машинного обучения: непросмотренное вперёд, окно в семь дней и не больше двух постов подряд от автора</title>
      <link>https://kor-nil.ru/blog/ranzhirovanie-lenty-bez-mashinnogo-obucheniya/</link>
      <guid isPermaLink="true">https://kor-nil.ru/blog/ranzhirovanie-lenty-bez-mashinnogo-obucheniya/</guid>
      <pubDate>Tue, 08 Sep 2026 00:00:00 GMT</pubDate>
      <description>Хронологическая лента выглядела мёртвой: пачки постов от одного канала и ничего нового при обновлении. Как это починили двумя простыми правилами, как выбрали окно свежести замером на живых данных и какой баг курсора ломал «загрузить ещё».</description>
    </item>
  </channel>
</rss>
