• Как работает брандмауэр Windows?

    @res2001
    Developer, ex-admin
    Эти разрешения трансформируются в правила для входящих и исходящих пакетов. Именно эти правила заставляют фаервол совершать какие-то действия - пропускать или блокировать трафик.
    Можно настраивать эти разрешения программ, а можно непосредственно настраивать правила для входящих/исходящих пакетов.

    Принцип работы прост: каждый входящий или исходящий пакет проверяется по списку правил, в правилах заданы условия, если пакет проходит по условиям, то выполняется действие, которое назначено правилу (разрешить/блокировать).
    Для лучшего понимания работы вам лучше смотреть не в это окно, а в "Windows Defender Firewall with Advanced Security" - введите в поиске.
    Ответ написан
  • Какие есть надёжные способы замены ip (типа vpn)?

    @res2001
    Developer, ex-admin
    Самый надежный вариант - свой собственный ВПН.
    Арендуйте VPS в интересующей вас стране, придется найти способ оплачивать услугу, настройте свой собственный ВПН и ходите через него. OpenVPN Или WireGuard настраиваются достаточно просто.
    Ответ написан
  • Как исправить ошибку в программе на С++, чтобы не вызывалось необработанное исключение или кнопка останова?

    @res2001
    Developer, ex-admin
    1. у вас в конструкторе выделяется динамическая память. Но деструктора у вас нет. Память не освобождается, после удаления объекта - утечка.
    2. Еще про конструктор. Внимательно посмотрите на строчку: coord = new double[size];.
    Чему равно значение переменной size в ней? Какого размера выделится буфер?
    3. Конструктор копирования реализован не правильно. Если вы создадите объект с его использованием, то он будет использовать тот же блок динамической памяти, что и исходный объект. Ни к чему хорошему это не приведет, вряд ли вы рассчитывали на такое поведение.

    На счет ошибки компилятора - хорошо бы увидеть текст ошибки. Условие в operator<< действительно всегда ложно. Надо сравнивать с vec.size - 1
    Ответ написан
    Комментировать
  • Почему tellg() неявно приводится к int при инициализации int, но не может быть сложенным с int?

    @res2001
    Developer, ex-admin
    попробуйте так: 2 + telg() На gcc вроде прокатывает без предупреждений.
    Но это опасно, т.к. tellg может вернуть ошибку (-1) и она в этом случае останется а) необработанной б) ваш код не поймет, что была ошибка - выражение вернет корректное положительное не правильное значение. Возможно именно по этому выдается предупреждение (в GCC предупреждение, а не ошибка).
    Ответ написан
    Комментировать
  • Как правильно написать функцию принимающую универсальную ссылку?

    @res2001
    Developer, ex-admin
    ifs может быть const

    Поток не может быть const. Когда вы читаете/пишете в поток у него меняются внутренние атрибуты. В const потоке вы ничего не сможете изменить, а следовательно ни писать туда ни читать из него не сможете - зачем он такой красивый нужен?
    как я понял нужно использовать и std::forward, но не понимаю куда его вписать корректно

    Если вы будете поток дальше передавать в какие-то функции, то заверните поток в forward. То же самое, если надумаете возвращать поток из функции.
    Ответ написан
  • Error LNK2019: ссылка на неразрешенный внешний символ public: void __cdecl Window::create(void)?

    @res2001
    Developer, ex-admin
    но window.cpp задумывается как часть библиотеки которую можно потом установить

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

    @res2001
    Developer, ex-admin
    Ситуация вполне вероятна. На сколько я знаю, нет гарантии, что поток после создания сразу получит процессор для выполнения.
    Делайте проверку в get в цикле, если x.load вернул false, то можно вызвать yield(), чтоб напрасно не жрать процессор в цикле.
    Ответ написан
  • Как развернуть второй сервер OpenVPN на одном железе?

    @res2001
    Developer, ex-admin
    В винде по умолчанию при установке openvpn добавляется только 1 виртуальный tun/tap адаптер, чтоб запустить несколько экземпляров openvpn нужно для каждого экземпляра использовать свой виртуальный адаптер.
    В комплекте установки есть утилита tapctl, позволяющая добавлять адаптеры, а так же в меню пуск есть ярлыки для запуска этой утилиты с правильными параметрами.

    На самом деле в актуальной версии openvpn по умолчанию устанавливается 3 виртуальных адаптера, но каждый из них разного типа: tun, tap, dco. Похоже можно использовать разные типы адаптеров, изменив опцию dev.
    На сколько помню, раньше был только 1 тип адаптера: tun. Его я и использовал всегда. На сколько хорошо работают остальные типы адаптеров под виндой - не в курсе.

    Кроме того OpenVPN устанавливает свои службы, которые удобно использовать на серверах, когда нужно, чтоб openvpn стартовал автоматически при старте винды, без вмешательства пользователя.
    Ответ написан
    4 комментария
  • Как попасть в IT школьнику?

    @res2001
    Developer, ex-admin
    Если в твоем городе есть нормальный ВУЗ, то иди учись. Если нет, то стоит поискать куда ты можешь поехать учиться. У тебя сейчас единственная возможность в жизни получить бесплатное образование. Скорее всего такого подарка судьбы больше не будет никогда. Бывают, конечно, исключения.
    Обучение это не столько "новые технологии" программирования. Это еще и математика и прочие предметы, которые хорошо ставят мозги на место. Это то же нужно, если и не для программирования, то для собственного развития.
    Но самое главное, чему ты должен научиться в ВУЗе - учиться самостоятельно. Впрочем, похоже, это у тебя не плохо получается. Значит будешь оттачивать навык :-)
    Желаю удачи!
    Ответ написан
    5 комментариев
  • Как вывести два сервиса в сеть из одного/двух ip?

    @res2001
    Developer, ex-admin
    1 и 2. Делайте проброс разных портов в NAT на роутере на разные внутренние сервисы. Т.е. номер внешнего порта будет определять внутренний адрес (и порт) сервиса.
    Ответ написан
    4 комментария
  • Вылетает программа на C++ с кодом -1073741571 (0xC00000FD)?

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

    В линуксах надо включить создание coredump в ОС, выполнить программу, получить файл coredump и проанализировать его в gdb. Схема анализа кода та же, что под виндой.

    Возможно у вас выход за пределы массива. При анализе внимательно смотрите на используемые индексы и размеры выделенного вектора к которому идет обращение.

    Результаты вашего анализа можете скинуть сюда.
    Ответ написан
    Комментировать
  • Как избежать коллизии по данным?

    @res2001
    Developer, ex-admin
    Сделать в таблице уникальный индекс по одному или нескольким полям, которые образуют уникальный ключ для объекта. В этом случае при попытке создать в базе запись с таким же уникальным ключом будет ошибка.

    Вообще нагрузка 100% - это повод задуматься о масштабировании приложения или оптимизации базы, не понял где у вас нагрузка 100%.
    Необходимость масштабирования не отменяет создания уникального индекса.
    Ответ написан
  • Для чего внутри связного списка нужен массив?

    @res2001
    Developer, ex-admin
    Видимо планируется хранить список на медленном устройстве хранения (на диске). Тогда такое построение связного списка вполне оправдано - за одно чтение можно прочитать несколько блоков данных.
    Возможно примерно таким же способом хранятся таблицы в СУБД. Называться это может по разному.
    Так же в СУБД часто применяют b-tree для хранения индексов, в этом дереве то же хранится несколько элементов данных в одном узле.
    Ответ написан
    Комментировать
  • Что делать с ошибкой unresolved external?

    @res2001
    Developer, ex-admin
    У вас не включен в сборку Firm.cpp. Поэтому все что в нем определено и используется в unit1.cpp будет вызывать ошибку.
    Как собираете проект?
    Ответ написан
    Комментировать
  • Как бы упростить непростое сравнение строк?

    @res2001
    Developer, ex-admin
    Если в отдельной таблице базы хранить еще и предварительно посчитанные количества нулей для каждой позиции во всех строках, то задача сократится до 1 прохода по символам новой строки.
    При добавлении/удалении строк, надо будет модифицировать и таблицу с количеством нулей.
    Ответ написан
  • С++ На всех ли платформах одинаковая точность операций с float?

    @res2001
    Developer, ex-admin
    Форматы чисел с плавающей точкой стандартизованы IEEE754.
    Скорее всего, операции выполняемые процессором над числами с плавающей точкой будут давать одинаковый результат на разных платформах.
    Но вот программные реализации различных математических алгоритмов из стандартной библиотеки, типа того же sqrt и т.п., могут отличаться.
    Для гарантии, вам нужно использовать для этих целей какую-то единую библиотеку для всех платформ, а не стандартный math.h.
    Ответ написан
    1 комментарий
  • Откуда OpenSSH Server грузит ключи?

    @res2001
    Developer, ex-admin
    Обычно пользовательские ключи лежат в пользовательских профилях в каталоге .ssh: cd %USERPROFILE%\<user name>\.ssh
    Так же как в линухе. Там их и ищет сервер.
    Но у вас для чего то в конфиге 2 опции AuthorizedKeysFile. Возможно одна из них лишняя.
    Ответ написан
    Комментировать
  • Как быстро округлить timestamp до секунд, минут, часов, дней и т.д.?

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

    @res2001
    Developer, ex-admin
    Листьями в дереве считаются узлы, у которых нет потомков.
    Потомки в коде задаются членами узла left и right, соответственно if(p->left == NULL && p->right == NULL), то узел - лист.
    Делаете проход по всем узлам и выводите только те узлы, где условие выполняется.
    Ответ написан
    Комментировать
  • Почему fopen устанавливает ошибку Invalid argument в errno при fopen в режиме r+ после w и fopen в режиме w+ после r?

    @res2001
    Developer, ex-admin
    Интересный вопрос. Ответа у меня нет, что-то не приходилось использовать режимы "+".
    Попробуйте обнулять errno перед вызовом fopen. Возможно значение, осталось от предыдущего вызова. Вообще читать errno надо, только если fopen вернул NULL. При нормальном завершении errno не меняется.
    И если pFile == NULL, очевидно, что не надо вызывать fclose.
    Ответ написан