Обновить
256K+

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

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

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

Владельцев сайтов оштрафуют за вход через Google или Gmail? Разбираем новые правила и алгоритм действий

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

В июле 2026 г. вступил в силу Федеральный закон от 26 июня 2026 года №199-ФЗ «О внесении изменений в Кодекс Российской Федерации об административных правонарушениях». Им устанавливаются штрафы до 700 000 рублей за авторизацию через зарубежные сервисы и за нарушения в работе рекомендательных технологий. Разберу подробно нововведения в этой статье.

На самом деле закон, запрещающий вход и регистрацию на российских ресурсах через иностранные сервисы (включая Apple ID и Google), действует ещё с декабря 2023 года. Но до сих пор в нём не были предусмотрены штрафы. Многие владельцы сайтов либо не знали о запрете, либо просто его игнорировали — безнаказанно. Это как было с маркировкой рекламой: правило существовало, но только с появлением штрафов бизнес начал его исполнять.

Читать далее

Новости

Продуктовая гипотеза или баг фронтенда: как перестать угадывать почему пользователи не дошли до цели

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

Возьмём типичный отчёт воронки интернет‑магазина: «Каталог → Товар → Корзина → Оформление заказа → Оплата». До последнего шага дошло 38% сессий, остальные 62% потерялись между «Оформлением» и «Оплатой». Для продуктовой аналитики эти 62% — повод для гипотезы «форма оформления слишком длинная» и задачи на редизайн. Для команды разработки те же 62% — конкретная JavaScript ошибка. Но пока данные о конверсии и данные об ошибках лежат в разных системах, выбор между ними происходит наугад. Как перестать «угадывать» почему отвалились пользователи и какую в этом роль играет Customer Journey Map разберу в статье.

Читать далее

Вы скопировали команду с сайта. В буфер попало не то, что вы выделили

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

Ставил утилиту по инструкции с сайта проекта: блок с командой, кнопка «скопировать», вставка в терминал. Перед Enter посмотрел на строку — вставилось не то, что было в блоке.

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

Читать далее

5,75 миллиарда токенов за полгода: как я перестал жечь контекст в Claude Code

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

Полгода назад я начал писать веб-лист персонажа для D&D 5e, и почти весь код в нём пишет Claude Code. В какой-то момент лимиты подписки стали заканчиваться к обеду, и я распарсил транскрипты сессий, чтобы понять, куда уходят токены. Выяснилось: ответы модели — полпроцента расхода, а две трети съели 22 длинные сессии, в которых контекст рос на каждом шагу. В статье — скрипт замера на тридцать строк, разбор того, почему одна длинная сессия дороже пяти коротких, и восемь приёмов, которые я после этого внедрил: лимит сессии в Stop-хуке, карта кода вместо разведки грепом, запрет на повторное чтение файлов, вынос браузерных проверок в сабагента и рутины — на дешёвые модели.

Читать далее

Вышел Fable 5.1 и Mythos 5.1

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

Мы представляем Claude Fable 5.1 и Claude Mythos 5.1. Это самые продвинутые в мире модели для программирования и интеллектуальной работы, а их исследовательские возможности уже дают первое представление о том, как ИИ-модели смогут способствовать научному прогрессу.

Claude Fable 5.1 и Claude Mythos 5.1 это одна и та же модель, но с разным уровнем защитных ограничений. Fable 5.1 доступна всем пользователям, тогда как Mythos 5.1 предоставляется только в рамках наших программ доверенного доступа. Её механизмы защиты специально настроены для работы в сфере кибербезопасности и наук о жизни.

Помимо роста возможностей, в Fable 5.1 мы учли важную обратную связь от клиентов, связанную со стоимостью, хранением данных и защитными механизмами.

Читать далее

Инструкция по устранению нарушений по персональным данным на сайте

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

Роскомнадзор наделен полномочиями по проведению контрольного (надзорного) мероприятия по контролю без взаимодействия с контролируемым лицом. Это означает, что Роскомнадзор на основании полученных заданий делает выборку нескольких сайтов и осуществляет в отношении них проверку. При этом владельцев сайтов (операторов персональных данных) никак не уведомляет. Если на сайте нет нарушений в области персональных данных, то вы и не узнаете, что сайт проверялся. А если нарушения будут найдены, то получите от Роскомнадзора письмо «требования об исполнении законодательства о персональных данных». В соответствии с законодательством у владельца сайта есть 10 рабочих дней с момента получения требования, чтобы устранить нарушения и уведомить о принятых мерах Роскомнадзор.

Роскомнадзор достаточно лоялен к бизнесу. Выявив нарушения, он не сразу составляет протокол об административном правонарушении, а дает время адаптироваться (10 дней на исправление). Только в том случае, если требования органа не будут выполнены, то бизнес будет привлечен к административной ответственности. Поэтому главное правило – если получили такое письмо от Роскомнадзора, то ни в коем случае не игнорируем.

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

_________________________________

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

Читать далее

«Завтра в 18:00» — это когда? Разбираем даты и часовые пояса в Python

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

Фраза «завтра в 18:00» кажется простой, пока сервер и пользователь не оказываются по разные стороны полуночи. В Doday я сделал быстрое добавление задач из одной строки и обнаружил, что программа считает «сегодня» по UTC. Из-за этого дата сдвигалась, а указанное время могло остаться в названии.

В статье покажу, как передать часовой пояс из браузера, в каком порядке собирать локальную дату и время, зачем фиксировать текущее время в тестах и какие ещё ошибки нашлись у фраз «через месяц», «каждый понедельник» и меток с @.

Читать разбор

Счётчик Яндекс.Метрики отнял у меня 30 баллов Lighthouse. Выключение Вебвизора не помогло

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

Одна и та же страница, три варианта, медиана трёх мобильных прогонов Lighthouse 12: без счётчика — 99 баллов и TBT 0 мс, со штатным сниппетом Яндекс.Метрики — 70 баллов и 2289 мс. Самый популярный совет «выключите вебвизор в init» не даёт почти ничего: те же 70 баллов и 2196 мс.

Как отделить счётчик от остального шума на A/B-стенде из локальных копий страницы, почему сам Lighthouse показывает виновника неправильно (third-party-summary рисует 70 мс при TBT больше двух секунд, потому что вся работа падает в bootup-time и остаётся неатрибутированной) и как вернуть 99 баллов, не потеряв данные, ради которых счётчик и ставился.

Читать далее

Пакуем PHP в PHP, чтобы запаковать в JS, чтобы обернуть в HTML

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

Прочтя недавний перевод про запаковку БД в exe, решил рассказать об идеи, которую реализовал лет 6 назад в своем домашнем проекте. Сам проект недоделал, но речь в статье об архитектуре файлов и их запаковке.

Читать далее

На что способен бесплатный Devin: тест на реальном проекте

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

Привет, Хабр! Меня зовут Завур, я фронтенд-разработчик в Selectel. Каждый день я работаю в привычной многим среде разработки VS Code. Однако в личных проектах, которые создаю для исследования новых инструментов и методов написания кода, часто использую Cursor.

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

Давайте посмотрим, как на практике выглядит реализация идеи с помощью Devin, и попробуем разобраться, действительно ли перед нами потенциальный конкурент Cursor.

Читать далее

Один пакет — один мини-плеер: почему мы перенесли голос БОЛТУНа в AudioWorklet

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

Почему исправные 20-мс аудиопакеты всё равно превращались в щелчки? В БОЛТУНе каждый пакет запускался как отдельный AudioBufferSourceNode — до 50 мини-плееров в секунду на одного говорящего. Мы заменили это расписание одним непрерывным AudioWorklet с кольцевым буфером и проверили новую схему тестами.

Разобраться в звуке

«Токен в ссылке украдут через Referer» — устарело пять лет назад. Куда он уходит теперь

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

Совет про токен в адресе страницы кочует из статьи в статью в одной и той же формулировке: не кладите его в URL, иначе он уедет в заголовке Referer на все сторонние ресурсы, которые подключает ваша страница.

Совет правильный по выводу и неправильный по обоснованию. Через Referer он давно никуда не уезжает. А вот сам токен из URL утекает — просто в других местах, и там его обычно никто не ищет.

Читать далее

Как мы победили рутину: строим spec-driven платформу для генерации email

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

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

Мы устали и автоматизировали это. Теперь описываем контракт письма в OpenAPI, а CLI генерирует весь boilerplate — от NestJS-артефактов до React-компонента с типизированными пропсами. Часы работы сжались до минут.

Меня зовут Денис, я фронтенд-разработчик в ЮMoney. В этой статье расскажу, почему мы пришли к кодогенерации, как устроили процесс и что в нём изменилось для разработчиков, дизайнеров и тестировщиков. Материал будет полезен тем, кто работает с React, NestJS или TypeScript и хочет перестать писать однотипный код вручную. Особенно если поддержка UI-компонентов и API-слоя отнимает время, которое лучше потратить на реальную логику.

Читать далее

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

Как убрать логин из UI‑тестов на Java без лишних секунд и флака

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

Когда 180 тестов каждый раз проходят форму входа, авторизация начинает съедать десятки минут и ломаться на рейт‑лимитах, SSO и редиректах. Разберём рабочую схему: получить токен по API, закэшировать состояние и передать его браузеру до старта приложения.

Читать гайд

Fluent Swap: как я вышел за пределы CRUD и начал разрабатывать matchmaking на Go

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

Большинство backend‑проектов начинаются предсказуемо: HTTP‑запрос, бизнес‑логика, SQL и ответ клиенту. Но что изменится, если вместо очередного CRUD нужно одновременно искать собеседников, поддерживать долгоживущие WebSocket‑соединения и не допускать двойного matchmaking?

В этой статье я расскажу, как появился Fluent Swap, почему его первая версия работает без базы данных и как очередь в памяти одного Go‑процесса постепенно подводит архитектуру к Redis и горизонтальному масштабированию.

Читать далее

React Fiber: как React научился прерывать рендер и расставлять приоритеты

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

Банальный пример — когда печатаешь в input, а интерфейс начинает лагать на большом списке: классическая боль старого React. Я решил разобраться, как и почему React переписал свою архитектуру: отказался от рекурсивного обхода дерева, изобрел новую структуру данных и научился прерывать рендер ради нашего ввода.

В статье рассмотрю проблемы синхронной отрисовки и переход к новой архитектуре,  почему пришлось отказаться от методов жизненного цикла с приставкой *will, что такое Fiber, почему первый вариант приоритизации с ExpirationTime не сработал и как пришли к React Lanes.

Читать далее

Находки в опенсорсе: мир питона за август 2026

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

Всем привет, вот и заканчивается лето :(

Мой прошлый дайджест неожиданным образом зашел, а значит - людям такое интересно. В августе было много новых интересных PEP’ов (например, PEP 805: Safe Parallel Python), которые я поревьюил, было много новых релизов, было много новых опенсорс проектов чуваков из нашего сообщества, пару интересных подкастов и множество другого интересного!

С меня как всегда статья без нейрослопа и ИИ, с вас как всегда интересные комментарии и лайки! Но немного нейрослопа я все же добавил в некоторые свои проекты. Но осторожно и с пользой для всех.

Погнали смотреть, что у нас в питоне происходило!

Читать далее

Вы подменили User-Agent, и сервер всё равно знает, что это curl. Он понял это до того, как получил заголовки

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

Разговор, который у меня повторяется примерно раз в квартал. Интеграция ходит к партнёрскому API, партнёр её режет. Разработчик ставит в запрос User-Agent от Chrome. Не помогает. Дальше идут версии про адрес, про частоту, про капчу — и все мимо.

Сервер понял, что это не браузер, ещё до того, как увидел хоть один HTTP-заголовок. User-Agent он в тот момент не читал, потому что читать было нечего: HTTP начинается после установления TLS, а решение принимается по первому же пакету рукопожатия.

Читать далее

Фреймворк WebDesktopGL для запуска веб-сайтов как десктопных приложений в Astra Linux и Linux системах. Через Chromium

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

WebDesktopGL — это фреймворк для преобразования веб-сайтов в настольные приложения на основе Chromium. Совместим с Astra Linux и другими системами Linux. В статье рассказано о следующем:

Как использовать браузер Chromium в качестве отдельного графического движка (параметры запуска Chromium).

Как на виртуальном экране Xephyr или Xvfb (X-сервере) реализованном над Xorg, добавить поддержку GPU видеокарты.

Как реализовать буфер обмена между дисплеями с помощью xclip в Astra Linux и других системах Linux.

Цель работы — это создание аналога фреймворка Electron, альтернативного программного продукта WebDesktopGL, для Astra Linux и других систем Linux. Фреймворк WebDesktopGL был протестирован в средах Wayland и X11 в Ubuntu 24.04 (KDE), в X11 Ubuntu 22.04 (KDE) и Astra Linux 1.8.

Читать далее

Непротиворечивая классификация IoC

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

Инверсия контроля позволяет нам написать код один раз и использовать его во многих контекстах, с разными реализациями зависимостей, с разными уровнями изоляции и тд. Давайте систематизируем разные подходы к достижению этой самой инверсии.

Прислушаться к этому источнику
1
23 ...