JuniorSMM Manager > Общее > SMM-аналитика и метрики
Короткий ответ Save rate — доля пользователей, сохранивших публикацию, от охвата или вовлечённых пользователей; высокий save rate часто говорит о практической ценности контента (гайды, подборки, рецепты), которую пользователь хочет сохранить «на потом». Как это работает подробнее платформа фиксирует количество сохранений поста отдельно от лайков и комментариев, доступное в нативной статистике; save rate = сохранения / охват × 100%. Карусель «5 ошибок в уходе за кожей» получила 200 сохранений при охвате 10 000 (save rate 2%), что заметно выше среднего save rate аккаунта (0,5%). Проверка: сравнение save rate этого поста со средним по аккаунту за последние недели подтверждает, что именно практический формат увеличивает сохранения. Что использовать на практике Практический подход. эту метрику особенно полезно смотреть для обучающего, справочного и «полезного» контента (списки, инструкции), так как именно такой контент чаще сохраняют, в отличие от развлекательного, который чаще лайкают и комментируют сразу. Подвод
impressionsmetrics
JuniorDevOps Engineer > Контейнеры и доставка > Мониторинг, логирование и observability
Короткий ответ Scrape interval — как часто Prometheus опрашивает цели (например, каждые 15 секунд); retention — как долго собранные данные хранятся локально на диске (по умолчанию в Prometheus 2.x это 15 дней); меньший интервал опроса даёт более точные графики, но быстрее заполняет диск при том же retention. Как это работает подробнее каждый scrape создаёт новую точку данных для каждого временного ряда; чем чаще scrape, тем больше точек накапливается за одно и то же время хранения, и тем больше места на диске и нагрузки на TSDB это требует. Retention задаётся флагом --storage.tsdb.retention.time (или по размеру — --storage.tsdb.retention.size), и по его истечении старые блоки данных удаляются автоматически. Пример кода Что использовать на практике Практика. типичный scrape interval — 15–60 секунд для большинства сервисных метрик; более частый опрос (1–5 секунд) используют только для узких задач с явной необходимостью высокой точности по времени. Для хранения метрик дольше, чем позволяет локальный диск Prometh
monitoringobservability
JuniorDevOps Engineer > Контейнеры и доставка > Облачные платформы
Короткий ответ Security Group — виртуальный файрвол, привязанный к сетевому интерфейсу инстанса, который разрешает трафик по правилам (протокол, порт, источник); по умолчанию весь входящий трафик запрещён, и правила нужно добавлять явно. Как это работает подробнее правила обычно описываются как allow-list и применяются к конкретному ресурсу, а не ко всей подсети; большинство реализаций stateful — если разрешён входящий запрос, ответный трафик пропускается автоматически. Пример кода Что использовать на практике Рекомендация. открывают только нужные порты (например, 443) и ограничивают источник максимально узко (конкретный CIDR или другая security group) вместо 0.0.0.0/0 там, где это не требуется. Проверка. подключение по HTTPS снаружи работает, а SSH снаружи VPC получает отказ соединения (connection timed out). Подводные камни Риск. открывать порт 22/3389 всему интернету «для удобства отладки» Риск. создавать одну общую security group на все сервисы вместо разделения по ролям Риск. забывать закрыть временно от
cloud-networkingfirewall
JuniorDevOps Engineer > Контейнеры и доставка > Kubernetes и оркестрация
Короткий ответ ServiceAccount — это идентификатор, от имени которого процессы внутри Pod обращаются к Kubernetes API; каждый Pod использует какой-либо ServiceAccount (по умолчанию — default в своём namespace), и права этого аккаунта определяются через RBAC. Как это работает подробнее при создании Pod в него автоматически монтируется токен ServiceAccount (JWT), который приложение может использовать для аутентификации при обращении к Kubernetes API сервера. Сами по себе права не предоставляются ServiceAccount автоматически — их нужно явно выдать через Role/RoleBinding или ClusterRole/ClusterRoleBinding. Пример кода Что использовать на практике Практика. ServiceAccount нужен, когда приложению внутри кластера требуется взаимодействовать с Kubernetes API — например, оператору, который следит за ресурсами, или CI-агенту, разворачивающему манифесты. Для приложений, которым не нужен доступ к API Kubernetes, лучше явно отключить автомонтирование токена (automountServiceAccountToken: false), чтобы снизить площадь атаки
identitykubernetes
MiddleJava Developer > Java Core > JPA и Hibernate
Короткий ответ SessionFactory — «тяжёлая» потокобезопасная фабрика: она создаётся один раз на всё приложение на основе конфигурации, хранит метаданные маппингов и кэш второго уровня и порождает объекты Session. Session — основной интерфейс работы с базой: единица работы (unit of work) с методами CRUD, управления транзакциями, кэшем первого уровня и ленивой загрузкой. В JPA роли совпадают: EntityManagerFactory — аналог SessionFactory, а EntityManager — аналог Session. Как это работает подробнее Session не потокобезопасна: каждый поток или единица работы должна использовать собственную Session, полученную через openSession() или getCurrentSession() для сессии, привязанной к текущей транзакции. Поскольку Hibernate реализует спецификацию JPA, его Session и SessionFactory реализуют стандартные интерфейсы EntityManager и EntityManagerFactory. SessionFactory: создаётся один раз (например, из hibernate.cfg.xml), дорога в создании, потокобезопасна, общая для всех сессий. Session: открывается на единицу работы, предост
entitymanagerhibernate
JuniorPython Developer > Основы Python > Django и DRF
Короткий ответ settings.py — модуль с конфигурацией проекта (БД, установленные приложения, секретные ключи и т. п.); из кода настройки читают через объект django.conf.settings, а не импортируя модуль напрямую. Как это работает подробнее При старте Django загружает модуль, указанный в переменной окружения DJANGO_SETTINGS_MODULE, и оборачивает его в ленивый объект settings. Обращение к любому атрибуту settings.X возвращает значение, определённое в этом модуле (или в global_settings по умолчанию). Пример кода Что использовать на практике Практика. Всегда импортируют from django.conf import settings и читают settings.DEBUG, settings.DATABASES и т. д. Это позволяет подменять настройки в тестах через override_settings и не привязываться к конкретному файлу настроек. Подводные камни Риск. Прямой import myproject.settings as settings вместо django.conf.settings — теряется ленивая загрузка и возможность переопределения в тестах; хранение секретов прямо в settings.py в открытом виде вместо переменных окружения.
configurationdjango
JuniorDevOps Engineer > Контейнеры и доставка > Надёжность и инцидент-менеджмент
Короткий ответ SLI (Service Level Indicator) — это измеримая метрика качества сервиса (например, доля успешных запросов); SLO (Service Level Objective) — целевое значение этой метрики (например, 99.9% успешных запросов за месяц); SLA (Service Level Agreement) — формальное, часто договорное обязательство перед клиентом, обычно с финансовыми последствиями при нарушении. Как это работает подробнее SLI измеряется напрямую из систем мониторинга, SLO — это внутренняя цель команды, обычно более строгая, чем SLA, чтобы оставался запас (error budget) прежде чем будет нарушено договорное SLA. SLA часто покрывает только часть того, что измеряет SLO, и формулируется проще для юридического/договорного языка. Пример / кейс Ожидаемое поведение: пока фактическое значение SLI держится между 99.9% и 99.95%, внутренний SLO уже нарушен (сигнал команде действовать), но внешнее SLA пока не нарушено — запас между ними и есть error budget для принятия рисков. Пример кода Что использовать на практике Практический подход. Сначала выби
error-budgetobservability
JuniorPerformance Marketer > Google Ads > Специфика рекламных площадок и каналов
Короткий ответ Spark Ads — формат, который продвигает уже существующее органическое видео (своё или авторизованное видео креатора) напрямую с его аккаунта, сохраняя лайки, комментарии и подписки у исходного поста, в отличие от обычного объявления, загруженного как новый рекламный актив без органической истории. Как это работает подробнее для Spark Ads нужен код авторизации органического видео (своего аккаунта или блогера, давшего разрешение), после чего реклама показывается как продвижение этого конкретного поста; вовлечённость, полученная во время рекламного показа, сохраняется на органическом посте и после завершения кампании. Что использовать на практике На практике. такой формат часто даёт более высокое вовлечение и доверие аудитории за счёт «нативного» вида в ленте и видимой социальной активности, его удобно использовать для усиления успешного органического контента или интеграций с блогерами; обычный загруженный креатив проще масштабировать и быстрее тестировать, так как не требует получения кода автори
authorization-codecreator-content
SeniorJava Developer > Java Core > Spring
Короткий ответ Spring AOP (Aspect Oriented Programming) — парадигма, дополняющая ООП: сквозные задачи — логирование, безопасность, управление транзакциями, аудит — выносятся из бизнес-логики в отдельные модули. Если в ООП основная единица — класс, то в AOP это аспект. Как это работает подробнее По моменту выполнения советы делятся на before (до метода), after returning (после успешного завершения), after throwing (если метод бросил исключение), after (finally) — в любом случае, и around, который выполняется и до, и после метода и может управлять его выполнением. Основные применения AOP: логирование, безопасность и аутентификация, декларативные транзакции, обработка исключений, сбор метрик API. Код аспектов собирается в одном месте, переиспользуется, а бизнес-код остаётся чистым. Aspect (аспект) — класс, который реализует сквозную функциональность, затрагивающую сразу несколько классов, например логирование или проверку прав. Join Point (точка соединения) — место в ходе выполнения программы, в котором может бы
adviceaop
MiddleJava Developer > Java Core > Spring
Короткий ответ Spring Bean — это обычный Java-объект (POJO), который создаётся, настраивается и управляется IoC-контейнером Spring. В отличие от объекта, созданного через new, бин получает автоматически внедрённые зависимости, а его жизненным циклом от создания до уничтожения управляет контейнер. Как это работает подробнее Бины регистрируются в контексте приложения через стереотипные аннотации — @Component, @Service, @Repository, @Controller — либо декларацией @Bean внутри @Configuration-класса. Далее контейнер использует их для автоматического внедрения в другие компоненты. Этапы цикла: запуск контейнера и загрузка конфигурации, создание экземпляра бина, внедрение зависимостей, инициализация бина (например, @PostConstruct или init-method), выполнение бизнес-методов, затем вызов метода уничтожения (@PreDestroy или destroy-method) при остановке контейнера. Зачем это нужно: централизованное управление объектами и зависимостями упрощает сопровождение и тестирование, а ресурсы — соединения с БД, сокеты, файлы — г
beancontainer