en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels 👉 If you want to see the tag, subscribe

Программистика

Программистика

Closed channel

Лучший канал про python Ссылка для друга: https://t.me/+Ai6ughKtf5g2ZmFi Купить рекламу: https://telega.in/c/+Ai6ughKtf5g2ZmFi Админ: @JeyRahol По рекламе: @ReivuManager

Show more
5 790
Subscribers
-524 hours
+137 days
-4430 days
Posts Archive
Джуны — всё, ИИ победил. По статистике BCG, за последний год компании выбросили на улицу 75% молодняка. При этом миддлам и се
Джуны — всё, ИИ победил. По статистике BCG, за последний год компании выбросили на улицу 75% молодняка. При этом миддлам и сеньорам зарплаты подняли в 4 (!) раза. Чтобы подняться до уровня элит в аномально короткие сроки — подпишитесь на легендарные каналы для айтишников: Новости и инсайды Фронтенд разработка ИИ и биг дата Node js Вёрстка Питон и нейросети QA-тестировщики Там раскрыли инфу из курсов общей стоимостью 5.000.000р в эксклюзивных пошаговых инструкциях. Пока остальные пойдут на дно якорем, вы войдете в 10% тех, кто сломал систему.

Что произойдёт, если забыть await перед asyncio.sleep(1)?
Anonymous voting

👩‍💻 asyncio debugging — почему task зависла и не выполнится Ты добавил async/await, но задача так и не закончилась. Event loop крутится, а результата нет. И непонятно, где искать проблему — никаких ошибок, просто тишина. 🧱 Главные причины, почему task зависает 🟢 Забыл `await` — корутина вообще не запустилась:
async def fetch_data():
    asyncio.sleep(1)  # ❌ без await не работает
    return "done"
Корутина создана, но не выполняется. Python даже warning не покажет, пока объект не удалится из памяти. 🟢 Используешь блокирующие вызовы — event loop встал:
async def process():
    time.sleep(2)  # ❌ блокирует весь loop
Все остальные task'и ждут, пока этот завершится. Используй await asyncio.sleep() или loop.run_in_executor() для синхронного кода.[4][5][6] 🟢 Создал task, но не дождался его завершения:
async def main():
    asyncio.create_task(work())
    # main() закончился → task убит
Task запустился, но main завершился раньше — незавершённые задачи просто отбрасываются. ✔️ Нужно так:
task = asyncio.create_task(work())
await task  # или asyncio.gather()
🟢 Бесконечный цикл без `await` внутри:
async def loop_task():
    while True:
        do_something()  # нет await
Event loop не может переключиться на другие задачи — они зависнут навсегда.[9] 📌 Как правильно дебажить 1️⃣ Включи debug mode — сразу увидишь проблемы:
asyncio.run(main(), debug=True)
или через переменную окружения:
PYTHONASYNCIODEBUG=1 python script.py
Покажет:
🟢 где корутина создана, но не awaited 🟢 какие task'и выполняются слишком долго (> 100ms) 🟢 где нарушена thread-safety
2️⃣ Отслеживай "долгие" task'и вручную:
import time

TASK_DICT = {}

async def monitor_tasks(limit_sec=3):
    while True:
        for task in asyncio.all_tasks():
            name = task.get_name()
            if name not in TASK_DICT:
                TASK_DICT[name] = time.monotonic()
            duration = time.monotonic() - TASK_DICT[name]
            if duration > limit_sec:
                print(f'{name} зависла: {duration:.2f}s')
        await asyncio.sleep(1)
Такой подход ловит задачи, которые живут слишком долго, даже если они не завершились. 3️⃣ Используй `asyncio.wait_for()` с таймаутом:
try:
    result = await asyncio.wait_for(slow_task(), timeout=5.0)
except asyncio.TimeoutError:
    print("Task застряла!")
4️⃣ Логируй всё подозрительное:
import logging
logging.basicConfig(level=logging.DEBUG)

async def risky_task():
    logging.debug("Task started")
    await something()
    logging.debug("Task done")
Если второе сообщение не появилось — знаешь, где искать. 🧪 Бонус: отлов незавершённых задач при выходе
async def main():
    try:
        await asyncio.gather(task1(), task2())
    finally:
        tasks = [t for t in asyncio.all_tasks() if not t.done()]
        for task in tasks:
            task.cancel()
        await asyncio.gather(*tasks, return_exceptions=True)
💡 Запомни:
📌 Без await корутина не запустится — только создастся объект 📌 Блокирующий код = застывший event loop 📌 Debug mode обязателен во время разработки 📌 asyncio.wait_for() с таймаутом спасает от вечного ожидания 📌 Незавершённые task'и при выходе из main — это утечка и баг
Программистика || #Статья

⚡️ Linux и DevOps теперь в Telegram! Ребята делают реально классный канал про IT — просто, понятно и без воды. О Linux, DevOp
+4
⚡️ Linux и DevOps теперь в Telegram! Ребята делают реально классный канал про IT — просто, понятно и без воды. О Linux, DevOps, разработке, безопасности и инструментах, которые помогают работать эффективнее. Подписывайтесь: @recura_tech

👩‍💻 Структуры данных в Python — cheat sheet Программистика || #doc
+4
👩‍💻 Структуры данных в Python — cheat sheet Программистика || #doc

Что такое метакласс в Python?
Anonymous voting

👀 Сохрани меня, если сможешь: модули и файлы в Python Вы узнаете, как сохранять и читать данные, разбивать код на удобные ча
👀 Сохрани меня, если сможешь: модули и файлы в Python Вы узнаете, как сохранять и читать данные, разбивать код на удобные части, использовать сторонние библиотеки, управлять зависимостями и работать с виртуальным окружением. Курс идеально подходит для выпускников «Функционального программирования на Python» и всех, кто хочет перейти от простых скриптов к созданию настоящих Python-проектов!
🌐 Ссылка
Программистика || #Course

⚡️⚡️Новую базу курсов слили в сеть — хакеры снова выложили в паблик тонну курсов по IT от онлайн школ. Материала почти на пол
⚡️⚡️Новую базу курсов слили в сеть — хакеры снова выложили в паблик тонну курсов по IT от онлайн школ. Материала почти на пол-терабайта, мы загрузили всё на канал, там есть: 🐍 Python и нейросети (28 полных курсов + библиотеки) 📈 Data Analysis + машинное обучение (15 курсов) 👨🏻‍💻 Frontend (от JS до React) — (20 курсов + библиотеки) 🤖 Backend + базы Данных (30 курсов) 🛡 Информационная безопасность (Защита+Атака) — (14 курсов) 🎮 Разработка игр (11 курсов) Всё можно забрать бесплатно и смотреть без скачивания ➡️ @IT_SLIV

Что хотите больше видеть на канале?
Anonymous voting

👀 Базовые алгоритмы. Реализация на Python и C++ на примере классических игр В книге дается базовая алгоритмическая подготовк
👀 Базовые алгоритмы. Реализация на Python и C++ на примере классических игр В книге дается базовая алгоритмическая подготовка, классические алгоритмы разобраны одновременно на двух языках — C++ и Python на примере широко известных и интуитивно понятных компьютерных игр. Наглядно излагается реализация циклов, перебора, рекурсии, эвристики, рассматривается работа с деревьями решений, на примере шахмат предлагается знакомство с прямоугольными координатами, дается введение в самообучающиеся алгоритмы. Книга ориентирована как на начинающих программистов, так и на читателей, планирующих перейти на C++ или Python как на второй язык. Примеры, рассмотренные в книге, помогут сделать первые шаги на пути к профессиональному программированию игр. Программистика || #Книги

👩‍💻 Type Hints без иллюзий: Python не станет статически типизированным Все ставят type hints везде, думают, что это сделает код быстрее или предотвратит ошибки в runtime. Спойлер: нет. Type hints — это подсказки для тебя и для инструментов, а не для Python. 🧱 Типичные заблуждения 🟡 "Type hints делают код быстрее"
def add(a: int, b: int) -> int:
    return a + b

add("hello", "world")  # Работает! Python игнорирует hints
Результат: Python полностью игнорирует type hints в runtime. Никакой проверки, никакого ускорения. 🟡 "Type hints защищают от ошибок"
def greet(name: str) -> str:
    return f"Hello, {name}"

greet(123)  # Работает без ошибок!
Python не проверяет типы. Нужен mypy или pyright. 🟡 "Type hints нужны везде"
x: int = 5
y: str = "hello"
z: bool = True
Результат: захламлённый код. Type hints нужны где есть неочевидность, а не везде подряд. 🟡 "Hints замедляют код" На самом деле: минимальный overhead только при загрузке модуля. В runtime — ноль влияния. 📌 Зачем они РЕАЛЬНО нужны 1️⃣ IDE видит типы → автодополнение работает Без hints:
def process_data(data):
    return data.split()  # IDE не знает, что у data есть .split()
С hints:
def process_data(data: str) -> list[str]:
    return data.split()  # IDE знает, что data это str
Результат: автодополнение, подсказки методов, меньше ошибок при написании. 2️⃣ Статические анализаторы (mypy, pyright) ловят баги ДО запуска
def add_numbers(a: int, b: int) -> int:
    return a + b

result = add_numbers(5, "10")  # mypy/pyright: ERROR!
Запускаешь mypy script.py → видишь ошибку до запуска кода.[1][3] 3️⃣ Документация "в коде" Без hints:
def fetch_user(user_id):
    # Что такое user_id? str? int? UUID?
    pass
С hints:
def fetch_user(user_id: int) -> dict[str, Any]:
    # Понятно: на вход int, на выход словарь
    pass
Результат: код читается как документация.[5][3] 4️⃣ Снижение багов в production Пример из AI/ML:
def train_model(data):
    # Кто-то передал NumPy array вместо PyTorch tensor
    # Код упал через 3 часа обучения
    pass
С hints:
import torch

def train_model(data: torch.Tensor) -> None:
    # mypy сразу покажет ошибку, если передать не Tensor
    pass
Результат: ошибки ловятся на этапе разработки, а не в production. 📌 Как правильно использовать 1️⃣ Базовые типы
def greet(name: str, age: int) -> str:
    return f"{name} is {age} years old"

# Переменные (редко нужно)
x: int = 5
2️⃣ Списки, словари, множества Python 3.9+:
def process_items(items: list[str]) -> dict[str, int]:
    return {item: len(item) for item in items}

# Старый синтаксис (не используй)
from typing import List, Dict
def process_items(items: List[str]) -> Dict[str, int]:
    pass
3️⃣ Optional (может быть None)
def find_user(user_id: int) -> str | None:
    # Может вернуть str или None
    if user_id > 0:
        return "Alice"
    return None
4️⃣ Union
def process_input(data: int | str) -> str:
    if isinstance(data, int):
        return str(data)
    return data
5️⃣ Callable
from collections.abc import Callable

def execute(func: Callable[[int, int], int], a: int, b: int) -> int:
    return func(a, b)

execute(lambda x, y: x + y, 5, 3)  # OK
6️⃣ Generics
from typing import TypeVar

T = TypeVar('T')

def first_element(items: list[T]) -> T | None:
    return items[0] if items else None

result = first_element([1, 2, 3])  # result: int | None
📌 Инструменты для проверки типов Mypy — классика, написан на Python:
pip install mypy
mypy script.py
Pyright — от Microsoft, очень быстрый:
pip install pyright
pyright script.py
1. Не пиши hints везде
# Плохо
x: int = 5
y: str = "hello"

# Хорошо
x = 5  # Очевидно
y = "hello"  # Очевидно
2. Пиши hints для функций
# Хорошо
def calculate_total(price: float, quantity: int) -> float:
    return price * quantity
💡 Запомни:
👉 Type hints — для инструментов, не для Python 👉 Python игнорирует hints в runtime 👉 Нужен mypy/pyright для проверки
Программистика || #Статья

🖥 AI Math Notes - это интерактивное приложение, которое позволяет рисовть математические формулы на доске и получитать решения.
Как только уравнение написано, приложение использует мультимодальный LLM для его решения. Приложение построено с использованием Python с библиотекой Tkinter для графического интерфейса пользователя и PIL для обработки изображений.
🐱 Ссылка на GitHub Программистика || #Library

🗺 Roadmap.sh Python: Карта развития питониста Roadmap.sh Python — визуальная карта для изучения Python с разбором по направлениям: backend, data science, DevOps. Показывает последовательность обучения и зависимости между навыками. Помогает не прыгать как сумасшедший.
🌐Ссылка на сервис
Программистика || #Ресурсы

Cursor — твой AI-партнёр в разработке ПО Устали тратить время на поиск ошибок и шаблонный код? Cursor — это среда разработки
Cursor — твой AI-партнёр в разработке ПО Устали тратить время на поиск ошибок и шаблонный код? Cursor — это среда разработки нового поколения с искусственным интеллектом, которая помогает писать, анализировать и улучшать код быстрее, чем когда-либо. Что умеет Cursor: • Пишет и дополняет код на естественном языке • Находит и исправляет ошибки • Предлагает оптимизации и лучшие практики • Объясняет сложные участки кода • Работает как полноценная IDE, только умнее Сосредоточьтесь на архитектуре и логике — рутину возьмёт на себя ИИ. Поставщик Cursor в России — компания «Системный софт». Оплата в рублях, закрывающие документы и поддержка при подключении. Попробуйте Cursor уже сегодня: https://clck.ru/3QJ7Ke Перейти на сайт #реклама 16+ syssoft.ru О рекламодателе

🖥 Django-Tastypie — это библиотека для создания REST API в Django, которая упрощает процесс работы с данными, сериализацией
🖥 Django-Tastypie — это библиотека для создания REST API в Django, которая упрощает процесс работы с данными, сериализацией и аутентификацией! Она поддерживает различные форматы данных (JSON, XML, YAML), позволяет работать как с SQL, так и NoSQL базами и предоставляет встроенные инструменты для фильтрации, сортировки и пагинации запросов. Tastypie минимизирует необходимость написания повторяющегося кода, позволяя разработчикам быстро создавать мощные API. 🐱 Ссылка на GitHub Программистика || #Library

"Ты че, дурак?" – базовая реакция сеньора на тех, кто покупает IT курсы Дело в том, что онлайн школы создают инкубаторных айт
"Ты че, дурак?" – базовая реакция сеньора на тех, кто покупает IT курсы Дело в том, что онлайн школы создают инкубаторных айтишников, которые в реальных условиях попросту зависнут. Трушные ребята учатся на жизненных каналах для айтишников. Вот топ-5 от тимлида из Сбера: ⚙️ Технолоджия – для тех, кто хочет быть в курсе новостей в айти 🧠 Ai-чница – способы превратить нейросети в заработок $$$ 💻 ИИ тебя заменит! – тенденции айти рынка в связке с нейросетями 4️⃣ Войти в IT – тонны бесплатного обучения для прогеров 😄 IT индус – сборник айти мемов

Мощный Python: паттерны и стратегии современного программирования Как стать экспертом в создании сложных и мощных приложений
Мощный Python: паттерны и стратегии современного программирования
Как стать экспертом в создании сложных и мощных приложений на Python, не тратя время на повторение уже известных основ или перечисление ненужных функций? Аарон Максвелл фокусируется на первопринципах Python, которые действуют подобно катализаторам для всего остального: достаточно получить 5 % знаний в области программирования, чтобы остальные 95 % подтянулись автоматически.
Программистика|| #Книги

Где безопаснее всего хранить API_KEY и DATABASE_URL?
Anonymous voting

Теперь перед каждым коммитом автоматически:
🟢 Форматируется код (Black) 🟢 Проверяется стиль (Flake8) 🟢 Удаляются лишние пробелы 🟢 Проверяются большие файлы
8️⃣ GitHub Actions для CI/CD Создай .github/workflows/test.yml:
name: Run Tests

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  test:
    runs-on: ubuntu-latest
    
    steps:
    - uses: actions/checkout@v4
    - name: Set up Python
      uses: actions/setup-python@v5
      with:
        python-version: '3.11'
    
    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    
    - name: Run tests
      run: |
        pytest tests/
    
    - name: Lint with flake8
      run: |
        pip install flake8
        flake8 src/
👍Теперь при каждом PR автоматически запускаются тесты и проверки. 🧪 Бонус: как откатить ошибки Отменить последний коммит (не запушен):
git reset --soft HEAD~1  # Сохранить изменения
git reset --hard HEAD~1  # Удалить изменения
Отменить изменения в файле:
git checkout -- filename.py
Вернуться к конкретному коммиту:
git log  # Найди хеш коммита
git checkout <commit-hash>
Удалить файл из Git, но оставить локально:
git rm --cached secret.env
💡 Запомни:
⭐️ .gitignore — твоя первая линия защиты ⭐️ Секреты — только в .env, никогда в код ⭐️ Коммиты — осмысленные, не "asdasd" ⭐️ Ветки — для каждой фичи отдельно ⭐️ requirements.txt — с фиксированными версиями ⭐️ Pre-commit hooks — автоматизация спасает ⭐️ GitHub Actions — CI/CD из коробки
Программистика || #Статья