Обновить
256K+

Веб-разработка *

Делаем веб лучше

265,81
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Лучший хостинг для Node.js-приложений и Next.js-сайтов с SSR в 2026

Время на прочтение8 мин
Охват и читатели11K

В статье мы рассмотрим специализированные PaaS-облака и особенности хостинга сайтов с SSR (рендерингом на стороне сервера) на React (Next.js, Remix, Astro), Vue (Nuxt.js, Quasar) и Angular. Рассмотрим сильные и слабые стороны сервисов. А также рассмотрим хостинг у VPS и Serverless-провайдеров. И приведём пример деплоя Node.js приложения с BullMQ и Redis.

Читать далее

Как разделить фронтенд на модули и связать их между собой: на примере маркетплейса

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели9.3K

На примере маркетплейса разберём, как разделить приложение на feature-модули, связать сервисы через DI, организовать состояние и изолировать работу с браузерными API.

Читать далее

Где HTTP/2 и HTTP/3 реально быстрее, а где не дают ничего

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели92K

Про HTTP/2 и HTTP/3 обычно пишут, что они ускоряют всё подряд. Я собрал стенд и померил сам: Caddy отдаёт одни и те же данные по всем трём протоколам, tc netem изображает шесть сетей — от дата-центра до края соты.

Результаты вышли неудобными. На десяти файлах HTTP/2 проигрывает старому HTTP/1.1. На одном крупном файле все три протокола показывают одинаковое время. В дата-центре новые протоколы отстают вчетверо. Выигрыш есть, но узкий и адресный.

Читать далее

MODX, Yamaha и 324 строки шума: почему широкий поисковый запрос нельзя читать буквально?

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели6.1K

Если открыть статистику по запросу modx, первое впечатление довольно приятное: частотность — 8 011. Для довольно нишевой CMS выглядит солидно.

Можно быстро сделать вывод: вот он, большой массив интереса к MODX. Остаётся посмотреть, что именно люди ищут, разбить запросы по темам и работать дальше.

Проблема обнаруживается после раскрытия списка.

Читать далее

ЮKassa, первый платёж в AI-продукте, купоны, анти-даблклик и запрет дублей подписки

Время на прочтение9 мин
Охват и читатели8K

ЮKassa создает платеж по запросу backend. Сервер передает сумму, валюту, режим capture, данные подтверждения, описание и Idempotence-Key. При confirmation.type=redirect ЮKassa возвращает адрес страницы оплаты. Frontend переводит пользователя на этот адрес.

Купон, проверка активной подписки и блокировка повторного POST работают на стороне приложения. В ЮKassa уходит уже рассчитанная сумма.

Ниже используется реализация из проекта AI-Chat, платежи в профиле пользователя, Render просыпается пару минут. Frontend написан на Next.js, платежный backend на Django REST Framework.

Читать далее

React в 2026 году: вайб-кодинг, Next.js, рынок и фронтенд после прихода ИИ — интервью с Александром Ломковым

Уровень сложностиСредний
Время на прочтение37 мин
Охват и читатели11K

React давно перестал быть просто библиотекой для отрисовки интерфейсов. Вокруг него выросла огромная экосистема, а сама работа фронтенд-разработчика меняется под влиянием ИИ быстрее, чем успевают обновляться привычные roadmap. Нужно ли сегодня глубоко знать JavaScript, стоит ли учить Next.js «по умолчанию», чем React выигрывает у Angular, что не так с вайб-кодингом и останется ли вообще ручное написание кода через пять лет?

Я, Александр, автор телеграм-канала «Shulepov Code», поговорил с Александром Ломковым — фронтенд-разработчиком и автором YouTube-канала «Friendly Frontend». Обсудили рынок найма, переход из VK в Wildberries, нейросети в реальной разработке, React и его экосистему, серверный рендеринг и то, какие навыки становятся важнее самого умения писать код.  

Читать далее

Standard JSON Schema vs JSON Schema

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели11K

JSON Schema - стандарт для описания JSON. Standard JSON Schema - стандарт для… Нет, это не опечатка и не один и тот же стандарт дважды.

Читать далее

«У нас редирект с HTTP на HTTPS». Есть клиенты, для которых этого мало

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели95K

Мы закрывали замечание аудитора: часть внутреннего сервиса отвечала по HTTP. Поставили редирект на HTTPS, показали, что по http:// теперь приходит 301, замечание сняли.

Через несколько недель я вернулся к этому же сервису с другой задачей и посмотрел на редирект внимательнее. Запрос, который получает 301, - это полноценный HTTP-запрос. Он уже ушёл. В нём был путь, параметры и заголовок Cookie.

Редирект не отменяет запрос. Он отвечает на него.

Дальше я полез проверять, кто вообще в наше время попадает на этот редирект, - и картина оказалась интереснее, чем я думал.

Читать далее

Мы запустили справочник — и через неделю выяснили, что главный ответ на нём неверный

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели9.7K

Мы сделали справочник по регуляторной теме за две недели и на седьмой день обнаружили, что отвечаем неправильно. Не в деталях ошиблись — в главном ответе. История о том, как проверка фактов сломала собственную гипотезу и какие проверки после этого пришлось встроить прямо в сборку.

Читать далее

Как впихнуть невпихуемое: проектируем B2B‑интерфейс для управления 10 000+ ПК

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели11K

Большинство энтерпрайз‑интерфейсов выглядят так, будто их верстали в 2003 году под дулом пистолета. Хотя кто знает, может это не так уж далеко от правды… Знакомая картина: вы открываете панель управления инфраструктурой, где нас встречает таблица на 40 колонок с горизонтальной прокруткой, пачка модальных окон, перекрывающих друг друга, и кнопка «Сохранить», клик по которой может случайно положить сетку целого филиала.

В продуктовом B2B‑дизайне, когда речь идет про IaaS, СХД или управление флотом ПК, мы боимся не за условный ретеншен, а за то что сотня серверов одномоментно ляжет. Исходя из этого важно серьезнее отнестись к Error Prevention. Наш юзер не просто меняет картриджи, это инженер инфраструктуры. А значит мы не можем ограничиться удобством для пользователя с условными Call to Action. Инфраструктура должна быть превентивной, а не просто комфортной.

Недавно передо мной как раз встала задача: спроектировать веб‑панель мониторинга и планировщик задач для парка из 10 000+ устройств. Я еще не начала, но уже устала. Так как до того, как открывать фигму, пришлось перелопатить добрый десяток Best Practice и паттернов, расщепив их на атомы, молекулы и сценарии. Аналоги вроде Microsoft Endpoint Manager и VMmanager были декомпозированы. В общем, все по классике.

 

Читать далее

Жизненный цикл токена API: от выпуска до отзыва

Уровень сложностиСредний
Время на прочтение22 мин
Охват и читатели13K

Токены (tokens) API часто расцениваются как незначительные детали реализации.

Пользователь входит в систему, сервер создает токен, браузер сохраняет его и включает в каждый защищенный запрос (protected request). На верхнем уровне процесс выглядит просто.

Последствия для безопасности отнюдь не просты.

В этой статье рассматривается полный жизненный цикл токена API, от выпуска (issuance) до истечения срока действия (expiration) или принудительного отзыва (revocation).

Читать далее

Как тестировать API: 20 проверок, которые должен уметь делать QA

Уровень сложностиСредний
Время на прочтение28 мин
Охват и читатели10K

Тестирование API часто сводится к одному: отправить запрос и убедиться, что сервер ответил 200. На собеседовании этого хватает на пару минут, а в проде именно здесь всплывает то, чего статус-код не ловит: чужой заказ в ответе, молчаливый 500 вместо ошибки валидации, товар, который не списался со склада.

Разберём 20 базовых проверок, которые отличают QA, тестирующего API, от того, кто просто дёргает ручки: успешный ответ, входные данные, ошибки, доступ и состояние системы — на одном сквозном сценарии, с примерами на curl и в Postman. Начинающий выстроит последовательность, опытный сверится и поймёт, куда расширять набор тестов.

Узнать, что ловит прод →

Вместе, но независимо: как мы «подружили» разные движки визуализаций в одном BI-отчете

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели6.4K

Многие аналитические платформы сталкивается с одним и тем же вопросом: как связать компоненты, которые изначально не знают друг о друге? График живёт по одним правилам, карта — по вторым, таблица — по третьим. Каждый движок говорит на собственном языке событий и данных, и заставить их работать слаженно — нетривиальная архитектурная задача. В этой статье рассказываем, как мы её решаем в Modus.

Читать далее

Ближайшие события

CSS в 2026 году: где JavaScript уже не обязателен

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели11K

Когда работаешь с такими масштабными продуктами, как мы делаем в VK, быстро начинаешь ценить код, который можно не писать. Особенно если речь о небольших сценариях: открыть поповер, анимировать появление блока или подстроить поле под контент. Ещё недавно для таких задач мы почти автоматически тянулись к JavaScript. Но за последние два года CSS сильно расширил свои возможности для задач, связанных с интерфейсом.

Я Максим Кузнецов, занимаюсь оптимизацией производительности и улучшением стабильности веб-версий ВКонтакте. В этой статье расскажу, что уже можно использовать как альтернативу JS, что стоит попробовать аккуратно, а за чем пока лучше просто следить.

Читать далее

Личная AI‑продуктивность или как слить OpenAI не только кодовую базу, но и всю свою жизнь

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5.3K

Бывало у вас такое: дел в голове так много, что забывать их начинаешь как только вышел с очередной встречи? Через несколько дней надо принять решение, на основании того, что мелькало перед тобой 3 секунды. Через время ловишь себя на мысли «У нас 21 век, агенты, скилы, почему строить связи между встречами, записями и мыслями должен я?». У меня — бывало, и тут как раз об этом.

Привет! Меня зовут Дима, и я работаю руководителем команды web-разработки AI‑продуктов в R&D Яндекса. А ещё — я учусь в вузе на 4 курсе, люблю куда‑нибудь слетать, пытаюсь следить за здоровьем: и всё это, как я думаю, легко бустится агентами.

Читать далее

Next.js, image + metadata + build‑проверка перед продом

Время на прочтение6 мин
Охват и читатели5K

В Next.js изображения, metadata и production build находятся в разных частях проекта. next/image занимается загрузкой и геометрией изображений. Metadata API формирует <title>, description, Open Graph и Twitter metadata. next build собирает production-версию приложения. Ошибки в этих местах часто не мешают работе next dev. Страница открывается, локальная картинка показывается, title есть. На другом домене внешний Image получает запрещённый URL, Open Graph содержит localhost, production build падает на конфигурации или импорте. Разберём эти три части отдельно на примере проекта Goods Finder.

Читать далее

Публикуем секреты в Production без регистрации и SMS

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели6.2K

Тесты зелёные, линтер молчит, pull request одобрен. Можно выкатывать — главное, чтобы ничего не упало, но мы ведь 100 раз протестировали, изучили pull request, запустили линтер и уверены в качестве кода.

Но опасность поджидала там, где её совсем не ждали.

Недавно мне попалась статья, в которой автор разбирал JavaScript на чужом сайте — просто просматривал Source‑файлы, которые сайт отдаёт браузеру. Он обнаружил там API-ключи, хранящиеся прямо в JS. Меня поразило, насколько легко их можно найти. Если любой посетитель может открыть вкладку Source и изучить содержимое файлов, то что увидит он в файлах моего сайта?

О том, что я нашёл у себя, рассказывать не буду. Сегодня мы поговорим о том, что мало кто из разработчиков проверяет готовые чанки и исходники. А ведь именно там может скрываться много неожиданного. Вы уверены, что точно знаете, что содержится в вашем Production-артефакте? Не в .env.production и не в конфигах Vite, а в реальных строках и файлах, которые прошли минификацию.

Чтобы вместе проверить это, я подготовил тестовый релиз, в который специально включил несколько различных секретов.

Давайте посмотрим, что из этого утекло в итоговую сборку.

Читать далее

Почему после ребрендинга я оставил старое имя Docker Compose — иначе поднялась бы пустая база

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели6.3K

Переименование проекта в Docker Compose может создать новые пустые volumes, пока старые данные спокойно остаются на диске. Разбираю, какие внутренние идентификаторы нельзя менять через Replace All и как провести ребрендинг с возможностью отката.

Читать далее

«Магическая» SMS-рассылка: как превратить клик в лид

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели5.2K

Из-за ограничений мессенджеров в России многим приходится возвращаться к SMS-рассылкам. При этом в привычной воронке можно убрать целый этап: номер получателя уже есть в базе, поэтому незачем ждать, пока юзер повторно оставит его в форме на сайте.

Каждому номеру можно назначить персональную ссылку, чтобы по переходу определять, кто заинтересовался предложением, и передавать данные в CRM. Юзер продолжит изучать страницу, а его интерес уже будет зафиксирован. Даже если он закроет сайт, не заполнив заявку, лид не потеряется.

Читать далее

Short Polling vs Long Polling vs WebSocket: сравнение в SCADA-системах

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.5K

WebSocket принято считать очевидным выбором, когда сервер должен постоянно отправлять клиенту свежие данные. Но что произойдёт, если вместо обычного веб-приложения у нас SCADA, а клиентов становится 1000?

Был собран тестовый стенд с OpenPLC, Modbus TCP и ASP.NET Core. Сравнивались Short Polling, Long Polling и WebSocket при 1, 10, 30, 50, 100, 500 и 1000 одновременных клиентах.

В результате данные не только про задержку, но и про CPU, память, объём полезного трафика и количество новых TCP-соединений.

Читать далее