JuniorPerformance Marketer > Google Ads > События и GA4
Короткий ответ DebugView в GA4 — это инструмент для просмотра событий в реальном времени от конкретного тестового устройства/браузера, который используют при настройке нового трекинга, чтобы увидеть, какие события и параметры реально отправляются, до того как они попадут в обычные отчёты. Как это работает подробнее Чтобы попасть в DebugView, нужно включить режим отладки (через расширение GA Debugger, параметр URL или режим Preview в GTM), после чего события от этого конкретного устройства начинают отображаться в GA4 почти мгновенно, а не с задержкой в отчётах, как в обычном режиме. Технически включение debug-режима добавляет к событиям специальный параметр (debug_mode=true), который GA4 использует, чтобы отобразить эти события в отдельном интерфейсе DebugView практически мгновенно, не дожидаясь обычной обработки и агрегации данных, которая применяется к основным отчётам. Что использовать на практике Практика. DebugView стоит открывать каждый раз при добавлении нового события или изменении тега перед тем, как
analyticsdebugview
JuniorDevOps Engineer > Контейнеры и доставка > Kubernetes и оркестрация
Короткий ответ kubectl get выводит краткий табличный список объектов и их основные поля, а kubectl describe показывает подробную информацию по одному объекту, включая историю событий (Events), что критично для диагностики проблем планирования, рестартов и ошибок конфигурации. Как это работает подробнее describe агрегирует данные объекта (спецификацию, статус, связанные события из API) в читаемый человеком формат, тогда как get -o yaml/-o json выводит сырое представление ресурса без истории событий. События хранятся в etcd ограниченное время (обычно около часа по умолчанию) и привязаны к конкретному объекту. Пример кода Что использовать на практике Практика. диагностику проблемы с Pod почти всегда начинают с kubectl describe pod , обращая внимание на секции Conditions (готовность, планирование) и Events (последние действия системы и ошибки). Для Deployment describe покажет статус rollout и связанные ReplicaSet. Подводные камни Риски. пытаться найти причину сбоя только в kubectl get pods, где видно лишь и
kubectlkubernetes
JuniorData Analyst > SQL и данные > Визуализация и BI
Короткий ответ Scatter plot визуализирует связь между двумя числовыми переменными; видимая на графике корреляция может объясняться скрытым общим фактором (конфаундером), обратной причинностью или случайностью, поэтому сама по себе не доказывает причинность. Как это работает подробнее Каждая точка — одно наблюдение с координатами (x, y); визуальный паттерн (линейный, кластеры) подсказывает силу и направление связи между переменными. Пример кода Что использовать на практике Рекомендация. Scatter plot и коэффициент корреляции — это стартовая гипотеза. Рекомендация. Для вывода о причинности нужно учитывать возможные конфаундеры, опираться на знание предметной области и, в идеале, проверять связь контролируемым экспериментом. Подводные камни Риск. Прямое утверждение «X вызывает Y» на основе только scatter plot. Риск. Игнорирование очевидного конфаундера. Риск. Использование коэффициента Пирсона для явно нелинейной зависимости, что занижает оценку силы связи.
causalityconfounding
SeniorPython Developer > Основы Python > Многопоточность и асинхронность
Короткий ответ async и await применяются для неблокирующего кода там, где много ожидания: внешние API, файловые операции, сетевые запросы. Их не стоит использовать для вычислительных задач и простых программ без длительных ожиданий — выигрыша не будет. Как это работает подробнее В отличие от синхронного кода, где программа стоит на каждом ожидании, асинхронная программа работает в одном потоке и кооперативно переключает задачи в точках await. Кооперативность. Переключение происходит только в точках await, поэтому нет блокировок и гонок за общие данные, характерных для потоков. Масштаб. Один поток обслуживает тысячи одновременных соединений, пока корутины ждут внешние ресурсы. CPU-bound задачи. asyncio их не ускоряет: вычисления выполняются тем же процессором, поэтому нужны multiprocessing или потоки. Архитектура. Внутри обычной синхронной функции корутину не запустить: нужен await или asyncio.run(), поэтому асинхронность продумывают заранее. Пример кода Что использовать на практике Выбор механизма. Для I/O-bo
asyncawait
MiddleDevOps Engineer > Контейнеры и доставка > Kubernetes и оркестрация
Короткий ответ initContainers запускаются последовательно до старта основных контейнеров Pod и должны полностью и успешно завершиться (exit code 0), прежде чем Kubernetes начнёт запускать обычные контейнеры; их используют для подготовительных задач — ожидания готовности зависимости, миграции данных, загрузки конфигурации или секретов перед стартом приложения. Как это работает подробнее в отличие от обычных контейнеров (которые запускаются параллельно и работают постоянно), initContainers выполняются строго по очереди, один за другим; если какой-то initContainer завершается с ошибкой, Kubernetes перезапускает именно его (согласно restartPolicy Pod), не переходя к следующему и не запуская основные контейнеры, пока проблема не будет решена. Пример кода Что использовать на практике Практика. типичные примеры — init-контейнер, который ждёт доступности базы данных перед стартом приложения (until pg_isready; do sleep 1; done), или который клонирует репозиторий конфигурации во временный volume, используемый затем осн
init-containerskubernetes
JuniorDevOps Engineer > Контейнеры и доставка > Скриптинг и автоматизация
Короткий ответ .gitignore указывает Git, какие файлы и папки не отслеживать и не предлагать к коммиту (временные файлы, артефакты сборки, локальные .env); если секрет уже попал в историю, добавления в .gitignore недостаточно — нужно считать секрет скомпрометированным, немедленно его отозвать/перевыпустить и затем очистить историю репозитория. Как это работает подробнее .gitignore действует только на файлы, которые Git ещё не отслеживает; он не удаляет из истории файлы, уже закоммиченные ранее, и не защищает текущий рабочий каталог от случайного git add -A. Пример кода Что использовать на практике Рекомендация. для уже закоммиченного секрета правильная последовательность — сначала отозвать/ротировать сам секрет (токен, пароль, ключ) в системе, которая его выдала, потому что он уже мог "утечь" и в чужие форки, и в CI-логи; затем перезаписать историю через git filter-repo или BFG Repo-Cleaner и форсированно запушить; затем попросить всех участников клонировать репозиторий заново. Подводные камни Ошибка. считать,
gitgitignore
JuniorPython Developer > Основы Python > Декораторы и кэширование
Короткий ответ functools.wraps копирует метаданные оригинальной функции (__name__, __doc__, __module__ и др.) на wrapper, чтобы декорированная функция выглядела как оригинал для инструментов отладки и интроспекции. Как это работает подробнее Без wraps wrapper — отдельная функция со своим __name__ ("wrapper") и пустым __doc__, что сбивает инструменты, читающие метаданные (help(), документация, трассировка ошибок). functools.wraps(func) копирует нужные атрибуты с func на wrapper перед возвратом. Пример кода Что использовать на практике Практика. wraps используют почти всегда при написании декораторов общего назначения, особенно в библиотечном коде, где корректные имена функций важны для логов, генерации OpenAPI-схем по именам хендлеров, трассировки ошибок. Подводные камни Риски. Забывают про wraps, из-за чего в stack trace и логах видно неинформативное имя "wrapper"; не задумываются, что inspect.signature без wraps покажет (*args, kwargs) вместо настоящей сигнатуры функции.
cachingdecorators
MiddleDevOps Engineer > Контейнеры и доставка > Kubernetes и оркестрация
Короткий ответ PodDisruptionBudget (PDB) ограничивает, сколько реплик приложения может быть одновременно недоступно из-за добровольных действий (эвакуация узла, обновление кластера, ручной kubectl drain), не затрагивая непредвиденные сбои вроде падения узла или OOMKilled, которые PDB предотвратить не может. Как это работает подробнее PDB задаёт minAvailable или maxUnavailable для набора Pod по селектору; при попытке добровольного выселения (через Eviction API, который используют kubectl drain и Cluster Autoscaler) Kubernetes проверяет, не нарушит ли это условие PDB, и если нарушит — операция блокируется до тех пор, пока ситуация не изменится (например, пока не поднимется замещающий под в другом месте). Пример кода Что использовать на практике Практика. PDB критичен при плановом обслуживании узлов (patching, upgrade) в кластере — без него kubectl drain может единовременно вывести из строя все реплики критичного сервиса, если они случайно оказались на одном узле. PDB не защищает от аппаратного сбоя узла или от
availabilitydisruptions
JuniorSMM Manager > Общее > Рекламные платформы и медиазакупка
Короткий ответ Маркировка — обязательная по закону процедура присвоения рекламе уникального идентификатора (токена) и передачи данных о размещении в единый реестр интернет-рекламы; без неё реклама может быть признана незаконной, а на рекламодателя и исполнителя накладываются штрафы. Как это работает подробнее перед запуском реклама регистрируется через оператора рекламных данных (ОРД), получает токен, который указывается в креативе и отчётности и передаётся в Роскомнадзор. Что использовать на практике Подход. процесс маркировки нужно закладывать в тайминг запуска кампании, так как он требует времени и дисциплины в документообороте с клиентом или подрядчиками. Пример. Перед запуском кампании в VK Реклама менеджер регистрирует креатив через ОРД, получает токен и указывает его в настройках объявления. Проверка — наличие токена в данных кампании и отсутствие предупреждений в кабинете. Подводные камни Ошибка. запускать рекламу «срочно» без маркировки, надеясь оформить её позже, или путать маркировку с модерацией п
ad-complianceaudience-targeting
JuniorDevOps Engineer > Контейнеры и доставка > Infrastructure as Code и управление конфигурацией
Короткий ответ .tfvars-файлы содержат значения входных переменных конфигурации в формате имя = значение и подключаются через флаг -var-file, что позволяет использовать одну и ту же конфигурацию с разными наборами значений для разных окружений без изменения кода. Как это работает подробнее Terraform собирает значения переменных из нескольких источников с определённым приоритетом: значения по умолчанию в variable блоке, файлы terraform.tfvars/.auto.tfvars (подключаются автоматически), явно указанные -var-file, флаги -var и переменные окружения TF_VAR_ — более специфичный источник переопределяет более общий. Пример кода Что использовать на практике Практика. типичный паттерн — environments/dev.tfvars и environments/prod.tfvars с одинаковым набором имён переменных, но разными значениями (размер инстанса, количество реплик, CIDR), и один и тот же код применяется с флагом -var-file=environments/prod.tfvars. Подводные камни Ошибка. хранить чувствительные значения (пароли) прямо в .tfvars и коммитить файл в git; пута
configuration-managementenvironment-management