Полезный веб-сайт, который показывает, какая версия того или иного приложения, сервиса или устройства перестаёт выпускаться или поддержкиваться производителем.Например, меньше, чем через полгода для Python 3.8 перестанут выходить обновления безопасности (багфиксы уже давно закончились), поэтому если у вас есть какие-то очень древние легаси-проекты, то либо уже пора обновиться, либо хотя бы зацементировать в виде Docker-контейнера.https://endoflife.date
Друзья!Сегодня пользователи из России могли столкнуться с ошибкой при работе в DockerHub. На Хабре есть заметка, в комментариях к которой люди делятся советами по решению проблемы.Одно из решений — прописать "зеркала" Докерхаба в настройках демона Docker:sudo sh -c 'echo "{"registry-mirrors": ["https://mirror.gcr.io", "https://daocloud.io", "https://c.163.com/", "https://huecker.io/", "https://registry.docker-cn.com"]}" > /etc/docker/daemon.json'(отсортируйте список зеркал по своему усмотрению)
Всем привет! Мы начали выкладывать новый модуль нашего курса, посвящённый работе с PostgreSQL при помощи SQLAlchemy.Сейчас доступна вводная часть с описанием проблемы и возможных решений, а также глава по работе с SQLAlchemy Core в рамках простого бота. Вы узнаете:• Как подключаться к базе данных• Как правильно и как неправильно делать вставку данных. Узнаете, почему формировать SQL-запросы при помощи f-строк приводит к беде.• Как искать данные в базе• Как удалять данные из базы• Когда можно использовать SQLite в ботах, а когда лучше не надоЧерез некоторое время станут доступны ещё две главы: про SQLAlchemy ORM (подробнее, чем Core) и про миграции с помощью Alembic. Ну и всё остальное, что не попадает под категории выше.Ознакомиться с первой частью материала можно тут:https://stepik.org/lesson/1321957/step/1?unit=1337395
Читаю сейчас статью по виджетам для Jupyter Notebook и вижу: "Несмотря на то, что этот подход наиболее похож на подходы, используемые в Swing и WinForms, он порождает проблему с возвратом на предыдущую форму, если она должна хранить какое-то состояние. Именно это является проблемой реализации кнопки «Назад». На практике, в больших приложениях дебаг этой кнопки с очень большой вероятностью превратиться в ад. Именно поэтому я в своем опыте и данном приложении использую вкладки, так как это наиболее простой способ перемещаться на более старые формы. Более того, если вкладка не будет закрыта, то ее состояние сохранится до конца работы приложения, даже если были открыты несколько таких форм в других вкладках." То есть, не только разработчики ботов страдают :)Сразу подумалось, как же хорошо, что в aiogram_dialog эта проблема решена. Как вспомню костыли, которые все время приколачивать приходилось. Спасибо, @Tishka17!
Привет, друзья!Выложены материалы по интернационализации в продвинутом курсе. На мой взгляд, это важная тема, потому что помогает понять как сразу проектировать ваши проекты готовыми к выводу на международный рынок, чтобы не думать об этом, когда приложение уже полностью рабочее и внедрять интернационализацию стало существенно дороже. В модуле рассмотрены:1. Различия терминов "интернационализация" и "локализация"2. Подходы к интернационализации gettext и Fluent, их плюсы и минусы3. Интернационализация и локализация с помощью babel (gettext) в aiogram4. Обновление переводов и работа с множественным числом в рамках gettext5. Почему я рекомендую Fluent6. Основы синтаксиса Fluent, работа с селекторами7. Библиотека fluentogram, упрощающая работу в парадигме Fluent и работа с ней в контексте интернационализации (fluentogram написан Александром Даниловым - одним из авторов курса)8. Совместная работа fluentogram и aiogram_dialogПричем, даже если вы не собираетесь делать ваших ботов мультиязычными - я все равно советую закладывать в них возможность локализации с помощью Fluent, потому что накладные расходы низкие, а в замен вы получаете удобный способ хранения контента для бота (тексты, медиа, документы и прочее) и возможность очень легко добавить дополнительный язык, в случае, если возникнет такая необходимость.P.S. В течение нескольких дней на GitHub появятся исходники к курсу, а также будут добавлены несколько заданий для самопроверки.
Происходят интересные тектонические сдвиги в мире Python: в кодовую базу добавлена поддержка флага, отключающего GIL (Global Interpreter Lock)Напомнить себе о том, что такое GIL и зачем он нужен, можно здесь (на русском) и в официальной вики (на английском).
Друзья, привет!Сейчас я закончу выкладывание материалов по интернационализации и, перед тем как перейти к написанию раздела по очередям, хочу немного расширить модуль по диалогам. В процессе общения со студентами часто возникает вопрос как правильно внедрить диалоги в классическую структуру многомодульного бота. Я думаю, что можно написать какого-то простого бота в классической схеме и показать как точно такого же функционала добиться с использованием диалогов. Отсюда вопрос. Есть ли у вас пожелания по функционалу такого учебного бота? Работу с какими виджетами вы хотели бы посмотреть в таком боте?