Легкий путь в Python
5.1K subscribers
97 photos
18 videos
3 files
155 links
Я — Алексей Яковенко, опытный разработчик Python. Здесь вы найдете статьи, заметки, посты и видео для прокачки навыков программирования 🐍 Интересное найдет и новичок, и профи 💡

📬По вопросам: https://t.me/yakvenalexx
🗣Сообщество: https://vk.cc/cxKNTb
Download Telegram
Media is too big
VIEW IN TELEGRAM
Видео-демка проекта (просмотр с iPhone 14 Pro)☝️
👍214🔥4👏1
Друзья, я кое-что для вас готовлю😉
🔥385👍5🥰4🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Учитывая тенденции такое случится уже в 2030-м)
😁14🤣6😢2🐳2
Друзья, доброе утро! ☀️

Сегодня хочу поделиться с вами чем-то важным и особенным. Это не просто обновление — это шаг вперёд в развитии того, что я делаю.

Давно зрела идея собрать все свои материалы с Хабра в одном месте — создать универсальное "ядро", которое стало бы удобной отправной точкой для поиска нужных статей и заметок. Больше не нужно перелистывать ленту, чтобы найти важную информацию — всё под рукой, структурировано и доступно.

Но есть ещё одна причина, по которой я решил это сделать. На Хабре не всегда можно делиться всем, о чём хочется поговорить. Например, темы вроде Python для начинающих, советы по психологии и мотивации программистов или углублённые разговоры про такие технологии как Redis, Docker, VPS. Эти темы могут быть интересны далеко не всем, но я уверен, что для более узкой аудитории разработчиков они будут полезны.

И вот, в связи с этим, я запускаю новый проект — площадку, на которой буду собирать не только все уже опубликованные материалы, но и эксклюзивный контент, который будет доступен только премиум-подписчикам (об этом скоро расскажу подробнее). Это не просто сайт, это полноценная база знаний, структурированная и удобная, а также место для более глубоких, профессиональных материалов, которые буду создавать специально для вас. 🔥

Подписка на премиум-контент откроет доступ к материалам, которых не будет на других платформах, и даст возможность поддержать развитие этого проекта. Я с нетерпением жду, когда смогу поделиться с вами этим новым уровнем контента и теми мыслями, которые не укладываются в формат привычных публикаций. 💡

🔗 База знаний

Буду рад вашим отзывам, мыслям и предложениям! 🙌
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥30🔥16👍10👎6😍41🤡1
Регистрация на сайте yakvenalex.ru как обычный пользователь

Всем, кто хочет зарегистрироваться на сайте и получить доступ к комментариям, хорошая новость!

Завтра будет готов бот, который упростит процесс регистрации. На данный момент я активно занимаюсь адаптацией внутреннего API WikiJS под асинхронный фреймворк Aiohttp. Нахожусь на завершающей стадии разработки внутренней архитектуры API под Telegram-бота.

P.S. Кстати, сайт использует GraphQL в качестве основного API. Если интересен синтаксис - смотрите на скрин выше. Вообще, в планах есть поговорить и об этом подходе, а то все время занимаемся RestApi)
🔥157👍4😱1
Друзья, на следующей неделе будет много контента. Немного зашился 🤯
👍30🔥52🙏2
Друзья, приветствую. Готов черновой вариант новой статьи. Буду очень стараться успеть все вычитать и опубликоваться на Хабре к четвергу. Будете ждать выхода?🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥727🎉4👍3🤔2🤩1
Возможно опубликую раньше чем в четверг)
👍13🔥93😁1
Друзья, приветствую! 🌟 Обещанная статья уже опубликована на Хабре! В ней я рассказал о создании полноценного мини-блога с использованием Python-фреймворка FastAPI и SQLAlchemy 2.0. 📚

Что вас ждет в статье:

💎 Стек технологий: Мы используем FastAPI, SQLAlchemy с асинхронной поддержкой через aiosqlite, Alembic для миграций и другие инструменты.
💎 Функционал проекта: В блоге пользователи смогут регистрироваться и авторизовываться с помощью JWT-токенов. Мы создадим API для управления публикациями: добавление новых постов, изменение их статуса (опубликовано или черновик), а также возможность получения информации о блогах. Все это будет удобно визуализировано с помощью HTML, CSS и JS!
💎 Markdown: Блог будет автоматически оформлять тексты в формате Markdown, что позволит легко создавать красивые и структурированные посты. 📝

Если вы хотите увидеть весь процесс разработки шаг за шагом и получить полезные советы по использованию FastAPI и SQLAlchemy, обязательно загляните в статью!

🔗 Ссылка на работающий проект, документацию, статью и исходный код проекта закреплены ниже. Не упустите возможность узнать что-то новое и вдохновиться на создание собственного блога! 🚀

🔗 Ссылка на статью: Создание блога на FastAPI с нуля: JWT, Markdown и современный веб-дизайн

🔗 Проект на GitHub

🔗 Ссылка на работающий блог

🔗 Документация
Please open Telegram to view this post
VIEW IN TELEGRAM
37🔥18👍10❤‍🔥3
🚀 Друзья, у меня новая идея для статьи!

Давно хотел рассказать вам о том, как работать с FastAPI в сочетании с технологиями Celery (для фоновых задач) и Redis (для кэширования страниц и в качестве брокера для Celery). Следующую статью хочу посвятить этим темам, и чтобы не было скучно, сразу реализуем практический проект. 😉

Итак, идея следующая:

Сервис обмена файлами
Описание: Пользователь загружает файл, а приложение генерирует временную ссылку для скачивания. Ссылка активна определённое время (возможно, с ограничением на вес файла или формат).

Функционал:

📂 Загрузка файла через API и форму на сайте

🔗 Генерация временной ссылки для скачивания

🗂 Хранение ссылок и данных о файлах в Redis с TTL (время жизни)

🧹 Удаление файла после истечения времени ссылки с помощью Celery

🎁 Бонусом расскажу про классную библиотеку для FastApi для простого кэширования страниц (не зря же будем Redis поднимать)

Стек технологий:

💎 FastAPI: Обработка загрузки и скачивания файлов
💎 Redis: Хранение данных о временных ссылках
💎 Celery: Удаление файлов по истечении времени

Что скажете? 🎉
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥85👍96😍3
🚀 Регистрация на моем личном сайте теперь доступна каждому!

Как зарегистрироваться? Легче не бывает:

🤖 Зайдите в моего телеграм-бота: @yakvenalex_baseBOT
👆 Нажмите кнопку "Зарегистрироваться"
🔄 Бот автоматически создаст ваш аккаунт
🔑 После этого вы получите логин и пароль для входа на сайт

Теперь вы сможете оставлять комментарии на сайте. Более того, в ближайшее время я планирую выпустить несколько эксклюзивных публикаций, доступных только для зарегистрированных пользователей!

Благодаря системе ролей на yakvenalex.ru, авторизованные пользователи смогут получать доступ к уникальному контенту.

🤔 Хотите узнать, как устроен этот бот и какие у него возможности?

📝 Оставьте комментарий, если интересно заглянуть за кулисы проекта yakvenalex.ru и узнать о технических деталях его работы!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥174👍3🤔1
Если вы работали с Excel через Python, то могли столкнуться с ситуацией, что формат xls не поддерживается. 📊 Например, Openpyxl работает только с xlsx. В таком случае нам ничего не мешает написать собственный конвертер в пару строк кода. 🛠

Во-первых, нам понадобятся для этой задачи 2 легковесные библиотеки: pyexcel_xls и pyexcel_xlsx. Устанавливаем. 📚

Далее выполняем импорты:
from pyexcel_xls import get_data
from pyexcel_xlsx import save_data
import os


Теперь напишем простую функцию для конвертации из xls в xlsx:

def convert_xls_to_xlsx(xls_path):
# Получаем имя файла без расширения
file_name = os.path.splitext(xls_path)[0]
xlsx_path = file_name + '.xlsx'

# Читаем данные из .xls файла
xls_data = get_data(xls_path)

# Сохраняем данные в .xlsx формате
save_data(xlsx_path, xls_data)

return xlsx_path

Далее можно использовать ее в таком формате:
if file_path.endswith('.xls'):
print("Конвертация .xls в .xlsx...")
file_path = convert_xls_to_xlsx(file_path)
print(f"Файл сконвертирован: {file_path}")

Например, как часть более сложной функции с тем же openpyxl.

P.S. Бота пишу сейчас. Это кусок с реальной практики. Решил, может кому полезно будет) 🤖💡
👍32🔥7❤‍🔥41
🖥 Превращаем командную строку Windows в мощный инструмент!

Хотите улучшить свой опыт работы с терминалом в Windows? Я написал статью о том, как за пару минут превратить обычную командную строку в продвинутый инструмент с крутыми возможностями:

➡️Табы (вкладки терминалов)
➡️Переименование табов
➡️Разделение экрана на несколько частей
➡️Поддержка команд Linux и macOS
➡️SSH из коробки и многое другое!

Полное руководство по настройке ConEmu и Git для создания идеальной среды разработки.

🔗 Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍83🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Друзья, доброе утро! Спешу поделиться отличной новостью!

🎉 Учебный проект, о котором я рассказывал пару дней назад, успешно завершен!

📁 Представляю вам файлообменник с временным хранилищем на сервере.

Вот как он работает:

1️⃣ Выбираете файл
2️⃣ Указываете срок хранения (от 1 минуты до 24 часов)
3️⃣ Получаете две ссылки: для sharing и для удаления файла

🔄 Когда вы нажимаете "Отправить", FastAPI через Redis отправляет задачу Celery. Задача? Удалить файл по истечении срока!

🧠 Изюминка проекта: FastAPI и Celery - два независимых приложения, общающихся только через Redis.

📝 Подробности о технической части ждите в моей новой статье на Хабре!

👀 А пока можете:

🔗 Посмотреть проект в действии

🔗 Изучить код FastAPI приложения

🔗 Заглянуть в код Celery приложения

🌸 Бонус: в приложенном видео вы увидите работу приложения и функционал Celery в режиме Flower.

💡 Остались вопросы? Задавайте в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥42👍75😍3❤‍🔥1🥰1
Осталось вычитать, так что ждите, скорее всего, в субботу утром.
👍19❤‍🔥8🔥7
💡 Как узнать информацию о Telegram-боте, имея только его токен? 🤖

Иногда в процессе работы с ботами бывает, что единственное, что у вас осталось от старого проекта, — это токен. И тогда возникает вопрос: как узнать информацию о боте, чтобы восстановить его данные?

📌 Есть простой способ:

1️⃣ Откройте в браузере следующую ссылку, заменив {BOT_TOKEN} на ваш токен:

https://api.telegram.org/botBOT_TOKEN/getMe  


2️⃣ Вы получите JSON-ответ с данными бота, который выглядит так:
{
"ok": true,
"result": {
"id": 929198812,
"is_bot": true,
"first_name": "my_test",
"username": "my_test_bot",
"can_join_groups": true,
"can_read_all_group_messages": false,
"supports_inline_queries": false,
"can_connect_to_business": false,
"has_main_web_app": false
}
}


📋 В ответе содержится:

- 🆔 ID бота
- 👤 Имя (first_name)
- 🔗 Логин (username)
- 🤝 Возможности бота: участие в группах, поддержка inline-запросов и т.д.

⚠️ Совет: всегда сохраняйте информацию о боте (токен, ID, логин) в безопасном месте, чтобы в будущем не сталкиваться с такими сложностями. 🔐

Теперь вы знаете, как легко восстановить данные о боте, имея только токен! 🚀
👍207🔥6
📚 Лайфхак для FastAPI: Автоматическая загрузка файлов! 🚀

Привет, друзья! 👋 Сегодня хочу поделиться крутым приемом из реальной практики работы с FastAPI.

Бывает, нужно отправить пользователю ссылку на файл так, чтобы он сразу начал загружаться, без лишних кликов. 🖱💨

Вот как это сделать:

1️⃣ Используйте FileResponse
2️⃣ Установите правильные заголовки
3️⃣ Профит!

Пример кода:
from fastapi.responses import FileResponse

@router.get("/get_my_config/{filename}")
async def get_config_file(filename: str):
full_path = os.path.join(settings.DOWNLOAD_DIR, filename)
if not os.path.exists(full_path):
raise HTTPException(status_code=404, detail="Файл не найден")

return FileResponse(
path=full_path,
filename=filename,
media_type='application/octet-stream',
headers={
"Content-Disposition": f"attachment; filename={filename}",
"Content-Type": "application/octet-stream"
}
)


Главный трюк в заголовках - они говорят браузеру "Эй, это файл для скачивания!" 📥

Надеюсь, этот лайфхак сэкономит вам время и нервы! 😉 Пишите в комментариях, если у вас есть вопросы или свои крутые приемы! 💬
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥87👎1
Друзья, привет!👋

У меня появилась новая идея для статьи на Хабре, и я хотел бы поделиться ею с вами. 🤔

Почему бы не показать на практическом примере, как подключить оплату к Telegram-боту на примере бота для продажи цифровых товаров? 💳

Сейчас, когда цифровые товары становятся все более популярными, создание магазина в Telegram — это отличная возможность для разработчиков и предпринимателей. Я планирую разобрать весь процесс: от создания бота с использованием aiogram 3 до интеграции платежной системы через ЮKassa.

В статье я постараюсь подробно описать:

💎Как настроить бота и организовать каталог товаров.
💎Как реализовать процесс покупки и обработки платежей.
💎Как обеспечить пользователям удобный доступ к купленным материалам.

Если у вас есть идеи или пожелания, что бы вы хотели увидеть в этой статье, пишите в комментариях! Ваше мнение очень важно для меня. 💬
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥95👍226❤‍🔥21💯1🆒1
💡 Проверяем активность пользователей бота на Python (Aiogram 3)

Привет, разработчики! Сегодня делюсь полезным кодом, который может вам пригодиться при работе с телеграм-ботами. 👨‍💻

Задача: проверить, сколько пользователей в вашей базе данных всё ещё получают сообщения от бота, а сколько его заблокировали.

Вот пример решения:

alive_users = 0  
all_count_user_in_db = 100 # Например, общее число пользователей

for user_id in users:
try:
chat = await bot.get_chat(chat_id=user_id)
alive_users += 1
except TelegramBadRequest as e:
# Пользователь заблокировал бота или чат недоступен
print(f"Ошибка при проверке пользователя {user_id}: {e}")
except Exception as e:
# Обработка других непредвиденных ошибок
print(f"Неожиданная ошибка для пользователя {user_id}: {e}")

await message.answer(
f"📊 В базе данных: {all_count_user_in_db} пользователей.\n"
f" Доступны: {alive_users}.\n"
f"🚫 Недоступны: {all_count_user_in_db - alive_users}."
)


🔍 Как это работает:

1️⃣ Считаем активных пользователей через bot.get_chat.
2️⃣ Ловим исключения, чтобы учесть тех, кто заблокировал бота или удалил чат.
3️⃣ Возвращаем статистику пользователю.

Такой подход помогает понимать актуальность вашей базы и анализировать вовлечённость аудитории. 🎯
👍25🔥12👏4