SOTVM, в моём случае это было на Solaris 10, там и так кроме древнего sudo хватало замысловатостей, например, у штатного ps не было нормальных ключей, что дико бесило...
У меня был старый EEEPC с 512 Мб оперативы. Так вот, там любой современный на тот момент браузер регулярно тупил (и иногда очень жёстко), потому что не помещался в память. Конечно, headless браузер на чём-то сэкономит, но в целом 512 Мб - это очень мало для браузера.
Как раз по этой причине приспособился любые левые ссылки открывать в инкогнито. А то потом при поиске в адресной строке подставляется миллион непонятного шлака, на который заходил год назад.
Добавлю, что теоретически возможна ситуация (и мне она встречалась), когда каким-то пользователям есть право делать sudo, а root - нет. Но это надо специально намудрить с настройкой.
Damian Lewis, анонимность обеспечивается не использованием VPN, а использованием комплекса мер. Пользователь неосторожными действиями легко выдаст довольно много информации о себе. Приведу просто пару примеров.
Если пользователь читает ящик vasya@mail.ru со своего домашнего IP почтовым клиентом, а через 10 минут этот же ящик читает такой же почтовый клиент с IP в Португалии, то можно сделать предположение, что на этом IP в Португалии всё делает тот же самый пользователь.
Если надо проверить, с какого IP выходит пользователь телеграма Vasya, то можно закинуть ему ссылку на какой-нить подконтрольный сайт, если он её откроет, увидит фото милого котика, но зато в логах веб-сервера осядет его IP. Далее мы можем увидеть, как на форуме некая Masha с того же IP пишет сообщения в том же стиле, что и забаненный на этом форуме пользователь Vasyanechka с ссылкой на профиль Vasya в Телеграме...
P747, проблема не в тех, кто вернулся или не вернулся. Проблема в том, что в отрасли куча проектов просто закроется. Высокая инфляция, покупательная способность населения падает, рынок уменьшается, людей нужно меньше и их будут "оптимизировать".
Но это ударяет в наибольшей степени по специалистов самой низкой IT-квалификации (джуны, эникейщики). На опытных специалистов с знаниями, опытом и способностями решать сложные задачи спрос есть всегда..
rPman, это было следующее, что я хотел предложить проверить - оптимизации :)
В своё время товарищи обнаружили, что рекурсивные фибоначчи на java работают быстрее, оказалось, что gcc при вызове каждой функции пушит в стек два регистра, а при завершении - достаёт обратно.
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?