Rsa97, а я тупо в браузере линки копипастил. CORS обходить надо, эмулируя браузер, заполняя origin предыдущим урлом, например. Ну и имхо вопрос тут не о CORS а о том, почему размер неправильный прилетает, что вы корректнее меня объяснили.
Ну да. В git_url JSON+base64 плюс переводы строки, и размер этого JSON'а вы и видите, когда грузите файл с git_url. А в download_url бинарь с Content-Type: octet-stream. И был неправ про size, прошу прощения.
В комментах написано, что они запилили приложуху к nextcloud, которая управляет блокировкой файлов, и "типа оно работает". Называется W2G2. Посмотрите, можете ли поставить её на свой NC, если да, может её хватит.
let percentComplete = (event.loaded / data) * 100;
здесь ошибка. Вы делите на данные, а не на их размер, во-первых, а во-вторых, если вы ожидаете скачивания, делить надо на event.total потому как вы заранее не знаете размер получаемых данных.
Ну и в идеале в каждом хэндлере пилите обе ветки по lengthComputable, в одной выводите только количество байт, во второй ещё и процент.
Проверяйте работу DNS в домене - виден ли сервер, заполнены ли суффиксы подключения, заполнены ли PTR-записи (необязательно, но некоторым надо)? Что в eventlog компа при отработке GPO, может там ошибки подключения?
Угу, а сколько выведет программа, если ей скормить 1, 2 и 5? Вместо sys.exit() лучше использовать хотя бы throw, чтобы обработать ошибку снаружи. Ну и многовато вопросов для одного поста.
Agent Ksined, попробуйте скормить его 7zip'у, вдруг это архив. Если окажется, что он распознает архив, ищите внутри *.jar от того софта, который хотите поставить. Если нет, просмотрите notepad++, вдруг это текст нормального скрипта и там написано, откуда скачать искомый jar. Если не получится, то и "сконвертировать" не выйдет (как минимум так просто).
Рундук, например https://github.com/owncloud/core - чем не "наработки"? Ну и всё это ПО можно у себя поднять вместо самописных поделок с большей гарантией того, что его не сломают при работе через интернет.
Ещё посмотрите в сторону тех мониторов, которые умеют поворачиваться широкой стороной по вертикали. Код обычно довольно узкое пространство занимает, и часто надо именно ползать по методу, который может и не поместиться на экран 16:9, а вот на 9:16 уже влезает.
У вас кстати не масштабирование как таковое, а клонирование инстанса, если исходный к тому же пустой, то де-факто это называется новая установка. Приложения-то на разных поддоменах независимы!
А проблема в вашем коде в том, что ему пофиг, в каком порядке проходить ребра графа. Например, сначала Magnesium потом Molybdenium, или сначала Molybdenium потом Magnesium. Так как M-M элементов в списке пять, это порождает 5! = 120 перестановок только их, после чего у вас выполняется 118 итераций списка на наибольшей глубине, и на каждом сравнении вы делаете startsWith(). А ещё есть циклы M-E-M и M-Y-M, которые можно пройти независимо от M-M и которые есть в *каждом* пути наибольшей длины. Всё это ужасно медленно, и пусть ваш код когда-нибудь таки завершится (и вроде бы даже вернет результат), вам нужно упростить данные для обработки и алгоритм написать так, чтобы он не проверял уже пройденные вершины в каждом цикле. Например, на каком-то этапе рекурсии вы прошли некий элемент, выкиньте его из копии списка оставшихся возможностей.