JuniorPython Developer > Основы Python > Секреты и безопасность
Короткий ответ .gitignore указывает Git, какие файлы не нужно отслеживать; если .env с паролями попадёт в репозиторий, секреты окажутся во всей истории Git и у всех, кто имеет доступ, и их нужно считать скомпрометированными и ротировать, даже если файл позже удалить. Как это работает подробнее при git add/git status Git сверяется с шаблонами в .gitignore и не предлагает такие файлы к отслеживанию; это работает только для файлов, которые ещё никогда не были закоммичены. Пример кода Что использовать на практике Рекомендация. типичный .gitignore для Python включает .venv/, __pycache__/, .env, *.log; секреты передают через переменные окружения, а в репозиторий кладут только .env.example. Подводные камни Риск. добавить .env в .gitignore только после того, как он уже был закоммичен — файл всё равно остаётся в истории; нужно удалить его из истории и обязательно сменить скомпрометированные секреты.
configurationcredentials
JuniorDevOps Engineer > Контейнеры и доставка > Kubernetes и оркестрация
Короткий ответ ConfigMap хранит некритичные конфигурационные данные (переменные окружения, файлы настроек) отдельно от образа контейнера и может быть подключён к Pod как переменные окружения или как смонтированный том с файлами. Как это работает подробнее ConfigMap — это объект Kubernetes с набором пар ключ-значение или целых файлов; он хранится в etcd в открытом виде (без шифрования по умолчанию) и не предназначен для секретов. При монтировании как volume каждый ключ становится отдельным файлом в указанной директории. Пример кода Что использовать на практике Практика. ConfigMap позволяет использовать один и тот же образ контейнера в разных окружениях (dev/staging/prod), подставляя разную конфигурацию снаружи образа, что соответствует принципу "один артефакт — много окружений". Для горячей перезагрузки конфигурации приложение должно само отслеживать изменения файла, Kubernetes не перезапускает Pod автоматически. Подводные камни Риски. хранить пароли и токены в ConfigMap вместо Secret — Secret тоже не шифрует
configmapconfiguration
JuniorPython Developer > Основы Python > Django и DRF
Короткий ответ CSRF middleware защищает от межсайтовой подделки запросов, требуя, чтобы небезопасные методы (POST, PUT, DELETE) содержали корректный CSRF-токен, связанный с сессией пользователя. Как это работает подробнее Django генерирует уникальный токен для сессии/куки и ожидает его в форме ({% csrf_token %}) или заголовке (X-CSRFToken) при небезопасных запросах. Middleware сверяет токен из запроса с ожидаемым и возвращает 403 Forbidden при несовпадении или отсутствии. Пример кода Что использовать на практике Практика. Для обычных HTML-форм достаточно тега {% csrf_token %} в шаблоне. Для AJAX/SPA токен нужно передавать явно в заголовке, читая его из cookie csrftoken. Для чистых API без сессий (например, с токен-аутентификацией) CSRF-защита обычно не требуется для этих эндпоинтов. Подводные камни Риск. Отключают CSRF глобально вместо точечного @csrf_exempt для конкретного эндпоинта, не понимая последствий; забывают передавать токен в AJAX-запросах и получают необъяснимые 403 при разработке фронтенда.
csrfdjango
JuniorPerformance Marketer > Google Ads > Теги и пиксели
Короткий ответ GTM позволяет маркетологу самостоятельно добавлять и настраивать теги аналитики и рекламных платформ на сайте через визуальный интерфейс, без необходимости каждый раз просить разработчика вносить изменения в код сайта. Как это работает подробнее На сайт один раз устанавливается единый контейнер GTM; далее внутри GTM создаются теги (что отправить), триггеры (когда отправить) и переменные (какие данные подставить), и вся эта логика публикуется централизованно. Помимо тегов аналитики и рекламы через GTM также удобно управлять вспомогательными скриптами — виджетами чатов, картами, онлайн-консультантами — поскольку все они подключаются и отключаются через один и тот же интерфейс без необходимости трогать исходный код страниц сайта. Что использовать на практике Практика. Это ускоряет запуск новых рекламных кампаний и аналитических отчётов, но требует аккуратности: ошибки в триггерах могут привести к тому, что тег не сработает вообще или сработает многократно. GTM также поддерживает несколько независи
gtmpixels
JuniorPython Developer > Основы Python > Потоки и синхронизация
Короткий ответ threading.Lock — примитив синхронизации, гарантирующий, что в охраняемый блок кода в любой момент может войти только один поток, что превращает составную операцию в фактически атомарную относительно других потоков. Как это работает подробнее Lock.acquire() блокирует поток, если лок уже захвачен другим потоком, и пропускает его, если лок свободен; release() освобождает лок. Конструкция with lock: эквивалентна acquire()/release() с гарантированным release() даже при исключении. Пример кода Что использовать на практике Практика. Лок оборачивают вокруг минимально необходимого участка кода, читающего и изменяющего общие данные, чтобы не создавать лишних задержек для остальных потоков и не удерживать лок во время долгих операций. Подводные камни Риски. Оборачивают локом слишком большой участок кода, из-за чего многопоточность теряет смысл; забывают освободить лок вручную без with, что при исключении приводит к «зависшему» локу и дедлоку остальных потоков.
concurrencylocks
JuniorDevOps Engineer > Контейнеры и доставка > Надёжность и инцидент-менеджмент
Короткий ответ Репликация защищает от отказа оборудования, но мгновенно копирует и ошибочные или вредоносные изменения (удаление таблицы, шифровальщик, баг в коде) на все реплики, поэтому только отдельные, изолированные во времени бэкапы защищают от логических ошибок и порчи данных. Как это работает подробнее реплика синхронно или почти синхронно повторяет все операции с основного узла, включая `DELETE`, `DROP TABLE` или повреждение файла; бэкап — это снимок состояния на конкретный момент времени, хранящийся отдельно и неизменяемо. Пример / кейс Ожидаемое поведение: на реплике эта же команда выполнится почти мгновенно, и данные пропадут везде; восстановить можно только из бэкапа, сделанного до ошибочной команды, либо через point-in-time recovery по журналу транзакций. Пример кода Что использовать на практике Практический подход. Нужна комбинация — репликация для быстрого переключения при аппаратном сбое (высокая доступность) и регулярные бэкапы с ретенцией (возможность откатиться на точку до ошибки). Бэкапы с
backupdata-integrity
JuniorSMM Manager > Общее > Публикация и кампании
Короткий ответ UTM-метки — это параметры, добавляемые к ссылке, которые позволяют в веб-аналитике (например, Яндекс.Метрике или Google Analytics) отличить переходы из конкретного поста, площадки или кампании от переходов из других источников. Как это работает подробнее к ссылке добавляются параметры вида ?utm_source=vk&utm_medium=social&utm_campaign=spring_sale, которые система аналитики сайта считывает и группирует по источнику, каналу и названию кампании, показывая, сколько трафика и конверсий пришло именно из этого поста. Что использовать на практике На практике. важно использовать единую систему именования меток (одинаковые значения source/medium/campaign для похожих постов), иначе данные в отчётах будет невозможно сопоставить; перед публикацией нужно проверить, что ссылка с меткой действительно открывается и ведёт на нужную страницу. Пример. Ссылка в посте: https://site.ru/sale?utm_source=instagram&utm_medium=social&utm_campaign=spring_sale&utm_content=post1. Проверка: в отчёте аналитики сайта появляется
publishing-campaignssocial-media-marketing
JuniorSMM Manager > Общее > Аналитика и CRM-интеграции
Короткий ответ UTM-метки — это параметры в ссылке, которые позволяют веб-аналитике (например, Яндекс.Метрике) автоматически определить, из какого поста, площадки или кампании пришёл переход. Как это работает подробнее к ссылке добавляются параметры source/medium/campaign; система веб-аналитики считывает их при переходе и группирует трафик по этим меткам. Что использовать на практике Действия. Без UTM-меток сложно отличить трафик из конкретного поста от общего трафика «из соцсетей». Также. Важно использовать единый шаблон меток для всех постов, чтобы отчёты собирались корректно и автоматически. Проверка. Ссылка на сайт в посте о распродаже: ?utm_source=vk&utm_medium=social&utm_campaign=sale_october. Проверка: в веб-аналитике появляется отдельная строка по этой кампании с числом переходов и сессий, которую можно сравнить с другими постами. Подводные камни Риск. Ставить разные названия кампаний для одного и того же типа публикаций (из-за чего данные дробятся и не агрегируются). Также. Забывать добавлять метку и
crm-integrationdata-attribution
JuniorSMM Manager > Общее > Автоматизация публикаций
Короткий ответ Планировщик позволяет заранее подготовить и поставить в очередь публикации на несколько площадок и дат, чтобы не публиковать вручную каждый раз в нужное время. Как это работает подробнее в сервисе создаётся пост с текстом, медиа и временем выхода; планировщик через API площадки публикует его автоматически в заданный момент. Что использовать на практике Действия. Это экономит время при ведении нескольких площадок одновременно, помогает соблюдать частоту публикаций по контент-плану, но не заменяет контроль: нужно проверять, что пост действительно вышел и корректно отобразился (ссылки, обложка превью, хэштеги). Проверка. В контент-плане на неделю 5 постов для VK и Telegram поставлены в очередь через планировщик на будни в 12:00 и 19:00. Способ проверки: на следующий день менеджер открывает ленты обеих площадок и сверяет, что все 5 постов вышли в указанное время без искажений. Подводные камни Риск. Считать, что после постановки в очередь можно не проверять публикацию. Также. Не учитывать, что некот
content-automationno-code
JuniorData Analyst > SQL и данные > Инструменты и инженерные практики
Короткий ответ Git хранит полную историю изменений файла с автором, временем и построчным diff, позволяет откатиться к любой версии и сравнить изменения, тогда как ручное именование файлов быстро превращается в путаницу и теряет контекст, кто и зачем что менял. Как это работает подробнее Как это работает: Git фиксирует снимки (коммиты) изменений в репозитории; каждый коммит содержит автора, дату, сообщение и ссылку на предыдущее состояние, что образует граф истории. Пример кода Что использовать на практике На практике: аналитик кладёт SQL-запросы, Python-скрипты и даже шаблоны отчётов в репозиторий, пишет понятные commit message («добавил фильтр по региону», а не «fix»), использует .gitignore, чтобы не коммитить большие выгрузки и пароли к БД. Пример и проверка. Аналитик сломал рабочий запрос для дневного отчёта. С Git это чинится так: Проверка: после отката report.sql снова даёт прежний результат, что подтверждается сравнением вывода запроса с контрольными цифрами отчёта за предыдущий день. Подводные камни Ч
gitreproducibility