MiddlePerformance Marketer > Google Ads > Специфика рекламных площадок и каналов
Короткий ответ Events API передаёт события конверсий напрямую с сервера бизнеса в TikTok, что повышает полноту и надёжность данных по сравнению с клиентским пикселем, теряющим часть событий из-за блокировщиков и ATT на iOS; это особенно важно для оптимизации Smart Performance Campaign, зависящей от качества сигналов. Как это работает подробнее TikTok Pixel отслеживает события на стороне клиента через JS-код и зависит от того, выполнится ли код в браузере; Events API отправляет события через серверный HTTP-запрос с хэшированными идентификаторами пользователя и TikTok Click ID (ttclid), что не зависит от блокировщиков и работает даже при отключённых cookies. Что использовать на практике На практике. важно передавать ttclid, пришедший от клика по объявлению, вместе с событием через Events API, иначе сопоставление пользователя с рекламным кликом будет менее точным; как и в Meta CAPI, нужна дедупликация событий между Pixel и Events API по общему идентификатору события. Пример. После добавления Events API с передач
event-deduplicationevents-api
JuniorPython Developer > Основы Python > HTTP-семантика
Короткий ответ Content-Length сообщает получателю точный размер тела сообщения в байтах, чтобы он знал, когда тело полностью получено; если значение указано неверно (меньше или больше фактического размера), получатель может обрезать данные или зависнуть, ожидая оставшиеся байты. Как это работает подробнее при использовании keep-alive заголовок Content-Length критичен, чтобы сервер/клиент понимал, где заканчивается текущий ответ и начинается следующий в рамках одного TCP-соединения; альтернатива — Transfer-Encoding: chunked, когда размер неизвестен заранее (например, при потоковой передаче). Пример кода Что использовать на практике Рекомендация. в большинстве backend-фреймворков этот заголовок выставляется автоматически на основе фактического тела ответа, и разработчику не нужно считать его руками. Вручную считать длину нужно, если тело собирается в несколько этапов или идёт стриминг с явным указанием размера. Подводные камни Риски. вручную выставлять Content-Length при прокси/модификации тела ответа (например
content-lengthhttp
JuniorPython Developer > Основы Python > HTTP-семантика
Короткий ответ Content-Type сообщает получателю формат и кодировку тела сообщения (например, application/json; charset=utf-8); без него клиент может неправильно распарсить тело или библиотека по умолчанию откажется автоматически декодировать JSON. Как это работает подробнее заголовок передаётся и в запросе, и в ответе; на основе него сервер решает, как парсить тело запроса (JSON, form-data, multipart), а клиент — как интерпретировать ответ. Многие HTTP-клиенты (например, requests) предоставляют метод .json(), который сам пытается распарсить тело независимо от заголовка, но это не гарантия — некоторые строгие клиенты и браузеры ориентируются именно на заголовок. Пример кода Что использовать на практике Рекомендация. при отправке JSON нужно явно указывать Content-Type: application/json; для форм — application/x-www-form-urlencoded; для файлов — multipart/form-data с boundary. Фреймворки (FastAPI, Flask) обычно сами выставляют корректный Content-Type в ответе на основе возвращаемого объекта. Подводные камни Риск
content-typehttp
JuniorSMM Manager > Общее > Контент-стратегия
Короткий ответ Календарь инфоповодов — отдельный список значимых дат (государственные праздники, профессиональные дни, сезонные пики), который составляют на квартал/год вперёд и используют как источник тем для контент-плана; не все даты из общего списка подходят конкретному бренду — их нужно отбирать по релевантности. Как это работает подробнее календарь собирают из общедоступных списков праздников и профессиональных дат, затем отмечают, какие из них связаны с нишей и аудиторией бренда. Что использовать на практике На практике. выбранные даты переносят в контент-план с указанием срока подготовки материала (например, минус 1–2 недели от даты повода). Пример. Магазин садового инвентаря включает в календарь «Начало дачного сезона» и «День садовода», но пропускает нерелевантный «День космонавтики». Проверка: количество отобранных дат за квартал соответствует реальной возможности команды их подготовить (не более 1–2 в неделю). Подводные камни Частые ошибки. включать в контент-план все подряд праздники без связи с
content-strategyeditorial-calendar
JuniorPerformance Marketer > Google Ads > Сквозная аналитика и отчётность
Короткий ответ Сводный дашборд нужен, чтобы сравнивать каналы между собой по единым метрикам и видеть общую картину, не переключаясь между кабинетами с разной логикой подсчёта. Как это работает подробнее Дашборд подтягивает данные из нескольких источников (рекламные кабинеты, GA4, CRM) в одну таблицу или визуализацию с единым набором метрик и периодов. Кроме таблицы с цифрами, на дашборде полезно добавлять простые визуализации (графики динамики по дням), которые быстрее показывают тренд, чем голые числа в таблице. Что использовать на практике Практика. На практике для дашборда выбирают несколько ключевых метрик (расход, лиды, CPL, ROAS) и единый период и часовой пояс для всех источников, чтобы сравнение было корректным. Хорошей практикой является подписывать на дашборде источник и дату последнего обновления данных по каждому каналу, чтобы не путать свежие и устаревшие цифры. Пример. Сводный дашборд показывает по каждому каналу расходы, лиды, CPL, продажи из CRM и ROAS по CRM; общий расход должен сходиться с с
crmcross-channel-analytics
JuniorDevOps Engineer > Контейнеры и доставка > Надёжность и инцидент-менеджмент
Короткий ответ Capacity planning — это прогнозирование будущей нагрузки и заблаговременное выделение (или заказ) достаточных вычислительных ресурсов, чтобы система не упиралась в лимиты CPU, памяти, диска, сети или пропускной способности базы данных в самый неподходящий момент. Как это работает подробнее на основе исторических трендов роста нагрузки (пользователи, запросы в секунду, объём данных) и известных будущих событий (маркетинговая акция, сезонный пик) оценивают, сколько ресурсов понадобится, и сравнивают с текущими лимитами (квоты облачного провайдера, количество узлов, размер дисков). Пример / кейс Ожидаемое поведение: заранее поданная заявка на увеличение квоты облачного провайдера и нагрузочное тестирование до пикового события предотвращают ситуацию, когда автомасштабирование упирается в лимит квоты прямо во время распродажи. Пример кода Что использовать на практике Практический подход. Capacity planning включает и "железные" ограничения (лимиты API облака на создание инстансов, лид-тайм закупки об
autoscalingcapacity-planning
MiddlePython Developer > Основы Python > Декораторы
Короткий ответ functools.wraps — декоратор из стандартного модуля functools, который применяется к функции-обёртке внутри декоратора. Он копирует обёртке метаданные декорируемой функции, чтобы она сохраняла её имя, документацию и другие атрибуты. Как это работает подробнее Проблема. Без wraps обёртка затирает метаданные: имя функции становится wrapper, пропадают __doc__, __module__ и другие атрибуты. Последствия. В стектрейсах и ошибках фигурирует внутренняя обёртка вместо реальной функции, что ломает интроспекцию, документаторы и инструменты. Решение. @wraps(func) копирует обёртке атрибуты декорируемой функции и обновляет её словарь __dict__, поэтому обёртка «выдаёт себя» за исходную функцию. Правило. Хорошим тоном считается всегда оборачивать wrapper в @wraps(func) при написании собственных декораторов. Пример кода Что использовать на практике Каждый декоратор. Применяй @wraps(func) к обёртке во всех собственных декораторах — это просто и безопасно. Отладка. Сохранённые __name__ и __doc__ делают стектрейсы,
decoratorsfunctools
MiddleDevOps Engineer > Контейнеры и доставка > Dockerfile и сборка
Короткий ответ HEALTHCHECK периодически выполняет заданную команду внутри контейнера и на основе её кода выхода определяет статус healthy/unhealthy/starting, который виден в docker ps и может использоваться для оркестрации (условия depends_on в compose, политика restart, внешние балансировщики). Как это работает подробнее Docker запускает указанную команду с заданным интервалом (--interval), таймаутом (--timeout) и числом допустимых неудачных попыток (--retries) перед сменой статуса на unhealthy. В отличие от обычного статуса "процесс запущен/остановлен", healthcheck проверяет, что приложение внутри контейнера реально отвечает на уровне своей бизнес-логики (например, HTTP-эндпоинт /health возвращает 200), а не просто что процесс PID 1 существует. Пример кода Что использовать на практике Практика. healthcheck особенно важен для сервисов, у которых процесс может "висеть" живым, но фактически не обрабатывать запросы (deadlock, потеря соединения с зависимостью); в docker-compose условие depends_on: condition: ser
container-imagesdocker
JuniorData Analyst > SQL и данные > Продуктовые и бизнес-метрики
Короткий ответ Декомпозиция помогает понять, какой из компонентов (например, число пользователей, конверсия в покупку, средний чек) сильнее всего повлиял на изменение итоговой метрики, и на какой из этих рычагов продуктовая команда реально может воздействовать. Как это работает подробнее итоговую метрику представляют как произведение или сумму более простых и измеримых компонентов; изменение итоговой метрики раскладывают на вклад каждого компонента, сравнивая значения "было" и "стало". Пример кода Что использовать на практике Практика. декомпозиция особенно полезна, когда итоговая метрика осталась почти неизменной, но за этим стоят разнонаправленные изменения компонентов (например, выросло число пользователей, но упала конверсия) — без декомпозиции такая компенсация осталась бы незамеченной. Подводные камни Частые ошибки. считают вклад каждого компонента независимо, складывая проценты изменения (на самом деле при мультипликативной модели это даёт неточный результат из-за взаимодействия компонентов); выбирают
arpuconversion
JuniorDevOps Engineer > Контейнеры и доставка > Инженерные практики и взаимодействие с командами
Короткий ответ Код показывает, что создано, но не всегда объясняет зачем, кто отвечает и как безопасно действовать при сбое. README должен помогать использовать и менять модуль, а runbook — быстро диагностировать типовую проблему и восстановить сервис. Как это работает подробнее Документация снижает зависимость от памяти автора и время реакции on-call. Её полезность проверяется тем, может ли инженер без устных подсказок выполнить изменение или пройти диагностику. README модуля. Назначение, ограничения, входы, выходы, зависимости, пример использования и порядок обновления. Runbook. Симптомы, метрики и логи, шаги диагностики, безопасные действия, откат и эскалация. Владение. Ответственная команда, канал связи и дата последней проверки документа. Пример кода Что использовать на практике Расположение. Хранить README рядом с кодом, а runbook — в доступном on-call месте со ссылкой из алерта. Обновление. Менять документацию в том же PR, где меняются интерфейс, поведение или процедура восстановления. Проверка. Период
incident-responseinfrastructure-documentation