Forzend's channel
367 subscribers
30 photos
2 videos
1 file
89 links
Download Telegram
Forzend's channel
Photo
Постом выше вы могли заметить обновление aiogram_broadcaster до версии 0.0.4. Эта версия была готова ещё неделю назад. Её цель была ответить на вопрос Алекса (разработчика aiogram) "а как отслеживать процесс отправки?.."
Там был ещё один вопрос, но история об этом умалчивает ;)

Эта версия не выходила так долго потому что я ждал одобрение самого Алекса, боялся наделать говна, но что мне остаётся делать? Будем учиться на своих ошибках, раз уж на то пошло... Больше ждать уже не выносимо.

И так, что же было изменено в 0.0.4 кроме уже упомянутой CI системы? В основном изменения были направлены на обновление абстрактного класса. Обратить внимание именно на него я вам и предлагаю. Сразу, что мы можем видеть: атрибут класса running, представляющий из себя список. В нём будут лежать экземпляры запущенных рассылок, чтобы их можно было получить отовсюду. Опускаемся ниже и видим кучу приватных атрибутов: _id, _is_running, _successful, _failure. Что такое id и is_running, думаю, понятно из самого названия этих атрибутов. id — порядковый номер экземпляра, а is_running — статус экземпляра, т.е. запущен он, или нет. В атрибутах successful и failure также нет ничего особенного. В одном хранятся чаты, отправка в которые была произведена успешно, а в другие — безуспешно.

Все эти атрибуты дают нам возможность отслеживать прогресс рассылок и в целом удобно ими управлять. Но для работы с этими атрибутами есть несколько методов.

Естественно, был добавлен дандер str, который покажет красиво информацию о экземпляре класса. Были добавлены свойства successful и failure, которые возвращают те самые списки. Для этих свойств также реализованы методы get_successful и get_failure с аргументом id_only на случай, если вам нужен будет не список словарей, а просто список айдишников. На этом и заканчиваются основные изменения этого обновления. Казалось бы — час работы, но как я уже и сказал, обновление не выходило так долго потому что я хотел получить "фидбек" от человека с опытом, чтобы не писать дерьмо. В любом случае пока я доволен текущей реализацией.

#Рассылка #Аиограм
#Broadcaster #Aiogram
Интересный дед. Подкупил названием канала и видеоролика. Ничего особо интересного не рассказал, но вложил в голову одну интересную мысль: "Уязвимая ссылка — одна из самых страшных уязвимостей интернета. Если вы по адресу одного элемента хранения можете угадать адрес другого элемента хранения, так делать нельзя".

Заставило задуматься. Подошел к этому вопросу с точки зрения веб разработчика.
Сначала я был с ним согласен и думал "нужно делать ссылки не такими интуитивными".
Но вдруг у меня назрела мысль: "но такие ссылки не удобны, сложны в чтении, запоминании. Для кого придумали 403?".
Но я вовремя опомнился. Ведь чтобы кинуть 403, нужно как-то идентифицировать пользователя. А для этого либо регистрация, либо айпи. Регистрация в представленном примере была не приемлема, ибо информацию нужно подавать всем незарегистрированным пользователям, иначе они теряют "клиентов". Проверка айпи тоже не спасает. Во-первых либо тебя обходят впн-ом (как это было сделано в видеоролике), либо тебе нужно вести список разрешенных айпишников, что также не вариант.

Хороший пример ссылок статей на telegra.ph, который сразу пришел мне в голову. Там нет такой простой нумерации и несмотря на то, что для генерации ссылки используется название статьи, найти другие статьи будет не так просто, ведь для этого не достаточно просто прибавить или отнять единичку к числу в строке поиска, однако это и не усложняет восприятия.

#Интересное #Веб
#Intresting #Web
🎧 Global Version ZMI PurPods Pro

Уже давно хочу подобрать себе хорошие TWS наушники по приемлемой цене.
Остановился на наушниках ZMI PurPods Pro. Судя по отзывам отличные наушники за цену, которую я бы смог осилить. До недавнего времени отталкивало лишь одно — это не глобальная версия и весь софт — китайский. Не смертельно, но приятного мало.
К счастью теперь вышла Глобальная версия (Кстати, рефералка от меня, а может не рефералка, хз, не часто приходится покупать на AliExpress).
Как я уже сказал, я буквально мечтаю о этих наушниках уже долгое время и всё-таки надумал их покупать, но цена всё равно очень сильно бьёт по карману. Буду рад получить советы в комменты о том, как можно её немного скинуть, а также предложения других наушников, которые вы используете или тоже хотите приобрести
Долго искал сайт/канал, где можно было бы почитать/посмотреть про паттерны программирования, посмотреть о их реализациях, разобраться в том, зачем они нужны в целом и в каких задачах их использовать.
Недавно мне напомнили о существовании такого сайта, как refactoring.guru. Очень крутой сайт, который отвечает всем моим запросам. А то частенько слышишь о каких-то фабриках, ещё чем-то и вообще ничего не понимаешь 😅

#Полезное
#Useful
Постов не было ровно 10 дней (считал на пальцах, ошибиться не должен), никаких новостей за все это время не было. Число конечно, красивое 😅, но все же надо дать какой-то "отчёт". Чем я занимался эти 10 дней?

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

Кстати о шаблонах. Остальные шаблоны были удалены, чтобы не создавать путаницы. Кто использовал, мигрируем))
Кстати, эти 10 дней я знакомился с SQLAlchemy и докинул её в темплейт по всем канонам (с тишкиной мидлварью), не забыл и о мидлвари, которая чат и юзера в хендлер пробрасывала.

Кроме шаблона и алхимии я также занимал бродкастером. Он едва ли не полностью был переписан недавно и сейчас тестируется и вылизывается. Актуальную версию вы можете увидеть в Dev ветке. Примеры уже обновил 😄
Думаю эта версия станет 0.1.
Был добавлен один класс, который управляет всеми рассылками. Инстанс этого класса на проект должен быть лишь один. Также были добавлены хранилища, в которых будут лежать данные о рассылках и сами рассылки. Пока только MemoryStorage, в будущем добавит RedisStorage, а MemoryStorage будет делать дамп в файл во время остановки (метод будет нужно вызвать в on_shutdown бота). Но все планы... Очередь уже добавлена и пользователей можно в конце рассылки докидывать, возможно будет предоставляться какая-то мидлварь, которая будет новых пользователей закидывать в активные рассылки, а удаленных из нее уделяло, чтобы они ничего не упустили 😄, но посмотрим...

#Рассылка #Шаблон #ГитХаб #Организация #Планы
#Broadcaster #Template #GitHub #Organisation #Plans
Вчера в 22:53 мы набрали первую сотню. Это нужно отметить. Может даже пост сегодня выкачу 😅
🎉
Пока я тут отмечаю День рождения, советую глянуть уже довольно старый видос от Диджитализируй! про базы данных. Во время выхода он был мне не так полезен, как сейчас, поэтому тогда я его пропустил. Все подробно и красиво. Посмотреть, как работают с базой Postgres люди с бо́льшим опытом было интересно. Работа идёт через cli, а не какие-нибудь GUI утилиты, что я также отношу к плюсам. Приложу описание видоса, чтобы вы понимали, о чем будет идти речь и будет ли оно вам полезно.

#Полезное
#Useful
Чтож... Время делиться с вами прекрасными новостями. Наушники стали первым относительно дорогим товаром, купленным в интернете, так ещё и из Китая. И вот у нас сюрпризы:

Не забываем, что без уплаты пошлины в Беларуси допускается получать неограниченное количество посылок. Однако за календарный месяц в сумме можно набрать на 200 евро и 31 кг, но при этом стоимость РАЗОВОЙ Вашей посылки не должна быть выше 22 евро и весом не более 10 кг (цена доставки не учитывается). В противном случае пошлина будет равняться 15% от цены превышения за товар или 2 евро за каждый килограмм посылки при её весе выше нормы. Да, ещё плюс сбор на таможне составит 5 евро.
Уметь работать с терминалом очень важно, поэтому вот вам репозиторий с набором стильным, модных, молодёжных утилит для *unix

https://github.com/ibraheemdev/modern-unix

#Полезное
#Useful
Я очень люблю читать исходники библиотек. Причиной тому является факт, обычно библиотеки пишут более прошаренные ребята, нежели сам я (за редким исключением). Так как я непосредственно связан с aiogram, а там выходит третья версия, я решил покопаться в исходниках аиограма. Про интересные плюшки третьей версии, как того, что можно использовать в своих личных проектах, так и того, что нового в аиограме, я решил написать постик. Думаю многим это может показаться интересным и полезным, а некоторым может сэкономить время.

В первую очередь, что бросается в глаза — проделана огромная работа над type hint'ами. Теперь в аиограме используется mypy, и пара моих заметок связаны именно с этим:
if TYPE_CHECKING: — Удобно для решения цикличных импортов [Из документации mypy]
Файл py.typed — поддержка проверки типов пакета [PEP 561]

Занимательным мне показалось также следующее:
@dataclass(frozen=True) — Создание Read-Only датакласса [Из документации python]. Оно подтолкнуло меня на мысль, что было бы круто это использовать, в случае с конфигами, из тишкиного темплейта. Тогда можно было бы конфиг держать глобалом.

loggers.py — все логгеры теперь в одном файле. В случае с аиограмом — это отличное решение. Теперь видно, какие в нем есть логеры и что, а случае чего, отключать. Однако использовать ли это в приложениях — я пока для себя не решил. Все же мне кажется классический логгер в начале файла лучше подойдёт в случаях, когда вы делаете не библиотеку.

Кто задумывался о кешировании, наверняка в процессе гугления натыкался на lru_cache. Для асинхронных функций есть отдельная сторонняя библиотека, которую и используют разработчики в aiogram
Была переделана отправка запросов к апи телеграм. Методы апи теперь — классы, которые вызывает класс сессии. И это круто со стороны масштабируемости. Говоря о сессии, в issues аиограма висит создание сесии на httpx. Возможно в будущем каждый сможет спользовать то, что ему ближе, и, наверное, не тащить лишних зависимостей в проект.

Теперь к вещам, которые непосредственно коснутся разработки ботов на аиограме.
В аиограме третьей версии будет значительно меньше стандартных фильтров. Причиной этому стала библиотека magic_filter, которую запихнули в аиограм по самые гланды, конечно же добавив в зависимости. Кстати говоря, в третьем аиограме для работы с пакетами и сборки библиотеки используется poetry.

Раньше все использовали функции из модуля utils.markdown, в котором была мешанина из функций генерации как маркдауна, так и html'я, теперь же их разделили и разнесли по разным местам, добавив в __init__.py библиотеки.

Одним из самых лучших решений была переработка мидлварей. Есть два типа мидлварей: request middleware и Outer middleware. Outer мидлвари очень напоминают мидлвари из aiohttp, но это только плюс. Новые мидлвари сделали аиограм ещё более гибким и масштабируемым, а порог входа в библиотеку для разработчиков на aiohttp ещё ниже. На новых мидлварях уже реализованы куски логики, которые раньше намертво были вшиты в диспатчер, но о них позже. Вместо пре процессов, пост процессов и прочего, мидлварь теперь должна в любом месте вызывать хендлер, передавая туда собственно ивент и дату. Я очень боюсь дать дизинфу по мидлварям, поэтому подробнее о мидлварях вы можете почитать в доке aiogram-а.

На мидлварях теперь контекстные переменные, стейты и обработчики ошибок

Была переработала машина состояний. Самое интересное нововведение — FSMStrategy. То, что позволит задавать состояние пользователю в чате, всему чату или пользователю во всех чатах.

#Полезное, #Аиограм, #Боты
#Userful, #Aiogram, #Bots
В догонку к посту про нововведения в третий аиограм. Ещё посмотрел хендлеры. Они также теперь могут представлять из себя класс. Все знают, что хендлеры просматриваются в порядке регистрации (есть в роутере список зарегистрированных хендлеров, по которым идёт итерация и проверка фильтров). В третьем аиограме можно будет указывать индекс во время регистрации хендлера. Таким образом хендлер установится в списке через insert на определенный индекс, а остальные хендлеры, стоящие на месте данного индекса и выше, сдвинутся на 1 вправо

#Полезное, #Аиограм, #Боты
#Useful, #Aiogram, #Bots
Питон очень красивый, краткий, лаконичный язык, позволяющий писать код красиво. У Диджитализируй вышел новый видеоролик об "особенностях" питона, позволяющих сократить количество кода в разы. Спешу с вами поделиться

https://youtu.be/LkHCy5JZtsA

#Полезное
#Useful