Обновить
256K+

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

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

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

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

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

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

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

Читать далее

Новости

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

1) Сперва..

Читать далее

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

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

Что общего у сервера и интеллигентного человека? Есть много способов послать собеседника… да хотя бы выждать паузу. В случае сервера каждый способ закодирован трёхзначным числом. Разработчики и тестировщики видят эти числа каждый день, но 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 исправлений не будет.

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

Refresh прошёл, сессия сломалась: разбираем ротацию токенов

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

Две вкладки обновили токены. Оба запроса вернули 200 OK, а при следующем обновлении пользователя отправило на экран входа. Такое возможно даже с транзакцией и FOR UPDATE.

Разберём, как это получается, почему повтор refresh не обязательно означает потерю ответа и как новый токен может пережить отзыв всего семейства. Последнюю гонку воспроизведём в двух соединениях PostgreSQL.

Читать далее

Динамические QR‑коды на одной VPS: редирект без CMS, проверка ссылок через Web Risk и статистика без IP‑адресов

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

В первой статье я не хотел прогонять ссылки через чужой редирект, который умрет вместе с триалом. Теперь редирект у меня свой: что я пообещал в оферте, как устроен r.php без CMS, почему ссылка иногда висит в статусе «проверяется», при чем тут Роскомнадзор и как считать статистику переходов, не храня IP.

Читать далее

Gravity Defied: стик‑человечек на мотоцикле

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

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

Всё началось с того, что мы с другом сели за PS5, и он запустил Trials Rising. После сотни попыток на одной трассе мне стало интересно, откуда у этого жанра растут ноги. Сам я рос на Hill Climb Racing на iPod, так что идея была знакомой, а вот первоисточник — нет. Ответ нашёлся быстро. Gravity Defied когда-то помещалась в память кнопочного телефона и держалась на одной простой мысли: мотоцикл нужно чувствовать, а любая неточность в наклоне заканчивается ударом головой о землю.

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