Задать вопрос
  • Правильно ли написан скрипт командной строки?

    @res2001
    BjornBorn,
    Нужно ли в конце скриптов писать exit или не обязательно?

    Не обязательно.
    Вроде всё работает

    Ну newFile.cmd у вас создается, только он вызывает ошибку при выполнении, т.к. его содержимое не корректно.
    Т.к. текст ошибки пишется в stderr, а его вы не перенаправляете в index.php, то index.php получается пустым. Саму ошибку можно увидеть, если запустить в консоли полученный newFile.cmd.
    Думаю правильней было бы как-то так:
    echo set /p =^<nul ^>index.php> newFile.cmd
    Полученный в результате newFile.cmd не вызывает ошибки при выполнении и генерирует пустой index.php
    Написано
  • Как исправить заполнение ОЗУ?

    @res2001
    awjfuwg,
    моя проблема (то есть следствие заполненности памяти) это крашинг приложений, а иногда и системы когда я запускаю процессы/программы которые потребляют выше 3000 МБ

    Как известно, вся память в винде виртуальная и каждый процесс реально может использовать очень много памяти.
    При этом если физической памяти меньше, чем требуется виртуальной, то включается механизм использования файла подкачки и процессы все равно будут работать. Да они будут работать медленно, но падать из-за нехватки памяти не будут.

    Так что я бы на вашем месте разбирался с приложениями которые падают.
    Падающая система - это вопрос другой. ОС падает обычно или из-за кривых драйверов или из-за неисправности оборудования. Из-за дефицита памяти система падать не должна.

    1. Проверьте включен ли у вас файл подкачки, какие лимиты установлены на него, хватает ли свободного места на дисках, где расположен файл подкачки.
    2. Протестируйте с пристрастием память, как писали выше. В случае битой памяти ошибки могут быть самые разные и часто никак не указывающие на проблемы с памятью. Если на тестах будут ошибки и у вас несколько плашек памяти, то нужно установить какая из плашек сбоит - оставляйте только одну плашку и прогоняйте тест. Битые плашки придется заменить.
    3. Еще одна аппаратная проблема, которая приводит к странному поведению системы - "уставший" блок питания. Когда появляется дополнительная нагрузка требуется больше мощности, но старый блок питания может не выдавать требуемую мощность и это то же может приводить к необъяснимым ошибкам. Тут проще всего найти другой БП и погонять комп с ним, если ошибок не будет - значит проблема со старым БП.
    4. Дальше можно протестировать диски, провести нагрузочное тестирование на процессор, видеокарту с диагностического загрузочного носителя.
    5. Если тесты результатов не дадут ... ну я бы уже на этом этапе переустановил винду, т.к. это гораздо быстрее, чем разбираться с ее ошибками. Но, если любите трудности, можно и поразбираться, правда без гарантий.
    Написано
  • Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?

    @res2001
    Дамир Валиахметов,
    т.е. после первого ввода пары значений просто появляется пустая строка

    Да это не пустая строка, это то что ты видишь в ходе работы ReadLine в этом участке кода.
    while (Console.ReadLine() == stopWord);
    А это
    Console.WriteLine("Если хотите выйти введите exit: ");

    просто делает немного яснее происходящее.

    Я же тебе писал, что у тебя не 2 ввода значений, как ты похоже думаешь, а 3. Третий раз ты получаешь от пользователя exit или любое другое значение, которое интерпретируется как продолжение ввода.
    Написано
  • Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?

    @res2001
    Дамир Валиахметов,
    Мне нужно чтобы программа выдавала запрос на ввод имени и возраста пока юзер не введет exit

    У вас сейчас в коде пользователь должен вводить данные 3 раза на каждой итерации цикла:
    1. имя
    2. возраст
    3. признак возврата: exit или все что угодно для продолжения.

    Вы хотите какое-то другое поведение?
    Написано
  • Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?

    @res2001
    Дамир Валиахметов, За исключением того, что по ссылке криво выводятся русские буквы, остальное все отработало так как надо.
    Разве что вы не выполнили этот совет, поэтому вам возможно и не понятно что делает ваш код и в каком состоянии программа в данный момент времени: Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?
    Написано
  • Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?

    @res2001
    Дамир Валиахметов, Скиньте сюда что происходит при запуске программы. Чтоб было видно, что программа выдает, что вы вводите и т.п.
    Написано
  • Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?

    @res2001
    Дамир Валиахметов, while (Console.ReadLine() != stopWord);
    Внимательно прочитайте описание цикла и поймите чего вы хотите добиться этим условием.
    Написано
  • Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?

    @res2001
    Дамир Валиахметов, После ageDictionary.Add(name, age); можно добавить
    Console.WriteLine("Если хотите выйти введите exit: ");

    Тогда уже будет понятней
    В while должно быть сравнение на не равно.
    Написано
  • Как реализовать ввод данных в консоль пользователем, пока он не введет определенное слово?

    @res2001
    Т.к. до этого циклы изучались только в рамках ввода чисел. А как работать с вводом в цикле не понимаю.

    С вводом работать одинаково, хоть в цикле, хоть не в цикле. Циклы и ввод - это разные действия, друг с другом никак не связанные, вы их связываете только алгоритмом вашей программы (т.е. порядком выполнения инструкций).

    В цикле читайте стандартный ввод и проверяйте, что там пользователь ввел. Если "exit", то завершаем программу, если что-то другое - очередная итерация цикла.
    На эту задачу хорошо ложиться цикл do {} while с постусловием.
    Написано
  • Как написать скрипт на bat?

    @res2001
    IvanU7n, Да, тут есть. Думал установилось как часть OpenSSH сервера. Но возможно уже есть и по умолчанию, не проверял. Спасибо!
    Написано
  • Как написать скрипт на bat?

    @res2001
    IvanU7n, Не нашел.
    У меня Вин11 с последними обновлениями.

    Правда scp у меня есть в разных видах - есть как часть OpenSSH, есть winscp, есть в WSL, в putty. Но "родной" виндовой утилиты нет, она бы, видимо, лежала в system32 - там ничего похожего нет.
    Написано
  • Как написать скрипт на bat?

    @res2001
    Нафига вы понаставили этих $$$$$? - тут же не perl и не bash. Просто ваш код резанул по глазам, можете не обращать внимания :)

    В целом подход правильный. Сам когда-то делал подобные сценарии для ftp.
    Пробовал просто в командной строке ввести команду,

    Вот с этого на самом деле и надо начинать. Сделайте все руками в ком.строке ftp, когда в этом режиме все получится, просто те же команды сунете в батник. Пока не добьетесь правильной работы в ручном режиме, нет смысла автоматизировать - только усложните отладку. Сами команды ftp, что в ком.строке ftp, что в ftp сценарии одни и те же.
    В самом ftp скудная справка из которой сложно что-то понять. Более подробно по командам ftp смотрите тут: https://learn.microsoft.com/en-us/previous-version...

    Что у вас там за кракозябры появляются местами?
    Вывод ftp "Consider using PASV." видимо говорит о том, что ftp сервер работает в пассивном режиме, клиенту то же надо задать этот вариант работы.

    Вообще к слову, ftp старый и не удобный протокол. Лучше бы использовать что-то другое. Можно например scp попробовать, правда встроенной поддержки в винде нет, надо использовать что-то стороннее (putty например).
    Написано
  • Почему собранный проект pyinstaller при вызове .bat не может выполнить команду start?

    @res2001
    В ключе /d команды start надо указывать "startup directory", т.е. текущий каталог, который будет выбран для запускаемой программы. У вас указан путь к исполняемому файлу.
    Если программа не зависит от текущего каталога, то ключ можно убрать вообще.

    При этом если заменить Popen на run, то всё работает,

    Вы уверены, что у вас вообще что-то выполняется?
    Т.к. вы запускаете батник, то видимо надо указывать параметр shell=true для popen, В Винде, в отличие от линукса, батники - это не исполняемые файлы, их умеет исполнять только cmd.exe. В линуксе ядро само способно запустить shell и в нем запустить скрипт (винда так не умеет).
    Кроме того смущает, что у вас же сразу после subprocess.Popen идет exit. Есть шанс, что до запуска второго процесса дело не доходит.

    Что бы понять что происходит на самом деле надо:
    1. Анализировать код возврата popen, обрабатывать его исключения
    2. Добавьте в конце батника команду pause, что бы окно сразу не закрывалось и вы смогли увидеть вывод команд. Того же самого можно добиться перенаправив потоки stdout и stderr батника в файл или с помощью popen.

    PS: Я не слишком силен в питоне, знаю его немного, пишу тут из-за тега cmd/bat.
    Написано
  • Vcpkg: почему видит хедеры, но не видит cpp файлы?

    @res2001
    forIXsins, Обычно нет нужды использовать отладочные версии библиотек, разве что вы хотите отладить саму библиотеку. Так что как правило используют release сборку библиотек всегда.
    Вот тут сказано как устанавливать только release версиии: https://learn.microsoft.com/en-us/vcpkg/get_starte...
    Тут вроде бы дается рецепт как заставить vcpkg использовать нужный вариант библиотеки: https://learn.microsoft.com/en-us/vcpkg/users/buil...
    Написано
  • Vcpkg: почему видит хедеры, но не видит cpp файлы?

    @res2001
    forIXsins,
    UPD2: Нашёл решение - поменял конфигурацию решения с Debug на Release и всё заработало

    Решение так себе, т.к. наверняка вам захочется в процессе разработки своего проекта использовать отладчик (даже если пока такой мысли не возникает). С release версией вы его использовать не сможете, а debug - у вас не собирается.
    Предполагаю, что надо просто установить debug версию библиотеки с помощью того же vcpkg. Как это сделать - смотрите в его документации.
    Впрочем должно быть и какое-то другое, более правильное, решение, т.к. ситуация когда используется библиотека в release сборке, а само приложение собрано в debug - вполне нормальная ситуация. Предполагаю, что просто надо задать в VS какие-то опции, чтоб она использовала сборки библиотек, те которые вам нужны, а не по собственному усмотрению. Какие именно опции задать, я не в курсе. Вероятно это рулится какими-то опциями/переменными VCPKG.
    Написано
  • Vcpkg: почему видит хедеры, но не видит cpp файлы?

    @res2001
    Не скажу ничего про vcpkg, мало с ним знаком. Но сами принципы подключения библиотек общие, каким бы компилятором или пакетным менеджером вы не пользовались. Про них и напишу пару слов.

    vcpkg - это просто пакетный менеджер, он ничего "не видит", ему это до лампочки. Он просто устанавливает пакеты из репозитория по правилам описанным в самом пакете.
    "Видит" или "не видит" компилятор при сборке проекта. НО!
    Когда вы подключаете библиотеку, то cpp/с файлы библиотеки не нужны в принципе компилятору. Он использует уже скомпилированный код в lib/dll (a/so) файлах. Для правильной сборки вашего проекта компилятору нужны только файлы заголовков библиотеки, т.к. в них описаны сигнатуры экспортируемых функций для формирования правильного вызова. А само тело функции найдется в lib/dll файле.
    Если у вас не хватает какого-то символа из библиотеки (а остальные все на месте), то возможно несколько вариантов:
    1. используемая вами версия библиотеки старая (или наоборот новая) и этого символа в этой версии библиотеки в принципе нет - он появился только в более новой версии библиотеки (или он устарел и его удалили из новой версии библиотеки). Как правило узнать об этом можно из документации на библиотеку, ну или порывшись в исходниках.
    2. Этот символ вообще не из этой библиотеки и вам нужно подключить еще какую-то.

    Для полноты вопроса вам надо добавить текст ошибки, которые выдает компилятор, чтоб людям было понятней, на что конкретно он ругается.
    Написано
  • Как реализовать VPN-соединение до удалённого сервера с установленным Vipnet?

    @res2001
    планировал подключаться к закрытым ресурсам через VPN по стандартному для Windows протоколу PPTP

    Уж лучше SSTP использовать, то же стандартный для винды.
    VPN Vipnet блокирует входящие пакеты

    Возможно в одном из двух ВПНов (или в обоих вместе) ВПН подключение является маршрутом по умолчанию.
    На сколько я понял вам доступ по ВПН нужен только к корпоративным ресурсам. Поэтому выключите галку "использовать как маршрут по умолчанию" (не помню точно как она называется, находится где-то в глубине настроек IPv4 ВПН соединения) и добавьте маршурты до корпоративных ресурсов вручную. Маршруты надо будет добавлять как на стороне клиента, так и на стороне промежуточного Windows Server 2022. С помощью команд powershell (Add-VpnConnectionRoute) можно добавить статические маршруты, которые будут добавляться в таблицу маршрутизации при подключении к ВПН.
    При такой настройке ходить в корп.сеть вы будете через ВПН, а в интернет будете попадать напрямую.
    Написано
  • Какой гипервизор (на базе основной ОС, а не автономный) из популярных (VirtualBox, VMWare и др) больше подходит для бэкенд разработки и тестирования?

    @res2001
    tests12345, Похоже у вас каша в голове. У снапшотов достаточно узкое предназначение, не нужно их натягивать на темы куда они не натягиваются (2, 3). К тому же снапшоты удовольствие не бесплатное - платите и дисковым пространством хоста и некоторым замедлением дисковых операций в ВМ. Особенно когда у вас будут "ветки снапшотов" для одной ВМ.

    Из виртуализации использую на винде в основном WSL для большинства задач. Но иногда подключаю VirtualBox - мне регулярно бывает необходимо установить специфические сборки линукса, в WSL это проблематично. В целом WSL удобна в том плане, что у тебя винда и линукс в одном флаконе, практически "бесшовно". Да, есть еще некоторые вопросы с интеграцией, но это мелочи. Очень не плохо микрософту удалась интеграция VSCODE + WSl. Да и GUIевые линуксовые приложения теперь запускаются в винде почти как родные.
    На линуксе - VirtualBox.
    В принципе VirtualBox хватает, виртуалками, кстати, можно управлять из питона - в установочный пакет входят модули для питона. Бывает полезно.
    Написано
  • Как из одного приложения запустить другое?

    @res2001
    Only4You, Вот сейчас нагуглилась инструкция от микрософт по настройке удаленного WMI подключения:
    https://learn.microsoft.com/ru-ru/windows/win32/wm...
    Раньше ее как-то не находил, но были и инструкции от других авторов. Я ж писал выше, что требуется дополнительная настройка, не только вопрос с UAC.
    По ссылке самое основное - это настройка фаервола. Вроде бы хватало только открытие 135 порта тем или иным способом. По моему psexec использует тот же механизм для удаленного запуска, что и wmi/wmic и видимо schtasks то же.
    Пункт про CIMOM я вообще первый раз вижу.

    Вот еще не плохая инструкция по psexec: https://hackware.ru/?p=11638

    В общем эти инструменты работающие, надо только немного приложить голову и руки для настройки окружения.
    Написано