Какие-то пользователи сами добавляют через формочку, какие-то они могут находить через репосты и всё такое. В любом случае, вряд ли они захотят просто так отдавать свою базу каналов.
Dr. Bacon, есть определённые потуги к стандартизации DE в рамках freedesktop.org, так что да, есть унифицированный механизм для меню, и устанавливаемый софт в менюшке появляется вне зависимости от того, какой DE используется пользователем.
Про пароли и переустановку sudo фигня какая-то. Надо было просто полностью перелогиниться. Для проверки групп использовать команду id -a [юзернейм], она бы показала, что до перелогина группы не поменялись.
Алексей Леонтьев, дык если каталог непустой то он не будет удалён. А в нынешних условиях каталоги с другими подкаталогами удаляться не будут - они ж на момент выполнения find непустые.
@alexbprofit
compile не защитит от внедрения произвольного кода и не позволит избежать бесконечного цикла, разрастания по памяти, обращения в сеть и прочих посторонних вещей, от которых мы пытаемся защититься.
ITpie, Docker - система запуска приложений в изолированном окружении, используя доступные в Linux технологии: namespaces и cgroups. В каком-то смысле контейнеры - это "лёгкие" виртуальные машины, которые работают на одном и том же ядре, но отделены от основной системы и друг от друга и имеют свою собственную сеть (network namespace), точки монтирования (mount namespace, развитие идеи chroot), процессы (pid namespace) и ещё некоторые другие сущности. Необязательно использовать именно докер, можно вообще создавать namespace'ы для запускаемого процесса явным образом, но докером можно сделать это довольно быстро.
В общих чертах это может выглядеть так. Сделаем образ для Docker, в котором будет python и нужные модули. Для каждого скрипта будем его вместе с тестовыми данными подсовывать в создаваемый для теста контейнер, в котором отсутствует доступ к сети (при желании можно также навертеть ограничений на использование процессора, памяти итд). Если контейнер не завершился за оговоренное время, будем гасить его принудительно.
Нужен Linux с Docker, запустить build.sh, чтобы собрать образ (он будет называться testing), затем можно запустить test.sh, который запустит скрипт script.py, внутри которого бесконечный цикл. В test.sh раз в 5 секунд идёт проверка состояния контейнера, если через 60/5=12 проверок контейнер ещё не завершился - он будет принудительно завершён. У меня скрипт устевает выполнить цикл 72 раза, это из-за того, что каждый вызов docker inspect для получения состояния контейнера тратит примерно секунду.
Даниил, можно представить себе "треды" (hyperthreading) в процессоре как имитацию полноценных процессоров без настоящего дублирования компонентов процессора в камне, в отличие от "ядер" (core). С точки же зрения софта и то, и другое - самостоятельные процессоры.
А треды в программистском смысле - это возможность исполнять код параллельно в пределах одного процесса с одной и той же общей памятью. Это совсем другое. Кстати, далеко не всегда треды исполнены в виде настоящих или псевдопроцессов, например, треды могут быть реализованы как особенности исполнения байткода в однопоточной виртуальной машине.
Threads в процессоре и threads в операционной системе/прикладном ПО - разные вещи.
Тогда почему вообще вся ОС не асинхронная
В каком-то смысле она и есть асинхронная. Реагирует на системные вызовы, на события, а в остальное время работает пользовательский софт либо всё засыпает в ожидании причин проснуться.
Sanes, ты не понимаешь, что такое CORS и как работает. Это именно подсказка браузеру в ответе сервера, которую браузер (или иной http-клиент) может просто игнорировать.
Например, можно создавать докер-контейнер без сети с полученным скриптом и установленными определёнными модулями, который убивать, если он не завершился по таймауту. Если даже туда засунут рассылку спама, ничего не выйдет, ведь сеть недоступна.
kiryan2, конкретно в этом коде, как уже указали, bot.polling никогда не вызывается, потому что написан в функции, которая сама, в свою очередь, вызывается из bot.polling. В основном теле скрипта создаются переменные bot и owm, а затем скрипт завершается. Всё работает ровно так, как написано.