Marshal's channel
849 subscribers
288 photos
46 videos
8 files
328 links
About me: @ilya_marshal
Download Telegram
Шота ор
Forwarded from oleg_log (Oleg Kovalov)
а как ваш день? (да, удалили шапочку из левого-нижнего угла)
Жоско конечно. Эти боты уже что только не делают. И уязвимости чекают в пакетах, шлют алерты о безопасности, и ПРы кидают для обновления версий пакетов. И вот токены нашли, правда ток они нашли в файле .env.example, но для такого кейса есть кнопка о ложном срабатывании
Forwarded from Журнал «Код»
YouTube снял сериал об искусственном интеллекте

Тони Старк оставил команду Мстителей ради передачи об умных машинах.

На YouTube вышел сериал The Age of A.I. Сидя в кожаном кресле, гений, миллионер, плейбой, филантроп и просто хороший актер Роберт Дауни-младший рассказывает, как технологии меняют наш мир. Эпизоды доступны бесплатно с рекламными вставками или без них по подписке YouTube Premium.

А в последней серии придет Альтрон и скажет, что люди — монстры и надо бы всех уничтожить.

Первая серия — https://youtu.be/UwsrzCVZAb8.
Решил посадить бота на пару норм фич. Ночь потратил на доклады с всяких конов про PyPy, теперь имею хоть какое-то представление шо да как и почему быстрее.

Начал я вообще с запуска обработки каждого апдейта бота в отдельном потоке. Т.к. бот работает с АПИ яндуха и сам толком ничего не делает, то о проблемах сие даже не задумывался. Как-то нет таких узкий мест от слова вообще.

Следующим делом я пошел смотреть в сторону PyPy на Heroku и понял, что офф. билдпак от них для питона саппортит максимум pypy3-5.8.0, а при попытке юзать его через runtime.txt говорил, что нельзя юзать в билдпаке heroku-18, хотя судя по их репе всё ок, рантайм там такой есть.

В любом случае сейчас PyPy уже 7.2

В начале я просто нашел и апнул issue с его обновлением, а потом вспомнил, что тут же можно dockerfil'ы юзать! В общем так и завел (на скрине всё есть). Так же на скрине есть кек, хорошо, что репа приватная.

И последним шагом я на проде перелез с пуллинга на вебхук.

Итог: бот быстрее не стал
Обидно, когда ты запарился, сделал отдельный целый сайт для авторизации, чтобы пользователи не передавали свои пароли в открытом виде через сообщения боту, делаешь всё безопасно, сертификаты там всякие и бла-бла, а к тебе нет доверия. И приходится объяснять почему все так классно и куда я всрал время.

Из последнего: купил домен, прикрутил превью сайту и изменил текст кнопки и сообщения при запросе авторизации в боте... Ибо проблема с большим количеством пользователей и маленьким количеством авторизацией есть

https://music-yandex-bot.ru/
@music_yandex_bot
В дополнение к сообщению выше могу предположить, что дело не только в доверии. Есть еще несколько путей:

1. Случайный пользователь.
2. Очередное зеркало для t.me заблокали в рашке.
3. Непонимание дальнейших действий после ввода данных и нажатии кнопки "войти" на сайте.

1 - в это сложно поверить конечно, но вдруг, человек вбив в поиск телеги "яндекс музыка бот" натыкается на моего бота, нажимает на него, видит описание (где рассказывается о возможности слушать плейлисты и т.д.), потом какого-то черта понимая, что это не то, что он искал нажимает "start" и сразу же удаляет бота...

2 - я был бы рад использовать t.me, но увы, в рашке не везде оно работает ибо телега там "заблокана". Поэтому я юзаю зеркало teleg.run. А работает ли оно там у всех или нет я не знаю...

3 - после успешного входа перебрасывает как раз на teleg.run и если приложение телеграма не открывается сразу, то необходимо нажать "открыть в Telegram". Вполне вероятно, что люди просто закрывают/сворачивают сайт и возвращаются к боту. Но нет! Вся магия как раз в переходе в бота с САЙТА! Только так бот узнает о том, куда же вы авторизовались.

И собсна всё, наверное. Я не знаю больше причин.

Выходит, если я хочу повысить количество нормальных (с авторизацией) пользователей, то мне нужно собрать фидбек по работе зеркала в рашке (проблема 2) и объяснить пользователям, что на кнопку "открыть в Telegram" нужно обязательно нажать (проблема 3). А вот что делать с 1 проблемой и как это вообще происходит непонятно...
144 258 минут, КАРЛ! Посмотреть свою цифру тута

100 (сто) СУТОК!

Постов нет, но я не дегродирую, всё намана.

На выходных порефакторил бота, теперь можно продолжить над ним работать.

PyPy кста выжирает всю память на 30 воркерах моих по перезаливке треков в ТГ. Короче минус PyPy для ботика, я не хочу разбираться.

Основная трабла в скорости работы - отправка запросов на яндух API. Их много и они у них жирные. Об этом я писал в своей статье на хабре.

Короче я тут вспомнил, что в моей либе можно Request свой передать. Кооороооче, я решил сейчас написать просто локальный кэш запросов, должно быть имбово

Ах да, еще короч в тайп хинты полез. Юзаю в либе. Встретил пару интересных моментов, поделюсь с Вами в отдельном посте как-нить.

И это, конкурс на годовую подписку яндуха всё ещё продолжается! (https://t.me/MarshalC/254)
Срочно, пока не легли! Отключите! От я бы орал утром
Marshal's channel
144 258 минут, КАРЛ! Посмотреть свою цифру тута 100 (сто) СУТОК! Постов нет, но я не дегродирую, всё намана. На выходных порефакторил бота, теперь можно продолжить над ним работать. PyPy кста выжирает всю память на 30 воркерах моих по перезаливке треков…
"должно быть имбово "

Собсна вот сравнение до-после. Скорость на уровне, теперь уж точно можно нормально пользоваться ботом.

Бот на стероидах

P.S. Перед записью прогрел кэш)0)

Самые глазастые увидели баг в навигации

UPD. На проде медленнее чем локально 😕
Набрел случайно на статью рандомную на хабре, ничего полезного, но реализацию на путоне схороню

Код: https://codepaste.ml/e2d24cd2/
Че за код: Расстояние Левенштейна

Upd. Игорь не заценил, говорит лучше на такую реализацию даже не смотреть
Media is too big
VIEW IN TELEGRAM
Интересный проект Quantum League, который авторы описывают как мультиплеерный FSP Time Loop в реальном времени.

Сначала можно ничего не понять, но вот как это работает. У каждого раунда (best of 3) есть 3 временных петли. В первой вы и ваш соперник сражаетесь первый раз, во второй добавляются клоны, которые клонируют ваше поведение в прошлой петле. К третьей петле все это превращается в 3 на 3, где настоящих игроков всего двое, а все остальные — клоны, имитирующие прошлые петли.

Это, безусловно, сразу же заставляет задуматься о временных парадоксах. А что, если убить клона противника до того, как он убьет твоего клона? Вместо смерти здесь desync, который отключает персонажа от временной петли, позволяя продолжать записывать действия игрока. Так что, если клон не умрет в следующем раунде, все действия во время desync будут повторяться живым клоном.