Примите участие в турнире для школьников «Решись!»
Турнир «Решись!» — онлайн-состязание для школьников 10—11-х классов по четырем направлениям: разработке, искусственному интеллекту, бизнес-аналитике, а также дизайну.
«Решись!» для школьников — это возможность:
— получить грант на обучение в Центральном университете до 100% и другие призы;
— пополнить портфолио;
— проверить знания в ИИ, разработке, дизайне и бизнес-аналитике;
— найти новых знакомых в чате турнира.
Для участия вы можете выбрать как одно направление, так и все четыре — решать вам.
🕒Регистрация продлится до 12 ноября, 16:00 мск, как и отборочный тур.
👉Подробности о турнире и регистрация на сайте
Турнир «Решись!» — онлайн-состязание для школьников 10—11-х классов по четырем направлениям: разработке, искусственному интеллекту, бизнес-аналитике, а также дизайну.
«Решись!» для школьников — это возможность:
— получить грант на обучение в Центральном университете до 100% и другие призы;
— пополнить портфолио;
— проверить знания в ИИ, разработке, дизайне и бизнес-аналитике;
— найти новых знакомых в чате турнира.
Для участия вы можете выбрать как одно направление, так и все четыре — решать вам.
🕒Регистрация продлится до 12 ноября, 16:00 мск, как и отборочный тур.
👉Подробности о турнире и регистрация на сайте
Безопасные параметры в SQL через SQLAlchemy
Новички часто формируют SQL строкой, подставляя значения через f-string → это приводит к SQL-инъекциям. Используйте bind-параметры (:param) — SQLAlchemy сам экранирует значения, защищая запрос.
Не формируйте SQL вручную через f-string.
Используйте :param + словарь → и сразу получаете безопасность и читаемость запроса.
Новички часто формируют SQL строкой, подставляя значения через f-string → это приводит к SQL-инъекциям. Используйте bind-параметры (:param) — SQLAlchemy сам экранирует значения, защищая запрос.
Не формируйте SQL вручную через f-string.
Используйте :param + словарь → и сразу получаете безопасность и читаемость запроса.
Автоматическое создание таблиц из моделей SQLAlchemy
Иногда нужно быстро поднять базу данных на основе ORM-моделей, не создавая миграции вручную.
С помощью Base.metadata.create_all() можно автоматически создать все таблицы, определённые в ваших моделях, прямо в базе данных. Это особенно удобно для тестов или прототипов.
🎯 Итог:
Base.metadata.create_all() позволяет мгновенно создать все таблицы из моделей без Alembic — идеально для тестов, демо и начальной настройки проекта.
Иногда нужно быстро поднять базу данных на основе ORM-моделей, не создавая миграции вручную.
С помощью Base.metadata.create_all() можно автоматически создать все таблицы, определённые в ваших моделях, прямо в базе данных. Это особенно удобно для тестов или прототипов.
🎯 Итог:
Base.metadata.create_all() позволяет мгновенно создать все таблицы из моделей без Alembic — идеально для тестов, демо и начальной настройки проекта.
Быстрое измерение времени выполнения куска кода
Иногда нужно понять, где в проекте просадка по производительности, но тянуть профилировщик — слишком долго. В таких случаях помогает простой таймер через time.perf_counter().
Он даёт высокоточную измерительную шкалу и идеально подходит для быстрого анализа производительности отдельных функций.
🎯 Итог:
time.perf_counter() — самый простой способ быстро понять, где код тормозит, без сторонних библиотек и сложных инструментов.
Иногда нужно понять, где в проекте просадка по производительности, но тянуть профилировщик — слишком долго. В таких случаях помогает простой таймер через time.perf_counter().
Он даёт высокоточную измерительную шкалу и идеально подходит для быстрого анализа производительности отдельных функций.
🎯 Итог:
time.perf_counter() — самый простой способ быстро понять, где код тормозит, без сторонних библиотек и сложных инструментов.
Мессенджер MAX теперь полностью совместим с ОС Аврора отечественной разработки. Это отличная новость для тех, кому не обойтись без смартфонов и планшетов с Авророй на своей работе — сотрудников РЖД, Аэрофлота, Интер РАО, Ростелеком и Почты России. Речь о сотнях тысяч пользователей.
Можно смело констатировать: MAX стал ещё доступнее. Хотя нельзя сказать, что национальный мессенджер испытывает дефицит новых пользователей. В ноябре общее число зарегистрированных номеров в MAX превысило 55 млн.
Можно смело констатировать: MAX стал ещё доступнее. Хотя нельзя сказать, что национальный мессенджер испытывает дефицит новых пользователей. В ноябре общее число зарегистрированных номеров в MAX превысило 55 млн.
Удобный вывод SQL-запросов прямо в консоль с форматированием
Когда вы работаете с SQLAlchemy, отладка запросов иногда превращается в хаос — SQL выводится без форматирования, читать трудно, ошибки искать ещё труднее. Python позволяет быстро превратить любой запрос в читабельный SQL с подставленными параметрами.
🎯 Итог:
Этот приём позволяет видеть SQL-запросы в чистом виде, как в DBeaver, и экономит массу времени при отладке и оптимизации.
Когда вы работаете с SQLAlchemy, отладка запросов иногда превращается в хаос — SQL выводится без форматирования, читать трудно, ошибки искать ещё труднее. Python позволяет быстро превратить любой запрос в читабельный SQL с подставленными параметрами.
🎯 Итог:
Этот приём позволяет видеть SQL-запросы в чистом виде, как в DBeaver, и экономит массу времени при отладке и оптимизации.
Быстрое измерение времени выполнения кода без time и декораторов
Иногда нужно прикинуть, сколько реально занимает выполнение фрагмента кода — но не хочется подключать сложные профилировщики. Python даёт простой и элегантный способ измерить время прямо “на лету” с помощью time.perf_counter().
🎯 Итог:
Этот метод позволяет замерять время выполнения любых операций в одном месте, без декораторов и внешних библиотек, и идеально подходит для быстрой диагностики производительности.
Иногда нужно прикинуть, сколько реально занимает выполнение фрагмента кода — но не хочется подключать сложные профилировщики. Python даёт простой и элегантный способ измерить время прямо “на лету” с помощью time.perf_counter().
🎯 Итог:
Этот метод позволяет замерять время выполнения любых операций в одном месте, без декораторов и внешних библиотек, и идеально подходит для быстрой диагностики производительности.
Как красиво логировать объекты без ручного форматирования
Когда нужно записать в лог сложный объект (например, dict с вложенными структурами), обычный print() делает кашу. А logging без форматирования выглядит громоздко. Есть быстрый способ — использовать pprint прямо внутри логирования.
Хотите логировать сложные структуры красиво и читаемо, но не хотите вручную форматировать JSON или писать многострочные print(). Используйте pprint.pformat() — он превращает объект в красиво отформатированную строку, которая идеально ложится в лог.
Когда нужно записать в лог сложный объект (например, dict с вложенными структурами), обычный print() делает кашу. А logging без форматирования выглядит громоздко. Есть быстрый способ — использовать pprint прямо внутри логирования.
Хотите логировать сложные структуры красиво и читаемо, но не хотите вручную форматировать JSON или писать многострочные print(). Используйте pprint.pformat() — он превращает объект в красиво отформатированную строку, которая идеально ложится в лог.
Получаем значения из словаря без KeyError
Новички часто сталкиваются с ошибкой KeyError, когда ключа в словаре нет. Вместо проверки через if можно использовать встроенный и безопасный способ.
Используй метод dict.get() — он возвращает значение по ключу или None (или значение по умолчанию), если ключ отсутствует.
🎯 Итог:
dict.get() делает код короче, безопаснее и избавляет от лишних проверок на существование ключей.
Новички часто сталкиваются с ошибкой KeyError, когда ключа в словаре нет. Вместо проверки через if можно использовать встроенный и безопасный способ.
Используй метод dict.get() — он возвращает значение по ключу или None (или значение по умолчанию), если ключ отсутствует.
🎯 Итог:
dict.get() делает код короче, безопаснее и избавляет от лишних проверок на существование ключей.
Аккуратно игнорируем ошибки без try/except
Иногда ошибка — это нормальное поведение программы. Например, файл может не существовать, ключ в кеше — отсутствовать, а удаление временного ресурса — падать. Новички обычно оборачивают такие места в громоздкий try/except, из-за чего код становится шумным и хуже читается.
В Python есть элегантное решение — contextlib.suppress. Он позволяет явно указать, какие исключения нужно проигнорировать, не скрывая логику и не перехватывая всё подряд.
🎯 Итог:
contextlib.suppress делает код чище и честнее: вы явно показываете, какую ошибку считаете допустимой, без лишнего try/except и хака с pass.
Иногда ошибка — это нормальное поведение программы. Например, файл может не существовать, ключ в кеше — отсутствовать, а удаление временного ресурса — падать. Новички обычно оборачивают такие места в громоздкий try/except, из-за чего код становится шумным и хуже читается.
В Python есть элегантное решение — contextlib.suppress. Он позволяет явно указать, какие исключения нужно проигнорировать, не скрывая логику и не перехватывая всё подряд.
🎯 Итог:
contextlib.suppress делает код чище и честнее: вы явно показываете, какую ошибку считаете допустимой, без лишнего try/except и хака с pass.