Задать вопрос
  • Где ошибка.....?

    @res2001
    Developer, ex-admin
    Функцию count реализуйте макросом:
    #define count(arr)     (sizeof(arr) / sizeof(arr[0])

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

    @res2001
    Developer, ex-admin
    Если не хотите АД, то легких путей не ждите. АД - это и есть легкий путь.

    Для начала вам нужно на всех компах в сети:
    1. Завести одного пользователя (с одним и тем же паролем) с правами администратора. На компах админов то же нужно завести такого же пользователя.
    2. Настроить удаленный доступ по RDP на всех компах как минимум для админа
    3. Дать четкие имена компам, что бы вы могли без труда по имени/фамилии сотрудника (номеру телефона или чему-то еще) определить проблемный комп. Можно в качестве wallpaper вывести IP адрес и другую инфу, для этого есть соответствующий софт.
    4. Включить "доступ к файлам и принтерам"
    5. Убрать права администратора у пользователей
    6. Начиная от Windows Vista и дальше, нужно выключить UAC для удаленного запуска программ. Делается это правкой реестра:
    reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f


    В винде почти все администраторские операции на локальном компе можно делать удаленно. Вышеприведенные настройки позволят это делать (пп.1,3,4).
    В винде почти все инструменты для удаленного администрирования уже есть из коробки.

    П.2 позволит подключиться к рабочему столу и потрогать руками, не отрывая задницы от своего кресла.
    В RDP есть такая штука как remote shadow - это дает возможность удаленно подключаться к рабочему столу пользователя одновременно с пользователем (т.е. пользователь будет видеть все ваши действия, так же как и вы его). Часто это бывает удобно, но требует специфической настройки. В инете есть информация, ищите.
    П.5 - это обычная мера безопасности, которая обеспечит 50% безопасности вашей сети.
    П,6 - без этого пункта вы не сможете удаленно выполнять программы, требующие админских прав, на компах. Сам UAC отключать не стоит, вещь достаточно полезная.

    Имея эту базу, дальше вы уже можете прикручивать к сети прокси, фаерволы, почтовики и т.д. и т.п. не сильно отвлекаясь на поддержку пользователей и компов в сети.
    Но не ждите, что кто-то или что-то сделает эту работу за вас. Таких чудесных программ не существует. Вам придется погружаться во все детали самому.
    Изучите хотя бы один скриптовый язык программирования, встроенный в винду из коробки: cmd, powershell, JScript, VBScript. Сейчас, пожалуй, самый актуальный powershell. Это поможет частично автоматизировать ваши процессы.

    PS: Если что я 10 лет админил одноранговую сеть из более чем 100 компов. АД там не разворачивалась по "идеологическим" причинам я в этом был не виноват :-)
    Ответ написан
    6 комментариев
  • Как настроить ninja под windows?

    @res2001
    Developer, ex-admin
    При установке MSVS устанавливаются вместе с ним несколько батников, которые настраивают среду для сборки.
    У меня в MSVS 2017 они называются "Native tools command promtp ...". В других версиях MSVS название может немного меняться. Батники находятся в меню Пуск в папке MSVS.
    Запустите подходящий батник, он настроит среду сборки и запустит командную строку. Там и выполняйте сборку вашего проекта. При этом никаких ручных настроек не требуется.

    PS: зря вы установили MSVS не в каталог по умолчанию - могут быть трудно диагностируемые проблемы при сборке из командной строки. Возможно вы как раз с этим и столкнулись.
    Ответ написан
    Комментировать
  • На каком режиме работают выполняются сервисы Пользовательский режим или на Режиме ядра?

    @res2001
    Developer, ex-admin
    В kernel mode работает только само ядро и драйверы устройств. Все остальное работает в user mode.
    Любая программа, совершая системный вызов, переключается в kernel mode на время выполнения системного вызова. Системных вызовов все программы совершают много и регулярно.
    Ответ написан
    1 комментарий
  • C++ WinForm Как правильно вывести массив структур переданный через указатель?

    @res2001
    Developer, ex-admin
    base[ind].birth.month
    Вообще и остальные поля нужно выводить через точку.
    Кроме того, если приведенный код ch_kol() - это реально все что есть в функции, то это не верно. Вы в ch_kol возвращаете указатель на локальную переменную, как только отработает return этот указатель станет не действиетльным, т.к. массив base перестанет существовать после выхода из функции.
    Подобное определение массива baseProgr base[max];, если max не константа приводит к объявлению массива переменной длины (VLA). Строго говоря С++ не поддерживает VLA, т.к. это фишка Си. Но некоторые компиляторы (gcc) при включенных расширениях (по умолчанию включено) позволяют их использовать. Но этот код становится не переносимым, т.к. при других опциях компилятора или на другом компиляторе код может не собраться.
    Ответ написан
    4 комментария
  • Как правильно использовать свои опции в cmake?

    @res2001
    Developer, ex-admin
    1. Первый параметр при запуске cmake - путь к файлу CMakeLists.txt, который нужно обработать.
    Обычно процесс сборки с помощью cmake у меня выглядит примерно так:
    Создаю в произвольном месте пустой каталог для сборки проекта, перехожу в него, там выполняю: cmake <путь к cmakelists.txt>
    В этом случае каталог с исходниками не заполняется не нужными там артефактами сборки.

    2. опции в cmake передаются так cmake ... -D<имя опции>[=значение]
    Т.е. -D - это ключ за которым следует имя опции. Теперь сравните с тем как вы это применяете.
    Синтаксис похож на определение макросов в командной строке компиляторов C/C++.
    Ответ написан
  • Как правильно сделать комплексное преобразование Фурье в python?

    @res2001
    Developer, ex-admin
    Использовать numpy.fft.fft().
    Можно использовать с действительными числами, преобразование все равно будет комплексным.
    Если уж сильно хочется чтоб было все комплексное - просто добавьте нулевую мнимую часть к вашим действительным числам. Это можно сделать например сложив ваш действительный массив с 0j.
    Ответ написан
  • Как не собирать повторно зависимость при сборке проекта в cmake?

    @res2001
    Developer, ex-admin
    Ответ в комментариях тут.
    Ответ написан
    Комментировать
  • В чем отличие инструментов для отладки - step и step into?

    @res2001
    Developer, ex-admin
    Если в текущей строке вызов функции, то step не зайдет в функцию, т.е. функция выполнится вне отладчика и следующей отлаживаемой строкой будет строка следующая за вызовом функции.
    step into зайдет в функцию и следующей отлаживаемой строкой будет первая строка кода в функции.
    Ответ написан
    Комментировать
  • Как правильно настроить кодировку для std::ifstream и std::string?

    @res2001
    Developer, ex-admin
    Используйте wstring и широкие символы вместо string и char.
    Ответ написан
    2 комментария
  • Что лучше будет: - железный впн или программный?

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

    Но если вы плохо разбираетесь в теме (или у вас нет человека разбирающегося в теме), то есть смысл использовать ВПН встроенный в роутер. Там по крайней мере из коробки обычно есть более-менее сносный веб интерфейс и настроить ВПН в принципе не сложно.

    Впрочем в "программном" варианте можно то же прикрутить интерфейс и возможностей по настройке больше, но это потребует более глубоких знаний.

    Кстати, никто не запрещает делать "гибридный" ВПН. Если в железке ВПН реализован с использованием каких-то стандартных протоколов, то вы можете использовать и его программный вариант в тех точках где это будет удобно, а в других местах использовать "железный" ВПН. В общем нет никакого смысла себя загонять в рамки железный/программный - действуйте по обстоятельствам.

    На счет белых IP - для ВПН вам понадобится хотя бы 1 белый статический адрес, на нем вы развернете ВПН сервер. Можно использовать схему динамический белый адрес + DDNS, но это так себе идея. ВПН клиенты могут использовать серые адреса. Под ВПН сервер вы можете арендовать VPS или развернуть его где-то на своей площадке где уже есть белый адрес.
    Ответ написан
    Комментировать
  • Как найти файлы с определенными свойствами?

    @res2001
    Developer, ex-admin
    dir /a-ds /b /s
    Справка по dir: dir /?
    Ответ написан
    Комментировать
  • Как получить список файлов-symlink'ов из директории?

    @res2001
    Developer, ex-admin
    В команде dir ключ /al заставляет ее выводить только ссылки. Ключ /a-d - только файлы.
    Совместить их можно так:
    dir /a-dl /b /s C:\way\
    Остальные ключи посмотрите в справке.

    PS: Спасибо за вопрос. Раньше это как-то не нужно было. Открыл для себя новые возможности dir :)
    Ответ написан
    Комментировать
  • Как вызвать класс комплексное число?

    @res2001
    Developer, ex-admin
    Для получения 9+12i надо вызвать computePolynomial(), его результат вывести на экран.
    Ответ написан
  • Поддерживает ли HP smart array p410 hotswap?

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

    @res2001
    Developer, ex-admin
    Отфильтровать строки в текстовом файле можно с помощью findstr.
    Разбить строку на лексемы можно с помощью for /f
    Смотри:
    findstr /?
    for /?
    Ответ написан
    Комментировать
  • Как ответить на эти вопросы по взаимоблокировкам?

    @res2001
    Developer, ex-admin
    Вот курс по параллельному программированию: https://compscicenter.ru/courses/hp-course/2020-sp...
    Рекомендую. По моему, самый толковый из публичных преподаватель по этому направлению в РФ.
    Начните с 1, 2 и 5 лекций, там есть ответы на все вопросы.
    Ответ написан
    Комментировать
  • Мешает ли факт того, что я лежал в ПНД от военкомата и получил "легкий" диагноз (тревожное РЛ) трудоустройству в it сфере?

    @res2001
    Developer, ex-admin
    IT оно есть в разных местах, порой достаточно неожиданных. Получив подобную отметку в военнике вы никогда не устроитесь на любую работу в силовых структурах, МЧС и т.п. - где требуется отслужить срочку.
    Если считаете, что есть смысл на старте жизни потерять часть потенциальных работодателей, то вперед.
    У меня есть несколько примеров, когда сначала люди думали, что нафига им эта гос.служба, они и так красивые и все их с руками будут отрывать, а потом об этом жалели, когда возникли трудности с поиском нормальной работы.
    Ответ написан
    7 комментариев
  • Как организовать работу двух динамических массивов используя malloc?

    @res2001
    Developer, ex-admin
    Добавлю ко всему выше написанному: подобное использование двумерных массивов убивает производительность, т.к. вместо одного чтения памяти происходит 2, а кроме того весь массив разбит на много маленьких кусков, которые лежат в разных местах памяти - кэш процессора используется не эффективно. В нагруженных приложениях это будет сказываться.
    Правильнее использовать двумерный массив выделенный одним куском и пересчитывать индексы в ручную:
    int *a = malloc(sizeof(int) * n * m);
    for(int i=0; i < n; ++i)
      for(int j=0; j < m; ++j)
        *(a + i * m + j) = 0;

    Это стандартный вариант использования двумерного массива, который будет работать везде и на С++ то же.

    Что бы избежать пересчета индексов (например когда массивы трехмерные или больше) можно использовать промежуточный "указатель на массив переменной длины" (правда это будет работать только на gcc/clang и в С++ работать не будет, только С99+). Подробно расписывать не буду, т.к. тут важно понимание. Если будет интересно в интернете информацию по VLA найдете.
    Ответ написан
    1 комментарий
  • Как обеспечить доступ мобильному телефону к Exchange в локальной сети, не используя vpn?

    @res2001
    Developer, ex-admin
    Используйте IMAPS, но порты все равно придется пробросить.
    Ответ написан
    Комментировать