Задать вопрос
  • Как работать с VPN так чтобы можно было пользоваться обычным инетом?

    @res2001
    Developer, ex-admin
    Это совсем не "само собой".
    Суть проблемы в том, что обычно ВПН соединение прописывается в качестве шлюза по умолчанию и перекрывает предыдущие настройки.
    Обычно в настройках клиента или сервера ВПН есть соответствующая опция, выключающая такое поведение. Тогда по ВПН будут доступны только сети явно сконфигурированные в ВПН, а весь остальной трафик пойдет на шлюз по умолчанию.
    На счет конкретно вашего варианта (Nordvpn) я не в курсе, но общий подход именно такой.
    Например в OpenVPN это конфигурируется на стороне сервера, в виндовом L2TP/PPTP - в свойствах соединения есть соответствующая галка.
    Ответ написан
    Комментировать
  • Функция автоматические подгоняющая длину строки на C?

    @res2001
    Developer, ex-admin
    Причем здесь Си?
    1.у вас скриптовый Си подобный язык - это совсем не то что Си
    2.Си окон не рисует и ими не управляет
    3.Как вы себе представляете подгон длины строки (сокращать слова, заменять на более короткие синонимы, добавь свой вариант)? Си тем более этим не занимается. Это уже лексический анализатор какой-то. Оно вам надо?

    Может вы просто определитесь с примерным количеством символов в строке (которое влазит в удобный вам размер окна) и будете формировать строки нужной длины сами?
    Ответ написан
    Комментировать
  • Как правильно изменить размер выделенной памяти?

    @res2001
    Developer, ex-admin
    В Cи нет строк как таковых - там строка это массив байт с завершающим нулевым байтом в конце.
    А массив в Си - это указатель.
    В С++ используйте string - его для этого и придумали, чтоб не парится в каждом приложении с подобными вещами.

    Если чисто в Си, то на каждый символ, конечно дергать память не выгодно, поэтому выделяйте память кусками.
    Например - задавайте фиксированный начальный размер буфера и размер приращения. Часто, вместо приращения удваивают размер буфера. Стратегия может быть разной. Для простых приложений можно вообще выделить фиксированный размер буфера (достаточно большой) и не перевыделять память.
    Не забывайте для обозначения конца строки вручную вставлять нулевой байт в конце строки. Конец строки не обязан совпадать с концом буфера.
    Ответ написан
    4 комментария
  • Как сделать функцию преобразующую степень и коэффициенты многочлена в готовое уравнение?

    @res2001
    Developer, ex-admin
    Вам же элементарно нужно строку сформировать.
    В цикле по массиву koef бежим:
    1.если коэффициент не 0:
    1.1.выводим сам коэффициент из массива
    1.2.Если коэффициент не последний: выводим строку "x^" + str(degree - i)
    Ответ написан
    Комментировать
  • Почему не работает команда SET в командной строке так, как должна работать? И как сделать так, чтобы работало?

    @res2001
    Developer, ex-admin
    У меня работает :-)
    Уберите пробелы до и после равно - вы создаете переменную с именем "PATH "
    Ответ написан
    2 комментария
  • Как собрать на linux программу на писанную на с++ без Gcc/g++?

    @res2001
    Developer, ex-admin
    Если это нужно для дистрибуции программы, то делаете свой репозиторий куда кладете предварительно собранные пакеты для поддерживаемых платформ. Репозиторий добавляете в настройки пакетного менеджера ОС и устанавливаете штатными средствами уже из репозитория.
    Ответ написан
    4 комментария
  • Как написать программу для определения серого адреса?

    @res2001
    Developer, ex-admin
    Адрес, начинающийся на 77 - белый. Список серых адресов фиксированный, официально задокументированный в RFC и вовсе не тайна. По ссылке смотрите адреса в таблице п.3 с пометкой "Private-Use Networks".
    Увидеть реально выданный адрес вы можете только на роутере, т.к. если роутер получает серый адрес, значит для выхода в инет трафик должен проходить через NAT провайдера, где адрес подменяется и в инете вы уже с белым адресом в любом случае.
    Обычно роутеры поддерживают не только веб управление, но и SSH и возможно telnet. Используя их вы можете скриптом получать адрес, проверять его и если он серый, то другим скриптом ребутить роутер (или даже не ребутить, а сбрасывать соединение и устанавливать снова). То же самое можно сделать и через веб интерфейс, но формировать свои HTTP запросы и парсить HTTP ответы роутера более утомительная задача, чем вариант с ssh/telnet.
    Ответ написан
    1 комментарий
  • Как отправить mail из скрипта cmd/powershell?

    @res2001
    Developer, ex-admin
    Из cmd встроенными средствами отправить почту нельзя.
    Вариант с телнетом работает, но родной виндовый телнет клиент (который надо еще устанавливать из компонентов) не поддерживает какой-либо автоматизации. Вручную с его помощью отправить письмо можно, автоматически - нет.
    Можно найти любой другой телнет клиент, которым можно управлять с помощью параметров командной строки или еще другим способом, либо найти консольный почтовый клиент, которые то же имеются. Но все это сторонние средства, которых нет в составе винды.
    Ответ написан
  • С какими сложными случаями отладки вы сталкивались?

    @res2001
    Developer, ex-admin
    Был опыт реализации на Си мат.модели, написанной на Матлабе физиками.
    Модель считала все в double. На Си для скорости использовали float. На прямую результат проверить было не возможно как минимум из-за ошибок округления, а если еще появлялись ошибки в Си реализации (а они были), то вообще труба, т.к. не ясно было даже в какой части кода ошибка.
    Пришлось полностью реализовать модель на Python с возможностью переключения режима расчета выставлением одной опции с double на float. Эту промежуточную модель отладили с первоначальной моделью в режиме double. Затем переключили на float и отлаживали реализацию на Си с промежуточной моделью.
    Работы много, но другого способа подтверждать правильность реализации мы не придумали.
    В итоге схема получилась вполне рабочая.

    Теоретически можно было доработать Матлаб модель, чтоб она работала с floatами, но в Матлабе оказалось достаточно проблематично контролировать каждую операцию. На пинтоне это сделать можно.
    Ответ написан
    Комментировать
  • Можно ли через bat файл изменить строки в текстовом файле?

    @res2001
    Developer, ex-admin
    Можно и голым батником, без сторонних средств, но с некоторыми ограничениями.
    Но проще, как сказал Борис Сёмов использовать специально для этого предназначенные утилиты типа sed.
    Ответ написан
  • Как сделать выбор операционки при загрузке?

    @res2001
    Developer, ex-admin
    В линуксе по любому уже используется какой-то загрузчик (скорее всего grub), можно его сконфигурировать чтоб он еще и винду грузил.
    Ответ написан
    8 комментариев
  • Создать "пакет" и отправить?

    @res2001
    Developer, ex-admin
    Добавлю свои пять копеек:
    Мало собрать и отправить пакет. Пакет должен кто-нибудь получить на принимающей стороне. Если принимающая сторона неготова принять ваш пакет, то он будет просто отброшен.
    Чтобы принять пакет на принимающей стороне должен работать "сервер" и слушать "порт". Например в вебе браузер это клиент (сторона отправляющая запросы), когда вы вводите в адресную строку браузера имя сайта, то на этот сайт отправляется запрос. Сайт в простейшем случае - это компьютер, расположенный где-то в интернете. На нем запущен веб-сервер, который принимает запросы от клиентов. Если веб-сервер остановить, то сайт перестанет отвечать на запросы даже если сам компьютер будет работать.
    Команда ping не требует для своей работы сервера, т.к. функционал сервера встроен непосредственно в стек протоколов tcp/ip и система сама отвечает (если трафик pingа не блокируется фаерволом).

    Не понятно, почему вы зациклились на отправке пакетов роутеру? Когда отправляете пакет, то указываете адрес назначения пакета, а протокол сам решает как конкретно будет отправлен ваш пакет. Даже если это адрес yandex.ru и вы не знаете где он фактически находится, то TCP/IP + DNS разберутся с этим сами.

    Обычно роутеры поддерживают управление через web, ssh, telnet (что-то из списка может быть выключено или не поддерживаться на данной модели). Используя клиенты для этих протоколов вы можете отправлять команды роутеру. Например ssh - это удаленная командная строка, выполняться команды будут на роутере, а вы будете видеть результат выполнения. Для web клиентом может быть не только браузер, но и curl или wget или ваша собственная программа.
    Ответ написан
    Комментировать
  • Есть адрес сети 192.168.01.0, нужно разбить на 20 подсетей с максимально возможным количеством узлов. Как выбрать маску?

    @res2001
    Developer, ex-admin
    Для адреса сети 192.168.1.0 обычно используется маска 24 (т.е. 255.255.255.0), хотя было бы не плохо, чтоб в условии задачи была явно задана маска.
    Что бы поделить эту подсеть на 20 подсетей нужно увеличить маску на несколько бит. Число 20 может быть представлено минимум 5 битами. Поэтому увеличиваем маску на 5 бит. Получаем маску 29 (24+5) (т.е. 255.255.255.248). Количество хостов в каждой из 32, поучившихся подсетей максимум 8 (но т.к. 0 и последний адрес являются широковещательными, то на самом деле их 6).
    Примеры получившихся подсетей:
    192.168.1.0/29 - адреса хостов: 192.168.1.0 - 192.168.1.7
    192.168.1.128/29 - адреса хостов: 192.168.1.128 - 192.168.1.135
    192.168.1.168/29 - адреса хостов: 192.168.1.168 - 192.168.1.175
    192.168.1.248/29 - адреса хостов: 192.168.1.248 - 192.168.1.255

    Подсетей получилось 32, а не 20, т.е. 12 подсетей будет не использовано. На практике обычно бывает, что есть дополнительные условия. Например некоторые из 20 подсетей имеют больше 6 хостов, но в большинстве подсетей 2-3 хоста. В этом случае можно оптимизировать деление на подсети - использовать не равномерное разделение (одна маска), а разную длину маски для разных подсетей в зависимости от дополнительных условий.
    Ответ написан
    Комментировать
  • Из-за чего режим адаптера 100, а не 1000?

    @res2001
    Developer, ex-admin
    Причин не то что бы очень много: микротик, сервер, кабель.
    Если другие компы на том же кабеле и в том же порту микротика держат гигабит, значит проблема в сервере.
    Возможно глючит винда или драйвера. Переустановите драйвера, не поможет - винду :-)
    Ничего не помогло - меняйте сетевой адаптер на сервере.
    Ответ написан
    2 комментария
  • Они в одной подсети?

    @res2001
    Developer, ex-admin
    Диапазоны обоих подсетей пересекаются. Оба адреса находятся в той части диапазона, которая принадлежит обеим подсетям. Поэтому хосты друг друга видят.
    Вообще маска нужна только для того, чтобы локальный стек TCP/IP мог определить куда отправлять исходящий пакет. Если хост получателя находится в той же подсети, что и локальный хост, то пакет отправляется напрямую получателю, если подсети разные, то, обычно, пакет отправляется на шлюз по умолчанию.
    Ответ написан
    Комментировать
  • Как создать свой DNS в корпоративной сети?

    @res2001
    Developer, ex-admin
    Вам нужно настраивать дополнительные опции в DHCP сервере. По DHCP можно раздавать не только IP адреса, но и другую сопутствующую информацию.
    Ответ написан
    Комментировать
  • Как исправить бесконечно повторяющееся восстановление Windows?

    @res2001
    Developer, ex-admin
    через Ubuntu винда запускается отлично

    Что это значит?

    С помощью загрузочной флэшки с live системой (можете взять например эту: https://adminpe.ru) протестируйте комп: память, диск, нагрузочное тестирование.
    Если все нормально, переустановите винду с правильного микрософтовского дистрибутива.
    Ответ написан
  • Почему "Неверное имя пользователя и пароль при попытке запустить проводник от имени администратора"?

    @res2001
    Developer, ex-admin
    Узнать имя пользователя, под которым вы работаете в данный момент можно с помощью команды:
    set USERNAME

    По умолчанию стандартная учетная запись пользователя Администратор (для русской винды) заблокирована и ее нельзя использовать.

    Единственный пользователь системы должен обладать правами администратора, иначе вы ничего не смогли бы установить в винду.

    Поскольку в винде есть UAC, то даже запустив что-либо под пользователем с правами администратора, вы этих прав реально не имеете и требуется повышение привилегий.
    Стандартными средствами повысить привилегии запускаемой из сценария программы можно с помощью powershell скрипта (легко можно нагуглить, он открывает окно запроса повышения привилегий) или с помощью других сторонних утилит (например nircmd, есть и другие).
    Ответ написан
  • String или char*?

    @res2001
    Developer, ex-admin
    И какое различие между char* и char[]?

    char* str1 = "Hello world!";
    char str2[] = "Hello world!";
    Разница между str1 и str2 в том, что str1 - это lvalue, а str2 - нет.
    Т.е. с str1 вы можете, например сделать str1 = str1 + 1; а с str2 нет.

    С точки зрения памяти:
    В случае str1 в памяти хранится 2 сущности: 1) сама строка "Hello world!" 2) указатель, которому присваивается адрес строки. Поэтому вы можете присвоить другое значение указателю.
    В случае str2 указателя в памяти нет, есть только строка. Адрес строки знает компилятор и использует его когда нужно. Но присвоить новое значение этому адресу уже не возможно.
    Можно считать, что char str[]; это то же что и char * const str;
    Ответ написан
  • Что делать если линковщик ругается на "неразрешённый внешний символ"?

    @res2001
    Developer, ex-admin
    Вы подключили x64 библиотеку, а собираете x32 проект, естественно компилятору это не нравится.
    Подключите x32 версию библиотеки, или собирайте проект как x64.
    На самом деле можно делать обе версии и в каждой задать использование правильной версии библиотеки.
    Ответ написан
    2 комментария