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

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

  <channel>
    <title><![CDATA[Все посты подряд / Node.JS / Хабр]]></title>
    <link>https://habr.com/ru/hubs/nodejs/posts/</link>
    <description><![CDATA[Node.JS – среда для запуска JavaScript-приложений]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Fri, 24 Apr 2026 06:28:41 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[Пост @Ramisya4ka — DevOps (+4) — 01.04.2026 07:03]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1017768/</guid>
    <link>https://habr.com/ru/posts/1017768/?utm_campaign=1017768&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Я не разработчик, но сделал Telegram-бота для Hysteria 2</p><p>Я не программист, языков не знаю, я небольшой руководитель отдела в айти, неплохо знаю серверную архитектуру. Но у меня была простая боль: недавно завел для себя и родни сервер Hysteria 2, до этого было с VLESS на сервере и устал каждый раз руками править YAML, когда нужно:</p><p>добавить или удалить пользователя, выдать доступ, проверить статус, перезапустить сервис и при этом ничего не сломать</p><p>Перерыл интернет и какое было мое удивление, когда я не нашел ничего, абсолютно, то есть единственное решение - либо лазить каждый раз на сервер либо сделать самому.</p><p>Сразу честно: делал с помощью LLM. Статью эту тоже, кстати. Панаму я приготовил. Цель статьи не выпендреж, а просто рассказать о боте, что бы его уже нормальные разработчики посмотрели переделали, может на основе его сделали адекватный продукт</p><p>Почему не SSH?</p><p>Да, можно через SSH, nano и systemctl. Но когда делаешь это регулярно — растёт шанс ошибки.</p><p>Хотелось проще: открыть Telegram, нажать пару кнопок и выдать доступ без ручного редактирования config.yaml.</p><p>Веб-панель тоже рассматривал, но бот оказался быстрее и удобнее “на ходу”.</p><p>Что умел MVP</p><p>Минимум, который был нужен:</p><p>/status — жив ли сервис /users — список пользователей add / delete / enable / disable генерация hy2:// ссылки /logs — последние логи /restart — перезапуск с подтверждением</p><p>Звучит просто. Пока не думаешь о безопасности.</p><p>Главная проблема: бот ≠ root</p><p>Первая (и плохая) идея — дать боту полный доступ: пусть сам правит YAML, дергает systemctl и читает логи.</p><p>Это почти готовый root-доступ извне.</p><p>Я сделал иначе:</p><p>Бот — это интерфейс, не исполнитель.</p><p>Бот хранит данные (SQLite) Все опасные действия делает отдельный helper на сервере Helper: генерирует YAML делает backup валидирует только потом применяет и перезапускает</p><p>В sudoers разрешены только конкретные команды helper-а, а не shell.</p><p>Безопасность (без этого смысла нет)</p><p>Сделал максимально жёстко:</p><p>deny by default доступ только по Telegram user ID (не username) админ-команды только в личке в группах — никаких опасных действий delete/apply/restart — через подтверждение audit log: кто, когда и что сделал</p><p>Бот должен быть параноидальным, а не “удобным для всех”.</p><p>Грабли, на которые я наступил</p><ol><li><p>Права на конфиг permission denied на /etc/hysteria/config.yaml — лечится не перезапуском, а нормальными правами.</p></li><li><p>Cert/key Один неправильный путь — сервис не стартует. Плюс легко сломать доступ к privkey.pem.</p></li><li><p>URI и userpass</p></li></ol><p>hy2:// и hysteria2:// формат username:password спецсимволы нужно кодировать</p><p>Очень легко получить “почти рабочую” ссылку.</p><ol start="4"><li><p>Клиенты На iOS импорт URI иногда работает хуже, чем ручной ввод.</p></li><li><p>OpenWrt + sing-box Сначала “не работает”, потом “работает, но не так”, и только после настройки DNS и роутинга — всё нормально.</p></li></ol><p>Что получилось</p><p>Сейчас это нормальный админ-пульт:</p><p>управляю доступами из Telegram не трогаю YAML руками опасные действия подтверждаются и главное — нет полного root-доступа у бота</p><p>Удобство появилось без видимых дыры в безопасности.</p><p>Про LLM</p><p>Да, я использовал нейронку. Но это не “магическая кнопка”.</p><p>Без продуманной архитектуры (права, границы, apply, валидация, rollback) получилась бы просто опасная игрушка.</p><p>Что бы сделал иначе сразу делал бы helper-архитектуру добавил бы audit log с самого начала разделил бы read и write операции по правам сделал бы preflight-проверки перед apply</p><p>Что дальше</p><p>Планирую:</p><p>улучшить UX, возможно добавить лёгкую веб-панель, оставить Telegram, как быстрый пульт</p><p>Уверен, что в коде кучу дыр в безопасности, еще раз говорю, я код не знаю, мои были  идеи, промты и направление, как сделать лучше на самом сервере.</p><p>P.S. Это моя первая статья, готов ко всем минусам, хейту и так далее. Единственная цель этого поста - рассказать о боте и дать его в народ</p><p>ссылка не репу <a href="https://github.com/Ramisya4ka/hysteria-bot-manager" rel="noopener noreferrer nofollow">https://github.com/Ramisya4ka/hysteria-bot-manager</a> (внутри есть очень подробное Readme)</p> <a href="https://habr.com/ru/posts/1017768/?utm_campaign=1017768&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 01 Apr 2026 04:03:42 GMT</pubDate>
    <dc:creator><![CDATA[Ramisya4ka]]></dc:creator>
      
      <category><![CDATA[hysteria2]]></category><category><![CDATA[telegram bot]]></category><category><![CDATA[self-hosted]]></category><category><![CDATA[vpn]]></category><category><![CDATA[linux]]></category><category><![CDATA[openwrt]]></category><category><![CDATA[sing-box]]></category><category><![CDATA[devops]]></category><category><![CDATA[информационная безопасность]]></category><category><![CDATA[typescript]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @ArcaneGamingcom — Node.JS (+3) — 11.03.2026 13:44]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1009022/</guid>
    <link>https://habr.com/ru/posts/1009022/?utm_campaign=1009022&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>🚀 Snuffer: Как я превратил Android-смартфоны в распределенную сеть мониторинга (и спас свои нервы)</strong></p><p>Меня зовут Виталий, я из команды ArcaneGaming. <br>Сегодня я хочу рассказать вам о своем пет-проекте, который немного вышел из-под контроля и превратился в полноценный продукт. <br>Встречайте - <strong><a href="https://snuffer.net/" rel="noopener noreferrer nofollow">Snuffer</a></strong> !</p><p><strong>😫 С чего всё началось?</strong><br> Знаете это чувство, когда вам пишет клиент (или, что еще хуже, мама):</p><figure class=""><img src="https://habrastorage.org/getpro/habr/upload_files/4cf/5da/c02/4cf5dac0244e3ac4ac03ba78c62e8bc2.jpeg" alt="Image description" title="" width="480" height="354"></figure><p><strong>"А почему сайт не открывается?"</strong><br> И ты такой:<br> <strong>"Да ладно, у меня всё работает!"</strong><br> А потом оказывается, что сервер упал 3 часа назад, база данных ушла в дедлок, а ты в это время спокойно пил кофе и смотрел мемы.</p><p>Я перепробовал кучу сервисов: UptimeRobot, Pingdom, Better Uptime. Они крутые, спору нет.<br>Но:</p><ul><li><p>Дорого , если нужно много проверок.</p></li><li><p>Ограниченные локации . Иногда нужно проверить доступность именно из конкретной сети или региона.</p></li><li><p>Скучно . Где веселье в том, чтобы просто заплатить денег?</p></li></ul><p>И тут я посмотрел на ящик своего стола. Там лежали они... Герои прошлых лет. Samsung Galaxy S7, какой-то старый Xiaomi с треснутым экраном и Pixel первого поколения. Они смотрели на меня своими пыльными камерами и шептали: "Мы еще можем быть полезны..." </p><p><strong>И меня осенило! 💡</strong></p><p><strong>А что, если использовать эти устройства как узлы мониторинга?</strong>&nbsp;<br>Ведь смартфон - это мощный компьютер с Wi-Fi и GSM модулем. Он может пинговать, делать HTTP-запросы, проверять порты. И если раздать такие телефоны друзьям в разных городах (или просто подключить к разным провайдерам), получится настоящая распределенная сеть мониторинга .<br>Так родился <strong>Snuffer</strong></p><p><strong>📱 Что такое Snuffer?</strong><br>Если говорить умными словами, это распределенная система мониторинга доступности сервисов с использованием мобильных агентов .</p><p><strong>"Давай короче, что это такое?":</strong></p><ol><li><p><a href="https://snuffer.net/" rel="noopener noreferrer nofollow">Вы регистрируетесь в админке . </a></p></li><li><p>Скачиваете Android-приложение .</p></li><li><p>Сканируете QR-код.</p></li><li><p>БУМ! Ваш телефон превращается в "Снуффера" (нюхача), который постоянно проверяет, живы ли ваши сайты.</p></li></ol><p><strong>🛠 Что он умеет?</strong></p><ul><li><p>HTTP / Keyword Monitor : Проверяет, отдает ли сайт 200 OK и есть ли на странице нужное слово (например, "Success"). Если нет - бьет тревогу.</p></li><li><p>Ping / Port Monitor : Пингует серверы и проверяет открытые порты (полезно для баз данных или кастомных сервисов).</p></li><li><p>DNS Monitor : Следит, чтобы ваши домены резолвились куда надо (а не на фишинговые заглушки).</p></li><li><p>Vulnerability Scanner : В админке есть встроенный сканер уязвимостей! (Но я пока его еще не сделал, но обязательно доделаю, честно!)</p></li><li><p>Telegram Бот : Уведомления прилетают мгновенно. Потому что почту мы читаем редко, а телегу - каждые 5 минут. </p></li></ul><p><strong>🤓 Немного "под капотом"</strong><br> Я люблю, когда всё работает быстро и четко. Поэтому стек выбрал проверенный и надежный:</p><ul><li><p>Backend : Node.js + Express (старая добрая классика).</p></li><li><p>Database : PostgreSQL + Prisma (потому что писать SQL руками в 2025 — это моветон, хотя я умею!).</p></li><li><p>Frontend : React + Tailwind CSS (чтобы было красиво и адаптивно).</p></li><li><p>Mobile : React Native / Expo (одна кодовая база, минимум боли).</p></li></ul><p>Самое интересное - это <strong>архитектура</strong> .<br>Сервер раздает "задачи" (tasks) подключенным устройствам через WebSocket. Устройства выполняют проверки и шлют отчеты обратно.<br><br>Если устройство говорит "Сайт лежит", сервер не верит ему на слово (вдруг у телефона просто Wi-Fi отвалился?). Он ждет подтверждения от других узлов или от самого сервера. Это минимизирует ложные срабатывания.</p><p><strong>🌍 Почему это круто?</strong></p><ol><li><p>Вторая жизнь вещам . Ваши старые гаджеты не загрязняют природу, а приносят пользу. Экологично! 🌱</p></li><li><p>Полный контроль . Вы сами выбираете, откуда мониторить. Хотите проверить доступность из офиса конкурента? Просто подбросьте им телефон с Snuffer (шутка... или нет?).</p></li><li><p>Бесплатно (<strong>почти</strong>). Вы платите только за электричество для зарядки телефона.</p></li></ol><p>Проект живет и развивается. Сейчас я выкатил версию v4.15.11 (да, мы часто обновляемся!).<br> В планах:</p><ul><li><p>iOS версия (Apple, пустите в AppStore, ну пожалуйста!).</p></li><li><p>Больше типов проверок (например, скриншоты сайтов).</p></li><li><p>Публичное API. <br></p><p>Если вам интересно попробовать или просто потыкать палочкой — залетайте:<br> 👉 <a href="http://snuffer.net" rel="noopener noreferrer nofollow">snuffer.net</a> </p></li></ul><p>Буду рад любому фидбеку, критике или просто комментариям.</p> <a href="https://habr.com/ru/posts/1009022/?utm_campaign=1009022&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 11 Mar 2026 10:44:19 GMT</pubDate>
    <dc:creator><![CDATA[ArcaneGamingcom]]></dc:creator>
      
      <category><![CDATA[вайб-кодинг]]></category><category><![CDATA[пет-проект]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @David_Shapiro — Node.JS — 03.03.2026 20:56]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/1006168/</guid>
    <link>https://habr.com/ru/posts/1006168/?utm_campaign=1006168&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Как я передаю структуру проекта при работе с AI-агентами</p><p>Если вы работаете с AI-агентами для написания или ревью кода, то знаете эту боль: агент не знает ваш проект. Каждый новый чат — с нуля. Агент начинает читать, читать, читать... И часто читает то что вообще не нужно. Чтобы он хоть что-то понял, нужно дать контекст.</p><p>Агент видит список файлов, но не понимает, что в них без прочтения всего файла.<br> Это не всегда требуется - для мелких задач часто нужно работать с несколькими файлами и в целов читать нужно срез проекта а не проверять все</p><p>Я написал небольшую CLI-утилиту для саммаризации файлов в проекте через LLM.</p><p>Запускаешь <code>sumr</code> в корне проекта — и получаешь дерево файлов, где у каждого файла есть однострочное описание от LLM:</p><pre><code>src/
├── cli.ts          Entry point, Commander.js commands and orchestration
├── scanner.ts      Recursive file walker with regex include/exclude filters
├── summarizer.ts   OpenAI-compatible API pool with concurrency control
└── renderer.ts     Terminal tree output with chalk coloring
</code></pre><p>Добавляешь агенту инструкцию начинать задачи с этой команды.</p><p>Внутри утилита рекурсивно обходит директорию, фильтрует файлы по настраиваемым regex-паттернам, потом отправляет каждый файл в LLM с просьбой дать однострочное описание. Запросы идут параллельно, результаты кэшируются в комментарии в файле — при повторном запуске уже обработанные файлы пропускаются.</p><p>Инструмент совместим с любым OpenAI-совместимым API. Можно подключить LM Studio или Ollama -  справляются мелкие вроде новых Qwen 3.5 0.5b, 1.5b, 3b.</p><p>Ещё начал делать режим паттернов без LLM  — извлечение комментариев и сигнатур по regex. Пока не уверен, нужно ли это кому-то.</p><p>Первый запуск:</p><pre><code class="bash">npm i summariser -g
sumr config init
</code></pre><p>Далее в папке проекта:</p><pre><code class="bash">sumr
</code></pre><p>Если добавили новые файлы sumr обработает их а кэш не тронет</p><p>Для очистки кэша:</p><pre><code class="bash">sumr clear
</code></pre><p>Для обновления кэша:</p><pre><code class="bash">sumr rescan
</code></pre><p>Я добавил такую инструкцию в CLAUDE.MD и он буквально сразу начинает с тех файлов которые нужны.</p><pre><code>* Всегда начинай ЛЮБУЮ задачу с команды 'sumr' для получения общей структуры проекта и понимания, где что находится.
</code></pre><p>Хотя вопрос экономии конечно открытый - тут по разному бывает экономит прям нормально не читая весь проект ради вычленения 1-го модуля, а бывает работает на уровне обычного regex-поиска. Но результат лично мной ощущается!</p><p>Для саммари использую новый qwen 3.5 0.8b - мелкая моделька в lm studio</p><p>Если этот подход будет интересен и имеет смысл - могу поразвивать утилиту или принять любого кому интересно развить.  Возможно что то можно доработать чтобы это было удобнее</p><p>Много времени на это не тратил любую обратную связь приму по возможности )</p><p>Репозиторий: <a href="https://github.com/BuddaArt/Summariser" rel="noopener noreferrer nofollow">https://github.com/BuddaArt/Summariser</a></p> <a href="https://habr.com/ru/posts/1006168/?utm_campaign=1006168&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 03 Mar 2026 17:56:24 GMT</pubDate>
    <dc:creator><![CDATA[David_Shapiro]]></dc:creator>
      
      <category><![CDATA[ai]]></category><category><![CDATA[agents]]></category><category><![CDATA[claude code]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @ilya_mk — Управление разработкой (+4) — 07.02.2026 15:05]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/993878/</guid>
    <link>https://habr.com/ru/posts/993878/?utm_campaign=993878&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>лайкните пост кто сейчас вайбкодит свои продукты и напиши в комментах что делаете. очень интересно!</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/577/9ab/190/5779ab190b040b48b914d69d1cd14cd2.png" alt="вайб кодинг" title="вайб кодинг" width="1856" height="2304"><div><figcaption>вайб кодинг</figcaption></div></figure> <a href="https://habr.com/ru/posts/993878/?utm_campaign=993878&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 07 Feb 2026 12:05:25 GMT</pubDate>
    <dc:creator><![CDATA[ilya_mk]]></dc:creator>
      
      <category><![CDATA[вайбкодинг]]></category><category><![CDATA[vibecoding]]></category><category><![CDATA[gpt]]></category><category><![CDATA[ai]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @tatapstar — JavaScript (+4) — 31.01.2026 09:54]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/991232/</guid>
    <link>https://habr.com/ru/posts/991232/?utm_campaign=991232&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>А как? </p><p>Как? </p><p>Реально, как? Скажите мне. Почему это происходит так.. </p> <a href="https://habr.com/ru/posts/991232/?utm_campaign=991232&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 31 Jan 2026 06:54:50 GMT</pubDate>
    <dc:creator><![CDATA[tatapstar]]></dc:creator>
      
      <category><![CDATA[разработка]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — Node.JS (+4) — 22.01.2026 07:51]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/987640/</guid>
    <link>https://habr.com/ru/posts/987640/?utm_campaign=987640&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Райан Даль, создатель Node.js, одной из&nbsp;ключевых технологий современного веба: времена, когда код писали люди, всё. </p><p>Даль <a href="https://x.com/rough__sea/status/2013280952370573666" rel="noopener noreferrer nofollow">сформулировал</a> свою позицию в&nbsp;посте в&nbsp;X: «Это говорили уже тысячу раз, но&nbsp;я&nbsp;тоже вставлю слово: времена, когда код писали люди, закончилась. Это тревожно для тех из&nbsp;нас, кто называет себя инженерами ПО, но&nbsp;от&nbsp;этого не&nbsp;менее верно. Это не&nbsp;значит, что у&nbsp;инженеров больше не&nbsp;будет работы, но&nbsp;про написание синтаксиса напрямую она больше не&nbsp;будет».</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/e65/d49/d88/e65d49d88eef2cdddacfd3404cd4785d.png" width="559" height="254"></figure> <a href="https://habr.com/ru/posts/987640/?utm_campaign=987640&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 22 Jan 2026 04:51:04 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[даль]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @lemix85 — TypeScript (+4) — 22.12.2025 17:11]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/979384/</guid>
    <link>https://habr.com/ru/posts/979384/?utm_campaign=979384&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Философия IT-собеседований: взгляд разработчика и DevOps-инженера</strong><br><br>Привет, Хабр! Мой пост носит дискуссионный характер. В веб-разработке, администрировании и DevOps я уже 17 лет. Долгое время работал «на себя», оказывая помощь клиентам, с которыми выстроены надёжные взаимоотношения, но текущие реалии рынка подтолкнули к поиску работы по ТК, об этом я и хочу поговорить.</p><p>Обо мне: 40 лет, из которых 17 лет в коммерческой разработке. Прошел долгий путь как в fullstack-разработке (web), так и в создании embedded-решений (каршеринг), администрировании и DevOps.</p><p>Раньше мой процесс найма редко выходил за рамки одного интервью. Сейчас же я регулярно сталкиваюсь с многоступенчатыми отказами, иногда даже на этапе HR-скрининга. Этот контраст заставил меня задуматься: что делает найм эффективным, а что превращает его в фарс? Решил систематизировать свои наблюдения и поделиться тем, что в современных собеседованиях кажется здравым, а что — откровенно лишним.<br><br>Описываю позитивные практики, с которыми сталкивался, практики за которые я уважаю потенциальных работодателей и команды. Это парадигма, в которой я вёл деятельность с начала карьеры.</p><ol><li><p><strong>Диалог на равных.</strong> <br>Мое лучшее интервью: техлид не мучил теорией, а предложил обсудить реальную дилемму, которую он решает в данный момент (внедрение NoSQL-хранилища ради одного специфичного сервиса, т.е. доп. точка отказа <strong>vs</strong> производительность). Без таймера и стресса мы искали решение. Итог — оффер и годы отличной работы.</p></li><li><p><strong>Проверка логики, а не памяти.</strong><br>Люблю кейсы в духе: «Вот дано А, почему происходит Б?». Из банального: может ли Вася из другого города достучаться до вашего локального IP? Это показывает понимание базы лучше любого теста.</p></li><li><p><strong>Ценность универсальных знаний. </strong><br>Универсальные знания долгое время позволяли быстро находить решение практически любой проблемы от хардверной, до нарушения самых элементарных паттернов проектирования в коде и эффективно их устранять. Мне нравятся задачи, где проблема может быть скрыта на любом уровне и нравятся клиенты, понимающие, как я могу снять их головную боль обеспечив работоспособность ПО в любой среде и условиях.</p></li></ol><p>А теперь я хочу описать то, от чего меня бомбит. Это факторы которые будут отпугивать меня вплоть до момента, когда будет нечего кушать и я буду вынужден прогнуться под выгодное предложение.</p><ol><li><p><strong>Лайвкодинг.</strong> <br>В 40 лет написание кода для меня — процесс интимный... хотя  я практикую парное программирование в реальной команде и это мне нравится, но в предвкушении собеседований иногда хочется "психануть" и на предложение выбрать время для лайвокдинга сказать — "предлагаю парное программирование с одним из ваших специалистов, ведь для меня тоже важно, с кем я буду вести разработку". (Не пробовал так отвечать, но попробую, как только выдастся случай).</p></li><li><p><strong>Вакансии-обманки</strong>. <br>Зачем заманивать стеком DevOps (Linux, Nginx, Ansible, Terraform, Puppet, Docker, Kubernetes, MySQL, PostgreSQL, Elasticsearch, Logstash, Kibana, Zabbix), если по факту сообщаете, что ничего этого не будет, а ищите классического сисадмина 9-18? — Давайте адкеватный запрос, а не тратьте время.</p></li><li><p><strong>Терминологическая каша</strong>. Сложно отвечать экспертно, когда интервьюер путает CI и OCI или Redis и Rabbit. Если нет погружения в контекст, конструктивного диалога не выйдет. Готовиться к собеседованию должен не только соискатель, но и тот, кто нанимает.</p></li><li><p><strong>Отсутствие пунктуальности.</strong><br>Для меня было шоком, что фаундер может просто не явиться на собседование, или рекретер забывает о диалоге и назначенной встрече. У вас там всё нормально?) Хотя рекрутер мало чем отличается от агента недвижимости, но фаундер забывающий про собеседование для меня персонаж странный.</p></li><li><p><strong>Узкая специализация.</strong><br>Раньше, как мне кажется, ценилась универсальность, способность разработчика понимать инфраструктуру, а инженера/админа — код. Сегодня индустрия уходит в жесткую сегментацию, видимо, для более точного просчёта рисков. А я считаю, что именно универсальность — это страховка проекта от того, что решение будет принято в вакууме одного стека, без учета общей картины.</p></li></ol> <a href="https://habr.com/ru/posts/979384/?utm_campaign=979384&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 22 Dec 2025 14:11:56 GMT</pubDate>
    <dc:creator><![CDATA[lemix85]]></dc:creator>
      
      <category><![CDATA[найм разработчиков]]></category><category><![CDATA[собеседование в it]]></category><category><![CDATA[абсурд]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @runity — Блог компании Рунити (+4) — 17.10.2025 11:37]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/runity/posts/957506/</guid>
    <link>https://habr.com/ru/companies/runity/posts/957506/?utm_campaign=957506&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Как войти в нужную дверь: API-ключ и как с ним работать</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/9c7/fd6/059/9c7fd60592f972419f9b79bbddabed2b.png" width="1600" height="900"></figure><p>API-ключ — это уникальный набор символов, который подтверждает, что запрос к API отправлен авторизованным приложением. Он помогает управлять доступом, считать обращения и защищать данные.</p><p>Чтобы использовать API-ключ, нужно:</p><ol><li><p>Получить его в личном кабинете сервиса.</p></li><li><p>Добавить в запрос — обычно в заголовке Authorization.</p></li><li><p>Следить за безопасностью: не хранить ключ в коде и регулярно менять.</p></li></ol><p><strong>Пример запроса в Node.js:</strong></p><pre><code class="javascript">const axios = require('axios');

const API_KEY = process.env.MY_API_KEY;

axios.get('https://api.example.com/data', {

&nbsp;&nbsp;headers: { 'Authorization': Api-Key ${API_KEY} }

})

.then(r =&gt; console.log(r.data))

.catch(e =&gt; console.error('Ошибка', e.response?.status));</code></pre><p>В <a href="https://reg.cloud/blog/chto-takoe-api-klyuch-i-kak-s-nim-rabotat/?utm_source=habr&amp;utm_medium=post&amp;utm_campaign=api" rel="noopener noreferrer nofollow">базе знаний Рег.облака</a> поделились подробной инструкцией: как создать, подключить и защитить API-ключ. Заходите, сохраняйте и используйте :)&nbsp;</p> <a href="https://habr.com/ru/posts/957506/?utm_campaign=957506&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 17 Oct 2025 08:37:42 GMT</pubDate>
    <dc:creator><![CDATA[runity (Рунити)]]></dc:creator>
      
      <category><![CDATA[api]]></category><category><![CDATA[api gateway]]></category><category><![CDATA[node.js]]></category><category><![CDATA[javascript]]></category><category><![CDATA[ключ]]></category><category><![CDATA[доступ]]></category><category><![CDATA[доступ к данным]]></category><category><![CDATA[безопасность]]></category><category><![CDATA[безопасность данных]]></category><category><![CDATA[рег.облако]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @shanker — Информационная безопасность (+2) — 10.09.2025 09:02]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/945508/</guid>
    <link>https://habr.com/ru/posts/945508/?utm_campaign=945508&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Поиск скомпрометированных зависимостей через Dependency Track</strong></p><p>На днях стало известно о компрометации почти 2-х десятков npm-пакетов (подробнее в <a href="https://habr.com/ru/companies/first/articles/945218/" rel="noopener noreferrer nofollow">этой статье</a>). Зловредный код может похищать криптовалюту. Это не первый раз, когда в зависимости попадает зловред (например, в 2022 году <a href="https://highload.tech/otkrytyj-soft-ushel-na-vojnu-populyarnyj-npm-paket/" rel="noopener noreferrer nofollow">зловред удалял данные</a>).</p><p>Один из вариантов поиска наличия скомпрометированных пакетов среди сотен проектов - использование Dependency Track. При этом поиск возможен и в транзитивных зависимостях тоже. На картинке ниже показан процесс. Заходим в раздел "Components", вводим название в формате "<em>pkg:npm/$name$</em>". Далее остаётся отсортировать по версии и найти среди них скомпрометированную (сейчас это легко - нужно смотреть самую старшую версию).  Можно поиск производить сразу по конкретной версии. Пример:</p><pre><code>pkg:npm/simple-swizzle@0.2.3</code></pre><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/f69/156/545/f69156545baead5e7327e524cde384fe.png" alt="Ищем пакет по названию, сортируем по версии" title="Ищем пакет по названию, сортируем по версии" width="1843" height="332"><div><figcaption>Ищем пакет по названию, сортируем по версии</figcaption></div></figure><p>Если пакет нашёлся - можно не только узнать в каком именно проекте, но и увидеть где именно в дереве зависимостей проекта используется (нажать на иконку, обведённую красным).</p><p>Если знаете альтернативные варианты поиска скомпрометированных пакетов другими средствами - напишите в комментариях.</p> <a href="https://habr.com/ru/posts/945508/?utm_campaign=945508&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Wed, 10 Sep 2025 06:02:40 GMT</pubDate>
    <dc:creator><![CDATA[shanker]]></dc:creator>
      
      <category><![CDATA[npm]]></category><category><![CDATA[npm-пакет]]></category><category><![CDATA[node.js]]></category><category><![CDATA[javascript]]></category><category><![CDATA[скомпрометирован]]></category><category><![CDATA[компроментация]]></category><category><![CDATA[dependency track]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @nebuloid — Управление разработкой (+4) — 20.06.2025 11:30]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/920160/</guid>
    <link>https://habr.com/ru/posts/920160/?utm_campaign=920160&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>Вы знаете этих людей. Вроде умные, вроде опытные. Говорят правильные слова про 'стратегию', 'масштабируемость', 'долгосрочную перспективу'.<br> Но почему-то через полгода таких разговоров оказывается, что:</p><p>баг, который 'уже почти пофиксили' никуда из прода не девался<br> фича, которую 'вот-вот запустим' — всё ещё в черновиках<br> команда уже тихо ненавидит слово 'архитектура'</p><figure class=""><img src="https://habrastorage.org/getpro/habr//post_images/e22/b59/fee/e22b59fee0d01b272247122bb117a0c3.png"></figure><p>А техлид? Техлид как будто ничего не замечает.<br> Как это работает (точнее, не работает)<br> Слова вместо кода</p><p>вместо пулл-реквестов - диаграммы.<br> демо нет - зато вот вам слайды.<br> вместо решений 'опять' 'давайте обсудим' (читай: 'я не хочу отвечать').</p><p>Бесконечный 'анализ'</p><p>'Надо подумать над архитектурой' = 'Я не уверен, но боюсь признаться'<br> 'Это нетривиальная задача' = 'Мне лень разбираться'</p><p>Ответственность - это не про нас<br> Любимый приём - щедро размазать вину:</p><blockquote><p>'Это комплексная проблема' (на самом деле: 'виноваты все, а значит — никто').</p></blockquote><p>Реальный кейс (чтобы было не абстрактно)</p><p>В одном проекте (Node.js, если важно) техлид 2 месяца 'прорабатывал подход' к рефакторингу.<br> Провёл 8 митингов, написал 50 страниц документации.</p><p>А потом... <em>уволился</em>.</p><p>Оставив после себя:<br> красивые схемы в Confluence<br> ни одной строчки кода<br> команду, которая теперь на рефакторинг смотреть не может</p><p>Как понять, что ваш техлид центральная часть системы самообмана?</p><p>главный результат его работы - не код, а презентации<br> коронный вопрос - 'А как мы это будем масштабировать?' (но не сам масштабирует)<br> после разговора с ним хочется или закодить, или закопать</p><p>Что прикажете с этим делать?</p><p>тупо запретить 'стратегировать' без кода*<br> нет пулл-реквеста - нет права говорить про архитектуру.</p><p>ввести 'день испанского стыда'<br> раз в месяц техлид показывает руками, что сделал. Не слайды - код.</p><p>Задавать всего один вопрос</p><blockquote><p>'Что конкретно изменится после твоего решения?'<br> Если ответ начинается со слов <em>'теоретически....'</em> - это тревога.</p></blockquote><p>Вывод<br> Хороший техлид — не тот, кто красиво говорит о проблемах.<br> А тот, кто их решает.</p><p>Если ваш 'архитектор' только генерирует документы, но не генерирует код - возможно, он уже ИИ.</p><blockquote><p>P.S. Если после этого текста кто-то узнал своего техлида - это не совпадение</p></blockquote> <a href="https://habr.com/ru/posts/920160/?utm_campaign=920160&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 20 Jun 2025 08:30:42 GMT</pubDate>
    <dc:creator><![CDATA[nebuloid]]></dc:creator>
      
      <category><![CDATA[техлид]]></category><category><![CDATA[архитектура]]></category><category><![CDATA[командная работа]]></category><category><![CDATA[баги]]></category><category><![CDATA[refactoring]]></category><category><![CDATA[самообман]]></category><category><![CDATA[кодирование]]></category><category><![CDATA[бездействие]]></category><category><![CDATA[ответственность]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @kirillkosolapov — Блог компании Amvera (+4) — 13.02.2025 18:43]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/amvera/posts/882312/</guid>
    <link>https://habr.com/ru/companies/amvera/posts/882312/?utm_campaign=882312&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Расширенные алерты в <a href="https://amvera.ru/?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=alerts" rel="noopener noreferrer nofollow">Amvera Cloud</a></strong></p><p>Сегодня мы выпускаем функционал расширенных алертов.</p><p>Теперь каждый наш пользователь сможет получать уведомления в специальный бот, если:</p><ol><li><p>Проект ушел в ошибку.</p></li><li><p>Произошло превышение ОЗУ или ЦПУ выше заданного порога</p></li><li><p>Сработала Liveness или Readiness проба.</p></li><li><p>Произошла ошибка сборки или запуска проекта.</p></li><li><p>Встретилась заданная фраза в логе.</p></li></ol><blockquote><p><a href="https://amvera.ru/?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=alerts" rel="noopener noreferrer nofollow">Amvera Cloud</a> — это облако для простого деплоя приложений через git push. Встроенный CI/CD, бэкапы и мониторинг позволяют развернуть проект тремя командами в IDE и не думать о настойке инфраструктуры. Amvera проще, чем использование VPS или Kubernetes-кластера.</p></blockquote><p></p> <a href="https://habr.com/ru/posts/882312/?utm_campaign=882312&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 13 Feb 2025 15:43:27 GMT</pubDate>
    <dc:creator><![CDATA[kirillkosolapov (Amvera)]]></dc:creator>
      
      <category><![CDATA[алерты в amvera]]></category><category><![CDATA[observability амвера]]></category><category><![CDATA[uptime amvera]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @kirillkosolapov — Блог компании Amvera (+4) — 26.01.2025 14:35]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/amvera/posts/876722/</guid>
    <link>https://habr.com/ru/companies/amvera/posts/876722/?utm_campaign=876722&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>RabbitMQ и Memcached в <a href="https://amvera.ru/?utm_source=habr&amp;utm_medium=article&amp;utm_rabbitmqpost" rel="noopener noreferrer nofollow"><u>Amvera Cloud</u></a></strong></p><p>C 14 января 2025 в Amvera Cloud доступны RabbitMQ и Memcached.</p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/faf/3d3/b85/faf3d3b85602ed87c2e193b3629f67b8.png" width="1552" height="1046"></figure><p>Для создания достаточно выбрать необходимый сервис в разделе «Преднастроенные сервисы» и заполнить название и несколько переменных.</p><p>В ближайшее время планируется релиз отдельного сервиса управления очередями.</p><blockquote><p><a href="https://amvera.ru/?utm_source=habr&amp;utm_medium=article&amp;utm_rabbitmqpost" rel="noopener noreferrer nofollow"><u>Amvera Cloud</u></a> — это облако для простого деплоя приложений через git push. Встроенный CI/CD, бэкапы и мониторинг позволяют развернуть проект тремя командами в IDE и не думать о настойке инфраструктуры. Amvera проще, чем использование VPS или Kubernetes-кластера.</p></blockquote><p></p> <a href="https://habr.com/ru/posts/876722/?utm_campaign=876722&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sun, 26 Jan 2025 11:35:53 GMT</pubDate>
    <dc:creator><![CDATA[kirillkosolapov (Amvera)]]></dc:creator>
      
      <category><![CDATA[RabbitMQ в Amvera]]></category><category><![CDATA[managed rabbitmq]]></category><category><![CDATA[managed memcached]]></category><category><![CDATA[memcached в Amvera]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @kirillkosolapov — Блог компании Amvera (+4) — 27.12.2024 14:25]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/amvera/posts/870346/</guid>
    <link>https://habr.com/ru/companies/amvera/posts/870346/?utm_campaign=870346&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Обновления января 2025 года в <a href="https://amvera.ru/?utm_source=habr&amp;utm_medium=article&amp;utm_2025fitures" rel="noopener noreferrer nofollow">Amvera Cloud</a></strong></p><p>Многие ждали, писали, но нет, мы цены повышать не будем!)</p><p>Зато сразу после 1 января праздников, ориентировочно 13—17 января</p><ol><li><p>Выкатим <strong>новый фронт</strong>. Надеемся, все станет понятнее.</p></li><li><p>Появятся <strong>преднастроенные RabbitMQ и Memcached.</strong></p></li><li><p><strong>Расширенные алерты и пробы.</strong> Можно будет настроить алерты на падение проекта, превышение заданного потребления ОЗУ и CPU и появления определенных ошибок в логах. Дополнительно появятся liveness и readiness пробы.</p></li><li><p>Мы <strong>вводим SLA</strong>. Осенью 2024 были инциденты с падением сервисов. Мы готовы нести ответственность за безотказность работы сервиса. Начиная с января 2025, если наша надежность окажется ниже 99,5% в месяц, можно будет претендовать на компенсации с нашей стороны.</p></li></ol><p><strong>SLA действует с 1 января 2025</strong></p><p><strong><a href="https://amvera.ru/?utm_source=habr&amp;utm_medium=article&amp;utm_2025fitures" rel="noopener noreferrer nofollow">Amvera Cloud</a> </strong>—<strong>&nbsp;</strong>это облако для простого деплоя приложений через git push. Встроенный CI/CD, бэкапы и мониторинг позволяют развернуть проект тремя командами в IDE и не думать о настойке инфраструктуры. Amvera проще, чем использование VPS или Kubernetes-кластера.</p> <a href="https://habr.com/ru/posts/870346/?utm_campaign=870346&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Fri, 27 Dec 2024 11:25:41 GMT</pubDate>
    <dc:creator><![CDATA[kirillkosolapov (Amvera)]]></dc:creator>
      
      <category><![CDATA[SLA Amvera]]></category><category><![CDATA[Релизы Amvera]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Metalamp — Блог компании MetaLamp (+4) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/metalamp/posts/867838/</guid>
    <link>https://habr.com/ru/companies/metalamp/posts/867838/?utm_campaign=867838&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Запускаем бесплатную программу обучения по Node js в Web3</strong></p><p>Привет всем! Мы в MetaLamp давно занимаемся обучение разработчиков, у нас есть свои программы обучения по фронтенду и бэкенду, а недавно мы запустили обучения по смарт-контрактам Solidity и фронтенду в web3.</p><p>Теперь мы решили расширить список наших курсов и <strong><em>создали программу обучения по Node.js в связке с web3.</em></strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/acd/494/9d5/acd4949d53a56f509bd7d39f9be2f4d0.png" width="1170" height="660"></figure><p><strong>Почему все говорят про Node.js</strong></p><p>Node.js уже давно стал одним из главных инструментов для разработки серверной части. Его используют, чтобы строить быстрые и масштабируемые веб-приложения и не только. К примеру, Netflix, LinkedIn и Uber сделали Node.js значимой частью своей инфраструктуры. Так что эта платформа не просто тренд, а эффективный инструмент.</p><p>Кроме того, JavaScript (js), на котором базируется Node.js, занимает лидирующие позиции среди языков программирования. И это легко объяснить. Он универсален, используется как на фронтенде, так и на бэкенде, и у него огромное сообщество. Node.js уверенно стоит на первом месте среди серверных технологий. Освоивший ноду, во-первых, станет специалистом по серверным технологиям. Во-вторых, сможет легко изучить фронтенд и перейти в лигу fullstack.</p><p>И еще одна приятная деталь: зарплаты в этой сфере радуют. По данным&nbsp;<a href="https://career.habr.com/" rel="noopener noreferrer nofollow">Хабр Карьера</a>, джуниоры на Node получают около 85 тысяч рублей, мидлы — 220 тысяч, а сеньоры могут зарабатывать до 330 тысяч рублей в месяц.</p><p><a href="https://habr.com/ru/companies/metalamp/articles/867638/" rel="noopener noreferrer nofollow"><em>Читайте подробнее о программе в нашей новой статье!</em></a></p><p><strong>В нашем <a href="https://t.me/+8p2iaLV6_tBmNTZi" rel="noopener noreferrer nofollow">телеграм-канале</a> мы часто обсуждаем новые инструменты для разработчиков, делаем обзоры продуктов и все вместе обсуждаем новости. В комментариях под постами &nbsp;— у нас отдельный холивар. Присоединяйтесь!</strong> </p> <a href="https://habr.com/ru/posts/867838/?utm_campaign=867838&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 19 Dec 2024 06:00:27 GMT</pubDate>
    <dc:creator><![CDATA[Metalamp (MetaLamp)]]></dc:creator>
      
      <category><![CDATA[node.js]]></category><category><![CDATA[nodejs]]></category><category><![CDATA[web3]]></category><category><![CDATA[криптовалюта]]></category><category><![CDATA[курсы программирования]]></category><category><![CDATA[карьера ит-специалиста]]></category><category><![CDATA[карьера в it]]></category><category><![CDATA[карьера в it-индустрии]]></category><category><![CDATA[карьера в ит]]></category><category><![CDATA[it курсы]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @Sravni_Tech — Блог компании Сравни (+3) — 26.11.2024 13:21]]></title>
    <guid isPermaLink="true">https://habr.com/ru/companies/sravni/posts/861460/</guid>
    <link>https://habr.com/ru/companies/sravni/posts/861460/?utm_campaign=861460&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><strong>Копаем вглубь Dependency Injection (NestJS): запись внутреннего митапа</strong></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/af4/1c6/00c/af41c600c8da4444213e859e1e39ad29.jpg" width="1041" height="525"></figure><p>В Сравни мы используем NestJS, широко применимый фреймворк для Node.js-разработки, который из коробки умеет в Dependency Injection. <br><br>Ранее на внутреннем митапе разобрали основы внедрения зависимостей (ссылка ниже) — теперь же рассмотрели <strong>динамическое создание и удаление модулей</strong>.<br><br>В частности: </p><ul><li><p>Правила: что от чего не должно зависеть  </p></li><li><p>Какие ставить для себя ограничения </p></li><li><p>Как хранить сервисы на нужных уровнях/слоях  </p></li><li><p>Как избежать циклической зависимости  </p></li><li><p>forRoot/forChild  </p></li><li><p>Возможно ли сделать hot module replacement в работающем сервисе</p></li></ul><p>Посмотреть запись митапа можно здесь: </p><p>✅<a href="https://clc.to/yout_DI_habr" rel="noopener noreferrer nofollow">YouTube</a></p><p>✅<a href="https://clc.to/rut_DI_tg" rel="noopener noreferrer nofollow">RUTUBE</a></p><p>✅<a href="https://clc.to/vk_DI_tg" rel="noopener noreferrer nofollow">VK</a></p><p>Запись нашего первого митапа по DI доступна в <a href="https://clc.to/yout_meet_habr" rel="noopener noreferrer nofollow">этом плейлисте</a>. </p> <a href="https://habr.com/ru/posts/861460/?utm_campaign=861460&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Tue, 26 Nov 2024 10:21:04 GMT</pubDate>
    <dc:creator><![CDATA[Sravni_Tech (Сравни)]]></dc:creator>
      
      <category><![CDATA[node.js]]></category><category><![CDATA[nestjs]]></category><category><![CDATA[dependency injection]]></category><category><![CDATA[митап]]></category><category><![CDATA[разработка]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — TypeScript (+4) — 25.07.2024 17:53]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/831512/</guid>
    <link>https://habr.com/ru/posts/831512/?utm_campaign=831512&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>В кодовую базу Node.js <a href="https://github.com/nodejs/node/commit/35f92d953c24d4f02f82ab397a61383103f9b796" rel="noopener noreferrer nofollow">принято</a> <a href="https://github.com/nodejs/node/pull/53725" rel="noopener noreferrer nofollow">изменение</a>, добавляющее возможность выполнения файлов с кодом на TypeScript. </p><p>Поддержка TypeScript включается при помощи опции "--experimental-strip-types" и сводится к очистке специфичных для данного языка определений типов, то есть преобразованию перед выполнением исходного кода в JavaScript. </p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/c46/425/e18/c46425e186010ed4478c12e245ab23da.png" width="827" height="575"></figure><p>Не связанные с описанием типов возможности TypeScript пространства имён, декораторы, свойства параметров и перечисляемые типы (enum) пока <a href="https://github.com/nodejs/node/blob/main/doc/api/typescript.md" rel="noopener noreferrer nofollow">не поддерживаются</a>. Протестировать новую опцию можно в ночных сборках <a href="https://nodejs.org/download/nightly/v23.0.0-nightly202407253de7a4c374/" rel="noopener noreferrer nofollow">Node.js 23</a>. </p><p>Для трансляции задействован компилятор SWC (Speedy Web Compiler), <a href="https://github.com/swc-project/swc" rel="noopener noreferrer nofollow">написанный</a> на языке Rust. Чтобы не добавлять дополнительные зависимости к Node.js, задействовано представление компилятора <a href="https://swc.rs/docs/references/wasm-typescript" rel="noopener noreferrer nofollow">swc/wasm-typescript</a> в промежуточном коде WebAssembly и уже применяемое для тех же целей в платформе Deno. </p><p>Это изменение добавлено в ответ на просьбы пользователей реализовать возможность запуска кода на TypeScript без установки внешних загрузчиков и дополнительных зависимостей. В проектах <a href="https://www.opennet.ru/opennews/art.shtml?num=52947" rel="noopener noreferrer nofollow">Deno</a> и <a href="https://www.opennet.ru/opennews/art.shtml?num=59738" rel="noopener noreferrer nofollow">Bun</a> поддержка TypeScript реализована изначально. </p><p>Ключевым отличием TypeScript от JavaScript является явное определение типов. Статическая типизация позволяет избежать многих ошибок в процессе разработки, даёт возможность задействовать дополнительные техники оптимизации и упрощает отладку. </p><p>В добавленной в Node.js реализации данные возможности TypeScript теряются, в процессе трансляции исходных текстов в JavaScript проверка типов не осуществляется.</p><p>Источник: <a href="https://www.opennet.ru/opennews/art.shtml?num=61607" rel="noopener noreferrer nofollow">OpenNET</a>.</p><p></p> <a href="https://habr.com/ru/posts/831512/?utm_campaign=831512&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Thu, 25 Jul 2024 14:53:40 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[Node.js]]></category><category><![CDATA[TypeScript]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @daniilshat — Node.JS (+3) — 01.04.2024 09:58]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/804375/</guid>
    <link>https://habr.com/ru/posts/804375/?utm_campaign=804375&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/3af/952/43c/3af95243cb9a840f0f86b5ff6bd32d04.jpg" width="1280" height="720"></figure><p>Команда Honeypot <a href="https://youtu.be/LB8KwiiUGy0" rel="noopener noreferrer nofollow">выпустила</a> документальный фильм об истории Node.js. В часовом видео подробно рассказали о том, как создавали популярную среду выполнения кода на JavaScript. Фильм продолжает серию, в которой уже есть следующие документальные картины:&nbsp;</p><ul><li><p><a href="https://youtu.be/HDKUEXBF3B4?list=PLtEPUaeDclku1ECmuN3IsUimHApukWIOf" rel="noopener noreferrer nofollow">Ruby on Rails</a>;</p></li><li><p><a href="https://youtu.be/8pDqJVdNa44?list=PLtEPUaeDclku1ECmuN3IsUimHApukWIOf" rel="noopener noreferrer nofollow">React</a>;</p></li><li><p><a href="https://youtu.be/rT4fJNbfe14?list=PLtEPUaeDclku1ECmuN3IsUimHApukWIOf" rel="noopener noreferrer nofollow">Prometheus</a>;</p></li><li><p><a href="https://youtu.be/OrxmtDw4pVI?list=PLtEPUaeDclku1ECmuN3IsUimHApukWIOf" rel="noopener noreferrer nofollow">Vue.js</a>;</p></li><li><p><a href="https://youtu.be/783ccP__No8?list=PLtEPUaeDclku1ECmuN3IsUimHApukWIOf" rel="noopener noreferrer nofollow">GraphQL</a>;</p></li><li><p><a href="https://youtu.be/Cvz-9ccflKQ?list=PLtEPUaeDclku1ECmuN3IsUimHApukWIOf" rel="noopener noreferrer nofollow">Ember.js</a>;</p></li></ul><p><a href="https://youtu.be/lxYFOM3UJzo?list=PLtEPUaeDclku1ECmuN3IsUimHApukWIOf" rel="noopener noreferrer nofollow">Elixir</a>.</p><p></p> <a href="https://habr.com/ru/posts/804375/?utm_campaign=804375&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 01 Apr 2024 06:58:09 GMT</pubDate>
    <dc:creator><![CDATA[daniilshat]]></dc:creator>
      
      <category><![CDATA[node.js]]></category><category><![CDATA[honeypot]]></category><category><![CDATA[javascript]]></category><category><![CDATA[документальный фильм]]></category><category><![CDATA[фильм]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @fettgesicht — Искусственный интеллект (+3) — N/P]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/800995/</guid>
    <link>https://habr.com/ru/posts/800995/?utm_campaign=800995&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p>OpenAI блокирует доступ к своим продуктам на территории РФ. В какой-то момент стало невозможным открыть даже <strong>документацию</strong>. </p><p>Доступ через VPN пока работает, но мы с друзьями подумали, что это неудобно, и опубликовали <a href="https://openai-docs.ru/" rel="noopener noreferrer nofollow">документацию OpenAI</a> у себя:</p><p><a href="https://openai-docs.ru" rel="noopener noreferrer nofollow">https://openai-docs.ru</a></p><figure class="full-width "><img src="https://habrastorage.org/getpro/habr/upload_files/49e/410/aad/49e410aad1236e99e93a9084f15cb6d0.png" width="3058" height="1402"></figure><p>Более того, с помощью GPT-4 мы перевели содержание на русский язык и где возможно, заменили ссылки на дополнительные статьи (Wikipedia и подобные) на русскоязычные версии. За бесплатный доступ к GPT-4 для нашего проекта благодарим&nbsp; <a href="https://proxyapi.ru/" rel="noopener noreferrer nofollow">ProxyAPI — доступ к OpenAI API в России</a>.&nbsp;</p><p>Мы продолжаем работать над проектом, будем дополнять документацию время от времени. Но уже сейчас все основные методы и гайды у нас доступны. Приглашаем всех желающих ознакомиться!</p><p></p> <a href="https://habr.com/ru/posts/800995/?utm_campaign=800995&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Mon, 18 Mar 2024 15:24:00 GMT</pubDate>
    <dc:creator><![CDATA[fettgesicht]]></dc:creator>
      
      <category><![CDATA[openai]]></category><category><![CDATA[chatgpt]]></category><category><![CDATA[документация]]></category><category><![CDATA[русский перевод]]></category>
  </item>
  

	
  

  

  

    

  

  
  <item>
    <title><![CDATA[Пост @denis-19 — JavaScript (+3) — 17.02.2024 11:35]]></title>
    <guid isPermaLink="true">https://habr.com/ru/posts/794356/</guid>
    <link>https://habr.com/ru/posts/794356/?utm_campaign=794356&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
    <description><![CDATA[<p><a href="https://nodejs.org/en/blog/" rel="noopener noreferrer nofollow">Вышли</a> корректирующие выпуски JavaScript-платформы <a href="https://github.com/nodejs/node/tags" rel="noopener noreferrer nofollow">Node.js 21.6.2, 20.11.1, 18.19.1</a>, в которых исправлено <a href="https://nodejs.org/en/blog/vulnerability/february-2024-security-releases" rel="noopener noreferrer nofollow">8 уязвимостей</a> (4 из них с высоким уровнем опасности):</p><ul><li><p><a href="https://security-tracker.debian.org/tracker/CVE-2024-21892" rel="noopener noreferrer nofollow">CVE-2024-21892</a>&nbsp;— возможность подстановки непривилегированным пользователем кода, наследующего расширенные привилегии, с которыми выполняется рабочий  процесс;</p></li><li><p><a href="https://security-tracker.debian.org/tracker/CVE-2024-22019" rel="noopener noreferrer nofollow">CVE-2024-22019</a> &nbsp;— отказ в обслуживании через исчерпание доступных ресурсов (нагрузка на CPU и расходование пропускной способности) при обработке встроенным HTTP-сервером специально оформленных chunked-запросов;</p></li><li><p><a href="https://security-tracker.debian.org/tracker/CVE-2024-21896" rel="noopener noreferrer nofollow">CVE-2024-21896</a>&nbsp;— выход за границу базового каталога в файловых путях, уязвимость позволяет обойти нормализации файловых путей при помощи path.resolve() в  случае передачи пути с использованием класса Buffer;</p></li><li><p><a href="https://security-tracker.debian.org/tracker/CVE-2024-22017" rel="noopener noreferrer nofollow">CVE-2024-22017</a> — вызов setuid() не сбрасывал все привилегии;</p></li><li><p><a href="https://security-tracker.debian.org/tracker/CVE-2023-46809" rel="noopener noreferrer nofollow">CVE-2023-46809</a>&nbsp;— уязвимость в API privateDecrypt(), допускающая применение атаки <a href="https://www.opennet.ru/opennews/art.shtml?num=59848" rel="noopener noreferrer nofollow">Marvin</a> для расшифровки RSA на основе измерения времени операций;</p></li><li><p><a href="https://security-tracker.debian.org/tracker/CVE-2024-21891" rel="noopener noreferrer nofollow">CVE-2024–21&nbsp;891</a>&nbsp;— возможность обхода модели прав доступа при использовании пользовательских обработчиков нормализации файловых путей; </p></li><li><p><a href="https://security-tracker.debian.org/tracker/CVE-2024-21890" rel="noopener noreferrer nofollow">CVE-2024-21890</a>&nbsp;— некорректная обработка масок в параметрах "--allow-fs-read" и "--allow-fs-write";</p></li><li><p><a href="https://security-tracker.debian.org/tracker/CVE-2024-22025" rel="noopener noreferrer nofollow">CVE-2024-22025</a>&nbsp;— отказ в обслуживании через израсходование ресурсов при декодировании сжатых данных в формате Brotli, полученных через вызов fetch().</p></li></ul><p>Источник: <a href="https://www.opennet.ru/opennews/art.shtml?num=60612" rel="noopener noreferrer nofollow">OpenNET</a>.</p><p></p> <a href="https://habr.com/ru/posts/794356/?utm_campaign=794356&amp;utm_source=habrahabr&amp;utm_medium=rss">Читать дальше &rarr;</a>]]></description>
      
    <pubDate>Sat, 17 Feb 2024 08:35:14 GMT</pubDate>
    <dc:creator><![CDATA[denis-19]]></dc:creator>
      
      <category><![CDATA[JavaScript]]></category><category><![CDATA[Node.js]]></category>
  </item>
  

	
  

  

  

      

      

      

    
  </channel>
</rss>
