Обновить
512K+

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

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

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

Django-согласия и cookies под 152-ФЗ: версии документов, аудит и экспорт вместо одного чекбокса

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

Согласие на обработку персональных данных в Django-проекте часто начинается с одного BooleanField. Но затем оказывается, что недостаточно помнить только факт нажатия на чекбокс: пользователь мог видеть другую редакцию документа, отозвать согласие, выбрать лишь часть категорий файлов cookie, а администратору может понадобиться журнал действий и выгрузка в CSV.

Я сделал для этого два полностью независимых Django-пакета с открытым исходным кодом: django-consent-152fz для юридически значимых согласий и django-cookies-152fz для политики файлов cookie, категорий, подключённых сервисов и окна выбора. В статье покажу реальную модель данных, минимальное подключение и то, как устроены редакции, журнал событий и выгрузка данных.

Читать далее

Новости

Микроразметка на Tilda: внедрение JSON-LD, проверка и типовые ошибки

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

В этой статье разберу JSON-LD для сайтов на Tilda: что именно размечать, как разделять общий код и код конкретной страницы, где проверять микроразметку и какие ошибки чаще всего появляются после правок сайта.

Материал не про то, как скопировать готовый JSON из генератора. Такой вариант годится только для самых простых страниц.

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

Часть этих данных относится ко всему сайту, часть - только к одной странице.

Если это не разделить сразу, дальше начинаются дубли, старые URL, одинаковые схемы на всех страницах и странные предупреждения в валидаторах.

Для примеров возьму нейтральную нишу - учебный центр.

Читать далее

SaaS умер, да здравствует новый SaaS: как вайбкодинг повлияет на облачные решения

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

Всем привет! Это Денис Сметнев. Последние пару месяцев я плотно сижу на вайбкодинге. Поднял свой сервер, запилил базу лидов из Телеграма и карту знаний, хотя последний раз кодил в 9 классе на Pascal. Вижу, что у многих появилась мысль: если я могу сам сделать себе любой софт под задачу, зачем тогда вообще нужны SaaS-продукты? Неужели они умрут? В этой статье хочу порассуждать, как на самом деле изменится рынок и почему хоронить софт пока рано.

Читать далее

Как JSON‑LD начинает врать — даже когда валидатор зелёный

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

На странице услуги пользователь видел цену «от 25 000 ₽», а meta description и JSON‑LD продолжали отдавать 50000. Валидатор был зелёным.

И это был собственный сайт веб‑студии!

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

Разобраться, что проверять

CancelledError — не просто очередная ошибка. Разбираемся, как устроена отмена задач в asyncio

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

Это первая из двух статей о CancelledError — сигнале отмены задачи. В ней мы остановимся на стандартном asyncio. Узнаем, что на самом деле представляет собой CancelledError, с точки зрения event‑loop. Разберёмся, как работает счётчик отмены (cancel/uncancel), на котором построены TaskGroup и asyncio.timeout. Наконец, обсудим проблемы, которые возникают на практике, в первую очередь связанные с asyncio.shield.

Читать далее

Исключения в реактивных системах

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

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

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

Исключить эту статью из непрочитанных

Сайты под управлением ИИ: что это на самом деле и сколько стоит. Часть 1 из 3

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

Это первая из трёх статей про сайты под управлением ИИ. В этой части — концепции и экономика без маркетинговой пыли: что такое нейросайт на самом деле, чем он принципиально не является, и почему дешёвый VDS за пару тысяч рублей тут вообще ни при чём с точки зрения железа под нейросеть. Во второй части будет внутрянка (MCP‑брокер, пайплайн деплоя, безопасность), в третьей — прод‑механика на тысячах страниц (SSG/ISR, индексация, массовые операции). Здесь сознательно держусь на уровне архитектурных решений, не уходя в реализацию — она дальше.

Читать далее

Представляем MDN MCP-сервер

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

Мы рады объявить о релизе MDN MCP-сервера. MCP (Model Context Protocol) — это открытый стандарт, который позволяет ИИ-инструментам подключаться к внешним источникам данных. MDN MCP-сервер использует этот протокол, чтобы доставлять документацию MDN и данные о совместимости браузеров прямо в твой редактор кода или IDE.

Читать далее

Sitemap-first аудит большого сайта: как найти пустые посадочные без полного краулинга

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

Есть привычная ошибка в техническом аудите больших сайтов: открыть краулер, поставить лимит побольше и просканировать всё.

На сайте в пару тысяч страниц это работает. На сайте с семизначным инвентарём URL — нет. Полный краул упирается в память, диск, сетевые таймауты, rate limit, JavaScript-рендеринг, дубли, параметры, бесконечные фасеты и в то, что через двое суток вы получаете таблицу на миллионы строк, которую всё равно придётся сегментировать с нуля.

Поэтому я начинаю не с краулера. Я начинаю с sitemap.

В статье показываю sitemap-first подход: как скачать sitemap graph, превратить URL в датасет, разобрать слаги на смысловые группы, сматчить паттерны со спросом, найти пустые посадочные, проверить рендеринг и потом подтвердить гипотезы через GSC, Яндекс.Вебмастер, Метрику и серверные логи.

Читать далее

Автодозвон по лидам из Марквиз с отметкой в CRM

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

Привет, Хабр! В B2C-продажах — недвижимость, страхование, медицина — каждые 30 секунд задержки с первым звонком стоят процентов конверсии. Покупатель оставляет контакты в момент максимального интереса. Но импульс гаснет быстрее, чем менеджер успевает открыть CRM и набрать номер.

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

Вот здесь и кроется главная сложность: можно ли сделать так, чтобы лид сам создавался в CRM, а звонок запускался автоматически, без участия человека?

Оказывается, да. Мы сделали сервис, который соединяет квиз, CRM и телефонию в один сценарий. Он принимает вебхук от Марквиз, создает лид в amoCRM и запускает автоматический звонок через МТС Exolve. После разговора сервис получает событие от Exolve и сохраняет результат в CRM.

Читать далее

Боты не только вредны, но и полезны

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

Последнее время я не пишу админ. панель для веб-проектов, а пользуюсь Телеграм-ботом.

Как это обычно происходит. Появляется новый проект. Некий сайт. Затем первая просьба что-нибудь поменять. Потом вторая. Потом оказывается, что нужно написать административную панель.

Административная панель — это как ремонт в квартире. Начинаешь с поклейки обоев, а через месяц меняешь электропроводку.

Снова делать логин, пароль, восстановление пароля, управление пользователями и прочие радости веб-разработки.

И всё это ради тридцати человек.

Все проще - используйте Telegram как административную панель.

Минимум кода, который за вас напишет Иван Иваныч.

Читать далее

Как спроектировать web-приложение на годы вперед

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

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

Лет двенадцать назад создание большого монолита было обычной практикой. Семь лет назад многие подсели на микросервисную архитектуру. Причем микросервисами часто называли все подряд: и сервисно-ориентированный подход (SOA), и набор крупных сервисов, и распределенный монолит. Главное было быть в тренде.

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

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

Читать далее

Docker Fundamentals: теория и базовая эксплуатация

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

Я очень рад, что существует такая технология, как Docker, и внедряю её в проекты и инфраструктуру клиентов. Однако есть одно «но»: многие не понимают, что это и зачем оно нужно, а объяснять иногда достаточно сложно (особенно повторять каждый раз каждому человеку, да и есть шанс что-то упустить). В этой статье вы узнаете базу по Docker, где найти практику и актуальные знания. Технология будет полезна многим: от специалистов по безопасности до разработчиков. А сама статья будет познавательна для тех, кто только изучает работу Docker и хочет узнать ответы на вопросы, которые часто задаются на собеседованиях, где требуется Docker. Приступим!

Читать

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

Как мы считаем недельное меню в Pikni Food: пачки, остатки и solver вместо списка рецептов

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

Рассказываем, как из идеи «собрать меню на неделю» получилась задача оптимизации: КБЖУ, бюджет, целые упаковки, остатки в холодильнике, цены магазинов и план готовки.

Внутри — почему схема «рецепты → список покупок» быстро ломается, зачем понадобились greedy, simulated annealing и MIP, и почему список покупок оказался почти отдельным продуктом.

Читать далее

Как запустить бота в Max самозанятому

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

Все уже видели новость, что самозанятым теперь доступен МАХ для бизнеса? Если вдруг пропустили, то это означает, что MAX продолжает тянуться за Telegram и его тоже теперь можно начинать использовать как площадку для дополнительной коммуникации с клиентами.

Читать далее

Если не можешь победить AI — возглавь его: суфлёр для технического интервьюера

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

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

Рынок найма сейчас напоминает поле боя. С одной стороны — рекордное количество откликов, с другой — кандидаты, вооружённые до зубов генеративным ИИ. Все вокруг генерируют «сногсшибательные» резюме с опытом уровня CTO, а технические скрининги проходят, транслируя подсказки прямо в ухо через наушник.

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

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

Читать далее

ID, token, UUID и slug: в чём разница и почему их нельзя мешать

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

В каждом бэкенде рано или поздно рядом появляются id, UUID, slug, token и request_id. Все они выглядят как строки, но отвечают за разные вещи.

Когда это забывают, UUID становится защитой, slug — вечной айдишкой, а token — просто ещё одним идентификатором.

Читать далее

LLM собрала IndexedDB с нуля: 1208 тестов, SQLite и несколько неприятных сюрпризов

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

Можно ли одним промптом собрать полноценный браузерный API и получить результат, близкий к зрелой open source-реализации? В эксперименте Claude Code поручили реализовать IndexedDB поверх SQLite, а качество проверили с помощью Web Platform Tests. Итог — рабочая кодовая база, 1208 пройденных тестов, спорные 95% в отчёте агента и заметные ограничения в производительности и пограничных сценариях.

Читать про эксперимент

Как я написал «Обратную змейку» на чистом Canvas

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

Начнём с небольшой предыстории: пару недель назад я ждал друга в кафе. Как обычно, он опаздывал примерно минут на сорок. Ноутбук с собой, интернет есть, а игр нет — чисто рабочая машина, ничего лишнего, хотя нужно будет что-то скачать, чтобы играть на работе xd. От скуки я открыл браузер и набрал в поиске «змейка». Google выдал свою фирменную змейку прямо в результатах поиска.

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

Читать далее

Вы не знаете HTML. Мои вопросы об HTML с ответами

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

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

Меня всегда раздражали вопросы на проверку знаний HTML и CSS. На моей памяти я ни разу не встретил человека, который спрашивал что-то интересное. По этой причине у меня появилось несколько статей с вопросами по CSS, которые собрали достаточно много просмотров для меня.

А что касается HTML, то я ничего не написал. Сегодня буду исправляться. Сразу скажу, что это не будут вопросы в стиле: «А какие HTML5-элементы вы знаете?». Мне хочется, чтобы вам было интересно и чтобы вы узнали что-то новое.

По этой причине большинство вопросов связаны с практикой. И абсолютно точно вы не ответите на все. Хотя, может, я ошибаюсь. Вот и проверим, насколько я прав.

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

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