Обновить
256K+

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

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

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

Свой тренажёр печати для детей: три ошибки и одна догадка, которая сработала

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

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

Идея пришла не только с занятий: у меня самой дислексия, и именно клавиатура когда-то помогла мне справиться с письмом. Как я живу с этим и почему печать стала для меня спасением, расскажу в отдельной статье.

Здесь — о том, что я придумала, что из этого сработало, а в чём я ошиблась.

Узнать, где я ошиблась

Новости

С Karma на Vitest: как мы обновляли unit-тесты Angular и починили Allure

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

Привет! На связи Дмитрий Чепайкин, старший Angular-разработчик в команде Klecks — платформы для разметки данных AI Центра Т-Банка.

Долгое время unit-тесты фронтенда у нас крутились на Karma + Jasmine. Схема работала, пайплайн зеленый, переписывать «ради моды» не хотелось. Но в какой-то момент Karma официально признали deprecated, а корректная отгрузка отчетов в Allure перестала быть чем-то, на что можно положиться. Расскажу, как мы выбирали замену, почему сначала смотрели на Jest, а в итоге приняли Vitest — и как устроен итоговый сетап.

Читать далее

От Apache 1.3 до Cloudflare: эволюция самого известного домена в интернете

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

Выполните curl -I https://example.com прямо сейчас. В ответе вы увидите server: cloudflare и cf-ray — домен, который мы все используем для примеров кода, работает за одним из крупнейших CDN в мире.

Но так было не всегда. В 2002 году example.com отдавался с Apache 1.3.22 на Red Hat Linux, а в 2013-м переехал на EdgeCast CDN. За последние 25 лет домен сменил несколько инфраструктурных провайдеров и пережил множество оптимизаций.

Давайте посмотрим, как менялась архитектура example.com и какие технические решения стоят за этими изменениями.

Читать далее

Требования к паролям в 2026 году: что изменилось и как теперь защищать свои аккаунты

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

Придумать пароль из восьми символов, обязательно добавить заглавную букву, цифру и специальный знак, а через три месяца повторить процедуру. Еще недавно подобные требования считались нормой корпоративной безопасности. Сегодня от многих из них рекомендуют отказаться.

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

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

В АБП2Б мы хорошо знакомы с вопросами защиты учетных данных: наша команда разработала ОдинКлюч — российский менеджер паролей для безопасного хранения и управления доступами, которым уже пользуются, в том числе, крупнейшие компании страны и федеральные органы власти. Этот опыт помогает нам оценивать рекомендации по парольной безопасности с учетом реальных задач пользователей и компаний.

Почему сложный пароль больше не гарантирует безопасность

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

Читать далее

Почему ИИ-боты и люди видят почти одну и ту же информацию на сайте и насколько критично это «почти»

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

Допустим, ваш сайт собирается в браузере скриптами, и ИИ-боты, которые скрипты не исполняют, видят на нём пустую страницу. Сервисы вроде Profound решают это так: узнают бота и отдают ему отдельную отрендеренную копию.

Я собрал тестовый сайт с такой подменой и сверил копию со страницей для людей. Текст почти совпал, а цена в копии осталась старой. Если нейросеть процитирует копию, покупатель увидит в ответе цену, которой на сайте давно нет. Страница для людей при этом в порядке, так что об ошибке вы узнаете последним.

Читать далее

Утечки WebRTC и почему его отключение — плохая идея: разбираем механику деанона и нативную подмену

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

В современном антидетекте есть такое понятие, как утечка IP-адреса через WebRTC. У тех, кто работает с мультиаккаунтингом и с антидетект-браузером, такая утечка может вызывать нервный приступ или неконтролируемую агрессию по отношению к поставщику прокси, антидетект-браузера или к обоим сразу. И действительно, такая ситуация не может радовать.

Читать как ваш IP утекает через WebRTC

api‑contract‑check — библиотека для генерации валидаторов из TS‑кода и проверки API‑запросов

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

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

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

Валидировать

Экстренный рефакторинг 32 проектов с mysql_* на PHP 8.5 без единой строчки правок в бизнес‑логике

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

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

Две критические уязвимости в PHP, раскрытые утром этого злополучного дня. Точных деталей в паблике еще небыло. Говорилось, что вендор уже выкатил фикс в 8.5.12, а все, что ниже — официально в красной зоне. Такая информация была на момент осознания масштаба проблемы.

У меня на поддержке около сотни сайтов. Разброс по серверам — от убитого shared-хостинга, где админ спит еще с нулевых, до пары десятков VPS. Версии PHP — от гордого 8.3 на свежих проектах до музейных экспонатов.

Первая мысль была рациональной: «Завтра с утра спокойно пропишем обновление в CI/CD, прогоняем тесты, выкатываем». Вторая мысль, более честная, пришла через секунду: «если дыры опубликовали сегодня, эксплойты появятся в паблике завтра к обеду». Спать я в ту ночь лег в 04:30.

Читать далее

«Качалка видео для Windows и Mac: почему TikTok не пускал собранную программу, а QuickTime принимал видео за музыку»

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

Вставляешь ссылку на видео с YouTube, TikTok, VK или Instagram, выбираешь 1080 p, 720 p или 480 p и жмёшь «Скачать». Через несколько секунд на Рабочем столе лежит mp4, который открывается в QuickTime, на айфоне и в любом плеере Windows. Пока идёт загрузка, по пиксельному офису бегает человечек и складывает в папку листки.

Это Качалка — бесплатная программа с открытым кодом. Никаких аккаунтов, рекламы и водяных знаков. Ниже — из чего она собрана и два бага, на которые я потратил больше всего времени: оба проявлялись только в собранной программе и ни разу при запуске из кода.

Давно хотел делать бесплатно для людей, время пришло.

Читать далее

Как я с нуля собрал кино-сервис с рекомендациями: Node.js, SQLite и немноголинейной алгебры

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

Знакомая ситуация: вечер, вы вдвоём или компанией хотите посмотреть кино — и следующие сорок минут листаете каталоги стримингов. Рекомендации «по вашим просмотрам» тут не помогают: смотрит-то компания, а не один человек.

Разбираем архитектуру KINO PARTY (partykino.com) — каталога фильмов и сериалов на 900 000 тайтлов с рекомендациями без нейросетей и ML-инфраструктуры: разрежённые векторы, косинусное сходство, инвертированный индекс, real-time комнаты кино-свайпера на SSE и честное SEO.

Читать далее

Как я с template и slot подружиться пытался

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

Я пишу на чистом JavaScript и PHP уже больше 20 лет. За это время я пережил jQuery, Backbone, Ember, AngularJS и видел, как React и Vue захватили умы джунов. Долгое время я искренне считал, что <template> и <slot> — это какая‑то странная ерунда штука для полифиллов Web Components, которая в реальной жизни не нужна от слова «совсем».

Зачем клонировать узлы, если есть innerHTML? Зачем Shadow DOM, если есть BEM?

Оказалось, что я просто боялся нативных инструментов. Ага. Но вот, наконец‑то, перестал и моя жизнь стала проще, а бандлы легче.

Читать далее

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

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

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

Почти каждая деталь этой системы появилась после того, как что-то сломалось на проде. Так что дальше в основном собраны истории провалов. Предлагаю вашему вниманию разбор в деталях и наши выводы про работу с LLM в Web разработке и про построение AI-native продуктов. Будет полезно! -->

Читать далее

35 бесплатных уроков для бэкенд-разработчиков: Java, Python, Go, архитектура и ИИ

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

Бэкенд-разработка давно выходит за рамки одного языка: приходится разбираться с производительностью, пересматривать архитектурные решения и осваивать новые инструменты. В подборке — 35 бесплатных уроков OTUS на октябрь и ноябрь: от практики на Python, Java и Go до работы с высокими нагрузками и интеграции ИИ.

Смотреть подборку уроков

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

ARFA Generator — ядро автоматизации процессов frontend‑разработки, или пропущенный этап развития тулинга

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

Спустя полгода адаптации к OpenSource выпускаю еще две библиотеки из моего рабочего контура в одном npm-пакете - ARFA Generator и api-contract-check. В этой статье расскажу про первый инструмент, а второй презентую в рамках отдельной статьи.

Когда-то давно я уже писал статью про удобство использования файловых генераторов, интегрированных в долгоживущий процесс dev-сборки, однако за несколько лет развития и обкатки в реальных проектах концепт существенно расширился. Удобнее всего оказалось сместить бандлер с центрального места в один из сайд-эффектов после стабилизации кодовой базы, а разнородные инструменты проверки качества объединить в единый пайплайн с инкрементальным watch-режимом.

В статье не буду пересказывать документацию на русском и английском, а расскажу, как я пришел к такой схеме, насколько она улучшает DX, помогает людям быть продуктивнее, LLM-агентам сжигать меньше токенов, а кодовой базе не расползаться со временем и проще мигрировать между архитектурами.

Детерминировать

Как я превратила чёлку MacBook в панель с буфером

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

Вырез вверху экрана MacBook занимает место и ничего не делает. На iPhone такая же чёлка, точнее островок давно стал Dynamic Island, а на Mac так и осталась чёрным прямоугольником. Я решила это исправить и вместе с Claude Code сделала Brow. Наводишь курсор на вырез, и из него плавно выезжает панель, тут история буфера обмена, последние скриншоты, полка для файлов, музыка и быстрая заметка. Уводишь курсор, и она прячется обратно.

Читать далее

Прощай, setTimeout(0): как современный Web API управляет приоритетами задач и разгружает главный поток

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

Представьте ситуацию: человек полчаса собирал важный отчёт в веб-таблице или подбирал сложную комбинацию фильтров, нажимает «Сохранить» или «Применить» — и страница намертво замирает. Курсор превращается в колесико, меню не открывается, скролл не работает. В голове пользователя сразу паника: «Всё зависло? Мои данные пропали? Нажать ещё раз? Перезагрузить страницу?!»

Ему абсолютно всё равно, что под капотом в этот момент браузер пересчитывает 500 000 записей. Если страница не реагирует на клик — приложение кажется сломанным.

Почему так происходит? Однопоточный Main Thread наглухо заблокирован вычислениями. Но как дать браузеру возможность реагировать на действия человека, не останавливая сам расчёт?

Мы собрали бенчмарк и на реальных профилях из DevTools сравнили современные подходы для освобождения main thread. Внутри — результаты замеров, трассировки Event Loop и ответ на вопрос, как сохранить полную отзывчивость интерфейса при различных нагрузках.

Читать далее

Как легко открыть запущенный локально сервис на телефоне и почему меня это выбесило

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

Привет хабровчане! Обычно только читаю, а тут решил поделиться своей небольшой историей, может даже кому‑то будет полезной.

Немного о себе - Senior Java Developer, работаю на удаленке и постоянно мигрирую между деревней и городом (эта часть будет важна позже). В свободное время под настроение бывает пишу простенькие программки или игры в надежде что что‑то из этого однажды выстрелит и я проснусь богатым человеком, которому больше не придется никогда работать.

Теперь к сути - на работе дали мне проект по переписи китайского реакт монолита на наш спринговый с thymeleaf. Таймлиф выб выбран для простоты, и оттого что в проекте только одна страница (а нам не нужен отдельный микросервис фронта на одну страницу). Вот только эта единственная страница должна распознавать руку и работать не только с пк, но и с телефонов.

На пк то всё понятно, для проверки достаточно перейти на localhost:8080 и проверяй что хочешь. Но вот для телефона не всё так просто. Вернее просто, но муторно.

Покажу пошагово как это делаю я на примере одного из своих пет проектов.

1) Сперва..

Читать далее

Угадайте HTTP-статус по жизненной ситуации

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

Что общего у сервера и интеллигентного человека? Есть много способов послать собеседника… да хотя бы выждать паузу. В случае сервера каждый способ закодирован трёхзначным числом. Разработчики и тестировщики видят эти числа каждый день, но 502 и 504 путают даже опытные люди.

А что, если представить HTTP-статусы в виде бытовых ситуаций? Ниже будет список из 12 вопросов, в каждом вопросе - описание ситуации и четыре кода на выбор. Ответ с объяснением спрятан под спойлером. Считайте правильные ответы и в конце узнаете ваш статус.

Вперёд!

Свой игровой голосовой сервер для друзей на VPS за 1 ГБ: FastAPI, SQLite, LiveKit и установка без терминала

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

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

Рассказываю, как это устроено и как выглядит: почему раскладка осталась дискордовской, зачем считать радиусы скруглений, почему LiveKit, а не P2P, и почему звонки рвались ровно через три секунды.

Разобрать по косточкам

PHP2Shell: две RCE в ядре PHP без авторизации. Кто уязвим и как проверить сервер за минуту

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

21 октября PHP выпустил экстренные версии 8.2.35, 8.3.36, 8.4.27 и 8.5.12. Они закрывают две критические RCE без авторизации (CVSS 9.2), одна из которых срабатывает ещё до кода вашего приложения. Разбираем бюллетени, даём скрипт для проверки всех PHP на сервере и временные меры для тех, кто не может обновиться сегодня. Для PHP 7.x и 8.0/8.1 исправлений не будет.

Читать далее
1
23 ...