Задать вопрос
  • Как настроить или создать интернет прокси или шлюз на домашнем пк что бы с его ip заходить удаленно?

    @res2001
    Либо арендовать VPS у которого будет белый статический IP, развернуть на нем ВПН сервер, к которому подключаться из дома и с удаленного места и через эту цепочку выходить куда надо.
    В этом случае домашний адрес можно не менять.
    Но этот вариант будет наверняка дороже, чем арендовать белый адрес у провайдера. Но зато реализовать его можно за несколько часов (при наличии некоторого опыта), а провайдер может выдать статический адрес только на следующий месяц после добавления этой услуги в договор, хотя это зависит от вашего конкретного провайдера.

    Можно начать с VPS и параллельно получать адрес у прова. Когда адрес получите, то от VPSа можно отказаться и перейти на любой из предложенных в ответе вариантов.
    Если делать параллельно оба варианта, то обычно операторы VPS предлагают тестировать бесплатно некоторую минимальную конфигурацию VPS в течение некоторого времени (неделя/месяц, у кого как). Для разворачивания ВПН "минималки" вполне будет достаточно. Так что может и не понадобится тратится на временный VPS.
  • Ipfire. Как реализован протокол strongswan?

    @res2001
    brbwk,
    ну должен же быть процесс, который держит сокет для прослушивания

    Не факт. Например если трафик по ВПН приходит транзитный, то он из ядра не выходит - сразу перенаправляется на другой интерфейс с помощью таблицы маршрутизации и/или фаервола.
    Если трафик предназначен для этого же хоста, тогда такой процесс есть. Только это не charon или strongswan, а например апач или любое другое приложение - зависит от трафика.
    Если что, ответ на пинг то же генерируется ядром самостоятельно.
  • Ipfire. Как реализован протокол strongswan?

    @res2001
    На сколько я знаю, ipsec реализован как часть TCP/IP в ядре. User space демоны нужны лишь для инициализации и управления ключами. Остальной ВПН трафик расшифровывается в ядре и дальше уже расшифрованный трафик попадает непосредственно адресату (клиентскому приложению).
    Поэтому вы в хуках и не видите собственно трафика, а только пакеты isakmp.
  • Как реализовать Оператор OR в команде FOR?

    @res2001
    Djasar, да хоть 100 файлов - цикл один, главное, чтоб файлы попадали под маску
  • Почему архиватор работает только с текстовыми файлами?

    @res2001
    Jden10, Хотите работать с бинарными файлами, не используйте нигде std::string. Вектор байтов ваше все.
    И может быть даже и вектор не нужен, а можно обойтись массивом фиксированного размера (std::array) - будет работать быстрее.
  • Как сконфигурировать монтирование дисков в linux, чтобы при клонировании на другой hdd система запустилась?

    @res2001
    vl-roma,
    Есть подозрение что не может смонтироваться так ориентируется на UIDD

    Что это значит? Для снятия подозрений надо просто открыть fstab и посмотреть глазами.
    Если в fstab исходного диска разделы монтируются по UUID руками поправьте его на монтирование по именам.
  • Как в *.cmd после findstr произвести математические вычисления?

    @res2001
    Роман,
    Результат:
    "RAM= GB"

    Из того что вижу в вашем коде у первого findstr не задано выражение поиска. findstr нужна чтоб что-то искать в тексте. Что она будет искать у вас не задано. Скорее всего findstr завершается с ошибкой.
    Просто запустите эти команды в консоле вне батника и посмотрите что будет в результате.

    Арифметика в батниках возможно только с помощью set /a
    Для справки:
    findstr /?
    set /?
    for /?
    setlocal /?
  • Как создают интерфейсы в программах?

    @res2001
    В самом Си никаких окон нет, как нет их и в С++ и во многих других ЯПах. Но это и не задача ЯП.
    Рисование окошек и элементов управления принципиально ничем особенным не отличается от любых других системных функций, предоставляемых ОС.

    Функционал GUI предоставляет ОС (в случае никсов не ОС, а X11, но это не принципиально). В приложении на любом ЯП вы просто можете использовать базовый функционал ОС. ОС (и Х11) свой функционал предоставляют в виде набора стандартных библиотек, которые вы подключаете к своему приложению на Си (или любом другом ЯП).
    Но обычно, использовать базовый функционал сложно (или мало плюшек или плюшки еще сложнее использовать или много кода или хочется ООП и т.п.), поэтому вокруг базового функционала написано куча дополнительных библиотек, которые упрощают использование GUI и возможно дают что-то сверху.
    Во многих современных библиотеках реализуют кросс-платформенный вариант GUI, основываясь на базовом функционале для каждой конкретной платформы. Например Qt, wxWidgets и т.д. и т.п.
    Сейчас на Си писать GUI не слишком популярно, но, конечно, никто не запрещает это делать. Если очень надо, то лучше использовать С++ или C#.
  • Есть ли способ быстро выравнивать адреса?

    @res2001
    jcmvbkbc,
    увеличивает адрес, даже если он уже был выровнен

    И точно. Даже 1 раз попадал, похоже, на эту ошибку, что приводило к выходу за гранцы буфера. Каким-то костылем тогда вышел из положения, но причину не понял. Спасибо!
  • Есть ли способ быстро выравнивать адреса?

    @res2001
    Герман,
    позволю себе спросить ещё вот что: можно ли выравнять адрес до ближайшей к нему степени двойки (в большую сторону)? 1000 -> 1024, 3000 ->4096 и т.д.

    Есть быстрый алгоритм нахождения ближайшей большей степени двойки для числа. В данном случае адрес можно рассматривать как целое число.
    Найти его можно тут: https://github.com/gibsjose/BitHacks/blob/master/B... среди других подобных алгоритмов. Там правда он рассчитан на 32битное целое, но по аналогии его можно привести к 64битному.

    Для выравнивания адреса я использую обычно этот вариант:
    addr = (addr | (alignment - 1)) + 1;
    Где alignment - степень двойки.
  • Округление при подсчёте в С++?

    @res2001
    Miroslav Bodrich, У тебя сейчас x на 21 шаге больше, чем endX из-за специфики чисел с плавающей точкой. Поэтому цикл завершается раньше времени.
    Измени условие выхода из цикла, посчитай целое количество шагов и цикл поменяй на for с заданным количеством шагов.

    И если считать x как предложил jcmvbkbc, то погрешность результата будет меньше, чем если использовать сложение (как сейчас).
  • Округление при подсчёте в С++?

    @res2001
    Что выводит то? Покажи 21 шаг. Кстати, вполне можно текстом подобные вещи выкладывать, картинки тут не приветствуются, да и не удобно с ними.
    И вообще не нашел, чтоб в коде было какое-то округление.
  • Как написать типизированную обёртку над простым тред-пулом?

    @res2001
    Если чем-то не устраивают стандартные фьючи и прочая обвязка, то можно посмотреть как они реализованы.
    https://en.cppreference.com/w/cpp/thread
  • Как убрать ошибку NMAKE: fatal error U1077 при изменении кода в среде Clion?

    @res2001
    MikhailZarevich, Когда запускаете любую программу, то не нужно ее файл открывать для записи - достаточно только чтения.
    cl.exe - программа, clion должен ее запустить с параметрами, что она собрала вам новый исполняемый файл из ваших исходников, который бы он мог запустить.
    Почему у вас cl.exe пытается открыться для записи не ясно. Это какой-то нонсенс.

    Попробуйте собрать код из командной строки, запустив командную строку от MSVS (ярлык для ее запуска ставится вместе с MSVS и находится в папке студии в меню Пуск). Например так:
    cl <имя вашего cpp файла>
    Если это пройдет нормально, а оно должно быть так, то и из IDE то же должно быть все хорошо, т.к. IDE делает примерно то же самое.
  • Как убрать ошибку NMAKE: fatal error U1077 при изменении кода в среде Clion?

    @res2001
    MikhailZarevich,
    не удается открыть CL.exe для записи

    Зачем вы открываете компилятор для записи? Cl.exe - микрософтовский компилятор.
    Если собирать код из командной строки вручную, такая же ошибка?
  • Не видит библиотеку, что делать?

    @res2001
    У меня, кстати, тут оба варианта ncurses присутствуют и ncurses и ncursesw.
    Содержимое на первый взгляд идентично.
  • Не видит библиотеку, что делать?

    @res2001
    XerimHD, В каталоге /mingw64/include/ncursesw есть ncurses.h?
  • Не видит библиотеку, что делать?

    @res2001
    XerimHD, Тут уже достаточно информации, чтоб начать правильно собирать с ncurses.
    Добавьте опций компилятору:
    -DNCURSES_WIDECHAR -I/mingw64/include/ncursesw -lncursesw -lsystre -ltre -lintl -liconv
  • Не видит библиотеку, что делать?

    @res2001
    XerimHD,
    все равно не может найти

    Package ncurses was not found

    Видимо у вас установлен конфиг файл для pkg-config с именем ncursesw. Предполагаю, что это вариант с поддержкой Unicode (не пользовался ncurses, не знаю ее нюансов).
    Конфиг фалйы для pkg-config лежат в /mingw64/lib/pkgconfig, файлы *.pc. Поищите файл относящийся к ncurses.
    Загляните в каталог(и): /mingw64/include/ncurses*
    Посмотрите глазами на вывод команд
    pkg-config --cflags --libs ncurses
    pkg-config --cflags --libs ncursesw

    Попробуйте сделать правильные выводы.

    Посмотрите глазами файл библиотеки:
    ls /mingw64/lib/libncurses*

    Тут указываю каталоги, начинающиеся с /mingw64 в предположении, что используете этот компилятор. В msys2 их несколько.

    Скиньте сюда команду которой собираете проект.

    Дополнительно можете посмотреть какие пакеты ncurses установлены и какие вообще есть в пакетном менеджере:
    pacman -Ss ncurses
    И можете установить дополнительно то, что считаете нужным:
    pacman -S <имя пакета>
  • Скомпилированный в GCC exe файл вылетает досрочно?

    @res2001
    Александр Попов, Добавлю немного.
    Используйте assert везде где возможно для проверки предусловий и может быть постусловий в функциях. Хорошо расставленные ассерты сильно облегчают поиск ошибок.
    Например есть смысл в каждой функции проверять корректность полученных параметров.
    assert используется только в отладочной версии, в релизной версии ассерты не нужны, поэтому они не будут влиять на производительность и т.п. Ассерты отключаются добавлением опции компилятору -DNDEBUG.
    https://en.cppreference.com/w/c/error/assert