Когда выбирать typing.Protocol вместо ABC и какие есть ограничения?
Protocol — для структурной типизации («утиная» совместимость) без наследования: достаточно совпадения сигнатур. Работает на уровне тайпчекера; для рантайм-проверок нужен и только isinstance/issubclass. Не хранит состояние и не навязывает реализацию — идеален для плагинных интерфейсов.
Библиотека собеса по Python
@runtime_checkableБиблиотека собеса по Python
🌚1
Что такое old-style и new-style классы и в чем их различия?
— Old-style классы наследуются напрямую от класса type, тогда как new-style классы имеют наследование от класса object.
— New-style классы предлагают дополнительные функции, такие как дескрипторы, свойства и слоты, которые недоступны в old-style классах.
— В new-style классах метод __init__ вызывается при наследовании, в отличие от old-style классов.
— New-style классы являются предпочтительными, так как они полностью поддерживают принципы объектно-ориентированного программирования. Большинство библиотек требуют именно их использование.
Рекомендуется применять new-style классы, унаследованные от object, поскольку они обладают расширенными возможностями и лучше интегрируются с другими объектами.
Библиотека собеса по Python
— New-style классы предлагают дополнительные функции, такие как дескрипторы, свойства и слоты, которые недоступны в old-style классах.
— В new-style классах метод __init__ вызывается при наследовании, в отличие от old-style классов.
— New-style классы являются предпочтительными, так как они полностью поддерживают принципы объектно-ориентированного программирования. Большинство библиотек требуют именно их использование.
Рекомендуется применять new-style классы, унаследованные от object, поскольку они обладают расширенными возможностями и лучше интегрируются с другими объектами.
Библиотека собеса по Python
Почему многопоточность в Python не всегда ускоряет выполнение CPU-bound задач?
Из-за GIL одновременно выполняется только один поток байткода, поэтому для CPU-bound задач лучше использовать multiprocessing или выносить вычисления в нативный код.
Библиотека собеса по Python
Библиотека собеса по Python
This media is not supported in your browser
VIEW IN TELEGRAM
Тема: Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало.
В кружке выше Эмиль Сатаев рассказал, какие именно проблемы с LLM в проде будем разбирать.
Что в программе:
- Разберем реальные кейсы стартапов и ограничения LLM.
- Обсудим рабочие архитектуры: RAG, human-in-the-loop, контроль качества.
- Ответим на ваши вопросы и разберем кейсы участников.
🎁 Бонусы: в конце вебинара подарим промокод на скидку 10.000 ₽ на курсы и разыграем подписки на полезные AI-сервисы.
👉 Зарегистрироваться на вебинар
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое MQ?
MQ (Message Queue) — очередь сообщений, это паттерн asynchronous messaging, который позволяет обмениваться сообщениями между распределенными компонентами приложения.
Основные преимущества использования MQ:
Асинхронность — отправитель и получатель не зависят друг от друга.
Отказоустойчивость — сообщения не теряются при сбоях.
Масштабируемость — легко добавлять новых производителей и потребителей.
Сглаживание пиковой нагрузки — очередь позволяет буферизовать сообщения.
MQ широко используется для интеграции распределенных систем, построения микросервисных архитектур.
Популярные реализации MQ: RabbitMQ, Kafka, ActiveMQ.
Библиотека собеса по Python
MQ (Message Queue) — очередь сообщений, это паттерн asynchronous messaging, который позволяет обмениваться сообщениями между распределенными компонентами приложения.
Основные преимущества использования MQ:
Асинхронность — отправитель и получатель не зависят друг от друга.
Отказоустойчивость — сообщения не теряются при сбоях.
Масштабируемость — легко добавлять новых производителей и потребителей.
Сглаживание пиковой нагрузки — очередь позволяет буферизовать сообщения.
MQ широко используется для интеграции распределенных систем, построения микросервисных архитектур.
Популярные реализации MQ: RabbitMQ, Kafka, ActiveMQ.
Библиотека собеса по Python
👍3
Зачем нужен select_related и чем он отличается от prefetch_related в Django?
select_related делает SQL JOIN и грузит связанные объекты сразу.
prefetch_related делает отдельный запрос и связывает их в Python.
Первый — для ForeignKey/OneToOne, второй — для ManyToMany/Reverse FK.
Библиотека собеса по Python
prefetch_related делает отдельный запрос и связывает их в Python.
Первый — для ForeignKey/OneToOne, второй — для ManyToMany/Reverse FK.
Библиотека собеса по Python
👍2
🔥 Знакомьтесь с экспертом Proglib.academy: Эмиль Сатаев
Эмиль — эксперт с 8-летним опытом в разработке, который специализируется на внедрении LLM и агентных подходов в реальные коммерческие сервисы. Он точно знает, как проектировать архитектуру так, чтобы ИИ-функции работали стабильно в связке с внешними системами.
🏃♀️ Уже 14 мая Эмиль проведет открытый вебинар!
Обсудим самую «больную» тему: «Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало».
🗓 Когда: 14 мая в 19:00 (Мск)
Почему Эмиля стоит послушать:
🟣 8+ лет в разработке (Backend и Frontend)
🟣 Международный исследовательский опыт
🟣 Преподаватель-практик
🟣 Мастер интеграции AI в Backend
🔗 Зарегистрироваться на вебинар
Эмиль — эксперт с 8-летним опытом в разработке, который специализируется на внедрении LLM и агентных подходов в реальные коммерческие сервисы. Он точно знает, как проектировать архитектуру так, чтобы ИИ-функции работали стабильно в связке с внешними системами.
Обсудим самую «больную» тему: «Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало».
🗓 Когда: 14 мая в 19:00 (Мск)
Почему Эмиля стоит послушать:
Прошел путь от фулстека до Backend Platform Developer в SMIT.Studio.
Работал исследователем в Институте ИИ НИУ ВШЭ и в Национальном университете Сингапура (NUS).
Ведет семинары в НИУ ВШЭ, в том числе по проектированию и разработке агентских систем.
Его главная суперсила — умение правильно встраивать LLM через API, выстраивать workflow и агентную логику в сложных распределенных системах.
🔗 Зарегистрироваться на вебинар
Please open Telegram to view this post
VIEW IN TELEGRAM
Что делает функция statvfs?
Функция используется для получения информации о файловой системе, содержащей указанный путь. Она возвращает объект класса , атрибуты которого представляют информацию о файловой системе.
Библиотека собеса по Python
statvfs()os.statvfs_resultБиблиотека собеса по Python
Как делать атомарную запись и надёжную фиксацию файла при сбоях и конкурирующих записях?
Пишите во временный файл в том же каталоге, flush() → os.fsync(tmp) → os.replace(tmp, target) (атомарный rename), затем os.fsync(dir). Для множественных писателей используйте файловый lock (fcntl/msvcrt/portalocker) или координацию через очередь/БД; не перезаписывайте «на месте».
Библиотека собеса по Python
Библиотека собеса по Python
Как вы спроектируете высоконагруженный API на Django/DRF с P99 < 50 мс при 10k rps, строгой согласованностью кэша при записи и нулевым простоем при деплоях?
ASGI-стек (Uvicorn+Gunicorn), асинхронные вьюхи только для I/O; БД: pgbouncer, целевые индексы/covering, устранение N+1 (select_related/prefetch_related), атомарные операции через F() и при необходимости SELECT … FOR UPDATE, критичные места — raw SQL; чтение через реплики с роутерами, для ускорения — CQRS: read-модель (материализованные представления/Redis). Кэш как cache-aside в Redis с версионированием ключей; инвалидация не сигналами, а outbox-паттерном: запись события в таблицу → Celery-консюмер инвалидирует/перестраивает кэш; для публичных GET — ETag/Last-Modified и CDN. Миграции без простоя по схеме expand→migrate data→contract, индексы CONCURRENTLY, деплой blue/green; задачи — Celery/RQ, идемпотентность через ключи, ретраи с backoff. Наблюдаемость: APM, slow query log, профилинг N+1, метрики p95/p99; безопасность: строгие SECURE_*, CSRF, rate limiting в DRF/Reverse-proxy; логи — stdout.
Библиотека собеса по Python
Библиотека собеса по Python
Как настроить статические файлы в Django?
Убедитесь, что файл django.contrib.staticfiles добавлен в ваш INSTALLED_APPS.
В файле настроек определите STATIC_URL, например:
STATIC_URL = '/static/'
В шаблонах Django используйте статический тег шаблона для создания URL-адреса для заданного относительного пути с использованием настроенного STATICFILES_STORAGE.
{% load static %}
<img src="{% static 'my_sample/abcxy.jpg' %}" alt="ABC image">
Сохраните статические файлы в папке static в вашем приложении. Например, my_sample/static/my_sample/abcxy.jpg
Библиотека собеса по Python
В файле настроек определите STATIC_URL, например:
STATIC_URL = '/static/'
В шаблонах Django используйте статический тег шаблона для создания URL-адреса для заданного относительного пути с использованием настроенного STATICFILES_STORAGE.
{% load static %}
<img src="{% static 'my_sample/abcxy.jpg' %}" alt="ABC image">
Сохраните статические файлы в папке static в вашем приложении. Например, my_sample/static/my_sample/abcxy.jpg
Библиотека собеса по Python