JuniorPerformance Marketer > Google Ads > Бюджет и пейсинг
Короткий ответ Дейпартинг — это настройка показа объявлений только в определённые часы и дни недели; он напрямую ограничивает окна, в которых кампания может расходовать бюджет, и может привести к недорасходу, если окна выбраны слишком узко. Как это работает подробнее В настройках кампании задаётся расписание показа (например, «показывать с 9:00 до 21:00 по будням»); вне этого окна объявления не участвуют в аукционах, даже если бюджет на день не израсходован. Что использовать на практике На практике. Дейпартинг применяют, когда есть данные о времени активности или конверсий целевой аудитории (например, звонки принимаются только в рабочие часы) или нужно избежать показа рекламы, когда бизнес не может обработать заявку. Пример. Расписание: показ только с 10:00 до 18:00, бюджет 5000 руб./день регулярно расходуется лишь на 60%. Проверка: отчёт по часам показов (Hour of Day) показывает конверсии и в вечернее время, которое исключено расписанием. Подводные камни Частая ошибка. Частая ошибка — настроить узкое расписа
ad-platformsbudget-pacing
MiddlePython Developer > Основы Python > Объектно-ориентированное программирование
Короткий ответ @property — встроенный декоратор, который объявляет метод класса как свойство: обращаться к его результату можно как к обычному атрибуту, без скобок. По сути это синтаксический сахар над функцией property(), которой передаются методы-геттер, сеттер и делетер. Как это работает подробнее Такой подход называют управляемыми атрибутами: снаружи поле выглядит обычным, а внутри допускает проверки, вычисления и логирование. Геттер. Метод, помеченный @property, возвращает значение внутреннего атрибута, который по соглашению хранится с одним подчёркиванием. Сеттер. Метод с декоратором @имя_свойства.setter вызывается при присваивании obj.attribute = value и может проверить корректность нового значения. Делетер. Метод с декоратором @имя_свойства.deleter обрабатывает оператор del obj.attribute. Типичный сценарий. Контроль доступа к атрибуту: значение хранится во внутреннем поле, а доступ к нему идёт через геттер и сеттер с валидацией. Пример кода Что использовать на практике Валидация. Используй сеттер, что
gettersoop
JuniorSMM Manager > Общее > Рекламные платформы и медиазакупка
Короткий ответ Дневной бюджет задаёт ограничение расхода на каждый день, общий бюджет — ограничение на весь срок действия кампании, при этом площадка сама распределяет расход по дням в рамках срока. Как это работает подробнее при дневном бюджете расход может немного колебаться день от дня в рамках допусков площадки, но не превышает лимит систематически; при общем бюджете система может перераспределять расход, ускоряя его в дни с лучшей конверсией. Что использовать на практике Подход. дневной бюджет удобен для долгосрочных кампаний без фиксированной даты окончания, общий — для кампаний с чёткими сроками (акция, запуск). Пример. Акция «Чёрная пятница» длится 3 дня — задаётся общий бюджет 90 000 руб. на весь период вместо дневного лимита 30 000 руб., чтобы система могла перераспределить расход на пиковые часы спроса. Подводные камни Ошибка. задавать общий бюджет без указания конкретных дат кампании или не учитывать, что система может потратить большую часть бюджета в первые дни.
campaign-optimizationmedia-planning
JuniorData Analyst > Метрики и эксперименты > A/B-тесты
Короткий ответ Доверительный интервал (ДИ) — это диапазон значений эффекта, который с заданной вероятностью (обычно 95%) накроет истинную разницу между группами при многократном повторении эксперимента. Чем шире интервал, тем менее точна оценка эффекта. Как это работает подробнее 95% ДИ означает, что если повторить эксперимент много раз и каждый раз строить такой интервал, то примерно в 95% случаев он будет содержать истинное значение эффекта — это не вероятность для конкретного интервала. Пример: конверсия A = 10.0%, B = 10.8%, разница +0.8 п.п., 95% ДИ = [+0.1; +1.5] п.п. Вывод: эффект скорее всего положительный, но величина неопределённа — от почти незаметного до заметного. Проверка: сузить интервал можно только увеличением выборки или длительности теста, а не пересчётом по тем же данным. Что использовать на практике ДИ полезен для оценки и размера эффекта, и его неопределённости: если интервал [-0.5%; +3.5%], эффект может быть как отрицательным, так и ощутимо положительным — решение рискованно. Подводные
doveritelnyy-intervalkonversiya
JuniorData Analyst > SQL и данные > Статистика и теория вероятностей
Короткий ответ Доверительный интервал (например, 95%) — это диапазон значений, который при многократном повторении процедуры сбора выборки и расчёта интервала накрывает истинное значение показателя примерно в 95% случаев; это не «вероятность того, что истина лежит внутри конкретного интервала». Как это работает подробнее интервал строится вокруг точечной оценки (например, среднего) с учётом стандартной ошибки и выбранного уровня доверия; шире выборка — уже интервал при прочих равных. Чем выше выбранный уровень доверия (например, 99% вместо 95%), тем шире получается интервал при тех же данных. Пример кода Что использовать на практике На практике: доверительный интервал даёт представление о неопределённости оценки, а не только о самом числе — например, конверсия 3.2% с интервалом [2.0%; 4.4%] выглядит гораздо менее надёжной, чем та же конверсия с интервалом [3.0%; 3.4%]. Широкий интервал — сигнал, что выборки мало для уверенных выводов. На практике также полезно явно указывать используемый уровень доверия (90%,
confidence-intervalsampling
MiddlePython Developer > Основы Python > Функции и области видимости
Короткий ответ Замыкание — это функция, которая запоминает переменные из окружающей (объемлющей) области видимости даже после завершения выполнения этой области; при создании нескольких замыканий в цикле они обычно ссылаются на одну и ту же переменную цикла по имени, а не на её значение на момент создания, поэтому все замыкания видят её финальное значение. Как это работает подробнее Внутренняя функция хранит ссылку на ячейку переменной (cell) во внешней функции, а не копию значения на момент определения. Переменная цикла for i in range(n) — это одна и та же переменная на всех итерациях, поэтому все замыкания, созданные в цикле и ссылающиеся на i, после завершения цикла видят её последнее значение. Пример кода Что использовать на практике Практика. Проблема решается "захватом" текущего значения через параметр по умолчанию (def f(i=i): ...) или через functools.partial, который фиксирует значение аргумента в момент создания. Замыкания широко используют для фабрик функций, мемоизации и для реализации декораторов
closuresfunctions-scope
JuniorDevOps Engineer > Контейнеры и доставка > Процессы Linux
Короткий ответ Зомби-процесс — завершившийся процесс, запись о котором (код завершения) ещё не была считана родительским процессом через системный вызов wait(); он возникает, когда родитель не вызывает wait/waitpid вовремя или вообще. Как это работает подробнее После завершения процесса ядро сохраняет минимальную запись в таблице процессов (PID, код возврата) до тех пор, пока родитель не заберёт эту информацию; если родитель этого не делает, запись остаётся в состоянии Z (zombie) в выводе ps. Пример кода Что использовать на практике Практика. единичные кратковременные зомби — это нормально и не требуют действий, а накопление множества зомби говорит о баге в родительском процессе, который не обрабатывает завершение дочерних процессов; зомби сами по себе не занимают память, но исчерпывают таблицу PID. Подводные камни Риск. Частая ошибка — пытаться «убить» зомби сигналом kill: это бесполезно, так как процесс уже мёртв, нужно разбираться с родительским процессом (перезапустить его либо исправить код, чтобы он выз
linuxprocesses
MiddleData Analyst > SQL и данные > Качество данных
Короткий ответ Идемпотентность означает, что безопасный повтор батча не меняет итог сверх результата первого успешного выполнения и не создаёт дубликаты. Как это работает подробнее Простой append нарушает это свойство при ретрае. Идемпотентная загрузка связывает каждую строку с устойчивым ключом и либо обновляет существующую запись, либо полностью заменяет ограниченный обрабатываемый срез. UPSERT. Подходит для сущностей с надёжным уникальным ключом. Delete and insert. Удобен для атомарной перезаписи партиции или диапазона дат. Checkpoint. Продвигается только после успешной фиксации всего батча. Пример кода Что использовать на практике Запускайте один и тот же тестовый батч дважды и сравнивайте количество строк, контрольные суммы и значения. Выполняйте замену среза и обновление checkpoint в одной транзакции или эквивалентной атомарной операции. Подводные камни Изменчивый ключ. Если бизнес-ключ нестабилен, UPSERT создаст новую строку вместо обновления. Поздние данные. Слишком узкое инкрементальное окно пропусти
eltetl
JuniorPython Developer > Основы Python > Кеширование
Короткий ответ Инвалидация кеша — явное удаление или обновление устаревшей записи при изменении исходных данных, чтобы пользователи не видели старые значения дольше необходимого. Как это работает подробнее При изменении записи в БД приложение дополнительно удаляет или перезаписывает соответствующий ключ в кеше. Пример кода Что использовать на практике Практика. Простой способ — удалить ключ сразу после успешного обновления БД (invalidate-on-write); сложнее согласовать это при нескольких инстансах приложения и при сбоях (если удаление кеша не выполнилось, данные останутся устаревшими до истечения TTL). Подводные камни Риск. Забыть инвалидировать кеш в одном из мест обновления данных; удалять кеш до коммита транзакции в БД, тогда следующий запрос может закешировать всё ещё старое значение.
cache-invalidationcaching
MiddlePerformance Marketer > Google Ads > Тестирование гипотез и запуск изменений
Короткий ответ Контаминация происходит, когда один и тот же пользователь попадает в несколько вариантов теста (или в тест и в обычную кампанию одновременно) из-за пересечения аудиторий между разными кампаниями/каналами, что искажает чистоту сравнения. Как это работает подробнее Если пользователь видит и вариант A, и вариант B (например, через разные устройства, ретаргетинговые списки или пересекающиеся look-alike аудитории), его поведение может быть под влиянием обоих вариантов сразу, и отнести результат к одному конкретному варианту становится некорректно. Контаминация может возникать и между разными рекламными площадками — один и тот же пользователь видит тестовый лендинг и через Google, и через Meta одновременно. Пример. Тест лендинга идёт через платный трафик (сплит 50/50) Одновременно отдел CRM отправляет рассылку по базе с ссылкой на новый лендинг -> часть трафика на вариант B приходит не из тестируемого платного канала, искажая сравнение Решение: либо исключить пересекающуюся аудиторию из рассылки на в
ab-testingaudience-segmentation