Обновить
512K+

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

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

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

Как выжать из HTML/CSS динамику, или создание IRC клиента без JS

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

Когда возникает идея создать браузерный IRC-клиент без JavaScript, приходится сталкиваться с классической проблемой фронтенда: все насколько привыкли гнать динамику через JavaScript, что перестали замечать возможности HTML/CSS с щепоткой серверной магии по реализации многих фич. HTTP Streaming существует с давних времён, а CSS эволюционировал настолько, что может справиться с логикой состояний — но мы упорно продолжаем грузить мегабайты JavaScript (и иногда даже WebAssembly) для решений, которые вполне можно реализовать иначе.

Идея создать IRC клиент без JavaScript не совсем нова (хоть это и выяснилось уже после создания такого :) ). Ещё в нулевых появился CGI:IRC — настоящий IRC клиент, который может работать полностью без JavaScript, позволяя людям общаться в реальном времени через браузер, даже если JavaScript по каким-то причинам не работал. Но это было в эру table-layouts, и когда CSS не был так развит, как сейчас. Сегодня возможностей больше, и мы воспользуемся ими, чтобы навернуть функциональность, которая не видана CGI:IRC.

Результат можно глянуть (хоть и с дополнительной стилизацией и изменениями, которые не так важны для статьи) здесь, а ещё на GitHub

Читать далее

Повторная обработка сообщений в Kafka Consumer

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

Привет! Меня зовут Дмитрий Михеев, я ведущий разработчик в MAGNIT OMNI — бизнес-группе ритейлера «Магнит», которая отвечает за развитие омниканального опыта для клиентов.

В своих сервисах для межсервисных коммуникаций помимо gRPC-запросов мы используем брокер сообщений Kafka. Если описывать его в двух словах, Kafka — это распределённый журнал событий (event log), через который сервисы обмениваются данными в реальном времени.

Не буду подробно останавливаться на устройстве Kafka — это хорошо описано в документации. В этой статье хочу подсветить один неочевидный момент, который может привести к проблемам при работе с consumer’ами — повторную обработку сообщений (retry).

Читать далее

Управление сайтами, мультисайтовость и структура проектов в Matomo

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

Сегодня я подробно разберу раздел Websites в opensource системе аналитики Matomo. Как Matomo хранит сайты внутри системы, чем различаются Website, Mobile App и Roll-Up, как правильно строить архитектуру аналитики, какие ошибки почти все совершают при масштабировании Matomo.

Читать далее

Бум ИИ — это твой шанс стать тем, кем ты хочешь

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

Наступило время, когда рынок ИТ-специалистов начал чётко разделяться на суперпрофессионалов и вечных джунов. Промежуточного звена больше не будет.

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

Забудьте о привычном карьерном росте, который вы знали. Правила уже поменялись. Вас заменила не нейронная сеть. Вас заменили четырёхрукие сеньоры-Шивы, которые в одиночку выдают результат за целую команду.

Каково ваше место за этим столом? Давайте разбираться вместе.

Читать далее

Как мы делаем онлайн звонки: Введение в WebRTC и LiveKit

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

Хотим рассказать о том, как мы делаем платформу для онлайн звонков и видео конференций с ИИ, но чтобы не слишком сложно было. Начнем с самого низкого уровня - с механизма передачи данных между клиентами в созвоне. В этой статье мы расскажем про WebRTC, NAT, STUN/TURN и немного про LiveKit

Читать далее

NoiR Code: QR-код из мира мрачной ночной романтики

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

Что, если бы сканируемый код не был обязан выглядеть как набор квадратов и полосок? Что, если он выглядел бы как залитый дождём ночной город — и при этом всё равно безошибочно считывался?

Это NoiR Code. Он кодирует текст в изображение, которое читается как чёрно-белый нуар-кадр: полутоновый силуэт города, луна, штрихованные тени. Наводишь камеру в специальном приложении или веб-сервисе, созданном для поддержки этого формата, и получаешь своё сообщение обратно. Попробовать можно здесь: noir-code.suncake.xyz

Распутать дело

Пауза, двойственная по природе: контракт хука и протокол воркера

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

Предположим, вы пишете интерпретатор машины Тьюринга, запущенный в Web Worker’е. UI должен показывать трейс — как машина шагает от состояния к состоянию, что пишется на ленту, как двигается каретка. Чтобы пользователь успевал считывать изменения в UI, между итерациями движка нужна короткая задержка — миллисекунды, регулярно, на каждом шаге. Это приостановка движка между итерациями — регулярная и предсказуемая, не «пауза» в смысле UI-кнопки «Пауза» (та останавливает машину до клика «Продолжить»).

Возникает вопрос: где именно в цикле итерации воркеру нужно реализовать приостановку? Кандидатов два, и выбор между ними фиксирует сразу два контракта: хуков движка и протокола между воркером и основным потоком. Выбрать точку — это спроектировать обе стороны сразу; промахнуться — испортить обе. Эта статья — про этот выбор.

Где живёт пауза

Всё о Supabase: установка, примеры, аналоги

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

Шесть лет назад, в начале 2020 года, группа разработчиков оглянулась на Firebase и подумала: «А давайте сделаем то же самое, но открытым кодом и на SQL!» Так родился Supabase: проект с искренней целью дать разработчикам контроль над данными и избавить от проприетарных заморочек.

А с распространением Vibe Coding, когда нейросети удобнее работать с API, а не писать логику для СУБД, взлёт Supabase пошел по экспоненте.

Читать далее

CSR для SSL: разбор частых ошибок в SAN и wildcard

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

Большинство проблем с SSL-сертификатами возникает не при настройке TLS, а на этапе создания CSR: забытые SAN-домены, неправильные ожидания от wildcard, ручные ошибки в openssl.cnf. Разбираем, почему с сокращением срока действия сертификатов до 47 дней к 2029 году ручной выпуск перестаёт быть жизнеспособным, и какие инструменты приходят ему на замену.

Читать далее

«Превед, медвед!» возвращается? Как мы сделали мультиконтекстный сайт на статике для 47 аудиторий быстро-дёшево-сердито

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

Мультиконтекстный сайт на статических страницах без генерации на лету. Почему мы выбрали ручную вычитку и фиксированные версии

Читать далее

Я создал два сайта через Claude, потому что не хотел мучить дизайнера и верстальщика

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

Я не программист, но я создал два сайта. Один с нуля, второй перенёс с Tilda, оба через Claude Code и с админ-панелью через Claude же. В процессе я прошёл через ИИшный газлайтинг, сотню правок уровня «перемести это выше, еще выше, теперь ниже» и получил два проекта, которыми теперь могу проще управлять.

Рассказываю, как, зачем и почему (и стоит ли так делать).

Читать далее

Server Actions без ручного API, предсказуемый useActionState для inline CRUD в Next.js

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

В Next.js формы и inline CRUD довольно быстро упираются в одну и ту же развилку. Можно пойти привычным путём и собрать ручной API: отдельный route handler, fetch из клиента, локальные флаги pending, error, success, плюс своя логика для blur, Enter, Escape и закрытия редактора. На небольшом примере это выглядит терпимо. Но как только в проекте появляются создание, переименование, удаление и несколько inline-форм на одном экране, код начинает расползаться не по бизнес-логике, а по обвязке.

Проблема в количестве промежуточных слоёв между формой и записью данных. Отдельный endpoint, отдельный клиентский submit, отдельный формат ответа, отдельные флаги состояния, отдельная синхронизация UI после успеха или ошибки. Для таких сценариев Server Actions в App Router нужны потому, что для форм и inline-редактирования дают более короткую и предсказуемую write-точку.

В проекте примере Workbench покажем на создании, переименовании и удалении проектов, секций и заметок. У формы есть action, серверная функция получает FormData, возвращает типизированное состояние, а клиент живёт вокруг одного паттерна: state, formAction, isPending. В результате форма собирается как связанный цикл, а не как набор разрозненных обработчиков.

Читать далее

Маленький файл robots.txt и большие последствия одной строки

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

Разбираемся, как работает robots.txt, почему его часто путают с инструментами индексации и какую роль он играет в эпоху ИИ-сканеров.

Читать далее

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

Про конструкторы сайтов с ИИ – что реально уже работает, а что только для пиара

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

Не совсем пятничное чтиво, но…

Как-то так случилось, что решил разобраться для себя лично – какие подвижки появились в вопросе внедрения искусственного интеллекта в сфере сайтостроительства. ИИ действительно показал себя неплохо в отдельных задачах, но есть у него и минусы. Всё это тема для отдельного обсуждения, но здесь – только обзор реальной картинки. Делюсь бесплатно и без SMS ))

Читать далее

Не ошибка выжившего: как я стал разработчиком в 2020-м — и как использовать мой опыт сегодня

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

Я не мечтал попасть в IT. У меня вообще не было ощущения, что это «моя история». Но в какой-то момент появилась возможность, которой я просто воспользовался, — и дальше всё закрутилось.

Меня зовут Максим Никитин, я техлид разработки в крупном банке и выпускник курса «Веб-разработчик» в Яндекс Практикуме. Хочу рассказать свою историю, проанализировать опыт и пофантазировать, что бы я посоветовал себе, если бы начинал путь в IT сегодня.

Читать далее

Ваше сообщение об ошибке читает уставший человек в два часа ночи

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

Два часа ночи, у разработчика горит релиз, он подключает ваш API — и получает в ответ голое «invalid_request». Что не так, почему, что делать — ни слова. Сорок минут гаданий и злое письмо в поддержку.

Разбираем, как сделать опыт разработчика (DX) человеческим: как переписать ошибки по стандарту RFC 9457, но для живого человека; почему время до первого успешного вызова — главная метрика онбординга; и отчего предсказуемый, «скучный» API — это комплимент. С готовым шаблоном, который можно прикрутить к себе сегодня.

Читать далее

Делал микро-продукт 1,5 года, потратил 100 000 ₽, им воспользовались 5 000 человек, но не заплатил никто

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

Думаю, многие хотя бы раз мечтали о собственном микро-продукте.

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

Я тоже так думал.

Полтора года назад мы с другом начали делать свой небольшой продукт. Потратили на него примерно 100 000 ₽, вложили кучу времени и сил. Сервисом воспользовались более 5 000 человек. А заработали мы примерно 1 000 ₽.

И теперь я пытаюсь понять, где именно мы облажались.

Читать далее

Frontend Status: свежий дайджест фронтенда и AI — 04.06.2026

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

Привет!

Это 17 выпуск Frontend Status — дайджеста по фронтенд-разработке.

В этом выпуске:

📺 Страница отрисована, а интерфейс всё ещё «оживает»: отложенная гидратация в TanStack Start на карусели Jack Herrington и подкаст с Андерсом Хейлсбергом — от Turbo Pascal до того, как ИИ меняет ремесло, когда код пишут не построчно — чтобы понять, где теряется скорость и куда движется разработка.

🤖 Половина кода уже с ИИ, а доверия меньше: опрос State of AI 2026 (54% сгенерированного кода), Яндекс и тысячи конфликтов при мерже Chromium, перцептрон 1959 года и «чтение мыслей» модели Anthropic — чтобы смотреть на внедрение ИИ цифрами и без иллюзий.

🛡️ Пустили агента в репозиторий — а что он может сломать: разбор Positive Technologies и история, когда ИИ «находит» CVE, который уже был в обучающих данных — чтобы не открывать доступ вслепую.

💫 Анимация замирает вместе с React: управление бесконечными CSS-циклами без прыжков и сравнение CSS, Motion и GSAP на главном потоке — чтобы интерфейс оставался плавным без лишнего JavaScript.

⚡ Нужна коллаборация как в Figma и Miro: Hocuspocus от Tiptap на Y.js и CRDT без гонок правок — WebSocket, офлайн и Redis — чтобы собрать совместное редактирование в своём редакторе без тяжёлого бэкенда.

⚡ Поиск раздувают до эмбеддингов и LLM: Fuse.js ~6 КБ с нечётким поиском, кириллицей и Web Workers в 7.4.0 — чтобы находить по списку в браузере без сервера и векторной базы.

⚡ TypeScript кажется очевидным, пока не упёрлись в типы: 15 коротких приёмов от Matt Smith — satisfies, проверка «все варианты учтены», строгий режим — чтобы писать безопаснее и без лишних аннотаций.

⚛️ React-шаблон на 35 000 звёзд без хаоса в репозитории: разбор Bulletproof React на Habr и MUI X 9.3 — чтобы взять проверенную архитектуру и не собирать стек с нуля.

🔥 Ember 7.0 без сюрпризов при мажоре: в основном сняли устаревшее, путь через 6.12 и Vite по умолчанию — чтобы обновиться без лотереи.

🅰️ Angular 22 меняет правила игры: OnPush по умолчанию, signal forms и инструменты для агентов в API — чтобы заложить новый проект на актуальных примитивах, а не по инерции.

𝐒 Svelte: $state.eager и pending больше не рвут зависимости, батчи идут связным списком — чтобы асинхронный UI вёл себя предсказуемо после обновления.

📦 Solid 2 в бета-версии, звонки WebRTC в production и шрифтовые иски на 15,3 млн ₽: асинхронность как примитив, грабли CallKit и SFU, PHP-парсер для проверки сайта — чтобы не удивляться ни релизу, ни иску.

🌎 Браузер снова забирает вёрстку у хаков: column-rule и row-rule в зазорах grid/flex и HTML внутри canvas за флагом — чтобы меньше DOM-обходов и проще UI поверх 3D.

🌐 Стандарты без костылей: сравнение объектов по значению (Composites в TC39) и элемент <install> для PWA без своего JavaScript — чтобы меньше полагаться на ссылки и самописные кнопки установки.

🛠️ Агенты под контролем: statewright с фазами и лимитами, свой Claude Code за вечер на DeepSeek и экспериментальный агент доступности GitHub н

Читать далее

Внедряем BX.UI.AccessRights.V2: современный интерфейс прав доступа Битрикс24 для своего компонента

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

В процессе кастомизации коробочной CRM Битрикс24 часто клиенты просят внедрить им права доступа. Захотелось внедрить с интерфейсом, как это выглядит в Задачах или Сделках. Изучил документацию — там всё изложено лишь в общем виде, пришлось анализировать исходники, сжечь несколько миллионов токенов различных нейронок, и даже после этого вникать в нюансы и дебажить код.

В статье подробно разбираются нюансы архитектуры компонента BX.UI.AccessRights.V2, подводные камни при внедрении в свой модуль (готовый репозиторий прилагается).

Читать далее

Плагин умного поиска на сайте (only frontend)

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

Короткая статья о плагине, с помощью которого можно сделать строку поиска на сайте по товарам чуточку удобнее.

Читать далее