usiting, прямо в README библиотеки описано, что там все методы, как правило, придерживаются принципа именования вида getFile в API = get_file в библиотеке. А вообще если бы я получил такую ошибку - то пошёл бы смотреть в документацию. В крайнем случае сделал бы grep -r getFile в исходном коде и узнал бы, в каком методе класса делается вызов этого метода API.
rPman, сама постановка вопроса "переписать лучше" чаще всего бессмысленна. Переписать всегда намного сложнее, чем кажется. А ещё придётся наступить повторно на десятки грабель, решить повторно десятки проблем, доработать десятки недостающих аспектов функциональности... Пока этим занимаешься вместо поддержания продукта, клиенты уже выберут другого исполнителя.
Далеко не всякий продукт с дорогой поддержкой это "доработать две формочки". Поддержка - это не только доработки. Это также про отвечать на вопросы "как сделать то-то и то-то", "почему возникает ошибка" и "годится ли ваш продукт для решения такой-то задачи". Это также написание и постоянное поддержание в актуальном состоянии документации. Это тестирование и обновление (например, под новую версию Java или Windows 11).
Мой работодатель продаёт продукт как раз довольно дорогой, но вместе с поддержкой клиент получает также персонального инженера по внедрению (один инженер может вести нескольких клиентов), которого может позвать быть онлайн во время ночных работ по обновлению с субботы на воскресенье. И в поддержку входит далеко не только зарплата этого сотрудника. Туда также входит работа программистов, тестировщиков, техписа, проектного менеджера, оплата оборудования, лицензия на Oracle (продукт должен уметь работать на этой базе) и ещё много чего.
Далеко не всякую деятельность имеет смысл поддерживать своими силами. Например, банку держать в штате специалистов, умеющих в массовую рассылку емейлов или качественное распознавание штрих-кодов может быть не оправдано. Часто намного проще и удобнее покупать сторонние решения и сервисы. Это все делают. Даже если такие услуги стоят миллион в год, содержание на зарплате специалистов, которые будут обладать такими же компетенциями, и серверов, на которых всё это крутится, может оказаться существенно дороже. И самое главное, что всё это надо будет менеджить, что очень непросто, если замахиваться на слишком широкий спектр видов деятельности.
Нет универсального ответа на все ситуации. Каждая требует отдельного рассмотрения. И далеко не всегда единственно верного.
Для начала сделай MVP, на котором смогут поработать два пользователя. Увидишь какие допущены ошибки, какие проблемы возникают у пользователей, какие сценарии не были учтены. По итогам будет ясно, можно ли это расширять и улучшать или правильнее всё выбросить и переписать с нуля.
Если "большое количество пользователей" это 100 человек и каждый оставляет 10 сообщений в сутки, то это значит, что нужно принять и запостить 1000 запросов за сутки. Это вообще смешно, а не нагрузки. Тут даже в ratelimit тяжело будет угодить (для чего нужно чтобы примерно все пользователи отправили запрос одновременно!). 100 пользователей и 1000 постов для нового такого бота будет даже очень неплохо.
Akina, использование произвольных адресов в сети оператора, не предоставленных этим оператором, вполне легко подвести под условия даже самого незамысловатого договора. За торчащий в сеть оператора DHCP-сервер вообще всегда блочили без разговоров.
Достаточно обычное дело, когда оператор ставит своё оборудование для предоставления своих услуг.
Akina, ничто не запрещает нахождение каких угодно сетей внутри одного vlan для владельца этого vlan. Сторонние пользователи указывать владельцу vlan не могут и это вполне нормально. Провайдер имеет полное право запрещать пользователю подключать неизвестные адреса в его сеть, более того, это легко классифицируется как нарушение договора, особенно если это реально что-нибудь сломает.
Один из самых крупных провайдеров Москвы, типа должен быть "местячковый", заменил как-то в одной серьёзной организации одну железку на другую. В первой железке были отдельные vlan, вторая (как оказалось потом) просто кидала все 4 разных сети (три в разные ведомственные сети и одна в интернет с внешними IP) одним vlan к нам. Мы воткнули 4 провода... А не работает. И неочевидно почему. Коненчно же, надо было просто отключить STP, но это, блин, один из крупнейших провайдеров города, как так?
В России уже довольно много пользователей официального WhatsApp Business API (можно написать тестовое сообщение МВидео/Эльдорадо, Совкомбанку, Детскому Миру - там ответят). Просто они все подключаются через партнёров Цукербука.
Для Телеграма клиентский API (протокол MTProto) открыт и его можно использовать. Есть готовые библиотеки.
poisons, мы не услышали от автора никаких подробностей. Если это его внутренний DNS, то его надо снаружи закрыть. Если у DNS есть внешние пользователи с какими угодно адресами, то закрывать его нельзя, но можно пытаться отслеживать паразитный трафик или попытки эксплуатации уязвимостей. Если это master-сервер какого-то домена, то можно скрыть его существование, разрешить 53/tcp+53/udp только с явно прописанных серверов и настроить возможность AXFR/IXFR с них, а зону делегировать на тех самых сторонних slave-серверах. Короче, варианты есть, но варианты зависят от подробностей задачи. Я потому и задал вопрос.
Никаких состояний не было нужно, просто при нажатии на кнопку делается переход в другой узел меню (необязательно иерархически). Единственное, что там имеет состояния, это конфигурация чата, соответствующие кнопки не по меню перемещают, а редактируют текущее сообщение.
Никита Каменев, вообще-то в данной истории проблему представляет не столько сам софт, сколько инфраструктура, которую придётся готовить. Потребуется сооружать кластер из виртуалок/серверов, управление процессом раздачи заданий и всё такое. Пяти виртуалок на это точно не хватит, ведь минимум секунду от каждого сервера надо будет ждать ответа.
Готового такого инструмента, разумеется, не найти. Можно попробовать нанять кого-нибудь, кто всё это организует. Но в целом задача выглядит как идиотская. Непонятно, зачем нужно знать живость 250 миллионов совершенно никак не связанных между собой сайтов, значительная часть которых - просто мусор всякий.
Akina, чепуха. Внутри своей сети провайдер может использовать какие угодно адреса из числа глобально немаршрутизируемых сетей по своему усмотрению. Он же их не анонсирует в BGP (именно это ему и запрещено). Пользователю эти адреса никак не мешают, так как пользователь не ходит через сеть провайдера на эти адреса - он ходит только на внешние адреса в интернет.
Пользователь может у себя внутри использовать что угодно. Но к сети провайдера он с этими адресами подключаться не должен. Пусть делает нат у себя.
Akina, в этом отношении провайдер и пользователь равны. То есть пользователь тоже обязан в таком случае не светить подобными адресами в сеть провайдера.
romaro, да, всё верно, имя объекта может включать путь к нему. Есть ли там какие-то лимиты не знаю, но с 5 уровнями вложенности проблем у minio не возникало. Насчёт экспорта в aws ничего сказать не могу.