Задать вопрос
  • Отличие терминов Инварианта и Свойства?

    @res2001
    Vito Ombero, Только если сама система дает такие гарантии. Со стороны нельзя ничего утверждать.
    Кроме того в разных системах может различаться само понимание согласованности данных.

    Например если СУБД поддерживает транзакции и приложение и БД правильно спроектированы и реализованы, то в этом случае согласованность данных можно гарантировать. Но даже при наличии транзакций вы можете так написать свое приложение и БД, что там вообще ничего нельзя будет гарантировать.
    MongoDB не умеет транзакции, там гарантируется согласованность (атомарность) только на уровне 1 изменяемого объекта.
  • Как сделать ПК за NAT как поддомены?

    @res2001
    chifth,
    Вот только он разруливает http(s) запросы

    Вроде он умеет не только HTTP. Но я тут не в теме.
    С другой стороны, как nginx узнает по какому доменному имени вы обратились, если взять произвольный протокол? Стандартных вариантов тут нет. Так что видимо вы правы nginx не вариант.

    Про ВПН - согласен, за одно и безопасность повысите.
  • Как создать текстовый документ с кодировкой ANSI?

    @res2001
    Xasthul, Сейчас попробовал в Notepad++ конвертировать UTF8 в ANSI, на выходе получился документ в CP1251. Что с этой информацией делать решать вам.

    На самом деле я бы уточнил, что именно имеют ввиду говоря ANSI.
    Вообще ANSI это - Американский национальный институт стандартов (англ. American national standards institute, ANSI).
  • Как сделать ПК за NAT как поддомены?

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

    Не тупой. Просто то что вы хотите далеко не так просто в вашем конкретном случае.
    Прописывать в ДНСе серые адреса смысла нет, т.к. из инета они в любом случае не доступны.
    Если вы пропишите в ДНСе для всех доменных имен один внешний адрес модема, то без указания порта и настройки перенаправления все равно не обойтись. А это будет примерно то же, что и сейчас.

    Вот например хостинги же делают как-то много сайтов на одном IP.

    У хостеров нет ограничений связанных с серыми адресами.

    Для реализации вашей хотелки нужно для каждого внутреннего хоста иметь белый IP. Это проще всего.
    Или поднимать какой-то прокси, который умеет это делать. Возможно nginx умеет такое, не уверен. Но х.з. как вы его поднимете на OpenWRT. В этом случае в ДНСе прописываете ваш один внешний адрес для всех доменных имен.
  • Почему сбрасывается счетчик в bat скрипте?

    @res2001
    Дополню.
    goto и метка внутри цикла во всем виноваты.
    Вынесите все что в цикле в процедуру, а в цикле ее вызывайте. В процедуре уже можно будет делать goto.
  • Зачем определению(definition) объявлять(to declares), если есть определение(definition), которое определяет(to defines)?

    @res2001
    Блин. Все еще более интересно.
    Вот что пишут в заголовке Annex J:
    J.5 Common extensions
    The following extensions are widely used in many systems, but are not portable to all implementations. The inclusion of any extension that may cause a strictly conforming program to become invalid renders an implementation nonconforming. Examples of such extensions are new keywords, extra library functions declared in standard headers, or predefined macros with names that do not begin with an underscore.

    Т.е. перечисленные в этом приложении возможности являются расширениями стандарта и могут быть не переносимыми. В т.ч. и объединение внешних определений является расширением.
  • Зачем определению(definition) объявлять(to declares), если есть определение(definition), которое определяет(to defines)?

    @res2001
    Нашел ответ на свои сомнения. Стандарт С11 Annex J.5.11
    J.5.11 Multiple external definitions
    There may be more than one external definition for the identifier of an object, with or without the explicit use of the keyword extern; if the definitions disagree, or more than one is initialized, the behavior is undefined (6.9.2).

    Значит, если внешние определения совпадают, то они объединяются. Т.е. это поведение не расширение компилятора, а описано в стандарте.
    Очень познавательно провел утро :-)
  • Зачем определению(definition) объявлять(to declares), если есть определение(definition), которое определяет(to defines)?

    @res2001
    jcmvbkbc, Разрыв шаблона :-)
    Но мне кажется это противоречит: https://en.cppreference.com/w/c/language/extern
    If there are no definitions in the same translation unit, then the tentative definition acts as an actual definition with the initializer = 0 (or, for array, structure, and union types, = {0}).

    И то же самое в стандарте п.6.9.2.2:
    A declaration of an identifier for an object that has file scope without an initializer, and without a storage-class specifier or with the storage-class specifier static, constitutes a tentative definition. If a translation unit contains one or more tentative definitions for an identifier, and the translation unit contains no external definition for that identifier, then the behavior is exactly as if the translation unit contains a file scope declaration of that identifier, with the composite type as of the end of the translation unit, with an initializer equal to 0.

    Противоречие я вижу в том, что по тексту обе переменные в a.c и b.c не должны были объединятся - везде по тексту сказано про одну единицу трансляции.
    Хотя пример работает :-) собрал на gcc и cl. Даже микрософтовский компилятор не выругался :-)

    Вот тут в ответе подтверждают мои подозрения. Т.е. это некое расширение стандарта. Но похоже это расширение поддерживают многие компиляторы.
  • Зачем определению(definition) объявлять(to declares), если есть определение(definition), которое определяет(to defines)?

    @res2001
    jcmvbkbc, Не знал про tentative definition. Спасибо.
    Впрочем это не сильно меняет дело.
    Tentative definition всего лишь откладывает принятие решения об определении переменной до конца единицы трансляции. Если дальше по коду встретиться extern int val; - то переменная станет с внешней линковкой (т.е. предыдущее объявление int val; так и останется объявлением).
    Если же extern int val; не встретится, то объявление будет рассматриваться и как определение. Т.е. в этом случае поведение такое как я описал в ответе. Этот вариант является вариантом по умолчанию.

    Не встречал еще кода, где бы применялся этот механизм. Правда не скажу, что я изучил много чужих исходников. Было бы интересно посмотреть для каких целей люди применяют этот механизм.
  • Зачем определению(definition) объявлять(to declares), если есть определение(definition), которое определяет(to defines)?

    @res2001
    Qubc, Линковка она же компоновка процесс достаточно простой (на словах) - сбор всех единиц трансляции в кучу и определение всех неопределенных символов для всех единиц трансляции.
    На этапе компиляции компилятор имеет дело только с одним компилируемым файлом и ничего не знает про другие. Даже если вы в опциях компилятору указываете несколько файлов исходного кода, он все равно каждый файл компилирует отдельно от других. Отсюда и появляется необходимость разделять объявление и определение.
    И только линкер работает сразу со всеми необходимыми объектными файлами и знает про все, что есть в программе.
  • Пытаюсь настроить double OpenVpn произошла ошибка?

    @res2001
    Добавлю. Если хотите более оперативного ответа, то оставляйте комментарии к ответам, тогда тем кто отвечал приходит уведомление. Если вы просто измените текст вопроса, то никто из отвечающих оповещен не будет.
  • Пытаюсь настроить double OpenVpn произошла ошибка?

    @res2001
    По обновленному вопросу:
    Когда вы пытаетесь работать с каталогом /etc/openvp, то все действия нужно производить из-под sudo, т.к. у обычных пользователей туда нет прав на запись.
    command not found

    Может говорить о том, что openvpn у вас не установлен. Или другой вариант - он установлен в каталог, которого нет в переменной окружения PATH.
    Проверьте установлен ли openvpn: apt-cache policy openvpn
    Проверьте в какой каталог он установлен: whereis openvpn
    Если whereis ничего не выдала, то можно вручную. Приложения из репозитория ставятся обычно в каталоги: /usr/bin:/usr/sbin:usr/local/bin:/usr/local/sbin. Просто ищите в этих каталогах файл openvpn. На крайняк можно воспользоваться: find / -name openvpn
    Посмотреть какие каталоги входят в переменную окружения PATH можно так: echo $PATH

    PS: Судя по возникающим проблемам у вас совсем нет опыта работы с линуксом. Возможно, если пригласить специалиста, то можно будет поднять openvpn гораздо быстрее.
  • Какой знак/символ переводит текст на новую строку в консоли?

    @res2001
    Андрей,
    просто местами нормально переставлено

    На счет "нормально" - вопрос спорный. Мой вариант рабочий, не противоречит синтаксису и при этом предотвращает малозаметную и широко встречающуюся ошибку.
    Пример:
    echo test >tmp.txt
    В файл запишется кроме test еще и пробел после test. Часто это бывает важно.
    Я сам уже давно использую запись перенаправления именно впереди команды. Так же обычно еще и явно указываю поток записи, т.е.
    1>tmp.txt echo test
    1 в данном случае означает стандартный поток вывода.
  • Постфиксная запись на stack?

    @res2001
    Соберите и погоняйте на разных наборах данных.
    Память у вас явно не выделяется, каких-то бросающихся в глаза ошибок нет.
    Правда не ясно зачем вы городите дополнительную обертку над std::vector для стека, у него есть все нужные вам операции. К тому же есть более специализированный std::stack. Но в целом - если вам так нравится, пусть будет.
  • Разные IP адреса на одном провайдере?

    @res2001
    Владимир Кузин, На счет отчетности я не в курсе, там идет работа с с промежуточными операторами. Возможно эта информация даже не доходит до налоговой, но в любом случае при необходимости налоговая запросит инфу у оператора.
    На счет выхода в инет - свистки пожалуй самый дешевый и простой вариант.
    Так же можно купить в разных местах VPSы настроить на там ВПН и NAT.
    Ну т.е. по любому нужны разные точки выхода в инет. Тут нет никаких чудодейственных средств.
  • Разные IP адреса на одном провайдере?

    @res2001
    Не покупать же для каждого рабочего места флешки от опсосов.

    Даже если вам провайдер выдаст несколько адресов, то они будут лежать в каком-то узком диапазоне, что как-бы намекает.
    В принципе можно завести 2-3 прова, у каждого взять небольшой диапазон.
    Или покупать на каждую контору свой свисток. В этом случае, кстати, можно ограничиться и одним компом на все конторы - MACи у свистков будут разные. Хотя некоторые клиент-банки отправляют в банк МАСи всех сетевых адаптеров на компе.
  • Что происходит при вызове printf() с аргументом-структурой?

    @res2001
    wisgest,
    если понимать как она работает

    Это тут ключевое.
    Подобное использование не интуитивно, скрывает происходящие процессы от читателя кода, привязывает использование к порядку и типу полей в структуре.
    Так же на некорректность кода намекает пачка предупреждений, которые выдает gcc при указании опции -Wall

    В целом, согласен, что это работает, но так писать не нужно.
    Впрочем в Си достаточно странных/сомнительных вещей, которые работают.

    Но все что я тут написал к вопросу не относится :-)
  • Что происходит при вызове printf() с аргументом-структурой?

    @res2001
    Включите в компиляторе все предупреждения (для gcc опции -Wall -Wextra) и исправляйте ошибки, которые диагностирует компилятор.
    Запись
    printf( "%s\n", aCard )
    не корректна, т.к. aCard структура, а не строка.