WSGlebKavash, так делает не только проприетарный софт. Некоторые приложения предпочитают устанавливаться в /opt. Например, у меня RocketChat туда поставился. Это не так плохо для некоторых категорий софта (особенно того, который очень большой и сложный и слабо зависит от общесистемных компонентов).
На других архитектурах фактически приложение запускается в эмуляторе. Это адовый костыль. В Linux тоже можно приложения через wine запускать, но родной для Linux софт просто компилируют сразу в нужную архитектуру и в идеале кладут в пакетную базу.
Типичный пример того, как не надо отвечать на вопросы. Пользователь скопирует простыню кода, он заработает, но что было изначально неправильно пользователь не поймёт и при решении следующей задачи повторит ту же ошибку.
А зачем? icecast умеет стримить много разных потоков в разных location.
Так-то это делается созданием кастомного конфига или набора конфигов, который передаётся каждому icecast через параметры. Также нужно будет решить вопрос с их запуском. Например, с помощью кастомного systemd-сервиса, где вызывается icecast с нужными ключами.
WSGlebKavash, если софт коммерческий, у производителя софта логичные претензии. Обычно он продаёт лицензию на одно рабочее место, а тут терминальный сервер, одна лицензия получится на дофига народу, поэтому вполне ожидаемое поведение, что за это хотят больше денег. Иногда вообще продают отдельные "терминальные" лицензии, которые вообще на конкретного пользователя, а не на систему.
С бесплатным софтом это чаще всего кривые фильтры. Мне когда-то давно попалась программа, которая не работала, если в системе не стоял Service Pack 2. Программа не учитывала, что это надо проверять только на XP, в итоге не работала на Windows 2003 SP1 и на более новых версиях Windows, хотя могла бы...
В общем случае это никак не решается. Тем более если производитель софта хочет помешать таким вот умельцам, он может проверять хреналион признаков серверной системы (вплоть до наличия файлов/служб/интерфейсов), и обмануть его станет крайне сложно.
Где-нибудь в банке вопрос запуска приложений строго на сервере мог бы быть важен, но у тебя, я думаю, проще не заморачиваться и для такого софта запускать его локально.
Тем более как минимум minitool явно не является остро необходимой программой, без которой нельзя жить на сервере... и наверняка значительная часть остальной части этого десятка тоже.
Астрологические вычисления в средние века проделывали на бумажке и достигали какого-то результата (сомнительного, конечно). А у нас компьютер, который может видео в 1920x1080 и даже больше в реальном времени показывать. Разумеется, никаких проблем посчитать то же самое, что считали на бумажке, у современного компьютера нет. Он это сделает быстрее и точнее.
Нужна ли база и что в ней хранить - это можно решить только при знании предметной области. Я в астрологии понимаю только то, что она не может работать от слова "вообще". Но подставить числа в средневековую формулу, скорее всего, её неработоспособность не помешает.
Василий Дёмин, не надо read().split("\n"), можно просто .readlines() и с пустой строкой проблем не будет. strip засунуть в приведение типа: int(x.strip()). Будет выглядеть даже проще. Ещё можно использовать for l in f.
В итоге:
f = [int(x.strip()) for x in open("24.txt","r")]
Но лучше сразу приучаться использовать контекстный менеджер, потому что файл в этом примере не будет закрыт до завершения скрипта.
with open("24.txt","r") as ff:
f = [int(x.strip()) for x in ff]
Насколько помню, select xxx into yyy предполагает получение 0 или 1 строк, иначе будет ошибка. Если 0 строк, будет null, если 1 - значение. Тут vID равно 1, так что подзапрос вернёт столько строк, сколько строк в таблице с именем table, с vID=1 и GG='Первый'. Возможно, вместо table хотелось использовать dual?
John Jameson, советую начать изучение вопроса с PyAutoGui. Это самый простой способ автоматизации действий. В идеале, конечно, надо проанализировать протокол игры и реализовать его самому, но это может быть очень сложно (особенно с учётом повсеместного использования SSL) и, вероятно, повышает риск бана аккаунта. Впрочем, риск бана есть при любой автоматизации - многие игры имеют разного рода механизмы для этого. Например, если среднее время реакции пользователя на появление бонуса меньше одной секунды, а он их собирает 24 часа в сутки, то это противоестественно.
Heyyyoo, на virustotal файл нулевого размера загрузили под именем android-cts-7.1_r6-linux_x86-arm.zip. Поэтому любые файлы нулевого размера считаются файлами, идентичными файлу android-cts-7.1_r6-linux_x86-arm.zip. Разумеется, в файле нулевого размера вирусов нет :)
И вообще, надо понимать, что InlineQueryResult это не сообщение. Это помощь в наборе пользователям сообщения. Бот даже не узнает, в какой чат это сообщение писали. Даже больше скажу, пользователь может сообщение не отправить совсем и бот об этом ничего не узнает.