• Как корректно распределить сумму внутри элементов массива?

    @res2001
    Идете в цикле по позициям, для каждой позиции вычисляете: price_final = price + discount * (price / total_price )
    Дальше суммируете все price_finаl - это и будет ваша total_price_final.
    price - цена конкретной позиции
    total_price - цена всего заказа
    price / total_price - вес конкретного товара во всем заказе - (0; 1]
    discount - сумма скидки, которую надо раскидать по позициям
    Если скидок несколько, то есть смысл сначала сложить все скидки в общий discount и уже расписывать его.
    Написано
  • Кто блокирует сертификат и что делать?

    @res2001
    Добавлю CRL - список отзыва сертификатов.
    Путь откуда должен браться CRL прописан в самом сертификате, ищите в его свойствах соответствующую опцию.
    Можно попробовать скачать CRL вручную и установить на комп. На сколько помню, если CRL не удается обновить, то сертификат через какое-то время становится не действительным.
    Написано
  • Как перенаправлять весь траффик на определенный сайт через прокси сервер с помощью C/C++?

    @res2001
    Обычно это делается правилами фаервола. Добавляется правило, которое по фильтру будет перенаправлять трафик по нужному адресу. Причем стандартный виндовый фаервол такого вроде бы делать не умеет, по крайней мере в интерфейсе у него нет такой возможности. Может быть такое правило можно задать средствами netsh из ком.строки, но я тут не особо в курсе. В линуксе умеет.
    Проще всего это делать в фаерволе шлюза или роутера на выходе из локальной сети.
    Как прикрутить в эту схему C/C++ не знаю, т.к. фаерволы в ОС уже присутствуют.
    Написано
  • Как исправить ошибки вызова обработчика событий в другом потоке?

    @res2001
    Dyikot,
    думается мне что не будет таких ситуаций когда событие будет выполняется более 15мс

    Вы не учитываете возможность вытеснения потока. У нас же везде вытесняющая многозадачность. В любом месте в любое время любой поток может быть вытеснен с исполнения операционной системой и когда он снова получит управление не знает ни кто, может через час или через год или через 10 мс - это все возможные варианты.
    Так что эта конструкция sleep_for(1ms) не может ничего гарантировать.
    Чем у вас занимается reset я вообще не в курсе.

    Впрочем, дело ваше. Все что я хотел сказать я уже сказал.
    Написано
  • Как исправить ошибки вызова обработчика событий в другом потоке?

    @res2001
    Dyikot, Что если таймеру ждать еще больше, чем 1мс?
    В данном конкретном примере - это видимо сработает, но вы же делаете этот таймер не для этого "скучного" теста? Например уберите в main вызов sleep_for(duration).

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

    @res2001
    Dyikot, Вообще можно и не делать эту возьню с signal и флагом, а просто в деструкторе вызвать join, но тогда поток деструктора будет ждать завершение таймера все отведенное таймеру время. Если вас это устроит, то можете ограничиться вызовом join.
    Но signal с флагом, заставит wait_for завершиться досрочно.
    При этом, если ожидание уже завершилось до вызова деструктора, то дополнительный вызов signal и join не дадут больших накладных расходов.
    Написано
  • Как исправить ошибки вызова обработчика событий в другом потоке?

    @res2001
    Dyikot, не обязательно, вы этого гарантировать не можете, оно может и в wait_forе застать поток таймера, и он потом спустится уже до вызова OnTimerElapsed.
    Так что надо отрабатывать оба варианта.
    Предложенный мной выше вариант как раз это сделает. Проверять флаг timer_disable надо сразу после wait_for и завершаться, если он true.
    Написано
  • Как исправить ошибки вызова обработчика событий в другом потоке?

    @res2001
    Dyikot, Вы можете добавить дополнительное условие в wait_for и просигнализировать условную переменную вручную в деструкторе.
    Например выставляете в деструкторе флаг timer_disable = true, вызываете signal для условной переменной и ждете на join завершения потока таймера. После возврата из join уже можно завершать деструктор, т.к. поток таймера 100% завершится.
    В wait_for дополнительно проверяете этот флаг и если он true - то выходите.
    Мьютекс и условную переменную надо сделать членом класса.
    Написано
  • Как исправить ошибки вызова обработчика событий в другом потоке?

    @res2001
    Dyikot, Ожидание, но правильнее, видимо, - снять таймер с исполнения и уничтожить.
    Написано
  • Можно ли частично изменить маску подсети в сети организации?

    @res2001
    hrabrahrabr,
    то какая разница ?

    Чтоб запас был для добавления новых хостов в подсеть, без очередного этапа расширения подсети.
    Написано
  • Как исправить ошибки вызова обработчика событий в другом потоке?

    @res2001
    Вероятно sleep_for закончился раньше, чем таймер и объект t уничтожился, при этом таймер, возможно, не уничтожился. Что у вас там в деструкторе? Как обрабатывается вариант вызова деструктора, когда таймер работает?

    Показывать ошибки в коде CRT - бесполезно, т.к. из этих скринов все равно контекста не видно - перейдите по стеку вызовов к ближайшему вашему коду (если он есть) и там уже можно что-то показать.
    Написано
  • Какие протоколы прикладного уровня над TCP/IP поддерживают постоянное соедиение как WebSocket?

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

    @res2001
    Meliborn,
    а тут бук за 4 штуки и роутер за штуку не может быстрее 5 секунд соединиться.

    Бук за N штук никак на скорость света не влияет. Эл.-магнитное поле распространяется слишком медленно. Да еще и протоколом заложены очевидно какие-то таймауты для определенных процессов.
    Почему раз это 2 устройства то мгновенно не может быть?

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

    @res2001
    Мгновенно - это сколько в секундах?
    Учитывая, что это 2 разных устройства, то мгновенно (т.е. совсем без затрат времени) в принципе быть не может.
    Написано
  • Будет ли правильным если в ESXI один вирутальный сервер будет подключен сразу к трём физически разным сетям, две из которых относятся к КИИ?

    @res2001
    Добавить можно, почему бы и нет. Хоть 10 сетей.
    Только забикс тут не при чем.
    Тут стоит учесть соображения безопасности, особенно при подключении производственных сетей. Чтоб не случилось так, что залетел вирус на комп манагера или бухгалтера, а встала производственная линия.
    В свое время когда требовалось физически отделить по соображениям безопасности подсеть я в разрез ставил отдельный шлюз, на котором настраивал фаервол с жесткими правилами для доступа между сетями.
    Забикс сможет общаться с агентами с помощью обычной межсетевой маршрутизации, через промежуточный шлюз/фаервол. При этом он может находится в офисной сети с одним сетевым интерфейсом.
    Написано
  • Как приоисходит маршрутизация с белым IP?

    @res2001
    Илья,
    К сожалению доступа к админке микротика нет.

    У кого есть? Может эти вопросы надо ему задать?
    По новому адресу подключиться к RDP вообще не получается, только по старому.

    Что с ВПН? То же только по старому?
    Возникает другой вопрос - доступно ли что-то по новому адресу?

    Можно задать вопрос провайдеру - "почему сервисы все еще доступны по старому адресу?"
    Возможно они там со своей стороны чего-то намудрили, такое то же вполне может быть.
    Если это провайдер виноват и у вас нет доменного имени, то при наведении порядка, клиенты со старыми адресами отвалятся.
    Написано
  • Как приоисходит маршрутизация с белым IP?

    @res2001
    Если вы покупали у того же провайдера и доменное имя, то возможно, что провайдер поправил и адрес в DNS для вашего домена.
    Доменное имя могло использоваться и в настройках RDP клиента и в настройках OpenVPN клиента. Соответственно эти клиенты автоматически начали подключаться на новый адрес.
    Для проверки вы можете сами из интернета подключиться по старому адресу по RDP и VPN, по новому адресу и по имени.

    1. RDP сервер у вас же ведь не роутер. Поэтому доступ к серверу происходит через NAT, а NAT подменяет адрес назначения на входящих пакетах (и адрес отправителя на исходящих).
    2. Для ответа на этот вопрос надо понять по какой причине клиенты продолжают иметь доступ к вашим сервисам. Если мое предположение с доменным именем верно, то думаю, что ничего неожиданно не отвалится из-за изменения адреса.
    3. ВПН у вас вероятно на роутере, можно посмотреть настройки ВПН сервера там. Но скорее всего внешнего адреса вы там не увидите, он просто слушает WAN интерфейс и ему в принципе все равно какой там адрес. Ваш внешний адрес (или доменное имя) указан в конфиге клиента ВПН.
    RDP сервер внутри сети, на роутере должен быть настроен в NATе проброс портов. На RDP сервере то же не настраивается внешний адрес, т.к. для RDP сервера внешний адрес - это всего лишь промежуточных хоп.
    Написано
  • Почему мой компьютер не виден в локальной сети?

    @res2001
    Иван, Потому что NETBIOS это древний протокол. Во время его рождения никаких домашних роутеров еще в помине не было. В лучшем случае у тебя дома был dial-up модем. А микрософт роутеры не выпускает, так что им это фиолетово.
    Да и роутеры не стремятся реализовывать его.
    Не уверен есть ли реализация его под линукс. Если есть, то теоретически возможно его завести на роутере с OpenWRT.
    Написано
  • Почему мой компьютер не виден в локальной сети?

    @res2001
    Иван,
    Простите, накипело

    Проблема известная, ее можно обойти ручной настройкой. Но 100% гарантии это не дает. Настройки могут слететь при каких-то обновлениях или например при замене компа/переустановки ОС.
    Информации в интернете по этой теме довольно много, надо только правильно искать.
    Сейчас проблема пожалуй еще острее, т.к. развелось много версий винды и у них свои нюансы в этом отношении.
    Написано
  • C++ cmake boost multithread asio. Как правильно добавить ссылку на библиотеки boost?

    @res2001
    Alex XYZ,
    Хотелось бы какой-то метод, типа передачи переменной из консоли (-DVAR=PATH)

    Пожалуйста, можете задавать параметром.
    В cmakelists.txt эти переменные можно сделать как option. Только понадобиться видимо 2 переменных - одна для каталога с библиотеками, вторая для каталога с заголовочными файлами. Ну или принять для себя какое-то соглашение, что в одной переменной задается общий каталог, а в подкаталоге скажем include будут лежать хедеры, а в lib - бинарники библиотеки.
    Можете проверять наличие нужных файлов, в cmake есть нужные механизмы. Или не проверять - тогда за вас проверит компилятор и выдаст ошибки при сборке.
    При желании из этого параметра можно сделать цель импортируемой библиотеки:
    add_library(boost IMPORTED)
    Как по мне, оперировать целями намного удобнее, чем переменными или чем-то еще. Особенно если проект достаточно большой и используется несколько библиотек, своих или чужих.
    Написано