Обновить
256K+

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

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

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

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

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

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

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

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

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

Читать далее

Новости

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

Сайт запущен. Как следить за сбоями и изменениями без ежедневного обхода

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

Допустим, интернет-магазин прошёл приёмку: каталог открывается, тестовый заказ появился в системе, HTTPS работает. Что проверять дальше? Ежедневно повторять весь путь покупателя вручную неудобно, а одна открывающаяся главная мало говорит о состоянии остального сайта.

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

1) Сперва..

Читать далее

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

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

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

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

Вперёд!

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

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

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

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

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

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

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

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

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 исправлений не будет.

Читать далее

Архитектура пространственного аудита недвижимости: как подружить FastAPI, НСПД, OSM и не словить 403 на госсайтах

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

Привет, Хабр!

Последние полгода я в одиночку разрабатываю пет-проект НедвижСкан — сервис экспресс-проверки недвижимости перед сделкой.

Идея казалась тривиальной: пользователь вводит адрес квартиры или кадастровый номер земельного участка, бэкенд на Python за 30 секунд опрашивает открытые пространственные и государственные реестры, рассчитывает матрицу рисков (охранные зоны ЗОУИТ, ЛЭП, затопления, водоохранку, придорожные полосы, промышленные СЗЗ, рельеф, экологию) и отдает клиенту структурированный 9-страничный PDF.

Когда погружаешься в реализацию, выясняется, что «открытые государственные геоданные» живут по законам джунглей: документация врет, координаты разъезжаются, параллельные асинхронные запросы вешают соединение, а WAF рубит запросы даже с белых российских IP.

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

Читать далее

Вайбкодинг без розовых очков: как металлообработчик построил сайт на Rust с Claude Code — 200 дней и 12 поломок

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

Я металлообработчик с 2001 года. Производство обечаек, конусов, ёмкостей, и ни строчки кода за это время я не написал. В феврале 2026 года я решил сделать доску объявлений своими руками, и к октябрю на проде работает сайт на Rust: 70 тысяч строк, 135 миграций, 940 тестов, 85 выкатов за полтора месяца. Писал всё это не я. Писали DeepSeek, потом консилиум из дюжины моделей, потом Claude Code. Я ставил задачи, принимал решения, ловил и иногда расхлебывал последствия.

Читать далее

Анализ результатов выполнения задачи № 3 в Хакатоне 2 026

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

Содержание статьи

1. ИТ в настоящее время.

2. Знакомство с задачей № 3.

3. Предварительные результаты выполнения задачи № 3 участниками.

4. Модель, разработанная командой процессного аналитика.

5. Проведение анализа результата выполнения задачи № 3 участниками.

1. ИТ в настоящее время

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

Чем же могут отличаться ИТ-продукты, созданные ИТ-специалистами, от ИТ-продуктов, созданных не ИТ-специалистов, и как последние могут это сделать?

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

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

2.  Знакомство с задачей № 3

Итак, сначала из списка выбрали задачу № 3, которая называется «Интеллектуальный сервис планирования рабочих маршрутов для инженеров с учетом временных окон и сложности проводимых работ».

Читать далее

136,3 млн опыта = 0 баллов: как Xmin меняет оценку в IT-тендере

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

Про другой наш тендерный опыт я уже рассказывал в статье «Работающий WebGL и 27 контрактов на 168 млн: как мы дважды получили ноль в IT-тендерах». Там мы разбирались с формальностями и тем, как комиссия читает заявку.

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

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

Причиной оказался параметр Xmin — минимальное значение конкретного показателя среди всех участников, которое используется при расчете баллов.

Меня зовут Алексей Постригайло, я управляющий партнер IT-компании Энсайн. В этой статье разберу на реальном проигранном конкурсе, как работает такая относительная оценка и какой дополнительный сценарий мы после этого стали закладывать в расчеты перед подачей заявки. Победу это, конечно, не гарантирует, но позволяет заранее увидеть то, чего обычный расчет «цена + опыт» просто не показывает.

Как считались баллы участников

Цена в конкурсе имела вес 30%, квалификация - 70%. Внутри квалификации заказчик оценивал три показателя: количество исполненных контрактов, их общую стоимость и количество специалистов с IT-квалификацией.

Читать далее

Юридические документы на сайте: что и как размещаем?

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

Сейчас сайт есть почти у каждого второго предпринимателя и крупного бизнеса – ведь это отличный и быстрый инструмент, чтобы рассказать о себе, своих услугах/товарах, стоимости и получить сразу деньги за заказ без контакта с самим клиентом. Только вот помимо красивого оформления и продающего текста не следует забывать, что ваш сайт должен быть упакован и защищен и с юридической стороны от проверок и штрафов надзорных органов. 

Как же должен быть оформлен ваш сайт и что должно на нем быть? Вот вам небольшой чек-лист.

Читать далее

Что можно сделать, имея всего::before и::after

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

У каждого HTML-элемента есть всего два псевдоэлемента: before и after — и с помощью них можно сделать крутые элементы.

Разберём, как с помощью обычного CSS превратить два псевдоэлемента в крутые графические штуки. Как создавать сложные формы через clip-path, собирать композиции из нескольких градиентов, работать с масками и режимами смешивания, а также строить анимации и элементы интерфейса без лишней HTML-разметки.

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