Node.JS [ru] | Серверный JavaScript
10.6K subscribers
375 photos
18 videos
25 files
3.8K links
Node.js, backend и AI-разработка: статьи, новости, вайбкодинг, автоматизация и работа с ИИ-агентами.

Личный блог автора - @just_genych
По вопросам рекламы или разработки: @g_abashkin

РКН: https://vk.cc/cJPGOP
Download Telegram
Форма, которая знает слишком много: как превратить правила СХД в состояние UI

Жила-была команда, и занесло её на сложную форму для систем хранения данных. Теперь ребята выкладывают опыт: на руках три разных сценария, на выходе один интерфейс — и при этом не пришлось плодить дублирующееся состояние и утопать в обработчиках.

Читать на Habr: habr.com/ru/companies/aerodisk/articles/1083430

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
Next.js, внешний API, Zod, нормализация и controlled fallback

Любой внешний API тащит свою модель данных: как названы поля, что там за вложенные объекты, где картинки, где цены, по каким правилам крутится пагинация — всё это вотчина провайдера. А UI приложения живёт в собственной модели, и с чужой она не совпадает.

Начнёшь дёргать event._embedded.venues[0].city.name напрямую из компонента — и всё, структура внешнего ответа расползлась по интерфейсу. Провайдер поменял API — у тебя поехали карточки, detail page, search, metadata и тесты.

В App Router запрос наружу можно гонять на сервере: Server Components умеют fetch, а серверный код в клиентский bundle не просачивается. API key при такой схеме остаётся вне браузера — документация Next.js описывает server-side data fetching для App Router. В учебном проекте EventMap внешний источник событий ходит через серверный API-слой.

Читать далее

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
«Я профессионально создаю библиотеки 5 лет»

Говорит, что первую свою библиотеку залил в npm 7 лет назад — custom-border-mixin. И ради этого тупо выпал из жизни на неделю: хотелось в кайф написать SCSS-миксин.

Любопытно, где в SCSS вообще можно веселиться? Глянь на хелпер.

Читать на Habr

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
Diablo II, римские стратегии и Prince of Persia: чему фронтенд может поучиться у геймдева

В Diablo II статы скиллов лежат в обычных текстовых файлах — захотел покрутить баланс, пересобирать игру не придётся. В Prince of Persia 1989-го поведение героя расписано через состояния и переходы. А в градостроительных стратегиях сборщик налогов сам решает, что делать дальше, опираясь на набор правил.

Геймдев давно закрыл кучу задач, над которыми фронтенд до сих пор чешет репу. В статье — какие инженерные приёмы из игр тащат в веб и что ты с этого получишь на практике: контракты и моки, конечные автоматы, событийная модель, pattern matching и деревья поведения.

Читать далее

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Четверо в одной транзакции: кейс-батлы, PgBouncer под Prisma и реплика, которая показывает пустой инвентарь

Про этот сайт с кейсами CS2 уже вышло две статьи, и обе заканчивались перечислением того, чего на нём до сих пор нет: платежей, депозита предметов, кейс-баттлов, рефералки, KYC. Что ж, список теперь исчерпан. И почти вся сложная часть ужалась до одного вопроса: что вообще творится, когда несколько человек разом двигают одни и те же деньги?

Внутри — батл на четверых в рамках одной транзакции, порядок блокировок, благодаря которому дедлок не прилетает, PgBouncer под Prisma и правило про чтение с реплики, которое типом ну никак не описать.

Читать далее

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
👎2❤1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Кажется, у Jev нарисовался конкурент из открытого лагеря — Laya. Локальная открытая модель для принятия решений на 421 млн параметров, заточена под структурированные решения: быстрое да/нет, оценка, выбор из вариантов. Ест меньше 1 ГБ памяти, бесплатно лежит на Hugging Face, крутится на ноуте и даже на телефоне.

Теперь тест. Laya против облачного Jev — одна и та же змейка, одинаковый формат решений, 30 секунд на всё. У Laya: счёт 46, длина 52, 86,5 решений в секунду, P50 около 9 мс. У Jev: счёт 1, длина 7, 3,2 решения в секунду, полный цикл запроса к API 317 мс. На M5 Pro медиана вышла 15,3 мс у локальной Laya против 298,1 мс у облачного Jev — почти 20-кратный разрыв в этом тесте. Ключевая разница в том, что Laya решает каждый шаг на месте, а Jev на каждом шаге стоит и ждёт ответа от облачного API.

Правда, проект сам честно называет два ограничения: контекст всего 512–1024 токена, так что часть задач просто не влезет, а без дополнительной настройки Laya обобщает хуже, чем Jev. GitHub

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Свой localhost можно выкинуть в интернет за пару секунд. Бесплатно, силами Cloudflare.

Хватит одной команды в терминале:

cloudflared tunnel --url http://localhost:8000


Зачем это вообще нужно: гонять локальные проекты наружу, ловить вебхуки, показывать клиенту, что там у тебя работает, делать быстрые превью. Ну и пускать ИИ-агентов в приложения, которые крутятся у тебя на машине.

try.cloudflare.com

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Откуда взялась npm-либа morphing-scroll

Автор поста пишет про собственную библиотеку для npm. По его словам, на тот момент это был уже второй его npm-проект и самый замороченный из всех. Лезть с головой в код он не станет — вместо этого расскажет, как всё это появилось и что им двигало.

Читать далее: habr.com

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
Субтитры с переводом прямо в Chrome: тянем звук вкладки на MV3 и меняем два сервиса на один поток

Расширение для Chrome рисует переведённые субтитры поверх созвона — и всё это внутри браузера. Никакой бот в звонок не заходит.

Дальше автор разбирает три места, где он убил больше всего времени: перехват звука вкладки в Manifest V3, переезд с двух сервисов на один поток, который и расшифровывает, и переводит, и косяк в счётчике минут — из-за него время утекало, пока в эфире стояла тишина.

Читать далее

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
[Перевод] React 19.3

React 19.3 залили в npm. View Transitions и Fragment Refs год назад приехали как экспериментальные API — а теперь в 19.3 они официально стабильные.

В статье объясняют, как оба API работают, и заодно пробегаются по остальным заметным изменениям релиза.

Читать далее

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
tinyjs: десктоп на JavaScript, который весит меньше 10 МБ

В свежем выпуске JavaScript Weekly #803 ковыряют tinyjs — штуку для сборки десктопных приложений на JavaScript. Внутри бэкенд на txiki.js с полным доступом к системе (FFI, разумеется, тоже на месте), рендер через нативный webview и компактные сборки под macOS, Linux и Windows. А автор обзора Tarwin Stroh-Spijer добавляет, что этот инструмент ещё и упрощает подпись с нотаризацией финального приложения.

Конкурентов в нише хватает. Electrobun умеет больше: многоконный режим и GPU — но за это платишь более жирным TypeScript-рантаймом. Хотя для крошечного нативного основного процесса никто не мешает взять Zig, Rust, Go или Odin. Perry — это AOT-компилятор TypeScript в нативный код, и его основная UI-модель рисует виджеты AppKit, Win32 и GTK4, чтобы вид был по-нативнее. Electron и экспериментальный Deno Desktop — тоже мощь, но их исполняемые файлы обычно в разы толще. Приложения на Neutralinojs бывают и меньше, чем на tinyjs, но по задумке они остаются без универсального привилегированного JavaScript-бэкенда.

В том же выпуске: Node.js 26.10.0 (Current) привозит util.debounce / throttle; npm даёт stage-only токены — с ними автоматизированные workflow готовят релиз, а мейнтейнер потом подтверждает его через 2FA; Turborepo 2.11 обзавёлся экспериментальной поддержкой Rust, Python и Go в графе задач и запускается до 4x быстрее, чем 2.9; ESLint 10.11.0 — очередное обновление по производительности.

JavaScript Weekly #803

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Агент поддержки на LLM, который стабильно забывает сходить за заказом

Первая сборка такого агента в каждом третьем ходе не шла за заказом, а просто выдумывала его статус. Кто решал, когда дёргать тул? Сама модель. И решала мимо.

В харнесе у модели вообще нет права голоса: данные тащит код, а саму её дёргают дважды — понять, что спросили, и написать ответ. Агентский цикл, где решает модель, собирается за вечер и теряет тул в 1 ходе из 24. Продовый конвейер не теряет вообще, только роутер и сценарии под него пишет человек. 1000 диалогов на Qwen — полбакса, на Opus — тридцать долларов. Читать далее

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
ИИ-агенту теперь можно отдавать задачи прямо из GitLab

В SourceCraft добавили поддержку автономных агентов: разработчик ставит задачу, агент сам выполняет её и возвращает результат на проверку. Если по ходу работы не хватает данных или нужно согласование, он сам обращается к команде.

Агента можно запускать не только из GitLab — доступны VS Code, CLI, мессенджеры и веб-интерфейс. Плюс можно подключать собственных агентов, в том числе созданных в Yandex AI Studio.

Читать далее
Что не так с vue-i18n и где включается Intlayer

Пилишь мультиязычное приложение на Vue 3 или Nuxt — и рука сама тянется к vue-i18n. Годами это был дефолт, которому вообще не было конкурентов. Кадзупон (Kazupon) вместе с комьюнити оброс вокруг него взрослой жирной экосистемой, через которую прошло не одно поколение Vue-проектов.

В свежей статье разбирают, где именно у vue-i18n болит и как эту боль закрывает Intlayer.

Читать далее

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
12 CSS-фич, которыми можно выкинуть часть зависимостей

Frontend Focus #759, 23 сентября 2026 — внутри материал Flavio Copes «12 CSS Features You Can Use Today with No Build Step». Посыл простой: кое-что из сборочной цепочки уже сегодня можно выкинуть, потому что браузер умеет это сам. Нативная вложенность вместо Sass, :has() вместо костылей с классами-обёртками — и это далеко не всё из списка.

Сам выпуск: frontendfoc.us/issues/759

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
Когда разрабов больше нуля, но меньше двух: как в одиночку удержать планку продакшна

Свой проект, который превратился в единственную работу. Автор говорит о скриптах, способных ответить «нет», и о ночных прогонах, которым чинить нельзя.

И отдельная тема — люди, которые смотрят туда, куда тесты не доползают.

Читать далее

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Свежая пачка моделей System One: Jev и Contrastive Language Model (CLM)

Пилишь свои harness-системы? Тогда не проходи мимо новой волны моделей System One. Сначала был Jev. Теперь вот Contrastive Language Model (CLM). И шустрит он в 9 раз бодрее Jev. Выглядит так, что с ролью верификатора CLM справляется лучше — особенно когда задача растянута на длинный горизонт выполнения.

А в чём, собственно, разница между Jev и CLM? CLM учится контрастно, Jev — через Reinforcement Learning for Calibrated Decisions (RLCD). Jev на входе получает ситуацию вместе с заранее определёнными вопросами, а на выходе отдаёт типизированные решения с вероятностями. CLM работает иначе: кодирует ситуацию и возможные действия в эмбеддинги, сравнивает их сходство, после чего ранжирует или выбирает наиболее подходящий вариант.

Соль в том, что решить эту задачу можно несколькими путями, и это правда занятно. Код и веса выложены под Apache 2.0.

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Калькулятор плитки: фото вместо цвета и 3D, который наконец не бесит

Третья серия про мой пет-проект — калькулятор плитки tilely.ru. Патч набежал жирный, и почти весь он крутится вокруг 3D-режима. Багов там вылезло прилично. Кучу всего пришлось перепиливать: сначала казалось, что решение максимально логичное, а на деле — сплошное неудобство.

Перед 3D речь не о нём: сначала закрыл то, что висело в очереди ещё до этого. Теперь можно подгружать фото плитки, чтобы не таращиться на однотипные прямоугольники одного цвета. Есть кнопка «применить ко всем комнатам»: если санузел и кухня идут одной плиткой, вторую фотку грузить уже не надо. Плюс можно выбрать цвет швов — раньше они всегда были одинаковые, и картинка местами сливалась.

Читать далее

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
Один клик — и со страницы можно выпилить всё что угодно: «пипеточный» блокер на Manifest V3

Знакомая боль: адблок вроде стоит, а толку ноль. То окно с подпиской вылезет, то плашка «мы используем cookies», то чат-виджет прилип в углу, то шапка заняла пол экрана. Под такие случаи и делали мелкое расширение ekill: тыкаешь кнопку, наводишься на элемент, кликаешь — и он пропал.

Вот только с 2019 года его никто не трогал, а в Chrome оно отвалилось, когда Google прикрыл Manifest V2. Автор портировал его на Manifest V3 под Firefox, Chrome и Edge — так на свет появился SkullClick (GitHub). Казалось бы, задачка на пять минут, но граней у неё внезапно дофига.

Источник

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
Сигналы добрались до React-Redux — как раз про это в выпуске React Status #492 от 25 сентября 2026. В React-Redux 9.4 Alpha завезли опциональный useSignalSelector: раньше Redux дёргал каждый смонтированный селектор на каждом dispatch, и в крупных приложениях это вылезало в приличные тормоза. А селектор на сигналах смотрит, какое состояние читает каждый из них, так что после dispatch перезапускаются только те, у кого данные реально поменялись. Автор — Mark Erikson.

В Alpha 0 лежит полное объяснение, а Alpha 1 уже выкатили: там ключевой фикс бага и подкрученные бенчмарки.

В том же номере: Next.js 16.3.6 прикрывает критический RCE в ImageResponse, который цепляет v16.2+, а релиз на следующую неделю закроет ещё девять уязвимостей; интеграция React в Astro доходит до v7.0 — переезд с Babel на Oxc и поддержка React Compiler через опцию compiler: true; Vercel вывела свою bug bounty-программу в паблик.

Источник: React Status #492

👉 Node.JS [ru]
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1