MiddleJava Developer > Java Core > Исключения
Короткий ответ Try-with-resources — форма оператора try из Java 7: ресурсы объявляются в круглых скобках после try и автоматически закрываются по завершении блока — нормальном или с исключением — вызовом close() в порядке, обратном их объявлению. Это работает для любого объекта, реализующего AutoCloseable (или его наследника Closeable). Как это работает подробнее Ресурс объявляется в круглых скобках после try — это может быть любой объект, реализующий java.lang.AutoCloseable (метод close()). Интерфейс java.io.Closeable расширяет AutoCloseable: его метод close() объявлен с throws IOException. В старом стиле try-catch-finally ресурсы закрывались вручную, и при исключениях и в теле try, и в close() они могли «потечь», а исходное исключение — затеряться. В try-with-resources наружу уходит исключение из тела try, а исключения из close() добавляются как подавленные (suppressed) — их можно получить через Throwable.getSuppressed(). Закрытие выполняется в порядке, обратном порядку объявления ресурсов. После блока try-
autocloseableexceptions
JuniorPython Developer > Основы Python > Кеширование
Короткий ответ TTL — время, после которого запись в кеше автоматически считается устаревшей и удаляется, вынуждая следующий запрос обновить данные из источника. Как это работает подробнее При записи в кеш указывается срок жизни (секунды); хранилище (например Redis) само удаляет ключ по истечении TTL. Пример кода Что использовать на практике Практика. Короткий TTL — свежие, но чаще нагружает основной источник; длинный TTL — меньше нагрузки, но данные дольше могут быть устаревшими; TTL выбирают исходя из частоты изменений и критичности свежести. Подводные камни Риск. Ставить одинаковый TTL для всех видов данных без учёта частоты изменений; забывать, что TTL не гарантирует согласованность с БД сразу после обновления записи.
cache-invalidationcaching
JuniorSMM Manager > Общее > Контент-стратегия
Короткий ответ UGC — это контент, созданный самими клиентами или подписчиками (отзывы, фото с продуктом, упоминания бренда), его собирают через брендированные хэштеги, отметки аккаунта и прямые просьбы поделиться опытом; UGC не заменяет регулярный контент-план, а дополняет его и требует согласия автора на публикацию. Как это работает подробнее бренд стимулирует аудиторию публиковать контент с упоминанием/хэштегом, затем отбирает подходящие материалы и репостит с указанием авторства. Что использовать на практике На практике. UGC полезно закладывать в контент-план как отдельную рубрику с регулярным слотом, а не использовать хаотично, и всегда запрашивать разрешение автора перед репостом. Пример. Кофейня просит клиентов отмечать аккаунт на фото с напитком для еженедельной рубрики «Фото недели». Проверка: число отметок/упоминаний за неделю и наличие явного согласия в комментарии или директе перед репостом. Подводные камни Частые ошибки. публиковать чужой контент без спроса согласия; считать, что UGC появится сам
content-planningcontent-strategy
JuniorSMM Manager > Общее > Контент и форматы
Короткий ответ UGC — это отзывы, фото, видео и посты, которые создают сами пользователи или клиенты бренда без прямого заказа у профессиональной студии; бренды собирают его, потому что он воспринимается как более достоверный и снижает затраты на продакшн, но не заменяет весь остальной контент. Как это работает подробнее UGC появляется органически (клиент сам отметил бренд) или через стимулирование (конкурс, просьба оставить отзыв с фото); бренд затем репостит такой контент на своих площадках, обычно с согласия автора. Что использовать на практике Рекомендация. перед публикацией UGC нужно получить разрешение автора (личным сообщением или через условия конкурса) и указать авторство; качество UGC может сильно различаться, поэтому его обычно отбирают и иногда легко обрабатывают, не искажая суть. Подводные камни Риск. публиковать чужой контент без спроса; считать, что много UGC автоматически означает рост продаж без проверки, что аудитория UGC совпадает с целевой; не указывать автора, что может вызвать конфликт.
audience-segmentationcontent-production
JuniorDevOps Engineer > Контейнеры и доставка > Права доступа Linux
Короткий ответ umask — маска, которая вычитает (маскирует) определённые биты прав из прав по умолчанию при создании новых файлов и каталогов; стандартные права по умолчанию 666 для файлов и 777 для каталогов, из которых umask убирает указанные биты. Как это работает подробнее При создании файла ядро/библиотека берёт базовые права (666 для файлов, 777 для каталогов) и применяет побитовое И с инверсией umask, поэтому, например, umask 022 даёт файлам права 644, а каталогам — 755, убирая право записи для группы и остальных. Пример кода Что использовать на практике Практика. umask задают на уровне shell-профиля пользователя или сервисного процесса (systemd поддерживает директиву UMask= в unit-файле), чтобы все создаваемые приложением файлы по умолчанию имели предсказуемо безопасные права без явного chmod после каждого создания файла. Подводные камни Риск. Частая ошибка — не учитывать umask процесса, который создаёт конфиденциальные файлы (например, с секретами), из-за чего новые файлы получают избыточно широкие пр
access-controlfile-modes
MiddlePython Developer > Основы Python > Тестирование кода
Короткий ответ unittest — встроенный в стандартную библиотеку фреймворк модульного тестирования в стиле xUnit: тесты оформляются классами на базе unittest.TestCase, проверки — методами-утверждениями. pytest позволяет писать тесты как простые функции с обычным assert, автоматически обнаруживает тесты и имеет множество плагинов, при этом умеет запускать и unittest-тесты. Как это работает подробнее Оба инструмента решают одну задачу, но по-разному организуют код тестов, а pytest дополнительно умеет работать с unittest-тестами. Стиль unittest. Класс наследует unittest.TestCase, каждый тест — метод с именем на test_, проверки выполняются через assertEqual(), assertTrue(), assertIn() и подобные. Подготовка окружения. Метод setUp() готовит фиксированное окружение перед каждым тестом, чтобы результаты были воспроизводимы. Запуск unittest. Набор запускается через unittest.main() или командой запуска файла с флагом -v; возможные исходы — OK, FAIL или ERROR. Философия pytest. Минимум шаблонного кода: тесты-функции, обыч
pytestpython
JuniorPerformance Marketer > Google Ads > Инструменты и автоматизация
Короткий ответ UTM-метки — параметры URL, например utm_source и utm_campaign, которые помогают классифицировать переходы в отчётах. Извлекайте каждое значение по имени параметра, чтобы порядок параметров не влиял на разбивку. Как это работает подробнее В URL параметры следуют за вопросительным знаком и разделяются амперсандами; каждый параметр содержит ключ и значение. Разделение всей строки только по позиции ненадёжно: параметры могут идти в разном порядке, отсутствовать или иметь URL-кодированные символы, поэтому извлекайте значения по ключам. Нормализация. Сведите варианты написания источников и каналов к согласованным значениям до группировки. Пустые значения. Отличайте отсутствующий параметр от буквального значения (not set) и фиксируйте некорректные URL отдельно. Пример кода Что использовать на практике Табличный процесс. Используйте SPLIT для предварительного разбиения параметров, а затем извлекайте именно ключи utm_source, utm_medium и utm_campaign. Контроль. Посчитайте строки с пустым источником и пр
attributionexcel
JuniorPerformance Marketer > Google Ads > Специфика рекламных площадок и каналов
Короткий ответ Viewability — доля показов рекламного блока, которые реально попали в видимую область экрана пользователя на минимально установленное время (по стандарту MRC — не менее 50% площади баннера в течение минимум 1 секунды, для видео — 2 секунды); технически засчитанный, но не увиденный показ не может принести реального эффекта. Как это работает подробнее верификационные теги отслеживают положение рекламного блока на экране относительно окна браузера/приложения и фиксируют, достиг ли показ порога видимости; без такого измерения показ может быть технически «отдан» сервером, но физически находиться ниже видимой области страницы и никогда не попасть в поле зрения пользователя. Что использовать на практике На практике. при закупке программатик-инвентаря важно смотреть не только на CPM, но и на процент viewable impressions — низкая видимость означает, что часть оплаченных показов не имела шанса повлиять на пользователя; многие DSP позволяют оптимизировать закупку именно по viewable impressions. Пример. Пл
ad-verificationbrand-safety
JuniorDevOps Engineer > Контейнеры и доставка > Kubernetes и оркестрация
Короткий ответ Volume — это каталог с данными, доступный контейнерам внутри Pod, который может переживать перезапуск контейнера (в отличие от файловой системы самого контейнера) и позволяет нескольким контейнерам одного Pod обмениваться файлами. Как это работает подробнее файловая система контейнера по умолчанию эфемерна — при перезапуске контейнера (не Pod) все изменения в ней теряются. Volume монтируется в один или несколько контейнеров Pod по указанному пути и живёт столько, сколько живёт сам Pod (для эфемерных типов, например emptyDir) или дольше (для PersistentVolume, подключаемого через PersistentVolumeClaim). Пример кода Что использовать на практике Практика. emptyDir часто используют для временного обмена данными между основным контейнером и sidecar (например, логи или кэш); для данных, которые должны пережить пересоздание Pod, используют PersistentVolumeClaim, подключённый к реальному сетевому или облачному хранилищу. Подводные камни Риски. рассчитывать, что emptyDir сохранит данные после удаления Po
containerskubernetes
MiddlePython Developer > Основы Python > Управление памятью
Короткий ответ weakref создаёт ссылку на объект, которая не увеличивает его счётчик ссылок и не мешает объекту быть собранным сборщиком мусора — полезна для кэшей и регистров наблюдателей, которые не должны продлевать жизнь объектов. Как это работает подробнее Обычная ссылка увеличивает refcount объекта, и пока она существует, объект не освобождается. weakref.ref(obj) (или WeakValueDictionary/WeakKeyDictionary) не увеличивает refcount — при обращении к ссылке на уже удалённый объект возвращается None, а в словаре элемент автоматически исчезает. Пример кода Что использовать на практике Практика. Типичное применение — кэш объектов, где кэш не должен быть единственной причиной, по которой объект «живёт» дольше, чем реальный код (WeakValueDictionary); или паттерн «наблюдатель», где подписчики не должны держаться в памяти только потому, что на них подписан внешний реестр. Подводные камни Риски. Используют обычный словарь для кэша объектов и удивляются, что память не освобождается, хотя «видимых» внешних ссылок нет
garbage-collectionmemory-management