JuniorPerformance Marketer > Google Ads > Основы performance-маркетинга
Короткий ответ Воронка — последовательность этапов от показа или клика до покупки либо другой бизнес-цели. Её заранее описывают, чтобы измерять переходы и находить потери. Как это работает подробнее Типовая воронка включает показы → клики → переход на сайт → лид или добавление в корзину → покупка; на каждом переходе считается своя конверсия, например CTR между показами и кликами или CR между визитом и лидом. Если на каком-то этапе событие технически не фиксируется (например, не настроена цель «лид» в GA4), воронка визуально выглядит короче, чем есть, и часть реальных потерь остаётся незамеченной. Что использовать на практике Постройте этапы под конкретный бизнес и назначьте каждому событию источник фиксации: для магазина это просмотр товара, корзина, оформление и оплата; для B2B — визит, заявка, квалификация и сделка. Подводные камни Если смотреть только на общее число продаж или одну конверсию, сбой сайта либо отдела продаж легко ошибочно принять за проблему рекламы.
campaign-planningconversion-tracking
MiddlePython Developer > Основы Python > Генераторы и итераторы
Короткий ответ Генераторы — простой и экономный по памяти способ создавать итераторы в Python. Функция становится генераторной, если в её теле встречается ключевое слово yield: при вызове она возвращает объект-генератор, который выдаёт значения по одному, только когда их запрашивают. Как это работает подробнее Ленивый механизм позволяет не хранить всю последовательность в памяти, что важно для больших и даже бесконечных данных. Приостановка. Каждый раз при выполнении yield функция приостанавливается, возвращает текущее значение и запоминает своё состояние. Продолжение. При запросе следующего значения через for или next() выполнение возобновляется ровно с места остановки. Полноценный итератор. Генератор автоматически реализует методы __iter__() и __next__(). Завершение. Когда функция доходит до конца или встречает return, выбрасывается исключение StopIteration, сигнализирующее об исчерпании. Пример кода Что использовать на практике Большие данные. Для чтения потоков и обработки больших последовательностей испо
generatorsiterators
JuniorPerformance Marketer > Google Ads > Тестирование гипотез и запуск изменений
Короткий ответ Гипотеза — это конкретное, проверяемое предположение вида «если мы изменим X, то метрика Y изменится в такую-то сторону, потому что...», а не общая идея «давайте попробуем что-то новое». Как это работает подробнее Хорошая гипотеза содержит изменение, ожидаемый эффект и метрику, по которой он будет измерен, что позволяет заранее понять, как интерпретировать результат теста. Явная формулировка также облегчает коммуникацию с командой и заказчиком теста, поскольку все стороны заранее понимают, что именно будет считаться успехом. Пример. Плохо: «Попробуем новый креатив». Хорошо: «Если заменить изображение продукта на видео с демонстрацией использования, CTR вырастет за счёт большей вовлечённости, при этом CPA не должен увеличиться более чем на 10%». Что использовать на практике Практика. Перед запуском гипотезу нужно письменно зафиксировать вместе с основной и вспомогательными метриками, чтобы не подгонять выводы под результат после того, как данные уже видны. Гипотезы стоит хранить в общем реестре/
ab-testingad-creatives
JuniorPython Developer > Основы Python > Декораторы и кэширование
Короткий ответ Декоратор — функция, принимающая другую функцию и возвращающая новую функцию (обычно wrapper), которая добавляет поведение до/после вызова оригинала без изменения его кода. Как это работает подробнее Синтаксис @decorator над определением функции эквивалентен func = decorator(func) — декоратор получает исходную функцию, внутри определяет wrapper, вызывающий оригинал и добавляющий логику, и возвращает wrapper вместо исходной функции. Пример кода Что использовать на практике Практика. Декораторы удобны для сквозной функциональности: логирования, замера времени, проверки прав доступа, кэширования — без дублирования кода в каждой функции. wrapper должен пробрасывать аргументы через *args, kwargs, чтобы не ограничивать сигнатуру оригинала. Подводные камни Риски. Забывают вернуть результат вызова оригинальной функции из wrapper (функция тогда всегда возвращает None); не пробрасывают *args/kwargs, из-за чего декорированная функция перестаёт принимать аргументы, которые принимала исходная.
cachingdecorators
MiddlePython Developer > Основы Python > Декораторы
Короткий ответ Декоратор — способ изменить или расширить поведение функции, метода или класса без изменения их исходного кода. По сути это функция, которая принимает другую функцию и возвращает новую функцию с расширенной функциональностью. Как это работает подробнее Синтаксический сахар. Запись @decorator перед определением эквивалентна строке func = decorator(func) после него. Обёртка. Внутри декоратора обычно определяется функция wrapper, которая выполняет дополнительные действия и затем вызывает исходную функцию. Применение. Декораторы используют для логирования, проверки прав, кэширования, валидации аргументов и подобных сквозных задач. Переиспользование. Общая логика выносится из тела функций в декоратор и применяется в чистом виде к разным функциям. Пример кода Что использовать на практике Сквозная логика. Выноси в декоратор повторяющиеся действия — логирование, замер времени, контроль доступа. Переиспользование. Часто нужные обёртки оформляй в отдельном модуле и применяй к разным функциям. Метаданные.
closuresdecorators
JuniorPerformance Marketer > Google Ads > Аудитории и ретаргетинг
Короткий ответ Динамический ретаргетинг автоматически показывает пользователю именно те товары, которые он просматривал или добавил в корзину, подтягивая их из товарного фида, тогда как статический ретаргетинг показывает одно и то же заранее созданное объявление всем пользователям аудитории. Как это работает подробнее Для динамического ретаргетинга нужен товарный фид (каталог) и пиксель/SDK, который передаёт события просмотра/добавления в корзину с ID товара; платформа сама подбирает шаблон объявления с конкретными товарами под каждого пользователя. Что использовать на практике На практике. Динамический ретаргетинг подходит для e-commerce с большим каталогом товаров и обычно даёт более высокую релевантность и конверсию, но требует корректно настроенного и актуального фида. Пример. Пользователь смотрел кроссовки модели X на сайте — в объявлении динамического ретаргетинга показываются именно кроссовки модели X с актуальной ценой из фида. Проверка: сверить цену в объявлении с ценой на сайте/в фиде. Подводные кам
ad-platformsaudience-targeting
JuniorFrontend Developer > JavaScript > Core JS
Замыкание — это функция вместе с лексическим окружением, в котором она была создана.
Core JSFrontend
JuniorPython Developer > Основы Python > Идемпотентность и транзакции
Короткий ответ Идемпотентная операция — та, повторное выполнение которой с тем же входом даёт тот же результат, что и однократное; пример идемпотентного метода — PUT/DELETE, неидемпотентного — POST создания ресурса. Как это работает подробнее Идемпотентность касается эффекта операции на систему, а не ответа — повторный PUT с тем же телом оставит ресурс в том же состоянии. Что использовать на практике Практика. GET, PUT, DELETE по HTTP-семантике идемпотентны; POST обычно не идемпотентен, так как повторный вызов может создать второй ресурс. Подводные камни Риск. Путать идемпотентность с безопасностью запроса (safe methods); считать, что идемпотентность гарантируется автоматически фреймворком.
consistencydistributed-transactions
JuniorDevOps Engineer > Контейнеры и доставка > Скриптинг и автоматизация
Короткий ответ Идемпотентный скрипт при повторном запуске с теми же входными данными приводит систему к тому же конечному состоянию и не создаёт побочных эффектов заново (дублей записей, повторной отправки писем, ошибок "уже существует"); это важно, потому что cron, CI-ретраи или ручной повторный запуск после сбоя — обычная ситуация, а не исключение. Как это работает подробнее идемпотентность достигается проверкой текущего состояния перед изменением ("создать, если не существует", "обновить, если отличается") вместо слепого выполнения действия. Это отличается от простой "повторяемости" — скрипт может быть воспроизводимым (даёт одинаковый результат при одинаковом вводе), но не идемпотентным, если каждый запуск создаёт новую сущность. Пример кода Что использовать на практике Рекомендация. типичные приёмы — использовать команды с флагами типа "create or update" вместо чистого "create", проверять наличие ресурса перед его созданием, использовать уникальные идемпотентные ключи при вызовах API, которые их поддержив
automationci
JuniorPython Developer > Основы Python > HTTP-семантика
Короткий ответ Идемпотентный метод — такой, что повторное выполнение одного и того же запроса приводит к тому же результату на сервере, что и один вызов. GET, PUT, DELETE, HEAD, OPTIONS идемпотентны по спецификации; POST и PATCH — нет. Как это работает подробнее идемпотентность касается состояния ресурса на сервере, а не кода ответа — повторный DELETE уже удалённого ресурса может вернуть 404 вместо 204, но состояние ("ресурса нет") не меняется, поэтому метод остаётся идемпотентным. Пример кода Что использовать на практике Рекомендация. идемпотентность важна при повторных попытках (retries) на нестабильной сети — HTTP-клиенты и прокси могут безопасно повторить идемпотентный запрос при таймауте, не опасаясь побочных эффектов. Для неидемпотентных операций (POST) повторную отправку нужно защищать явно, например ключом идемпотентности. Подводные камни Риски. считать PUT идемпотентным автоматически, даже если обработчик добавляет побочные эффекты (например, инкрементирует счётчик версии при каждом вызове — это нару
httpidempotency