JuniorPerformance Marketer > Google Ads > Аудитории и ретаргетинг
Короткий ответ Исключающая аудитория — это список пользователей, которых специально не показывают в конкретной кампании (например, уже совершивших покупку), чтобы не тратить бюджет на нерелевантный повторный показ. Как это работает подробнее В настройках аудитории кампании указывается аудитория для исключения (например, «покупатели за последние 30 дней»), и платформа не показывает объявление пользователям из этого списка, даже если они входят в основную аудиторию таргетинга. Что использовать на практике На практике. Исключения чаще всего применяют, чтобы не показывать рекламу товара тем, кто его уже купил, или не показывать прогревающий контент тем, кто уже на следующем этапе воронки. Пример. Кампания ретаргетинга «Брошенная корзина» исключает аудиторию «Покупатели за 14 дней». Проверка: в отчёте по пересечению (Overlap) эти две аудитории не должны пересекаться в активном показе. Подводные камни Частая ошибка. Частая ошибка — забыть обновлять или вообще не настроить исключение покупателей, из-за чего бюджет т
ad-platformsads-scripts
MiddlePython Developer > Основы Python > Генераторы и итераторы
Короткий ответ Итератор — это объект, который перебирает элементы коллекции по одному за раз и реализует протокол из методов __iter__() и __next__(). Когда элементы заканчиваются, __next__() выбрасывает StopIteration. Цикл for и функция next() как раз продвигают итератор по элементам. Как это работает подробнее Итерируемый объект и итератор выполняют разные роли: первый умеет только возвращать итератор, а второй реально осуществляет перебор. Протокол итерации. Объект считается итератором, если у него есть __iter__(), возвращающий самого себя, и __next__(), отдающий следующий элемент или бросающий StopIteration в конце. Итерируемые объекты. Списки, строки и словари итераторами не являются: функцию iter(obj) используют, чтобы получить для них отдельный итератор. Цикл for. Неявно вызывает iter(), затем повторяет next() и останавливается, когда ловит StopIteration. Пример кода Что использовать на практике Обычный обход. Для перебора коллекций достаточно цикла for — создавать итераторы вручную не нужно. Собственна
iteriterator-protocol
JuniorDevOps Engineer > Контейнеры и доставка > Мониторинг, логирование и observability
Короткий ответ Кардинальность метрики — это количество уникальных комбинаций значений её labels, то есть количество отдельных временных рядов, которые она порождает; высокая кардинальность (например, label со значением user_id или request_id) приводит к взрывному росту числа рядов, потребления памяти и диска в Prometheus. Как это работает подробнее каждая уникальная комбинация значений labels — это отдельный временной ряд в TSDB, который Prometheus хранит и индексирует независимо. Если добавить в метрику label с миллионом возможных значений (например, user_id), то вместо одной метрики с разумным числом рядов получится до миллиона отдельных рядов, что резко увеличивает потребление памяти (в первую очередь — индекса TSDB). Пример кода Что использовать на практике Практика. labels должны иметь ограниченное и предсказуемое количество значений — например, method, status_code, region, service обычно безопасны, а user_id, email, request_id, полный URL с параметрами — нет. Для таких "уникальных на запрос" идентификат
cardinalitymetrics
JuniorPython Developer > Основы Python > Объектно-ориентированное программирование
Короткий ответ Класс в Python — это логическая сущность, описывающая набор однотипных объектов: она содержит атрибуты (данные) и методы (поведение). Класс можно рассматривать как «чертёж», по которому создаются объекты, а объект, или экземпляр, — конкретная реализация этого чертежа со своим состоянием. Как это работает подробнее Класс объявляется ключевым словом class, после которого идут имя класса и тело с отступом. Экземпляр создаётся вызовом класса как функции: имя = ИмяКласса(аргументы). Атрибуты класса. Переменные, заданные на уровне класса, являются общими для всех экземпляров. Атрибуты экземпляра. Переменные, присвоенные через self внутри __init__(), принадлежат каждому конкретному объекту. Метод __init__. При создании экземпляра Python автоматически вызывает __init__(), который инициализирует атрибуты нового объекта. Методы. Функции внутри класса получают доступ к экземпляру через параметр self и описывают его поведение. Всё есть объект. В Python практически всё, с чем работает программист, является
classesmethods
MiddleJava Developer > Java Core > Java 8+
Короткий ответ Optional — контейнерный класс из пакета java.util, появившийся в Java 8: он содержит либо одно ненулевое значение, либо пуст. Его задача — сделать возможное отсутствие значения явным в сигнатуре метода и избавить код от бесконечных проверок на null и от NullPointerException: вместо возврата null метод возвращает Optional.empty(). Как это работает подробнее Создать Optional можно тремя способами: Optional.of(value) — только для заведомо ненулевого значения, иначе сразу NullPointerException; Optional.ofNullable(value) — допускает null и превращает его в пустой Optional; Optional.empty() — пустой контейнер. Для проверки наличия значения есть isPresent() и isEmpty() (с Java 11). Для безопасного получения — orElse(default), orElseGet(supplier), когда значение по умолчанию вычисляется лениво, и orElseThrow(). Методы map(), filter() и flatMap() позволяют преобразовывать значение внутри контейнера без проверок. Optional активно используется в Stream API: findFirst(), max() и другие терминальные операци
javajava-8
JuniorJava Developer > Java Core > Основы Java
Короткий ответ Класс-обёртка — это ссылочный тип, который упаковывает примитив в объект: int → Integer, long → Long, char → Character, boolean → Boolean. Обёртки нужны там, где требуется объект, а не значение: коллекции и дженерики хранят только объекты. Преобразование автоматическое: автобоксинг упаковывает примитив в обёртку, распаковка делает обратное. Как это работает подробнее Помимо «объектности», обёртки дают полезную функциональность: константы вроде Integer.MAX_VALUE, методы преобразования Integer.parseInt("42") и Integer.valueOf(...), а также возможность хранить null для обозначения отсутствия значения. Автобоксинг — автоматическая упаковка примитива при присваивании или добавлении в коллекцию. Распаковка — автоматическое извлечение примитива; для null-обёртки даёт NullPointerException. Кэш значений — Integer от -128 до 127 кэшируется, поэтому == для обёрток даёт неожиданные результаты. Функциональность — константы, парсинг и преобразование типов, например Integer.parseInt() и valueOf(). Пример кода
autoboxinginteger
JuniorData Analyst > SQL и данные > Продуктовые и бизнес-метрики
Короткий ответ Когорта — группа пользователей, объединённых общим признаком, чаще всего датой первого визита или регистрации; когортный анализ сравнивает поведение (retention, выручку) разных когорт во времени, чтобы понять, улучшается ли продукт для новых пользователей. Как это работает подробнее пользователей группируют по дате (неделе, месяцу) первого действия, затем для каждой когорты считают выбранную метрику на 1-й, 2-й, N-й день/неделю/месяц после входа в когорту. Что использовать на практике Применение. когорты можно формировать не только по дате, но и по каналу привлечения, платформе, тарифу — это позволяет сравнивать не только "со временем", но и "между сегментами"; результат часто представляют в виде матрицы (когортная таблица). Проверка или пример. Рост retention на день 7 и день 30 у апрельской когорты по сравнению с мартовской — сигнал, что изменения в продукте в марте-апреле положительно повлияли на удержание новых пользователей. Подводные камни Частая ошибка. сравнивают когорты разного размера
cohort-analysisproduct-analytics
JuniorPerformance Marketer > Google Ads > Сквозная аналитика и отчётность
Короткий ответ Когортный анализ — это группировка пользователей по общему признаку (например, дате первого визита или первой покупки) и отслеживание их поведения во времени отдельно по каждой группе. Как это работает подробнее Пользователей делят на когорты (например, «пришли в январе», «пришли в феврале») и смотрят метрику (retention, повторные покупки) для каждой когорты по неделям или месяцам после входа. Когорты можно строить не только по дате первого визита, но и по каналу привлечения или типу устройства, чтобы сравнить, как разные сегменты пользователей ведут себя с течением времени. Что использовать на практике Практика. Это позволяет увидеть, улучшается или ухудшается качество привлекаемой аудитории с течением времени, а не только смотреть на общий показатель за месяц. Для наглядности когортную таблицу часто оформляют как тепловую карту (heatmap), где цветом выделяется более высокий или низкий процент удержания — это упрощает чтение большого количества чисел. Пример. Сравните когорты по долям удержанн
analyticscohort-analysis
JuniorPerformance Marketer > Google Ads > Основы performance-маркетинга
Короткий ответ События конверсий фиксируются аналитикой или пикселем, а рекламная система может использовать их для обучения. Частое промежуточное событие даёт больше сигналов, но не обязательно означает продажи. Как это работает подробнее Каждая конверсия фиксируется событием в пикселе или аналитике с привязкой к источнику трафика; на основе этих событий считаются CR, CPA и дальнейшая оптимизация алгоритма. Выбор, что считать микро- и макроконверсией, закладывается в настройках целей заранее и напрямую влияет на то, как алгоритм будет оптимизировать показы — он всегда стремится максимизировать именно выбранное целевое событие. Что использовать на практике На старте или при длинном цикле сделки допустимо временно оптимизировать на качественную микроконверсию; по мере накопления данных проверяйте переход к оплате или квалифицированной сделке. Подводные камни Рост регистраций, корзин или лидов не равен росту выручки, если эти действия не доходят до макроконверсии.
campaign-optimizationconversion-tracking
MiddlePython Developer > Основы Python > Исключения и контекстные менеджеры
Короткий ответ Контекстный менеджер — объект, который гарантирует корректное освобождение ресурсов вроде файлов и соединений с помощью оператора with. Метод __enter__() выполняется при входе в блок, а __exit__() — при выходе, который происходит всегда, даже если возникло исключение. Как это работает подробнее Конструкция with избавляет от ручной очистки ресурсов и заменяет громоздкие связки try/finally. События входа и выхода. Код внутри with выполняется между __enter__() и __exit__(), а выход гарантирован и при нормальном завершении, и при ошибке. Сигнатура __exit__(). Метод принимает тип исключения, значение и traceback; если ошибки не было, все три аргумента равны None. Классический пример. open() возвращает контекстный менеджер: файл автоматически закрывается на выходе из блока, вызывать close() явно не нужно. Цена утечки. Без закрытия ресурсов система может исчерпать файловые дескрипторы и соединения, замедлиться или упасть. Пример кода Что использовать на практике Файлы и соединения. Работай с ними чере
context-managersenter-exit