Andrey_Kanaev, надо было более чётко указать, что суть задачи - в прибавлении 65536 после того, как следующее значение меньше предыдущего. Комментаторы именно этого не понимают.
Если заказ от владельца самого сайта, то вполне разумно попросить тексты у него в пригодном для работы виде (шаблоны страниц, выгрузки контента из базы итд итп).
wntkys, если разработчики tcc не реализовывали весь зоопарк тригонометрических функций с разным типом аргумента и значения, то tanf там может и не быть. Вообще лучше без серьёзных оснований компилятор не менять, особенно известный широкоиспользуемый на редкий. Выгоды от этого не будет, только потенциальные проблемы на пустом месте.
Я однажды пытался собрать код, который был написан для gcc, с помощью clang. Несколько мелочей поправил легко, а потом увяз в замысловатых шаблонных классах для хешированного доступа к сложным структурам, где в явных и неявных конструкторах копирования была мешанина константных и неконстантных аргументов, а на разборки с этим требовалось какое-то безумное количество времени. В общем, инструкция для сборки этой программы для FreeBSD в итоге начиналась со слов "установите gcc".
Telmor, подозреваю, mutes первый раз вызывается по таймеру до того, как бот инициализирует соединение с discord. Если это так, то должно помочь вставить в начало mutes
otvetvps, самое простое - повесить VPN-сервер на 443 порт. Дополнительно можно добавить sslh для того, чтобы 443 порт был похож на обычный сайт (потребуется разобраться в его настройке и повесить за ним web-сервер и страницу с котиками).
Father4, а если вручную запускать /home/administrator/webhook/redeploy.sh он работает? Добавь в скрипт отладочного вывода. Который будет писать что и как он делает, какие значения переменных и всё такое.
Darvel, что-то странно, у меня бесперебойник (Smart UPS 750XL) держал домашний сервак (обычный комп с не самым плохим железом) минимум минут по 40, только раз в 4 года надо было батарейки менять. И включался он у меня автоматически через Restore ACPI state. В идеале, конечно, ещё и IP KVM прицепить, но это уже более дорогое удовольствие.
В указанной ситуации, конечно, оптимально через модем отправлять SMS.
VegasChickiChicki, возможно, код в контейнере не работает под root, а ./api/ и ./client/ докер создал как раз под root. Надо вручную поменять им тогда права на того пользователя (uid), который используется в контейнере.
usiting, прямо в README библиотеки описано, что там все методы, как правило, придерживаются принципа именования вида getFile в API = get_file в библиотеке. А вообще если бы я получил такую ошибку - то пошёл бы смотреть в документацию. В крайнем случае сделал бы grep -r getFile в исходном коде и узнал бы, в каком методе класса делается вызов этого метода API.
rPman, сама постановка вопроса "переписать лучше" чаще всего бессмысленна. Переписать всегда намного сложнее, чем кажется. А ещё придётся наступить повторно на десятки грабель, решить повторно десятки проблем, доработать десятки недостающих аспектов функциональности... Пока этим занимаешься вместо поддержания продукта, клиенты уже выберут другого исполнителя.
Далеко не всякий продукт с дорогой поддержкой это "доработать две формочки". Поддержка - это не только доработки. Это также про отвечать на вопросы "как сделать то-то и то-то", "почему возникает ошибка" и "годится ли ваш продукт для решения такой-то задачи". Это также написание и постоянное поддержание в актуальном состоянии документации. Это тестирование и обновление (например, под новую версию Java или Windows 11).
Мой работодатель продаёт продукт как раз довольно дорогой, но вместе с поддержкой клиент получает также персонального инженера по внедрению (один инженер может вести нескольких клиентов), которого может позвать быть онлайн во время ночных работ по обновлению с субботы на воскресенье. И в поддержку входит далеко не только зарплата этого сотрудника. Туда также входит работа программистов, тестировщиков, техписа, проектного менеджера, оплата оборудования, лицензия на Oracle (продукт должен уметь работать на этой базе) и ещё много чего.
Далеко не всякую деятельность имеет смысл поддерживать своими силами. Например, банку держать в штате специалистов, умеющих в массовую рассылку емейлов или качественное распознавание штрих-кодов может быть не оправдано. Часто намного проще и удобнее покупать сторонние решения и сервисы. Это все делают. Даже если такие услуги стоят миллион в год, содержание на зарплате специалистов, которые будут обладать такими же компетенциями, и серверов, на которых всё это крутится, может оказаться существенно дороже. И самое главное, что всё это надо будет менеджить, что очень непросто, если замахиваться на слишком широкий спектр видов деятельности.
Нет универсального ответа на все ситуации. Каждая требует отдельного рассмотрения. И далеко не всегда единственно верного.
Для начала сделай MVP, на котором смогут поработать два пользователя. Увидишь какие допущены ошибки, какие проблемы возникают у пользователей, какие сценарии не были учтены. По итогам будет ясно, можно ли это расширять и улучшать или правильнее всё выбросить и переписать с нуля.
Если "большое количество пользователей" это 100 человек и каждый оставляет 10 сообщений в сутки, то это значит, что нужно принять и запостить 1000 запросов за сутки. Это вообще смешно, а не нагрузки. Тут даже в ratelimit тяжело будет угодить (для чего нужно чтобы примерно все пользователи отправили запрос одновременно!). 100 пользователей и 1000 постов для нового такого бота будет даже очень неплохо.