Задать вопрос
  • Корректно ли в C++ называть стек статической памятью?

    @res2001
    В программе может быть несколько потоков, у каждого потока свой стек. При старте программы стартует только один главный поток, память для него выделяется загрузчиком ОС. Память для стеков других потоков выделяется при создании соответствующего потока уже во время выполнения программы.

    https://en.cppreference.com/w/cpp/language/storage...
    Поскольку на стеке хранятся переменные с автоматической длительностью хранения, то стек стоит считать автоматической памятью. Но это немного другой взгляд на сегменты памяти.

    Подобная терминология может вводить в заблуждение. И стек и .bss и .data и .rodata и даже .text могут физически находится на одной и той же плашке (или микросхеме) памяти.

    Эти термины относятся к ЯП и к тому как компилятор работает с переменными (т.е. какие инструкции генерирует для доступа к переменным), размещенными в том или ином сегменте памяти.

    Тут главное что бы вы понимали как используется стек и другие сегменты памяти. Терминология может меняться в зависимости от того с какой стороны вы рассматриваете вопрос.
  • Что ещё нужно сделать тут?

    @res2001
    aryzhanki, У меня аналогично.
    Нажмите на ссылку ниже "Подробнее", там будет статья от микрософта на эту тему. Похоже требуется дополнительная настройка, чтоб это работало. Я пока не вникал.
    В статье указано, что применимо только для Windows Server. Это как-то смущает, у меня Вин11. Толи косяк у микрософта, то ли просто статью не обновили до Вин11.
  • Как правильно организовать таблицы?

    @res2001
    Михаил Смирнов, В общем случае это создает дополнительные проблемы и дополнительный код на вышестоящем уровне. С этим вы уже столкнулись, но еще, похоже, не успели окунуться в проблему сполна.
    Это может быть оправдано, только если за год в этой таблице накапливаются миллиарды записей и весят они под несколько десятков/сотен гигабайт. Тогда разные таблицы средствами СУБД можно разнести на разные физические диски. Но и тут есть другие технологии решения проблемы, ниже уже писали. Т.е. подобное усложнение структуры базы и кода можно применять с какой-то целью, а не просто так, потому что хочется. Само по себе это действие не может быть целью.
  • Как правильно организовать таблицы?

    @res2001
    Чем вызвана подобная организация таблиц?
    Что бы так делать, нужны очень веские причины, которые бы перевешивали все возникающие проблемы.
  • Хочу понимать биты/байты и их друзей. Литература?

    @res2001
    Вы же как-то освоили в школе сложение десятичных чисел.
    С двоичными еще проще - тут цифр не десять, а две. Правила, по которым выполняются элементарные арифметические действия, те же.
    Вообще в любом учебнике по информатике это должно быть описано. Да и в интернете полно материалов на эту тему.

    Возможно вам и не нужно вникать в биты. Все зависит от задачи, которую вы ставите перед собой. Из вопроса это не ясно.

    Вот с шестнадцатеричной системой счисления гораздо сложнее - там цифр 16, но правила те же. А еще кое-где применяют 36ричную систему, сам видел.
  • Почему при подключении по ssh с ключем требует пароль?

    @res2001
    winser, На ключ при генерации то же можно повесить пароль. Тогда пароль будет запрашиваться, но уже от ключа.
  • Как настроить VPN на удаленном рабочем столе при подключении через RDP?

    @res2001
    Возможно ТСу как раз и нужен режим default route. Так что сразу выключать не стоит, нужно разобраться в хотелках.
    Даниил Сидоров Поведение при подключении ВПН вполне адекватное при включенном режиме default route.
    Вам нужно понять для чего вам ВПН.
    Если вы планируете выходить через ВПН в интернет, то default route должен быть включен, но в этом случае вам придется смириться с отваливанием RDP соединения. Вновь подключиться к RDP вы сможете только через ВПН.
    Если выход в инет через ВПН не планируется, то необходимости в default route нет, настройку нужно выключить. Проблема с отваливанием RDP соединения отпадет.
  • Как создать массив из типов данных в си?

    @res2001
    Nulltiton, А почему не через _Generic?
    #define GET_TYPE_SIZE(type)    _Generic((type), char: 1, short: 2, int: 4, ...)
    main() {
       printf("%zu\n", GET_TYPE_SIZE(int));
       
    }

    Более универсальный вариант - в _Generic макросе возвращать индекс типа, а не размер. Массив размеров держать отдельно и использовать индекс, возвращаемый макросом, для доступа к нужному элементу.
  • Как сделать сервер маршрутизации?

    @res2001
    Александр Маджугин,
    Есть скрипты разные - это один из них был.

    Поэтому я и просил показать конфиг openvpn сервера.
    Скрипты пишутся под какую-то типовую конфигурацию сети. Конфигураций разных может быть масса. И как правило вы точно не знаете под какую конкретно конфигурацию написан скрипт. Ваша конфигурация не выглядит типовой.

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

    Даже если все настроено правильно и должно работать, фаерволы могут блокировать трафик. Причем фаервол на любом промежуточном узле. Вам надо в iptables разрешить трафик между адерсами openvpn сети и адресами gitlab сети. И на вашем ноуте то же не помешает проверить фаервол.
  • Как сделать сервер маршрутизации?

    @res2001
    Александр Маджугин,
    я не знаю

    Не знаете - погуглите. NATов может быть несколько на одном компе, если у него несколько сетевых интерфейсов.
    NAT привязан к сетевому интерфейсу, поэтому я так и выражаюсь.
    Вот даже погуглил :) https://interface31.ru/tech_it/2021/07/osnovy-ipta...
    добавьте ключ -o и укажите интерфейс fortivps.
  • Как сделать сервер маршрутизации?

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

    Что именно нет? Как вы тестируете?
  • Как сделать сервер маршрутизации?

    @res2001
    Александр Маджугин, К сожалению не силен в iptables, не подскажу как тут правильно поднять NAT.
    Но причем тут "внешний адрес сервера VPS"?
    Вы должны поднять NAT на интерфейсе foritvps, а там какой-то свой адрес используемый внутри fortivpn.
  • Как сделать сервер маршрутизации?

    @res2001
    Александр Маджугин, Раз без openvpn ваш VPS ходит к gitlab успешно, то как минимум нужный маршрут прописан.
    Но этого мало. Т.к. сеть за fortivps сервером ничего не знает о ваших адресах, то ответы будут где-то теряться. Вам нужно настроить NAT на интерфейсе fortivps, тогда в сеть gitlab вы будете попадать с адресом, полученным при подключении к fortivps.
    Когда вы ходите к gitlab без openvpn, то используется адрес интерфейса fortivps. Благодаря NAT можно получить тот же эффект и для удаленных компьютеров.
    И в конце надо добавить маршрут на вашем компе к сети gitlab через openvpn сервер. Это делается опцией push route в конфиге openvpn сервера.
  • Как перенести стандартные пути конфигурационных файлов NeoVim'а в корневую директорию?

    @res2001
    Пишут переменная окружения XDG_CONFIG_HOME указывает на каталог с конфигом: $XDG_CONFIG_HOME/nvim
    Правда это в линуксе.
    https://thevaluable.dev/vim-runtime-guide-example/
  • Как сделать сервер маршрутизации?

    @res2001
    Приведите схему сети, с указанием внутренних IP адресов, белые адреса можете как-нибудь "переименовать". И кратким описанием того что каждый узел должен делать. Схему можете хоть на бумажке от руки нарисовать и сфотографировать, главное чтоб понятно было.
    Вы тут требуете конкретики, какие маршруты прописывать. А сами никакой конкретики не даете. Распечатка ifconfig для одного какого-то хоста малоинформативна.
    Дополнительно можно привести конфиг openvpn сервера.
  • Как правильно компилировать на с++?

    @res2001
    Как все тут писали эта dll не часть MSVS, это часть микрософтовской реализации языков С/С++. Это libc.so и libstdc++.so если проводить аналогии с линуксом, в них содержатся, например реализации cin/cout и printf и вся стандартная библиотека.
    Программу с библиотеками можно линковать динамически (как сейчас), или статически. У каждого варианта есть плюсы и минусы. Вариант линковки задается опциями компилятора. При динамической линковке ты сам должен позаботится о том, что бы на компе, где будет исполняться твоя программа были все необходимые библиотеки. При статической линковке библиотеки содержатся в самом исполняемом файле, при этом твой "хело ворд" будет размером в несколько мегабайт.
    Микрософт свой рантайм распространяет в виде отдельного установщика, где-то в недрах MSVS должен лежать этот установщик или его можно скачать с сайта микрософт.
  • Перенос системы на другой ПК по сети?

    @res2001
    Практически любой софт, снимающий образ с диска умеет писать этот образ на сетевые диски.
    Сетевым диском может выступать, например, диск на винде куда вы будете впоследствии устанавливать этот образ. Но в этом случае это должен быть второй диск, т.к. первый будет использован при записи образа.
  • Открыл bat файл и компьютер висит, что делать?

    @res2001
    Yrgaaa, Оперативка перезагрузиться не может сама по себе, только вместе со всем компом.
    Хорошо бы увидеть батник.
    Если он "бесконечно создавал текстовые файлы" - мог забиться диск. Винда вполне может вести себя неадекватно, если места на загрузочном диске нет.
    Можно попробовать загрузиться с загрузочной флешки и посмотреть что там батник сделал с диском.
    Или если винда хоть как-то загружается, попробовать запустить cmd.exe и из консоли командами исследовать диск, там же можно и удалить весь созданный батником хлам.
  • Почему fopen устанавливает ошибку Invalid argument в errno при fopen в режиме r+ после w и fopen в режиме w+ после r?

    @res2001
    Qubc, Я бы даже сказал - важно всегда проверять возвращаемые значения системных функций (и библиотечных). Исключениями тут могут быть разве что функции типа close, т.к. обычно все равно сделать ничего нельзя и не нужно.

    Я так понимаю, что при r+ и пустом файле хоть ошибка в errno выставляется, но файл все равно открыт (pFile != NULL)?
  • Почему fopen устанавливает ошибку Invalid argument в errno при fopen в режиме r+ после w и fopen в режиме w+ после r?

    @res2001
    Qubc, А w+?
    Вроде r+ сразу что-то пытается прочитать, возможно потому что файл пустой ошибка. Сделайте файл не пустым.