Обновить
256K+

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

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

241,41
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности
Формат публикации

Мы проверили 500 сайтов малого бизнеса Перми и Екатеринбурга: что ломают зарубежные сервисы

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

Две трети сайтов малого бизнеса Перми и Екатеринбурга (63%) подключают зарубежные сервисы: шрифты, аналитику, библиотеки, капчу, видео. На каждом восьмом сайте (12%) это заметно мешает посетителю из России: часть страницы не загружается или сайт открывается на секунды дольше.

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

Читать далее

Как мы возрождаем Ксин: восстанавливаем боёвку по архивам и собираем бестиарий из Wayback Machine

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

В середине нулевых в рунете была игра Ксин, браузерный MUD без единой картинки, только текст, HTML‑формы и таблицы характеристик. Через несколько лет проект умер: сервер выключили, исходники потерялись, остался только форум с обсуждениями механик и кэш в Wayback Machine. Мы собираем игру заново, не «игру по мотивам», а максимально точную реконструкцию: те же формулы, те же монстры, те же предметы.

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

Читать далее

Монолит, модульный монолит и микросервисы: практическое сравнение для.NET

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

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

Каждый новый подход часто подают как очевидную замену предыдущему. Но на практике это просто разные точки на шкале компромиссов между простотой эксплуатации и жёсткой изоляцией кода.

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

Читать далее

Кэширование в Redis: типичные ошибки, которые превращают ускорение в деградацию

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

Вы добавили Redis, замерили p95 — стало быстрее. Прошла неделя, и карточка товара снова грузится секундами, а база почему-то получает в разы больше запросов, чем до кэширования. Проблема не в Redis. Проблема в том, как вы его используете. Разбираем типичные антипаттерны cache-aside — от «горячего ключа» до гонки при инвалидации — и показываем, как их диагностировать командами SLOWLOG и INFO.

Читать далее

Как стартап пытается пустить микробизнес в интернет в обход разработчика

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

В этой статье расскажу про стартап AIruntime - сервис генерации сайтов или Telegram-ботов из чата с ИИ.

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

Читать далее

Как управлять рисками на ИТ-проекте: 8 советов для менеджера и команды

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

На длительном ИТ-проекте невозможно предусмотреть всё. Но многие проблемы можно заметить заранее и решить до того, как они повлияют на сроки, бюджет или качество продукта. Для этого рисками должен заниматься не только менеджер проекта: к обсуждению стоит подключать и команду, и заказчика. 

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

Читать далее

Разработчик протестировал, как разные AI‑сервисы создают сайты

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

Разработчик Пит Миллспо (Pete Millspaugh) сравнил шесть популярных AI‑сервисов для создания сайтов. У всех сервисов было одно задание: разработать сайт для выступлений о создании персональных сайтов.

Читать далее

Что расширение Chrome может узнать о сайте, а что нет: грабли Manifest V3

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

Я написал расширение, которое показывает код ответа страницы на значке, а по нажатию: редиректы, время ответа, срок SSL-сертификата и домена. Задача выглядела простой, но половина пунктов упёрлась в ограничения Chrome. Сертификат расширению не отдают, хотя API для этого описан в документации. Срок домена в зоне .ru из браузера не узнать. Фоновый скрипт засыпает через 30 секунд. Рассказываю, что работает, что нет и чем я это заменил.

Что работает, а что нет

Как уместить генератор обложек, визиток и постеров в один HTML-файл: Canvas, миллиметры и никакого сервера

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

Каждый раз после написания статьи я ещё полчаса возился с обложкой: открыть редактор, подобрать шрифт, выровнять заголовок, экспортировать. В какой-то момент я решил, что обложка — это функция от заголовка, и её должна рисовать программа. Так появился небольшой инструмент, который сначала делал только картинку 1200×630, а потом оброс визитками, открытками, закладками и постерами A4 с PDF для типографии.

В статье расскажу, как он устроен: один HTML-файл без сборки, отрисовка на Canvas, перевод миллиметров в пиксели для печати, раскладка нескольких визиток на лист с метками реза, перевод интерфейса на шесть языков без библиотек и офлайн-режим. Ссылка на сам инструмент — в конце.

Сразу оговорюсь: я из Кореи, русский текст подготовлен с помощью переводчика, а код я писал вместе с ИИ-ассистентом (Claude) — проектные решения, проверки и ошибки при этом мои. Буду рад поправкам и к коду, и к языку.

Читать далее

Иностранные удостоверяющие центры отозвали почти 11 тысяч SSL/TLS-сертификатов российских компаний

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

С июля 2026 года иностранные удостоверяющие центры отозвали 10 974 SSL/TLS-сертификата примерно у 1,3 тысячи российских компаний. Такие данные представили Руцентр и Технический центр Интернет (ТЦИ). В ноябре Руцентр также получил уведомление от японского удостоверяющего центра GlobalSign о планах провести новую волну массовых отзывов.

Читать далее

Как я ускорил загрузку графиков Vigo Pulse в 2 раза

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

В Vigo Pulse на одном графике могут оказаться сотни линий, а ответ сервера — содержать тысячи повторяющихся ключей и временных меток. Я пересмотрел формат данных и на одном из больших запросов сократил сжатый ответ с 1 МБ до 500 КБ, а время до отрисовки графика — с 3 до 1,5 секунды при скорости 4 Мбит/с.

Расскажу, что дал переход на колоночный JSON, как он показал себя рядом с MessagePack и BSON и помогает ли смена формата, если уже включён gzip. А ещё — как изменил фильтры и обработку тяжёлых графиков, чтобы не загружать лишние данные.

Читать далее

Геймплей от всего сердца, или как я решил превратить Bluetooth-пульсометр в игровой контроллер прямо в браузере

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

Всем привет! Меня зовут Павел Барсуков, я frontend-разработчик в компании «Программный Продукт».

Что будет, если превратить Bluetooth-пульсометр в игровой контроллер прямо в браузере? Знакомьтесь с Pulse Maze, игрой, где вы управляете персонажем собственным сердцебиением.

Ознакомиться

GlobalSign начал новую волну отзыва сертификатов безопасности российских сайтов

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

По информации «Руцентр» (входит в группу «Рунити»), один из крупнейших мировых центров сертификации GlobalSign начал новую волну отзыва SSL/TLS‑сертификатов российских сайтов. Всего к настоящему времени в России было отозвано 11 тыс. сертификатов у 1,3 тыс. организаций.

Читать далее

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

От localStorage Next.js к cloud favorites, Supabase Auth, RLS и миграция без потери гостевого UX

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

Избранное можно поместить в localStorage. Пользователь нажимает кнопку, приложение сохраняет ID записи в браузере, отдельный backend для этого не нужен. Проблема появляется после добавления аккаунтов. localStorage привязан к конкретному браузеру. После входа с другого устройства сохранённого списка там нет. Простая замена localStorage на облачную таблицу тоже меняет поведение продукта, теперь для кнопки «В избранное» приходится сначала требовать авторизацию. Если гостевой режим уже работает, логичнее сохранить его и переключать источник данных после входа.
В EventMap схема выглядит так:

Читать далее

gzip позволяет склеивать файлы. Почему тогда браузер теряет данные?

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

Объединить несколько gzip‑файлов в один можно обычным cat, но при передаче такого файла через HTTP браузер может незаметно потерять часть данных. Почему консольные утилиты справляются с конкатенацией, а HTTP‑клиенты — не всегда? Разбираемся на практических примерах, как эту проблему решают gzip, Brotli и zstd и какие ограничения есть у каждого формата.

Разобраться в сжатии

Как посчитать экономику авиарейса и парка: формулы, допущения

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

Меня очень бесило, что нет открытых данных, чтобы построить нормальную финмодель эксплуатации самолётов (точнее, парка воздушных судов — дальше буду писать ВС). Поэтому пришлось сделать сервис, который эти данные агрегирует — ну или, если честно, на текущем этапе пытается. Это суть, дальше — как и почему.

Читать далее

Как считать просмотры, если контент меняется прямо на экране

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

Привет, Хабр! Я Самсон Авакян, фронтенд-разработчик команды Т-Путешествий в Т-Банке. Расскажу, как мы собираем просмотры офферов для обучения ML-модели ценообразования, когда цена и условия в карточках меняются прямо на экране.

Делюсь решением на React и TypeScript с использованием Intersection Observer.

А еще моя статья — часть проекта «20 в 20», в котором мы рассказываем о жизни наших ИТ-хабов. Из моего выпуска вы узнаете о южных, ростовских традициях. 

Читать далее

Статус оплаты обновился, но скринридер об этом не сообщил

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

На странице появилась надпись «Оплата подтверждена», затем — ссылка на Telegram-канал. Но пользователь скринридера может не узнать об этих изменениях. Разберём, как сообщать о новом состоянии через role=“status”, не перемещать фокус и не обновлять текст при каждом одинаковом ответе сервера. В конце — порядок ручной проверки.

Читать далее

«Задача о трёх соседях», или динамические сайты на облачном хранилище

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

Привет, хабровчане!

В этой статье хотел бы поднять вопрос, над которым мы с командой ведём дискуссии уже на протяжении нескольких месяцев, а конкретно с февраля этого года, когда я лично столкнулся с неудобствами белых списков.

Наверное, глупо рассказывать что единственное и главное неудобство этих самых списков заключается в том, что мобильный интернет ограничивается и вся инфраструктура "вне" отваливается. Логично, что все ресурсы внутри белых списков контролируются некоей организацией.

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

Попытка number one

В первую очередь, мы попытались использовать легендарный Мах для организации защищенной переписки. На бумаге - всё просто. Есть два клиента, которые даже не зарегистрированы в Махе. Оба получают токен бота и могут отправлять и получать сообщения. Далее происходит обмен ключами, клиент А шифрует и отправляет, клиент Б читает и расшифровывает.

Но сразу возникли две проблемы. Первая - токен бота должен быть защищён и не отдаваться клиентам. Его можно разместить на сервере, но ведь сервера из сети клиентов не пингуются?

Вторая проблема, которую мы конечно же спустили на случайность, ведь в безопасном мессенджере такого быть не может - на следующий день после регистрации бота у меня его угнали. Когда я в очередной раз зашел на него посмотреть - там стояла упоротая фотка и ссылка на тг для связи. С хаЦкером мы разумеется связались и он предлагал позаимствовать бота "для генерации ИИ картинок". Ну конечно.

Читать далее

Режем, сжимаем и конвертируем видео прямо в браузере: WebCodecs, mp4box.js и грабли, на которые мы наступили

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

Нам понадобилось сделать на сайте простые видеоинструменты: обрезать ролик, сжать его под лимит мессенджера, перегнать MOV в MP4 или WEBM, убрать звук. Обычный путь — загрузить файл на сервер и прогнать через ffmpeg. Но видео тяжёлое: ролик с телефона на 2 ГБ надо сначала долго заливать, а сервер должен его хранить и пережёвывать. Да и не каждому хочется отправлять личное видео на чужой сервер.

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

Ниже — как это устроено и что пошло не так. Код — из рабочего проекта, слегка сокращён.

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