JuniorPython Developer > Основы Python > Тестирование кода
Короткий ответ Unit-тест проверяет изолированный фрагмент логики (функцию, метод, класс) без реальных внешних зависимостей, а интеграционный тест проверяет совместную работу нескольких реальных компонентов — например, кода и тестовой БД. Как это работает подробнее Unit-тест подменяет окружение (БД, сеть, файловую систему) моками или заглушками и проверяет поведение одной единицы кода на заданных входных данных, изолируя её от остальной системы. Интеграционный тест запускает несколько компонентов вместе — приложение и реальную тестовую БД, приложение и очередь сообщений, — проверяя их фактическое взаимодействие, включая сериализацию данных и реальные сетевые или протокольные детали. Пример кода Что использовать на практике Практика. Unit-тесты быстрые и дешёвые, их должно быть больше всего — это нижний уровень тестовой пирамиды, и их стоит запускать при каждом сохранении файла или коммите. Интеграционные тесты медленнее и дороже в поддержке, но ловят ошибки на границах компонентов: несовпадение типов колонок в
integration-testingpython
JuniorDevOps Engineer > Контейнеры и доставка > systemd
Короткий ответ Unit-файл — декларативное описание сервиса или другого управляемого объекта (таймера, точки монтирования) в формате INI-подобного файла с секциями [Unit], [Service], [Install]; базовые команды — systemctl start/stop/restart/status/enable/disable unit. Как это работает подробнее systemd читает unit-файлы из стандартных каталогов (/etc/systemd/system, /usr/lib/systemd/system), строит граф зависимостей между юнитами и управляет их жизненным циклом: запуском, перезапуском при сбое, остановкой в правильном порядке при завершении работы системы. Пример кода Что использовать на практике Практика. start/stop/restart управляют текущим состоянием процесса здесь и сейчас, а enable/disable управляют тем, запустится ли сервис автоматически при загрузке системы — это разные, независимые друг от друга действия, которые часто путают. Подводные камни Риск. Частая ошибка — выполнить только systemctl start после правки unit-файла, забыв про systemctl daemon-reload, из-за чего systemd продолжает использовать стару
linuxservice-management
JuniorPerformance Marketer > Google Ads > Сквозная аналитика и отчётность
Короткий ответ UTM-метки — это параметры в ссылке (source, medium, campaign и другие), которые позволяют GA4 понять, из какого канала и кампании пришёл пользователь, и сопоставить визиты с расходом из рекламных кабинетов. Как это работает подробнее При клике по ссылке с UTM-параметрами GA4 записывает эти значения в сессию пользователя и использует их для группировки трафика по источникам в отчётах. Кроме source и medium обычно используют campaign, content и term, чтобы различать не только канал, но и конкретное объявление или аудиторию внутри кампании. Что использовать на практике Практика. Важно использовать единый формат меток по всем кампаниям (например, всегда нижний регистр, одинаковые названия source/medium), иначе один и тот же канал «размножится» на несколько строк в отчёте. Многие команды используют отдельный генератор UTM-ссылок (шаблон в таблице или встроенный инструмент платформы), чтобы все сотрудники проставляли метки по одному стандарту. Пример. utm_source=facebook&utm_medium=cpc&utm_campaign=s
analyticscampaign-tracking
JuniorPerformance Marketer > Google Ads > Трекинг и аналитика
Короткий ответ Аналитика считывает значения UTM при визите и использует их в отчётах. Без единой разметки часть платного трафика может попасть в direct или referral. Как это работает подробнее Аналитическая система, например GA4, читает параметры из URL при визите и записывает их как атрибуты сессии или события, на основе чего строятся отчёты по источникам трафика. Без UTM-меток часть трафика может классифицироваться аналитикой как «referral» или «direct», что особенно часто происходит с переходами из мобильных приложений и некоторых мессенджеров. Пример кода Что использовать на практике Используйте согласованный шаблон и регистр значений; для множества объявлений применяйте динамические параметры платформы и проверяйте ссылки перед запуском. Подводные камни Опечатки, разный регистр и копирование старых параметров дробят источник на несколько строк и приписывают трафик не той кампании.
campaign-trackingtraffic-source
JuniorPerformance Marketer > Google Ads > UTM-разметка
Короткий ответ UTM-метки — это параметры в конце URL, которые передают в веб-аналитику (например, GA4) информацию о том, откуда пришёл трафик: источник, канал, кампания, объявление. Как это работает подробнее При клике по ссылке с UTM-параметрами браузер открывает страницу с этими параметрами в адресной строке, а скрипт аналитики на странице считывает их и записывает в данные о сессии пользователя. Пример кода Что использовать на практике Практика. UTM используют, чтобы разделять трафик по источникам в отчётах, которые площадка сама не передаёт (email, офлайн-QR, посты в соцсетях, партнёрские размещения). Для контекстной/медийной рекламы на тех же платформах, где стоит пиксель, часть этой разметки может дублировать данные кабинета, но GA4-отчёты всё равно строятся по UTM. Важно понимать, что сама рекламная платформа (например, Google Ads) для расчёта своих внутренних метрик ориентируется на собственные клик-идентификаторы (gclid), а не на UTM — UTM нужны именно для внешней аналитики типа GA4. Подводные камни
campaign-taggingga4
JuniorSMM Manager > Общее > SMM-аналитика и метрики
Короткий ответ Vanity-метрики — это показатели, которые легко растут и хорошо смотрятся в отчёте (лайки, число подписчиков, просмотры), но не всегда напрямую связаны с бизнес-результатом (продажами, лидами, доходом); бизнес-метрики (конверсии, стоимость лида, выручка) показывают реальное влияние на бизнес. Как это работает подробнее vanity-метрики отражают верхнюю часть воронки (внимание, узнаваемость) и часто растут независимо от того, приносит ли это выручку; бизнес-метрики требуют связки с действиями пользователя дальше по воронке (переход на сайт, заявка, покупка), что обычно требует UTM-меток и аналитики сайта/CRM. За месяц подписчики выросли на 15% (vanity), но заявок с сайта через соцсети не прибавилось (бизнес-метрика). Проверка: сверка UTM-трафика и конверсий в CRM за тот же период — если конверсии не растут, рост подписчиков сам по себе не подтверждает эффективность для бизнеса. Что использовать на практике Практический подход. отчёт заказчику должен содержать и vanity-, и бизнес-метрики, но с явным
metricsreporting
JuniorDevOps Engineer > Контейнеры и доставка > Облачные платформы
Короткий ответ VPC — логически изолированный сегмент облачной сети с собственным диапазоном IP-адресов, подсетями и правилами маршрутизации, который провайдер выделяет аккаунту/проекту; он нужен, чтобы контролировать, какие ресурсы видны друг другу и интернету, и изолировать нагрузки разных сред и команд. Как это работает подробнее VPC определяет диапазон адресов (CIDR), делится на подсети, для которых настраиваются таблицы маршрутизации и правила доступа к интернету; ресурсы внутри VPC по умолчанию не видны из других VPC, пока не настроено соединение (peering, VPN, transit gateway). Пример кода Что использовать на практике Рекомендация. как минимум разделяют подсети на публичные (с выходом в интернет) и приватные (без прямого входящего доступа) и используют отдельные VPC или проекты для prod и non-prod сред. Проверка. инстанс в private-a не должен иметь публичный IP и не должен быть напрямую доступен из интернета, что можно проверить попыткой SSH снаружи. Подводные камни Риск. размещать все ресурсы в одной п
cidrcloud-networking
JuniorPython Developer > Основы Python > WSGI, ASGI и серверы приложений
Короткий ответ WSGI — стандартный синхронный интерфейс между Python-приложением и веб-сервером; встроенный dev-сервер однопоточен и не выдерживает нагрузку, поэтому перед приложением ставят WSGI-сервер (Gunicorn, uWSGI), умеющий управлять несколькими рабочими процессами и таймаутами. Как это работает подробнее WSGI описывает простой контракт — приложение это вызываемый объект application(environ, start_response); любой WSGI-совместимый сервер может обслуживать любое WSGI-совместимое приложение. Пример кода Что использовать на практике Рекомендация. flask run удобен только для локальной разработки; в production запускают gunicorn app:app --workers 4 — несколько процессов-воркеров обрабатывают запросы через WSGI-интерфейс приложения. Подводные камни Риск. запускать встроенный dev-сервер в production, игнорируя предупреждение «development server»; думать, что WSGI сам ускоряет приложение — он просто определяет интерфейс.
application-servergunicorn
JuniorPython Developer > Основы Python > Безопасность приложения
Короткий ответ XSS (межсайтовый скриптинг) — внедрение вредоносного JavaScript в страницу через непроверенный пользовательский ввод, который браузер жертвы затем выполняет; Jinja2 по умолчанию автоматически экранирует HTML-спецсимволы при выводе переменных в шаблон, превращая потенциальный тег в безопасный текст. Как это работает подробнее Автоэкранирование заменяет символы , &, \" на HTML-сущности перед вставкой в разметку, поэтому введённая пользователем строка отображается как текст, а не исполняется как HTML/JS. Пример кода Что использовать на практике Практика. Автоэкранирование защищает только вывод непосредственно в HTML-тело; при выводе в атрибуты, JavaScript-блоки или через |safe/Markup защита отключается, и такие места нужно проверять особенно внимательно; дополнительно помогает заголовок Content-Security-Policy. Подводные камни Риск. Отключают автоэкранирование (|safe) для пользовательского контента «чтобы форматирование работало»; считают, что XSS актуален только для фронтенда, хотя b
escapingjinja2
MiddleData Analyst > SQL и данные > Продуктовые и бизнес-метрики
Короткий ответ Диагностику стоит начать с проверки технических причин (сбой трекинга, деплой, изменение атрибуции) и сезонности, затем декомпозировать падение по сегментам (платформа, страна, канал, new vs returning), чтобы понять, концентрируется ли проблема в одном срезе или это равномерное падение по всей базе. Как это работает подробнее строим чек-лист диагностики: 1) не изменилась ли логика трекинга события активности (релиз SDK, смена ID пользователя); 2) нет ли технического сбоя (ошибки, недоступность сервиса); 3) есть ли сезонный/календарный эффект (праздник, выходной, день недели); 4) если ничего из вышеперечисленного — разбиваем по сегментам и ищем, где именно произошло падение. Пример кода Что использовать на практике Практика. равномерное падение во всех сегментах чаще указывает на трекинг/техническую проблему или общий рыночный/сезонный фактор; падение, сконцентрированное в одном канале или платформе, чаще указывает на продуктовую проблему (баг, регрессия) или маркетинговую (остановка кампании, б
data-qualitydau