MiddleDevOps Engineer > Контейнеры и доставка > Infrastructure as Code и управление конфигурацией
Короткий ответ Динамический inventory получает список хостов и их группировку не из статического файла, а опросом внешнего источника (облачного API, CMDB) в момент запуска плейбука, поэтому он всегда отражает текущий набор инстансов; для AWS это настраивается YAML-файлом инвентаря с plugin: amazon.aws.aws_ec2, фильтрами по тегам и правилами keyed_groups для автоматической группировки, вместо того чтобы вручную поддерживать список IP при каждом масштабировании ASG. Как это работает подробнее при запуске ansible-playbook -i inventory_aws_ec2.yml плагин инвентаря обращается к EC2 API, получает список инстансов по заданным фильтрам (регион, теги, состояние running), и на основе keyed_groups/hostnames строит группы и имена хостов динамически на каждый прогон, то есть источником правды становится сам облак, а не файл в репозитории. Пример кода Что использовать на практике Практика. такой инвентарь стоит ограничивать фильтрами по тегам и регионам, чтобы не захватывать чужие или неожиданные ресурсы, и кэшировать резу
configuration-managementiac
MiddleData Analyst > SQL и данные > Продуктовые и бизнес-метрики
Короткий ответ Нужно последовательно сравнить определения метрики, окна времени, таймзоны, фильтры и момент обновления данных в дашборде и в прямом запросе — расхождение почти всегда объясняется различием в одном из этих параметров, а не ошибкой в данных. Как это работает подробнее дашборды часто используют предрасчитанные агрегаты (кэш, материализованные представления), которые обновляются с задержкой, используют своё определение "активности" (например, исключают тестовые аккаунты) и свою таймзону; прямой запрос к сырым данным может не учитывать эти нюансы. Пример кода Что использовать на практике Практика. стоит проверить по порядку: 1) дата последнего обновления дашборда (lag); 2) фильтры, применённые в дашборде по умолчанию (исключение ботов, внутренних аккаунтов, конкретных стран); 3) таймзона агрегации; 4) точное определение retention (classic vs rolling, окно в днях); 5) дедупликация событий. Подводные камни Частые ошибки. сразу предполагают ошибку в SQL-запросе или баг в дашборде, не проверив методоло
dashboardsdata-quality
MiddlePerformance Marketer > Google Ads > Частота и креативы
Короткий ответ Совпадение роста частоты, падения CTR и роста CPM указывает на сочетание исчерпания аудитории и усталости креатива; при ограниченном бюджете на продакшн в первую очередь используют быстрые меры — ротацию существующих форматов, динамическую креативную оптимизацию, снижение/ограничение частоты и расширение аудитории, прежде чем заказывать новые креативы. Как это работает подробнее Небольшая по размеру ретаргетинговая аудитория с продолжающимся показом быстро накапливает высокую частоту; одновременно одни и те же пользователи видят один и тот же креатив многократно, что снижает отклик (CTR) и заставляет алгоритм платить больше за оставшееся внимание аудитории (рост CPM). Что использовать на практике На практике. Быстрые и недорогие меры: включить/ужесточить frequency cap там, где это доступно, задействовать Dynamic Creative (автоматическая комбинация существующих текстов/изображений), расширить окно ретаргетинга или добавить смежные сегменты (например, вовлечённость в соцсетях) для увеличения пула
ad-platformscampaign-optimization
MiddlePerformance Marketer > Google Ads > Частота и креативы
Короткий ответ Диагностика подтверждается, если метрика Frequency в отчёте упирается ровно в установленный лимит при том, что бюджет расходуется не полностью и доступная аудитория значительно больше фактического охвата; решение — повысить частотный лимит или расширить окно, за которое он считается, сопоставив это с целями кампании по частоте касаний. Как это работает подробнее При достижении частотного лимита платформа прекращает показ конкретному пользователю до истечения заданного окна, и если аудитория большая, а лимит низкий (например, 1 показ за 7 дней) и охват растёт быстрее, чем кампания успевает расходовать бюджет, образуется разрыв между потенциальным и фактическим расходом. Что использовать на практике На практике. Нужно сравнить плановый охват (размер аудитории) с фактическим накопленным охватом и темпом его роста: если охват уже близок к размеру всей аудитории, а бюджет недорасходован, то ограничение именно в частотном лимите, а не в таргетинге или ставке. Пример. Лимит «1 показ за 7 дней», доступ
ad-platformscampaign-optimization
JuniorDevOps Engineer > Контейнеры и доставка > Надёжность и инцидент-менеджмент
Короткий ответ Severity — это объективная оценка влияния инцидента на пользователей/бизнес прямо сейчас (сколько пользователей затронуто, есть ли потеря данных, критична ли функция), а шкала серьёзности нужна, чтобы заранее определить, кого эскалировать, как быстро реагировать и когда коммуницировать клиентам. Как это работает подробнее типичная шкала — от SEV1 (критический, массовый отказ или потеря данных, требуется немедленная реакция и эскалация руководству) до SEV4 (незначительное влияние, можно чинить в рабочее время). Шкала заранее определяет пороги: сколько пользователей затронуто, есть ли обходной путь, затронуты ли деньги/безопасность/данные. Пример / кейс Ожидаемое поведение: дежурный, увидев алерт "ошибки в отчёте для 2% пользователей", присваивает SEV3 согласно заранее описанным критериям и не поднимает всю команду среди ночи, в отличие от алерта о полном отказе оплаты. Пример кода Что использовать на практике Практический подход. Шкала серьёзности убирает субъективность в момент инцидента — дежу
high-availabilityincident-response
MiddlePython Developer > Основы Python > Исключения и контекстные менеджеры
Короткий ответ Голый except перехватывает абсолютно все исключения, включая KeyboardInterrupt, SystemExit и GeneratorExit, тогда как except Exception их не трогает. На практике ловят конкретные ожидаемые типы: код реагирует на разные ошибки по-разному, а посторонние сбои не маскируются. Как это работает подробнее Разница определяется иерархией исключений и тем, насколько широкий круг ошибок попадает в обработчик. Иерархия исключений. От BaseException наследуются и Exception, и системные KeyboardInterrupt, SystemExit, GeneratorExit, поэтому except Exception их не перехватывает. Голый except. Не сообщает, какая ошибка произошла: реальный тип скрыт, программа «проглатывает» баг, а пользователь не может прервать её по Ctrl+C. Порядок обработчиков. Их располагают от конкретных к общим, иначе первый общий обработчик перехватит ошибку раньше и остальные не сработают. Допустимый случай. Голый except оправдан лишь как страховочная сетка в самом конце цепочки и при полном понимании рисков. Пример кода Что использовать
error-handlingexcept
JuniorSMM Manager > Общее > Контент и форматы
Короткий ответ Бриф для дизайнера описывает одну статичную композицию (макет, текст, цвета), а бриф для видеопродюсера дополнительно должен описывать время (хронометраж, тайминг сцен), звук/музыку, динамику повествования и часто сценарий или сторилайн — то есть добавляется измерение времени. Как это работает подробнее статичный макет существует в одном «кадре», поэтому бриф фокусируется на композиции и иерархии; видео разворачивается во времени, поэтому бриф должен задавать, что происходит в первые секунды (чтобы удержать внимание), в середине и в конце (призыв к действию), а также какой звук уместен. Что использовать на практике Рекомендация. для видео дополнительно нужно указать хронометраж (например, до 30 секунд для Reels), наличие субтитров (многие смотрят без звука), структуру по сценам, а для статики — только финальный размер и пропорции. Подводные камни Риск. присылать видеопродюсеру бриф, написанный как для картинки (без тайминга и сценария); не уточнять, нужны ли субтитры и озвучка; забывать указать
content-productioncreative-brief
JuniorPerformance Marketer > Google Ads > Атрибуция и оценка
Короткий ответ Органический трафик — это визиты без рекламных UTM-меток, пришедшие из поисковой выдачи, прямых заходов или бесплатных публикаций, а платный трафик — визиты с размеченными платными каналами (cpc, paid social и т.д.); смешивать их при оценке рекламы некорректно. Как это работает подробнее GA4 определяет канал трафика по комбинации utm_source/utm_medium (если они есть) или по встроенным правилам для известных источников (например, переход из поисковика без меток определяется как organic search), и относит визит в соответствующую строку отчёта. Что использовать на практике Практика. При оценке эффективности рекламной кампании нужно смотреть именно на платные каналы (paid search, paid social и т.п.), а не на общий трафик сайта, иначе рост органики может скрыть падение эффективности рекламы или наоборот. В GA4 платные каналы разбиты более детально (Paid Search, Paid Social, Paid Shopping, Paid Video и т.д.), и для корректной оценки конкретной рекламной активности нужно смотреть именно на нужную стро
analyticsattribution
JuniorData Analyst > SQL и данные > Качество данных
Короткий ответ Таблица фактов описывает измеримые события на фиксированной грануляции, а таблицы измерений — контекст этих событий: клиента, товар, дату, канал и другие признаки. Как это работает подробнее В центре схемы «звезда» находится факт с метриками и внешними ключами. Каждая строка факта означает одно событие выбранного уровня детализации, например одну позицию заказа. Факт. Обычно содержит много строк, ключи измерений и аддитивные или полуаддитивные метрики. Измерение. Содержит описательные атрибуты для фильтрации, группировки и подписей в отчётах. Пример кода Что использовать на практике Сначала зафиксируйте грануляцию факта, затем определите его ключи и метрики. Сверяйте сумму после соединения с контрольной суммой по таблице фактов. Подводные камни Смешанная грануляция. Объединение фактов разного уровня детализации приводит к задвоению метрик. Раздутый факт. Повторяющиеся текстовые атрибуты увеличивают объём таблицы и усложняют обновление справочников.
data-warehousedimension-table
JuniorData Analyst > SQL и данные > Python для анализа данных
Короткий ответ NaN — это специальное число с плавающей точкой для обозначения отсутствующего числового значения, а None — обычный объект Python для отсутствующего значения; pandas обычно приводит оба к единообразному представлению пропуска в большинстве операций и методов вроде isna(). Как это работает подробнее в числовом столбце (float64) None автоматически преобразуется в NaN при создании Series; в столбце типа object (например, со строками) None может храниться как есть, но isna() и isnull() всё равно корректно распознают и NaN, и None, и NaT (пропуск в датах) как пропущенные значения. Пример кода Что использовать на практике На практике: для практических целей достаточно пользоваться isna()/notna(), которые унифицированно обрабатывают все виды пропусков, не разбираясь вручную в том, что именно хранится в ячейке; важно не путать пропуск с пустой строкой '' или текстовым "None" — это разные вещи, которые isna() не поймает без предварительной замены. Проверка: isna() вернёт True для второго и третьего элеме
missing-datanan