• Как писать расширенный лог OpenVPN в Windows?

    @res2001
    PavelMos, Видимо более расширенного лога у него для вас нет.
    Думаю стоит тут опубликовать, что выдает в лог openvpn при запуске соединения и возможно что он при этом пишет на экран.
    В любом случае ошибки должны попадать в любой лог.
    Написано
  • Как писать расширенный лог OpenVPN в Windows?

    @res2001
    Вроде бы у verb максимальное значение 9.
    Проверьте, чтоб у процесса openvpn были права на запись в этот файл.
    Возможно лог не пишется, потому что конфиг с ошибками. Тогда обычно openvpn пишет ошибку на экран и завершается.
    Написано
  • Почему клиент не подключается к серверу OpenVPN?

    @res2001
    carbanak01, Проверьте ключ tls на сервер и на клиенте, должен быть идентичен. Такая ошибка может быть из-за поврежденного или не правильного ключа.
    Добавьте в клиентский конфиг опцию key-direction 1. В опции tls-auth есть 2 параметр, в случае ее inline варианта этот параметр задается с помощью key-direction.
    Написано
  • Как сравнить char в с++ на пустоту?

    @res2001
    limaximy, Выводи ASCII код и просто сравнивай char с этим кодом, например сравнение с пробелом может быть таким: if( c == 32)
    При сравнении уже не нужно конвертировать в int, это нужно только для вывода на экран, чтоб выводилось число, а не символ.
    Написано
  • Как сравнить char в с++ на пустоту?

    @res2001
    В char не может быть пустоты. Переменная типа char - это выделенная память в 1 байт и этот байт ВСЕГДА что-то содержит.
    Самый простой способ узнать, что там у вас за "пустота" - запустить под отладчиком и по шагам пройти по коду, останавливаясь и уточняя возвращаемое функцией значение. Другой вариант, выводить не символы (char), а ASCII код символа, например через преобразования char в int.

    Кроме того, обычно функции должны каким-то образом сигнализировать об ошибках. Каким именно, возвращаемым значением или исключением, надо уточнить в документации. Если возвращаемым значением - вы в коде должны это как-то обработать.

    Если на экран символы не выводятся, то это еще не говорит о том, что там "пустота". Некоторые управляющие символы не печатаются на стандартный терминал.
    Написано
  • Как создать исполняемый файл с помощью make?

    @res2001
    Для проекта из одного файла исходного кода (хедер не считаем) не нужен make. Достаточно выполнить команду:
    gcc main.c -o name
    При условии, что программа не использует дополнительных библиотек, это будет работать.
    Написано
  • Видит ли провайдер к какому порту сервера я подключаюсь при использовании протокола SSH?

    @res2001
    ВПН сервер или все таки SSH? SSH - не ВПН и наоборот.
    Впрочем не важно. В любом случае номер порта - это часть транспортного протокола, которая не шифруется.

    Но вот если ВПН внутри SSH (или наоборот), то тут другое дело - порт внешнего протокола провайдер видит, а порт внутреннего протокола - не видит. Т.к. в этом случае внутренний трафик уже будет зашифрован внешним протоколом.
    Написано
  • Зачем передавать функцию как параметр через указатель с++?

    @res2001
    xfnxfn, имя функции - это указатель на функцию.
    Фактически в C/C++ при передаче функции запись func_name эквивалентна записи &func_name.
    Почти то же самое происходит и с передачей массива как аргумента функции.
    Написано
  • Проблема изучения C++?

    @res2001
    Станислав Романов,
    Вообще где-то читал на хабре, что учить плюсы по книгам — худшая из идей

    Хрень какая-то. Как по мне книги для начала наиболее полезны. Дальше вы уже можете углубляться по документации, статьям в интернете и т.д. и т.п. Но начинать стоит с книг. Плюсом можно использовать все что угодно.

    Из книг, возьми Прата. В принципе подойдет любая не совсем старая, где описан хотя бы С++11/14. Но только она должна быть для новичков с упражнениями и т.п. Гнаться за последними стандартами в книгах смысла нет, т.к. база языка меняется мало, тем более, что учебники обычно сильно отстают от стандартов.
    Написано
  • Проблема изучения C++?

    @res2001
    Плюсы может и не самая актуальная тема, но вполне востребованная на рынке. Гораздо востребованней того же Rust. У каждого ЯП свои ниши, где его обычно применяют. А поэтому именно в этих направлениях для языка существую отработанные инструменты (библиотеки), дающие хороший результат.

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

    В С++ никогда не было централизованной коллекции библиотек, пакетного менеджера и т.п. Стандартная библиотека есть и она достаточно не плоха, но функционал у нее ограничен (по сравнению с питоном из коробки), фактически там только низкоуровневые базовые функции и алгоритмы. Для подключения более сложного функционала, типа веб сервера, нужно либо писать его самому, используя возможности ОС, либо подключать свободные сторонние библиотеки. Свободных библиотек для С/С++ в исходниках с различным функционалом много.

    Если посмотреть, например, на ЯП Си, то там стандартная библиотека еще более скудная, чем в С++, но еще больше свободных библиотек в исходниках. Библиотеки, написанные на Си можно на прямую использовать на С++. В них, конечно, не будет ООП, но можно самому завернуть использование библиотеки в класс-обертку. Наоборот, для использования С++ библиотеки в Си нужно, чтоб этим озаботился разработчик библиотеки и предпринял необходимые действия.

    В связи с вышеизложенным, а так же из-за того, что С++ более низкоуровневый язык, стоит не повторять задачи на питоне, а брать более простые задачи. Можешь купить толстую книгу по С++ для начинающих, там обычно бывают задачи по темам, выполняй их. Выполнение более простых задач, применение решений простых задач для решения более сложных поможет развить очень полезный для программиста навык декомпозиции. Так же есть сайты, где предлагают решать задачи по программированию, можешь решать задачи там.
    Написано
  • Почему для самого класса статическая переменная использует правильное значение, но при попытке вывести его, выдаёт 1?

    @res2001
    Евгений Шатунов, Полтергейст какой-то :-)
    Почему ближайшее преобразование адреса это bool, а не в size_t например?
    Риторический вопрос.
    Написано
  • Вектор и класс инициализация?

    @res2001
    forward declaration поможет, только если в векторе будет ссылка или указатель на класс.
    Если в векторе предполагается размещать класс "по значению", то вариантов нет, т.к. что бы выделить память под вектор нужно иметь уже полное описание класса, а что бы полностью описать класс нужно полное описание вектора. Выполнить оба условия для вашего класса в рамках С/С++ не возможно.
    Смотри ответ maaGames
    Написано
  • Почему Ctrl + D не дает коду выполняться дальше, а просто завершает программу?

    @res2001
    Вообще запускать для отладочных целей лучше всегда во внешней консоли, т.к. IDE настраивает свою встроенную консоль под себя и могут проявляться самые разные не типичные эффекты, кроме того IDE скорее всего перехватывает ввод/вывод в консоль и возможно как-то его фильтрует.
    То же касается и винды.
    Написано
  • Почему Ctrl + D не дает коду выполняться дальше, а просто завершает программу?

    @res2001
    oblepyx, Хотя нет, наврал. get в случае EOF возвращается и выставляет флаг eof, который и проверяется в cin.eof().
    Я бы вместо eof проверял бы cin.good() - он проверяет на любые ошибки, а не только eof.
    https://en.cppreference.com/w/cpp/io/basic_istream

    А вообще исключения перехватываются с помощью try/catch. Почитай что-нибудь про исключения, если пишешь на плюсах это знать надо.
    Написано
  • Почему Ctrl + D не дает коду выполняться дальше, а просто завершает программу?

    @res2001
    Видимо исключение в ходе cin.get и вылет программы из-за него.
    Написано
  • Почему оператор `operator=` в классе `Vector` принимает `const init_l& l`, а не `const init_l l`, и как он работает с передаваемым сп. иниц.?

    @res2001
    unixilus,
    То есть C++ автоматически передает

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

    @res2001
    Рискну предположить, что утечка в SDL связана с тем, что ты чего-то не освобождаешь в своем коде. Просто valgrind не настолько умен, чтоб определить еще и точную причину утечки - он просто показывает, что вот тут была выделена память (в SDL при захвате ресурса) и она не была освобождена, т.е. ты ресурс не освободил. Виновник утечки не SDL, а твой код.
    С утечками памяти часто бывает так - место утечки ты установишь инструментарием (valgrind и т.п.), но причину должен найти самостоятельно. Иногда найти причину бывает довольно трудно.
    Написано
  • Как разумно поставить себе начало в программировании (C++ и C#)?

    @res2001
    Александр,
    ты слишком много размышляешь и мало делаешь. Нет какого-то оптимизирующего волшебства, который может значительно сократить твой путь. Ты должен писать код. Много кода.

    В точку! Хватит размышлять и мечтать. Начинай писать код. Умение программировать само не придет, его надо тренировать.
    Написано
  • Почему pause в cmd скрипте не предотвращает закрытие окна?

    @res2001
    Drovosek01, Мой ответ уже есть, просто выберите его решением.
    Написано