• Из-за чего может плавать скорость по wi fi от 1 до 7 мбит?

    @res2001
    Developer, ex-admin
    При загрузке

    Откуда грузите?
    Если из интернета, то виновником может быть сервер откуда вы грузите. А так же любой промежуточный узел по маршруту следования пакетов. То что вам обещает провайдер в договоре - это скорость на "последней миле", т.е. от оборудования провайдера до вашего роутера. Ваш провайдер не может гарантировать такую же скорость до любого сервера в интернет.
    Ответ написан
    Комментировать
  • Как в cmake слинковать статично одну библиотеку?

    @res2001
    Developer, ex-admin
    Я обычно библиотеки подключаю, используя pkg_check_modules.
    Эта функция ищет и динамические и статические библиотеки, используя pkg-config.
    Для статических библиотек возвращается свой набор переменных с префиксом <PREFIX>_STATIC. Для подключения статической библиотеки используйте эти переменные.
    Ответ написан
    Комментировать
  • Можно ли управлять всей программой с помощью скриптового языка?

    @res2001
    Developer, ex-admin
    Так же lua (как и другие скриптовые языки) можно встраивать в собственное приложение.
    Оба варианта имеют место быть, вопрос лишь в том кто главный и кто рулит тут всем.
    При использовании подхода из ответа shurshur главный - интерпретатор скриптового языка (и твое приложение, написанное на этом языке), а твоя С/С++ библиотека - один из модулей используемых скриптом.
    При встраивании главное твое приложение, которое может вызывать скрипты для каких-то своих целей. Скрипты могут использовать объекты твоей программы, для которых ты разрешил это действие.
    Выбор реализации во многом зависит от того, что хочется получить в итоге.
    Ответ написан
    Комментировать
  • Как вернуть первые N максимальных элементов из массива без сортировки массива?

    @res2001
    Developer, ex-admin
    Вместо сортировки можно использовать алгоритм выборки k-той статистики (quik select).
    Алгоритм не полностью сортирует массив, а только те элементы, которые необходимо для получения k-ой статистики. Для вашей задачи алгоритм надо вызывать N раз (с параметром от 1 до N).
    Чтоб не портить оригинальный массив можно сделать копию, содержащую ссылки на элементы оригинального массива и вызывать алгоритм на копии.

    Если N относительно не большое и массив не велик, то можно просто искать максимум N раз. При нахождении очередного максимума заменять значение элемента на минимально возможное и сохранять ссылку на измененный элемент. После нахождения всех N максимумов - восстанавливать значения в массиве.
    Ответ написан
    3 комментария
  • По какой причине несовместимость библиотек?

    @res2001
    Developer, ex-admin
    Тут скорее причина не в "несовместимости", а в "cannot find -lcpprest: No such file or directory"
    Проверьте существует ли библиотека по указанному пути. Скорее всего ее нет.
    Надо разобраться почему ее нет. Я так понимаю, она должна собраться вместе со всем остальным.
    Может не хватает каких-то ключей для сборки и т.п.

    При сборке включите режим verbose и проверьте весь вывод make, есть ли там упоминание о сборке libcpprest.a
    Ответ написан
  • Как получить дату -3 дня?

    @res2001
    Developer, ex-admin
    Батники не умеют работать с датами. Все переменные там - строки.
    Вы можете вручную разделить дату на составные части и вычислить -3 дня.
    Так же можно написать вспомогательный скрипт на JS/VBS, которые умеют работать с датами. В скрипт передавать дату и он будет вычислять -3 дня и выводить ее в stdout, где батником можно эту дату прочитать.
    Или же вы можете использовать powershell вместо cmd, там, наверняка, можно решить вашу задачу без лишних телодвижений.

    Но вам же для чего-то нужна дата "-3 дня". Если знать для чего вы пытаетесь вычислить такую дату, то может найдутся и другие способы ее решения, без вычисления.
    Ответ написан
    9 комментариев
  • Подключение по VPN к RDP: почему не работает?

    @res2001
    Developer, ex-admin
    Подсоединяюсь по VPN в локальную сеть, все ок

    Как вы подсоединяетесь в локальную сеть? Как вы видите, что все Ок?
    Пинги с ВПН клиента до любого компьютера в сети идут? Подозреваю, что пинги не идут.

    Скорее всего вам надо на ВПН клиенте добавить маршрут до сети за ВПН сервером через ВПН адрес маршрутизатора.
    Делается это командой: route add ...
    Для справки смотрите route /?

    Cогласен с Сергей - фаервол может блокировать трафик. Причем фаервол на любом промежуточном узел, а у вас их 3: ВПН клиент, ВПН сервер, RDP сервер. Любой из 3 фаерволов может блокировать трафик.

    Антивирус скорее всего не при делах.

    Прежде чем добиваться работы RDP рекомендую добиться, что бы работал пинг на внутренние адреса в локальной сети. Кроме того антивирус на пинги не влияет, хотя фаервол может блокировать и их.
    Ответ написан
  • Как грамотно это сделать? Сравнение файлов?

    @res2001
    Developer, ex-admin
    Вычислять offset

    Вычислять ничего не нужно. Сравнивайте по символьно, не используя strcmp (или memcmp) и offsetом у вас будет текущий индекс. Кроме того для текстового варианта вам не нужен "глобальный" offset, т.к. вы будете сравнивать построчно. Т.е. offset только внутри данной конкретной строки.
    Для бинарного сравнения - все то же самое, но offset будет глобальный, тут уже сиволы CR и LF роли не играют.
    Имейте ввиду, что в винде перевод строки это CRLF (0x0D 0x0A), а в никсах LF (0x0A)
    Ответ написан
    Комментировать
  • Как запустить exe через cmd?

    @res2001
    Developer, ex-admin
    Вроде cmd не поддерживает URL.
    Попробуйте использовать start для запуска. start /?
    Можно подключить шару, затем запустить программу, после завершения программы отключить шару.
    net use /?
    Ответ написан
    Комментировать
  • Сервер-клиент openvpn win не видят за собой локальную сеть. как исправить?

    @res2001
    Developer, ex-admin
    Подключение ВПН на клиенте и сервере создает дополнительный виртуальный сетевой адаптер со своим IP адресом. Программное обеспечение ВПН отвечает только за трафик, который попадает внутрь ВПН. Все остальное конфигурируется стандартными средствами: таблицы маршрутизации, фаерволы, NAT. В openvpn некоторые настройки таблиц маршрутизации можно (нужно) указывать в конфиге ВПН, а не напрямую править таблицы в ОС. Все это относится к любой ОС - принципы работы openvpn одинаковы в линукс и винде.

    Обычно конфиг клиента делают максимально "легким". Там указывают только необходимые опции для подключения к серверу (протокол, адрес и порт сервера, параметры шифрования и логирования). Все что касается маршрутизации между сетями (route, push route) убирается в конфиг сервера.
    Опция push "route ..." - добавляет маршрут на удаленной стороне. Т.е. если опция указана в конфиге сервера, то маршрут добавляется на стороне клиента.
    Для добавления маршрута на стороне сервера в конфиге сервера используется опция: route

    CCD файлы:
    У вас не правильный синтаксис для опции ifconfig-push.
    Правильный такой: ifconfig-push client_ip mask
    Т.е. IP сервера не требуется указывать.
    В опции iroute указываем сети за этим конкретным клиентом. Эти маршруты добавятся в таблицу маршрутизации сервера при подключении клиента. Не нужно дублировать эти маршруты опциями route в основном конфиге сервера.
    Так же можно в CCD файле указать опцию push route для добавления маршрута клиенту для сети за сервером. Обычно push route указывают в основном конфиге сервера и она работает для всех клиентов.

    Но! Что бы сети за клиентом и сервером могли друг друга видеть они должны знать по каким маршрутам передавать трафик друг для друга. Если ВПН сервер и ВПН клиент являются для своих сетей шлюзами по умолчанию - то проблемы нет, компы внутри сетей и так будут слать весь трафик через них. Но если ВПН сервер и/или ВПН клиент не являются шлюзами по умолчанию для своих сетей, то требуется добавить дополнительные маршурты для соседних сетей через ВПН сервер/клиент. Централизованно маршруты можно добавить через опции DHCP, возможно политиками AD.

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

    После того как вы добились соединения ВПН клиента с сервером все остальное - это правильная настройка маршрутизации и фаерволов.
    Ответ написан
  • Какие библиотеки для SQL на C++ есть?

    @res2001
    Developer, ex-admin
    Выбираете СУБД и ищете для конкретной СУБД плюсовый клиент.
    Как минимум для всех СУБД существует Си клиент (клиентская библиотека).
    Плюсовый получается из Сишного обертыванием библиотечных вызовов в классы.
    Примерно так же и с другими ЯПами.
    Ответ написан
    Комментировать
  • Зачем нужны корневые сертификаты?

    @res2001
    Developer, ex-admin
    Кажется, что вся эта конструкция держится на том, что тот единственный корневой (?) сертификат, которым подписаны все остальные, есть только у удостоверяющего центра.

    Нет. Закрытый ключ этого сертификата есть только у удостоверяющего центра. А сам сертификат раздается всем подряд и даже в некоторых случаях предустановлен. Если у ЦС утечет закрытый ключ, это означает компрометацию всех подписанных им сертификатов.
    А держится вся схема на том, что обе стороны обмена "доверяют" центру сертификации.

    Про fiddler не понял вопроса. Почему он должен не работать? Многие приложения работают с сертификатами. Вы даже сами можете завести свой собственный ЦС и генерить сертификаты своим знакомым.
    А не тем левым, который кто-то подложил в систему.

    Например, подложив левый сертификат ЦС, можно сделать фишинговый сайт с сертификатом, подписанным этим левый ЦС и у вас в браузере все будет красиво. Вряд ли кто-то пойдет проверять подробности сертификатов. А фишинговым сайтам может быть сложно получить "правильный" сертификат. Хотя сейчас, по моему, это уже не актуально - есть службы генерирующие сертификаты всем подряд.
    Ответ написан
    Комментировать
  • Хранение файлов за 2 месяца + 1 файл первого числа месяца?

    @res2001
    Developer, ex-admin
    Можно вызывать в cmd конвеер, в котором попытаться отфильтровать файлы за первое число.
    Примерно что-то такое:
    forfiles -p "c:\folder" -s -m *.* -d -1 -c "cmd /c (dir @path | findstr /v /r /c:"тут регулярное выражение для поиска 1 дня в дате") && del /q @path"

    Это лишь схема, как можно подойти к решению. Ничего не отлаживал.
    Конвеер можно отладить отдельно, запихнув его в батник или прямо из командной строки.
    Сформировать регулярное выражение, думаю, будет не трудно. Я давно ими не пользовался, так что выветрилось из головы, а вспоминать лень.
    Вижу некоторые трудности со вложенными кавычками, возможно надо как-то их экранировать. Может что-то по этому поводу есть в справке по forfiles.
    Кстати, формат вывода даты в dir зависит от системных настроек формата даты, так что на разных компах он может быть разным. Имейте это ввиду. cmd не умеет работать с датами, поэтому приходится использовать только возможности работы со строками.
    Ответ написан
    Комментировать
  • Ошибки этой быть не должно, почему возникает?

    @res2001
    Developer, ex-admin
    Нужно добавить в INCLUDES опцию -I с путем к папке, где содержится Machinarium/Filesystem/Utils.hpp
    Ответ написан
  • Почему вставка элементов занимает такое время?

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

    @res2001
    Developer, ex-admin
    Найдите тут подходящую под ваше описание ошибку
    https://linux.die.net/man/3/pthread_mutex_lock
    Я что-то не нашел.
    Единственный более-менее подходящий с натяжкой вариант - EAGAIN - возвращается в случае рекурсивного мьютекса при превышении максимального количества блокировок.

    В целом реализации мьтексов могут быть разные и если это не POSIX совместимая реализация, то вероятно такая ошибка возможна. В этом случае смотрите документацию к вашей системе.
    Ответ написан
    1 комментарий
  • Почему после переезда на другой сервер nodejs иногда при запросах выдаёт ETIMEDOUT?

    @res2001
    Developer, ex-admin
    Таймаут при вызове connect. Это, в принципе, нормально и вполне вероятно в любых сетевых приложениях. Это может говорить о недоступности удаленной стороны или плохом качестве связи.
    Обычной реакцией на подобную ошибку может быть повтор операции или завершение приложения с ошибкой.
    Ответ написан
    Комментировать
  • Как сделать полную блокировку windows update на 10-ке?

    @res2001
    Developer, ex-admin
    Что вдруг такая борьба с обновлениями?

    Когда мне подобное было нужно, я просто запрещал старт для службы обновлений. И все.
    Никаких фаерволов, файлов и групповых политик не правил.
    Если обновления вдруг снова будут нужны - включаете службу.
    Можно процесс автоматизировать.

    Последний раз подобным занимался на Вин7. Но, думаю, и с Вин10 такой подход вполне прокатит.
    Ответ написан
    3 комментария
  • Можно ли зайти на Linux сервер имея только SSH Private Key?

    @res2001
    Developer, ex-admin
    На стороне клиента используется его приватный ключ. Публичный ключ лежит на сервере.
    Имея приватный ключ можно подключиться по ssh, если на сервере лежит парный ему публичный ключ.
    В вашем случае, видимо публичный ключ лежит на сервере в ~/.ssh/authorized_key
    Ответ написан
    Комментировать
  • Почему в СТЕКЕ разрешается выделять достаточно мало памяти?

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