Обновить
256K+

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

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

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

Глубокое погружение в React Fiber

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

Задумывались ли вы когда-нибудь о том, что на самом деле происходит под капотом, когда вы рендерите приложение React? Мы знаем, что React строит дерево DOM и отображает UI на экране, но как React конструирует это дерево и как он эффективно обновляет его при изменении состояния?

В этой статье мы рассмотрим React Fiber — основной движок согласования (reconciliation) React. Мы рассмотрим, как React строил DOM до v15, недостатки этой ранней стековой (stack) модели с точки зрения производительности и то, как асинхронная архитектура Fiber решает эти проблемы, начиная с React v16 и до React v19.

Читать далее

Новости

Как устроен локальный шахматный помощник в браузере: Stockfish 18, Manifest V3 и веб-доски

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

Stockfish умеет находить сильные ходы. Но браузерному расширению ещё нужно понять, какая из нескольких досок относится к текущей партии, дождаться стабильной позиции, пережить остановку service worker и не показать устаревший результат.

Дальше не про кнопки, а про проверки: какая доска настоящая, не протух ли ответ, пока считал движок, куда девать WASM, когда Chrome гасит service worker, и почему «сыграй как 1500» нельзя получить, урезав глубину. Отдельно, без эвфемизмов: подсказка в партии с человеком — это чит.

Читать далее

Генератор QR‑кодов листами на PHP: детерминированное ядро и пять граблей по дороге

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

Этой весной мне понадобился лист QR‑кодов с подписями: по коду на каждую позицию, чтобы скачать PDF, распечатать и разрезать. Онлайн‑генераторы делают коды по одному или просят подписку за пакет, так что я написал свой сервис на PHP 8.2. В посте про то, что интереснее разработчику: чистое детерминированное ядро с golden‑тестами байт‑в-байт, кириллические домены и punycode, кириллица, которую TCPDF молча теряет в SVG, артикулы в виде 4.6E+12 из Excel, “прозрачный” PNG с маджентовым фоном и самописный EAN-13 с оракулом в тестах.

Читать далее

Когда «Просто добавь сайт в прокси» недостаточно или «В поисках внешних зависимостей»

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

Когда используешь корпоративный VPN для рабочих сервисов и локальный прокси для “внешних” сайтов, то иногда просто добавить основной домен в прокси оказывается недостаточно:

YouTube может остаться без превью, Letterboxd — без постеров, а ChatGPT — без загрузки файлов.

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

Читать далее

o2 game engine

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

Привет, хабр! Уже 11 лет я пилю свой игровой движок, и я готов представить его публике. Я все еще дорабатываю его, но он уже вполне стабилен и я делаю игры на нем.

Движок открытый и бесплатный, нацелен преимущественно на мобильные игры, поддерживает пачку платформ — ios, android, web, mac, windows, linux. Он компактный (всего несколько мегабайт), производительный, позволяет писать логику игры как на C++, так и на JavaScript. Внутри есть убер‑редактор для всего — вот он на скриншотике выше

На мой взгляд, лучший способ рассказать о технологии — показать демо и рассказать как все устроено внутри. Под катом ссылки на репозиторий и демки (под веб), а также асскажу как он устроен внутри. Велкам!

Читать далее

Кого обслуживает твой сайт на старте, юзеров или ботов? Как оценить нужную производительность? Реальные измерения

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

Сразу скажу что именно чтобы тем кому надо знать только итог не тратили свое время на чтение. Сайт лежит в виде виртуальной машине убунта без морды на арендованном довольно шустром хосте с 64 Озу 12 ядер 500 ССД и канал 1G. Хост крутит тоже убунта без морды.

Ну и для сайта выделено было пару ядер и пару гигабайт памяти.

Что делает сам сайт — он подключен ко всем буквально источникам новостей об ИИ как к лидерам рынка, так к вендорам и агрегаторам. Суммарно 100 источников. Он собирает все новости что найдет и те что не на английском переводит на английский. Затем чистит от дубликатов. То что осталось раскладывает на рубрики, переводит на 15 языков и выкладывает себе в ленту, выкладывает в Канал в телеге на русском только и все новости на всех языках пихает в ленту RSS.

Чтобы все это делать он пользуется несколькими ИИ подключаясь к ним по API. То есть сайт чисто текстовый. Никаких вычислений тяжелых нет. Нет рендеров и нет картинок даже.

И вдруг выясняется что сайт на этой машине буквально еле ползает. Сайту неделя. Я там единственный пользователь. И чтобы ему нормально было работать оказалось что надо до 6G ему добавить память и выделить еще два ядра. Провел я расследование и вот что оказалось

Что кругом одни боты

Больше свободы агентам — жёстче проверки: линтинг React 19 на ESLint 10

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

Чем больше автономии я даю ИИ-агентам, тем больше требований к коду превращаю в механические проверки. Когда eslint-plugin-react сломался на ESLint 10, я собрал продолжение для React 19: сократил 102 активных правила до 11 и исправил ошибки, которые проявились только в реальных проектах.

Читать далее

Бэкапим чат «Избранное» из VK

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

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

Привет! Меня зовут Игорь. В статье рассказываю про инструмент для бэкапа сообщений из VK с сохранением вложений.

Читать далее

Пагинация. Ошибки тестирования списков и курсоров

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

Пагинация ломается не только внутри запроса к базе. Это цепочка: бэкенд определяет порядок и границу страницы, фронт хранит курсор и объединяет ответы, а пользователь меняет фильтры, повторяет запросы и возвращается на экран. Разберём шесть ситуаций, в которых локальные проверки зелёные, а список целиком работает неправильно.

Проверить пагинацию

Развитие FastAPI приложения в ходе разработки production-системы

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

Полтора года назад я написал о своём подходе к структуре FastAPI-приложений. С тех пор два крупных проекта, production и несколько архитектурных граблей заставили меня многое пересмотреть. В этой статье расскажу, что изменилось и какие решения действительно упростили мне разработку.

Читать далее

3000 точек на карте грузились полсекунды. Ускорял не там, где думал

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

Эндпоинт отдавался за 380–510 мс и 811 КБ. Я думал, что причина одна – тяжёлый запрос. Разобрался: причин было три, и они лежали одна под другой. Пока не убираешь верхнюю, следующую просто не видно. Индексы, обход ORM и внезапно – gzip, который не был включён вообще.

Читать далее

Свой продукт для управления корпоративами: от MVP за 2 месяца до успешной версии 4.0

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

Привет, Хабр! Меня зовут Женя, я занимаюсь развитием цифровых продуктов в Sminex. В статье поделюсь опытом разработки и запуска Sminex Event — собственного продукта для управления корпоративами.

Читать далее

ИИ-трафик обогнал человеческий: что это значит для сервера и видимости сайта у нейросетей

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

Привет, Хабр! Меня зовут Дмитрий, руковожу отделом рекламы и продвижения в Аспро. Мы запускаем интернет-магазины и развиваем систему управления бизнесом Аспро.Cloud.

4 июня 2026 года генеральный директор Cloudflare Мэтью Принс сообщил цифру, после которой стоит остановиться: бот- и агентный ИИ-трафик впервые превысил человеческий — 57,5% против 42,5% всех HTTP-запросов в интернете, по данным Cloudflare Radar. Половину запросов к вашему сайту делает не человек.

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

Читать далее

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

Роспотребнадзор и ФАС дойдут и до сайтов: как настроить автопоиск и замену иностранных слов с помощью LLM

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

Привет, я Александр Бондаренко, эксперт по комплаенсу и руководитель проектной группы в Далее. Еще до выхода «закона о защите русского языка» мы стали искать быстрый способ вычистить сайты от недопустимых заимствований и «латиницы».

В итоге создали алгоритм с многоступенчатым фильтром, OCR и LLM. Система находит в контенте только недопустимые слова и тут же предлагает русские аналоги. На выходе получаем результат в 20 раз быстрее, чем при адаптации текста вручную. 

Рассказываю, как реализовано решение и чем кардинально отличается от скармливания страниц в ChatGPT или другие ИИ-боты. 

Дисклеймер: В тексте используются профессиональные термины на английском языке. Статья носит информационный характер и адресована специалистам, а не физлицам-потребителям.

Читать далее

Платформер в стиле DOOM: портируем старую курсовую на чистый JavaScript

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

Несколько лет назад у нас с одногруппником был зачёт по C++, и вместо того чтобы сделать что-то скромное (например, «Калькулятор» или «Генератор паролей»), мы, конечно же, решили замахнуться на какую-то игру, и тогда нам попалась новость о 30-летнем юбилее игры DOOM. План был красивый, т. к. на тот момент командной работы у нас не было, мы решили, что мой одногруппник пишет псевдо-3D-движок в духе классического рейкастинга, а я делаю 2D-платформер, который в итоге должен был запускаться прямо внутри его мира, как игровой автомат, который запускался бы перед игрой, и сколько патронов ты собрал, столько у тебя и будет в игре.

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

По отдельности оба выбора были правильными, а вместе — нет. Слинковать в одном проекте SDL и SFML можно, но два разных event loop, два разных подхода к окну и таймингу — это уже не работа для автомата по зачёту, а отдельная курсовая работа, на которую у нас оставалось дня два-три. Мы посчитали и сдали как два независимых проекта. Препод посмотрел, оценил — и выдал ровно ту фразу, которую в такой ситуации выдал бы любой человек, который знал о проекте: «Идея классная, жалко, что не объединили», но нам это было неважно на тот момент, как говорится, зачёт получили — и на этом спасибо.

Читать далее

Анти Бот для 1C Битрикс: как антиспам для WordPress обзавёлся родственником на Битриксе

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

Некоторое время назад я писал здесь про антиспам для WordPress — историю о том, как из недоступного клиентам Cloudflare и дырявых бесплатных решений родился свой плагин геоблокировки, а чуть позже — вторую часть с разбором критики и рассказом, что успело поменяться. В конце самой первой статьи была одна проходная фраза: «параллельно ведется разработка аналогичного решения для 1С Битрикс — задача там несколько сложнее архитектурно, но подход тот же». С тех пор модуль доехал до Маркетплейса, обзавелся парой обновлений и первыми покупателями. Расскажу, что получилось — и почему для Битрикса такая защита понадобилась даже раньше, чем для WordPress.

Читать далее

Капча, которую рисуют: drop‑in альтернатива reCAPTCHA на динамике жеста

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

Почему мы классифицируем движение руки, а не картинки со светофорами — и как встроить это в форму двумя строками

Картиночные капчи в 2026-м решаются моделями компьютерного зрения за миллисекунды, а каждый ваш клик по «выберите автобусы» бесплатно размечает чужой датасет. Плюс две свежие проблемы: Google в начале 2025 срезал бесплатный лимит reCAPTCHA с 1 000 000 до 10 000 проверок в месяц, а с апреля 2026 ужесточил модель ответственности за данные по GDPR. Из России reCAPTCHA к тому же нестабильна.

Общая проблема для сети — как доказать, что ты человек, не сдавая паспорт, лицо и номер телефона. Мы предлагаем: drop-in капчу, которую посетитель не кликает, а рисует. В описании — архитектура, ML-часть, приватность и код интеграции. Проект открытый. Буду рад аргументированным замечаниям.

Читать далее

Не крутил с агентом циклы — жизни не видал

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

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

Внутри: агентский цикл на пальцах и в пяти строках псевдокода, немного суровой правды жизни вокруг него, почти лабораторное сравнение с Алисой (поиск-то один и тот же) — и живой продукт, который в конце можно бесплатно и без регистрации попробовать сломать.

TL;DR: циклы — это просто, как два пальца; всё, что крутится вокруг них, — немного сложнее…

Читать далее

Как находить работу в IT в 2026 году

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

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

Читать далее

После комментариев на Хабре мы развернули тестовую ветку БОЛТУНа: Electron, WinUI 3 или Tauri 2?

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

После первой статьи о БОЛТУНЕ мы развернули отдельную тестовую ветку и начали выбирать новый стек интерфейса. С помощью ИИ сравнили Electron, WinUI 3 и Tauri 2, проверили выводы по документации и собрали прототип на Tauri. Рассказываем, почему не переносим звук из C++ в WebView, как устроили границу WebView → Rust → C++, что уже работает, а что ещё предстоит измерить.

Читать эксперимент
1
23 ...