Задать вопрос
  • Законно ли сейчас использование OpenVPN в организации?

    @res2001
    Developer, ex-admin
    На сколько я знаю, использование криптографических алгоритмов не сертифицированных ФСБ запрещено в РФ, кроме варианта встроенных в ПО или железо алгоритмов.
    Например при ввозе разных сетевых железок с криптой на борту требуется разрешение ФСБ. Дают его, по моему, без особых проблем.
    На практике любое использование крипты можно подвести под встроенное и неотчуждаемое, и органы обращают на это внимание только когда организации требуется лицензия на деятельность связанную с криптой, но в этом случае требуется еще много чего. Но даже в этом случае можно использовать не сертифицированную крипту в направлениях не связанных с лицензируемой деятельностью, например, банки в клиент-банках обязаны использовать сертифицированное шифрование и получать лицензию на это, но при этом они вполне могут организовывать ВПН между офисами на OpenVPN.
    Ответ написан
  • Польская запись. В чем ошибка?

    @res2001
    Developer, ex-admin
    У вас в коде забито другое выражение: (a + b) * (c - d)
    Где реализация стека?

    По реализации:
    1. Для вычислений вам не нужны 4 переменные или 10 (в зависимости от того сколько в выражении), достаточно двух для обычных бинарных операций (с двумя операндами). Результат промежуточного вычисления нужно снова вставлять в стек в место вытащенных операндов и операции.
    2.Алгоритм вычисления по прямой польской нотации неплохо описан на вики.
    нужно считывать выражение слева направо, рассматривая оператор и ближайшие к нему два операнда. Если среди этих операндов находится еще один оператор, то вычисление первого оператора откладывается, до тех пор, пока не будет вычислен новый оператор. Итерации этого процесса повторяются до тех пор, пока оператор не будет вычислен, что должно в конечном счете произойти, если в выражении количество операндов на один больше, чем количество операций (в случае бинарных операций). Как только оператор вычислен, он и его два операнда заменяются полученным значением (операндом). Поскольку оператор и два операнда заменяются на вычисленный операнд, то становится на один оператор и один операнд меньше.

    Таким образом стек тут не очень подходит, кроме операций push и pop нужно еще делать и обход списка в прямом направлении и вставка/удаление элементов в произвольной позиции.
    Либо как вариант со стеком - использовать 2 стека. Т.е из одного извлекаете отложенные и результаты вычислений помещаете во второй пока первый не опустеет, затем переключаетесь на второй и так до тех пор пока в стеке не останется единственное значение - результат вычислений.
    Либо с одним стеком, но изменить реализацию. Так чтобы не было структуры P_STACK.
    Ответ написан
  • Редирект запросов десктопного приложения на другой адрес средствами Windows?

    @res2001
    Developer, ex-admin
    Если site.ru и service.site.ru имеют разные IP и web-сервера не используют виртуальные хосты (т.е. не определяют сайт по его имени), то можно в файле hosts прописать для site.ru IP адрес service.site.ru.

    В более общем случае нужен прозрачный прокси, которого в винде нет.
    Обычно прозрачный прокси ставится на хосте являющемся шлюзом по умолчанию, но возможно есть варианты с установкой на локальном хосте, который бы перехватывал весь трафик и то что надо подменял. Подобные прокси видел в составе некоторых платных программных продуктов, есть ли такое свободное решение не в курсе.
    Ответ написан
    Комментировать
  • Должно ли количество итераций соответствовать асимптотической сложности алгоритма?

    @res2001
    Developer, ex-admin
    У вас счетчик итераций 2 раза инкрементируется в коде. Во внешнем цикле явно лишний инкремент.
    В случае операций с массивами или списками, для оценки сложности обычно берут количество полных проходов по массиву для получения результата.

    В вашем случае количество итераций равно оценке сложности.

    В общем случае количество итераций приближается с низу к оценке сложности, например поиск по одному двоичному дереву может выполняться за разное число шагов для разных значений.
    Ответ написан
    Комментировать
  • Удаление новой версии я windows очисткой $WINDOWS.~BT?

    @res2001
    Developer, ex-admin
    Запустите мастер очистки, там есть соответствующие опции, он вам все грамотно почистит. Ноут должен был перезагрузиться в процессе установки 1803.
    Ответ написан
  • Зависает win10 с двумя мониторами, как бороться?

    @res2001
    Developer, ex-admin
    Попробуйте поставить более старые драйвера на видео карту.
    Возможно осталась версия, которая работала когда-то, ее и поставьте, с предварительным ручным удалением текущих драйверов.
    Ответ написан
  • С++ - как отсортировать структуру?

    @res2001
    Developer, ex-admin
    Реализуйте в структуре конструктор копирования и/или копирующий оператор присваивания, и сортируйте пузырьком (т.к. самая простая реализация соритровки). Можно еще реализовать несколько функций сравнения по разным атрибутам и передавать эти функции в пузырек (чтоб можно было делать сортировку по разным атрибутам с помощью одной функции сортировки).

    По коду:
    1.Вы начинаете писать на С++, а потом перескакиваете на Си (puts, printf) ...
    2.В struct student поля surname и gr объявлены как char, а в коде вы их используете как си-строки - это абсолютно разные вещи.
    3.Вы не правильно используете функцию puts. В таком виде у вас программа не соберется. Посмотрите документацию.

    Возможно что-то еще ...
    Ответ написан
    Комментировать
  • Как запускать программу хоткеем однократно? Батник подойдет?

    @res2001
    Developer, ex-admin
    В батнике отловить запущен ли процесс можно с помощью фильтров tasklist.
    Ответ написан
    Комментировать
  • Можно воспользоваться HINSTANCE exe файла для поиска адреса функции?

    @res2001
    Developer, ex-admin
    NtCreateFile находится в NtDLL.dll
    Думаю, что можно использовать LoadLibrary/GetProcAddress для загрузки библиотеки и адреса функции.
    Ответ написан
    2 комментария
  • Где ошибка в коде, потерялся символ, и не работает free()?

    @res2001
    Developer, ex-admin
    Крашится на free скорее всего из-за того, что у вас где-то выход за границу массива и вы перезаписываете служебные данные менеджера памяти. Нужно искать выходы за границу массива.

    1.Как минимум ошибка при realloc - вы увеличиваете массив только 1 раз, а что если строка попадется очень длинная и нужно будет еще увеличивать буфер?
    Вам нужно в getlen передавать текущий размер буферов и возвращать из нее новый размер, если был realloc.
    Кроме того нужно определить до какого максимального предела вы готовы увеличивать буфера - память не безграничная (даже виртуальная) и если буфера вырастают за допустимый предел - нужно выдать ошибку и завершить программу.

    2. В del_spacetab лишние условия в if:
    if ((*p1)[i] == ' ' || (*p1)[i] == '\t' && (*p1)[i] != '\n')
    Если я все правильно понимаю, то не равенство с '\n' тут излишне, или может быть не хватает скобок. Обычно, если в логическом выражении нужно использовать и || и &&, то для большей читаемости нужно использовать скобки для точного определения того что вы хотите сказать этим выражением.
    Следующим else if - вы обнуляете счетчик на каждом не пробельном символе ...
    Ну и функция del_spacetab не делает то что вы хотите - она просто возвращает количество "пробельных" символов, потом вы при копировании их не отбрасываете.

    3.В функциях, кроме getline, не нужно передавать двойные указатели на буфера - достаточно простых указателей.
    В getline нужны двойные указатели потому что в случае увеличения размера буфера вы должны через них вернуть указатели на новые буфера. В остальных функциях это не требуется.

    PS: Запустите программу под отладчиком и отслеживайте все изменения состояния (переменных) в ручную.
    Ответ написан
  • Каким способом можно оптимально восстановить удаленный документ Word?

    @res2001
    Developer, ex-admin
    Попробуйте восстановить любой утилитой, какую найдете, но шансов не много, т.к. после удаления файла используемые им сектора на HDD при любой записи на диск могут перезаписаться. Чем больше был размер файла, тем меньше шансов на восстановление.
    Чтоб увеличить шансы на восстановление вам нужно было сразу после удаления файла принудительно выключить комп и не включать его больше. HDD переставить на другой компьютер вторым диском и с него пытаться восстанавливать. Загружаться при этом лучше не с установленной на комп винды, а с какого-либо загрузочного носителя. Все это нужно для предотвращения перезаписи секторов, занимаемых файлом.
    Ответ написан
    Комментировать
  • Как подружить python и simulink?

    @res2001
    Developer, ex-admin
    Подготовьте нейросеть на матлабе и используйте в симулинке.
    Ответ написан
  • Зависла подготовка к установке обновлений windows 10. Что делать?

    @res2001
    Developer, ex-admin
    Подготовьте установочную флэшку с последней версией вин10 и установите с нее в режиме обновления.
    Ответ написан
  • Обьясните, что здесь происходит ++ndigi[c-'0']?

    @res2001
    Developer, ex-admin
    Выражение (c-'0') возвращает индекс в массиве nidigi[10].
    В переменной
    char c;
    лежит ASCII код введенного символа (цифры), если из этого кода вычесть ASCII код символа '0', то получите цифру от 0 до 9, что и требуется. Чтоб удостоверится посмотрите таблицу ASCII кодов.
    В массиве nidigi в итоге количество вхождений десятичных цифр во входных данных - гистограмма.
    Ответ написан
    1 комментарий
  • Какой роутер нынче хорош дома для гика?

    @res2001
    Developer, ex-admin
    Как альтернатива микротику - у асуса старшие модели не плохие, прошивки имеются.
    Ответ написан
    Комментировать
  • Как записать звук с микрофона и колонок в один поток?

    @res2001
    Developer, ex-admin
    Не знаю как это в DirectShow, но теоретически просто поэлементно сложить оба потока, при одинаковой частоте дискретизации. Если частота дискретизации различается, нужно привести к одной, а потом все равно сложить.
    Ответ написан
  • Можно ли достать конфиденциальную информацию из ПК зная его IP через интернет?

    @res2001
    Developer, ex-admin
    По IP теоретически можно, но в типичной ситуации это, обычно, будет стоить дорого и спеца, который это сделает, еще нужно поискать.
    Есть более дешевые способы в offline.

    Если известен e-mail или аккаунт в соц.сетях и т.п. - то уже можно попытаться развести пользователя на установку трояна, который тебе откроет ворота в компьютер. Этот вариант более реальный, обычно так все и происходит. Но от него так же достаточно просто защититься - не разводиться, не ходить по левым ссылкам, не устанавливать левый софт, включить UAC, работать без прав администратора, установить антивирус...
    Если комп используется для работы с финансами или другой чувствительной информацией, то с него вообще нельзя ходить "на лево", только на ограниченный разрешенный список сайтов/хостов в интернете. Этот список нужно явно прописать в фаерволе, остальное нещадно блокировать.
    Ответ написан
    Комментировать
  • Кратковременное зависание ноутбука, в чем причина?

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

    @res2001
    Developer, ex-admin
    Выделяете динамически первоначальный размер памяти, читаете в него заданное количество символов (по размеру буфера), если конца строки не было, делаете resize буферу, дочитываете, проверяете конец строки и т.д.
    Можно читать по 1 символу и сразу его проверять на конец строки, но память при этом так же нужно увеличивать при необходимости. Медленнее скорее всего не будет, т.к. стандартная библиотека делает буферизацию по умолчанию, т.е. фактически все равно будет читаться не по 1 байту.
    Ответ написан
    Комментировать