Обновить
512K+

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

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

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

Мы сделали лучший REST фреймворк для Django

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

Привет! Меня зовут Никита Соболев, я core-разработчик языка программирования CPython, а так же core-разработчик фреймворка Litestar, пакета django-stubs и множества других пакетов для Django.

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

Если хотите похоливарить в коментах на тему того, какой фреймворк самый лучший и удобный – залетайте! Обсудим.

Читать далее

Чёрт, опять этот CSS. Коллекция кейсов, когда CSS бесит

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

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

CSS часто преподносит сюрпризы, способные запутать даже опытных разработчиков. Я понимаю их раздражение. Тут всё закономерно.

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

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

Пришёл поделиться с вами. Давайте посмотрим, что я подготовил.

Читать далее

12 слов вместо номера телефона: как мы сделали мессенджер невидимым для файрволов

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

BIP39 вместо номера телефона, ECDH P-256 + AES-256-GCM, non-extractable CryptoKey, трафик неотличимый от HTTPS. Как это устроено, что сломалось в процессе и почему некоторые решения были болезненными.

Читать далее

Какие документы должны быть на сайте?

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

Привет, я — Александра, юрист для digital-агентств и фрилансеров! Специально для всех владельцев сайтов я подготовила подробную статью о том, какие юридические документы должны быть на каждом сайте в зависимости от его вида и наполнения. Прочитав её, вы точно всё поймёте.

Читать далее

37 советов и приемов по написанию качественных тестов для фронтенда

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

Мне нравится писать тесты. Написание теста и последующее обновление кода для его прохождения — всегда увлекательный процесс.

Но нет ничего хуже, чем выяснение того, что проверяют существующие тесты (раньше я сам часто был автором таких тестов).

Представляю вашему вниманию мои советы по написанию высококачественных тестов для фронтенда.

Читать далее

Долг понимания — скрытая цена кода, сгенерированного искусственным интеллектом

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

“Долг понимания” (comprehension debt) — это скрытая цена, которую человеческий интеллект и память платят в результате чрезмерной зависимости от ИИ и автоматизации. Для инженеров это особенно актуально в сфере разработки агентных систем.

Когда команды активно используют инструменты для генерации кода с помощью ИИ, возникают определенные издержки, которые не отражаются в показателях производительности. Особенно это касается случаев, когда проверка всего кода, генерируемого ИИ, становится утомительной. Эти издержки накапливаются постепенно, и в конечном итоге их приходится оплачивать — с процентами. Это называется “долг понимания” или “когнитивный долг”.

Читать далее

Завязывайте с вайбкодингом! Серьезно

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

Мне очень не нравится термин. Он подсознательно «сужает» взгляд на ИИ и ограничивает его использование.

«Когда у вас в руке молоток, все становится похожим на гвозди».

Вайб‑кодинг словно бы говорит: «Иди и программируй!»

Есть данные, и нужен какой‑то отчет? Иди вайбкодь! Бэкенд, фронтенд, VPS, вот это всё. А зачем, если тот же ИИ можно просто попросить сделать Excel файлик с нужной структурой и нужными формулами? И он будет понятнее, с ним можно будет работать в будущем, его можно отдать кому‑то, не решая вопросы про доступы, безопасность и тому подобное

Хотите запустить блог или какой‑то контентный проект? Иди вайбкодь! Изучай Next.js, Sanity, Supabase, Vercel! Деплой, отлаживай! Но зачем, если можно взять хоть Ghost, хоть WordPress, с помощью того же ИИ получить рекомендации по нужным плагинам и темам, настроить всю верстку, и получить понятное обновляемое решение?

Читать далее

Продвижение сайтов в Новосибирске. Дикое SEO начала 00-х

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

Ну что, расскажем, как всё начиналось? Даже не знаю, рассказать правду или как оно было на самом деле. В любом случае, получится предельно личный мемуар об эволюции новосибирского Digital-рынка. Поскольку я в «продвижении» сайтов обитаю с 2003 года, на роль компетентного наблюдателя, который видел рождение, смерть и реинкарнацию десятков алгоритмов, бизнесов и специалистов, я как минимум подхожу.

Читать далее

Почему применение SaaS/IDaaS для аутентификации и авторизации наиболее эффективно, сравнение

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

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

TLDR;

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

Читать далее

URL как источник правды в Next.js App Router

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

Когда разработчик приходит в Next.js из обычного React SPA, он часто тащит с собой старую схему мышления. Есть поле ввода, значит будет useState. Есть поиск, значит будет useEffect. Есть список данных, значит будем следить за изменением состояния и вручную запускать новый запрос.

На маленьком экране это вроде работает. Но очень быстро выясняется, что в приложении уже не одно состояние, а три. Есть значение в поле, значение в URL, данные, загруженные по одному из этих значений. Потом появляется четвёртая проблема. Кнопки Back и Forward начинают вести себя странно. Ссылкой на результат поиска неудобно делиться. А отладка превращается в угадайку, потому что не до конца понятно, что именно сейчас считается главным источником правды.

В App Router это решается проще. Если фильтр является частью состояния страницы, его логично держать в URL. Тогда схема становится прямой: URL изменился -> сервер прочитал searchParams -> выполнил fetch -> отрендерил новый список. В этот момент Next.js начинает восприниматься как понятный инженерный инструмент.

Читать далее

Почему ваш пароль уже взломан (и как это исправить)

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

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

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

Копнём поглубже?

Приключения с Go и YDB Serverless: как я уложился в бесплатный тир Yandex Cloud после Spring Boot и PostgreSQL

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

Долгое время я пытался научиться слепому десятипальцевому методу печати, но всегда это заканчивалось поражением. Учился на Keybr — на нём освоил английский. Частотный метод, когда ты печатаешь настоящие слова из самых частых букв, мне подошёл. Но столкнулся с тем, что заглавные буквы, пунктуация и цифры спрятаны за кучей настроек. Подумал — зачем это прятать, если можно сделать структурированные этапы и дать чёткий путь прохождения? Так я начал разработку TypeStep — тренажёра слепой печати с частотным методом и этапами прохождения. А теперь — про то, на чём это всё построено и с чем пришлось столкнуться.

Читать далее

Headless CMS на Go — самая минималистичная система управления сайтом

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

Когда очередной лендинг требует «просто принимать заявки и показывать новости», разработчик оказывается перед выбором: поднять Laravel/Django с кучей зависимостей, купить SaaS-подписку, или написать что-то своё. Я выбрал третий путь — и это оказалось интереснее, чем я ожидал.

В этой статье разбираю архитектурные решения, которые принял при написании LightHeadless — минималистичного headless CMS на Go.

Читать далее

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

Frontend Status: свежий дайджест фронтенда и AI — 27.03.2026

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

Привет!

Это юбилейный десятый выпуск Frontend Status — дайджеста по фронтенд-разработке и AI.

В этом выпуске:

📺 TanStack AI генерирует картинки, а не только чат-ботов.

🤖 Почему ИИ выдаёт глупый код — и трёхуровневая архитектура, которая это исправляет.

🎨 Математическая модель masonry-раскладки на Flexbox — с алгеброй, а не «работающим примером».

⚡ TypeScript 6.0, обновления безопасности Node.js, петиция против AI-кода в ядре Node.js и Kafka из Node.js по-взрослому.

⚛️ TanStack улучшил пропускную способность SSR в 5 раз, а Strawberry Browser переписал 130 000 строк с React на Svelte за две недели.

🅰️ Angular выпустила официальные скиллы для AI-агентов.

💚 Компоненты визуализации звука для Vue.js на Web Audio API.

…и многое другое.

Читать

От логинов до SQL: какие бреши в web-приложениях ищут хакеры и как их устранить

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

Сегодня веб-приложения остаются основой для функционирования бизнеса. Их стабильность влияет как на финансовую, так и репутационную составляющие организации. Но также внешние ресурсы компаний являются привлекательной целью для злоумышленников. По данным представителей сервиса WAF ГК «Солар», за 2025 год общее количество кибератак на веб-приложения выросло на 89% в сравнении с 2024 годом. Учитывалась статистика по организациям из разных сфер, в том числе госсектора, логистики и транспорта, ритейла, финансов, промышленности.

Успешность такой кибератаки зависит в том числе от наличия уязвимостей в веб-приложениях. Ими злоумышленники могут пользоваться, чтоб получить доступ к системе, а затем ее компрометировать. Компания «Анлим», центр компетенций по информационной безопасности, не первый год специализируется на пентесте (от англ. penetration test). За время многочисленных проектов по взлому ИТ-инфраструктуры специалисты компании «Анлим» назвали три наиболее распространенных уязвимости, а также рассказали о способах их устранения.

Читать далее

Вайбкодинг за выходные: как ручной QA-инженер собрал свой «Тиндер для кино» с помощью ИИ

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

Сразу сделаю чистосердечное признание: я ручной тестировщик. Я не умею писать код с закрытыми глазами, и да — эту статью мне тоже помог структурировать ИИ по моим промптам. Зато я умею декомпозировать задачи, выстраивать логику продукта и ломать то, что уже написано.

Меня бесила ситуация, когда я не могу подобрать себе фильм для просмотра. Обычно, у фильмов только скудное описание и рейтинг. Чтобы посмотреть трейлер нужно умудриться его найти. Да, можно прочитать отзывы, но там в основном рецензии на пару минут чтения

Я решил, что мне нужен инструмент, который превратит выбор фильма из рутины в развлечение. Бюджет — 0 рублей. Команда — я и нейросеть (Gemini 3.1 Pro).

В IT сейчас активно спорят про «вайбкодинг». Кто-то считает это абсолютным злом и костылестроением, кто-то — неизбежным будущим. Я решил проверить этот подход на практике и за выходные собрал MVP своего сервиса.

Читать далее

Рендеринг — это не про сервер

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

Когда меня просят подсказать, как структурировать веб-сервис, я всегда начинаю с одного и того же: напишите сервер, который в ответ на HTTP-запросы выдаёт текст в формате HTML.

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

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

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

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

Читать далее

# 10 ошибок API

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

40 000+ записей без пагинации, 200 OK вместо 400 Bad Request, SQL-запросы в ответах клиенту. Собрал 10 ошибок API из реальных проектов: монолитов, микросервисов, стартапах и энтерпрайза.

Читать далее

Как AI-копилоты изменили мой рабочий процесс во фронтенде — и где с треском провалились

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

AI-копилот за 40 секунд сгенерировал мне форму на 180 строк с валидацией через zod и сэкономил полчаса. А потом потратил два моих часа на отладку хука с race condition, который я бы написал сам за 40 минут. После месяца плотной работы с Cursor, Copilot и ChatGPT на продакшн-проекте React/Next.js я вывел для себя систему: какие задачи отдавать AI, а к каким его подпускать нельзя.

Читать далее

Безопасный file upload в Go: 7 атак на загрузку файлов и как мы их закрывали

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

«Сделай форму загрузки PDF» – звучит как задача на полчаса. Claude/GPT напишет handler, мы добавим accept=".pdf" на фронте, multer на бэке – и вот у нас работающий upload. Можно деплоить.

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

С распространением LLM-инструментов порог входа в разработку снизился радикально. Это прекрасно – больше людей могут создавать продукты. Но вместе с порогом входа снизился и порог входа для уязвимостей. Когда LLM генерирует код загрузки файла, она решает функциональную задачу: принять файл, сохранить, обработать. Безопасность? «Добавлю потом». А «потом» обычно наступает после инцидента.

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

Читать далее