🔥 Холивар: обратная связь после собеса — обязательна или «идите лесом»
В последнее время всё чаще появляются кандидаты, которые требуют расширенную обратную связь после интервью. Кто-то даже предъявляет претензии в ответ на отказ — «я же дошёл до финала, где мой оффер?!» Один умудрился пригрозить судом, аргументируя это тем, что раз прошёл два тура, значит имел право на трудоустройство. Эйчары в шоке.
🈁 Одни говорят: «Мы потратили своё время — вы обязаны объяснить, почему отказали!»
🈁 Другие: «Это не университет, чтобы каждому ставить рецензию. Не подошёл — до свидания.»
🈁 А третьи: «Если нет фидбэка — вы токсичная компания, и точка.»
Голос народа: вам вообще нужна обратная связь после собеса:
❤️ — Да, и желательно максимально подробная
👍 — Краткая: причины отказа, без воды
🔥 — Нет, это лишнее и бесполезно
😆 — Не нужна, но хоть будьте вежливы
👇 Пишите в комментарии — интересно, кто на чьей стороне.
Библиотека питониста #междусобойчик
В последнее время всё чаще появляются кандидаты, которые требуют расширенную обратную связь после интервью. Кто-то даже предъявляет претензии в ответ на отказ — «я же дошёл до финала, где мой оффер?!» Один умудрился пригрозить судом, аргументируя это тем, что раз прошёл два тура, значит имел право на трудоустройство. Эйчары в шоке.
Голос народа: вам вообще нужна обратная связь после собеса:
❤️ — Да, и желательно максимально подробная
👍 — Краткая: причины отказа, без воды
🔥 — Нет, это лишнее и бесполезно
😆 — Не нужна, но хоть будьте вежливы
Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍79❤26😁5🔥4
🤔 «Начни сразу с нейросетей — зачем тебе логрегрессия?»
Это один из худших советов для начинающего ML-разработчика. Зрелость — это понимать, где простого достаточно, а не тянуть трансформеры на любую задачу из-за хайпа.
Классика ML — это не допотопная теория, а база (bias/variance, деревья, метрики), без которой не понять Deep Learning.
⚡️ Хотите освоить этот фундамент на реальных задачах? Приходите на наш курс по классическому ML. Только хардкор, только продовые задачи!
📆 Старт — 12 августа.
Для первых 10 участников бонус — специальный лонгрид по теме курса, чтобы вы могли начать разбираться уже сейчас.
🎁 Последний день промокодаEarlybird на скидку 10.000₽.
👉 Не упустите шанс!
Это один из худших советов для начинающего ML-разработчика. Зрелость — это понимать, где простого достаточно, а не тянуть трансформеры на любую задачу из-за хайпа.
Классика ML — это не допотопная теория, а база (bias/variance, деревья, метрики), без которой не понять Deep Learning.
⚡️ Хотите освоить этот фундамент на реальных задачах? Приходите на наш курс по классическому ML. Только хардкор, только продовые задачи!
📆 Старт — 12 августа.
Для первых 10 участников бонус — специальный лонгрид по теме курса, чтобы вы могли начать разбираться уже сейчас.
🎁 Последний день промокода
👉 Не упустите шанс!
🥱3❤2
📚Напоминаем про наш полный курс «Самоучитель по 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
Мы написали и собрали для вас в одну подборку все 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
🔥14🤩4👍2
Это первый релиз-кандидат Python 3.14 — значит, API уже стабильно, а до финального релиза будут приниматься только чёткие багфиксы.
Главное из нового релиза:
— PEP 779: официальная поддержка free-threaded Python
— PEP 649: отложенная оценка аннотаций типов
— PEP 750: template-строки — как f-строки, но кастомные
— PEP 734: несколько интерпретаторов в стандартной библиотеке
— PEP 784: поддержка Zstandard (модуль
compression.zstd
)— PEP 765: запрет
return
, break
, continue
вне finally
— Улучшенная C API конфигурация (PEP 741)
— Экспериментальный интерпретатор с заметным ускорением
— Новый CLI-инструмент для асинхронной инспекции Python-процессов
🔗 Подробнее
Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤4⚡2❤🔥1
— Textual 5.0.0 — мощный фреймворк для создания TUI-интерфейсов (современные терминальные GUI).
— huggingface\_hub 0.34.0 — обновлённый клиент для загрузки/публикации моделей, датасетов и скриптов на huggingface.co.
— vLLM 0.10.0 — высокопроизводительный движок инференса для LLM с оптимизированным потреблением памяти.
— line_profiler 5.0.0 — построчный профилировщик Python-кода, полезен при оптимизации.
— CrewAI 0.150.0 — координация нескольких AI-агентов, работающих в команде над задачами.
— JAX 0.7.0 — дифференцируемый и компилируемый NumPy, мощный инструмент для научных вычислений.
— Kedro 1.0.0 — первая стабильная версия фреймворка для создания аналитических пайплайнов.
— Logfire 4.0.0 — продвинутый инструмент для логирования и наблюдаемости.
— Feast 0.51.0 — SDK для фича-сторов в ML-пайплайнах.
— timezonefinder 7.0.0 — оффлайн-определение часового пояса по координатам.
— GeoAlchemy2 0.18.0 — работа с пространственными БД через SQLAlchemy.
🔥 Опыт других
— Решил перейти на Python — история миграции с другого языка и чем Python оказался удобен.
— Современный GUI для yt-dlp на Python — как сделать кроссплатформенное приложение на Python и не страдать.
— Резервное копирование на Python — сценарии, пайпы и немного хардкора.
— Фундаментальные шаблоны проектирования на Python — чит-карта по важнейшим паттернам.
Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2🔥1
Forwarded from Библиотека задач по Data Science | тесты, код, задания
👍7🔥3❤1
🐍 Remote Debugging в Python 3.14
С Python 3.14 вы можете подключиться к работающему Python-процессу с помощью команды:
Да, теперь
Пример:
1. У вас работает программа
2. В другом терминале вы запускаете:
Скрипт
Важно:
— Скрипт исполняется в контексте текущего потока в целевом процессе (не параллельно).
— Запуск произойдёт при следующем «возврате» в Python-интерпретатор (например, после
— Это не блокирует процесс (в отличие от
Потенциальные применения:
— Инспекция состояния и переменных на лету.
— Безопасный дамп состояния в проде (если действовать аккуратно).
— Запуск
Библиотека питониста #свежак
С Python 3.14 вы можете подключиться к работающему Python-процессу с помощью команды:
python -m pdb -p <pid>
Да, теперь
pdb
поддерживает удалённую отладку без необходимости заранее вставлять pdb.set_trace()
в код. Это стало возможно благодаря новой функции sys.remote_exec()
— она позволяет выполнить произвольный Python-скрипт в другом процессе по его PID.Пример:
1. У вас работает программа
hello.py
, которая принимает числа и считает сумму.2. В другом терминале вы запускаете:
import sys
sys.remote_exec(95700, "remote-script.py")
Скрипт
remote-script.py
может, например, вывести stack trace:print("Hello from remote script")
from traceback import print_stack
print_stack()
Важно:
— Скрипт исполняется в контексте текущего потока в целевом процессе (не параллельно).
— Запуск произойдёт при следующем «возврате» в Python-интерпретатор (например, после
input()
или окончания sleep()
).— Это не блокирует процесс (в отличие от
pdb -p pid
, который приостанавливает выполнение).Потенциальные применения:
— Инспекция состояния и переменных на лету.
— Безопасный дамп состояния в проде (если действовать аккуратно).
— Запуск
remote_pdb.set_trace()
для интерактивной отладки по сети.Библиотека питониста #свежак
👍13❤4🔥2⚡1
Senior Python Developer — 220 000 ₽, удалёнка
Senior Backend Developer (Python) — от 250 000 ₽, удалёнка
Backend Tech Lead — от 400 000 ₽, удалёнка
Python Developer — от 220 000 ₽, удалёнка
Python-разработчик (IDP) — от 250 000 до 450 000 ₽, гибрид
Библиотека питониста
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9❤3🤩1
Если вы всё ещё не проверяете покрытие тестами — самое время начать. Вот пара свежих примеров, почему это важно.
Пример 1: два одинаковых теста — но один не выполняется:
def test_get_install_to_run_with_platform(patched_installs):
i = installs.get_install_to_run("<none>", None, "1.0-32")
assert i["id"] == "PythonCore-1.0-32"
...
def test_get_install_to_run_with_platform(patched_installs): # дублирующее имя
i = installs.get_install_to_run("<none>", None, "1.0-32", windowed=True)
assert i["id"] == "PythonCore-1.0-32"
...
Копировали тест и забыли переименовать? Первый просто не запускается — и вы даже не заметите без отчёта по покрытию. В отчёте будет видно: тест написан, но не выполнялся.
coverage
— баги в тестах могут так и остаться незамеченными.💡 Подсказка: это также ловит ruff F811 и легко решается через
@pytest.mark.parametrize
.Пример 2: генератор в тесте, который не сработал:
im = Image.new("RGB", (1, 1))
for colors in (("#f00",), ("#f00", "#0f0")):
append_images = (Image.new("RGB", (1, 1), color) for color in colors)
im_reloaded = roundtrip(im, save_all=True, append_images=append_images)
assert_image_equal(im, im_reloaded)
assert isinstance(im_reloaded, MpoImagePlugin.MpoImageFile)
assert im_reloaded.mpinfo is not None
assert im_reloaded.mpinfo[45056] == b"0100"
for im_expected in append_images:
im_reloaded.seek(im_reloaded.tell() + 1)
assert_image_similar(im_reloaded, im_expected, 1)
Генератор был уже использован внутри
roundtrip()
, и цикл не выполняется — тест пропускается.coverage
— даже не заметите.list(...)
.coverage run -m pytest && coverage report
.Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4🔥4
Последний шанс залутать курсы Proglib Academy с выгодой 40% и пожизненным доступом.
До 1 августа действует скидка на курсы по математике для Data Science, алгоритмам и структурам данных, обновлённому Python, frontend-разработке с нуля, основам IT для непрограммистов, базовым моделям ML, а также архитектурам и шаблонам проектирования.
Выбираем и забираем 👈
P.S. Акция не распространяется на курсы «AI-агенты для DS-специалистов» и «ML для старта в Data Science».
До 1 августа действует скидка на курсы по математике для Data Science, алгоритмам и структурам данных, обновлённому Python, frontend-разработке с нуля, основам IT для непрограммистов, базовым моделям ML, а также архитектурам и шаблонам проектирования.
Выбираем и забираем 👈
P.S. Акция не распространяется на курсы «AI-агенты для DS-специалистов» и «ML для старта в Data Science».
😁2👍1
📦 Delivery Manager: кто это и зачем нужен в разработке
В каждой уважающей себя IT-компании есть эта роль — Delivery Manager. Но многие до конца не понимают, чем он занимается: менеджер? Техлид? Или настоящий волшебник?
Давайте разберёмся, кто такие деливери-менеджеры и почему без них современная разработка быстро превращается в хаос.
👉 Хотите узнать больше? Читайте нашу статью: https://proglib.io/sh/9qwbeKQ0dV
В каждой уважающей себя IT-компании есть эта роль — Delivery Manager. Но многие до конца не понимают, чем он занимается: менеджер? Техлид? Или настоящий волшебник?
Давайте разберёмся, кто такие деливери-менеджеры и почему без них современная разработка быстро превращается в хаос.
👉 Хотите узнать больше? Читайте нашу статью: https://proglib.io/sh/9qwbeKQ0dV
😁6🔥3👍2
Иногда код выглядит идеально — тесты проходят, багов нет, но поведение не соответствует тому, что действительно нужно бизнесу. Особенно если требования меняются или слабо зафиксированы.
Промпт:
Проверь, соответствует ли данный Python-код заданной бизнес-логике:
\[опишите свою бизнес-логику]
Найди расхождения и предложи, как это исправить.
Такой промпт можно использовать, чтобы:
— проверить legacy-код после изменений требований;
— убедиться, что новые разработчики поняли задачу правильно;
— использовать ИИ как «второго аналитика» на проекте.
Пример использования:
Бизнес-логика: если пользователь совершил покупку более чем на 10 000₽ за месяц, ему нужно выдать скидку 5%.
Проверь, что код корректно применяет скидку только в этих случаях.
Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7😁6❤2
atexit
для безопасного завершения Python-приложенийКогда вы работаете с сетевыми приложениями, важно не просто обрабатывать данные, но и корректно завершать работу сервера: сохранять остатки в памяти, закрывать соединения, выгружать данные.
atexit
. Он позволяет регистрировать функции, которые автоматически выполняются при нормальном завершении Python-программы.Это полезно, если нужно:
— Сохранить кэш
— Очистить ресурсы
— Завершить фоновые потоки
— Записать метрики или логи
atexit
не срабатывает при аварийном завершении (например, os._exit()
или падении интерпретатора). Для этого используйте signal
.atexit
Сервер:
— Получает UDP-пакеты с метриками от клиента
— Сохраняет данные в in-memory SQLite
— Использует
queue.Queue
и фоновый daemon
-поток для обработки данных— При завершении работы сохраняет все необработанные данные из очереди с помощью
atexit
Код:
import atexit
def shutdown_handler():
# Извлекаем всё из очереди
while not ingest_queue.empty():
buffer.append(ingest_queue.get())
# Сохраняем в БД
_persist_data(buffer, conn)
atexit.register(shutdown_handler)
Клиент:
— Отправляет случайные данные (температура, влажность, sensor\_id)
— Работает в бесконечном цикле
— Завершается по
Ctrl+C
Код:
while True:
data = {
"sensor_id": ...,
"temperature": ...,
...
}
client_socket.sendto(json.dumps(data).encode(), addr)
time.sleep(0.01)
В продакшн-сервисах вы не хотите терять данные, если:
— Процесс завершился вручную
— Контейнер Docker останавливается
— Система инициирует shutdown
— Используйте
atexit
для мягкой очистки: логов, файлов, очередей, соединений— Комбинируйте с
signal
, если важно обрабатывать SIGINT
, SIGTERM
— Даже небольшие скрипты выигрывают от аккуратного завершения
Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4🔥1😍1
На первый взгляд — крутой проект на GitHub, обещающий ускорение Python в десятки раз. По факту — странный бинарник без исходников, нереалистичные бенчмарки и токсичный автор, удаляющий комментарии.
🚩 Что должно вызывать тревогу
PyPI и GitHub больше не гарантируют безопасность
Теперь важен не только open source, но и open build chain:
— есть ли CI/CD?
— как собираются бинарники?
— воспроизводим ли релиз?
Как обезопасить себя:
— Не ставьте
pip install
с непроверенных проектов— Всегда читайте исходники перед установкой, особенно если есть нативный код
— Используйте виртуальные окружения или Docker для тестов
— Сканируйте зависимости через safety или pip-audit
А вы проверяете код, прежде чем ставить библиотеку с GitHub? Кто должен проверять (PyPI / GitHub или же пользователь)?
— ❤️ Всегда
— 😁 Только если мало звёзд
— 👍 Кто вообще так делает, просто pip install
Библиотека питониста #междусобойчик
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16😁6❤2
🛡 Runtypes — безопасная валидация структур в TypeScript
Когда вы получаете непроверенные данные (например, из JSON, API, локального хранилища), обычные типы TypeScript никак не защищают вас от ошибок времени выполнения.
😶🌫️ Runtypes позволяют валидировать такие данные на лету, описывая структуру через валидаторы, а не просто типы.
😶🌫️ Пример
Типы на TypeScript:
Валидация через Runtypes:
Проверка данных:
Если структура не соответствует ожидаемой:
— выбрасывается
— доступен объект
➡️ где именно ошибка
➡️ что ожидалось и что получено
➡️ можно использовать для i18n и UI
😶🌫️ Что поддерживает Runtypes
— Примитивы
— Объекты и массивы
— Кортежи
— Объединения (
— Пересечения (
— Пользовательские ограничения (например, длина массива)
— Валидация вложенных структур
😶🌫️ Когда пригодится
— Проверка данных из API, JSON, UI
— Сложная вложенная структура, которую нужно валидировать
— Автогенерация UI и ошибок
— Безопасность в рантайме (а не только на этапе компиляции)
🔗 GitHub: https://clc.to/H_xiTA
Библиотека питониста #буст
Когда вы получаете непроверенные данные (например, из JSON, API, локального хранилища), обычные типы TypeScript никак не защищают вас от ошибок времени выполнения.
Типы на TypeScript:
type Vector = [number, number, number]
type Planet = { type: "planet", location: Vector, mass: number, population: number, habitable: boolean }
Валидация через Runtypes:
import { Number, Boolean, Tuple, Literal, Object } from 'runtypes'
const Vector = Tuple(Number, Number, Number)
const Planet = Object({
type: Literal("planet"),
location: Vector,
mass: Number,
population: Number,
habitable: Boolean,
})
Проверка данных:
Planet.check(someValue) // выбросит ошибку, если структура не совпадает
Если структура не соответствует ожидаемой:
— выбрасывается
ValidationError
— доступен объект
failure
с подробностями:— Примитивы
— Объекты и массивы
— Кортежи
— Объединения (
Union
)— Пересечения (
Intersect
)— Пользовательские ограничения (например, длина массива)
— Валидация вложенных структур
— Проверка данных из API, JSON, UI
— Сложная вложенная структура, которую нужно валидировать
— Автогенерация UI и ошибок
— Безопасность в рантайме (а не только на этапе компиляции)
🔗 GitHub: https://clc.to/H_xiTA
Библиотека питониста #буст
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍2🔥1
💻 Вайб-кодинг: что это такое и как к нему относятся IT-специалисты и работодатели
97% разработчиков уже пробовали использовать ИИ для написания кода.
Но упрощает ли это работу — или мешает развитию? Как «код по вайбу» влияет на качество, обучение и доверие со стороны работодателей?
📝 В статье:
— Что такое вайб-кодинг
— Почему джунам проще, но опаснее
— Как компании смотрят на ИИ-помощников в коде
— Где грань между продуктивной автоматизацией и потерей контроля
📖 Читайте статью: https://proglib.io/sh/vtER5zUeOF
Библиотека питониста #буст
97% разработчиков уже пробовали использовать ИИ для написания кода.
Но упрощает ли это работу — или мешает развитию? Как «код по вайбу» влияет на качество, обучение и доверие со стороны работодателей?
📝 В статье:
— Что такое вайб-кодинг
— Почему джунам проще, но опаснее
— Как компании смотрят на ИИ-помощников в коде
— Где грань между продуктивной автоматизацией и потерей контроля
📖 Читайте статью: https://proglib.io/sh/vtER5zUeOF
Библиотека питониста #буст
😁8👍3❤2👏1
Почему и когда был создан язык программирования Python?
Anonymous Quiz
11%
В 1985 году для университетского проекта по искусственному интеллекту.
14%
В 1995 году как лёгкая альтернатива Java для мобильных приложений.
13%
В 1991 году для разработки серверного ПО по заказу правительства.
62%
В 1989 году, чтобы развлечься во время рождественских каникул и создать простой язык.
❤5👍5😁5
🚨 Важное
— Phishing-атака на PyPI-пользователей — если вы публиковали пакеты на PyPI и указали email в metadata, остерегайтесь писем с темой
"[PyPI] Email verification"
от [email protected]
(заметили подмену — pyp**j**
, а не pyp**i**
).📦 Новые и заметные релизы
— llama-index 0.13.0 — интерфейс между LLM и вашими данными
— pip 25.2.0 — свежий апдейт пакетного менеджера
— keras 3.11.0 — глубокое обучение
— flax 0.11.0 — нейросети на JAX
— docutils 0.22.0 — генерация документации из reStructuredText
— trl 0.20.0 — обучение трансформеров с подкреплением
— narwhals 2.0.0 — совместимость Pandas, Polars и других DataFrame
— autogen 0.7.1 — фреймворк для агентного ИИ
— sse-starlette 3.0.0 — поддержка Server-Sent Events в Starlette
— lightning-utilities 0.15.0 — полезности для экосистемы PyTorch Lightning
— optree 0.17.0 — утилиты для PyTree-структур
🔥 Опыт других
— Парсим Авито без ограничений — создание кастомного парсера
— Старая оптимизация больше не работает — как изменения в Python ломают старые подходы
Библиотека питониста #свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥2👍1