<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Все посты подряд / JavaScript / Хабр]]></title>
    <link>https://habr.com/ru/hubs/javascript/posts/</link>
    <description><![CDATA[JavaScript – прототипно-ориентированный язык программирования]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sun, 26 Apr 2026 22:29:38 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    

  

  
  <item>
    <title><![CDATA[Пост @GaryAnikin — JavaScript (+4) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1026948/</guid>
    <link>https://habr.com/ru/posts/1026948/?utm_campaign=1026948&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Креативное программирование: визуализация звука.</strong></p><p>Первые шаги в компьютерной графике(web визуализатор звука + no code решение). Поделюсь находками за 5 лет изучения темы.</p><p>Текст подойдет любому читателю которому интересна выразительная часть цифрового мира.</p><p>—<em> Что такое креативное программирование?</em></p><p>Использование компьютера для создания изображений или звука. Например: realtime визуальные эффекты(аудиореактивная графика для музыкальных фестивалей), создание визуального искусства(генеративная графика) и дизайна, разработка художественных инсталляций, звукового искусства и даже рекламы.</p><p><em>— Разбор проекта: визуализатор звука</em></p><p>—— AnalyserNode (WebAudio API)</p><pre><code class="javascript">const audioCtx = new AudioContext();
const FFT = audioCtx.createAnalyser();
const source = audioCtx.createMediaStreamSource(stream);

source.connect(FFT); // анализ
analyser.connect(audioCtx.destination); // вывод звука

const bufferLength = FFT.frequencyBinCount;
const dataArray = new Float32Array(bufferLength); // массив для записи данных</code></pre><p>—— Отрисовка браузерным API (почти no code)</p><p>Мы преобразуем массив данных(полученный от анализа аудиосигнала)  в градиент, чем мощнее сигнал на определённой частоте, тем ярче будет цвет на градиенте. Таким образом мы получаем визуализацию звука в realtime.</p><pre><code class="javascript">// Отрисовка частотных компонетов аудиосигнала через createLinearGradient
  function renderSpectrum(g) {
    g.strokeWeight(0);
    g.drawingContext.fillStyle = "black"; // цвет фона
    g.rect(0, 0, WIDTH, HEIGHT); // заливка фона

    const subSize = Math.floor(WIDTH * 0.02);
    const gradient = drawingContext.createLinearGradient(
      subSize,
      HEIGHT / 2,
      WIDTH * 2,
      HEIGHT / 2
    );
  
    FFT.getFloatFrequencyData(dataArray);
    levels = dataArray; // данные от анализа сигнала Быстрым преобразованием Фурье 

    // создаем градиент из аудиоданных
    for (let i = 0; i &lt; levels.length; i++) {
      const v = getValue(levels[i]); // нормализация данных
      // const pos = getPos(i);
      const pos = linear_to_logarithmic(getPos(i));

      // чем мощнее сигнал(0-1) тем выше значение alpa в цвете градиента rgba
      gradient.addColorStop(pos, `rgba(255, 255, 255, ${v.toFixed(2)})`);
    }
    g.drawingContext.fillStyle = gradient; // устанавливаем полученный градиент как стиль заливки
    g.rect(0, 0, WIDTH, HEIGHT);// отрисовываем градиент на весь холст 
  }</code></pre><p>Браво! Вы создали визуализатор звука! В левой части изображения отображены низкие частоты(саб и басс), в центре находятся средние частоты(соло скрипок/гитар, фортепиано, вокал) и в правой части мы видим верхние частоты(хай хеты).</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/fc0/995/866/fc0995866cb326f52137535a6c032dab.gif" width="540" height="304"></figure><p>—<em> NoCode решение (в среде визуального программирования </em><a href="https://derivative.ca" rel="noopener noreferrer nofollow"><em>TouchDesigner</em></a><em>)</em></p><p>Для визуализации сигнала используется готовый компонент — нода <a href="https://docs.derivative.ca/Audio_Spectrum_CHOP" rel="noopener noreferrer nofollow">Audio Spectrum CHOP</a></p><p><a href="https://i.postimg.cc/QMB1Pxnj/Snimok-ekrana-2026-04-25-v-14-28-39.png" rel="noopener noreferrer nofollow">https://i.postimg.cc/QMB1Pxnj/Snimok-ekrana-2026-04-25-v-14-28-39.png</a> (пример проекта из 3 нод: AudioFileInCHOP -&gt; AudioSpectrumCHOP -&gt; chopToTOP )</p><p>Больше про медиадизайн у меня в канале: <a href="https://t.me/mediapancake" rel="noopener noreferrer nofollow">https://t.me/mediapancake</a></p> <a href="https://habr.com/ru/posts/1026948/?utm_campaign=1026948&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 25 Apr 2026 11:34:42 GMT</pubDate>
    <dc:creator><![CDATA[GaryAnikin]]></dc:creator>
      
      <category><![CDATA[визуализация]]></category><category><![CDATA[звук]]></category><category><![CDATA[webaudio]]></category><category><![CDATA[javascript]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @azTotMD — Игры и игровые консоли (+2) — 23.04.2026 23:20]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1027248/</guid>
    <link>https://habr.com/ru/posts/1027248/?utm_campaign=1027248&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/0fc/f53/855/0fcf5385568408d52832812a86d3d9ce.jpg" alt="Герое-подобная игра в браузере" title="Герое-подобная игра в браузере" width="955" height="661"><div><figcaption>Герое-подобная игра в браузере</figcaption></div></figure><p>Поскольку в голосовании в предыдущей <a href="https://habr.com/ru/articles/1016298/" rel="noopener noreferrer nofollow">статье </a>победил вариант с AI, сделал пока простенький его вариант.</p><p>Также теперь можно кликать два раза по гексу с противником, чтобы атаковать его (старый способ с выбором позиции атаки остался). Тачи поддерживаются.</p><p>На очереди: стрелки, летуны и статичные объекты.</p><p>Ссылки, чтоб потыкать: <a href="https://nheroes.netlify.app/" rel="noopener noreferrer nofollow">netlify</a>, <a href="https://titanplayers.itch.io/heroes" rel="noopener noreferrer nofollow">ITCH</a>.</p> <a href="https://habr.com/ru/posts/1027248/?utm_campaign=1027248&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 23 Apr 2026 20:20:16 GMT</pubDate>
    <dc:creator><![CDATA[azTotMD]]></dc:creator>
      
      <category><![CDATA[герои]]></category><category><![CDATA[герои 2]]></category><category><![CDATA[герои 3]]></category><category><![CDATA[heroes]]></category><category><![CDATA[heroes might and magic]]></category><category><![CDATA[стратегия]]></category><category><![CDATA[тактические игры]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @PechoraDev — PHP (+2) — 22.04.2026 20:43]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1026750/</guid>
    <link>https://habr.com/ru/posts/1026750/?utm_campaign=1026750&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Мультиязычность. Ад для разработчика. </strong></p><p>Сейчас для моего движка понадобилась мультиязычность. Ну как понадобилась - на гитхабе прозрачно намекнули, что негоже одной гордой cms для ведения блога быть сугубо на русском языке. </p><p><strong>И понеслась...</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/e8e/f02/615/e8ef026154f5ed0bc2318694b326f0b5.png" alt="Процесс перевода движка" title="Процесс перевода движка" width="1920" height="943"><div><figcaption>Процесс перевода движка</figcaption></div></figure><p>Это хорошо, что сейчас есть нейросети и они здорово упрощают процесс перевода. Но - по старинке все делаю вручную, каждый файл...Сначала размечаю обыкновенными дефайнами либо класс контроллера, либо шаблона, ну а потом выношу это все в соответствующие языковые папки. </p><p>Вайбкодеры меня наверняка закидали бы тапками, мол - все можно автоматизировать и перевести хоть тонну файлов за 20 минут. Но - мне это не в кайф =) </p><p>Кто хочет помочь в процессе перевода, а заодно и движок потестить - милости прошу: <a href="https://github.com/pechoradev/BloggyCms" rel="noopener noreferrer nofollow">https://github.com/pechoradev/BloggyCms</a></p> <a href="https://habr.com/ru/posts/1026750/?utm_campaign=1026750&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 22 Apr 2026 17:43:04 GMT</pubDate>
    <dc:creator><![CDATA[PechoraDev]]></dc:creator>
      
      <category><![CDATA[cms]]></category><category><![CDATA[мультиязычность]]></category><category><![CDATA[перевод]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — JavaScript (+4) — 15.04.2026 14:24]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1023764/</guid>
    <link>https://habr.com/ru/posts/1023764/?utm_campaign=1023764&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Вышла <a href="https://github.com/felixrieseberg/windows95/releases/tag/v5.0.1" rel="noopener noreferrer nofollow">пятая версия</a> открытого проекта <a href="https://github.com/felixrieseberg/windows95" rel="noopener noreferrer nofollow">windows95</a> с исходным кодом полностью на JavaScript. «Это Windows 95, работающая в&nbsp;приложении Electron. Да, это полная версия. Извините»,&nbsp;— пояснил разработчик решения.</p><p>Проект работает в Windows, а также на macOS и Linux, что подарит вам ностальгию или возможность обойти ограничения старой операционной системы независимо от вашей текущей платформы. </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/dc3/e47/49f/dc3e4749fcfd2dda547a23c90c597a37.png" width="780" height="763"></figure> <a href="https://habr.com/ru/posts/1023764/?utm_campaign=1023764&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 15 Apr 2026 11:24:31 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[windows95]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Rombneromb — Блог компании X5 Tech — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/X5Tech/posts/1019838/</guid>
    <link>https://habr.com/ru/companies/X5Tech/posts/1019838/?utm_campaign=1019838&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/c2f/a92/f79/c2fa92f797183053d1020d89f8ea4791.png" width="1420" height="1080"></figure><p>Вместе с сообществом <a href="https://t.me/moscowjs" rel="noopener noreferrer nofollow">Moscow JS</a> приготовили классную <strong>программу с двумя потоками докладов</strong> про:</p><ul><li><p>performance и масштабирование фронтенда, </p></li><li><p>внедрение LLM в продукты и процессы, </p></li><li><p>изменение инженерной практики и культуры</p></li></ul><p>От X5 Tech — сразу два прикладных кейса:</p><ul><li><p>Как внедрять LLM в прод без перестройки архитектуры</p></li><li><p>Web-First в мобильных приложениях: офлайн, файлы, Workbox и ключевые подводные камни</p></li></ul><p>Для тех, кто хочет поучаствовать в дискуссии — круглый стол с холиварами про переход на «бигтех-рельсы».</p><p>📆 30 апреля, 18:30<br>Москва, Мясницкая, 13, с20</p><p>🔗 <a href="https://moscowjs.timepad.ru/event/3880642/?utm_source=moscowjs_site&amp;utm_medium=website&amp;utm_campaign=mjs70&amp;utm_content=registration_70habr" rel="noopener noreferrer nofollow">Регистрация по ссылке</a></p><p><strong>Программа:</strong></p><p><strong>«Перформанс без головной боли: Системная оптимизация фронтенда в большой команде» (</strong><em>Мирзоев Руслан,&nbsp;Premier.one</em><strong>)</strong></p><p>Доклад основан на реальном опыте команды из 24 разработчиков, столкнувшихся с критическими показателями LCP. Мы разберем комплексный подход к ускорению продукта: от «фундамента» (анализ бандла, Tree Shaking и борьба с циклическими зависимостями) до продвинутых стратегий рендеринга, таких как ISR и оптимизация внутренних запросов при SSR (перевод на internal hosts).</p><p>Вы получите набор готовых рецептов по работе с ассетами (SVG, шрифты, сжатие) и узнаете, как выстроить культуру производительности с помощью Performance Budgets, чтобы предотвратить регрессии в будущем</p><p><strong>«Веб-компоненты: плохая реализация хорошей идеи» (</strong><em>Евгений Кучерявый,&nbsp;larana.tech</em><strong>)</strong></p><p>Разберёмся, почему веб-копмоненты не прижились, что нужно сделать, чтобы это исправить, и есть ли им место в современной фронтенд-разработке.</p><p><strong>«LLM в продакшене: от идеи до внедрения за неделю» (</strong><em>Артем Шкуренко,&nbsp;Х5 Tech</em><strong>)</strong></p><p>Интеграция языковых моделей в существующие продукты не требует масштабных изменений архитектуры. Покажу практические паттерны — от прямой интеграции через API до выделенных сервисов, которые позволяют запускать AI-функциональность за считанные дни.</p><p>В докладе — реальные кейсы: интеллектуальные таблицы, ассистенты и аналитика, а также разбор ключевых вызовов — контроль качества, предсказуемость результатов и стабильность работы.</p><p><strong>«Вторая жизнь инженерных практик: как ИИ делает сложные подходы наконец-то удобными» (</strong><em>Вадим Царегородцев,&nbsp;Frontend Guild Lead в островке</em><strong>)</strong></p><p>За последние годы индустрия накопила множество инженерных практик: ADR, Clean Architecture, TDD, архитектурные границы, строгие правила зависимостей.</p><p>Многие из них отличные на уровне идей, но на практике часто оказываются слишком дорогими и трудоёмкими: требуют много документации, boilerplate-кода и ручного контроля правил.</p><p>Появление LLM меняет эту ситуацию.</p><p>Интересно, что ИИ не столько создаёт новые подходы, сколько делает жизнеспособными старые идеи, которые раньше было сложно применять из-за высокой стоимости их поддержки.</p><p>В докладе я покажу несколько реальных примеров из production-разработки, где привычные инженерные практики получили вторую жизнь благодаря ИИ.</p><p><strong>«А доки где? Пишем продуктовую документацию» (</strong><em>Егор Левченко,&nbsp;Wildberries &amp; Russ</em><strong>)</strong></p><p>У вас самый крутой уникальный продукт или сервис на рынке, вы знаете наверняка, что он делает и как им пользоваться. А понятен ли он вашему клиенту? Надо написать документацию, но как? Давайте разберёмся, чтобы потом не было больно.</p><p><strong>«Секретная жизнь фотографий в Клубе Тайных Покупателей X5» (</strong><em>Артур Басак,&nbsp;Х5 Tech</em><strong>)</strong></p><p>Поговорим о подходе Web-First в мобильных приложениях. В частности о том, как работать с файлами, про удобство и ограничения Workbox, нюансы оффлайн-режима и о какие подводные камни можно споткнуться.</p><p><strong>Инженерная культура и переход на «бигтех-рельсы»</strong></p><p><strong>Круглый стол с экспертами:</strong> <em>Глеб Михеев, Роман Троицкий</em> <strong>(</strong>состав уточняется…<strong>)</strong></p><p><strong>Модератор:</strong>&nbsp;<em>Иван Сизов, техлид фронтенд X5 Digital</em></p> <a href="https://habr.com/ru/posts/1019838/?utm_campaign=1019838&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 06 Apr 2026 12:28:37 GMT</pubDate>
    <dc:creator><![CDATA[Rombneromb (X5 Tech)]]></dc:creator>
      
      <category><![CDATA[llm]]></category><category><![CDATA[mobile development]]></category><category><![CDATA[архитектура]]></category><category><![CDATA[инженерные практики]]></category><category><![CDATA[фронтенд]]></category><category><![CDATA[митап]]></category><category><![CDATA[доклады]]></category><category><![CDATA[веб-компоненты]]></category><category><![CDATA[продуктовая документация]]></category><category><![CDATA[webview]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @erbanovanastasia — Блог компании Selectel (+4) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/selectel/posts/1018970/</guid>
    <link>https://habr.com/ru/companies/selectel/posts/1018970/?utm_campaign=1018970&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Вторая часть курса по JavaScript уже доступна</strong> 💻</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/77c/0c0/cac/77c0c0cacc0c6e8c0457a3455027e578.png" width="1999" height="664"></figure><p>Привет, Хабр! Массивы, объекты, операторы, DOM — если вы еще не работаете с ними, проходите бесплатный курс «<a href="https://study.selectel.ru/javascript_course/?utm_source=habr.com&amp;utm_medium=referral&amp;utm_campaign=course_post_javascript_030425" rel="noopener noreferrer nofollow">Первые шаги в JavaScript</a>». Во время обучения вы освоите базовый синтаксис и конструкции языка, а затем напишете пет-проект. &nbsp;</p><p>Вторая часть состоит из пяти модулей. После курса вы сможете:</p><ul><li><p>изучать более продвинутые фреймворки и библиотеки;</p></li><li><p>понимать архитектуру простых веб-приложений;</p></li><li><p>писать скрипты, управлять DOM и изменять интерфейс веб-страниц.</p></li></ul><p>Осваивайте практические навыки с помощью IT-инфраструктуры Selectel — промокод на бесплатный доступ уже ждет на курсе. После успешного прохождения финального теста пришлем именной сертификат.</p><p><strong><a href="https://study.selectel.ru/javascript_course/?utm_source=habr.com&amp;utm_medium=referral&amp;utm_campaign=course_post_javascript_030425" rel="noopener noreferrer nofollow">Начните обучение прямо сейчас →</a></strong></p> <a href="https://habr.com/ru/posts/1018970/?utm_campaign=1018970&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 03 Apr 2026 12:53:03 GMT</pubDate>
    <dc:creator><![CDATA[erbanovanastasia (Selectel)]]></dc:creator>
      
      <category><![CDATA[selectel]]></category><category><![CDATA[курс]]></category><category><![CDATA[обучение]]></category><category><![CDATA[разработка]]></category><category><![CDATA[js]]></category><category><![CDATA[javascript]]></category><category><![CDATA[бесплатные курсы]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @preciousvictory106 — JavaScript (+4) — 01.04.2026 07:37]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1017778/</guid>
    <link>https://habr.com/ru/posts/1017778/?utm_campaign=1017778&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong><a href="https://cursor.com/" rel="noopener noreferrer nofollow">Cursor</a> или <a href="https://t.me/harvi_pro" rel="noopener noreferrer nofollow">Harvi Code</a>: какой ИИ для кодинга в 2026 году реально работает в России без VPN и головной боли с платежами</strong></p><p><em>В 2026 году почти каждый разработчик в России стоит перед одним и тем же выбором: </em>хочешь мощный ИИ, который реально ускоряет разработку, или хочешь, чтобы всё работало просто, без посредников и ежемесячных нервов с оплатой.</p><p><strong><a href="https://cursor.com/" rel="noopener noreferrer nofollow">Cursor</a></strong> — это сейчас, пожалуй, самый продвинутый AI-редактор на рынке. По сути, это VS Code, в который встроили настоящий искусственный интеллект на стероидах. Composer позволяет одной командой править сразу десяток файлов, агент понимает весь проект, хорошо справляется с рефакторингом, поиском багов и даже архитектурными решениями. Качество кода от Claude Sonnet 4.5 или свежих GPT часто вызывает искреннее «вау».</p><p>Но есть большая ложка дёгтя. <a href="https://cursor.com/" rel="noopener noreferrer nofollow">Cursor</a> — американский продукт, и российские карты он не принимает. Чтобы купить подписку Pro, приходится либо использовать виртуальные карты через крипту, либо платить посредникам (Oplatym и подобные), либо покупать готовые аккаунты (что рискованно). Сам редактор после оплаты работает без VPN, но первоначальная настройка оплаты — это отдельный квест. Бесплатная версия быстро упирается в лимиты, особенно если активно юзаешь мощные модели.</p><p><strong><a href="https://t.me/harvi_pro" rel="noopener noreferrer nofollow">Harvi Code</a></strong><a href="https://t.me/harvi_pro" rel="noopener noreferrer nofollow"> </a>— <strong>Первый в России AI кодинг-агент</strong>. Российский ответ на все эти заморочки. Это полноценный AI-агент прямо внутри VS Code. Пишешь задачу в чате — он генерит код, рефакторит, фиксит баги, работает с контекстом всего проекта. Не тормозит, контекст держит хорошо, интерфейс привычный.</p><p>Самое приятное — модели на любой бюджет. Есть топовые (Claude Sonnet 4.5, GPT-5.4 и другие). <strong>А главное — очень низкая стоимость токенов</strong>. Для каждой модели есть свой коэффициент стоимости. Для большинства повседневных задач их хватает с головой, и можно вообще почти не тратить деньги. Оплата — российскими картами или СБП, без всяких посредников и VPN.</p><p><strong>Коротко по делу:</strong></p><ul><li><p>Если тебе нужен мощный <strong>multi-file agent </strong>и ты готов один раз настроить оплату через проверенного посредника — бери <strong>Cursor</strong>. Он до сих пор в топе по возможностям.</p></li><li><p>Если хочешь работать стабильно, без лишних телодвижений и не думать каждый месяц про «как бы оплатить» — <strong><a href="https://t.me/harvi_pro" rel="noopener noreferrer nofollow">Harvi Code</a></strong> сейчас выглядит гораздо практичнее для российского разработчика.</p></li></ul><p>А вы как сейчас кодите с ИИ? Пробовали оба варианта? Что в итоге оставили в основном редакторе? Пишите в комментариях, интересно почитать реальный опыт.</p> <a href="https://habr.com/ru/posts/1017778/?utm_campaign=1017778&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 01 Apr 2026 04:37:20 GMT</pubDate>
    <dc:creator><![CDATA[preciousvictory106]]></dc:creator>
      
      <category><![CDATA[ИИ]]></category><category><![CDATA[Кодинг Агент]]></category><category><![CDATA[разработка]]></category><category><![CDATA[автоматизация]]></category><category><![CDATA[искусственный интеллект]]></category><category><![CDATA[нейросети]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @El_Gato_Grande — Блог компании Selectel (+4) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/selectel/posts/1015904/</guid>
    <link>https://habr.com/ru/companies/selectel/posts/1015904/?utm_campaign=1015904&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Обновления в подборках обучающих материалов и курсов от Selectel</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/94a/4a6/ec7/94a4a6ec722a13a2accba633d2595f30.png" width="1191" height="669"></figure><p>Привет, Хабр! На дворе пятница, а значит, пришло время для нашей нерегулярной рубрики с полезными материалами для новичков. Как всегда, все бесплатно, учитесь и развивайтесь. И вот с чем я сегодня пришел.</p><ul><li><p><a href="https://selectel.ru/blog/courses/start-with-ml/?utm_source=habr.com&amp;utm_medium=referral&amp;utm_campaign=academy_post_coursesselection_270326_content" rel="noopener noreferrer nofollow">Начало работы с ML-моделями</a>. Это подборка статей в Академии Selectel. Изучите базу по алгоритмам, научитесь подбирать железо и настраивать инфраструктуру и мое любимое — подборка в подборке — узнаете, что еще полезного по теме можно почитать/посмотреть.</p></li><li><p><a href="https://study.selectel.ru/mobiletesting_course?utm_source=habr.com&amp;utm_medium=referral&amp;utm_campaign=academy_post_coursesselection_270326_content" rel="noopener noreferrer nofollow">Тестирование мобильных приложений</a>. Это уже полноценный курс с теорией, тестами и практическими заданиями. Кстати, практика — это прямо практика. Вы получите возможность бесплатно поработать с&nbsp;реальными устройствами в мобильной ферме Selectel, а не упражняться только в эмуляторах. Буквально на этой неделе мы запустили вторую часть курса, так что если вы уже начали его изучение, самое время продолжить.</p></li><li><p><a href="https://study.selectel.ru/javascript_course?utm_source=habr.com&amp;utm_medium=referral&amp;utm_campaign=academy_post_coursesselection_270326_content" rel="noopener noreferrer nofollow">Первые шаги в&nbsp;JavaScript</a>. Этот курс ориентирован на фронтенд-разработчиков уровня junior, веб-дизайнеров и тех, кто только делает первые шаги в программировании. Кстати, буквально на днях этот курс будет расширен, так что не пропустите. Начать изучение первых уроков можно уже сейчас.</p></li></ul> <a href="https://habr.com/ru/posts/1015904/?utm_campaign=1015904&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 27 Mar 2026 11:30:17 GMT</pubDate>
    <dc:creator><![CDATA[El_Gato_Grande (Selectel)]]></dc:creator>
      
      <category><![CDATA[selectel]]></category><category><![CDATA[javascript]]></category><category><![CDATA[ml]]></category><category><![CDATA[qa]]></category><category><![CDATA[тестирование]]></category><category><![CDATA[фронтенд]]></category><category><![CDATA[обучение]]></category><category><![CDATA[курсы]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Gen-7 — .NET (+3) — 24.03.2026 16:24]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1014380/</guid>
    <link>https://habr.com/ru/posts/1014380/?utm_campaign=1014380&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Всем хабровчанам удачной недели!</p><p>Хотел поинтересоваться такой темой как&nbsp;школа «Result/University». Кто обучался, как&nbsp;быстро удалось найти работу? Какова оценка по 5&nbsp;шкале?</p><p>Смогут&nbsp;ли ребята ввести в&nbsp;данную тему с&nbsp;минимальными рисками?</p> <a href="https://habr.com/ru/posts/1014380/?utm_campaign=1014380&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 24 Mar 2026 13:24:13 GMT</pubDate>
    <dc:creator><![CDATA[Gen-7]]></dc:creator>
      
      <category><![CDATA[frontend]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @box-570 — ReactJS (+1) — 24.03.2026 15:18]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1014342/</guid>
    <link>https://habr.com/ru/posts/1014342/?utm_campaign=1014342&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Solid.js должен был исправить React…но доказал, что React был прав</p><p>Все ругали React за массивы зависимостей, странные хуки и непонятные стадии рендеринга. Возникало чувство, что они усложнили фронтенд и добавили в него отложенную реакцию. Команда Solid.js решила это исправить: убрать лишние рендеры и магию по капоту. Идея была проста — использовать реактивность. Solid создавался, чтобы заменить React, но когда они <a href="https://github.com/solidjs/solid/releases/tag/v2.0.0-beta.0" rel="noopener noreferrer nofollow">работали над второй версией</a>, тут они уперлись в проблему, которую невозможно решить — ассинхронность.</p><p>Представьте: одни данные загрузились, другие ещё нет. Что покажет интерфейс? Фейковый фронтенд, который обманывает пользователя. React решал это с помощью отложенного обновления. Тогда Solid решили встроить ассинхронность прямо в реактивность. Появилось управление загрузкой, ожиданием и обновлениями — реактивность как она есть. Становится понятно, что и та, и та команда приходят к одному выводу с разных сторон, но Solid делает ее частью системы, засовывает ассинхронность прямо в реактивность и внезапно оказывается, что React не был таким уж и плохим дизайном, просто команда React-а пришла к этой проблеме гораздо раньше, чем остальные.</p><p>И главный вопрос: что важнее — устоявшийся подход React или более чистая, но сложная реактивность Solid? Или дело вовсе не в фреймворке, а в том, как ты управляешь асинхронностью?</p><p><a href="https://dev.to/playfulprogramming/two-react-design-choices-developers-dont-like-but-cant-avoid-d6g" rel="noopener noreferrer nofollow">https://dev.to/playfulprogramming/two-react-design-choices-developers-dont-like-but-cant-avoid-d6g</a></p><p>Подписывайтесь:  <a href="https://www.youtube.com/@atamrazov" rel="noopener noreferrer nofollow">YouTube</a> | <a href="https://vkvideo.ru/@club229100280" rel="noopener noreferrer nofollow">VK</a> | <a href="https://x.com/TamrazovAlex" rel="noopener noreferrer nofollow">Twitter</a></p> <a href="https://habr.com/ru/posts/1014342/?utm_campaign=1014342&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 24 Mar 2026 12:18:38 GMT</pubDate>
    <dc:creator><![CDATA[box-570]]></dc:creator>
      
      <category><![CDATA[react.js]]></category><category><![CDATA[Solid.js]]></category><category><![CDATA[solid]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Звук (+4) — 24.03.2026 08:31]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1014072/</guid>
    <link>https://habr.com/ru/posts/1014072/?utm_campaign=1014072&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Представлен открытый мультиплатформенный проект <a href="https://snowify.cc/" rel="noopener noreferrer nofollow">Snowify</a>. Это аналог Spotify в виде музыкального плеера с <a href="https://github.com/nyakuoff/Snowify?tab=readme-ov-file" rel="noopener noreferrer nofollow">кодом на JavaScript</a> без рекламы и без регистрации. Музыка стримится с YouTube Music. Все функции Spotify на месте: списки треков, текст песен, плейлисты с рекомендациями и даже синхронизация с облаком. При этом в интерфейсе нет ничего лишнего, что отвлекало бы от музыки. Проект поддерживает кастомные плагины.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/de7/06b/5c4/de706b5c4d183edcd0affc8bcaa43af9.png" width="793" height="860"></figure> <a href="https://habr.com/ru/posts/1014072/?utm_campaign=1014072&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 24 Mar 2026 05:31:16 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[Snowify]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @seriych — Habr (+3) — 23.03.2026 19:09]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1013904/</guid>
    <link>https://habr.com/ru/posts/1013904/?utm_campaign=1013904&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Расширение AI-Less Habr&nbsp;— Чистим Хабр от ИИ</strong></p><p>Надоела лента, забитая ИИ? У меня есть готовое решение для вас. Shut up and take my money:</p><ul><li><p><a href="https://chromewebstore.google.com/detail/ai-less-habr/ommpbndiakfdikdhigffognkjmdpiifb" rel="noopener noreferrer nofollow">Chrome Web Store</a></p></li><li><p><a href="https://github.com/seriych/AI-Less-Habr" rel="noopener noreferrer nofollow">GitHub</a></p></li></ul><figure class=""><img src="https://habrastorage.org/getpro/habr/upload_files/eb2/7a9/562/eb27a9562cf35ca496cefbc74afe2cd0.png" alt="Интерфейс расширения" title="Интерфейс расширения" width="373" height="400"><div><figcaption>Интерфейс расширения</figcaption></div></figure><div class="floating-image"><p>Расширение для&nbsp;Chrome (и совместимых браузеров) позволяет скрывать статьи про «Искусственный интеллект». Скрывается не&nbsp;контент, написанный ИИ (LLM), а&nbsp;контент про&nbsp;ИИ (что сейчас обычно под&nbsp;этим подразумевается). Бесконечные статьи об&nbsp;очередной революции, вызванной тем, что&nbsp;такая‑то LLM модель опередила конкурентов на 0.1&nbsp;балл в&nbsp;одном из 186&nbsp;имеющихся бенчмарков, и вот этот вот всё.</p><p>Чтобы видеть счетчик скрытых статей, закрепите иконку расширения на&nbsp;панели инструментов через меню расширений (иконка паззла).</p></div><p>Есть следующие возможности:</p><ul><li><p>скрывать хаб «Искусственный интеллект»</p></li><li><p>скрывать по&nbsp;словам в&nbsp;заголовке (настраиваемый список)</p></li><li><p>скрывать по&nbsp;тегам (настраиваемый список)</p></li><li><p>инвертированный режим (показать, попадающее под&nbsp;фильтры, и скрыть остальное)</p></li></ul><p>По&nbsp;умолчанию включено только скрытие хаба «Искусственный интеллект». Фильтры по&nbsp;словам/тегам с&nbsp;большей вероятностью допускают ложноположительные срабатывания, поэтому выключены по&nbsp;умолчанию. По&nbsp;этой&nbsp;же причине в&nbsp;фильтрах по&nbsp;словам по&nbsp;умолчанию нет слов «ии»/«ai», так как&nbsp;есть достаточно много статей, содержащих что‑то вроде «без ИИ». Внимательно относитесь к&nbsp;добавлению слов в&nbsp;фильтры, чтобы минимизировать ложноположительные срабатывания.</p> <a href="https://habr.com/ru/posts/1013904/?utm_campaign=1013904&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 23 Mar 2026 16:09:34 GMT</pubDate>
    <dc:creator><![CDATA[seriych]]></dc:creator>
      
      <category><![CDATA[хабр]]></category><category><![CDATA[habr.com]]></category><category><![CDATA[расширения chrome]]></category><category><![CDATA[расширение]]></category><category><![CDATA[habr]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @cmyser — $mol (+2) — 18.03.2026 19:53]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1011926/</guid>
    <link>https://habr.com/ru/posts/1011926/?utm_campaign=1011926&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Сделал <a href="https://b-on-g.github.io/blitz/" rel="noopener noreferrer nofollow">интерактивный квиз</a>!</p><p>→ <a href="https://b-on-g.github.io/blitz/blog/#!screen=about" rel="noopener noreferrer nofollow">Ознакомительная статья</a></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/b93/8df/798/b938df7987e4e3a5c1fbbc3f7e415924.png" alt="экран лобби, стримит хост" title="экран лобби, стримит хост" width="3092" height="2206"><div><figcaption>экран лобби, стримит хост</figcaption></div></figure><p><br>Смотрите пробуйте играйте, формируйте своё мнение, и всегда помните&nbsp;— хост&nbsp;— это не&nbsp;игрок, он не&nbsp;может выбирать ответы, но&nbsp;вы можете запустить игру с&nbsp;пк, и зайти с&nbsp;телефона. Или&nbsp;с&nbsp;одного пк на&nbsp;разных браузерах.</p><p>Делал долго, мой магнум опус.</p> <a href="https://habr.com/ru/posts/1011926/?utm_campaign=1011926&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 18 Mar 2026 16:53:49 GMT</pubDate>
    <dc:creator><![CDATA[cmyser]]></dc:creator>
      
      <category><![CDATA[$mol]]></category><category><![CDATA[квиз]]></category><category><![CDATA[квизы]]></category><category><![CDATA[квиз бесплатно]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @DmitryOlkhovoi — Веб-разработка (+1) — 16.03.2026 20:16]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1011002/</guid>
    <link>https://habr.com/ru/posts/1011002/?utm_campaign=1011002&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/5d0/361/06f/5d036106fa32eb9a548e22391f736305.png" width="1516" height="1490"></figure><p>Собрал форк Backbone.js без jQuery, Underscore.<br>Typescript, ES module, поддержка классов<br><a href="https://ostovjs.org/" rel="noopener noreferrer nofollow">https://ostovjs.org/</a><br><a href="https://github.com/DmitryOlkhovoi/Ostov" rel="noopener noreferrer nofollow">https://github.com/DmitryOlkhovoi/Ostov</a></p> <a href="https://habr.com/ru/posts/1011002/?utm_campaign=1011002&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 16 Mar 2026 17:16:33 GMT</pubDate>
    <dc:creator><![CDATA[DmitryOlkhovoi]]></dc:creator>
      
      <category><![CDATA[backbone]]></category><category><![CDATA[jquery]]></category><category><![CDATA[underscore]]></category><category><![CDATA[javascript]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Viktor9354 — JavaScript — 07.03.2026 16:07]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1007702/</guid>
    <link>https://habr.com/ru/posts/1007702/?utm_campaign=1007702&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/9cb/f5c/fe7/9cbf5cfe7d7e4d342e4346fcc99e72af.png" width="1280" height="853"></figure><p><strong><u>Гибкое управление фокусом элемента</u></strong></p><p><a href="https://developer.chrome.com/release-notes/145" rel="noopener noreferrer nofollow">Chrome в 145 версии</a> добавил параметр <code>focusVisible</code> в метод <code>focus</code>:</p><p><code>input.focus({ focusVisible: true });</code></p><p>Как вы уже, наверное, догадываетесь, это позволяет самостоятельно управлять тем, будет ли элемент при ручном вызове фокуса, помимо CSS-псевдокласса <code>:focus</code>, соответствовать ещё и <code>:focus-visible</code>.</p><p>Ранее без данного параметра браузер самостоятельно решал этот вопрос.</p><p>⚙️ Поддержка браузерами <a href="https://caniuse.com/mdn-api_htmlelement_focus_options_focusvisible_parameter" rel="noopener noreferrer nofollow">широкая</a><br>🔗 <a href="https://t.me/fe_notes" rel="noopener noreferrer nofollow">Мой телеграм канал</a></p> <a href="https://habr.com/ru/posts/1007702/?utm_campaign=1007702&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 07 Mar 2026 13:07:26 GMT</pubDate>
    <dc:creator><![CDATA[Viktor9354]]></dc:creator>
      
      <category><![CDATA[javascript]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Stugi — VueJS (+2) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1005242/</guid>
    <link>https://habr.com/ru/posts/1005242/?utm_campaign=1005242&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Как я оптимизировала фронт на 40% и никто не заметил</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/d65/e14/154/d65e141549403b38761f1304557e5aab.png" width="1124" height="1148"></figure><p><strong>Предыстория</strong></p><p>Когда я помогала с поиском сотрудника и просматривала резюме на фронтенд разработчика, очень часто встречала фразу - <strong>"Оптимизировал(а) размер бандла на 30% / 40% / 50%, что увеличило ..."</strong> как под копирку от ИИ, а у меня из достижений в резюме - "делаю задачи и фикшу баги"&nbsp;</p><p>Ну что ж, возьмем свое приложение и оптимизируем его</p><p><strong>О приложении</strong></p><p>Это небольшое SPA на Vue 3 для администрирования справочников. Ничего особенного, но это приложение экономит время программистам, которые не лезут в БД, и, как мне кажется, полезно для аналитиков и QA - это позволяет лучше понять, как устроена база, и почему иногда что-то не работает как ожидается.</p><p><strong>Начнем оптимизацию</strong></p><p>Запускаем <code>npx vite-bundle-visualizer</code> и получаем вот такую красивую розовую визуализацию (прикрепила бы скрин, на то что получилось, но в пост можно одну картинку добавить)</p><p>Смотрим роутинг у приложения... Все роуты импортируются сразу. Применяем легкий фикс:</p><ul><li><p>Оставляем синхронный импорт только для страниц, которые первыми открываются у пользователей </p></li><li><p>Остальные подгружаем отдельно с помощью lazy import</p></li></ul><pre><code>// Было:
import PaymentTypes from '@/views/Directories/PaymentType/PaymentTypes.vue';
import OrderTypes from '@/views/Directories/OrderType/OrderTypes.vue';
import Configurations from '@/views/Directories/Configuration/Configurations.vue';
import NewConfiguration from '@/views/Directories/Configuration/NewConfiguration.vue';
import ConfigurationPage from '@/views/Directories/Configuration/ConfigurationPage.vue';
import Source from '@/views/Directories/Source/Source.vue';
import City from '@/views/Directories/City/City.vue';
import Brand from '@/views/Directories/Brand/Brand.vue';
import CloseReason from '@/views/Directories/CloseReason/CloseReason.vue';
import ChangeReason from '@/views/Directories/ChangeReason/ChangeReason.vue';
import Restaurants from '@/views/Directories/Restaurants/Restaurants.vue';
import RestaurantPage from '@/views/Directories/Restaurants/RestaurantPage.vue';
import NewRestaurant from '@/views/Directories/Restaurants/NewRestaurant.vue';
import Discounts from '@/views/Directories/Discounts/Discounts.vue';
import PriceTypes from '@/views/Directories/PriceType/PriceTypes.vue';
</code></pre><pre><code>// Стало:
  children: [
            {
                path: 'brand',
                name: 'Бренды',
                component: () =&gt;
                    import('@/views/Directories/Brand/Brand.vue'), // &lt;--тут
                meta: {
                    breadcrumbs: ['Справочники', 'Бренды'],
                    requiresAuth: true,
                    permissions: ['admin.admin'],
                    title: 'Бренды',
                    section: 'directories',
                },
            },
...
]</code></pre><p>Запускаем снова и уже получаем уже разбитый бандл. <strong>Code Splitting работает, в</strong>ывод сборки теперь показывает множество маленьких JS-файлов для каждой страницы.</p><p><strong>Итоги оптимизации:</strong></p><p>Уменьшили основной бандл с 245 kB до 148 kB (gzip) — это минус 39%</p><p><strong>Что получили:</strong></p><ul><li><p><strong>✅ </strong>Оптимизировала размер бандла на <strong>40%</strong></p></li><li><p><strong>✅</strong> Улучшила First Contentful Paint</p></li><li><p><strong>✅</strong> Внедрила code splitting</p></li><li><p><strong>✅</strong> Повысила производительность</p></li><li><p><strong>✅ </strong>Уменьшила основной JavaScript-файл почти на <strong>40%</strong> (в gzip)</p></li><li><p><strong>✅</strong> Уменьшила сырой размер на <strong>46%</strong></p></li><li><p><strong>✅</strong> Теперь загружается только то, что нужно для текущей страницы</p></li></ul><p><strong> Реальность:</strong></p><ul><li><p><strong>❌ Съэкономил ли бизнес деньги?</strong> - Нет</p></li><li><p><strong>❌</strong> <strong>Выросла ли конверсия?</strong> - Как? 🌝 это внутренний админ-интерфейс</p></li><li><p><strong>❌</strong> <strong>Применили ли чудо-технологию?</strong> - Нет, добавили lazy import из коробки фреймворка и рекомендацией из документации</p></li><li><p><strong>❌</strong> <strong>Кто-то это заметил?</strong> - Только я в отчете, "на глаз" даже мне не заметно</p></li><li><p><strong>❌ Заметил ли пользователь?</strong> - Нет, потому что основное время все равно уходит на получение данных с backend</p></li></ul><p><strong>Мысли по этому поводу</strong></p><p>И так, мы теперь можем добавить заветную строчку в резюме! </p><p><strong>А вы встречаете эту строчку в резюме?</strong></p><ul><li><p>Какие чувства она у вас вызывает?</p></li><li><p>Красный флаг ли она для вас?</p></li><li><p>Или наоборот - показатель того, что человек думает о производительности?</p></li></ul><p><a href="https://t.me/shimanchuk_arina" rel="noopener noreferrer nofollow">Мой канал</a> о поиске работы (ничего не продаю и не рекламирую, только себя)</p> <a href="https://habr.com/ru/posts/1005242/?utm_campaign=1005242&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 01 Mar 2026 17:54:50 GMT</pubDate>
    <dc:creator><![CDATA[Stugi]]></dc:creator>
      
      <category><![CDATA[Vue 3]]></category><category><![CDATA[оптимизация]]></category><category><![CDATA[code splitting]]></category><category><![CDATA[резюме]]></category><category><![CDATA[фронтенд]]></category><category><![CDATA[поиск работы в it]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @gtosss — Тестирование IT-систем (+4) — 28.02.2026 06:43]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1004780/</guid>
    <link>https://habr.com/ru/posts/1004780/?utm_campaign=1004780&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Недавно общался с крупной зарубежной продуктовой компанией. Штат 500–1000 человек, вроде зрелые процессы, ЗП у разрабов  5000<strong>€</strong> баг-репорты по ISO/IEC/IEEE 29119. И при этом:</p><blockquote><p><em>«Не успеваем уделять время автотестам. Сфокусированы на скорости разработки и релизах.»</em></p></blockquote><p>Что меня зацепило — каждый их аргумент против тестов я интерпретировал как аргумент за:</p><p> — «Слишком частые релизы» → А не потому ли они такие частые, что баги проскакивают на прод? </p><p>— «Требования постоянно меняются» → Тем более — как вы контролируете, что старое не ломается? </p><p>— «И так работают наизнос если еще и тесты заставить писать — выгорят» → А не от бесконечного ли футбола с багами они выгорают?</p><p>А как у вас? Есть автотесты на проекте? Или тоже «не до них»? <br><br>Я написал целую статью на эту тему, если все выше вам откликается рекомендую к прочтению: <a href="https://habr.com/ru/articles/1004396/" rel="noopener noreferrer nofollow">Нет времени на тесты — через неделю релиз</a></p> <a href="https://habr.com/ru/posts/1004780/?utm_campaign=1004780&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 28 Feb 2026 03:43:08 GMT</pubDate>
    <dc:creator><![CDATA[gtosss]]></dc:creator>
      
      <category><![CDATA[cypress]]></category><category><![CDATA[jest]]></category><category><![CDATA[тестирование]]></category><category><![CDATA[тестирование по]]></category><category><![CDATA[тестирование веб-приложений]]></category><category><![CDATA[nest]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Stugi — VueJS (+3) — 19.02.2026 12:37]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1001350/</guid>
    <link>https://habr.com/ru/posts/1001350/?utm_campaign=1001350&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Выбор вакансии: как я кинулась во всё — и это не дало результата.</strong></p><p>Есть разработчики, у которых развитие идёт линейно и предсказуемо: верстальшик → джун фронтендер → мидл → мидл в сильной компании → сеньор/лид/уход в бэкенд </p><p><strong>Красиво. Понятно. Логично.</strong></p><p>Но у меня кривая черта развития сначала бэк на Java в закрытом предприятии. Потом фулстек в фудтехе: в основном Vue,  но ещё и Go (и все сопутствующее), и CUBA Platform (lowcode на java, он же «Тезис»), и n8n. </p><p><strong>Широко. Разнообразно. Интересно.</strong> </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/eac/1d9/b1f/eac1d9b1f917965e2f799b1ffa625887.png" width="1536" height="1024"></figure><p><strong>Как я начала откликаться - на всё, что блестит</strong> </p><p>И сейчас Когда я вышла на рынок, то сначала я откликалась на все что близко: </p><ol><li><p> <strong>Frontend - Vue / React / Angular</strong>  <br>Ну фронт же. Есть мнение, что «не нужно учить конкретный фреймворк — важны принципы». </p></li><li><p><strong>Go</strong>  <br>а почему бы нет? Знаю , умею , курсы закончены, писала на нем  </p></li><li><p><strong>Fullstack (Go или JDK + фронт)</strong> </p></li><li><p><strong>N8N, автоматизаторы особенно с ИИ </strong> <br>Интересно. Растущее направление. </p></li><li><p><strong>Lowcode платформы CUBA, тезис, WebTutor - замаскированный под фронтенд</strong> Опыт есть. Почему не использовать?  </p></li></ol><p><strong>И это фатал еrror</strong></p><ol><li><p><strong>Ошибка №1. Переключение контекста </strong><br>Очень сложно переключать контекст и даже синтаксис языка - на первом собесе по TS я не смогла вспомнить синтаксис (на ум приходил только java, так как он изучался более долго и в закрытой среде, ирония: хоть я на нем и не пишу, но разбуди среди ночи - код напишу) </p></li><li><p><strong>Ошибка №2. Рынок </strong><br>Рассматривать вакансии на Angular, React без опыта в продакшене - на данный момент наивно. <br><br>Рынок перегрет: <br>- Vue ~ 1000 откликов за неделю,  <br>- React - 4000 ,  <br><br>Неужели Арина (или тот кто читает эту статью) ты думаешь, что кто-то будет рассматривать ваше резюме со Vue? Каким бы в целом хорошим инженером вы не были. Рынок не покупает «в целом». </p></li><li><p><strong>Ошибка №3. Fullstack со связкой Go + Vue или JDK + Vue</strong> <br>Фуллстеки со связкой go или jdk - это бред вакансии, это карьерный тупик. <br>- PHP + Vue  - норм<br>- Node + Vue - норм, <br>но Go + Vue - это нонсенс, это только подработка для поддержания штанов. Чаще это небольшие команды, поддержка, нестабильные проекты. </p></li><li><p><strong>Ошибка №4. n8n — нравится, но это уже не совсем разработка</strong> <br>Автоматизация, интеграции, AI — это интересно.  Но это больше аналитика и orchestration, чем классическая инженерия. Если хочешь быть разработчиком — нужно понимать, куда ты смещаешь фокус.  </p></li><li><p><strong>Ошибка №5. Low-code —  карьерный тупик</strong> <br>Проблем с окружением больше. Кода меньше. Рынок уже. Ты становишься зависимой от конкретной платформы. И выйти обратно в «чистую разработку» становится сложнее.   </p></li></ol><p><strong>Мой&nbsp;Hotfix: Фокус</strong></p><p>Я поняла, что на падающем рынке выживают либо "универсалы" c ИИ подбоком, либо эксперты </p><p><strong>Моя новая стратегия:</strong></p><ul><li><p><strong>Vue 3 + TypeScript + Nuxt </strong>(как зона роста)  </p></li><li><p><strong>n8n</strong> — как подработку и интересный дополнительный навык.</p></li></ul><p>Иногда рост — это не добавить ещё стек.  А убрать лишнее.</p> <a href="https://habr.com/ru/posts/1001350/?utm_campaign=1001350&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 19 Feb 2026 09:37:59 GMT</pubDate>
    <dc:creator><![CDATA[Stugi]]></dc:creator>
      
      <category><![CDATA[vue]]></category><category><![CDATA[поиск работы в it]]></category><category><![CDATA[fullstack]]></category><category><![CDATA[soft skills]]></category><category><![CDATA[фокус]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @VamWebStore — Git (+4) — 11.02.2026 14:55]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/995354/</guid>
    <link>https://habr.com/ru/posts/995354/?utm_campaign=995354&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/31b/e40/eef/31be40eef6492e93894c2e00c8192c11.png" width="2496" height="1154"></figure><p><strong>OAuth на практике: что оказалось удобным, а что отпугнуло пользователей</strong></p><blockquote><p>Мы запустили молодую платформу с двумя типами аккаунтов: обычные пользователи и разработчики (публикуют PWA и управляют приложениями).</p><p>Бренда и доверия пока нет, поэтому вопрос авторизации быстро стал не техническим, а психологическим.</p></blockquote><p>С чего начали</p><p>Для обычных пользователей:<br> •	Email / пароль<br> •	Google<br> •	GitHub</p><p>Для разработчиков — жёстче:<br> •	Обязательная привязка Google<br> •	Обязательная привязка GitHub</p><p>Логика казалась разумной:<br> «Разработчик = есть GitHub»<br> «Двойная верификация = меньше спама»</p><p>На практике это не сработало.</p><p>Первые тревожные сигналы</p><p>Регистрация разработчиков шла крайне медленно, несмотря на интерес к публикации приложений.</p><p>Сначала списывали на:<br> •	новый продукт<br> •	низкое доверие<br> •	отсутствие аудитории</p><p>Но после общения с разработчиками (в том числе через Habr) картина прояснилась.</p><p>Что отпугивало разработчиков</p><ol><li><p>Новый сервис → нежелание делиться данными</p></li></ol><p>Даже если это «просто email», психологический барьер остаётся.</p><p>Когда с первого шага нужно:<br> •	линковать внешние аккаунты<br> •	проходить несколько этапов подтверждения<br> •	подключать сторонние сервисы</p><p>это воспринимается как лишний фрикцион.</p><p>Особенно для соло-разработчиков и небольших команд.</p><ol start="2"><li><p>Git ≠ GitHub</p></li></ol><p>Ключевой инсайт.</p><p>Мы обнаружили, что:<br> •	не все хотят логиниться через GitHub<br> •	часть использует GitLab или Bitbucket<br> •	некоторые принципиально не хотят связывать GitHub с новым сервисом</p><p>Обязательная привязка GitHub стала серьёзным барьером.</p><p>А мнение стандартных пользователей разделилось:</p><p>Часть говорила:</p><p>«Чем больше OAuth-кнопок, тем солиднее выглядит платформа».</p><p>Логика простая:<br> •	если есть Google / Facebook / Discord — значит не ноунейм<br> •	интеграции с крупными сервисами повышают доверие</p><p>Это не про безопасность — это про ощущение легитимности.</p><p>Другие говорили ровно противоположное:</p><p>«Слишком много кнопок — ощущение перегруженности».</p><p>И это тоже справедливый аргумент.</p><p>Что мы изменили</p><ol><li><p>Упростили форму для пользователей</p></li></ol><p>Оставили:<br> •	Google<br> •	Facebook<br> •	Discord</p><p>Достаточно выбора для доверия, без визуального шума.</p><ol start="2"><li><p>Git-провайдеры вынесли в отдельную группу</p></li></ol><p>Под отдельной кнопкой:<br> •	GitHub<br> •	GitLab<br> •	Bitbucket</p><p>Для разработчиков это стало понятнее и логичнее.</p><ol start="3"><li><p>Убрали обязательный GitHub</p></li></ol><p>Теперь для developer-аккаунта нужно подключить любой Git-аккаунт, если ни один не подключён.</p><p>Без принудительного GitHub.</p><p>Первые цифры (осторожно)</p><p>Прошла всего неделя, выборка маленькая, платформа всё ещё молодая.</p><p>Тем не менее:<br> •	Зарегистрированные пользователи: +13%<br> (было 0–6% в неделю)<br> •	Зарегистрированные разработчики: +16%<br> (было 0–3%)</p><p>Похоже, это те разработчики, которые знали о платформе, но их останавливало требование GitHub.</p><p>Выводы (пока не финальные)<br> •	OAuth — это не только безопасность, но и психология доверия<br> •	Жёсткие требования на старте почти всегда бьют по росту<br> •	Git ≠ GitHub — и это важно<br> •	Много провайдеров могут как повышать доверие, так и перегружать UI</p><p>Для молодой платформы даже такие ранние сигналы уже показательны.</p><p>Интересно услышать опыт коллег:<br> добавляли ли вы OAuth-провайдеров после запуска?<br> были ли случаи, когда обязательная авторизация через конкретный сервис тормозила рост?</p> <a href="https://habr.com/ru/posts/995354/?utm_campaign=995354&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 11 Feb 2026 11:55:09 GMT</pubDate>
    <dc:creator><![CDATA[VamWebStore]]></dc:creator>
      
      <category><![CDATA[OAuth]]></category><category><![CDATA[аутентификация]]></category><category><![CDATA[авторизация]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[GitLab]]></category><category><![CDATA[Bitbucket]]></category><category><![CDATA[доверие пользователей]]></category><category><![CDATA[рост продукта]]></category><category><![CDATA[pwa]]></category><category><![CDATA[store]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @atomlib — JavaScript (+4) — 10.02.2026 09:25]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/994724/</guid>
    <link>https://habr.com/ru/posts/994724/?utm_campaign=994724&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Греческие мифы рассказывают про титана Прометея, который украл у богов огонь и поделился им с людьми. Персонажа за это приковали к скале не просто в наказание, но и в назидание остальным: знание не даётся бесплатно, за него нужно платить.</p><p>Если судить по названию, автор проекта <a href="https://codeberg.org/smnx/promethee" rel="noopener noreferrer nofollow">Promethee</a> кары богов нисколько не боится. Некто SMNX взял самый сакральный слой современного компьютера&nbsp;— прошивку UEFI&nbsp;— и добавил туда JavaScript. Как гласит <code>readme.md</code>, на старте загрузки Promethee подхватывает <code>script.js</code> с загрузочного тома и исполняет его, то есть этот скрипт и будет загрузчиком.</p><p>Понятно, что на боевую машину это ставить смысла нет, это просто эксперимент. Лабораторный характер подчёркивается сборкой и запуском в QEMU. Проект реализован автономно (freestanding), с минимальными заглушками libc. В качестве движка используется <a href="https://duktape.org/" rel="noopener noreferrer nofollow">Duktape</a>&nbsp;— встраиваемый JS-движок, рассчитанный на портируемость и компактность.</p><p>Для SMNX это уже не первый подобный забавный самопис. На <a href="https://smnx.sh/" rel="noopener noreferrer nofollow">своём сайте</a> автор представляется как Клем и прямо говорит, что любит строить «операционные системы, компиляторы, инструменты и веб-движки». Там же перечислены другие поделки: модульная хобби-операционка <a href="https://github.com/skift-org/skift" rel="noopener noreferrer nofollow">SkiftOS</a>, HTML/CSS-движок <a href="https://github.com/skift-org/vaev" rel="noopener noreferrer nofollow">Vaev</a>, экспериментальные инструменты для генерации документов, а также операционная система с эстетикой брутализма и идеалами UNIX семидесятых <a href="https://github.com/brutal-org/brutal" rel="noopener noreferrer nofollow">BRUTAL</a>.</p><p>JavaScript исторически задумывался как язык, который оживляет веб-страницы и делает их интерактивными. Сегодня же он расползся по всем слоям стека, <a href="https://www.espruino.com/" rel="noopener noreferrer nofollow">от микроконтроллеров</a> до <a href="https://jerryscript.net/" rel="noopener noreferrer nofollow">ультра-лёгких движков для Интернета вещей</a>. В том числе бывают попытки писать на JavaScript то, что не следует, хоть операционные системы. Самый цитируемый пример&nbsp;— это <a href="https://github.com/NodeOS/NodeOS" rel="noopener noreferrer nofollow">NodeOS</a>, дистрибутив Linux, где вместо привычного пользовательского мира предлагается использовать Node.js и npm как основной пакетный менеджер, и многие утилиты предполагается брать из npm-экосистемы. Другой полюс&nbsp;— <a href="http://runtimejs.org/" rel="noopener noreferrer nofollow">runtime.js</a>, библиотечная операционка, где JavaScript-рантайм на базе V8 и минимальная операционка собираются в лёгкий неизменяемый образ виртуальной машины для запуска на KVM, то есть ОС здесь становится упаковкой для единственного приложения на JS.</p><p>Promethee&nbsp;— не первый проект, где соседствуют JavaScript и UEFI. Беглый поиск обнаруживает <a href="https://github.com/TuvianNavy/Duktape-UEFI" rel="noopener noreferrer nofollow">порт Duktape под UEFI-приложения</a>.</p> <a href="https://habr.com/ru/posts/994724/?utm_campaign=994724&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 10 Feb 2026 06:25:45 GMT</pubDate>
    <dc:creator><![CDATA[atomlib]]></dc:creator>
      
      <category><![CDATA[UEFI]]></category><category><![CDATA[извращения]]></category><category><![CDATA[программирование]]></category><category><![CDATA[личные проекты]]></category><category><![CDATA[open source]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Duktape]]></category><category><![CDATA[SkiftOS]]></category><category><![CDATA[операционные системы]]></category><category><![CDATA[ненормальное программирование]]></category>
  </item>
  

	
  

  

  

      

      

      

    
  </channel>
</rss>
