Задать вопрос
  • Отправить GET / HTTP Запрос на https сайт?

    @res2001
    Developer, ex-admin
    Из средств из коробки можно написать скрипт на js/vbs, в нем, используя объект MSXML2.XMLHTTP, можно делать HTTP запросы. И там же можно дальше парсить ответ.
    Ответ написан
    Комментировать
  • Как Получить точное синхронное время в миллисекундах на множествах девайсах от rtc?

    @res2001
    Developer, ex-admin
    Раз речь идет о сетевых устройствах, то вам, видимо, нужна реализация NTP для вашего девайса и ОС. Посмотрите RFC 5905, может найдете, что-то готовое или реализуете сами. Собственно, возможно, реализовывать придется только транспортную часть, т.к. логику можно взять из уже существующего ПО.
    Ответ написан
  • В чём роль параметров в батфайлах?

    @res2001
    Developer, ex-admin
    В скрипте не переменные окружения, а ввод параметров с клавиатуры: set /p ...
    Вместо этих команд используйте
    set "var1=%~1"
    set "var2=%~2"

    %~1 и %~2 - первый и второй параметры командной строки.
    Ответ написан
    Комментировать
  • C:\Users\оля\AppData можно как то переименовать на C:\Users\Olya\AppData?

    @res2001
    Developer, ex-admin
    Самый простой вариант - завести нового пользователя с именем Olya и работать из-под него.
    Другие варианты сложнее.
    Ответ написан
    3 комментария
  • Как объединить столбцы результатов запросов в MSSQL?

    @res2001
    Developer, ex-admin
    select '1' as 'a', '2' as 'b', '3' as 'c'
    Ответ написан
    Комментировать
  • Как отрыть файл из командной строки?

    @res2001
    Developer, ex-admin
    Очевидно ошибка на команде:
    git add compile release resource
    Судя по тексту - git не может найти compile.
    Похоже, все таки надо делать cd, т.к. вы запускаете дополнительную оболочку - git-bash, а у нее каталог по умолчанию, скорее всего, домашний каталог пользователя, а не тот, из которого вы ее запускаете.
    Проверить просто - запустите из командной строки вручную git-bash без параметров и посмотрите, какой каталог выдаст команда pwd.
    Ответ написан
    Комментировать
  • Почему клиент не подключается к OPEN VPN серверу?

    @res2001
    Developer, ex-admin
    Судя по тому, что TLS key negotiation отваливается по таймауту - скорее всего сервер не доступен (выключен, блокируется трафик, не проброшен порт и т.п.).
    Ответ написан
    6 комментариев
  • Какие есть утилиты для атаки на Openvpn сеть, можно ли их идентифицировать в локальной сети через Wireshark?

    @res2001
    Developer, ex-admin
    OpenVPN гораздо лучше работает по UDP, чем по TCP, особенно при плохом качестве связи.
    Ответ написан
    1 комментарий
  • Как запретить другим использовать мой интернет в OPENVPN?

    @res2001
    Developer, ex-admin
    Убирайте: push "redirect-gateway def1 bypass-dhcp"
    это выключит изменение шлюза по умолчанию, а следовательно клиенты и дальше смогут ходить в инет.
    Зачем это: push "dhcp-option DNS 8.8.8.8"?
    Если у клиентов есть интернет, то они уже имеют свой собственный настроенный DNS. Уберите.
    В целом должно работать.

    Если не заработает, подключите клиентак ВПН и на клиенте посмотрите таблицу маршрутизации, в ней маршурт по умолчанию должен быть прежним (как до подключения). Если с этим все нормально, но инета нет, то видимо причина в другом.
    Ответ написан
  • Почему не работает перевод из 2 в 10 и обратно?

    @res2001
    Developer, ex-admin
    В DecBin() 2 ошибки:
    1. Вы заполняете строку с конца, а нужно с начала. Обратите внимание на вывод 173 (если не брать во внимание мусорный хвост, о котором в п.2) - ответ правильный, только записанный наоборот.
    2.После преобразования нужно добавить завершающий 0, т.к. на выходе у вас Си строка. Соответственно памяти нужно выделять на 1 байт больше необходимого. Из-за отсутствия завершающего нуля вывод не заканчивается в конце вашего буфера, а продолжает выводить содержимое памяти после буфера, пока не встретит нулевой байт, отсюда и мусор в конце.
    Можно и не добавлять нулевой байт, но в этом случае не нужно относится к возвращаемому DecBin() указателю как к строке, а работать с ним как с массивом байт. Т.е. выводить строго заданное количество байт.
    Ответ написан
    1 комментарий
  • Что это обозначает в коде С++?

    @res2001
    Developer, ex-admin
    edgeStruct x{}, tmp{};
    Определяет 2 переменные x и tmp типа edgeStruct с пустым списком инициализации.
    Ответ написан
    Комментировать
  • Задача со стеками, в чем ошибка?

    @res2001
    Developer, ex-admin
    min и max у вас считаются нормально, но когда вы их находите вы очищаете стек: bus.pop();
    В итоге в третьем цикле, где вы находите imax и imin у вас пустой стек.
    Вам нужно в одном цикле объединить поиск min/max и imin/imax, к тому же это напрашивается само.
    Ответ написан
    Комментировать
  • Как правильно подключить библиотеку в С++?

    @res2001
    Developer, ex-admin
    1.Библиотека должна быть установлена в систему, что бы cmake смог ее найти. Лучше всего использовать штатный менеджер пакетов ОС. Кроме библиотеки нужно еще ставить и dev пакеты для нее (это заголовки). dev пакеты нужны как раз для возможности собрать свой (или не свой) код, использующий библиотеку. В некоторых дистрибутивах линукс может и не быть dev пакетов. В винде их нет то же, для MSVS есть свой менеджер пакетов - vcpkg.

    2.Вы должны заставить cmake найти библиотеку, это делается командами find_package или find_library.
    find_package - более расширенная версия, но для нее нужен модуль поиска. Для многих популярных библиотек cmake содержит уже готовые модули. Искать их можете тут по Find<Имя библиотеки>. Для MySQL клиента готового модуля нет. Можно загуглить, я думаю, будет не трудно найти готовый модуль и использовать его в своем проекте.
    find_library - просто ищет библиотеку по стандартным путям. Но для сборки обычно этого мало, т.к. нужны еще заголовочные файлы и если пакетный менеджер ставит их в специфические пути, то они будут не доступны. Поэтому лучше использовать find_package - он ищет все.

    3.Добавить путь к заголовочным файлам библиотеки к проекту с помощью команды: target_include_directories
    Переменная, содержащая путь должна быть определена в п.2 (либо вы задаете путь вручную)

    4.Добавить библиотеку в список линковки с помощью команды: target_link_libraries
    Аналогично нужно использовать переменные, которые будут определены в п.2.

    В этом процессе есть разные нюансы, которые могут влиять на используемые средства, например что делать если библиотеки нет в репозитории ОС или она распространяется только в виде исходников.

    В итоге все манипуляции приводят к тому, что компилятору задаются опции -I (для включения каталога с заголовочными файлами библиотеки), -l и возможно -L - для включения библиотеки в список линковки.

    Все это можно сделать и руками задав для компилятора нужные опции с помощью add_compile_options и add_link_options - но это приведет к тому, что скорее всего на другом компьютере или в другой ОС вам придется править cmakelist.txt для сборки.
    Ответ написан
    3 комментария
  • Чем принимать REST API HTTPS запросы?

    @res2001
    Developer, ex-admin
    Т.е. вам нужен HTTP сервер на Си.
    libonion - только Линукс, SSL есть.
    haywire - кросс-платформенно, по моему он не умеет SSL.
    Ответ написан
    Комментировать
  • Почему в VS программа на СИ работает неправильно, хотя в онлайн компиляторе все в порядке?

    @res2001
    Developer, ex-admin
    У вас куча операций с файлами, любая может вернуть ошибку. У вас в коде нет ни одной проверки ошибок.
    Были бы проверки ошибок, возможно это вам бы помогло.
    В reverseOrder() - используется рекурсия, по тексту заданий я вообще не понял, где там можно было бы применить рекурсию. Возможно ошибка где-то тут.
    В 1.3 вы странно вычисляете count - strlen() возвращает количество символов уже без учета нулевого символа. Зачем вы еще вычитаете 1?

    Вообще задания у вас линейные. Я бы немного видоизменил решение, что значительно бы упростило код.
    А именно - вводите строку и сразу делаете над ней всю обработку и распихивание по файлам. Потом следующую вводите и обрабатываете и так до конца.
    Ответ написан
  • Как происходит создание переменных в Си?

    @res2001
    Developer, ex-admin
    Немного усложните программу, например написав парочку функций, которые определяют еще несколько переменных и что-нибудь в них пишут. В main() вызовите эти функции, а затем объявите test и выведите его значение. Вот тогда у вас гарантированно образуется мусор. При компиляции, нужно еще предотвратить оптимизацию компилятором (опция -O0), а то он может выкинуть вызовы функций, если посчитает, что они не влияют на дальнейшее выполнение программы.

    Что бы понять происходящее, почитайте как работает стек.
    Автоматические переменные определяются на стеке. Одно и то же место на стеке в разное время выполнения программы могут занимать разные переменные. Если вы не инициализируете автоматическую переменную, то она принимет то значение, которое уже лежит в области памяти, которую она занимает. Из-за того, что переменные имеют разный размер, то часто, например текущая 4 байтовая переменная (int) может занимать память, в которой до этого были 2 двух байтовые переменные, или любые другие вариации.
    Стек выделяется при загрузке программы (или при старте потока). В ходе выполнения программы стек не освобождается и не перевыделяется, поэтому мусор (данные от старых автоматических переменных) в нем образуется постоянно. При выходе автоматической переменной из области видимости фактического освобождения памяти не происходит - просто изменяется указатель на стек (регистр sp), т.е. при этом не происходит даже обращения к памяти. Поэтому все ранее сохраненные в стеке значения в памяти остаются. И когда вы определяете новую переменную без инициализации, она занимает ранее освобожденное место и принимает какое-то значение (мусор), которое ранее было сохранено в эту область памяти.
    Ответ написан
    Комментировать
  • Как сделать модуляцию звука?

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

    @res2001
    Developer, ex-admin
    someprogram.exe - консольная?
    Если ошибки и вопросы выводит в консоль, а ответа ждет на stdin, то ответы на вопросы можно записать в текстовый файл (например answer.txt) и перенаправлять его вместо стандартного входа:
    someprogram.exe ... <answer.txt

    Если же someprogram.exe графическая утилита и вопросы возникают в своих окнах, то тут гораздо сложнее, но то же выход есть - нужно использовать утилиты типа nircmd или autoit, чтоб с их помощью в появляющиеся окна вводить информацию или нажимать какие-то кнопки. Эти утилиты умеют эмулировать действия пользователя, все это делается соответствующими скриптами.
    Ответ написан
    1 комментарий
  • Установка cURL на CodeBlocks на MinGW на Windows?

    @res2001
    Developer, ex-admin
    Установите msys2 - это оболочка для mingw со своим менеджером пакетов.
    Любой имеющийся в репах пакет устанавливается так же как в линуксе - одной командой.
    В msys2 можно установить одновременно и 32 битный и 64 битный mingw, а так же clang.
    mingw установленный в msys2 легко прикручивается к любой IDE.
    Ответ написан
    1 комментарий
  • Дана таблица с пояснением синтаксиса NAL unit'a. Как её трактовать?

    @res2001
    Developer, ex-admin
    Стандарт.
    next_bits( n ) описана чуть выше таблиц:
    next_bits( n ) provides the next bits in the bitstream for comparison purposes, without advancing the bitstream pointer. Provides a look at the next n bits in the bitstream with n being its argument. When used within the byte stream format as specified in Annex B and fewer than n bits remain within the byte stream, next_bits( n ) returns a value of 0.

    next_bits( n ) - возвращает следующие n битов в битовом потоке.

    nal_unit() и nal_unit_header() не функции - это такое описание структур, когда сама структура имеет плавающий размер, зависящий от параметров.
    nal_unit_header() - не зависит ни от чего и ее размер фиксирован.
    nal_unit() зависит от NumBytesInNalUnit, этот параметр должен быть заранее известен. Например он может быть протчен ранее из того же битового потока или задается другим способом.
    В цикле вычисляется размер массива rbsp_byte.
    В разделе 7.4 таблицы описываются словами.
    Ответ написан