MiddleData Analyst > SQL и данные > Статистика и теория вероятностей
Короткий ответ Вместо термина «p-value» лучше говорить о наблюдаемой разнице, её доверительном интервале и уверенности в том, что эффект реален, избегая формулировок вроде «вероятность того, что эффект есть», и фокусируясь на практическом выводе — стоит ли внедрять изменение. Как это работает подробнее стейкхолдеру обычно важнее ответ на вопрос «работает или нет и насколько», чем статистический механизм за ответом; задача аналитика — перевести результат теста в понятные бизнес-категории: величина эффекта, уверенность в нём, риски ошибиться в любую сторону. Sanity check: попросить коллегу без статистического бэкграунда пересказать своими словами вывод из формулировки — если пересказ не содержит фраз вроде «вероятность гипотезы», объяснение, скорее всего, было корректным. Пример кода Что использовать на практике Удобная формулировка: «Мы увидели рост конверсии на X процентных пунктов, и при текущем объёме данных мы достаточно уверены, что это не случайность — диапазон вероятного эффекта от Y до Z». Это одноврем
ab-testingcommunication
JuniorPython Developer > Основы Python > Django ORM
Короткий ответ Модель Django — это Python-класс, наследующий от django.db.models.Model, где атрибуты класса описывают поля таблицы через классы Field (CharField, IntegerField, ForeignKey и т.д.); если не указано иное, Django автоматически добавляет первичный ключ id (AutoField/BigAutoField). Как это работает подробнее Django использует метаклассы, чтобы на основе объявленных полей сформировать схему таблицы (имя по умолчанию: app_modelname в нижнем регистре) и сгенерировать файл миграции через manage.py makemigrations, который затем применяется через migrate. Пример кода Что использовать на практике Практика. Каждое поле Field транслируется в конкретный тип колонки СУБД (например, CharField(max_length=100) -> varchar(100)); ForeignKey автоматически создаёт колонку с суффиксом _id и соответствующий индекс. Подводные камни Ошибка. Забывают указать on_delete для ForeignKey (обязательный параметр) и выбирают его не задумываясь; не вызывают makemigrations после изменения модели, из-за чего БД расходится с кодом мо
django-ormorm
JuniorPython Developer > Основы Python > SQLAlchemy
Короткий ответ Модель описывается как Python-класс, наследующий от общей декларативной базы (Base), с атрибутами класса типа Mapped[...]/mapped_column, задающими колонки таблицы, их типы и ограничения; SQLAlchemy связывает класс с таблицей через атрибут __tablename__. Как это работает подробнее При объявлении класса SQLAlchemy регистрирует его в метаданных (MetaData), связывая имя таблицы, колонки и их типы; это описание используется и для генерации DDL (Base.metadata.create_all), и для построения SQL-запросов через ORM. Пример кода Что использовать на практике Практика. В современных версиях SQLAlchemy (2.0+) рекомендуется типизированный стиль Mapped[int]/mapped_column вместо старого Column, что даёт подсказки типов в IDE и явную поддержку Optional для nullable-колонок. Подводные камни Ошибка. Забывают указать primary_key=True хотя бы на одной колонке, из-за чего SQLAlchemy не может идентифицировать строки для ORM-операций; путают __tablename__ (обязателен) с именем класса, предполагая автоматическое совпаде
ormpostgresql
SeniorSMM Manager > Общее > Контент-стратегия
Короткий ответ Привязка пиллара напрямую к выручке почти никогда не бывает точной — вместо этого на уровне бизнеса пиллары оценивают по косвенному вкладу в цепочку метрик (вовлечённость → трафик → лиды/продажи по сегменту, связанному с пилларом) за длительный период, принимая решение о пересмотре только при устойчивом, а не разовом отставании, и обсуждая это с бизнес-заказчиком, а не только внутри SMM-команды. Как это работает подробнее разные пиллары могут работать на разные бизнес-задачи (один — на узнаваемость, другой — на удержание существующих клиентов), поэтому единая метрика для сравнения всех пилларов напрямую может быть несправедливой — нужно оценивать каждый относительно его собственной задачи в стратегии. Сравнение Компромисс. частый пересмотр пилларов позволяет быстрее реагировать на изменение эффективности, но создаёт риск нестабильности бренда и путаницы у аудитории и команды; редкий пересмотр даёт стабильность, но может затягивать сохранение неработающего направления. Периодичность и критерии п
content-analyticscontent-pillars
MiddleSMM Manager > Общее > Контент-стратегия
Короткий ответ ROI спецпроекта оценивают, сопоставляя его полные затраты (бюджет, рабочее время команды, гонорары партнёров) с достигнутым бизнес-результатом (новые клиенты, заявки, продажи, а не только охват и участники), и сравнивают этот показатель с результатами регулярного контента за аналогичный бюджет, а не оценивают спецпроект изолированно как «успешный, потому что было весело». Как это работает подробнее для расчёта ROI нужно заранее, до запуска, определить, какие бизнес-метрики будут считаться результатом (не только охват или число участников конкурса), и собрать данные по ним после завершения проекта. Что использовать на практике На практике. сравнивают стоимость привлечения одного нового клиента/заявки через спецпроект со стоимостью привлечения через обычный контент или платную рекламу за тот же период — это показывает, был ли спецпроект эффективнее альтернатив. Пример. Спецпроект-коллаборация стоил 80 000 рублей (бюджет + время команды) и принёс 150 новых подписчиков и 12 заявок на консультацию.
content-strategyroi
JuniorPerformance Marketer > Google Ads > Взаимодействие с командами и бизнес-практики
Короткий ответ Отчёт для руководителя должен быстро отвечать на три вопроса: сколько потратили, что получили и выполняется ли план. Покажите расходы, лиды или продажи, CPA и план-факт, затем добавьте краткий вывод понятным бизнес-языком. Как это работает подробнее Подавайте информацию сверху вниз: сначала сводка по бизнес-результату, потом при необходимости разбивка по каналам, а детальные показатели рекламного кабинета — в конце. Метрики вроде CTR и CPM полезны для диагностики, но сами по себе могут не объяснять руководителю, достигнута ли цель. Сводка. Фактические расходы и план, число лидов или продаж, стоимость результата и доля выполнения цели. Контекст. Сравнение с предыдущими неделями и разбивка по каналам, если она меняет управленческое решение. Вывод. Короткое объяснение статуса, существенных отклонений и следующего действия. Что использовать на практике Сохранить шаблон. Использовать одинаковые показатели и порядок из недели в неделю, чтобы динамика была сопоставима. Пояснить отклонения. Сопровождат
campaign-analyticscpa
MiddleDevOps Engineer > Контейнеры и доставка > Kubernetes и оркестрация
Короткий ответ Диагностику ведут по шагам: смотрят kubectl describe pod на код завершения и причину (Last State, Reason), затем логи предыдущего запуска (kubectl logs --previous), и только после этого делают вывод — упало ли приложение само (ошибка кода/конфигурации) или его убил Kubernetes (например, по failed liveness probe или OOM). Как это работает подробнее CrashLoopBackOff — это состояние, в котором kubelet увеличивает интервал между попытками перезапуска контейнера экспоненциально после повторных сбоев. Причина сбоя всегда одна из: ненулевой exit code процесса приложения, провал liveness probe (Kubernetes сам убивает контейнер), либо OOMKilled (убийство ядром из-за превышения лимита памяти). Пример кода Что использовать на практике Практика. exit code 1 обычно означает необработанное исключение или ошибку конфигурации на старте — приложение не смогло подключиться к зависимости (БД, очередь) или получило некорректные переменные окружения; exit code 137 указывает на SIGKILL, что характерно для OOMKilled
crashloopbackoffkubernetes
JuniorDevOps Engineer > Контейнеры и доставка > Ресурсы и выполнение
Короткий ответ Команда docker stats показывает live-метрики по контейнерам: CPU%, использование памяти относительно лимита, сетевой I/O и дисковый I/O; с флагом --no-stream выводится однократный снимок, а не постоянно обновляемая таблица. Как это работает подробнее docker stats читает метрики напрямую из cgroups хоста, в которых запущен каждый контейнер (CPU time, memory.usage, I/O счётчики), и периодически обновляет вывод в терминале. Пример кода Что использовать на практике Практика. docker stats — первый инструмент для быстрой проверки, не "съедает" ли какой-то контейнер аномально много CPU или памяти; для разового снимка (например, в скриптах) используют docker stats --no-stream --format "{{.Name}}: {{.CPUPerc}} {{.MemUsage}}". Подводные камни Риск. путают MEM USAGE / LIMIT из docker stats с реальным лимитом ядра ОС — если лимит контейнеру явно не задан (--memory), в колонке показывается общая память хоста, что может ввести в заблуждение о "лимите" контейнера.
cgroupscontainers
MiddleData Analyst > SQL и данные > Python для анализа данных
Короткий ответ Для когортного анализа сначала определяют месяц регистрации каждого пользователя (когорту), затем для каждого события считают номер месяца относительно когорты, после чего строят pivot_table с когортой в строках, номером месяца жизни в столбцах и числом активных пользователей в ячейках. Как это работает подробнее когорта обычно определяется как месяц первой активности или регистрации пользователя (df.groupby('user_id')['date'].min()); "номер месяца жизни" = разница в месяцах между датой события и датой когорты пользователя; дальнейший pivot_table с aggfunc='nunique' по user_id даёт число уникальных активных пользователей в каждой ячейке когорта × месяц жизни. Пример кода Что использовать на практике На практике. после построения абсолютных чисел их часто переводят в проценты от размера когорты (retention rate), деля каждую строку на значение в её первом столбце (месяц 0); такую таблицу удобно визуализировать как тепловую карту для наглядного сравнения удержания между когортами. Проверка. для ко
cohort-analysisgroupby
MiddleData Analyst > SQL и данные > Визуализация и BI
Короткий ответ Строится матрица «когорта × период с момента привлечения» со значением доли удержанных пользователей в ячейке, отображаемая как heatmap с цветом, кодирующим процент; важно не путать ещё не наступившие периоды с нулевым удержанием и использовать согласованную цветовую шкалу. Как это работает подробнее Пользователи группируются по когорте привлечения (например, месяц регистрации), для каждого последующего периода считается доля всё ещё активных, результат раскладывается в матрицу когорта (строка) × номер периода (столбец) и раскрашивается по значению. Пример кода Что использовать на практике Применение. Используйте последовательную (не «радужную») цветовую шкалу, чтобы тренд читался однозначно; оставляйте пустыми/серыми ячейки периодов, которых когорта ещё не достигла (это не нулевое удержание, а отсутствие данных); выравнивайте когорты по номеру периода, а не по календарной дате, чтобы столбцы были сопоставимы. Проверка. pivot.loc[:, 0] должен быть равен 1.0 (100%) для каждой когорты в нулевом п
cohort-analysisheatmap