es
Feedback

¡No caigas en manos de tramposos! Telemetrio encuentra y marca estos canales 👉 Si quieres ver la etiqueta, suscríbete

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

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

Canal cerrado

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

Mostrar más
5 790
Suscriptores
-524 horas
+137 días
-4430 días
Archivo de publicaciones
🐱 Git + Python: как не убить проект за 5 коммитов Работаешь с Python? Используешь Git? Думаешь, что знаешь, как это делать правильно? Скорее всего, ты уже сделал несколько критических ошибок, которые вернутся к тебе через месяц. 🧱 Типичные ошибки питонистов в Git 👍 Коммитят `.pyc` файлы и `__pycache__/`:
git add .
git commit -m "fixed bug"
Результат: репозиторий загажен скомпилированными файлами, которые меняются при каждом запуске. 👍 Забывают `.env` и токены утекают в публичный репо:
API_KEY = "sk-123456789abcdef"
DATABASE_URL = "postgresql://user:pass@localhost/db"
Запушил — всё, твой ключ в руках ботов через 5 минут. 👍 Коммиты без смысла: "fix", "update", "asdasd", "final final FINAL v3" Через неделю ты сам не помнишь, что там было. 👍 Не используют ветки — весь код в main: Один баг — весь проект сломан. Откатить? А как? 👍 Гигантские коммиты на 50+ файлов:
git add .
git commit -m "added everything"
Найти, где именно появился баг — удачи. 📌 Как делать правильно 1️⃣ Правильный `.gitignore` для Python Создай .gitignore в корне проекта:
# Байт-код Python
__pycache__/
*.py[cod]
*$py.class
*.so

# Виртуальные окружения
venv/
env/
ENV/
.venv

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# Переменные окружения и секреты
.env
.env.local
*.pem
*.key

# Логи
*.log

# Тестовые данные
.pytest_cache/
.coverage
htmlcov/

# Зависимости
*.egg-info/
dist/
build/

# Jupyter
.ipynb_checkpoints/

# Базы данных
*.db
*.sqlite3

# OS
.DS_Store
Thumbs.db
📎 Не хочешь писать руками? ➡️Используй 2️⃣ Храни секреты в `.env`, а не в коде Вместо этого:
API_KEY = "sk-123456789"  # НИКОГДА ТАК!
Делай так:
import os
from dotenv import load_dotenv

load_dotenv()
API_KEY = os.getenv("API_KEY")
Файл .env:
API_KEY=sk-123456789
DATABASE_URL=postgresql://user:pass@localhost/db
И ОБЯЗАТЕЛЬНО добавь .env в .gitignore! 3️⃣ Осмысленные коммиты Плохо:
git commit -m "fix"
git commit -m "update"
git commit -m "aaaaa"
Хорошо:
git commit -m "fix: исправлена ошибка деления на ноль в calc.py"
git commit -m "feat: добавлена функция отправки email"
git commit -m "refactor: переписан парсер JSON для улучшения производительности"
Используй Conventional Commits:
- feat: — новая функция - fix: — исправление бага - refactor: — рефакторинг без изменения логики - docs: — изменение документации - test: — добавление тестов - chore: — рутинные задачи (обновление зависимостей и т.д.)
4️⃣ Используй ветки Никогда не пиши в main напрямую:
# Создаём ветку для новой фичи
git checkout -b feature/user-authentication

# Работаем, коммитим
git add auth.py
git commit -m "feat: добавлена аутентификация пользователей"

# Пушим ветку
git push -u origin feature/user-authentication

# Создаём Pull Request на GitHub
# Мержим только после ревью
5️⃣ Структура Python-проекта в Git Правильная структура:
my-project/
├── .git/
├── .gitignore
├── .env.example        # Шаблон для .env (БЕЗ реальных секретов)
├── README.md
├── requirements.txt    # Зависимости
├── setup.py           # Если пакет
├── src/               # Исходники
│   ├── __init__.py
│   ├── main.py
│   └── utils.py
├── tests/             # Тесты
│   ├── __init__.py
│   └── test_main.py
└── docs/              # Документация
6️⃣ `requirements.txt` под контролем Фиксируй точные версии:
# Плохо (версии плавают)
requests
flask

# Хорошо (фиксированные версии)
pip freeze > requirements.txt
Результат requirements.txt:
requests==2.31.0
flask==3.0.0
python-dotenv==1.0.0
7️⃣ Pre-commit hooks — автоматизация проверок Установи pre-commit:
pip install pre-commit
Создай .pre-commit-config.yaml:
repos:
  - repo: https://github.com/psf/black
    rev: 23.11.0
    hooks:
      - id: black
        language_version: python3.11
  
  - repo: https://github.com/pycqa/flake8
    rev: 6.1.0
    hooks:
      - id: flake8
  
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v4.5.0
    hooks:
      - id: trailing-whitespace
      - id: end-of-file-fixer
      - id: check-yaml
      - id: check-added-large-files
Активируй:
pre-commit install
Продолжение снизу⤵️ Программистика || #Статья

30-летний я, который наконец-то нашёл работу джуном. 😎 Мой 19-летний тимлид узнаёт все мемы из канала «Программист». ⭐️
30-летний я, который наконец-то нашёл работу джуном. 😎 Мой 19-летний тимлид узнаёт все мемы из канала «Программист». ⭐️

СИМВОЛ. Новогодние скидки до 12% в готовом квартале Выбирайте квартиру с праздничной выгодой в квартале СИМВОЛ. Чтобы использовать все преимущества центра Москвы. И всюду успевать без спешки. И любоваться столицей из панорамных окон. - Историчекий район Лефортово - 2 км от Садового кольца - Дома внутри ТТК - 100+ открытых объектов инфраструктуры, в том числе Бауманский лицей - В домах - фитнес, детские, переговорные, коворкинги - Собственный парк "Зеленая река" площадью 10 га - 3 станции метро в пешей доступности Не пропустите новогодние скидки в готовом квартале. Спешите с покупкой, количество квартир ограничено! Узнать больше #реклама simvol-kvartal.ru О рекламодателе

🐈 Python для собеседования Python востребован в разных отраслях. Это машинное обучение, искусственный интеллект, аналитика д
🐈 Python для собеседования Python востребован в разных отраслях. Это машинное обучение, искусственный интеллект, аналитика данных, создание программных продуктов и внутренних утилит. Очень часто Python идёт как дополнительный навык при требованиях в вакансии. Данный курс может дать быстрое представление о языке, что позволит проявить осведомлённость на собеседовании.
🌐 Ссылка
Программистика || #Course

👩‍💻 bpytop — это современный инструмент мониторинга ресурсов, который работает на Linux, macOS и FreeBSD! Он отображает дан
👩‍💻 bpytop — это современный инструмент мониторинга ресурсов, который работает на Linux, macOS и FreeBSD! Он отображает данные об использовании процессора, памяти, дисков, сети и запущенных процессов в удобном и визуально привлекательном интерфейсе. Написанный на Python, bpytop предлагает гибкие возможности настройки и легкость использования, включая полную поддержку управления с помощью мыши.
🐱 Ссылка на GitHub Программистика || #Library

Кулинарные тренды начинаются здесь! Food.ru — это медиа, где тренды в еде и стиле жизни создаете вы Мы объединяем гурманов и тех, кто только начинает свой путь в кулинарии. Наша платформа поможет вам: • Удивить близких вкусными блюдами • Позаботиться о здоровье семьи • Следить за КБЖУ легко и удобно • Открывать новые рецепты каждый день Присоединяйтесь к сообществу, где: ✨ Вы можете делиться своими кулинарными находками ✨ Находите единомышленников и друзей по вкусу ✨ Открываете новые идеи — от полезных рецептов до стильных решений для дома Создавайте тренды вместе с Food.ru!❤️ Узнать больше #реклама food.ru О рекламодателе

🔥 Логируй как профи: что не так с `print()` и как писать логи правильно Логирование — это как чёрный ящик самолёта: пока всё работает, про него не думаешь. Но когда что-то ломается, без него — катастрофа. И да, print() — это не логирование, даже если вы очень его любите. 🧱 Почему не print()?
🟢 print() не умеет разделять уровни сообщений (ошибка или просто инфо) 🟢 Его нельзя легко перенаправить в файл или на удалённый сервер 🟢 В продакшене вы не сможете отследить проблему, если логи разбросаны по консоли
📌 Базовое логирование
import logging

logging.basicConfig(level=logging.INFO)
logging.info("Приложение запущено")
📎 basicConfig быстро включит логирование, но на продакшене лучше задавать формат и место хранения. 🎯 Уровни логов
🟢 DEBUG — детальная отладка 🟢INFO — обычная информация 🟢 WARNING — что-то подозрительное 🟢ERROR — ошибка, но система ещё жива 🟢CRITICAL — всё очень плохо
📦 Логи в файл
logging.basicConfig(
    filename='app.log',
    level=logging.INFO,
    format='%(asctime)s — %(levelname)s — %(message)s'
)
Теперь логи сохраняются в app.log с временем и уровнем. 🔄 Ротация логов Чтобы файл логов не вырос до гигабайтов:
from logging.handlers import RotatingFileHandler

handler = RotatingFileHandler('app.log', maxBytes=2_000_000, backupCount=5)
logging.basicConfig(
    handlers=[handler],
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s'
)
📎 При достижении 2MB файл заменяется, и хранится 5 последних копий. 🧪 Логируем ошибки с трассировкой
try:
    1 / 0
except ZeroDivisionError:
    logging.exception("Ошибка деления на ноль")
➡️logging.exception() автоматически добавляет traceback в лог. 💡 Запомни:
🟢 Не логируй пароли и токены 🟢 Разделяй уровни — не пиши error там, где warning 🟢 Настрой логи под продакшен заранее, а не когда уже горит
🗣 Если хотите пост про цветные логи, логирование в JSON или интеграцию с Sentry — пишите темы, мы с радостью сделаем! Программистика || #Статья

То, что доктор прописал! 9 самых необходимых IT-каналов, которые должен читать каждый айтишник: Доктор Python — коды, хаки и
То, что доктор прописал! 9 самых необходимых IT-каналов, которые должен читать каждый айтишник: Доктор Python — коды, хаки и фичи. Доктор Techlogy — свежие технологии и их применение. Доктор Cyber — информационная безопасность без скуки. Доктор GitHub — лучшие репозитории от врача. Доктор IT — всё о цифровом мире и его инсайтах. Доктор GameDev — рецепты создания игр и гайды. Доктор GPT — лучшие промпты и сервисы ИИ. Доктор Memes — смех лечит лучше любых апдейтов. Доктор C++ — фичи, советы и код без боли. Подпишись, чтобы стать профессором, а не пациентом.

ЧТО ЖЕ ДЕЛАТЬ НА PYTHON? Проекты на Python за 11 минут
🎥 Первоисточник
Программистика|| #video

Repost from N/a
ЧТО ЖЕ ДЕЛАТЬ НА PYTHON? Проекты на Python за 11 минут
🎥 Первоисточник
Программистика|| #video

🖥 Flask-Moment — расширение для Flask, которое интегрирует Moment.js для форматирования дат и времени в шаблонах Jinja2! С п
🖥 Flask-Moment — расширение для Flask, которое интегрирует Moment.js для форматирования дат и времени в шаблонах Jinja2! С помощью этого инструмента можно легко отображать даты и время в удобном формате, включая поддержку локализации, временных зон и обновлений времени в реальном времени. Основное применение — улучшение отображения временных данных в веб-приложениях Flask. Flask-Moment позволяет использовать Moment.js прямо в шаблонах, избавляя разработчиков от необходимости самостоятельно писать сложный код JavaScript для обработки времени.
🐱 Ссылка на GitHub Программистика || #Library

Telegram опубликовал список 8 самых быстрорастущих каналов для программистов: Only Python — Подборки приёмов и фич, о которых
Telegram опубликовал список 8 самых быстрорастущих каналов для программистов: Only Python — Подборки приёмов и фич, о которых не рассказывают в курсах. Only Tech — Главные тренды и инсайды из мира технологий, маркетинга и интернет-культуры. Only Hack — Реальные кейсы кибератак, инструменты и методы защиты, которые используют хакеры. Only GitHub — Репозитории, которые решают реальные задачи. Скрипты, фреймворки и готовые решения Only IT — Без мнений и слухов — только факты и важные IT-события. Only Apple — Новые апдейты, утечки и фишки, которые Apple ещё не показала. Only GPT — Промпты, хаки и свежие инструменты, о которых молчат даже AI-каналы. Only Memes — Если ты когда-нибудь деплоил в пятницу вечером — ты поймешь Подписывайтесь и прокачивайте свои скиллы.

Тебе нужна автоматическая документация API в формате Swagger/OpenAPI. Что быстрее?
Anonymous voting

⚡️ DevOps теперь в Telegram! Канал сеньора, где публикуются гигабайты материалов для DevOps-инженеров: 97 ГБ — Linux 48 ГБ —
⚡️ DevOps теперь в Telegram! Канал сеньора, где публикуются гигабайты материалов для DevOps-инженеров: 97 ГБ — Linux 48 ГБ — Docker 12 ГБ — Kubernetes 25 ГБ — Redis 81 ГБ — Git 19 ГБ — Jira 29 ГБ — Grafana Присоединяйтесь: @devops_tg

👩‍💻 Python 3.14 — Новая эпоха производительности
🎥Первоисточник
Программистика|| #video

👩‍💻FastAPI vs Flask: выбор без розовых очков Flask был королём 10 лет. Простой, лёгкий, работает везде. Но потом пришла FastAPI и разломала всю игру. Теперь все спрашивают: "А может, мне FastAPI?" Давайте разберёмся без маркетинга. 🧱 Типичные заблуждения:
🟡 "Flask проще — беру его для быстрого проекта" На самом деле: Flask простой, но медленный. Для API это критично. Если нужна скорость — Flask не поможет. 🟡 "FastAPI слишком новый, нет боевых примеров" На самом деле: FastAPI используют Uber, Netflix, Microsoft. Это не хипстерская игрушка. 🟡 "Flask легче найти разработчиков" На самом деле: в 2025 году FastAPI знают даже новички. Спрос растёт. 🟡 "FastAPI только для асинхронности" На самом деле: FastAPI даёт type hints, валидацию, документацию — всё из коробки.
📌 Сравнение по параметрам 1️⃣ Скорость — где разница? Flask (синхронный):
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/api/users/<int:user_id>')
def get_user(user_id):
    user = db.get_user(user_id)  # блокирует поток
    return jsonify(user)
➡️Если в БД 500ms — поток висит 500ms. На 100 одновременных запросов нужно 100 потоков. Это жрёт память и процессор. FastAPI (асинхронный):
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

@app.get("/api/users/{user_id}")
async def get_user(user_id: int):
    user = await db.get_user(user_id)  # не блокирует поток
    return user
На 100 одновременных запросов нужно 1-2 потока. Все ждут параллельно. Результат: FastAPI на 5-10x быстрее на асинхронных операциях (БД, HTTP, файлы). 2️⃣ Type hints и валидация Flask:
@app.route('/api/users', methods=['POST'])
def create_user():
    data = request.get_json()
    # Что тут? Кто знает
    name = data.get('name')  # может быть None
    age = data.get('age')    # может быть строка вместо числа
    
    if not name or not isinstance(age, int):
        return {'error': 'Invalid data'}, 400
    
    user = db.create_user(name, age)
    return jsonify(user)
FastAPI:
from pydantic import BaseModel

class UserCreate(BaseModel):
    name: str
    age: int

@app.post("/api/users")
async def create_user(user: UserCreate):
    # Валидация уже произошла!
    # Если age не int — FastAPI вернёт 422 автоматически
    db_user = await db.create_user(user.name, user.age)
    return db_user
➡️Результат: FastAPI проверяет типы и валидирует данные из коробки. Flask требует ручной проверки. 3️⃣ Документация Flask:
@app.route('/api/users/<int:user_id>')
def get_user(user_id):
    """Получить пользователя по ID"""
    user = db.get_user(user_id)
    return jsonify(user)
➡️Документация? Пиши сам. Swagger? Подключай flask-restx или flasgger — их код не совпадает с реальностью. FastAPI:
@app.get("/api/users/{user_id}", 
         summary="Получить пользователя",
         description="Возвращает пользователя по его ID",
         responses={404: {"description": "Пользователь не найден"}})
async def get_user(user_id: int):
    user = await db.get_user(user_id)
    return user
➡️Открываешь /docs — там красивая интерактивная документация с примерами, которая автоматически генерируется из кода. Результат: FastAPI = документация генерируется автоматически. Flask = лень писать. 4️⃣ Обработка ошибок Flask:
@app.route('/api/users/<int:user_id>')
def get_user(user_id):
    try:
        user = db.get_user(user_id)
        if not user:
            return {'error': 'Not found'}, 404
        return jsonify(user)
    except Exception as e:
        logging.error(e)
        return {'error': 'Server error'}, 500
Каждый эндпоинт — свой try/except. Кошмар. FastAPI:
from fastapi import HTTPException

@app.get("/api/users/{user_id}")
async def get_user(user_id: int):
    user = await db.get_user(user_id)
    if not user:
        raise HTTPException(status_code=404, detail="User not found")
    return user

# Глобальная обработка ошибок
@app.exception_handler(Exception)
async def global_exception_handler(request, exc):
    logging.error(exc)
    return JSONResponse(status_code=500, content={"detail": "Server error"})
Программистика || #Статья

⚡️ Запускаем крупный розыгрыш призов, где можно выиграть iPhone 17, игровые наушники, клавиатуру и мышь! Без лишних слов, усл
⚡️ Запускаем крупный розыгрыш призов, где можно выиграть iPhone 17, игровые наушники, клавиатуру и мышь! Без лишних слов, условия: 1. Подписка на: — бизнестрендс — Технотренды — Блумберг 2. Нажать кнопку «Участвовать» снизу Итоги будут опубликованы 15 ноября в 18:00 на наших каналах, желаем удачи!

Что обязательно нужно для работы webhook в продакшене?
Anonymous voting