39269
Все самое полезное для питониста в одном канале. Список наших каналов: https://t.me/proglibrary/9197 Курс по ML: https://cl Для обратной связи: @proglibrary_feeedback_bot По рекламе: @proglib_adv РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
🐍 В Python может появиться `!p` для красивого вывода объектов (PEP 813)
В Python хотят добавить новый форматтер !p для pretty print прямо в f-string.
Сейчас:
print(data)
dict, JSON или сложный объект.
print(f"{data!p}")
pprint.pformat().pprint ради дебага.__pprint__()
__pprint__()
repr() часто выглядит странно или перегруженно.__pprint__() можно явно указать:
print(variable)
!p превращает вывод в человекочитаемый формат — прямо внутри f-string.
✔️ Основные концепции ООП: простыми словами и с понятными примерами
Многие заучивают термины, но не понимают, как это выглядит в реальном коде.
Разбираемся без сложной теории.
1️⃣ Инкапсуляция
Скрывайте внутренние данные за публичными методами.
Идея простая: объект сам контролирует, как с ним взаимодействуют.
Например, банковский аккаунт хранит баланс и PIN «внутри себя». Изменить баланс напрямую нельзя — только через специальные методы пополнения или списания.
Так код становится безопаснее: никто случайно не сломает внутреннюю логику.
2️⃣ Абстракция
Давайте простой интерфейс, скрывая сложность внутри.
Пользователю класса не обязательно знать, как всё устроено — важно понимать, как этим пользоваться.
Например, сервис отправки писем может внутри управлять подключением, авторизацией, повторными попытками и обработкой ошибок.
Но для разработчика всё сводится к одному действию: «отправить письмо».
Сложность скрыта — интерфейс остаётся простым.
3️⃣ Наследование
Переиспользуйте общую логику и расширяйте поведение.
Вместо копирования кода можно вынести общую логику в базовый класс.
Например, есть общий класс «Животное». У всех животных может быть одинаковая структура, но каждое из них издаёт свой звук.
Собака — лает, кошка — мяукает.
Общее поведение хранится в одном месте, а различия переопределяются.
4️⃣ Полиморфизм
Один интерфейс — много реализаций.
Код может одинаково работать с разными объектами.
Например, есть разные фигуры: круг, квадрат, треугольник.
У каждой фигуры свой способ отрисовки, но внешний код работает с ними одинаково — просто вызывает действие «нарисовать».
Не важно, что именно передали — важна общая договорённость.
Какая концепция ООП в своё время казалась вам самой непонятной? 👇
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
🔥 PyTorch 2.12: один из самых сильных релизов для performance
Команда PyTorch выкатила v2.12, а заметный шаг в сторону production ML и ускорения вычислений.
⚡ До 100× быстрее `linalg.eigh` на CUDA
Batched eigendecomposition теперь работает в разы быстрее благодаря новому backend selection через cuSolver. Для scientific computing и ML-задач это может превращать минуты вычислений в секунды.
🧠 Новый `torch.accelerator.Graph`
Появился единый API для graph capture/replay across hardware — CUDA, XPU и другие backends. Ещё один шаг к hardware-agnostic PyTorch.
🚀 Fused Adagrad optimizerAdagrad(fused=True) теперь выполняется в одном CUDA kernel — меньше overhead, быстрее обучение.
📦 Экспорт сильно сжатых моделейtorch.export теперь поддерживает Microscaling (MX) quantization, что важно для дешёвого inference и edge deployment LLM.
🎮 CUDA Graphs + control flowtorch.cond теперь можно запускать внутри CUDA Graphs — branching начинает жить прямо на GPU.
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
Talanto.work - сайт для всех, кто ищет работу в IT.
Мы спарсили за вас все возможные телеграм каналы и сайты с вакансиями исключительно из сферы IT.
Вам не нужно следить за тем, когда выходит вакансия и где, всё это уже сделано за вас.
Просто настройте фильтры у нас на сайте и получайте уведомления в телегу, как только вакансия вышла.
Например: все вакансии Python
На talanto.work собрано 28.000+ вакансий из разных .ru и иностранных сайтов: разработка, QA, аналитика, DevOps, продакт, дизайн, менеджмент и другие IT/Digital-направления.
Более 1700 вакансий за последний месяц из телеграм каналов.
Что еще есть на сайте:
🟠 Фильтры для нормального поиска
Можно искать по стеку, грейду, зарплате, стране, формату работы, релокации и типу занятости.
🟠 Разбор резюме
Загружаете CV и получаете конкретные рекомендации: что улучшить, какие навыки добавить, где слабая структура и что может мешать пройти ATS.
🟠Проверка соответствия вакансии и резюме
Рядом с вакансией всегда есть кнопочка узнать соответствие, насколько ваш профиль ей подходит. Сервис покажет процент совпадения, сильные стороны и пробелы в резюме
🟠Сопроводительное письмо за 10 секунд
Вставляете вакансию и получаете персональное письмо под конкретную компанию и роль, а не шаблон “прошу рассмотреть мою кандидатуру”.
🟠Уведомления в Telegram
Задаёте фильтры один раз и бот присылает новые подходящие вакансии прямо в Telegram.
Поиск работы в IT сейчас и так сложный. Мы хотим, чтобы вы тратили меньше времени на листание сайтов и больше на точные отклики туда, где у вас реально есть шанс.
✈️ 28.000+ вакансий
🟢Бот с уведомлениями о ваших вакансиях: @TalantoWorkBot
🟢Написать сопровод
🟢Разобрать резюме
🟢Проверить соответствие резюме вакансиям
Реклама. Киренкина Марина Дмитриевна, ИНН 345702417736. Erid 2VtzqvSFhV9
Библиотека питониста
#развлекалово
📘 Книга: Learn Algorithms Through Python
Визуальный гид по алгоритмам и структурам данных на Python.
Параллельно можно усилить базу через практику: онлайн-курс по математике для Data Science от Proglib Academy — 30 уроков с задачами, тестами и финальным проектом в портфолио, чтобы закрепить алгоритмы уже на прикладных кейсах.
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста
#буст
🔥 Знакомьтесь с экспертом Proglib.academy: Эмиль Сатаев
Эмиль — эксперт с 8-летним опытом в разработке, который специализируется на внедрении LLM и агентных подходов в реальные коммерческие сервисы. Он точно знает, как проектировать архитектуру так, чтобы ИИ-функции работали стабильно в связке с внешними системами.
🏃♀️ Уже 14 мая Эмиль проведет открытый вебинар!
Обсудим самую «больную» тему: «Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало».
🗓 Когда: 14 мая в 19:00 (Мск)
Почему Эмиля стоит послушать:
🟣 8+ лет в разработке (Backend и Frontend)
Прошел путь от фулстека до Backend Platform Developer в SMIT.Studio.
Работал исследователем в Институте ИИ НИУ ВШЭ и в Национальном университете Сингапура (NUS).
Ведет семинары в НИУ ВШЭ, в том числе по проектированию и разработке агентских систем.
Его главная суперсила — умение правильно встраивать LLM через API, выстраивать workflow и агентную логику в сложных распределенных системах.
📦 Dependency version pinning ≠ security patching
Интересный и важный разбор о том, как стоит (и не стоит) управлять версиями зависимостей в Python-проектах.
Если вы — разработчик библиотеки, то:
dependencies = [
"urllib3>=2",
]
"urllib3>=2.6.3"
Библиотека питониста
#развлекалово
🐍 Python Internals: в чём разница между `.__getitem__()`, `.__getattr__()`, `.__getattribute__()` и `.__get__()`
Если вы когда-либо работали с Python internals, создавали собственные классы, ORM, прокси-объекты, lazy loading или просто пытались понять, как работает доступ к атрибутам — этот разбор обязателен к прочтению.
На первый взгляд все эти dunder-методы выглядят одинаково: они что-то «получают» (`get`). Но в действительности каждый отвечает за отдельный механизм Python.
1️⃣ .__getitem__()
Этот метод вызывается, когда вы используете квадратные скобки:
obj[key]
obj.__getitem__(key)
.__getattribute__()
obj.attribute
obj.__getattribute__("attribute")
.__getattribute__() нужно крайне осторожно — легко сломать доступ ко всем атрибутам объекта..__getattr__()
obj.username
username не существует, Python попробует:
obj.__getattr__("username")
obj.name
obj["name"]
.__get__()
__get__()
@propertyclassmethodstaticmethod
obj.attribute
.__getattr__() как fallback
🗓 14 мая в 19:00 (Мск) встречаемся в онлайне.
Тема: Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало.
В кружке выше Эмиль Сатаев рассказал, какие именно проблемы с LLM в проде будем разбирать.
Что в программе:
- Разберем реальные кейсы стартапов и ограничения LLM.
- Обсудим рабочие архитектуры: RAG, human-in-the-loop, контроль качества.
- Ответим на ваши вопросы и разберем кейсы участников.
🐍 Состояние типизации в Django к 2026
Django появился за 10 лет до того, как в Python стандартизировали аннотации типов, поэтому подружить их — задача не из легких.
Вот краткий срез того, как обстоят дела сегодня:
1️⃣ Золотой стандарт: django-stubs + mypy
Если вам нужна максимальная точность, это ваш выбор. Пакет поставляется с плагином для mypy, который «разбирает» динамическую магию Django.
Минус: Это медленно. Очень. На больших проектах mypy может работать минуты, что делает его неудобным для использования прямо в редакторе кода. Часто его оставляют только для CI.
2️⃣ Быстрые альтернативы: Pyright, Ty, Pyrefly
Эти чекеры работают за секунды, но не поддерживают плагины mypy. Итог — куча ложных срабатываний (false positives).
Типичная ошибка: Чекер не видит поле .id или связанные имена (related names).
Лайфхак: Вместо .id используйте .pk — инструменты обычно понимают его лучше. Или же явно определяйте id = models.AutoField(primary_key=True) в модели.
3️⃣ Новый подход: Django-Mantle
Интересная библиотека, которая предлагает вообще не работать с динамическими типами моделей напрямую. Вместо этого вы описываете attrs`-классы и используете их как типизированные DTO для данных из БД. Если логика работает с `BookmarkAttrs, а не с Bookmark(models.Model), проблем с типами не будет.
4️⃣ Проблема версий
Сторонние библиотеки типов (django-stubs/django-types) часто отстают от релизов Django. Например, Django 6.0 вышла 3 месяца назад, а полной поддержки типов для неё всё ещё нет.
Хорошие новости: управляющий совет Django одобрил внедрение типов в само ядро фреймворка! Также есть надежда на PEP-0827, который может добавить в Python новые возможности для типизации динамических структур без специальных плагинов.
🔛 Полный пост
🛠 Шпаргалка по lambda-функциям в Python
lambda — это не «замена функций», а способ написать простую логику там, где она нужна.
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
🎤 Ваши знания по ИИ-агентам + наша аудитория в 1 млн человек = профит
Мы в Proglib активно качаем тему ИИ-агентов. Если вы в теме, то у нас есть предложение 👇
Что с нас?
- Огромный охват: пропиарим ваши соцсети и продукты на 1 000 000+ айтишников.
- Личный бренд: станете узнаваемым экспертом в самой горячей нише 2026 года.
- Никакой рутины: наши редакторы сами упакуют ваши мысли в крутые посты.
Что с вас?
Любой экспертный контент по ИИ-агентам: кейсы из прода, шпаргалки, статьи, наработки по стеку (LangGraph, CrewAI, AutoGen и др.) или просто мысли по архитектуре.
👉 Стать экспертом и заявить о себе
10 концепций Docker, которые должен освоить каждый разработчик
✔️ Образы — шаблоны только для чтения, используемые для создания контейнеров
✔️ Контейнеры — легковесные, изолированные среды для запуска приложений
✔️ Dockerfile — инструкции для сборки пользовательских образов
✔️ Docker Hub — реестр для хранения и обмена образами
✔️ Томы — сохраняют данные вне контейнеров
✔️ Сети — обеспечивают взаимодействие между контейнерами
✔️ Docker Compose — определяет и запускает приложения из нескольких контейнеров
✔️ Порты — открывают сервисы контейнеров для хоста
✔️ Слои — оптимизируют сборку образов и кэширование
✔️ Реестр — управляет и распространяет образы контейнеров
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих»
Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!
🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
🚀 FastAPI с нуля: за 5 минут до работающего API
FastAPI — один из самых быстрых Python-фреймворков для построения API. Автодокументация, типизация, async из коробки.
Поехали.
📦 Установка
pip install fastapi uvicorn
# main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"message": "Hello, World!"}
uvicorn main:app --reload
http://127.0.0.1:8000 — API уже отвечает.http://127.0.0.1:8000/docs — интерактивная Swagger-документация, сгенерирована автоматически.
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
email: str
@app.post("/users")
def create_user(user: User):
return {"created": user.name}
if not isinstance(...).
# /items/42
@app.get("/items/{item_id}")
def get_item(item_id: int, q: str = None):
return {"id": item_id, "query": q}
item_id — из URL, q — из query string (`?q=test`). Всё типизировано.
import asyncio
@app.get("/slow")
async def slow_endpoint():
await asyncio.sleep(1) # не блокирует сервер
return {"status": "done"}
async def когда делаете запросы к БД или внешним API — сервер продолжает обрабатывать другие запросы пока ждёт.
project/
├── main.py
├── routers/
│ ├── users.py
│ └── items.py
└── models/
└── schemas.py
from routers import users
app.include_router(users.router, prefix="/users")
GET / POST / PUT / DELETE эндпоинты/docs
🔐 secure: библиотека для тех, кто устал от copy-paste security headers
Если делаете backend на Python, то наверняка сталкивались с хаосом вокруг security headers:Content-Security-PolicyX-Frame-OptionsStrict-Transport-SecurityPermissions-Policy
Обычно это превращается в copy-paste по middleware, hooks и handlers.
secure предлагает более аккуратный подход — один объект политики безопасности для всего приложения.
Например, в FastAPI достаточно подключить middleware:
from fastapi import FastAPI
from secure import Secure
from secure.middleware import SecureASGIMiddleware
app = FastAPI()
secure_headers = Secure.with_default_headers()
app.add_middleware(
SecureASGIMiddleware,
secure=secure_headers
)
🗓 Уже через пару часов стартует вебинар!
Тема:
Почему AI-продукты на базе LLM ломаются и как сделать, чтобы работало
🧠 Pyrefly v1.0: быстрый type checker для Python вышел в stable
Pyrefly официально достиг версии 1.0 и готов к production.
Что изменилось
⚡ Производительность
• до 125× быстрее обновление diagnostics после сохранения файла
• на 20–36% быстрее полная проверка больших проектов (PyTorch, Pandas)
• 2–3× быстрее индексация проекта
• до 60% меньше памяти
🛠 Новые пресеты конфигурации
Появились режимы basic, strict, legacy (для миграции с mypy) и другие — можно быстро настроить уровень строгости без ручной конфигурации.
🧩 Лучше понимает реальный Python
Меньше false positive, улучшена работа с:
* dataclasses
* enums
* ParamSpec
* overloads
* type narrowing
📓 Поддержка экосистемы
Лучше работает с Django, Pydantic, Pytest и теперь полноценно поддерживает Jupyter notebooks (.ipynb) — почти как обычные .py файлы.
🤖 Что дальше
Команда делает ставку на AI-агентов и экспериментальную проверку tensor shapes в PyTorch.
🔗 Ссылка на релиз
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
🧠 MCP на Python: самый простой пример
LLM сама по себе не умеет работать с реальным миром. Она не знает время, дату и не может выполнять код — только генерирует текст.
MCP (Model Context Protocol) решает это, добавляя модели внешние инструменты на Python.
В примере из статьи:
🕒 функция get_current_time() — возвращает текущее время
📅 функция get_current_date() — возвращает текущую дату
🤖 модель через Ollama (llama3.2) может вызывать их по необходимости
Запрос пользователя → модель понимает, нужен ли инструмент → вызывает Python-функцию через MCP → получает результат → формирует ответ
Пример:
«Сколько сейчас времени?»
→ модель вызывает get_current_time()
→ получает 10:35:15
→ отвечает уже человеческим текстом
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста
#буст
🚨 Django выпустил срочные security-обновления: 6.0.5 и 5.2.14
Команда Django выпустила новые патч-релизы Django 6.0.5 и Django 5.2.14, закрывающие сразу 3 уязвимости безопасности.
🔹 CVE-2026-5766 — DoS через загрузку файлов в ASGI
Обнаружена возможность обхода лимита FILE_UPLOAD_MAX_MEMORY_SIZE в ASGI-запросах при некорректном или заниженном Content-Length.
Злоумышленник потенциально мог отправить слишком большой файл, который попадал в память сервера, вызывая деградацию сервиса или проблемы с производительностью.
Важно: Django напоминает, что ограничение загрузки файлов нужно настраивать не только в Django, но и на уровне веб-сервера (Nginx, Apache, reverse proxy).
🔹 CVE-2026-35192 — Session Fixation через кешируемые страницы
Проблема затрагивает проекты, где включён:
SESSION_SAVE_EVERY_REQUEST = True
UpdateCacheMiddleware могла привести к тому, что запросы с заголовком:
Vary: *
Это очень полезный репозиторий с 300+ инженерными статьями от крупных tech-компаний про реальные проблемы масштабирования.
Но читать всё подряд не стоит — лучше по темам. Для старта:
— Netflix / Uber / Slack / Stripe — архитектура и масштабирование,
— Figma / DoorDash / GitHub — поиск и производительность,
— Meta / LinkedIn / Netflix — ML-системы.
Минус: часть статей — немного «инженерный маркетинг», а не чистая практика. Но как источник реальных кейсов — очень сильная подборка.
🔗 Ссылка на ресурс
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека дата-сайентиста
#буст
🔥 Python 3.14.5 Release Candidate уже доступен — и есть важные изменения
Команда Python выпустила Python 3.14.5rc1 — release candidate пятого maintenance-релиза ветки 3.14. Обновление включает 113+ исправлений багов, улучшений сборки и документации.
Но самое интересное — изменение в работе Garbage Collector (GC).
🔥 Что изменилось
Инкрементальный garbage collector, который использовался в Python 3.14.0–3.14.4, откатили обратно к генерационному GC из Python 3.13.
Причина — многочисленные сообщения о повышенном потреблении памяти в production-средах.
Это важный сигнал для backend-разработчиков, ML/DS-команд и тех, кто запускает Python-сервисы под высокой нагрузкой: изменения в memory management могут существенно влиять на стабильность и стоимость инфраструктуры.
🚀 Ключевые возможности Python 3.14
Ветка 3.14 получила действительно крупные изменения:
✅ PEP 779 — Free-threaded Python
Официальная поддержка Python без GIL — большой шаг к настоящему multi-threading.
✅ PEP 649 — Deferred evaluation of annotations
Аннотации теперь вычисляются лениво, улучшая typing semantics.
✅ PEP 750 — Template strings (t-strings)
Новый механизм кастомной обработки строк, похожий на f-strings.
✅ PEP 734 — Multiple interpreters
Несколько интерпретаторов прямо в standard library.
✅ PEP 784 — `compression.zstd`
Поддержка алгоритма сжатия Zstandard в stdlib.
✅ Experimental JIT Compiler
Для macOS и Windows доступен экспериментальный JIT.
✅ Remote attach в `pdb`
Теперь debugger может подключаться к уже запущенному Python process.
✅ UUID v6–v8
Новые версии UUID и ускоренная генерация старых.
✅ Улучшенные error messages
✅ Цветной CLI для argparse, json, calendar, unittest
✅ Новый интерфейс для инспекции running Python processes
Это preview release, поэтому использовать в production пока не рекомендуется.
🖥 Подробнее
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
🐍 Python Tutorial: практическое руководство по изучению Python
Этот туториал поможет освоить язык от базовых концепций до более продвинутых тем — с примерами, объяснениями и практическим подходом.
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
⚠️ Небольшой совет по Python: как настроить поведение списка
Класс Python UserList из модуля collections используется для создания пользовательских объектов, похожих на списки, с настраиваемым поведением. Он служит базовым классом, от которого можно наследоваться, если вы хотите создать собственные структуры данных, работающие как списки, но с дополнительными методами и особенностями.
Предположим, вы хотите создать список с изменённым методом append(), который разрешает добавлять только чётные числа. Код ниже показывает, как это можно реализовать с помощью UserList.
В этом примере метод append() переопределён так, чтобы в список можно было добавлять только чётные числа. Если передаётся нечётное число, выводится сообщение о том, что нечётные числа не разрешены. Метод sort() также переопределён — теперь список всегда сортируется в обратном порядке.
Когда объект obj вызывается с аргументом 3, который является нечётным числом, выводится сообщение "Non-even numbers not allowed" («Нечётные числа не допускаются»), а список остаётся без изменений.
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
🐍 Селф-хостинг для разработчика: дорожная карта цифрового суверенитета в 2026 году
Селф-хостинг сегодня — это прагматичный контроль над своими данными.
Вот как питонисту перехватить рычаги управления:
🛡 Инструментарий: YAML вместо Bash-скриптов
Забудьте про настройку Linux-сервисов. Если приложение не запускается в Docker, оно не стоит вашего времени.
Docker Compose стал универсальным языком: 15 строк YAML-конфига заменяют часы копания в systemd и init`-скриптах. Для Python-разработчика это так же естественно, как `requirements.txt.
🛡 Безопасность без дыр в роутере
Используйте Tailscale. Он создает зашифрованную Mesh-сеть (VPN) между вашими устройствами, используя WireGuard. Вы получаете доступ к домашнему серверу из любой точки мира, не подставляя его под атаки ботнетов.
🛡 ZFS: Снапшоты как страховка от «кривых» апдейтов
Файловая система ZFS позволяет делать мгновенные снимки (снапшоты) перед любым рискованным действием. Если миграция пошла не так — откат до рабочего состояния занимает секунды.
🛡 ИИ — ваш личный DevOps на аутсорсе
Инструменты вроде Codex или Claude Code радикально снижают порог входа в системное администрирование. Они могут не только писать скрипты для бэкапов, но и диагностировать «железные» проблемы (например, умирающий SSD) по косвенным признакам задержек записи ещё до того, как сработает SMART.
С чего начать:
1. Immich — мощная замена Google Photos с AI-распознаванием лиц, работающая на вашем железе.
2. AdGuard Home / Pi-hole — блокировка рекламы и трекинга на уровне DNS для всех устройств в доме (включая ТВ и мобильные игры).
3. Home Assistant — объединение всех «умных» устройств в одну локальную сеть без зависимости от вендорских облаков.
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
Шпаргалка по uv: 40+ команд, которые реально пригодятся
Удобную шпаргалка с командами, которые закрывают почти весь повседневный workflow:
— создание проектов
— управление зависимостями
— работа с версиями Python
— запуск скриптов и инструментов
— жизненный цикл проекта
— миграция с привычного pip-подхода
— обновление и настройка самого uv
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
📘 Книга: структуры данных на Python
Обратите внимание на A First Course on Data Structures in Python. Это не перегруженный академический учебник и не набор задач ради задач.
Книга аккуратно проводит от базовых структур к более сложным, объясняя не только как, но и почему это работает именно так.
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст
🚀 Как собрать идеальную Python-библиотеку в 2026 году
Вот краткий чек-лист:
🔹 Основа — uv от Astral. В 2026 году uv стал «позвоночником» разработки, объединяя в себе управление зависимостями, сборку и публикацию.
🔹 Структура и метаданные. Используйте стандартную структуру с папкой src/ и обязательно заполняйте pyproject.toml. Для названий пакетов лучше всего подходит lower-skewer-case.
🔹 Качество кода превыше всего:
— Линтинг и форматирование: Используйте ruff — он заменяет сразу несколько старых инструментов и работает молниеносно.
— Типизация: В 2026 году библиотека не может считаться качественной без аннотаций типов. Для проверки используйте mypy или pyright.
— Тесты: Золотой стандарт — pytest. Важно тестировать библиотеку на всех поддерживаемых версиях Python, что легко делается через uv --python.
🔹 Автоматизация (DX):
— Настройте pre-commit хуки, чтобы ошибки линтинга не попадали в репозиторий.
— Используйте CI/CD (GitHub Actions или альтернативы вроде Codeberg) для проверки кода перед каждым релизом.
🔗 Полная статья
📍 Навигация: Вакансии • Задачи • Собесы
Библиотека питониста
#буст