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

    @res2001
    lytta, На ssh сервере (т.е. на Адрес_Машины_B) нужно добавить параметр в /etc/ssh/sshd_config:
    GatewayPorts yes

    После этого Liste-IP, видимо можно не указывать.
  • Как можно диск ужать?

    @res2001
    EmachinesDIMA,
    пожалуйста читайте внимательнее: "Виртуалка".

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

    Если же вам в конечном итоге нужно уменьшить виртуальный диск в гипервизоре, то после того как вы уменьшите раздел внутри виртуалки уже можно будет спокойно уменьшить и виртуальный диск в гипервизоре средствами гипервизора.
  • Проблема доступа к устройству подключенному к "мультимодему". Нестабильный пинг. В чем проблема?

    @res2001
    Пропадает только пинг? Службы работающие на устройствах отвечают? Сами устройства работают?
    Не очень понятно из вопроса, устройства к которым пропадает пинг находятся снаружи (подключаются к модему через сотового оператора)? Если да, то возможно просто увеличилось время ответа. Попробуйте увеличить время ожидания ответа у пинга. В сотовых сетях может быть довольно большая задержка и она может увеличиваться в зависимости от текущей нагрузки на сеть.
    Так же для диагностики используйте traceroute для выяснения на каком из промежуточных узлов возникла проблема.
  • При удалении MS Visual C++ 2017 пишет по завершении "установка завершена". Что делать?

    @res2001
    Константин Цветков, Понял :-)

    RedAlph, Попробуйте этот рецепт от микрософт: https://support.microsoft.com/ru-ru/help/17588/win...
    Вообще у микрософта полно разных версий msvc runtime и они обычно вполне уживаются друг с другом.
    На сколько я понял вам нужно в итоге установить версию 2015, а она ругатся на 2017.
    Удалите 2017, перезагрузитесь, установите 2015. После этого можно снова установить 2017, если нужно.
    К фразе "установка успешно завершена" я бы особо не цеплялся. Скорее всего программа сделала то что нужно, просто удаление/изменение/восстановление выполняются одной программой.
    С ошибкой попробуйте побороться с помощью утилиты по приведенной ссылке.
  • Почему память не может быть 'read'?

    @res2001
    Karpion,
    Серверная программа не должна аварийно завершать работу. Хотя бы потому, что у неё обычно много запросов в работе.

    Напишите обо этом в поддержку mongodb :)
  • При удалении MS Visual C++ 2017 пишет по завершении "установка завершена". Что делать?

    @res2001
    Вручную с диска точно не стоит удалять. CCleaner - в помойку, забудьте про него.
    Я MSVS устанавливаю и обновляю через MSVS Installer (по моему он так называется). После установки Installer прописывается в меню Пуск рядом с самой студией. Неоднократно с его помощью удалял и обновлял студию.
    Впрочем, думаю, что из "Установки и удаления" вызывается он же.

    У вас других странностей на компе не наблюдается? Например тормоза при работе или глюки в других программах?
  • Почему память не может быть 'read'?

    @res2001
    Не хотите перейти на Linux?

    Чем линукс поможет при подобных ошибках программистов?
    Не надо только говорить, что под линукс пишут крутые спецы и они не делают таких ошибок.

    Кстати, довольно обычная практика, когда результат выделения памяти не проверяют принципиально. Логика простая - когда не хватает памяти, то в наличии проблема в недостатке ресурсов, или возможно в аппаратном сбое. В любом случае дальнейшее корректное выполнение программы в большинстве случаев не возможно. Эти проблемы из программы никак не решить, наиболее адекватный вариант поведения программы при этом - вывести сообщение и завершиться, корректно закрыв все открытые ресурсы. Но примерно то же самое происходит если проигнорировать ошибку, только сообщение будет менее адекватное и открытые ресурсы будут закрыты не программой, а ОС.
    Чтоб не быть голословным - в MongoDB (в ядре, в ее клиентской библиотеке и т.п.) используется похожий подход. Там они при ошибке выделения генерируется assert, что приводит к немедленному завершению программы.

    PS: Я не агитирую за этот подход.
  • Отличие терминов Инварианта и Свойства?

    @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 гораздо быстрее.