MiddlePerformance Marketer > Google Ads > Данные, комплаенс и безопасность рекламных аккаунтов
Короткий ответ Проверьте формат и нормализацию данных, актуальность контактов, кодировку файла и то, что из выгрузки исключены данные без требуемого согласия. Как это работает подробнее Платформа сопоставляет нормализованные значения, поэтому телефон без кода страны или email с лишним пробелом может не совпасть даже при наличии правильного контакта. Нормализуйте до хеширования. Требования к email, телефону и другим полям могут различаться по платформам. Что использовать на практике Проверьте выборку вручную. Сверьте её с документацией, проверьте телефоны в международном формате и очистите лишние пробелы и неверный регистр. Подводные камни Не обвиняйте платформу без проверки файла. Простые ошибки формата и устаревшие контакты часто объясняют низкий match rate.
csvcustomer-match
MiddleData Analyst > SQL и данные > Инструменты и инженерные практики
Короткий ответ df[df['status'] == 'active'] может вернуть не независимую копию, а представление (view) исходного DataFrame, поэтому присвоение нового столбца через df_filtered['flag'] = 1 неоднозначно для pandas и порождает предупреждение; правильное решение — явно создать копию через .copy() или использовать .loc для присвоения. Как это работает подробнее Как это работает: булева индексация в pandas иногда возвращает копию, а иногда представление в зависимости от внутренней структуры данных, и pandas не может гарантировать, что изменение df_filtered не должно было повлиять на df; отсюда SettingWithCopyWarning — предупреждение о потенциально непредсказуемом поведении, а не гарантированная ошибка. Пример кода Что использовать на практике На практике: если предполагается, что df_filtered — независимый объект, его нужно явно создать через df_filtered = df[df['status'] == 'active'].copy(); если же цель — изменить исходный df, то нужно использовать df.loc[df['status'] == 'active', 'flag'] = 1 напрямую, без промежу
dataframepandas
MiddlePerformance Marketer > Google Ads > Устойчивость результатов и управление рисками
Короткий ответ Платформы отличаются объёмом инвентаря, аукционом и доступной аудиторией. TikTok мог быстрее насытить релевантный сегмент, в то время как Google Ads сохраняет запас поискового спроса. Как это работает подробнее Безопасный для одной платформы шаг может быть чрезмерным для другой, особенно при различии географии, ниши и размера инвентаря. Поэтому темп роста нельзя переносить между каналами без отдельной диагностики. Что использовать на практике На TikTok сравните Frequency и размер доступной аудитории до и после роста. В Google проверьте Impression Share и потери доли показов из-за бюджета. Проверяйте фазу обучения отдельно на каждой платформе и масштабируйте по её собственному запасу. Подводные камни Не применяйте единый универсальный процент роста к разным платформам, игнорируя их различную аудиторию и аукцион.
audience-saturationbudget-scaling
SeniorDevOps Engineer > Контейнеры и доставка > Реестры и распространение образов
Короткий ответ Нет единственного решения: обычно сочетают дедупликацию за счёт единых базовых образов между сервисами, garbage collection непромотированных/временных тегов, перенос редко используемых архивных образов в более дешёвое холодное хранилище, и явный аудит того, какие образы реально нужны по требованиям compliance, а не только по текущему бюджету. Как это работает подробнее большая часть затрат на хранение образов в реестре обычно приходится не на уникальный код приложений, а на повторяющиеся базовые слои (системные библиотеки, runtime языка), если разные команды используют разные версии или источники базовых образов — унификация базовых образов снижает количество уникальных крупных слоёв, которые реестр должен хранить отдельно. Garbage collection непромотированных тегов (временных CI-сборок, dev-веток) убирает заведомо ненужный со временем объём. Холодное хранилище (например, объектное хранилище с более низким классом доступности/стоимости) подходит для образов, которые должны формально сохраняться
container-imagescontainer-registry
MiddlePython Developer > Основы Python > Docker и контейнеры
Короткий ответ Нужно обрабатывать SIGTERM, дожидаясь завершения уже принятых запросов и закрывая соединения с БД/брокером, прежде чем процесс завершится, а оркестратор должен давать приложению достаточный grace period перед принудительным SIGKILL. Как это работает подробнее при остановке контейнера Docker/Kubernetes сначала отправляет SIGTERM и ждёт grace period, затем присылает SIGKILL; Gunicorn/Uvicorn по умолчанию умеют корректно обрабатывать SIGTERM, переставая принимать новые соединения и ожидая завершения текущих. Пример кода Что использовать на практике Рекомендация. важно, чтобы оркестратор сначала убирал инстанс из балансировки, и только потом слал SIGTERM — иначе новые запросы продолжат приходить на останавливающийся инстанс; grace period должен быть больше самого долгого ожидаемого запроса. Подводные камни Риск. слишком короткий grace period относительно реальной длительности запросов; перехват SIGTERM с мгновенным sys.exit() без ожидания текущих запросов, что равносильно отсутствию graceful shutdo
containerizationcontainers
SeniorSMM Manager > Общее > Контент-стратегия
Короткий ответ Однозначной пропорции awareness/conversion для ограниченного бюджета не существует — решение зависит от зрелости аудитории, длины цикла продажи и текущих бизнес-приоритетов (рост базы против краткосрочной выручки); на уровне бизнеса это решение нужно принимать совместно с коммерческим руководством, а не внутри SMM-команды изолированно. Как это работает подробнее awareness-контент работает на долгосрочный рост базы потенциальных клиентов, а conversion — на реализацию уже существующего интереса; при ограниченном бюджете усиление одного почти всегда означает ослабление другого в краткосрочной перспективе. Сравнение Компромисс. приоритет conversion даёт более предсказуемый краткосрочный результат, но истощает базу для будущего роста; приоритет awareness закладывает основу для будущего, но не даёт немедленной отдачи и сложнее защищать перед руководством в моменте нехватки бюджета. Критерий выбора — горизонт планирования, принятый компанией, и готовность руководства терпеть отложенный результат; реше
awarenessbudgeting
MiddleDevOps Engineer > Контейнеры и доставка > Безопасность и DevSecOps
Короткий ответ Нужно запускать контейнер от непривилегированного пользователя (runAsNonRoot), запретить привилегированный режим и повышение привилегий (allowPrivilegeEscalation: false), убрать ненужные Linux-capabilities, ограничить или полностью запретить hostPath-монтирования через PodSecurity admission/политику, и применить seccomp/AppArmor профиль, ограничивающий доступные системные вызовы. Как это работает подробнее контейнер по умолчанию делит ядро ОС с хостом; если процесс внутри контейнера работает как root и имеет доступ к хостовым ресурсам (hostPath с правами на запись, привилегированный режим, лишние capabilities вроде SYS_ADMIN), он получает возможность влиять на файловую систему или процессы узла, фактически выходя за пределы изоляции контейнера. Ограничение этих возможностей на уровне Pod/контейнера снижает поверхность атаки даже при компрометации самого приложения. Пример кода Что использовать на практике Практика. задают securityContext на уровне Pod и контейнера с явным непривилегированным UI
container-securityhostpath
MiddleSMM Manager > Общее > Отчётность и бизнес-метрики
Короткий ответ Нужно честно показать обе части картины, не выдавая рост охвата и вовлечённости за автоматический успех по продажам, объяснить вероятные причины разрыва (например, проблема на этапе конверсии после перехода, а не в самом продвижении) и предложить конкретные гипотезы для проверки. Как это работает подробнее рост охвата и вовлечённости — метрики верхней части воронки, они не гарантируют автоматический рост продаж, которые зависят ещё и от посадочной страницы, цены, сезонности и работы отдела продаж. Что использовать на практике Действия. В презентации стоит явно разделить, что сделал SMM (рост охвата/вовлечённости, качество переходов), и что происходит дальше в воронке (конверсия перехода в заявку, обработка заявок отделом продаж), и предложить проверить конкретные гипотезы — например, аудит посадочной страницы или скорость ответа менеджеров. Проверка. Слайд презентации: охват +30%, вовлечённость +25%, переходы на сайт +20%, заявки — без изменений. Гипотеза: проблема может быть на стороне сайта и
attribution-modelinggenerative-ai
SeniorDevOps Engineer > Контейнеры и доставка > Надёжность и инцидент-менеджмент
Короткий ответ Однозначного решения без дополнительного контекста нет: можно либо пересмотреть целевое RTO как нереалистичное для текущей архитектуры (бизнес может быть не готов платить за его достижение), либо инвестировать в архитектурные изменения (горячая/тёплая реплика, партиционирование, параллельное восстановление, более быстрое хранилище для бэкапов) — выбор зависит от бизнес-стоимости простоя, бюджета на резервирование и темпов роста объёма данных. Как это работает подробнее время восстановления холодного бэкапа такого объёма определяется пропускной способностью хранилища бэкапов, сети между хранилищем и местом восстановления, и тем, восстанавливается ли база последовательно или параллельно (по партициям/шардам); простое "подождать дольше" не решает проблему, если RTO = 2 часа задано бизнесом как реальное ограничение (например, из-за SLA с клиентами или регуляторных требований). Компромисс: нужно представить бизнесу явный выбор с цифрами: (а) принять текущее RTO ~10 часов и переоценить, действительно
backupdisaster-recovery
MiddleDevOps Engineer > Контейнеры и доставка > Безопасность и DevSecOps
Короткий ответ Нужно проверить флаги --audit-log-path и --audit-policy-file на kube-apiserver и содержимое audit policy — часто аудит либо вовсе не включён, либо политика логирует только на уровне Metadata без тела запроса для критичных ресурсов; политику нужно настроить дифференцированно: подробный уровень (RequestResponse) для чувствительных ресурсов (Secrets, RBAC) и более лёгкий (Metadata) для остальных, чтобы не перегружать хранилище. Как это работает подробнее kube-apiserver пишет аудит-события согласно Audit Policy — конфигурации, определяющей, какие запросы логировать и с каким уровнем детализации (None/Metadata/Request/RequestResponse). Без явно заданной политики аудит по умолчанию может быть выключен (особенно в self-managed кластерах) или управляться отдельно в managed-сервисах (EKS/GKE/AKS имеют свои механизмы включения аудита через облачную консоль/API). Пример кода Что использовать на практике Практика. для расследуемости действий (кто изменил/удалил ресурс) достаточно уровня Metadata (кто, что,
api-serveraudit-logging