Задать вопрос
  • После запуска Dota 2, подвисает windows 11, куда смотреть?

    @res2001
    ki11j0y, Не знаю, какую желтую прессу вы там читаете. У меня ничего не ломает.
    Правда последнее крупное обновление, 24H2 кажется, устанавливается с ошибкой и откатывается. Но причину я знаю, как устранить примерно то же, но пока руки не доходят, т.к. на это потребуется убить какое-то время. На самом деле в этом моя вина, но раньше это не было на столько критично, а теперь стало. Это, конечно, странно, по хорошему бы разобраться, но на это времени потребуется еще больше. Так что пока сижу на 23H2 и не особо заморачиваюсь по этому поводу.
    Да и в принципе ... может уже и на линукс пора :-)
    Написано
  • Что может вызывать синие экраны BSOD в компьютерах, подключенных к локальной сети?

    @res2001
    voidby, Судя по описанию проблема в ПО, которое стоит на всех компах. Почему не падает на одном - не понятно, возможно именно там этого ПО и нет.
    Но т.к. похожая картина наблюдается на всех, кроме одного, то скорее всего это не аппаратная проблема - маловероятно, что одна и та же аппаратная проблема случилась на всех компах разных по конфигурации.

    Возможно у вас гуляет злобный вирус по сети и заражает все подряд, что попадется. Возможно кривой софт/драйвер, который вы сами же ставите.
    Надо тестировать.
    Начните с установки чистой винды с форматированием диска с минимальным набором софта (только свежие драйвера устройств, скачанные на заведомо "чистом" компе) без подключения к сети на компе, который уже падал. Понаблюдайте за ним после переустановки какое-то время. К вашей рабочей сети не подключайте, можете выходить в интернет как-то по другому. Будут BSODы?
    Затем подключите к сети, ничего не ставьте - наблюдайте.
    И так далее, добавляя по одному софт до вашего стандартного набора и после каждого добавления наблюдая некоторое время за поведением. На каком-то этапе возможно начнут появляться BSODы - софт, который был установлен последним и будет их причиной.
    Написано
  • После запуска Dota 2, подвисает windows 11, куда смотреть?

    @res2001
    А win11 сырая, багов много.

    Багов не больше, чем в Вин10, я думаю. Хотя уже давно Вин10 не использовал.
    Вин10 доживает последний год - в конце 2025 поддержка Вин10 прекращается. Теоретически MS конечно может продлить поддержку, но пока не вижу причин почему бы они это сделали.

    Вы предлагаете вернуться на систему, которая не будет поддерживаться производителем уже очень скоро.
    Лучше уж тогда на линукс переходить. Думаю дота на лине уже есть, но тут я не в теме.
    Написано
  • Что лучше поднять "свой" VPN или же купить подписку?

    @res2001
    А вообще крайне не рекомендую находить на github пользователя bol-van и его zapret

    Что с ним не так? Не пользовался, просто любопытно.
    Сейчас развелось много всяких запретов и антизапретов.
    Написано
  • Что лучше поднять "свой" VPN или же купить подписку?

    @res2001
    Без разницы.
    Но шансов, что оператора ВПН забанят, больше, т.к. к оператору подозрительный трафик идет в больших объемах.
    Свой ВПН то же имеет все шансы быть забаненым рано или поздно, если найдут способ распознавать очередной ВПН протокол.
    Написано
  • Часть кода из паттерна - компоновщик. Имеем - абстрактный класс, и класс - наследник. Собственно, как такое происходит?

    @res2001
    Pro_Code, Как отличается обращение к public члену класса от обращения к private члену?
    Не знаю, что там у вас в пыхе, но в плюсах никак не отличается. Отличается только место где происходит обращение.
    Написано
  • Часть кода из паттерна - компоновщик. Имеем - абстрактный класс, и класс - наследник. Собственно, как такое происходит?

    @res2001
    protected отличается от private тем, что наследникам разрешен доступ к protected членам базового класса, а внешнему коду - не разрешен.
    К private членам доступ не разрешен для всех, кроме самого класса.
    Это в С++ так, думаю в PHP то же как-то так.
    Написано
  • Как сделать 10 гигабитную локальную сеть?

    @res2001
    Делайте инкрементный бэкап (копируйте только измененные файлы). Если 4 Тб - это какие-то офисные файлы, то за рабочий день будет меняться мало файлов. Нет никакого смысла каждый день делать полный бэкап.

    На винде это легко делается, т.к. при изменении у файла выставляется аттрибут "архивный". При бэкапе аттрибут можно снимать (автоматически). Такую схему легко реализовать на простых скриптах.
    Можно использовать, например robocopy или xcopy. Кстати, думается, что скрипт с xcopy/robocopy будет работать быстрее rsync, т.к. файлов у вас много, а rsync вычисляет хэши на каждый файл. xcopy/robocopy просто смотрят на аттрибут и если он есть - копируют, после копирования - аттрибут снимают с файла.
    По тому же принципу можно файлы архивировать. Если мне не изменяет память консольный 7zip умеет анализировать аттрибут архивный. Копировать можно уже готовый архив.

    На линуксе у файлов нет архивного аттрибута, но можно использовать дату изменения и копиравать файлы только с текущей датой изменения.
    Написано
  • TCP Fingerprint TIMESTAMP не задается никакое значение, кроме 0, как исправить?

    @res2001
    Не особо вникал, но ...
    Похоже, что TCP стек ОС сам помещает TIMESTAMP в пакет для служебных целей. Когда TCP получателя отправляет ACK, он пересылает полученный TIMESTAMP обратно. Благодаря этому отправитель может вычислить некое среднее время подтверждения. Ну и еще можно что-нибудь предпринять, если отправитель пришлет какую-нибудь лажу.
    https://www.qacafe.com/resources/tcp-timestamp-option/

    Получить вычисленное значение можно с помощью getsockopt. Пример есть тут: linuxgazette.net/136/pfeiffer.html
    Написано
  • Как копию вывода BAT файла отправлять в файл?

    @res2001
    Возможно, вывод на экран не нужен вовсе?
    Написано
  • Обязательно ли использовать scanf_s вместо scanf?

    @res2001
    К слову, scanf то же можно использовать безопасно, передавая размер буферов через модификатор ширины шаблона. Но это бывает не всегда удобно, метод передачи размера буфера через параметр более универсальный.
    Кстати, например, в printf строки то же можно выводить с ограниченной шириной, это можно делать задав точность в шаблоне цифрой или используя символ * для точности в шаблоне и указав дополнительным параметром размер буфера:
    printf("Строка без завершающего нуля: %.*s\n", (int)size, buf);
    Написано
  • Обязательно ли использовать scanf_s вместо scanf?

    @res2001
    scanf_s вполне себе стандартная функция. С11.
    Написано
  • Какие есть программы с большим кол-вом зависимостей?

    @res2001
    Хотел написать установщик dll`ок.

    1. Как планируете решать вопрос, когда какая-то программа зависит от конкретной версии библиотеки и другая версия не подойдет? Такое происходит достаточно регулярно, когда в библиотеку добавляют новый функционал и программа рассчитывает на наличие этого функционала, то более ранняя версия библиотеки ее не устроит. Бывает и наоборот - программа зависит от более старой версии библиотеки, а актуальная не подойдет.
    2. Где планируете брать сами библиотеки? Если будете брать из репозиториев каких-то менеджеров пакетов, которые есть для винды, то зачем тогда что-то писать, можно ведь пользоваться тем же менеджером пакетов для установки софта. Обычно там же прописывают зависимости и они устанавливаются автоматически. Правда в таких репозиториях далеко не весь софт и библиотеки.

    В целом, если делать что-то подобное по уму, то в итоге задача сведется к созданию очередного варианта менеджера пакетов со своим собственным репозиторием. Где так же будет далеко не весь софт и т.д. и т.п.
    Написано
  • C++ iostream not found?

    @res2001
    martunovZheka, Судя по ошибке при компиляции используется компилятор Cи, а не С++. В Си, конечно, нет никакого iostream. С++ код надо собирать с помощью g++, а не gcc. Ответ как раз про это.
    Попробуй собрать из командной строки руками, если получится - пытайся дальше настраивать VSC. Возможно надо переустановить все или какие-то дополнения.
    Написано
  • Зачем в Си используют конструкцию void(*funk)(struct my_struct*, my_struct2) как элемент структуры?

    @res2001
    hitakiri,
    По всей видимости это задел "на будущее".

    Довольно странный задел. Смысла не имеет, имхо, обычно не знаешь вперед что тебе может понадобиться и какие задачи в дальнейшем придется решать, поэтому и в заделах на будущее смысла нет .
    Callbackи обычно нужны для использования пользователем, а не библиотекой. Поэтому должен быть какой-то интерфейс для их инициализации внешним пользователем, хотя в случае Си - интерфейс не обязателен, т.к. тут все структуры открыты.
    Впрочем, могут быть варианты и внутреннего использования callbackов.

    Не поленился посмотрел исходники. В nuklear.h в определении структур, там где в структурах объявляются эти поля есть комментарий: "optional user callbacks". Думаю этим все сказано. Это не задел на будущее. Просто разработчики видят возможные кейсы их использования, а вы пока не видите.
    Там, кстати, довольно много примеров, возможно там они как-то используются. Я туда уже не смотрел.

    Короче, опечален внекатигорийно, качество кода падает куда-то в бездну.

    Я бы не стал делать скоропалительных выводов.
    Написано
  • Как правильно составить файл CMakeLists.txt для проекта?

    @res2001
    Смущает "D:\Program Files". Это то о чем я думаю или нет? У вас винда на диске D стоит? Это виндовый "Program Files" или ваш собственный? Если виндовый, то возможно просто не хватает прав и не понятно зачем вы в системном каталоге что-то собираете, не делайте так.
    Если ваш собственный, то ладно, но я бы избавился от путей с пробелами, это может добавить неожиданных не нужных проблем. Кроме того, наверняка вы привели не все что выводит cmake, думаю выше по выводу должна быть собственно причина ошибки, вы же привели только окончательный результат, который ничего не дает.
    Сам по себе ваш CMakeLists.txt выглядит нормальным, но последняя закрывающая скобка лишняя - для нее нет пары.
    Написано
  • Зачем в Си используют конструкцию void(*funk)(struct my_struct*, my_struct2) как элемент структуры?

    @res2001
    Функции обратного вызова, используются довольно часто. Вызываемый код при наступлении какого-то события вызывает соответствующий callback, чтоб сказать вызывающей стороне, что произошло.
    Исходя из названия указателей на функции уже можно сделать вывод о том на какие события срабатывает вызов.
    Вы можете их использовать или не использовать (присвоив NULL), обычно отсутствие callbackа корректно отрабатывается, но бывает, что callback обязателен.
    За дополнительной информацией лучше обратиться к документации библиотеки, там могут быть приведены и сценарии возможного использования callbackов.
    Написано
  • Как считать из stdin русский текст и вывести его как wchar_t?

    @res2001
    Используйте строки std::wstring, плюсовые потоки std::wcout/std::wcin, используйте строковые функции с префиксом wcs, сырые строки храните в массивах wchar_t, константы определяйте с префиксом: L"привет мир".
    Локаль устанавливайте так: setlocale(LC_ALL, "");
    Имейте ввиду, что в винде и линукс типы wchar_t обычно имеют разную длину.
    Менять кодировку консоли не нужно и вообще дурной тон, т.к. пользователю возможно хочется работать именно с установленной кодировкой.
    Исходники программы пишите в UTF8.
    Написано
  • Возможно ли реализовать TCP на Delphi?

    @res2001
    Mors Clamor, На счет контрольных сумм дополню.
    Есть много всяких реализаций CRC, все они делают одно и то же. Самая быстрая - это табличная реализация, когда используется предварительно рассчитанный полином, записанный в константный массив. И потом над каждым байтом входного потока используя этот массив выполняются некоторые не сложные вычисления.
    Такие реализации легко отличить - там основное место в коде занимает массив, а сами вычисления - это всего несколько строк кода.
    Написано
  • Возможно ли реализовать TCP на Delphi?

    @res2001
    Mors Clamor,
    Я хочу понять/реализовать как считаются контрольные суммы

    Не надо реализовывать контрольные суммы. Там используется какой-то вариант CRC. Используйте готовое решение. Кстати, в самом TCP, на сколько помню, используется CRC16, в Ethernet же используется CRC32, который конечно гораздо лучше справляется с задачей.
    Если что, есть разные варианты CRC16 и СRС32, сам алгоритм один, но отличается например начальными значениями и т.п. Алгоритм CRC описан, если очень хочется в нем разобраться, можете почитать, но там больше математика, с программированием это не особо связано. На любителя в общем.
    но он будет фундаментально неправильным,

    Нет никакого фундаментально правильного или не правильного варианта. Ваша реализация может выполнять поставленные цели или не выполнять, вот и все. Если она не выполняет - значит вы где-то накосячили, надо разбираться. Если выполняет и скорость работы устраивает "заказчика" :-) значит все нормально. Для проверки выполняет или нет, надо конечно написать тесты, создать какие-то сложные условия "на линии" типа потеря пакетов, большие задержки, обрывы и т.п. Это все можно с эмитировать искусственно.
    Написано