Задать вопрос
  • Как использовать классы через интерфейсы?

    @res2001
    Developer, ex-admin
    А теперь развейте вашу мысль с классами MySQLBase и класс MSSQLBase.
    Вы хотите сделать универсальный адаптер, который будет работать с любой БД. Он принимает на вход ссылку на IBase и спокойно вызывает метод ConnectToBase, не заботясь о том, что там в реальности MySQLBase или MSSQLBase.
    Ответ написан
    Комментировать
  • Проблемы с синхронизацией времени на Windows 10, дело в системных настройках?

    @res2001
    Developer, ex-admin
    Программно время синхронизируется по протоколу NTP. В винду встроен NTP клиент (есть и NTP сервер, но это уже другая история). По умолчанию время синхронизируется с NTP серверами микрософт (у меня стоит по умолчанию time.windows.com). Провайдер не имеет отношения к времени на вашем компьютере.
    В интернете хватает бесплатных публичных NTP серверов. Вы можете выбрать любой, который находится ближе к вам географически и настроить винду на синхронизацию с ним. Начните с https://ntp.org

    Если батарейка на материнке сдохла, то при выключении компа дата/время будет сбрасываться в некое нулевое время (а не замедляться или ускорятся).

    Часовой пояс в винде должен быть настроен правильно, т.к. время отображается в соответствии с настроенным часовым поясом.
    Ответ написан
    Комментировать
  • Kак написать программу на C использующую Shell?

    @res2001
    Developer, ex-admin
    Ваша программа должна запросить пользователя название запускаемого исполняемого файла, запустить на выполнение этот файл, дождаться его завершения, повторить весь цикл.
    Основные функции ОС, которые выполняют нужный функционал тут же перечислены: fork, execv, wait. Есть и другие функции ОС, которые могут быть полезны.
    Ответ написан
    Комментировать
  • Что нужно исправить в кодее сортировки merge, чтобы она правильно работала?

    @res2001
    Developer, ex-admin
    Может быть потому, что массивы в С/С++ индексируются, начиная с нуля, следовательно последний элемент будет иметь индекс (n-1), т.е. 50. А вы передаете в merge_sort в качестве right значение 51. Так что у вас выход за пределы массива. Так же вы используете начальное значение для left = 1, таким образом вы не обрабатываете 0 элемент массива.

    Кроме того. Заверните ваш код в тег code (кнопка </> на панели инструментов) и верните все отступы - код не возможно читать.
    Ответ написан
    Комментировать
  • Как WSL 2 запускает приложения на физ. машине Windows? Как сделать это в VirtualBox или VMWare?

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

    По настройке сети для WSL2: https://learn.microsoft.com/ru-ru/windows/wsl/netw...
    Все получается.

    Подключить физический диск в ВМ можно. Для virtualbox нписано тут: https://www.virtualbox.org/manual/ch09.html#rawdisk
    У vmware есть своя инструкция.

    Подключить к гипервизору физическую машину - нельзя. Можно "сконвертировать" физическую машину в виртуальную и запускать уже виртуальную. Вот, например, инструкция от virtualbox: https://www.virtualbox.org/wiki/Migrate_Windows
    Ответ написан
    Комментировать
  • Как сделать Bat файл для пинга вводимого хоста?

    @res2001
    Developer, ex-admin
    set /p name="Input the host name: "
    ping %name%

    Даже не знаю, что тут комментировать :-)
    Дополнительную информацию смотрите тут:
    set /?
    ping /?
    Ответ написан
    1 комментарий
  • Где изучать STL и Boost?

    @res2001
    Developer, ex-admin
    STL по сути часть языка, так что в любом учебнике по плюсам будут и основы STL.
    Boost - это такая расширенная версия STL, многие новшества перед тем как попасть в стандарт и соответственно в STL тестируются на Boost. Но в Boost содержится много того, чего нет в STL. У Boost своя хорошая документация, изучайте по ней и по примерам.
    Любые другие библиотеки изучаются по документации от разработчиков библиотеки. Если документации нет, бывает и такое, - по исходникам.
    Ответ написан
    Комментировать
  • Какой компьютер выбрать для программирования?

    @res2001
    Developer, ex-admin
    1. Как уже писали, для программирования много не надо. Но когда комп начинает тормозить в не подходящий момент - это не приятно.
    2. Ноутбук или стационарный ПК надо выбирать исходя из того как вы пользуетесь им. Если он все время на одном месте - то смысла в ноуте нет.
    3. Учтите, что стационарный выйдет дешевле при тех же характеристиках.

    Я недавно обновил свой ноут. У меня вопроса не стояло ноут или ПК, т.к. регулярно бываю на выезде, хотя основное время - дома на удаленке.
    Взял Lenovo Legion 5. Доволен как слон :-)
    У Леново есть еще хорошие варианты в рамках линеек ThinkPad T/P/X. В каждой линейке несколько моделей. Пишут, что thinkpadы сертифицируются для пентагона, так что там качество на высоте должно быть.

    Если все таки остановитесь на ноуте, обращайте внимание на то, что в некоторых моделях память распаяна на материнке и заменить (увеличить) ее практически не реально. Так же есть смысл смотреть на наличие дополнительного слота для SSD. Ну и наличие необходимых внешних интерфейсов то же может быть важным вопросом. Если подключаете внешние мониторы, то смотрите, чтоб были разъемы в нужном количестве и нужного типа.
    Обычно, можно купить ноут с небольшим SSD и количеством памяти и сразу проапгрейдить его, возможно будет дешевле, чем сразу покупать ноут с необходимым размером SSD и памяти. На процессоре экономить не стоит.
    На озоне сейчас есть наши продавцы, которые возят из китая. Доставка долгая - 1-1.5 месяца. Но сильно дешевле, чем брать там где "в наличии". Растаможка уже включена в стоимость. У продаванов из Китая растаможка, скорее всего, не включена, поэтому у них ценник будет еще ниже, но он, с большой вероятностью, не окончательный.
    Ответ написан
    1 комментарий
  • Как будет ходить трафик внутри сети?

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

    @res2001
    Developer, ex-admin
    Смотря какой доступ. Смотря из-под какой учетной записи запущена программа.
    Доступ к планировщику задач есть у всех, пользователь может создавать новые задачи, удалять старые и т.п.; доступ к реестру к пользовательской ветке есть у пользователя полный, к ветке HKLM - на чтение, к некоторым разделам доступ ограничен; автозапуск - это просто ветки реестра и каталог "Strtup" в меню пользователя, соответственно права доступа зависят от нахождения ветки/каталога - если это пользовательский реестр или меню, то доступ полный, если системный - на чтение; доступ к службам у обычного пользователя на чтение есть, на запись требуются админские права.
    Если есть доступ у пользователя, то есть доступ и у любых программ, запущенных под этим пользователем.
    Ответ написан
    Комментировать
  • Как открыть localhost для общей сети?

    @res2001
    Developer, ex-admin
    Как только ты дашь доступ из интернета к этому приложению по советам выше, приложение сразу же начнут ломать.
    Если приложение изначально не создавалось для работы в интернете, то скорее всего рано или поздно в нем найдут баг и сломают. А дальше может быть что угодно: внедрение шифровальщика/вымогатора, использование твоего компа в бот сети и т.п. не приятные вещи.

    Поэтому для приложений, предназначенных для использования в относительно безопасной локальной сети, стоит использовать ВПН, а не прямой доступ из интернета.
    Ответ написан
    3 комментария
  • Как в Windows, подключится сразу двумя пользователями к одному сетевому диску?

    @res2001
    Developer, ex-admin
    Надо "разлогиниться" и залогинится пользователем 2.
    Ответ написан
    3 комментария
  • Ввод текста с++?

    @res2001
    Developer, ex-admin
    Библиотека называется WinAPI.
    Видимо нужно найти нужное окно (по каким-то признакам) и начинать посылать туда сообщения о нажатии клавиш.

    Собственно к С++ эта задача особого отношения не имеет. Та же логика, видимо, была у вас и в питоне, только там все это уже было запрятано в готовую библиотеку. На плюсах может и есть такая готовая библиотека, но точно это не стандартная библиотека, надо искать что-то стороннее.
    Разных библиотек в исходниках и без на плюсах и Си очень много. Гуглите.
    Ответ написан
    Комментировать
  • Как вывести кириллицу в c++?

    @res2001
    Developer, ex-admin
    lololoshka_1991, Если совсем просто, то пиши исходники в кодировке cp866. Кодировка консоли по умолчанию как раз такая в русской винде. Но в этом случае и запускай программу руками из консоли, т.к. тот же MSVS может менять кодировку консоли при запуске программы из него.
    Так же кодировка консоли может меняться и командой в самой консоли. Например: chcp 1251
    В винде по умолчанию может быть 3 варианта кодировок с поддержкой кириллицы: cp866, cp1251, UTF8.

    Что бы сделать программу независимой от кодировки консоли, то придется заморочиться. Готового решения не встречал. По уму надо делать так: пишем исходники в UTF8, в программе узнаем кодировку консоли (WinAPI позволяет это делать), перед выводом весь текст перекодируем в кодировку консоли, после ввода весь ввод перекодируем в UTF8. Внутри программы работаем только с UTF8. Для хранения строк в программе использовать wchar_t, wstring и т.п. Функции перекодирования в WinAPI так же присутствуют.

    Кстати в плюсах есть метод std::basic_ios.imbue(), который позволяет задавать кодировку потока. Можно попробовать поиграть с этим. Но вообще менять кодировку консоли из программы - плохо, т.к. пользователь консольной программы может ждать ответ от запускаемой программы в конкретной кодировке. Это широко используется при написании батников и т.п. скриптов. Например большая часть виндовых команд корректно выводит текст не зависимо от того какая кодировка в консоли. Тот же dir, например.
    Ответ написан
    Комментировать
  • Как отправить байт(ы) в 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
    Просто считайте количество открывающих скобок и количество закрывающих. Причем, если на закрывающей скобке количество открывающих <= количества закрывающих, то ее не учитываем (или учитываем в ошибках закрывающих скобок), т.к. нет парной открывающей.
    Ошибки по открывающим скобкам будут, если в конце количество открывающих > количества закрывающих, количество ошибок открывающих скобок в этом случае = количество открывающих - количества закрывающих.
    Количество правильных скобок == количеству закрывающих (т.к. не правильные закрывающие мы не считаем).
    Ответ написан
    Комментировать