• Как отправить байт(ы) в COM-порт?

    @res2001
    Developer, ex-admin
    Сохраните ваши командные байты в файлы в двоичном виде.
    Отправить файл в последовательный порт можно так:
    type file.dat >COM1
    Ответ написан
    1 комментарий
  • Как удалить все строки после 10й строки?

    @res2001
    Developer, ex-admin
    Есть специализированная команда head, с помощью которой можно вывести N первых строк файла:
    head -q -n 10 file.txt >file_new.txt
    rm file.txt
    mv file_new.txt file.txt
    Ответ написан
  • Обход Dom дерева как то относится к дискретной математике?

    @res2001
    Developer, ex-admin
    Изучайте, конечно. Прирост даст, но не в обходе ДОМ.
    ДОМ и так что-то из этого уже использует под капотом, вы этим пользуетесь, вызывая стандартные методы.
    Ответ написан
    Комментировать
  • Как раздать серые ip провайдера в локальную сеть?

    @res2001
    Developer, ex-admin
    Обычно, когда вы арендуете целиком подсеть, то у вас есть эта подсеть + еще какой-то белый адрес не из этой подсети, который выдается оператором для внешнего интерфейса и через который будет происходить маршрутизация вашей подсети оператором. Соответственно на шлюз на внешний интерфейс вешается этот отдельный адрес, а в локальной сети назначаете адреса из подсети (статически или через DHCP). Т.е. все то же самое, как и при использовании серых адресов, только в случае с серыми адресами подсети их вам никто не выдает (выбираете любой диапазон по собственному усмотрению) и вы обязаны использовать NAT для выхода в интернет.

    Если же у вас только подсеть, то используйте ответ Andrey Barbolin
    Ответ написан
    1 комментарий
  • Как передать динамический массив в функцию?

    @res2001
    Developer, ex-admin
    sizeof(chars) в результате дает размер указателя (8 - для x64 систем, 4 - для х32 систем), а не размер строки. Чтоб получить размер строки надо его передать в функцию (str.size()) или вызвать strlen уже внутри.
    sizeof(*chars) всегда в результате равен 1, т.к. размер char по стандарту 1 байт.

    Вам не нужно 2 цикла. Я так понимаю, вы хотели различать четное и не четное количество символов в строке.
    Но если количество элементов четное, то мы должны обработать все элементы массива при этом количество итераций цикла будет strlen(chars)/2. А если количество элементов не четное, то центральный элемент мы пропускаем и количество итераций будет то же strlen(chars)/2, за счет того, что тут используется целочисленное деление и остаток от деления отбрасывается.

    В функцию можно передавать ссылку на объект string, а не сырой массив (c_str()). string позволяет обращаться на прямую к каждому символу отдельно с помощью операции индексации (str[i], так же как и сырые массивы). При этом возвращать что-либо из функции не нужно, т.к. вы будете манипулировать непосредственно данными самого объекта и все изменения будут видны в main.
    Ответ написан
    Комментировать
  • Как упростить проверку на правильность круглых скобок?

    @res2001
    Developer, ex-admin
    Просто считайте количество открывающих скобок и количество закрывающих. Причем, если на закрывающей скобке количество открывающих <= количества закрывающих, то ее не учитываем (или учитываем в ошибках закрывающих скобок), т.к. нет парной открывающей.
    Ошибки по открывающим скобкам будут, если в конце количество открывающих > количества закрывающих, количество ошибок открывающих скобок в этом случае = количество открывающих - количества закрывающих.
    Количество правильных скобок == количеству закрывающих (т.к. не правильные закрывающие мы не считаем).
    Ответ написан
    Комментировать
  • Какой софт есть для RDP подключений windows->windwos аналог remmina?

    @res2001
    Developer, ex-admin
    RDP подключения можно сохранять как *.rdp файл. Заводите каталог с набором RDP файлов. Все.
    Ответ написан
    Комментировать
  • Как изменить имя выходного файла через CMakeLists.txt?

    @res2001
    Developer, ex-admin
    На счет имени таргета посмотрите тут: https://stackoverflow.com/questions/31038963/how-d...
    С каталогом, ну я бы в проекте сделал подкаталог MyDir и в нем свой cmakelists.txt с описанием таргета для библиотеки. Библиотека будет собираться в своем подкаталоге. В корневой cmakelists.txt включать подкаталог с помощью add_subdirectory(MyDir)
    Ответ написан
    1 комментарий
  • Почему не полностью отзывается клиент?

    @res2001
    Developer, ex-admin
    Что клиент подключается к серверам с разными ключами? Ну тогда надо отзывать и второй клиентский ключ.

    Вообще в вашей конфигурации нет смысла создавать клиентам разные ключи. Вам ничто не мешает синхронизировать клиентские ключи на серверах, точно так же как и список отзыва.
    Кстати для списков отзыва есть протокол OCSP, позволяющий проверять списки отзывов по сети. В этом случае отпадает необходимости передавать файлы со списком отзыва по серверам. Но тут, конечно, надо заморочиться с поднятием и поддержкой OCSP сервера и нужно указывать URL OCSP при создании сертификатов.
    Ответ написан
  • Можно ли подключится к удаленному реестру Windows под определенным пользователем?

    @res2001
    Developer, ex-admin
    Если выключить UAC на удаленном компе, то можно, зная логин/пароль админа, естественно.
    При удаленном подключении нет возможности повысить привилегии процесса, как это происходит при локальном запуске приложения.
    Не выключая UAC того же самого можно добиться установив ключ реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\LocalAccountTokenFilterPolicy в 1. Если такого ключа нет, то его надо создать по указанному пути с типом DWORD. Он отключает UAC при сетевых подключениях и повышение привилегий не требуется.
    Для справки: https://learn.microsoft.com/ru-ru/troubleshoot/win...
    Ответ написан
    Комментировать
  • Как исправить Error C4700: использована неинициализированная локальная переменная "x"?

    @res2001
    Developer, ex-admin
    Переменная x при определении не инициализируется. Впервые в коде встречается в этой строке:
    y = pow(x, k * 1) + fabs(pow(sin(x), 2) + sqrt(1 + pow(sin(x), 3)));

    Т.е. вы что-то пытаетесь вычислить используя данные из переменной х. Какое значение имеет переменная x в этом выражении? Т.к. вы не задаете значение переменной в программе до использования переменной, то переменная содержит любое произвольное значение, мусор.
    С переменной t все аналогично.
    Ответ написан
    Комментировать
  • Что означает синтакс const char *format [, argument]... в документации?

    @res2001
    Developer, ex-admin
    Функция с переменным числом аргументов, но минимально должен присутствовать 1 - format, все остальные опционально.
    Ответ написан
    1 комментарий
  • Какие протоколы нужно разрешить и какие не следует?

    @res2001
    Developer, ex-admin
    443 и 80 используются веб серверами (HTTP(S)), и это TCP. Тут UDP не используется.
    53 - это DNS запросы, могут быть как UDP (по умолчанию) так и TCP.

    На самом деле никто не мешает использовать любой порт любому протоколу (т.е. любое приложение может открыть любой порт если он не занят и хватает прав). Но то что я привел - это стандартная практика. Другое дело, что протоколы верхнего уровня обычно жестко связаны либо с TCP либо с UDP, но бывают исключения (тот же DNS).
    Ответ написан
    Комментировать
  • Как придумать архитектуру сервера на c++?

    @res2001
    Developer, ex-admin
    Можно на одну комнату один поток, тогда сокеты игроков делаете не блокирующими и используете асинхронные сетевые операции с двумя сокетами в одном потоке.
    Но если уж делать сокеты не блокирующими, тогда ничего не мешает в одном потоке обрабатывать сразу несколько комнат. Обычно создают пул потоков по количеству ядер процессора и размазывают всю нагрузку по всем потокам. Но надо добиться того, чтобы обработка данных игроков в одной комнате происходила в одном же потоке, так избавитесь от разделяемых данных и не надо будет синхронизировать потоки (мьютексы и т.п.).
    Ответ написан
    Комментировать
  • Как правильно подключать make-файл из одной директории к make-файлу из другой?

    @res2001
    Developer, ex-admin
    При включении с помощью include так и делают, т.к. для включенного makefile текущим каталогом будет каталог откуда вызван первичный makefile, а отсюда файлы в подкаталоге доступны только с указанием пути. include же по сути просто вставляет текст одного файла в другой и все.
    Другой вариант - не использовать include, а запускать make рекурсивно для каждого подкаталога с переходом в этот подкаталог (вроде ключ -с в make).
    Ответ написан
    Комментировать
  • В каких случаях логичней чтобы получить половину умножать на 1/2, а в каких делить на 2?

    @res2001
    Developer, ex-admin
    Есть такие микроконтроллеры, где нет аппаратного деления. Оно там реализовывается программно и работает оооочень долго. Вот прям заметно дольше. И если деление на константу идет в цикле, то в таком случае выгоднее один раз перед циклом вычислить 1/2, а затем умножать на результат деления. 1/2 тут для примера, конечно.
    С подобными процами лично сталкивался и был неприятно удивлен фактом такой просадки производительности на делении.
    В общем случае, даже на современных настольных процах от интел или амд операция деления выполняется дольше умножения. Счет идет на несколько процессорных тактов. Иногда это может играть роль.

    Если же речь о целочисленном делении на 2, то тут эта операция заменяется сдвигом вправо на 1 бит, что работает быстрее и умножения и деления. Впрочем подобные вещи компилятор сам в состоянии сделать при включенной оптимизации.
    Ответ написан
    Комментировать
  • Как организовать ввод данных в bat-файле?

    @res2001
    Developer, ex-admin
    В составе putty есть клиент командной строки, там можно задать пароль в командной строке или сохранить в конфигурации putty и использовать конфигурацию для подключения.
    Для правки конфига, наверное, есть смысл конфиг просто скачать, локально его отредактировать, а затем записать новый. Для скачивания файлов из ком.строки в putty то же есть утилита.
    Ответ написан
  • Как исправить код?

    @res2001
    Developer, ex-admin
    Видимо препод хочет, чтоб программа могла работать с несколькими значениями А и N.
    1. Ввод A и N и расчет периметра выносите в отдельную функцию.
    2. В main делаете вечный цикл, где спрашиваете пользователя что-нибудь типа "Давай еще посчитаем (1 - да; 0 - нет)". Если пользователь вводит 1, то выполняете функцию из п.1, после ее выполнения снова спрашиваете пользователя. Если пользователь вводит 0 - break из цикла и завершение программы.
    Ответ написан
    Комментировать
  • Как считывать данные в файл?

    @res2001
    Developer, ex-admin
    cin и cout - это объекты классов потоков ввода и вывода в консоль. Объекты cin и cout объявляются автоматически, т.е. вам не нужно создавать эти объекты, они уже созданы внутри стандартной библиотеки.
    Есть в std классы ifstream и ofstream, которые являются потоками ввода/вывода в файлы. Объекты этих классов не создаются автоматически, но вы можете создать эти объекты вручную и указать при создании с каким файлом объект должен работать. Дальше заменяете все cin/cout на объекты классов ifstream/ofstream.

    Есть другой вариант. Вообще не менять программу, но при запуске перенаправлять потоки stdin/stdout в файлы, что-то типа такого:
    prog.exe <file_input.txt >file_output.txt
    В этом случае в программе объекты cin/cout автомтатически начинают использовать file_input.txt для ввода и file_output.txt для вывода.
    Ответ написан
    Комментировать
  • Можно ли управлять всеми настройками windows через cmd?

    @res2001
    Developer, ex-admin
    Сейчас более актуально управление из powershell. По крайней мере сама микрософт сейчас активно posh продвигает.
    В cmd из коробки можно управлять много чем. Многие настройки винды лежат в реестре, а реестр править из cmd можно, правда применять большую часть настроек, внесенных правкой реестра на прямую, придется перезагрузкой компа.
    Выключить и перезагрузить комп можно командой shutdown.
    Ответ написан
    Комментировать