Обновить
256K+

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

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

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

Один Gmail = тысячи адресов для сервиса: что мы случайно нашли в админке

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

Одна точка в Gmail — и для сервиса перед вами уже другой пользователь. Мы наткнулись на это случайно, а потом решили проверить, насколько далеко можно зайти.

Читать далее

Новости

Telegram Serverless: теперь бота можно запустить вообще без своего сервера

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

Недавно в BotFather у меня появилось сообщение о раннем доступе к Telegram Serverless. Telegram предлагает запускать код ботов прямо на своей инфраструктуре — без отдельного VPS, Docker, nginx и даже внешней базы данных.

Решил разобраться, что именно они сделали, как выглядит разработка и можно ли теперь действительно собрать Telegram‑бота, у которого вообще нет своего сервера.

Сразу оговорюсь: пока это early access. Есть ограничения, а привычный Python + aiogram туда просто так не перенести. Но сама идея получилась довольно интересной.

Читать далее

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

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

Странно говорить о современном стеке и одновременно предлагать новым сотрудникам вручную вписывать данные паспорта в кадровую анкету. Автоматизируя процесс онбординга, мы пошли дальше стандартной OCR. На базе LLM VL-модели разработали цифровой продукт Sminex Start, который проводит процесс оформления.

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

LLM vs OCR

Каким по счёту ты родился

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

Представь очередь. В ней все, кто когда-либо жил на Земле — от первого человека до ребёнка, родившегося минуту назад. Очередь длиной примерно в сто семнадцать миллиардов. Где-то в ней стоишь ты. Место у тебя есть с рождения, его никто не отнимет и не отдаст другому. Просто до сих пор никто его не называл.

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

Читать далее

Diablo II, римские стратегии и Prince of Persia: что фронтенду стоит перенять у геймдева

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

В Diablo II характеристики навыков хранятся в обычных текстовых файлах, поэтому для изменения баланса игру не нужно пересобирать. В Prince of Persia 1989 года поведение персонажа описано через состояния и переходы, а в градостроительных стратегиях сборщик налогов сам выбирает следующее действие по набору правил.

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

Речь пойдет о контрактах и моках, конечных автоматах, событийной модели, pattern matching и деревьях поведения.

Читать далее

Как я перестал измерять MVP количеством функций: история создания Prosnix

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

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

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

Со вторым проектом я решил поменять порядок работы. Не начинать с большого roadmap и каталога возможностей, а сначала сформулировать одно повторяемое действие, которое можно проверить. Так появился Prosnix — Telegram Mini App для личных экспериментов после пробуждения.

Это не история успешного запуска. Пользователей пилота и подтверждённых результатов пока нет. Это история о том, как попытка сделать более узкий MVP изменила мои технические решения — и почему даже одна простая продуктовая метрика потребовала state machine, нескольких версий и отдельного отношения к исходным данным.

Как устроен проверяемый MVP

Next.js, внешний API, Zod, нормализация и controlled fallback

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

Внешний API возвращает данные в своей модели. Названия полей, вложенные объекты, изображения, цены и правила пагинации принадлежат provider. UI приложения обычно работает с другой моделью. Если компонент читает event._embedded.venues[0].city.name напрямую, структура внешнего ответа распространяется по интерфейсу. Изменение API затрагивает карточки, detail page, search, metadata и тесты.

В App Router внешний запрос можно выполнять на сервере. Server Components работают с fetch, а серверный код не попадает в клиентский bundle. API key при такой схеме остаётся вне браузера. Документация Next.js описывает server-side data fetching для App Router. В учебном проекте EventMap внешний источник событий проходит через server API слой.

Читать далее

Я профессионально создаю библиотеки 5 лет

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

7 лет назад я опубликовал в npm свою первую библиотеку — custom‑border‑mixin. Тогда я на неделю пропал, просто чтобы в своё удовольствие написать SCSS‑миксин. Если вам интересно, что весёлого может быть в SCSS, просто посмотрите на хелпер:

Или все-таки поменял?

Как соцсеть для Егоров превратилась в автономный город на Node.js и SQLite

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

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

Если тебя зовут Егор, Георгий или одной из форм имени, происходящего от Georgios, то это место для тебя, 100%! Остальные становятся Наблюдателями: могут читать, реагировать, писать в личку, жить в своих районах — что-то вроде ВНЖ.

На этом месте проект вполне мог закончиться хорошей шуткой, которой и являлся ИЗНАЧАЛЬНО. Но пользователи начали спрашивать, кто здесь главный.

Так в Егороде появился мэр. Потом люди спросили, кто выбирает мэра. Появились выборы.

Затем — партии, депутаты, кабинет, указы, вето и импичмент, а социальная сеть начала подозрительно напоминать государство, состоящее преимущественно из Node.js, SQLite и людей по имени Егор.

Сейчас в проекте около 11,9 тысячи регистраций, обычный DAU — примерно 30–35 человек, кодовая база выросла примерно до 210 тысяч строк, 176 таблиц и 2625 тестов.

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

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

Читать далее

Как разрабатывать фронтенд без готового бэкенда: инструменты перехвата трафика, мокирования и принцип их работы

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

Всем привет, на связи Дима Котиков! Я все еще люблю разрабатывать под Android/KMP, разбираться с инструментами для упрощения работы и латте на фундучном молоке. За пять лет мобильной разработки я неоднократно сталкивался с ситуацией, когда бэкенд запаздывает, а дедлайн горит. 

Зимой 2026 мы получили задачу: новый финансовый инструмент, дедлайн через три месяца, готовность бэкенда — через полтора. Команда начала работу на моках и успела. В статье я расскажу, какие инструменты перехвата и мокирования трафика помогли нам выпустить фичу в срок без готового бэкенда, как настроить их за один вечер и почему понимание принципов работы TLS и MITM-атаки экономит часы отладки.

Читать далее

Как я строил zero‑knowledge менеджер паролей: три архитектуры, модель угроз и восемь багов

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

Привет, Habr.

Я разрабатываю менеджер паролей «Сэйфком» для личного и командного использования.

Почти все серьёзные проблемы, которые я находил, были не в самих криптографических примитивах. Они появлялись рядом с ними: в авторизации, сериализации ключей, rate limit, SMTP, WebAuthn и обычной бизнес‑логике.

Ограничения модели безопасности и текущее состояние сервиса описаны отдельно, на странице безопасности. Формального внешнего аудита на момент публикации не было.

Читать далее

Маркировка товаров в 2026 году: чек‑лист готовности для оптовой компании

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

До нового этапа маркировки меньше месяца. Компания зарегистрирована в «Честном знаке», ЭДО подключён, сотрудники знают, что товары маркируются. На первый взгляд основные приготовления уже закончены.

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

Читать далее

Polymorpheus: очень нужная деталька пазла Angular

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

Angular — отличный фреймворк. А ещё он очень заботливый: множество вещей уже продумано за вас, а когда всё-таки требуется что-то нестандартное — существующее поведение обычно легко переопределить или расширить.

Сегодня я хочу поговорить об одном таком случае и показать инструмент, который я создал много лет назад и с тех пор считаю абсолютной базой для Angular. Речь пойдёт о маленькой библиотеке Polymorpheus, которую мы в Taiga UI используем буквально повсюду, когда нужно отобразить какой-нибудь динамический контент.

Читать далее

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

Зачем я добавил диван в калькулятор ремонта

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

У ремонта есть неприятная привычка: ответ на один вопрос почти сразу порождает следующий.

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

С этих вопросов мой «Мастерок» и начал обрастать раскладками, объёмными комнатами и другими инструментами. С 17 августа по 16 сентября на сайте было 6 536 посетителей. В сравнении, которое показывает Метрика, это рост на 26,32%. Платное продвижение я не запускал. Большинство посетителей приходит из поиска.

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

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

Читать далее

Сделал себе вышибалу для VPS: кто стучится в.env и в ssh — тот сидит за баном…

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

Устал смотреть в логи: опять подбор пароля к ssh, опять лезут в несуществующие файлы сайта. Fail2ban ставил — утонул в настройках. Написал своё: обходит свой сайт, запоминает нормальные адреса, по лишним 404 и по ssh режет IP в nftables. Рассказываю — зачем и как ставил. Код покажу там, где самому было интересно.

Читать далее

«Обратная змейка», часть 2: читаю комментарии, чиню баги и добавляю босса

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

Когда я выкладывал первую часть, я, если честно, рассчитывал на десяток лайков и тишину в комментариях: ну кто будет всерьёз разбирать змейку, слеплённую за два вечера. Не угадал — комментариев набралось прилично, и добрая половина оказалась не «мило, годно», а разбором полётов: кто-то поймал баг, кто-то — нечестный спавн змей вплотную к игроку, кто-то сравнил игру то с Pac-Man, то с Asteroids. И вот сижу я, читаю это всё по второму кругу и понимаю: технически игра работала, но местами работала не на 100 процентов своей идеи, а это не то же самое, что работала хорошо. В общем, решил пройтись по всему списку, а не отделаться сердечком в ответ.

Читать далее

Можно ли собрать работающий интерфейс на ИИ за час?

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

«Закину промпт в ИИ, а через секунду получу готовый интерфейс, свой сайт или дашборд» — такая идея наверняка приходила каждому, кто не связан с дизайном или разработкой. ИИ-инструменты для этих сфер активно распространяются и обещают такие фантастические результаты, что закрадывается мысль: а что, если скоро дизайнеры будут не нужны?

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

Забыла представиться: меня зовут Камила, я проектировщик интерфейсов в Selectel. Вместе с бумом ИИ коллеги чаще начали ко мне приходить с вопросами такого рода: «Мне ИИшка макет сделала, сделай ревью, пожалуйста». Так что я решила разобраться со своей дизайн-колокольни — где ИИ может помочь, а где создает привлекательную, но не самую работающую концепцию. 

Читать далее

Steam глазами разработчика: OpenID из 2007-го, звёздочка в имени ножа и цена строкой в чужой локали

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

«Просто прикрутить вход через Steam и цены из маркета» — примерно так это выглядит из бэклога. На деле: OpenID 2.0 образца 2007 года вместо OAuth, звёздочка ★ в имени ножа, из-за которой одно и то же название готовится для двух соседних эндпоинтов противоположными способами, и цена, приходящая строкой в чужой локали. Собрал все проблемы в одном месте.

Читать далее

Я написал сайт с кейсами CS2 целиком и выложил под MIT

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

Открыл кейс — получил предмет. Между этими двумя событиями лежат HMAC, миллион тикетов и RTP, который кто-то посчитал заранее. Я написал сайт с кейсами CS2 целиком и выложил под MIT: про то, где в «provably fair» проходит граница между «проверяемым» и «выгодным», и почему 0,023% перекоса я оставил осознанно.

Читать далее

Codex написал рабочий код, но не закрыл задачу: как меняется мой процесс разработки

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

Я всё меньше пишу первую версию кода сам.

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

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

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