Telegram Web
Пользоваться ботом я хочу предоставить всем желающим. Изначально я планировал 3-5 запросов бесплатно, остальное - за небольшой донат (50-100р). Для сбора платежей даже сделал специального бота, но все уперлось в анонимность: сборы идут как на юр лицо или самозанятого, через Яндекс кассу, чек автоматом уходит в налоговую, надо ли оно мне? Потыкать в бота-сборщика платежей можно тут: @payment_zion_test_bot

Внимание! Бот привязан к тестовым реквизитам, предоставленным телегой, даже если возникнет желание кинуть ему копеечку - не делайте этого! Телеграм предоставляет тестовых ботов, которые генерят платежную информацию для тестов, в них можно попасть через @botfather

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

Пока работают два сервиса: Яндекс.Касса и Stripe, оба требуют юр. лицо или самозанятость. Ещё есть сбербанк, но на момент тестирования его бот, какая неожиданность, лежал.
Не прошло и года использования Visual Studio 2019, как я обнаружил в ней инструменты для просмотра текущих состояний переменных не через дебаг.

Отдельно меня добило то, что значения переменных можно править прямо на ходу, как будто это Spyder для питона.
Forwarded from FEDOR BORSHEV
Запретить float

Что только не хранят программисты во float — деньги, количество и вес, сотни всего. Особенно умиляют координаты — неужели они их реально складывать и вычитать собираются?

Если кто не знает, float — это числа с плавающей точкой, которые не гарантируют точности. Верно, вам никто не обещает, что 0.1 + 0.2 будет равно 0.3. Если говорить грубо, причина в том, что в компьютере нет нецелых чисел — там вообще только нули и единицы.

Если вам надо хранить десятичные дроби, используйте специальные типы данных, которые для этого разрабатывались: Decimal, или что там у вас в языке. Подробнее почитайте на https://0.30000000000000004.com.
FEDOR BORSHEV
Запретить float Что только не хранят программисты во float — деньги, количество и вес, сотни всего. Особенно умиляют координаты — неужели они их реально складывать и вычитать собираются? Если кто не знает, float — это числа с плавающей точкой, которые не…
Таки да, года полтора назад, по неопытности, из-за float было много боли. Как правило, float начинает выдавать ерунду в 8-9 знаке и в целой части, и после запятой.

Я делал какие-то преобразования со временем в формате ticks (интервал длиной в сотню наносекунд). И долго не мог понять, почему у меня на промежутке времени в 30 лет вылезает неопознанная погрешность в 20-30 секунд.

В итоге, я просто перешел на double и проблема рассосалась. Но с тех пор возникло правило: начались странности с численными значениями? А проверь-ка, не используются ли где float?
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Красный)
Меня часто спрашивают: с чего начинать изучение программирования? Я всегда предлагаю ответить на вопрос: а зачем оно вам и насколько глубоко вы готовы погружаться в мир IT?

Впрочем, в большинстве случаев, совет один: начните с изучения основ Python. Да, он медленный, да, он довольно укуренный (не зря его голландец создал!). Но он даёт главное - быстрый результат. А также поддерживает интерес к кодингу.

Буквально за вечер можно слепить простенькую, но полезную программу из результатов запросов в гугле вида "питон как сделать то-то". Огромное сообщество пользователей даёт гарантию, что ответ найдётся на любой вопрос. С его помощью удобно автоматизировать рутину: надо делать что-то нудное и трудозатратное, но при этом однообразное? Спросите гугл, нет ли готового решения в Питоне для вашей проблемы.

А уже после первичного знакомства с программированием, получив уверенность в своих силах, можно искать другие варианты. Хотите стать веб программистом учите js+html+css, тестировщиком - Java или Python.

Если же хочется более глубоких знаний, тогда ваш выбор C# или Java на серьезном уровне, а для совсем упоротых - С++.

Eshu Marabo
#телеграм
Некоторое время назад бот, используемый нами в Сионе для обратной связи с читателями весело отрекламировал, как будто от нашего имени, ставки на спорт. Я и так ковыряюсь в телеграмных ботах, по такому случаю сделал бота для обратной связи. Ботов я пишу на c#, точнее - .net core.

Что из себя представляет подобный бот? Ему пишут читатели, он пересылает все сообщения, которые отправляются ему, в группу, где сидят авторы канала. Если кто-то отвечает на пересланное ботом сообщение, текст ответа передается читателю. Все достаточно просто, но есть несколько узких мест. Например, API телеграм ботов может переваривать не более 30 сообщений от бота в секунду, притом 1 сообщение в секунду одному человеку и не более 20 сообщений в минуту от бота в групповые чаты.

Для выполнения этих требований родился отправитель сообщений, который каждую секунду проверяет очередь на отправку и делает рассылку в соответствии с вышеназванными правилами. Отправитель я сделал еще до эпопеи с ботом-фидбэком, потому делал на совесть, накрывая его автотестами.
#телеграм
Одно из узких мест при ботописании – отправка сообщений, которая может занимать длительное время. Предположим, пришлось отправлять 10 сообщений одному человеку подряд. Интенсивность отправки – на грани лимита, уходить на сервера телеграма сообщения будут с разной скоростью, и может так сложиться, что случается уход нескольких сообщений одновременно => превышение лимита API, => санкции. Напомню, это делалось для бота-проверки слитости ТГ акков, где планируется работа на предельной нагрузке в течении долгого времени.

Накрывая тестами отправитель, я закладывал, что в случае отправки потока медленных сообщений (с фотками например), скорость должна проседать, т.к. в одну секунду каждому подписчику должно уходить не более одного сообщения в секунду.

Вот условие задачи: есть буфер, из которого раз в секунду происходит попытка отправления 30 сообщений. Если сообщение еще не отправлено, он его не трогает, если уже отправлено - заменяет на новое и отсылает. Если поставить в тесте равномерное распределение времени ухода сообщения от 0 до 2 секунд, сколько должна быть средняя скорость отправки относительно ситуации, когда сообщения уходят мгновенно?

Я неверно оценил с ходу целевое значение скорости отправки, в результате, тесты никак не хотели сходиться. Прошло 20 часов поиска, дебага и рассмотрения каждой точки кода, чтобы понять, что надо было лучше учить статистику в универе: все работало корректно, а моя оценка снижения скорости была неверной.
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Красный)
Интернет вещей: истинная опасность технологии 5G

Одной из технологий, с которыми часто связывают будущее, является интернет вещей - его развитие возможно, в том числе, благодаря скоростному 5G-интернету.

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

Все это живет своей жизнью, работает максимально эффективно, подстраивается под ваш ритм жизни, управляется движением брови, сообщает о скором выходе из строя. А также сливает прямую и косвенную информацию о вас корпорациям добра.

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

На этом этапе стоит ждать открытие новых перспектив в науке и технике: возможность быстрой беспроводной координации работы различных узлов и агрегатов может породить что-то интересное.

Еще одно интересное следствие – децентрализация вычислений. Сейчас в большинстве случаев трудоемкие операции (майнинг криптовалюты, обучение нейросетей, перебор паролей) выполняют на серверах. В наступившем интернете вещей корпорации, обслуживающие сети, получат возможность делегировать часть работы своих серверов пользовательским устройствам. Процессор в условной кофеварке слабенький, но, если взять миллион кофеварочных процессоров – совокупная мощность получится весьма достойной.

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

Про приватность можно и не говорить: Google/Apple уже знают о нас многое, ну а с развитым интернетом вещей осведомленность "большого брата" будет практчиески тотальной.

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

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

Eshu Marabo
Потыкав палочкой в PostgreSQL, поиграшись в создание таблиц и баз, я уперся в то, что ответы на мои вопросы вида "как сделать все по феншую" перестали гуглиться, потому засел за документацию. Огромный респект компании Postgrespro за качественный перевод официальной документации размером в... 2656 страниц. И все они написаны на первый взгляд нормальным языком, да еще пронизаны плотной сетью гиперссылок, что делает процесс изучения крайне удобным.
Текст задачки из прошлого поста: Ecть буфер, из которого раз в секунду происходит попытка отправления 30 сообщений. Если сообщение еще не отправлено, он его не трогает, если уже отправлено - заменяет на новое и отсылает. Если поставить в тесте равномерное распределение времени ухода сообщения от 0 до 2 секунд, сколько должна быть средняя скорость отправки относительно ситуации, когда сообщения уходят мгновенно?

Напрашивается ответ: она должна составить 15 в секунду, т.е. 0.5 от максимума, что на практике оказалось неверно.

Рассмотрим работу отправителя сообщений по шагам:
1. Положили в буфер 30 сообщений, выдали команду "отправить"
2. Через секунду ушла половина сообщений - 15 штук, 15 штук остались зависшими, т.е. 50%. На место ушедших поставили новые, нажали "отправить"
3. В третий такт ушли оставшиеся 15 сообщений со стартовой загрузки и половина от помещенных в буфер в прошлый такт, т.е. в сумме 75%. Помещаем на их места новые, жмем "отправить".
4. В четвертый такт уходит 25% (хвост со 2 такта) + (75%/2 c 3 такта), т.е. всего - 62.5%. Их места занимают новые, отправляются.
5. В пятый такт уходил 37.5% остатков с 3 такта + половина с прошлого такта, итого 68.75%.

Надо будет воскресить в памяти тервер и сделать аналитическое решение для автотестов, чтобы было прям по феншую, но пока я удостоверился, что мой отправитель сообщений работает корректно. Поставил экспериментально измеренное ограничение в 0.7 от скорости в идеальных условиях (т.е. 21 в случае, описанном в задаче) и продолжил разбираться в ботах.
#телеграм
Forwarded from СЛЕГ! <Z> ️
Государственная база полнее, свежее, но как всегда, пять разных наименований Москвы. 3 разных Питера, два Волгограда и так далее.

У нас в прессе строится цифровое ГУЛАГ государство, а в реале государевы базы данных выглядят так, что в них каждую ночь тролли ебались.

Когда там появятся программисты, дочитавшие учебник SQL до главы foreign key я не знаю.
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Красный)
​​В настоящий момент я изучаю опенсорсную систему управления базами данных (СУБД) PostgreSQL. Прародитель этого проекта появился еще в 1986 году в университете Беркли. Постепенно он вышел за пределы альма матер и стал развиваться сообществом по всему миру по принципу Open Source.

Суть такой разработки - в выкладывании исходного когда программ во всеобщий доступ. Любой желающий должен иметь возможность ознакомиться с кодом и при желании – предложить доработки/указать на ошибки. Как известно, если очень много глаз ищут ошибку – если она есть, то скорее всего будет найдена. Кроме того, возможность ознакомиться с кодом помогает специалистам сделать вывод о безопасности ПО.

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

Так что многие опенсорсные разработки полностью контролируют какие-либо корпорации. В PostgreSQL положение дел в общем-то нетипичное для проекта такого масштаба: развитие контролируется не какой-то одной компанией, а сообществом, состоящим, в том числе, из представителей трех коммерческих организаций: Fujitsu, 2ndQuadrant и российской Postrges Pro о которой я упоминал ранее.

Все компании продают свои версии PostgreSQl, адаптированные под разные рынки, но при этом развивают и материнский проект, добавляя в него новые наработки из своих продуктов. За счет этого, бесплатная PostgreSQL может тягаться со своими конкурентами от именитых корпораций добра: Microsoft и Oracle и находит применение в очень крупных проектах, например в Yandex и Avito.

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

Eshu Marabo
Начал читать книгу Конкуррентность в c#. Конкуррентность - это стрррашные вещи, типа многопоточности, асинхронности и параллелизма.

Осилив введение и дойдя до благодарностей малость выпал в осадок. Читаю дальше.
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Красный)
Разгораются страсти вокруг регистрации российской вакцины от коронавируса. Чего стоит хотя бы широко разошедшийся заголовок "в США отказались применять российскую вакцину даже на обезьянах".

По ситуации вокруг вакцины вышел годный, но очень длинный обзор. Вкратце: от вакцины никто не помер все идёт нормально и по плану. Разработчики уверены в своем детище, начинаются масштабные испытания, но этичность этих испытаний может быть под вопросом.

Тем не менее, в самом факте широкого использования экспериментальной вакцины нет ничего необычного: в 2018 г. вспышка лихорадки Эбола в Западной Африке была вовремя остановлена с помощью недотестированных вакцин.

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

Вакцина "Гам-КОВИД-Вак" против коронавирусной инфекции - разработка института им. Гамалеи. Примечательно, что большинство препаратов, разработанных в нем, не были признаны международным медицинским сообществом и нашли применение только в России и странах бывшего СНГ.

Кроме разработки фуфломицинов сомнительных препаратов, институт им. Гамалеи известен как создатель вакцины от лихорадки Эбола. Информации по ней немного, но публикации по ней выглядят прилично, да и опубликованы в нормальном журнале.

Что касается вопроса "прививаться или нет?" я бы посоветовал найти неангажированного специалиста (ваш участковый терапевт не лучшая кандидатура) и совместно с ним принять решение, учитывая ваши факторы риска.

Eshu Marabo
Дополню написанный некоторое время назад пост.

Вкратце, при ребрендинге Красного Сиона в Русский Футуризм я решал проблему массового изменения ссылок на наши посты, опубликованные ранее.

Телеграм ест форматирование текста (зачеркнутый, жирный и т.д) в виде html или Markdown разметки.

При этом, уже существующее сообщение в телеграме из кода выглядит как текст, к которому прилагаются Entities - описания, где указано, что с символа номер 10 следующие 6 символов - жирный, гиперссылка или другой вид форматирования.

Действие редактирования сообщения - это по сути отправка нового сообщения на место старого. Соответственно, чтобы выборочно поправить форматирование текста (те же гиперссылки), нужно на основании Entities воссоздать разметку текста текст, внести изменения (поменять в ссылке "redzion" на "rufuturism") и отправить сообщение. Изначально я подумал: зачем мне html, сделаю модно и молодежно, в макрдауне.

Вот тут-то всплыло несколько подводных камней:
1. Маркдаун, который ест телеграм - какой-то особенный, не соответствующий официальной спецификации.

2. Ни один из вариантов разметки зачеркнутого текста в маркдауне не распознался телеграмом как зачеркнутый.

3. Спецсимвол (\n, перенос строки) посреди выделения разбивает разметку, потому нужно разбивать её на два куска, до и после него.

В общем, после трёх часов попыток обойти все косяки этого формата, я плюнул и за 15 минут сделал функцию, воссоздающую разметку в html.

Отдельная тема - виды форматирования, поддерживаемые телеграмом. Так, например, ссылка на пользователя, у которого нету username-а (обращение через @), выглядит как гиперссылка из его имени с адресом tg://user?id=1234, где 1234 - user_id. Есть еще некий формат "pre", который должен поддерживаться телеграмом. В функцию для воссоздания разметки для него я сделал, но способа ввести текст в этом формате со стандартных клиентов, чтобы посмотреть как он выглядит, я не нашел.

В целом, основным результатом работы по замене ссылок в постах стала именно функция пересоздания разметки поста: она нашла применение и в боте для обратной связи и она очень пригодится в боте для отложенного постинга.
#телеграм
Forwarded from Архив КС/РФ(Сиона-Футуриста) (Красный)
​​При написании кода на страшных и несовременных языках С/С++ есть понятное правило: память занял - попользовал - уберись за собой, освободи её.

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

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

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

При обучении программированию в рядовых ВУЗах, принципам работы сборщиков мусора внимания не уделяется: упомянули на лекции и пошли дальше.

А вот так, чтобы была лабораторная работа, где специально покажут, как делать нельзя - это зачастую просто вне компетенции преподавателей, никогда не работавших в индустрии, что вообще является одним из пороков нашей системы образования, о чем я многократно упоминал ранее.
В чате Типичного Программиста человек скинул вступительные вопросы на IT магистратуру в Украине.

Перевод:
Сколько объектов и сколько ссылок создается в приведенном фрагменте кода на языке Python?

n=100
m=n

A) один объект, одна ссылка
B) один объект, две ссылки
C) два объекта, одна ссылка
D) два объекта, две ссылки

Самое прикольное в этом вопросе... что ни один из вариантов неправилен (по крайней мере для стандартного интерпретатора CPython).

CPython заранее создает и хранит объекты под числа в диапазоне [-5, 256], потому именно этот код создаст только две ссылки, притом на уже существующий объект, в котором хранится число 100.

Пруфы: ссылка на обсуждение целых чисел в питоне на Stackoverflow, и код объекта, представляющего целое число на гитхабе.

Как я понимаю, в случае, если бы было число вне этого диапазона, был бы создан один объект (само число) и две ссылки (т.е. вариант B)

В общем, вопрос "Что курил голландец Гвидо Ван Россум, когда придумывал питон?" остается открытым.
#python
2025/07/12 22:43:35
Back to Top
HTML Embed Code: