• Как массово переименовать файлы формата PDF с нумерацией?

    @res2001
    Developer, ex-admin
    Сложность в том, что нужно выделить из имени файла его номер и добавить нужное количество нулей.
    Выделить номер можно загнав имя файла в цикл for /f и разделив его на токены. Из токенов нас интересует только 1 токен (номер):
    for %%a in (*) do if /i "%%~xa"==".pdf" for /f "tokens=1,* delims=." %%b in (%%a) do (
      echo %%b
    )

    Во внутреннем цикле в переменной %%b будет номер файла.
    Для того чтобы добавить нужное количество нулей, нужно знать длину номера.
    Функцию определения длины строки возьмите на сером форуме.
    Сам ею не однократно пользовался.
    Ну а дальше просто добавьте впереди 3 нуля к имени файла, а потом обрежте лишние. Команда set умеет выделять подстроки.
    Для справки:
    for /?
    set /?
    Ответ написан
    1 комментарий
  • Как на VPN сделать чтобы при переключении провайдера - сохранялся коннект и ip?

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

    Реализовать ВПН достаточно просто. Проще всего купить уже готовый, сейчас это не сложно. Надо подобрать оператора ВПН, предоставляющего тип ВПН, который поддерживает ваш роутер.
    Но надежней на мой взгляд поднять ВПН самому, это то же не сильно сложно. Для этого вам надо арендовать VPS с Linux, настроить там подходящий ВПН сервер. На роутере настраиваете ВПН клиент. В правилах маршрутизации роутера надо добавить маршрут до адресов брокера через ВПН сервер. Не делайте ВПН маршрутом по умолчанию, т.к. весь трафик пойдет через ВПН. Роутер должен подключать ВПН как по основному так и по резервному каналам.
    При этом на компе и в QUIK не надо ничего делать - все будет для них прозрачно.
    Выбирайте оператора VPS имеющего сервера в регионе нахождения брокера, так вы сможете несколько уменьшить задержки из-за ВПН. Где находится брокер можно узнать по geoip (он может врать) или спросить у брокера.

    При смене канала связи роутером ВПН, естественно то же разорвется. Но QUIK об это не узнает, просто будет задержка в передаче пока не поднимется ВПН по резервному каналу. Конечно, если задержка будет приличной, то в итоге QUIK то же разорвет соединение. Насколько большой должна быть задержка, чтобы QUIK разорвал соединение, можно выяснить тестами. Возможно в QUIKе есть какие-то настройки регулирующие таймауты разрыва.
    Ответ написан
    Комментировать
  • Linux IDE eclipse c++. Как открыть и скомпилировать данный пример?

    @res2001
    Developer, ex-admin
    File->New->C++ Project->Hello World C++ project->дайте название проекту в поле Project name->Finish
    В Project Explorer появится созданный проект с одним файлом исходного кода. Откройте этот файл, там будет обычный "Hello world". Замените все содержимое файла, на код из документа.
    Собрать проект: Project->Build All
    Запустить собранный проект Ctrl+F11 (Run->Run)
    Ответ написан
    Комментировать
  • Как копировать один символ строки в другую переменную?

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

    Вообще у вас как-то усложнена запись в файл. Зачем вы копируете этот единственный символ, да еще и выделяете для этих 2ух байт динамическую память (которую надо еще и освободить после использования).
    Си строка - это просто массив байт. С ним можно обращаться как с массивом (symb[i]). Для записи в файл одного символа используйте fputc(), для записи нескольких байт используйте fwrite().
    Ответ написан
    Комментировать
  • С чего начять новичку в СИ?

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

    2. Потом надо погрузиться в программирование для той ОС, которую планируете использовать. Обычно это линукс. Учитывая ваши интересы (системное программирование, железо), то тут можно порекомендовать следующие книги:
    - https://www.ozon.ru/product/linux-api-ischerpyvayu... - это для user space. Эта книга больше справочник по Linux API. Если у вас хорошо с английским то эту книгу может заменить встроенная справка линукс (man).
    - https://www.ozon.ru/product/yadro-linux-opisanie-p... - это kernel space (драйвера)

    3. Параллельно с первыми двумя пунктами есть смысл читать что-нибудь по алгоритмам. Например Кормена: https://www.ozon.ru/product/algoritmy-postroenie-i...

    4. После того как будете уверены в своих знаниях Си и Linux, можете выбирать платформу с которой вы хотите работать (железку) и начинать реализовывать свои задачи. По ходу дела возникнет куча вопросов. Большая часть из них может быть решена с помощью чтения TRM (Technical Reference Manual, предоставляется производителем железа/процессора). TRMы обычно оочень большие просто так их читать без конкретной цели смысла нет.
    Ответ написан
    1 комментарий
  • Как модифицировать обновляемый клон чужого проекта?

    @res2001
    Developer, ex-admin
    Клонируйте оригинальный репозиторий. В клоне заведите собственную ветку, в нее вносите свои изменения.
    Когда авторы обновят свой репо обновляйте master клона из оригинального репозитория, затем делайте rebase своей ветки на новый мастер с разрешением конфликтов.
    Ответ написан
    5 комментариев
  • Почему при компиляции проекта console application в dev c++ большой вес файла?

    @res2001
    Developer, ex-admin
    Используйте динамическую (а не статическую) линковку со стандартной библиотекой, возможно это уменьшит размер исполняемого файла. Но в этом случае клиенту придется тащить дополнительные библиотеки в виде отдельных файлов *.dll или в случае MSVC устанавливать runtime правильной версии.
    Ответ написан
    Комментировать
  • Почему после закрытия windows remote descktop, отключаются все процессы?

    @res2001
    Developer, ex-admin
    В настройках пользователя есть возможность настроить реакцию на отключение сеанса (закрытие окна mstcs "крестом" (без выхода) - это и есть отключение сеанса). Видимо реакция у вашего пользователя - завершение сеанса через какое-то время. Можно настроить так что бы отключенный сеанс никогда не завершался, тогда при повторном входе вы попадете в уже работающий сеанс со всеми запущенными программами.
    https://winitpro.ru/index.php/2020/05/25/rdp-sessi...
    Ответ написан
    Комментировать
  • Как сделать такую сортировку?

    @res2001
    Developer, ex-admin
    order by order_num, order_name
    Правда в этом случае все услуги будут сортироваться вторично по oreder_name, а не только те у которых нет order_num.
    Если делать точно так как вы хотите, нужно отдельно отбирать услуги с order_num != null и сортировать их только по order_num, и отдельно отбирать услуги с order_num == null и сортировать по order_name, затем оба списка объединять через union.
    Ответ написан
    Комментировать
  • Почему некорректно находит произведение чисел?

    @res2001
    Developer, ex-admin
    Почему вы в функции с переменным количеством аргументов не используете стандартный механизм для работы с аргументами в подобных функциях (#include <cstdarg>)?

    Поставьте отладочный вывод в цикл, где выведите значение count, а заодно и *ptr и comp. То же самое можно быстро посмотреть в отладчике затратив минуты 3 на все. Выводите значение floatов с большим количество знаков после запятой (10-15).
    Вы будете удивлены тому, что во float 3.0 это не обязательно равно 3, ну и т.д. То же самое относится к любым типам с плавающей точкой.
    Передавайте первым аргументом uint32_t, вторым и следующим float. Тогда все будет нормально. Код, конечно, придется немного переделать.
    Ответ написан
    3 комментария
  • Хорошие учебники и справочники по математике?

    @res2001
    Developer, ex-admin
    Школьные учебники достаточно не плохи если их читать и пытаться вникнуть.
    Ответ написан
    Комментировать
  • Как проверить переменную любого ссылочного типа на null?

    @res2001
    Developer, ex-admin
    По стандарту ссылка не может указывать на несуществующий объект (NULL), поэтому, если вы сделаете так:
    if (&refTypeParam == null)
    Компилятор запросто может выкинуть этот код в процессе оптимизации, т.к. условие по стандарту никогда не выполнится.
    Вещи типа этой:
    int &v = *(int*)NULL;
    это неопределенное поведение по стандарту. Но на сколько я знаю, такое вполне прокатывает.
    https://stackoverflow.com/questions/4364536/is-nul...
    Ответ написан
    1 комментарий
  • Как реализовать обмен сообщениями между программами, где текст сообщения берется из txt-документа?

    @res2001
    Developer, ex-admin
    Если одна из программ потомок другой - используйте неименованные каналы.
    Если обе программы работают не зависимо друг от друга (не предок и потомок) используйте именованные каналы или unix socket (если платформа никсы).
    Если программы должны работать на разных компах (могут работать и на одном при этом) используйте сокеты.

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

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

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

    Иногда бывает, что некоторые сегменты сети физически отделены от интернет, т.е. используется отдельная кабельная сеть и отдельные коммутаторы никак не связанные с интернет ни через шлюз ни через что-то другое.

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

    В сети развернуты DLP системы, особенно это касается компов в изолированных подсетях.
    Наличие антивируса, корпоративного фаервола - само собой разумеющиеся вещи.
    Ответ написан
    9 комментариев
  • Как правильно организовать прием данных через WS?

    @res2001
    Developer, ex-admin
    или я что то не так понял

    Именно.
    Вы выбрали асинихронный инструмент, не понимая как он работает.
    ioc.run() - запускает цикл обработки асинхроных событий (event loop). Когда он завершается, то вы не сможете уже что-либо получать/передавать.
    Ваша задача добавить нужный вам код в обработчики событий (функции on_xxx()). Как это правильно делать смотрите документацию по библиотеке и возможно другие примеры использования.

    Я никогда не использовал boost.beast и WebSocket, но некоторый опыт асинхронного программирования есть, а принципы асинхронного программирования в любых библиотеках одни и те же.
    Ответ написан
    Комментировать
  • Многострочный литерал C++ u8"один"sv u8"два"sv: что можно убрать?

    @res2001
    Developer, ex-admin
    u8 говорит о том, что строка в кавычках будет в кодировке UTF8: https://en.cppreference.com/w/cpp/language/string_...
    sv - преобразует строку в string_view: https://en.cppreference.com/w/cpp/string/basic_str...
    А нужно оно или нет - решать вам, в зависимости от контекста.
    Ответ написан
  • Как оптимизировать мой код?

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

    @res2001
    Developer, ex-admin
    Проходите по списку и выводе все строки где дата равна указанной. Все.
    Зачем тут сортировка?

    В плане сортировки и учитывая, что тема Базы данных, то если смотреть на любую реляционную СУБД, то там сортировка данных достигается за счет создания индексов. Индексы это отдельные (от данных) сущности, т.е. физически порядок данных не меняется, но существует отдельный отсортированный список "указателей на данные".
    Справедливости ради стоит сказать, что в СУБД существуют и "кластерные индексы" - это такой индекс, который определяет физическую сортировку данных, т.е. данные физически располагаются в хранилище в порядке указанном в кластерном индексе. Но такой индекс может быть только один для одного набора данных (таблицы), а обычных индексов может быть сколько угодно.

    Исходя из вышеописанного вы можете создать индекс по дате поступления. Индекс может представлять собой отсортированный массив указателей на данные, двусвязный список указателей или бинарное дерево указателей или что-то еще. При этом сам список данных останется прежним.
    Самый простой вариант массив указателей. Сортировать его можно с помощью стандартного qsort(), поиск производить с помощью бинарного поиска bsearch(). При добавлении или удалении элемента в данные, придется либо полностью перестраивать индекс, либо вручную добавлять/удалять элемент из индекса. В любом случае это будет достаточно затратной операцией.
    В двусвязном списке и бинарном дереве со вставкой и удалением все проще и гораздо быстрее. В этом случае проще всего генерировать индекс сразу по мере добавления данных, тогда индекс будет строится вместе со списком данных. Но это соответственно скажется на скорости этих операций. Бинарное дерево лучше реализовывать сразу сбалансированное. Работа с подобными структурами сильно усложнит ваш проект и возможно не совсем вписывается в рамки курсового проекта. Это уже вам решать.
    Ответ написан
    Комментировать
  • Какие есть способы реализации системы внешних скриптов?

    @res2001
    Developer, ex-admin
    Питон так же используется для подобной схемы. Например в Танках, если не ошибаюсь, его используют.
    В браузерах и node.js используется JS - схема аналогичная.
    В Far manager - Lua.
    Ответ написан
    Комментировать