• С точки зрения закона РФ, правомерно ли использование openssl для ЭЦП и шифрования?

    @res2001
    Developer, ex-admin
    На сколько я знаю существуют сертифицированные версии openssl с ГОСТовскими алгоритмами. На вскидку примеров не приведу, но в свое время находил в инете такую информацию. Гуглите.

    Тут еще вопрос в другом - наша крипта, даже если реализует одни и те же алгоритмы не совместима друг с другом (по крайней мере несколько лет назад эта проблема была). Поэтому вам придется использовать то ПО, которое использует ЦС и ваш контрагент. Боюсь, что выбора практически нет. Хотя, возможно, что-то уже сдвинулось в этом отношении.
    Ответ написан
  • Почему в массив размером N можно положить больше чем N элементов?

    @res2001
    Developer, ex-admin
    В malloc при передаче в качестве аргумента нуля возвращаемое значение не определено (implementation-defined). Так что фиг знает что там вам вернул маллок. Но раз программа не падает, то, возможно, он вернул какой-то указатель на стек, а в стеке у вас есть ~8МБ - развлекайтесь.
    В общем не нужно так делать. На другом компиляторе (или на том же, но другой версии) поведение может быть совсем другим.
    Ответ написан
    Комментировать
  • Как отфильтровать по дату в поле timestamp?

    @res2001
    Developer, ex-admin
    WHERE date >= '2020-01-01 00:00:00' and date <= '2020-01-01 23:59:59'

    Ну или выделите из timestamp дату и сравните только с датой.
    Дату лучше представлять в более универсальном формате: 'YYYYMMDD HH:MM:SS'
    И напишите какой сервер используете.
    Ответ написан
    Комментировать
  • Как в данном случае записывать результат недоигранной игры в бинарный файл?

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

    @res2001
    Developer, ex-admin
    Сишные функции не вызывают исключений. В Си их просто нет. Поэтому помещать их в try/catch нет смысла - проверяйте возвращаемые значения по старинке. Если хотите, можете написать обертки для стандартных функций, генерирующие исключения в случае ошибки. А еще лучше использовать std::fstream - вы же пишите на С++, так и пользуйтесь плюсовой стандартной библиотекой, а не Сишной.
    void foo() {
        int *smth;
        try {
            smth = new int[100];
            if (5 < 4) {
                std::runtime_error("Беда");
            }
        } catch (std::runtime_error &e) {
            e.what();
        }
        delete[] smth;
    }

    new генерирует std::bad_alloc, если произойдет исключение - память не выделилась и ничего удалять не надо.
    Ответ написан
    2 комментария
  • Как удалить элемент массива?

    @res2001
    Developer, ex-admin
    Прежде всего я не понимаю, как выбить этот элемент из массива

    В вопросе уже есть ответ на вашу непонятку:
    для чего выполнить сдвиг влево.

    Т.е. вам не нужно фактически удалять найденное значение (к тому же это и не возможно сделать), нужно просто передвинуть остающиеся элементы на одно значение. Таким образом массив не уменьшиться в размере, но последний элемент будет не актуальным, после сдвига ему можно присвоить некоторое значение, которого не может быть в существующих элементах (если такое возможно). Копировать элементы массива можно просто с помощью memmove().
    Искать элемент в отсортированном массиве нужно используя двоичный поиск.
    Ответ написан
    Комментировать
  • Как дать разрешение для выполнения скриптов в Ubuntu?

    @res2001
    Developer, ex-admin
    Стандартное разрешение никсов на выполнение: sudo chmod +x <имя файла скрипта>
    При этом в скрипте первая строка должна быть чем-то вроде: #!/bin/bash
    Варианты могут быть разные, в зависимости от ЯП на котором написан скрипт, первые 2 символа обязательные.
    Ответ написан
  • Ошибка при установке библиотеки SciPy, как правильно установить?

    @res2001
    Developer, ex-admin
    Использую Анаконду с уже предустановленными библиотеками. Есть и другие подобные сборки.
    Ответ написан
  • Как правильно запускать exe через bat?

    @res2001
    Developer, ex-admin
    Из батника ехе запускается очень просто: Y:/finalversion.exe
    Ваша конструкция (через start) то же должна работать, но это лишнее.
    Другой вопрос как вы запускаете сам батник.
    Ответ написан
    1 комментарий
  • Настроить доступ к локальной сети клиентам OpenVPN в CentOS?

    @res2001
    Developer, ex-admin
    Это лишнее:
    push "route 192.172.10.0 255.255.255.0" \\Сеть за микротом
    push "route 192.168.10.0 255.255.255.0"

    Это уберите в файл клиента, в опцию iroute
    route 192.172.10.0 255.255.255.0
    Почему у вас локальная сеть за микротом имеет белые адреса? Вы арендуете у прова подсеть? (192.172.10.0/24)
    Но это к делу отношения не имеет.

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

    @res2001
    Developer, ex-admin
    Потому что массив так нельзя вернуть из функции. Сейчас вы просто возвращаете указатель. Пока указатель находится в функции getMas он действительно указывает на массив. Как-только вы вышли из getMas стек схлопнулся (ваш массив находится на стеке) и память, где раньше лежал массив стала не действительной.
    После вызова первого printf, та же память на стеке, которую когда-то занимал ваш массив выделилась под нужды printf, и printf заполнила эту память чем-то своим, поэтому в третьем printf у вас фигня.
    Программа у вас не вываливается с ошибкой, потому что в стеке память всегда выделена. "Схлопывание стека" - это просто уменьшение/увеличение регистра указателя на стек.

    У вас есть 2 вариант.
    1. Простой - выделить массив в main, передать его в getMas. Из getMas уже можете ничего не возвращать, только заполняете там массив.
    2. Выделяете динамический массив в getMas с помощью malloc. В main не забудьте освободить память, выделенную для массива. Это плохой вариант, т.к. память выделяется на одном уровне программы, а освобождается на другом. Но в вашей простой задаче можно пока на это не обращать внимания.
    Ответ написан
    Комментировать
  • Длина файла в c++?

    @res2001
    Developer, ex-admin
    Не нужно вам так: for(i =0; i<=длина файла -1;i++)
    Читайте пока не будет eof() или ошибки, обычно делают примерно так:
    while(f.good()) { f.read() }

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

    @res2001
    Developer, ex-admin
    Примерно так: запускаете ipconfig /all | findstr ... - ipconfig выводит портянку данных по сетевым соединениям, с помощью условия в findstr фильтруете вывод ipconfig так что бы оставалась одна строчка с нужным МАСом.
    Всю конструкцию загоняете загоняете в for /f:
    for /f "tokens=... delims=..." %%a in ('ipconfig /all ^| findstr ...') do (
      start browser %%a
    )

    Сейчас под рукой винды нет, поэтому подробней не напишут.
    Для справки:
    ipconfig /?
    findstr /?
    for /?
    Ответ написан
    Комментировать
  • Есть ли аналог Terminal server в linux?

    @res2001
    Developer, ex-admin
    1.xrdp ставить на линукс и подключаетесь любым RDP клиентом.
    2.В комп с линухом: 2 видеокарты, в каждую по монитору, 2 клавы и мышки. Ставите гипервизор (например KVM), создаете 2 виртуалки, в каждую виртуалку пробрасываете видюху, клаву и мышь. Статьи на эту тему видел на хабре.
    Ответ написан
    Комментировать
  • Кто нибудь подскажет чайнику команду в bat файл на отключение ведения журналов событий в windows 10?

    @res2001
    Developer, ex-admin
    Видимо надо отключить службу журналирования (не знаю как она называется в винде). Для работы со службами есть утилита командной строки sc.
    Смотри: sc /?
    Ответ написан
    Комментировать
  • Как для OpenVPN установить исходящий IP (на сервере их несколько)?

    @res2001
    Developer, ex-admin
    В конфиге OpenVPN задайте опцию local - в ней укажите, какой адрес будет слушать OpenVPN для приема входящих подключений.
    По умолчанию слушает все адреса.
    Ответ написан
  • Как устроен list() в Python?

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

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

    @res2001
    Developer, ex-admin
    Примерно так:
    @echo off
    chcp 1251 1>nul
    set "find_str=search string"
    set "search_dir=c:\temp"
    for %%a in (%search_dir%) do (
       findstr /C:"%find_str%" "%%~a" 1>nul 2>&1 && del /f /q "%%~a"
    )

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

    @res2001
    Developer, ex-admin
    Надо выставить в XShell кодировку UTF8.
    Ответ написан
    1 комментарий
  • Можно ли просматривать список посещенных сайтов и действия пользователя, если использовать в компании OpenVPN?

    @res2001
    Developer, ex-admin
    Любые ВПН вообще и OpenVPN в частности не имеют отношения к вашим хотелкам. Вы можете делать это с ВПН или делать без ВПН - как угодно. Для этого используется другое ПО никак не связанное с ВПН. Оно работает на уровне выше, чем работает ВПН.
    Ответ написан
    Комментировать