Задать вопрос
  • Как создать указатель на вводимый текст?

    @res2001
    Borton1, Потому что производительность это не единственный критерий. На С++, а уж тем более на Си, возится с реализацией вы будете дольше, чем на питоне. Даже зная теорию и используя готовые библиотеки.
  • Как создать указатель на вводимый текст?

    @res2001
    Borton1, Скажем так. Это другое программирование. В С/С++ вы ближе к железу и ОС и надо лучше понимать как оно там все работает, иначе толку не будет.
    В любом случае, нет настоящего или не настоящего программирования, для каждой задачи свой инструмент. Язык - всего лишь инструмент.
    Если бы вы занимались разработкой ИИ, то питон или какой-нибудь R для вас был бы самое то.

    я решил использовать realloc()

    Раз уж вам нравится Си, то сообщаю, что операции выделения/освобождения динамической памяти очень дорогие в плане производительности. Поэтому надо очень аккуратно с ними обращаться.
    Для вашей задачи лично я бы, конечно, не стал использовать getchar и посимвольный ввод. Я бы выделил 1 большой буфер (его можно выделить на стеке в автоматическом массиве, надо учитывать что размер стека ограничен) в него читал, затем обрабатывал буфер, если нужно - повторное чтение в тот же буфер. realloc как и хранение всего ввода для вашей задачи избыточно.
  • Как сохранить значения нескольких переменных в С++ 17?

    @res2001
    mayton2019, Можно было. Но тогда не было семантики перемещения и возвращаемые объекты копировались, а это дополнительные не нужные накладные расходы. Так же не знаю, что тогда было с RVO оптимизацией, думаю, что она тогда работала хуже, чем сейчас.
  • Как сохранить значения нескольких переменных в С++ 17?

    @res2001
    Никита Савченко, Нет лучшего ответа. Это нормально. И передача параметров по ссылке и возврат объекта - вполне рабочие варианты. В разработке часто надо будет выбирать из нескольких вариантов применительно к конкретной ситуации.
    В вашем конкретном варианте я бы взял или ссылки или вариант от Adamos
    Если бы параметров для ввода было 100, то больше бы подошел возврат объекта, а так же вариант от Adamos :-)
    Так что берите вариант от Adamos
    В целом совет mayton2019 про самый простой вариант очень дельный. Всегда надо его придерживаться, если против простого варианта нет веских аргументов.
  • Как создать указатель на вводимый текст?

    @res2001
    Borton1, Ну вот уже и с задачей определились :-)
    Да это обработка. Можно использовать getchar в вашем случае. И вам не понадобится никакой буфер для чтения в этом случае. Вам нужно объявить
    int count[255] = {0};
    Затем в цикле, используя getchar читаете очередной символ, этот символ будет индексом для массива. Инкрементируете соответствующий элемент массива count для подсчета символов. Переходите к чтению следующего символа. Единственный момент, видимо, надо предусмотреть возможность выхода из цикла, например, когда пользователь нажмет Enter.
    После завершения цикла распечатываете все элементы массива count, которые >0.
    Индекс массива - это код символа, значение элемента массива - количество символов.
  • По ошибке установила Windows server 2022, как все вернуть обратно?

    @res2001
    Вам повезло. Вы установили версию Windows Server Core, которая не включает в себя раб.стол.

    Остались ли ваши файлы - зависит от того форматировали вы диск во время установки или нет.
    Проверить это можно прямо в powershell командой dir например, просмотрев файловую систему.
    Так же, думаю, что Core можно проапгрейдить до версии с десктопом, установив соответствующие компоненты. Но это не точно.

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

    Другой вариант. Если есть второй комп, физически подключаете диск ко второму компу, переносите туда все ваши сохранившиеся данные (если они сохранились), и устанавливаете Вин10 с форматированием.
  • Как сохранить значения нескольких переменных в С++ 17?

    @res2001
    Никита Савченко, Ссылки не устарели. Пока жив С++, думаю, ссылки не устареют. Это одна из главных фишек языка. Посмотрите сколько видов ссылок появилось в последних стандартах :-)
  • Как сохранить значения нескольких переменных в С++ 17?

    @res2001
    Никита Савченко, Нормальная затея. Просто вы ее не правильно реализовали. Если функция возвращает вектор, то и записать это значение можно в вектор, а не во что-то другое.
    vector<int> vec = getInfo(normal_weight, weight);
    normal_weight = vec[0];
    weight = vec[1];

    Но лучше std::pair, а еще лучше ссылки, как в ответе Александр Ананьев
    Посмотрите пример с tuplом
  • Почему не работает самоподписанный сертификат?

    @res2001
    RedFirefly, Клиенту надо добавить сертификат ЦА. И тогда:
    После этого все сертификаты, выпущенные в этом CA (и в его подчиненных CA, буде есть такие) - станут валидными.
  • Какую версию юзать для почтового сервера?

    @res2001
    AlexVWill, Аналогично и exim запускается не от рута. Думаю у postfix схема с открытием сокета та же (т.е suid бит и понижение привилегий после открытия сокета).
    По моему чтоб htop показывал эффективного пользователя процессов надо его запускать с каким-то ключом. Или это касается top... У меня сейчас нет линукса под рукой, не могу проверить.
    Идентификаторов владельца процесса 3 штуки: реальный, эффективный и сохраненный. Для манипуляций с понижением/повышением привилегий.
  • Какую версию юзать для почтового сервера?

    @res2001
    AlexVWill, Я упомянул про якобы проблему в безопасности, ты сказал, что рут не нужен. Я объяснил зачем нужен рут почтовику. Я не пложу сущности, а отвечаю на твои реплики.
    Или ты хочешь сказать, что программа может использовать 25 порт на линуксе без прав рута?
    В явном виде там рут и не используется, служба стартует из-под другого пользователя, но на исполняемом файле установлен suid бит, что дает процессу рутовые привилегии при запуске от любого пользователя. Возможно suid бит используется и в модуле postfix, отвечающего за открытие сокета. В exim я это сам проверял.
  • Что это означает?

    @res2001
    Zorroti, Если написать A(i, j) > 0 будет понятнее?
  • Какую версию юзать для почтового сервера?

    @res2001
    AlexVWill, Видимо, ты не занимался программированием сетевых приложений.
    Может не совсем корректно выразился, программа открывает сокет. Номер порта - это один из параметров сокета.
    Когда программа стартует ей надо сообщить системе, что она хочет работать с сокетом по TCP протоколу и использовать порт 25, для открытия сокета есть системный вызов socket(), а для задания параметров сокету есть вызов bind(). Там в параметрах адреса указывается номер порта, а уже внутри bind система проверяет, если запрошенный порт меньше 1024, то требует наличие у процесса рутовых прав.
    Процесс может быть запущен с рутовыми правами, сделать свои рутовые дела, а потом понизить права до какого-то другого пользователя, обычно имя этого пользователя как-то может быть сконфигурированно. Этот механизм используют все "правильные" приложения, работающие с "привилегированными" портами.

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

    @res2001
    AlexVWill,
    открытие порта делается через iptables/ufw

    Открытие открытию рознь.
    В фаерволе вы открываете порт, который слушает другая программа, чтоб пропускать трафик пришедший на этот порт к этой программе.
    В программе сервере (postfix, exim, любая другая) открывается этот порт для приема данных (которые выше пропустил фаервол). В Linux (и других никсах) для открытия программой портов ниже 1024 требуются права рута. Это политика работает по умолчанию. По моему ее можно отменить, но это не точно и обычно это никто не делает. А SMTP порт 25 - он меньше 1024, поэтому требуется рут.
  • Какую версию юзать для почтового сервера?

    @res2001
    Николай, Там чисто архитектурная разница. postfix модульный, exim монолит. Пишут, что при среднем количестве почтового трафика exim работает быстрее, пока в очередях не накапливается много писем. Для среднестатистического корпоративного почтовика разницы особой нет.
    Некоторые пишут, что exim работает от рута и это дыра в безопасности, но это не совсем так - root требуется только на этапе открытия 25 порта и для некоторых других действий, после этого привилегии понижаются. То же самое требуется и модулю postfixa, т.к. рутовые права для открытия порта для него никто не отменял. Другое дело, что у posfixa это небольшой модуль отвечающий за отдельно взятую задачу, а exim - он весь в одном исполняемом файле.
  • Какую версию юзать для почтового сервера?

    @res2001
    Вместо postfix можно использовать exim. Надежный, открытый продукт. Все остальное так же к нему успешно прикручивается.
  • Как пингануть хост, находящийся за NAT, но когда при этом на шлюзе есть ssh?

    @res2001
    Талян, В plink можно использовать сохраненный профиль соединения, который создается в putty, чтоб не вводить логин/пароль и прочие данные. По моему, в этом случае, никакого подтверждения не требовалось.
    Кстати, в питоне есть модули, реализующие протокол ssh, можно использовать их, чтоб не пользоваться сторонними утилитами. Контроля, возможно, будет больше. Например paramiko, наверняка есть и другие.
  • Как считать из файла определенное слово, и посчитать сколько раз оно появляется в файле СИ?

    @res2001
    Алгоритм элементарный. Функций разрешенных для использования достаточно. Читать придется посимвольно с помощью fgetc. В цикле до конца файла читаете очередной символ, сравниваете с первым символом строки, если равны, то следующий символ нужно сравнивать со вторым символом строки и т.д.
    Другое дело, что читать посимвольно из файла - это плохая идея. Правильнее было бы читать файл большими кусками, скажем по 4 Кб или больше, и искать строку в прочитанном куске. Но задание есть задание.
    Вы сделайте собственную попытку реализации алгоритма, если будут затруднения, можете писать сюда конкретные вопросы.
    А сейчас ваш вопрос это задание - это противоречит правилам ресурса.
  • Как отсортировать матрицу в с++?

    @res2001
    Чем стандартные сортировки не устраивают? В стандартной библиотеке несколько вариантов, выбирайте.
    Ваша задача сортировки ничем особым не отличается от любых других сортировок.
    Правда из описания не понятно что вы в итоге хотите получить. Вам надо сортировать каждый столбец отдельно?
    Приведите пример исходной и отсортированной матрицы для ясности.
  • PKI. CA шифрует своим закрытым ключом или же открытом?

    @res2001
    shledon, Конечно. Для этого открытый ключ ЦА всегда должен быть в доступе.
    Фактически ЦА нужен только на этапе подтверждения сертификата или отзыва сертификата и формирования нового списка отзывов. Все остальное время его можно держать выключенным.
    Зато когда истекает срок действия сертификата ЦА - все дерево сертификатов, подписанное его сертификатом протухает. К этому событию надо готовится отдельно :-)