Задать вопрос
  • Почему нет ошибки при переобъявлении переменной, которая уже объявлена в подключаемом файле?

    @res2001
    Qubc, При компиляции выставляйте максимальный уровень предупреждений, тогда и ошибки/предупреждения появятся. Некоторые все предупреждения переводят в разряд ошибок, тогда и собираться перестанет пока не исправите. В вашем случае локальная переменная перекрывает глобальную, о чем, например, gcc предупреждает при соответствующих параметрах.
    Для gcc я обычно включаю -Wall -Wextra, обязательно -std=XXX чтоб компилятор знал какой стандарт вы пытаетесь использовать, можно еще -pedantic
  • Как добавить имя родительской директории к имени файла?

    @res2001
    Толком ничего не понятно. У вас в вопросе в путях отсутствуют слэши, не ясно это просто перечилсение папок или вложенность. Код не отформатирован, хотя там куча вложенностей. Причешите код. Батники и так отличаются изряным "птичьим" синтаксисом, так вы еще и не форматируете.
    Зачем "ДЕЛИМ ИМЯ ПО СИМВОЛУ ПРОБЕЛА ДЛЯ СОЗДАНИЯ ПАПКИ" - вообще не понял. По описанию задачи у вас не должно быть подобной операции.
    Там где "ВОТ ТУТ Я НЕ ЗНАЮ ЧТО ДЕЛАТЬ" - ну я то же не знаю. Что вы там хотите сделать, но не знаете как?

    Для справки:
    Чтоб из относительно пути файла, содержащегося в переменной цикла (%%a) получить составляющие пути используйте модификаторы:
    %%~fa - полный путь
    %%~dpa - только диск и путь без имени файла
    %%~nxa - имя файла и расширение

    Например, что бы получить только имя каталога в котором лежит файл, можно сначала взять %%~dpa от файла, затем отбросить завершающий слеш с помощью обрезания строки в set (точно не помню, может его и нет, нужно проверять), затем от полученного результата взять %%~nxb. Как видите переменная цикла уже другая, потому что модификаторы не применяются к обычным переменным, только к переменным цикла и к параметра батника (или процедуры). Т.е. результат %%~dpa нужно загнать в for /f, чтоб получить следующую переменную цикла.
    Еще тонкий момент, что внутри круглых скобок (например внутри for) присваивать обычным переменным значение и затем тут же их читать нужно выставить setlocal enabledelayedexpansion и при обращении к переменной использовать символы восклицательного знака, а не знак процента. Это называется отложенное расширение переменных. Без этого присваивание и использование переменной внутри скобок не работает (точнее работает, но не так как вы ожидаете).

    Полный список модификаторов смотрите в for /?
    Другие полезные вещи:
    set /?
    setlocal /?
    if /?
  • Как настроить OpenVPN для работы в LAN из WAN?

    @res2001
    Megum1n, При чем тут шлюз? Ощутите разницу: шлюз и настройка сетевого адаптера "шлюз по умолчанию". Я имею ввиду второй вариант.

    ВПН серевер может быть шлюзом, может не быть шлюзом - рояли не играет. На самом деле ВПН сервер всегда шлюз хотя бы для ВПН клиентов.
    Когда ВПН сервер одновременно является и "шлюзом по умолчанию" для компов в сети, то они все пакеты для которых не знают конкретный маршрут шлют шлюзу по умолчанию. И поэтому сеть имеет доступ к ВПН клиентам сразу, без дополнительных настроек.
    Если же ВПН сервер не является "шлюзом по умолчанию" для компов в сети и при этом на компах не прописан маршрут к ВПН сети, то они так же продолжают слать ВПН пакеты на "шлюз по умолчанию" и пакеты просто теряются, потому что "шлюз по умолчанию" обычно то же не знает, что делать с этими пакетами. В итоге локалка не видит ВПН клиентов и наоборот.
    Но это легко поправить - достаточно прописать маршрут на компах внутри сети. Откройте для себя команду route.
    Почитайте что-нибудь про маршрутизацию TCP/IP. У вас проблема вовсе не с ВПНом, у вас проблема с настройкой маршрутизации. Впрочем, эта самая часто встречающаяся проблема, судя по вопросам на тостере.
  • Где найти описание всех ключей сертификатов OpenVPN?

    @res2001
    О чем речь в вопросе? Вы имеете ввиду поля сертификата?
    Их не так что бы много и все они более менее понятны из названия. Не понятны - почитайте какой-нибудь мануал по генерации ключей, на примере поймете. Поля заполняются так как нужно вам, а не так как пишут составители мануалов, там только пример заполнения.
    Как верно написал CityCat4 в своем ответе, openvpn использует стандартные сертификаты openssl, которые соотвентствуют стандарту Х.509. Такие же сертификаты использует и большинство других приложений, работающих с криптографией. Но не все, у некоторых свои подходы (pgp).
  • Как вывести имена сетевых интерфейсов через cmd?

    @res2001
    Денис Давыденко, Фильтровать вывод для получения нужной информации - обычная практика. Большинствуо консольных утилит выводит слишком много не нужной в конкретном случае информации.
    Для фильтрации обычно используют: find, findstr
    Для разделения вывода на поля: for /f
    Для справки:
    find /?
    findstr /?
    for /?
  • Здесь наверное ошибка с памятью?

    @res2001
    С чего вы взяли, что не делается realloc?
    Как проявляется ошибка?
    Что вы сделали, чтоб выяснить где ошибка и причины ошибки?
  • Как пробросить порт через VPN туннель между двумя Mikrotik?

    @res2001
    S10LI, По идее несколько таблиц маршрутизации не должны снижать производительность больше, чем маскарадинг. Но мне не приходилось это использовать на микротиках.
  • Как пробросить порт через VPN туннель между двумя Mikrotik?

    @res2001
    S10LI, Самый простой вариант - нужно сделать, чтоб веб сервер был доступен непосредственно по адресу микротик2. Т.к. у вас там динамический серый адрес, то проще всего получить у провайдера статический белый, настроить ДНС и профит.

    Если это почему то не возможно, то остается ходить таким корявым маршрутом через микротик1 с маскарадом. Чтоб отказаться от маскарадинга на веб сервере вы должны на микротик2 сделать шлюзом по умолчанию ВПН адрес микротик1, но, видимо, это не совсем то что вам хочется.
  • Как ограничить доступ на изменения к папке с репозиторием git на windows server?

    @res2001
    Vito Ombero, Какие права? Если у пользователя git нормально работает - значит права у него есть, значит запустив консоль по ssh он получит доступ непосредственно к файлам репозитория.
  • Корректное использование poll recv?

    @res2001
    maaGames, Да, accept будет сразу возвращаться, если нет соединения. Для слушающего сокета наравне со всеми остальными можно вызывать poll. Если poll вернет, что сокет готов для чтения - есть соединение для вызова accept.
    C connect несколько сложнее. Она завершается сразу, при этом процесс соединения будет продолжаться. После вызова poll/select на этом сокете, если сокет готов для чтения или для записи, то вызвав getsockopt(SO_ERROR) можно получить код ошибки, если он нулевой - то соединение установлено.

    На счет разделения на 2 сокета - избыточно, не вижу как это может помешать в отладке. Но это ваши дела.

    Рекомендую для сетевого программирования книгу Р.Стивенс "Unix. Разработка сетевых приложений" 3-е издание. Новую уже не купите, она 2007 года, но книга очень хороша, аналогов по глубине материала на русском я не видел. Можно купить через сайты, которые продают букинистические книги. Я свой экземпляр выуживал около года на alib.ru :-)
  • Как ограничить доступ на изменения к папке с репозиторием git на windows server?

    @res2001
    Что помешает пользователю имеющему легальный ключ зайти по ssh в командную строку и там что-то испортить?
    Да, это сложнее и требует дополнительных телодвижений, но тем не менее возможность остается.
  • Корректное использование poll recv?

    @res2001
    maaGames,
    я могу ждать в recv хоть сколько, если это в принципе допустимо сокетами.

    Вполне допустимо, если вас это устраивает. Обычно есть причины, чтоб не висеть слишком долго в одной операции.
    Помните только, что пока ваш поток заблокирован на записи, вы не можете ничего прочитать. И наоборот. Со всеми вытекающими из этого последствиями.
    Т.е. при испоьзовании блокирующих сокетов можно вообще без poll/select обойтись и сразу вызывать recv и в ней сидеть и ждать

    В любом варианте сокетов использование poll/select не обязательно. Они просто добавляют дополнительный функционал при работе с вводом/выводом. Вообще если вы работаете только с 1 сокетом в блокирующем режиме, то использование функций мультиплексоров (poll/select/epoll) не особо нужно.
    Они становятся особенно актуальны, когда у вас куча соединений. Да и то, стандартный подход - каждому клиенту свой поток переводит работу с пачкой клиентов в работу с одним клиентом. Хорошо подходит для не сильно нагруженных приложений.
    Но в приложения, которые должны работать с сотнями и тысячами соединений такой подход быстро вызовет перерасход ресурсов.
  • Как установить порядок компиляции файлов в Atmel Studio?

    @res2001
    Nickellick,
    Просто теперь любопытно почему такой метод срабатывает если я буду работать с delay.h из стандартной библиотеки, при абсолютно таком же коде

    Вы заблуждаетесь. Проанализируйте внимательно код, изучите вывод компилятора.
  • Как установить порядок компиляции файлов в Atmel Studio?

    @res2001
    Nickellick, Все верно. Предупреждение выдается при компиляции led_display.c.
    Просто выделите все общие макросы в отдельный заголовочный файл, в этом же файле можете подключать и include/led_display.h. В .c файлах (во всех где нужно), вместо определения макросов просто включаете этот заголовок. Профит.
  • Почему переменная иногда пуста?

    @res2001
    River0051, Согласен с AUser0
    Правило слишком общее.
    Но это значит, что правило должно срабатывать чаще, чем нужно.
    Хорошо бы вывод этой всей связки сохранять в файл, тогда вы сможете проверить, что выдает ваша конструкция.
    Кроме того не понятно зачем вам для подобной задачи понадобился autoit? У вас в этом скрипте уже почти готовый батник.
  • Как проще в VIsual C/C++ заменить "//" на "/" в переданном аргументе командной строки?

    @res2001
    DWZ, Можно сделать шел скриптом. Выдергиваете из строки путь, обрезаете имя файла, переходите по указанному пути, сохраняете pwd и подменяете им оригинальный путь.
    Примерно так:
    full_name="G:/avidemux_2.7.4/avidemux_core/../avidemux_core/ffmpeg_package/patches//libavformat_isom.c.patch"
    abs_dir="`dirname \"${full_name}\"`"        		# relative
    abs_dir="`( cd \"${abs_dir}\" && pwd )`"	# absolutized and normalized
  • Как лучше поднять почтовый сервер на Windows?

    @res2001
    А логи отправки на яндекс и прочее где? Спрашиваете про одно, а логи показываете другие.
    Уверен, что вам не нужен другой почтовик, просто вы этот как-то не правильно приготовили. Не факт, что и с другим не будет того же самого.
    Для внешнего почтовика, кроме самого почтовика нужно в DNSе, доступном снаружи указать MX запись для вашего домена. "А" запись для почтовика, указанного в MX должна соответствовать PTR записи, иначе многие нормальные почтовики откажутся с вами работать. Это минимум.
  • Как установить порядок компиляции файлов в Atmel Studio?

    @res2001
    Nickellick, Можете запостить сюда под спойлер кусок вывода компилятора с предупреждением.
  • Как установить порядок компиляции файлов в Atmel Studio?

    @res2001
    Nickellick, Из вашего вопроса следует, что предупреждение появляется при компиляции led_display.c, а не main.c. А сейчас у вас уже другая версия :) Вы определитесь как-то. Причем это вполне может быть, т.к. макрос определен только в main.c.
    Почему предупреждение при компиляции led_display.c и как этого избежать я вам объяснил. При компиляции main.c предупреждения быть не должно.

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

    @res2001
    NikitaWeb, Использовать надо CreateProcess, а не ShellExecuteA.

    Почитайте что-нибудь про "дочерние и родительские процессы", наследование дескрипторов дочерним процессом, межпроцессное взаимодействие (IPC), синхронизация процессов.