• Чем принимать REST API HTTPS запросы?

    @res2001
    Developer, ex-admin
    Т.е. вам нужен HTTP сервер на Си.
    libonion - только Линукс, SSL есть.
    haywire - кросс-платформенно, по моему он не умеет SSL.
    Ответ написан
    Комментировать
  • Почему в VS программа на СИ работает неправильно, хотя в онлайн компиляторе все в порядке?

    @res2001
    Developer, ex-admin
    У вас куча операций с файлами, любая может вернуть ошибку. У вас в коде нет ни одной проверки ошибок.
    Были бы проверки ошибок, возможно это вам бы помогло.
    В reverseOrder() - используется рекурсия, по тексту заданий я вообще не понял, где там можно было бы применить рекурсию. Возможно ошибка где-то тут.
    В 1.3 вы странно вычисляете count - strlen() возвращает количество символов уже без учета нулевого символа. Зачем вы еще вычитаете 1?

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

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

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

    @res2001
    Developer, ex-admin
    Т.е. вы хотите низкочастотный звук перенести в высокие частоты?
    Перенести можно, но вряд ли из этого выйдет что-то удобоваримое
    В теории это так.
    Можно попробовать что-нибудь типа такого:
    1.Делаем ДПФ
    2.Добавляем между первым и вторым отсчетами результата ДПФ столько нулей, сколько необходимо для достижения новой частоты дискретизации. Не забываем про вторую половину спектра.
    3.Делаем обратный ДПФ
    Не знаю, что получится :-) это немного измененный алгоритм интерполяции через ДПФ. Там нулевые отсчеты добавляются в конец (поэтому сдвига спектра не происходит).
    Делать надо, видимо, небольшими временными отрезками (0.5 - 1 секунда), затем результат складывать. Возможно надо будет брать сигнал с перекрытием. Но не факт, у меня не было опыта работы с речевыми сигналами.
    Чтоб реализовать даже мой простой алгоритм надо немного понимать как все это работает.
    Ответ написан
  • Как игнорируя диалог, перейти к следующей команде?

    @res2001
    Developer, ex-admin
    someprogram.exe - консольная?
    Если ошибки и вопросы выводит в консоль, а ответа ждет на stdin, то ответы на вопросы можно записать в текстовый файл (например answer.txt) и перенаправлять его вместо стандартного входа:
    someprogram.exe ... <answer.txt

    Если же someprogram.exe графическая утилита и вопросы возникают в своих окнах, то тут гораздо сложнее, но то же выход есть - нужно использовать утилиты типа nircmd или autoit, чтоб с их помощью в появляющиеся окна вводить информацию или нажимать какие-то кнопки. Эти утилиты умеют эмулировать действия пользователя, все это делается соответствующими скриптами.
    Ответ написан
    1 комментарий
  • Установка cURL на CodeBlocks на MinGW на Windows?

    @res2001
    Developer, ex-admin
    Установите msys2 - это оболочка для mingw со своим менеджером пакетов.
    Любой имеющийся в репах пакет устанавливается так же как в линуксе - одной командой.
    В msys2 можно установить одновременно и 32 битный и 64 битный mingw, а так же clang.
    mingw установленный в msys2 легко прикручивается к любой IDE.
    Ответ написан
    1 комментарий
  • Дана таблица с пояснением синтаксиса NAL unit'a. Как её трактовать?

    @res2001
    Developer, ex-admin
    Стандарт.
    next_bits( n ) описана чуть выше таблиц:
    next_bits( n ) provides the next bits in the bitstream for comparison purposes, without advancing the bitstream pointer. Provides a look at the next n bits in the bitstream with n being its argument. When used within the byte stream format as specified in Annex B and fewer than n bits remain within the byte stream, next_bits( n ) returns a value of 0.

    next_bits( n ) - возвращает следующие n битов в битовом потоке.

    nal_unit() и nal_unit_header() не функции - это такое описание структур, когда сама структура имеет плавающий размер, зависящий от параметров.
    nal_unit_header() - не зависит ни от чего и ее размер фиксирован.
    nal_unit() зависит от NumBytesInNalUnit, этот параметр должен быть заранее известен. Например он может быть протчен ранее из того же битового потока или задается другим способом.
    В цикле вычисляется размер массива rbsp_byte.
    В разделе 7.4 таблицы описываются словами.
    Ответ написан
  • Как настроить сокеты беркли на разрыв соединения через определенное время?

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

    @res2001
    Developer, ex-admin
    КриптоАРМ достаточно толковый пользовательский продукт , стоит не больших денег.
    Легко встраивается в проводник, после чего можно из проводника в несколько кликов шфровать/расшифровывать файлы. Так же есть КриптоАРМ SDK, что позволяет встраивать функционал в свои приложения.

    Но КриптоАРМ это не разработка КриптоПро, к КриптоАРМу вы должны отдельно купить КриптоПро CSP.
    Сам по себе КриптоАРМ - это только удобная оболочка для крипто функций.

    В собственном приложении вы можете использовать только функции Microsoft Crypto API и через него использовать криптографию от КриптоПро (и любую другую совместимую) и вам не нужен КриптоАРМ.

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

    @res2001
    Developer, ex-admin
    Добавьте на ноуте маршрут до сети 10.15.0.0/24 через IP смартфона. Кроме того, на сервере, в настройках OpenVPN нужно указать, что за этим клиентом (смартфоном) находится сеть 192.168.43.0 иначе ответы не будут приходить на ноут.
    Ответ написан
    Комментировать
  • Как посчитать кол-во сравнений и пересылок в сортировке методом прямого выбора?

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

    1.У вас ошибка в реализации. Нужно так:
    for (int i = 0; i < SIZE-1; i++) 
      { 
          min = i;                                           // индекс минимального элемента
          for (int j = i+1; j < SIZE; j++)
          {
                    comparison++;                                  // инкремент сравнений
              if (array[j] < array[min])                     // если текущий элемент меньше минимального 
                    {           
             min = j;                                        // запоминаю его индекс
                    }                  
                }
          temp = array[i];                                     //
          array[i] = array[min];                             // меняю их местами
          array[min] = temp;                                 //
          transfer++;						  // инкремент пересылок
      }

    Привел только тело цикла.
    Вот тут показана правильная реализация
    2.Количество сравнений и пересылок для этого алгоритма легко определяется аналитически (не надо ничего считать в самом алгоритме):
    2.1. Количество сравнений находится по формуле суммы n первых членов арифметической прогрессии: Sn = (a1+an)/2*n. Где a1 = 1, an = SIZE-1, n = SIZE-1
    2.2. Количество пересылок всегда равно SIZE-1
    Ответ написан
  • Параметры запуска cron задач?

    @res2001
    Developer, ex-admin
    1. 23:59
    2. С 00:00 до 01:59 каждые 3 минуты
    2. 3:59
    4. с 04:00 до 06:59 каждые 3 минуты
    Ответ написан
    Комментировать
  • Авторитет в экспертном мнении?

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

    @res2001
    Developer, ex-admin
    Похоже 1 планка на 1 канале.
    В любом случае метод перебора никто не отменял.
    Возьмите memtest, оставляйте 1 планку и тестируйте.
    Ответ написан
    1 комментарий
  • Можно ли связать код Си(c++) и Python?

    @res2001
    Developer, ex-admin
    У Бизли есть неплохое введение в написание модулей на Си. Можете начать с него, а за деталями в родную документацию.
    Раз вы собрались рисовать графики, то, видимо нужно передавать в питон большие массивы данных.
    Для этого можно реализовать в модуле buffer protocol. numpy умеет работать с такими массивами.
    Так же можно создавать в модуле сразу массивы numpy, для этого надо использовать Numpy C API.
    Ответ написан
    Комментировать
  • Как обеспечить долгую жизнь WInServ2008R2?

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

    @res2001
    Developer, ex-admin
    Хороший стимул к работе - это когда подходишь к холодильнику, а там пусто.

    Обычно рутина составляет 90% работы.
    Надо научится с этим жить.

    Можно стать seniorом, когда сам сможешь решать, что будешь делать, и брать себе только самые "вкусные" задачи. Но и в этом случае рутина останется, возможно ее будет меньше.
    Ответ написан
    2 комментария
  • Почему пакет не знает куда ему идти?

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

    2.Если в эту схему добавить NAT на VPSе, то тогда приходящий трафик на веб сервер будет иметь ВПН адрес VPSа и ответы будут уходить VPSу без дополнительных телодвижений, затем ответы попадают в NAT и там выходят на ружу.

    3.Перенести веб сервер на внешний хостинг.
    Ответ написан
    5 комментариев
  • Какой компилятор C++ выбрать?

    @res2001
    Developer, ex-admin
    У Микрософт есть компилятор отдельно от VS, продукт называется - Build Tools for Visual Studio. Не смотря на то что он "for Visual Studio", но его можно поставить отдельно и собирать проекты.
    На счет того что выбрать - для винды микрософтовский компилятор. Как вариант mingw, но msvc лучше, имхо.
    Для никсов - gcc, clang и проч.
    Ответ написан
    1 комментарий
  • Как лучше спроектировать базу данных для лучшей производительности?

    @res2001
    Developer, ex-admin
    Варианты суть одно и то же, а по тому и производительность будет примерно одинакова.
    Только во втором варианте, надо использовать, конечно, не текстовое сравнение - используйте справочник стран и жанров, и ищите по ID стран и жанров.
    Я бы выбрал второй вариант, т.к. таблиц меньше. Но в первом варианте, запросы будут более понятными.
    Ответ написан