• Как лучше хранить 13 ТиБ данных (mdadm / lvm / zfs / btrfs)?

    @res2001
    Developer, ex-admin
    То что лучше знаешь/был опыт работы: llvm или zfs/btrfs.
    Можно использовать что-то типа TrueNAS и не парится с выбором.
    Возможно стоит как-то разделить файлы на группы, а не держать в общей файло-помойке, и группы разложить на разные raid тома, созданные на независимых от других групп дисках...
    Стоит подумать еще и о бэкапе всего этого добра.
    Ответ написан
  • Как построить динамичный график в matplotlib?

    @res2001
    Developer, ex-admin
    Включаете интерактивный режим plt.ion() и обновляете когда нужно. В этом случае plt.show() возвращается сразу после отрисовки, а не ждет пока не закроете окно.
    Для задержки программы, так что бы окно не переставало реагировать на действия пользователя используйте plt.pause().
    При очередной перерисовке надо что бы окно (fig) оставалось прежним, иначе будет моргание из-за постоянного удаления старого/создания нового окна, старое содержимое окна можно удалить с помощью fig.clear().
    В общем в matplotlib не плохая документация и много примеров.
    Ответ написан
    Комментировать
  • Как исправить резкое повышение пинга в играх при частых действия?

    @res2001
    Developer, ex-admin
    Ничего удивительного - увеличивается количество передаваемого трафика, канал занимается больше на полезную нагрузку, а трафик пинга, как менее приоритетный, вытесняется. Отсюда растут задержки в пинге. Но это не значит, что скорость падает или что-нибудь подобное.
    Вот когда плохие пинги, в то время когда вы ничего не делаете - это повод задуматься.
    Ответ написан
    2 комментария
  • Из CMD блокировать / разблокировать IP сетевого принтера?

    @res2001
    Developer, ex-admin
    Добавить/удалить правило в фаервол винды с помощью netsh.
    Ответ написан
    Комментировать
  • Из-за чего программа на C выдаёт неправильный ответ?

    @res2001
    Developer, ex-admin
    Потому что целочисленное деление: a / r дает в результате 2 без остатка. Вам нужно преобразовывать в числа с плавающей точкой, выполнять деление с плавающей точкой и получать остаток с помощью modf.

    Еще пара замечаний:
    1. явно ведь ваш алгоритм начинается с 12, т.к. это первое число с более 1 цифрой в составе, у которого младшая цифра двойка. Так что все что меньша 12 нет смысла перебирать.
    2. Нет смысла увеличивать а на 1 - увеличивайте сразу на 10, т.е. к следующему варианту с двойкой в конце, зачем перебирать варианты, которые вы пропустите. Кроме того в этом случае count можно не расчитывать так как делаете сейчас, а просто добавлять 1 каждые 10 итераций.
    Ответ написан
  • Как всё таки работает асинхронность?

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

    Из всего асинхронного API, которое я видел пожалуй наиболее "асинхронным" является "POSIX asynchronous I/O", это когда вы вызываете асинхронный read/write, а для обратной связи используется сигнал (в винде ничего похожего нет). Он наиболее асинхронный потому, что основному потоку не надо никак опрашивать состояние задания - система сама прерывает поток сигналом в произвольный момент. Этот механизм используется довольно редко. Наиболее употребимы select/poll/epoll, в том же libuv используется poll (в винде IOCP).
    Ответ написан
    Комментировать
  • Можно ли убрать "мигание" консоли?

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

    @res2001
    Developer, ex-admin
    Читайте тут до прояснения раздел "Bitwise shift operator.
    Смысл в том, что если вы знаковое число сдвинули влево так, что старшим разрядом стала 1, то в результате получится отрицательное число. При сдвиге вправо знакового числа, освобождающиеся слева разряды заполняются битом знака (а не нулем), поэтому результат сдвига отрицательного числа так же будет отрицательным (а положительного - положительным:). Если сдвигать вправо беззнаковое число, то свободные биты будут всегда заполнятся нулями.
    Кстати, на сколько помню, по стандарту знаковость char не определена (может быть как знаковым так и беззнаковым). Вам с вашим примером не повезло, char оказался знаковым. Зато это дало возможность немного глубже понять сдвиги.
    Ответ написан
    6 комментариев
  • Нужно сделать циклический сдвиг вправо на 8 позиций. Считать из файла и записать в файл. Что не так?

    @res2001
    Developer, ex-admin
    Алгоритм циклического сдвига описан в старинной книге Джона Бентли "Жемчужины программирования".
    https://codelib.ru/task/cycle_shift/
    Ответ написан
    Комментировать
  • Что значит запись shifter_carry_out = C Flag?

    @res2001
    Developer, ex-admin
    Видимо имеется ввиду бит C (Carry condition flag) регистра CPSR. Обычно по контексту понятно, что имеется ввиду.
    Вообще в таких случаях приводите больше контекстной информации, а то вы выдернули кусок кода откуда то, думай что хочешь.
    Ответ написан
    3 комментария
  • Если у меня статический ip, является ли он публичным и общедоступным?

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

    @res2001
    Developer, ex-admin
    В батниках все переменные строковые!
    set /a для арифметических действий преобразует строки в числа, делает действия и сохраняет строку в результате.
    Поэтому дополнение нулями простое: дописываем к числу максимальное необходимое количество нулей, затем убираем лишнее с помощью операции извлечения подстроки.
    Для извелечения подстрок читай:
    set /?
    Ответ написан
    3 комментария
  • Как безопасно подменить OpenVPN сервер?

    @res2001
    Developer, ex-admin
    Абсолютно нормально. Это ваши сертификаты. На старом сервере вы их генерировали самостоятельно (ну или тот кто был вместо вас и настраивал OpenVPN). В самом OpenVPN нет других сретификатов, кроме тех, которые вы ему предоставляете.

    В принципе для нового сервера вы могли бы сгенерировать другие сертификаты (файлы server.crt и server.key) их не нужно передавать клиенту. Так было бы совсем правильно (но и использовать ключи старого сервера то же вполне можно). Для генерации вам потребуется закрытый ключ CA (ca.key), если его нет, то сгенерировать новые ключи уже не возможно. И в этом случае вы столкнетесь с проблеммой, когда истекут сроки сертификатов. Вообще во всей инфраструктуре ключей шифрования ключ и сертификат CA - самые ценные составляющие, остальные можно легко менять.
    Ответ написан
    2 комментария
  • Как исправить AccessViolation при чтении указателя, считанного при помощь CArchive?

    @res2001
    Developer, ex-admin
    Не заню, что там в CArchive и вообще MFC давно не брал в руки, но предполагаю, что нужно использовать такой вариант:
    Fruit fruit;
    ar >> fruit;

    Для сериализации/десериализации вызывается метод Serialize вашего же класса, т.е. сам CArchive не создает сериализуемые классы. Следовательно вы должны передать операции >> ссылку на существующий класс, а не указатель. ar просто перезапишет содержимое класса, точнее не ar перезапишет, а ваш же метод Serialize.
    Ответ написан
  • Как копировать папки из каталога по маске?

    @res2001
    Developer, ex-admin
    Ищите папки по маске с помощью dir: dir /b /ad c:\temp\log*
    Засовываем этот dir в for /f:
    for /f "tokens=* delims=" %%a in ('dir ...') do (
       echo %%a
    )

    В цикле копируем отобранные папки.
    Для инкрементации счетчика папок используем set /a "logidx=logidx+1"
    Для справки:
    for /?
    dir /?
    set /?
    if /?
    copy /?
    move /?
    md /?
    Ответ написан
  • Как написать простой калькулятор?

    @res2001
    Developer, ex-admin
    Например:
    atoi(ex.c_str())+atoi(ex.c_str())
    это выражение 2 раза преобразует в число одну и ту же строку, а затем складывает эти 2 одинаковых числа.
    Так что "не дублирует", а выполняет то что написано у вас в коде.

    Вам нужно сначала разделить строку на "токены", т.е. на операнды и операции.
    Если вы на этом этапе расчитываете обрабатывать только простейшие действия, то вводите строку и разбиваете ее на 3 токена. Затем операнды преобразуете в числа и после этого уже выполняете действие.
    Ответ написан
    Комментировать
  • Книги по сетевому программированию на c++?

    @res2001
    Developer, ex-admin
    Не нужно зацикливаться на С++, т.к. все сетевое API операционной системы на Си. Изучайте просто сетевое программирование. Когда разберетесь, то просто возьмете сетевую библиотеку для плюсов и будете ее использовать. Как правило, подобные библиотеки просто оборачивают Си интерфейс ОС в классы.
    Так же рекомендую книгу Стивенса. Но она старая (последнее издание 2007 года) и в продаже вы ее сейчас не найдете. Электронная версия есть. Не смотря на возраст книга вполне актуальна. Подобные основополагающие технологии изменяются довольно не торопливо.
    Ответ написан
    Комментировать
  • Какая IDE удобнее и проще для плюсов?

    @res2001
    Developer, ex-admin
    qtcreator - хорош
    Eclipse - довольно тяжел для понимания, тормозит на больших файлах или когда открыто много файлов (Java дает о себе знать). Но если планируешь программировать для embeded, то полезно научиться с ним работать, т.к. многие IDE предоставляемые производителями железа основаны на Eclipse.
    С clion не приходилось сталкиваться.
    Ответ написан
    1 комментарий
  • Как с помощью for добиться такого же результата, что и командой dir?

    @res2001
    Developer, ex-admin
    Я бы предложил запихнуть dir в for /f и в for обрабатывать вывод dir, добавляя нужную информацию:
    for /f "tokens=* delims" %%a in ('dir /s /b *') in (
       rem Тут можно писать любой другой код. Имя текущего файла в %%a
       echo %%~a
    )
    Ответ написан
  • Что такое offset и как обратиться к информации что хранится в нём?

    @res2001
    Developer, ex-admin
    offset - смещение (от какого-то базового адреса).
    Т.е. адрес вашего объекта вычисляется так: base address + offset.
    Осталось узнать базовый адрес и можно работать с цветами.
    Ответ написан
    Комментировать