Год назад, 7 февраля 2020, я впервые увидел Python.
С тех пор я многое вспомнил и ещё большему научился, но самый полезный совет мне дал господин C.: поставь сразу PyCharm!
Очень благодарен за него. Это в разы облегчило вхождение в язык и отладку программ.
С тех пор я многое вспомнил и ещё большему научился, но самый полезный совет мне дал господин C.: поставь сразу PyCharm!
Очень благодарен за него. Это в разы облегчило вхождение в язык и отладку программ.
О вакцинации Спутником - V.
Наш минздрав стойко хранит военную тайну, но к счастью минздрав Аргентины имеет развитую систему сбора информации и оперативно публикует отчеты.
Я перевел с испанского на медицинский русский.
Отчет аргентинцев (оригинал от 9/02/2021, спасибо @digitalfan за наводку):
«С начала национальной кампании вакцинации против COVID-19 до 6 часов вечера 3 февраля 2021 года, было применено 436 269 доз вакцин. Интегрированная информационная система здравоохранения Аргентины (SIISA) получила 16.455 ESAVI (уведомлений о событии, предположительно приписываемое вакцинации)
Из зарегистрированных событий 99,5% были легкими и умеренными, 84 события (0,5%) были госпитализированы для симптоматического лечения с выздоровлением.»
То есть 0,02% вакцинированных понадобилась госпитализация (по всем причинам).
А 96,3% людей, получивших укол, вообще ничего не заметили.
Наш минздрав стойко хранит военную тайну, но к счастью минздрав Аргентины имеет развитую систему сбора информации и оперативно публикует отчеты.
Я перевел с испанского на медицинский русский.
Отчет аргентинцев (оригинал от 9/02/2021, спасибо @digitalfan за наводку):
«С начала национальной кампании вакцинации против COVID-19 до 6 часов вечера 3 февраля 2021 года, было применено 436 269 доз вакцин. Интегрированная информационная система здравоохранения Аргентины (SIISA) получила 16.455 ESAVI (уведомлений о событии, предположительно приписываемое вакцинации)
Из зарегистрированных событий 99,5% были легкими и умеренными, 84 события (0,5%) были госпитализированы для симптоматического лечения с выздоровлением.»
То есть 0,02% вакцинированных понадобилась госпитализация (по всем причинам).
А 96,3% людей, получивших укол, вообще ничего не заметили.
Мой любимый бот Фома внезапно прошёл сейчас стресс-тест.
На чат, в котором он работает, попытался наскочить ботнет в 4070 человек. Бот выдержал нагрузку и старательно всех посчитал.
В итоге выяснилось его реальное быстродействие: 10-15, в среднем 13.3 команды в секунду и подтвердилась надёжность архитектуры.
В отличии от шилди бота, который пал смертью храбрых, Фома может переработать и бОльшие объёмы мамкиных нагибаторов.
UPD (13/02) полноценная защита от DDoS проверена ещё двумя атаками, все набегавшие забанены автоматически. Потери противника - около 9к аккаунтов.
Заказать или связаться с автором: @yesitsnew
На чат, в котором он работает, попытался наскочить ботнет в 4070 человек. Бот выдержал нагрузку и старательно всех посчитал.
В итоге выяснилось его реальное быстродействие: 10-15, в среднем 13.3 команды в секунду и подтвердилась надёжность архитектуры.
В отличии от шилди бота, который пал смертью храбрых, Фома может переработать и бОльшие объёмы мамкиных нагибаторов.
UPD (13/02) полноценная защита от DDoS проверена ещё двумя атаками, все набегавшие забанены автоматически. Потери противника - около 9к аккаунтов.
Заказать или связаться с автором: @yesitsnew
Media is too big
VIEW IN TELEGRAM
Видео от фанатов, как Фома отбивает очередной набег ботов на чат. 😁
Я не имею привычки раскрывать личность заказчика. Но я очень тронут таким тёплым отзывом одного из них. Спасибо, парни! Буду развиваться дальше 💪 https://yangx.top/SIL0VIKI/31289
Telegram
СИЛОВИКИ 🇷🇺💉
Наш канал и чат @siloviki_chat периодически становятся объектами информационных атак и массового набега ботов.
Но, к счастью у нас есть крутой программист, который написал отличного бота "Фому" и значительно упростило жизнь админам.
Фома умеет самостоятельно…
Но, к счастью у нас есть крутой программист, который написал отличного бота "Фому" и значительно упростило жизнь админам.
Фома умеет самостоятельно…
Интересное чтение под утренний кофе. Не знаю прав ли товарищ или нет, у меня почти нет опыта разбора некрокода. Но мысль интересная, а финальный вывод выглядит очень логично:
Проект начинает умирать в момент остановки разработки. И если нет текущих проблем, лучше их себе "выдумывать" искусственно. https://habr.com/ru/company/vdsina/blog/534696/
Проект начинает умирать в момент остановки разработки. И если нет текущих проблем, лучше их себе "выдумывать" искусственно. https://habr.com/ru/company/vdsina/blog/534696/
Хабр
Как избежать гниения ПО
Недавно я наткнулся на историю столь же удивительную, сколь и ужасную: Один из моих клиентов занимался поддержкой нескольких пенсионных фондов, входящих в сотню лучших по миру. У него была...
Нашёл кажется самый смешной баг в своём коде за последнее время.
В многоадминских больших чатах нужен механизм, предусматривающий применение наказаний только по возрастанию. То есть если админ1 даёт мьют на неделю, а админ2, секундой позже, тому же юзеру даёт сутки, должна сработать только неделя.
Такой механизм был сделан, вписан в класс-контроллер чата и успешно оттестирован.
Но. Сегодня сработал антиспам на вполне невинного чудака в чате, автоматика Фомы выдала ему три дня, все ок.
Я снял мьют вручную, чудак усугубил свое состояние алкоголем и продолжил. И выяснилось прекрасное, автоматика ещё три дня (срок действия мьюта антиспама) не сможет с ним ничего сделать. Потому что справедливо считает его уже замьюченым. 😅
WARNING foma_classes [2021-02-20 19:44:00,866] наложение наказаний: (10, datetime.datetime(2021, 2, 23, 16, 55, 58, 952176)), код:10
P. S. Хорошо, что Фома пока ещё работает в режиме отладочного (полного) лога, поэтому понять что произошло было легко.
В многоадминских больших чатах нужен механизм, предусматривающий применение наказаний только по возрастанию. То есть если админ1 даёт мьют на неделю, а админ2, секундой позже, тому же юзеру даёт сутки, должна сработать только неделя.
Такой механизм был сделан, вписан в класс-контроллер чата и успешно оттестирован.
Но. Сегодня сработал антиспам на вполне невинного чудака в чате, автоматика Фомы выдала ему три дня, все ок.
Я снял мьют вручную, чудак усугубил свое состояние алкоголем и продолжил. И выяснилось прекрасное, автоматика ещё три дня (срок действия мьюта антиспама) не сможет с ним ничего сделать. Потому что справедливо считает его уже замьюченым. 😅
WARNING foma_classes [2021-02-20 19:44:00,866] наложение наказаний: (10, datetime.datetime(2021, 2, 23, 16, 55, 58, 952176)), код:10
P. S. Хорошо, что Фома пока ещё работает в режиме отладочного (полного) лога, поэтому понять что произошло было легко.
Половину дня убил вчера на реверс-инжиниринг сайта активного гражданина. Страница голосования там состоит из 4,5 мегабайт специально сделанного нечитаемым javascript кода (убраны пробелы и строки, машине пофигу, а человеку грустно).
Но, благодаря подсказкам уважаемого @eshu_coding я перехватил правильный запрос статистики. Теперь у меня есть бот-наблюдатель за выборами памятника на лубянской площади. Всего 80 строк, полный код в скринах.
Один раз в минуту записываются в файл текущие результаты и, при изменениях больше чем на 1 процент, рапортуется в чатик.
Но, благодаря подсказкам уважаемого @eshu_coding я перехватил правильный запрос статистики. Теперь у меня есть бот-наблюдатель за выборами памятника на лубянской площади. Всего 80 строк, полный код в скринах.
Один раз в минуту записываются в файл текущие результаты и, при изменениях больше чем на 1 процент, рапортуется в чатик.
Комментарий Эшу. Всё по делу, да. Включая то, что метод post вообще предназначен для отправки данных на сервер, но в моем случае работает как get. В общем, как сказано в прекрасном фильме про все: "― Ален ноби, ностра алис! Что означает - если один человек построил, другой завсегда разобрать может!" © (римляне и фильм "формула любви")
Telegram
Эшу быдлокодит
К репосту. Инструменты разработчика в браузере - дичайшее читерство. При первом, и даже втором взгляде - перегружено и неочевидно. Но если жизнь заставляет погрузиться, как заставила уважаемого @ssleg, они оказываются волшебным окном во внутренности портала.…
Подумал, и поставил на мониторинг свежее, совершенно обычное голосование на активном гражданине.
В целях накопления статистики как обычно идёт голосование в АГ. Тут явно не будет конфликта и накруток и можно будет динамику использовать как референс.
Гражданский контроль, ок, значит контроль :)
P.S. Сsv с накопленными данными будет доступен для исследований по запросу.
В целях накопления статистики как обычно идёт голосование в АГ. Тут явно не будет конфликта и накруток и можно будет динамику использовать как референс.
Гражданский контроль, ок, значит контроль :)
P.S. Сsv с накопленными данными будет доступен для исследований по запросу.
СЛЕГ! <Z> ️
Photo
Результат первых суток наблюдения за рядовым голосованием на АГ, которое никто не накручивает. Суммарно проголосовало сию 58к людей.
Забавно, что москвичи мало спят, ночное плато по голосам всего-то с 23:30 до 06:30.
Забавно, что москвичи мало спят, ночное плато по голосам всего-то с 23:30 до 06:30.
ag_mon.zip
4.2 KB
Я закончил разбираться в устройстве Активного Гражданина и теперь могу предоставить вам набор инструментов для изучения голосований.
Все потроха спрятаны внутрь класса AgController, из которого наружу выведены два метода:
detect_new_poll() - обнаруживает новые голосования и начинает их мониторить.
Возвращает 0 или количество новых голосований.
write_stats() - собирает и записывает все данные по всем активным голосованиям.
Возвращает True. Если хотя бы один вопрос получить с сервера не удалось, то False.
Достаточно эти два метода вызывать раз в 5 минут (период обновления данных голосований) и у вас есть вся информация.
Закончившиеся голосования перестают мониториться автоматически.
Количество вопросов в одном голосовании и вариантов ответов - любое.
Все потроха спрятаны внутрь класса AgController, из которого наружу выведены два метода:
detect_new_poll() - обнаруживает новые голосования и начинает их мониторить.
Возвращает 0 или количество новых голосований.
write_stats() - собирает и записывает все данные по всем активным голосованиям.
Возвращает True. Если хотя бы один вопрос получить с сервера не удалось, то False.
Достаточно эти два метода вызывать раз в 5 минут (период обновления данных голосований) и у вас есть вся информация.
Закончившиеся голосования перестают мониториться автоматически.
Количество вопросов в одном голосовании и вариантов ответов - любое.
СЛЕГ! <Z> ️
ag_mon.zip
Продолжение, начало выше ⬆️
Состав пакета:
main.py - демонстратор работы с классом
ag_classes.py - модуль с классами АГ
ag_poll_results.sqlite - пустая БД Sqlite, куда складываются данные.
sqlite_create.sql - скрипт для создания БД (на всякий случай)
visualisation.py - бонус-трек, программа для автоматической генерации графиков голосования. Единственное что нужно делать руками - менять параметр question_number в начале кода.
Лицензия - вы можете использовать, модифицировать, распространять и делать вообще что угодно с кодом. Но желательно не стирать указание на автора (MIT/BSD)
Состав пакета:
main.py - демонстратор работы с классом
ag_classes.py - модуль с классами АГ
ag_poll_results.sqlite - пустая БД Sqlite, куда складываются данные.
sqlite_create.sql - скрипт для создания БД (на всякий случай)
visualisation.py - бонус-трек, программа для автоматической генерации графиков голосования. Единственное что нужно делать руками - менять параметр question_number в начале кода.
Лицензия - вы можете использовать, модифицировать, распространять и делать вообще что угодно с кодом. Но желательно не стирать указание на автора (MIT/BSD)
Телеграм предупреждает, что он поверил в свое светлое будущее и собирается вырасти до более чем 2.15 миллиардов пользователей.
Программирующим на Python беспокоиться не нужно. А вот тем кто пишет на C и близких к нему языках, пора проверить тип хранения поля user_id
P. S. Сейчас свежие user_id раздают в диапазоне 1.6-1.7 миллиарда.
P. P. S. Но питонистам тоже есть что обновить. Сейчас понял, что в базе данных у меня user_id таки integer. Мне необходимо будет обновить таблицы postgresql до использования bigint.
Программирующим на Python беспокоиться не нужно. А вот тем кто пишет на C и близких к нему языках, пора проверить тип хранения поля user_id
P. S. Сейчас свежие user_id раздают в диапазоне 1.6-1.7 миллиарда.
P. P. S. Но питонистам тоже есть что обновить. Сейчас понял, что в базе данных у меня user_id таки integer. Мне необходимо будет обновить таблицы postgresql до использования bigint.
Как внезапно приходит слава. Официальный саппорт Qiwi рекламирует мой модуль, написанный в августе 2020 года, как референсный. Сейчас помог человеку запустить модуль в его проекте. Это уже как минимум шестой проект на нем (из тех, что я достоверно знаю). Спасибо Киви за такой пиар.