JuniorDevOps Engineer > Контейнеры и доставка > Инженерные практики и взаимодействие с командами
Короткий ответ При review инфраструктурного кода нужно сопоставить изменение файлов с итоговым terraform plan, helm diff или результатом CI. Главный вопрос — не только что изменено в репозитории, а что произойдёт с реальными ресурсами и пользователями. Как это работает подробнее Код приложения обычно меняет поведение после отдельного деплоя, а IaC описывает состояние уже существующих окружений. Небольшая правка имени или параметра может вызвать пересоздание ресурса, потерю данных или простой. Область воздействия. Проверяют production, shared-модули, зависимые сервисы и команды. Результат применения. Ищут create, update, destroy и forced replacement, а не ограничиваются строками PR. Безопасность. Отдельно проверяют IAM, сетевые правила, секреты и соответствие политикам. Пример кода Что использовать на практике Проверка. Требовать воспроизводимый plan или diff из CI для конкретного окружения. Контекст. Указывать владельца, окно изменений, ожидаемый downtime и способ проверки после применения. Откат. До approve
change-managementcode-review
JuniorPython Developer > Основы Python > Коллекции и структуры данных
Короткий ответ Comprehensions (включения) — это лаконичный синтаксис Python для создания коллекций на основе итерируемых объектов: list, dict и set. Списковое включение выглядит как [выражение for элемент in итерируемое if условие] и заменяет цикл с накоплением элементов. Как это работает подробнее Включение описывает, что нужно получить, а не как: элементы собираются по правилу из выражения, цикла и необязательного условия-фильтра. Единая конструкция. List comprehension объединяет цикл for, опциональное условие if и выражение для нового элемента в одну строку. Декларативность. Вместо ручного append код описывает результат, что делает его более выразительным и «питоничным». Производительность. Включение часто работает быстрее цикла с накоплением элементов и при этом заметно короче. Другие виды. По аналогии есть dict comprehension {ключ: значение for ...}, set comprehension {значение for ...} и выражение-генератор в круглых скобках. Пример кода Что использовать на практике Построение списков. Применяй включени
comprehensionsdict-comprehension
MiddlePython Developer > Основы Python > Доступ к базе из Python
Короткий ответ Connection pool — это заранее созданный и переиспользуемый набор открытых соединений к БД, который избегает дорогостоящего создания нового TCP/TLS-соединения на каждый запрос; если все соединения в пуле заняты и достигнут лимит, новые запросы либо ждут освобождения соединения с таймаутом, либо сразу получают ошибку. Как это работает подробнее Пул выдаёт соединение по запросу (checkout), приложение выполняет запросы и возвращает соединение в пул (checkin) по завершении работы; при превышении лимита без доступных соединений вызывающий код блокируется до pool_timeout или получает исключение пула. Пример кода Что использовать на практике Практика. Размер пула подбирают с учётом числа воркеров приложения, ограничения max_connections на стороне PostgreSQL и реального профиля конкурентности; для большого числа коротких подключений часто ставят внешний пулер (PgBouncer) перед PostgreSQL. Подводные камни Ошибка. Забывают возвращать соединение/сессию в пул (не закрывают сессию в finally), из-за чего пул
connection-pooldatabase-access
JuniorPython Developer > Основы Python > CI/CD и безопасность поставки
Короткий ответ Continuous Integration — практика частого слияния изменений в общую ветку с автоматической проверкой на каждый коммит/PR; Continuous Delivery/Deployment — автоматизация доставки проверенного кода до staging (Delivery) или прямо до production (Deployment) без ручных шагов. Как это работает подробнее при пуше или открытии PR CI-система запускает pipeline — набор стадий, которые выполняются в изолированном окружении по описанию из YAML-файла конфигурации. Пример кода Что использовать на практике Рекомендация. типичный пайплайн: установка зависимостей → линтинг/типизация → тесты с покрытием → сборка Docker-образа → публикация образа и автодеплой. Каждая стадия должна давать понятный отчёт об ошибке. Подводные камни Риск. называть «непрерывным деплоем» процесс с обязательным ручным подтверждением (это Delivery, а не Deployment); не разделять быстрые и медленные проверки, из-за чего разработчики начинают игнорировать долгий пайплайн.
automationci-cd
JuniorPerformance Marketer > Google Ads > Приватность и измерение
Короткий ответ Cookie — это небольшой файл, который сайт или рекламная платформа сохраняет в браузере пользователя, чтобы «узнавать» его при повторных визитах; на cookie основана связка между кликом по рекламе и последующей конверсией на сайте. Как это работает подробнее При клике по рекламе платформа или сайт записывает идентификатор в cookie браузера; когда позже на той же сессии или в течение заданного окна пользователь совершает конверсию, скрипт считывает этот идентификатор и сопоставляет конверсию с исходным кликом. Помимо собственных (first-party) cookie самого сайта существуют cookie сторонних доменов (third-party), которые устанавливает, например, сама рекламная платформа через код пикселя — именно вторые чаще блокируются браузерами и расширениями, о чём подробнее говорится в вопросах про ITP и серверный трекинг. Что использовать на практике Практика. Понимание cookie важно, чтобы объяснять ограничения трекинга: если пользователь чистит cookie, переключается между устройствами или использует браузер
consentcookies
JuniorPython Developer > Основы Python > Безопасность API и сети
Короткий ответ CORS (Cross-Origin Resource Sharing) — это механизм браузера, который по умолчанию запрещает JavaScript на одном домене читать ответ от сервера на другом домене, если сервер явно не разрешил это через заголовки Access-Control-Allow-*. Как это работает подробнее Браузер сравнивает origin (схема+домен+порт) страницы и запрашиваемого ресурса; если они различаются, для «небезопасных» запросов сначала отправляется preflight-запрос методом OPTIONS, и только при наличии правильных CORS-заголовков в ответе браузер разрешает JS-коду получить доступ к телу ответа. Пример кода Что использовать на практике Практика. Сам факт блокировки CORS не защищает сервер от прямых запросов (curl, другой сервер) — это защита именно браузерных сценариев от чтения чужих данных чужим JS-кодом; backend должен явно настроить разрешённые origin, методы и заголовки, а не использовать * вместе с credentials. Подводные камни Риск. Путают CORS с общей защитой API и считают, что настройка CORS защищает от неавторизованных вызовов
browserscors
JuniorPython Developer > Основы Python > Безопасность API
Короткий ответ CORS (Cross-Origin Resource Sharing) — механизм браузера, разрешающий или запрещающий JS-коду с одного origin делать запросы к API на другом origin; браузер блокирует ответ на стороне клиента, если сервер не вернул правильные заголовки Access-Control-Allow-*, даже если сам HTTP-запрос дошёл и обработался успешно. Как это работает подробнее для "небезопасных" запросов (например, с кастомными заголовками или методом PUT/DELETE) браузер сначала отправляет предварительный OPTIONS-запрос (preflight), и только если сервер ответит разрешающими заголовками, выполняется основной запрос. Для простых GET/POST без специальных заголовков preflight не нужен, но ответ всё равно будет скрыт от JS без Access-Control-Allow-Origin. Пример кода Что использовать на практике Рекомендация. сервер должен явно указать разрешённые origin, методы и заголовки; Access-Control-Allow-Origin: * подходит для публичных API без авторизации через cookie, но несовместим с Access-Control-Allow-Credentials: true. Настройку обычно де
browser-securitycors
JuniorPerformance Marketer > Google Ads > Метрики рекламных кампаний
Короткий ответ CPC показывает среднюю стоимость одного клика и рассчитывается делением расхода на число кликов. Фактический CPC после аукциона может отличаться от максимальной ставки или целевого ограничения. Как это работает подробнее CPC = Расход / Клики; платформа может показывать и фактический CPC по итогам аукциона, и целевой CPC, заданный как стратегия ставок. На некоторых площадках фактический CPC может быть заметно ниже максимальной ставки из-за аукциона второй цены, поэтому ставка и фактический CPC — разные числа, которые нельзя путать при анализе. Пример кода Что использовать на практике Сопоставляйте CPC в одинаковых периодах и форматах, а затем связывайте её с конверсией и CPA. Для ориентира используйте историю собственной ниши и аккаунта. Подводные камни Низкий CPC без последующих конверсий не означает эффективность; сравнение охватной кампании с кампанией на продажи тоже будет некорректным.
ad-spendauction
JuniorPerformance Marketer > Google Ads > Метрики рекламных кампаний
Короткий ответ При оплате CPM рекламодатель платит за показы независимо от кликов; показатель зависит от цены аукциона и конкуренции за аудиторию. Как это работает подробнее CPM = (Расход / Показы) × 1000; оплата идёт за показы независимо от того, кликнул пользователь по объявлению или нет. CPM может резко расти в пиковые по спросу периоды, например в предпраздничные недели, когда одновременно повышают ставки многие рекламодатели в той же аудитории. Пример кода Что использовать на практике Выбирайте CPM для охватных и имиджевых задач или прогрева аудитории. В performance-кампаниях рассматривайте её вместе с CTR, CR и итоговой CPA. Подводные камни Низкий CPM может сочетаться с низким CTR и дорогими лидами; ориентируйтесь на сопоставимые периоды и рекламные форматы.
cpmimpressions
JuniorPerformance Marketer > Google Ads > Основы performance-маркетинга
Короткий ответ Для этапа берут число пользователей, выполнивших действие, и делят на число пользователей предыдущего этапа. Сквозную конверсию получают из начального и конечного объёмов либо перемножением переходных CR. Как это работает подробнее CR = (число конверсий на этапе / число пользователей на предыдущем этапе) × 100%; для сквозной оценки также считают CR «от клика до продажи» как произведение CR по всем промежуточным этапам. Падение CR на одном из этапов не всегда означает проблему — иногда оно связано с сезонностью спроса или с изменением состава трафика, например ростом доли мобильных визитов с более низким CR. Пример кода Что использовать на практике Разделяйте CR по шагам, каналам и устройствам; при сравнении периодов учитывайте объём выборки, сезонность и одинаковое определение событий. Подводные камни Среднее по всему сайту может маскировать провал платной кампании; нестабильные значения на малых выборках не доказывают изменение поведения.
analyticsattribution