• Можно ли одновременно запустить вторую ОС с внешнего диска?

    @res2001
    Developer, ex-admin
    Можно поднять WSL, поставить туда какой-нибудь линукс на выбор, примонтировать внешний диск.
    Графический раб.стол можно пробросить через RDP, настройка WSL для этого легко гуглится.
    В таком варианте по ощущениям работает быстрей, чем виртуалка в виртуальной коробке.
    Ответ написан
    Комментировать
  • Что означает "квант времени" у переключения контекста?

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

    Не стоит забывать, что процессы часто сами в падают в режим ожидания и тем самым досрочно завершают свой квант времени. Это часто происходит, например, при ожидании завершения операций ввода/вывода или если поток пытается блокировать мьютекс, а он уже занят и т.п.

    может ли теоретически возникнуть ситуация, что из-за нагруженности какой-нибудь процесс будет успевать только регистры восстановить, и ничего полезного не сделает, то есть будет постоянно нулевая работа за этот промежуток времени?

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

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

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

    @res2001
    Developer, ex-admin
    какой из вариантов наиболее эффективен / наиболее используемый

    Создание класса в динамической памяти делится на 2 этапа:
    1. выделение "сырой" памяти у менеджера памяти
    2. инициализация памяти - вызов конструктора класса на выделенном участке памяти.
    Вариант с malloc не выполняет вторую часть. Для того что бы закончить процесс в этом варианте вам надо использовать размещающий new, передав указатель на ранее выделенную память. Деструкторы так же нужно будет вызывать явно.

    Если вариант с malloc довести до логического конца, то он будет делать то же самое что и вариант с new, никаких преимуществ тут нет. Но не забываем про явный вызов деструктора.

    При удалении класса из динамической памяти присутствуют обратные этапы: вызов деструктора и освобождение памяти.

    malloc обычно используют в плюсовом коде, когда реализуют собственные аллокаторы и нужен "сырой" не инициализированный блок памяти. Но и в этом случае вполне можно обойтись без malloc - использовать new char[MEM_SIZE]
    Ответ написан
    Комментировать
  • Добавление VPN Сервера в текущую сеть?

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

    @res2001
    Developer, ex-admin
    Нужно делать цикл по исключаемым файлам и исключать файлы по одному.
    В make для этого есть $(foreach ...)
    Ответ написан
    Комментировать
  • Как разделить xml файл спомощью bat/cmd?

    @res2001
    Developer, ex-admin
    В батниках не реально обрабатывать xml, т.к. символы тегов, являются служебными для cmd, как только такая строка попадет в командную строку в батнике будет ошибка.
    Так что этот вариант сразу отбросьте.

    В винде есть и другие скриптовые языки из коробки, например power shell или jscript, используйте один из них.
    На jscript помимо того, что можно просто обработать xml, как текстовый файл, можно использовать и xml парсер со всеми плюшками. На счет power shell я не в курсе, возможно то же есть что-то подобное.
    Раз у вас wordpress используется, значит уже установлен PHP, можете его использовать.
    Ответ написан
  • Как должна передаваться 20 байтная строка по протоколу UDP в формате big-endian?

    @res2001
    Developer, ex-admin
    Прошу подсказать, разве однобайтная строка не будет выглядеть одинаково в любой форме endian?

    Для массива байт endianness не имеет значения. Если это действительно массив байт.
    Info_hash похоже это не просто массив байт, а имеет внутреннюю структуру. По вашим ссылкам этой информации нет, видимо, надо копнуть глубже.
    Так что делайте преобразование в BE.
    Ответ написан
    Комментировать
  • Почему часто отключается проводная мышь?

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

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

    @res2001
    Developer, ex-admin
    Потому что в блоке else оба вызова идут с left_child.
    А так же после первого вызова сразу будет возврат, т.к. вызовы находятся в операторе return.
    И вам нужно сначала проверить, что указатели на потомков не nullptr.
    На самом деле вам нужно ещё одно условие в блоке else:
    If(root->data < x) return searchParent(root->left_child, x);
    Else return searchParent(root->right_child, x);
    Ответ написан
  • Как реализовать дерево на основе связного списка?

    @res2001
    Developer, ex-admin
    Дерево на основе связного списка это вообще первое что приходит в голову, когда думаешь, как реализовывать дерево. Правда это не обычный последовательный связный список, а иерархический.
    Ответ написан
  • По какой книге изучать язык Си: Эффективный Си или k&r?

    @res2001
    Developer, ex-admin
    KR не учебник и не стандарт, написана давно. Хотя есть довольно свежее издание, но текст не изменился.
    Берите Эффективный Си, хотя я не читал эту книгу, но выглядит норм. К тому же написана на основе свежих стандартов, в отличии от KR.
    У вас не плохой бэкграунд, сам язык достаточно прост, разберетесь с тонкими местами (массивы, строки, динамическая память, указатели, адресная арифметика) и можно начинать что-то делать.
    По функциям стандартной библиотеки полно информации в интернет, например тут
    Вообще книг на русском именно по Си не много, возможно это связано с тем, что язык достаточно прост и одна хорошая книга закрывает большую часть потребностей.
    Кстати, "экстремальный Си" выглядит то же многообещающе, но это, похоже, уже следующий уровень.
    Ответ написан
    3 комментария
  • Как использовать namespace в header?

    @res2001
    Developer, ex-admin
    Заверните весь код в input.cpp в namespace input {}
    namespace добавляет к символам в объектом файле имя namespace, но т.к. у вас определения в input.cpp не включены в namespace, то в объектном файле эти символа будут без добавления имени namespace, поэтому и undefined reference.
    Ответ написан
    Комментировать
  • Почему одни языки быстрее, другие медленнее, и почему новички гуглят самый быстрый язык, а не самый медленный?

    @res2001
    Developer, ex-admin
    Если говорить о скорости, то компилируемые языки всегда будут быстрее интерпретируемых. Просто из-за разных принципов выполнения программы.
    Есть еще языки с JIT компиляцией, типа Java, C# и т.п.
    Они могут быть быстрее компилируемых в каких-то случаях, т.к. они точно знают на каком процессоре работают в каждом конкретном случае и могут максимально использовать возможности текущего процессора для оптимизации кода.
    В компилируемых языках, как правило, программист собирает программу под некоторую абстрактную архитектуру, например под x64, но у конкретного процессора, на котором будет выполнятся программа могут быть какие-то расширенные возможности, о которых программист (компилятор) не знает во время компиляции (или решает не использовать их для универсальности). При этом JIT компилятор может использовать эти расширенные возможности и добьется лучшей производительности.
    Но если поставить в одинаковые условия компилируемые языки и языки с JIT компиляцией, то, думаю, результат будет то же в пользу компилируемых языков. Но в реальности такое (заранее известные условия исполнения для компилируемого кода) встречается не часто.

    К слову, в том же питоне (интерпретируемый язык), например, модули для математических вычислений (numpy, scipy, ...) написаны на компилируемых языках (C/C++), поэтому они работают быстрее, чем аналогичный код на питоне без использования этих модулей. Да и сам интерпретатор питона написан на компилируемом языке :)

    Скорость не единственный критерий для ЯП. Имеет значение и скорость разработки конкретной задачи и поддержка каких-то возможностей и т.д. и т.п.

    Например для веб разработки скорость исполнения не сильно важна, т.к. относительно медленная передача данных в общем случае сожрет весь выигрыш от быстрых вычислений. Но на высоко нагруженных веб серверах уже и скорость вычислений начинает играть роль.

    Практически все задачи можно решить почти на любом ЯП, но есть ЯП, которые хорошо подходят для решения задачи, а есть те, что не очень. В общем, подбирайте язык под задачу.
    Например, если вы работаете в вебе, то это JS, php, python, java, C# и еще пачка других
    Если это десктоп приложение с GUI, то: Java, C# может быть С++
    Если это встраиваемая техника и реальное время, ядро ОС или драйверы: C/C++
    Если это ИИ, компьютерное зрение и т.п. computer science: python, R, что-то еще
    Ответ написан
    Комментировать
  • Можно ли изменить размер типа int?

    @res2001
    Developer, ex-admin
    1. Размер всех типов всегда кратен 8 битам. Просто потому, что минимально адресуемый размер памяти в современных процессорах - это 1 байт. Так что 31 или 33 сделать не возможно. Теоретически можно сделать, например, 24 или 40, но смотри следующий пункт.
    2. Все базовые типы С/С++ однозначно проецируются на типы данных, поддерживаемые процессором. Поэтому реально использовать только типы, которые поддерживаются железом. А их не так много и все они, скорее всего, уже есть среди базовых типов С/С++.

    Да можно использовать вариант с битовыми полями или библиотеки для длинных чисел и т.п., но вычисления в этом случае будут медленные, т.к. все операции придется реализовывать программно. Кроме того, если взять битовые поля - там вы можете определить поле размером в 31 бит, но переменная все равно будет занимать 32 бита в памяти (см п.1).
    Ответ написан
    Комментировать
  • Сохраняться ли данные после переустановки или обновления Windows?

    @res2001
    Developer, ex-admin
    Если устанавливать винду на те же разделы без форматирования, то данные сохранятся.
    Вообще, обычная практика, для данных выделять отдельный раздел на диске, не системный. Тогда можно спокойно переустанавливать систему с форматированием системного раздела, главное не трогать раздел с данными.
    На счет бэкапа важных данных - полностью согласен "с предыдущими ораторами" - если данные хранятся в единственном экземпляре, то рано или поздно вы их потеряете.
    Ответ написан
    Комментировать
  • ОС и ФС для маленького файлообменника и 1С-бухгалтерии v7? Соскочить с кубунту?

    @res2001
    Developer, ex-admin
    Заберите у юзеров админские права на рабочих станциях и активируйте везде Windows Defender, с вирусами станет легче.
    Какой выбрать линукс - пофиг, тот, что лучше знаете, но берите стабильную ветку дистра. Можно без GUI.
    Ответ написан
    Комментировать
  • Почему программа на C не выводит результат?

    @res2001
    Developer, ex-admin
    Не используйте pow. Она работает с double, а это числа с плавающей точкой. У double точность примерно до 15 значащих десятичных цифр, дальше все приближенно. https://en.wikipedia.org/wiki/IEEE_754#Basic_and_i...
    У вас целочисленная арифметика везде - просто домножайте каждую итерацию на 10. И не забывайте везде использовать long long.
    Вам же уже давали пример в одном из прошлых вопросов.
    И n там вроде - 18.
    Ответ написан
  • Как лучше хранить 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 не плохая документация и много примеров.
    Ответ написан
    Комментировать