52807
по всем вопросам @haarrp @itchannels_telegram - 🔥 best it channels @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - ml 📚 @pythonlbooks -📚books
🖊️ Google Research представила InkSight — систему, которая превращает сфотографанный рукописный текст в настоящие *цифровые рукописные данные*.
Что делает InkSight?
✨ Берёт фото тетрадей, заметок или документов и переводит их в «цифровое перо» - данные, которыми можно редактировать, искать, хранить.
🧠 Под капотом:
• Vision Transformer (ViT) + mT5
• Обучение на чтение и письмо одновременно
• Без специальных планшетов - работает с обычными фото
💡 Возможности:
✔ Обработка слов и целых страниц
✔ Работает с разными языками и стилями письма
✔ Корректно извлекает текст даже на шумном фоне
✔ Результат - редактируемый векторный «ink», а не просто картинка
То есть InkSight — мост между бумажной реальностью и цифровым миром: сделал фото заметок → получил полный цифровой текст, пригодный для поиска и редактирования.
🔗 В репозитории доступны веса модели, датасет и пример кода:
github.com/google-research/inksight
@pythonl
🖥 Малоизвестный факт о Python random.seed(), который может поломать ваш код
Документация создаёт впечатление, что любое целое число просто используется как seed (это “начальная точка” для генератора случайных чисел.).
Но Python перед использованием просто берёт абсолютное значение.
То есть:
➡️ seed(3) и seed(-3) - порождают один и тот же поток случайных чисел.
Это значит, что разные seed не всегда дают разные последовательности -
Python гарантирует только обратное: одинаковый seed → одинаковые числа.
Почему так?
В исходниках CPython есть строка, которая буквально делает: seed = abs(seed)
И знак просто теряется, хотя алгоритм случайных чисел мог бы учитывать его.
🧠 Вывод:
Не используйте небольшие вариации seed (например 5 и -5) как способ получить разные потоки случайностей — это небезопасно.
Если вам нужны независимые RNG — создавайте их явно, а не полагаясь на “умные” seed.
[1] https://docs.python.org/3/library/random.html
[2] https://github.com/python/cpython/blob/main/Modules/_randommodule.c#L321C13-L321C30
@pythonl
🐍⚙️ Продвинутый Python + Docker совет для production:
Используй multi-stage builds + wheels cache - это радикально уменьшает размер образа и ускоряет сборки.
В первом этапе собираешь wheels (компилируемые пакеты), а во втором — устанавливаешь их уже в чистый runtime-слой:
FROM python:3.12 AS builder
RUN pip install --upgrade pip
COPY requirements.txt .
RUN pip wheel --wheel-dir /wheels -r requirements.txt
FROM python:3.12-slim
COPY --from=builder /wheels /wheels
RUN pip install --no-index --find-links=/wheels -r /wheels/requirements.txt
COPY app/ /app
🖥 Как организовать архитектуру большого Python-проекта?
Разработка крупного Python-проекта требует продуманной архитектуры. Правильная структура кода упрощает развитие, тестирование и поддержку приложения.
В этой статье мы рассмотрим ключевые принципы архитектурной организации для разных типов проектов - веб-приложений, библиотек, микросервисов и систем обработки данных.
Обсудим разделение системы на слои (domain, service, infrastructure), использование популярных шаблонов проектирования (Dependency Injection, Repository, Facade), организацию кода по модулям и пакетам, примеры структуры каталогов, работу с зависимостями и конфигурацией (Pydantic, dotenv), логгирование и мониторинг, обеспечение тестируемости, поддержку расширяемости и модульности.
Также приведем примеры кода и структуры каталогов, а в конце – общие советы и распространенные ошибки, которых следует избегать.
https://uproger.com/kak-organizovat-arhitekturu-bolshogo-python-proekta/
@pythonl
🖥 Python: Почему твой asyncio-код тормозит и блокируется?
Чаще всего проблема не в самом asyncio, а в том, что внутри async-функций ты вызываешь блокирующий код. Например, time.sleep, requests.get, тяжёлые циклы с вычислениями или работа с диском без специальных обёрток. Такой вызов останавливает весь event loop, и остальные корутины тупо ждут.
Главное правило: внутри async-функций каждая долгая операция должна либо быть асинхронной (через await), либо вынесена в поток или процесс. Если в корутине нет нормальных await, она вообще не отдаёт управление циклу, и твой «асинхронный» код ведёт себя как обычный синхронный.
Используй:
- асинхронные библиотеки (aiohttp вместо requests и т.п.);
- asyncio.sleep вместо time.sleep;
- asyncio.to_thread или отдельный процесс для тяжёлых синхронных задач.
Как только уберёшь блокирующие вызовы из корутин, код перестанет «залипать» и начнёт реально работать параллельно по I/O.
import asyncio
import time
async def bad_task():
print("start bad")
time.sleep(2)
print("end bad")
async def good_task():
print("start good")
await asyncio.to_thread(time.sleep, 2)
print("end good")
async def main():
await asyncio.gather(bad_task(), good_task())
asyncio.run(main())
⚡️КАК СДЕЛАТЬ EXE ИЗ PYTHON САМЫМ ПРОСТЫМ СПОСОБОМ
Самый удобный способ собрать exe из Python это использовать PyInstaller. Он создаёт полноценный исполняемый файл который запускается без установленного Python. Работает на Windows, не требует сложной настройки и подходит для любых скриптов.
# Установка PyInstaller
pip install pyinstaller
# Создание exe (один файл)
pyinstaller --onefile your_script.py
# Готовый exe будет в папке dist
# Пример запуска
dist\your_script.exe
🔒🤖 IoTHackBot: Инструменты для тестирования безопасности IoT
IoTHackBot — это набор инструментов для тестирования безопасности IoT-устройств, включая IP-камеры и встроенные системы. Он предлагает как командные инструменты, так и AI-ассистированные рабочие процессы для автоматизированного обнаружения уязвимостей.
🚀Основные моменты:
- Сканирование устройств с помощью wsdiscovery и onvifscan
- Анализ сетевого трафика с iotnet
- Продвинутое извлечение файлов из прошивок с ffind
- Взаимодействие с консолью через picocom и telnetshell
- Поддержка автоматизации и интеграции инструментов
📌 GitHub: https://github.com/BrownFineSecurity/iothackbot
@pythonl
🖥 GitHub обновил Copilot - функция Next Edit Suggestions теперь понимает твои правки по шагам и предлагает логичные следующие изменения.
Что улучшили:
• Модель обучили на реальных сессиях редактирования, а не только на итоговом коде
• Задержка стала ниже - подсказки появляются почти мгновенно
• Предложения стали точнее и полезнее: фиксы, рефакторинг, дополнения, улучшение структуры
Как обучали:
1) Данных из pull-requests оказалось мало, там нет промежуточных правок
2) GitHub собрал датасет настоящих редакторских сессий — шаг за шагом
3) После дообучения модель улучшили через RL - отдельная модель оценивает, насколько полезна подсказка
Зачем это нужно:
Copilot теперь работает не как автодополнение, а как помощник по редактированию, он видит, что ты меняешь, понимает контекст и предсказывает твой следующий шаг. Это ускоряет работу и снижает количество ручных действий.
https://github.blog/ai-and-ml/github-copilot/evolving-github-copilots-next-edit-suggestions-through-custom-model-training/
@python
🎤 Быстрый текст-в-речь с Supertonic
Supertonic — это высокопроизводительная система текст-в-речь, работающая на вашем устройстве. Она обеспечивает молниеносное создание речи с минимальными затратами ресурсов и полным соблюдением конфиденциальности. Никаких облачных решений — всё происходит локально.
🚀Основные моменты:
- ⚡ Генерация речи до 167× быстрее реального времени
- 🪶 Легковесная архитектура с 66M параметрами
- 📱 Полная обработка на устройстве без задержек
- 🎨 Обработка сложных текстов без предварительной подготовки
- ⚙️ Гибкая настройка параметров и развертывания
📌 GitHub: https://github.com/supertone-inc/supertonic
#python
🖥 Минимальный и безопасный Dockerfile для Python-приложения.
В основе - python:3.11-slim, установка только нужных пакетов, удаление apt-кэша, отдельный системный пользователь без root-прав, изоляция рабочего каталога и установка зависимостей под ненадёжным пользователем.
Такой контейнер легче, безопаснее и запускается быстрее.
Отличная база для продакшена.
Переход на non-root пользователя резко снижает возможный ущерб, ограничивает доступ к файлам и заставляет держать порядок с правами и владением.
Docker - все о Docker и Devops
🔧 Утилиты для C++ и Python
Этот репозиторий предлагает набор полезных утилит для работы с C++ и Python, упрощая взаимодействие между этими языками. Он включает функции для обработки данных, работы с файлами и выполнения различных задач, что делает его идеальным для разработчиков, работающих с обоими языками.
🚀 Основные моменты:
- Инструменты для обработки и анализа данных
- Удобные функции для работы с файлами
- Поддержка взаимодействия между C++ и Python
- Легкая интеграция в проекты
- Документация для быстрого старта
📌 GitHub: https://github.com/xZepyx/cpp-pyutils
@pythonl
Как это — работать в Т-Банке?
Загляните в канал T-Crew, где увидите:
— жизнь и будни команды;
— ИТ-хабы компании по всей России;
— анонсы мероприятий;
— кейсы, статьи и советы для карьерного роста.
Еще здесь можно раньше других найти вакансии в ИТ и диджитале. За полезным — сюда
🔥 Безопасный запуск Linux-команд из Python
Если нужно из Python безопасно выполнять системные команды в Linux, используй изоляцию через subprocess с принудительным сбросом привилегий. Такой приём позволяет запускать команды даже в окружениях с потенциально небезопасным вводом, блокируя доступ к опасным системным вызовам и снижая риск эксплуатации.
import subprocess
import os
def safe_run(cmd):
# Запускаем процесс без наследования переменных окружения
env = {"PATH": "/usr/bin:/bin"}
# Сбрасываем привилегии, если процесс запущен от root
def drop_priv():
os.setgid(65534)
os.setuid(65534)
result = subprocess.run(
cmd,
env=env,
preexec_fn=drop_priv,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
timeout=3,
)
return result.stdout
print(safe_run(["ls", "/"]))
🔥 Коварная ловушка с замыканиями в Python
Многие хитрые баги в Python появляются из-за того, что разработчики неверно понимают область видимости переменных в замыканиях.
Частая ошибка - внутри цикла создавать функции-лямбды, которые «помнят» одно и то же финальное значение переменной, а не значение на каждой итерации. В итоге весь список функций ведёт себя одинаково. Чтобы избежать ловушки, фиксируйте значение через аргумент по умолчанию или используйте functools.partial.
Читать полностью…
funcs = []
for i in range(5):
funcs.append(lambda x=i: x) # фиксируем i как значение по умолчанию
print([f() for f in funcs]) # [0, 1, 2, 3, 4]
🤖 SelfDiscord: Мощный Discord Selfbot за 2 минуты настройки
SelfDiscord — это удобный selfbot для Discord с множеством команд и утилит. Он позволяет отслеживать ключевые слова, добавлять пользовательские команды и реакции, а также автоматизировать множество задач, таких как поиск изображений и управление сообщениями.
🚀Основные моменты:
- Логирование ключевых слов и уведомления о сообщениях.
- Автоматическая смена аватаров и статусов.
- Сохранение изображений и поиск источников.
- Пользовательские команды и реакции с возможностью сохранения.
- Уведомления и таймеры для задач.
📌 GitHub: https://github.com/tagal6727/SelfDiscord
#python
Пишешь, дебажишь, страдаешь, а оплатить ChatGPT или Cursor всё ещё не можешь без зарубежной карты?
Вот тебе спасательный круг!
С Kupikod всё по-человечески:
✅ оплачиваешь рублёвой картой;
✅ без VPN и плясок с бубном;
✅ низкие цены.
🏎️ F1 Race Replay: Визуализация гонок Формулы 1 🏁
Приложение на Python для интерактивного воспроизведения гонок Формулы 1 с графическим интерфейсом. Позволяет отслеживать позиции гонщиков в реальном времени, отображать текущие круги и статус водителей, а также управлять воспроизведением с помощью удобных контролов.
🚀 Основные моменты:
- Визуализация гонок с реальными позициями на треке
- Живое обновление позиций гонщиков и их состояния
- Интерактивные элементы управления воспроизведением
- Подробная информация о телеметрии выбранных гонщиков
- Возможность настройки интерфейса и обработки данных
📌 GitHub: https://github.com/IAmTomShaw/f1-race-replay
#python
@pythonl
🔍Тестовое собеседование на Middle Python с разработчиком из Авито завтра
9 декабря(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Как это будет:
📂 Даня, старший разработчик в Авито, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Даня будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дане
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама.
О рекламодателе.
🔥 На stepik вышел курс, который учит Создавать настоящие AI-сервисы, а не просто запускать скрипты?
Этот практический курс по Python и FastAPI покажет, как собрать полноценное приложение с ИИ, базой данных, автогенерацией контента и Telegram-ботом.
Ты пройдёшь путь от первого HTTP-запроса до рабочего сервиса, который сам генерирует текст через ИИ, сохраняет данные, отправляет результаты по расписанию и отвечает пользователям.
Никакой теории ради теории - только практические шаги, из которых рождается реальный продукт.
🎁 48 часов действует скидка в 40% процентов
👉 Начать учиться на Stepik
🤖 Автономный AI-исследователь для научных экспериментов
Этот проект представляет собой автономного AI-исследователя, который разбивает исследовательскую задачу на эксперименты и запускает специализированные агенты с доступом к GPU для их выполнения. Результаты собираются и оформляются в виде научной статьи.
🚀 Основные моменты:
- Декомпозиция задач на эксперименты с распределением по агентам.
- Агенты запускают GPU-песочницы для обучения и оценки моделей.
- Окончательные результаты формируются в виде связного отчета.
📌 GitHub: https://github.com/mshumer/autonomous-researcher
#python
В канале «Код Желтый» стартует новогодний адвент для разработчиков
С 9 по 18 декабря будут публиковать ИТ-задачи. Самые быстрые участники, верно решившие их, получат подарки. А те, кто пройдет весь адвент без ошибок, попадут в финальный розыгрыш специального приза.
Задания будут появляться прямо в канале, но это не единственная причина заглянуть туда. Код Желтый регулярно публикует:
— инженерные кейсы и внутрянку Т;
— кейсы, подкасты и исследования;
— анонсы ИТ-мероприятий.
Подписаться можно тут!
Erid: 2RanynydJka
✖ НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ LAMBDA В ЦИКЛЕ И ОЖИДАТЬ ЧТО ОНА "ЗАПОМНИТ" ПЕРЕМЕННУЮ.
Из-за этого все лямбды, созданные в цикле, будут ссылаться на одно и то же последнее значение.
Код выглядит нормальным, а ведёт себя странно — это классическая проблема замыканий в Python.
Правильно — фиксировать значение через аргумент по умолчанию или выносить в обычную функцию.
Подписывайся, больше фишек каждый день !
Читать полностью…
# скрытая ошибка — lambda в цикле захватывает последнюю переменную
funcs = []
for i in range(5):
funcs.append(lambda: i) # кажется, что вернёт 0,1,2,3,4 — но нет
# все лямбды вернут одно и то же значение
print([f() for f in funcs]) # [4, 4, 4, 4, 4]
# правильный вариант
funcs_fixed = [lambda x=i: x for i in range(5)]
print([f() for f in funcs_fixed]) # [0, 1, 2, 3, 4]
🧩 Python Keylogger: Educational Tool for Data Capture
Этот репозиторий представляет собой простой кейлоггер на Python с использованием библиотеки Pynput. Он демонстрирует, как собирать данные и отправлять их на сервер, предназначен исключительно для образовательных целей и осведомленности о безопасности.
🚀Основные моменты:
- Легкий в использовании кейлоггер на Python.
- Использует библиотеку Pynput для захвата нажатий клавиш.
- Предназначен для образовательных целей, не для злоупотреблений.
- Возможность отправки данных на сервер.
- Пример реализации, который можно улучшить.
📌 GitHub: https://github.com/ahoaparadox8/python-keylogger
👩💻 Всем программистам посвящается!
Вот 16 авторских обучающих IT каналов по самым востребованным областям программирования:
Выбирай своё направление:
👩💻 Python — t.me/python_ready
🤔 InfoSec & Хакинг — t.me/hacking_ready
🖥 SQL & Базы Данных — t.me/sql_ready
🤖 Нейросети — t.me/neuro_ready
👩💻 C/C++ — /channel/cpp_ready
👩💻 C# & Unity — t.me/csharp_ready
👩💻 Java — t.me/java_ready
👩💻 IT Новости — t.me/it_ready
👩💻 Linux — t.me/linux_ready
🖼️ DevOps — t.me/devops_ready
👩💻 Frontend — t.me/frontend_ready
📱 JavaScript — t.me/javascript_ready
🖥 Data Science — t.me/data_ready
🐞 QA-тестирование — t.me/qa_ready
📖 IT Книги — t.me/books_ready
🖥 Design — t.me/design_ready
📌 Гайды, шпаргалки, задачи, ресурсы и фишки для каждого языка программирования!
🖥 Bash Академия: секреты командной строки, которые нигде не рассказывают
Олег Шелест - профессионал по информационной безопасности, раскрывает скрытые механики Linux, с помощью наглядных картинок и коротких, максимально понятных разборов у себя в тг канале.
- Без воды.
- Без лишней теории.
Только практические приёмы, которые реально используют профи.
Если хочешь уверенно владеть Bash - здесь ты получишь всё, что нужно: t.me/bashmastter
🛠️ Tracer для системных вызовов на macOS
strace-macos — это инструмент для отслеживания системных вызовов на macOS с использованием API отладчика LLDB. Он работает с включенной защитой целостности системы и написан на чистом Python, что исключает необходимость в расширениях ядра.
🚀 Основные моменты:
- Поддержка SIP без отключения
- Вывод в формате JSON и текстовом формате
- Фильтрация системных вызовов по имени и категории
- Символическое декодирование аргументов
- Статистика вызовов и ошибок
📌 GitHub: https://github.com/Mic92/strace-macos
Изучаем Python, Docker, Git и выходим в DevOps с абсолютного нуля — нашли огромную библиотеку с сотнями подробных материалов.
• Сильная теоретическая база: язык программирования, сети, базы данных, система контроля версий.
• Короткие, но насыщенные уроки — учись по дороге на работу, в обед или во время короткого перерыва.
• Много практики — закрепишь навыки, соберёшь проекты и усилишь своё портфолио.
• Всё объясняется пошагово, простым языком — подойдёт даже тем, кто только сегодня услышал слово «программирование».
https://kodekloud.com/studio/labs
🌀 В Python есть встроенная функция reversed(), но работает она не со всеми структурами данных. Быстрый разбор:
✓ Список можно развернуть reversed([1, 2, 3]) возвращает итератор. list(reversed([1, 2, 3])) → [3, 2, 1]
✓ Кортежи тоже разворачиваются
Можно итерироваться по reversed((1, 2, 3))
✓ Множества не разворачиваются reversed({1, 2, 3}) → TypeError: 'set' object is not reversible
Причина: множества *не имеют порядка*, а значит разворачивать нечего.
Если нужно развернуть множество — сначала сделай его списком: list(reversed(list({1, 2, 3})))
@pythonl
Cursor мощно прокачался — релизнулась версия 2.1, которая еще быстрее находит баги, делает ревью кода, пишет и оптимизирует программы.
• Разрабы внедрили кнопку «Find issues» — агент автоматически правит баги, делает ревью и подсвечивает проблемы в боковой панели. Да, все СРАЗУ и без нескольких промптов.
• Поиск ускорили в разы — теперь он работает на базе векторов и шерстит даже массивную кодовую базу за секунды.
• Улучшили режим планирования — агент будет задавать еще больше уточняющих вопросов, когда ты утверждаете задачу. Отвечать нужно в интерактивном режиме.
И да, сейчас на Cursor Pro есть скидка — реально приятная. Вместо 22 тысяч — 7000 рублей!
Так что если думали — это тот самый момент «пока недорого».
Купить можно на сайте 👉 по ссылке
Или можно купить на авито напрямую у продавца по ссылке
🧵 CPython 3.15 делает распаковку данных намного быстрее
В новой версии CPython улучшили производительность декомпрессии:
- Zstandard (zstd) распаковывается на 25–30% быстрее
- zlib — на 10–15% быстрее, если размер данных больше 1 MiB
Такого ускорения добились за счёт более эффективной работы с выходными буферами во время распаковки.
Подробнее: emmatyping.dev/decompression-is-up-to-30-faster-in-cpython-315.html
@pythonl