JuniorPython Developer > Основы Python > Основы Python
Короткий ответ Изменяемые типы позволяют менять содержимое объекта после его создания — это списки, словари, множества и другие. Неизменяемые типы — строки, кортежи, числа и другие: их содержимое изменить нельзя, поэтому любая «правка» на самом деле создаёт новый объект. Как это работает подробнее Деление определяется возможностью изменять объект «на месте», и оно напрямую влияет на поведение кода. Изменяемые объекты. У списка есть методы вроде append и sort, которые меняют объект на месте, поэтому все ссылки на него видят изменения. Неизменяемые объекты. У строки нет методов изменения на месте: конкатенация строк или сложение чисел создаёт новый объект, а старая ссылка перепривязывается. Хешируемость. Неизменяемые объекты можно использовать как ключи словаря и элементы множества, а также безопасно передавать в функции — случайно изменить их нельзя. Что использовать на практике Ключи словаря. Для ключей словаря и элементов множества выбирай неизменяемые типы — они хешируемы. Накопление данных. Когда коллекцию
data-typesimmutable
JuniorPython Developer > Основы Python > Индексы и производительность
Короткий ответ Индекс — это дополнительная структура данных (обычно B-tree), хранящая упорядоченные значения колонки(ок) со ссылками на строки, что позволяет находить нужные строки за O(log n) вместо полного перебора таблицы (Seq Scan). Как это работает подробнее Без индекса СУБД читает все строки таблицы (Sequential Scan), проверяя условие у каждой. Индекс позволяет быстро найти диапазон или точное значение через обход дерева и затем обратиться только к нужным строкам таблицы. Пример кода Что использовать на практике Практика. Индексы ускоряют SELECT с фильтрацией/сортировкой/джойнами по индексируемой колонке, но замедляют INSERT/UPDATE/DELETE, так как индекс нужно поддерживать в актуальном состоянии; план выполнения проверяют через EXPLAIN. Подводные камни Ошибка. Создают индекс «на всякий случай» на каждую колонку, не оценивая рост времени записи и объёма на диске; забывают, что индекс не всегда используется планировщиком при низкой избирательности условия.
indexespostgresql
MiddleJava Developer > Java Core > SQL и БД
Короткий ответ Индекс — объект базы данных, который ускоряет поиск и выборку строк: по аналогии с алфавитным указателем в книге он позволяет СУБД быстро находить нужные данные, не сканируя всю таблицу подряд. Индексы ускоряют SELECT с условиями в WHERE, с JOIN и с сортировкой ORDER BY. Как это работает подробнее Плата за индекс — дополнительное место для хранения структур и нагрузка на операции записи: при каждом INSERT, UPDATE и DELETE индексы нужно обновлять. Индекс эффективен на колонках, которые часто используются в WHERE, условиях JOIN и ORDER BY, и когда колонка имеет хорошую селективность — много различных значений. Кластеризованный: определяет физический порядок хранения строк, может быть только один на таблицу, обычно строится на первичном ключе. Некластеризованный: отдельная структура с указателями на строки; таких индексов может быть несколько. Уникальный и составной: уникальный гарантирует отсутствие дубликатов, составной строится по нескольким колонкам. Когда индекс не сработает: функция над коло
databaseindexes
JuniorPython Developer > Основы Python > Итераторы и генераторы
Короткий ответ Итератор — объект, реализующий метод __next__(), который возвращает следующий элемент или поднимает StopIteration, когда элементы закончились; __iter__() должен возвращать сам итератор (обычно self). Как это работает подробнее Итерируемый объект (iterable) — то, у чего есть __iter__, возвращающий итератор; итератор хранит состояние (например, текущий индекс) и на каждый __next__ продвигает его, возвращая следующее значение, а при исчерпании поднимает StopIteration. Цикл for под капотом вызывает iter() один раз и затем next() до исключения. Пример кода Что использовать на практике Практика. Итератор полезен, когда нужно отделить логику обхода от хранения коллекции или итерировать «на лету» без материализации всех элементов в памяти; состояние храните в атрибутах экземпляра, а не в глобальных переменных, чтобы несколько независимых обходов не мешали друг другу. Подводные камни Риски. Путают iterable и iterator — пытаются вызвать next() на списке напрямую (TypeError); забывают, что __iter__ должен
generatorsiterators
JuniorPython Developer > Основы Python > Кеширование
Короткий ответ Кеш — промежуточное хранилище часто запрашиваемых данных с быстрым доступом, снижающее нагрузку на основной источник данных (БД, внешний API) и ускоряющее ответ. Как это работает подробнее При запросе сначала проверяется кеш; если данных нет (cache miss) — идём в основной источник и кладём результат в кеш; при повторном запросе (cache hit) данные берутся из кеша. Пример кода Что использовать на практике Практика. Типичные хранилища — Redis, Memcached, локальная память процесса; кешируют данные, которые часто читаются и редко меняются либо допускают небольшую задержку свежести. Подводные камни Риск. Кешировать данные без плана их обновления/инвалидации; кешировать персональные/чувствительные данные без учёта ограничения доступа.
cache-invalidationcaching
JuniorPython Developer > Основы Python > Code review
Короткий ответ Код-ревью — это проверка кода другим разработчиком перед слиянием в основную ветку; она ловит проблемы, которые не покрывают автотесты: читаемость, архитектурные решения, скрытые риски и соответствие соглашениям команды. Как это работает подробнее Автор открывает Pull Request, ревьюер читает diff, оставляет комментарии или одобряет изменения. Прохождение тестов подтверждает, что код работает по заданному сценарию, но не говорит ничего о том, понятен ли код другим, не дублирует ли он существующую логику и не создаёт ли технический долг. Это разные источники уверенности в качестве: автоматические проверки и взгляд человека дополняют друг друга, а не заменяют. Пример кода Что использовать на практике Практика. Ревью полезно рассматривать как вторую пару глаз, а не формальность для галочки: ревьюер может заметить забытую обработку ошибок, небезопасный SQL-запрос или нарушение принятого в проекте стиля. Для младшего разработчика ревью — ещё и способ учиться у более опытных коллег: по комментариям ви
code-reviewmaintainability
JuniorPerformance Marketer > Google Ads > События и GA4
Короткий ответ Конверсия в GA4 — это событие, которое бизнес считает ценным действием (покупка, лид, регистрация); чтобы событие попало в отчёты по конверсиям, его нужно явно отметить переключателем «Отметить как конверсию» в разделе Events. Как это работает подробнее GA4 собирает все события одинаково, но только те, что помечены флагом конверсии, попадают в отчёты «Конверсии», используются в атрибуции и могут быть выбраны как цель оптимизации при импорте в Google Ads. Технически под капотом ключевое событие ничем не отличается от обычного — GA4 просто хранит отдельный список имён событий, помеченных флагом конверсии, и фильтрует по этому списку при построении отчётов «Реклама» и при экспорте данных в Google Ads. Что использовать на практике Практика. Перед запуском кампаний важно убедиться, что ключевое событие (например, purchase или generate_lead) действительно помечено как конверсия, иначе Google Ads не увидит данных для оптимизации по этой цели. С 2024 года в интерфейсе GA4 термин «конверсия» заменён на
analyticsevents
JuniorPython Developer > Основы Python > Контекстные менеджеры
Короткий ответ Контекстный менеджер — объект с методами __enter__ и __exit__, гарантирующий выполнение кода освобождения ресурса (например, закрытие файла) даже если внутри блока произошло исключение. Как это работает подробнее При входе в блок with Python вызывает __enter__() объекта и присваивает результат переменной после as; при выходе из блока (нормальном или через исключение) гарантированно вызывается __exit__(), которому передаются тип, значение и traceback исключения, если оно было. Пример кода Что использовать на практике Практика. open() возвращает файловый объект, который сам является контекстным менеджером — его __exit__ вызывает close(). Это избавляет от необходимости вручную писать try/finally для закрытия файла, лока или соединения. Подводные камни Риски. Открывают файл без with и забывают закрыть его явно, особенно в ветке с исключением; путают __exit__ с «выполняется только при успехе», не понимая, что он вызывается и при исключении.
contextlibcontext-managers
JuniorSMM Manager > Общее > Контент-стратегия
Короткий ответ Контент-пиллары — это 3–5 крупных тематических направлений, вокруг которых строится весь контент бренда; они нужны, чтобы контент не превращался в случайный набор постов, а отражал ключевые сообщения и ценности бренда. Как это работает подробнее пиллары задают верхнеуровневые темы (например, «экспертиза», «продукт», «команда», «отзывы»), а конкретные рубрики и посты — это уже детализация внутри каждого пиллара. Что использовать на практике На практике. перед составлением контент-плана фиксируют 3–5 пилларов исходя из целей бренда и интересов аудитории, затем проверяют, что контент-план покрывает их в разумной пропорции. Пример. Пекарня выбирает пиллары: «Продукт», «Процесс приготовления», «Люди команды», «Отзывы клиентов». Проверка: за месяц контент-план должен содержать посты по каждому пиллару, а не только по «Продукту» — это проверяется подсчётом постов по тегам пилларов в таблице плана. Подводные камни Частые ошибки. выбор слишком большого числа пилларов (8–10), из-за чего контент распадает
content-pillarscontent-planning
JuniorSMM Manager > Общее > Контент-стратегия
Короткий ответ Контент-план — это заранее составленный график публикаций с темами, форматами и датами, который обеспечивает регулярность, последовательность рубрик и возможность заранее согласовать и подготовить материалы, а не решает креативные задачи сам по себе. Как это работает подробнее контент-план фиксирует, что, когда, на какой площадке и в каком формате выходит, обычно в виде таблицы с датой, темой, рубрикой, статусом подготовки. Что использовать на практике На практике. план составляют на неделю-месяц вперёд, оставляя гибкие слоты под инфоповоды; он синхронизирует работу копирайтера, дизайнера и SMM-менеджера, чтобы не было пропусков публикаций. Пример. Фрагмент контент-плана на неделю: | Дата | Площадка | Рубрика | Формат | Статус | |---|---|---|---|---| | 12.05 | VK | Товар дня | Карусель | Готово | | 14.05 | Telegram | Вопрос-ответ | Текст | На согласовании | Проверка. Проверка: к пятнице все строки должны иметь статус «Опубликовано» — отсутствие пропусков подтверждает, что план соблюдается. Подв
content-planningcontent-strategy